@mochabug/adapt-web 1.0.1-rc.21 → 1.0.1-rc.22

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.
@@ -1,8 +1,8 @@
1
1
  var __MbAdapt_prev = typeof MbAdapt !== 'undefined' ? MbAdapt : undefined;
2
- "use strict";var MbAdapt=(()=>{var zs=Object.create;var St=Object.defineProperty;var Ns=Object.getOwnPropertyDescriptor;var Ls=Object.getOwnPropertyNames;var Hs=Object.getPrototypeOf,Ts=Object.prototype.hasOwnProperty;var ti=t=>{throw TypeError(t)};var Us=(t,e,n)=>e in t?St(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Ds=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),_s=(t,e)=>{for(var n in e)St(t,n,{get:e[n],enumerable:!0})},ni=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ls(e))!Ts.call(t,r)&&r!==n&&St(t,r,{get:()=>e[r],enumerable:!(o=Ns(e,r))||o.enumerable});return t};var Ks=(t,e,n)=>(n=t!=null?zs(Hs(t)):{},ni(e||!t||!t.__esModule?St(n,"default",{value:t,enumerable:!0}):n,t)),Ps=t=>ni(St({},"__esModule",{value:!0}),t);var oi=(t,e,n)=>Us(t,typeof e!="symbol"?e+"":e,n),Io=(t,e,n)=>e.has(t)||ti("Cannot "+n);var m=(t,e,n)=>(Io(t,e,"read from private field"),n?n.call(t):e.get(t)),me=(t,e,n)=>e.has(t)?ti("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),P=(t,e,n,o)=>(Io(t,e,"write to private field"),o?o.call(t,n):e.set(t,n),n),le=(t,e,n)=>(Io(t,e,"access private method"),n);var Ys=Ds((bo,ei)=>{(()=>{var g,I,h,y,R,E,T,A,ae,Q,ce,D,jr,go,fo,$r,ks,Js,qr,Ms,Fs;let t="vibrate"in navigator&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches;if(typeof window>"u")return;let e=(O,w={})=>window?.CAP_CUSTOM_FETCH?window.CAP_CUSTOM_FETCH(O,w):fetch(O,w);function n(O,w){let f=(function(V){let B=2166136261;for(let C=0;C<V.length;C++)B^=V.charCodeAt(C),B+=(B<<1)+(B<<4)+(B<<7)+(B<<8)+(B<<24);return B>>>0})(O),b="";function G(){return f^=f<<13,f^=f>>>17,f^=f<<5,f>>>0}for(;b.length<w;)b+=G().toString(16).padStart(8,"0");return b.substring(0,w)}async function o(O){var w=(b=>{let G=atob(b),V=new Uint8Array(G.length);for(let B=0;B<G.length;B++)V[B]=G.charCodeAt(B);return V})(O);let f=await new Promise((b,G)=>{try{var V=new DecompressionStream("deflate-raw"),B=V.writable.getWriter(),C=V.readable.getReader(),J=[];C.read().then(function k(ee){if(ee.done){for(var he=0,se=0,H=0;H<J.length;H++)he+=J[H].length;var ue=new Uint8Array(he);for(H=0;H<J.length;H++)ue.set(J[H],se),se+=J[H].length;b(new TextDecoder().decode(ue))}else J.push(ee.value),C.read().then(k).catch(G)}).catch(G),B.write(w).then(()=>{B.close()}).catch(G)}catch(k){G(k)}});return new Promise(b=>{var G=setTimeout(()=>{C(),b({__timeout:!0})},2e4),V=document.createElement("iframe");V.setAttribute("sandbox","allow-scripts"),V.setAttribute("aria-hidden","true"),V.style.cssText="position:absolute;width:1px;height:1px;top:-9999px;left:-9999px;border:none;opacity:0;pointer-events:none;";var B=!1;function C(){B||(B=!0,clearTimeout(G),window.removeEventListener("message",J),V.parentNode&&V.parentNode.removeChild(V))}function J(k){var ee=k.data;ee&&typeof ee=="object"&&(ee.type==="cap:instr"?(C(),ee.blocked?b({__blocked:!0,blockReason:ee.blockReason||"automated_browser"}):ee.result?b(ee.result):b({__timeout:!0})):ee.type==="cap:error"&&(C(),b({__timeout:!0})))}window.addEventListener("message",J),V.srcdoc='<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body><script>'+f+`
3
- <\/script></body></html>`,document.body.appendChild(V)})}let r=null,i=()=>{if(r)return r;let O=window.CAP_CUSTOM_WASM_URL||"https://cdn.jsdelivr.net/npm/@cap.js/wasm@0.0.6/browser/cap_wasm_bg.wasm";return r=fetch(O).then(w=>{if(!w.ok)throw new Error(`Failed to fetch wasm: ${w.status}`);return w.arrayBuffer()}).then(w=>WebAssembly.compile(w)).catch(w=>{throw r=null,w}),r};typeof WebAssembly=="object"&&typeof WebAssembly.compile=="function"&&i().catch(()=>{});let a=null;function s(){return a||(a=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"})),a)}class l{constructor(w){this._size=w,this._workers=[],this._idle=[],this._queue=[],this._wasmModule=null,this._spawnFailures=0}setWasm(w){this._wasmModule=w}_spawn(){let w=s(),f=new Worker(w);return f._busy=!1,this._workers.push(f),this._idle.push(f),f}_replaceWorker(w){let f=this._workers.indexOf(w);f!==-1&&this._workers.splice(f,1);let b=this._idle.indexOf(w);b!==-1&&this._idle.splice(b,1);try{w.terminate()}catch{}return this._spawnFailures++,this._spawnFailures>3?(console.error("[cap] worker spawn failed repeatedly, not retrying"),null):this._spawn()}_ensureSize(w){for(;this._workers.length<w;)this._spawn()}run(w,f){return new Promise((b,G)=>{this._queue.push({salt:w,target:f,resolve:b,reject:G}),this._dispatch()})}_dispatch(){for(;this._idle.length>0&&this._queue.length>0;){let w=this._idle.shift(),{salt:f,target:b,resolve:G,reject:V}=this._queue.shift(),B=!1,C=({data:k})=>{B||(B=!0,w.removeEventListener("message",C),w.removeEventListener("error",J),this._spawnFailures=0,this._idle.push(w),k.found?G(k.nonce):V(new Error(k.error||"worker failed")),this._dispatch())},J=k=>{if(B)return;B=!0,w.removeEventListener("message",C),w.removeEventListener("error",J);let ee=this._replaceWorker(w);V(k),ee&&this._dispatch()};w.addEventListener("message",C),w.addEventListener("error",J),this._wasmModule?w.postMessage({salt:f,target:b,wasmModule:this._wasmModule},[]):w.postMessage({salt:f,target:b})}}terminate(){for(let w of this._workers)try{w.terminate()}catch{}this._workers=[],this._idle=[],this._queue=[]}}class c extends HTMLElement{constructor(){super();me(this,D);me(this,g,null);me(this,I,navigator.hardwareConcurrency||8);oi(this,"token",null);me(this,h);me(this,y);me(this,R);me(this,E,!1);me(this,T);me(this,A,null);me(this,ae,null);me(this,Q,null);me(this,ce,null);m(this,T)&&m(this,T).forEach((f,b)=>{this.removeEventListener(b.slice(2),f)}),P(this,T,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)}getI18nText(f,b){return this.getAttribute(`data-cap-i18n-${f}`)||b}static get observedAttributes(){return["onsolve","onprogress","onreset","onerror","data-cap-worker-count","data-cap-i18n-initial-state"]}initialize(){s(),m(this,A)||P(this,A,le(this,D,jr).call(this)),m(this,Q)||(P(this,Q,new l(1)),m(this,Q)._spawn())}attributeChangedCallback(f,b,G){if(f.startsWith("on")){let V=f.slice(2),B=m(this,T).get(f);if(B&&this.removeEventListener(V,B),G){let C=J=>{let k=this.getAttribute(f);typeof window[k]=="function"&&window[k].call(this,J)};m(this,T).set(f,C),this.addEventListener(V,C)}}f==="data-cap-worker-count"&&this.setWorkersCount(parseInt(G,10)),f==="data-cap-i18n-initial-state"&&m(this,y)&&m(this,y)?.querySelector(".label.active")&&this.animateLabel(this.getI18nText("initial-state","Verify you're human"))}async connectedCallback(){P(this,R,this),P(this,h,this.attachShadow({mode:"open"})),P(this,y,document.createElement("div")),this.createUI(),this.addEventListeners(),this.initialize(),m(this,y).removeAttribute("disabled");let f=this.getAttribute("data-cap-worker-count"),b=f?parseInt(f,10):null;this.setWorkersCount(b||navigator.hardwareConcurrency||8);let G=this.getAttribute("data-cap-hidden-field-name")||"cap-token";m(this,R).innerHTML=`<input type="hidden" name="${G}">`,le(this,D,$r).call(this)}async solve(){if(!m(this,E))try{P(this,E,!0),this.updateUI("verifying",this.getI18nText("verifying-label","Verifying..."),!0),m(this,y).setAttribute("aria-label",this.getI18nText("verifying-aria-label","Verifying you're a human, please wait")),this.dispatchEvent("progress",{progress:0});try{let f,b,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+="/"),m(this,A).state==="done"&&m(this,A).token&&m(this,A).tokenExpires&&Date.now()<m(this,A).tokenExpires){this.dispatchEvent("progress",{progress:100});let se=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${se}']`)&&(this.querySelector(`input[name='${se}']`).value=m(this,A).token),this.dispatchEvent("solve",{token:m(this,A).token}),this.token=m(this,A).token;let H=m(this,A).tokenExpires-Date.now();return m(this,g)&&clearTimeout(m(this,g)),P(this,g,setTimeout(()=>this.reset(),H)),m(this,y).setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),t&&navigator.vibrate([10,50,20,30,40]),le(this,D,go).call(this),P(this,E,!1),{success:!0,token:this.token}}if(m(this,A).state==="done")f=m(this,A).results,b=m(this,A).challengeResp,this.dispatchEvent("progress",{progress:100});else if(m(this,A).state==="solving"||m(this,A).state==="redeeming"||m(this,A).state==="fetching"||m(this,A).state==="waiting"){m(this,A).state==="waiting"&&(m(this,ae)&&(clearTimeout(m(this,ae)),P(this,ae,null)),m(this,A).state="waiting",le(this,D,qr).call(this)),m(this,A).pendingPromotion=m(this,I),m(this,A).promoteFn&&m(this,A).promoteFn(m(this,I));let se=setInterval(()=>{if(m(this,A).state!=="solving"&&m(this,A).state!=="redeeming")return void clearInterval(se);let H=m(this,A).challenges?m(this,A).challenges.length:1,ue=m(this,A).completedCount,Te=m(this,A).state==="redeeming"?99:Math.min(98,Math.round(ue/H*100));this.dispatchEvent("progress",{progress:Te})},150);if(await new Promise(H=>m(this,A).onSettled(H)),clearInterval(se),m(this,A).state!=="done")throw new Error("Speculative solve failed \u2013 please try again");if(m(this,A).token&&m(this,A).tokenExpires&&Date.now()<m(this,A).tokenExpires){this.dispatchEvent("progress",{progress:100});let H=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${H}']`)&&(this.querySelector(`input[name='${H}']`).value=m(this,A).token),this.dispatchEvent("solve",{token:m(this,A).token}),this.token=m(this,A).token;let ue=m(this,A).tokenExpires-Date.now();return m(this,g)&&clearTimeout(m(this,g)),P(this,g,setTimeout(()=>this.reset(),ue)),m(this,y).setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),t&&navigator.vibrate([10,50,20,30,40]),le(this,D,go).call(this),P(this,E,!1),{success:!0,token:this.token}}f=m(this,A).results,b=m(this,A).challengeResp,this.dispatchEvent("progress",{progress:100})}else{let se=await e(`${G}challenge`,{method:"POST"});try{b=await se.json()}catch{throw new Error("Failed to parse challenge response from server")}if(b.error)throw new Error(b.error);let{challenge:H,token:ue}=b,Te=H;if(!Array.isArray(Te)){let yo=0;Te=Array.from({length:H.c},()=>(yo++,[n(`${ue}${yo}`,H.s),n(`${ue}${yo}d`,H.d)]))}f=await this.solveChallenges(Te)}let V=b.instrumentation?o(b.instrumentation):Promise.resolve(null),B=await V;if(B?.__timeout||B?.__blocked){this.updateUIBlocked(this.getI18nText("error-label","Error"),B?.__blocked),m(this,y).setAttribute("aria-label",this.getI18nText("error-aria-label","An error occurred, please try again")),this.removeEventListener("error",this.boundHandleError);let se=new CustomEvent("error",{bubbles:!0,composed:!0,detail:{isCap:!0,message:"Instrumentation failed"}});return super.dispatchEvent(se),this.addEventListener("error",this.boundHandleError),this.executeAttributeCode("onerror",se),console.error("[cap]","Instrumentation failed"),void P(this,E,!1)}let{token:C}=b,J=await e(`${G}redeem`,{method:"POST",body:JSON.stringify({token:C,solutions:f,...B&&{instr:B}}),headers:{"Content-Type":"application/json"}}),k;try{k=await J.json()}catch{throw new Error("Failed to parse server response")}if(this.dispatchEvent("progress",{progress:100}),!k.success)throw new Error(k.error||"Invalid solution");let ee=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${ee}']`)&&(this.querySelector(`input[name='${ee}']`).value=k.token),this.dispatchEvent("solve",{token:k.token}),this.token=k.token,le(this,D,go).call(this),m(this,g)&&clearTimeout(m(this,g));let he=new Date(k.expires).getTime()-Date.now();return he>0&&he<864e5?P(this,g,setTimeout(()=>this.reset(),he)):this.error("Invalid expiration time"),m(this,y).setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),t&&navigator.vibrate([10,50,20,30,40]),{success:!0,token:this.token}}catch(f){throw m(this,y).setAttribute("aria-label",this.getI18nText("error-aria-label","An error occurred, please try again")),this.error(f.message),f}}finally{P(this,E,!1)}}async solveChallenges(f){let b=f.length,G=0,V=null,B=typeof WebAssembly=="object"&&typeof WebAssembly.instantiate=="function";if(B)try{V=await i()}catch(k){console.warn("[cap] wasm unavailable, falling back to JS solver:",k)}if(!B&&!m(this,h).querySelector(".warning")){let k=document.createElement("div");k.className="warning",k.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;",k.innerText=this.getI18nText("wasm-disabled","Enable WASM for significantly faster solving"),m(this,h).insertBefore(k,m(this,h).firstChild),setTimeout(()=>{k.style.marginBottom="calc(-1 * var(--cap-border-radius, 14px))",k.style.opacity=1},10)}let C=new l(m(this,I));C.setWasm(V),C._ensureSize(m(this,I));let J=[];try{for(let k=0;k<f.length;k+=m(this,I)){let ee=f.slice(k,Math.min(k+m(this,I),f.length)),he=await Promise.all(ee.map(([se,H])=>C.run(se,H).then(ue=>{G++;let Te=Math.min(99,Math.round((0+G)/b*100));return this.dispatchEvent("progress",{progress:Te}),ue})));J.push(...he)}}finally{C.terminate()}return J}setWorkersCount(f){let b=parseInt(f,10),G=Math.min(navigator.hardwareConcurrency||8,16);P(this,I,!Number.isNaN(b)&&b>0&&b<=G?b:navigator.hardwareConcurrency||8)}createUI(){m(this,y).classList.add("captcha"),m(this,y).setAttribute("role","button"),m(this,y).setAttribute("tabindex","0"),m(this,y).setAttribute("aria-label",this.getI18nText("verify-aria-label","Click to verify you're a human")),m(this,y).setAttribute("aria-live","polite"),m(this,y).setAttribute("disabled","true"),m(this,y).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>`,m(this,h).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>`,m(this,h).appendChild(m(this,y))}addEventListeners(){m(this,y)&&(m(this,y).querySelector("a").addEventListener("click",f=>{f.stopPropagation(),f.preventDefault(),window.open("https://capjs.js.org","_blank")}),m(this,y).addEventListener("click",()=>{m(this,y).hasAttribute("disabled")||this.solve()}),m(this,y).addEventListener("mousedown",()=>{!m(this,y).hasAttribute("disabled")&&t&&navigator.vibrate(5)}),m(this,y).addEventListener("keydown",f=>{f.key!=="Enter"&&f.key!==" "||m(this,y).hasAttribute("disabled")||(f.preventDefault(),f.stopPropagation(),this.solve())}),this.addEventListener("progress",this.boundHandleProgress),this.addEventListener("solve",this.boundHandleSolve),this.addEventListener("error",this.boundHandleError),this.addEventListener("reset",this.boundHandleReset))}animateLabel(f){if(!m(this,y))return;let b=m(this,y).querySelector(".label-wrapper");if(!b)return;if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches){let B=b.querySelector(".label.active");if(B)B.textContent=f;else{let C=document.createElement("span");C.className="label active",C.textContent=f,b.appendChild(C)}return}let G=b.querySelector(".label.active"),V=document.createElement("span");V.className="label",V.textContent=f,b.appendChild(V),V.offsetWidth,V.classList.add("active"),G&&(G.classList.remove("active"),G.classList.add("exit"),G.addEventListener("transitionend",()=>G.remove(),{once:!0}))}updateUI(f,b,G=!1){m(this,y)&&(m(this,y).setAttribute("data-state",f),this.animateLabel(b),G?m(this,y).setAttribute("disabled","true"):m(this,y).removeAttribute("disabled"))}updateUIBlocked(f,b=!1){if(!m(this,y))return;m(this,y).setAttribute("data-state","error"),m(this,y).removeAttribute("disabled");let G=m(this,y).querySelector(".label-wrapper");if(!G)return;let V=this.getAttribute("data-cap-troubleshooting-url")||"https://capjs.js.org/guide/troubleshooting/instrumentation.html",B=G.querySelector(".label.active"),C=document.createElement("span");C.className="label",C.innerHTML=b?`${f} \xB7 <a class="cap-troubleshoot-link" href="${V}" target="_blank" rel="noopener">${this.getI18nText("troubleshooting-label","Troubleshoot")}</a>`:f,G.appendChild(C),C.offsetWidth,C.classList.add("active"),B&&(B.classList.remove("active"),B.classList.add("exit"),B.addEventListener("transitionend",()=>B.remove(),{once:!0}));let J=C.querySelector(".cap-troubleshoot-link");J&&J.addEventListener("click",k=>{k.stopPropagation()})}handleProgress(f){if(!m(this,y))return;let b=m(this,y).querySelector(".progress-ring-circle");if(b){let V=2*Math.PI*14,B=V-f.detail.progress/100*V;b.style.strokeDashoffset=B}let G=m(this,y).querySelector(".label-wrapper");if(G){let V=G.querySelector(".label.active");V&&(V.textContent=`${this.getI18nText("verifying-label","Verifying...")}`)}this.executeAttributeCode("onprogress",f)}handleSolve(f){this.updateUI("done",this.getI18nText("solved-label","You're a human"),!0),this.executeAttributeCode("onsolve",f)}handleError(f){this.updateUI("error",this.getI18nText("error-label","Error. Try again.")),this.executeAttributeCode("onerror",f),t&&navigator.vibrate([10,40,10])}handleReset(f){this.updateUI("",this.getI18nText("initial-state","I'm a human")),this.executeAttributeCode("onreset",f)}executeAttributeCode(f,b){let G=this.getAttribute(f);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,b))}error(f="Unknown error"){console.error("[cap]",f),this.dispatchEvent("error",{isCap:!0,message:f})}dispatchEvent(f,b={}){let G=new CustomEvent(f,{bubbles:!0,composed:!0,detail:b});super.dispatchEvent(G)}reset(){m(this,g)&&(clearTimeout(m(this,g)),P(this,g,null)),this.dispatchEvent("reset"),this.token=null;let f=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${f}']`)&&(this.querySelector(`input[name='${f}']`).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),m(this,T).forEach((f,b)=>{this.removeEventListener(b.slice(2),f)}),m(this,T).clear(),m(this,h)&&(m(this,h).innerHTML=""),this.reset(),this.cleanup()}cleanup(){m(this,g)&&(clearTimeout(m(this,g)),P(this,g,null)),le(this,D,fo).call(this),m(this,ae)&&(clearTimeout(m(this,ae)),P(this,ae,null)),m(this,Q)&&(m(this,Q).terminate(),P(this,Q,null)),m(this,A)&&(m(this,A).state="error",m(this,A).notify(),P(this,A,null))}}g=new WeakMap,I=new WeakMap,h=new WeakMap,y=new WeakMap,R=new WeakMap,E=new WeakMap,T=new WeakMap,A=new WeakMap,ae=new WeakMap,Q=new WeakMap,ce=new WeakMap,D=new WeakSet,jr=function(){return{state:"idle",challengeResp:null,challenges:null,results:[],completedCount:0,solvePromise:null,promoteFn:null,_listeners:[],pendingPromotion:null,token:null,tokenExpires:null,notify(){for(let f of this._listeners)f();this._listeners=[]},onSettled(f){this.state==="done"||this.state==="error"?f():this._listeners.push(f)}}},go=function(){P(this,A,le(this,D,jr).call(this)),le(this,D,$r).call(this)},fo=function(){m(this,ce)&&(window.removeEventListener("mousemove",m(this,ce)),window.removeEventListener("touchstart",m(this,ce)),window.removeEventListener("keydown",m(this,ce)),P(this,ce,null))},$r=function(){le(this,D,fo).call(this);let f=()=>{le(this,D,fo).call(this),le(this,D,Js).call(this)};P(this,ce,f),window.addEventListener("mousemove",f,{passive:!0}),window.addEventListener("touchstart",f,{passive:!0}),window.addEventListener("keydown",f,{passive:!0})},ks=function(){return typeof this.checkVisibility=="function"?this.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0}):!!(this.offsetParent||this.getClientRects().length>0)},Js=function(){m(this,A).state==="idle"&&le(this,D,ks).call(this)&&(m(this,A).state="waiting",P(this,ae,setTimeout(()=>{le(this,D,qr).call(this)},2500)))},qr=async function(){if(m(this,A).state!=="waiting")return;m(this,A).state="fetching";let f=this.getAttribute("data-cap-api-endpoint");if(!f&&window?.CAP_CUSTOM_FETCH&&(f="/"),f){f.endsWith("/")||(f+="/");try{let b=await e(`${f}challenge`,{method:"POST"}),G;try{G=await b.json()}catch{throw new Error("Failed to parse speculative challenge response")}if(G.error)throw new Error(G.error);G._apiEndpoint=f,m(this,A).challengeResp=G;let{challenge:V,token:B}=G,C=V;if(!Array.isArray(C)){let J=0;C=Array.from({length:V.c},()=>(J++,[n(`${B}${J}`,V.s),n(`${B}${J}d`,V.d)]))}m(this,A).challenges=C,m(this,A).state="solving",m(this,A).solvePromise=le(this,D,Ms).call(this,C)}catch(b){console.warn("[cap] speculative challenge fetch failed:",b),m(this,A).state="error",m(this,A).notify()}}else m(this,A).state="idle"},Ms=async function(f){s();let b=null;try{b=await i()}catch{}m(this,Q)||(P(this,Q,new l(1)),m(this,Q)._spawn()),m(this,Q).setWasm(b);let G=f.length,V=new Array(G),B=1,C=!1;m(this,A).promoteFn=k=>{C||(C=!0,B=k,m(this,Q)._size=k,m(this,Q)._ensureSize(k))},m(this,A).pendingPromotion!==null&&(m(this,A).promoteFn(m(this,A).pendingPromotion),m(this,A).pendingPromotion=null);let J=0;for(;J<G;){let k=B,ee=[],he=[];for(let H=0;H<k&&J<G;H++)he.push(J),ee.push(f[J]),J++;m(this,Q)._ensureSize(Math.max(B,k));let se=await Promise.all(ee.map(H=>m(this,Q).run(H[0],H[1]).then(ue=>(m(this,A).completedCount++,ue))));for(let H=0;H<he.length;H++)V[he[H]]=se[H];!C&&J<G&&await new Promise(H=>setTimeout(H,120))}return m(this,A).results=V,m(this,A).state="redeeming",le(this,D,Fs).call(this,V),V},Fs=async function(f){try{let b=m(this,A).challengeResp,G=b._apiEndpoint;if(!G)throw new Error("[cap] speculative redeem: missing apiEndpoint");let V=null;if(b.instrumentation&&(V=await o(b.instrumentation),V?.__timeout||V?.__blocked))return m(this,A).state="done",void m(this,A).notify();let B=await e(`${G}redeem`,{method:"POST",body:JSON.stringify({token:b.token,solutions:f,...V&&{instr:V}}),headers:{"Content-Type":"application/json"}}),C;try{C=await B.json()}catch{throw new Error("Failed to parse speculative redeem response")}if(!C.success)throw new Error(C.error||"Speculative redeem failed");m(this,A).token=C.token,m(this,A).tokenExpires=new Date(C.expires).getTime(),m(this,A).state="done",m(this,A).notify()}catch(b){console.warn("[cap] speculative redeem failed (will redo on click):",b),m(this,A).state="done",m(this,A).notify()}};class p{constructor(w={},f){let b=f||document.createElement("cap-widget");if(Object.entries(w).forEach(([G,V])=>{b.setAttribute(G,V)}),!w.apiEndpoint&&!window?.CAP_CUSTOM_FETCH)throw b.remove(),new Error("Missing API endpoint. Either custom fetch or an API endpoint must be provided.");w.apiEndpoint&&b.setAttribute("data-cap-api-endpoint",w.apiEndpoint),this.widget=b,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:()=>b.token,configurable:!0,enumerable:!0}),f||(b.style.display="none",document.documentElement.appendChild(b))}}window.Cap=p,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.
4
- to prevent this, set window.CAP_DONT_SKIP_REDEFINE to true`):customElements.define("cap-widget",c),typeof bo=="object"&&typeof ei<"u"?ei.exports=p:typeof define=="function"&&define.amd&&define([],()=>p),typeof bo<"u"&&(bo.default=p)})()});var zd={};_s(zd,{AdaptAutomationElement:()=>xt,AdaptCapElement:()=>sn,Cap:()=>Le,FloatingToolbar:()=>$e,ForkGroupActions:()=>qe,IframePanelComponent:()=>ke,MinimizeManager:()=>je,PanelManager:()=>et,WebClient:()=>Ne,clearPersistedState:()=>ws,configure:()=>oo,createChallenge:()=>Qr,createConnectClient:()=>ao,redeemChallenge:()=>Or,resetConfig:()=>ro,resolveTheme:()=>rn});function Zt(t,e){return t!==null&&typeof t=="object"&&"$typeName"in t&&typeof t.$typeName=="string"?e===void 0?!0:e.typeName===t.$typeName:!1}var u;(function(t){t[t.DOUBLE=1]="DOUBLE",t[t.FLOAT=2]="FLOAT",t[t.INT64=3]="INT64",t[t.UINT64=4]="UINT64",t[t.INT32=5]="INT32",t[t.FIXED64=6]="FIXED64",t[t.FIXED32=7]="FIXED32",t[t.BOOL=8]="BOOL",t[t.STRING=9]="STRING",t[t.BYTES=12]="BYTES",t[t.UINT32=13]="UINT32",t[t.SFIXED32=15]="SFIXED32",t[t.SFIXED64=16]="SFIXED64",t[t.SINT32=17]="SINT32",t[t.SINT64=18]="SINT64"})(u||(u={}));function ii(){let t=0,e=0;for(let o=0;o<28;o+=7){let r=this.buf[this.pos++];if(t|=(r&127)<<o,(r&128)==0)return this.assertBounds(),[t,e]}let n=this.buf[this.pos++];if(t|=(n&15)<<28,e=(n&112)>>4,(n&128)==0)return this.assertBounds(),[t,e];for(let o=3;o<=31;o+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<o,(r&128)==0)return this.assertBounds(),[t,e]}throw new Error("invalid varint")}function cn(t,e,n){for(let i=0;i<28;i=i+7){let a=t>>>i,s=!(!(a>>>7)&&e==0),l=(s?a|128:a)&255;if(n.push(l),!s)return}let o=t>>>28&15|(e&7)<<4,r=e>>3!=0;if(n.push((r?o|128:o)&255),!!r){for(let i=3;i<31;i=i+7){let a=e>>>i,s=!!(a>>>7),l=(s?a|128:a)&255;if(n.push(l),!s)return}n.push(e>>>31&1)}}var ln=4294967296;function Go(t){let e=t[0]==="-";e&&(t=t.slice(1));let n=1e6,o=0,r=0;function i(a,s){let l=Number(t.slice(a,s));r*=n,o=o*n+l,o>=ln&&(r=r+(o/ln|0),o=o%ln)}return i(-24,-18),i(-18,-12),i(-12,-6),i(-6),e?si(o,r):Ao(o,r)}function ai(t,e){let n=Ao(t,e),o=n.hi&2147483648;o&&(n=si(n.lo,n.hi));let r=vo(n.lo,n.hi);return o?"-"+r:r}function vo(t,e){if({lo:t,hi:e}=Qs(t,e),e<=2097151)return String(ln*e+t);let n=t&16777215,o=(t>>>24|e<<8)&16777215,r=e>>16&65535,i=n+o*6777216+r*6710656,a=o+r*8147497,s=r*2,l=1e7;return i>=l&&(a+=Math.floor(i/l),i%=l),a>=l&&(s+=Math.floor(a/l),a%=l),s.toString()+ri(a)+ri(i)}function Qs(t,e){return{lo:t>>>0,hi:e>>>0}}function Ao(t,e){return{lo:t|0,hi:e|0}}function si(t,e){return e=~e,t?t=~t+1:e+=1,Ao(t,e)}var ri=t=>{let e=String(t);return"0000000".slice(e.length)+e};function Vt(t,e){if(t>=0){for(;t>127;)e.push(t&127|128),t=t>>>7;e.push(t)}else{for(let n=0;n<9;n++)e.push(t&127|128),t=t>>7;e.push(1)}}function li(){let t=this.buf[this.pos++],e=t&127;if((t&128)==0)return this.assertBounds(),e;if(t=this.buf[this.pos++],e|=(t&127)<<7,(t&128)==0)return this.assertBounds(),e;if(t=this.buf[this.pos++],e|=(t&127)<<14,(t&128)==0)return this.assertBounds(),e;if(t=this.buf[this.pos++],e|=(t&127)<<21,(t&128)==0)return this.assertBounds(),e;t=this.buf[this.pos++],e|=(t&15)<<28;for(let n=5;(t&128)!==0&&n<10;n++)t=this.buf[this.pos++];if((t&128)!=0)throw new Error("invalid varint");return this.assertBounds(),e>>>0}var _=Os();function Os(){let t=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof t.getBigInt64=="function"&&typeof t.getBigUint64=="function"&&typeof t.setBigInt64=="function"&&typeof t.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let n=BigInt("-9223372036854775808"),o=BigInt("9223372036854775807"),r=BigInt("0"),i=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(a){let s=typeof a=="bigint"?a:BigInt(a);if(s>o||s<n)throw new Error(`invalid int64: ${a}`);return s},uParse(a){let s=typeof a=="bigint"?a:BigInt(a);if(s>i||s<r)throw new Error(`invalid uint64: ${a}`);return s},enc(a){return t.setBigInt64(0,this.parse(a),!0),{lo:t.getInt32(0,!0),hi:t.getInt32(4,!0)}},uEnc(a){return t.setBigInt64(0,this.uParse(a),!0),{lo:t.getInt32(0,!0),hi:t.getInt32(4,!0)}},dec(a,s){return t.setInt32(0,a,!0),t.setInt32(4,s,!0),t.getBigInt64(0,!0)},uDec(a,s){return t.setInt32(0,a,!0),t.setInt32(4,s,!0),t.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(n){return typeof n!="string"&&(n=n.toString()),ci(n),n},uParse(n){return typeof n!="string"&&(n=n.toString()),di(n),n},enc(n){return typeof n!="string"&&(n=n.toString()),ci(n),Go(n)},uEnc(n){return typeof n!="string"&&(n=n.toString()),di(n),Go(n)},dec(n,o){return ai(n,o)},uDec(n,o){return vo(n,o)}}}function ci(t){if(!/^-?[0-9]+$/.test(t))throw new Error("invalid int64: "+t)}function di(t){if(!/^[0-9]+$/.test(t))throw new Error("invalid uint64: "+t)}function ge(t,e){switch(t){case u.STRING:return"";case u.BOOL:return!1;case u.DOUBLE:case u.FLOAT:return 0;case u.INT64:case u.UINT64:case u.SFIXED64:case u.FIXED64:case u.SINT64:return e?"0":_.zero;case u.BYTES:return new Uint8Array(0);default:return 0}}function ui(t,e){switch(t){case u.BOOL:return e===!1;case u.STRING:return e==="";case u.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var mi=2,fe=Symbol.for("reflect unsafe local");function dn(t,e){let n=t[e.localName].case;return n===void 0?n:e.fields.find(o=>o.localName===n)}function xo(t,e){let n=e.localName;if(e.oneof)return t[e.oneof.localName].case===n;if(e.presence!=mi)return t[n]!==void 0&&Object.prototype.hasOwnProperty.call(t,n);switch(e.fieldKind){case"list":return t[n].length>0;case"map":return Object.keys(t[n]).length>0;case"scalar":return!ui(e.scalar,t[n]);case"enum":return t[n]!==e.enum.values[0].number}throw new Error("message field with implicit presence")}function Ue(t,e){return Object.prototype.hasOwnProperty.call(t,e)&&t[e]!==void 0}function un(t,e){if(e.oneof){let n=t[e.oneof.localName];return n.case===e.localName?n.value:void 0}return t[e.localName]}function mn(t,e,n){e.oneof?t[e.oneof.localName]={case:e.localName,value:n}:t[e.localName]=n}function Co(t,e){let n=e.localName;if(e.oneof){let o=e.oneof.localName;t[o].case===n&&(t[o]={case:void 0})}else if(e.presence!=mi)delete t[n];else switch(e.fieldKind){case"map":t[n]={};break;case"list":t[n]=[];break;case"enum":t[n]=e.enum.values[0].number;break;case"scalar":t[n]=ge(e.scalar,e.longAsString);break}}function Ae(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function Et(t,e){var n,o,r,i;if(Ae(t)&&fe in t&&"add"in t&&"field"in t&&typeof t.field=="function"){if(e!==void 0){let a=e,s=t.field();return a.listKind==s.listKind&&a.scalar===s.scalar&&((n=a.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((r=a.enum)===null||r===void 0?void 0:r.typeName)===((i=s.enum)===null||i===void 0?void 0:i.typeName)}return!0}return!1}function Bt(t,e){var n,o,r,i;if(Ae(t)&&fe in t&&"has"in t&&"field"in t&&typeof t.field=="function"){if(e!==void 0){let a=e,s=t.field();return a.mapKey===s.mapKey&&a.mapKind==s.mapKind&&a.scalar===s.scalar&&((n=a.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((r=a.enum)===null||r===void 0?void 0:r.typeName)===((i=s.enum)===null||i===void 0?void 0:i.typeName)}return!0}return!1}function nt(t,e){return Ae(t)&&fe in t&&"desc"in t&&Ae(t.desc)&&t.desc.kind==="message"&&(e===void 0||t.desc.typeName==e.typeName)}function pi(t){return hi(t.$typeName)}function xe(t){let e=t.fields[0];return hi(t.typeName)&&e!==void 0&&e.fieldKind=="scalar"&&e.name=="value"&&e.number==1}function hi(t){return t.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(t.substring(16))}var js=999,$s=998,pn=2;function K(t,e){if(Zt(e,t))return e;let n=ol(t);return e!==void 0&&qs(t,n,e),n}function qs(t,e,n){for(let o of t.members){let r=n[o.localName];if(r==null)continue;let i;if(o.kind=="oneof"){let a=dn(n,o);if(!a)continue;i=a,r=un(n,a)}else i=o;switch(i.fieldKind){case"message":r=Zo(i,r);break;case"scalar":r=bi(i,r);break;case"list":r=tl(i,r);break;case"map":r=el(i,r);break}mn(e,i,r)}return e}function bi(t,e){return t.scalar==u.BYTES?Vo(e):e}function el(t,e){if(Ae(e)){if(t.scalar==u.BYTES)return gi(e,Vo);if(t.mapKind=="message")return gi(e,n=>Zo(t,n))}return e}function tl(t,e){if(Array.isArray(e)){if(t.scalar==u.BYTES)return e.map(Vo);if(t.listKind=="message")return e.map(n=>Zo(t,n))}return e}function Zo(t,e){if(t.fieldKind=="message"&&!t.oneof&&xe(t.message))return bi(t.message.fields[0],e);if(Ae(e)){if(t.message.typeName=="google.protobuf.Struct"&&t.parent.typeName!=="google.protobuf.Value")return e;if(!Zt(e,t.message))return K(t.message,e)}return e}function Vo(t){return Array.isArray(t)?new Uint8Array(t):t}function gi(t,e){let n={};for(let o of Object.entries(t))n[o[0]]=e(o[1]);return n}var nl=Symbol(),fi=new WeakMap;function ol(t){let e;if(rl(t)){let n=fi.get(t),o,r;if(n)({prototype:o,members:r}=n);else{o={},r=new Set;for(let i of t.members)i.kind!="oneof"&&(i.fieldKind!="scalar"&&i.fieldKind!="enum"||i.presence!=pn&&(r.add(i),o[i.localName]=So(i)));fi.set(t,{prototype:o,members:r})}e=Object.create(o),e.$typeName=t.typeName;for(let i of t.members)r.has(i)||i.kind=="field"&&(i.fieldKind=="message"||(i.fieldKind=="scalar"||i.fieldKind=="enum")&&i.presence!=pn)||(e[i.localName]=So(i))}else{e={$typeName:t.typeName};for(let n of t.members)(n.kind=="oneof"||n.presence==pn)&&(e[n.localName]=So(n))}return e}function rl(t){switch(t.file.edition){case js:return!1;case $s:return!0;default:return t.fields.some(e=>e.presence!=pn&&e.fieldKind!="message"&&!e.oneof)}}function So(t){if(t.kind=="oneof")return{case:void 0};if(t.fieldKind=="list")return[];if(t.fieldKind=="map")return{};if(t.fieldKind=="message")return nl;let e=t.getDefaultValue();return e!==void 0?t.fieldKind=="scalar"&&t.longAsString?e.toString():e:t.fieldKind=="scalar"?ge(t.scalar,t.longAsString):t.enum.values[0].number}var il=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],re=class extends Error{constructor(e,n,o="FieldValueInvalidError"){super(n),this.name=o,this.field=()=>e}};function yi(t){return t instanceof Error&&il.includes(t.name)&&"field"in t&&typeof t.field=="function"}var Eo=Symbol.for("@bufbuild/protobuf/text-encoding");function wt(){if(globalThis[Eo]==null){let t=new globalThis.TextEncoder,e=new globalThis.TextDecoder;globalThis[Eo]={encodeUtf8(n){return t.encode(n)},decodeUtf8(n){return e.decode(n)},checkUtf8(n){try{return encodeURIComponent(n),!0}catch{return!1}}}}return globalThis[Eo]}var j;(function(t){t[t.Varint=0]="Varint",t[t.Bit64=1]="Bit64",t[t.LengthDelimited=2]="LengthDelimited",t[t.StartGroup=3]="StartGroup",t[t.EndGroup=4]="EndGroup",t[t.Bit32=5]="Bit32"})(j||(j={}));var wo=34028234663852886e22,Xo=-34028234663852886e22,Wo=4294967295,Ro=2147483647,ko=-2147483648,De=class{constructor(e=wt().encodeUtf8){this.encodeUtf8=e,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let e=0;for(let r=0;r<this.chunks.length;r++)e+=this.chunks[r].length;let n=new Uint8Array(e),o=0;for(let r=0;r<this.chunks.length;r++)n.set(this.chunks[r],o),o+=this.chunks[r].length;return this.chunks=[],n}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=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(e.byteLength),this.raw(e)}tag(e,n){return this.uint32((e<<3|n)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Ii(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return Bo(e),Vt(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let n=this.encodeUtf8(e);return this.uint32(n.byteLength),this.raw(n)}float(e){al(e);let n=new Uint8Array(4);return new DataView(n.buffer).setFloat32(0,e,!0),this.raw(n)}double(e){let n=new Uint8Array(8);return new DataView(n.buffer).setFloat64(0,e,!0),this.raw(n)}fixed32(e){Ii(e);let n=new Uint8Array(4);return new DataView(n.buffer).setUint32(0,e,!0),this.raw(n)}sfixed32(e){Bo(e);let n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,e,!0),this.raw(n)}sint32(e){return Bo(e),e=(e<<1^e>>31)>>>0,Vt(e,this.buf),this}sfixed64(e){let n=new Uint8Array(8),o=new DataView(n.buffer),r=_.enc(e);return o.setInt32(0,r.lo,!0),o.setInt32(4,r.hi,!0),this.raw(n)}fixed64(e){let n=new Uint8Array(8),o=new DataView(n.buffer),r=_.uEnc(e);return o.setInt32(0,r.lo,!0),o.setInt32(4,r.hi,!0),this.raw(n)}int64(e){let n=_.enc(e);return cn(n.lo,n.hi,this.buf),this}sint64(e){let n=_.enc(e),o=n.hi>>31,r=n.lo<<1^o,i=(n.hi<<1|n.lo>>>31)^o;return cn(r,i,this.buf),this}uint64(e){let n=_.uEnc(e);return cn(n.lo,n.hi,this.buf),this}},Je=class{constructor(e,n=wt().decodeUtf8){this.decodeUtf8=n,this.varint64=ii,this.uint32=li,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){let e=this.uint32(),n=e>>>3,o=e&7;if(n<=0||o<0||o>5)throw new Error("illegal tag: field no "+n+" wire type "+o);return[n,o]}skip(e,n){let o=this.pos;switch(e){case j.Varint:for(;this.buf[this.pos++]&128;);break;case j.Bit64:this.pos+=4;case j.Bit32:this.pos+=4;break;case j.LengthDelimited:let r=this.uint32();this.pos+=r;break;case j.StartGroup:for(;;){let[i,a]=this.tag();if(a===j.EndGroup){if(n!==void 0&&i!==n)throw new Error("invalid end group tag");break}this.skip(a,i)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(o,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return _.dec(...this.varint64())}uint64(){return _.uDec(...this.varint64())}sint64(){let[e,n]=this.varint64(),o=-(e&1);return e=(e>>>1|(n&1)<<31)^o,n=n>>>1^o,_.dec(e,n)}bool(){let[e,n]=this.varint64();return e!==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 _.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return _.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 e=this.uint32(),n=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(n,n+e)}string(){return this.decodeUtf8(this.bytes())}};function Bo(t){if(typeof t=="string")t=Number(t);else if(typeof t!="number")throw new Error("invalid int32: "+typeof t);if(!Number.isInteger(t)||t>Ro||t<ko)throw new Error("invalid int32: "+t)}function Ii(t){if(typeof t=="string")t=Number(t);else if(typeof t!="number")throw new Error("invalid uint32: "+typeof t);if(!Number.isInteger(t)||t>Wo||t<0)throw new Error("invalid uint32: "+t)}function al(t){if(typeof t=="string"){let e=t;if(t=Number(t),Number.isNaN(t)&&e!=="NaN")throw new Error("invalid float32: "+e)}else if(typeof t!="number")throw new Error("invalid float32: "+typeof t);if(Number.isFinite(t)&&(t>wo||t<Xo))throw new Error("invalid float32: "+t)}function Ee(t,e){let n=t.fieldKind=="list"?Et(e,t):t.fieldKind=="map"?Bt(e,t):Mo(t,e);if(n===!0)return;let o;switch(t.fieldKind){case"list":o=`expected ${xi(t)}, got ${te(e)}`;break;case"map":o=`expected ${Ci(t)}, got ${te(e)}`;break;default:o=hn(t,e,n)}return new re(t,o)}function Jo(t,e,n){let o=Mo(t,n);if(o!==!0)return new re(t,`list item #${e+1}: ${hn(t,n,o)}`)}function Gi(t,e,n){let o=vi(e,t.mapKey);if(o!==!0)return new re(t,`invalid map key: ${hn({scalar:t.mapKey},e,o)}`);let r=Mo(t,n);if(r!==!0)return new re(t,`map entry ${te(e)}: ${hn(t,n,r)}`)}function Mo(t,e){return t.scalar!==void 0?vi(e,t.scalar):t.enum!==void 0?t.enum.open?Number.isInteger(e):t.enum.values.some(n=>n.number===e):nt(e,t.message)}function vi(t,e){switch(e){case u.DOUBLE:return typeof t=="number";case u.FLOAT:return typeof t!="number"?!1:Number.isNaN(t)||!Number.isFinite(t)?!0:t>wo||t<Xo?`${t.toFixed()} out of range`:!0;case u.INT32:case u.SFIXED32:case u.SINT32:return typeof t!="number"||!Number.isInteger(t)?!1:t>Ro||t<ko?`${t.toFixed()} out of range`:!0;case u.FIXED32:case u.UINT32:return typeof t!="number"||!Number.isInteger(t)?!1:t>Wo||t<0?`${t.toFixed()} out of range`:!0;case u.BOOL:return typeof t=="boolean";case u.STRING:return typeof t!="string"?!1:wt().checkUtf8(t)||"invalid UTF8";case u.BYTES:return t instanceof Uint8Array;case u.INT64:case u.SFIXED64:case u.SINT64:if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return _.parse(t),!0}catch{return`${t} out of range`}return!1;case u.FIXED64:case u.UINT64:if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return _.uParse(t),!0}catch{return`${t} out of range`}return!1}}function hn(t,e,n){return n=typeof n=="string"?`: ${n}`:`, got ${te(e)}`,t.scalar!==void 0?`expected ${sl(t.scalar)}`+n:t.enum!==void 0?`expected ${t.enum.toString()}`+n:`expected ${Ai(t.message)}`+n}function te(t){switch(typeof t){case"object":return t===null?"null":t instanceof Uint8Array?`Uint8Array(${t.length})`:Array.isArray(t)?`Array(${t.length})`:Et(t)?xi(t.field()):Bt(t)?Ci(t.field()):nt(t)?Ai(t.desc):Zt(t)?`message ${t.$typeName}`:"object";case"string":return t.length>30?"string":`"${t.split('"').join('\\"')}"`;case"boolean":return String(t);case"number":return String(t);case"bigint":return String(t)+"n";default:return typeof t}}function Ai(t){return`ReflectMessage (${t.typeName})`}function xi(t){switch(t.listKind){case"message":return`ReflectList (${t.message.toString()})`;case"enum":return`ReflectList (${t.enum.toString()})`;case"scalar":return`ReflectList (${u[t.scalar]})`}}function Ci(t){switch(t.mapKind){case"message":return`ReflectMap (${u[t.mapKey]}, ${t.message.toString()})`;case"enum":return`ReflectMap (${u[t.mapKey]}, ${t.enum.toString()})`;case"scalar":return`ReflectMap (${u[t.mapKey]}, ${u[t.scalar]})`}}function sl(t){switch(t){case u.STRING:return"string";case u.BOOL:return"boolean";case u.INT64:case u.SINT64:case u.SFIXED64:return"bigint (int64)";case u.UINT64:case u.FIXED64:return"bigint (uint64)";case u.BYTES:return"Uint8Array";case u.DOUBLE:return"number (float64)";case u.FLOAT:return"number (float32)";case u.FIXED32:case u.UINT32:return"number (uint32)";case u.INT32:case u.SFIXED32:case u.SINT32:return"number (int32)"}}function oe(t,e,n=!0){return new fn(t,e,n)}var Si=new WeakMap,fn=class{get sortedFields(){let e=Si.get(this.desc);if(e)return e;let n=this.desc.fields.concat().sort((o,r)=>o.number-r.number);return Si.set(this.desc,n),n}constructor(e,n,o=!0){this.lists=new Map,this.maps=new Map,this.check=o,this.desc=e,this.message=this[fe]=n??K(e),this.fields=e.fields,this.oneofs=e.oneofs,this.members=e.members}findNumber(e){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(n=>[n.number,n]))),this._fieldsByNumber.get(e)}oneofCase(e){return Xt(this.message,e),dn(this.message,e)}isSet(e){return Xt(this.message,e),xo(this.message,e)}clear(e){Xt(this.message,e),Co(this.message,e)}get(e){Xt(this.message,e);let n=un(this.message,e);switch(e.fieldKind){case"list":let o=this.lists.get(e);return(!o||o[fe]!==n)&&this.lists.set(e,o=new zo(e,n,this.check)),o;case"map":let r=this.maps.get(e);return(!r||r[fe]!==n)&&this.maps.set(e,r=new No(e,n,this.check)),r;case"message":return Ho(e,n,this.check);case"scalar":return n===void 0?ge(e.scalar,!1):To(e,n);case"enum":return n??e.enum.values[0].number}}set(e,n){if(Xt(this.message,e),this.check){let r=Ee(e,n);if(r)throw r}let o;e.fieldKind=="message"?o=Lo(e,n):Bt(n)||Et(n)?o=n[fe]:o=Uo(e,n),mn(this.message,e,o)}getUnknown(){return this.message.$unknown}setUnknown(e){this.message.$unknown=e}};function Xt(t,e){if(e.parent.typeName!==t.$typeName)throw new re(e,`cannot use ${e.toString()} with message ${t.$typeName}`,"ForeignFieldError")}var zo=class{field(){return this._field}get size(){return this._arr.length}constructor(e,n,o){this._field=e,this._arr=this[fe]=n,this.check=o}get(e){let n=this._arr[e];return n===void 0?void 0:Fo(this._field,n,this.check)}set(e,n){if(e<0||e>=this._arr.length)throw new re(this._field,`list item #${e+1}: out of range`);if(this.check){let o=Jo(this._field,e,n);if(o)throw o}this._arr[e]=Zi(this._field,n)}add(e){if(this.check){let n=Jo(this._field,this._arr.length,e);if(n)throw n}this._arr.push(Zi(this._field,e))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let e of this._arr)yield Fo(this._field,e,this.check)}*entries(){for(let e=0;e<this._arr.length;e++)yield[e,Fo(this._field,this._arr[e],this.check)]}};var No=class{constructor(e,n,o=!0){this.obj=this[fe]=n??{},this.check=o,this._field=e}field(){return this._field}set(e,n){if(this.check){let o=Gi(this._field,e,n);if(o)throw o}return this.obj[gn(e)]=ll(this._field,n),this}delete(e){let n=gn(e),o=Object.prototype.hasOwnProperty.call(this.obj,n);return o&&delete this.obj[n],o}clear(){for(let e of Object.keys(this.obj))delete this.obj[e]}get(e){let n=this.obj[gn(e)];return n!==void 0&&(n=Yo(this._field,n,this.check)),n}has(e){return Object.prototype.hasOwnProperty.call(this.obj,gn(e))}*keys(){for(let e of Object.keys(this.obj))yield Vi(e,this._field.mapKey)}*entries(){for(let e of Object.entries(this.obj))yield[Vi(e[0],this._field.mapKey),Yo(this._field,e[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let e of Object.values(this.obj))yield Yo(this._field,e,this.check)}forEach(e,n){for(let o of this.entries())e.call(n,o[1],o[0],this)}};function Lo(t,e){return nt(e)?pi(e.message)&&!t.oneof&&t.fieldKind=="message"?e.message.value:e.desc.typeName=="google.protobuf.Struct"&&t.parent.typeName!="google.protobuf.Value"?Bi(e.message):e.message:e}function Ho(t,e,n){return e!==void 0&&(xe(t.message)&&!t.oneof&&t.fieldKind=="message"?e={$typeName:t.message.typeName,value:To(t.message.fields[0],e)}:t.message.typeName=="google.protobuf.Struct"&&t.parent.typeName!="google.protobuf.Value"&&Ae(e)&&(e=Ei(e))),new fn(t.message,e,n)}function Zi(t,e){return t.listKind=="message"?Lo(t,e):Uo(t,e)}function Fo(t,e,n){return t.listKind=="message"?Ho(t,e,n):To(t,e)}function ll(t,e){return t.mapKind=="message"?Lo(t,e):Uo(t,e)}function Yo(t,e,n){return t.mapKind=="message"?Ho(t,e,n):e}function gn(t){return typeof t=="string"||typeof t=="number"?t:String(t)}function Vi(t,e){switch(e){case u.STRING:return t;case u.INT32:case u.FIXED32:case u.UINT32:case u.SFIXED32:case u.SINT32:{let n=Number.parseInt(t);if(Number.isFinite(n))return n;break}case u.BOOL:switch(t){case"true":return!0;case"false":return!1}break;case u.UINT64:case u.FIXED64:try{return _.uParse(t)}catch{}break;default:try{return _.parse(t)}catch{}break}return t}function To(t,e){switch(t.scalar){case u.INT64:case u.SFIXED64:case u.SINT64:"longAsString"in t&&t.longAsString&&typeof e=="string"&&(e=_.parse(e));break;case u.FIXED64:case u.UINT64:"longAsString"in t&&t.longAsString&&typeof e=="string"&&(e=_.uParse(e));break}return e}function Uo(t,e){switch(t.scalar){case u.INT64:case u.SFIXED64:case u.SINT64:"longAsString"in t&&t.longAsString?e=String(e):(typeof e=="string"||typeof e=="number")&&(e=_.parse(e));break;case u.FIXED64:case u.UINT64:"longAsString"in t&&t.longAsString?e=String(e):(typeof e=="string"||typeof e=="number")&&(e=_.uParse(e));break}return e}function Ei(t){let e={$typeName:"google.protobuf.Struct",fields:{}};if(Ae(t))for(let[n,o]of Object.entries(t))e.fields[n]=Xi(o);return e}function Bi(t){let e={};for(let[n,o]of Object.entries(t.fields))e[n]=wi(o);return e}function wi(t){switch(t.kind.case){case"structValue":return Bi(t.kind.value);case"listValue":return t.kind.value.values.map(wi);case"nullValue":case void 0:return null;default:return t.kind.value}}function Xi(t){let e={$typeName:"google.protobuf.Value",kind:{case:void 0}};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:0};else if(Array.isArray(t)){let n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(t))for(let o of t)n.values.push(Xi(o));e.kind={case:"listValue",value:n}}else e.kind={case:"structValue",value:Ei(t)};break}return e}function Me(t){let e=cl(),n=t.length*3/4;t[t.length-2]=="="?n-=2:t[t.length-1]=="="&&(n-=1);let o=new Uint8Array(n),r=0,i=0,a,s=0;for(let l=0;l<t.length;l++){if(a=e[t.charCodeAt(l)],a===void 0)switch(t[l]){case"=":i=0;case`
5
- `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(i){case 0:s=a,i=1;break;case 1:o[r++]=s<<2|(a&48)>>4,s=a,i=2;break;case 2:o[r++]=(s&15)<<4|(a&60)>>2,s=a,i=3;break;case 3:o[r++]=(s&3)<<6|a,i=0;break}}if(i==1)throw Error("invalid base64 string");return o.subarray(0,r)}function _e(t,e="std"){let n=Ri(e),o=e=="std",r="",i=0,a,s=0;for(let l=0;l<t.length;l++)switch(a=t[l],i){case 0:r+=n[a>>2],s=(a&3)<<4,i=1;break;case 1:r+=n[s|a>>4],s=(a&15)<<2,i=2;break;case 2:r+=n[s|a>>6],r+=n[a&63],i=0;break}return i&&(r+=n[s],o&&(r+="=",i==1&&(r+="="))),r}var bn,Wi,ot;function Ri(t){return bn||(bn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Wi=bn.slice(0,-2).concat("-","_")),t=="url"?Wi:bn}function cl(){if(!ot){ot=[];let t=Ri("std");for(let e=0;e<t.length;e++)ot[t[e].charCodeAt(0)]=e;ot[45]=t.indexOf("+"),ot[95]=t.indexOf("/")}return ot}function Ce(t){let e=!1,n=[];for(let o=0;o<t.length;o++){let r=t.charAt(o);switch(r){case"_":e=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":n.push(r),e=!1;break;default:e&&(e=!1,r=r.toUpperCase()),n.push(r);break}}return n.join("")}function yn(t){return t.replace(/[A-Z]/g,e=>"_"+e.toLowerCase())}var dl=new Set(["constructor","toString","toJSON","valueOf"]);function rt(t){return dl.has(t)?t+"$":t}function Wt(t){for(let e of t.field)Ue(e,"jsonName")||(e.jsonName=Ce(e.name));t.nestedType.forEach(Wt)}function ki(t,e){let n=t.values.find(o=>o.name===e);if(!n)throw new Error(`cannot parse ${t} default value: ${e}`);return n.number}function Ji(t,e){switch(t){case u.STRING:return e;case u.BYTES:{let n=ul(e);if(n===!1)throw new Error(`cannot parse ${u[t]} default value: ${e}`);return n}case u.INT64:case u.SFIXED64:case u.SINT64:return _.parse(e);case u.UINT64:case u.FIXED64:return _.uParse(e);case u.DOUBLE:case u.FLOAT:switch(e){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(e)}case u.BOOL:return e==="true";case u.INT32:case u.UINT32:case u.SINT32:case u.FIXED32:case u.SFIXED32:return parseInt(e,10)}}function ul(t){let e=[],n={tail:t,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(o){if(this.tail.length>=o){let r=this.tail.substring(0,o);return this.tail=this.tail.substring(o),r}return!1}};for(;n.next();)switch(n.c){case"\\":if(n.next())switch(n.c){case"\\":e.push(n.c.charCodeAt(0));break;case"b":e.push(8);break;case"f":e.push(12);break;case"n":e.push(10);break;case"r":e.push(13);break;case"t":e.push(9);break;case"v":e.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let o=n.c,r=n.take(2);if(r===!1)return!1;let i=parseInt(o+r,8);if(Number.isNaN(i))return!1;e.push(i);break}case"x":{let o=n.c,r=n.take(2);if(r===!1)return!1;let i=parseInt(o+r,16);if(Number.isNaN(i))return!1;e.push(i);break}case"u":{let o=n.c,r=n.take(4);if(r===!1)return!1;let i=parseInt(o+r,16);if(Number.isNaN(i))return!1;let a=new Uint8Array(4);new DataView(a.buffer).setInt32(0,i,!0),e.push(a[0],a[1],a[2],a[3]);break}case"U":{let o=n.c,r=n.take(8);if(r===!1)return!1;let i=_.uEnc(o+r),a=new Uint8Array(8),s=new DataView(a.buffer);s.setInt32(0,i.lo,!0),s.setInt32(4,i.hi,!0),e.push(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);break}}break;default:e.push(n.c.charCodeAt(0))}return new Uint8Array(e)}function*In(t){switch(t.kind){case"file":for(let e of t.messages)yield e,yield*In(e);yield*t.enums,yield*t.services,yield*t.extensions;break;case"message":for(let e of t.nestedMessages)yield e,yield*In(e);yield*t.nestedEnums,yield*t.nestedExtensions;break}}function Gn(...t){let e=ml();if(!t.length)return e;if("$typeName"in t[0]&&t[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let n of t[0].file)zi(n,e);return e}if("$typeName"in t[0]){let i=function(a){let s=[];for(let l of a.dependency){if(e.getFile(l)!=null||r.has(l))continue;let c=o(l);if(!c)throw new Error(`Unable to resolve ${l}, imported by ${a.name}`);"kind"in c?e.addFile(c,!1,!0):(r.add(c.name),s.push(c))}return s.concat(...s.map(i))},n=t[0],o=t[1],r=new Set;for(let a of[n,...i(n)].reverse())zi(a,e)}else for(let n of t)for(let o of n.files)e.addFile(o);return e}function ml(){let t=new Map,e=new Map,n=new Map;return{kind:"registry",types:t,extendees:e,[Symbol.iterator](){return t.values()},get files(){return n.values()},addFile(o,r,i){if(n.set(o.proto.name,o),!r)for(let a of In(o))this.add(a);if(i)for(let a of o.dependencies)this.addFile(a,r,i)},add(o){if(o.kind=="extension"){let r=e.get(o.extendee.typeName);r||e.set(o.extendee.typeName,r=new Map),r.set(o.number,o)}t.set(o.typeName,o)},get(o){return t.get(o)},getFile(o){return n.get(o)},getMessage(o){let r=t.get(o);return r?.kind=="message"?r:void 0},getEnum(o){let r=t.get(o);return r?.kind=="enum"?r:void 0},getExtension(o){let r=t.get(o);return r?.kind=="extension"?r:void 0},getExtensionFor(o,r){var i;return(i=e.get(o.typeName))===null||i===void 0?void 0:i.get(r)},getService(o){let r=t.get(o);return r?.kind=="service"?r:void 0}}}var pl=998,hl=999,gl=9,kt=10,Rt=11,fl=12,Mi=14,Qo=3,bl=2,Fi=1,yl=0,Do=1,Yi=2,Il=3,Gl=1,vl=2,Al=1;var Li={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 zi(t,e){var n,o;let r={kind:"file",proto:t,deprecated:(o=(n=t.options)===null||n===void 0?void 0:n.deprecated)!==null&&o!==void 0?o:!1,edition:Zl(t),name:t.name.replace(/\.proto$/,""),dependencies:Vl(t,e),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${t.name}`}},i=new Map,a={get(s){return i.get(s)},add(s){var l;be(((l=s.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),i.set(s.typeName,s)}};for(let s of t.enumType)Hi(s,r,void 0,e);for(let s of t.messageType)Ti(s,r,void 0,e,a);for(let s of t.service)xl(s,r,e);_o(r,e);for(let s of i.values())Ko(s,e,a);for(let s of r.messages)Ko(s,e,a),_o(s,e);e.addFile(r,!0)}function _o(t,e){switch(t.kind){case"file":for(let n of t.proto.extension){let o=Po(n,t,e);t.extensions.push(o),e.add(o)}break;case"message":for(let n of t.proto.extension){let o=Po(n,t,e);t.nestedExtensions.push(o),e.add(o)}for(let n of t.nestedMessages)_o(n,e);break}}function Ko(t,e,n){let o=t.proto.oneofDecl.map(i=>Sl(i,t)),r=new Set;for(let i of t.proto.field){let a=wl(i,o),s=Po(i,t,e,a,n);t.fields.push(s),t.field[s.localName]=s,a===void 0?t.members.push(s):(a.fields.push(s),r.has(a)||(r.add(a),t.members.push(a)))}for(let i of o.filter(a=>r.has(a)))t.oneofs.push(i);for(let i of t.nestedMessages)Ko(i,e,n)}function Hi(t,e,n,o){var r,i,a,s,l;let c=El(t.name,t.value),p={kind:"enum",proto:t,deprecated:(i=(r=t.options)===null||r===void 0?void 0:r.deprecated)!==null&&i!==void 0?i:!1,file:e,parent:n,open:!0,name:t.name,typeName:vn(t,n,e),value:{},values:[],sharedPrefix:c,toString(){return`enum ${this.typeName}`}};p.open=kl(p),o.add(p);for(let g of t.value){let I=g.name;p.values.push(p.value[g.number]={kind:"enum_value",proto:g,deprecated:(s=(a=g.options)===null||a===void 0?void 0:a.deprecated)!==null&&s!==void 0?s:!1,parent:p,name:I,localName:rt(c==null?I:I.substring(c.length)),number:g.number,toString(){return`enum value ${p.typeName}.${I}`}})}((l=n?.nestedEnums)!==null&&l!==void 0?l:e.enums).push(p)}function Ti(t,e,n,o,r){var i,a,s,l;let c={kind:"message",proto:t,deprecated:(a=(i=t.options)===null||i===void 0?void 0:i.deprecated)!==null&&a!==void 0?a:!1,file:e,parent:n,name:t.name,typeName:vn(t,n,e),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((s=t.options)===null||s===void 0?void 0:s.mapEntry)===!0?r.add(c):(((l=n?.nestedMessages)!==null&&l!==void 0?l:e.messages).push(c),o.add(c));for(let p of t.enumType)Hi(p,e,c,o);for(let p of t.nestedType)Ti(p,e,c,o,r)}function xl(t,e,n){var o,r;let i={kind:"service",proto:t,deprecated:(r=(o=t.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,file:e,name:t.name,typeName:vn(t,void 0,e),methods:[],method:{},toString(){return`service ${this.typeName}`}};e.services.push(i),n.add(i);for(let a of t.method){let s=Cl(a,i,n);i.methods.push(s),i.method[s.localName]=s}}function Cl(t,e,n){var o,r,i,a;let s;t.clientStreaming&&t.serverStreaming?s="bidi_streaming":t.clientStreaming?s="client_streaming":t.serverStreaming?s="server_streaming":s="unary";let l=n.getMessage(Be(t.inputType)),c=n.getMessage(Be(t.outputType));be(l,`invalid MethodDescriptorProto: input_type ${t.inputType} not found`),be(c,`invalid MethodDescriptorProto: output_type ${t.inputType} not found`);let p=t.name;return{kind:"rpc",proto:t,deprecated:(r=(o=t.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,parent:e,name:p,localName:rt(p.length?rt(p[0].toLowerCase()+p.substring(1)):p),methodKind:s,input:l,output:c,idempotency:(a=(i=t.options)===null||i===void 0?void 0:i.idempotencyLevel)!==null&&a!==void 0?a:yl,toString(){return`rpc ${e.typeName}.${p}`}}}function Sl(t,e){return{kind:"oneof",proto:t,deprecated:!1,parent:e,fields:[],name:t.name,localName:rt(Ce(t.name)),toString(){return`oneof ${e.typeName}.${this.name}`}}}function Po(t,e,n,o,r){var i,a,s;let l=r===void 0,c={kind:"field",proto:t,deprecated:(a=(i=t.options)===null||i===void 0?void 0:i.deprecated)!==null&&a!==void 0?a:!1,name:t.name,number:t.number,scalar:void 0,message:void 0,enum:void 0,presence:Xl(t,o,l,e),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(l){let h=e.kind=="file"?e:e.file,y=e.kind=="file"?void 0:e,R=vn(t,y,h);c.kind="extension",c.file=h,c.parent=y,c.oneof=void 0,c.typeName=R,c.jsonName=`[${R}]`,c.toString=()=>`extension ${R}`;let E=n.getMessage(Be(t.extendee));be(E,`invalid FieldDescriptorProto: extendee ${t.extendee} not found`),c.extendee=E}else{let h=e;be(h.kind=="message"),c.parent=h,c.oneof=o,c.localName=o?Ce(t.name):rt(Ce(t.name)),c.jsonName=t.jsonName,c.toString=()=>`field ${h.typeName}.${t.name}`}let p=t.label,g=t.type,I=(s=t.options)===null||s===void 0?void 0:s.jstype;if(p===Qo){let h=g==Rt?r?.get(Be(t.typeName)):void 0;if(h){c.fieldKind="map";let{key:y,value:R}=Rl(h);return c.mapKey=y.scalar,c.mapKind=R.fieldKind,c.message=R.message,c.delimitedEncoding=!1,c.enum=R.enum,c.scalar=R.scalar,c}switch(c.fieldKind="list",g){case Rt:case kt:c.listKind="message",c.message=n.getMessage(Be(t.typeName)),be(c.message),c.delimitedEncoding=Ni(t,e);break;case Mi:c.listKind="enum",c.enum=n.getEnum(Be(t.typeName)),be(c.enum);break;default:c.listKind="scalar",c.scalar=g,c.longAsString=I==Fi;break}return c.packed=Wl(t,e),c}switch(g){case Rt:case kt:c.fieldKind="message",c.message=n.getMessage(Be(t.typeName)),be(c.message,`invalid FieldDescriptorProto: type_name ${t.typeName} not found`),c.delimitedEncoding=Ni(t,e),c.getDefaultValue=()=>{};break;case Mi:{let h=n.getEnum(Be(t.typeName));be(h!==void 0,`invalid FieldDescriptorProto: type_name ${t.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(Be(t.typeName)),c.getDefaultValue=()=>Ue(t,"defaultValue")?ki(h,t.defaultValue):void 0;break}default:{c.fieldKind="scalar",c.scalar=g,c.longAsString=I==Fi,c.getDefaultValue=()=>Ue(t,"defaultValue")?Ji(g,t.defaultValue):void 0;break}}return c}function Zl(t){switch(t.syntax){case"":case"proto2":return pl;case"proto3":return hl;case"editions":if(t.edition in Li)return t.edition;throw new Error(`${t.name}: unsupported edition`);default:throw new Error(`${t.name}: unsupported syntax "${t.syntax}"`)}}function Vl(t,e){return t.dependency.map(n=>{let o=e.getFile(n);if(!o)throw new Error(`Cannot find ${n}, imported by ${t.name}`);return o})}function El(t,e){let n=Bl(t)+"_";for(let o of e){if(!o.name.toLowerCase().startsWith(n))return;let r=o.name.substring(n.length);if(r.length==0||/^\d/.test(r))return}return n}function Bl(t){return(t.substring(0,1)+t.substring(1).replace(/[A-Z]/g,e=>"_"+e)).toLowerCase()}function vn(t,e,n){let o;return e?o=`${e.typeName}.${t.name}`:n.proto.package.length>0?o=`${n.proto.package}.${t.name}`:o=`${t.name}`,o}function Be(t){return t.startsWith(".")?t.substring(1):t}function wl(t,e){if(!Ue(t,"oneofIndex")||t.proto3Optional)return;let n=e[t.oneofIndex];return be(n,`invalid FieldDescriptorProto: oneof #${t.oneofIndex} for field #${t.number} not found`),n}function Xl(t,e,n,o){if(t.label==bl)return Il;if(t.label==Qo)return Yi;if(e||t.proto3Optional||n)return Do;let r=it("fieldPresence",{proto:t,parent:o});return r==Yi&&(t.type==Rt||t.type==kt)?Do:r}function Wl(t,e){if(t.label!=Qo)return!1;switch(t.type){case gl:case fl:case kt:case Rt:return!1}let n=t.options;return n&&Ue(n,"packed")?n.packed:Gl==it("repeatedFieldEncoding",{proto:t,parent:e})}function Rl(t){let e=t.fields.find(o=>o.number===1),n=t.fields.find(o=>o.number===2);return be(e&&e.fieldKind=="scalar"&&e.scalar!=u.BYTES&&e.scalar!=u.FLOAT&&e.scalar!=u.DOUBLE&&n&&n.fieldKind!="list"&&n.fieldKind!="map"),{key:e,value:n}}function kl(t){var e;return Al==it("enumType",{proto:t.proto,parent:(e=t.parent)!==null&&e!==void 0?e:t.file})}function Ni(t,e){return t.type==kt?!0:vl==it("messageEncoding",{proto:t,parent:e})}function it(t,e){var n,o;let r=(n=e.proto.options)===null||n===void 0?void 0:n.features;if(r){let i=r[t];if(i!=0)return i}if("kind"in e){if(e.kind=="message")return it(t,(o=e.parent)!==null&&o!==void 0?o:e.file);let i=Li[e.edition];if(!i)throw new Error(`feature default for edition ${e.edition} not found`);return i[t]}return it(t,e.parent)}function be(t,e){if(!t)throw new Error(e)}function Ui(t){let e=Jl(t);return e.messageType.forEach(Wt),Gn(e,()=>{}).getFile(e.name)}function Jl(t){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},t),{messageType:t.messageType.map(Di),enumType:t.enumType.map(_i)}))}function Di(t){var e,n,o,r,i,a,s,l;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:t.name,field:(n=(e=t.field)===null||e===void 0?void 0:e.map(Ml))!==null&&n!==void 0?n:[],extension:[],nestedType:(r=(o=t.nestedType)===null||o===void 0?void 0:o.map(Di))!==null&&r!==void 0?r:[],enumType:(a=(i=t.enumType)===null||i===void 0?void 0:i.map(_i))!==null&&a!==void 0?a:[],extensionRange:(l=(s=t.extensionRange)===null||s===void 0?void 0:s.map(p=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},p)))!==null&&l!==void 0?l:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function Ml(t){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},t),{options:t.options?Fl(t.options):void 0}))}function Fl(t){var e,n,o;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"},t),{targets:(e=t.targets)!==null&&e!==void 0?e:[],editionDefaults:(o=(n=t.editionDefaults)===null||n===void 0?void 0:n.map(i=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},i)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function _i(t){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:t.name,reservedName:[],reservedRange:[],value:t.value.map(n=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},n))})}function d(t,e,...n){return n.reduce((o,r)=>o.nestedMessages[r],t.messages[e])}function M(t,e,...n){if(n.length==0)return t.enums[e];let o=n.pop();return n.reduce((r,i)=>r.nestedMessages[i],t.messages[e]).nestedEnums[o]}var S=Ui({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}]}]}),rm=d(S,0),jo=d(S,1),Yl=d(S,2),im=d(S,2,0),am=d(S,2,1),sm=d(S,3),lm=d(S,3,0),Ki;(function(t){t[t.DECLARATION=0]="DECLARATION",t[t.UNVERIFIED=1]="UNVERIFIED"})(Ki||(Ki={}));var cm=M(S,3,0),zl=d(S,4),Pi;(function(t){t[t.DOUBLE=1]="DOUBLE",t[t.FLOAT=2]="FLOAT",t[t.INT64=3]="INT64",t[t.UINT64=4]="UINT64",t[t.INT32=5]="INT32",t[t.FIXED64=6]="FIXED64",t[t.FIXED32=7]="FIXED32",t[t.BOOL=8]="BOOL",t[t.STRING=9]="STRING",t[t.GROUP=10]="GROUP",t[t.MESSAGE=11]="MESSAGE",t[t.BYTES=12]="BYTES",t[t.UINT32=13]="UINT32",t[t.ENUM=14]="ENUM",t[t.SFIXED32=15]="SFIXED32",t[t.SFIXED64=16]="SFIXED64",t[t.SINT32=17]="SINT32",t[t.SINT64=18]="SINT64"})(Pi||(Pi={}));var dm=M(S,4,0),Qi;(function(t){t[t.OPTIONAL=1]="OPTIONAL",t[t.REPEATED=3]="REPEATED",t[t.REQUIRED=2]="REQUIRED"})(Qi||(Qi={}));var um=M(S,4,1),mm=d(S,5),Nl=d(S,6),pm=d(S,6,0),hm=d(S,7),gm=d(S,8),fm=d(S,9),bm=d(S,10),Oi;(function(t){t[t.SPEED=1]="SPEED",t[t.CODE_SIZE=2]="CODE_SIZE",t[t.LITE_RUNTIME=3]="LITE_RUNTIME"})(Oi||(Oi={}));var ym=M(S,10,0),Im=d(S,11),Ll=d(S,12),Gm=d(S,12,0),vm=d(S,12,1),ji;(function(t){t[t.STRING=0]="STRING",t[t.CORD=1]="CORD",t[t.STRING_PIECE=2]="STRING_PIECE"})(ji||(ji={}));var Am=M(S,12,0),$i;(function(t){t[t.JS_NORMAL=0]="JS_NORMAL",t[t.JS_STRING=1]="JS_STRING",t[t.JS_NUMBER=2]="JS_NUMBER"})($i||($i={}));var xm=M(S,12,1),qi;(function(t){t[t.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",t[t.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",t[t.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(qi||(qi={}));var Cm=M(S,12,2),ea;(function(t){t[t.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",t[t.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",t[t.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",t[t.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",t[t.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",t[t.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",t[t.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",t[t.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",t[t.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",t[t.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(ea||(ea={}));var Sm=M(S,12,3),Zm=d(S,13),Vm=d(S,14),Em=d(S,15),Bm=d(S,16),wm=d(S,17),at;(function(t){t[t.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",t[t.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",t[t.IDEMPOTENT=2]="IDEMPOTENT"})(at||(at={}));var Xm=M(S,17,0),Wm=d(S,18),Rm=d(S,18,0),km=d(S,19),Jm=d(S,19,0),ta;(function(t){t[t.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",t[t.EXPORT_ALL=1]="EXPORT_ALL",t[t.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",t[t.LOCAL_ALL=3]="LOCAL_ALL",t[t.STRICT=4]="STRICT"})(ta||(ta={}));var Mm=M(S,19,0,0),na;(function(t){t[t.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",t[t.EXPLICIT=1]="EXPLICIT",t[t.IMPLICIT=2]="IMPLICIT",t[t.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(na||(na={}));var Fm=M(S,19,0),oa;(function(t){t[t.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",t[t.OPEN=1]="OPEN",t[t.CLOSED=2]="CLOSED"})(oa||(oa={}));var Ym=M(S,19,1),ra;(function(t){t[t.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",t[t.PACKED=1]="PACKED",t[t.EXPANDED=2]="EXPANDED"})(ra||(ra={}));var zm=M(S,19,2),ia;(function(t){t[t.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",t[t.VERIFY=2]="VERIFY",t[t.NONE=3]="NONE"})(ia||(ia={}));var Nm=M(S,19,3),aa;(function(t){t[t.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",t[t.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",t[t.DELIMITED=2]="DELIMITED"})(aa||(aa={}));var Lm=M(S,19,4),sa;(function(t){t[t.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",t[t.ALLOW=1]="ALLOW",t[t.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(sa||(sa={}));var Hm=M(S,19,5),la;(function(t){t[t.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",t[t.STYLE2024=1]="STYLE2024",t[t.STYLE_LEGACY=2]="STYLE_LEGACY"})(la||(la={}));var Tm=M(S,19,6),Um=d(S,20),Dm=d(S,20,0),_m=d(S,21),Km=d(S,21,0),Pm=d(S,22),Qm=d(S,22,0),ca;(function(t){t[t.NONE=0]="NONE",t[t.SET=1]="SET",t[t.ALIAS=2]="ALIAS"})(ca||(ca={}));var Om=M(S,22,0,0),Oo;(function(t){t[t.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",t[t.EDITION_LEGACY=900]="EDITION_LEGACY",t[t.EDITION_PROTO2=998]="EDITION_PROTO2",t[t.EDITION_PROTO3=999]="EDITION_PROTO3",t[t.EDITION_2023=1e3]="EDITION_2023",t[t.EDITION_2024=1001]="EDITION_2024",t[t.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",t[t.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",t[t.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",t[t.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",t[t.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",t[t.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",t[t.EDITION_MAX=2147483647]="EDITION_MAX"})(Oo||(Oo={}));var jm=M(S,0),da;(function(t){t[t.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",t[t.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",t[t.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(da||(da={}));var $m=M(S,1);var ua={readUnknownFields:!0};function Hl(t){return t?Object.assign(Object.assign({},ua),t):ua}function ye(t,e,n){let o=oe(t,void 0,!1);return ma(o,new Je(e),Hl(n),!1,e.byteLength),o.message}function ma(t,e,n,o,r){var i;let a=o?e.len:e.pos+r,s,l,c=(i=t.getUnknown())!==null&&i!==void 0?i:[];for(;e.pos<a&&([s,l]=e.tag(),!(o&&l==j.EndGroup));){let p=t.findNumber(s);if(!p){let g=e.skip(l,s);n.readUnknownFields&&c.push({no:s,wireType:l,data:g});continue}$o(t,e,p,l,n)}if(o&&(l!=j.EndGroup||s!==r))throw new Error("invalid end group tag");c.length>0&&t.setUnknown(c)}function $o(t,e,n,o,r){var i;switch(n.fieldKind){case"scalar":t.set(n,st(e,n.scalar));break;case"enum":let a=st(e,u.INT32);if(n.enum.open)t.set(n,a);else if(n.enum.values.some(l=>l.number===a))t.set(n,a);else if(r.readUnknownFields){let l=[];Vt(a,l);let c=(i=t.getUnknown())!==null&&i!==void 0?i:[];c.push({no:n.number,wireType:o,data:new Uint8Array(l)}),t.setUnknown(c)}break;case"message":t.set(n,qo(e,r,n,t.get(n)));break;case"list":Ul(e,o,t.get(n),r);break;case"map":Tl(e,t.get(n),r);break}}function Tl(t,e,n){let o=e.field(),r,i,a=t.uint32(),s=t.pos+a;for(;t.pos<s;){let[l]=t.tag();switch(l){case 1:r=st(t,o.mapKey);break;case 2:switch(o.mapKind){case"scalar":i=st(t,o.scalar);break;case"enum":i=t.int32();break;case"message":i=qo(t,n,o);break}break}}if(r===void 0&&(r=ge(o.mapKey,!1)),i===void 0)switch(o.mapKind){case"scalar":i=ge(o.scalar,!1);break;case"enum":i=o.enum.values[0].number;break;case"message":i=oe(o.message,void 0,!1);break}e.set(r,i)}function Ul(t,e,n,o){var r;let i=n.field();if(i.listKind==="message"){n.add(qo(t,o,i));return}let a=(r=i.scalar)!==null&&r!==void 0?r:u.INT32;if(!(e==j.LengthDelimited&&a!=u.STRING&&a!=u.BYTES)){n.add(st(t,a));return}let l=t.uint32()+t.pos;for(;t.pos<l;)n.add(st(t,a))}function qo(t,e,n,o){let r=n.delimitedEncoding,i=o??oe(n.message,void 0,!1);return ma(i,t,e,r,r?n.number:t.uint32()),i}function st(t,e){switch(e){case u.STRING:return t.string();case u.BOOL:return t.bool();case u.DOUBLE:return t.double();case u.FLOAT:return t.float();case u.INT32:return t.int32();case u.INT64:return t.int64();case u.UINT64:return t.uint64();case u.FIXED64:return t.fixed64();case u.BYTES:return t.bytes();case u.FIXED32:return t.fixed32();case u.SFIXED32:return t.sfixed32();case u.SFIXED64:return t.sfixed64();case u.SINT64:return t.sint64();case u.UINT32:return t.uint32();case u.SINT32:return t.sint32()}}function F(t,e){var n;let o=ye(jo,Me(t));return o.messageType.forEach(Wt),o.dependency=(n=e?.map(i=>i.proto.name))!==null&&n!==void 0?n:[],Gn(o,i=>e?.find(a=>a.proto.name===i)).getFile(o.name)}var Jt=F("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Dl=d(Jt,0);function pe(t){return new Date(_l(t))}function _l(t){return Number(t.seconds)*1e3+Math.round(t.nanos/1e6)}var Mt=F("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw"),Kl=d(Mt,0);var Ft=F("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),pa=d(Ft,0);var Pl=3,ha={writeUnknownFields:!0};function Ql(t){return t?Object.assign(Object.assign({},ha),t):ha}function we(t,e,n){return An(new De,Ql(n),oe(t,e)).finish()}function An(t,e,n){var o;for(let r of n.sortedFields){if(!n.isSet(r)){if(r.presence==Pl)throw new Error(`cannot encode ${r} to binary: required field not set`);continue}er(t,e,n,r)}if(e.writeUnknownFields)for(let{no:r,wireType:i,data:a}of(o=n.getUnknown())!==null&&o!==void 0?o:[])t.tag(r,i).raw(a);return t}function er(t,e,n,o){var r;switch(o.fieldKind){case"scalar":case"enum":xn(t,n.desc.typeName,o.name,(r=o.scalar)!==null&&r!==void 0?r:u.INT32,o.number,n.get(o));break;case"list":Ol(t,e,o,n.get(o));break;case"message":ga(t,e,o,n.get(o));break;case"map":for(let[i,a]of n.get(o))jl(t,e,o,i,a);break}}function xn(t,e,n,o,r,i){fa(t.tag(r,$l(o)),e,n,o,i)}function ga(t,e,n,o){n.delimitedEncoding?An(t.tag(n.number,j.StartGroup),e,o).tag(n.number,j.EndGroup):An(t.tag(n.number,j.LengthDelimited).fork(),e,o).join()}function Ol(t,e,n,o){var r;if(n.listKind=="message"){for(let a of o)ga(t,e,n,a);return}let i=(r=n.scalar)!==null&&r!==void 0?r:u.INT32;if(n.packed){if(!o.size)return;t.tag(n.number,j.LengthDelimited).fork();for(let a of o)fa(t,n.parent.typeName,n.name,i,a);t.join();return}for(let a of o)xn(t,n.parent.typeName,n.name,i,n.number,a)}function jl(t,e,n,o,r){var i;switch(t.tag(n.number,j.LengthDelimited).fork(),xn(t,n.parent.typeName,n.name,n.mapKey,1,o),n.mapKind){case"scalar":case"enum":xn(t,n.parent.typeName,n.name,(i=n.scalar)!==null&&i!==void 0?i:u.INT32,2,r);break;case"message":An(t.tag(2,j.LengthDelimited).fork(),e,r).join();break}t.join()}function fa(t,e,n,o,r){try{switch(o){case u.STRING:t.string(r);break;case u.BOOL:t.bool(r);break;case u.DOUBLE:t.double(r);break;case u.FLOAT:t.float(r);break;case u.INT32:t.int32(r);break;case u.INT64:t.int64(r);break;case u.UINT64:t.uint64(r);break;case u.FIXED64:t.fixed64(r);break;case u.BYTES:t.bytes(r);break;case u.FIXED32:t.fixed32(r);break;case u.SFIXED32:t.sfixed32(r);break;case u.SFIXED64:t.sfixed64(r);break;case u.SINT64:t.sint64(r);break;case u.UINT32:t.uint32(r);break;case u.SINT32:t.sint32(r);break}}catch(i){throw i instanceof Error?new Error(`cannot encode field ${e}.${n} to binary: ${i.message}`):i}}function $l(t){switch(t){case u.BYTES:case u.STRING:return j.LengthDelimited;case u.DOUBLE:case u.FIXED64:case u.SFIXED64:return j.Bit64;case u.FIXED32:case u.SFIXED32:case u.FLOAT:return j.Bit32;default:return j.Varint}}function tr(t,e,n){let o=!1;return n||(n=K(pa),o=!0),n.value=we(t,e),n.typeUrl=tc(e.$typeName),o?n:void 0}function ec(t,e){if(t.typeUrl==="")return!1;let n=typeof e=="string"?e:e.typeName,o=ba(t.typeUrl);return n===o}function nr(t,e){if(t.typeUrl==="")return;let n=e.kind=="message"?e:e.getMessage(ba(t.typeUrl));if(!(!n||!ec(t,n)))return ye(n,t.value)}function tc(t){return`type.googleapis.com/${t}`}function ba(t){let e=t.lastIndexOf("/"),n=e>=0?t.substring(e+1):t;if(!n.length)throw new Error(`invalid type url: ${t}`);return n}var Yt=F("CiRnb29nbGUvcHJvdG9idWYvc291cmNlX2NvbnRleHQucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIiCg1Tb3VyY2VDb250ZXh0EhEKCWZpbGVfbmFtZRgBIAEoCUKKAQoTY29tLmdvb2dsZS5wcm90b2J1ZkISU291cmNlQ29udGV4dFByb3RvUAFaNmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3NvdXJjZWNvbnRleHRwYqICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8z"),Np=d(Yt,0);var Se=F("Chpnb29nbGUvcHJvdG9idWYvdHlwZS5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIugBCgRUeXBlEgwKBG5hbWUYASABKAkSJgoGZmllbGRzGAIgAygLMhYuZ29vZ2xlLnByb3RvYnVmLkZpZWxkEg4KBm9uZW9mcxgDIAMoCRIoCgdvcHRpb25zGAQgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhI2Cg5zb3VyY2VfY29udGV4dBgFIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb250ZXh0EicKBnN5bnRheBgGIAEoDjIXLmdvb2dsZS5wcm90b2J1Zi5TeW50YXgSDwoHZWRpdGlvbhgHIAEoCSLVBQoFRmllbGQSKQoEa2luZBgBIAEoDjIbLmdvb2dsZS5wcm90b2J1Zi5GaWVsZC5LaW5kEjcKC2NhcmRpbmFsaXR5GAIgASgOMiIuZ29vZ2xlLnByb3RvYnVmLkZpZWxkLkNhcmRpbmFsaXR5Eg4KBm51bWJlchgDIAEoBRIMCgRuYW1lGAQgASgJEhAKCHR5cGVfdXJsGAYgASgJEhMKC29uZW9mX2luZGV4GAcgASgFEg4KBnBhY2tlZBgIIAEoCBIoCgdvcHRpb25zGAkgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhIRCglqc29uX25hbWUYCiABKAkSFQoNZGVmYXVsdF92YWx1ZRgLIAEoCSLIAgoES2luZBIQCgxUWVBFX1VOS05PV04QABIPCgtUWVBFX0RPVUJMRRABEg4KClRZUEVfRkxPQVQQAhIOCgpUWVBFX0lOVDY0EAMSDwoLVFlQRV9VSU5UNjQQBBIOCgpUWVBFX0lOVDMyEAUSEAoMVFlQRV9GSVhFRDY0EAYSEAoMVFlQRV9GSVhFRDMyEAcSDQoJVFlQRV9CT09MEAgSDwoLVFlQRV9TVFJJTkcQCRIOCgpUWVBFX0dST1VQEAoSEAoMVFlQRV9NRVNTQUdFEAsSDgoKVFlQRV9CWVRFUxAMEg8KC1RZUEVfVUlOVDMyEA0SDQoJVFlQRV9FTlVNEA4SEQoNVFlQRV9TRklYRUQzMhAPEhEKDVRZUEVfU0ZJWEVENjQQEBIPCgtUWVBFX1NJTlQzMhAREg8KC1RZUEVfU0lOVDY0EBIidAoLQ2FyZGluYWxpdHkSFwoTQ0FSRElOQUxJVFlfVU5LTk9XThAAEhgKFENBUkRJTkFMSVRZX09QVElPTkFMEAESGAoUQ0FSRElOQUxJVFlfUkVRVUlSRUQQAhIYChRDQVJESU5BTElUWV9SRVBFQVRFRBADIt8BCgRFbnVtEgwKBG5hbWUYASABKAkSLQoJZW51bXZhbHVlGAIgAygLMhouZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZRIoCgdvcHRpb25zGAMgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhI2Cg5zb3VyY2VfY29udGV4dBgEIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb250ZXh0EicKBnN5bnRheBgFIAEoDjIXLmdvb2dsZS5wcm90b2J1Zi5TeW50YXgSDwoHZWRpdGlvbhgGIAEoCSJTCglFbnVtVmFsdWUSDAoEbmFtZRgBIAEoCRIOCgZudW1iZXIYAiABKAUSKAoHb3B0aW9ucxgDIAMoCzIXLmdvb2dsZS5wcm90b2J1Zi5PcHRpb24iOwoGT3B0aW9uEgwKBG5hbWUYASABKAkSIwoFdmFsdWUYAiABKAsyFC5nb29nbGUucHJvdG9idWYuQW55KkMKBlN5bnRheBIRCg1TWU5UQVhfUFJPVE8yEAASEQoNU1lOVEFYX1BST1RPMxABEhMKD1NZTlRBWF9FRElUSU9OUxACQnsKE2NvbS5nb29nbGUucHJvdG9idWZCCVR5cGVQcm90b1ABWi1nb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi90eXBlcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw",[Ft,Yt]),Kp=d(Se,0),Pp=d(Se,1),ya;(function(t){t[t.TYPE_UNKNOWN=0]="TYPE_UNKNOWN",t[t.TYPE_DOUBLE=1]="TYPE_DOUBLE",t[t.TYPE_FLOAT=2]="TYPE_FLOAT",t[t.TYPE_INT64=3]="TYPE_INT64",t[t.TYPE_UINT64=4]="TYPE_UINT64",t[t.TYPE_INT32=5]="TYPE_INT32",t[t.TYPE_FIXED64=6]="TYPE_FIXED64",t[t.TYPE_FIXED32=7]="TYPE_FIXED32",t[t.TYPE_BOOL=8]="TYPE_BOOL",t[t.TYPE_STRING=9]="TYPE_STRING",t[t.TYPE_GROUP=10]="TYPE_GROUP",t[t.TYPE_MESSAGE=11]="TYPE_MESSAGE",t[t.TYPE_BYTES=12]="TYPE_BYTES",t[t.TYPE_UINT32=13]="TYPE_UINT32",t[t.TYPE_ENUM=14]="TYPE_ENUM",t[t.TYPE_SFIXED32=15]="TYPE_SFIXED32",t[t.TYPE_SFIXED64=16]="TYPE_SFIXED64",t[t.TYPE_SINT32=17]="TYPE_SINT32",t[t.TYPE_SINT64=18]="TYPE_SINT64"})(ya||(ya={}));var Qp=M(Se,1,0),Ia;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTIONAL=1]="OPTIONAL",t[t.REQUIRED=2]="REQUIRED",t[t.REPEATED=3]="REPEATED"})(Ia||(Ia={}));var Op=M(Se,1,1),jp=d(Se,2),$p=d(Se,3),qp=d(Se,4),Ga;(function(t){t[t.PROTO2=0]="PROTO2",t[t.PROTO3=1]="PROTO3",t[t.EDITIONS=2]="EDITIONS"})(Ga||(Ga={}));var eh=M(Se,0);var or=F("Chlnb29nbGUvcHJvdG9idWYvYXBpLnByb3RvEg9nb29nbGUucHJvdG9idWYikgIKA0FwaRIMCgRuYW1lGAEgASgJEigKB21ldGhvZHMYAiADKAsyFy5nb29nbGUucHJvdG9idWYuTWV0aG9kEigKB29wdGlvbnMYAyADKAsyFy5nb29nbGUucHJvdG9idWYuT3B0aW9uEg8KB3ZlcnNpb24YBCABKAkSNgoOc291cmNlX2NvbnRleHQYBSABKAsyHi5nb29nbGUucHJvdG9idWYuU291cmNlQ29udGV4dBImCgZtaXhpbnMYBiADKAsyFi5nb29nbGUucHJvdG9idWYuTWl4aW4SJwoGc3ludGF4GAcgASgOMhcuZ29vZ2xlLnByb3RvYnVmLlN5bnRheBIPCgdlZGl0aW9uGAggASgJIu4BCgZNZXRob2QSDAoEbmFtZRgBIAEoCRIYChByZXF1ZXN0X3R5cGVfdXJsGAIgASgJEhkKEXJlcXVlc3Rfc3RyZWFtaW5nGAMgASgIEhkKEXJlc3BvbnNlX3R5cGVfdXJsGAQgASgJEhoKEnJlc3BvbnNlX3N0cmVhbWluZxgFIAEoCBIoCgdvcHRpb25zGAYgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhIrCgZzeW50YXgYByABKA4yFy5nb29nbGUucHJvdG9idWYuU3ludGF4QgIYARITCgdlZGl0aW9uGAggASgJQgIYASIjCgVNaXhpbhIMCgRuYW1lGAEgASgJEgwKBHJvb3QYAiABKAlCdgoTY29tLmdvb2dsZS5wcm90b2J1ZkIIQXBpUHJvdG9QAVosZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vYXBpcGKiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw",[Yt,Se]),ah=d(or,0),sh=d(or,1),lh=d(or,2);function ie(t,e,...n){if(n.length==0)return t.extensions[e];let o=n.pop();return n.reduce((r,i)=>r.nestedMessages[i],t.messages[e]).nestedExtensions[o]}var rr=F("CiJnb29nbGUvcHJvdG9idWYvY3BwX2ZlYXR1cmVzLnByb3RvEgJwYiL8AwoLQ3BwRmVhdHVyZXMS+wEKEmxlZ2FjeV9jbG9zZWRfZW51bRgBIAEoCELeAYgBAZgBBJgBAaIBCRIEdHJ1ZRiEB6IBChIFZmFsc2UY5weyAbgBCOgHEOgHGq8BVGhlIGxlZ2FjeSBjbG9zZWQgZW51bSBiZWhhdmlvciBpbiBDKysgaXMgZGVwcmVjYXRlZCBhbmQgaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gZWRpdGlvbiAyMDI1LiAgU2VlIGh0dHA6Ly9wcm90b2J1Zi5kZXYvcHJvZ3JhbW1pbmctZ3VpZGVzL2VudW0vI2NwcCBmb3IgbW9yZSBpbmZvcm1hdGlvbhJaCgtzdHJpbmdfdHlwZRgCIAEoDjIaLnBiLkNwcEZlYXR1cmVzLlN0cmluZ1R5cGVCKYgBAZgBBJgBAaIBCxIGU1RSSU5HGIQHogEJEgRWSUVXGOkHsgEDCOgHEkwKGmVudW1fbmFtZV91c2VzX3N0cmluZ192aWV3GAMgASgIQiiIAQGYAQaYAQGiAQoSBWZhbHNlGIQHogEJEgR0cnVlGOkHsgEDCOkHIkUKClN0cmluZ1R5cGUSFwoTU1RSSU5HX1RZUEVfVU5LTk9XThAAEggKBFZJRVcQARIICgRDT1JEEAISCgoGU1RSSU5HEAM6PwoDY3BwEhsuZ29vZ2xlLnByb3RvYnVmLkZlYXR1cmVTZXQY6AcgASgLMg8ucGIuQ3BwRmVhdHVyZXNSA2NwcA",[S]),fh=d(rr,0),va;(function(t){t[t.STRING_TYPE_UNKNOWN=0]="STRING_TYPE_UNKNOWN",t[t.VIEW=1]="VIEW",t[t.CORD=2]="CORD",t[t.STRING=3]="STRING"})(va||(va={}));var bh=M(rr,0,0),yh=ie(rr,0);var nc=F("Chtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIHCgVFbXB0eUJ9ChNjb20uZ29vZ2xlLnByb3RvYnVmQgpFbXB0eVByb3RvUAFaLmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2VtcHR5cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw"),Ah=d(nc,0);var ir=F("CiBnb29nbGUvcHJvdG9idWYvZmllbGRfbWFzay5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIhoKCUZpZWxkTWFzaxINCgVwYXRocxgBIAMoCUKFAQoTY29tLmdvb2dsZS5wcm90b2J1ZkIORmllbGRNYXNrUHJvdG9QAVoyZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vZmllbGRtYXNrcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw"),Zh=d(ir,0);var Cn=F("CiFnb29nbGUvcHJvdG9idWYvZ29fZmVhdHVyZXMucHJvdG8SAnBiIvcECgpHb0ZlYXR1cmVzEqUBChpsZWdhY3lfdW5tYXJzaGFsX2pzb25fZW51bRgBIAEoCEKAAYgBAZgBBpgBAaIBCRIEdHJ1ZRiEB6IBChIFZmFsc2UY5weyAVsI6AcQ6AcaU1RoZSBsZWdhY3kgVW5tYXJzaGFsSlNPTiBBUEkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIGVkaXRpb24uEmoKCWFwaV9sZXZlbBgCIAEoDjIXLnBiLkdvRmVhdHVyZXMuQVBJTGV2ZWxCPogBAZgBA5gBAaIBGhIVQVBJX0xFVkVMX1VOU1BFQ0lGSUVEGIQHogEPEgpBUElfT1BBUVVFGOkHsgEDCOgHEmsKEXN0cmlwX2VudW1fcHJlZml4GAMgASgOMh4ucGIuR29GZWF0dXJlcy5TdHJpcEVudW1QcmVmaXhCMIgBAZgBBpgBB5gBAaIBGxIWU1RSSVBfRU5VTV9QUkVGSVhfS0VFUBiEB7IBAwjpByJTCghBUElMZXZlbBIZChVBUElfTEVWRUxfVU5TUEVDSUZJRUQQABIMCghBUElfT1BFThABEg4KCkFQSV9IWUJSSUQQAhIOCgpBUElfT1BBUVVFEAMikgEKD1N0cmlwRW51bVByZWZpeBIhCh1TVFJJUF9FTlVNX1BSRUZJWF9VTlNQRUNJRklFRBAAEhoKFlNUUklQX0VOVU1fUFJFRklYX0tFRVAQARIjCh9TVFJJUF9FTlVNX1BSRUZJWF9HRU5FUkFURV9CT1RIEAISGwoXU1RSSVBfRU5VTV9QUkVGSVhfU1RSSVAQAzo8CgJnbxIbLmdvb2dsZS5wcm90b2J1Zi5GZWF0dXJlU2V0GOoHIAEoCzIOLnBiLkdvRmVhdHVyZXNSAmdvQi9aLWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2dvZmVhdHVyZXNwYg",[S]),Rh=d(Cn,0),Aa;(function(t){t[t.API_LEVEL_UNSPECIFIED=0]="API_LEVEL_UNSPECIFIED",t[t.API_OPEN=1]="API_OPEN",t[t.API_HYBRID=2]="API_HYBRID",t[t.API_OPAQUE=3]="API_OPAQUE"})(Aa||(Aa={}));var kh=M(Cn,0,0),xa;(function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.KEEP=1]="KEEP",t[t.GENERATE_BOTH=2]="GENERATE_BOTH",t[t.STRIP=3]="STRIP"})(xa||(xa={}));var Jh=M(Cn,0,1),Mh=ie(Cn,0);var zt=F("CiNnb29nbGUvcHJvdG9idWYvamF2YV9mZWF0dXJlcy5wcm90bxICcGIigwgKDEphdmFGZWF0dXJlcxL+AQoSbGVnYWN5X2Nsb3NlZF9lbnVtGAEgASgIQuEBiAEBmAEEmAEBogEJEgR0cnVlGIQHogEKEgVmYWxzZRjnB7IBuwEI6AcQ6AcasgFUaGUgbGVnYWN5IGNsb3NlZCBlbnVtIGJlaGF2aW9yIGluIEphdmEgaXMgZGVwcmVjYXRlZCBhbmQgaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gZWRpdGlvbiAyMDI1LiAgU2VlIGh0dHA6Ly9wcm90b2J1Zi5kZXYvcHJvZ3JhbW1pbmctZ3VpZGVzL2VudW0vI2phdmEgZm9yIG1vcmUgaW5mb3JtYXRpb24uEp8CCg91dGY4X3ZhbGlkYXRpb24YAiABKA4yHy5wYi5KYXZhRmVhdHVyZXMuVXRmOFZhbGlkYXRpb25C5AGIAQGYAQSYAQGiAQwSB0RFRkFVTFQYhAeyAcgBCOgHEOkHGr8BVGhlIEphdmEtc3BlY2lmaWMgdXRmOCB2YWxpZGF0aW9uIGZlYXR1cmUgaXMgZGVwcmVjYXRlZCBhbmQgaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gZWRpdGlvbiAyMDI1LiAgVXRmOCB2YWxpZGF0aW9uIGJlaGF2aW9yIHNob3VsZCB1c2UgdGhlIGdsb2JhbCBjcm9zcy1sYW5ndWFnZSB1dGY4X3ZhbGlkYXRpb24gZmVhdHVyZS4SMAoKbGFyZ2VfZW51bRgDIAEoCEIciAEBmAEGmAEBogEKEgVmYWxzZRiEB7IBAwjpBxJRCh91c2Vfb2xkX291dGVyX2NsYXNzbmFtZV9kZWZhdWx0GAQgASgIQiiIAQGYAQGiAQkSBHRydWUYhAeiAQoSBWZhbHNlGOkHsgEGCOkHIOkHEn8KEm5lc3RfaW5fZmlsZV9jbGFzcxgFIAEoDjI3LnBiLkphdmFGZWF0dXJlcy5OZXN0SW5GaWxlQ2xhc3NGZWF0dXJlLk5lc3RJbkZpbGVDbGFzc0IqiAEBmAEDmAEGmAEIogELEgZMRUdBQ1kYhAeiAQcSAk5PGOkHsgEDCOkHGnwKFk5lc3RJbkZpbGVDbGFzc0ZlYXR1cmUiWAoPTmVzdEluRmlsZUNsYXNzEh4KGk5FU1RfSU5fRklMRV9DTEFTU19VTktOT1dOEAASBgoCTk8QARIHCgNZRVMQAhIUCgZMRUdBQ1kQAxoIIgYI6Qcg6QdKCAgBEICAgIACIkYKDlV0ZjhWYWxpZGF0aW9uEhsKF1VURjhfVkFMSURBVElPTl9VTktOT1dOEAASCwoHREVGQVVMVBABEgoKBlZFUklGWRACSgQIBhAHOkIKBGphdmESGy5nb29nbGUucHJvdG9idWYuRmVhdHVyZVNldBjpByABKAsyEC5wYi5KYXZhRmVhdHVyZXNSBGphdmFCKAoTY29tLmdvb2dsZS5wcm90b2J1ZkIRSmF2YUZlYXR1cmVzUHJvdG8",[S]),Th=d(zt,0),Uh=d(zt,0,0),Ca;(function(t){t[t.NEST_IN_FILE_CLASS_UNKNOWN=0]="NEST_IN_FILE_CLASS_UNKNOWN",t[t.NO=1]="NO",t[t.YES=2]="YES",t[t.LEGACY=3]="LEGACY"})(Ca||(Ca={}));var Dh=M(zt,0,0,0),Sa;(function(t){t[t.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",t[t.DEFAULT=1]="DEFAULT",t[t.VERIFY=2]="VERIFY"})(Sa||(Sa={}));var _h=M(zt,0,0),Kh=ie(zt,0);var Zn=F("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Za=d(Zn,0),ar=d(Zn,1),Va=d(Zn,2),Sn;(function(t){t[t.NULL_VALUE=0]="NULL_VALUE"})(Sn||(Sn={}));var $h=M(Zn,0);var Xe=F("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),ng=d(Xe,0),og=d(Xe,1),rg=d(Xe,2),ig=d(Xe,3),ag=d(Xe,4),sg=d(Xe,5),lg=d(Xe,6),cg=d(Xe,7),dg=d(Xe,8);var Nt=F("CiVnb29nbGUvcHJvdG9idWYvY29tcGlsZXIvcGx1Z2luLnByb3RvEhhnb29nbGUucHJvdG9idWYuY29tcGlsZXIiRgoHVmVyc2lvbhINCgVtYWpvchgBIAEoBRINCgVtaW5vchgCIAEoBRINCgVwYXRjaBgDIAEoBRIOCgZzdWZmaXgYBCABKAkigQIKFENvZGVHZW5lcmF0b3JSZXF1ZXN0EhgKEGZpbGVfdG9fZ2VuZXJhdGUYASADKAkSEQoJcGFyYW1ldGVyGAIgASgJEjgKCnByb3RvX2ZpbGUYDyADKAsyJC5nb29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90bxJFChdzb3VyY2VfZmlsZV9kZXNjcmlwdG9ycxgRIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5GaWxlRGVzY3JpcHRvclByb3RvEjsKEGNvbXBpbGVyX3ZlcnNpb24YAyABKAsyIS5nb29nbGUucHJvdG9idWYuY29tcGlsZXIuVmVyc2lvbiKSAwoVQ29kZUdlbmVyYXRvclJlc3BvbnNlEg0KBWVycm9yGAEgASgJEhoKEnN1cHBvcnRlZF9mZWF0dXJlcxgCIAEoBBIXCg9taW5pbXVtX2VkaXRpb24YAyABKAUSFwoPbWF4aW11bV9lZGl0aW9uGAQgASgFEkIKBGZpbGUYDyADKAsyNC5nb29nbGUucHJvdG9idWYuY29tcGlsZXIuQ29kZUdlbmVyYXRvclJlc3BvbnNlLkZpbGUafwoERmlsZRIMCgRuYW1lGAEgASgJEhcKD2luc2VydGlvbl9wb2ludBgCIAEoCRIPCgdjb250ZW50GA8gASgJEj8KE2dlbmVyYXRlZF9jb2RlX2luZm8YECABKAsyIi5nb29nbGUucHJvdG9idWYuR2VuZXJhdGVkQ29kZUluZm8iVwoHRmVhdHVyZRIQCgxGRUFUVVJFX05PTkUQABIbChdGRUFUVVJFX1BST1RPM19PUFRJT05BTBABEh0KGUZFQVRVUkVfU1VQUE9SVFNfRURJVElPTlMQAkJyChxjb20uZ29vZ2xlLnByb3RvYnVmLmNvbXBpbGVyQgxQbHVnaW5Qcm90b3NaKWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL3BsdWdpbnBiqgIYR29vZ2xlLlByb3RvYnVmLkNvbXBpbGVy",[S]),fg=d(Nt,0),bg=d(Nt,1),yg=d(Nt,2),Ig=d(Nt,2,0),Ea;(function(t){t[t.NONE=0]="NONE",t[t.PROTO3_OPTIONAL=1]="PROTO3_OPTIONAL",t[t.SUPPORTS_EDITIONS=2]="SUPPORTS_EDITIONS"})(Ea||(Ea={}));var Gg=M(Nt,2,0);function Vn(t,e){Ba(e,t);let n=oc(t.$unknown,e),[o,r,i]=Ke(e);for(let a of n)$o(o,new Je(a.data),r,a.wireType,{readUnknownFields:!0});return i()}function sr(t,e,n){var o;Ba(e,t);let r=((o=t.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==e.number),[i,a]=Ke(e,n),s=new De;er(s,{writeUnknownFields:!0},i,a);let l=new Je(s.finish());for(;l.pos<l.len;){let[c,p]=l.tag(),g=l.skip(p,c);r.push({no:c,wireType:p,data:g})}t.$unknown=r}function oc(t,e){if(t===void 0)return[];if(e.fieldKind==="enum"||e.fieldKind==="scalar"){for(let n=t.length-1;n>=0;--n)if(t[n].no==e.number)return[t[n]];return[]}return t.filter(n=>n.no===e.number)}function Ke(t,e){let n=t.typeName,o=Object.assign(Object.assign({},t),{kind:"field",parent:t.extendee,localName:n}),r=Object.assign(Object.assign({},t.extendee),{fields:[o],members:[o],oneofs:[]}),i=K(r,e!==void 0?{[n]:e}:void 0);return[oe(r,i),o,()=>{let a=i[n];if(a===void 0){let s=t.message;return xe(s)?ge(s.fields[0].scalar,s.fields[0].longAsString):K(s)}return a}]}function Ba(t,e){if(t.extendee.typeName!=e.$typeName)throw new Error(`extension ${t.typeName} can only be applied to message ${t.extendee.typeName}`)}var rc=3,ic=2,wa={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function ac(t){return t?Object.assign(Object.assign({},wa),t):wa}function Wa(t,e,n){return Lt(oe(t,e),ac(n))}function Ra(t,e,n){var o;let r=Wa(t,e,n);return JSON.stringify(r,null,(o=n?.prettySpaces)!==null&&o!==void 0?o:0)}function lt(t,e){var n;if(t.typeName=="google.protobuf.NullValue")return null;let o=(n=t.value[e])===null||n===void 0?void 0:n.name;if(o===void 0)throw new Error(`${e} is not a value in ${t}`);return o}function Lt(t,e){var n;let o=dc(t,e);if(o!==void 0)return o;let r={};for(let i of t.sortedFields){if(!t.isSet(i)){if(i.presence==rc)throw new Error(`cannot encode ${i} to JSON: required field not set`);if(!e.alwaysEmitImplicit||i.presence!==ic)continue}let a=Xa(i,t.get(i),e);a!==void 0&&(r[cc(i,e)]=a)}if(e.registry){let i=new Set;for(let{no:a}of(n=t.getUnknown())!==null&&n!==void 0?n:[])if(!i.has(a)){i.add(a);let s=e.registry.getExtensionFor(t.desc,a);if(!s)continue;let l=Vn(t.message,s),[c,p]=Ke(s,l),g=Xa(p,c.get(p),e);g!==void 0&&(r[s.jsonName]=g)}}return r}function Xa(t,e,n){switch(t.fieldKind){case"scalar":return En(t,e);case"message":return Lt(e,n);case"enum":return lr(t.enum,e,n.enumAsInteger);case"list":return lc(e,n);case"map":return sc(e,n)}}function sc(t,e){let n=t.field(),o={};switch(n.mapKind){case"scalar":for(let[r,i]of t)o[r]=En(n,i);break;case"message":for(let[r,i]of t)o[r]=Lt(i,e);break;case"enum":for(let[r,i]of t)o[r]=lr(n.enum,i,e.enumAsInteger);break}return e.alwaysEmitImplicit||t.size>0?o:void 0}function lc(t,e){let n=t.field(),o=[];switch(n.listKind){case"scalar":for(let r of t)o.push(En(n,r));break;case"enum":for(let r of t)o.push(lr(n.enum,r,e.enumAsInteger));break;case"message":for(let r of t)o.push(Lt(r,e));break}return e.alwaysEmitImplicit||o.length>0?o:void 0}function lr(t,e,n){var o;if(typeof e!="number")throw new Error(`cannot encode ${t} to JSON: expected number, got ${te(e)}`);if(t.typeName=="google.protobuf.NullValue")return null;if(n)return e;let r=t.value[e];return(o=r?.name)!==null&&o!==void 0?o:e}function En(t,e){var n,o,r,i,a,s;switch(t.scalar){case u.INT32:case u.SFIXED32:case u.SINT32:case u.FIXED32:case u.UINT32:if(typeof e!="number")throw new Error(`cannot encode ${t} to JSON: ${(n=Ee(t,e))===null||n===void 0?void 0:n.message}`);return e;case u.FLOAT:case u.DOUBLE:if(typeof e!="number")throw new Error(`cannot encode ${t} to JSON: ${(o=Ee(t,e))===null||o===void 0?void 0:o.message}`);return Number.isNaN(e)?"NaN":e===Number.POSITIVE_INFINITY?"Infinity":e===Number.NEGATIVE_INFINITY?"-Infinity":e;case u.STRING:if(typeof e!="string")throw new Error(`cannot encode ${t} to JSON: ${(r=Ee(t,e))===null||r===void 0?void 0:r.message}`);return e;case u.BOOL:if(typeof e!="boolean")throw new Error(`cannot encode ${t} to JSON: ${(i=Ee(t,e))===null||i===void 0?void 0:i.message}`);return e;case u.UINT64:case u.FIXED64:case u.INT64:case u.SFIXED64:case u.SINT64:if(typeof e!="bigint"&&typeof e!="string")throw new Error(`cannot encode ${t} to JSON: ${(a=Ee(t,e))===null||a===void 0?void 0:a.message}`);return e.toString();case u.BYTES:if(e instanceof Uint8Array)return _e(e);throw new Error(`cannot encode ${t} to JSON: ${(s=Ee(t,e))===null||s===void 0?void 0:s.message}`)}}function cc(t,e){return e.useProtoFieldName?t.name:t.jsonName}function dc(t,e){if(t.desc.typeName.startsWith("google.protobuf."))switch(t.desc.typeName){case"google.protobuf.Any":return uc(t.message,e);case"google.protobuf.Timestamp":return hc(t.message);case"google.protobuf.Duration":return mc(t.message);case"google.protobuf.FieldMask":return pc(t.message);case"google.protobuf.Struct":return ka(t.message);case"google.protobuf.Value":return cr(t.message);case"google.protobuf.ListValue":return Ja(t.message);default:if(xe(t.desc)){let n=t.desc.fields[0];return En(n,t.get(n))}return}}function uc(t,e){if(t.typeUrl==="")return{};let{registry:n}=e,o,r;if(n&&(o=nr(t,n),o&&(r=n.getMessage(o.$typeName))),!r||!o)throw new Error(`cannot encode message ${t.$typeName} to JSON: "${t.typeUrl}" is not in the type registry`);let i=Lt(oe(r,o),e);return(r.typeName.startsWith("google.protobuf.")||i===null||Array.isArray(i)||typeof i!="object")&&(i={value:i}),i["@type"]=t.typeUrl,i}function mc(t){let e=Number(t.seconds),n=t.nanos;if(e>315576e6||e<-315576e6)throw new Error(`cannot encode message ${t.$typeName} to JSON: value out of range`);if(e>0&&n<0||e<0&&n>0)throw new Error(`cannot encode message ${t.$typeName} to JSON: nanos sign must match seconds sign`);let o=t.seconds.toString();if(n!==0){let r=Math.abs(n).toString();r="0".repeat(9-r.length)+r,r.substring(3)==="000000"?r=r.substring(0,3):r.substring(6)==="000"&&(r=r.substring(0,6)),o+="."+r,n<0&&e==0&&(o="-"+o)}return o+"s"}function pc(t){return t.paths.map(e=>{if(yn(Ce(e))!==e)throw new Error(`cannot encode message ${t.$typeName} to JSON: lowerCamelCase of path name "${e}" is irreversible`);return Ce(e)}).join(",")}function ka(t){let e={};for(let[n,o]of Object.entries(t.fields))e[n]=cr(o);return e}function cr(t){switch(t.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(t.kind.value))throw new Error(`${t.$typeName} cannot be NaN or Infinity`);return t.kind.value;case"boolValue":return t.kind.value;case"stringValue":return t.kind.value;case"structValue":return ka(t.kind.value);case"listValue":return Ja(t.kind.value);default:throw new Error(`${t.$typeName} must have a value`)}}function Ja(t){return t.values.map(cr)}function hc(t){let e=Number(t.seconds)*1e3;if(e<Date.parse("0001-01-01T00:00:00Z")||e>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot encode message ${t.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(t.nanos<0)throw new Error(`cannot encode message ${t.$typeName} to JSON: nanos must not be negative`);if(t.nanos>999999999)throw new Error(`cannot encode message ${t.$typeName} to JSON: nanos must not be greater than 99999999`);let n="Z";if(t.nanos>0){let o=(t.nanos+1e9).toString().substring(1);o.substring(3)==="000000"?n="."+o.substring(0,3)+"Z":o.substring(6)==="000"?n="."+o.substring(0,6)+"Z":n="."+o+"Z"}return new Date(e).toISOString().replace(".000Z",n)}var Ma={ignoreUnknownFields:!1};function gc(t){return t?Object.assign(Object.assign({},Ma),t):Ma}function Ya(t,e,n){return wn(t,xc(e,t.typeName),n)}function wn(t,e,n){let o=oe(t);try{Ht(o,e,gc(n))}catch(r){throw yi(r)?new Error(`cannot decode ${r.field()} from JSON: ${r.message}`,{cause:r}):r}return o.message}var dr=new WeakMap;function fc(t,e){var n;if(!dr.has(t)){let o=new Map;for(let r of t.fields)o.set(r.name,r).set(r.jsonName,r);dr.set(t,o)}return(n=dr.get(t))===null||n===void 0?void 0:n.get(e)}function Ht(t,e,n){var o;if(Cc(t,e,n))return;if(e==null||Array.isArray(e)||typeof e!="object")throw new Error(`cannot decode ${t.desc} from JSON: ${te(e)}`);let r=new Map;for(let[i,a]of Object.entries(e)){let s=fc(t.desc,i);if(s){if(s.oneof){if(a===null&&s.fieldKind=="scalar")continue;let l=r.get(s.oneof);if(l!==void 0)throw new re(s.oneof,`oneof set multiple times by ${l.name} and ${s.name}`);r.set(s.oneof,s)}Fa(t,s,a,n)}else{let l;if(i.startsWith("[")&&i.endsWith("]")&&(l=(o=n.registry)===null||o===void 0?void 0:o.getExtension(i.substring(1,i.length-1)))&&l.extendee.typeName===t.desc.typeName){let[c,p,g]=Ke(l);Fa(c,p,a,n),sr(t.message,l,g())}if(!l&&!n.ignoreUnknownFields)throw new Error(`cannot decode ${t.desc} from JSON: key "${i}" is unknown`)}}}function Fa(t,e,n,o){switch(e.fieldKind){case"scalar":vc(t,e,n);break;case"enum":Gc(t,e,n,o);break;case"message":Ic(t,e,n,o);break;case"list":yc(t.get(e),n,o);break;case"map":bc(t.get(e),n,o);break}}function za(t,e,n){if(t.scalar&&e!==null)return ur(t,e);if(t.message&&!Bn(t,e)){let o=oe(t.message);return Ht(o,e,n),o}if(t.enum&&!Bn(t,e))return Na(t.enum,e,n.ignoreUnknownFields);throw new re(t,`${t.fieldKind==="list"?"list item":"map value"} must not be null`)}function bc(t,e,n){if(e===null)return;let o=t.field();if(typeof e!="object"||Array.isArray(e))throw new re(o,"expected object, got "+te(e));for(let[r,i]of Object.entries(e)){let a=Ac(o.mapKey,r),s=za(o,i,n);s!==Xn&&t.set(a,s)}}function yc(t,e,n){if(e===null)return;let o=t.field();if(!Array.isArray(e))throw new re(o,"expected Array, got "+te(e));for(let r of e){let i=za(o,r,n);i!==Xn&&t.add(i)}}function Ic(t,e,n,o){if(Bn(e,n)){t.clear(e);return}let r=t.isSet(e)?t.get(e):oe(e.message);Ht(r,n,o),t.set(e,r)}function Gc(t,e,n,o){if(Bn(e,n)){t.clear(e);return}let r=Na(e.enum,n,o.ignoreUnknownFields);r!==Xn&&t.set(e,r)}function vc(t,e,n){n===null?t.clear(e):t.set(e,ur(e,n))}function Bn(t,e){var n,o;return e===null&&((n=t.message)===null||n===void 0?void 0:n.typeName)!="google.protobuf.Value"&&((o=t.enum)===null||o===void 0?void 0:o.typeName)!="google.protobuf.NullValue"}var Xn=Symbol();function Na(t,e,n){if(e===null)return t.values[0].number;switch(typeof e){case"number":if(Number.isInteger(e))return e;break;case"string":let o=t.values.find(r=>r.name===e);if(o!==void 0)return o.number;if(n)return Xn;break}throw new Error(`cannot decode ${t} from JSON: ${te(e)}`)}function ur(t,e){switch(t.scalar){case u.DOUBLE:case u.FLOAT:if(e==="NaN")return NaN;if(e==="Infinity")return Number.POSITIVE_INFINITY;if(e==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof e=="number"){if(Number.isNaN(e))throw new re(t,"unexpected NaN number");if(!Number.isFinite(e))throw new re(t,"unexpected infinite number");break}if(typeof e=="string"){if(e===""||e.trim().length!==e.length)break;let n=Number(e);if(!Number.isFinite(n))break;return n}break;case u.INT32:case u.FIXED32:case u.SFIXED32:case u.SINT32:case u.UINT32:return La(e);case u.BYTES:if(typeof e=="string"){if(e==="")return new Uint8Array(0);try{return Me(e)}catch(n){let o=n instanceof Error?n.message:String(n);throw new re(t,o)}}break}return e}function Ac(t,e){switch(t){case u.BOOL:switch(e){case"true":return!0;case"false":return!1}return e;case u.INT32:case u.FIXED32:case u.UINT32:case u.SFIXED32:case u.SINT32:return La(e);default:return e}}function La(t){if(typeof t=="string"){if(t===""||t.trim().length!==t.length)return t;let e=Number(t);return Number.isNaN(e)?t:e}return t}function xc(t,e){try{return JSON.parse(t)}catch(n){let o=n instanceof Error?n.message:String(n);throw new Error(`cannot decode message ${e} from JSON: ${o}`,{cause:n})}}function Cc(t,e,n){if(!t.desc.typeName.startsWith("google.protobuf."))return!1;switch(t.desc.typeName){case"google.protobuf.Any":return Sc(t.message,e,n),!0;case"google.protobuf.Timestamp":return Zc(t.message,e),!0;case"google.protobuf.Duration":return Vc(t.message,e),!0;case"google.protobuf.FieldMask":return Ec(t.message,e),!0;case"google.protobuf.Struct":return Ha(t.message,e),!0;case"google.protobuf.Value":return mr(t.message,e),!0;case"google.protobuf.ListValue":return Ta(t.message,e),!0;default:if(xe(t.desc)){let o=t.desc.fields[0];return e===null?t.clear(o):t.set(o,ur(o,e)),!0}return!1}}function Sc(t,e,n){var o;if(e===null||Array.isArray(e)||typeof e!="object")throw new Error(`cannot decode message ${t.$typeName} from JSON: expected object but got ${te(e)}`);if(Object.keys(e).length==0)return;let r=e["@type"];if(typeof r!="string"||r=="")throw new Error(`cannot decode message ${t.$typeName} from JSON: "@type" is empty`);let i=r.includes("/")?r.substring(r.lastIndexOf("/")+1):r;if(!i.length)throw new Error(`cannot decode message ${t.$typeName} from JSON: "@type" is invalid`);let a=(o=n.registry)===null||o===void 0?void 0:o.getMessage(i);if(!a)throw new Error(`cannot decode message ${t.$typeName} from JSON: ${r} is not in the type registry`);let s=oe(a);if(i.startsWith("google.protobuf.")&&Object.prototype.hasOwnProperty.call(e,"value")){let l=e.value;Ht(s,l,n)}else{let l=Object.assign({},e);delete l["@type"],Ht(s,l,n)}tr(s.desc,s.message,t)}function Zc(t,e){if(typeof e!="string")throw new Error(`cannot decode message ${t.$typeName} from JSON: ${te(e)}`);let n=e.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 ${t.$typeName} from JSON: invalid RFC 3339 string`);let o=Date.parse(n[1]+"-"+n[2]+"-"+n[3]+"T"+n[4]+":"+n[5]+":"+n[6]+(n[8]?n[8]:"Z"));if(Number.isNaN(o))throw new Error(`cannot decode message ${t.$typeName} from JSON: invalid RFC 3339 string`);if(o<Date.parse("0001-01-01T00:00:00Z")||o>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot decode message ${t.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);t.seconds=_.parse(o/1e3),t.nanos=0,n[7]&&(t.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function Vc(t,e){if(typeof e!="string")throw new Error(`cannot decode message ${t.$typeName} from JSON: ${te(e)}`);let n=e.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${t.$typeName} from JSON: ${te(e)}`);let o=Number(n[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${t.$typeName} from JSON: ${te(e)}`);if(t.seconds=_.parse(o),typeof n[2]!="string")return;let r=n[2]+"0".repeat(9-n[2].length);t.nanos=parseInt(r),(o<0||Object.is(o,-0))&&(t.nanos=-t.nanos)}function Ec(t,e){if(typeof e!="string")throw new Error(`cannot decode message ${t.$typeName} from JSON: ${te(e)}`);e!==""&&(t.paths=e.split(",").map(n=>{if(n.includes("_"))throw new Error(`cannot decode message ${t.$typeName} from JSON: path names must be lowerCamelCase`);return yn(n)}))}function Ha(t,e){if(typeof e!="object"||e==null||Array.isArray(e))throw new Error(`cannot decode message ${t.$typeName} from JSON ${te(e)}`);for(let[n,o]of Object.entries(e)){let r=K(ar);mr(r,o),t.fields[n]=r}}function mr(t,e){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:Sn.NULL_VALUE};else if(Array.isArray(e)){let n=K(Va);Ta(n,e),t.kind={case:"listValue",value:n}}else{let n=K(Za);Ha(n,e),t.kind={case:"structValue",value:n}}break;default:throw new Error(`cannot decode message ${t.$typeName} from JSON ${te(e)}`)}return t}function Ta(t,e){if(!Array.isArray(e))throw new Error(`cannot decode message ${t.$typeName} from JSON ${te(e)}`);for(let n of e){let o=K(ar);mr(o,n),t.values.push(o)}}var v;(function(t){t[t.Canceled=1]="Canceled",t[t.Unknown=2]="Unknown",t[t.InvalidArgument=3]="InvalidArgument",t[t.DeadlineExceeded=4]="DeadlineExceeded",t[t.NotFound=5]="NotFound",t[t.AlreadyExists=6]="AlreadyExists",t[t.PermissionDenied=7]="PermissionDenied",t[t.ResourceExhausted=8]="ResourceExhausted",t[t.FailedPrecondition=9]="FailedPrecondition",t[t.Aborted=10]="Aborted",t[t.OutOfRange=11]="OutOfRange",t[t.Unimplemented=12]="Unimplemented",t[t.Internal=13]="Internal",t[t.Unavailable=14]="Unavailable",t[t.DataLoss=15]="DataLoss",t[t.Unauthenticated=16]="Unauthenticated"})(v||(v={}));function ct(t){let e=v[t];return typeof e!="string"?t.toString():e[0].toLowerCase()+e.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var Wn;function pr(t){if(!Wn){Wn={};for(let e of Object.values(v))typeof e!="string"&&(Wn[ct(e)]=e)}return Wn[t]}var X=class t extends Error{constructor(e,n=v.Unknown,o,r,i){super(Bc(e,n)),this.name="ConnectError",Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=e,this.code=n,this.metadata=new Headers(o??{}),this.details=r??[],this.cause=i}static from(e,n=v.Unknown){return e instanceof t?e:e instanceof Error?e.name=="AbortError"||e.name=="TimeoutError"?new t(e.message,v.Canceled):new t(e.message,n,void 0,void 0,e):new t(String(e),n,void 0,void 0,e)}static[Symbol.hasInstance](e){return e instanceof Error?Object.getPrototypeOf(e)===t.prototype?!0:e.name==="ConnectError"&&"code"in e&&typeof e.code=="number"&&"metadata"in e&&"details"in e&&Array.isArray(e.details)&&"rawMessage"in e&&typeof e.rawMessage=="string"&&"cause"in e:!1}findDetails(e){let n=e.kind==="message"?{getMessage:r=>r===e.typeName?e:void 0}:e,o=[];for(let r of this.details){if("desc"in r){n.getMessage(r.desc.typeName)&&o.push(K(r.desc,r.value));continue}let i=n.getMessage(r.type);if(i)try{o.push(ye(i,r.value))}catch{}}return o}};function Bc(t,e){return t.length?`[${ct(e)}] ${t}`:`[${ct(e)}]`}function Tt(...t){let e=new Headers;for(let n of t)n.forEach((o,r)=>{e.append(r,o)});return e}function Rn(t,e){let n={};for(let o of t.methods){let r=e(o);r!=null&&(n[o.localName]=r)}return n}var dt=1;function kn(t,e,n=!1){if(e>t){let o=`message size is larger than configured readMaxBytes ${t}`;throw n&&(o=`message size ${e} is larger than configured readMaxBytes ${t}`),new X(o,v.ResourceExhausted)}}function Ua(t){return new hr(t)}var hr=class{constructor(e){this.readMaxBytes=e,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((e,n)=>e+n.byteLength,0)}decode(e){this.buf.push(e);let n=[];for(;;){let o=this.pop();if(!o)break;n.push(o)}return n}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){let e=this.env;return this.env=void 0,e}}head(){if(!this.cons(this.header))return;let e=this.headerView.getUint8(0),n=this.headerView.getUint32(1);return kn(this.readMaxBytes,n,!0),{flags:e,data:new Uint8Array(n)}}cons(e){let n=e.byteLength;if(this.byteLength<n)return!1;let o=0;for(;o<n;){let r=this.buf.shift();r.byteLength>n-o?(e.set(r.subarray(0,n-o),o),this.buf.unshift(r.subarray(n-o)),o+=n-o):(e.set(r,o),o+=r.byteLength)}return!0}};function Jn(t){let e,n=Ua(4294967295);return new ReadableStream({start(){e=t.getReader()},async pull(o){let r=!1;for(;!r;){let i=await e.read();if(i.done)n.byteLength>0&&o.error(new X("protocol error: incomplete envelope",v.InvalidArgument)),o.close();else for(let a of n.decode(i.value))o.enqueue(a),r=!0}}})}function Ut(t,e){let n=new Uint8Array(e.length+5);n.set(e,5);let o=new DataView(n.buffer,n.byteOffset,n.byteLength);return o.setUint8(0,t),o.setUint32(1,e.length),n}var Wc=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],n;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(i){n[i]=t[i]&&function(a){return new Promise(function(s,l){a=t[i](a),r(s,l,a.done,a.value)})}}function r(i,a,s,l){Promise.resolve(l).then(function(c){i({value:c,done:s})},a)}},Dt=function(t){return this instanceof Dt?(this.v=t,this):new Dt(t)},Rc=function(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(t,e||[]),r,i=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",a),r[Symbol.asyncIterator]=function(){return this},r;function a(h){return function(y){return Promise.resolve(y).then(h,g)}}function s(h,y){o[h]&&(r[h]=function(R){return new Promise(function(E,T){i.push([h,R,E,T])>1||l(h,R)})},y&&(r[h]=y(r[h])))}function l(h,y){try{c(o[h](y))}catch(R){I(i[0][3],R)}}function c(h){h.value instanceof Dt?Promise.resolve(h.value.v).then(p,g):I(i[0][2],h)}function p(h){l("next",h)}function g(h){l("throw",h)}function I(h,y){h(y),i.shift(),i.length&&l(i[0][0],i[0][1])}},kc=function(t){var e,n;return e={},o("next"),o("throw",function(r){throw r}),o("return"),e[Symbol.iterator]=function(){return this},e;function o(r,i){e[r]=t[r]?function(a){return(n=!n)?{value:Dt(t[r](a)),done:!1}:i?i(a):a}:i}};function Ze(t){return Rc(this,arguments,function*(){yield Dt(yield*kc(Wc(t)))})}var Da=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],n;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(i){n[i]=t[i]&&function(a){return new Promise(function(s,l){a=t[i](a),r(s,l,a.done,a.value)})}}function r(i,a,s,l){Promise.resolve(l).then(function(c){i({value:c,done:s})},a)}},ut=function(t){return this instanceof ut?(this.v=t,this):new ut(t)},Jc=function(t){var e,n;return e={},o("next"),o("throw",function(r){throw r}),o("return"),e[Symbol.iterator]=function(){return this},e;function o(r,i){e[r]=t[r]?function(a){return(n=!n)?{value:ut(t[r](a)),done:!1}:i?i(a):a}:i}},Mc=function(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(t,e||[]),r,i=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",a),r[Symbol.asyncIterator]=function(){return this},r;function a(h){return function(y){return Promise.resolve(y).then(h,g)}}function s(h,y){o[h]&&(r[h]=function(R){return new Promise(function(E,T){i.push([h,R,E,T])>1||l(h,R)})},y&&(r[h]=y(r[h])))}function l(h,y){try{c(o[h](y))}catch(R){I(i[0][3],R)}}function c(h){h.value instanceof ut?Promise.resolve(h.value.v).then(p,g):I(i[0][2],h)}function p(h){l("next",h)}function g(h){l("throw",h)}function I(h,y){h(y),i.shift(),i.length&&l(i[0][0],i[0][1])}};function gr(t,e){return Rn(t,n=>{switch(n.methodKind){case"unary":return Fc(e,n);case"server_streaming":return Yc(e,n);case"client_streaming":return zc(e,n);case"bidi_streaming":return Nc(e,n);default:return null}})}function Fc(t,e){return async(n,o)=>{var r,i;let a=await t.unary(e,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);return(r=o?.onHeader)===null||r===void 0||r.call(o,a.header),(i=o?.onTrailer)===null||i===void 0||i.call(o,a.trailer),a.message}}function Yc(t,e){return(n,o)=>_a(t.stream(e,o?.signal,o?.timeoutMs,o?.headers,Ze([n]),o?.contextValues),o)}function zc(t,e){return async(n,o)=>{var r,i,a,s,l,c;let p=await t.stream(e,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);(l=o?.onHeader)===null||l===void 0||l.call(o,p.header);let g,I=0;try{for(var h=!0,y=Da(p.message),R;R=await y.next(),r=R.done,!r;h=!0)s=R.value,h=!1,g=s,I++}catch(E){i={error:E}}finally{try{!h&&!r&&(a=y.return)&&await a.call(y)}finally{if(i)throw i.error}}if(!g)throw new X("protocol error: missing response message",v.Unimplemented);if(I>1)throw new X("protocol error: received extra messages for client streaming method",v.Unimplemented);return(c=o?.onTrailer)===null||c===void 0||c.call(o,p.trailer),g}}function Nc(t,e){return(n,o)=>_a(t.stream(e,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues),o)}function _a(t,e){let n=(function(){return Mc(this,arguments,function*(){var o,r;let i=yield ut(t);(o=e?.onHeader)===null||o===void 0||o.call(e,i.header),yield ut(yield*Jc(Da(i.message))),(r=e?.onTrailer)===null||r===void 0||r.call(e,i.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function Mn(...t){let e=new AbortController,n=t.filter(r=>r!==void 0).concat(e.signal);for(let r of n){if(r.aborted){o.apply(r);break}r.addEventListener("abort",o)}function o(){e.signal.aborted||e.abort(_t(this));for(let r of n)r.removeEventListener("abort",o)}return e}function Fn(t){let e=new AbortController,n=()=>{e.abort(new X("the operation timed out",v.DeadlineExceeded))},o;return t!==void 0&&(t<=0?n():o=setTimeout(n,t)),{signal:e.signal,cleanup:()=>clearTimeout(o)}}function _t(t){if(!t.aborted)return;if(t.reason!==void 0)return t.reason;let e=new Error("This operation was aborted");return e.name="AbortError",e}function We(){return{get(t){return t.id in this?this[t.id]:t.defaultValue},set(t,e){return this[t.id]=e,this},delete(t){return delete this[t.id],this}}}function Qa(t,e,...n){if(n.length>0)throw new Error;return t.services[e]}var L="@bufbuild/protobuf",by={"google/protobuf/compiler/plugin.proto":L+"/wkt","google/protobuf/any.proto":L+"/wkt","google/protobuf/api.proto":L+"/wkt","google/protobuf/cpp_features.proto":L+"/wkt","google/protobuf/descriptor.proto":L+"/wkt","google/protobuf/duration.proto":L+"/wkt","google/protobuf/empty.proto":L+"/wkt","google/protobuf/field_mask.proto":L+"/wkt","google/protobuf/go_features.proto":L+"/wkt","google/protobuf/java_features.proto":L+"/wkt","google/protobuf/source_context.proto":L+"/wkt","google/protobuf/struct.proto":L+"/wkt","google/protobuf/timestamp.proto":L+"/wkt","google/protobuf/type.proto":L+"/wkt","google/protobuf/wrappers.proto":L+"/wkt"},yy={isMessage:{typeOnly:!1,bootstrapWktFrom:"../../is-message.js",from:L},Message:{typeOnly:!0,bootstrapWktFrom:"../../types.js",from:L},create:{typeOnly:!1,bootstrapWktFrom:"../../create.js",from:L},fromJson:{typeOnly:!1,bootstrapWktFrom:"../../from-json.js",from:L},fromJsonString:{typeOnly:!1,bootstrapWktFrom:"../../from-json.js",from:L},fromBinary:{typeOnly:!1,bootstrapWktFrom:"../../from-binary.js",from:L},toBinary:{typeOnly:!1,bootstrapWktFrom:"../../to-binary.js",from:L},toJson:{typeOnly:!1,bootstrapWktFrom:"../../to-json.js",from:L},toJsonString:{typeOnly:!1,bootstrapWktFrom:"../../to-json.js",from:L},protoInt64:{typeOnly:!1,bootstrapWktFrom:"../../proto-int64.js",from:L},JsonValue:{typeOnly:!0,bootstrapWktFrom:"../../json-value.js",from:L},JsonObject:{typeOnly:!0,bootstrapWktFrom:"../../json-value.js",from:L},codegen:{boot:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/boot.js",from:L+"/codegenv2"},fileDesc:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/file.js",from:L+"/codegenv2"},enumDesc:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/enum.js",from:L+"/codegenv2"},extDesc:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/extension.js",from:L+"/codegenv2"},messageDesc:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/message.js",from:L+"/codegenv2"},serviceDesc:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/service.js",from:L+"/codegenv2"},tsEnum:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/enum.js",from:L+"/codegenv2"},GenFile:{typeOnly:!0,bootstrapWktFrom:"../../codegenv2/types.js",from:L+"/codegenv2"},GenEnum:{typeOnly:!0,bootstrapWktFrom:"../../codegenv2/types.js",from:L+"/codegenv2"},GenExtension:{typeOnly:!0,bootstrapWktFrom:"../../codegenv2/types.js",from:L+"/codegenv2"},GenMessage:{typeOnly:!0,bootstrapWktFrom:"../../codegenv2/types.js",from:L+"/codegenv2"},GenService:{typeOnly:!0,bootstrapWktFrom:"../../codegenv2/types.js",from:L+"/codegenv2"}}};var Tc=F("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[Ft]),Uc=d(Tc,0);function Ie(t,e){return t.toString().replace(/\/?$/,`/${e.parent.typeName}/${e.name}`)}function zn(t,e){return K(t,e)}function br(t,e){function n(o){return o.done===!0?o:{done:o.done,value:zn(t,o.value)}}return{[Symbol.asyncIterator](){let o=e[Symbol.asyncIterator](),r={next:()=>o.next().then(n)};return o.throw!==void 0&&(r.throw=i=>o.throw(i).then(n)),o.return!==void 0&&(r.return=i=>o.return(i).then(n)),r}}}function Nn(t,e){if(!e)return t;for(let n of e.concat().reverse())t=n(t);return t}function Ln(t){var e;let n=Object.assign({},t);return(e=n.ignoreUnknownFields)!==null&&e!==void 0||(n.ignoreUnknownFields=!0),n}function Qt(t,e,n,o){let r=e?Oa(t.input,o):ja(t.input,n);return{parse:(e?Oa(t.output,o):ja(t.output,n)).parse,serialize:r.serialize}}function Oa(t,e){return{parse(n){try{return ye(t,n,e)}catch(o){let r=o instanceof Error?o.message:String(o);throw new X(`parse binary: ${r}`,v.Internal)}},serialize(n){try{return we(t,n,e)}catch(o){let r=o instanceof Error?o.message:String(o);throw new X(`serialize binary: ${r}`,v.Internal)}}}}function ja(t,e){var n,o;let r=(n=e?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,i=(o=e?.textDecoder)!==null&&o!==void 0?o:new TextDecoder,a=Ln(e);return{parse(s){try{let l=i.decode(s);return Ya(t,l,a)}catch(l){throw X.from(l,v.InvalidArgument)}},serialize(s){try{let l=Ra(t,s,a);return r.encode(l)}catch(l){throw X.from(l,v.Internal)}}}}var rs=/^application\/(connect\+)?(?:(json)(?:; ?charset=utf-?8)?|(proto))$/i;var _n="application/proto",Kn="application/json",Pn="application/connect+proto",Qn="application/connect+json";function On(t){let e=t?.match(rs);if(!e)return;let n=!!e[1],o=!!e[3];return{stream:n,binary:o}}function Ot(t,e,n){var o;if(e&&new Headers(e).forEach((s,l)=>n.metadata.append(l,s)),typeof t!="object"||t==null||Array.isArray(t))throw n;let r=n.code;"code"in t&&typeof t.code=="string"&&(r=(o=pr(t.code))!==null&&o!==void 0?o:r);let i=t.message;if(i!=null&&typeof i!="string")throw n;let a=new X(i??"",r,e);if("details"in t&&Array.isArray(t.details))for(let s of t.details){if(s===null||typeof s!="object"||Array.isArray(s)||typeof s.type!="string"||typeof s.value!="string")throw n;try{a.details.push({type:s.type,value:Me(s.value),debug:s.debug})}catch{throw n}}return a}var Gt=2;function wr(t){let e=new X("invalid end stream",v.Unknown),n;try{n=JSON.parse(typeof t=="string"?t:new TextDecoder().decode(t))}catch{throw e}if(typeof n!="object"||n==null||Array.isArray(n))throw e;let o=new Headers;if("metadata"in n){if(typeof n.metadata!="object"||n.metadata==null||Array.isArray(n.metadata))throw e;for(let[i,a]of Object.entries(n.metadata)){if(!Array.isArray(a)||a.some(s=>typeof s!="string"))throw e;for(let s of a)o.append(i,s)}}let r="error"in n&&n.error!=null?Ot(n.error,o,e):void 0;return{metadata:o,error:r}}var Re="Content-Type",jn="Content-Length",Fe="Content-Encoding";var jt="Accept-Encoding";var $n="Connect-Timeout-Ms",vt="Connect-Protocol-Version",Xr="User-Agent";function Wr(t){switch(t){case 400:return v.Internal;case 401:return v.Unauthenticated;case 403:return v.PermissionDenied;case 404:return v.Unimplemented;case 429:return v.Unavailable;case 502:return v.Unavailable;case 503:return v.Unavailable;case 504:return v.Unavailable;default:return v.Unknown}}function $t(t){let e=new Headers,n=new Headers;return t.forEach((o,r)=>{r.toLowerCase().startsWith("trailer-")?n.append(r.substring(8),o):e.append(r,o)}),[e,n]}var qt="1";function qn(t,e,n,o,r){let i=new Headers(o??{});return n!==void 0&&i.set($n,`${n}`),i.set(Re,t=="unary"?e?_n:Kn:e?Pn:Qn),i.set(vt,qt),!i.has(Xr)&&r&&i.set(Xr,"connect-es/2.1.1"),i}function eo(t,e,n,o){let r=o.get(Re),i=On(r);if(n!==200){let s=new X(`HTTP ${n}`,Wr(n),o);if(t=="unary"&&i&&!i.binary)return{isUnaryError:!0,unaryError:s};throw s}let a={binary:e,stream:t!=="unary"};if(i?.binary!==a.binary||i.stream!==a.stream)throw new X(`unsupported content type ${r}`,i===void 0?v.Unknown:v.Internal,o);return{isUnaryError:!1}}var ss="application/";function bd(t,e){return e?_e(t,"url"):encodeURIComponent(new TextDecoder().decode(t))}function to(t,e,n){let o=`?connect=v${qt}`,r=t.header.get(Re);r?.indexOf(ss)===0&&(o+="&encoding="+encodeURIComponent(r.slice(ss.length)));let i=t.header.get(Fe);i!==null&&i!=="identity"&&(o+="&compression="+encodeURIComponent(i),n=!0),n&&(o+="&base64=1"),o+="&message="+bd(e,n);let a=t.url+o,s=new Headers(t.header);for(let l of[vt,Re,jn,Fe,jt])s.delete(l);return Object.assign(Object.assign({},t),{requestMethod:"GET",url:a,header:s})}function Qe(t){let e=Nn(t.next,t.interceptors),[n,o,r]=ls(t),i=Object.assign(Object.assign({},t.req),{message:zn(t.req.method.input,t.req.message),signal:n});return e(i).then(a=>(r(),a),o)}function Oe(t){let e=Nn(t.next,t.interceptors),[n,o,r]=ls(t),i=Object.assign(Object.assign({},t.req),{message:br(t.req.method.input,t.req.message),signal:n}),a=!1;return n.addEventListener("abort",function(){var s,l;let c=t.req.message[Symbol.asyncIterator]();a||(s=c.throw)===null||s===void 0||s.call(c,this.reason).catch(()=>{}),(l=c.return)===null||l===void 0||l.call(c).catch(()=>{})}),e(i).then(s=>Object.assign(Object.assign({},s),{message:{[Symbol.asyncIterator](){let l=s.message[Symbol.asyncIterator]();return{next(){return l.next().then(c=>(c.done==!0&&(a=!0,r()),c),o)}}}}}),o)}function ls(t){let{signal:e,cleanup:n}=Fn(t.timeoutMs),o=Mn(t.signal,e);return[o.signal,function(i){let a=X.from(e.aborted?_t(e):i);return o.abort(a),n(),Promise.reject(a)},function(){n(),o.abort()}]}var z=F("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",[S,Mt,ir,Jt]),fv=d(z,0),bv=d(z,1),yv=d(z,2),Iv=d(z,3),Gv=d(z,4),vv=d(z,5),Av=d(z,6),xv=d(z,7),Cv=d(z,8),Sv=d(z,9),Zv=d(z,10),Vv=d(z,11),Ev=d(z,12),Bv=d(z,13),wv=d(z,14),Xv=d(z,15),Wv=d(z,16),Rv=d(z,17),kv=d(z,18),Jv=d(z,19),Mv=d(z,20),Fv=d(z,21),Yv=d(z,22),zv=d(z,23),Nv=d(z,24),Lv=d(z,25),Hv=d(z,26),Tv=d(z,27),Uv=d(z,28),Dv=d(z,29),_v=d(z,30),Kv=d(z,31),cs;(function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.IF_ZERO_VALUE=1]="IF_ZERO_VALUE",t[t.ALWAYS=3]="ALWAYS"})(cs||(cs={}));var Pv=M(z,0),ds;(function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.HTTP_HEADER_NAME=1]="HTTP_HEADER_NAME",t[t.HTTP_HEADER_VALUE=2]="HTTP_HEADER_VALUE"})(ds||(ds={}));var Qv=M(z,1),Ov=ie(z,0),jv=ie(z,1),$v=ie(z,2),qv=ie(z,3);var en=F("ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJnCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8z"),nA=d(en,0),oA=d(en,1),rA=d(en,2);var Jr=F("Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[en,S]),cA=ie(Jr,0);var Mr=F("Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw"),us;(function(t){t[t.LAUNCH_STAGE_UNSPECIFIED=0]="LAUNCH_STAGE_UNSPECIFIED",t[t.UNIMPLEMENTED=6]="UNIMPLEMENTED",t[t.PRELAUNCH=7]="PRELAUNCH",t[t.EARLY_ACCESS=1]="EARLY_ACCESS",t[t.ALPHA=2]="ALPHA",t[t.BETA=3]="BETA",t[t.GA=4]="GA",t[t.DEPRECATED=5]="DEPRECATED"})(us||(us={}));var mA=M(Mr,0);var $=F("Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIkEKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKbAgoOUHl0aG9uU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEk4KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgCIAEoCzIvLmdvb2dsZS5hcGkuUHl0aG9uU2V0dGluZ3MuRXhwZXJpbWVudGFsRmVhdHVyZXMahAEKFEV4cGVyaW1lbnRhbEZlYXR1cmVzEh0KFXJlc3RfYXN5bmNfaW9fZW5hYmxlZBgBIAEoCBInCh9wcm90b2J1Zl9weXRob25pY190eXBlc19lbmFibGVkGAIgASgIEiQKHHVudmVyc2lvbmVkX3BhY2thZ2VfZGlzYWJsZWQYAyABKAgiQgoMTm9kZVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKqAwoORG90bmV0U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEkkKEHJlbmFtZWRfc2VydmljZXMYAiADKAsyLy5nb29nbGUuYXBpLkRvdG5ldFNldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5EksKEXJlbmFtZWRfcmVzb3VyY2VzGAMgAygLMjAuZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkUmVzb3VyY2VzRW50cnkSGQoRaWdub3JlZF9yZXNvdXJjZXMYBCADKAkSIAoYZm9yY2VkX25hbWVzcGFjZV9hbGlhc2VzGAUgAygJEh4KFmhhbmR3cml0dGVuX3NpZ25hdHVyZXMYBiADKAkaNgoUUmVuYW1lZFNlcnZpY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZW5hbWVkUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJCCgxSdWJ5U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIr8BCgpHb1NldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJFChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMisuZ29vZ2xlLmFwaS5Hb1NldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5GjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwIKDk1ldGhvZFNldHRpbmdzEhAKCHNlbGVjdG9yGAEgASgJEjwKDGxvbmdfcnVubmluZxgCIAEoCzImLmdvb2dsZS5hcGkuTWV0aG9kU2V0dGluZ3MuTG9uZ1J1bm5pbmcSHQoVYXV0b19wb3B1bGF0ZWRfZmllbGRzGAMgAygJGs0BCgtMb25nUnVubmluZxI1ChJpbml0aWFsX3BvbGxfZGVsYXkYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHQoVcG9sbF9kZWxheV9tdWx0aXBsaWVyGAIgASgCEjEKDm1heF9wb2xsX2RlbGF5GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjUKEnRvdGFsX3BvbGxfdGltZW91dBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiJRChhTZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24SDwoHbWV0aG9kcxgBIAMoCRIkChxnZW5lcmF0ZV9vbWl0dGVkX2FzX2ludGVybmFsGAIgASgIKqMBChlDbGllbnRMaWJyYXJ5T3JnYW5pemF0aW9uEisKJ0NMSUVOVF9MSUJSQVJZX09SR0FOSVpBVElPTl9VTlNQRUNJRklFRBAAEgkKBUNMT1VEEAESBwoDQURTEAISCgoGUEhPVE9TEAMSDwoLU1RSRUVUX1ZJRVcQBBIMCghTSE9QUElORxAFEgcKA0dFTxAGEhEKDUdFTkVSQVRJVkVfQUkQBypnChhDbGllbnRMaWJyYXJ5RGVzdGluYXRpb24SKgomQ0xJRU5UX0xJQlJBUllfREVTVElOQVRJT05fVU5TUEVDSUZJRUQQABIKCgZHSVRIVUIQChITCg9QQUNLQUdFX01BTkFHRVIQFDpKChBtZXRob2Rfc2lnbmF0dXJlEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYmwggAygJUg9tZXRob2RTaWduYXR1cmU6QwoMZGVmYXVsdF9ob3N0Eh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJkIIAEoCVILZGVmYXVsdEhvc3Q6QwoMb2F1dGhfc2NvcGVzEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJoIIAEoCVILb2F1dGhTY29wZXM6RAoLYXBpX3ZlcnNpb24SHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYwbqr+gEgASgJUgphcGlWZXJzaW9uQmkKDmNvbS5nb29nbGUuYXBpQgtDbGllbnRQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMw",[Mr,S,Mt]),bA=d($,0),yA=d($,1),IA=d($,2),GA=d($,3),vA=d($,4),AA=d($,5),xA=d($,6),CA=d($,6,0),SA=d($,7),ZA=d($,8),VA=d($,9),EA=d($,10),BA=d($,11),wA=d($,11,0),XA=d($,12),ms;(function(t){t[t.CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED=0]="CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED",t[t.CLOUD=1]="CLOUD",t[t.ADS=2]="ADS",t[t.PHOTOS=3]="PHOTOS",t[t.STREET_VIEW=4]="STREET_VIEW",t[t.SHOPPING=5]="SHOPPING",t[t.GEO=6]="GEO",t[t.GENERATIVE_AI=7]="GENERATIVE_AI"})(ms||(ms={}));var WA=M($,0),ps;(function(t){t[t.CLIENT_LIBRARY_DESTINATION_UNSPECIFIED=0]="CLIENT_LIBRARY_DESTINATION_UNSPECIFIED",t[t.GITHUB=10]="GITHUB",t[t.PACKAGE_MANAGER=20]="PACKAGE_MANAGER"})(ps||(ps={}));var RA=M($,1),kA=ie($,0),JA=ie($,1),MA=ie($,2),FA=ie($,3);var Fr=F("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2RhdGEucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKmCgoKU2lnbmFsRGF0YRL3BQoIZmlsZW5hbWUYASABKAlC3wW6SNsFugGvAQobZmlsZW5hbWUubm9fcGF0aF9zZXBhcmF0b3JzEmNGaWxlbmFtZSBjYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKCcvJyBvciAnXCcpLiBVc2Ugb25seSB0aGUgZmlsZW5hbWUgd2l0aG91dCBkaXJlY3RvcnkgcGF0aC4aKyF0aGlzLmNvbnRhaW5zKCcvJykgJiYgIXRoaXMuY29udGFpbnMoJ1xcJym6AbsBCh5maWxlbmFtZS5ub19jb250cm9sX2NoYXJhY3RlcnMSOUZpbGVuYW1lIGNhbm5vdCBjb250YWluIGNvbnRyb2wgY2hhcmFjdGVycyBvciBudWxsIGJ5dGVzLhpeIXRoaXMuY29udGFpbnMoJ1x4MDAnKSAmJiAhdGhpcy5jb250YWlucygnXG4nKSAmJiAhdGhpcy5jb250YWlucygnXHInKSAmJiAhdGhpcy5jb250YWlucygnXHQnKboBbQonZmlsZW5hbWUubm9fbGVhZGluZ190cmFpbGluZ193aGl0ZXNwYWNlEi1GaWxlbmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4aE3RoaXMgPT0gdGhpcy50cmltKCm6AdMBChxmaWxlbmFtZS5ub193aW5kb3dzX3Jlc2VydmVkEmpGaWxlbmFtZSBjYW5ub3QgYmUgYSBXaW5kb3dzIHJlc2VydmVkIG5hbWUgKENPTiwgUFJOLCBBVVgsIE5VTCwgQ09NMS05LCBMUFQxLTkpIHdpdGggb3Igd2l0aG91dCBleHRlbnNpb24uGkchdGhpcy5tYXRjaGVzKCdeKD9pKShDT058UFJOfEFVWHxOVUx8Q09NWzEtOV18TFBUWzEtOV0pKD86XFwuW14uXSopPyQnKXIgEAEY/wEyGV5bXi88PjoifD8qXHgwMC1ceDFGXFxdKyRIAIgBARKCBAoJbWltZV90eXBlGAIgASgJQu4DukjqA7oByQEKFm1pbWVfdHlwZS5ub193aWxkY2FyZHMSmQFNSU1FIHR5cGUgd2lsZGNhcmRzIGFyZSBub3QgYWxsb3dlZCBpbiBTaWduYWxEYXRhLiBVc2UgYSBjb25jcmV0ZSBNSU1FIHR5cGUgbGlrZSAnaW1hZ2UvcG5nJyBvciAnYXBwbGljYXRpb24vcGRmJywgbm90IHdpbGRjYXJkcyBsaWtlICdpbWFnZS8qJyBvciAnKi8qJy4aEyF0aGlzLmNvbnRhaW5zKCcqJym6Ab8BChdtaW1lX3R5cGUubm9fcGFyYW1ldGVycxKOAU1JTUUgdHlwZSBwYXJhbWV0ZXJzIGFyZSBub3QgYWxsb3dlZC4gVXNlICd0ZXh0L3BsYWluJyBpbnN0ZWFkIG9mICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Jy4gVVRGLTggZW5jb2RpbmcgaXMgYXNzdW1lZCBmb3IgYWxsIHRleHQgZm9ybWF0cy4aEyF0aGlzLmNvbnRhaW5zKCc7JylyWBADGP8BMlFeW2EtekEtWjAtOV1bYS16QS1aMC05ISMkJlwtXl8uK117MCwxMjZ9L1thLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fSQSDAoEZGF0YRgDIAEoDEILCglfZmlsZW5hbWViBnByb3RvMw",[z]),Yr=d(Fr,0);var Y=F("CjNtb2NoYWJ1Z2FwaXMvYWRhcHQvYXV0b21hdGlvbnMvdjEvYXV0b21hdGlvbnMucHJvdG8SIW1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MSIwChZDcmVhdGVDaGFsbGVuZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIqIBChdDcmVhdGVDaGFsbGVuZ2VSZXNwb25zZRINCgVjb3VudBgBIAEoDRIMCgRzaXplGAIgASgNEhIKCmRpZmZpY3VsdHkYAyABKA0SKwoHZXhwaXJlcxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFdG9rZW4YBSABKAkSGgoSdmVyaWZpY2F0aW9uX3Rva2VuGAYgASgJIngKFlJlZGVlbUNoYWxsZW5nZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSJgoSdmVyaWZpY2F0aW9uX3Rva2VuGAIgASgJQgq6SAdyBRABGNAPEh4KCXNvbHV0aW9ucxgDIAMoA0ILukgIkgEFCAEQ6AciVQoXUmVkZWVtQ2hhbGxlbmdlUmVzcG9uc2USDQoFdG9rZW4YASABKAkSKwoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwoVSW5oZXJpdFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDImUKFkluaGVyaXRTZXNzaW9uUmVzcG9uc2USDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyKvAQoRUmVhZE91dHB1dFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEikKBnZlcnRleBgDIAEoCUIUukgRcg8yDV5bMC05YS16XXs0fSRIAIgBARIhCgpuZXdlcl90aGFuGAQgASgJQgi6SAVyA7ABAUgBiAEBQgkKB192ZXJ0ZXhCDQoLX25ld2VyX3RoYW4iywEKElJlYWRPdXRwdXRSZXNwb25zZRI7CgdzZXNzaW9uGAEgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb24SOgoHb3V0cHV0cxgCIAMoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQSJwoQbmV4dF9wYWdlX2N1cnNvchgDIAEoCUIIukgFcgOwAQFIAIgBAUITChFfbmV4dF9wYWdlX2N1cnNvciJ3Cg9SZWFkVXJsc1JlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEiEKCm5ld2VyX3RoYW4YAyABKAlCCLpIBXIDsAEBSACIAQFCDQoLX25ld2VyX3RoYW4iwwEKEFJlYWRVcmxzUmVzcG9uc2USOwoHc2Vzc2lvbhgBIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uEjQKBHVybHMYAiADKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsEicKEG5leHRfcGFnZV9jdXJzb3IYAyABKAlCCLpIBXIDsAEBSACIAQFCEwoRX25leHRfcGFnZV9jdXJzb3IikQMKE1N0YXJ0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSOwoLdHJhbnNtaXR0ZXIYAiABKAlCIbpIHnIcEAEYZDIWXlthLXpBLVowLTlfLV17MSwxMDB9JEgAiAEBEoABCgdzaWduYWxzGAMgAygLMkMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlcXVlc3QuU2lnbmFsc0VudHJ5Qiq6SCeaASQiInIgEAEYZDIaXltfJGEtekEtWl1bXyRhLXpBLVowLTldKiQSKAoPY2hhbGxlbmdlX3Rva2VuGAQgASgJQgq6SAdyBRABGPQDSAGIAQEaVAoMU2lnbmFsc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhOgI4AUIOCgxfdHJhbnNtaXR0ZXJCEgoQX2NoYWxsZW5nZV90b2tlbiJjChRTdGFydFNlc3Npb25SZXNwb25zZRINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIlIKElN0b3BTZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIbCgRmb3JrGAIgASgJQgi6SAVyAxjoB0gAiAEBQgcKBV9mb3JrIhUKE1N0b3BTZXNzaW9uUmVzcG9uc2UiKwoRR2V0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiWQoSR2V0U2Vzc2lvblJlc3BvbnNlEkMKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkIGukgDyAEBIukBCgZPdXRwdXQSDgoGdmVydGV4GAEgASgJEgwKBGZvcmsYAiABKAkSQQoEZGF0YRgDIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQuRGF0YUVudHJ5EisKB2NyZWF0ZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGlEKCURhdGFFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEiCwoJVXJsUmV0YWluIjwKCFVybENsb3NlEhwKD3RpbWVvdXRfc2Vjb25kcxgBIAEoBUgAiAEBQhIKEF90aW1lb3V0X3NlY29uZHMiDAoKVXJsUmVjeWNsZSLvAgoDVXJsEgsKA3VybBgBIAEoCRIMCgRmb3JrGAIgASgJEg4KBnZlcnRleBgDIAEoCRIMCgRkb25lGAQgASgIEisKB2NyZWF0ZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXRva2VuGAYgASgJEg8KB3N0b3BwZWQYByABKAgSDgoGc291cmNlGAggASgJEj4KBnJldGFpbhgJIAEoCzIsLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxSZXRhaW5IABI8CgVjbG9zZRgKIAEoCzIrLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxDbG9zZUgAEkAKB3JlY3ljbGUYCyABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsUmVjeWNsZUgAQhIKEHJldGVudGlvbl9wb2xpY3kiUgoHU2Vzc2lvbhIMCgRmb3JrGAEgASgJEjkKBnN0YXR1cxgCIAEoDjIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdGF0dXMiLgoUU3RyZWFtU2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiSQoRQWNrTWVzc2FnZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSHAoKbWVzc2FnZV9pZBgCIAEoCUIIukgFcgOwAQEiFAoSQWNrTWVzc2FnZVJlc3BvbnNlIhIKEFJlY29ubmVjdE1lc3NhZ2Ui6wEKFVN0cmVhbVNlc3Npb25SZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESOwoGb3V0cHV0GAIgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dEgAEjUKA3VybBgDIAEoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxIABI9CgdzZXNzaW9uGAQgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb25IAEIJCgdtZXNzYWdlIowDChFSdW5TZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxI7Cgt0cmFuc21pdHRlchgCIAEoCUIhukgechwQARhkMhZeW2EtekEtWjAtOV8tXXsxLDEwMH0kSACIAQESfgoHc2lnbmFscxgDIAMoCzJBLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVxdWVzdC5TaWduYWxzRW50cnlCKrpIJ5oBJCIiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBIoCg9jaGFsbGVuZ2VfdG9rZW4YBCABKAlCCrpIB3IFEAEY9ANIAYgBARpUCgxTaWduYWxzRW50cnkSCwoDa2V5GAEgASgJEjMKBXZhbHVlGAIgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGE6AjgBQg4KDF90cmFuc21pdHRlckISChBfY2hhbGxlbmdlX3Rva2VuIrECChJSdW5TZXNzaW9uUmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEkcKB3N0YXJ0ZWQYAiABKAsyNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UiYAoRUnVuU2Vzc2lvblN0YXJ0ZWQSDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyIrChFSdW5Jbmhlcml0UmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AyKzAgoSUnVuSW5oZXJpdFJlc3BvbnNlEhQKAmlkGAEgASgJQgi6SAVyA7ABARJJCglpbmhlcml0ZWQYAiABKAsyNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UiYAoRUnVuSW5oZXJpdFN0YXJ0ZWQSDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyItChNXYXRjaFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIrQCChRXYXRjaFNlc3Npb25SZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESOwoGb3V0cHV0GAIgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dEgAEjUKA3VybBgDIAEoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxIABI9CgdzZXNzaW9uGAQgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb25IABJICglyZWNvbm5lY3QYBSABKAsyMy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUmVjb25uZWN0TWVzc2FnZUgAQgkKB21lc3NhZ2UiiAMKD1dhdGNoUnVuUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxI7Cgt0cmFuc21pdHRlchgCIAEoCUIhukgechwQARhkMhZeW2EtekEtWjAtOV8tXXsxLDEwMH0kSACIAQESfAoHc2lnbmFscxgDIAMoCzI/Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5XYXRjaFJ1blJlcXVlc3QuU2lnbmFsc0VudHJ5Qiq6SCeaASQiInIgEAEYZDIaXltfJGEtekEtWl1bXyRhLXpBLVowLTldKiQSKAoPY2hhbGxlbmdlX3Rva2VuGAQgASgJQgq6SAdyBRABGPQDSAGIAQEaVAoMU2lnbmFsc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhOgI4AUIOCgxfdHJhbnNtaXR0ZXJCEgoQX2NoYWxsZW5nZV90b2tlbiL3AgoQV2F0Y2hSdW5SZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESRQoHc3RhcnRlZBgCIAEoCzIyLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5XYXRjaFJ1blN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAEkgKCXJlY29ubmVjdBgGIAEoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWNvbm5lY3RNZXNzYWdlSABCCQoHbWVzc2FnZSJeCg9XYXRjaFJ1blN0YXJ0ZWQSDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyItChNXYXRjaEluaGVyaXRSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIoEDChRXYXRjaEluaGVyaXRSZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESSwoJaW5oZXJpdGVkGAIgASgLMjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLldhdGNoSW5oZXJpdFN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAEkgKCXJlY29ubmVjdBgGIAEoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWNvbm5lY3RNZXNzYWdlSABCCQoHbWVzc2FnZSJiChNXYXRjaEluaGVyaXRTdGFydGVkEg0KBXRva2VuGAEgASgJEjAKB2V4cGlyZXMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCgoIX2V4cGlyZXMqyAEKBlN0YXR1cxIWChJTVEFUVVNfVU5TUEVDSUZJRUQQABISCg5TVEFUVVNfUlVOTklORxABEhIKDlNUQVRVU19TVE9QUEVEEAISEwoPU1RBVFVTX1NUT1BQSU5HEAMSFAoQU1RBVFVTX0NPTVBMRVRFRBAEEhIKDlNUQVRVU19FWFBJUkVEEAUSEgoOU1RBVFVTX0VSUk9SRUQQBhIVChFTVEFUVVNfREVMRUdBVElORxAHEhQKEFNUQVRVU19ERUxFR0FURUQQCDLJFQoRQXV0b21hdGlvblNlcnZpY2USswEKD0NyZWF0ZUNoYWxsZW5nZRI5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5DcmVhdGVDaGFsbGVuZ2VSZXF1ZXN0GjoubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkNyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlIimC0+STAiM6ASoiHi92MS9hdXRvbWF0aW9ucy97aWR9L2NoYWxsZW5nZRK6AQoPUmVkZWVtQ2hhbGxlbmdlEjkubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlZGVlbUNoYWxsZW5nZVJlcXVlc3QaOi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUmVkZWVtQ2hhbGxlbmdlUmVzcG9uc2UiMILT5JMCKjoBKiIlL3YxL2F1dG9tYXRpb25zL3tpZH0vY2hhbGxlbmdlL3JlZGVlbRKuAQoMU3RhcnRTZXNzaW9uEjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlcXVlc3QaNy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhcnRTZXNzaW9uUmVzcG9uc2UiLYLT5JMCJzoBKiIiL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9zdGFydBKiAQoLU3RvcFNlc3Npb24SNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RvcFNlc3Npb25SZXF1ZXN0GjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0b3BTZXNzaW9uUmVzcG9uc2UiJILT5JMCHiocL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbhK2AQoOSW5oZXJpdFNlc3Npb24SOC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuSW5oZXJpdFNlc3Npb25SZXF1ZXN0GjkubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkluaGVyaXRTZXNzaW9uUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9pbmhlcml0Ep8BCgpHZXRTZXNzaW9uEjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkdldFNlc3Npb25SZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkdldFNlc3Npb25SZXNwb25zZSIkgtPkkwIeEhwvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uEqYBCgpSZWFkT3V0cHV0EjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRPdXRwdXRSZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRPdXRwdXRSZXNwb25zZSIrgtPkkwIlEiMvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL291dHB1dBKeAQoIUmVhZFVybHMSMi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUmVhZFVybHNSZXF1ZXN0GjMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRVcmxzUmVzcG9uc2UiKYLT5JMCIxIhL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi91cmxzErEBCg1TdHJlYW1TZXNzaW9uEjcubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0cmVhbVNlc3Npb25SZXF1ZXN0GjgubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0cmVhbVNlc3Npb25SZXNwb25zZSIrgtPkkwIlEiMvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL3N0cmVhbTABEqYBCgpBY2tNZXNzYWdlEjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkFja01lc3NhZ2VSZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkFja01lc3NhZ2VSZXNwb25zZSIrgtPkkwIlOgEqIiAvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL2FjaxKoAQoKUnVuU2Vzc2lvbhI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9ydW4wARKwAQoKUnVuSW5oZXJpdBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0UmVzcG9uc2UiM4LT5JMCLToBKiIoL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9ydW4taW5oZXJpdDABEqgBCgxXYXRjaFNlc3Npb24SNi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuV2F0Y2hTZXNzaW9uUmVxdWVzdBo3Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5XYXRjaFNlc3Npb25SZXNwb25zZSIlgtPkkwIfOgEqIhovdjEvYXV0b21hdGlvbnMve2lkfS93YXRjaDABEqABCghXYXRjaFJ1bhIyLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5XYXRjaFJ1blJlcXVlc3QaMy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuV2F0Y2hSdW5SZXNwb25zZSIpgtPkkwIjOgEqIh4vdjEvYXV0b21hdGlvbnMve2lkfS93YXRjaC1ydW4wARKwAQoMV2F0Y2hJbmhlcml0EjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLldhdGNoSW5oZXJpdFJlcXVlc3QaNy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuV2F0Y2hJbmhlcml0UmVzcG9uc2UiLYLT5JMCJzoBKiIiL3YxL2F1dG9tYXRpb25zL3tpZH0vd2F0Y2gtaW5oZXJpdDABGokBykEWYWRhcHQubW9jaGFidWdhcGlzLmNvbdJBbWh0dHBzOi8vd3d3Lm1vY2hhYnVnYXBpcy5jb20vYXV0aC9hZGFwdC5hdXRvbWF0aW9ucyxodHRwczovL3d3dy5tb2NoYWJ1Z2FwaXMuY29tL2F1dGgvYWRhcHQuYXV0b21hdGlvbnMuc3RhcnRiBnByb3RvMw",[z,Jr,$,Jt,Fr]),PA=d(Y,0),QA=d(Y,1),OA=d(Y,2),jA=d(Y,3),$A=d(Y,4),qA=d(Y,5),ex=d(Y,6),tx=d(Y,7),nx=d(Y,8),ox=d(Y,9),hs=d(Y,10),rx=d(Y,11),ix=d(Y,12),ax=d(Y,13),sx=d(Y,14),lx=d(Y,15),cx=d(Y,16),dx=d(Y,17),ux=d(Y,18),mx=d(Y,19),px=d(Y,20),hx=d(Y,21),gx=d(Y,22),fx=d(Y,23),bx=d(Y,24),yx=d(Y,25),Ix=d(Y,26),Gx=d(Y,27),vx=d(Y,28),Ax=d(Y,29),xx=d(Y,30),Cx=d(Y,31),Sx=d(Y,32),Zx=d(Y,33),Vx=d(Y,34),gs=d(Y,35),Ex=d(Y,36),Bx=d(Y,37),fs=d(Y,38),wx=d(Y,39),Xx=d(Y,40),Ye;(function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.RUNNING=1]="RUNNING",t[t.STOPPED=2]="STOPPED",t[t.STOPPING=3]="STOPPING",t[t.COMPLETED=4]="COMPLETED",t[t.EXPIRED=5]="EXPIRED",t[t.ERRORED=6]="ERRORED",t[t.DELEGATING=7]="DELEGATING",t[t.DELEGATED=8]="DELEGATED"})(Ye||(Ye={}));var At=M(Y,0),zr=Qa(Y,0);var bs={webUrl:"https://adapt.mochabugapis.com/v1/automations",grpcUrl:"https://adapt-grpc.mochabugapis.com"},no={...bs};function oo(t){no={...no,...t}}function Nr(){return{...no}}function ro(){no={...bs}}function ys(t){switch(t.case){case"retain":return{case:"retain"};case"close":return{case:"close",timeoutSeconds:t.value?.timeoutSeconds};case"recycle":return{case:"recycle"};default:return}}var Sd=[Ye.STOPPED,Ye.COMPLETED,Ye.ERRORED,Ye.EXPIRED,Ye.DELEGATED];function Is(t,e,n){let o=n?.debug??!1,r=x=>({Authorization:`Bearer ${x}`}),i=(x,W,Z)=>{if(!o&&x==="info")return;(x==="error"?console.error:x==="warn"?console.warn:console.log)(`[Adapt] ${W}`,Z??"")},a=null,s=null,l=null,c=0,p=null,g=new Set,I=[],h=1e3,y=()=>{p&&(clearTimeout(p),p=null)},R=[v.NotFound,v.PermissionDenied,v.Unauthenticated,v.InvalidArgument,v.FailedPrecondition,v.ResourceExhausted],E=x=>x instanceof X?!R.includes(x.code):!0,T=async(x,W=3)=>{for(let Z=0;Z<=W;Z++)try{return await x()}catch(N){if(Z===W||!E(N))throw N;let U=Math.min(500*(1<<Z),5e3);await new Promise(ne=>setTimeout(ne,Math.random()*U))}throw new Error("unreachable")},A=()=>{g.clear(),I.length=0},ae=x=>{if(!g.has(x)){if(g.size>=h){let W=I.shift();g.delete(W)}g.add(x),I.push(x)}},Q=x=>g.has(x),ce=x=>{let{case:W,value:Z}=x.message;switch(W){case"output":return s?.onOutput?.({vertex:Z.vertex,fork:Z.fork,data:Z.data,created:pe(Z.created)}),!1;case"url":return s?.onUrl?.({url:Z.url,vertex:Z.vertex,done:Z.done,stopped:Z.stopped,created:pe(Z.created),token:Z.token,fork:Z.fork,source:Z.source||void 0,retentionPolicy:ys(Z.retentionPolicy)}),!1;case"session":{let N=Sd.includes(Z.status)&&!Z.fork,U=lt(At,Z.status);return s?.onSession?.({status:U,fork:Z.fork}),N&&i("info",`Session ended: ${U}`),N}case"reconnect":return i("info","Reconnect message received"),!1;case"started":case"inherited":throw new Error(`Unexpected '${W}' message in stream - should only be first message`);default:return i("warn",`Unknown message type: ${W}`),!1}},D=(x,W)=>{let Z=Q(x.id);Z||ae(x.id);let N=Z?!1:ce(x);return!N&&s&&x.message.case!=="reconnect"&&t.ackMessage({id:e,messageId:x.id},{headers:W}).catch(U=>i("error",`ACK failed: ${x.id}`,U)),N},ve=()=>{if(!s||!l)return;c++;let x=c===1?0:Math.min(50*Math.pow(2,c-2),3e4);i("info",`Reconnecting in ${x}ms (attempt ${c})`),p=setTimeout(()=>{p=null,He()},x)},He=async()=>{if(!s||!l)return;let x=new AbortController;a=x;let W=r(l);i("info",`Connecting to stream: ${e}`);let Z=null,N=!1,U=()=>{N||(N=!0,c=0,Z&&(clearTimeout(Z),Z=null))};try{let ne=t.watchSession({id:e},{signal:x.signal,headers:W});Z=setTimeout(U,1e3);let O=!1;for await(let w of ne)if(U(),D(w,W)){O=!0;break}i("info","Stream ended normally"),!O&&s&&l&&(c=0,ve())}catch(ne){if(Z&&(clearTimeout(Z),Z=null),x.signal.aborted)return;i("error","Stream error",ne),E(ne)?ve():s?.onError?.(ne)}},tt=x=>{if(!x)return;let W={};for(let[Z,N]of Object.entries(x))N?.data instanceof Uint8Array&&typeof N?.mimeType=="string"&&N.mimeType?W[Z]=K(Yr,{data:N.data,mimeType:N.mimeType,filename:N.filename}):W[Z]=K(Yr,{data:new TextEncoder().encode(JSON.stringify(N)),mimeType:"application/json"});return Object.keys(W).length>0?W:void 0};return{raw:t,async run(x){i("info","run",{transmitter:x?.transmitter}),a&&await this.unsubscribe();let W=K(gs,{id:e,transmitter:x?.transmitter,signals:tt(x?.signals),challengeToken:x?.challengeToken}),Z=new AbortController;a=Z,s=x??{},c=0;let N={...x?.authToken?r(x.authToken):{},"x-idempotency-key":crypto.randomUUID()},U,ne,O=new Promise((f,b)=>{U=f,ne=b}),w=async()=>{let f=t.watchRun(W,{signal:Z.signal,headers:N}),b,G=null,V=!1,B=()=>{V||(V=!0,c=0,G&&(clearTimeout(G),G=null))};try{G=setTimeout(B,1e3);let C=!1;for await(let J of f){if(B(),!b){if(J.message.case!=="started"){ne(new Error("Expected started message as first response"));return}let k=J.message.value;b=k.token,l=b,i("info","run success",{token:b}),U({sessionToken:b,expiresAt:k.expires?pe(k.expires):void 0});continue}if(D(J,r(b))){C=!0;break}}i("info","Stream ended normally"),b&&!C&&s&&l&&(c=0,ve())}catch(C){if(G&&(clearTimeout(G),G=null),Z.signal.aborted)return;if(i("error","Stream error",C),b)E(C)?ve():s?.onError?.(C);else if(E(C)){c++;let J=c===1?0:Math.min(50*Math.pow(2,c-2),3e4);i("info",`Retrying watchRun in ${J}ms (attempt ${c})`),J===0?w():p=setTimeout(()=>{p=null,w()},J)}else ne(C)}};w();try{return await O}catch(f){throw a=null,s=null,l=null,f}},async runInherit(x,W){i("info","runInherit"),a&&await this.unsubscribe();let Z=new AbortController;a=Z,s=W??{},c=0;let N=K(fs,{id:e}),U,ne,O=new Promise((f,b)=>{U=f,ne=b}),w=async()=>{let f=t.watchInherit(N,{signal:Z.signal,headers:r(x)}),b,G=null,V=!1,B=()=>{V||(V=!0,c=0,G&&(clearTimeout(G),G=null))};try{G=setTimeout(B,1e3);let C=!1;for await(let J of f){if(B(),!b){if(J.message.case!=="inherited"){ne(new Error("Expected inherited message as first response"));return}let k=J.message.value;b=k.token,l=b,i("info","runInherit success",{token:b}),U({sessionToken:b,expiresAt:k.expires?pe(k.expires):void 0});continue}if(D(J,r(b))){C=!0;break}}i("info","Stream ended normally"),b&&!C&&s&&l&&(c=0,ve())}catch(C){if(G&&(clearTimeout(G),G=null),Z.signal.aborted)return;if(i("error","Stream error",C),b)E(C)?ve():s?.onError?.(C);else if(E(C)){c++;let J=c===1?0:Math.min(50*Math.pow(2,c-2),3e4);i("info",`Retrying watchInherit in ${J}ms (attempt ${c})`),J===0?w():p=setTimeout(()=>{p=null,w()},J)}else ne(C)}};w();try{return await O}catch(f){throw a=null,s=null,l=null,f}},async start(x){i("info","start",{transmitter:x?.transmitter});let W=K(hs,{id:e,transmitter:x?.transmitter,signals:tt(x?.signals),challengeToken:x?.challengeToken}),Z={...x?.authToken?r(x.authToken):{},"x-idempotency-key":crypto.randomUUID()},N=await T(()=>t.startSession(W,{headers:Z}));return i("info","start success",{token:N.token}),{sessionToken:N.token,expiresAt:N.expires?pe(N.expires):void 0}},async inherit(x){i("info","inherit");let W=await T(()=>t.inheritSession({id:e},{headers:r(x)}));return i("info","inherit success",{token:W.token}),{sessionToken:W.token,expiresAt:W.expires?pe(W.expires):void 0}},async subscribe(x,W){i("info","subscribe"),a&&await this.unsubscribe(),l=x,s=W,c=0,await He()},async stop(x,W){i("info","stop",W?{fork:W}:void 0),await T(()=>t.stopSession({id:e,fork:W},{headers:r(x)})),i("info","stop success")},async unsubscribe(){i("info","unsubscribe"),y(),A(),a?.abort(),a=null,s=null,l=null},async getSession(x){i("info","getSession");let W=await T(()=>t.getSession({id:e},{headers:r(x)})),Z={status:lt(At,W.session.status),fork:W.session.fork};return i("info","getSession success",Z),Z},async readOutput(x,W){i("info","readOutput",W);let Z=await T(()=>t.readOutput({id:e,pageSize:W?.pageSize,vertex:W?.vertex,newerThan:W?.newerThan?.toISOString()},{headers:r(x)})),N={session:{status:lt(At,Z.session.status),fork:Z.session.fork},nextPageCursor:Z.nextPageCursor,outputs:Z.outputs.map(U=>({vertex:U.vertex,fork:U.fork,created:pe(U.created),data:Object.fromEntries(Object.entries(U.data).map(([ne,O])=>{if(O.mimeType==="application/json")try{return[ne,JSON.parse(new TextDecoder().decode(O.data))]}catch{return[ne,O]}return[ne,O]}))}))};return i("info","readOutput success",{outputCount:N.outputs.length}),N},async readOutputBinary(x,W){i("info","readOutputBinary",W);let Z=await T(()=>t.readOutput({id:e,pageSize:W?.pageSize,vertex:W?.vertex,newerThan:W?.newerThan?.toISOString()},{headers:r(x)})),N={session:{status:lt(At,Z.session.status),fork:Z.session.fork},nextPageCursor:Z.nextPageCursor,outputs:Z.outputs.map(U=>({vertex:U.vertex,fork:U.fork,created:pe(U.created),data:U.data}))};return i("info","readOutputBinary success",{outputCount:N.outputs.length}),N},async readUrls(x,W){i("info","readUrls",W);let Z=await T(()=>t.readUrls({id:e,pageSize:W?.pageSize,newerThan:W?.newerThan},{headers:r(x)})),N={session:{status:lt(At,Z.session.status),fork:Z.session.fork},nextPageCursor:Z.nextPageCursor,urls:Z.urls.map(U=>({url:U.url,vertex:U.vertex,done:U.done,stopped:U.stopped,created:pe(U.created),token:U.token,fork:U.fork,source:U.source||void 0,retentionPolicy:ys(U.retentionPolicy)}))};return i("info","readUrls success",{urlCount:N.urls.length}),N}}}function Lr(){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 tn=function(t){return this instanceof tn?(this.v=t,this):new tn(t)},Zd=function(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(t,e||[]),r,i=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",a),r[Symbol.asyncIterator]=function(){return this},r;function a(h){return function(y){return Promise.resolve(y).then(h,g)}}function s(h,y){o[h]&&(r[h]=function(R){return new Promise(function(E,T){i.push([h,R,E,T])>1||l(h,R)})},y&&(r[h]=y(r[h])))}function l(h,y){try{c(o[h](y))}catch(R){I(i[0][3],R)}}function c(h){h.value instanceof tn?Promise.resolve(h.value.v).then(p,g):I(i[0][2],h)}function p(h){l("next",h)}function g(h){l("throw",h)}function I(h,y){h(y),i.shift(),i.length&&l(i[0][0],i[0][1])}},Gs={redirect:"error"};function Hr(t){var e;Lr();let n=(e=t.useBinaryFormat)!==null&&e!==void 0?e:!1;return{async unary(o,r,i,a,s,l){let{serialize:c,parse:p}=Qt(o,n,t.jsonOptions,t.binaryOptions);return i=i===void 0?t.defaultTimeoutMs:i<=0?void 0:i,await Qe({interceptors:t.interceptors,signal:r,timeoutMs:i,req:{stream:!1,service:o.parent,method:o,requestMethod:"POST",url:Ie(t.baseUrl,o),header:qn(o.methodKind,n,i,a,!1),contextValues:l??We(),message:s},next:async g=>{var I;let h=t.useHttpGet===!0&&o.idempotency===at.NO_SIDE_EFFECTS,y=null;h?g=to(g,c(g.message),n):y=c(g.message);let E=await((I=t.fetch)!==null&&I!==void 0?I:globalThis.fetch)(g.url,Object.assign(Object.assign({},Gs),{method:g.requestMethod,headers:g.header,signal:g.signal,body:y})),{isUnaryError:T,unaryError:A}=eo(o.methodKind,n,E.status,E.headers);if(T)throw Ot(await E.json(),Tt(...$t(E.headers)),A);let[ae,Q]=$t(E.headers);return{stream:!1,service:o.parent,method:o,header:ae,message:n?p(new Uint8Array(await E.arrayBuffer())):wn(o.output,await E.json(),Ln(t.jsonOptions)),trailer:Q}}})},async stream(o,r,i,a,s,l){let{serialize:c,parse:p}=Qt(o,n,t.jsonOptions,t.binaryOptions);function g(h,y,R,E){return Zd(this,arguments,function*(){let A=Jn(h).getReader(),ae=!1;for(;;){let Q=yield tn(A.read());if(Q.done)break;let{flags:ce,data:D}=Q.value;if((ce&dt)===dt)throw new X("protocol error: received unsupported compressed output",v.Internal);if((ce&Gt)===Gt){ae=!0;let ve=wr(D);if(ve.error){let He=ve.error;throw R.forEach((tt,x)=>{He.metadata.append(x,tt)}),He}ve.metadata.forEach((He,tt)=>y.set(tt,He));continue}yield yield tn(p(D))}if("throwIfAborted"in E&&E.throwIfAborted(),!ae)throw"missing EndStreamResponse"})}async function I(h){if(o.methodKind!="server_streaming")throw"The fetch API does not support streaming request bodies";let y=await h[Symbol.asyncIterator]().next();if(y.done==!0)throw"missing request message";return Ut(0,c(y.value))}return i=i===void 0?t.defaultTimeoutMs:i<=0?void 0:i,await Oe({interceptors:t.interceptors,timeoutMs:i,signal:r,req:{stream:!0,service:o.parent,method:o,requestMethod:"POST",url:Ie(t.baseUrl,o),header:qn(o.methodKind,n,i,a,!1),contextValues:l??We(),message:s},next:async h=>{var y;let E=await((y=t.fetch)!==null&&y!==void 0?y:globalThis.fetch)(h.url,Object.assign(Object.assign({},Gs),{method:h.requestMethod,headers:h.header,signal:h.signal,body:await I(h.message)}));if(eo(o.methodKind,n,E.status,E.headers),E.body===null)throw"missing response body";let T=new Headers;return Object.assign(Object.assign({},h),{header:E.headers,trailer:T,message:g(E.body,T,E.headers,h.signal)})}})}}}function ao(t){if(!t.id)throw new Error('[adapt] createConnectClient requires "id" (the automation ID). Usage: createConnectClient({ id: "your-automation-id" })');let e=Nr(),n=Hr({baseUrl:`${e.webUrl}/${t.id}`,useBinaryFormat:!0});return gr(zr,n)}function As(t,e){return`${t}${e?`#mb_token=${encodeURIComponent(e)}`:""}`}var xs=`/* ==========================================================================
2
+ "use strict";var MbAdapt=(()=>{var zs=Object.create;var St=Object.defineProperty;var Ns=Object.getOwnPropertyDescriptor;var Ls=Object.getOwnPropertyNames;var Hs=Object.getPrototypeOf,Ts=Object.prototype.hasOwnProperty;var ti=t=>{throw TypeError(t)};var Us=(t,e,n)=>e in t?St(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Ds=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),_s=(t,e)=>{for(var n in e)St(t,n,{get:e[n],enumerable:!0})},ni=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Ls(e))!Ts.call(t,r)&&r!==n&&St(t,r,{get:()=>e[r],enumerable:!(o=Ns(e,r))||o.enumerable});return t};var Ks=(t,e,n)=>(n=t!=null?zs(Hs(t)):{},ni(e||!t||!t.__esModule?St(n,"default",{value:t,enumerable:!0}):n,t)),Ps=t=>ni(St({},"__esModule",{value:!0}),t);var oi=(t,e,n)=>Us(t,typeof e!="symbol"?e+"":e,n),Io=(t,e,n)=>e.has(t)||ti("Cannot "+n);var m=(t,e,n)=>(Io(t,e,"read from private field"),n?n.call(t):e.get(t)),me=(t,e,n)=>e.has(t)?ti("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),O=(t,e,n,o)=>(Io(t,e,"write to private field"),o?o.call(t,n):e.set(t,n),n),le=(t,e,n)=>(Io(t,e,"access private method"),n);var Ys=Ds((bo,ei)=>{(()=>{var g,A,h,b,W,Z,H,G,K,Q,ce,D,jr,go,fo,$r,ks,Js,qr,Ms,Fs;let t="vibrate"in navigator&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches;if(typeof window>"u")return;let e=(j,w={})=>window?.CAP_CUSTOM_FETCH?window.CAP_CUSTOM_FETCH(j,w):fetch(j,w);function n(j,w){let f=(function(E){let B=2166136261;for(let C=0;C<E.length;C++)B^=E.charCodeAt(C),B+=(B<<1)+(B<<4)+(B<<7)+(B<<8)+(B<<24);return B>>>0})(j),y="";function I(){return f^=f<<13,f^=f>>>17,f^=f<<5,f>>>0}for(;y.length<w;)y+=I().toString(16).padStart(8,"0");return y.substring(0,w)}async function o(j){var w=(y=>{let I=atob(y),E=new Uint8Array(I.length);for(let B=0;B<I.length;B++)E[B]=I.charCodeAt(B);return E})(j);let f=await new Promise((y,I)=>{try{var E=new DecompressionStream("deflate-raw"),B=E.writable.getWriter(),C=E.readable.getReader(),J=[];C.read().then(function k(te){if(te.done){for(var he=0,se=0,T=0;T<J.length;T++)he+=J[T].length;var ue=new Uint8Array(he);for(T=0;T<J.length;T++)ue.set(J[T],se),se+=J[T].length;y(new TextDecoder().decode(ue))}else J.push(te.value),C.read().then(k).catch(I)}).catch(I),B.write(w).then(()=>{B.close()}).catch(I)}catch(k){I(k)}});return new Promise(y=>{var I=setTimeout(()=>{C(),y({__timeout:!0})},2e4),E=document.createElement("iframe");E.setAttribute("sandbox","allow-scripts"),E.setAttribute("aria-hidden","true"),E.style.cssText="position:absolute;width:1px;height:1px;top:-9999px;left:-9999px;border:none;opacity:0;pointer-events:none;";var B=!1;function C(){B||(B=!0,clearTimeout(I),window.removeEventListener("message",J),E.parentNode&&E.parentNode.removeChild(E))}function J(k){var te=k.data;te&&typeof te=="object"&&(te.type==="cap:instr"?(C(),te.blocked?y({__blocked:!0,blockReason:te.blockReason||"automated_browser"}):te.result?y(te.result):y({__timeout:!0})):te.type==="cap:error"&&(C(),y({__timeout:!0})))}window.addEventListener("message",J),E.srcdoc='<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body><script>'+f+`
3
+ <\/script></body></html>`,document.body.appendChild(E)})}let r=null,i=()=>{if(r)return r;let j=window.CAP_CUSTOM_WASM_URL||"https://cdn.jsdelivr.net/npm/@cap.js/wasm@0.0.6/browser/cap_wasm_bg.wasm";return r=fetch(j).then(w=>{if(!w.ok)throw new Error(`Failed to fetch wasm: ${w.status}`);return w.arrayBuffer()}).then(w=>WebAssembly.compile(w)).catch(w=>{throw r=null,w}),r};typeof WebAssembly=="object"&&typeof WebAssembly.compile=="function"&&i().catch(()=>{});let a=null;function s(){return a||(a=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"})),a)}class l{constructor(w){this._size=w,this._workers=[],this._idle=[],this._queue=[],this._wasmModule=null,this._spawnFailures=0}setWasm(w){this._wasmModule=w}_spawn(){let w=s(),f=new Worker(w);return f._busy=!1,this._workers.push(f),this._idle.push(f),f}_replaceWorker(w){let f=this._workers.indexOf(w);f!==-1&&this._workers.splice(f,1);let y=this._idle.indexOf(w);y!==-1&&this._idle.splice(y,1);try{w.terminate()}catch{}return this._spawnFailures++,this._spawnFailures>3?(console.error("[cap] worker spawn failed repeatedly, not retrying"),null):this._spawn()}_ensureSize(w){for(;this._workers.length<w;)this._spawn()}run(w,f){return new Promise((y,I)=>{this._queue.push({salt:w,target:f,resolve:y,reject:I}),this._dispatch()})}_dispatch(){for(;this._idle.length>0&&this._queue.length>0;){let w=this._idle.shift(),{salt:f,target:y,resolve:I,reject:E}=this._queue.shift(),B=!1,C=({data:k})=>{B||(B=!0,w.removeEventListener("message",C),w.removeEventListener("error",J),this._spawnFailures=0,this._idle.push(w),k.found?I(k.nonce):E(new Error(k.error||"worker failed")),this._dispatch())},J=k=>{if(B)return;B=!0,w.removeEventListener("message",C),w.removeEventListener("error",J);let te=this._replaceWorker(w);E(k),te&&this._dispatch()};w.addEventListener("message",C),w.addEventListener("error",J),this._wasmModule?w.postMessage({salt:f,target:y,wasmModule:this._wasmModule},[]):w.postMessage({salt:f,target:y})}}terminate(){for(let w of this._workers)try{w.terminate()}catch{}this._workers=[],this._idle=[],this._queue=[]}}class c extends HTMLElement{constructor(){super();me(this,D);me(this,g,null);me(this,A,navigator.hardwareConcurrency||8);oi(this,"token",null);me(this,h);me(this,b);me(this,W);me(this,Z,!1);me(this,H);me(this,G,null);me(this,K,null);me(this,Q,null);me(this,ce,null);m(this,H)&&m(this,H).forEach((f,y)=>{this.removeEventListener(y.slice(2),f)}),O(this,H,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)}getI18nText(f,y){return this.getAttribute(`data-cap-i18n-${f}`)||y}static get observedAttributes(){return["onsolve","onprogress","onreset","onerror","data-cap-worker-count","data-cap-i18n-initial-state"]}initialize(){s(),m(this,G)||O(this,G,le(this,D,jr).call(this)),m(this,Q)||(O(this,Q,new l(1)),m(this,Q)._spawn())}attributeChangedCallback(f,y,I){if(f.startsWith("on")){let E=f.slice(2),B=m(this,H).get(f);if(B&&this.removeEventListener(E,B),I){let C=J=>{let k=this.getAttribute(f);typeof window[k]=="function"&&window[k].call(this,J)};m(this,H).set(f,C),this.addEventListener(E,C)}}f==="data-cap-worker-count"&&this.setWorkersCount(parseInt(I,10)),f==="data-cap-i18n-initial-state"&&m(this,b)&&m(this,b)?.querySelector(".label.active")&&this.animateLabel(this.getI18nText("initial-state","Verify you're human"))}async connectedCallback(){O(this,W,this),O(this,h,this.attachShadow({mode:"open"})),O(this,b,document.createElement("div")),this.createUI(),this.addEventListeners(),this.initialize(),m(this,b).removeAttribute("disabled");let f=this.getAttribute("data-cap-worker-count"),y=f?parseInt(f,10):null;this.setWorkersCount(y||navigator.hardwareConcurrency||8);let I=this.getAttribute("data-cap-hidden-field-name")||"cap-token";m(this,W).innerHTML=`<input type="hidden" name="${I}">`,le(this,D,$r).call(this)}async solve(){if(!m(this,Z))try{O(this,Z,!0),this.updateUI("verifying",this.getI18nText("verifying-label","Verifying..."),!0),m(this,b).setAttribute("aria-label",this.getI18nText("verifying-aria-label","Verifying you're a human, please wait")),this.dispatchEvent("progress",{progress:0});try{let f,y,I=this.getAttribute("data-cap-api-endpoint");if(!I&&window?.CAP_CUSTOM_FETCH)I="/";else if(!I)throw new Error("Missing API endpoint. Either custom fetch or an API endpoint must be provided.");if(I.endsWith("/")||(I+="/"),m(this,G).state==="done"&&m(this,G).token&&m(this,G).tokenExpires&&Date.now()<m(this,G).tokenExpires){this.dispatchEvent("progress",{progress:100});let se=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${se}']`)&&(this.querySelector(`input[name='${se}']`).value=m(this,G).token),this.dispatchEvent("solve",{token:m(this,G).token}),this.token=m(this,G).token;let T=m(this,G).tokenExpires-Date.now();return m(this,g)&&clearTimeout(m(this,g)),O(this,g,setTimeout(()=>this.reset(),T)),m(this,b).setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),t&&navigator.vibrate([10,50,20,30,40]),le(this,D,go).call(this),O(this,Z,!1),{success:!0,token:this.token}}if(m(this,G).state==="done")f=m(this,G).results,y=m(this,G).challengeResp,this.dispatchEvent("progress",{progress:100});else if(m(this,G).state==="solving"||m(this,G).state==="redeeming"||m(this,G).state==="fetching"||m(this,G).state==="waiting"){m(this,G).state==="waiting"&&(m(this,K)&&(clearTimeout(m(this,K)),O(this,K,null)),m(this,G).state="waiting",le(this,D,qr).call(this)),m(this,G).pendingPromotion=m(this,A),m(this,G).promoteFn&&m(this,G).promoteFn(m(this,A));let se=setInterval(()=>{if(m(this,G).state!=="solving"&&m(this,G).state!=="redeeming")return void clearInterval(se);let T=m(this,G).challenges?m(this,G).challenges.length:1,ue=m(this,G).completedCount,Te=m(this,G).state==="redeeming"?99:Math.min(98,Math.round(ue/T*100));this.dispatchEvent("progress",{progress:Te})},150);if(await new Promise(T=>m(this,G).onSettled(T)),clearInterval(se),m(this,G).state!=="done")throw new Error("Speculative solve failed \u2013 please try again");if(m(this,G).token&&m(this,G).tokenExpires&&Date.now()<m(this,G).tokenExpires){this.dispatchEvent("progress",{progress:100});let T=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${T}']`)&&(this.querySelector(`input[name='${T}']`).value=m(this,G).token),this.dispatchEvent("solve",{token:m(this,G).token}),this.token=m(this,G).token;let ue=m(this,G).tokenExpires-Date.now();return m(this,g)&&clearTimeout(m(this,g)),O(this,g,setTimeout(()=>this.reset(),ue)),m(this,b).setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),t&&navigator.vibrate([10,50,20,30,40]),le(this,D,go).call(this),O(this,Z,!1),{success:!0,token:this.token}}f=m(this,G).results,y=m(this,G).challengeResp,this.dispatchEvent("progress",{progress:100})}else{let se=await e(`${I}challenge`,{method:"POST"});try{y=await se.json()}catch{throw new Error("Failed to parse challenge response from server")}if(y.error)throw new Error(y.error);let{challenge:T,token:ue}=y,Te=T;if(!Array.isArray(Te)){let yo=0;Te=Array.from({length:T.c},()=>(yo++,[n(`${ue}${yo}`,T.s),n(`${ue}${yo}d`,T.d)]))}f=await this.solveChallenges(Te)}let E=y.instrumentation?o(y.instrumentation):Promise.resolve(null),B=await E;if(B?.__timeout||B?.__blocked){this.updateUIBlocked(this.getI18nText("error-label","Error"),B?.__blocked),m(this,b).setAttribute("aria-label",this.getI18nText("error-aria-label","An error occurred, please try again")),this.removeEventListener("error",this.boundHandleError);let se=new CustomEvent("error",{bubbles:!0,composed:!0,detail:{isCap:!0,message:"Instrumentation failed"}});return super.dispatchEvent(se),this.addEventListener("error",this.boundHandleError),this.executeAttributeCode("onerror",se),console.error("[cap]","Instrumentation failed"),void O(this,Z,!1)}let{token:C}=y,J=await e(`${I}redeem`,{method:"POST",body:JSON.stringify({token:C,solutions:f,...B&&{instr:B}}),headers:{"Content-Type":"application/json"}}),k;try{k=await J.json()}catch{throw new Error("Failed to parse server response")}if(this.dispatchEvent("progress",{progress:100}),!k.success)throw new Error(k.error||"Invalid solution");let te=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${te}']`)&&(this.querySelector(`input[name='${te}']`).value=k.token),this.dispatchEvent("solve",{token:k.token}),this.token=k.token,le(this,D,go).call(this),m(this,g)&&clearTimeout(m(this,g));let he=new Date(k.expires).getTime()-Date.now();return he>0&&he<864e5?O(this,g,setTimeout(()=>this.reset(),he)):this.error("Invalid expiration time"),m(this,b).setAttribute("aria-label",this.getI18nText("verified-aria-label","We have verified you're a human, you may now continue")),t&&navigator.vibrate([10,50,20,30,40]),{success:!0,token:this.token}}catch(f){throw m(this,b).setAttribute("aria-label",this.getI18nText("error-aria-label","An error occurred, please try again")),this.error(f.message),f}}finally{O(this,Z,!1)}}async solveChallenges(f){let y=f.length,I=0,E=null,B=typeof WebAssembly=="object"&&typeof WebAssembly.instantiate=="function";if(B)try{E=await i()}catch(k){console.warn("[cap] wasm unavailable, falling back to JS solver:",k)}if(!B&&!m(this,h).querySelector(".warning")){let k=document.createElement("div");k.className="warning",k.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;",k.innerText=this.getI18nText("wasm-disabled","Enable WASM for significantly faster solving"),m(this,h).insertBefore(k,m(this,h).firstChild),setTimeout(()=>{k.style.marginBottom="calc(-1 * var(--cap-border-radius, 14px))",k.style.opacity=1},10)}let C=new l(m(this,A));C.setWasm(E),C._ensureSize(m(this,A));let J=[];try{for(let k=0;k<f.length;k+=m(this,A)){let te=f.slice(k,Math.min(k+m(this,A),f.length)),he=await Promise.all(te.map(([se,T])=>C.run(se,T).then(ue=>{I++;let Te=Math.min(99,Math.round((0+I)/y*100));return this.dispatchEvent("progress",{progress:Te}),ue})));J.push(...he)}}finally{C.terminate()}return J}setWorkersCount(f){let y=parseInt(f,10),I=Math.min(navigator.hardwareConcurrency||8,16);O(this,A,!Number.isNaN(y)&&y>0&&y<=I?y:navigator.hardwareConcurrency||8)}createUI(){m(this,b).classList.add("captcha"),m(this,b).setAttribute("role","button"),m(this,b).setAttribute("tabindex","0"),m(this,b).setAttribute("aria-label",this.getI18nText("verify-aria-label","Click to verify you're a human")),m(this,b).setAttribute("aria-live","polite"),m(this,b).setAttribute("disabled","true"),m(this,b).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>`,m(this,h).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>`,m(this,h).appendChild(m(this,b))}addEventListeners(){m(this,b)&&(m(this,b).querySelector("a").addEventListener("click",f=>{f.stopPropagation(),f.preventDefault(),window.open("https://capjs.js.org","_blank")}),m(this,b).addEventListener("click",()=>{m(this,b).hasAttribute("disabled")||this.solve()}),m(this,b).addEventListener("mousedown",()=>{!m(this,b).hasAttribute("disabled")&&t&&navigator.vibrate(5)}),m(this,b).addEventListener("keydown",f=>{f.key!=="Enter"&&f.key!==" "||m(this,b).hasAttribute("disabled")||(f.preventDefault(),f.stopPropagation(),this.solve())}),this.addEventListener("progress",this.boundHandleProgress),this.addEventListener("solve",this.boundHandleSolve),this.addEventListener("error",this.boundHandleError),this.addEventListener("reset",this.boundHandleReset))}animateLabel(f){if(!m(this,b))return;let y=m(this,b).querySelector(".label-wrapper");if(!y)return;if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches){let B=y.querySelector(".label.active");if(B)B.textContent=f;else{let C=document.createElement("span");C.className="label active",C.textContent=f,y.appendChild(C)}return}let I=y.querySelector(".label.active"),E=document.createElement("span");E.className="label",E.textContent=f,y.appendChild(E),E.offsetWidth,E.classList.add("active"),I&&(I.classList.remove("active"),I.classList.add("exit"),I.addEventListener("transitionend",()=>I.remove(),{once:!0}))}updateUI(f,y,I=!1){m(this,b)&&(m(this,b).setAttribute("data-state",f),this.animateLabel(y),I?m(this,b).setAttribute("disabled","true"):m(this,b).removeAttribute("disabled"))}updateUIBlocked(f,y=!1){if(!m(this,b))return;m(this,b).setAttribute("data-state","error"),m(this,b).removeAttribute("disabled");let I=m(this,b).querySelector(".label-wrapper");if(!I)return;let E=this.getAttribute("data-cap-troubleshooting-url")||"https://capjs.js.org/guide/troubleshooting/instrumentation.html",B=I.querySelector(".label.active"),C=document.createElement("span");C.className="label",C.innerHTML=y?`${f} \xB7 <a class="cap-troubleshoot-link" href="${E}" target="_blank" rel="noopener">${this.getI18nText("troubleshooting-label","Troubleshoot")}</a>`:f,I.appendChild(C),C.offsetWidth,C.classList.add("active"),B&&(B.classList.remove("active"),B.classList.add("exit"),B.addEventListener("transitionend",()=>B.remove(),{once:!0}));let J=C.querySelector(".cap-troubleshoot-link");J&&J.addEventListener("click",k=>{k.stopPropagation()})}handleProgress(f){if(!m(this,b))return;let y=m(this,b).querySelector(".progress-ring-circle");if(y){let E=2*Math.PI*14,B=E-f.detail.progress/100*E;y.style.strokeDashoffset=B}let I=m(this,b).querySelector(".label-wrapper");if(I){let E=I.querySelector(".label.active");E&&(E.textContent=`${this.getI18nText("verifying-label","Verifying...")}`)}this.executeAttributeCode("onprogress",f)}handleSolve(f){this.updateUI("done",this.getI18nText("solved-label","You're a human"),!0),this.executeAttributeCode("onsolve",f)}handleError(f){this.updateUI("error",this.getI18nText("error-label","Error. Try again.")),this.executeAttributeCode("onerror",f),t&&navigator.vibrate([10,40,10])}handleReset(f){this.updateUI("",this.getI18nText("initial-state","I'm a human")),this.executeAttributeCode("onreset",f)}executeAttributeCode(f,y){let I=this.getAttribute(f);I&&(console.error("[cap] using `onxxx='\u2026'` is strongly discouraged and will be deprecated soon. please use `addEventListener` callbacks instead."),new Function("event",I).call(this,y))}error(f="Unknown error"){console.error("[cap]",f),this.dispatchEvent("error",{isCap:!0,message:f})}dispatchEvent(f,y={}){let I=new CustomEvent(f,{bubbles:!0,composed:!0,detail:y});super.dispatchEvent(I)}reset(){m(this,g)&&(clearTimeout(m(this,g)),O(this,g,null)),this.dispatchEvent("reset"),this.token=null;let f=this.getAttribute("data-cap-hidden-field-name")||"cap-token";this.querySelector(`input[name='${f}']`)&&(this.querySelector(`input[name='${f}']`).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),m(this,H).forEach((f,y)=>{this.removeEventListener(y.slice(2),f)}),m(this,H).clear(),m(this,h)&&(m(this,h).innerHTML=""),this.reset(),this.cleanup()}cleanup(){m(this,g)&&(clearTimeout(m(this,g)),O(this,g,null)),le(this,D,fo).call(this),m(this,K)&&(clearTimeout(m(this,K)),O(this,K,null)),m(this,Q)&&(m(this,Q).terminate(),O(this,Q,null)),m(this,G)&&(m(this,G).state="error",m(this,G).notify(),O(this,G,null))}}g=new WeakMap,A=new WeakMap,h=new WeakMap,b=new WeakMap,W=new WeakMap,Z=new WeakMap,H=new WeakMap,G=new WeakMap,K=new WeakMap,Q=new WeakMap,ce=new WeakMap,D=new WeakSet,jr=function(){return{state:"idle",challengeResp:null,challenges:null,results:[],completedCount:0,solvePromise:null,promoteFn:null,_listeners:[],pendingPromotion:null,token:null,tokenExpires:null,notify(){for(let f of this._listeners)f();this._listeners=[]},onSettled(f){this.state==="done"||this.state==="error"?f():this._listeners.push(f)}}},go=function(){O(this,G,le(this,D,jr).call(this)),le(this,D,$r).call(this)},fo=function(){m(this,ce)&&(window.removeEventListener("mousemove",m(this,ce)),window.removeEventListener("touchstart",m(this,ce)),window.removeEventListener("keydown",m(this,ce)),O(this,ce,null))},$r=function(){le(this,D,fo).call(this);let f=()=>{le(this,D,fo).call(this),le(this,D,Js).call(this)};O(this,ce,f),window.addEventListener("mousemove",f,{passive:!0}),window.addEventListener("touchstart",f,{passive:!0}),window.addEventListener("keydown",f,{passive:!0})},ks=function(){return typeof this.checkVisibility=="function"?this.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0}):!!(this.offsetParent||this.getClientRects().length>0)},Js=function(){m(this,G).state==="idle"&&le(this,D,ks).call(this)&&(m(this,G).state="waiting",O(this,K,setTimeout(()=>{le(this,D,qr).call(this)},2500)))},qr=async function(){if(m(this,G).state!=="waiting")return;m(this,G).state="fetching";let f=this.getAttribute("data-cap-api-endpoint");if(!f&&window?.CAP_CUSTOM_FETCH&&(f="/"),f){f.endsWith("/")||(f+="/");try{let y=await e(`${f}challenge`,{method:"POST"}),I;try{I=await y.json()}catch{throw new Error("Failed to parse speculative challenge response")}if(I.error)throw new Error(I.error);I._apiEndpoint=f,m(this,G).challengeResp=I;let{challenge:E,token:B}=I,C=E;if(!Array.isArray(C)){let J=0;C=Array.from({length:E.c},()=>(J++,[n(`${B}${J}`,E.s),n(`${B}${J}d`,E.d)]))}m(this,G).challenges=C,m(this,G).state="solving",m(this,G).solvePromise=le(this,D,Ms).call(this,C)}catch(y){console.warn("[cap] speculative challenge fetch failed:",y),m(this,G).state="error",m(this,G).notify()}}else m(this,G).state="idle"},Ms=async function(f){s();let y=null;try{y=await i()}catch{}m(this,Q)||(O(this,Q,new l(1)),m(this,Q)._spawn()),m(this,Q).setWasm(y);let I=f.length,E=new Array(I),B=1,C=!1;m(this,G).promoteFn=k=>{C||(C=!0,B=k,m(this,Q)._size=k,m(this,Q)._ensureSize(k))},m(this,G).pendingPromotion!==null&&(m(this,G).promoteFn(m(this,G).pendingPromotion),m(this,G).pendingPromotion=null);let J=0;for(;J<I;){let k=B,te=[],he=[];for(let T=0;T<k&&J<I;T++)he.push(J),te.push(f[J]),J++;m(this,Q)._ensureSize(Math.max(B,k));let se=await Promise.all(te.map(T=>m(this,Q).run(T[0],T[1]).then(ue=>(m(this,G).completedCount++,ue))));for(let T=0;T<he.length;T++)E[he[T]]=se[T];!C&&J<I&&await new Promise(T=>setTimeout(T,120))}return m(this,G).results=E,m(this,G).state="redeeming",le(this,D,Fs).call(this,E),E},Fs=async function(f){try{let y=m(this,G).challengeResp,I=y._apiEndpoint;if(!I)throw new Error("[cap] speculative redeem: missing apiEndpoint");let E=null;if(y.instrumentation&&(E=await o(y.instrumentation),E?.__timeout||E?.__blocked))return m(this,G).state="done",void m(this,G).notify();let B=await e(`${I}redeem`,{method:"POST",body:JSON.stringify({token:y.token,solutions:f,...E&&{instr:E}}),headers:{"Content-Type":"application/json"}}),C;try{C=await B.json()}catch{throw new Error("Failed to parse speculative redeem response")}if(!C.success)throw new Error(C.error||"Speculative redeem failed");m(this,G).token=C.token,m(this,G).tokenExpires=new Date(C.expires).getTime(),m(this,G).state="done",m(this,G).notify()}catch(y){console.warn("[cap] speculative redeem failed (will redo on click):",y),m(this,G).state="done",m(this,G).notify()}};class p{constructor(w={},f){let y=f||document.createElement("cap-widget");if(Object.entries(w).forEach(([I,E])=>{y.setAttribute(I,E)}),!w.apiEndpoint&&!window?.CAP_CUSTOM_FETCH)throw y.remove(),new Error("Missing API endpoint. Either custom fetch or an API endpoint must be provided.");w.apiEndpoint&&y.setAttribute("data-cap-api-endpoint",w.apiEndpoint),this.widget=y,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:()=>y.token,configurable:!0,enumerable:!0}),f||(y.style.display="none",document.documentElement.appendChild(y))}}window.Cap=p,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.
4
+ to prevent this, set window.CAP_DONT_SKIP_REDEFINE to true`):customElements.define("cap-widget",c),typeof bo=="object"&&typeof ei<"u"?ei.exports=p:typeof define=="function"&&define.amd&&define([],()=>p),typeof bo<"u"&&(bo.default=p)})()});var zd={};_s(zd,{AdaptAutomationElement:()=>xt,AdaptCapElement:()=>sn,Cap:()=>Le,FloatingToolbar:()=>$e,ForkGroupActions:()=>qe,IframePanelComponent:()=>ke,MinimizeManager:()=>je,PanelManager:()=>et,WebClient:()=>Ne,clearPersistedState:()=>ws,configure:()=>oo,createChallenge:()=>Qr,createConnectClient:()=>ao,redeemChallenge:()=>Or,resetConfig:()=>ro,resolveTheme:()=>rn});function Zt(t,e){return t!==null&&typeof t=="object"&&"$typeName"in t&&typeof t.$typeName=="string"?e===void 0?!0:e.typeName===t.$typeName:!1}var u;(function(t){t[t.DOUBLE=1]="DOUBLE",t[t.FLOAT=2]="FLOAT",t[t.INT64=3]="INT64",t[t.UINT64=4]="UINT64",t[t.INT32=5]="INT32",t[t.FIXED64=6]="FIXED64",t[t.FIXED32=7]="FIXED32",t[t.BOOL=8]="BOOL",t[t.STRING=9]="STRING",t[t.BYTES=12]="BYTES",t[t.UINT32=13]="UINT32",t[t.SFIXED32=15]="SFIXED32",t[t.SFIXED64=16]="SFIXED64",t[t.SINT32=17]="SINT32",t[t.SINT64=18]="SINT64"})(u||(u={}));function ii(){let t=0,e=0;for(let o=0;o<28;o+=7){let r=this.buf[this.pos++];if(t|=(r&127)<<o,(r&128)==0)return this.assertBounds(),[t,e]}let n=this.buf[this.pos++];if(t|=(n&15)<<28,e=(n&112)>>4,(n&128)==0)return this.assertBounds(),[t,e];for(let o=3;o<=31;o+=7){let r=this.buf[this.pos++];if(e|=(r&127)<<o,(r&128)==0)return this.assertBounds(),[t,e]}throw new Error("invalid varint")}function cn(t,e,n){for(let i=0;i<28;i=i+7){let a=t>>>i,s=!(!(a>>>7)&&e==0),l=(s?a|128:a)&255;if(n.push(l),!s)return}let o=t>>>28&15|(e&7)<<4,r=e>>3!=0;if(n.push((r?o|128:o)&255),!!r){for(let i=3;i<31;i=i+7){let a=e>>>i,s=!!(a>>>7),l=(s?a|128:a)&255;if(n.push(l),!s)return}n.push(e>>>31&1)}}var ln=4294967296;function Go(t){let e=t[0]==="-";e&&(t=t.slice(1));let n=1e6,o=0,r=0;function i(a,s){let l=Number(t.slice(a,s));r*=n,o=o*n+l,o>=ln&&(r=r+(o/ln|0),o=o%ln)}return i(-24,-18),i(-18,-12),i(-12,-6),i(-6),e?si(o,r):Ao(o,r)}function ai(t,e){let n=Ao(t,e),o=n.hi&2147483648;o&&(n=si(n.lo,n.hi));let r=vo(n.lo,n.hi);return o?"-"+r:r}function vo(t,e){if({lo:t,hi:e}=Qs(t,e),e<=2097151)return String(ln*e+t);let n=t&16777215,o=(t>>>24|e<<8)&16777215,r=e>>16&65535,i=n+o*6777216+r*6710656,a=o+r*8147497,s=r*2,l=1e7;return i>=l&&(a+=Math.floor(i/l),i%=l),a>=l&&(s+=Math.floor(a/l),a%=l),s.toString()+ri(a)+ri(i)}function Qs(t,e){return{lo:t>>>0,hi:e>>>0}}function Ao(t,e){return{lo:t|0,hi:e|0}}function si(t,e){return e=~e,t?t=~t+1:e+=1,Ao(t,e)}var ri=t=>{let e=String(t);return"0000000".slice(e.length)+e};function Vt(t,e){if(t>=0){for(;t>127;)e.push(t&127|128),t=t>>>7;e.push(t)}else{for(let n=0;n<9;n++)e.push(t&127|128),t=t>>7;e.push(1)}}function li(){let t=this.buf[this.pos++],e=t&127;if((t&128)==0)return this.assertBounds(),e;if(t=this.buf[this.pos++],e|=(t&127)<<7,(t&128)==0)return this.assertBounds(),e;if(t=this.buf[this.pos++],e|=(t&127)<<14,(t&128)==0)return this.assertBounds(),e;if(t=this.buf[this.pos++],e|=(t&127)<<21,(t&128)==0)return this.assertBounds(),e;t=this.buf[this.pos++],e|=(t&15)<<28;for(let n=5;(t&128)!==0&&n<10;n++)t=this.buf[this.pos++];if((t&128)!=0)throw new Error("invalid varint");return this.assertBounds(),e>>>0}var _=Os();function Os(){let t=new DataView(new ArrayBuffer(8));if(typeof BigInt=="function"&&typeof t.getBigInt64=="function"&&typeof t.getBigUint64=="function"&&typeof t.setBigInt64=="function"&&typeof t.setBigUint64=="function"&&(!!globalThis.Deno||typeof process!="object"||typeof process.env!="object"||process.env.BUF_BIGINT_DISABLE!=="1")){let n=BigInt("-9223372036854775808"),o=BigInt("9223372036854775807"),r=BigInt("0"),i=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(a){let s=typeof a=="bigint"?a:BigInt(a);if(s>o||s<n)throw new Error(`invalid int64: ${a}`);return s},uParse(a){let s=typeof a=="bigint"?a:BigInt(a);if(s>i||s<r)throw new Error(`invalid uint64: ${a}`);return s},enc(a){return t.setBigInt64(0,this.parse(a),!0),{lo:t.getInt32(0,!0),hi:t.getInt32(4,!0)}},uEnc(a){return t.setBigInt64(0,this.uParse(a),!0),{lo:t.getInt32(0,!0),hi:t.getInt32(4,!0)}},dec(a,s){return t.setInt32(0,a,!0),t.setInt32(4,s,!0),t.getBigInt64(0,!0)},uDec(a,s){return t.setInt32(0,a,!0),t.setInt32(4,s,!0),t.getBigUint64(0,!0)}}}return{zero:"0",supported:!1,parse(n){return typeof n!="string"&&(n=n.toString()),ci(n),n},uParse(n){return typeof n!="string"&&(n=n.toString()),di(n),n},enc(n){return typeof n!="string"&&(n=n.toString()),ci(n),Go(n)},uEnc(n){return typeof n!="string"&&(n=n.toString()),di(n),Go(n)},dec(n,o){return ai(n,o)},uDec(n,o){return vo(n,o)}}}function ci(t){if(!/^-?[0-9]+$/.test(t))throw new Error("invalid int64: "+t)}function di(t){if(!/^[0-9]+$/.test(t))throw new Error("invalid uint64: "+t)}function ge(t,e){switch(t){case u.STRING:return"";case u.BOOL:return!1;case u.DOUBLE:case u.FLOAT:return 0;case u.INT64:case u.UINT64:case u.SFIXED64:case u.FIXED64:case u.SINT64:return e?"0":_.zero;case u.BYTES:return new Uint8Array(0);default:return 0}}function ui(t,e){switch(t){case u.BOOL:return e===!1;case u.STRING:return e==="";case u.BYTES:return e instanceof Uint8Array&&!e.byteLength;default:return e==0}}var mi=2,fe=Symbol.for("reflect unsafe local");function dn(t,e){let n=t[e.localName].case;return n===void 0?n:e.fields.find(o=>o.localName===n)}function xo(t,e){let n=e.localName;if(e.oneof)return t[e.oneof.localName].case===n;if(e.presence!=mi)return t[n]!==void 0&&Object.prototype.hasOwnProperty.call(t,n);switch(e.fieldKind){case"list":return t[n].length>0;case"map":return Object.keys(t[n]).length>0;case"scalar":return!ui(e.scalar,t[n]);case"enum":return t[n]!==e.enum.values[0].number}throw new Error("message field with implicit presence")}function Ue(t,e){return Object.prototype.hasOwnProperty.call(t,e)&&t[e]!==void 0}function un(t,e){if(e.oneof){let n=t[e.oneof.localName];return n.case===e.localName?n.value:void 0}return t[e.localName]}function mn(t,e,n){e.oneof?t[e.oneof.localName]={case:e.localName,value:n}:t[e.localName]=n}function Co(t,e){let n=e.localName;if(e.oneof){let o=e.oneof.localName;t[o].case===n&&(t[o]={case:void 0})}else if(e.presence!=mi)delete t[n];else switch(e.fieldKind){case"map":t[n]={};break;case"list":t[n]=[];break;case"enum":t[n]=e.enum.values[0].number;break;case"scalar":t[n]=ge(e.scalar,e.longAsString);break}}function Ae(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function Et(t,e){var n,o,r,i;if(Ae(t)&&fe in t&&"add"in t&&"field"in t&&typeof t.field=="function"){if(e!==void 0){let a=e,s=t.field();return a.listKind==s.listKind&&a.scalar===s.scalar&&((n=a.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((r=a.enum)===null||r===void 0?void 0:r.typeName)===((i=s.enum)===null||i===void 0?void 0:i.typeName)}return!0}return!1}function Bt(t,e){var n,o,r,i;if(Ae(t)&&fe in t&&"has"in t&&"field"in t&&typeof t.field=="function"){if(e!==void 0){let a=e,s=t.field();return a.mapKey===s.mapKey&&a.mapKind==s.mapKind&&a.scalar===s.scalar&&((n=a.message)===null||n===void 0?void 0:n.typeName)===((o=s.message)===null||o===void 0?void 0:o.typeName)&&((r=a.enum)===null||r===void 0?void 0:r.typeName)===((i=s.enum)===null||i===void 0?void 0:i.typeName)}return!0}return!1}function nt(t,e){return Ae(t)&&fe in t&&"desc"in t&&Ae(t.desc)&&t.desc.kind==="message"&&(e===void 0||t.desc.typeName==e.typeName)}function pi(t){return hi(t.$typeName)}function xe(t){let e=t.fields[0];return hi(t.typeName)&&e!==void 0&&e.fieldKind=="scalar"&&e.name=="value"&&e.number==1}function hi(t){return t.startsWith("google.protobuf.")&&["DoubleValue","FloatValue","Int64Value","UInt64Value","Int32Value","UInt32Value","BoolValue","StringValue","BytesValue"].includes(t.substring(16))}var js=999,$s=998,pn=2;function P(t,e){if(Zt(e,t))return e;let n=ol(t);return e!==void 0&&qs(t,n,e),n}function qs(t,e,n){for(let o of t.members){let r=n[o.localName];if(r==null)continue;let i;if(o.kind=="oneof"){let a=dn(n,o);if(!a)continue;i=a,r=un(n,a)}else i=o;switch(i.fieldKind){case"message":r=Zo(i,r);break;case"scalar":r=bi(i,r);break;case"list":r=tl(i,r);break;case"map":r=el(i,r);break}mn(e,i,r)}return e}function bi(t,e){return t.scalar==u.BYTES?Vo(e):e}function el(t,e){if(Ae(e)){if(t.scalar==u.BYTES)return gi(e,Vo);if(t.mapKind=="message")return gi(e,n=>Zo(t,n))}return e}function tl(t,e){if(Array.isArray(e)){if(t.scalar==u.BYTES)return e.map(Vo);if(t.listKind=="message")return e.map(n=>Zo(t,n))}return e}function Zo(t,e){if(t.fieldKind=="message"&&!t.oneof&&xe(t.message))return bi(t.message.fields[0],e);if(Ae(e)){if(t.message.typeName=="google.protobuf.Struct"&&t.parent.typeName!=="google.protobuf.Value")return e;if(!Zt(e,t.message))return P(t.message,e)}return e}function Vo(t){return Array.isArray(t)?new Uint8Array(t):t}function gi(t,e){let n={};for(let o of Object.entries(t))n[o[0]]=e(o[1]);return n}var nl=Symbol(),fi=new WeakMap;function ol(t){let e;if(rl(t)){let n=fi.get(t),o,r;if(n)({prototype:o,members:r}=n);else{o={},r=new Set;for(let i of t.members)i.kind!="oneof"&&(i.fieldKind!="scalar"&&i.fieldKind!="enum"||i.presence!=pn&&(r.add(i),o[i.localName]=So(i)));fi.set(t,{prototype:o,members:r})}e=Object.create(o),e.$typeName=t.typeName;for(let i of t.members)r.has(i)||i.kind=="field"&&(i.fieldKind=="message"||(i.fieldKind=="scalar"||i.fieldKind=="enum")&&i.presence!=pn)||(e[i.localName]=So(i))}else{e={$typeName:t.typeName};for(let n of t.members)(n.kind=="oneof"||n.presence==pn)&&(e[n.localName]=So(n))}return e}function rl(t){switch(t.file.edition){case js:return!1;case $s:return!0;default:return t.fields.some(e=>e.presence!=pn&&e.fieldKind!="message"&&!e.oneof)}}function So(t){if(t.kind=="oneof")return{case:void 0};if(t.fieldKind=="list")return[];if(t.fieldKind=="map")return{};if(t.fieldKind=="message")return nl;let e=t.getDefaultValue();return e!==void 0?t.fieldKind=="scalar"&&t.longAsString?e.toString():e:t.fieldKind=="scalar"?ge(t.scalar,t.longAsString):t.enum.values[0].number}var il=["FieldValueInvalidError","FieldListRangeError","ForeignFieldError"],ie=class extends Error{constructor(e,n,o="FieldValueInvalidError"){super(n),this.name=o,this.field=()=>e}};function yi(t){return t instanceof Error&&il.includes(t.name)&&"field"in t&&typeof t.field=="function"}var Eo=Symbol.for("@bufbuild/protobuf/text-encoding");function wt(){if(globalThis[Eo]==null){let t=new globalThis.TextEncoder,e=new globalThis.TextDecoder;globalThis[Eo]={encodeUtf8(n){return t.encode(n)},decodeUtf8(n){return e.decode(n)},checkUtf8(n){try{return encodeURIComponent(n),!0}catch{return!1}}}}return globalThis[Eo]}var $;(function(t){t[t.Varint=0]="Varint",t[t.Bit64=1]="Bit64",t[t.LengthDelimited=2]="LengthDelimited",t[t.StartGroup=3]="StartGroup",t[t.EndGroup=4]="EndGroup",t[t.Bit32=5]="Bit32"})($||($={}));var wo=34028234663852886e22,Xo=-34028234663852886e22,Wo=4294967295,Ro=2147483647,ko=-2147483648,De=class{constructor(e=wt().encodeUtf8){this.encodeUtf8=e,this.stack=[],this.chunks=[],this.buf=[]}finish(){this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]);let e=0;for(let r=0;r<this.chunks.length;r++)e+=this.chunks[r].length;let n=new Uint8Array(e),o=0;for(let r=0;r<this.chunks.length;r++)n.set(this.chunks[r],o),o+=this.chunks[r].length;return this.chunks=[],n}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=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(e.byteLength),this.raw(e)}tag(e,n){return this.uint32((e<<3|n)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(Ii(e);e>127;)this.buf.push(e&127|128),e=e>>>7;return this.buf.push(e),this}int32(e){return Bo(e),Vt(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let n=this.encodeUtf8(e);return this.uint32(n.byteLength),this.raw(n)}float(e){al(e);let n=new Uint8Array(4);return new DataView(n.buffer).setFloat32(0,e,!0),this.raw(n)}double(e){let n=new Uint8Array(8);return new DataView(n.buffer).setFloat64(0,e,!0),this.raw(n)}fixed32(e){Ii(e);let n=new Uint8Array(4);return new DataView(n.buffer).setUint32(0,e,!0),this.raw(n)}sfixed32(e){Bo(e);let n=new Uint8Array(4);return new DataView(n.buffer).setInt32(0,e,!0),this.raw(n)}sint32(e){return Bo(e),e=(e<<1^e>>31)>>>0,Vt(e,this.buf),this}sfixed64(e){let n=new Uint8Array(8),o=new DataView(n.buffer),r=_.enc(e);return o.setInt32(0,r.lo,!0),o.setInt32(4,r.hi,!0),this.raw(n)}fixed64(e){let n=new Uint8Array(8),o=new DataView(n.buffer),r=_.uEnc(e);return o.setInt32(0,r.lo,!0),o.setInt32(4,r.hi,!0),this.raw(n)}int64(e){let n=_.enc(e);return cn(n.lo,n.hi,this.buf),this}sint64(e){let n=_.enc(e),o=n.hi>>31,r=n.lo<<1^o,i=(n.hi<<1|n.lo>>>31)^o;return cn(r,i,this.buf),this}uint64(e){let n=_.uEnc(e);return cn(n.lo,n.hi,this.buf),this}},Je=class{constructor(e,n=wt().decodeUtf8){this.decodeUtf8=n,this.varint64=ii,this.uint32=li,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength)}tag(){let e=this.uint32(),n=e>>>3,o=e&7;if(n<=0||o<0||o>5)throw new Error("illegal tag: field no "+n+" wire type "+o);return[n,o]}skip(e,n){let o=this.pos;switch(e){case $.Varint:for(;this.buf[this.pos++]&128;);break;case $.Bit64:this.pos+=4;case $.Bit32:this.pos+=4;break;case $.LengthDelimited:let r=this.uint32();this.pos+=r;break;case $.StartGroup:for(;;){let[i,a]=this.tag();if(a===$.EndGroup){if(n!==void 0&&i!==n)throw new Error("invalid end group tag");break}this.skip(a,i)}break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(o,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)}int64(){return _.dec(...this.varint64())}uint64(){return _.uDec(...this.varint64())}sint64(){let[e,n]=this.varint64(),o=-(e&1);return e=(e>>>1|(n&1)<<31)^o,n=n>>>1^o,_.dec(e,n)}bool(){let[e,n]=this.varint64();return e!==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 _.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return _.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 e=this.uint32(),n=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(n,n+e)}string(){return this.decodeUtf8(this.bytes())}};function Bo(t){if(typeof t=="string")t=Number(t);else if(typeof t!="number")throw new Error("invalid int32: "+typeof t);if(!Number.isInteger(t)||t>Ro||t<ko)throw new Error("invalid int32: "+t)}function Ii(t){if(typeof t=="string")t=Number(t);else if(typeof t!="number")throw new Error("invalid uint32: "+typeof t);if(!Number.isInteger(t)||t>Wo||t<0)throw new Error("invalid uint32: "+t)}function al(t){if(typeof t=="string"){let e=t;if(t=Number(t),Number.isNaN(t)&&e!=="NaN")throw new Error("invalid float32: "+e)}else if(typeof t!="number")throw new Error("invalid float32: "+typeof t);if(Number.isFinite(t)&&(t>wo||t<Xo))throw new Error("invalid float32: "+t)}function Ee(t,e){let n=t.fieldKind=="list"?Et(e,t):t.fieldKind=="map"?Bt(e,t):Mo(t,e);if(n===!0)return;let o;switch(t.fieldKind){case"list":o=`expected ${xi(t)}, got ${ne(e)}`;break;case"map":o=`expected ${Ci(t)}, got ${ne(e)}`;break;default:o=hn(t,e,n)}return new ie(t,o)}function Jo(t,e,n){let o=Mo(t,n);if(o!==!0)return new ie(t,`list item #${e+1}: ${hn(t,n,o)}`)}function Gi(t,e,n){let o=vi(e,t.mapKey);if(o!==!0)return new ie(t,`invalid map key: ${hn({scalar:t.mapKey},e,o)}`);let r=Mo(t,n);if(r!==!0)return new ie(t,`map entry ${ne(e)}: ${hn(t,n,r)}`)}function Mo(t,e){return t.scalar!==void 0?vi(e,t.scalar):t.enum!==void 0?t.enum.open?Number.isInteger(e):t.enum.values.some(n=>n.number===e):nt(e,t.message)}function vi(t,e){switch(e){case u.DOUBLE:return typeof t=="number";case u.FLOAT:return typeof t!="number"?!1:Number.isNaN(t)||!Number.isFinite(t)?!0:t>wo||t<Xo?`${t.toFixed()} out of range`:!0;case u.INT32:case u.SFIXED32:case u.SINT32:return typeof t!="number"||!Number.isInteger(t)?!1:t>Ro||t<ko?`${t.toFixed()} out of range`:!0;case u.FIXED32:case u.UINT32:return typeof t!="number"||!Number.isInteger(t)?!1:t>Wo||t<0?`${t.toFixed()} out of range`:!0;case u.BOOL:return typeof t=="boolean";case u.STRING:return typeof t!="string"?!1:wt().checkUtf8(t)||"invalid UTF8";case u.BYTES:return t instanceof Uint8Array;case u.INT64:case u.SFIXED64:case u.SINT64:if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return _.parse(t),!0}catch{return`${t} out of range`}return!1;case u.FIXED64:case u.UINT64:if(typeof t=="bigint"||typeof t=="number"||typeof t=="string"&&t.length>0)try{return _.uParse(t),!0}catch{return`${t} out of range`}return!1}}function hn(t,e,n){return n=typeof n=="string"?`: ${n}`:`, got ${ne(e)}`,t.scalar!==void 0?`expected ${sl(t.scalar)}`+n:t.enum!==void 0?`expected ${t.enum.toString()}`+n:`expected ${Ai(t.message)}`+n}function ne(t){switch(typeof t){case"object":return t===null?"null":t instanceof Uint8Array?`Uint8Array(${t.length})`:Array.isArray(t)?`Array(${t.length})`:Et(t)?xi(t.field()):Bt(t)?Ci(t.field()):nt(t)?Ai(t.desc):Zt(t)?`message ${t.$typeName}`:"object";case"string":return t.length>30?"string":`"${t.split('"').join('\\"')}"`;case"boolean":return String(t);case"number":return String(t);case"bigint":return String(t)+"n";default:return typeof t}}function Ai(t){return`ReflectMessage (${t.typeName})`}function xi(t){switch(t.listKind){case"message":return`ReflectList (${t.message.toString()})`;case"enum":return`ReflectList (${t.enum.toString()})`;case"scalar":return`ReflectList (${u[t.scalar]})`}}function Ci(t){switch(t.mapKind){case"message":return`ReflectMap (${u[t.mapKey]}, ${t.message.toString()})`;case"enum":return`ReflectMap (${u[t.mapKey]}, ${t.enum.toString()})`;case"scalar":return`ReflectMap (${u[t.mapKey]}, ${u[t.scalar]})`}}function sl(t){switch(t){case u.STRING:return"string";case u.BOOL:return"boolean";case u.INT64:case u.SINT64:case u.SFIXED64:return"bigint (int64)";case u.UINT64:case u.FIXED64:return"bigint (uint64)";case u.BYTES:return"Uint8Array";case u.DOUBLE:return"number (float64)";case u.FLOAT:return"number (float32)";case u.FIXED32:case u.UINT32:return"number (uint32)";case u.INT32:case u.SFIXED32:case u.SINT32:return"number (int32)"}}function re(t,e,n=!0){return new fn(t,e,n)}var Si=new WeakMap,fn=class{get sortedFields(){let e=Si.get(this.desc);if(e)return e;let n=this.desc.fields.concat().sort((o,r)=>o.number-r.number);return Si.set(this.desc,n),n}constructor(e,n,o=!0){this.lists=new Map,this.maps=new Map,this.check=o,this.desc=e,this.message=this[fe]=n??P(e),this.fields=e.fields,this.oneofs=e.oneofs,this.members=e.members}findNumber(e){return this._fieldsByNumber||(this._fieldsByNumber=new Map(this.desc.fields.map(n=>[n.number,n]))),this._fieldsByNumber.get(e)}oneofCase(e){return Xt(this.message,e),dn(this.message,e)}isSet(e){return Xt(this.message,e),xo(this.message,e)}clear(e){Xt(this.message,e),Co(this.message,e)}get(e){Xt(this.message,e);let n=un(this.message,e);switch(e.fieldKind){case"list":let o=this.lists.get(e);return(!o||o[fe]!==n)&&this.lists.set(e,o=new zo(e,n,this.check)),o;case"map":let r=this.maps.get(e);return(!r||r[fe]!==n)&&this.maps.set(e,r=new No(e,n,this.check)),r;case"message":return Ho(e,n,this.check);case"scalar":return n===void 0?ge(e.scalar,!1):To(e,n);case"enum":return n??e.enum.values[0].number}}set(e,n){if(Xt(this.message,e),this.check){let r=Ee(e,n);if(r)throw r}let o;e.fieldKind=="message"?o=Lo(e,n):Bt(n)||Et(n)?o=n[fe]:o=Uo(e,n),mn(this.message,e,o)}getUnknown(){return this.message.$unknown}setUnknown(e){this.message.$unknown=e}};function Xt(t,e){if(e.parent.typeName!==t.$typeName)throw new ie(e,`cannot use ${e.toString()} with message ${t.$typeName}`,"ForeignFieldError")}var zo=class{field(){return this._field}get size(){return this._arr.length}constructor(e,n,o){this._field=e,this._arr=this[fe]=n,this.check=o}get(e){let n=this._arr[e];return n===void 0?void 0:Fo(this._field,n,this.check)}set(e,n){if(e<0||e>=this._arr.length)throw new ie(this._field,`list item #${e+1}: out of range`);if(this.check){let o=Jo(this._field,e,n);if(o)throw o}this._arr[e]=Zi(this._field,n)}add(e){if(this.check){let n=Jo(this._field,this._arr.length,e);if(n)throw n}this._arr.push(Zi(this._field,e))}clear(){this._arr.splice(0,this._arr.length)}[Symbol.iterator](){return this.values()}keys(){return this._arr.keys()}*values(){for(let e of this._arr)yield Fo(this._field,e,this.check)}*entries(){for(let e=0;e<this._arr.length;e++)yield[e,Fo(this._field,this._arr[e],this.check)]}};var No=class{constructor(e,n,o=!0){this.obj=this[fe]=n??{},this.check=o,this._field=e}field(){return this._field}set(e,n){if(this.check){let o=Gi(this._field,e,n);if(o)throw o}return this.obj[gn(e)]=ll(this._field,n),this}delete(e){let n=gn(e),o=Object.prototype.hasOwnProperty.call(this.obj,n);return o&&delete this.obj[n],o}clear(){for(let e of Object.keys(this.obj))delete this.obj[e]}get(e){let n=this.obj[gn(e)];return n!==void 0&&(n=Yo(this._field,n,this.check)),n}has(e){return Object.prototype.hasOwnProperty.call(this.obj,gn(e))}*keys(){for(let e of Object.keys(this.obj))yield Vi(e,this._field.mapKey)}*entries(){for(let e of Object.entries(this.obj))yield[Vi(e[0],this._field.mapKey),Yo(this._field,e[1],this.check)]}[Symbol.iterator](){return this.entries()}get size(){return Object.keys(this.obj).length}*values(){for(let e of Object.values(this.obj))yield Yo(this._field,e,this.check)}forEach(e,n){for(let o of this.entries())e.call(n,o[1],o[0],this)}};function Lo(t,e){return nt(e)?pi(e.message)&&!t.oneof&&t.fieldKind=="message"?e.message.value:e.desc.typeName=="google.protobuf.Struct"&&t.parent.typeName!="google.protobuf.Value"?Bi(e.message):e.message:e}function Ho(t,e,n){return e!==void 0&&(xe(t.message)&&!t.oneof&&t.fieldKind=="message"?e={$typeName:t.message.typeName,value:To(t.message.fields[0],e)}:t.message.typeName=="google.protobuf.Struct"&&t.parent.typeName!="google.protobuf.Value"&&Ae(e)&&(e=Ei(e))),new fn(t.message,e,n)}function Zi(t,e){return t.listKind=="message"?Lo(t,e):Uo(t,e)}function Fo(t,e,n){return t.listKind=="message"?Ho(t,e,n):To(t,e)}function ll(t,e){return t.mapKind=="message"?Lo(t,e):Uo(t,e)}function Yo(t,e,n){return t.mapKind=="message"?Ho(t,e,n):e}function gn(t){return typeof t=="string"||typeof t=="number"?t:String(t)}function Vi(t,e){switch(e){case u.STRING:return t;case u.INT32:case u.FIXED32:case u.UINT32:case u.SFIXED32:case u.SINT32:{let n=Number.parseInt(t);if(Number.isFinite(n))return n;break}case u.BOOL:switch(t){case"true":return!0;case"false":return!1}break;case u.UINT64:case u.FIXED64:try{return _.uParse(t)}catch{}break;default:try{return _.parse(t)}catch{}break}return t}function To(t,e){switch(t.scalar){case u.INT64:case u.SFIXED64:case u.SINT64:"longAsString"in t&&t.longAsString&&typeof e=="string"&&(e=_.parse(e));break;case u.FIXED64:case u.UINT64:"longAsString"in t&&t.longAsString&&typeof e=="string"&&(e=_.uParse(e));break}return e}function Uo(t,e){switch(t.scalar){case u.INT64:case u.SFIXED64:case u.SINT64:"longAsString"in t&&t.longAsString?e=String(e):(typeof e=="string"||typeof e=="number")&&(e=_.parse(e));break;case u.FIXED64:case u.UINT64:"longAsString"in t&&t.longAsString?e=String(e):(typeof e=="string"||typeof e=="number")&&(e=_.uParse(e));break}return e}function Ei(t){let e={$typeName:"google.protobuf.Struct",fields:{}};if(Ae(t))for(let[n,o]of Object.entries(t))e.fields[n]=Xi(o);return e}function Bi(t){let e={};for(let[n,o]of Object.entries(t.fields))e[n]=wi(o);return e}function wi(t){switch(t.kind.case){case"structValue":return Bi(t.kind.value);case"listValue":return t.kind.value.values.map(wi);case"nullValue":case void 0:return null;default:return t.kind.value}}function Xi(t){let e={$typeName:"google.protobuf.Value",kind:{case:void 0}};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:0};else if(Array.isArray(t)){let n={$typeName:"google.protobuf.ListValue",values:[]};if(Array.isArray(t))for(let o of t)n.values.push(Xi(o));e.kind={case:"listValue",value:n}}else e.kind={case:"structValue",value:Ei(t)};break}return e}function Me(t){let e=cl(),n=t.length*3/4;t[t.length-2]=="="?n-=2:t[t.length-1]=="="&&(n-=1);let o=new Uint8Array(n),r=0,i=0,a,s=0;for(let l=0;l<t.length;l++){if(a=e[t.charCodeAt(l)],a===void 0)switch(t[l]){case"=":i=0;case`
5
+ `:case"\r":case" ":case" ":continue;default:throw Error("invalid base64 string")}switch(i){case 0:s=a,i=1;break;case 1:o[r++]=s<<2|(a&48)>>4,s=a,i=2;break;case 2:o[r++]=(s&15)<<4|(a&60)>>2,s=a,i=3;break;case 3:o[r++]=(s&3)<<6|a,i=0;break}}if(i==1)throw Error("invalid base64 string");return o.subarray(0,r)}function _e(t,e="std"){let n=Ri(e),o=e=="std",r="",i=0,a,s=0;for(let l=0;l<t.length;l++)switch(a=t[l],i){case 0:r+=n[a>>2],s=(a&3)<<4,i=1;break;case 1:r+=n[s|a>>4],s=(a&15)<<2,i=2;break;case 2:r+=n[s|a>>6],r+=n[a&63],i=0;break}return i&&(r+=n[s],o&&(r+="=",i==1&&(r+="="))),r}var bn,Wi,ot;function Ri(t){return bn||(bn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),Wi=bn.slice(0,-2).concat("-","_")),t=="url"?Wi:bn}function cl(){if(!ot){ot=[];let t=Ri("std");for(let e=0;e<t.length;e++)ot[t[e].charCodeAt(0)]=e;ot[45]=t.indexOf("+"),ot[95]=t.indexOf("/")}return ot}function Ce(t){let e=!1,n=[];for(let o=0;o<t.length;o++){let r=t.charAt(o);switch(r){case"_":e=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":n.push(r),e=!1;break;default:e&&(e=!1,r=r.toUpperCase()),n.push(r);break}}return n.join("")}function yn(t){return t.replace(/[A-Z]/g,e=>"_"+e.toLowerCase())}var dl=new Set(["constructor","toString","toJSON","valueOf"]);function rt(t){return dl.has(t)?t+"$":t}function Wt(t){for(let e of t.field)Ue(e,"jsonName")||(e.jsonName=Ce(e.name));t.nestedType.forEach(Wt)}function ki(t,e){let n=t.values.find(o=>o.name===e);if(!n)throw new Error(`cannot parse ${t} default value: ${e}`);return n.number}function Ji(t,e){switch(t){case u.STRING:return e;case u.BYTES:{let n=ul(e);if(n===!1)throw new Error(`cannot parse ${u[t]} default value: ${e}`);return n}case u.INT64:case u.SFIXED64:case u.SINT64:return _.parse(e);case u.UINT64:case u.FIXED64:return _.uParse(e);case u.DOUBLE:case u.FLOAT:switch(e){case"inf":return Number.POSITIVE_INFINITY;case"-inf":return Number.NEGATIVE_INFINITY;case"nan":return Number.NaN;default:return parseFloat(e)}case u.BOOL:return e==="true";case u.INT32:case u.UINT32:case u.SINT32:case u.FIXED32:case u.SFIXED32:return parseInt(e,10)}}function ul(t){let e=[],n={tail:t,c:"",next(){return this.tail.length==0?!1:(this.c=this.tail[0],this.tail=this.tail.substring(1),!0)},take(o){if(this.tail.length>=o){let r=this.tail.substring(0,o);return this.tail=this.tail.substring(o),r}return!1}};for(;n.next();)switch(n.c){case"\\":if(n.next())switch(n.c){case"\\":e.push(n.c.charCodeAt(0));break;case"b":e.push(8);break;case"f":e.push(12);break;case"n":e.push(10);break;case"r":e.push(13);break;case"t":e.push(9);break;case"v":e.push(11);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let o=n.c,r=n.take(2);if(r===!1)return!1;let i=parseInt(o+r,8);if(Number.isNaN(i))return!1;e.push(i);break}case"x":{let o=n.c,r=n.take(2);if(r===!1)return!1;let i=parseInt(o+r,16);if(Number.isNaN(i))return!1;e.push(i);break}case"u":{let o=n.c,r=n.take(4);if(r===!1)return!1;let i=parseInt(o+r,16);if(Number.isNaN(i))return!1;let a=new Uint8Array(4);new DataView(a.buffer).setInt32(0,i,!0),e.push(a[0],a[1],a[2],a[3]);break}case"U":{let o=n.c,r=n.take(8);if(r===!1)return!1;let i=_.uEnc(o+r),a=new Uint8Array(8),s=new DataView(a.buffer);s.setInt32(0,i.lo,!0),s.setInt32(4,i.hi,!0),e.push(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);break}}break;default:e.push(n.c.charCodeAt(0))}return new Uint8Array(e)}function*In(t){switch(t.kind){case"file":for(let e of t.messages)yield e,yield*In(e);yield*t.enums,yield*t.services,yield*t.extensions;break;case"message":for(let e of t.nestedMessages)yield e,yield*In(e);yield*t.nestedEnums,yield*t.nestedExtensions;break}}function Gn(...t){let e=ml();if(!t.length)return e;if("$typeName"in t[0]&&t[0].$typeName=="google.protobuf.FileDescriptorSet"){for(let n of t[0].file)zi(n,e);return e}if("$typeName"in t[0]){let i=function(a){let s=[];for(let l of a.dependency){if(e.getFile(l)!=null||r.has(l))continue;let c=o(l);if(!c)throw new Error(`Unable to resolve ${l}, imported by ${a.name}`);"kind"in c?e.addFile(c,!1,!0):(r.add(c.name),s.push(c))}return s.concat(...s.map(i))},n=t[0],o=t[1],r=new Set;for(let a of[n,...i(n)].reverse())zi(a,e)}else for(let n of t)for(let o of n.files)e.addFile(o);return e}function ml(){let t=new Map,e=new Map,n=new Map;return{kind:"registry",types:t,extendees:e,[Symbol.iterator](){return t.values()},get files(){return n.values()},addFile(o,r,i){if(n.set(o.proto.name,o),!r)for(let a of In(o))this.add(a);if(i)for(let a of o.dependencies)this.addFile(a,r,i)},add(o){if(o.kind=="extension"){let r=e.get(o.extendee.typeName);r||e.set(o.extendee.typeName,r=new Map),r.set(o.number,o)}t.set(o.typeName,o)},get(o){return t.get(o)},getFile(o){return n.get(o)},getMessage(o){let r=t.get(o);return r?.kind=="message"?r:void 0},getEnum(o){let r=t.get(o);return r?.kind=="enum"?r:void 0},getExtension(o){let r=t.get(o);return r?.kind=="extension"?r:void 0},getExtensionFor(o,r){var i;return(i=e.get(o.typeName))===null||i===void 0?void 0:i.get(r)},getService(o){let r=t.get(o);return r?.kind=="service"?r:void 0}}}var pl=998,hl=999,gl=9,kt=10,Rt=11,fl=12,Mi=14,Qo=3,bl=2,Fi=1,yl=0,Do=1,Yi=2,Il=3,Gl=1,vl=2,Al=1;var Li={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 zi(t,e){var n,o;let r={kind:"file",proto:t,deprecated:(o=(n=t.options)===null||n===void 0?void 0:n.deprecated)!==null&&o!==void 0?o:!1,edition:Zl(t),name:t.name.replace(/\.proto$/,""),dependencies:Vl(t,e),enums:[],messages:[],extensions:[],services:[],toString(){return`file ${t.name}`}},i=new Map,a={get(s){return i.get(s)},add(s){var l;be(((l=s.proto.options)===null||l===void 0?void 0:l.mapEntry)===!0),i.set(s.typeName,s)}};for(let s of t.enumType)Hi(s,r,void 0,e);for(let s of t.messageType)Ti(s,r,void 0,e,a);for(let s of t.service)xl(s,r,e);_o(r,e);for(let s of i.values())Ko(s,e,a);for(let s of r.messages)Ko(s,e,a),_o(s,e);e.addFile(r,!0)}function _o(t,e){switch(t.kind){case"file":for(let n of t.proto.extension){let o=Po(n,t,e);t.extensions.push(o),e.add(o)}break;case"message":for(let n of t.proto.extension){let o=Po(n,t,e);t.nestedExtensions.push(o),e.add(o)}for(let n of t.nestedMessages)_o(n,e);break}}function Ko(t,e,n){let o=t.proto.oneofDecl.map(i=>Sl(i,t)),r=new Set;for(let i of t.proto.field){let a=wl(i,o),s=Po(i,t,e,a,n);t.fields.push(s),t.field[s.localName]=s,a===void 0?t.members.push(s):(a.fields.push(s),r.has(a)||(r.add(a),t.members.push(a)))}for(let i of o.filter(a=>r.has(a)))t.oneofs.push(i);for(let i of t.nestedMessages)Ko(i,e,n)}function Hi(t,e,n,o){var r,i,a,s,l;let c=El(t.name,t.value),p={kind:"enum",proto:t,deprecated:(i=(r=t.options)===null||r===void 0?void 0:r.deprecated)!==null&&i!==void 0?i:!1,file:e,parent:n,open:!0,name:t.name,typeName:vn(t,n,e),value:{},values:[],sharedPrefix:c,toString(){return`enum ${this.typeName}`}};p.open=kl(p),o.add(p);for(let g of t.value){let A=g.name;p.values.push(p.value[g.number]={kind:"enum_value",proto:g,deprecated:(s=(a=g.options)===null||a===void 0?void 0:a.deprecated)!==null&&s!==void 0?s:!1,parent:p,name:A,localName:rt(c==null?A:A.substring(c.length)),number:g.number,toString(){return`enum value ${p.typeName}.${A}`}})}((l=n?.nestedEnums)!==null&&l!==void 0?l:e.enums).push(p)}function Ti(t,e,n,o,r){var i,a,s,l;let c={kind:"message",proto:t,deprecated:(a=(i=t.options)===null||i===void 0?void 0:i.deprecated)!==null&&a!==void 0?a:!1,file:e,parent:n,name:t.name,typeName:vn(t,n,e),fields:[],field:{},oneofs:[],members:[],nestedEnums:[],nestedMessages:[],nestedExtensions:[],toString(){return`message ${this.typeName}`}};((s=t.options)===null||s===void 0?void 0:s.mapEntry)===!0?r.add(c):(((l=n?.nestedMessages)!==null&&l!==void 0?l:e.messages).push(c),o.add(c));for(let p of t.enumType)Hi(p,e,c,o);for(let p of t.nestedType)Ti(p,e,c,o,r)}function xl(t,e,n){var o,r;let i={kind:"service",proto:t,deprecated:(r=(o=t.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,file:e,name:t.name,typeName:vn(t,void 0,e),methods:[],method:{},toString(){return`service ${this.typeName}`}};e.services.push(i),n.add(i);for(let a of t.method){let s=Cl(a,i,n);i.methods.push(s),i.method[s.localName]=s}}function Cl(t,e,n){var o,r,i,a;let s;t.clientStreaming&&t.serverStreaming?s="bidi_streaming":t.clientStreaming?s="client_streaming":t.serverStreaming?s="server_streaming":s="unary";let l=n.getMessage(Be(t.inputType)),c=n.getMessage(Be(t.outputType));be(l,`invalid MethodDescriptorProto: input_type ${t.inputType} not found`),be(c,`invalid MethodDescriptorProto: output_type ${t.inputType} not found`);let p=t.name;return{kind:"rpc",proto:t,deprecated:(r=(o=t.options)===null||o===void 0?void 0:o.deprecated)!==null&&r!==void 0?r:!1,parent:e,name:p,localName:rt(p.length?rt(p[0].toLowerCase()+p.substring(1)):p),methodKind:s,input:l,output:c,idempotency:(a=(i=t.options)===null||i===void 0?void 0:i.idempotencyLevel)!==null&&a!==void 0?a:yl,toString(){return`rpc ${e.typeName}.${p}`}}}function Sl(t,e){return{kind:"oneof",proto:t,deprecated:!1,parent:e,fields:[],name:t.name,localName:rt(Ce(t.name)),toString(){return`oneof ${e.typeName}.${this.name}`}}}function Po(t,e,n,o,r){var i,a,s;let l=r===void 0,c={kind:"field",proto:t,deprecated:(a=(i=t.options)===null||i===void 0?void 0:i.deprecated)!==null&&a!==void 0?a:!1,name:t.name,number:t.number,scalar:void 0,message:void 0,enum:void 0,presence:Xl(t,o,l,e),listKind:void 0,mapKind:void 0,mapKey:void 0,delimitedEncoding:void 0,packed:void 0,longAsString:!1,getDefaultValue:void 0};if(l){let h=e.kind=="file"?e:e.file,b=e.kind=="file"?void 0:e,W=vn(t,b,h);c.kind="extension",c.file=h,c.parent=b,c.oneof=void 0,c.typeName=W,c.jsonName=`[${W}]`,c.toString=()=>`extension ${W}`;let Z=n.getMessage(Be(t.extendee));be(Z,`invalid FieldDescriptorProto: extendee ${t.extendee} not found`),c.extendee=Z}else{let h=e;be(h.kind=="message"),c.parent=h,c.oneof=o,c.localName=o?Ce(t.name):rt(Ce(t.name)),c.jsonName=t.jsonName,c.toString=()=>`field ${h.typeName}.${t.name}`}let p=t.label,g=t.type,A=(s=t.options)===null||s===void 0?void 0:s.jstype;if(p===Qo){let h=g==Rt?r?.get(Be(t.typeName)):void 0;if(h){c.fieldKind="map";let{key:b,value:W}=Rl(h);return c.mapKey=b.scalar,c.mapKind=W.fieldKind,c.message=W.message,c.delimitedEncoding=!1,c.enum=W.enum,c.scalar=W.scalar,c}switch(c.fieldKind="list",g){case Rt:case kt:c.listKind="message",c.message=n.getMessage(Be(t.typeName)),be(c.message),c.delimitedEncoding=Ni(t,e);break;case Mi:c.listKind="enum",c.enum=n.getEnum(Be(t.typeName)),be(c.enum);break;default:c.listKind="scalar",c.scalar=g,c.longAsString=A==Fi;break}return c.packed=Wl(t,e),c}switch(g){case Rt:case kt:c.fieldKind="message",c.message=n.getMessage(Be(t.typeName)),be(c.message,`invalid FieldDescriptorProto: type_name ${t.typeName} not found`),c.delimitedEncoding=Ni(t,e),c.getDefaultValue=()=>{};break;case Mi:{let h=n.getEnum(Be(t.typeName));be(h!==void 0,`invalid FieldDescriptorProto: type_name ${t.typeName} not found`),c.fieldKind="enum",c.enum=n.getEnum(Be(t.typeName)),c.getDefaultValue=()=>Ue(t,"defaultValue")?ki(h,t.defaultValue):void 0;break}default:{c.fieldKind="scalar",c.scalar=g,c.longAsString=A==Fi,c.getDefaultValue=()=>Ue(t,"defaultValue")?Ji(g,t.defaultValue):void 0;break}}return c}function Zl(t){switch(t.syntax){case"":case"proto2":return pl;case"proto3":return hl;case"editions":if(t.edition in Li)return t.edition;throw new Error(`${t.name}: unsupported edition`);default:throw new Error(`${t.name}: unsupported syntax "${t.syntax}"`)}}function Vl(t,e){return t.dependency.map(n=>{let o=e.getFile(n);if(!o)throw new Error(`Cannot find ${n}, imported by ${t.name}`);return o})}function El(t,e){let n=Bl(t)+"_";for(let o of e){if(!o.name.toLowerCase().startsWith(n))return;let r=o.name.substring(n.length);if(r.length==0||/^\d/.test(r))return}return n}function Bl(t){return(t.substring(0,1)+t.substring(1).replace(/[A-Z]/g,e=>"_"+e)).toLowerCase()}function vn(t,e,n){let o;return e?o=`${e.typeName}.${t.name}`:n.proto.package.length>0?o=`${n.proto.package}.${t.name}`:o=`${t.name}`,o}function Be(t){return t.startsWith(".")?t.substring(1):t}function wl(t,e){if(!Ue(t,"oneofIndex")||t.proto3Optional)return;let n=e[t.oneofIndex];return be(n,`invalid FieldDescriptorProto: oneof #${t.oneofIndex} for field #${t.number} not found`),n}function Xl(t,e,n,o){if(t.label==bl)return Il;if(t.label==Qo)return Yi;if(e||t.proto3Optional||n)return Do;let r=it("fieldPresence",{proto:t,parent:o});return r==Yi&&(t.type==Rt||t.type==kt)?Do:r}function Wl(t,e){if(t.label!=Qo)return!1;switch(t.type){case gl:case fl:case kt:case Rt:return!1}let n=t.options;return n&&Ue(n,"packed")?n.packed:Gl==it("repeatedFieldEncoding",{proto:t,parent:e})}function Rl(t){let e=t.fields.find(o=>o.number===1),n=t.fields.find(o=>o.number===2);return be(e&&e.fieldKind=="scalar"&&e.scalar!=u.BYTES&&e.scalar!=u.FLOAT&&e.scalar!=u.DOUBLE&&n&&n.fieldKind!="list"&&n.fieldKind!="map"),{key:e,value:n}}function kl(t){var e;return Al==it("enumType",{proto:t.proto,parent:(e=t.parent)!==null&&e!==void 0?e:t.file})}function Ni(t,e){return t.type==kt?!0:vl==it("messageEncoding",{proto:t,parent:e})}function it(t,e){var n,o;let r=(n=e.proto.options)===null||n===void 0?void 0:n.features;if(r){let i=r[t];if(i!=0)return i}if("kind"in e){if(e.kind=="message")return it(t,(o=e.parent)!==null&&o!==void 0?o:e.file);let i=Li[e.edition];if(!i)throw new Error(`feature default for edition ${e.edition} not found`);return i[t]}return it(t,e.parent)}function be(t,e){if(!t)throw new Error(e)}function Ui(t){let e=Jl(t);return e.messageType.forEach(Wt),Gn(e,()=>{}).getFile(e.name)}function Jl(t){return Object.assign(Object.create({syntax:"",edition:0}),Object.assign(Object.assign({$typeName:"google.protobuf.FileDescriptorProto",dependency:[],publicDependency:[],weakDependency:[],optionDependency:[],service:[],extension:[]},t),{messageType:t.messageType.map(Di),enumType:t.enumType.map(_i)}))}function Di(t){var e,n,o,r,i,a,s,l;return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.DescriptorProto",name:t.name,field:(n=(e=t.field)===null||e===void 0?void 0:e.map(Ml))!==null&&n!==void 0?n:[],extension:[],nestedType:(r=(o=t.nestedType)===null||o===void 0?void 0:o.map(Di))!==null&&r!==void 0?r:[],enumType:(a=(i=t.enumType)===null||i===void 0?void 0:i.map(_i))!==null&&a!==void 0?a:[],extensionRange:(l=(s=t.extensionRange)===null||s===void 0?void 0:s.map(p=>Object.assign({$typeName:"google.protobuf.DescriptorProto.ExtensionRange"},p)))!==null&&l!==void 0?l:[],oneofDecl:[],reservedRange:[],reservedName:[]})}function Ml(t){return Object.assign(Object.create({label:1,typeName:"",extendee:"",defaultValue:"",oneofIndex:0,jsonName:"",proto3Optional:!1}),Object.assign(Object.assign({$typeName:"google.protobuf.FieldDescriptorProto"},t),{options:t.options?Fl(t.options):void 0}))}function Fl(t){var e,n,o;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"},t),{targets:(e=t.targets)!==null&&e!==void 0?e:[],editionDefaults:(o=(n=t.editionDefaults)===null||n===void 0?void 0:n.map(i=>Object.assign({$typeName:"google.protobuf.FieldOptions.EditionDefault"},i)))!==null&&o!==void 0?o:[],uninterpretedOption:[]}))}function _i(t){return Object.assign(Object.create({visibility:0}),{$typeName:"google.protobuf.EnumDescriptorProto",name:t.name,reservedName:[],reservedRange:[],value:t.value.map(n=>Object.assign({$typeName:"google.protobuf.EnumValueDescriptorProto"},n))})}function d(t,e,...n){return n.reduce((o,r)=>o.nestedMessages[r],t.messages[e])}function M(t,e,...n){if(n.length==0)return t.enums[e];let o=n.pop();return n.reduce((r,i)=>r.nestedMessages[i],t.messages[e]).nestedEnums[o]}var S=Ui({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}]}]}),rm=d(S,0),jo=d(S,1),Yl=d(S,2),im=d(S,2,0),am=d(S,2,1),sm=d(S,3),lm=d(S,3,0),Ki;(function(t){t[t.DECLARATION=0]="DECLARATION",t[t.UNVERIFIED=1]="UNVERIFIED"})(Ki||(Ki={}));var cm=M(S,3,0),zl=d(S,4),Pi;(function(t){t[t.DOUBLE=1]="DOUBLE",t[t.FLOAT=2]="FLOAT",t[t.INT64=3]="INT64",t[t.UINT64=4]="UINT64",t[t.INT32=5]="INT32",t[t.FIXED64=6]="FIXED64",t[t.FIXED32=7]="FIXED32",t[t.BOOL=8]="BOOL",t[t.STRING=9]="STRING",t[t.GROUP=10]="GROUP",t[t.MESSAGE=11]="MESSAGE",t[t.BYTES=12]="BYTES",t[t.UINT32=13]="UINT32",t[t.ENUM=14]="ENUM",t[t.SFIXED32=15]="SFIXED32",t[t.SFIXED64=16]="SFIXED64",t[t.SINT32=17]="SINT32",t[t.SINT64=18]="SINT64"})(Pi||(Pi={}));var dm=M(S,4,0),Qi;(function(t){t[t.OPTIONAL=1]="OPTIONAL",t[t.REPEATED=3]="REPEATED",t[t.REQUIRED=2]="REQUIRED"})(Qi||(Qi={}));var um=M(S,4,1),mm=d(S,5),Nl=d(S,6),pm=d(S,6,0),hm=d(S,7),gm=d(S,8),fm=d(S,9),bm=d(S,10),Oi;(function(t){t[t.SPEED=1]="SPEED",t[t.CODE_SIZE=2]="CODE_SIZE",t[t.LITE_RUNTIME=3]="LITE_RUNTIME"})(Oi||(Oi={}));var ym=M(S,10,0),Im=d(S,11),Ll=d(S,12),Gm=d(S,12,0),vm=d(S,12,1),ji;(function(t){t[t.STRING=0]="STRING",t[t.CORD=1]="CORD",t[t.STRING_PIECE=2]="STRING_PIECE"})(ji||(ji={}));var Am=M(S,12,0),$i;(function(t){t[t.JS_NORMAL=0]="JS_NORMAL",t[t.JS_STRING=1]="JS_STRING",t[t.JS_NUMBER=2]="JS_NUMBER"})($i||($i={}));var xm=M(S,12,1),qi;(function(t){t[t.RETENTION_UNKNOWN=0]="RETENTION_UNKNOWN",t[t.RETENTION_RUNTIME=1]="RETENTION_RUNTIME",t[t.RETENTION_SOURCE=2]="RETENTION_SOURCE"})(qi||(qi={}));var Cm=M(S,12,2),ea;(function(t){t[t.TARGET_TYPE_UNKNOWN=0]="TARGET_TYPE_UNKNOWN",t[t.TARGET_TYPE_FILE=1]="TARGET_TYPE_FILE",t[t.TARGET_TYPE_EXTENSION_RANGE=2]="TARGET_TYPE_EXTENSION_RANGE",t[t.TARGET_TYPE_MESSAGE=3]="TARGET_TYPE_MESSAGE",t[t.TARGET_TYPE_FIELD=4]="TARGET_TYPE_FIELD",t[t.TARGET_TYPE_ONEOF=5]="TARGET_TYPE_ONEOF",t[t.TARGET_TYPE_ENUM=6]="TARGET_TYPE_ENUM",t[t.TARGET_TYPE_ENUM_ENTRY=7]="TARGET_TYPE_ENUM_ENTRY",t[t.TARGET_TYPE_SERVICE=8]="TARGET_TYPE_SERVICE",t[t.TARGET_TYPE_METHOD=9]="TARGET_TYPE_METHOD"})(ea||(ea={}));var Sm=M(S,12,3),Zm=d(S,13),Vm=d(S,14),Em=d(S,15),Bm=d(S,16),wm=d(S,17),at;(function(t){t[t.IDEMPOTENCY_UNKNOWN=0]="IDEMPOTENCY_UNKNOWN",t[t.NO_SIDE_EFFECTS=1]="NO_SIDE_EFFECTS",t[t.IDEMPOTENT=2]="IDEMPOTENT"})(at||(at={}));var Xm=M(S,17,0),Wm=d(S,18),Rm=d(S,18,0),km=d(S,19),Jm=d(S,19,0),ta;(function(t){t[t.DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0]="DEFAULT_SYMBOL_VISIBILITY_UNKNOWN",t[t.EXPORT_ALL=1]="EXPORT_ALL",t[t.EXPORT_TOP_LEVEL=2]="EXPORT_TOP_LEVEL",t[t.LOCAL_ALL=3]="LOCAL_ALL",t[t.STRICT=4]="STRICT"})(ta||(ta={}));var Mm=M(S,19,0,0),na;(function(t){t[t.FIELD_PRESENCE_UNKNOWN=0]="FIELD_PRESENCE_UNKNOWN",t[t.EXPLICIT=1]="EXPLICIT",t[t.IMPLICIT=2]="IMPLICIT",t[t.LEGACY_REQUIRED=3]="LEGACY_REQUIRED"})(na||(na={}));var Fm=M(S,19,0),oa;(function(t){t[t.ENUM_TYPE_UNKNOWN=0]="ENUM_TYPE_UNKNOWN",t[t.OPEN=1]="OPEN",t[t.CLOSED=2]="CLOSED"})(oa||(oa={}));var Ym=M(S,19,1),ra;(function(t){t[t.REPEATED_FIELD_ENCODING_UNKNOWN=0]="REPEATED_FIELD_ENCODING_UNKNOWN",t[t.PACKED=1]="PACKED",t[t.EXPANDED=2]="EXPANDED"})(ra||(ra={}));var zm=M(S,19,2),ia;(function(t){t[t.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",t[t.VERIFY=2]="VERIFY",t[t.NONE=3]="NONE"})(ia||(ia={}));var Nm=M(S,19,3),aa;(function(t){t[t.MESSAGE_ENCODING_UNKNOWN=0]="MESSAGE_ENCODING_UNKNOWN",t[t.LENGTH_PREFIXED=1]="LENGTH_PREFIXED",t[t.DELIMITED=2]="DELIMITED"})(aa||(aa={}));var Lm=M(S,19,4),sa;(function(t){t[t.JSON_FORMAT_UNKNOWN=0]="JSON_FORMAT_UNKNOWN",t[t.ALLOW=1]="ALLOW",t[t.LEGACY_BEST_EFFORT=2]="LEGACY_BEST_EFFORT"})(sa||(sa={}));var Hm=M(S,19,5),la;(function(t){t[t.ENFORCE_NAMING_STYLE_UNKNOWN=0]="ENFORCE_NAMING_STYLE_UNKNOWN",t[t.STYLE2024=1]="STYLE2024",t[t.STYLE_LEGACY=2]="STYLE_LEGACY"})(la||(la={}));var Tm=M(S,19,6),Um=d(S,20),Dm=d(S,20,0),_m=d(S,21),Km=d(S,21,0),Pm=d(S,22),Qm=d(S,22,0),ca;(function(t){t[t.NONE=0]="NONE",t[t.SET=1]="SET",t[t.ALIAS=2]="ALIAS"})(ca||(ca={}));var Om=M(S,22,0,0),Oo;(function(t){t[t.EDITION_UNKNOWN=0]="EDITION_UNKNOWN",t[t.EDITION_LEGACY=900]="EDITION_LEGACY",t[t.EDITION_PROTO2=998]="EDITION_PROTO2",t[t.EDITION_PROTO3=999]="EDITION_PROTO3",t[t.EDITION_2023=1e3]="EDITION_2023",t[t.EDITION_2024=1001]="EDITION_2024",t[t.EDITION_UNSTABLE=9999]="EDITION_UNSTABLE",t[t.EDITION_1_TEST_ONLY=1]="EDITION_1_TEST_ONLY",t[t.EDITION_2_TEST_ONLY=2]="EDITION_2_TEST_ONLY",t[t.EDITION_99997_TEST_ONLY=99997]="EDITION_99997_TEST_ONLY",t[t.EDITION_99998_TEST_ONLY=99998]="EDITION_99998_TEST_ONLY",t[t.EDITION_99999_TEST_ONLY=99999]="EDITION_99999_TEST_ONLY",t[t.EDITION_MAX=2147483647]="EDITION_MAX"})(Oo||(Oo={}));var jm=M(S,0),da;(function(t){t[t.VISIBILITY_UNSET=0]="VISIBILITY_UNSET",t[t.VISIBILITY_LOCAL=1]="VISIBILITY_LOCAL",t[t.VISIBILITY_EXPORT=2]="VISIBILITY_EXPORT"})(da||(da={}));var $m=M(S,1);var ua={readUnknownFields:!0};function Hl(t){return t?Object.assign(Object.assign({},ua),t):ua}function ye(t,e,n){let o=re(t,void 0,!1);return ma(o,new Je(e),Hl(n),!1,e.byteLength),o.message}function ma(t,e,n,o,r){var i;let a=o?e.len:e.pos+r,s,l,c=(i=t.getUnknown())!==null&&i!==void 0?i:[];for(;e.pos<a&&([s,l]=e.tag(),!(o&&l==$.EndGroup));){let p=t.findNumber(s);if(!p){let g=e.skip(l,s);n.readUnknownFields&&c.push({no:s,wireType:l,data:g});continue}$o(t,e,p,l,n)}if(o&&(l!=$.EndGroup||s!==r))throw new Error("invalid end group tag");c.length>0&&t.setUnknown(c)}function $o(t,e,n,o,r){var i;switch(n.fieldKind){case"scalar":t.set(n,st(e,n.scalar));break;case"enum":let a=st(e,u.INT32);if(n.enum.open)t.set(n,a);else if(n.enum.values.some(l=>l.number===a))t.set(n,a);else if(r.readUnknownFields){let l=[];Vt(a,l);let c=(i=t.getUnknown())!==null&&i!==void 0?i:[];c.push({no:n.number,wireType:o,data:new Uint8Array(l)}),t.setUnknown(c)}break;case"message":t.set(n,qo(e,r,n,t.get(n)));break;case"list":Ul(e,o,t.get(n),r);break;case"map":Tl(e,t.get(n),r);break}}function Tl(t,e,n){let o=e.field(),r,i,a=t.uint32(),s=t.pos+a;for(;t.pos<s;){let[l]=t.tag();switch(l){case 1:r=st(t,o.mapKey);break;case 2:switch(o.mapKind){case"scalar":i=st(t,o.scalar);break;case"enum":i=t.int32();break;case"message":i=qo(t,n,o);break}break}}if(r===void 0&&(r=ge(o.mapKey,!1)),i===void 0)switch(o.mapKind){case"scalar":i=ge(o.scalar,!1);break;case"enum":i=o.enum.values[0].number;break;case"message":i=re(o.message,void 0,!1);break}e.set(r,i)}function Ul(t,e,n,o){var r;let i=n.field();if(i.listKind==="message"){n.add(qo(t,o,i));return}let a=(r=i.scalar)!==null&&r!==void 0?r:u.INT32;if(!(e==$.LengthDelimited&&a!=u.STRING&&a!=u.BYTES)){n.add(st(t,a));return}let l=t.uint32()+t.pos;for(;t.pos<l;)n.add(st(t,a))}function qo(t,e,n,o){let r=n.delimitedEncoding,i=o??re(n.message,void 0,!1);return ma(i,t,e,r,r?n.number:t.uint32()),i}function st(t,e){switch(e){case u.STRING:return t.string();case u.BOOL:return t.bool();case u.DOUBLE:return t.double();case u.FLOAT:return t.float();case u.INT32:return t.int32();case u.INT64:return t.int64();case u.UINT64:return t.uint64();case u.FIXED64:return t.fixed64();case u.BYTES:return t.bytes();case u.FIXED32:return t.fixed32();case u.SFIXED32:return t.sfixed32();case u.SFIXED64:return t.sfixed64();case u.SINT64:return t.sint64();case u.UINT32:return t.uint32();case u.SINT32:return t.sint32()}}function F(t,e){var n;let o=ye(jo,Me(t));return o.messageType.forEach(Wt),o.dependency=(n=e?.map(i=>i.proto.name))!==null&&n!==void 0?n:[],Gn(o,i=>e?.find(a=>a.proto.name===i)).getFile(o.name)}var Jt=F("Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJvdG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MYAiABKAVChQEKE2NvbS5nb29nbGUucHJvdG9idWZCDlRpbWVzdGFtcFByb3RvUAFaMmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3RpbWVzdGFtcHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Dl=d(Jt,0);function pe(t){return new Date(_l(t))}function _l(t){return Number(t.seconds)*1e3+Math.round(t.nanos/1e6)}var Mt=F("Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIgASgFQoMBChNjb20uZ29vZ2xlLnByb3RvYnVmQg1EdXJhdGlvblByb3RvUAFaMWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2R1cmF0aW9ucGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw"),Kl=d(Mt,0);var Ft=F("Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYiJgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQnYKE2NvbS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaLGdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2FueXBiogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),pa=d(Ft,0);var Pl=3,ha={writeUnknownFields:!0};function Ql(t){return t?Object.assign(Object.assign({},ha),t):ha}function we(t,e,n){return An(new De,Ql(n),re(t,e)).finish()}function An(t,e,n){var o;for(let r of n.sortedFields){if(!n.isSet(r)){if(r.presence==Pl)throw new Error(`cannot encode ${r} to binary: required field not set`);continue}er(t,e,n,r)}if(e.writeUnknownFields)for(let{no:r,wireType:i,data:a}of(o=n.getUnknown())!==null&&o!==void 0?o:[])t.tag(r,i).raw(a);return t}function er(t,e,n,o){var r;switch(o.fieldKind){case"scalar":case"enum":xn(t,n.desc.typeName,o.name,(r=o.scalar)!==null&&r!==void 0?r:u.INT32,o.number,n.get(o));break;case"list":Ol(t,e,o,n.get(o));break;case"message":ga(t,e,o,n.get(o));break;case"map":for(let[i,a]of n.get(o))jl(t,e,o,i,a);break}}function xn(t,e,n,o,r,i){fa(t.tag(r,$l(o)),e,n,o,i)}function ga(t,e,n,o){n.delimitedEncoding?An(t.tag(n.number,$.StartGroup),e,o).tag(n.number,$.EndGroup):An(t.tag(n.number,$.LengthDelimited).fork(),e,o).join()}function Ol(t,e,n,o){var r;if(n.listKind=="message"){for(let a of o)ga(t,e,n,a);return}let i=(r=n.scalar)!==null&&r!==void 0?r:u.INT32;if(n.packed){if(!o.size)return;t.tag(n.number,$.LengthDelimited).fork();for(let a of o)fa(t,n.parent.typeName,n.name,i,a);t.join();return}for(let a of o)xn(t,n.parent.typeName,n.name,i,n.number,a)}function jl(t,e,n,o,r){var i;switch(t.tag(n.number,$.LengthDelimited).fork(),xn(t,n.parent.typeName,n.name,n.mapKey,1,o),n.mapKind){case"scalar":case"enum":xn(t,n.parent.typeName,n.name,(i=n.scalar)!==null&&i!==void 0?i:u.INT32,2,r);break;case"message":An(t.tag(2,$.LengthDelimited).fork(),e,r).join();break}t.join()}function fa(t,e,n,o,r){try{switch(o){case u.STRING:t.string(r);break;case u.BOOL:t.bool(r);break;case u.DOUBLE:t.double(r);break;case u.FLOAT:t.float(r);break;case u.INT32:t.int32(r);break;case u.INT64:t.int64(r);break;case u.UINT64:t.uint64(r);break;case u.FIXED64:t.fixed64(r);break;case u.BYTES:t.bytes(r);break;case u.FIXED32:t.fixed32(r);break;case u.SFIXED32:t.sfixed32(r);break;case u.SFIXED64:t.sfixed64(r);break;case u.SINT64:t.sint64(r);break;case u.UINT32:t.uint32(r);break;case u.SINT32:t.sint32(r);break}}catch(i){throw i instanceof Error?new Error(`cannot encode field ${e}.${n} to binary: ${i.message}`):i}}function $l(t){switch(t){case u.BYTES:case u.STRING:return $.LengthDelimited;case u.DOUBLE:case u.FIXED64:case u.SFIXED64:return $.Bit64;case u.FIXED32:case u.SFIXED32:case u.FLOAT:return $.Bit32;default:return $.Varint}}function tr(t,e,n){let o=!1;return n||(n=P(pa),o=!0),n.value=we(t,e),n.typeUrl=tc(e.$typeName),o?n:void 0}function ec(t,e){if(t.typeUrl==="")return!1;let n=typeof e=="string"?e:e.typeName,o=ba(t.typeUrl);return n===o}function nr(t,e){if(t.typeUrl==="")return;let n=e.kind=="message"?e:e.getMessage(ba(t.typeUrl));if(!(!n||!ec(t,n)))return ye(n,t.value)}function tc(t){return`type.googleapis.com/${t}`}function ba(t){let e=t.lastIndexOf("/"),n=e>=0?t.substring(e+1):t;if(!n.length)throw new Error(`invalid type url: ${t}`);return n}var Yt=F("CiRnb29nbGUvcHJvdG9idWYvc291cmNlX2NvbnRleHQucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIiCg1Tb3VyY2VDb250ZXh0EhEKCWZpbGVfbmFtZRgBIAEoCUKKAQoTY29tLmdvb2dsZS5wcm90b2J1ZkISU291cmNlQ29udGV4dFByb3RvUAFaNmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3NvdXJjZWNvbnRleHRwYqICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8z"),Np=d(Yt,0);var Se=F("Chpnb29nbGUvcHJvdG9idWYvdHlwZS5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIugBCgRUeXBlEgwKBG5hbWUYASABKAkSJgoGZmllbGRzGAIgAygLMhYuZ29vZ2xlLnByb3RvYnVmLkZpZWxkEg4KBm9uZW9mcxgDIAMoCRIoCgdvcHRpb25zGAQgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhI2Cg5zb3VyY2VfY29udGV4dBgFIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb250ZXh0EicKBnN5bnRheBgGIAEoDjIXLmdvb2dsZS5wcm90b2J1Zi5TeW50YXgSDwoHZWRpdGlvbhgHIAEoCSLVBQoFRmllbGQSKQoEa2luZBgBIAEoDjIbLmdvb2dsZS5wcm90b2J1Zi5GaWVsZC5LaW5kEjcKC2NhcmRpbmFsaXR5GAIgASgOMiIuZ29vZ2xlLnByb3RvYnVmLkZpZWxkLkNhcmRpbmFsaXR5Eg4KBm51bWJlchgDIAEoBRIMCgRuYW1lGAQgASgJEhAKCHR5cGVfdXJsGAYgASgJEhMKC29uZW9mX2luZGV4GAcgASgFEg4KBnBhY2tlZBgIIAEoCBIoCgdvcHRpb25zGAkgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhIRCglqc29uX25hbWUYCiABKAkSFQoNZGVmYXVsdF92YWx1ZRgLIAEoCSLIAgoES2luZBIQCgxUWVBFX1VOS05PV04QABIPCgtUWVBFX0RPVUJMRRABEg4KClRZUEVfRkxPQVQQAhIOCgpUWVBFX0lOVDY0EAMSDwoLVFlQRV9VSU5UNjQQBBIOCgpUWVBFX0lOVDMyEAUSEAoMVFlQRV9GSVhFRDY0EAYSEAoMVFlQRV9GSVhFRDMyEAcSDQoJVFlQRV9CT09MEAgSDwoLVFlQRV9TVFJJTkcQCRIOCgpUWVBFX0dST1VQEAoSEAoMVFlQRV9NRVNTQUdFEAsSDgoKVFlQRV9CWVRFUxAMEg8KC1RZUEVfVUlOVDMyEA0SDQoJVFlQRV9FTlVNEA4SEQoNVFlQRV9TRklYRUQzMhAPEhEKDVRZUEVfU0ZJWEVENjQQEBIPCgtUWVBFX1NJTlQzMhAREg8KC1RZUEVfU0lOVDY0EBIidAoLQ2FyZGluYWxpdHkSFwoTQ0FSRElOQUxJVFlfVU5LTk9XThAAEhgKFENBUkRJTkFMSVRZX09QVElPTkFMEAESGAoUQ0FSRElOQUxJVFlfUkVRVUlSRUQQAhIYChRDQVJESU5BTElUWV9SRVBFQVRFRBADIt8BCgRFbnVtEgwKBG5hbWUYASABKAkSLQoJZW51bXZhbHVlGAIgAygLMhouZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZRIoCgdvcHRpb25zGAMgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhI2Cg5zb3VyY2VfY29udGV4dBgEIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb250ZXh0EicKBnN5bnRheBgFIAEoDjIXLmdvb2dsZS5wcm90b2J1Zi5TeW50YXgSDwoHZWRpdGlvbhgGIAEoCSJTCglFbnVtVmFsdWUSDAoEbmFtZRgBIAEoCRIOCgZudW1iZXIYAiABKAUSKAoHb3B0aW9ucxgDIAMoCzIXLmdvb2dsZS5wcm90b2J1Zi5PcHRpb24iOwoGT3B0aW9uEgwKBG5hbWUYASABKAkSIwoFdmFsdWUYAiABKAsyFC5nb29nbGUucHJvdG9idWYuQW55KkMKBlN5bnRheBIRCg1TWU5UQVhfUFJPVE8yEAASEQoNU1lOVEFYX1BST1RPMxABEhMKD1NZTlRBWF9FRElUSU9OUxACQnsKE2NvbS5nb29nbGUucHJvdG9idWZCCVR5cGVQcm90b1ABWi1nb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi90eXBlcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw",[Ft,Yt]),Kp=d(Se,0),Pp=d(Se,1),ya;(function(t){t[t.TYPE_UNKNOWN=0]="TYPE_UNKNOWN",t[t.TYPE_DOUBLE=1]="TYPE_DOUBLE",t[t.TYPE_FLOAT=2]="TYPE_FLOAT",t[t.TYPE_INT64=3]="TYPE_INT64",t[t.TYPE_UINT64=4]="TYPE_UINT64",t[t.TYPE_INT32=5]="TYPE_INT32",t[t.TYPE_FIXED64=6]="TYPE_FIXED64",t[t.TYPE_FIXED32=7]="TYPE_FIXED32",t[t.TYPE_BOOL=8]="TYPE_BOOL",t[t.TYPE_STRING=9]="TYPE_STRING",t[t.TYPE_GROUP=10]="TYPE_GROUP",t[t.TYPE_MESSAGE=11]="TYPE_MESSAGE",t[t.TYPE_BYTES=12]="TYPE_BYTES",t[t.TYPE_UINT32=13]="TYPE_UINT32",t[t.TYPE_ENUM=14]="TYPE_ENUM",t[t.TYPE_SFIXED32=15]="TYPE_SFIXED32",t[t.TYPE_SFIXED64=16]="TYPE_SFIXED64",t[t.TYPE_SINT32=17]="TYPE_SINT32",t[t.TYPE_SINT64=18]="TYPE_SINT64"})(ya||(ya={}));var Qp=M(Se,1,0),Ia;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.OPTIONAL=1]="OPTIONAL",t[t.REQUIRED=2]="REQUIRED",t[t.REPEATED=3]="REPEATED"})(Ia||(Ia={}));var Op=M(Se,1,1),jp=d(Se,2),$p=d(Se,3),qp=d(Se,4),Ga;(function(t){t[t.PROTO2=0]="PROTO2",t[t.PROTO3=1]="PROTO3",t[t.EDITIONS=2]="EDITIONS"})(Ga||(Ga={}));var eh=M(Se,0);var or=F("Chlnb29nbGUvcHJvdG9idWYvYXBpLnByb3RvEg9nb29nbGUucHJvdG9idWYikgIKA0FwaRIMCgRuYW1lGAEgASgJEigKB21ldGhvZHMYAiADKAsyFy5nb29nbGUucHJvdG9idWYuTWV0aG9kEigKB29wdGlvbnMYAyADKAsyFy5nb29nbGUucHJvdG9idWYuT3B0aW9uEg8KB3ZlcnNpb24YBCABKAkSNgoOc291cmNlX2NvbnRleHQYBSABKAsyHi5nb29nbGUucHJvdG9idWYuU291cmNlQ29udGV4dBImCgZtaXhpbnMYBiADKAsyFi5nb29nbGUucHJvdG9idWYuTWl4aW4SJwoGc3ludGF4GAcgASgOMhcuZ29vZ2xlLnByb3RvYnVmLlN5bnRheBIPCgdlZGl0aW9uGAggASgJIu4BCgZNZXRob2QSDAoEbmFtZRgBIAEoCRIYChByZXF1ZXN0X3R5cGVfdXJsGAIgASgJEhkKEXJlcXVlc3Rfc3RyZWFtaW5nGAMgASgIEhkKEXJlc3BvbnNlX3R5cGVfdXJsGAQgASgJEhoKEnJlc3BvbnNlX3N0cmVhbWluZxgFIAEoCBIoCgdvcHRpb25zGAYgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhIrCgZzeW50YXgYByABKA4yFy5nb29nbGUucHJvdG9idWYuU3ludGF4QgIYARITCgdlZGl0aW9uGAggASgJQgIYASIjCgVNaXhpbhIMCgRuYW1lGAEgASgJEgwKBHJvb3QYAiABKAlCdgoTY29tLmdvb2dsZS5wcm90b2J1ZkIIQXBpUHJvdG9QAVosZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vYXBpcGKiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw",[Yt,Se]),ah=d(or,0),sh=d(or,1),lh=d(or,2);function ae(t,e,...n){if(n.length==0)return t.extensions[e];let o=n.pop();return n.reduce((r,i)=>r.nestedMessages[i],t.messages[e]).nestedExtensions[o]}var rr=F("CiJnb29nbGUvcHJvdG9idWYvY3BwX2ZlYXR1cmVzLnByb3RvEgJwYiL8AwoLQ3BwRmVhdHVyZXMS+wEKEmxlZ2FjeV9jbG9zZWRfZW51bRgBIAEoCELeAYgBAZgBBJgBAaIBCRIEdHJ1ZRiEB6IBChIFZmFsc2UY5weyAbgBCOgHEOgHGq8BVGhlIGxlZ2FjeSBjbG9zZWQgZW51bSBiZWhhdmlvciBpbiBDKysgaXMgZGVwcmVjYXRlZCBhbmQgaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gZWRpdGlvbiAyMDI1LiAgU2VlIGh0dHA6Ly9wcm90b2J1Zi5kZXYvcHJvZ3JhbW1pbmctZ3VpZGVzL2VudW0vI2NwcCBmb3IgbW9yZSBpbmZvcm1hdGlvbhJaCgtzdHJpbmdfdHlwZRgCIAEoDjIaLnBiLkNwcEZlYXR1cmVzLlN0cmluZ1R5cGVCKYgBAZgBBJgBAaIBCxIGU1RSSU5HGIQHogEJEgRWSUVXGOkHsgEDCOgHEkwKGmVudW1fbmFtZV91c2VzX3N0cmluZ192aWV3GAMgASgIQiiIAQGYAQaYAQGiAQoSBWZhbHNlGIQHogEJEgR0cnVlGOkHsgEDCOkHIkUKClN0cmluZ1R5cGUSFwoTU1RSSU5HX1RZUEVfVU5LTk9XThAAEggKBFZJRVcQARIICgRDT1JEEAISCgoGU1RSSU5HEAM6PwoDY3BwEhsuZ29vZ2xlLnByb3RvYnVmLkZlYXR1cmVTZXQY6AcgASgLMg8ucGIuQ3BwRmVhdHVyZXNSA2NwcA",[S]),fh=d(rr,0),va;(function(t){t[t.STRING_TYPE_UNKNOWN=0]="STRING_TYPE_UNKNOWN",t[t.VIEW=1]="VIEW",t[t.CORD=2]="CORD",t[t.STRING=3]="STRING"})(va||(va={}));var bh=M(rr,0,0),yh=ae(rr,0);var nc=F("Chtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIHCgVFbXB0eUJ9ChNjb20uZ29vZ2xlLnByb3RvYnVmQgpFbXB0eVByb3RvUAFaLmdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL2VtcHR5cGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw"),Ah=d(nc,0);var ir=F("CiBnb29nbGUvcHJvdG9idWYvZmllbGRfbWFzay5wcm90bxIPZ29vZ2xlLnByb3RvYnVmIhoKCUZpZWxkTWFzaxINCgVwYXRocxgBIAMoCUKFAQoTY29tLmdvb2dsZS5wcm90b2J1ZkIORmllbGRNYXNrUHJvdG9QAVoyZ29vZ2xlLmdvbGFuZy5vcmcvcHJvdG9idWYvdHlwZXMva25vd24vZmllbGRtYXNrcGL4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw"),Zh=d(ir,0);var Cn=F("CiFnb29nbGUvcHJvdG9idWYvZ29fZmVhdHVyZXMucHJvdG8SAnBiIvcECgpHb0ZlYXR1cmVzEqUBChpsZWdhY3lfdW5tYXJzaGFsX2pzb25fZW51bRgBIAEoCEKAAYgBAZgBBpgBAaIBCRIEdHJ1ZRiEB6IBChIFZmFsc2UY5weyAVsI6AcQ6AcaU1RoZSBsZWdhY3kgVW5tYXJzaGFsSlNPTiBBUEkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIGVkaXRpb24uEmoKCWFwaV9sZXZlbBgCIAEoDjIXLnBiLkdvRmVhdHVyZXMuQVBJTGV2ZWxCPogBAZgBA5gBAaIBGhIVQVBJX0xFVkVMX1VOU1BFQ0lGSUVEGIQHogEPEgpBUElfT1BBUVVFGOkHsgEDCOgHEmsKEXN0cmlwX2VudW1fcHJlZml4GAMgASgOMh4ucGIuR29GZWF0dXJlcy5TdHJpcEVudW1QcmVmaXhCMIgBAZgBBpgBB5gBAaIBGxIWU1RSSVBfRU5VTV9QUkVGSVhfS0VFUBiEB7IBAwjpByJTCghBUElMZXZlbBIZChVBUElfTEVWRUxfVU5TUEVDSUZJRUQQABIMCghBUElfT1BFThABEg4KCkFQSV9IWUJSSUQQAhIOCgpBUElfT1BBUVVFEAMikgEKD1N0cmlwRW51bVByZWZpeBIhCh1TVFJJUF9FTlVNX1BSRUZJWF9VTlNQRUNJRklFRBAAEhoKFlNUUklQX0VOVU1fUFJFRklYX0tFRVAQARIjCh9TVFJJUF9FTlVNX1BSRUZJWF9HRU5FUkFURV9CT1RIEAISGwoXU1RSSVBfRU5VTV9QUkVGSVhfU1RSSVAQAzo8CgJnbxIbLmdvb2dsZS5wcm90b2J1Zi5GZWF0dXJlU2V0GOoHIAEoCzIOLnBiLkdvRmVhdHVyZXNSAmdvQi9aLWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2dvZmVhdHVyZXNwYg",[S]),Rh=d(Cn,0),Aa;(function(t){t[t.API_LEVEL_UNSPECIFIED=0]="API_LEVEL_UNSPECIFIED",t[t.API_OPEN=1]="API_OPEN",t[t.API_HYBRID=2]="API_HYBRID",t[t.API_OPAQUE=3]="API_OPAQUE"})(Aa||(Aa={}));var kh=M(Cn,0,0),xa;(function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.KEEP=1]="KEEP",t[t.GENERATE_BOTH=2]="GENERATE_BOTH",t[t.STRIP=3]="STRIP"})(xa||(xa={}));var Jh=M(Cn,0,1),Mh=ae(Cn,0);var zt=F("CiNnb29nbGUvcHJvdG9idWYvamF2YV9mZWF0dXJlcy5wcm90bxICcGIigwgKDEphdmFGZWF0dXJlcxL+AQoSbGVnYWN5X2Nsb3NlZF9lbnVtGAEgASgIQuEBiAEBmAEEmAEBogEJEgR0cnVlGIQHogEKEgVmYWxzZRjnB7IBuwEI6AcQ6AcasgFUaGUgbGVnYWN5IGNsb3NlZCBlbnVtIGJlaGF2aW9yIGluIEphdmEgaXMgZGVwcmVjYXRlZCBhbmQgaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gZWRpdGlvbiAyMDI1LiAgU2VlIGh0dHA6Ly9wcm90b2J1Zi5kZXYvcHJvZ3JhbW1pbmctZ3VpZGVzL2VudW0vI2phdmEgZm9yIG1vcmUgaW5mb3JtYXRpb24uEp8CCg91dGY4X3ZhbGlkYXRpb24YAiABKA4yHy5wYi5KYXZhRmVhdHVyZXMuVXRmOFZhbGlkYXRpb25C5AGIAQGYAQSYAQGiAQwSB0RFRkFVTFQYhAeyAcgBCOgHEOkHGr8BVGhlIEphdmEtc3BlY2lmaWMgdXRmOCB2YWxpZGF0aW9uIGZlYXR1cmUgaXMgZGVwcmVjYXRlZCBhbmQgaXMgc2NoZWR1bGVkIHRvIGJlIHJlbW92ZWQgaW4gZWRpdGlvbiAyMDI1LiAgVXRmOCB2YWxpZGF0aW9uIGJlaGF2aW9yIHNob3VsZCB1c2UgdGhlIGdsb2JhbCBjcm9zcy1sYW5ndWFnZSB1dGY4X3ZhbGlkYXRpb24gZmVhdHVyZS4SMAoKbGFyZ2VfZW51bRgDIAEoCEIciAEBmAEGmAEBogEKEgVmYWxzZRiEB7IBAwjpBxJRCh91c2Vfb2xkX291dGVyX2NsYXNzbmFtZV9kZWZhdWx0GAQgASgIQiiIAQGYAQGiAQkSBHRydWUYhAeiAQoSBWZhbHNlGOkHsgEGCOkHIOkHEn8KEm5lc3RfaW5fZmlsZV9jbGFzcxgFIAEoDjI3LnBiLkphdmFGZWF0dXJlcy5OZXN0SW5GaWxlQ2xhc3NGZWF0dXJlLk5lc3RJbkZpbGVDbGFzc0IqiAEBmAEDmAEGmAEIogELEgZMRUdBQ1kYhAeiAQcSAk5PGOkHsgEDCOkHGnwKFk5lc3RJbkZpbGVDbGFzc0ZlYXR1cmUiWAoPTmVzdEluRmlsZUNsYXNzEh4KGk5FU1RfSU5fRklMRV9DTEFTU19VTktOT1dOEAASBgoCTk8QARIHCgNZRVMQAhIUCgZMRUdBQ1kQAxoIIgYI6Qcg6QdKCAgBEICAgIACIkYKDlV0ZjhWYWxpZGF0aW9uEhsKF1VURjhfVkFMSURBVElPTl9VTktOT1dOEAASCwoHREVGQVVMVBABEgoKBlZFUklGWRACSgQIBhAHOkIKBGphdmESGy5nb29nbGUucHJvdG9idWYuRmVhdHVyZVNldBjpByABKAsyEC5wYi5KYXZhRmVhdHVyZXNSBGphdmFCKAoTY29tLmdvb2dsZS5wcm90b2J1ZkIRSmF2YUZlYXR1cmVzUHJvdG8",[S]),Th=d(zt,0),Uh=d(zt,0,0),Ca;(function(t){t[t.NEST_IN_FILE_CLASS_UNKNOWN=0]="NEST_IN_FILE_CLASS_UNKNOWN",t[t.NO=1]="NO",t[t.YES=2]="YES",t[t.LEGACY=3]="LEGACY"})(Ca||(Ca={}));var Dh=M(zt,0,0,0),Sa;(function(t){t[t.UTF8_VALIDATION_UNKNOWN=0]="UTF8_VALIDATION_UNKNOWN",t[t.DEFAULT=1]="DEFAULT",t[t.VERIFY=2]="VERIFY"})(Sa||(Sa={}));var _h=M(zt,0,0),Kh=ae(zt,0);var Zn=F("Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9idWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9idWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJvdG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoMc3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8KDHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RWYWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9WQUxVRRAAQn8KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAFaL2dvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL2tub3duL3N0cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),Za=d(Zn,0),ar=d(Zn,1),Va=d(Zn,2),Sn;(function(t){t[t.NULL_VALUE=0]="NULL_VALUE"})(Sn||(Sn={}));var $h=M(Zn,0);var Xe=F("Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZhbHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASABKAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEoDSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUSDQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEKDAQoTY29tLmdvb2dsZS5wcm90b2J1ZkINV3JhcHBlcnNQcm90b1ABWjFnb29nbGUuZ29sYW5nLm9yZy9wcm90b2J1Zi90eXBlcy9rbm93bi93cmFwcGVyc3Bi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM"),ng=d(Xe,0),og=d(Xe,1),rg=d(Xe,2),ig=d(Xe,3),ag=d(Xe,4),sg=d(Xe,5),lg=d(Xe,6),cg=d(Xe,7),dg=d(Xe,8);var Nt=F("CiVnb29nbGUvcHJvdG9idWYvY29tcGlsZXIvcGx1Z2luLnByb3RvEhhnb29nbGUucHJvdG9idWYuY29tcGlsZXIiRgoHVmVyc2lvbhINCgVtYWpvchgBIAEoBRINCgVtaW5vchgCIAEoBRINCgVwYXRjaBgDIAEoBRIOCgZzdWZmaXgYBCABKAkigQIKFENvZGVHZW5lcmF0b3JSZXF1ZXN0EhgKEGZpbGVfdG9fZ2VuZXJhdGUYASADKAkSEQoJcGFyYW1ldGVyGAIgASgJEjgKCnByb3RvX2ZpbGUYDyADKAsyJC5nb29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90bxJFChdzb3VyY2VfZmlsZV9kZXNjcmlwdG9ycxgRIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5GaWxlRGVzY3JpcHRvclByb3RvEjsKEGNvbXBpbGVyX3ZlcnNpb24YAyABKAsyIS5nb29nbGUucHJvdG9idWYuY29tcGlsZXIuVmVyc2lvbiKSAwoVQ29kZUdlbmVyYXRvclJlc3BvbnNlEg0KBWVycm9yGAEgASgJEhoKEnN1cHBvcnRlZF9mZWF0dXJlcxgCIAEoBBIXCg9taW5pbXVtX2VkaXRpb24YAyABKAUSFwoPbWF4aW11bV9lZGl0aW9uGAQgASgFEkIKBGZpbGUYDyADKAsyNC5nb29nbGUucHJvdG9idWYuY29tcGlsZXIuQ29kZUdlbmVyYXRvclJlc3BvbnNlLkZpbGUafwoERmlsZRIMCgRuYW1lGAEgASgJEhcKD2luc2VydGlvbl9wb2ludBgCIAEoCRIPCgdjb250ZW50GA8gASgJEj8KE2dlbmVyYXRlZF9jb2RlX2luZm8YECABKAsyIi5nb29nbGUucHJvdG9idWYuR2VuZXJhdGVkQ29kZUluZm8iVwoHRmVhdHVyZRIQCgxGRUFUVVJFX05PTkUQABIbChdGRUFUVVJFX1BST1RPM19PUFRJT05BTBABEh0KGUZFQVRVUkVfU1VQUE9SVFNfRURJVElPTlMQAkJyChxjb20uZ29vZ2xlLnByb3RvYnVmLmNvbXBpbGVyQgxQbHVnaW5Qcm90b3NaKWdvb2dsZS5nb2xhbmcub3JnL3Byb3RvYnVmL3R5cGVzL3BsdWdpbnBiqgIYR29vZ2xlLlByb3RvYnVmLkNvbXBpbGVy",[S]),fg=d(Nt,0),bg=d(Nt,1),yg=d(Nt,2),Ig=d(Nt,2,0),Ea;(function(t){t[t.NONE=0]="NONE",t[t.PROTO3_OPTIONAL=1]="PROTO3_OPTIONAL",t[t.SUPPORTS_EDITIONS=2]="SUPPORTS_EDITIONS"})(Ea||(Ea={}));var Gg=M(Nt,2,0);function Vn(t,e){Ba(e,t);let n=oc(t.$unknown,e),[o,r,i]=Ke(e);for(let a of n)$o(o,new Je(a.data),r,a.wireType,{readUnknownFields:!0});return i()}function sr(t,e,n){var o;Ba(e,t);let r=((o=t.$unknown)!==null&&o!==void 0?o:[]).filter(c=>c.no!==e.number),[i,a]=Ke(e,n),s=new De;er(s,{writeUnknownFields:!0},i,a);let l=new Je(s.finish());for(;l.pos<l.len;){let[c,p]=l.tag(),g=l.skip(p,c);r.push({no:c,wireType:p,data:g})}t.$unknown=r}function oc(t,e){if(t===void 0)return[];if(e.fieldKind==="enum"||e.fieldKind==="scalar"){for(let n=t.length-1;n>=0;--n)if(t[n].no==e.number)return[t[n]];return[]}return t.filter(n=>n.no===e.number)}function Ke(t,e){let n=t.typeName,o=Object.assign(Object.assign({},t),{kind:"field",parent:t.extendee,localName:n}),r=Object.assign(Object.assign({},t.extendee),{fields:[o],members:[o],oneofs:[]}),i=P(r,e!==void 0?{[n]:e}:void 0);return[re(r,i),o,()=>{let a=i[n];if(a===void 0){let s=t.message;return xe(s)?ge(s.fields[0].scalar,s.fields[0].longAsString):P(s)}return a}]}function Ba(t,e){if(t.extendee.typeName!=e.$typeName)throw new Error(`extension ${t.typeName} can only be applied to message ${t.extendee.typeName}`)}var rc=3,ic=2,wa={alwaysEmitImplicit:!1,enumAsInteger:!1,useProtoFieldName:!1};function ac(t){return t?Object.assign(Object.assign({},wa),t):wa}function Wa(t,e,n){return Lt(re(t,e),ac(n))}function Ra(t,e,n){var o;let r=Wa(t,e,n);return JSON.stringify(r,null,(o=n?.prettySpaces)!==null&&o!==void 0?o:0)}function lt(t,e){var n;if(t.typeName=="google.protobuf.NullValue")return null;let o=(n=t.value[e])===null||n===void 0?void 0:n.name;if(o===void 0)throw new Error(`${e} is not a value in ${t}`);return o}function Lt(t,e){var n;let o=dc(t,e);if(o!==void 0)return o;let r={};for(let i of t.sortedFields){if(!t.isSet(i)){if(i.presence==rc)throw new Error(`cannot encode ${i} to JSON: required field not set`);if(!e.alwaysEmitImplicit||i.presence!==ic)continue}let a=Xa(i,t.get(i),e);a!==void 0&&(r[cc(i,e)]=a)}if(e.registry){let i=new Set;for(let{no:a}of(n=t.getUnknown())!==null&&n!==void 0?n:[])if(!i.has(a)){i.add(a);let s=e.registry.getExtensionFor(t.desc,a);if(!s)continue;let l=Vn(t.message,s),[c,p]=Ke(s,l),g=Xa(p,c.get(p),e);g!==void 0&&(r[s.jsonName]=g)}}return r}function Xa(t,e,n){switch(t.fieldKind){case"scalar":return En(t,e);case"message":return Lt(e,n);case"enum":return lr(t.enum,e,n.enumAsInteger);case"list":return lc(e,n);case"map":return sc(e,n)}}function sc(t,e){let n=t.field(),o={};switch(n.mapKind){case"scalar":for(let[r,i]of t)o[r]=En(n,i);break;case"message":for(let[r,i]of t)o[r]=Lt(i,e);break;case"enum":for(let[r,i]of t)o[r]=lr(n.enum,i,e.enumAsInteger);break}return e.alwaysEmitImplicit||t.size>0?o:void 0}function lc(t,e){let n=t.field(),o=[];switch(n.listKind){case"scalar":for(let r of t)o.push(En(n,r));break;case"enum":for(let r of t)o.push(lr(n.enum,r,e.enumAsInteger));break;case"message":for(let r of t)o.push(Lt(r,e));break}return e.alwaysEmitImplicit||o.length>0?o:void 0}function lr(t,e,n){var o;if(typeof e!="number")throw new Error(`cannot encode ${t} to JSON: expected number, got ${ne(e)}`);if(t.typeName=="google.protobuf.NullValue")return null;if(n)return e;let r=t.value[e];return(o=r?.name)!==null&&o!==void 0?o:e}function En(t,e){var n,o,r,i,a,s;switch(t.scalar){case u.INT32:case u.SFIXED32:case u.SINT32:case u.FIXED32:case u.UINT32:if(typeof e!="number")throw new Error(`cannot encode ${t} to JSON: ${(n=Ee(t,e))===null||n===void 0?void 0:n.message}`);return e;case u.FLOAT:case u.DOUBLE:if(typeof e!="number")throw new Error(`cannot encode ${t} to JSON: ${(o=Ee(t,e))===null||o===void 0?void 0:o.message}`);return Number.isNaN(e)?"NaN":e===Number.POSITIVE_INFINITY?"Infinity":e===Number.NEGATIVE_INFINITY?"-Infinity":e;case u.STRING:if(typeof e!="string")throw new Error(`cannot encode ${t} to JSON: ${(r=Ee(t,e))===null||r===void 0?void 0:r.message}`);return e;case u.BOOL:if(typeof e!="boolean")throw new Error(`cannot encode ${t} to JSON: ${(i=Ee(t,e))===null||i===void 0?void 0:i.message}`);return e;case u.UINT64:case u.FIXED64:case u.INT64:case u.SFIXED64:case u.SINT64:if(typeof e!="bigint"&&typeof e!="string")throw new Error(`cannot encode ${t} to JSON: ${(a=Ee(t,e))===null||a===void 0?void 0:a.message}`);return e.toString();case u.BYTES:if(e instanceof Uint8Array)return _e(e);throw new Error(`cannot encode ${t} to JSON: ${(s=Ee(t,e))===null||s===void 0?void 0:s.message}`)}}function cc(t,e){return e.useProtoFieldName?t.name:t.jsonName}function dc(t,e){if(t.desc.typeName.startsWith("google.protobuf."))switch(t.desc.typeName){case"google.protobuf.Any":return uc(t.message,e);case"google.protobuf.Timestamp":return hc(t.message);case"google.protobuf.Duration":return mc(t.message);case"google.protobuf.FieldMask":return pc(t.message);case"google.protobuf.Struct":return ka(t.message);case"google.protobuf.Value":return cr(t.message);case"google.protobuf.ListValue":return Ja(t.message);default:if(xe(t.desc)){let n=t.desc.fields[0];return En(n,t.get(n))}return}}function uc(t,e){if(t.typeUrl==="")return{};let{registry:n}=e,o,r;if(n&&(o=nr(t,n),o&&(r=n.getMessage(o.$typeName))),!r||!o)throw new Error(`cannot encode message ${t.$typeName} to JSON: "${t.typeUrl}" is not in the type registry`);let i=Lt(re(r,o),e);return(r.typeName.startsWith("google.protobuf.")||i===null||Array.isArray(i)||typeof i!="object")&&(i={value:i}),i["@type"]=t.typeUrl,i}function mc(t){let e=Number(t.seconds),n=t.nanos;if(e>315576e6||e<-315576e6)throw new Error(`cannot encode message ${t.$typeName} to JSON: value out of range`);if(e>0&&n<0||e<0&&n>0)throw new Error(`cannot encode message ${t.$typeName} to JSON: nanos sign must match seconds sign`);let o=t.seconds.toString();if(n!==0){let r=Math.abs(n).toString();r="0".repeat(9-r.length)+r,r.substring(3)==="000000"?r=r.substring(0,3):r.substring(6)==="000"&&(r=r.substring(0,6)),o+="."+r,n<0&&e==0&&(o="-"+o)}return o+"s"}function pc(t){return t.paths.map(e=>{if(yn(Ce(e))!==e)throw new Error(`cannot encode message ${t.$typeName} to JSON: lowerCamelCase of path name "${e}" is irreversible`);return Ce(e)}).join(",")}function ka(t){let e={};for(let[n,o]of Object.entries(t.fields))e[n]=cr(o);return e}function cr(t){switch(t.kind.case){case"nullValue":return null;case"numberValue":if(!Number.isFinite(t.kind.value))throw new Error(`${t.$typeName} cannot be NaN or Infinity`);return t.kind.value;case"boolValue":return t.kind.value;case"stringValue":return t.kind.value;case"structValue":return ka(t.kind.value);case"listValue":return Ja(t.kind.value);default:throw new Error(`${t.$typeName} must have a value`)}}function Ja(t){return t.values.map(cr)}function hc(t){let e=Number(t.seconds)*1e3;if(e<Date.parse("0001-01-01T00:00:00Z")||e>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot encode message ${t.$typeName} to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);if(t.nanos<0)throw new Error(`cannot encode message ${t.$typeName} to JSON: nanos must not be negative`);if(t.nanos>999999999)throw new Error(`cannot encode message ${t.$typeName} to JSON: nanos must not be greater than 99999999`);let n="Z";if(t.nanos>0){let o=(t.nanos+1e9).toString().substring(1);o.substring(3)==="000000"?n="."+o.substring(0,3)+"Z":o.substring(6)==="000"?n="."+o.substring(0,6)+"Z":n="."+o+"Z"}return new Date(e).toISOString().replace(".000Z",n)}var Ma={ignoreUnknownFields:!1};function gc(t){return t?Object.assign(Object.assign({},Ma),t):Ma}function Ya(t,e,n){return wn(t,xc(e,t.typeName),n)}function wn(t,e,n){let o=re(t);try{Ht(o,e,gc(n))}catch(r){throw yi(r)?new Error(`cannot decode ${r.field()} from JSON: ${r.message}`,{cause:r}):r}return o.message}var dr=new WeakMap;function fc(t,e){var n;if(!dr.has(t)){let o=new Map;for(let r of t.fields)o.set(r.name,r).set(r.jsonName,r);dr.set(t,o)}return(n=dr.get(t))===null||n===void 0?void 0:n.get(e)}function Ht(t,e,n){var o;if(Cc(t,e,n))return;if(e==null||Array.isArray(e)||typeof e!="object")throw new Error(`cannot decode ${t.desc} from JSON: ${ne(e)}`);let r=new Map;for(let[i,a]of Object.entries(e)){let s=fc(t.desc,i);if(s){if(s.oneof){if(a===null&&s.fieldKind=="scalar")continue;let l=r.get(s.oneof);if(l!==void 0)throw new ie(s.oneof,`oneof set multiple times by ${l.name} and ${s.name}`);r.set(s.oneof,s)}Fa(t,s,a,n)}else{let l;if(i.startsWith("[")&&i.endsWith("]")&&(l=(o=n.registry)===null||o===void 0?void 0:o.getExtension(i.substring(1,i.length-1)))&&l.extendee.typeName===t.desc.typeName){let[c,p,g]=Ke(l);Fa(c,p,a,n),sr(t.message,l,g())}if(!l&&!n.ignoreUnknownFields)throw new Error(`cannot decode ${t.desc} from JSON: key "${i}" is unknown`)}}}function Fa(t,e,n,o){switch(e.fieldKind){case"scalar":vc(t,e,n);break;case"enum":Gc(t,e,n,o);break;case"message":Ic(t,e,n,o);break;case"list":yc(t.get(e),n,o);break;case"map":bc(t.get(e),n,o);break}}function za(t,e,n){if(t.scalar&&e!==null)return ur(t,e);if(t.message&&!Bn(t,e)){let o=re(t.message);return Ht(o,e,n),o}if(t.enum&&!Bn(t,e))return Na(t.enum,e,n.ignoreUnknownFields);throw new ie(t,`${t.fieldKind==="list"?"list item":"map value"} must not be null`)}function bc(t,e,n){if(e===null)return;let o=t.field();if(typeof e!="object"||Array.isArray(e))throw new ie(o,"expected object, got "+ne(e));for(let[r,i]of Object.entries(e)){let a=Ac(o.mapKey,r),s=za(o,i,n);s!==Xn&&t.set(a,s)}}function yc(t,e,n){if(e===null)return;let o=t.field();if(!Array.isArray(e))throw new ie(o,"expected Array, got "+ne(e));for(let r of e){let i=za(o,r,n);i!==Xn&&t.add(i)}}function Ic(t,e,n,o){if(Bn(e,n)){t.clear(e);return}let r=t.isSet(e)?t.get(e):re(e.message);Ht(r,n,o),t.set(e,r)}function Gc(t,e,n,o){if(Bn(e,n)){t.clear(e);return}let r=Na(e.enum,n,o.ignoreUnknownFields);r!==Xn&&t.set(e,r)}function vc(t,e,n){n===null?t.clear(e):t.set(e,ur(e,n))}function Bn(t,e){var n,o;return e===null&&((n=t.message)===null||n===void 0?void 0:n.typeName)!="google.protobuf.Value"&&((o=t.enum)===null||o===void 0?void 0:o.typeName)!="google.protobuf.NullValue"}var Xn=Symbol();function Na(t,e,n){if(e===null)return t.values[0].number;switch(typeof e){case"number":if(Number.isInteger(e))return e;break;case"string":let o=t.values.find(r=>r.name===e);if(o!==void 0)return o.number;if(n)return Xn;break}throw new Error(`cannot decode ${t} from JSON: ${ne(e)}`)}function ur(t,e){switch(t.scalar){case u.DOUBLE:case u.FLOAT:if(e==="NaN")return NaN;if(e==="Infinity")return Number.POSITIVE_INFINITY;if(e==="-Infinity")return Number.NEGATIVE_INFINITY;if(typeof e=="number"){if(Number.isNaN(e))throw new ie(t,"unexpected NaN number");if(!Number.isFinite(e))throw new ie(t,"unexpected infinite number");break}if(typeof e=="string"){if(e===""||e.trim().length!==e.length)break;let n=Number(e);if(!Number.isFinite(n))break;return n}break;case u.INT32:case u.FIXED32:case u.SFIXED32:case u.SINT32:case u.UINT32:return La(e);case u.BYTES:if(typeof e=="string"){if(e==="")return new Uint8Array(0);try{return Me(e)}catch(n){let o=n instanceof Error?n.message:String(n);throw new ie(t,o)}}break}return e}function Ac(t,e){switch(t){case u.BOOL:switch(e){case"true":return!0;case"false":return!1}return e;case u.INT32:case u.FIXED32:case u.UINT32:case u.SFIXED32:case u.SINT32:return La(e);default:return e}}function La(t){if(typeof t=="string"){if(t===""||t.trim().length!==t.length)return t;let e=Number(t);return Number.isNaN(e)?t:e}return t}function xc(t,e){try{return JSON.parse(t)}catch(n){let o=n instanceof Error?n.message:String(n);throw new Error(`cannot decode message ${e} from JSON: ${o}`,{cause:n})}}function Cc(t,e,n){if(!t.desc.typeName.startsWith("google.protobuf."))return!1;switch(t.desc.typeName){case"google.protobuf.Any":return Sc(t.message,e,n),!0;case"google.protobuf.Timestamp":return Zc(t.message,e),!0;case"google.protobuf.Duration":return Vc(t.message,e),!0;case"google.protobuf.FieldMask":return Ec(t.message,e),!0;case"google.protobuf.Struct":return Ha(t.message,e),!0;case"google.protobuf.Value":return mr(t.message,e),!0;case"google.protobuf.ListValue":return Ta(t.message,e),!0;default:if(xe(t.desc)){let o=t.desc.fields[0];return e===null?t.clear(o):t.set(o,ur(o,e)),!0}return!1}}function Sc(t,e,n){var o;if(e===null||Array.isArray(e)||typeof e!="object")throw new Error(`cannot decode message ${t.$typeName} from JSON: expected object but got ${ne(e)}`);if(Object.keys(e).length==0)return;let r=e["@type"];if(typeof r!="string"||r=="")throw new Error(`cannot decode message ${t.$typeName} from JSON: "@type" is empty`);let i=r.includes("/")?r.substring(r.lastIndexOf("/")+1):r;if(!i.length)throw new Error(`cannot decode message ${t.$typeName} from JSON: "@type" is invalid`);let a=(o=n.registry)===null||o===void 0?void 0:o.getMessage(i);if(!a)throw new Error(`cannot decode message ${t.$typeName} from JSON: ${r} is not in the type registry`);let s=re(a);if(i.startsWith("google.protobuf.")&&Object.prototype.hasOwnProperty.call(e,"value")){let l=e.value;Ht(s,l,n)}else{let l=Object.assign({},e);delete l["@type"],Ht(s,l,n)}tr(s.desc,s.message,t)}function Zc(t,e){if(typeof e!="string")throw new Error(`cannot decode message ${t.$typeName} from JSON: ${ne(e)}`);let n=e.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 ${t.$typeName} from JSON: invalid RFC 3339 string`);let o=Date.parse(n[1]+"-"+n[2]+"-"+n[3]+"T"+n[4]+":"+n[5]+":"+n[6]+(n[8]?n[8]:"Z"));if(Number.isNaN(o))throw new Error(`cannot decode message ${t.$typeName} from JSON: invalid RFC 3339 string`);if(o<Date.parse("0001-01-01T00:00:00Z")||o>Date.parse("9999-12-31T23:59:59Z"))throw new Error(`cannot decode message ${t.$typeName} from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive`);t.seconds=_.parse(o/1e3),t.nanos=0,n[7]&&(t.nanos=parseInt("1"+n[7]+"0".repeat(9-n[7].length))-1e9)}function Vc(t,e){if(typeof e!="string")throw new Error(`cannot decode message ${t.$typeName} from JSON: ${ne(e)}`);let n=e.match(/^(-?[0-9]+)(?:\.([0-9]+))?s/);if(n===null)throw new Error(`cannot decode message ${t.$typeName} from JSON: ${ne(e)}`);let o=Number(n[1]);if(o>315576e6||o<-315576e6)throw new Error(`cannot decode message ${t.$typeName} from JSON: ${ne(e)}`);if(t.seconds=_.parse(o),typeof n[2]!="string")return;let r=n[2]+"0".repeat(9-n[2].length);t.nanos=parseInt(r),(o<0||Object.is(o,-0))&&(t.nanos=-t.nanos)}function Ec(t,e){if(typeof e!="string")throw new Error(`cannot decode message ${t.$typeName} from JSON: ${ne(e)}`);e!==""&&(t.paths=e.split(",").map(n=>{if(n.includes("_"))throw new Error(`cannot decode message ${t.$typeName} from JSON: path names must be lowerCamelCase`);return yn(n)}))}function Ha(t,e){if(typeof e!="object"||e==null||Array.isArray(e))throw new Error(`cannot decode message ${t.$typeName} from JSON ${ne(e)}`);for(let[n,o]of Object.entries(e)){let r=P(ar);mr(r,o),t.fields[n]=r}}function mr(t,e){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:Sn.NULL_VALUE};else if(Array.isArray(e)){let n=P(Va);Ta(n,e),t.kind={case:"listValue",value:n}}else{let n=P(Za);Ha(n,e),t.kind={case:"structValue",value:n}}break;default:throw new Error(`cannot decode message ${t.$typeName} from JSON ${ne(e)}`)}return t}function Ta(t,e){if(!Array.isArray(e))throw new Error(`cannot decode message ${t.$typeName} from JSON ${ne(e)}`);for(let n of e){let o=P(ar);mr(o,n),t.values.push(o)}}var v;(function(t){t[t.Canceled=1]="Canceled",t[t.Unknown=2]="Unknown",t[t.InvalidArgument=3]="InvalidArgument",t[t.DeadlineExceeded=4]="DeadlineExceeded",t[t.NotFound=5]="NotFound",t[t.AlreadyExists=6]="AlreadyExists",t[t.PermissionDenied=7]="PermissionDenied",t[t.ResourceExhausted=8]="ResourceExhausted",t[t.FailedPrecondition=9]="FailedPrecondition",t[t.Aborted=10]="Aborted",t[t.OutOfRange=11]="OutOfRange",t[t.Unimplemented=12]="Unimplemented",t[t.Internal=13]="Internal",t[t.Unavailable=14]="Unavailable",t[t.DataLoss=15]="DataLoss",t[t.Unauthenticated=16]="Unauthenticated"})(v||(v={}));function ct(t){let e=v[t];return typeof e!="string"?t.toString():e[0].toLowerCase()+e.substring(1).replace(/[A-Z]/g,n=>"_"+n.toLowerCase())}var Wn;function pr(t){if(!Wn){Wn={};for(let e of Object.values(v))typeof e!="string"&&(Wn[ct(e)]=e)}return Wn[t]}var X=class t extends Error{constructor(e,n=v.Unknown,o,r,i){super(Bc(e,n)),this.name="ConnectError",Object.setPrototypeOf(this,new.target.prototype),this.rawMessage=e,this.code=n,this.metadata=new Headers(o??{}),this.details=r??[],this.cause=i}static from(e,n=v.Unknown){return e instanceof t?e:e instanceof Error?e.name=="AbortError"||e.name=="TimeoutError"?new t(e.message,v.Canceled):new t(e.message,n,void 0,void 0,e):new t(String(e),n,void 0,void 0,e)}static[Symbol.hasInstance](e){return e instanceof Error?Object.getPrototypeOf(e)===t.prototype?!0:e.name==="ConnectError"&&"code"in e&&typeof e.code=="number"&&"metadata"in e&&"details"in e&&Array.isArray(e.details)&&"rawMessage"in e&&typeof e.rawMessage=="string"&&"cause"in e:!1}findDetails(e){let n=e.kind==="message"?{getMessage:r=>r===e.typeName?e:void 0}:e,o=[];for(let r of this.details){if("desc"in r){n.getMessage(r.desc.typeName)&&o.push(P(r.desc,r.value));continue}let i=n.getMessage(r.type);if(i)try{o.push(ye(i,r.value))}catch{}}return o}};function Bc(t,e){return t.length?`[${ct(e)}] ${t}`:`[${ct(e)}]`}function Tt(...t){let e=new Headers;for(let n of t)n.forEach((o,r)=>{e.append(r,o)});return e}function Rn(t,e){let n={};for(let o of t.methods){let r=e(o);r!=null&&(n[o.localName]=r)}return n}var dt=1;function kn(t,e,n=!1){if(e>t){let o=`message size is larger than configured readMaxBytes ${t}`;throw n&&(o=`message size ${e} is larger than configured readMaxBytes ${t}`),new X(o,v.ResourceExhausted)}}function Ua(t){return new hr(t)}var hr=class{constructor(e){this.readMaxBytes=e,this.header=new Uint8Array(5),this.headerView=new DataView(this.header.buffer),this.buf=[]}get byteLength(){return this.buf.reduce((e,n)=>e+n.byteLength,0)}decode(e){this.buf.push(e);let n=[];for(;;){let o=this.pop();if(!o)break;n.push(o)}return n}pop(){if(!(!this.env&&(this.env=this.head(),!this.env))&&this.cons(this.env.data)){let e=this.env;return this.env=void 0,e}}head(){if(!this.cons(this.header))return;let e=this.headerView.getUint8(0),n=this.headerView.getUint32(1);return kn(this.readMaxBytes,n,!0),{flags:e,data:new Uint8Array(n)}}cons(e){let n=e.byteLength;if(this.byteLength<n)return!1;let o=0;for(;o<n;){let r=this.buf.shift();r.byteLength>n-o?(e.set(r.subarray(0,n-o),o),this.buf.unshift(r.subarray(n-o)),o+=n-o):(e.set(r,o),o+=r.byteLength)}return!0}};function Jn(t){let e,n=Ua(4294967295);return new ReadableStream({start(){e=t.getReader()},async pull(o){let r=!1;for(;!r;){let i=await e.read();if(i.done)n.byteLength>0&&o.error(new X("protocol error: incomplete envelope",v.InvalidArgument)),o.close();else for(let a of n.decode(i.value))o.enqueue(a),r=!0}}})}function Ut(t,e){let n=new Uint8Array(e.length+5);n.set(e,5);let o=new DataView(n.buffer,n.byteOffset,n.byteLength);return o.setUint8(0,t),o.setUint32(1,e.length),n}var Wc=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],n;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(i){n[i]=t[i]&&function(a){return new Promise(function(s,l){a=t[i](a),r(s,l,a.done,a.value)})}}function r(i,a,s,l){Promise.resolve(l).then(function(c){i({value:c,done:s})},a)}},Dt=function(t){return this instanceof Dt?(this.v=t,this):new Dt(t)},Rc=function(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(t,e||[]),r,i=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",a),r[Symbol.asyncIterator]=function(){return this},r;function a(h){return function(b){return Promise.resolve(b).then(h,g)}}function s(h,b){o[h]&&(r[h]=function(W){return new Promise(function(Z,H){i.push([h,W,Z,H])>1||l(h,W)})},b&&(r[h]=b(r[h])))}function l(h,b){try{c(o[h](b))}catch(W){A(i[0][3],W)}}function c(h){h.value instanceof Dt?Promise.resolve(h.value.v).then(p,g):A(i[0][2],h)}function p(h){l("next",h)}function g(h){l("throw",h)}function A(h,b){h(b),i.shift(),i.length&&l(i[0][0],i[0][1])}},kc=function(t){var e,n;return e={},o("next"),o("throw",function(r){throw r}),o("return"),e[Symbol.iterator]=function(){return this},e;function o(r,i){e[r]=t[r]?function(a){return(n=!n)?{value:Dt(t[r](a)),done:!1}:i?i(a):a}:i}};function Ze(t){return Rc(this,arguments,function*(){yield Dt(yield*kc(Wc(t)))})}var Da=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],n;return e?e.call(t):(t=typeof __values=="function"?__values(t):t[Symbol.iterator](),n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n);function o(i){n[i]=t[i]&&function(a){return new Promise(function(s,l){a=t[i](a),r(s,l,a.done,a.value)})}}function r(i,a,s,l){Promise.resolve(l).then(function(c){i({value:c,done:s})},a)}},ut=function(t){return this instanceof ut?(this.v=t,this):new ut(t)},Jc=function(t){var e,n;return e={},o("next"),o("throw",function(r){throw r}),o("return"),e[Symbol.iterator]=function(){return this},e;function o(r,i){e[r]=t[r]?function(a){return(n=!n)?{value:ut(t[r](a)),done:!1}:i?i(a):a}:i}},Mc=function(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(t,e||[]),r,i=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",a),r[Symbol.asyncIterator]=function(){return this},r;function a(h){return function(b){return Promise.resolve(b).then(h,g)}}function s(h,b){o[h]&&(r[h]=function(W){return new Promise(function(Z,H){i.push([h,W,Z,H])>1||l(h,W)})},b&&(r[h]=b(r[h])))}function l(h,b){try{c(o[h](b))}catch(W){A(i[0][3],W)}}function c(h){h.value instanceof ut?Promise.resolve(h.value.v).then(p,g):A(i[0][2],h)}function p(h){l("next",h)}function g(h){l("throw",h)}function A(h,b){h(b),i.shift(),i.length&&l(i[0][0],i[0][1])}};function gr(t,e){return Rn(t,n=>{switch(n.methodKind){case"unary":return Fc(e,n);case"server_streaming":return Yc(e,n);case"client_streaming":return zc(e,n);case"bidi_streaming":return Nc(e,n);default:return null}})}function Fc(t,e){return async(n,o)=>{var r,i;let a=await t.unary(e,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);return(r=o?.onHeader)===null||r===void 0||r.call(o,a.header),(i=o?.onTrailer)===null||i===void 0||i.call(o,a.trailer),a.message}}function Yc(t,e){return(n,o)=>_a(t.stream(e,o?.signal,o?.timeoutMs,o?.headers,Ze([n]),o?.contextValues),o)}function zc(t,e){return async(n,o)=>{var r,i,a,s,l,c;let p=await t.stream(e,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues);(l=o?.onHeader)===null||l===void 0||l.call(o,p.header);let g,A=0;try{for(var h=!0,b=Da(p.message),W;W=await b.next(),r=W.done,!r;h=!0)s=W.value,h=!1,g=s,A++}catch(Z){i={error:Z}}finally{try{!h&&!r&&(a=b.return)&&await a.call(b)}finally{if(i)throw i.error}}if(!g)throw new X("protocol error: missing response message",v.Unimplemented);if(A>1)throw new X("protocol error: received extra messages for client streaming method",v.Unimplemented);return(c=o?.onTrailer)===null||c===void 0||c.call(o,p.trailer),g}}function Nc(t,e){return(n,o)=>_a(t.stream(e,o?.signal,o?.timeoutMs,o?.headers,n,o?.contextValues),o)}function _a(t,e){let n=(function(){return Mc(this,arguments,function*(){var o,r;let i=yield ut(t);(o=e?.onHeader)===null||o===void 0||o.call(e,i.header),yield ut(yield*Jc(Da(i.message))),(r=e?.onTrailer)===null||r===void 0||r.call(e,i.trailer)})})()[Symbol.asyncIterator]();return{[Symbol.asyncIterator]:()=>({next:()=>n.next()})}}function Mn(...t){let e=new AbortController,n=t.filter(r=>r!==void 0).concat(e.signal);for(let r of n){if(r.aborted){o.apply(r);break}r.addEventListener("abort",o)}function o(){e.signal.aborted||e.abort(_t(this));for(let r of n)r.removeEventListener("abort",o)}return e}function Fn(t){let e=new AbortController,n=()=>{e.abort(new X("the operation timed out",v.DeadlineExceeded))},o;return t!==void 0&&(t<=0?n():o=setTimeout(n,t)),{signal:e.signal,cleanup:()=>clearTimeout(o)}}function _t(t){if(!t.aborted)return;if(t.reason!==void 0)return t.reason;let e=new Error("This operation was aborted");return e.name="AbortError",e}function We(){return{get(t){return t.id in this?this[t.id]:t.defaultValue},set(t,e){return this[t.id]=e,this},delete(t){return delete this[t.id],this}}}function Qa(t,e,...n){if(n.length>0)throw new Error;return t.services[e]}var L="@bufbuild/protobuf",by={"google/protobuf/compiler/plugin.proto":L+"/wkt","google/protobuf/any.proto":L+"/wkt","google/protobuf/api.proto":L+"/wkt","google/protobuf/cpp_features.proto":L+"/wkt","google/protobuf/descriptor.proto":L+"/wkt","google/protobuf/duration.proto":L+"/wkt","google/protobuf/empty.proto":L+"/wkt","google/protobuf/field_mask.proto":L+"/wkt","google/protobuf/go_features.proto":L+"/wkt","google/protobuf/java_features.proto":L+"/wkt","google/protobuf/source_context.proto":L+"/wkt","google/protobuf/struct.proto":L+"/wkt","google/protobuf/timestamp.proto":L+"/wkt","google/protobuf/type.proto":L+"/wkt","google/protobuf/wrappers.proto":L+"/wkt"},yy={isMessage:{typeOnly:!1,bootstrapWktFrom:"../../is-message.js",from:L},Message:{typeOnly:!0,bootstrapWktFrom:"../../types.js",from:L},create:{typeOnly:!1,bootstrapWktFrom:"../../create.js",from:L},fromJson:{typeOnly:!1,bootstrapWktFrom:"../../from-json.js",from:L},fromJsonString:{typeOnly:!1,bootstrapWktFrom:"../../from-json.js",from:L},fromBinary:{typeOnly:!1,bootstrapWktFrom:"../../from-binary.js",from:L},toBinary:{typeOnly:!1,bootstrapWktFrom:"../../to-binary.js",from:L},toJson:{typeOnly:!1,bootstrapWktFrom:"../../to-json.js",from:L},toJsonString:{typeOnly:!1,bootstrapWktFrom:"../../to-json.js",from:L},protoInt64:{typeOnly:!1,bootstrapWktFrom:"../../proto-int64.js",from:L},JsonValue:{typeOnly:!0,bootstrapWktFrom:"../../json-value.js",from:L},JsonObject:{typeOnly:!0,bootstrapWktFrom:"../../json-value.js",from:L},codegen:{boot:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/boot.js",from:L+"/codegenv2"},fileDesc:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/file.js",from:L+"/codegenv2"},enumDesc:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/enum.js",from:L+"/codegenv2"},extDesc:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/extension.js",from:L+"/codegenv2"},messageDesc:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/message.js",from:L+"/codegenv2"},serviceDesc:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/service.js",from:L+"/codegenv2"},tsEnum:{typeOnly:!1,bootstrapWktFrom:"../../codegenv2/enum.js",from:L+"/codegenv2"},GenFile:{typeOnly:!0,bootstrapWktFrom:"../../codegenv2/types.js",from:L+"/codegenv2"},GenEnum:{typeOnly:!0,bootstrapWktFrom:"../../codegenv2/types.js",from:L+"/codegenv2"},GenExtension:{typeOnly:!0,bootstrapWktFrom:"../../codegenv2/types.js",from:L+"/codegenv2"},GenMessage:{typeOnly:!0,bootstrapWktFrom:"../../codegenv2/types.js",from:L+"/codegenv2"},GenService:{typeOnly:!0,bootstrapWktFrom:"../../codegenv2/types.js",from:L+"/codegenv2"}}};var Tc=F("CgxzdGF0dXMucHJvdG8SCmdvb2dsZS5ycGMiTgoGU3RhdHVzEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIlCgdkZXRhaWxzGAMgAygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueUJeCg5jb20uZ29vZ2xlLnJwY0ILU3RhdHVzUHJvdG9QAVo3Z29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9ycGMvc3RhdHVzO3N0YXR1c6ICA1JQQ2IGcHJvdG8z",[Ft]),Uc=d(Tc,0);function Ie(t,e){return t.toString().replace(/\/?$/,`/${e.parent.typeName}/${e.name}`)}function zn(t,e){return P(t,e)}function br(t,e){function n(o){return o.done===!0?o:{done:o.done,value:zn(t,o.value)}}return{[Symbol.asyncIterator](){let o=e[Symbol.asyncIterator](),r={next:()=>o.next().then(n)};return o.throw!==void 0&&(r.throw=i=>o.throw(i).then(n)),o.return!==void 0&&(r.return=i=>o.return(i).then(n)),r}}}function Nn(t,e){if(!e)return t;for(let n of e.concat().reverse())t=n(t);return t}function Ln(t){var e;let n=Object.assign({},t);return(e=n.ignoreUnknownFields)!==null&&e!==void 0||(n.ignoreUnknownFields=!0),n}function Qt(t,e,n,o){let r=e?Oa(t.input,o):ja(t.input,n);return{parse:(e?Oa(t.output,o):ja(t.output,n)).parse,serialize:r.serialize}}function Oa(t,e){return{parse(n){try{return ye(t,n,e)}catch(o){let r=o instanceof Error?o.message:String(o);throw new X(`parse binary: ${r}`,v.Internal)}},serialize(n){try{return we(t,n,e)}catch(o){let r=o instanceof Error?o.message:String(o);throw new X(`serialize binary: ${r}`,v.Internal)}}}}function ja(t,e){var n,o;let r=(n=e?.textEncoder)!==null&&n!==void 0?n:new TextEncoder,i=(o=e?.textDecoder)!==null&&o!==void 0?o:new TextDecoder,a=Ln(e);return{parse(s){try{let l=i.decode(s);return Ya(t,l,a)}catch(l){throw X.from(l,v.InvalidArgument)}},serialize(s){try{let l=Ra(t,s,a);return r.encode(l)}catch(l){throw X.from(l,v.Internal)}}}}var rs=/^application\/(connect\+)?(?:(json)(?:; ?charset=utf-?8)?|(proto))$/i;var _n="application/proto",Kn="application/json",Pn="application/connect+proto",Qn="application/connect+json";function On(t){let e=t?.match(rs);if(!e)return;let n=!!e[1],o=!!e[3];return{stream:n,binary:o}}function Ot(t,e,n){var o;if(e&&new Headers(e).forEach((s,l)=>n.metadata.append(l,s)),typeof t!="object"||t==null||Array.isArray(t))throw n;let r=n.code;"code"in t&&typeof t.code=="string"&&(r=(o=pr(t.code))!==null&&o!==void 0?o:r);let i=t.message;if(i!=null&&typeof i!="string")throw n;let a=new X(i??"",r,e);if("details"in t&&Array.isArray(t.details))for(let s of t.details){if(s===null||typeof s!="object"||Array.isArray(s)||typeof s.type!="string"||typeof s.value!="string")throw n;try{a.details.push({type:s.type,value:Me(s.value),debug:s.debug})}catch{throw n}}return a}var Gt=2;function wr(t){let e=new X("invalid end stream",v.Unknown),n;try{n=JSON.parse(typeof t=="string"?t:new TextDecoder().decode(t))}catch{throw e}if(typeof n!="object"||n==null||Array.isArray(n))throw e;let o=new Headers;if("metadata"in n){if(typeof n.metadata!="object"||n.metadata==null||Array.isArray(n.metadata))throw e;for(let[i,a]of Object.entries(n.metadata)){if(!Array.isArray(a)||a.some(s=>typeof s!="string"))throw e;for(let s of a)o.append(i,s)}}let r="error"in n&&n.error!=null?Ot(n.error,o,e):void 0;return{metadata:o,error:r}}var Re="Content-Type",jn="Content-Length",Fe="Content-Encoding";var jt="Accept-Encoding";var $n="Connect-Timeout-Ms",vt="Connect-Protocol-Version",Xr="User-Agent";function Wr(t){switch(t){case 400:return v.Internal;case 401:return v.Unauthenticated;case 403:return v.PermissionDenied;case 404:return v.Unimplemented;case 429:return v.Unavailable;case 502:return v.Unavailable;case 503:return v.Unavailable;case 504:return v.Unavailable;default:return v.Unknown}}function $t(t){let e=new Headers,n=new Headers;return t.forEach((o,r)=>{r.toLowerCase().startsWith("trailer-")?n.append(r.substring(8),o):e.append(r,o)}),[e,n]}var qt="1";function qn(t,e,n,o,r){let i=new Headers(o??{});return n!==void 0&&i.set($n,`${n}`),i.set(Re,t=="unary"?e?_n:Kn:e?Pn:Qn),i.set(vt,qt),!i.has(Xr)&&r&&i.set(Xr,"connect-es/2.1.1"),i}function eo(t,e,n,o){let r=o.get(Re),i=On(r);if(n!==200){let s=new X(`HTTP ${n}`,Wr(n),o);if(t=="unary"&&i&&!i.binary)return{isUnaryError:!0,unaryError:s};throw s}let a={binary:e,stream:t!=="unary"};if(i?.binary!==a.binary||i.stream!==a.stream)throw new X(`unsupported content type ${r}`,i===void 0?v.Unknown:v.Internal,o);return{isUnaryError:!1}}var ss="application/";function bd(t,e){return e?_e(t,"url"):encodeURIComponent(new TextDecoder().decode(t))}function to(t,e,n){let o=`?connect=v${qt}`,r=t.header.get(Re);r?.indexOf(ss)===0&&(o+="&encoding="+encodeURIComponent(r.slice(ss.length)));let i=t.header.get(Fe);i!==null&&i!=="identity"&&(o+="&compression="+encodeURIComponent(i),n=!0),n&&(o+="&base64=1"),o+="&message="+bd(e,n);let a=t.url+o,s=new Headers(t.header);for(let l of[vt,Re,jn,Fe,jt])s.delete(l);return Object.assign(Object.assign({},t),{requestMethod:"GET",url:a,header:s})}function Qe(t){let e=Nn(t.next,t.interceptors),[n,o,r]=ls(t),i=Object.assign(Object.assign({},t.req),{message:zn(t.req.method.input,t.req.message),signal:n});return e(i).then(a=>(r(),a),o)}function Oe(t){let e=Nn(t.next,t.interceptors),[n,o,r]=ls(t),i=Object.assign(Object.assign({},t.req),{message:br(t.req.method.input,t.req.message),signal:n}),a=!1;return n.addEventListener("abort",function(){var s,l;let c=t.req.message[Symbol.asyncIterator]();a||(s=c.throw)===null||s===void 0||s.call(c,this.reason).catch(()=>{}),(l=c.return)===null||l===void 0||l.call(c).catch(()=>{})}),e(i).then(s=>Object.assign(Object.assign({},s),{message:{[Symbol.asyncIterator](){let l=s.message[Symbol.asyncIterator]();return{next(){return l.next().then(c=>(c.done==!0&&(a=!0,r()),c),o)}}}}}),o)}function ls(t){let{signal:e,cleanup:n}=Fn(t.timeoutMs),o=Mn(t.signal,e);return[o.signal,function(i){let a=X.from(e.aborted?_t(e):i);return o.abort(a),n(),Promise.reject(a)},function(){n(),o.abort()}]}var z=F("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",[S,Mt,ir,Jt]),fv=d(z,0),bv=d(z,1),yv=d(z,2),Iv=d(z,3),Gv=d(z,4),vv=d(z,5),Av=d(z,6),xv=d(z,7),Cv=d(z,8),Sv=d(z,9),Zv=d(z,10),Vv=d(z,11),Ev=d(z,12),Bv=d(z,13),wv=d(z,14),Xv=d(z,15),Wv=d(z,16),Rv=d(z,17),kv=d(z,18),Jv=d(z,19),Mv=d(z,20),Fv=d(z,21),Yv=d(z,22),zv=d(z,23),Nv=d(z,24),Lv=d(z,25),Hv=d(z,26),Tv=d(z,27),Uv=d(z,28),Dv=d(z,29),_v=d(z,30),Kv=d(z,31),cs;(function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.IF_ZERO_VALUE=1]="IF_ZERO_VALUE",t[t.ALWAYS=3]="ALWAYS"})(cs||(cs={}));var Pv=M(z,0),ds;(function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.HTTP_HEADER_NAME=1]="HTTP_HEADER_NAME",t[t.HTTP_HEADER_VALUE=2]="HTTP_HEADER_VALUE"})(ds||(ds={}));var Qv=M(z,1),Ov=ae(z,0),jv=ae(z,1),$v=ae(z,2),qv=ae(z,3);var en=F("ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUJnCg5jb20uZ29vZ2xlLmFwaUIJSHR0cFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIER0FQSWIGcHJvdG8z"),nA=d(en,0),oA=d(en,1),rA=d(en,2);var Jr=F("Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCbgoOY29tLmdvb2dsZS5hcGlCEEFubm90YXRpb25zUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgRHQVBJYgZwcm90bzM",[en,S]),cA=ae(Jr,0);var Mr=F("Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQloKDmNvbS5nb29nbGUuYXBpQhBMYXVuY2hTdGFnZVByb3RvUAFaLWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpO2FwaaICBEdBUEliBnByb3RvMw"),us;(function(t){t[t.LAUNCH_STAGE_UNSPECIFIED=0]="LAUNCH_STAGE_UNSPECIFIED",t[t.UNIMPLEMENTED=6]="UNIMPLEMENTED",t[t.PRELAUNCH=7]="PRELAUNCH",t[t.EARLY_ACCESS=1]="EARLY_ACCESS",t[t.ALPHA=2]="ALPHA",t[t.BETA=3]="BETA",t[t.GA=4]="GA",t[t.DEPRECATED=5]="DEPRECATED"})(us||(us={}));var mA=M(Mr,0);var q=F("Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIkEKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKbAgoOUHl0aG9uU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEk4KFWV4cGVyaW1lbnRhbF9mZWF0dXJlcxgCIAEoCzIvLmdvb2dsZS5hcGkuUHl0aG9uU2V0dGluZ3MuRXhwZXJpbWVudGFsRmVhdHVyZXMahAEKFEV4cGVyaW1lbnRhbEZlYXR1cmVzEh0KFXJlc3RfYXN5bmNfaW9fZW5hYmxlZBgBIAEoCBInCh9wcm90b2J1Zl9weXRob25pY190eXBlc19lbmFibGVkGAIgASgIEiQKHHVudmVyc2lvbmVkX3BhY2thZ2VfZGlzYWJsZWQYAyABKAgiQgoMTm9kZVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyKqAwoORG90bmV0U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzEkkKEHJlbmFtZWRfc2VydmljZXMYAiADKAsyLy5nb29nbGUuYXBpLkRvdG5ldFNldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5EksKEXJlbmFtZWRfcmVzb3VyY2VzGAMgAygLMjAuZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkUmVzb3VyY2VzRW50cnkSGQoRaWdub3JlZF9yZXNvdXJjZXMYBCADKAkSIAoYZm9yY2VkX25hbWVzcGFjZV9hbGlhc2VzGAUgAygJEh4KFmhhbmR3cml0dGVuX3NpZ25hdHVyZXMYBiADKAkaNgoUUmVuYW1lZFNlcnZpY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZW5hbWVkUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJCCgxSdWJ5U2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIr8BCgpHb1NldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJFChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMisuZ29vZ2xlLmFwaS5Hb1NldHRpbmdzLlJlbmFtZWRTZXJ2aWNlc0VudHJ5GjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwIKDk1ldGhvZFNldHRpbmdzEhAKCHNlbGVjdG9yGAEgASgJEjwKDGxvbmdfcnVubmluZxgCIAEoCzImLmdvb2dsZS5hcGkuTWV0aG9kU2V0dGluZ3MuTG9uZ1J1bm5pbmcSHQoVYXV0b19wb3B1bGF0ZWRfZmllbGRzGAMgAygJGs0BCgtMb25nUnVubmluZxI1ChJpbml0aWFsX3BvbGxfZGVsYXkYASABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SHQoVcG9sbF9kZWxheV9tdWx0aXBsaWVyGAIgASgCEjEKDm1heF9wb2xsX2RlbGF5GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEjUKEnRvdGFsX3BvbGxfdGltZW91dBgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbiJRChhTZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24SDwoHbWV0aG9kcxgBIAMoCRIkChxnZW5lcmF0ZV9vbWl0dGVkX2FzX2ludGVybmFsGAIgASgIKqMBChlDbGllbnRMaWJyYXJ5T3JnYW5pemF0aW9uEisKJ0NMSUVOVF9MSUJSQVJZX09SR0FOSVpBVElPTl9VTlNQRUNJRklFRBAAEgkKBUNMT1VEEAESBwoDQURTEAISCgoGUEhPVE9TEAMSDwoLU1RSRUVUX1ZJRVcQBBIMCghTSE9QUElORxAFEgcKA0dFTxAGEhEKDUdFTkVSQVRJVkVfQUkQBypnChhDbGllbnRMaWJyYXJ5RGVzdGluYXRpb24SKgomQ0xJRU5UX0xJQlJBUllfREVTVElOQVRJT05fVU5TUEVDSUZJRUQQABIKCgZHSVRIVUIQChITCg9QQUNLQUdFX01BTkFHRVIQFDpKChBtZXRob2Rfc2lnbmF0dXJlEh4uZ29vZ2xlLnByb3RvYnVmLk1ldGhvZE9wdGlvbnMYmwggAygJUg9tZXRob2RTaWduYXR1cmU6QwoMZGVmYXVsdF9ob3N0Eh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJkIIAEoCVILZGVmYXVsdEhvc3Q6QwoMb2F1dGhfc2NvcGVzEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGJoIIAEoCVILb2F1dGhTY29wZXM6RAoLYXBpX3ZlcnNpb24SHy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMYwbqr+gEgASgJUgphcGlWZXJzaW9uQmkKDmNvbS5nb29nbGUuYXBpQgtDbGllbnRQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICBEdBUEliBnByb3RvMw",[Mr,S,Mt]),bA=d(q,0),yA=d(q,1),IA=d(q,2),GA=d(q,3),vA=d(q,4),AA=d(q,5),xA=d(q,6),CA=d(q,6,0),SA=d(q,7),ZA=d(q,8),VA=d(q,9),EA=d(q,10),BA=d(q,11),wA=d(q,11,0),XA=d(q,12),ms;(function(t){t[t.CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED=0]="CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED",t[t.CLOUD=1]="CLOUD",t[t.ADS=2]="ADS",t[t.PHOTOS=3]="PHOTOS",t[t.STREET_VIEW=4]="STREET_VIEW",t[t.SHOPPING=5]="SHOPPING",t[t.GEO=6]="GEO",t[t.GENERATIVE_AI=7]="GENERATIVE_AI"})(ms||(ms={}));var WA=M(q,0),ps;(function(t){t[t.CLIENT_LIBRARY_DESTINATION_UNSPECIFIED=0]="CLIENT_LIBRARY_DESTINATION_UNSPECIFIED",t[t.GITHUB=10]="GITHUB",t[t.PACKAGE_MANAGER=20]="PACKAGE_MANAGER"})(ps||(ps={}));var RA=M(q,1),kA=ae(q,0),JA=ae(q,1),MA=ae(q,2),FA=ae(q,3);var Fr=F("Ciptb2NoYWJ1Z2FwaXMvYWRhcHQvZ3JhcGgvc2lnbmFsX2RhdGEucHJvdG8SGG1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaCKmCgoKU2lnbmFsRGF0YRL3BQoIZmlsZW5hbWUYASABKAlC3wW6SNsFugGvAQobZmlsZW5hbWUubm9fcGF0aF9zZXBhcmF0b3JzEmNGaWxlbmFtZSBjYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKCcvJyBvciAnXCcpLiBVc2Ugb25seSB0aGUgZmlsZW5hbWUgd2l0aG91dCBkaXJlY3RvcnkgcGF0aC4aKyF0aGlzLmNvbnRhaW5zKCcvJykgJiYgIXRoaXMuY29udGFpbnMoJ1xcJym6AbsBCh5maWxlbmFtZS5ub19jb250cm9sX2NoYXJhY3RlcnMSOUZpbGVuYW1lIGNhbm5vdCBjb250YWluIGNvbnRyb2wgY2hhcmFjdGVycyBvciBudWxsIGJ5dGVzLhpeIXRoaXMuY29udGFpbnMoJ1x4MDAnKSAmJiAhdGhpcy5jb250YWlucygnXG4nKSAmJiAhdGhpcy5jb250YWlucygnXHInKSAmJiAhdGhpcy5jb250YWlucygnXHQnKboBbQonZmlsZW5hbWUubm9fbGVhZGluZ190cmFpbGluZ193aGl0ZXNwYWNlEi1GaWxlbmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4aE3RoaXMgPT0gdGhpcy50cmltKCm6AdMBChxmaWxlbmFtZS5ub193aW5kb3dzX3Jlc2VydmVkEmpGaWxlbmFtZSBjYW5ub3QgYmUgYSBXaW5kb3dzIHJlc2VydmVkIG5hbWUgKENPTiwgUFJOLCBBVVgsIE5VTCwgQ09NMS05LCBMUFQxLTkpIHdpdGggb3Igd2l0aG91dCBleHRlbnNpb24uGkchdGhpcy5tYXRjaGVzKCdeKD9pKShDT058UFJOfEFVWHxOVUx8Q09NWzEtOV18TFBUWzEtOV0pKD86XFwuW14uXSopPyQnKXIgEAEY/wEyGV5bXi88PjoifD8qXHgwMC1ceDFGXFxdKyRIAIgBARKCBAoJbWltZV90eXBlGAIgASgJQu4DukjqA7oByQEKFm1pbWVfdHlwZS5ub193aWxkY2FyZHMSmQFNSU1FIHR5cGUgd2lsZGNhcmRzIGFyZSBub3QgYWxsb3dlZCBpbiBTaWduYWxEYXRhLiBVc2UgYSBjb25jcmV0ZSBNSU1FIHR5cGUgbGlrZSAnaW1hZ2UvcG5nJyBvciAnYXBwbGljYXRpb24vcGRmJywgbm90IHdpbGRjYXJkcyBsaWtlICdpbWFnZS8qJyBvciAnKi8qJy4aEyF0aGlzLmNvbnRhaW5zKCcqJym6Ab8BChdtaW1lX3R5cGUubm9fcGFyYW1ldGVycxKOAU1JTUUgdHlwZSBwYXJhbWV0ZXJzIGFyZSBub3QgYWxsb3dlZC4gVXNlICd0ZXh0L3BsYWluJyBpbnN0ZWFkIG9mICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04Jy4gVVRGLTggZW5jb2RpbmcgaXMgYXNzdW1lZCBmb3IgYWxsIHRleHQgZm9ybWF0cy4aEyF0aGlzLmNvbnRhaW5zKCc7JylyWBADGP8BMlFeW2EtekEtWjAtOV1bYS16QS1aMC05ISMkJlwtXl8uK117MCwxMjZ9L1thLXpBLVowLTldW2EtekEtWjAtOSEjJCZcLV5fLitdezAsMTI2fSQSDAoEZGF0YRgDIAEoDEILCglfZmlsZW5hbWViBnByb3RvMw",[z]),Yr=d(Fr,0);var Y=F("CjNtb2NoYWJ1Z2FwaXMvYWRhcHQvYXV0b21hdGlvbnMvdjEvYXV0b21hdGlvbnMucHJvdG8SIW1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MSIwChZDcmVhdGVDaGFsbGVuZ2VSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIqIBChdDcmVhdGVDaGFsbGVuZ2VSZXNwb25zZRINCgVjb3VudBgBIAEoDRIMCgRzaXplGAIgASgNEhIKCmRpZmZpY3VsdHkYAyABKA0SKwoHZXhwaXJlcxgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFdG9rZW4YBSABKAkSGgoSdmVyaWZpY2F0aW9uX3Rva2VuGAYgASgJIngKFlJlZGVlbUNoYWxsZW5nZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSJgoSdmVyaWZpY2F0aW9uX3Rva2VuGAIgASgJQgq6SAdyBRABGNAPEh4KCXNvbHV0aW9ucxgDIAMoA0ILukgIkgEFCAEQ6AciVQoXUmVkZWVtQ2hhbGxlbmdlUmVzcG9uc2USDQoFdG9rZW4YASABKAkSKwoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLwoVSW5oZXJpdFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDImUKFkluaGVyaXRTZXNzaW9uUmVzcG9uc2USDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyKvAQoRUmVhZE91dHB1dFJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEikKBnZlcnRleBgDIAEoCUIUukgRcg8yDV5bMC05YS16XXs0fSRIAIgBARIhCgpuZXdlcl90aGFuGAQgASgJQgi6SAVyA7ABAUgBiAEBQgkKB192ZXJ0ZXhCDQoLX25ld2VyX3RoYW4iywEKElJlYWRPdXRwdXRSZXNwb25zZRI7CgdzZXNzaW9uGAEgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb24SOgoHb3V0cHV0cxgCIAMoCzIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQSJwoQbmV4dF9wYWdlX2N1cnNvchgDIAEoCUIIukgFcgOwAQFIAIgBAUITChFfbmV4dF9wYWdlX2N1cnNvciJ3Cg9SZWFkVXJsc1JlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSGgoJcGFnZV9zaXplGAIgASgNQge6SAQqAhhkEiEKCm5ld2VyX3RoYW4YAyABKAlCCLpIBXIDsAEBSACIAQFCDQoLX25ld2VyX3RoYW4iwwEKEFJlYWRVcmxzUmVzcG9uc2USOwoHc2Vzc2lvbhgBIAEoCzIqLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TZXNzaW9uEjQKBHVybHMYAiADKAsyJi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsEicKEG5leHRfcGFnZV9jdXJzb3IYAyABKAlCCLpIBXIDsAEBSACIAQFCEwoRX25leHRfcGFnZV9jdXJzb3IikQMKE1N0YXJ0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSOwoLdHJhbnNtaXR0ZXIYAiABKAlCIbpIHnIcEAEYZDIWXlthLXpBLVowLTlfLV17MSwxMDB9JEgAiAEBEoABCgdzaWduYWxzGAMgAygLMkMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlcXVlc3QuU2lnbmFsc0VudHJ5Qiq6SCeaASQiInIgEAEYZDIaXltfJGEtekEtWl1bXyRhLXpBLVowLTldKiQSKAoPY2hhbGxlbmdlX3Rva2VuGAQgASgJQgq6SAdyBRABGPQDSAGIAQEaVAoMU2lnbmFsc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhOgI4AUIOCgxfdHJhbnNtaXR0ZXJCEgoQX2NoYWxsZW5nZV90b2tlbiJjChRTdGFydFNlc3Npb25SZXNwb25zZRINCgV0b2tlbhgBIAEoCRIwCgdleHBpcmVzGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQgoKCF9leHBpcmVzIlIKElN0b3BTZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxIbCgRmb3JrGAIgASgJQgi6SAVyAxjoB0gAiAEBQgcKBV9mb3JrIhUKE1N0b3BTZXNzaW9uUmVzcG9uc2UiKwoRR2V0U2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiWQoSR2V0U2Vzc2lvblJlc3BvbnNlEkMKB3Nlc3Npb24YASABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkIGukgDyAEBIukBCgZPdXRwdXQSDgoGdmVydGV4GAEgASgJEgwKBGZvcmsYAiABKAkSQQoEZGF0YRgDIAMoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5PdXRwdXQuRGF0YUVudHJ5EisKB2NyZWF0ZWQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGlEKCURhdGFFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5tb2NoYWJ1Z2FwaXMuYWRhcHQuZ3JhcGguU2lnbmFsRGF0YToCOAEiCwoJVXJsUmV0YWluIjwKCFVybENsb3NlEhwKD3RpbWVvdXRfc2Vjb25kcxgBIAEoBUgAiAEBQhIKEF90aW1lb3V0X3NlY29uZHMiDAoKVXJsUmVjeWNsZSLvAgoDVXJsEgsKA3VybBgBIAEoCRIMCgRmb3JrGAIgASgJEg4KBnZlcnRleBgDIAEoCRIMCgRkb25lGAQgASgIEisKB2NyZWF0ZWQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXRva2VuGAYgASgJEg8KB3N0b3BwZWQYByABKAgSDgoGc291cmNlGAggASgJEj4KBnJldGFpbhgJIAEoCzIsLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxSZXRhaW5IABI8CgVjbG9zZRgKIAEoCzIrLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxDbG9zZUgAEkAKB3JlY3ljbGUYCyABKAsyLS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuVXJsUmVjeWNsZUgAQhIKEHJldGVudGlvbl9wb2xpY3kiUgoHU2Vzc2lvbhIMCgRmb3JrGAEgASgJEjkKBnN0YXR1cxgCIAEoDjIpLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5TdGF0dXMiLgoUU3RyZWFtU2Vzc2lvblJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMiSQoRQWNrTWVzc2FnZVJlcXVlc3QSFgoCaWQYASABKAlCCrpIB3IFEAEY9AMSHAoKbWVzc2FnZV9pZBgCIAEoCUIIukgFcgOwAQEiFAoSQWNrTWVzc2FnZVJlc3BvbnNlIhIKEFJlY29ubmVjdE1lc3NhZ2Ui6wEKFVN0cmVhbVNlc3Npb25SZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESOwoGb3V0cHV0GAIgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dEgAEjUKA3VybBgDIAEoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxIABI9CgdzZXNzaW9uGAQgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb25IAEIJCgdtZXNzYWdlIowDChFSdW5TZXNzaW9uUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxI7Cgt0cmFuc21pdHRlchgCIAEoCUIhukgechwQARhkMhZeW2EtekEtWjAtOV8tXXsxLDEwMH0kSACIAQESfgoHc2lnbmFscxgDIAMoCzJBLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVxdWVzdC5TaWduYWxzRW50cnlCKrpIJ5oBJCIiciAQARhkMhpeW18kYS16QS1aXVtfJGEtekEtWjAtOV0qJBIoCg9jaGFsbGVuZ2VfdG9rZW4YBCABKAlCCrpIB3IFEAEY9ANIAYgBARpUCgxTaWduYWxzRW50cnkSCwoDa2V5GAEgASgJEjMKBXZhbHVlGAIgASgLMiQubW9jaGFidWdhcGlzLmFkYXB0LmdyYXBoLlNpZ25hbERhdGE6AjgBQg4KDF90cmFuc21pdHRlckISChBfY2hhbGxlbmdlX3Rva2VuIrECChJSdW5TZXNzaW9uUmVzcG9uc2USFAoCaWQYASABKAlCCLpIBXIDsAEBEkcKB3N0YXJ0ZWQYAiABKAsyNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuU2Vzc2lvblN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UiYAoRUnVuU2Vzc2lvblN0YXJ0ZWQSDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyIrChFSdW5Jbmhlcml0UmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AyKzAgoSUnVuSW5oZXJpdFJlc3BvbnNlEhQKAmlkGAEgASgJQgi6SAVyA7ABARJJCglpbmhlcml0ZWQYAiABKAsyNC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUnVuSW5oZXJpdFN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAQgkKB21lc3NhZ2UiYAoRUnVuSW5oZXJpdFN0YXJ0ZWQSDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyItChNXYXRjaFNlc3Npb25SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIrQCChRXYXRjaFNlc3Npb25SZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESOwoGb3V0cHV0GAIgASgLMikubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLk91dHB1dEgAEjUKA3VybBgDIAEoCzImLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5VcmxIABI9CgdzZXNzaW9uGAQgASgLMioubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlNlc3Npb25IABJICglyZWNvbm5lY3QYBSABKAsyMy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUmVjb25uZWN0TWVzc2FnZUgAQgkKB21lc3NhZ2UiiAMKD1dhdGNoUnVuUmVxdWVzdBIWCgJpZBgBIAEoCUIKukgHcgUQARj0AxI7Cgt0cmFuc21pdHRlchgCIAEoCUIhukgechwQARhkMhZeW2EtekEtWjAtOV8tXXsxLDEwMH0kSACIAQESfAoHc2lnbmFscxgDIAMoCzI/Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5XYXRjaFJ1blJlcXVlc3QuU2lnbmFsc0VudHJ5Qiq6SCeaASQiInIgEAEYZDIaXltfJGEtekEtWl1bXyRhLXpBLVowLTldKiQSKAoPY2hhbGxlbmdlX3Rva2VuGAQgASgJQgq6SAdyBRABGPQDSAGIAQEaVAoMU2lnbmFsc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLm1vY2hhYnVnYXBpcy5hZGFwdC5ncmFwaC5TaWduYWxEYXRhOgI4AUIOCgxfdHJhbnNtaXR0ZXJCEgoQX2NoYWxsZW5nZV90b2tlbiL3AgoQV2F0Y2hSdW5SZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESRQoHc3RhcnRlZBgCIAEoCzIyLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5XYXRjaFJ1blN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAEkgKCXJlY29ubmVjdBgGIAEoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWNvbm5lY3RNZXNzYWdlSABCCQoHbWVzc2FnZSJeCg9XYXRjaFJ1blN0YXJ0ZWQSDQoFdG9rZW4YASABKAkSMAoHZXhwaXJlcxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIKCghfZXhwaXJlcyItChNXYXRjaEluaGVyaXRSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAdyBRABGPQDIoEDChRXYXRjaEluaGVyaXRSZXNwb25zZRIUCgJpZBgBIAEoCUIIukgFcgOwAQESSwoJaW5oZXJpdGVkGAIgASgLMjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLldhdGNoSW5oZXJpdFN0YXJ0ZWRIABI7CgZvdXRwdXQYAyABKAsyKS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuT3V0cHV0SAASNQoDdXJsGAQgASgLMiYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlVybEgAEj0KB3Nlc3Npb24YBSABKAsyKi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU2Vzc2lvbkgAEkgKCXJlY29ubmVjdBgGIAEoCzIzLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SZWNvbm5lY3RNZXNzYWdlSABCCQoHbWVzc2FnZSJiChNXYXRjaEluaGVyaXRTdGFydGVkEg0KBXRva2VuGAEgASgJEjAKB2V4cGlyZXMYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCgoIX2V4cGlyZXMqyAEKBlN0YXR1cxIWChJTVEFUVVNfVU5TUEVDSUZJRUQQABISCg5TVEFUVVNfUlVOTklORxABEhIKDlNUQVRVU19TVE9QUEVEEAISEwoPU1RBVFVTX1NUT1BQSU5HEAMSFAoQU1RBVFVTX0NPTVBMRVRFRBAEEhIKDlNUQVRVU19FWFBJUkVEEAUSEgoOU1RBVFVTX0VSUk9SRUQQBhIVChFTVEFUVVNfREVMRUdBVElORxAHEhQKEFNUQVRVU19ERUxFR0FURUQQCDLJFQoRQXV0b21hdGlvblNlcnZpY2USswEKD0NyZWF0ZUNoYWxsZW5nZRI5Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5DcmVhdGVDaGFsbGVuZ2VSZXF1ZXN0GjoubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkNyZWF0ZUNoYWxsZW5nZVJlc3BvbnNlIimC0+STAiM6ASoiHi92MS9hdXRvbWF0aW9ucy97aWR9L2NoYWxsZW5nZRK6AQoPUmVkZWVtQ2hhbGxlbmdlEjkubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlZGVlbUNoYWxsZW5nZVJlcXVlc3QaOi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUmVkZWVtQ2hhbGxlbmdlUmVzcG9uc2UiMILT5JMCKjoBKiIlL3YxL2F1dG9tYXRpb25zL3tpZH0vY2hhbGxlbmdlL3JlZGVlbRKuAQoMU3RhcnRTZXNzaW9uEjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0YXJ0U2Vzc2lvblJlcXVlc3QaNy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RhcnRTZXNzaW9uUmVzcG9uc2UiLYLT5JMCJzoBKiIiL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9zdGFydBKiAQoLU3RvcFNlc3Npb24SNS5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuU3RvcFNlc3Npb25SZXF1ZXN0GjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0b3BTZXNzaW9uUmVzcG9uc2UiJILT5JMCHiocL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbhK2AQoOSW5oZXJpdFNlc3Npb24SOC5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuSW5oZXJpdFNlc3Npb25SZXF1ZXN0GjkubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkluaGVyaXRTZXNzaW9uUmVzcG9uc2UiL4LT5JMCKToBKiIkL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9pbmhlcml0Ep8BCgpHZXRTZXNzaW9uEjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkdldFNlc3Npb25SZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkdldFNlc3Npb25SZXNwb25zZSIkgtPkkwIeEhwvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uEqYBCgpSZWFkT3V0cHV0EjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRPdXRwdXRSZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRPdXRwdXRSZXNwb25zZSIrgtPkkwIlEiMvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL291dHB1dBKeAQoIUmVhZFVybHMSMi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuUmVhZFVybHNSZXF1ZXN0GjMubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlJlYWRVcmxzUmVzcG9uc2UiKYLT5JMCIxIhL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi91cmxzErEBCg1TdHJlYW1TZXNzaW9uEjcubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0cmVhbVNlc3Npb25SZXF1ZXN0GjgubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLlN0cmVhbVNlc3Npb25SZXNwb25zZSIrgtPkkwIlEiMvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL3N0cmVhbTABEqYBCgpBY2tNZXNzYWdlEjQubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkFja01lc3NhZ2VSZXF1ZXN0GjUubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLkFja01lc3NhZ2VSZXNwb25zZSIrgtPkkwIlOgEqIiAvdjEvYXV0b21hdGlvbnMve2lkfS9zZXNzaW9uL2FjaxKoAQoKUnVuU2Vzc2lvbhI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5TZXNzaW9uUmVzcG9uc2UiK4LT5JMCJToBKiIgL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9ydW4wARKwAQoKUnVuSW5oZXJpdBI0Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0UmVxdWVzdBo1Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5SdW5Jbmhlcml0UmVzcG9uc2UiM4LT5JMCLToBKiIoL3YxL2F1dG9tYXRpb25zL3tpZH0vc2Vzc2lvbi9ydW4taW5oZXJpdDABEqgBCgxXYXRjaFNlc3Npb24SNi5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuV2F0Y2hTZXNzaW9uUmVxdWVzdBo3Lm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5XYXRjaFNlc3Npb25SZXNwb25zZSIlgtPkkwIfOgEqIhovdjEvYXV0b21hdGlvbnMve2lkfS93YXRjaDABEqABCghXYXRjaFJ1bhIyLm1vY2hhYnVnYXBpcy5hZGFwdC5hdXRvbWF0aW9ucy52MS5XYXRjaFJ1blJlcXVlc3QaMy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuV2F0Y2hSdW5SZXNwb25zZSIpgtPkkwIjOgEqIh4vdjEvYXV0b21hdGlvbnMve2lkfS93YXRjaC1ydW4wARKwAQoMV2F0Y2hJbmhlcml0EjYubW9jaGFidWdhcGlzLmFkYXB0LmF1dG9tYXRpb25zLnYxLldhdGNoSW5oZXJpdFJlcXVlc3QaNy5tb2NoYWJ1Z2FwaXMuYWRhcHQuYXV0b21hdGlvbnMudjEuV2F0Y2hJbmhlcml0UmVzcG9uc2UiLYLT5JMCJzoBKiIiL3YxL2F1dG9tYXRpb25zL3tpZH0vd2F0Y2gtaW5oZXJpdDABGokBykEWYWRhcHQubW9jaGFidWdhcGlzLmNvbdJBbWh0dHBzOi8vd3d3Lm1vY2hhYnVnYXBpcy5jb20vYXV0aC9hZGFwdC5hdXRvbWF0aW9ucyxodHRwczovL3d3dy5tb2NoYWJ1Z2FwaXMuY29tL2F1dGgvYWRhcHQuYXV0b21hdGlvbnMuc3RhcnRiBnByb3RvMw",[z,Jr,q,Jt,Fr]),PA=d(Y,0),QA=d(Y,1),OA=d(Y,2),jA=d(Y,3),$A=d(Y,4),qA=d(Y,5),ex=d(Y,6),tx=d(Y,7),nx=d(Y,8),ox=d(Y,9),hs=d(Y,10),rx=d(Y,11),ix=d(Y,12),ax=d(Y,13),sx=d(Y,14),lx=d(Y,15),cx=d(Y,16),dx=d(Y,17),ux=d(Y,18),mx=d(Y,19),px=d(Y,20),hx=d(Y,21),gx=d(Y,22),fx=d(Y,23),bx=d(Y,24),yx=d(Y,25),Ix=d(Y,26),Gx=d(Y,27),vx=d(Y,28),Ax=d(Y,29),xx=d(Y,30),Cx=d(Y,31),Sx=d(Y,32),Zx=d(Y,33),Vx=d(Y,34),gs=d(Y,35),Ex=d(Y,36),Bx=d(Y,37),fs=d(Y,38),wx=d(Y,39),Xx=d(Y,40),Ye;(function(t){t[t.UNSPECIFIED=0]="UNSPECIFIED",t[t.RUNNING=1]="RUNNING",t[t.STOPPED=2]="STOPPED",t[t.STOPPING=3]="STOPPING",t[t.COMPLETED=4]="COMPLETED",t[t.EXPIRED=5]="EXPIRED",t[t.ERRORED=6]="ERRORED",t[t.DELEGATING=7]="DELEGATING",t[t.DELEGATED=8]="DELEGATED"})(Ye||(Ye={}));var At=M(Y,0),zr=Qa(Y,0);var bs={webUrl:"https://adapt.mochabugapis.com/v1/automations",grpcUrl:"https://adapt-grpc.mochabugapis.com"},no={...bs};function oo(t){no={...no,...t}}function Nr(){return{...no}}function ro(){no={...bs}}function ys(t){switch(t.case){case"retain":return{case:"retain"};case"close":return{case:"close",timeoutSeconds:t.value?.timeoutSeconds};case"recycle":return{case:"recycle"};default:return}}var Sd=[Ye.STOPPED,Ye.COMPLETED,Ye.ERRORED,Ye.EXPIRED,Ye.DELEGATED];function Is(t,e,n){let o=n?.debug??!1,r=x=>({Authorization:`Bearer ${x}`}),i=(x,R,V)=>{if(!o&&x==="info")return;(x==="error"?console.error:x==="warn"?console.warn:console.log)(`[Adapt] ${R}`,V??"")},a=null,s=null,l=null,c=0,p=null,g=new Set,A=[],h=1e3,b=()=>{p&&(clearTimeout(p),p=null)},W=[v.NotFound,v.PermissionDenied,v.Unauthenticated,v.InvalidArgument,v.FailedPrecondition,v.ResourceExhausted],Z=x=>x instanceof X?!W.includes(x.code):!0,H=async(x,R=3)=>{for(let V=0;V<=R;V++)try{return await x()}catch(N){if(V===R||!Z(N))throw N;let U=Math.min(500*(1<<V),5e3);await new Promise(oe=>setTimeout(oe,Math.random()*U))}throw new Error("unreachable")},G=()=>{g.clear(),A.length=0},K=x=>{if(!g.has(x)){if(g.size>=h){let R=A.shift();g.delete(R)}g.add(x),A.push(x)}},Q=x=>g.has(x),ce=x=>{let{case:R,value:V}=x.message;switch(R){case"output":return s?.onOutput?.({vertex:V.vertex,fork:V.fork,data:V.data,created:pe(V.created)}),!1;case"url":return s?.onUrl?.({url:V.url,vertex:V.vertex,done:V.done,stopped:V.stopped,created:pe(V.created),token:V.token,fork:V.fork,source:V.source||void 0,retentionPolicy:ys(V.retentionPolicy)}),!1;case"session":{let N=Sd.includes(V.status)&&!V.fork,U=lt(At,V.status);return s?.onSession?.({status:U,fork:V.fork}),N&&i("info",`Session ended: ${U}`),N}case"reconnect":return i("info","Reconnect message received"),!1;case"started":case"inherited":throw new Error(`Unexpected '${R}' message in stream - should only be first message`);default:return i("warn",`Unknown message type: ${R}`),!1}},D=(x,R)=>{let V=Q(x.id);V||K(x.id);let N=V?!1:ce(x);return!N&&s&&x.message.case!=="reconnect"&&t.ackMessage({id:e,messageId:x.id},{headers:R}).catch(U=>i("error",`ACK failed: ${x.id}`,U)),N},ve=()=>{if(!s||!l)return;c++;let x=c===1?0:Math.min(50*Math.pow(2,c-2),3e4);i("info",`Reconnecting in ${x}ms (attempt ${c})`),p=setTimeout(()=>{p=null,He()},x)},He=async()=>{if(!s||!l)return;let x=new AbortController;a=x;let R=r(l);i("info",`Connecting to stream: ${e}`);let V=null,N=!1,U=()=>{N||(N=!0,c=0,V&&(clearTimeout(V),V=null))};try{let oe=t.watchSession({id:e},{signal:x.signal,headers:R});V=setTimeout(U,1e3);let j=!1;for await(let w of oe)if(U(),D(w,R)){j=!0;break}i("info","Stream ended normally"),!j&&s&&l&&(c=0,ve())}catch(oe){if(V&&(clearTimeout(V),V=null),x.signal.aborted)return;i("error","Stream error",oe),Z(oe)?ve():s?.onError?.(oe)}},tt=x=>{if(!x)return;let R={};for(let[V,N]of Object.entries(x))N?.data instanceof Uint8Array&&typeof N?.mimeType=="string"&&N.mimeType?R[V]=P(Yr,{data:N.data,mimeType:N.mimeType,filename:N.filename}):R[V]=P(Yr,{data:new TextEncoder().encode(JSON.stringify(N)),mimeType:"application/json"});return Object.keys(R).length>0?R:void 0};return{raw:t,async run(x){i("info","run",{transmitter:x?.transmitter}),a&&await this.unsubscribe();let R=P(gs,{id:e,transmitter:x?.transmitter,signals:tt(x?.signals),challengeToken:x?.challengeToken}),V=new AbortController;a=V,s=x??{},c=0;let N={...x?.authToken?r(x.authToken):{},"x-idempotency-key":crypto.randomUUID()},U,oe,j=new Promise((f,y)=>{U=f,oe=y}),w=async()=>{let f=t.watchRun(R,{signal:V.signal,headers:N}),y,I=null,E=!1,B=()=>{E||(E=!0,c=0,I&&(clearTimeout(I),I=null))};try{I=setTimeout(B,1e3);let C=!1;for await(let J of f){if(B(),!y){if(J.message.case!=="started"){oe(new Error("Expected started message as first response"));return}let k=J.message.value;y=k.token,l=y,i("info","run success",{token:y}),U({sessionToken:y,expiresAt:k.expires?pe(k.expires):void 0});continue}if(D(J,r(y))){C=!0;break}}i("info","Stream ended normally"),y&&!C&&s&&l&&(c=0,ve())}catch(C){if(I&&(clearTimeout(I),I=null),V.signal.aborted)return;if(i("error","Stream error",C),y)Z(C)?ve():s?.onError?.(C);else if(Z(C)){c++;let J=c===1?0:Math.min(50*Math.pow(2,c-2),3e4);i("info",`Retrying watchRun in ${J}ms (attempt ${c})`),J===0?w():p=setTimeout(()=>{p=null,w()},J)}else oe(C)}};w();try{return await j}catch(f){throw a=null,s=null,l=null,f}},async runInherit(x,R){i("info","runInherit"),a&&await this.unsubscribe();let V=new AbortController;a=V,s=R??{},c=0;let N=P(fs,{id:e}),U,oe,j=new Promise((f,y)=>{U=f,oe=y}),w=async()=>{let f=t.watchInherit(N,{signal:V.signal,headers:r(x)}),y,I=null,E=!1,B=()=>{E||(E=!0,c=0,I&&(clearTimeout(I),I=null))};try{I=setTimeout(B,1e3);let C=!1;for await(let J of f){if(B(),!y){if(J.message.case!=="inherited"){oe(new Error("Expected inherited message as first response"));return}let k=J.message.value;y=k.token,l=y,i("info","runInherit success",{token:y}),U({sessionToken:y,expiresAt:k.expires?pe(k.expires):void 0});continue}if(D(J,r(y))){C=!0;break}}i("info","Stream ended normally"),y&&!C&&s&&l&&(c=0,ve())}catch(C){if(I&&(clearTimeout(I),I=null),V.signal.aborted)return;if(i("error","Stream error",C),y)Z(C)?ve():s?.onError?.(C);else if(Z(C)){c++;let J=c===1?0:Math.min(50*Math.pow(2,c-2),3e4);i("info",`Retrying watchInherit in ${J}ms (attempt ${c})`),J===0?w():p=setTimeout(()=>{p=null,w()},J)}else oe(C)}};w();try{return await j}catch(f){throw a=null,s=null,l=null,f}},async start(x){i("info","start",{transmitter:x?.transmitter});let R=P(hs,{id:e,transmitter:x?.transmitter,signals:tt(x?.signals),challengeToken:x?.challengeToken}),V={...x?.authToken?r(x.authToken):{},"x-idempotency-key":crypto.randomUUID()},N=await H(()=>t.startSession(R,{headers:V}));return i("info","start success",{token:N.token}),{sessionToken:N.token,expiresAt:N.expires?pe(N.expires):void 0}},async inherit(x){i("info","inherit");let R=await H(()=>t.inheritSession({id:e},{headers:r(x)}));return i("info","inherit success",{token:R.token}),{sessionToken:R.token,expiresAt:R.expires?pe(R.expires):void 0}},async subscribe(x,R){i("info","subscribe"),a&&await this.unsubscribe(),l=x,s=R,c=0,await He()},async stop(x,R){i("info","stop",R?{fork:R}:void 0),await H(()=>t.stopSession({id:e,fork:R},{headers:r(x)})),i("info","stop success")},async unsubscribe(){i("info","unsubscribe"),b(),G(),a?.abort(),a=null,s=null,l=null},async getSession(x){i("info","getSession");let R=await H(()=>t.getSession({id:e},{headers:r(x)})),V={status:lt(At,R.session.status),fork:R.session.fork};return i("info","getSession success",V),V},async readOutput(x,R){i("info","readOutput",R);let V=await H(()=>t.readOutput({id:e,pageSize:R?.pageSize,vertex:R?.vertex,newerThan:R?.newerThan?.toISOString()},{headers:r(x)})),N={session:{status:lt(At,V.session.status),fork:V.session.fork},nextPageCursor:V.nextPageCursor,outputs:V.outputs.map(U=>({vertex:U.vertex,fork:U.fork,created:pe(U.created),data:Object.fromEntries(Object.entries(U.data).map(([oe,j])=>{if(j.mimeType==="application/json")try{return[oe,JSON.parse(new TextDecoder().decode(j.data))]}catch{return[oe,j]}return[oe,j]}))}))};return i("info","readOutput success",{outputCount:N.outputs.length}),N},async readOutputBinary(x,R){i("info","readOutputBinary",R);let V=await H(()=>t.readOutput({id:e,pageSize:R?.pageSize,vertex:R?.vertex,newerThan:R?.newerThan?.toISOString()},{headers:r(x)})),N={session:{status:lt(At,V.session.status),fork:V.session.fork},nextPageCursor:V.nextPageCursor,outputs:V.outputs.map(U=>({vertex:U.vertex,fork:U.fork,created:pe(U.created),data:U.data}))};return i("info","readOutputBinary success",{outputCount:N.outputs.length}),N},async readUrls(x,R){i("info","readUrls",R);let V=await H(()=>t.readUrls({id:e,pageSize:R?.pageSize,newerThan:R?.newerThan},{headers:r(x)})),N={session:{status:lt(At,V.session.status),fork:V.session.fork},nextPageCursor:V.nextPageCursor,urls:V.urls.map(U=>({url:U.url,vertex:U.vertex,done:U.done,stopped:U.stopped,created:pe(U.created),token:U.token,fork:U.fork,source:U.source||void 0,retentionPolicy:ys(U.retentionPolicy)}))};return i("info","readUrls success",{urlCount:N.urls.length}),N}}}function Lr(){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 tn=function(t){return this instanceof tn?(this.v=t,this):new tn(t)},Zd=function(t,e,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n.apply(t,e||[]),r,i=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),s("next"),s("throw"),s("return",a),r[Symbol.asyncIterator]=function(){return this},r;function a(h){return function(b){return Promise.resolve(b).then(h,g)}}function s(h,b){o[h]&&(r[h]=function(W){return new Promise(function(Z,H){i.push([h,W,Z,H])>1||l(h,W)})},b&&(r[h]=b(r[h])))}function l(h,b){try{c(o[h](b))}catch(W){A(i[0][3],W)}}function c(h){h.value instanceof tn?Promise.resolve(h.value.v).then(p,g):A(i[0][2],h)}function p(h){l("next",h)}function g(h){l("throw",h)}function A(h,b){h(b),i.shift(),i.length&&l(i[0][0],i[0][1])}},Gs={redirect:"error"};function Hr(t){var e;Lr();let n=(e=t.useBinaryFormat)!==null&&e!==void 0?e:!1;return{async unary(o,r,i,a,s,l){let{serialize:c,parse:p}=Qt(o,n,t.jsonOptions,t.binaryOptions);return i=i===void 0?t.defaultTimeoutMs:i<=0?void 0:i,await Qe({interceptors:t.interceptors,signal:r,timeoutMs:i,req:{stream:!1,service:o.parent,method:o,requestMethod:"POST",url:Ie(t.baseUrl,o),header:qn(o.methodKind,n,i,a,!1),contextValues:l??We(),message:s},next:async g=>{var A;let h=t.useHttpGet===!0&&o.idempotency===at.NO_SIDE_EFFECTS,b=null;h?g=to(g,c(g.message),n):b=c(g.message);let Z=await((A=t.fetch)!==null&&A!==void 0?A:globalThis.fetch)(g.url,Object.assign(Object.assign({},Gs),{method:g.requestMethod,headers:g.header,signal:g.signal,body:b})),{isUnaryError:H,unaryError:G}=eo(o.methodKind,n,Z.status,Z.headers);if(H)throw Ot(await Z.json(),Tt(...$t(Z.headers)),G);let[K,Q]=$t(Z.headers);return{stream:!1,service:o.parent,method:o,header:K,message:n?p(new Uint8Array(await Z.arrayBuffer())):wn(o.output,await Z.json(),Ln(t.jsonOptions)),trailer:Q}}})},async stream(o,r,i,a,s,l){let{serialize:c,parse:p}=Qt(o,n,t.jsonOptions,t.binaryOptions);function g(h,b,W,Z){return Zd(this,arguments,function*(){let G=Jn(h).getReader(),K=!1;for(;;){let Q=yield tn(G.read());if(Q.done)break;let{flags:ce,data:D}=Q.value;if((ce&dt)===dt)throw new X("protocol error: received unsupported compressed output",v.Internal);if((ce&Gt)===Gt){K=!0;let ve=wr(D);if(ve.error){let He=ve.error;throw W.forEach((tt,x)=>{He.metadata.append(x,tt)}),He}ve.metadata.forEach((He,tt)=>b.set(tt,He));continue}yield yield tn(p(D))}if("throwIfAborted"in Z&&Z.throwIfAborted(),!K)throw"missing EndStreamResponse"})}async function A(h){if(o.methodKind!="server_streaming")throw"The fetch API does not support streaming request bodies";let b=await h[Symbol.asyncIterator]().next();if(b.done==!0)throw"missing request message";return Ut(0,c(b.value))}return i=i===void 0?t.defaultTimeoutMs:i<=0?void 0:i,await Oe({interceptors:t.interceptors,timeoutMs:i,signal:r,req:{stream:!0,service:o.parent,method:o,requestMethod:"POST",url:Ie(t.baseUrl,o),header:qn(o.methodKind,n,i,a,!1),contextValues:l??We(),message:s},next:async h=>{var b;let Z=await((b=t.fetch)!==null&&b!==void 0?b:globalThis.fetch)(h.url,Object.assign(Object.assign({},Gs),{method:h.requestMethod,headers:h.header,signal:h.signal,body:await A(h.message)}));if(eo(o.methodKind,n,Z.status,Z.headers),Z.body===null)throw"missing response body";let H=new Headers;return Object.assign(Object.assign({},h),{header:Z.headers,trailer:H,message:g(Z.body,H,Z.headers,h.signal)})}})}}}function ao(t){if(!t.id)throw new Error('[adapt] createConnectClient requires "id" (the automation ID). Usage: createConnectClient({ id: "your-automation-id" })');let e=Nr(),n=Hr({baseUrl:`${e.webUrl}/${t.id}`,useBinaryFormat:!0});return gr(zr,n)}function As(t,e){return`${t}${e?`#mb_token=${encodeURIComponent(e)}`:""}`}var xs=`/* ==========================================================================
6
6
  Mochabug Adapt Web \u2014 Combined Styles
7
7
  Panel Manager CSS + Cap Widget CSS
8
8
  ========================================================================== */
@@ -890,7 +890,7 @@ html.mb-dragging webview {
890
890
  width: 28px;
891
891
  height: 28px;
892
892
  }
893
- }`;var ke=class{constructor(e){this.panelId="";this.resizeCapable=!1;this.host=e,this.element=document.createElement("div"),this.element.style.width="100%",this.element.style.height="100%",this.element.style.position="relative",this.iframe=this.createIframe(),this.element.appendChild(this.iframe)}get contentWindow(){return this.iframe.contentWindow}init(e,n){this.panelId=e,n.url&&(this.currentUrl=n.url,this.currentToken=n.token,this.setIframeSrc(n.url,n.token)),this.host.onComponentCreated(this.panelId,this)}update(e){if(e.url!==void 0){let n=e.url!==this.currentUrl,o=e.token!==this.currentToken;this.currentUrl=e.url,e.token!==void 0&&(this.currentToken=e.token),(n||o)&&(this.replaceIframe(),this.setIframeSrc(this.currentUrl,this.currentToken))}}dispose(){this.iframe.src="about:blank",this.host.onComponentDisposed(this.panelId)}postMessage(e,n){try{this.iframe.contentWindow?.postMessage(e,n)}catch{}}getOrigin(){if(!this.currentUrl)return null;try{return new URL(this.currentUrl).origin}catch{return null}}show(){this.iframe.classList.remove("mb-adapt__iframe--hidden"),this.iframe.offsetHeight,this.iframe.classList.add("mb-adapt__iframe--visible")}hide(){this.iframe.classList.remove("mb-adapt__iframe--visible"),this.iframe.classList.add("mb-adapt__iframe--hidden")}createIframe(){let e=document.createElement("iframe");return e.className=this.host.getClassNames()?.iframe||"mb-adapt__iframe",e.setAttribute("sandbox","allow-downloads allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-forms allow-modals"),e.setAttribute("allow","autoplay; geolocation; camera; microphone; fullscreen; display-capture; web-share"),e.src="about:blank",e.addEventListener("load",()=>{if(e.src&&e.src!=="about:blank"){let n=this.getOrigin();if(n)try{e.contentWindow?.postMessage({type:"adapt-darkMode",darkMode:this.host.getDarkMode()},n)}catch{}}}),e}setIframeSrc(e,n){let o=As(e,n);this.iframe.src!==o&&(this.resizeCapable=!1,this.iframe.style.height="",this.iframe.src=o),this.show()}replaceIframe(){let e=this.createIframe();this.element.replaceChild(e,this.iframe),this.iframe=e,this.resizeCapable=!1}},so='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9.5 2h4.5v4.5"/><path d="M14 2L8.5 7.5"/><path d="M12 9v4.5a1.5 1.5 0 01-1.5 1.5h-8A1.5 1.5 0 011 13.5v-8A1.5 1.5 0 012.5 4H7"/></svg>',co='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="1.5" y="2.5" width="13" height="11" rx="1.5"/><line x1="1.5" y1="6" x2="14.5" y2="6"/><circle cx="4" cy="4.25" r="0.75" fill="currentColor" stroke="none"/><circle cx="6.5" cy="4.25" r="0.75" fill="currentColor" stroke="none"/></svg>',Cs='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="4" y1="8" x2="12" y2="8"/></svg>',ze='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="2.5" width="11" height="11" rx="1.5"/></svg>',lo='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="1.5" y="4.5" width="10" height="10" rx="1.5"/><path d="M4.5 4.5V3a1.5 1.5 0 011.5-1.5h7A1.5 1.5 0 0115 3v7a1.5 1.5 0 01-1.5 1.5H12"/></svg>',Ur='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',Ss='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6.5 14H2V9.5"/><path d="M2 14l5.5-5.5"/><path d="M4 7V2.5A1.5 1.5 0 015.5 1h8A1.5 1.5 0 0115 2.5v8a1.5 1.5 0 01-1.5 1.5H9"/></svg>',je=class{constructor(){this.tabsContainer=null;this.panelManager=null;this.entries=new Map;this._onBarVisibilityChanged=null;this._allowDocking=!0;this.dragState=null}setAllowDocking(e){this._allowDocking=e}onBarVisibilityChanged(e){this._onBarVisibilityChanged=e}init(e,n){this.tabsContainer=e,this.panelManager=n}minimize(e,n,o){if(!this.tabsContainer||this.entries.has(e))return;n.hide();let r=this.createTab(e,o.panels.length,"floating");this.entries.set(e,{tab:r,overlay:n,group:o,mode:"floating"}),this.tabsContainer.appendChild(r),this.showBar()}minimizeDocked(e,n,o){if(!this.tabsContainer||this.entries.has(e))return;let r=n.element.getBoundingClientRect();n.element.style.display="none",(this.tabsContainer.parentElement??document.body).appendChild(n.element);let a=o.minimizeDocked(n),s=a?.direction??"right",c=s==="top"||s==="bottom"?r.height>0?r.height:void 0:r.width>0?r.width:void 0,p=this.createTab(e,n.panels.length,"docked");this.entries.set(e,{tab:p,overlay:null,group:n,mode:"docked",savedPosition:{direction:s,...a?.siblingGroupId&&{siblingGroupId:a.siblingGroupId},initialSize:c}}),this.tabsContainer.appendChild(p),this.showBar()}restore(e){let n=this.entries.get(e);!n||!this.panelManager||(n.mode==="floating"&&n.overlay?n.overlay.show():n.mode==="docked"&&(n.group.element.style.display="",this.panelManager.restoreDocked(n.group,n.savedPosition?.direction??"right",n.savedPosition?.initialSize,n.savedPosition?.siblingGroupId),n.group.location="grid"),n.tab.remove(),this.entries.delete(e),this.hideBarIfEmpty())}closeGroup(e){let n=this.entries.get(e);if(!n||!this.panelManager)return;n.mode==="floating"&&n.overlay?n.overlay.show():n.mode==="docked"&&(n.group.element.style.display=""),n.tab.remove(),this.entries.delete(e);let o=n.group.panels.slice();for(let r of o)this.panelManager.removePanel(r.id);this.hideBarIfEmpty()}isMinimized(e){return this.entries.has(e)}getMinimizedGroupIds(){return Array.from(this.entries.keys())}getEntry(e){return this.entries.get(e)}removeGroup(e){let n=this.entries.get(e);n&&(n.tab.remove(),this.entries.delete(e),this.hideBarIfEmpty())}dispose(){for(let e of this.entries.values())e.overlay&&e.overlay.show(),e.mode==="docked"&&(e.group.element.style.display="");this.entries.clear(),this.tabsContainer&&(this.tabsContainer.innerHTML="",this.tabsContainer.style.display="none")}showBar(){if(this.tabsContainer){let e=this.tabsContainer.style.display==="none";this.tabsContainer.style.display="flex",e&&this._onBarVisibilityChanged?.()}}hideBarIfEmpty(){if(this.entries.size===0&&this.tabsContainer){let e=this.tabsContainer.style.display!=="none";this.tabsContainer.style.display="none",e&&this._onBarVisibilityChanged?.()}}mergeMinimized(e,n){let o=this.entries.get(e),r=this.entries.get(n);if(!o||!r||!this.panelManager)return;o.mode==="floating"&&o.overlay?o.overlay.show():o.mode==="docked"&&(o.group.element.style.display=""),r.mode==="floating"&&r.overlay?r.overlay.show():r.mode==="docked"&&(r.group.element.style.display="",this.panelManager.restoreDocked(r.group,r.savedPosition?.direction??"right",r.savedPosition?.initialSize),r.group.location="grid");let i=o.group.panels.map(a=>a.id);for(let a of i)this.panelManager.movePanel(a,r.group.id);if(o.tab.remove(),this.entries.delete(e),r.tab.remove(),this.entries.delete(n),r.mode==="floating"&&r.overlay){let a=this.createTab(n,r.group.panels.length);this.entries.set(n,{...r,tab:a}),this.tabsContainer.appendChild(a),r.overlay.hide()}this.hideBarIfEmpty()}dockMinimized(e){let n=this.entries.get(e);!n||!this.panelManager||(n.mode==="floating"&&n.overlay?(n.overlay.show(),this.panelManager.dockGroup(e,"right")):n.mode==="docked"&&(n.group.element.style.display="",this.panelManager.restoreDocked(n.group,n.savedPosition?.direction??"right",n.savedPosition?.initialSize,n.savedPosition?.siblingGroupId),n.group.location="grid"),n.tab.remove(),this.entries.delete(e),this.hideBarIfEmpty())}createTab(e,n,o="floating"){let r=document.createElement("div");r.className="mb-adapt-minimized-tab",r.dataset.groupId=e;let i=document.createElement("span");if(i.className="mb-adapt-minimized-tab-label",i.innerHTML=Array(n).fill(co).join(""),r.appendChild(i),o==="floating"&&this._allowDocking){let l=document.createElement("button");l.className="mb-adapt-minimized-tab-action",l.title="Dock to main",l.innerHTML=Ss,l.addEventListener("click",c=>{c.stopPropagation(),this.dockMinimized(e)}),r.appendChild(l)}let a=document.createElement("button");a.className="mb-adapt-minimized-tab-action",a.title="Restore",a.innerHTML=ze,a.addEventListener("click",l=>{l.stopPropagation(),this.restore(e)}),r.appendChild(a);let s=document.createElement("button");return s.className="mb-adapt-minimized-tab-action",s.title="Close",s.innerHTML=Ur,s.addEventListener("click",l=>{l.stopPropagation(),this.closeGroup(e)}),r.appendChild(s),r.addEventListener("pointerdown",l=>{l.target.closest("button")||l.button===0&&(l.preventDefault(),this.onTabDragStart(e,r,l))}),r}onTabDragStart(e,n,o){if(this.dragState)return;this.dragState={groupId:e,tab:n,startX:o.clientX,startY:o.clientY,isDragging:!1,ghost:null,highlightedTab:null};let r=s=>{if(!this.dragState)return;if(!this.dragState.isDragging){let c=s.clientX-this.dragState.startX,p=s.clientY-this.dragState.startY;if(c*c+p*p<25)return;this.dragState.isDragging=!0,this.dragState.ghost=this.createDragGhost(e),document.body.appendChild(this.dragState.ghost),this.dragState.tab.style.opacity="0.4"}this.dragState.ghost.style.left=`${s.clientX+8}px`,this.dragState.ghost.style.top=`${s.clientY+8}px`;let l=this.findDropTarget(s.clientX,s.clientY,e);this.dragState.highlightedTab!==l&&(this.dragState.highlightedTab?.classList.remove("mb-adapt-minimized-tab--drop-target"),l?.classList.add("mb-adapt-minimized-tab--drop-target"),this.dragState.highlightedTab=l)},i=s=>{if(document.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i),document.removeEventListener("pointercancel",a),!!this.dragState){if(this.dragState.ghost?.remove(),this.dragState.tab.style.opacity="",this.dragState.highlightedTab?.classList.remove("mb-adapt-minimized-tab--drop-target"),this.dragState.isDragging){let l=this.findDropTarget(s.clientX,s.clientY,e);if(l){let c=l.dataset.groupId;c&&c!==e&&this.mergeMinimized(e,c)}}this.dragState=null}},a=()=>{document.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i),document.removeEventListener("pointercancel",a),this.dragState&&(this.dragState.ghost?.remove(),this.dragState.tab.style.opacity="",this.dragState.highlightedTab?.classList.remove("mb-adapt-minimized-tab--drop-target")),this.dragState=null};document.addEventListener("pointermove",r),document.addEventListener("pointerup",i),document.addEventListener("pointercancel",a)}createDragGhost(e){let n=this.entries.get(e),o=document.createElement("div");return o.className="mb-drag-ghost",o.textContent=n?.group.panels.map(r=>r.title||"Panel").join(" \xB7 ")??e,o}findDropTarget(e,n,o){if(!this.tabsContainer)return null;let r=this.tabsContainer.querySelectorAll(".mb-adapt-minimized-tab");for(let i of r){let a=i;if(a.dataset.groupId===o)continue;let s=a.getBoundingClientRect();if(e>=s.left&&e<=s.right&&n>=s.top&&n<=s.bottom)return a}return null}},$e=class{constructor(e,n,o,r){this.isMaximized=!1;this._beforeClose=null;this.overlay=e,this.panelManager=n,this.minimizeManager=o,this.element=document.createElement("div"),this.element.className="mb-adapt-fork-actions",this.minimizeBtn=this.createButton("Minimize",Cs),this.maxRestoreBtn=this.createButton("Maximize",ze),this.dockBtn=this.createButton("Dock to main",Ss);let i=this.createButton("Close all",Ur);r?.allowDocking===!1&&(this.dockBtn.style.display="none"),r?.allowMinimize===!1&&(this.minimizeBtn.style.display="none"),r?.allowMaximize===!1&&(this.maxRestoreBtn.style.display="none"),this.element.appendChild(this.minimizeBtn),this.element.appendChild(this.maxRestoreBtn),this.element.appendChild(this.dockBtn),this.element.appendChild(i),this.minimizeBtn.addEventListener("click",()=>this.onMinimize()),this.maxRestoreBtn.addEventListener("click",()=>this.onMaxRestore()),this.dockBtn.addEventListener("click",()=>this.onDock()),i.addEventListener("click",()=>this.onClose())}setAllowDocking(e){this.dockBtn.style.display=e?"":"none"}setAllowMinimize(e){this.minimizeBtn.style.display=e?"":"none"}setAllowMaximize(e){this.maxRestoreBtn.style.display=e?"":"none"}setBeforeClose(e){this._beforeClose=e}syncMaximizedState(){this.overlay.isMaximized&&!this.isMaximized?(this.isMaximized=!0,this.maxRestoreBtn.innerHTML=lo,this.maxRestoreBtn.title="Restore"):!this.overlay.isMaximized&&this.isMaximized&&(this.isMaximized=!1,this.maxRestoreBtn.innerHTML=ze,this.maxRestoreBtn.title="Maximize")}createButton(e,n){let o=document.createElement("button");return o.title=e,o.innerHTML=n,o}clearMaximize(){this.isMaximized&&(this.overlay.restore(),this.isMaximized=!1,this.maxRestoreBtn.innerHTML=ze,this.maxRestoreBtn.title="Maximize")}onMinimize(){this.clearMaximize();let e=this.overlay.group;this.minimizeManager.minimize(e.id,this.overlay,e)}onMaxRestore(){this.isMaximized?(this.overlay.restore(),this.isMaximized=!1,this.maxRestoreBtn.innerHTML=ze,this.maxRestoreBtn.title="Maximize"):(this.overlay.maximize(),this.isMaximized=!0,this.maxRestoreBtn.innerHTML=lo,this.maxRestoreBtn.title="Restore")}onDock(){this.clearMaximize(),this.panelManager.dockOverlay(this.overlay.group.id)}onClose(){let e=()=>{this.clearMaximize();for(let n of this.overlay.getAllGroups())for(let o of n.panels.slice())this.panelManager.removePanel(o.id)};if(this._beforeClose){let n=this._beforeClose();n&&typeof n.then=="function"?n.then(o=>{o&&e()}):n!==!1&&e()}else e()}},qe=class{constructor(e,n,o,r,i){this._isMaximized=!1;this._autoMaximizedByResize=!1;this._beforeClose=null;this._onMaximizeChanged=null;this.group=e,this.minimizeManager=n,this.panelManager=o,this._allowFloating=i?.allowFloating??!0,this._allowMinimize=i?.allowMinimize??!0,this._allowMaximize=i?.allowMaximize??!0,this.element=document.createElement("div"),this.element.className="mb-adapt-fork-actions",this.floatDockBtn=this.createButton("Pop out",so),this.maximizeBtn=this.createButton("Maximize",ze),this.minimizeBtn=this.createButton("Minimize",Cs),this.closeBtn=this.createButton("Close all",Ur),this._allowFloating||(this.floatDockBtn.style.display="none",e.element.setAttribute("data-allow-floating","false")),this.element.appendChild(this.floatDockBtn),this.element.appendChild(this.maximizeBtn),this.element.appendChild(this.minimizeBtn),this.element.appendChild(this.closeBtn),this.floatDockBtn.addEventListener("click",()=>this.onFloatDock()),this.maximizeBtn.addEventListener("click",()=>this.onMaximize()),this.minimizeBtn.addEventListener("click",()=>this.onMinimize()),this.closeBtn.addEventListener("click",()=>this.onCloseGroup()),this.updateVisibility(),e.onLocationChanged(()=>{this.updateVisibility(),r?.()}),e.onSplitStateChanged(()=>this.updateVisibility())}dispose(){this.restoreMaximized(),this.minimizeManager.removeGroup(this.group.id)}setAllowFloating(e){this._allowFloating=e,e?this.group.element.removeAttribute("data-allow-floating"):this.group.element.setAttribute("data-allow-floating","false"),this.updateVisibility()}setAllowMinimize(e){this._allowMinimize=e,this.updateVisibility()}setAllowMaximize(e){this._allowMaximize=e,this.updateVisibility()}setAutoMaximizedByResize(e){this._autoMaximizedByResize=e,this.updateVisibility()}setBeforeClose(e){this._beforeClose=e}onMaximizeChanged(e){this._onMaximizeChanged=e}updateVisibility(){this.group.location==="floating"||this.group.isInFloatingSplit?(this.floatDockBtn.style.display="none",this.maximizeBtn.style.display="none",this.minimizeBtn.style.display="none",this.closeBtn.style.display="none"):(this.floatDockBtn.style.display=this._allowFloating?"":"none",this.floatDockBtn.innerHTML=so,this.floatDockBtn.title="Pop out",this.maximizeBtn.style.display=this._allowMaximize&&!this._autoMaximizedByResize?"":"none",this.minimizeBtn.style.display=this._allowMinimize?"":"none",this.closeBtn.style.display="")}createButton(e,n){let o=document.createElement("button");return o.title=e,o.innerHTML=n,o}onFloatDock(){this.restoreMaximized();let e=window.innerWidth,n=window.innerHeight,o=Math.min(720,Math.max(200,e-20)),r=Math.min(600,Math.max(200,n-20));this.panelManager.addFloatingGroup(this.group,{width:o,height:r,x:Math.max(0,(e-o)/2),y:Math.max(0,(n-r)/2)})}get isMaximized(){return this._isMaximized}clearMaximized(){this._isMaximized&&(this.panelManager.restoreMaximizedDockedGroup(this.group),this._isMaximized=!1,this.maximizeBtn.innerHTML=ze,this.maximizeBtn.title="Maximize",this._onMaximizeChanged?.(!1))}setMaximized(){this._isMaximized||(this.panelManager.maximizeDockedGroup(this.group),this._isMaximized=!0,this.maximizeBtn.innerHTML=lo,this.maximizeBtn.title="Restore",this._onMaximizeChanged?.(!0))}onMaximize(){this._isMaximized?this.restoreMaximized():(this.panelManager.maximizeDockedGroup(this.group),this._isMaximized=!0,this.maximizeBtn.innerHTML=lo,this.maximizeBtn.title="Restore",this._onMaximizeChanged?.(!0))}restoreMaximized(){this._isMaximized&&(this.panelManager.restoreMaximizedDockedGroup(this.group),this._isMaximized=!1,this.maximizeBtn.innerHTML=ze,this.maximizeBtn.title="Maximize",this._onMaximizeChanged?.(!1))}onMinimize(){this.restoreMaximized(),this.minimizeManager.minimizeDocked(this.group.id,this.group,this.panelManager)}onCloseGroup(){let e=()=>{this.restoreMaximized();for(let n of this.group.panels.slice())this.panelManager.removePanel(n.id)};if(this._beforeClose){let n=this._beforeClose();n&&typeof n.then=="function"?n.then(o=>{o&&e()}):n!==!1&&e()}else e()}};function Zs(){if(typeof document>"u"||getComputedStyle(document.documentElement).getPropertyValue("--mb-adapt-styles-loaded").trim()||document.getElementById("mb-adapt-panel-styles"))return;let t=document.createElement("style");t.id="mb-adapt-panel-styles",t.textContent=xs;let e=document.querySelector("style, link[rel=stylesheet]");e?e.parentNode.insertBefore(t,e):document.head.appendChild(t)}var Dr=0;function uo(){return Dr++,document.documentElement.classList.add("mb-dragging"),{release(){--Dr<=0&&(Dr=0,document.documentElement.classList.remove("mb-dragging"))}}}var _r=class{constructor(e,n,o){this.group=null;this.id=e,this.element=n,this.title=o||e,this.wrapper=document.createElement("div"),this.wrapper.className="mb-panel",this.wrapper.dataset.panelId=e,this.wrapper.dataset.active="false",this.wrapper.appendChild(n)}},Kr=0;function Vs(t){for(let e=0;e<t.length;e++){let n=t[e].match(/^group-(\d+)$/);if(n){let o=parseInt(n[1],10);o>Kr&&(Kr=o)}}}var mo=class{constructor(e){this._panels=[];this._activePanel=null;this._headerHidden=!1;this._locked=!1;this._onTabClose=null;this._onTabPointerDown=null;this._onTabPopOut=null;this._location="grid";this._onLocationChangedCb=null;this._isInFloatingSplit=!1;this._onSplitStateChangedCb=null;this._dragConstraint="any";this._dockingBlocked=!1;this._dialogDockingBlocked=!1;this._onPanelCountChangedCb=null;this._onActivePanelChangedCb=null;this.id=e||`group-${++Kr}`,this.element=document.createElement("div"),this.element.className="mb-group",this.element.dataset.groupId=this.id,this.headerElement=document.createElement("div"),this.headerElement.className="mb-group-header",this.headerPrefix=document.createElement("div"),this.headerPrefix.className="mb-group-header-prefix",this.tabsElement=document.createElement("div"),this.tabsElement.className="mb-group-tabs",this.headerVoid=document.createElement("div"),this.headerVoid.className="mb-group-header-void",this.headerActions=document.createElement("div"),this.headerActions.className="mb-group-header-actions",this.headerElement.appendChild(this.headerPrefix),this.headerElement.appendChild(this.tabsElement),this.headerElement.appendChild(this.headerVoid),this.headerElement.appendChild(this.headerActions),this.contentElement=document.createElement("div"),this.contentElement.className="mb-group-content",this.element.appendChild(this.headerElement),this.element.appendChild(this.contentElement)}get panels(){return this._panels}get activePanel(){return this._activePanel}get size(){return this._panels.length}get locked(){return this._locked}set locked(e){this._locked=e}setHeaderHidden(e){this._headerHidden=e,this.headerElement.style.display=e?"none":""}get headerHidden(){return this._headerHidden}setHeaderActions(e){this.headerActions.innerHTML="",this.headerActions.appendChild(e)}setHeaderPrefix(e){this.headerPrefix.innerHTML="",this.headerPrefix.appendChild(e)}onTabClose(e){this._onTabClose=e}onTabPointerDown(e){this._onTabPointerDown=e}get location(){return this._location}set location(e){this._location!==e&&(this._location=e,this._onLocationChangedCb?.(e))}onLocationChanged(e){this._onLocationChangedCb=e}fireLocationChanged(){this._onLocationChangedCb?.(this._location)}get isInFloatingSplit(){return this._isInFloatingSplit}set isInFloatingSplit(e){this._isInFloatingSplit!==e&&(this._isInFloatingSplit=e,this._onSplitStateChangedCb?.(e))}onSplitStateChanged(e){this._onSplitStateChangedCb=e}onTabPopOut(e){this._onTabPopOut=e}get dragConstraint(){return this._dragConstraint}set dragConstraint(e){this._dragConstraint=e}get dockingBlocked(){return this._dockingBlocked}set dockingBlocked(e){this._dockingBlocked=e}get dialogDockingBlocked(){return this._dialogDockingBlocked}set dialogDockingBlocked(e){this._dialogDockingBlocked=e}onPanelCountChanged(e){this._onPanelCountChangedCb=e}onActivePanelChanged(e){this._onActivePanelChangedCb=e}addPanel(e){if(this._panels.some(o=>o.id===e.id))return;e.group=this,this._panels.push(e),this.contentElement.appendChild(e.wrapper);let n=this.createTab(e);this.tabsElement.appendChild(n),this.activatePanel(e.id),this.element.dataset.tabCount=String(this._panels.length),this._onPanelCountChangedCb?.(this._panels.length)}removePanel(e){let n=this._panels.findIndex(i=>i.id===e);if(n===-1)return null;let o=this._panels[n];if(this._panels.splice(n,1),o.wrapper.remove(),this.tabsElement.querySelector(`[data-tab-id="${e}"]`)?.remove(),o.group=null,this._activePanel===o&&(this._activePanel=null,this._panels.length>0)){let i=this._panels[Math.min(n,this._panels.length-1)];i&&this.activatePanel(i.id)}return this.element.dataset.tabCount=String(this._panels.length),this._onPanelCountChangedCb?.(this._panels.length),o}detachPanel(e){let n=this._panels.findIndex(i=>i.id===e);if(n===-1)return null;let o=this._panels[n];if(this._panels.splice(n,1),this.tabsElement.querySelector(`[data-tab-id="${e}"]`)?.remove(),o.group=null,this._activePanel===o&&(this._activePanel=null,this._panels.length>0)){let i=this._panels[Math.min(n,this._panels.length-1)];i&&this.activatePanel(i.id)}return this.element.dataset.tabCount=String(this._panels.length),this._onPanelCountChangedCb?.(this._panels.length),o}activatePanel(e){let n=this._panels.find(r=>r.id===e);if(!n)return;this._activePanel=n;for(let r of this._panels)r.wrapper.dataset.active=r===n?"true":"false";let o=this.tabsElement.querySelectorAll(".mb-tab");for(let r of o){let i=r.dataset.tabId===e;r.dataset.active=i?"true":"false"}this._onActivePanelChangedCb?.(e)}reorderPanel(e,n){let o=this._panels.findIndex(c=>c.id===e);if(o===-1)return;let r=this._panels[o],i=Array.from(this.tabsElement.querySelectorAll(".mb-tab")),a=this._panels.length;for(let c=0;c<i.length;c++){let p=i[c].getBoundingClientRect();if(n<p.left+p.width/2){a=c;break}}if(a===o||a===o+1)return;this._panels.splice(o,1);let s=o<a?a-1:a;this._panels.splice(s,0,r);let l=this.tabsElement.querySelector(`[data-tab-id="${e}"]`);if(l){let c=this.tabsElement.querySelectorAll(".mb-tab")[s];c&&c!==l?this.tabsElement.insertBefore(l,c):this.tabsElement.appendChild(l)}}createTab(e){let n=document.createElement("div");n.className="mb-tab",n.dataset.tabId=e.id,n.dataset.active="false";let o=document.createElement("span");o.className="mb-tab-label",o.innerHTML=co,o.title=e.title,n.appendChild(o);let r=document.createElement("div");r.className="mb-tab-actions";let i=document.createElement("button");i.className="mb-tab-popout",i.title="Pop out",i.innerHTML=so,i.addEventListener("click",s=>{s.stopPropagation(),this._onTabPopOut?.(e.id)}),r.appendChild(i);let a=document.createElement("button");return a.className="mb-tab-close",a.title="Close",a.innerHTML='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',a.addEventListener("click",s=>{s.stopPropagation(),this._onTabClose?.(e.id)}),r.appendChild(a),n.appendChild(r),n.addEventListener("pointerdown",s=>{s.target.closest(".mb-tab-close")||s.target.closest(".mb-tab-popout")||s.button===0&&(s.preventDefault(),this._onTabPointerDown?.(e.id,s))}),n}dispose(){for(let e of this._panels)e.group=null;this._panels=[],this._activePanel=null,this.element.remove()}},Pr=1e5,po=class t{constructor(e,n,o,r){this.internalLayout=null;this.toolbarElement=null;this.savedBounds=null;this._isMaximized=!1;this._onDragEnd=null;this._onDragMove=null;this._onBoundsChanged=null;this.group=e,this.bounds={...n},this.element=document.createElement("div"),this.element.className="mb-floating-overlay",this.element.dataset.groupId=e.id,this.applyBounds();let i=["n","s","e","w","ne","nw","se","sw"];for(let s of i){let l=document.createElement("div");l.className=`mb-resize-handle mb-resize-${s}`,l.addEventListener("pointerdown",c=>this.onResizeStart(c,s)),this.element.appendChild(l)}this.element.addEventListener("pointerdown",()=>this.bringToFront(),!0),e.headerVoid.addEventListener("pointerdown",s=>this.onDragStart(s)),e.headerVoid.style.cursor="grab",this.wireDragOnActions(e);let a=o??document.body;r?a.insertBefore(this.element,r):a.appendChild(this.element),this.element.appendChild(e.element),this.bringToFront()}get isMaximized(){return this._isMaximized}set onDragEnd(e){this._onDragEnd=e}set onDragMove(e){this._onDragMove=e}set onBoundsChanged(e){this._onBoundsChanged=e}bringToFront(){Pr+=2,this.element.style.zIndex=String(Pr)}maximize(){this._isMaximized||(this.savedBounds={...this.bounds},this._isMaximized=!0,this.element.style.inset="0",this.element.style.width="auto",this.element.style.height="auto",this.element.classList.add("mb-floating-maximized"))}restore(){!this._isMaximized||!this.savedBounds||(this._isMaximized=!1,this.bounds={...this.savedBounds},this.savedBounds=null,this.element.classList.remove("mb-floating-maximized"),this.element.style.inset="",this.applyBounds())}hide(){this.element.style.display="none"}show(){this.element.style.display=""}dispose(){this.internalLayout&&(this.internalLayout.dispose(),this.internalLayout=null),this.removeToolbar(),this.element.remove()}getBounds(){return{...this.bounds}}setBounds(e){if(this._isMaximized)return;let n=10;e.width!==void 0&&(this.bounds.width=Math.min(e.width,window.innerWidth-this.bounds.x-n)),e.height!==void 0&&(this.bounds.height=Math.min(e.height,window.innerHeight-this.bounds.y-n)),this.applyBounds()}setFullBounds(e){if(this._isMaximized)return;let n=window.innerWidth,o=window.innerHeight,r=10,i=100;this.bounds={width:Math.max(i,Math.min(e.width,n-r)),height:Math.max(i,Math.min(e.height,o-r)),x:Math.max(0,Math.min(e.x,n-i)),y:Math.max(0,Math.min(e.y,o-i))},this.applyBounds()}applyBounds(){this.element.style.position="fixed",this.element.style.left=`${this.bounds.x}px`,this.element.style.top=`${this.bounds.y}px`,this.element.style.width=`${this.bounds.width}px`,this.element.style.height=`${this.bounds.height}px`}setDragGroup(e){e.headerVoid.addEventListener("pointerdown",n=>this.onDragStart(n)),e.headerVoid.style.cursor="grab",this.wireDragOnActions(e)}wireDragOnActions(e){e.headerActions.addEventListener("pointerdown",n=>{n.target.closest("button")||this.onDragStart(n)}),e.headerActions.style.cursor="grab"}setToolbar(e){this.removeToolbar(),this.toolbarElement=e,this.getToolbarHost().headerActions.appendChild(e)}removeToolbar(){this.toolbarElement&&(this.toolbarElement.remove(),this.toolbarElement=null)}repositionToolbar(){this.toolbarElement&&this.getToolbarHost().headerActions.appendChild(this.toolbarElement)}getToolbarHost(){if(!this.internalLayout)return this.group;let e=this.internalLayout.getRoot();return e?t.topRightGroup(e):this.group}static topRightGroup(e){return e.kind==="leaf"?e.group:e.direction==="horizontal"?t.topRightGroup(e.second):t.topRightGroup(e.first)}get hasToolbar(){return this.toolbarElement!==null}getAllGroups(){return this.internalLayout?.allGroups()??[this.group]}updateTotalTabCount(){let e=this.getAllGroups(),n=0;for(let o of e)n+=o.size;this.element.dataset.totalTabCount=String(n)}onDragStart(e){if(this._isMaximized)return;e.preventDefault();let n=e.currentTarget,o=e.clientX,r=e.clientY,i=this.bounds.x,a=this.bounds.y,s=uo();n.style.cursor="grabbing",n.setPointerCapture(e.pointerId);let l=p=>{let g=p.clientX-o,I=p.clientY-r;this.bounds.x=Math.max(0,Math.min(i+g,window.innerWidth-this.bounds.width)),this.bounds.y=Math.max(0,Math.min(a+I,window.innerHeight-this.bounds.height)),this.applyBounds(),this._onDragMove?.(this.bounds.x+this.bounds.width/2,this.bounds.y+this.bounds.height/2)},c=()=>{s.release(),n.style.cursor="grab",n.removeEventListener("pointermove",l),n.removeEventListener("pointerup",c),n.removeEventListener("pointercancel",c),this._onDragEnd?.(this.bounds.x+this.bounds.width/2,this.bounds.y+this.bounds.height/2),this._onBoundsChanged?.()};n.addEventListener("pointermove",l),n.addEventListener("pointerup",c),n.addEventListener("pointercancel",c)}onResizeStart(e,n){if(this._isMaximized)return;e.preventDefault(),e.stopPropagation();let o=e.clientX,r=e.clientY,i={...this.bounds},a=e.currentTarget,s=200,l=100,c=uo();a.setPointerCapture(e.pointerId);let p=I=>{let h=I.clientX-o,y=I.clientY-r;if(n.includes("e")&&(this.bounds.width=Math.max(s,i.width+h)),n.includes("w")){let E=Math.max(s,i.width-h);this.bounds.x=i.x+(i.width-E),this.bounds.width=E}if(n.includes("s")&&(this.bounds.height=Math.max(l,i.height+y)),n.includes("n")){let E=Math.max(l,i.height-y);this.bounds.y=i.y+(i.height-E),this.bounds.height=E}let R=10;this.bounds.x=Math.max(0,this.bounds.x),this.bounds.y=Math.max(0,this.bounds.y),this.bounds.x+this.bounds.width>window.innerWidth-R&&(this.bounds.width=window.innerWidth-this.bounds.x-R),this.bounds.y+this.bounds.height>window.innerHeight-R&&(this.bounds.height=window.innerHeight-this.bounds.y-R),this.applyBounds()},g=()=>{c.release(),a.removeEventListener("pointermove",p),a.removeEventListener("pointerup",g),a.removeEventListener("pointercancel",g),this._onBoundsChanged?.()};a.addEventListener("pointermove",p),a.addEventListener("pointerup",g),a.addEventListener("pointercancel",g)}},nn=class{constructor(e){this.root=null;this.onSplitResized=null;this.element=document.createElement("div"),this.element.className="mb-layout",e.appendChild(this.element)}getRoot(){return this.root}setMainGroup(e){let n=this.createLeaf(e);n.element.style.flex="1",this.root=n,this.element.appendChild(n.element)}splitGroup(e,n,o,r){let i=this.dockToSplitDirection(o),a=this.findGroupNode(e);if(!a)return!1;let s=document.createElement("div");s.className="mb-split-leaf",s.style.flex="1";let l=document.createElement("div");l.className=`mb-split-container ${i==="horizontal"?"mb-split-horizontal":"mb-split-vertical"}`,l.style.flex=a.element.style.flex||"1",l.style.minWidth="0",l.style.minHeight="0";let c=document.createElement("div"),p=i==="vertical";c.className=`mb-layout-separator ${p?"mb-layout-separator-h":"mb-layout-separator-v"}`;let g=o==="right"||o==="bottom";a.element.parentElement.insertBefore(l,a.element),g?(l.appendChild(a.element),l.appendChild(c),l.appendChild(s)):(l.appendChild(s),l.appendChild(c),l.appendChild(a.element)),s.appendChild(n.element),r!==void 0&&r>0?g?(a.element.style.flex="1",s.style.flex=`0 0 ${r}px`):(s.style.flex=`0 0 ${r}px`,a.element.style.flex="1"):(a.element.style.flex="1",s.style.flex="1");let h={kind:"leaf",group:n,element:s},y={kind:"split",direction:i,first:g?a:h,second:g?h:a,element:l,separator:c};return c.addEventListener("pointerdown",R=>this.onSeparatorDrag(R,y)),this.replaceNodeInTree(a,y),a.element.style.display==="none"&&(c.style.display="none",s.dataset.savedFlex=s.style.flex,s.style.flex="1",a.element.dataset.savedFlex=a.element.style.flex),!0}removeGroup(e){let n=this.findGroupNode(e);if(!n)return;if(this.root===n){n.element.remove(),this.root=null;return}this.restoreMaximizedLeaf(e);let o=this.findParentSplit(n);if(!o)return;let r=o.first===n?o.second:o.first;this.restoreMaximizedSubtree(r),r.element.style.flex=o.element.style.flex||"1",o.element.parentElement.insertBefore(r.element,o.element),n.element.remove(),o.separator.remove(),o.element.remove(),this.replaceNodeInTree(o,r)}findGroupNode(e){return this.findGroupNodeIn(this.root,e)}getGroupPosition(e){let n=this.findGroupNode(e);if(!n)return null;let o=this.findParentSplit(n);if(!o)return null;let r=o.first===n,i=r?o.second:o.first,a=this.firstGroupIn(i);if(!a)return null;let s;return o.direction==="horizontal"?s=r?"left":"right":s=r?"top":"bottom",{siblingGroup:a,direction:s}}firstGroupIn(e){return e.kind==="leaf"?e.group:this.firstGroupIn(e.first)}collapseLeaf(e){let n=this.findGroupNode(e);if(!n)return;let o=this.findParentSplit(n);if(o){let r=o.first===n?o.second:o.first;r.element.dataset.savedFlex=r.element.style.flex,r.element.style.flex="1",o.separator.style.display="none"}n.element.dataset.savedFlex=n.element.style.flex,n.element.style.display="none"}expandLeaf(e){let n=this.findGroupNode(e);if(!n)return;n.element.style.display="",n.element.dataset.savedFlex!==void 0&&(n.element.style.flex=n.element.dataset.savedFlex,delete n.element.dataset.savedFlex);let o=this.findParentSplit(n);if(o){o.separator.style.display="";let r=o.first===n?o.second:o.first;r.element.dataset.savedFlex!==void 0&&(r.element.style.flex=r.element.dataset.savedFlex,delete r.element.dataset.savedFlex)}}maximizeLeaf(e){let n=this.findGroupNode(e);if(!n)return;let o=n,r=this.findParentSplit(o);for(;r;){let i=r.first===o?r.second:r.first;i.element.dataset.maxSavedDisplay===void 0&&(i.element.dataset.maxSavedDisplay=i.element.style.display),i.element.style.display="none",r.separator.dataset.maxSavedDisplay===void 0&&(r.separator.dataset.maxSavedDisplay=r.separator.style.display),r.separator.style.display="none",o.element.dataset.maxSavedFlex===void 0&&(o.element.dataset.maxSavedFlex=o.element.style.flex),o.element.style.flex="1",o=r,r=this.findParentSplit(o)}}restoreMaximizedLeaf(e){let n=this.findGroupNode(e);if(!n)return;let o=n,r=this.findParentSplit(o);for(;r;){let i=r.first===o?r.second:r.first;i.element.dataset.maxSavedDisplay!==void 0&&(i.element.style.display=i.element.dataset.maxSavedDisplay,delete i.element.dataset.maxSavedDisplay),r.separator.dataset.maxSavedDisplay!==void 0&&(r.separator.style.display=r.separator.dataset.maxSavedDisplay,delete r.separator.dataset.maxSavedDisplay),o.element.dataset.maxSavedFlex!==void 0&&(o.element.style.flex=o.element.dataset.maxSavedFlex,delete o.element.dataset.maxSavedFlex),o=r,r=this.findParentSplit(o)}}restoreMaximizedSubtree(e){e.element.dataset.maxSavedDisplay!==void 0&&(e.element.style.display=e.element.dataset.maxSavedDisplay,delete e.element.dataset.maxSavedDisplay),e.element.dataset.maxSavedFlex!==void 0&&(e.element.style.flex=e.element.dataset.maxSavedFlex,delete e.element.dataset.maxSavedFlex),e.kind==="split"&&(e.separator.dataset.maxSavedDisplay!==void 0&&(e.separator.style.display=e.separator.dataset.maxSavedDisplay,delete e.separator.dataset.maxSavedDisplay),this.restoreMaximizedSubtree(e.first),this.restoreMaximizedSubtree(e.second))}allGroups(){let e=[];return this.collectGroups(this.root,e),e}toJSON(){return this.serializeNode(this.root)}restoreFlexFromSerialized(e){!e||!this.root||this.restoreFlexParallel(e,this.root)}restoreFlexParallel(e,n){if(e.flex&&this.isValidFlex(e.flex)&&(n.element.style.flex=e.flex),e.kind==="split"&&n.kind==="split")this.restoreFlexParallel(e.first,n.first),this.restoreFlexParallel(e.second,n.second);else if(e.kind!==n.kind){let o=new Map;this.collectFlexValues(e,o),this.applyFlexValues(n,o)}}animateTransition(){let e=r=>{r&&(r.kind==="leaf"?r.element.classList.add("mb-split-leaf--animating"):(r.element.classList.add("mb-split-container--animating"),r.separator&&r.separator.classList.add("mb-layout-separator--animating"),e(r.first),e(r.second)))};e(this.root);let n=()=>{this.element.querySelectorAll(".mb-split-leaf--animating, .mb-split-container--animating, .mb-layout-separator--animating").forEach(r=>{r.classList.remove("mb-split-leaf--animating","mb-split-container--animating","mb-layout-separator--animating")})},o=setTimeout(n,350);this.element.addEventListener("transitionend",()=>{clearTimeout(o),n()},{once:!0})}rebuildFromSerialized(e,n){let o=this.buildNodeFromSerialized(e,n);o&&(this.element.appendChild(o.element),this.moveGroupsIntoTree(o),this.root&&this.root.element.remove(),this.root=o,this.root&&(this.root.element.style.flex="1"))}buildNodeFromSerialized(e,n){if(e.kind==="leaf"){let c=n(e.groupId);if(!c)return null;let p=document.createElement("div");return p.className="mb-split-leaf",e.flex&&this.isValidFlex(e.flex)?p.style.flex=e.flex:p.style.flex="1",{kind:"leaf",group:c,element:p}}let o=this.buildNodeFromSerialized(e.first,n),r=this.buildNodeFromSerialized(e.second,n);if(!o&&!r)return null;if(!o)return e.flex&&this.isValidFlex(e.flex)&&(r.element.style.flex=e.flex),r;if(!r)return e.flex&&this.isValidFlex(e.flex)&&(o.element.style.flex=e.flex),o;let i=document.createElement("div");i.className=`mb-split-container ${e.direction==="horizontal"?"mb-split-horizontal":"mb-split-vertical"}`,e.flex&&this.isValidFlex(e.flex)?i.style.flex=e.flex:i.style.flex="1",i.style.minWidth="0",i.style.minHeight="0";let a=document.createElement("div"),s=e.direction==="vertical";a.className=`mb-layout-separator ${s?"mb-layout-separator-h":"mb-layout-separator-v"}`,i.appendChild(o.element),i.appendChild(a),i.appendChild(r.element);let l={kind:"split",direction:e.direction,first:o,second:r,element:i,separator:a};return a.addEventListener("pointerdown",c=>this.onSeparatorDrag(c,l)),l}moveGroupsIntoTree(e){if(e.kind==="leaf"){e.element.appendChild(e.group.element);return}this.moveGroupsIntoTree(e.first),this.moveGroupsIntoTree(e.second)}dispose(){this.element.remove(),this.root=null}createLeaf(e){let n=document.createElement("div");return n.className="mb-split-leaf",n.style.flex="1",n.appendChild(e.element),{kind:"leaf",group:e,element:n}}dockToSplitDirection(e){return e==="left"||e==="right"?"horizontal":"vertical"}findGroupNodeIn(e,n){return e?e.kind==="leaf"?e.group===n?e:null:this.findGroupNodeIn(e.first,n)??this.findGroupNodeIn(e.second,n):null}collectGroups(e,n){e&&(e.kind==="leaf"?n.push(e.group):(this.collectGroups(e.first,n),this.collectGroups(e.second,n)))}findParentSplit(e){return this.findParentSplitIn(this.root,e)}findParentSplitIn(e,n){return!e||e.kind==="leaf"?null:e.first===n||e.second===n?e:this.findParentSplitIn(e.first,n)??this.findParentSplitIn(e.second,n)}replaceNodeInTree(e,n){if(this.root===e){this.root=n;return}let o=this.findParentSplit(e);o&&(o.first===e?o.first=n:o.second=n)}collectFlexValues(e,n){e.kind==="leaf"?n.set(e.groupId,e.flex):(this.collectFlexValues(e.first,n),this.collectFlexValues(e.second,n))}applyFlexValues(e,n){if(e.kind==="leaf"){let o=n.get(e.group.id);o&&this.isValidFlex(o)&&(e.element.style.flex=o)}else this.applyFlexValues(e.first,n),this.applyFlexValues(e.second,n)}isValidFlex(e){if(e.includes("px"))return!0;let n=e.split(" ")[0],o=Number(n);return Number.isFinite(o)&&o>=0}serializeNode(e){if(!e)return null;let n=e.element.dataset.maxSavedFlex||e.element.dataset.savedFlex||e.element.style.flex||"1";if(e.kind==="leaf")return e.group.size===0&&e.group.id!=="main-group"?null:{kind:"leaf",groupId:e.group.id,flex:n};let o=this.serializeNode(e.first),r=this.serializeNode(e.second);return!o&&!r?null:o?r?{kind:"split",direction:e.direction,first:o,second:r,flex:n}:(o.flex=n,o):(r.flex=n,r)}onSeparatorDrag(e,n){if(e.preventDefault(),n.first.element.style.display==="none"||n.second.element.style.display==="none")return;let o=n.direction==="horizontal",r=o?e.clientX:e.clientY,i=n.first.element,a=n.second.element;this.lockDescendantSizes(n.first,o),this.lockDescendantSizes(n.second,o);let s=o?i.offsetWidth:i.offsetHeight,l=o?a.offsetWidth:a.offsetHeight,c=s+l;if(c<=0)return;let p=150,g=uo();n.separator.setPointerCapture(e.pointerId),n.separator.classList.add("mb-layout-separator--active");let I=y=>{if(i.style.display==="none"||a.style.display==="none"){n.separator.releasePointerCapture(y.pointerId),h();return}let R=(o?y.clientX:y.clientY)-r,E=s+R,T=l-R;E<p&&(E=p,T=c-p),T<p&&(T=p,E=c-p),i.style.flex=String(E/c),a.style.flex=String(T/c)},h=()=>{g.release(),n.separator.classList.remove("mb-layout-separator--active"),n.separator.removeEventListener("pointermove",I),n.separator.removeEventListener("pointerup",h),n.separator.removeEventListener("pointercancel",h),this.unlockDescendantSizes(n.first,o),this.unlockDescendantSizes(n.second,o),this.onSplitResized?.()};n.separator.addEventListener("pointermove",I),n.separator.addEventListener("pointerup",h),n.separator.addEventListener("pointercancel",h)}lockDescendantSizes(e,n){if(e.kind!=="split"||e.direction==="horizontal"!==n)return;let o=n?e.first.element.getBoundingClientRect().width:e.first.element.getBoundingClientRect().height;e.first.element.style.flex=`0 0 ${o}px`,e.second.element.style.flex="1",this.lockDescendantSizes(e.first,n),this.lockDescendantSizes(e.second,n)}unlockDescendantSizes(e,n){if(e.kind!=="split"||e.direction==="horizontal"!==n)return;this.unlockDescendantSizes(e.first,n),this.unlockDescendantSizes(e.second,n);let o=n?e.first.element.getBoundingClientRect().width:e.first.element.getBoundingClientRect().height,r=n?e.second.element.getBoundingClientRect().width:e.second.element.getBoundingClientRect().height,i=o+r;i>0?(e.first.element.style.flex=String(o/i),e.second.element.style.flex=String(r/i)):(e.first.element.style.flex="0.5",e.second.element.style.flex="0.5")}},et=class{constructor(e){this.groups=new Map;this.panels=new Map;this.floatingOverlays=new Map;this.mainGroupId=null;this.onPanelRemovedCbs=[];this.onGroupCreatedByDragCb=null;this.onLayoutChangedCb=null;this.disposed=!1;this.dragState=null;this.portals=new Map;this.portalRaf=0;this.mainGroupCollapsed=!1;this._beforeTabClose=null;this.zBase=0;this.container=e.container,this.splitEdgeSize=e.splitEdgeSize??100,this.layout=new nn(this.container),e.onPanelRemoved&&this.onPanelRemovedCbs.push(e.onPanelRemoved),this.onGroupCreatedByDragCb=e.onGroupCreatedByDrag??null,this.onLayoutChangedCb=e.onLayoutChanged??null,this.layout.onSplitResized=this.onLayoutChangedCb,this.zBase=this.getZBase(),this.zBase!==0&&(Pr=1e5+this.zBase),this.dropOverlay=document.createElement("div"),this.dropOverlay.className="mb-drop-overlay",this.container.appendChild(this.dropOverlay),this.portalLayer=document.createElement("div"),this.portalLayer.className="mb-iframe-portal-layer",this.container.appendChild(this.portalLayer),this.syncPortals()}getZBase(){let e=getComputedStyle(this.container).getPropertyValue("--mb-adapt-z-base").trim();return parseInt(e,10)||0}setBeforeTabClose(e){this._beforeTabClose=e}addPanel(e){let n=new _r(e.id,e.element,e.title);this.panels.set(e.id,n);let o=e.groupId;if(o){let r=this.groups.get(o);r&&(r.addPanel(n),this.registerPortal(n.id,n.element,n.wrapper))}return n}removePanel(e){let n=this.panels.get(e);if(n){if(this.unregisterPortal(e),n.group){let o=n.group;o.removePanel(e),o.size===0&&o.id!==this.mainGroupId&&this.removeGroup(o.id)}this.panels.delete(e);for(let o of this.onPanelRemovedCbs)o(n)}}getPanel(e){return this.panels.get(e)}addGroup(e){let n=new mo(e?.id);if(this.groups.set(n.id,n),this.wireGroupCallbacks(n),e?.floating)this.addFloatingGroup(n,e.floating);else if(e?.direction){let o=this.mainGroupId,r=o?this.groups.get(o):void 0;r&&this.layout.splitGroup(r,n,e.direction,e.initialSize)}return n}removeGroup(e){let n=this.groups.get(e);if(!n)return;for(let r of[...n.panels])this.unregisterPortal(r.id);let o=this.floatingOverlays.get(e);if(o)if(o.internalLayout){o.internalLayout.removeGroup(n),this.floatingOverlays.delete(e);let r=this.cleanupOrphanedFloatingLeaf(o);r.length>0?(o.group=r[0],this.floatingOverlays.set(r[0].id,o)):o.dispose()}else o.dispose(),this.floatingOverlays.delete(e);if(!o){let r=this.findOverlayForGroup(n);if(r?.internalLayout&&(r.internalLayout.removeGroup(n),this.cleanupOrphanedFloatingLeaf(r).length===0)){let a=[...this.floatingOverlays.entries()].find(([,s])=>s===r)?.[0];a&&this.floatingOverlays.delete(a),r.dispose()}}this.layout.findGroupNode(n)&&this.layout.removeGroup(n),n.isInFloatingSplit=!1,n.dispose(),this.groups.delete(e)}getGroup(e){return this.groups.get(e)}getGroupIds(){return Array.from(this.groups.keys())}getMainGroup(){if(this.mainGroupId)return this.groups.get(this.mainGroupId)}setMainGroup(e){this.mainGroupId=e.id,this.layout.setMainGroup(e)}collapseMainGroup(){let e=this.getMainGroup();!e||this.mainGroupCollapsed||(this.layout.collapseLeaf(e),this.mainGroupCollapsed=!0)}expandMainGroup(){let e=this.getMainGroup();!e||!this.mainGroupCollapsed||(this.layout.expandLeaf(e),this.mainGroupCollapsed=!1)}isMainGroupCollapsed(){return this.mainGroupCollapsed}getDockedGroups(){return this.layout.allGroups()}collapseDockedGroup(e){this.layout.collapseLeaf(e)}expandDockedGroup(e){this.layout.expandLeaf(e)}maximizeDockedGroup(e){this.layout.maximizeLeaf(e)}restoreMaximizedDockedGroup(e){this.layout.restoreMaximizedLeaf(e)}restoreLayoutFlex(e){this.layout.restoreFlexFromSerialized(e)}rebuildDockedLayout(e){this.layout.rebuildFromSerialized(e,n=>this.groups.get(n))}rebuildFloatingInternalLayout(e,n){let o=this.floatingOverlays.get(e);if(!o)return;o.internalLayout||(o.internalLayout=new nn(o.element),o.internalLayout.setMainGroup(o.group),this.onLayoutChangedCb&&(o.internalLayout.onSplitResized=this.onLayoutChangedCb)),o.internalLayout.rebuildFromSerialized(n,a=>this.groups.get(a));let r=o.internalLayout.allGroups(),i=r.length>1;for(let a of r)a.location="floating",a.isInFloatingSplit=i;o.updateTotalTabCount()}addFloatingGroup(e,n){let o=this.floatingOverlays.get(e.id);o&&this.floatingOverlays.delete(e.id);let r=o?null:this.findOverlayForGroup(e),i=new po(e,n,this.container,this.portalLayer);if(this.onLayoutChangedCb&&(i.onBoundsChanged=this.onLayoutChangedCb),this.floatingOverlays.set(e.id,i),this.layout.findGroupNode(e)&&this.layout.removeGroup(e),o?.internalLayout){o.internalLayout.removeGroup(e);let a=this.cleanupOrphanedFloatingLeaf(o);a.length>0?(o.group=a[0],this.floatingOverlays.set(a[0].id,o)):o.dispose()}else o?o.dispose():r?.internalLayout&&(r.internalLayout.removeGroup(e),this.cleanupOrphanedFloatingLeaf(r));return e.isInFloatingSplit=!1,e.location="floating",i.updateTotalTabCount(),i}dockGroup(e,n,o){let r=this.groups.get(e);if(!r||e===this.mainGroupId)return;let i=this.mainGroupId?this.groups.get(this.mainGroupId):void 0;if(!i)return;let a=this.floatingOverlays.get(e),s=a?null:this.findOverlayForGroup(r);if(this.layout.splitGroup(i,r,n,o)){if(a)if(a.internalLayout){a.internalLayout.removeGroup(r),this.floatingOverlays.delete(e);let l=this.cleanupOrphanedFloatingLeaf(a);l.length>0?(a.group=l[0],this.floatingOverlays.set(l[0].id,a)):a.dispose()}else a.dispose(),this.floatingOverlays.delete(e);else s?.internalLayout&&(s.internalLayout.removeGroup(r),this.cleanupOrphanedFloatingLeaf(s));r.location="grid",r.isInFloatingSplit=!1}}getFloatingOverlay(e){return this.floatingOverlays.get(e)}dockOverlay(e){let n=this.floatingOverlays.get(e);if(!n)return;let o=this.mainGroupId?this.groups.get(this.mainGroupId):void 0;if(!o)return;if(!n.internalLayout){this.dockGroup(e,"right");return}let r=n.internalLayout.allGroups();if(r.length===0)return;let i=r[0];this.layout.splitGroup(o,i,"right"),i.location="grid",i.isInFloatingSplit=!1;for(let a=1;a<r.length;a++){let s=r[a];this.layout.splitGroup(i,s,"bottom"),s.location="grid",s.isInFloatingSplit=!1}n.internalLayout.dispose(),n.internalLayout=null,n.dispose(),this.floatingOverlays.delete(e)}findOverlayContaining(e){let n=this.groups.get(e);if(n)return this.findOverlayForGroup(n)??void 0}movePanel(e,n){let o=this.panels.get(e);if(!o)return;let r=o.group;if(!r||r.id===n)return;let i=this.groups.get(n);i&&(r.detachPanel(e),i.addPanel(o),r.size===0&&r.id!==this.mainGroupId&&this.removeGroup(r.id))}serializeLayout(){let e=[];for(let[o,r]of this.floatingOverlays){if(r.getAllGroups().reduce((l,c)=>l+c.size,0)===0)continue;let s={groupId:o,bounds:r.getBounds(),internalLayout:r.internalLayout?.toJSON()??null};r.isMaximized&&(s.isMaximized=!0),e.push(s)}let n={};for(let[o,r]of this.panels)r.group&&(n[o]=r.group.id);return{mainLayout:this.layout.toJSON(),floatingGroups:e,panelLocations:n}}getFloatingOverlays(){return this.floatingOverlays}cleanupEmptyGroups(){let e=!1;for(let n of[...this.layout.allGroups()])n.id!==this.mainGroupId&&n.size===0&&(this.removeGroup(n.id),e=!0);for(let[n,o]of[...this.floatingOverlays]){if(o.internalLayout)for(let i of[...o.internalLayout.allGroups()])i.size===0&&(this.removeGroup(i.id),e=!0);let r=this.floatingOverlays.get(n);r&&r.getAllGroups().reduce((s,l)=>s+l.size,0)===0&&(this.removeGroup(n),e=!0)}e&&this.layout.getRoot()&&(this.layout.getRoot().element.style.flex="1")}onDidRemovePanel(e){return this.onPanelRemovedCbs.push(e),{dispose:()=>{let n=this.onPanelRemovedCbs.indexOf(e);n!==-1&&this.onPanelRemovedCbs.splice(n,1)}}}dispose(){if(!this.disposed){this.disposed=!0,this.cancelTabDrag(),cancelAnimationFrame(this.portalRaf);for(let e of this.floatingOverlays.values())e.dispose();this.floatingOverlays.clear();for(let e of this.groups.values())e.dispose();this.groups.clear(),this.panels.clear(),this.onPanelRemovedCbs=[],this.dropOverlay.remove();for(let e of this.portals.values())e.entry.remove();this.portals.clear(),this.portalLayer.remove(),this.layout.dispose()}}wireGroupCallbacks(e){e.onTabClose(n=>{if(this._beforeTabClose){let o=this._beforeTabClose(n);o&&typeof o.then=="function"?o.then(r=>{r&&this.removePanel(n)}):o!==!1&&this.removePanel(n);return}this.removePanel(n)}),e.onTabPointerDown((n,o)=>{this.onTabPointerDown(n,e,o)}),e.onTabPopOut(n=>{this.detachPanelToFloating(n,window.innerWidth/2,window.innerHeight/2)})}onTabPointerDown(e,n,o){if(this.dragState)return;this.dragState={panelId:e,sourceGroup:n,startX:o.clientX,startY:o.clientY,isDragging:!1,ghost:null,iframes:null,currentZone:null};let r=s=>{if(!this.dragState)return;if(!this.dragState.isDragging){let c=s.clientX-this.dragState.startX,p=s.clientY-this.dragState.startY;if(c*c+p*p<25)return;this.dragState.isDragging=!0,this.dragState.iframes=uo(),this.dragState.ghost=this.createDragGhost(e),this.container.appendChild(this.dragState.ghost)}this.dragState.ghost.style.left=`${s.clientX+8}px`,this.dragState.ghost.style.top=`${s.clientY+8}px`;let l=this.hitTestDropZone(s.clientX,s.clientY);l=this.applyDragConstraints(l,this.dragState.sourceGroup),this.updateDropOverlay(l)},i=s=>{if(document.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i),document.removeEventListener("pointercancel",a),!this.dragState)return;if(!this.dragState.isDragging){n.activatePanel(e),this.dragState=null;return}this.dragState.ghost?.remove(),this.dragState.iframes?.release(),this.updateDropOverlay(null);let l=this.applyDragConstraints(this.hitTestDropZone(s.clientX,s.clientY),n);if(l)switch(l.kind){case"header":case"content-center":l.group.id===n.id?n.reorderPanel(e,s.clientX):this.movePanel(e,l.group.id);break;case"content-split":this.dockTabFromDrag(e,l.direction,l.group);break}this.cleanupEmptyGroups(),l&&this.onLayoutChangedCb?.(),this.dragState=null},a=()=>{document.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i),document.removeEventListener("pointercancel",a),this.cancelTabDrag()};document.addEventListener("pointermove",r),document.addEventListener("pointerup",i),document.addEventListener("pointercancel",a)}cancelTabDrag(){this.dragState&&(this.dragState.ghost?.remove(),this.dragState.iframes?.release(),this.updateDropOverlay(null),this.dragState=null)}createDragGhost(e){let n=this.panels.get(e),o=document.createElement("div");return o.className="mb-drag-ghost",o.innerHTML=co,o.title=n?.title||e,o}hitTestDropZone(e,n,o){let r=[...this.floatingOverlays.entries()].filter(([,i])=>i.element.style.display!=="none").sort((i,a)=>{let s=parseInt(i[1].element.style.zIndex||"0");return parseInt(a[1].element.style.zIndex||"0")-s});for(let[,i]of r){let a=i.internalLayout?i.internalLayout.allGroups():[i.group];for(let s of a){if(s.id===o||s.locked==="no-drop-target")continue;if(!s.headerHidden){let c=s.headerElement.getBoundingClientRect();if(e>=c.left&&e<=c.right&&n>=c.top&&n<=c.bottom)return{kind:"header",group:s}}let l=s.contentElement.getBoundingClientRect();if(e>=l.left&&e<=l.right&&n>=l.top&&n<=l.bottom)return this.classifyContentZone(e,n,l,s)}}for(let i of this.groups.values()){if(this.floatingOverlays.has(i.id)||this.findOverlayForGroup(i)||i.id===o)continue;if(!i.headerHidden){let s=i.headerElement.getBoundingClientRect();if(e>=s.left&&e<=s.right&&n>=s.top&&n<=s.bottom&&i.locked!=="no-drop-target")return{kind:"header",group:i}}let a=i.contentElement.getBoundingClientRect();if(e>=a.left&&e<=a.right&&n>=a.top&&n<=a.bottom)return this.classifyContentZone(e,n,a,i)}return null}classifyContentZone(e,n,o,r){if(r.locked==="no-drop-target"){let I=n-o.top,h=o.bottom-n,y=e-o.left,R=o.right-e,E;return I<=h&&I<=y&&I<=R?E="top":h<=I&&h<=y&&h<=R?E="bottom":y<=R?E="left":E="right",{kind:"content-split",group:r,direction:E}}let a=this.splitEdgeSize,s=n-o.top,l=o.bottom-n,c=e-o.left,p=o.right-e;if(Math.min(s,l,c,p)<a){let I;return s<=l&&s<=c&&s<=p?I="top":l<=s&&l<=c&&l<=p?I="bottom":c<=p?I="left":I="right",{kind:"content-split",group:r,direction:I}}return{kind:"content-center",group:r}}applyDragConstraints(e,n){if(!e)return null;if(!("group"in e))return e;let o=this.findOverlayForGroup(e.group)!==null,r=!!e.group.locked;return(e.kind==="content-center"||e.kind==="header")&&r||n.dockingBlocked&&!o?null:e.kind==="content-split"&&o&&n.dialogDockingBlocked?{kind:"content-center",group:e.group}:e}updateDropOverlay(e){let n=this.dragState?.currentZone??null;if(n&&n.kind==="header"&&n.group.headerElement.classList.remove("mb-group-header--drop-target"),this.dropOverlay.style.display="none",e===null){this.dragState&&(this.dragState.currentZone=null);return}switch(e.kind){case"header":e.group.headerElement.classList.add("mb-group-header--drop-target");break;case"content-center":{let o=e.group.contentElement.getBoundingClientRect();this.positionDropOverlay(o.left,o.top,o.width,o.height),this.dropOverlay.dataset.zone="center";break}case"content-split":this.showSplitIndicator(e.group,e.direction);break}this.dragState&&(this.dragState.currentZone=e)}showSplitIndicator(e,n){let o=e.contentElement.getBoundingClientRect();switch(n){case"top":this.positionDropOverlay(o.left,o.top,o.width,o.height/2);break;case"bottom":this.positionDropOverlay(o.left,o.top+o.height/2,o.width,o.height/2);break;case"left":this.positionDropOverlay(o.left,o.top,o.width/2,o.height);break;case"right":this.positionDropOverlay(o.left+o.width/2,o.top,o.width/2,o.height);break}this.dropOverlay.dataset.zone=n}positionDropOverlay(e,n,o,r){let i=this.dropOverlay;i.style.display="block",i.style.left=`${e}px`,i.style.top=`${n}px`,i.style.width=`${o}px`,i.style.height=`${r}px`}detachPanelToFloating(e,n,o){let r=this.panels.get(e);if(!r||!r.group||r.group.id===this.mainGroupId)return;let i=Math.min(600,window.innerWidth*.8),a=Math.min(450,window.innerHeight*.7),s=this.addGroup({floating:{x:(window.innerWidth-i)/2,y:(window.innerHeight-a)/2,width:i,height:a}});this.movePanel(e,s.id),this.onGroupCreatedByDragCb?.(s)}dockTabFromDrag(e,n,o){let r=this.getLayoutForGroup(o);if(!r)return;let i=new mo;if(this.groups.set(i.id,i),this.wireGroupCallbacks(i),!r.splitGroup(o,i,n)){this.groups.delete(i.id),i.dispose(),this.movePanel(e,o.id);return}let s=this.findOverlayForGroup(o);s?.internalLayout&&(s.setDragGroup(i),i.location="floating",this.updateFloatingSplitState(s)),this.movePanel(e,i.id),s&&s.updateTotalTabCount(),this.onGroupCreatedByDragCb?.(i)}getLayoutForGroup(e){if(this.layout.findGroupNode(e))return this.layout;let n=this.findOverlayForGroup(e);return n?(n.internalLayout||(n.internalLayout=new nn(n.element),n.internalLayout.setMainGroup(n.group)),n.internalLayout):null}escapeGroupFromSplit(e){let n=this.groups.get(e);if(!n||!n.isInFloatingSplit)return;let o=this.findOverlayForGroup(n);if(!o?.internalLayout)return;let r=o.element.getBoundingClientRect(),i=this.floatingOverlays.get(e)===o,a=new po(n,{x:Math.min(r.left+30,window.innerWidth-320),y:Math.min(r.top+30,window.innerHeight-220),width:Math.max(300,r.width*.6),height:Math.max(200,r.height*.8)},this.container,this.portalLayer);this.floatingOverlays.set(e,a),o.internalLayout.removeGroup(n);let s=this.cleanupOrphanedFloatingLeaf(o);i&&s.length>0?(o.group=s[0],this.floatingOverlays.set(s[0].id,o)):s.length===0&&o.dispose(),n.isInFloatingSplit=!1,n.location==="floating"?n.fireLocationChanged():n.location="floating"}updateFloatingSplitState(e){if(!e.internalLayout)return;let n=e.internalLayout.allGroups(),o=n.length>1;for(let r of n)r.location="floating",r.isInFloatingSplit=o;e.repositionToolbar()}cleanupOrphanedFloatingLeaf(e){if(!e.internalLayout)return[];let n=e.internalLayout.allGroups();return n.length<=1?(n.length===1&&(e.element.appendChild(n[0].element),n[0].isInFloatingSplit=!1),e.internalLayout.dispose(),e.internalLayout=null,n.length===1&&(e.setDragGroup(n[0]),n[0].location="floating",e.repositionToolbar())):this.updateFloatingSplitState(e),e.updateTotalTabCount(),n}minimizeDocked(e){let n=this.layout.getGroupPosition(e);return this.layout.findGroupNode(e)&&this.layout.removeGroup(e),n?{siblingGroupId:n.siblingGroup.id,direction:n.direction}:null}restoreDocked(e,n,o,r){if(r){let a=this.groups.get(r);if(a&&this.layout.findGroupNode(a)&&this.layout.splitGroup(a,e,n,o))return}let i=this.mainGroupId?this.groups.get(this.mainGroupId):void 0;i&&this.layout.splitGroup(i,e,n,o)}findOverlayForGroup(e){let n=this.floatingOverlays.get(e.id);if(n)return n;for(let o of this.floatingOverlays.values())if(o.internalLayout?.findGroupNode(e))return o;return null}registerPortal(e,n,o){let r=document.createElement("div");r.className="mb-iframe-portal",r.dataset.portalId=e,this.portalLayer.appendChild(r),r.appendChild(n),this.portals.set(e,{entry:r,anchor:o})}unregisterPortal(e){let n=this.portals.get(e);n&&(n.entry.remove(),this.portals.delete(e))}syncPortals(){if(this.disposed)return;let e=[];for(let[,n]of this.portals){let{entry:o,anchor:r}=n;if(r.offsetParent===null)e.push({entry:o,rect:null,zIndex:"0"});else{let i=r.closest(".mb-floating-overlay"),a=i?.style.zIndex;e.push({entry:o,rect:r.getBoundingClientRect(),zIndex:String(i?parseInt(a||String(1e5+this.zBase),10)+1:50+this.zBase)})}}for(let{entry:n,rect:o,zIndex:r}of e)o?(n.style.display="",n.style.left=`${o.left}px`,n.style.top=`${o.top}px`,n.style.width=`${o.width}px`,n.style.height=`${o.height}px`,n.style.zIndex=r):n.style.display="none";this.portalRaf=requestAnimationFrame(()=>this.syncPortals())}};function kd(t){let e=/^#([0-9a-f]{3,8})$/i.exec(t.trim());if(!e)return null;let n=e[1];return n.length===3?[parseInt(n[0]+n[0],16),parseInt(n[1]+n[1],16),parseInt(n[2]+n[2],16)]:n.length===6||n.length===8?[parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)]:null}function on(t,e){let n=kd(t);return n?`rgba(${n[0]}, ${n[1]}, ${n[2]}, ${e})`:t}function rn(t){let e={};if(t.primary){let n=t.primary;e["--mb-adapt-separator-active"]=on(n,.4),e["--mb-adapt-drop-border"]=n,e["--mb-adapt-drop-header-bg"]=on(n,.15),e["--mb-adapt-drop-center-bg"]=on(n,.1),e["--mb-adapt-drop-split-bg"]=on(n,.12),e["--mb-adapt-status-icon-bg"]=on(n,.08),e["--mb-adapt-cap-spinner-color"]=n}if(t.background&&(e["--mb-adapt-bg"]=t.background,e["--mb-adapt-fork-tab-active-bg"]=t.background,e["--mb-adapt-status-card-bg"]=t.background),t.surface&&(e["--mb-adapt-fork-bg"]=t.surface,e["--mb-adapt-fork-tab-bg"]=t.surface),t.text&&(e["--mb-adapt-fork-tab-color"]=t.text,e["--mb-adapt-status-text"]=t.text,e["--mb-adapt-cap-color"]=t.text),t.textSecondary&&(e["--mb-adapt-fork-tab-inactive-color"]=t.textSecondary),t.border&&(e["--mb-adapt-fork-separator"]=t.border,e["--mb-adapt-status-card-border"]=t.border,e["--mb-adapt-cap-border-color"]=t.border),t.font&&(e["--mb-adapt-font"]=t.font,e["--mb-adapt-cap-font"]=t.font),t.vars)for(let[n,o]of Object.entries(t.vars))e[`--mb-adapt-${n}`]=o;return e}var Jd=["automation-id","session-token","auth-token","transmitter","challenge-token","requires-challenge","inherit-token","fork-display-mode","side-by-side-split","dark-mode","auto-resizing","allow-floating","allow-docking","allow-dialog-docking","allow-minimize","allow-maximize","floating-auto-resize","confirm-on-close","persist","debug"],Md=typeof HTMLElement<"u"?HTMLElement:class{},xt=class extends Md{constructor(){super();this._client=null}static get observedAttributes(){return Jd}get theme(){return this._theme}set theme(n){this._theme=n,this._client?.setTheme(n)}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 allowFloating(){return!this.hasAttribute("allow-floating")||this.getAttribute("allow-floating")!=="false"}set allowFloating(n){n?this.removeAttribute("allow-floating"):this.setAttribute("allow-floating","false")}get allowDocking(){return!this.hasAttribute("allow-docking")||this.getAttribute("allow-docking")!=="false"}set allowDocking(n){n?this.removeAttribute("allow-docking"):this.setAttribute("allow-docking","false")}get allowDialogDocking(){return!this.hasAttribute("allow-dialog-docking")||this.getAttribute("allow-dialog-docking")!=="false"}set allowDialogDocking(n){n?this.removeAttribute("allow-dialog-docking"):this.setAttribute("allow-dialog-docking","false")}get allowMinimize(){return!this.hasAttribute("allow-minimize")||this.getAttribute("allow-minimize")!=="false"}set allowMinimize(n){n?this.removeAttribute("allow-minimize"):this.setAttribute("allow-minimize","false")}get allowMaximize(){return!this.hasAttribute("allow-maximize")||this.getAttribute("allow-maximize")!=="false"}set allowMaximize(n){n?this.removeAttribute("allow-maximize"):this.setAttribute("allow-maximize","false")}get floatingAutoResize(){return this.hasAttribute("floating-auto-resize")}set floatingAutoResize(n){n?this.setAttribute("floating-auto-resize",""):this.removeAttribute("floating-auto-resize")}get confirmOnClose(){return this.hasAttribute("confirm-on-close")}set confirmOnClose(n){n?this.setAttribute("confirm-on-close",""):this.removeAttribute("confirm-on-close")}get forkDisplayMode(){return this.getAttribute("fork-display-mode")==="dialog"?"dialog":"side-by-side"}set forkDisplayMode(n){this.setAttribute("fork-display-mode",n)}get persist(){return this.hasAttribute("persist")}set persist(n){n?this.setAttribute("persist",""):this.removeAttribute("persist")}get debug(){return this.hasAttribute("debug")}set debug(n){n?this.setAttribute("debug",""):this.removeAttribute("debug")}async newSession(){this._client&&await this._client.newSession()}connectedCallback(){queueMicrotask(()=>this._tryInit())}disconnectedCallback(){this._destroyClient()}attributeChangedCallback(n,o,r){if(o!==r){if(n==="automation-id"||n==="persist"||n==="debug"){this._destroyClient(),queueMicrotask(()=>this._tryInit());return}if(this._client)switch(n){case"fork-display-mode":this._client.setForkDisplayMode(this.forkDisplayMode);break;case"dark-mode":this._client.setDarkMode(this.darkMode);break;case"auto-resizing":this._client.setAutoResizing(this.autoResizing);break;case"allow-floating":this._client.setAllowFloating(this.allowFloating);break;case"allow-docking":this._client.setAllowDocking(this.allowDocking);break;case"allow-dialog-docking":this._client.setAllowDialogDocking(this.allowDialogDocking);break;case"allow-minimize":this._client.setAllowMinimize(this.allowMinimize);break;case"allow-maximize":this._client.setAllowMaximize(this.allowMaximize);break;case"floating-auto-resize":this._client.setFloatingAutoResize(this.floatingAutoResize);break;case"confirm-on-close":this._client.setConfirmOnClose(this.confirmOnClose);break}}}_tryInit(){if(this._client||!this.isConnected)return;let n=this.automationId;if(!n){console.error(`[adapt] <adapt-automation> is missing the required "automation-id" attribute. The element will not initialize. Set it via HTML: <adapt-automation automation-id="..."> or via the Astro/React/Vue component's automationId prop.`);return}let o=this.getAttribute("session-token"),r=this.getAttribute("auth-token"),i=this.getAttribute("transmitter"),a=this.getAttribute("challenge-token"),s=this.hasAttribute("requires-challenge"),l=this.getAttribute("inherit-token"),c=this.getAttribute("side-by-side-split"),p;this.forkDisplayMode==="dialog"?p={mode:"dialog"}:p={mode:"side-by-side",...c!==null&&{split:Number(c)}};let g={container:this,automationId:n,forkDisplay:p,darkMode:this.darkMode,autoResizing:this.autoResizing,onSession:(I,h)=>{this.onSessionCallback?.(I,h),this.dispatchEvent(new CustomEvent("adapt-session",{detail:{status:I,fork:h},bubbles:!0}))},onOutput:I=>{this.onOutputCallback?.(I),this.dispatchEvent(new CustomEvent("adapt-output",{detail:{output:I},bubbles:!0}))},onForkActive:I=>{this.onForkActiveCallback?.(I),this.dispatchEvent(new CustomEvent("adapt-fork-active",{detail:{active:I},bubbles:!0}))},onError:I=>{this.onErrorCallback?.(I),this.dispatchEvent(new CustomEvent("adapt-error",{detail:{error:I},bubbles:!0}))}};this.allowFloating||(g.allowFloating=!1),this.allowDocking||(g.allowDocking=!1),this.allowDialogDocking||(g.allowDialogDocking=!1),this.allowMinimize||(g.allowMinimize=!1),this.allowMaximize||(g.allowMaximize=!1),this.floatingAutoResize&&(g.floatingAutoResize=!0),this.confirmOnClose&&(g.confirmOnClose=!0),this.debug&&(g.debug=!0),o&&(g.sessionToken=o),r&&(g.authToken=r),i&&(g.transmitter=i),a&&(g.challengeToken=a),s&&(g.requiresChallenge=!0),l&&(g.inheritToken=l),this.signals!==void 0&&(g.signals=this.signals),this.capWidgetOptions!==void 0&&(g.capWidgetOptions=this.capWidgetOptions),this.inheritFrom!==void 0&&(g.inheritFrom=this.inheritFrom),this.classNames!==void 0&&(g.classNames=this.classNames),this.styles!==void 0&&(g.styles=this.styles),this.text!==void 0&&(g.text=this.text),this._theme!==void 0&&(g.theme=this._theme),this.persistOptions!==void 0?g.persist=this.persistOptions:this.persist&&(g.persist=!0),this._client=new Ne(g)}_destroyClient(){this._client&&(this._client.destroy(),this._client=null)}};if(typeof customElements<"u"&&!customElements.get("adapt-automation")){customElements.define("adapt-automation",xt);let t="adapt-element-display";if(!document.getElementById(t)){let e=document.createElement("style");e.id=t,e.textContent="adapt-automation, adapt-cap { display: block; }",document.head.appendChild(e)}}function ws(t,e="both",n){let o=`mb_adapt_${n??t}`;(e==="session"||e==="both")&&sessionStorage.removeItem(o),(e==="local"||e==="both")&&localStorage.removeItem(o)}var de="main",q="fork-group",Es=768,Bs=40,an=class an{constructor(e){this.rootElement=null;this.panelManager=null;this.mainUrl=null;this.sessionToken=null;this.forks=new Map;this.mainRetentionPolicy="retain";this.mainCloseTimer=null;this.components=new Map;this.floatingAutoResized=new Set;this.beforeUnloadHandler=null;this.resizeObserver=null;this._autoMaximizedByResize=!1;this.destroyed=!1;this.sessionTerminated=!1;this.removingPanelProgrammatically=!1;this.restoringSession=!1;this.lastForkActive=null;this.messageHandler=null;this.minimizedTabsContainer=null;this.lastReportedContentHeight=0;this.forkPanelHeights=new Map;this.statusMessageElement=null;this.capWidgetInstance=null;this.minimizeManager=null;this.forkGroupActions=new Map;this.floatingToolbars=new Map;if(!e.automationId)throw new Error('[adapt] AdaptWebClient requires "automationId". Pass it in the options: new WebClient({ automationId: "...", ... })');this.options=e,this.debug=e.debug??!1;let n=e.forkDisplay??{mode:"side-by-side"};this.forkDisplay=n,this.darkMode=e.darkMode??!1,this.autoResizing=e.autoResizing??!1,this.allowFloating=e.allowFloating??!0,this.allowDocking=e.allowDocking??!0,this.allowDialogDocking=e.allowDialogDocking??!0,this.allowMinimize=e.allowMinimize??!0,this.allowMaximize=e.allowMaximize??!0,this.floatingAutoResize=e.floatingAutoResize??!1,this.confirmOnClose=e.confirmOnClose??!1,this.theme=e.theme;let o=typeof e.container=="string"?document.getElementById(e.container):e.container;if(!o)throw new Error(`Container with id '${e.container}' not found`);this.container=o;let r=ao({id:e.automationId});this.client=Is(r,e.automationId,{debug:this.debug}),this.log("info",`init automationId=${e.automationId} forkDisplay=${n.mode}`),Zs(),this.createRootElement(),this.createPanelManager(),this.wireBeforeTabClose(),this.setupMessageListener(),this.init().catch(i=>{this.showErrorStatus(i)})}static registerCapWidget(e){an._capWidgetClass=e}get responsiveBreakpoint(){if(!this.rootElement)return Es;let e=getComputedStyle(this.rootElement).getPropertyValue("--mb-adapt-responsive-breakpoint").trim(),n=Number(e);return n>0?n:Es}get responsiveHysteresis(){if(!this.rootElement)return Bs;let e=getComputedStyle(this.rootElement).getPropertyValue("--mb-adapt-responsive-hysteresis").trim(),n=Number(e);return n>=0?n:Bs}log(e,n,o){if(!this.debug&&e==="info")return;(e==="error"?console.error:e==="warn"?console.warn:console.log)(`[Adapt] ${n}`,o!==void 0?o:"")}onComponentCreated(e,n){this.components.set(e,n)}onComponentDisposed(e){this.components.delete(e)}getDarkMode(){return this.darkMode}getClassNames(){return this.options.classNames}createPanelManager(){if(!this.rootElement)return;this.minimizeManager=new je,this.minimizeManager.setAllowDocking(this.allowDocking),this.minimizedTabsContainer=document.createElement("div"),this.minimizedTabsContainer.className="mb-adapt-minimized-tabs",this.rootElement.appendChild(this.minimizedTabsContainer),this.panelManager=new et({container:this.rootElement,onGroupCreatedByDrag:o=>{o.dragConstraint="merge-only",this.allowDocking||(o.dockingBlocked=!0),this.allowDialogDocking||(o.dialogDockingBlocked=!0),this.setupForkGroupActions(o),this.saveState()},onLayoutChanged:()=>{this.saveState()}});let e=this.panelManager.addGroup({id:"main-group"});this.panelManager.setMainGroup(e),e.locked="no-drop-target",e.setHeaderHidden(!0),e.element.setAttribute("data-main-group","true");let n=new ke(this);n.init(de,{}),this.panelManager.addPanel({id:de,element:n.element,groupId:e.id}),this.minimizeManager.init(this.minimizedTabsContainer,this.panelManager),this.minimizeManager.onBarVisibilityChanged(()=>{this.reapplyAutoResizeHeight()}),this.resizeObserver=new ResizeObserver(o=>{let r=o[0]?.contentRect;r&&this.onContainerResize(r.width,r.height)}),this.resizeObserver.observe(this.rootElement)}getOrigin(e){try{return new URL(e).origin}catch{return null}}isValidMessageOrigin(e){if(this.mainUrl){let n=this.getOrigin(this.mainUrl);if(n&&e===n)return!0}for(let n of this.forks.values()){let o=this.getOrigin(n.url);if(o&&e===o)return!0}return!1}findComponentBySource(e){for(let[n,o]of this.components)if(o.contentWindow===e)return{panelId:n,component:o};return null}setupMessageListener(){this.messageHandler=e=>{if(!this.isValidMessageOrigin(e.origin))return;let n=e.data;if(!n||typeof n!="object")return;let o=e.source,r=this.findComponentBySource(o);if(!r)return;let{panelId:i,component:a}=r,s=i===de;if(n.type==="adapt-init"&&typeof n.resize=="boolean"){a.resizeCapable=n.resize,s&&!n.resize&&this.rootElement&&(this.rootElement.style.height="");let l=a.getOrigin();if(l){let c;if(s)c=this.autoResizing&&n.resize;else{let g=this.panelManager?.getPanel(i)?.group,I=g?!!this.panelManager?.findOverlayContaining(g.id):!1;c=n.resize&&(I&&this.floatingAutoResize||!I&&this.autoResizing)}a.postMessage({type:"adapt-autoResizing",autoResizing:c},l),a.postMessage({type:"adapt-darkMode",darkMode:this.darkMode},l)}return}if(n.type==="adapt-resize"){let{height:l}=n;if(typeof l!="number"||!Number.isFinite(l)||l<1)return;if(s)this.lastReportedContentHeight=l,a.resizeCapable&&this.autoResizing&&this.rootElement&&this.applyBestAutoResizeHeight();else{this.forkPanelHeights.set(i,l);let p=this.panelManager?.getPanel(i)?.group;if(p&&p.activePanel?.id===i){let g=!!this.panelManager?.findOverlayContaining(p.id);!g&&a.resizeCapable&&this.autoResizing&&this.rootElement&&this.applyBestAutoResizeHeight(),g&&this.floatingAutoResize&&(this.floatingAutoResized.has(p.id)||(this.floatingAutoResized.add(p.id),this.resizeOverlayForGroup(p)))}}return}},window.addEventListener("message",this.messageHandler)}postToComponent(e,n){let o=e.getOrigin();o&&e.postMessage(n,o)}setDarkMode(e){if(this.darkMode===e)return;this.darkMode=e,this.rootElement?.classList.toggle("mb-adapt--dark",e),this.capWidgetInstance?.setDarkMode(e),this.applyTheme();let n={type:"adapt-darkMode",darkMode:e};for(let o of this.components.values())this.postToComponent(o,n)}setTheme(e){if(this.theme=e,this.clearThemeVars(),e?.mode!==void 0){let n=e.mode==="dark";if(this.darkMode!==n){this.setDarkMode(n);return}}this.applyTheme()}clearThemeVars(){if(!(!this.rootElement||!this._appliedThemeVars)){for(let e of this._appliedThemeVars)this.rootElement.style.removeProperty(e);this._appliedThemeVars=void 0}}applyTheme(){if(!this.rootElement||!this.theme)return;let e=rn(this.theme);for(let[n,o]of Object.entries(e))this.rootElement.style.setProperty(n,o);this._appliedThemeVars=Object.keys(e)}setAutoResizing(e){if(this.autoResizing===e)return;this.autoResizing=e;let n=this.components.get(de);n?.resizeCapable&&this.postToComponent(n,{type:"adapt-autoResizing",autoResizing:e});for(let[o,r]of this.components){if(o===de||!r.resizeCapable)continue;let a=this.panelManager?.getPanel(o)?.group;a&&this.panelManager?.findOverlayContaining(a.id)||this.postToComponent(r,{type:"adapt-autoResizing",autoResizing:e})}!e&&this.rootElement&&(this.rootElement.style.height="")}setAllowFloating(e){if(this.allowFloating!==e){this.allowFloating=e;for(let n of this.forkGroupActions.values())n.setAllowFloating(e)}}setAllowDocking(e){if(this.allowDocking!==e){if(this.allowDocking=e,this.minimizeManager?.setAllowDocking(e),this.panelManager)for(let n of this.getAllForkGroups())n.dockingBlocked=!e;for(let n of this.floatingToolbars.values())n.setAllowDocking(e)}}setAllowDialogDocking(e){if(this.allowDialogDocking!==e&&(this.allowDialogDocking=e,this.panelManager))for(let n of this.getAllForkGroups())n.dialogDockingBlocked=!e}setAllowMinimize(e){if(this.allowMinimize!==e){this.allowMinimize=e;for(let n of this.forkGroupActions.values())n.setAllowMinimize(e);for(let n of this.floatingToolbars.values())n.setAllowMinimize(e)}}setAllowMaximize(e){if(this.allowMaximize!==e){this.allowMaximize=e;for(let n of this.forkGroupActions.values())n.setAllowMaximize(e);for(let n of this.floatingToolbars.values())n.setAllowMaximize(e)}}setFloatingAutoResize(e){if(this.floatingAutoResize!==e){this.floatingAutoResize=e,this.floatingAutoResized.clear();for(let[n,o]of this.components){if(n===de||!o.resizeCapable)continue;let i=this.panelManager?.getPanel(n)?.group,s=(i?!!this.panelManager?.findOverlayContaining(i.id):!1)?e&&o.resizeCapable:this.autoResizing&&o.resizeCapable;this.postToComponent(o,{type:"adapt-autoResizing",autoResizing:s})}}}getAllForkGroups(){if(!this.panelManager)return[];let e=new Set,n=[],o=i=>{i.id==="main-group"||e.has(i.id)||(e.add(i.id),n.push(i))},r=this.panelManager.getGroup(q);r&&o(r);for(let i of this.panelManager.getDockedGroups())o(i);for(let[,i]of this.panelManager.getFloatingOverlays())for(let a of i.getAllGroups())o(a);return n}applyAutoResizeHeight(e){if(!this.rootElement)return;let n=this.minimizedTabsContainer?.offsetHeight??0;this.rootElement.style.height=`${Math.ceil(e)+n}px`}applyBestAutoResizeHeight(){if(!this.autoResizing||!this.rootElement)return;let e=0;if(this.components.get(de)?.resizeCapable&&this.lastReportedContentHeight>0){let o=this.panelManager?.getMainGroup();if(o?o.element.offsetHeight>0:!0){let i=o?.headerElement?.offsetHeight??0;e=this.lastReportedContentHeight+i}}for(let o of this.getAllForkGroups()){if(this.panelManager?.findOverlayContaining(o.id)||o.element.offsetHeight<=0)continue;let r=o.activePanel;if(r){let i=this.forkPanelHeights.get(r.id)??0,a=o.headerElement?.offsetHeight??0,s=i+a;s>e&&(e=s)}}e>0&&this.applyAutoResizeHeight(e)}reapplyAutoResizeHeight(){this.applyBestAutoResizeHeight()}setForkDisplayMode(e){this.forkDisplay.mode!==e&&(this.log("info",`setForkDisplayMode ${this.forkDisplay.mode} \u2192 ${e}`),e==="side-by-side"?this.forkDisplay={mode:"side-by-side"}:this.forkDisplay={mode:"dialog"},this.forks.size>0&&this.panelManager&&this.rebuildForkGroup(),this.emitForkActive(),this.saveState())}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.applyTheme(),this.container.appendChild(this.rootElement)}onUrl(e){if(this.destroyed)return;let n=e.fork||"";if(this.log("info",`onUrl fork=${n||"(main)"} stopped=${!!e.stopped} done=${!!e.done} url=${e.url?e.url.slice(0,60)+"...":"(none)"}`),e.stopped){this.handleStoppedMessage(n),this.saveState();return}if(e.done){this.handleDoneMessage(n,e.retentionPolicy),this.saveState();return}e.url&&(n?this.handleForkUrl(e.url,e.token,n,e.source,e.retentionPolicy):this.handleMainUrl(e.url,e.token,e.source,e.retentionPolicy),this.saveState())}handleMainUrl(e,n,o,r){this.log("info",`handleMainUrl url=${e.slice(0,60)}...`),this.mainCloseTimer&&(clearTimeout(this.mainCloseTimer),this.mainCloseTimer=null);let i=!this.mainUrl;if(this.removeStatusMessage(),this.mainUrl=e,this.mainToken=n,this.mainRetentionPolicy=this.resolveRetention(r),this.panelManager?.isMainGroupCollapsed()&&this.panelManager.expandMainGroup(),i){let s=this.getMaximizedDockedGroupId();if(s){let l=this.forkGroupActions.get(s);l&&l.clearMaximized()}}let a=this.components.get(de);a&&(a.update({url:e,token:n}),a.show())}handleForkUrl(e,n,o,r,i){if(!this.panelManager)return;let a=this.resolveRetention(i),s=this.forks.get(o);if(s){this.log("info",`handleForkUrl fork=${o} update existing panel=${s.panelId}`),s.closeTimer&&(clearTimeout(s.closeTimer),s.closeTimer=null),s.url=e,s.token=n,s.source=r,s.retentionPolicy=a,s.completed=!1,s.recyclable=!1;let g=this.components.get(s.panelId);g&&g.update({url:e,token:n});return}let l=this.findRecyclablePanel(r);if(l){this.log("info",`handleForkUrl fork=${o} recycling panel from fork=${l.forkKey}`);let{forkKey:g,state:I}=l;I.closeTimer&&(clearTimeout(I.closeTimer),I.closeTimer=null),this.forks.delete(g),I.url=e,I.token=n,I.fork=o,I.source=r,I.retentionPolicy=a,I.completed=!1,I.recyclable=!1,this.forks.set(o,I);let h=this.components.get(I.panelId);h&&h.update({url:e,token:n});return}this.log("info",`handleForkUrl fork=${o} creating new panel`);let c=`fork-${o}`;this.ensureForkGroup(),!this.mainUrl&&this.panelManager&&!this.panelManager.isMainGroupCollapsed()&&this.panelManager.collapseMainGroup();let p=new ke(this);p.init(c,{url:e,token:n}),this.panelManager.addPanel({id:c,element:p.element,groupId:q}),this.forks.set(o,{panelId:c,url:e,token:n,fork:o,source:r,completed:!1,recyclable:!1,retentionPolicy:a,closeTimer:null}),this.emitForkActive()}ensureForkGroup(){if(!this.panelManager||this.panelManager.getGroup(q))return;this.log("info",`ensureForkGroup mode=${this.forkDisplay.mode}`);let n=this.rootElement?.offsetWidth??800,o=this.rootElement?.offsetHeight??600;if(this.forkDisplay.mode==="dialog"){let r=n<this.responsiveBreakpoint,i=window.innerWidth,a=window.innerHeight,s=r?Math.min(n*.95,Math.max(200,i-20)):Math.min(720,n*.9),l=r?Math.min(o*.9,Math.max(200,a-20)):Math.min(o*.8,600),c=this.panelManager.addGroup({id:q,floating:{width:s,height:l,x:Math.max(0,(i-s)/2),y:Math.max(0,(a-l)/2)}});c.dragConstraint="merge-only",this.allowDocking||(c.dockingBlocked=!0),this.allowDialogDocking||(c.dialogDockingBlocked=!0),this.setupForkGroupActions(c),r&&(this.panelManager.getFloatingOverlay(q)?.maximize(),this._autoMaximizedByResize=!0)}else{let r=this.forkDisplay.mode==="side-by-side"?this.forkDisplay.split:void 0,i=r!==void 0?n*(1-r/100):void 0,a=this.panelManager.addGroup({id:q,direction:"right",initialSize:i});if(a.dragConstraint="merge-only",this.allowDocking||(a.dockingBlocked=!0),this.allowDialogDocking||(a.dialogDockingBlocked=!0),this.setupForkGroupActions(a),n<this.responsiveBreakpoint){let s=this.forkGroupActions.get(a.id);s?(s.setMaximized(),s.setAutoMaximizedByResize(!0)):this.panelManager.maximizeDockedGroup(a),this._autoMaximizedByResize=!0}}}setupForkGroupActions(e){if(!this.panelManager||!this.minimizeManager)return;let n=new qe(e,this.minimizeManager,this.panelManager,()=>{if(this.setupFloatingToolbar(e),e.location==="grid"&&!this.mainUrl&&this.panelManager&&!this.panelManager.isMainGroupCollapsed()&&this.panelManager.collapseMainGroup(),e.location==="floating"&&this.floatingAutoResized.delete(e.id),this.updateAutoResizeForGroup(e),e.location==="grid"){let o=this.rootElement?.offsetWidth??0;if(o>0&&o<this.responsiveBreakpoint){let r=this.forkGroupActions.get(e.id);r&&!r.isMaximized&&(r.setMaximized(),this._autoMaximizedByResize=!0,r.setAutoMaximizedByResize(!0))}}this.saveState()},{allowFloating:this.allowFloating,allowMinimize:this.allowMinimize,allowMaximize:this.allowMaximize});n.setBeforeClose(()=>this.confirmCloseGroup(e)),n.onMaximizeChanged(o=>{o||(this._autoMaximizedByResize=!1,n.setAutoMaximizedByResize(!1)),this.saveState()}),e.setHeaderActions(n.element),this.forkGroupActions.set(e.id,n),e.onActivePanelChanged(()=>{this.autoResizing&&this.rootElement&&this.applyBestAutoResizeHeight()}),this.setupFloatingToolbar(e)}updateAutoResizeForGroup(e){let n=this.panelManager?!!this.panelManager.findOverlayContaining(e.id):!1;for(let o of e.panels){let r=this.components.get(o.id);if(!r?.resizeCapable)continue;let i=n?this.floatingAutoResize:this.autoResizing;this.postToComponent(r,{type:"adapt-autoResizing",autoResizing:i})}}setupFloatingToolbar(e){if(!this.panelManager||!this.minimizeManager)return;let n=this.panelManager.findOverlayContaining(e.id);if(n)if(e.onPanelCountChanged(()=>n.updateTotalTabCount()),n.hasToolbar)n.repositionToolbar();else{let o=new $e(n,this.panelManager,this.minimizeManager,{allowDocking:this.allowDocking,allowMinimize:this.allowMinimize,allowMaximize:this.allowMaximize});o.setBeforeClose(()=>this.confirmCloseGroup(n.group)),n.setToolbar(o.element),this.floatingToolbars.set(n.group.id,o),n.updateTotalTabCount()}}resolveRetention(e){return e?e.case:"retain"}findRecyclablePanel(e){let n=null;for(let[o,r]of this.forks)if(r.recyclable){if(e&&r.source===e)return{forkKey:o,state:r};n||(n={forkKey:o,state:r})}return n}handleMainDone(e){switch(e?this.resolveRetention(e):this.mainRetentionPolicy){case"close":this.scheduleMainClose(e?.case==="close"?e.timeoutSeconds:void 0);break;case"recycle":break;default:break}}scheduleForkClose(e,n,o){let r=()=>{n.closeTimer=null,this.removingPanelProgrammatically=!0;try{if(this.panelManager){let i=this.components.get(n.panelId);i&&i.dispose(),this.panelManager.removePanel(n.panelId)}this.forks.delete(e),this.removeForkGroupIfEmpty()}finally{this.removingPanelProgrammatically=!1}this.emitForkActive(),this.saveState()};o&&o>0?n.closeTimer=setTimeout(r,o*1e3):r()}scheduleMainClose(e){let n=()=>{this.mainCloseTimer=null,this.mainUrl=null,this.mainToken=void 0;let o=this.components.get(de);o&&o.hide(),this.panelManager&&!this.panelManager.isMainGroupCollapsed()&&this.panelManager.collapseMainGroup(),this.saveState()};e&&e>0?this.mainCloseTimer=setTimeout(n,e*1e3):n()}restoreFork(e,n){if(!this.panelManager)return;let o=n??q;this.log("info",`restoreFork fork=${e.fork} \u2192 group=${o} url=${e.url.slice(0,60)}...`);let r=`fork-${e.fork}`;o===q&&this.ensureForkGroup(),!this.mainUrl&&this.panelManager&&!this.panelManager.isMainGroupCollapsed()&&this.panelManager.collapseMainGroup();let i=new ke(this);i.init(r,{url:e.url,token:e.token}),this.panelManager.addPanel({id:r,element:i.element,groupId:o}),this.forks.set(e.fork,{panelId:r,url:e.url,token:e.token,fork:e.fork,source:e.source,completed:!1,recyclable:e.retentionPolicy==="recycle",retentionPolicy:e.retentionPolicy,closeTimer:null}),this.emitForkActive()}restoreDockedLayout(e){this.panelManager&&(this.createGroupsFromTree(e),this.panelManager.rebuildDockedLayout(e))}createGroupsFromTree(e){if(this.panelManager){if(e.kind==="leaf"){if(e.groupId==="main-group"||this.panelManager.getGroup(e.groupId))return;let n=this.panelManager.addGroup({id:e.groupId});n.dragConstraint="merge-only",this.allowDocking||(n.dockingBlocked=!0),this.allowDialogDocking||(n.dialogDockingBlocked=!0),this.setupForkGroupActions(n);return}this.createGroupsFromTree(e.first),this.createGroupsFromTree(e.second)}}clearAllForks(){this.log("info",`clearAllForks count=${this.forks.size}`),this.removingPanelProgrammatically=!0;try{if(this.panelManager)for(let e of this.forks.values()){e.closeTimer&&(clearTimeout(e.closeTimer),e.closeTimer=null);let n=this.components.get(e.panelId);n&&n.dispose(),this.panelManager.removePanel(e.panelId)}this.forks.clear(),this.removeForkGroupIfEmpty()}finally{this.removingPanelProgrammatically=!1}}rebuildForkGroup(){if(!this.panelManager)return;let e=this.panelManager.getGroup(q);if(e)if(this.log("info",`rebuildForkGroup newMode=${this.forkDisplay.mode}`),this.forkDisplay.mode==="dialog"){let n=this.rootElement?.offsetWidth??800,o=this.rootElement?.offsetHeight??600,r=Math.min(720,n*.9),i=Math.min(o*.8,600);this.panelManager.addFloatingGroup(e,{width:r,height:i,x:(window.innerWidth-r)/2,y:(window.innerHeight-i)/2}),this.setupFloatingToolbar(e)}else{let n=this.forkDisplay.mode==="side-by-side"?this.forkDisplay.split:void 0,o=n!==void 0?(this.rootElement?.offsetWidth??800)*(1-n/100):void 0;this.panelManager.dockGroup(q,"right",o)}}handleSessionComplete(){this.clearAllForks(),this.emitForkActive()}handleDoneMessage(e,n){if(this.log("info",`handleDoneMessage fork=${e||"(main)"} retention=${n?.case??"default"}`),!e){this.handleMainDone(n);return}let o=this.forks.get(e);if(!o)return;switch(n?this.resolveRetention(n):o.retentionPolicy){case"close":o.completed=!0,this.scheduleForkClose(e,o,n?.case==="close"?n.timeoutSeconds:void 0);break;case"recycle":o.completed=!0,o.recyclable=!0;break;default:o.completed=!0;break}}handleStoppedMessage(e){if(this.log("info",`handleStoppedMessage fork=${e||"(main)"}`),!e){this.mainCloseTimer&&(clearTimeout(this.mainCloseTimer),this.mainCloseTimer=null),this.mainUrl=null,this.mainToken=void 0;let o=this.components.get(de);o&&o.hide(),this.showStatusMessage(this.options.text?.stopped??"This session has been stopped","stopped");return}let n=this.forks.get(e);if(n){n.closeTimer&&(clearTimeout(n.closeTimer),n.closeTimer=null),this.removingPanelProgrammatically=!0;try{if(this.panelManager){let o=this.components.get(n.panelId);o&&o.dispose(),this.panelManager.removePanel(n.panelId)}this.forks.delete(e),this.removeForkGroupIfEmpty()}finally{this.removingPanelProgrammatically=!1}this.emitForkActive()}}cleanupGroupTracking(e){let n=this.forkGroupActions.get(e);n&&(n.dispose(),this.forkGroupActions.delete(e)),this.floatingToolbars.delete(e),this.floatingAutoResized.delete(e),this.minimizeManager?.removeGroup(e),e===q&&(this._autoMaximizedByResize=!1)}cleanupStaleGroupTracking(){if(this.panelManager){for(let e of[...this.forkGroupActions.keys()])this.panelManager.getGroup(e)||this.cleanupGroupTracking(e);for(let e of[...this.floatingToolbars.keys()])this.panelManager.getGroup(e)||this.floatingToolbars.delete(e)}}removeForkGroupIfEmpty(){if(!this.panelManager)return;let e=this.panelManager.getGroup(q);e&&e.size===0?(this.panelManager.removeGroup(q),this.cleanupGroupTracking(q)):e||this.cleanupGroupTracking(q),this.minimizeManager?.removeGroup(q)}getMaximizedDockedGroupId(){for(let[e,n]of this.forkGroupActions)if(n.isMaximized)return e}emitForkActive(){if(!this.options.onForkActive)return;let e=this.forks.size>0;e!==this.lastForkActive&&(this.lastForkActive=e,this.options.onForkActive(e))}parseInheritToken(){let e=this.options.inheritFrom;return e?"hash"in e?this.parseFromHash(e.hash):this.parseFromParam(e.param):null}parseFromHash(e){let n=window.location.hash.slice(1);if(!n)return null;let o=new URLSearchParams(n),r=o.get(e);if(!r)return null;o.delete(e);let i=o.toString(),a=window.location.pathname+window.location.search+(i?"#"+i:"");return history.replaceState(null,"",a),decodeURIComponent(r)}parseFromParam(e){let n=new URLSearchParams(window.location.search),o=n.get(e);if(!o)return null;n.delete(e);let r=n.toString(),i=window.location.pathname+(r?"?"+r:"")+window.location.hash;return history.replaceState(null,"",i),decodeURIComponent(o)}async init(){this.panelManager?.onDidRemovePanel(n=>{if(!this.removingPanelProgrammatically){for(let[o,r]of this.forks)if(r.panelId===n.id){r.closeTimer&&(clearTimeout(r.closeTimer),r.closeTimer=null);let i=this.components.get(r.panelId);i&&i.dispose(),this.sessionToken&&this.client.stop(this.sessionToken,o).catch(()=>{}),this.forks.delete(o);break}this.emitForkActive(),this.cleanupStaleGroupTracking()}});let e={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"||n.status==="STATUS_DELEGATED"||n.status==="STATUS_EXPIRED")&&(this.sessionTerminated=!0,this.clearState(),this.beforeUnloadHandler&&(window.removeEventListener("beforeunload",this.beforeUnloadHandler),this.beforeUnloadHandler=null)),this.options.onSession&&this.options.onSession(n.status||"STATUS_UNSPECIFIED",n.fork)}};if(this.options.onOutput&&(e.onOutput=this.options.onOutput),e.onError=n=>{this.showErrorStatus(n),this.beforeUnloadHandler&&(window.removeEventListener("beforeunload",this.beforeUnloadHandler),this.beforeUnloadHandler=null)},!this.options.sessionToken&&this.resolvePersistOptions()){this.log("info","attempting session restore from persisted state");let n=await this.tryRestoreSession(e);if(this.log("info",`restore result=${n}`),n!=="none"){this.updateBeforeUnloadGuard();return}}if(this.options.sessionToken)this.log("info","using pre-created sessionToken"),this.sessionToken=this.options.sessionToken,await this.client.subscribe(this.sessionToken,e);else{let n=this.parseInheritToken(),o=n||this.options.inheritToken;if(this.options.inheritFrom&&!n){let a="hash"in this.options.inheritFrom?`hash key '${this.options.inheritFrom.hash}'`:`param '${this.options.inheritFrom.param}'`;this.log("error",`no inherit token found in URL ${a}`);return}let r=this.options.challengeToken;if(this.options.requiresChallenge&&!r&&!o&&(r=await this.showCapWidgetAndSolve(),!r)){this.log("error","failed to solve challenge");return}let i;if(o)this.log("info","starting session via inheritToken"),i=await this.client.runInherit(o,e);else{this.log("info",`starting session via run (transmitter=${this.options.transmitter??"default"})`);let a={...e};this.options.transmitter!==void 0&&(a.transmitter=this.options.transmitter),this.options.signals!==void 0&&(a.signals=this.options.signals),this.options.authToken!==void 0&&(a.authToken=this.options.authToken),r!==void 0&&(a.challengeToken=r),i=await this.client.run(a)}this.sessionToken=i.sessionToken,this.sessionExpiresAt=i.expiresAt,this.log("info",`session started token=${this.sessionToken?.slice(0,8)}...`),this.saveState()}this.updateBeforeUnloadGuard()}async showCapWidgetAndSolve(){let e=an._capWidgetClass;if(!e)throw new Error("Cap.js not loaded. Import '@mochabug/adapt-web/cap' or use the full UMD bundle.");return new Promise(n=>{this.capWidgetInstance=new e({container:this.rootElement,automationId:this.options.automationId,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:o=>{this.capWidgetInstance=null,n(o)},onError:o=>{this.log("error","Cap.js error:",o),this.capWidgetInstance=null,n(void 0)}}),this.darkMode&&this.capWidgetInstance.setDarkMode(!0)})}resolvePersistOptions(){let e=this.options.persist;if(!e)return null;if(e===!0)return{storage:"session",ttl:3600};let n={storage:e.storage??"session",ttl:e.ttl??3600};return e.key!==void 0&&(n.key=e.key),n}getStorageKey(){return`mb_adapt_${this.resolvePersistOptions()?.key??this.options.automationId}`}getStorage(){let e=this.resolvePersistOptions();return e?e.storage==="local"?localStorage:sessionStorage:null}saveState(){if(this.restoringSession)return;let e=this.getStorage();if(!e||!this.sessionToken)return;let n=this.resolvePersistOptions();this.log("info",`saveState key=${this.getStorageKey()} forks=${this.forks.size} mainUrl=${this.mainUrl?"yes":"none"}`);let o={v:3,token:this.sessionToken,expiresAt:this.sessionExpiresAt?this.sessionExpiresAt.toISOString():null,savedAt:Date.now(),ttl:n.ttl,mainUrl:this.mainUrl,mainToken:this.mainToken,forks:Array.from(this.forks.values()).filter(i=>!i.completed||i.recyclable).map(i=>{let a={url:i.url,token:i.token,fork:i.fork,retentionPolicy:i.retentionPolicy};return i.source!==void 0&&(a.source=i.source),a}),forkDisplayMode:this.forkDisplay.mode,layout:this.panelManager?.serializeLayout()};if(this.minimizeManager){let i=this.minimizeManager.getMinimizedGroupIds();i.length>0&&(o.minimizedGroups=i.map(a=>{let s=this.minimizeManager.getEntry(a),l={groupId:a,mode:s?.mode??"floating"};return s?.savedPosition&&(l.savedPosition={...s.savedPosition}),l}))}let r=this.getMaximizedDockedGroupId();r&&(o.maximizedDockedGroupId=r),e.setItem(this.getStorageKey(),JSON.stringify(o))}loadState(){let e=this.getStorage();if(!e)return null;let n=e.getItem(this.getStorageKey());if(!n)return this.log("info","loadState: no persisted state found"),null;let o;try{o=JSON.parse(n)}catch{return this.log("warn","loadState: invalid JSON, clearing"),this.clearState(),null}if(o.v!==3)return this.log("warn",`loadState: version mismatch v=${o.v}, clearing`),this.clearState(),null;let r=Date.now(),i=3e4;if(r-o.savedAt>o.ttl*1e3+i)return this.log("info","loadState: TTL expired, clearing"),this.clearState(),null;if(o.expiresAt){let a=new Date(o.expiresAt).getTime();if(r>a+i)return this.log("info","loadState: session expired, clearing"),this.clearState(),null}return this.log("info",`loadState: found state forks=${o.forks.length} mainUrl=${o.mainUrl?"yes":"none"}`),o}clearState(){this.log("info","clearState");let e=this.getStorage();e&&e.removeItem(this.getStorageKey())}async tryRestoreSession(e){let n=this.loadState();if(!n)return"none";let o=Date.now()-n.savedAt>1e4;if(this.log("info",`tryRestoreSession token=${n.token.slice(0,8)}... forks=${n.forks.length} stale=${o}`),this.sessionToken=n.token,this.sessionExpiresAt=n.expiresAt?new Date(n.expiresAt):void 0,this.mainUrl=n.mainUrl,this.mainToken=n.mainToken,n.forkDisplayMode&&(n.forkDisplayMode==="side-by-side"?this.forkDisplay={mode:"side-by-side"}:this.forkDisplay={mode:"dialog"}),this.mainUrl){let l=this.components.get(de);l&&l.update({url:this.mainUrl,token:this.mainToken})}this.restoringSession=!0;try{if(n.layout?.mainLayout&&this.panelManager&&this.restoreDockedLayout(n.layout.mainLayout),n.layout?.floatingGroups&&this.panelManager)for(let c of n.layout.floatingGroups){if(this.panelManager.getGroup(c.groupId))continue;let p=this.panelManager.addGroup({id:c.groupId,floating:c.bounds});p.dragConstraint="merge-only",this.allowDocking||(p.dockingBlocked=!0),this.allowDialogDocking||(p.dialogDockingBlocked=!0),this.setupForkGroupActions(p),c.internalLayout&&this.createGroupsFromTree(c.internalLayout)}this.panelManager&&Vs(this.panelManager.getGroupIds());let l=()=>{if(!this.panelManager)return q;for(let c of this.panelManager.getDockedGroups())if(c.id!=="main-group")return c.id;return q};this.log("info",`restore phase2: ${n.forks.length} forks, panelLocations=${JSON.stringify(n.layout?.panelLocations??{})}`);for(let c of n.forks){let p=`fork-${c.fork}`,g=n.layout?.panelLocations?.[p]??q,I=this.panelManager?.getGroup(g),h=I?g:l();I||this.log("warn",`restore: target group "${g}" not found for ${p}, fallback="${h}"`),this.restoreFork(c,h)}if(n.layout?.floatingGroups&&this.panelManager)for(let c of n.layout.floatingGroups)c.internalLayout&&this.panelManager.rebuildFloatingInternalLayout(c.groupId,c.internalLayout);if(this.panelManager&&this.panelManager.cleanupEmptyGroups(),n.layout&&this.panelManager)for(let c of n.layout.floatingGroups){let p=this.panelManager.getFloatingOverlay(c.groupId);p&&(p.setFullBounds(c.bounds),c.isMaximized&&(p.maximize(),this.floatingToolbars.get(c.groupId)?.syncMaximizedState()))}if(n.minimizedGroups&&this.minimizeManager&&this.panelManager)for(let c of n.minimizedGroups){let p=this.panelManager.getGroup(c.groupId);if(p&&!this.minimizeManager.isMinimized(c.groupId))if(c.mode==="floating"){let g=this.panelManager.getFloatingOverlay(c.groupId);g&&this.minimizeManager.minimize(c.groupId,g,p)}else c.mode==="docked"&&this.minimizeManager.minimizeDocked(c.groupId,p,this.panelManager)}if(n.maximizedDockedGroupId&&this.panelManager){let c=this.forkGroupActions.get(n.maximizedDockedGroupId);c&&c.setMaximized()}o||e.onSession?.({status:"STATUS_RUNNING"})}finally{this.restoringSession=!1}this.saveState();let r=!1,i=!1,a=e.onError,s={...e,onError:l=>{r=!0;let c=this.loadState();!c||Date.now()-c.savedAt>1e4?(i=!0,this.clearState()):a?.(l)}};try{await this.client.subscribe(n.token,s)}catch{r=!0,o?(i=!0,this.clearState()):this.showErrorStatus(new Error("Session restore failed"))}return r?(await this.client.unsubscribe(),this.sessionToken=null,this.sessionExpiresAt=void 0,this.mainUrl=null,this.mainToken=void 0,this.clearAllForks(),this.components.get(de)?.hide(),i?"none":"failed"):"restored"}async newSession(){this.clearState(),this.sessionTerminated=!1,this.mainCloseTimer&&(clearTimeout(this.mainCloseTimer),this.mainCloseTimer=null),this.mainRetentionPolicy="retain",this.sessionToken&&this.client.stop(this.sessionToken).catch(()=>{}),await this.client.unsubscribe(),this.mainUrl=null,this.mainToken=void 0,this.sessionToken=null,this.sessionExpiresAt=void 0,this.lastForkActive=null,this.updateBeforeUnloadGuard(),this.clearAllForks(),this.components.get(de)?.hide(),this.removeStatusMessage();try{await this.init()}catch(e){this.showErrorStatus(e)}}resizeOverlayForGroup(e){if(!this.panelManager)return;let n=this.panelManager.findOverlayContaining(e.id);if(!n)return;let o=n.getAllGroups(),r=0;for(let i of o){let a=i.activePanel;if(a){let s=this.forkPanelHeights.get(a.id)??0;s>r&&(r=s)}}if(r>0){let i=e.headerElement?.offsetHeight??40,a=Math.ceil(r)+i,s=n.getBounds(),l=(window.innerHeight-a)/2;n.setFullBounds({...s,height:a,y:Math.max(0,l)})}}onContainerResize(e,n){if(!this.panelManager)return;let o=this.panelManager.getGroup(q);if(!o)return;let r=this.responsiveBreakpoint,i=r+this.responsiveHysteresis,a=this.forkGroupActions.get(q),s=a?.isMaximized??!1;if(e<r&&!this._autoMaximizedByResize){if(o.location==="floating"){let l=this.panelManager.getFloatingOverlay(q);l&&!l.isMaximized&&(l.maximize(),this._autoMaximizedByResize=!0)}else s||(a?(a.setMaximized(),a.setAutoMaximizedByResize(!0)):this.panelManager.maximizeDockedGroup(o),this._autoMaximizedByResize=!0);this.applyBestAutoResizeHeight()}e>=i&&this._autoMaximizedByResize&&(o.location==="floating"?this.panelManager.getFloatingOverlay(q)?.restore():a?a.clearMaximized():this.panelManager.restoreMaximizedDockedGroup(o),this._autoMaximizedByResize=!1,a?.setAutoMaximizedByResize(!1))}setConfirmOnClose(e){this.confirmOnClose=e,this.updateBeforeUnloadGuard()}updateBeforeUnloadGuard(){let e=this.confirmOnClose&&!!this.sessionToken&&!this.destroyed;e&&!this.beforeUnloadHandler?(this.beforeUnloadHandler=n=>{n.preventDefault()},window.addEventListener("beforeunload",this.beforeUnloadHandler)):!e&&this.beforeUnloadHandler&&(window.removeEventListener("beforeunload",this.beforeUnloadHandler),this.beforeUnloadHandler=null)}wireBeforeTabClose(){this.panelManager&&this.panelManager.setBeforeTabClose(e=>{if(this.removingPanelProgrammatically||!this.confirmOnClose)return!0;for(let[,n]of this.forks)if(n.panelId===e)return n.completed?!0:this.showConfirmDialog("This panel hasn\u2019t finished yet. Are you sure you want to close it?");return!0})}confirmCloseGroup(e){return!this.confirmOnClose||!e.panels.some(o=>{for(let r of this.forks.values())if(r.panelId===o.id&&!r.completed)return!0;return!1})?!0:this.showConfirmDialog("Some panels haven\u2019t finished yet. Are you sure you want to close them?")}showConfirmDialog(e){return new Promise(n=>{if(!this.rootElement){n(!0);return}let o=document.createElement("div");o.className="mb-adapt mb-adapt__confirm-overlay",this.darkMode&&o.classList.add("mb-adapt--dark");let r=document.createElement("div");r.className="mb-adapt__confirm-card";let i=document.createElement("p");i.className="mb-adapt__confirm-text",i.textContent=e,r.appendChild(i);let a=document.createElement("div");a.className="mb-adapt__confirm-buttons";let s=document.createElement("button");s.className="mb-adapt__confirm-btn mb-adapt__confirm-btn--cancel",s.textContent="Cancel";let l=document.createElement("button");l.className="mb-adapt__confirm-btn mb-adapt__confirm-btn--confirm",l.textContent="Close",a.appendChild(s),a.appendChild(l),r.appendChild(a),o.appendChild(r),document.body.appendChild(o);let c=p=>{o.remove(),n(p)};s.addEventListener("click",()=>c(!1)),l.addEventListener("click",()=>c(!0)),o.addEventListener("click",p=>{p.target===o&&c(!1)})})}async destroy(){if(!this.destroyed){this.log("info","destroy"),this.destroyed=!0,this.mainCloseTimer&&(clearTimeout(this.mainCloseTimer),this.mainCloseTimer=null);for(let e of this.forks.values())e.closeTimer&&(clearTimeout(e.closeTimer),e.closeTimer=null);this.beforeUnloadHandler&&(window.removeEventListener("beforeunload",this.beforeUnloadHandler),this.beforeUnloadHandler=null),this.resizeObserver?.disconnect(),this.resizeObserver=null,this.capWidgetInstance?.destroy(),this.capWidgetInstance=null,this.minimizeManager?.dispose(),this.minimizeManager=null,this.sessionToken&&!this.loadState()&&!this.sessionTerminated&&this.client.stop(this.sessionToken).catch(()=>{}),await this.client.unsubscribe(),this.messageHandler&&window.removeEventListener("message",this.messageHandler),this.panelManager&&(this.panelManager.dispose(),this.panelManager=null),this.rootElement?.parentNode?.removeChild(this.rootElement),this.mainUrl=null,this.mainToken=void 0,this.forks.clear(),this.components.clear(),this.forkPanelHeights.clear(),this.forkGroupActions.clear(),this.floatingToolbars.clear(),this.sessionToken=null,this.lastForkActive=null,this.rootElement=null,this.messageHandler=null,this.statusMessageElement=null,this.minimizedTabsContainer=null}}showStatusMessage(e,n="error"){if(!this.rootElement)return;this.removeStatusMessage();let o=this.components.get(de);o&&o.hide(),this.statusMessageElement=document.createElement("div"),this.statusMessageElement.className=this.options.classNames?.statusMessage??"mb-adapt__status-message";let r=document.createElement("div");r.className=this.options.classNames?.statusCard??"mb-adapt__status-card";let i=document.createElement("div");i.className=n==="stopped"||n==="expired"?"mb-adapt__status-icon mb-adapt__status-icon--stopped":"mb-adapt__status-icon",i.innerHTML=n==="stopped"||n==="expired"?'<svg viewBox="0 0 24 24" fill="none" stroke="#6b7280" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="6" y="6" width="12" height="12" rx="2"/></svg>':'<svg viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>',r.appendChild(i);let a=document.createElement("p");a.className="mb-adapt__status-text",a.textContent=e,r.appendChild(a);let s=document.createElement("button");s.className="mb-adapt__status-restart",s.textContent=this.options.text?.restartButton??"Try again",s.addEventListener("click",()=>this.newSession()),r.appendChild(s),this.statusMessageElement.appendChild(r),this.rootElement.appendChild(this.statusMessageElement)}removeStatusMessage(){this.statusMessageElement&&(this.statusMessageElement.remove(),this.statusMessageElement=null)}showErrorStatus(e){let n=this.classifyError(e),o=n.kind==="expired"?"expired":"error";this.clearState(),this.clearAllForks(),this.showStatusMessage(n.message,o),this.options.onError?.(n)}isExpiredTokenError(e){return e instanceof X&&e.code===v.PermissionDenied&&e.message.toLowerCase().includes("expired")}getErrorMessage(e){let n=this.options.text,o=n?.error??"Something went wrong. Please try again later.";if(e instanceof X){if(this.isExpiredTokenError(e))return n?.sessionExpired??"Your session has expired.";switch(e.code){case v.ResourceExhausted:return n?.resourceExhausted??"This automation is currently at capacity. Please try again later.";case v.NotFound:return e.message.toLowerCase().includes("session not found")?n?.sessionNotFound??"This session has timed out or been stopped.":n?.notFound??"This automation could not be found.";case v.PermissionDenied:case v.Unauthenticated:return n?.permissionDenied??"You don't have permission to run this automation.";default:return o}}return o}classifyError(e){let n=this.getErrorMessage(e);if(e instanceof X){if(this.isExpiredTokenError(e))return{kind:"expired",message:n,retriable:!1,cause:e};switch(e.code){case v.ResourceExhausted:return{kind:"capacity",message:n,retriable:!0,cause:e};case v.NotFound:return e.message.toLowerCase().includes("session not found")?{kind:"session_not_found",message:n,retriable:!1,cause:e}:{kind:"not_found",message:n,retriable:!1,cause:e};case v.PermissionDenied:case v.Unauthenticated:return{kind:"auth",message:n,retriable:!0,cause:e};default:return{kind:"error",message:n,retriable:!1,cause:e}}}return{kind:"error",message:n,retriable:!1,cause:e}}};an._capWidgetClass=null;var Ne=an;typeof window<"u"&&!window.CAP_CUSTOM_WASM_URL&&(window.CAP_CUSTOM_WASM_URL=new URL("https://cdn.mochabug.com/adapt/web/1.0.1-rc.21/cap_wasm_bg.wasm",window.location.href).href);var Ct=null,Ge=null,ho=new Map;async function Qr(t,e){let n=await t.createChallenge({id:e});return{count:n.count,size:n.size,difficulty:n.difficulty,expires:n.expires?pe(n.expires):new Date,token:n.token,verificationToken:n.verificationToken}}async function Or(t,e,n,o){let r=await t.redeemChallenge({id:e,verificationToken:n,solutions:o});return{token:r.token,expires:r.expires?pe(r.expires):new Date}}typeof window<"u"&&(window.CAP_CUSTOM_FETCH=async(t,e)=>{let n=t.toString();if(n.endsWith("/challenge")){if(!Ct||!Ge)return new Response(JSON.stringify({error:"Cap adapter not initialized"}),{status:500,headers:{"Content-Type":"application/json"}});try{let o=await Qr(Ct,Ge);return ho.set(Ge,o.verificationToken),new Response(JSON.stringify({challenge:{c:o.count,s:o.size,d:o.difficulty},token:o.token,expires:o.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"}})}}if(n.endsWith("/redeem")){if(!Ct||!Ge)return new Response(JSON.stringify({error:"Cap adapter not initialized"}),{status:500,headers:{"Content-Type":"application/json"}});let o=ho.get(Ge);if(!o)return new Response(JSON.stringify({error:"No verification token found - challenge must be created first"}),{status:400,headers:{"Content-Type":"application/json"}});try{let i=((e?.body?JSON.parse(e.body):{}).solutions||[]).map(s=>BigInt(s)),a=await Or(Ct,Ge,o,i);return ho.delete(Ge),new Response(JSON.stringify({success:!0,token:a.token,expires:a.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"}})}}return fetch(t,e)});function Xs(t,e){Ct=t,Ge=e}function Ws(){Ge&&ho.delete(Ge),Ct=null,Ge=null}var Rs=`/* ============================================
893
+ }`;var ke=class{constructor(e){this.panelId="";this.resizeCapable=!1;this.host=e,this.element=document.createElement("div"),this.element.style.width="100%",this.element.style.height="100%",this.element.style.position="relative",this.iframe=this.createIframe(),this.element.appendChild(this.iframe)}get contentWindow(){return this.iframe.contentWindow}init(e,n){this.panelId=e,n.url&&(this.currentUrl=n.url,this.currentToken=n.token,this.setIframeSrc(n.url,n.token)),this.host.onComponentCreated(this.panelId,this)}update(e){if(e.url!==void 0){let n=e.url!==this.currentUrl,o=e.token!==this.currentToken;this.currentUrl=e.url,e.token!==void 0&&(this.currentToken=e.token),(n||o)&&(this.replaceIframe(),this.setIframeSrc(this.currentUrl,this.currentToken))}}dispose(){this.iframe.src="about:blank",this.host.onComponentDisposed(this.panelId)}postMessage(e,n){try{this.iframe.contentWindow?.postMessage(e,n)}catch{}}getOrigin(){if(!this.currentUrl)return null;try{return new URL(this.currentUrl).origin}catch{return null}}show(){this.iframe.classList.remove("mb-adapt__iframe--hidden"),this.iframe.offsetHeight,this.iframe.classList.add("mb-adapt__iframe--visible")}hide(){this.iframe.classList.remove("mb-adapt__iframe--visible"),this.iframe.classList.add("mb-adapt__iframe--hidden")}createIframe(){let e=document.createElement("iframe");return e.className=this.host.getClassNames()?.iframe||"mb-adapt__iframe",e.setAttribute("sandbox","allow-downloads allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-forms allow-modals"),e.setAttribute("allow","autoplay; geolocation; camera; microphone; fullscreen; display-capture; web-share"),e.src="about:blank",e.addEventListener("load",()=>{if(e.src&&e.src!=="about:blank"){let n=this.getOrigin();if(n)try{e.contentWindow?.postMessage({type:"adapt-darkMode",darkMode:this.host.getDarkMode()},n)}catch{}}}),e}setIframeSrc(e,n){let o=As(e,n);this.iframe.src!==o&&(this.resizeCapable=!1,this.iframe.style.height="",this.iframe.src=o),this.show()}replaceIframe(){let e=this.createIframe();this.element.replaceChild(e,this.iframe),this.iframe=e,this.resizeCapable=!1}},so='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9.5 2h4.5v4.5"/><path d="M14 2L8.5 7.5"/><path d="M12 9v4.5a1.5 1.5 0 01-1.5 1.5h-8A1.5 1.5 0 011 13.5v-8A1.5 1.5 0 012.5 4H7"/></svg>',co='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="1.5" y="2.5" width="13" height="11" rx="1.5"/><line x1="1.5" y1="6" x2="14.5" y2="6"/><circle cx="4" cy="4.25" r="0.75" fill="currentColor" stroke="none"/><circle cx="6.5" cy="4.25" r="0.75" fill="currentColor" stroke="none"/></svg>',Cs='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="4" y1="8" x2="12" y2="8"/></svg>',ze='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="2.5" width="11" height="11" rx="1.5"/></svg>',lo='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="1.5" y="4.5" width="10" height="10" rx="1.5"/><path d="M4.5 4.5V3a1.5 1.5 0 011.5-1.5h7A1.5 1.5 0 0115 3v7a1.5 1.5 0 01-1.5 1.5H12"/></svg>',Ur='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',Ss='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M6.5 14H2V9.5"/><path d="M2 14l5.5-5.5"/><path d="M4 7V2.5A1.5 1.5 0 015.5 1h8A1.5 1.5 0 0115 2.5v8a1.5 1.5 0 01-1.5 1.5H9"/></svg>',je=class{constructor(){this.tabsContainer=null;this.panelManager=null;this.entries=new Map;this._onBarVisibilityChanged=null;this._allowDocking=!0;this.dragState=null}setAllowDocking(e){this._allowDocking=e}onBarVisibilityChanged(e){this._onBarVisibilityChanged=e}init(e,n){this.tabsContainer=e,this.panelManager=n}minimize(e,n,o){if(!this.tabsContainer||this.entries.has(e))return;n.hide();let r=this.createTab(e,o.panels.length,"floating");this.entries.set(e,{tab:r,overlay:n,group:o,mode:"floating"}),this.tabsContainer.appendChild(r),this.showBar()}minimizeDocked(e,n,o){if(!this.tabsContainer||this.entries.has(e))return;let r=n.element.getBoundingClientRect();n.element.style.display="none",(this.tabsContainer.parentElement??document.body).appendChild(n.element);let a=o.minimizeDocked(n),s=a?.direction??"right",c=s==="top"||s==="bottom"?r.height>0?r.height:void 0:r.width>0?r.width:void 0,p=this.createTab(e,n.panels.length,"docked");this.entries.set(e,{tab:p,overlay:null,group:n,mode:"docked",savedPosition:{direction:s,...a?.siblingGroupId&&{siblingGroupId:a.siblingGroupId},initialSize:c}}),this.tabsContainer.appendChild(p),this.showBar()}restore(e){let n=this.entries.get(e);!n||!this.panelManager||(n.mode==="floating"&&n.overlay?n.overlay.show():n.mode==="docked"&&(n.group.element.style.display="",this.panelManager.restoreDocked(n.group,n.savedPosition?.direction??"right",n.savedPosition?.initialSize,n.savedPosition?.siblingGroupId),n.group.location="grid"),n.tab.remove(),this.entries.delete(e),this.hideBarIfEmpty())}closeGroup(e){let n=this.entries.get(e);if(!n||!this.panelManager)return;n.mode==="floating"&&n.overlay?n.overlay.show():n.mode==="docked"&&(n.group.element.style.display=""),n.tab.remove(),this.entries.delete(e);let o=n.group.panels.slice();for(let r of o)this.panelManager.removePanel(r.id);this.hideBarIfEmpty()}isMinimized(e){return this.entries.has(e)}getMinimizedGroupIds(){return Array.from(this.entries.keys())}getEntry(e){return this.entries.get(e)}removeGroup(e){let n=this.entries.get(e);n&&(n.tab.remove(),this.entries.delete(e),this.hideBarIfEmpty())}dispose(){for(let e of this.entries.values())e.overlay&&e.overlay.show(),e.mode==="docked"&&(e.group.element.style.display="");this.entries.clear(),this.tabsContainer&&(this.tabsContainer.innerHTML="",this.tabsContainer.style.display="none")}showBar(){if(this.tabsContainer){let e=this.tabsContainer.style.display==="none";this.tabsContainer.style.display="flex",e&&this._onBarVisibilityChanged?.()}}hideBarIfEmpty(){if(this.entries.size===0&&this.tabsContainer){let e=this.tabsContainer.style.display!=="none";this.tabsContainer.style.display="none",e&&this._onBarVisibilityChanged?.()}}mergeMinimized(e,n){let o=this.entries.get(e),r=this.entries.get(n);if(!o||!r||!this.panelManager)return;o.mode==="floating"&&o.overlay?o.overlay.show():o.mode==="docked"&&(o.group.element.style.display=""),r.mode==="floating"&&r.overlay?r.overlay.show():r.mode==="docked"&&(r.group.element.style.display="",this.panelManager.restoreDocked(r.group,r.savedPosition?.direction??"right",r.savedPosition?.initialSize),r.group.location="grid");let i=o.group.panels.map(a=>a.id);for(let a of i)this.panelManager.movePanel(a,r.group.id);if(o.tab.remove(),this.entries.delete(e),r.tab.remove(),this.entries.delete(n),r.mode==="floating"&&r.overlay){let a=this.createTab(n,r.group.panels.length);this.entries.set(n,{...r,tab:a}),this.tabsContainer.appendChild(a),r.overlay.hide()}this.hideBarIfEmpty()}dockMinimized(e){let n=this.entries.get(e);!n||!this.panelManager||(n.mode==="floating"&&n.overlay?(n.overlay.show(),this.panelManager.dockGroup(e,"right")):n.mode==="docked"&&(n.group.element.style.display="",this.panelManager.restoreDocked(n.group,n.savedPosition?.direction??"right",n.savedPosition?.initialSize,n.savedPosition?.siblingGroupId),n.group.location="grid"),n.tab.remove(),this.entries.delete(e),this.hideBarIfEmpty())}createTab(e,n,o="floating"){let r=document.createElement("div");r.className="mb-adapt-minimized-tab",r.dataset.groupId=e;let i=document.createElement("span");if(i.className="mb-adapt-minimized-tab-label",i.innerHTML=Array(n).fill(co).join(""),r.appendChild(i),o==="floating"&&this._allowDocking){let l=document.createElement("button");l.className="mb-adapt-minimized-tab-action",l.title="Dock to main",l.innerHTML=Ss,l.addEventListener("click",c=>{c.stopPropagation(),this.dockMinimized(e)}),r.appendChild(l)}let a=document.createElement("button");a.className="mb-adapt-minimized-tab-action",a.title="Restore",a.innerHTML=ze,a.addEventListener("click",l=>{l.stopPropagation(),this.restore(e)}),r.appendChild(a);let s=document.createElement("button");return s.className="mb-adapt-minimized-tab-action",s.title="Close",s.innerHTML=Ur,s.addEventListener("click",l=>{l.stopPropagation(),this.closeGroup(e)}),r.appendChild(s),r.addEventListener("pointerdown",l=>{l.target.closest("button")||l.button===0&&(l.preventDefault(),this.onTabDragStart(e,r,l))}),r}onTabDragStart(e,n,o){if(this.dragState)return;this.dragState={groupId:e,tab:n,startX:o.clientX,startY:o.clientY,isDragging:!1,ghost:null,highlightedTab:null};let r=s=>{if(!this.dragState)return;if(!this.dragState.isDragging){let c=s.clientX-this.dragState.startX,p=s.clientY-this.dragState.startY;if(c*c+p*p<25)return;this.dragState.isDragging=!0,this.dragState.ghost=this.createDragGhost(e),document.body.appendChild(this.dragState.ghost),this.dragState.tab.style.opacity="0.4"}this.dragState.ghost.style.left=`${s.clientX+8}px`,this.dragState.ghost.style.top=`${s.clientY+8}px`;let l=this.findDropTarget(s.clientX,s.clientY,e);this.dragState.highlightedTab!==l&&(this.dragState.highlightedTab?.classList.remove("mb-adapt-minimized-tab--drop-target"),l?.classList.add("mb-adapt-minimized-tab--drop-target"),this.dragState.highlightedTab=l)},i=s=>{if(document.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i),document.removeEventListener("pointercancel",a),!!this.dragState){if(this.dragState.ghost?.remove(),this.dragState.tab.style.opacity="",this.dragState.highlightedTab?.classList.remove("mb-adapt-minimized-tab--drop-target"),this.dragState.isDragging){let l=this.findDropTarget(s.clientX,s.clientY,e);if(l){let c=l.dataset.groupId;c&&c!==e&&this.mergeMinimized(e,c)}}this.dragState=null}},a=()=>{document.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i),document.removeEventListener("pointercancel",a),this.dragState&&(this.dragState.ghost?.remove(),this.dragState.tab.style.opacity="",this.dragState.highlightedTab?.classList.remove("mb-adapt-minimized-tab--drop-target")),this.dragState=null};document.addEventListener("pointermove",r),document.addEventListener("pointerup",i),document.addEventListener("pointercancel",a)}createDragGhost(e){let n=this.entries.get(e),o=document.createElement("div");return o.className="mb-drag-ghost",o.textContent=n?.group.panels.map(r=>r.title||"Panel").join(" \xB7 ")??e,o}findDropTarget(e,n,o){if(!this.tabsContainer)return null;let r=this.tabsContainer.querySelectorAll(".mb-adapt-minimized-tab");for(let i of r){let a=i;if(a.dataset.groupId===o)continue;let s=a.getBoundingClientRect();if(e>=s.left&&e<=s.right&&n>=s.top&&n<=s.bottom)return a}return null}},$e=class{constructor(e,n,o,r){this.isMaximized=!1;this._beforeClose=null;this.overlay=e,this.panelManager=n,this.minimizeManager=o,this.element=document.createElement("div"),this.element.className="mb-adapt-fork-actions",this.minimizeBtn=this.createButton("Minimize",Cs),this.maxRestoreBtn=this.createButton("Maximize",ze),this.dockBtn=this.createButton("Dock to main",Ss);let i=this.createButton("Close all",Ur);r?.allowDocking===!1&&(this.dockBtn.style.display="none"),r?.allowMinimize===!1&&(this.minimizeBtn.style.display="none"),r?.allowMaximize===!1&&(this.maxRestoreBtn.style.display="none"),this.element.appendChild(this.minimizeBtn),this.element.appendChild(this.maxRestoreBtn),this.element.appendChild(this.dockBtn),this.element.appendChild(i),this.minimizeBtn.addEventListener("click",()=>this.onMinimize()),this.maxRestoreBtn.addEventListener("click",()=>this.onMaxRestore()),this.dockBtn.addEventListener("click",()=>this.onDock()),i.addEventListener("click",()=>this.onClose())}setAllowDocking(e){this.dockBtn.style.display=e?"":"none"}setAllowMinimize(e){this.minimizeBtn.style.display=e?"":"none"}setAllowMaximize(e){this.maxRestoreBtn.style.display=e?"":"none"}setBeforeClose(e){this._beforeClose=e}syncMaximizedState(){this.overlay.isMaximized&&!this.isMaximized?(this.isMaximized=!0,this.maxRestoreBtn.innerHTML=lo,this.maxRestoreBtn.title="Restore"):!this.overlay.isMaximized&&this.isMaximized&&(this.isMaximized=!1,this.maxRestoreBtn.innerHTML=ze,this.maxRestoreBtn.title="Maximize")}createButton(e,n){let o=document.createElement("button");return o.title=e,o.innerHTML=n,o}clearMaximize(){this.isMaximized&&(this.overlay.restore(),this.isMaximized=!1,this.maxRestoreBtn.innerHTML=ze,this.maxRestoreBtn.title="Maximize")}onMinimize(){this.clearMaximize();let e=this.overlay.group;this.minimizeManager.minimize(e.id,this.overlay,e)}onMaxRestore(){this.isMaximized?(this.overlay.restore(),this.isMaximized=!1,this.maxRestoreBtn.innerHTML=ze,this.maxRestoreBtn.title="Maximize"):(this.overlay.maximize(),this.isMaximized=!0,this.maxRestoreBtn.innerHTML=lo,this.maxRestoreBtn.title="Restore")}onDock(){this.clearMaximize(),this.panelManager.dockOverlay(this.overlay.group.id)}onClose(){let e=()=>{this.clearMaximize();for(let n of this.overlay.getAllGroups())for(let o of n.panels.slice())this.panelManager.removePanel(o.id)};if(this._beforeClose){let n=this._beforeClose();n&&typeof n.then=="function"?n.then(o=>{o&&e()}):n!==!1&&e()}else e()}},qe=class{constructor(e,n,o,r,i){this._isMaximized=!1;this._autoMaximizedByResize=!1;this._beforeClose=null;this._onMaximizeChanged=null;this.group=e,this.minimizeManager=n,this.panelManager=o,this._allowFloating=i?.allowFloating??!0,this._allowMinimize=i?.allowMinimize??!0,this._allowMaximize=i?.allowMaximize??!0,this.element=document.createElement("div"),this.element.className="mb-adapt-fork-actions",this.floatDockBtn=this.createButton("Pop out",so),this.maximizeBtn=this.createButton("Maximize",ze),this.minimizeBtn=this.createButton("Minimize",Cs),this.closeBtn=this.createButton("Close all",Ur),this._allowFloating||(this.floatDockBtn.style.display="none",e.element.setAttribute("data-allow-floating","false")),this.element.appendChild(this.floatDockBtn),this.element.appendChild(this.maximizeBtn),this.element.appendChild(this.minimizeBtn),this.element.appendChild(this.closeBtn),this.floatDockBtn.addEventListener("click",()=>this.onFloatDock()),this.maximizeBtn.addEventListener("click",()=>this.onMaximize()),this.minimizeBtn.addEventListener("click",()=>this.onMinimize()),this.closeBtn.addEventListener("click",()=>this.onCloseGroup()),this.updateVisibility(),e.onLocationChanged(()=>{this.updateVisibility(),r?.()}),e.onSplitStateChanged(()=>this.updateVisibility())}dispose(){this.restoreMaximized(),this.minimizeManager.removeGroup(this.group.id)}setAllowFloating(e){this._allowFloating=e,e?this.group.element.removeAttribute("data-allow-floating"):this.group.element.setAttribute("data-allow-floating","false"),this.updateVisibility()}setAllowMinimize(e){this._allowMinimize=e,this.updateVisibility()}setAllowMaximize(e){this._allowMaximize=e,this.updateVisibility()}setAutoMaximizedByResize(e){this._autoMaximizedByResize=e,this.updateVisibility()}setBeforeClose(e){this._beforeClose=e}onMaximizeChanged(e){this._onMaximizeChanged=e}updateVisibility(){this.group.location==="floating"||this.group.isInFloatingSplit?(this.floatDockBtn.style.display="none",this.maximizeBtn.style.display="none",this.minimizeBtn.style.display="none",this.closeBtn.style.display="none"):(this.floatDockBtn.style.display=this._allowFloating?"":"none",this.floatDockBtn.innerHTML=so,this.floatDockBtn.title="Pop out",this.maximizeBtn.style.display=this._allowMaximize&&!this._autoMaximizedByResize?"":"none",this.minimizeBtn.style.display=this._allowMinimize?"":"none",this.closeBtn.style.display="")}createButton(e,n){let o=document.createElement("button");return o.title=e,o.innerHTML=n,o}onFloatDock(){this.restoreMaximized();let e=window.innerWidth,n=window.innerHeight,o=Math.min(720,Math.max(200,e-20)),r=Math.min(600,Math.max(200,n-20));this.panelManager.addFloatingGroup(this.group,{width:o,height:r,x:Math.max(0,(e-o)/2),y:Math.max(0,(n-r)/2)})}get isMaximized(){return this._isMaximized}clearMaximized(){this._isMaximized&&(this.panelManager.restoreMaximizedDockedGroup(this.group),this._isMaximized=!1,this.maximizeBtn.innerHTML=ze,this.maximizeBtn.title="Maximize",this._onMaximizeChanged?.(!1))}setMaximized(){this._isMaximized||(this.panelManager.maximizeDockedGroup(this.group),this._isMaximized=!0,this.maximizeBtn.innerHTML=lo,this.maximizeBtn.title="Restore",this._onMaximizeChanged?.(!0))}onMaximize(){this._isMaximized?this.restoreMaximized():(this.panelManager.maximizeDockedGroup(this.group),this._isMaximized=!0,this.maximizeBtn.innerHTML=lo,this.maximizeBtn.title="Restore",this._onMaximizeChanged?.(!0))}restoreMaximized(){this._isMaximized&&(this.panelManager.restoreMaximizedDockedGroup(this.group),this._isMaximized=!1,this.maximizeBtn.innerHTML=ze,this.maximizeBtn.title="Maximize",this._onMaximizeChanged?.(!1))}onMinimize(){this.restoreMaximized(),this.minimizeManager.minimizeDocked(this.group.id,this.group,this.panelManager)}onCloseGroup(){let e=()=>{this.restoreMaximized();for(let n of this.group.panels.slice())this.panelManager.removePanel(n.id)};if(this._beforeClose){let n=this._beforeClose();n&&typeof n.then=="function"?n.then(o=>{o&&e()}):n!==!1&&e()}else e()}};function Zs(){if(typeof document>"u"||getComputedStyle(document.documentElement).getPropertyValue("--mb-adapt-styles-loaded").trim()||document.getElementById("mb-adapt-panel-styles"))return;let t=document.createElement("style");t.id="mb-adapt-panel-styles",t.textContent=xs;let e=document.querySelector("style, link[rel=stylesheet]");e?e.parentNode.insertBefore(t,e):document.head.appendChild(t)}var Dr=0;function uo(){return Dr++,document.documentElement.classList.add("mb-dragging"),{release(){--Dr<=0&&(Dr=0,document.documentElement.classList.remove("mb-dragging"))}}}var _r=class{constructor(e,n,o){this.group=null;this.id=e,this.element=n,this.title=o||e,this.wrapper=document.createElement("div"),this.wrapper.className="mb-panel",this.wrapper.dataset.panelId=e,this.wrapper.dataset.active="false",this.wrapper.appendChild(n)}},Kr=0;function Vs(t){for(let e=0;e<t.length;e++){let n=t[e].match(/^group-(\d+)$/);if(n){let o=parseInt(n[1],10);o>Kr&&(Kr=o)}}}var mo=class{constructor(e){this._panels=[];this._activePanel=null;this._headerHidden=!1;this._locked=!1;this._onTabClose=null;this._onTabPointerDown=null;this._onTabPopOut=null;this._location="grid";this._onLocationChangedCb=null;this._isInFloatingSplit=!1;this._onSplitStateChangedCb=null;this._dragConstraint="any";this._dockingBlocked=!1;this._dialogDockingBlocked=!1;this._onPanelCountChangedCb=null;this._onActivePanelChangedCb=null;this.id=e||`group-${++Kr}`,this.element=document.createElement("div"),this.element.className="mb-group",this.element.dataset.groupId=this.id,this.headerElement=document.createElement("div"),this.headerElement.className="mb-group-header",this.headerPrefix=document.createElement("div"),this.headerPrefix.className="mb-group-header-prefix",this.tabsElement=document.createElement("div"),this.tabsElement.className="mb-group-tabs",this.headerVoid=document.createElement("div"),this.headerVoid.className="mb-group-header-void",this.headerActions=document.createElement("div"),this.headerActions.className="mb-group-header-actions",this.headerElement.appendChild(this.headerPrefix),this.headerElement.appendChild(this.tabsElement),this.headerElement.appendChild(this.headerVoid),this.headerElement.appendChild(this.headerActions),this.contentElement=document.createElement("div"),this.contentElement.className="mb-group-content",this.element.appendChild(this.headerElement),this.element.appendChild(this.contentElement)}get panels(){return this._panels}get activePanel(){return this._activePanel}get size(){return this._panels.length}get locked(){return this._locked}set locked(e){this._locked=e}setHeaderHidden(e){this._headerHidden=e,this.headerElement.style.display=e?"none":""}get headerHidden(){return this._headerHidden}setHeaderActions(e){this.headerActions.innerHTML="",this.headerActions.appendChild(e)}setHeaderPrefix(e){this.headerPrefix.innerHTML="",this.headerPrefix.appendChild(e)}onTabClose(e){this._onTabClose=e}onTabPointerDown(e){this._onTabPointerDown=e}get location(){return this._location}set location(e){this._location!==e&&(this._location=e,this._onLocationChangedCb?.(e))}onLocationChanged(e){this._onLocationChangedCb=e}fireLocationChanged(){this._onLocationChangedCb?.(this._location)}get isInFloatingSplit(){return this._isInFloatingSplit}set isInFloatingSplit(e){this._isInFloatingSplit!==e&&(this._isInFloatingSplit=e,this._onSplitStateChangedCb?.(e))}onSplitStateChanged(e){this._onSplitStateChangedCb=e}onTabPopOut(e){this._onTabPopOut=e}get dragConstraint(){return this._dragConstraint}set dragConstraint(e){this._dragConstraint=e}get dockingBlocked(){return this._dockingBlocked}set dockingBlocked(e){this._dockingBlocked=e}get dialogDockingBlocked(){return this._dialogDockingBlocked}set dialogDockingBlocked(e){this._dialogDockingBlocked=e}onPanelCountChanged(e){this._onPanelCountChangedCb=e}onActivePanelChanged(e){this._onActivePanelChangedCb=e}addPanel(e){if(this._panels.some(o=>o.id===e.id))return;e.group=this,this._panels.push(e),this.contentElement.appendChild(e.wrapper);let n=this.createTab(e);this.tabsElement.appendChild(n),this.activatePanel(e.id),this.element.dataset.tabCount=String(this._panels.length),this._onPanelCountChangedCb?.(this._panels.length)}removePanel(e){let n=this._panels.findIndex(i=>i.id===e);if(n===-1)return null;let o=this._panels[n];if(this._panels.splice(n,1),o.wrapper.remove(),this.tabsElement.querySelector(`[data-tab-id="${e}"]`)?.remove(),o.group=null,this._activePanel===o&&(this._activePanel=null,this._panels.length>0)){let i=this._panels[Math.min(n,this._panels.length-1)];i&&this.activatePanel(i.id)}return this.element.dataset.tabCount=String(this._panels.length),this._onPanelCountChangedCb?.(this._panels.length),o}detachPanel(e){let n=this._panels.findIndex(i=>i.id===e);if(n===-1)return null;let o=this._panels[n];if(this._panels.splice(n,1),this.tabsElement.querySelector(`[data-tab-id="${e}"]`)?.remove(),o.group=null,this._activePanel===o&&(this._activePanel=null,this._panels.length>0)){let i=this._panels[Math.min(n,this._panels.length-1)];i&&this.activatePanel(i.id)}return this.element.dataset.tabCount=String(this._panels.length),this._onPanelCountChangedCb?.(this._panels.length),o}activatePanel(e){let n=this._panels.find(r=>r.id===e);if(!n)return;this._activePanel=n;for(let r of this._panels)r.wrapper.dataset.active=r===n?"true":"false";let o=this.tabsElement.querySelectorAll(".mb-tab");for(let r of o){let i=r.dataset.tabId===e;r.dataset.active=i?"true":"false"}this._onActivePanelChangedCb?.(e)}reorderPanel(e,n){let o=this._panels.findIndex(c=>c.id===e);if(o===-1)return;let r=this._panels[o],i=Array.from(this.tabsElement.querySelectorAll(".mb-tab")),a=this._panels.length;for(let c=0;c<i.length;c++){let p=i[c].getBoundingClientRect();if(n<p.left+p.width/2){a=c;break}}if(a===o||a===o+1)return;this._panels.splice(o,1);let s=o<a?a-1:a;this._panels.splice(s,0,r);let l=this.tabsElement.querySelector(`[data-tab-id="${e}"]`);if(l){let c=this.tabsElement.querySelectorAll(".mb-tab")[s];c&&c!==l?this.tabsElement.insertBefore(l,c):this.tabsElement.appendChild(l)}}createTab(e){let n=document.createElement("div");n.className="mb-tab",n.dataset.tabId=e.id,n.dataset.active="false";let o=document.createElement("span");o.className="mb-tab-label",o.innerHTML=co,o.title=e.title,n.appendChild(o);let r=document.createElement("div");r.className="mb-tab-actions";let i=document.createElement("button");i.className="mb-tab-popout",i.title="Pop out",i.innerHTML=so,i.addEventListener("click",s=>{s.stopPropagation(),this._onTabPopOut?.(e.id)}),r.appendChild(i);let a=document.createElement("button");return a.className="mb-tab-close",a.title="Close",a.innerHTML='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',a.addEventListener("click",s=>{s.stopPropagation(),this._onTabClose?.(e.id)}),r.appendChild(a),n.appendChild(r),n.addEventListener("pointerdown",s=>{s.target.closest(".mb-tab-close")||s.target.closest(".mb-tab-popout")||s.button===0&&(s.preventDefault(),this._onTabPointerDown?.(e.id,s))}),n}dispose(){for(let e of this._panels)e.group=null;this._panels=[],this._activePanel=null,this.element.remove()}},Pr=1e5,po=class t{constructor(e,n,o,r){this.internalLayout=null;this.toolbarElement=null;this.savedBounds=null;this._isMaximized=!1;this._onDragEnd=null;this._onDragMove=null;this._onBoundsChanged=null;this.group=e,this.bounds={...n},this.element=document.createElement("div"),this.element.className="mb-floating-overlay",this.element.dataset.groupId=e.id,this.applyBounds();let i=["n","s","e","w","ne","nw","se","sw"];for(let s of i){let l=document.createElement("div");l.className=`mb-resize-handle mb-resize-${s}`,l.addEventListener("pointerdown",c=>this.onResizeStart(c,s)),this.element.appendChild(l)}this.element.addEventListener("pointerdown",()=>this.bringToFront(),!0),e.headerVoid.addEventListener("pointerdown",s=>this.onDragStart(s)),e.headerVoid.style.cursor="grab",this.wireDragOnActions(e);let a=o??document.body;r?a.insertBefore(this.element,r):a.appendChild(this.element),this.element.appendChild(e.element),this.bringToFront()}get isMaximized(){return this._isMaximized}set onDragEnd(e){this._onDragEnd=e}set onDragMove(e){this._onDragMove=e}set onBoundsChanged(e){this._onBoundsChanged=e}bringToFront(){Pr+=2,this.element.style.zIndex=String(Pr)}maximize(){this._isMaximized||(this.savedBounds={...this.bounds},this._isMaximized=!0,this.element.style.inset="0",this.element.style.width="auto",this.element.style.height="auto",this.element.classList.add("mb-floating-maximized"))}restore(){!this._isMaximized||!this.savedBounds||(this._isMaximized=!1,this.bounds={...this.savedBounds},this.savedBounds=null,this.element.classList.remove("mb-floating-maximized"),this.element.style.inset="",this.applyBounds())}hide(){this.element.style.display="none"}show(){this.element.style.display=""}dispose(){this.internalLayout&&(this.internalLayout.dispose(),this.internalLayout=null),this.removeToolbar(),this.element.remove()}getBounds(){return{...this.bounds}}setBounds(e){if(this._isMaximized)return;let n=10;e.width!==void 0&&(this.bounds.width=Math.min(e.width,window.innerWidth-this.bounds.x-n)),e.height!==void 0&&(this.bounds.height=Math.min(e.height,window.innerHeight-this.bounds.y-n)),this.applyBounds()}setFullBounds(e){if(this._isMaximized)return;let n=window.innerWidth,o=window.innerHeight,r=10,i=100;this.bounds={width:Math.max(i,Math.min(e.width,n-r)),height:Math.max(i,Math.min(e.height,o-r)),x:Math.max(0,Math.min(e.x,n-i)),y:Math.max(0,Math.min(e.y,o-i))},this.applyBounds()}applyBounds(){this.element.style.position="fixed",this.element.style.left=`${this.bounds.x}px`,this.element.style.top=`${this.bounds.y}px`,this.element.style.width=`${this.bounds.width}px`,this.element.style.height=`${this.bounds.height}px`}setDragGroup(e){e.headerVoid.addEventListener("pointerdown",n=>this.onDragStart(n)),e.headerVoid.style.cursor="grab",this.wireDragOnActions(e)}wireDragOnActions(e){e.headerActions.addEventListener("pointerdown",n=>{n.target.closest("button")||this.onDragStart(n)}),e.headerActions.style.cursor="grab"}setToolbar(e){this.removeToolbar(),this.toolbarElement=e,this.getToolbarHost().headerActions.appendChild(e)}removeToolbar(){this.toolbarElement&&(this.toolbarElement.remove(),this.toolbarElement=null)}repositionToolbar(){this.toolbarElement&&this.getToolbarHost().headerActions.appendChild(this.toolbarElement)}getToolbarHost(){if(!this.internalLayout)return this.group;let e=this.internalLayout.getRoot();return e?t.topRightGroup(e):this.group}static topRightGroup(e){return e.kind==="leaf"?e.group:e.direction==="horizontal"?t.topRightGroup(e.second):t.topRightGroup(e.first)}get hasToolbar(){return this.toolbarElement!==null}getAllGroups(){return this.internalLayout?.allGroups()??[this.group]}updateTotalTabCount(){let e=this.getAllGroups(),n=0;for(let o of e)n+=o.size;this.element.dataset.totalTabCount=String(n)}onDragStart(e){if(this._isMaximized)return;e.preventDefault();let n=e.currentTarget,o=e.clientX,r=e.clientY,i=this.bounds.x,a=this.bounds.y,s=uo();n.style.cursor="grabbing",n.setPointerCapture(e.pointerId);let l=p=>{let g=p.clientX-o,A=p.clientY-r;this.bounds.x=Math.max(0,Math.min(i+g,window.innerWidth-this.bounds.width)),this.bounds.y=Math.max(0,Math.min(a+A,window.innerHeight-this.bounds.height)),this.applyBounds(),this._onDragMove?.(this.bounds.x+this.bounds.width/2,this.bounds.y+this.bounds.height/2)},c=()=>{s.release(),n.style.cursor="grab",n.removeEventListener("pointermove",l),n.removeEventListener("pointerup",c),n.removeEventListener("pointercancel",c),this._onDragEnd?.(this.bounds.x+this.bounds.width/2,this.bounds.y+this.bounds.height/2),this._onBoundsChanged?.()};n.addEventListener("pointermove",l),n.addEventListener("pointerup",c),n.addEventListener("pointercancel",c)}onResizeStart(e,n){if(this._isMaximized)return;e.preventDefault(),e.stopPropagation();let o=e.clientX,r=e.clientY,i={...this.bounds},a=e.currentTarget,s=200,l=100,c=uo();a.setPointerCapture(e.pointerId);let p=A=>{let h=A.clientX-o,b=A.clientY-r;if(n.includes("e")&&(this.bounds.width=Math.max(s,i.width+h)),n.includes("w")){let Z=Math.max(s,i.width-h);this.bounds.x=i.x+(i.width-Z),this.bounds.width=Z}if(n.includes("s")&&(this.bounds.height=Math.max(l,i.height+b)),n.includes("n")){let Z=Math.max(l,i.height-b);this.bounds.y=i.y+(i.height-Z),this.bounds.height=Z}let W=10;this.bounds.x=Math.max(0,this.bounds.x),this.bounds.y=Math.max(0,this.bounds.y),this.bounds.x+this.bounds.width>window.innerWidth-W&&(this.bounds.width=window.innerWidth-this.bounds.x-W),this.bounds.y+this.bounds.height>window.innerHeight-W&&(this.bounds.height=window.innerHeight-this.bounds.y-W),this.applyBounds()},g=()=>{c.release(),a.removeEventListener("pointermove",p),a.removeEventListener("pointerup",g),a.removeEventListener("pointercancel",g),this._onBoundsChanged?.()};a.addEventListener("pointermove",p),a.addEventListener("pointerup",g),a.addEventListener("pointercancel",g)}},nn=class{constructor(e){this.root=null;this.onSplitResized=null;this.element=document.createElement("div"),this.element.className="mb-layout",e.appendChild(this.element)}getRoot(){return this.root}setMainGroup(e){let n=this.createLeaf(e);n.element.style.flex="1",this.root=n,this.element.appendChild(n.element)}splitGroup(e,n,o,r){let i=this.dockToSplitDirection(o),a=this.findGroupNode(e);if(!a)return!1;let s=document.createElement("div");s.className="mb-split-leaf",s.style.flex="1";let l=document.createElement("div");l.className=`mb-split-container ${i==="horizontal"?"mb-split-horizontal":"mb-split-vertical"}`,l.style.flex=a.element.style.flex||"1",l.style.minWidth="0",l.style.minHeight="0";let c=document.createElement("div"),p=i==="vertical";c.className=`mb-layout-separator ${p?"mb-layout-separator-h":"mb-layout-separator-v"}`;let g=o==="right"||o==="bottom";a.element.parentElement.insertBefore(l,a.element),g?(l.appendChild(a.element),l.appendChild(c),l.appendChild(s)):(l.appendChild(s),l.appendChild(c),l.appendChild(a.element)),s.appendChild(n.element),r!==void 0&&r>0?g?(a.element.style.flex="1",s.style.flex=`0 0 ${r}px`):(s.style.flex=`0 0 ${r}px`,a.element.style.flex="1"):(a.element.style.flex="1",s.style.flex="1");let h={kind:"leaf",group:n,element:s},b={kind:"split",direction:i,first:g?a:h,second:g?h:a,element:l,separator:c};return c.addEventListener("pointerdown",W=>this.onSeparatorDrag(W,b)),this.replaceNodeInTree(a,b),a.element.style.display==="none"&&(c.style.display="none",s.dataset.savedFlex=s.style.flex,s.style.flex="1",a.element.dataset.savedFlex=a.element.style.flex),!0}removeGroup(e){let n=this.findGroupNode(e);if(!n)return;if(this.root===n){n.element.remove(),this.root=null;return}this.restoreMaximizedLeaf(e);let o=this.findParentSplit(n);if(!o)return;let r=o.first===n?o.second:o.first;this.restoreMaximizedSubtree(r),r.element.style.flex=o.element.style.flex||"1",o.element.parentElement.insertBefore(r.element,o.element),n.element.remove(),o.separator.remove(),o.element.remove(),this.replaceNodeInTree(o,r)}findGroupNode(e){return this.findGroupNodeIn(this.root,e)}getGroupPosition(e){let n=this.findGroupNode(e);if(!n)return null;let o=this.findParentSplit(n);if(!o)return null;let r=o.first===n,i=r?o.second:o.first,a=this.firstGroupIn(i);if(!a)return null;let s;return o.direction==="horizontal"?s=r?"left":"right":s=r?"top":"bottom",{siblingGroup:a,direction:s}}firstGroupIn(e){return e.kind==="leaf"?e.group:this.firstGroupIn(e.first)}collapseLeaf(e){let n=this.findGroupNode(e);if(!n)return;let o=this.findParentSplit(n);if(o){let r=o.first===n?o.second:o.first;r.element.dataset.savedFlex=r.element.style.flex,r.element.style.flex="1",o.separator.style.display="none"}n.element.dataset.savedFlex=n.element.style.flex,n.element.style.display="none"}expandLeaf(e){let n=this.findGroupNode(e);if(!n)return;n.element.style.display="",n.element.dataset.savedFlex!==void 0&&(n.element.style.flex=n.element.dataset.savedFlex,delete n.element.dataset.savedFlex);let o=this.findParentSplit(n);if(o){o.separator.style.display="";let r=o.first===n?o.second:o.first;r.element.dataset.savedFlex!==void 0&&(r.element.style.flex=r.element.dataset.savedFlex,delete r.element.dataset.savedFlex)}}maximizeLeaf(e){let n=this.findGroupNode(e);if(!n)return;let o=n,r=this.findParentSplit(o);for(;r;){let i=r.first===o?r.second:r.first;i.element.dataset.maxSavedDisplay===void 0&&(i.element.dataset.maxSavedDisplay=i.element.style.display),i.element.style.display="none",r.separator.dataset.maxSavedDisplay===void 0&&(r.separator.dataset.maxSavedDisplay=r.separator.style.display),r.separator.style.display="none",o.element.dataset.maxSavedFlex===void 0&&(o.element.dataset.maxSavedFlex=o.element.style.flex),o.element.style.flex="1",o=r,r=this.findParentSplit(o)}}restoreMaximizedLeaf(e){let n=this.findGroupNode(e);if(!n)return;let o=n,r=this.findParentSplit(o);for(;r;){let i=r.first===o?r.second:r.first;i.element.dataset.maxSavedDisplay!==void 0&&(i.element.style.display=i.element.dataset.maxSavedDisplay,delete i.element.dataset.maxSavedDisplay),r.separator.dataset.maxSavedDisplay!==void 0&&(r.separator.style.display=r.separator.dataset.maxSavedDisplay,delete r.separator.dataset.maxSavedDisplay),o.element.dataset.maxSavedFlex!==void 0&&(o.element.style.flex=o.element.dataset.maxSavedFlex,delete o.element.dataset.maxSavedFlex),o=r,r=this.findParentSplit(o)}}restoreMaximizedSubtree(e){e.element.dataset.maxSavedDisplay!==void 0&&(e.element.style.display=e.element.dataset.maxSavedDisplay,delete e.element.dataset.maxSavedDisplay),e.element.dataset.maxSavedFlex!==void 0&&(e.element.style.flex=e.element.dataset.maxSavedFlex,delete e.element.dataset.maxSavedFlex),e.kind==="split"&&(e.separator.dataset.maxSavedDisplay!==void 0&&(e.separator.style.display=e.separator.dataset.maxSavedDisplay,delete e.separator.dataset.maxSavedDisplay),this.restoreMaximizedSubtree(e.first),this.restoreMaximizedSubtree(e.second))}allGroups(){let e=[];return this.collectGroups(this.root,e),e}toJSON(){return this.serializeNode(this.root)}restoreFlexFromSerialized(e){!e||!this.root||this.restoreFlexParallel(e,this.root)}restoreFlexParallel(e,n){if(e.flex&&this.isValidFlex(e.flex)&&(n.element.style.flex=e.flex),e.kind==="split"&&n.kind==="split")this.restoreFlexParallel(e.first,n.first),this.restoreFlexParallel(e.second,n.second);else if(e.kind!==n.kind){let o=new Map;this.collectFlexValues(e,o),this.applyFlexValues(n,o)}}animateTransition(){let e=r=>{r&&(r.kind==="leaf"?r.element.classList.add("mb-split-leaf--animating"):(r.element.classList.add("mb-split-container--animating"),r.separator&&r.separator.classList.add("mb-layout-separator--animating"),e(r.first),e(r.second)))};e(this.root);let n=()=>{this.element.querySelectorAll(".mb-split-leaf--animating, .mb-split-container--animating, .mb-layout-separator--animating").forEach(r=>{r.classList.remove("mb-split-leaf--animating","mb-split-container--animating","mb-layout-separator--animating")})},o=setTimeout(n,350);this.element.addEventListener("transitionend",()=>{clearTimeout(o),n()},{once:!0})}rebuildFromSerialized(e,n){let o=this.buildNodeFromSerialized(e,n);o&&(this.element.appendChild(o.element),this.moveGroupsIntoTree(o),this.root&&this.root.element.remove(),this.root=o,this.root&&(this.root.element.style.flex="1"))}buildNodeFromSerialized(e,n){if(e.kind==="leaf"){let c=n(e.groupId);if(!c)return null;let p=document.createElement("div");return p.className="mb-split-leaf",e.flex&&this.isValidFlex(e.flex)?p.style.flex=e.flex:p.style.flex="1",{kind:"leaf",group:c,element:p}}let o=this.buildNodeFromSerialized(e.first,n),r=this.buildNodeFromSerialized(e.second,n);if(!o&&!r)return null;if(!o)return e.flex&&this.isValidFlex(e.flex)&&(r.element.style.flex=e.flex),r;if(!r)return e.flex&&this.isValidFlex(e.flex)&&(o.element.style.flex=e.flex),o;let i=document.createElement("div");i.className=`mb-split-container ${e.direction==="horizontal"?"mb-split-horizontal":"mb-split-vertical"}`,e.flex&&this.isValidFlex(e.flex)?i.style.flex=e.flex:i.style.flex="1",i.style.minWidth="0",i.style.minHeight="0";let a=document.createElement("div"),s=e.direction==="vertical";a.className=`mb-layout-separator ${s?"mb-layout-separator-h":"mb-layout-separator-v"}`,i.appendChild(o.element),i.appendChild(a),i.appendChild(r.element);let l={kind:"split",direction:e.direction,first:o,second:r,element:i,separator:a};return a.addEventListener("pointerdown",c=>this.onSeparatorDrag(c,l)),l}moveGroupsIntoTree(e){if(e.kind==="leaf"){e.element.appendChild(e.group.element);return}this.moveGroupsIntoTree(e.first),this.moveGroupsIntoTree(e.second)}dispose(){this.element.remove(),this.root=null}createLeaf(e){let n=document.createElement("div");return n.className="mb-split-leaf",n.style.flex="1",n.appendChild(e.element),{kind:"leaf",group:e,element:n}}dockToSplitDirection(e){return e==="left"||e==="right"?"horizontal":"vertical"}findGroupNodeIn(e,n){return e?e.kind==="leaf"?e.group===n?e:null:this.findGroupNodeIn(e.first,n)??this.findGroupNodeIn(e.second,n):null}collectGroups(e,n){e&&(e.kind==="leaf"?n.push(e.group):(this.collectGroups(e.first,n),this.collectGroups(e.second,n)))}findParentSplit(e){return this.findParentSplitIn(this.root,e)}findParentSplitIn(e,n){return!e||e.kind==="leaf"?null:e.first===n||e.second===n?e:this.findParentSplitIn(e.first,n)??this.findParentSplitIn(e.second,n)}replaceNodeInTree(e,n){if(this.root===e){this.root=n;return}let o=this.findParentSplit(e);o&&(o.first===e?o.first=n:o.second=n)}collectFlexValues(e,n){e.kind==="leaf"?n.set(e.groupId,e.flex):(this.collectFlexValues(e.first,n),this.collectFlexValues(e.second,n))}applyFlexValues(e,n){if(e.kind==="leaf"){let o=n.get(e.group.id);o&&this.isValidFlex(o)&&(e.element.style.flex=o)}else this.applyFlexValues(e.first,n),this.applyFlexValues(e.second,n)}isValidFlex(e){if(e.includes("px"))return!0;let n=e.split(" ")[0],o=Number(n);return Number.isFinite(o)&&o>=0}serializeNode(e){if(!e)return null;let n=e.element.dataset.maxSavedFlex||e.element.dataset.savedFlex||e.element.style.flex||"1";if(e.kind==="leaf")return e.group.size===0&&e.group.id!=="main-group"?null:{kind:"leaf",groupId:e.group.id,flex:n};let o=this.serializeNode(e.first),r=this.serializeNode(e.second);return!o&&!r?null:o?r?{kind:"split",direction:e.direction,first:o,second:r,flex:n}:(o.flex=n,o):(r.flex=n,r)}onSeparatorDrag(e,n){if(e.preventDefault(),n.first.element.style.display==="none"||n.second.element.style.display==="none")return;let o=n.direction==="horizontal",r=o?e.clientX:e.clientY,i=n.first.element,a=n.second.element;this.lockDescendantSizes(n.first,o),this.lockDescendantSizes(n.second,o);let s=o?i.offsetWidth:i.offsetHeight,l=o?a.offsetWidth:a.offsetHeight,c=s+l;if(c<=0)return;let p=150,g=uo();n.separator.setPointerCapture(e.pointerId),n.separator.classList.add("mb-layout-separator--active");let A=b=>{if(i.style.display==="none"||a.style.display==="none"){n.separator.releasePointerCapture(b.pointerId),h();return}let W=(o?b.clientX:b.clientY)-r,Z=s+W,H=l-W;Z<p&&(Z=p,H=c-p),H<p&&(H=p,Z=c-p),i.style.flex=String(Z/c),a.style.flex=String(H/c)},h=()=>{g.release(),n.separator.classList.remove("mb-layout-separator--active"),n.separator.removeEventListener("pointermove",A),n.separator.removeEventListener("pointerup",h),n.separator.removeEventListener("pointercancel",h),this.unlockDescendantSizes(n.first,o),this.unlockDescendantSizes(n.second,o),this.onSplitResized?.()};n.separator.addEventListener("pointermove",A),n.separator.addEventListener("pointerup",h),n.separator.addEventListener("pointercancel",h)}lockDescendantSizes(e,n){if(e.kind!=="split"||e.direction==="horizontal"!==n)return;let o=n?e.first.element.getBoundingClientRect().width:e.first.element.getBoundingClientRect().height;e.first.element.style.flex=`0 0 ${o}px`,e.second.element.style.flex="1",this.lockDescendantSizes(e.first,n),this.lockDescendantSizes(e.second,n)}unlockDescendantSizes(e,n){if(e.kind!=="split"||e.direction==="horizontal"!==n)return;this.unlockDescendantSizes(e.first,n),this.unlockDescendantSizes(e.second,n);let o=n?e.first.element.getBoundingClientRect().width:e.first.element.getBoundingClientRect().height,r=n?e.second.element.getBoundingClientRect().width:e.second.element.getBoundingClientRect().height,i=o+r;i>0?(e.first.element.style.flex=String(o/i),e.second.element.style.flex=String(r/i)):(e.first.element.style.flex="0.5",e.second.element.style.flex="0.5")}},et=class{constructor(e){this.groups=new Map;this.panels=new Map;this.floatingOverlays=new Map;this.mainGroupId=null;this.onPanelRemovedCbs=[];this.onGroupCreatedByDragCb=null;this.onLayoutChangedCb=null;this.disposed=!1;this.dragState=null;this.portals=new Map;this.portalRaf=0;this.mainGroupCollapsed=!1;this._beforeTabClose=null;this.zBase=0;this.container=e.container,this.splitEdgeSize=e.splitEdgeSize??100,this.layout=new nn(this.container),e.onPanelRemoved&&this.onPanelRemovedCbs.push(e.onPanelRemoved),this.onGroupCreatedByDragCb=e.onGroupCreatedByDrag??null,this.onLayoutChangedCb=e.onLayoutChanged??null,this.layout.onSplitResized=this.onLayoutChangedCb,this.zBase=this.getZBase(),this.zBase!==0&&(Pr=1e5+this.zBase),this.dropOverlay=document.createElement("div"),this.dropOverlay.className="mb-drop-overlay",this.container.appendChild(this.dropOverlay),this.portalLayer=document.createElement("div"),this.portalLayer.className="mb-iframe-portal-layer",this.container.appendChild(this.portalLayer),this.syncPortals()}getZBase(){let e=getComputedStyle(this.container).getPropertyValue("--mb-adapt-z-base").trim();return parseInt(e,10)||0}setBeforeTabClose(e){this._beforeTabClose=e}addPanel(e){let n=new _r(e.id,e.element,e.title);this.panels.set(e.id,n);let o=e.groupId;if(o){let r=this.groups.get(o);r&&(r.addPanel(n),this.registerPortal(n.id,n.element,n.wrapper))}return n}removePanel(e){let n=this.panels.get(e);if(n){if(this.unregisterPortal(e),n.group){let o=n.group;o.removePanel(e),o.size===0&&o.id!==this.mainGroupId&&this.removeGroup(o.id)}this.panels.delete(e);for(let o of this.onPanelRemovedCbs)o(n)}}getPanel(e){return this.panels.get(e)}addGroup(e){let n=new mo(e?.id);if(this.groups.set(n.id,n),this.wireGroupCallbacks(n),e?.floating)this.addFloatingGroup(n,e.floating);else if(e?.direction){let o=this.mainGroupId,r=o?this.groups.get(o):void 0;r&&this.layout.splitGroup(r,n,e.direction,e.initialSize)}return n}removeGroup(e){let n=this.groups.get(e);if(!n)return;for(let r of[...n.panels])this.unregisterPortal(r.id);let o=this.floatingOverlays.get(e);if(o)if(o.internalLayout){o.internalLayout.removeGroup(n),this.floatingOverlays.delete(e);let r=this.cleanupOrphanedFloatingLeaf(o);r.length>0?(o.group=r[0],this.floatingOverlays.set(r[0].id,o)):o.dispose()}else o.dispose(),this.floatingOverlays.delete(e);if(!o){let r=this.findOverlayForGroup(n);if(r?.internalLayout&&(r.internalLayout.removeGroup(n),this.cleanupOrphanedFloatingLeaf(r).length===0)){let a=[...this.floatingOverlays.entries()].find(([,s])=>s===r)?.[0];a&&this.floatingOverlays.delete(a),r.dispose()}}this.layout.findGroupNode(n)&&this.layout.removeGroup(n),n.isInFloatingSplit=!1,n.dispose(),this.groups.delete(e)}getGroup(e){return this.groups.get(e)}getGroupIds(){return Array.from(this.groups.keys())}getMainGroup(){if(this.mainGroupId)return this.groups.get(this.mainGroupId)}setMainGroup(e){this.mainGroupId=e.id,this.layout.setMainGroup(e)}collapseMainGroup(){let e=this.getMainGroup();!e||this.mainGroupCollapsed||(this.layout.collapseLeaf(e),this.mainGroupCollapsed=!0)}expandMainGroup(){let e=this.getMainGroup();!e||!this.mainGroupCollapsed||(this.layout.expandLeaf(e),this.mainGroupCollapsed=!1)}isMainGroupCollapsed(){return this.mainGroupCollapsed}getDockedGroups(){return this.layout.allGroups()}collapseDockedGroup(e){this.layout.collapseLeaf(e)}expandDockedGroup(e){this.layout.expandLeaf(e)}maximizeDockedGroup(e){this.layout.maximizeLeaf(e)}restoreMaximizedDockedGroup(e){this.layout.restoreMaximizedLeaf(e)}restoreLayoutFlex(e){this.layout.restoreFlexFromSerialized(e)}rebuildDockedLayout(e){this.layout.rebuildFromSerialized(e,n=>this.groups.get(n))}rebuildFloatingInternalLayout(e,n){let o=this.floatingOverlays.get(e);if(!o)return;o.internalLayout||(o.internalLayout=new nn(o.element),o.internalLayout.setMainGroup(o.group),this.onLayoutChangedCb&&(o.internalLayout.onSplitResized=this.onLayoutChangedCb)),o.internalLayout.rebuildFromSerialized(n,a=>this.groups.get(a));let r=o.internalLayout.allGroups(),i=r.length>1;for(let a of r)a.location="floating",a.isInFloatingSplit=i;o.updateTotalTabCount()}addFloatingGroup(e,n){let o=this.floatingOverlays.get(e.id);o&&this.floatingOverlays.delete(e.id);let r=o?null:this.findOverlayForGroup(e),i=new po(e,n,this.container,this.portalLayer);if(this.onLayoutChangedCb&&(i.onBoundsChanged=this.onLayoutChangedCb),this.floatingOverlays.set(e.id,i),this.layout.findGroupNode(e)&&this.layout.removeGroup(e),o?.internalLayout){o.internalLayout.removeGroup(e);let a=this.cleanupOrphanedFloatingLeaf(o);a.length>0?(o.group=a[0],this.floatingOverlays.set(a[0].id,o)):o.dispose()}else o?o.dispose():r?.internalLayout&&(r.internalLayout.removeGroup(e),this.cleanupOrphanedFloatingLeaf(r));return e.isInFloatingSplit=!1,e.location="floating",i.updateTotalTabCount(),i}dockGroup(e,n,o){let r=this.groups.get(e);if(!r||e===this.mainGroupId)return;let i=this.mainGroupId?this.groups.get(this.mainGroupId):void 0;if(!i)return;let a=this.floatingOverlays.get(e),s=a?null:this.findOverlayForGroup(r);if(this.layout.splitGroup(i,r,n,o)){if(a)if(a.internalLayout){a.internalLayout.removeGroup(r),this.floatingOverlays.delete(e);let l=this.cleanupOrphanedFloatingLeaf(a);l.length>0?(a.group=l[0],this.floatingOverlays.set(l[0].id,a)):a.dispose()}else a.dispose(),this.floatingOverlays.delete(e);else s?.internalLayout&&(s.internalLayout.removeGroup(r),this.cleanupOrphanedFloatingLeaf(s));r.location="grid",r.isInFloatingSplit=!1}}getFloatingOverlay(e){return this.floatingOverlays.get(e)}dockOverlay(e){let n=this.floatingOverlays.get(e);if(!n)return;let o=this.mainGroupId?this.groups.get(this.mainGroupId):void 0;if(!o)return;if(!n.internalLayout){this.dockGroup(e,"right");return}let r=n.internalLayout.allGroups();if(r.length===0)return;let i=r[0];this.layout.splitGroup(o,i,"right"),i.location="grid",i.isInFloatingSplit=!1;for(let a=1;a<r.length;a++){let s=r[a];this.layout.splitGroup(i,s,"bottom"),s.location="grid",s.isInFloatingSplit=!1}n.internalLayout.dispose(),n.internalLayout=null,n.dispose(),this.floatingOverlays.delete(e)}findOverlayContaining(e){let n=this.groups.get(e);if(n)return this.findOverlayForGroup(n)??void 0}movePanel(e,n){let o=this.panels.get(e);if(!o)return;let r=o.group;if(!r||r.id===n)return;let i=this.groups.get(n);i&&(r.detachPanel(e),i.addPanel(o),r.size===0&&r.id!==this.mainGroupId&&this.removeGroup(r.id))}serializeLayout(){let e=[];for(let[o,r]of this.floatingOverlays){if(r.getAllGroups().reduce((l,c)=>l+c.size,0)===0)continue;let s={groupId:o,bounds:r.getBounds(),internalLayout:r.internalLayout?.toJSON()??null};r.isMaximized&&(s.isMaximized=!0),e.push(s)}let n={};for(let[o,r]of this.panels)r.group&&(n[o]=r.group.id);return{mainLayout:this.layout.toJSON(),floatingGroups:e,panelLocations:n}}getFloatingOverlays(){return this.floatingOverlays}cleanupEmptyGroups(){let e=!1;for(let n of[...this.layout.allGroups()])n.id!==this.mainGroupId&&n.size===0&&(this.removeGroup(n.id),e=!0);for(let[n,o]of[...this.floatingOverlays]){if(o.internalLayout)for(let i of[...o.internalLayout.allGroups()])i.size===0&&(this.removeGroup(i.id),e=!0);let r=this.floatingOverlays.get(n);r&&r.getAllGroups().reduce((s,l)=>s+l.size,0)===0&&(this.removeGroup(n),e=!0)}e&&this.layout.getRoot()&&(this.layout.getRoot().element.style.flex="1")}onDidRemovePanel(e){return this.onPanelRemovedCbs.push(e),{dispose:()=>{let n=this.onPanelRemovedCbs.indexOf(e);n!==-1&&this.onPanelRemovedCbs.splice(n,1)}}}dispose(){if(!this.disposed){this.disposed=!0,this.cancelTabDrag(),cancelAnimationFrame(this.portalRaf);for(let e of this.floatingOverlays.values())e.dispose();this.floatingOverlays.clear();for(let e of this.groups.values())e.dispose();this.groups.clear(),this.panels.clear(),this.onPanelRemovedCbs=[],this.dropOverlay.remove();for(let e of this.portals.values())e.entry.remove();this.portals.clear(),this.portalLayer.remove(),this.layout.dispose()}}wireGroupCallbacks(e){e.onTabClose(n=>{if(this._beforeTabClose){let o=this._beforeTabClose(n);o&&typeof o.then=="function"?o.then(r=>{r&&this.removePanel(n)}):o!==!1&&this.removePanel(n);return}this.removePanel(n)}),e.onTabPointerDown((n,o)=>{this.onTabPointerDown(n,e,o)}),e.onTabPopOut(n=>{this.detachPanelToFloating(n,window.innerWidth/2,window.innerHeight/2)})}onTabPointerDown(e,n,o){if(this.dragState)return;this.dragState={panelId:e,sourceGroup:n,startX:o.clientX,startY:o.clientY,isDragging:!1,ghost:null,iframes:null,currentZone:null};let r=s=>{if(!this.dragState)return;if(!this.dragState.isDragging){let c=s.clientX-this.dragState.startX,p=s.clientY-this.dragState.startY;if(c*c+p*p<25)return;this.dragState.isDragging=!0,this.dragState.iframes=uo(),this.dragState.ghost=this.createDragGhost(e),this.container.appendChild(this.dragState.ghost)}this.dragState.ghost.style.left=`${s.clientX+8}px`,this.dragState.ghost.style.top=`${s.clientY+8}px`;let l=this.hitTestDropZone(s.clientX,s.clientY);l=this.applyDragConstraints(l,this.dragState.sourceGroup),this.updateDropOverlay(l)},i=s=>{if(document.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i),document.removeEventListener("pointercancel",a),!this.dragState)return;if(!this.dragState.isDragging){n.activatePanel(e),this.dragState=null;return}this.dragState.ghost?.remove(),this.dragState.iframes?.release(),this.updateDropOverlay(null);let l=this.applyDragConstraints(this.hitTestDropZone(s.clientX,s.clientY),n);if(l)switch(l.kind){case"header":case"content-center":l.group.id===n.id?n.reorderPanel(e,s.clientX):this.movePanel(e,l.group.id);break;case"content-split":this.dockTabFromDrag(e,l.direction,l.group);break}this.cleanupEmptyGroups(),l&&this.onLayoutChangedCb?.(),this.dragState=null},a=()=>{document.removeEventListener("pointermove",r),document.removeEventListener("pointerup",i),document.removeEventListener("pointercancel",a),this.cancelTabDrag()};document.addEventListener("pointermove",r),document.addEventListener("pointerup",i),document.addEventListener("pointercancel",a)}cancelTabDrag(){this.dragState&&(this.dragState.ghost?.remove(),this.dragState.iframes?.release(),this.updateDropOverlay(null),this.dragState=null)}createDragGhost(e){let n=this.panels.get(e),o=document.createElement("div");return o.className="mb-drag-ghost",o.innerHTML=co,o.title=n?.title||e,o}hitTestDropZone(e,n,o){let r=[...this.floatingOverlays.entries()].filter(([,i])=>i.element.style.display!=="none").sort((i,a)=>{let s=parseInt(i[1].element.style.zIndex||"0");return parseInt(a[1].element.style.zIndex||"0")-s});for(let[,i]of r){let a=i.internalLayout?i.internalLayout.allGroups():[i.group];for(let s of a){if(s.id===o||s.locked==="no-drop-target")continue;if(!s.headerHidden){let c=s.headerElement.getBoundingClientRect();if(e>=c.left&&e<=c.right&&n>=c.top&&n<=c.bottom)return{kind:"header",group:s}}let l=s.contentElement.getBoundingClientRect();if(e>=l.left&&e<=l.right&&n>=l.top&&n<=l.bottom)return this.classifyContentZone(e,n,l,s)}}for(let i of this.groups.values()){if(this.floatingOverlays.has(i.id)||this.findOverlayForGroup(i)||i.id===o)continue;if(!i.headerHidden){let s=i.headerElement.getBoundingClientRect();if(e>=s.left&&e<=s.right&&n>=s.top&&n<=s.bottom&&i.locked!=="no-drop-target")return{kind:"header",group:i}}let a=i.contentElement.getBoundingClientRect();if(e>=a.left&&e<=a.right&&n>=a.top&&n<=a.bottom)return this.classifyContentZone(e,n,a,i)}return null}classifyContentZone(e,n,o,r){if(r.locked==="no-drop-target"){let A=n-o.top,h=o.bottom-n,b=e-o.left,W=o.right-e,Z;return A<=h&&A<=b&&A<=W?Z="top":h<=A&&h<=b&&h<=W?Z="bottom":b<=W?Z="left":Z="right",{kind:"content-split",group:r,direction:Z}}let a=this.splitEdgeSize,s=n-o.top,l=o.bottom-n,c=e-o.left,p=o.right-e;if(Math.min(s,l,c,p)<a){let A;return s<=l&&s<=c&&s<=p?A="top":l<=s&&l<=c&&l<=p?A="bottom":c<=p?A="left":A="right",{kind:"content-split",group:r,direction:A}}return{kind:"content-center",group:r}}applyDragConstraints(e,n){if(!e)return null;if(!("group"in e))return e;let o=this.findOverlayForGroup(e.group)!==null,r=!!e.group.locked;return(e.kind==="content-center"||e.kind==="header")&&r||n.dockingBlocked&&!o?null:e.kind==="content-split"&&o&&n.dialogDockingBlocked?{kind:"content-center",group:e.group}:e}updateDropOverlay(e){let n=this.dragState?.currentZone??null;if(n&&n.kind==="header"&&n.group.headerElement.classList.remove("mb-group-header--drop-target"),this.dropOverlay.style.display="none",e===null){this.dragState&&(this.dragState.currentZone=null);return}switch(e.kind){case"header":e.group.headerElement.classList.add("mb-group-header--drop-target");break;case"content-center":{let o=e.group.contentElement.getBoundingClientRect();this.positionDropOverlay(o.left,o.top,o.width,o.height),this.dropOverlay.dataset.zone="center";break}case"content-split":this.showSplitIndicator(e.group,e.direction);break}this.dragState&&(this.dragState.currentZone=e)}showSplitIndicator(e,n){let o=e.contentElement.getBoundingClientRect();switch(n){case"top":this.positionDropOverlay(o.left,o.top,o.width,o.height/2);break;case"bottom":this.positionDropOverlay(o.left,o.top+o.height/2,o.width,o.height/2);break;case"left":this.positionDropOverlay(o.left,o.top,o.width/2,o.height);break;case"right":this.positionDropOverlay(o.left+o.width/2,o.top,o.width/2,o.height);break}this.dropOverlay.dataset.zone=n}positionDropOverlay(e,n,o,r){let i=this.dropOverlay;i.style.display="block",i.style.left=`${e}px`,i.style.top=`${n}px`,i.style.width=`${o}px`,i.style.height=`${r}px`}detachPanelToFloating(e,n,o){let r=this.panels.get(e);if(!r||!r.group||r.group.id===this.mainGroupId)return;let i=Math.min(600,window.innerWidth*.8),a=Math.min(450,window.innerHeight*.7),s=this.addGroup({floating:{x:(window.innerWidth-i)/2,y:(window.innerHeight-a)/2,width:i,height:a}});this.movePanel(e,s.id),this.onGroupCreatedByDragCb?.(s)}dockTabFromDrag(e,n,o){let r=this.getLayoutForGroup(o);if(!r)return;let i=new mo;if(this.groups.set(i.id,i),this.wireGroupCallbacks(i),!r.splitGroup(o,i,n)){this.groups.delete(i.id),i.dispose(),this.movePanel(e,o.id);return}let s=this.findOverlayForGroup(o);s?.internalLayout&&(s.setDragGroup(i),i.location="floating",this.updateFloatingSplitState(s)),this.movePanel(e,i.id),s&&s.updateTotalTabCount(),this.onGroupCreatedByDragCb?.(i)}getLayoutForGroup(e){if(this.layout.findGroupNode(e))return this.layout;let n=this.findOverlayForGroup(e);return n?(n.internalLayout||(n.internalLayout=new nn(n.element),n.internalLayout.setMainGroup(n.group)),n.internalLayout):null}escapeGroupFromSplit(e){let n=this.groups.get(e);if(!n||!n.isInFloatingSplit)return;let o=this.findOverlayForGroup(n);if(!o?.internalLayout)return;let r=o.element.getBoundingClientRect(),i=this.floatingOverlays.get(e)===o,a=new po(n,{x:Math.min(r.left+30,window.innerWidth-320),y:Math.min(r.top+30,window.innerHeight-220),width:Math.max(300,r.width*.6),height:Math.max(200,r.height*.8)},this.container,this.portalLayer);this.floatingOverlays.set(e,a),o.internalLayout.removeGroup(n);let s=this.cleanupOrphanedFloatingLeaf(o);i&&s.length>0?(o.group=s[0],this.floatingOverlays.set(s[0].id,o)):s.length===0&&o.dispose(),n.isInFloatingSplit=!1,n.location==="floating"?n.fireLocationChanged():n.location="floating"}updateFloatingSplitState(e){if(!e.internalLayout)return;let n=e.internalLayout.allGroups(),o=n.length>1;for(let r of n)r.location="floating",r.isInFloatingSplit=o;e.repositionToolbar()}cleanupOrphanedFloatingLeaf(e){if(!e.internalLayout)return[];let n=e.internalLayout.allGroups();return n.length<=1?(n.length===1&&(e.element.appendChild(n[0].element),n[0].isInFloatingSplit=!1),e.internalLayout.dispose(),e.internalLayout=null,n.length===1&&(e.setDragGroup(n[0]),n[0].location="floating",e.repositionToolbar())):this.updateFloatingSplitState(e),e.updateTotalTabCount(),n}minimizeDocked(e){let n=this.layout.getGroupPosition(e);return this.layout.findGroupNode(e)&&this.layout.removeGroup(e),n?{siblingGroupId:n.siblingGroup.id,direction:n.direction}:null}restoreDocked(e,n,o,r){if(r){let a=this.groups.get(r);if(a&&this.layout.findGroupNode(a)&&this.layout.splitGroup(a,e,n,o))return}let i=this.mainGroupId?this.groups.get(this.mainGroupId):void 0;i&&this.layout.splitGroup(i,e,n,o)}findOverlayForGroup(e){let n=this.floatingOverlays.get(e.id);if(n)return n;for(let o of this.floatingOverlays.values())if(o.internalLayout?.findGroupNode(e))return o;return null}registerPortal(e,n,o){let r=document.createElement("div");r.className="mb-iframe-portal",r.dataset.portalId=e,this.portalLayer.appendChild(r),r.appendChild(n),this.portals.set(e,{entry:r,anchor:o})}unregisterPortal(e){let n=this.portals.get(e);n&&(n.entry.remove(),this.portals.delete(e))}syncPortals(){if(this.disposed)return;let e=[];for(let[,n]of this.portals){let{entry:o,anchor:r}=n;if(r.offsetParent===null)e.push({entry:o,rect:null,zIndex:"0"});else{let i=r.closest(".mb-floating-overlay"),a=i?.style.zIndex;e.push({entry:o,rect:r.getBoundingClientRect(),zIndex:String(i?parseInt(a||String(1e5+this.zBase),10)+1:50+this.zBase)})}}for(let{entry:n,rect:o,zIndex:r}of e)o?(n.style.display="",n.style.left=`${o.left}px`,n.style.top=`${o.top}px`,n.style.width=`${o.width}px`,n.style.height=`${o.height}px`,n.style.zIndex=r):n.style.display="none";this.portalRaf=requestAnimationFrame(()=>this.syncPortals())}};function kd(t){let e=/^#([0-9a-f]{3,8})$/i.exec(t.trim());if(!e)return null;let n=e[1];return n.length===3?[parseInt(n[0]+n[0],16),parseInt(n[1]+n[1],16),parseInt(n[2]+n[2],16)]:n.length===6||n.length===8?[parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)]:null}function on(t,e){let n=kd(t);return n?`rgba(${n[0]}, ${n[1]}, ${n[2]}, ${e})`:t}function rn(t){let e={};if(t.primary){let n=t.primary;e["--mb-adapt-separator-active"]=on(n,.4),e["--mb-adapt-drop-border"]=n,e["--mb-adapt-drop-header-bg"]=on(n,.15),e["--mb-adapt-drop-center-bg"]=on(n,.1),e["--mb-adapt-drop-split-bg"]=on(n,.12),e["--mb-adapt-status-icon-bg"]=on(n,.08),e["--mb-adapt-cap-spinner-color"]=n}if(t.background&&(e["--mb-adapt-bg"]=t.background,e["--mb-adapt-fork-tab-active-bg"]=t.background,e["--mb-adapt-status-card-bg"]=t.background),t.surface&&(e["--mb-adapt-fork-bg"]=t.surface,e["--mb-adapt-fork-tab-bg"]=t.surface),t.text&&(e["--mb-adapt-fork-tab-color"]=t.text,e["--mb-adapt-status-text"]=t.text,e["--mb-adapt-cap-color"]=t.text),t.textSecondary&&(e["--mb-adapt-fork-tab-inactive-color"]=t.textSecondary),t.border&&(e["--mb-adapt-fork-separator"]=t.border,e["--mb-adapt-status-card-border"]=t.border,e["--mb-adapt-cap-border-color"]=t.border),t.font&&(e["--mb-adapt-font"]=t.font,e["--mb-adapt-cap-font"]=t.font),t.vars)for(let[n,o]of Object.entries(t.vars))e[`--mb-adapt-${n}`]=o;return e}var Jd=["automation-id","session-token","auth-token","transmitter","challenge-token","requires-challenge","inherit-token","fork-display-mode","side-by-side-split","dark-mode","auto-resizing","allow-floating","allow-docking","allow-dialog-docking","allow-minimize","allow-maximize","floating-auto-resize","confirm-on-close","persist","debug"],Md=typeof HTMLElement<"u"?HTMLElement:class{},xt=class extends Md{constructor(){super();this._client=null}static get observedAttributes(){return Jd}get theme(){return this._theme}set theme(n){this._theme=n,this._client?.setTheme(n)}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 allowFloating(){return!this.hasAttribute("allow-floating")||this.getAttribute("allow-floating")!=="false"}set allowFloating(n){n?this.removeAttribute("allow-floating"):this.setAttribute("allow-floating","false")}get allowDocking(){return!this.hasAttribute("allow-docking")||this.getAttribute("allow-docking")!=="false"}set allowDocking(n){n?this.removeAttribute("allow-docking"):this.setAttribute("allow-docking","false")}get allowDialogDocking(){return!this.hasAttribute("allow-dialog-docking")||this.getAttribute("allow-dialog-docking")!=="false"}set allowDialogDocking(n){n?this.removeAttribute("allow-dialog-docking"):this.setAttribute("allow-dialog-docking","false")}get allowMinimize(){return!this.hasAttribute("allow-minimize")||this.getAttribute("allow-minimize")!=="false"}set allowMinimize(n){n?this.removeAttribute("allow-minimize"):this.setAttribute("allow-minimize","false")}get allowMaximize(){return!this.hasAttribute("allow-maximize")||this.getAttribute("allow-maximize")!=="false"}set allowMaximize(n){n?this.removeAttribute("allow-maximize"):this.setAttribute("allow-maximize","false")}get floatingAutoResize(){return this.hasAttribute("floating-auto-resize")}set floatingAutoResize(n){n?this.setAttribute("floating-auto-resize",""):this.removeAttribute("floating-auto-resize")}get confirmOnClose(){return this.hasAttribute("confirm-on-close")}set confirmOnClose(n){n?this.setAttribute("confirm-on-close",""):this.removeAttribute("confirm-on-close")}get forkDisplayMode(){return this.getAttribute("fork-display-mode")==="dialog"?"dialog":"side-by-side"}set forkDisplayMode(n){this.setAttribute("fork-display-mode",n)}get persist(){return this.hasAttribute("persist")}set persist(n){n?this.setAttribute("persist",""):this.removeAttribute("persist")}get debug(){return this.hasAttribute("debug")}set debug(n){n?this.setAttribute("debug",""):this.removeAttribute("debug")}async newSession(){this._client&&await this._client.newSession()}initialize(){this._tryInit()}connectedCallback(){requestAnimationFrame(()=>this._tryInit())}disconnectedCallback(){this._destroyClient()}attributeChangedCallback(n,o,r){if(o!==r){if(n==="automation-id"||n==="persist"||n==="debug"){this._destroyClient(),requestAnimationFrame(()=>this._tryInit());return}if(this._client)switch(n){case"fork-display-mode":this._client.setForkDisplayMode(this.forkDisplayMode);break;case"dark-mode":this._client.setDarkMode(this.darkMode);break;case"auto-resizing":this._client.setAutoResizing(this.autoResizing);break;case"allow-floating":this._client.setAllowFloating(this.allowFloating);break;case"allow-docking":this._client.setAllowDocking(this.allowDocking);break;case"allow-dialog-docking":this._client.setAllowDialogDocking(this.allowDialogDocking);break;case"allow-minimize":this._client.setAllowMinimize(this.allowMinimize);break;case"allow-maximize":this._client.setAllowMaximize(this.allowMaximize);break;case"floating-auto-resize":this._client.setFloatingAutoResize(this.floatingAutoResize);break;case"confirm-on-close":this._client.setConfirmOnClose(this.confirmOnClose);break}}}_tryInit(){if(this._client||!this.isConnected)return;let n=this.automationId;if(!n){console.error(`[adapt] <adapt-automation> is missing the required "automation-id" attribute. The element will not initialize. Set it via HTML: <adapt-automation automation-id="..."> or via the Astro/React/Vue component's automationId prop.`);return}let o=this.getAttribute("session-token"),r=this.getAttribute("auth-token"),i=this.getAttribute("transmitter"),a=this.getAttribute("challenge-token"),s=this.hasAttribute("requires-challenge"),l=this.getAttribute("inherit-token"),c=this.getAttribute("side-by-side-split"),p;this.forkDisplayMode==="dialog"?p={mode:"dialog"}:p={mode:"side-by-side",...c!==null&&{split:Number(c)}};let g={container:this,automationId:n,forkDisplay:p,darkMode:this.darkMode,autoResizing:this.autoResizing,onSession:(K,Q)=>{this.onSessionCallback?.(K,Q),this.dispatchEvent(new CustomEvent("adapt-session",{detail:{status:K,fork:Q},bubbles:!0}))},onOutput:K=>{this.onOutputCallback?.(K),this.dispatchEvent(new CustomEvent("adapt-output",{detail:{output:K},bubbles:!0}))},onForkActive:K=>{this.onForkActiveCallback?.(K),this.dispatchEvent(new CustomEvent("adapt-fork-active",{detail:{active:K},bubbles:!0}))},onError:K=>{this.onErrorCallback?.(K),this.dispatchEvent(new CustomEvent("adapt-error",{detail:{error:K},bubbles:!0}))}};this.allowFloating||(g.allowFloating=!1),this.allowDocking||(g.allowDocking=!1),this.allowDialogDocking||(g.allowDialogDocking=!1),this.allowMinimize||(g.allowMinimize=!1),this.allowMaximize||(g.allowMaximize=!1),this.floatingAutoResize&&(g.floatingAutoResize=!0),this.confirmOnClose&&(g.confirmOnClose=!0),this.debug&&(g.debug=!0),o&&(g.sessionToken=o),r&&(g.authToken=r),i&&(g.transmitter=i),a&&(g.challengeToken=a),s&&(g.requiresChallenge=!0),l&&(g.inheritToken=l);let A=this.signals??this._parseData("adaptSignals"),h=this.capWidgetOptions??this._parseData("adaptCapWidgetOptions"),b=this.inheritFrom??this._parseData("adaptInheritFrom"),W=this.classNames??this._parseData("adaptClassNames"),Z=this.text??this._parseData("adaptText"),H=this._theme??this._parseData("adaptTheme"),G=this.persistOptions??this._parseData("adaptPersistOptions");A!==void 0&&(g.signals=A),h!==void 0&&(g.capWidgetOptions=h),b!==void 0&&(g.inheritFrom=b),W!==void 0&&(g.classNames=W),this.styles!==void 0&&(g.styles=this.styles),Z!==void 0&&(g.text=Z),H!==void 0&&(g.theme=H),G!==void 0?g.persist=G:this.persist&&(g.persist=!0),this._client=new Ne(g)}_parseData(n){let o=this.dataset[n];if(o)try{return JSON.parse(o)}catch{return}}_destroyClient(){this._client&&(this._client.destroy(),this._client=null)}};if(typeof customElements<"u"&&!customElements.get("adapt-automation")){customElements.define("adapt-automation",xt);let t="adapt-element-display";if(!document.getElementById(t)){let e=document.createElement("style");e.id=t,e.textContent="adapt-automation, adapt-cap { display: block; }",document.head.appendChild(e)}}function ws(t,e="both",n){let o=`mb_adapt_${n??t}`;(e==="session"||e==="both")&&sessionStorage.removeItem(o),(e==="local"||e==="both")&&localStorage.removeItem(o)}var de="main",ee="fork-group",Es=768,Bs=40,an=class an{constructor(e){this.rootElement=null;this.panelManager=null;this.mainUrl=null;this.sessionToken=null;this.forks=new Map;this.mainRetentionPolicy="retain";this.mainCloseTimer=null;this.components=new Map;this.floatingAutoResized=new Set;this.beforeUnloadHandler=null;this.resizeObserver=null;this._autoMaximizedByResize=!1;this.destroyed=!1;this.sessionTerminated=!1;this.removingPanelProgrammatically=!1;this.restoringSession=!1;this.lastForkActive=null;this.messageHandler=null;this.minimizedTabsContainer=null;this.lastReportedContentHeight=0;this.forkPanelHeights=new Map;this.statusMessageElement=null;this.capWidgetInstance=null;this.minimizeManager=null;this.forkGroupActions=new Map;this.floatingToolbars=new Map;if(!e.automationId)throw new Error('[adapt] AdaptWebClient requires "automationId". Pass it in the options: new WebClient({ automationId: "...", ... })');this.options=e,this.debug=e.debug??!1;let n=e.forkDisplay??{mode:"side-by-side"};this.forkDisplay=n,this.darkMode=e.darkMode??!1,this.autoResizing=e.autoResizing??!1,this.allowFloating=e.allowFloating??!0,this.allowDocking=e.allowDocking??!0,this.allowDialogDocking=e.allowDialogDocking??!0,this.allowMinimize=e.allowMinimize??!0,this.allowMaximize=e.allowMaximize??!0,this.floatingAutoResize=e.floatingAutoResize??!1,this.confirmOnClose=e.confirmOnClose??!1,this.theme=e.theme;let o=typeof e.container=="string"?document.getElementById(e.container):e.container;if(!o)throw new Error(`Container with id '${e.container}' not found`);this.container=o;let r=ao({id:e.automationId});this.client=Is(r,e.automationId,{debug:this.debug}),this.log("info",`init automationId=${e.automationId} forkDisplay=${n.mode}`),Zs(),this.createRootElement(),this.createPanelManager(),this.wireBeforeTabClose(),this.setupMessageListener(),this.init().catch(i=>{this.showErrorStatus(i)})}static registerCapWidget(e){an._capWidgetClass=e}get responsiveBreakpoint(){if(!this.rootElement)return Es;let e=getComputedStyle(this.rootElement).getPropertyValue("--mb-adapt-responsive-breakpoint").trim(),n=Number(e);return n>0?n:Es}get responsiveHysteresis(){if(!this.rootElement)return Bs;let e=getComputedStyle(this.rootElement).getPropertyValue("--mb-adapt-responsive-hysteresis").trim(),n=Number(e);return n>=0?n:Bs}log(e,n,o){if(!this.debug&&e==="info")return;(e==="error"?console.error:e==="warn"?console.warn:console.log)(`[Adapt] ${n}`,o!==void 0?o:"")}onComponentCreated(e,n){this.components.set(e,n)}onComponentDisposed(e){this.components.delete(e)}getDarkMode(){return this.darkMode}getClassNames(){return this.options.classNames}createPanelManager(){if(!this.rootElement)return;this.minimizeManager=new je,this.minimizeManager.setAllowDocking(this.allowDocking),this.minimizedTabsContainer=document.createElement("div"),this.minimizedTabsContainer.className="mb-adapt-minimized-tabs",this.rootElement.appendChild(this.minimizedTabsContainer),this.panelManager=new et({container:this.rootElement,onGroupCreatedByDrag:o=>{o.dragConstraint="merge-only",this.allowDocking||(o.dockingBlocked=!0),this.allowDialogDocking||(o.dialogDockingBlocked=!0),this.setupForkGroupActions(o),this.saveState()},onLayoutChanged:()=>{this.saveState()}});let e=this.panelManager.addGroup({id:"main-group"});this.panelManager.setMainGroup(e),e.locked="no-drop-target",e.setHeaderHidden(!0),e.element.setAttribute("data-main-group","true");let n=new ke(this);n.init(de,{}),this.panelManager.addPanel({id:de,element:n.element,groupId:e.id}),this.minimizeManager.init(this.minimizedTabsContainer,this.panelManager),this.minimizeManager.onBarVisibilityChanged(()=>{this.reapplyAutoResizeHeight()}),this.resizeObserver=new ResizeObserver(o=>{let r=o[0]?.contentRect;r&&this.onContainerResize(r.width,r.height)}),this.resizeObserver.observe(this.rootElement)}getOrigin(e){try{return new URL(e).origin}catch{return null}}isValidMessageOrigin(e){if(this.mainUrl){let n=this.getOrigin(this.mainUrl);if(n&&e===n)return!0}for(let n of this.forks.values()){let o=this.getOrigin(n.url);if(o&&e===o)return!0}return!1}findComponentBySource(e){for(let[n,o]of this.components)if(o.contentWindow===e)return{panelId:n,component:o};return null}setupMessageListener(){this.messageHandler=e=>{if(!this.isValidMessageOrigin(e.origin))return;let n=e.data;if(!n||typeof n!="object")return;let o=e.source,r=this.findComponentBySource(o);if(!r)return;let{panelId:i,component:a}=r,s=i===de;if(n.type==="adapt-init"&&typeof n.resize=="boolean"){a.resizeCapable=n.resize,s&&!n.resize&&this.rootElement&&(this.rootElement.style.height="");let l=a.getOrigin();if(l){let c;if(s)c=this.autoResizing&&n.resize;else{let g=this.panelManager?.getPanel(i)?.group,A=g?!!this.panelManager?.findOverlayContaining(g.id):!1;c=n.resize&&(A&&this.floatingAutoResize||!A&&this.autoResizing)}a.postMessage({type:"adapt-autoResizing",autoResizing:c},l),a.postMessage({type:"adapt-darkMode",darkMode:this.darkMode},l)}return}if(n.type==="adapt-resize"){let{height:l}=n;if(typeof l!="number"||!Number.isFinite(l)||l<1)return;if(s)this.lastReportedContentHeight=l,a.resizeCapable&&this.autoResizing&&this.rootElement&&this.applyBestAutoResizeHeight();else{this.forkPanelHeights.set(i,l);let p=this.panelManager?.getPanel(i)?.group;if(p&&p.activePanel?.id===i){let g=!!this.panelManager?.findOverlayContaining(p.id);!g&&a.resizeCapable&&this.autoResizing&&this.rootElement&&this.applyBestAutoResizeHeight(),g&&this.floatingAutoResize&&(this.floatingAutoResized.has(p.id)||(this.floatingAutoResized.add(p.id),this.resizeOverlayForGroup(p)))}}return}},window.addEventListener("message",this.messageHandler)}postToComponent(e,n){let o=e.getOrigin();o&&e.postMessage(n,o)}setDarkMode(e){if(this.darkMode===e)return;this.darkMode=e,this.rootElement?.classList.toggle("mb-adapt--dark",e),this.capWidgetInstance?.setDarkMode(e),this.applyTheme();let n={type:"adapt-darkMode",darkMode:e};for(let o of this.components.values())this.postToComponent(o,n)}setTheme(e){if(this.theme=e,this.clearThemeVars(),e?.mode!==void 0){let n=e.mode==="dark";if(this.darkMode!==n){this.setDarkMode(n);return}}this.applyTheme()}clearThemeVars(){if(!(!this.rootElement||!this._appliedThemeVars)){for(let e of this._appliedThemeVars)this.rootElement.style.removeProperty(e);this._appliedThemeVars=void 0}}applyTheme(){if(!this.rootElement||!this.theme)return;let e=rn(this.theme);for(let[n,o]of Object.entries(e))this.rootElement.style.setProperty(n,o);this._appliedThemeVars=Object.keys(e)}setAutoResizing(e){if(this.autoResizing===e)return;this.autoResizing=e;let n=this.components.get(de);n?.resizeCapable&&this.postToComponent(n,{type:"adapt-autoResizing",autoResizing:e});for(let[o,r]of this.components){if(o===de||!r.resizeCapable)continue;let a=this.panelManager?.getPanel(o)?.group;a&&this.panelManager?.findOverlayContaining(a.id)||this.postToComponent(r,{type:"adapt-autoResizing",autoResizing:e})}!e&&this.rootElement&&(this.rootElement.style.height="")}setAllowFloating(e){if(this.allowFloating!==e){this.allowFloating=e;for(let n of this.forkGroupActions.values())n.setAllowFloating(e)}}setAllowDocking(e){if(this.allowDocking!==e){if(this.allowDocking=e,this.minimizeManager?.setAllowDocking(e),this.panelManager)for(let n of this.getAllForkGroups())n.dockingBlocked=!e;for(let n of this.floatingToolbars.values())n.setAllowDocking(e)}}setAllowDialogDocking(e){if(this.allowDialogDocking!==e&&(this.allowDialogDocking=e,this.panelManager))for(let n of this.getAllForkGroups())n.dialogDockingBlocked=!e}setAllowMinimize(e){if(this.allowMinimize!==e){this.allowMinimize=e;for(let n of this.forkGroupActions.values())n.setAllowMinimize(e);for(let n of this.floatingToolbars.values())n.setAllowMinimize(e)}}setAllowMaximize(e){if(this.allowMaximize!==e){this.allowMaximize=e;for(let n of this.forkGroupActions.values())n.setAllowMaximize(e);for(let n of this.floatingToolbars.values())n.setAllowMaximize(e)}}setFloatingAutoResize(e){if(this.floatingAutoResize!==e){this.floatingAutoResize=e,this.floatingAutoResized.clear();for(let[n,o]of this.components){if(n===de||!o.resizeCapable)continue;let i=this.panelManager?.getPanel(n)?.group,s=(i?!!this.panelManager?.findOverlayContaining(i.id):!1)?e&&o.resizeCapable:this.autoResizing&&o.resizeCapable;this.postToComponent(o,{type:"adapt-autoResizing",autoResizing:s})}}}getAllForkGroups(){if(!this.panelManager)return[];let e=new Set,n=[],o=i=>{i.id==="main-group"||e.has(i.id)||(e.add(i.id),n.push(i))},r=this.panelManager.getGroup(ee);r&&o(r);for(let i of this.panelManager.getDockedGroups())o(i);for(let[,i]of this.panelManager.getFloatingOverlays())for(let a of i.getAllGroups())o(a);return n}applyAutoResizeHeight(e){if(!this.rootElement)return;let n=this.minimizedTabsContainer?.offsetHeight??0;this.rootElement.style.height=`${Math.ceil(e)+n}px`}applyBestAutoResizeHeight(){if(!this.autoResizing||!this.rootElement)return;let e=0;if(this.components.get(de)?.resizeCapable&&this.lastReportedContentHeight>0){let o=this.panelManager?.getMainGroup();if(o?o.element.offsetHeight>0:!0){let i=o?.headerElement?.offsetHeight??0;e=this.lastReportedContentHeight+i}}for(let o of this.getAllForkGroups()){if(this.panelManager?.findOverlayContaining(o.id)||o.element.offsetHeight<=0)continue;let r=o.activePanel;if(r){let i=this.forkPanelHeights.get(r.id)??0,a=o.headerElement?.offsetHeight??0,s=i+a;s>e&&(e=s)}}e>0&&this.applyAutoResizeHeight(e)}reapplyAutoResizeHeight(){this.applyBestAutoResizeHeight()}setForkDisplayMode(e){this.forkDisplay.mode!==e&&(this.log("info",`setForkDisplayMode ${this.forkDisplay.mode} \u2192 ${e}`),e==="side-by-side"?this.forkDisplay={mode:"side-by-side"}:this.forkDisplay={mode:"dialog"},this.forks.size>0&&this.panelManager&&this.rebuildForkGroup(),this.emitForkActive(),this.saveState())}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.applyTheme(),this.container.appendChild(this.rootElement)}onUrl(e){if(this.destroyed)return;let n=e.fork||"";if(this.log("info",`onUrl fork=${n||"(main)"} stopped=${!!e.stopped} done=${!!e.done} url=${e.url?e.url.slice(0,60)+"...":"(none)"}`),e.stopped){this.handleStoppedMessage(n),this.saveState();return}if(e.done){this.handleDoneMessage(n,e.retentionPolicy),this.saveState();return}e.url&&(n?this.handleForkUrl(e.url,e.token,n,e.source,e.retentionPolicy):this.handleMainUrl(e.url,e.token,e.source,e.retentionPolicy),this.saveState())}handleMainUrl(e,n,o,r){this.log("info",`handleMainUrl url=${e.slice(0,60)}...`),this.mainCloseTimer&&(clearTimeout(this.mainCloseTimer),this.mainCloseTimer=null);let i=!this.mainUrl;if(this.removeStatusMessage(),this.mainUrl=e,this.mainToken=n,this.mainRetentionPolicy=this.resolveRetention(r),this.panelManager?.isMainGroupCollapsed()&&this.panelManager.expandMainGroup(),i){let s=this.getMaximizedDockedGroupId();if(s){let l=this.forkGroupActions.get(s);l&&l.clearMaximized()}}let a=this.components.get(de);a&&(a.update({url:e,token:n}),a.show())}handleForkUrl(e,n,o,r,i){if(!this.panelManager)return;let a=this.resolveRetention(i),s=this.forks.get(o);if(s){this.log("info",`handleForkUrl fork=${o} update existing panel=${s.panelId}`),s.closeTimer&&(clearTimeout(s.closeTimer),s.closeTimer=null),s.url=e,s.token=n,s.source=r,s.retentionPolicy=a,s.completed=!1,s.recyclable=!1;let g=this.components.get(s.panelId);g&&g.update({url:e,token:n});return}let l=this.findRecyclablePanel(r);if(l){this.log("info",`handleForkUrl fork=${o} recycling panel from fork=${l.forkKey}`);let{forkKey:g,state:A}=l;A.closeTimer&&(clearTimeout(A.closeTimer),A.closeTimer=null),this.forks.delete(g),A.url=e,A.token=n,A.fork=o,A.source=r,A.retentionPolicy=a,A.completed=!1,A.recyclable=!1,this.forks.set(o,A);let h=this.components.get(A.panelId);h&&h.update({url:e,token:n});return}this.log("info",`handleForkUrl fork=${o} creating new panel`);let c=`fork-${o}`;this.ensureForkGroup(),!this.mainUrl&&this.panelManager&&!this.panelManager.isMainGroupCollapsed()&&this.panelManager.collapseMainGroup();let p=new ke(this);p.init(c,{url:e,token:n}),this.panelManager.addPanel({id:c,element:p.element,groupId:ee}),this.forks.set(o,{panelId:c,url:e,token:n,fork:o,source:r,completed:!1,recyclable:!1,retentionPolicy:a,closeTimer:null}),this.emitForkActive()}ensureForkGroup(){if(!this.panelManager||this.panelManager.getGroup(ee))return;this.log("info",`ensureForkGroup mode=${this.forkDisplay.mode}`);let n=this.rootElement?.offsetWidth??800,o=this.rootElement?.offsetHeight??600;if(this.forkDisplay.mode==="dialog"){let r=n<this.responsiveBreakpoint,i=window.innerWidth,a=window.innerHeight,s=r?Math.min(n*.95,Math.max(200,i-20)):Math.min(720,n*.9),l=r?Math.min(o*.9,Math.max(200,a-20)):Math.min(o*.8,600),c=this.panelManager.addGroup({id:ee,floating:{width:s,height:l,x:Math.max(0,(i-s)/2),y:Math.max(0,(a-l)/2)}});c.dragConstraint="merge-only",this.allowDocking||(c.dockingBlocked=!0),this.allowDialogDocking||(c.dialogDockingBlocked=!0),this.setupForkGroupActions(c),r&&(this.panelManager.getFloatingOverlay(ee)?.maximize(),this._autoMaximizedByResize=!0)}else{let r=this.forkDisplay.mode==="side-by-side"?this.forkDisplay.split:void 0,i=r!==void 0?n*(1-r/100):void 0,a=this.panelManager.addGroup({id:ee,direction:"right",initialSize:i});if(a.dragConstraint="merge-only",this.allowDocking||(a.dockingBlocked=!0),this.allowDialogDocking||(a.dialogDockingBlocked=!0),this.setupForkGroupActions(a),n<this.responsiveBreakpoint){let s=this.forkGroupActions.get(a.id);s?(s.setMaximized(),s.setAutoMaximizedByResize(!0)):this.panelManager.maximizeDockedGroup(a),this._autoMaximizedByResize=!0}}}setupForkGroupActions(e){if(!this.panelManager||!this.minimizeManager)return;let n=new qe(e,this.minimizeManager,this.panelManager,()=>{if(this.setupFloatingToolbar(e),e.location==="grid"&&!this.mainUrl&&this.panelManager&&!this.panelManager.isMainGroupCollapsed()&&this.panelManager.collapseMainGroup(),e.location==="floating"&&this.floatingAutoResized.delete(e.id),this.updateAutoResizeForGroup(e),e.location==="grid"){let o=this.rootElement?.offsetWidth??0;if(o>0&&o<this.responsiveBreakpoint){let r=this.forkGroupActions.get(e.id);r&&!r.isMaximized&&(r.setMaximized(),this._autoMaximizedByResize=!0,r.setAutoMaximizedByResize(!0))}}this.saveState()},{allowFloating:this.allowFloating,allowMinimize:this.allowMinimize,allowMaximize:this.allowMaximize});n.setBeforeClose(()=>this.confirmCloseGroup(e)),n.onMaximizeChanged(o=>{o||(this._autoMaximizedByResize=!1,n.setAutoMaximizedByResize(!1)),this.saveState()}),e.setHeaderActions(n.element),this.forkGroupActions.set(e.id,n),e.onActivePanelChanged(()=>{this.autoResizing&&this.rootElement&&this.applyBestAutoResizeHeight()}),this.setupFloatingToolbar(e)}updateAutoResizeForGroup(e){let n=this.panelManager?!!this.panelManager.findOverlayContaining(e.id):!1;for(let o of e.panels){let r=this.components.get(o.id);if(!r?.resizeCapable)continue;let i=n?this.floatingAutoResize:this.autoResizing;this.postToComponent(r,{type:"adapt-autoResizing",autoResizing:i})}}setupFloatingToolbar(e){if(!this.panelManager||!this.minimizeManager)return;let n=this.panelManager.findOverlayContaining(e.id);if(n)if(e.onPanelCountChanged(()=>n.updateTotalTabCount()),n.hasToolbar)n.repositionToolbar();else{let o=new $e(n,this.panelManager,this.minimizeManager,{allowDocking:this.allowDocking,allowMinimize:this.allowMinimize,allowMaximize:this.allowMaximize});o.setBeforeClose(()=>this.confirmCloseGroup(n.group)),n.setToolbar(o.element),this.floatingToolbars.set(n.group.id,o),n.updateTotalTabCount()}}resolveRetention(e){return e?e.case:"retain"}findRecyclablePanel(e){let n=null;for(let[o,r]of this.forks)if(r.recyclable){if(e&&r.source===e)return{forkKey:o,state:r};n||(n={forkKey:o,state:r})}return n}handleMainDone(e){switch(e?this.resolveRetention(e):this.mainRetentionPolicy){case"close":this.scheduleMainClose(e?.case==="close"?e.timeoutSeconds:void 0);break;case"recycle":break;default:break}}scheduleForkClose(e,n,o){let r=()=>{n.closeTimer=null,this.removingPanelProgrammatically=!0;try{if(this.panelManager){let i=this.components.get(n.panelId);i&&i.dispose(),this.panelManager.removePanel(n.panelId)}this.forks.delete(e),this.removeForkGroupIfEmpty()}finally{this.removingPanelProgrammatically=!1}this.emitForkActive(),this.saveState()};o&&o>0?n.closeTimer=setTimeout(r,o*1e3):r()}scheduleMainClose(e){let n=()=>{this.mainCloseTimer=null,this.mainUrl=null,this.mainToken=void 0;let o=this.components.get(de);o&&o.hide(),this.panelManager&&!this.panelManager.isMainGroupCollapsed()&&this.panelManager.collapseMainGroup(),this.saveState()};e&&e>0?this.mainCloseTimer=setTimeout(n,e*1e3):n()}restoreFork(e,n){if(!this.panelManager)return;let o=n??ee;this.log("info",`restoreFork fork=${e.fork} \u2192 group=${o} url=${e.url.slice(0,60)}...`);let r=`fork-${e.fork}`;o===ee&&this.ensureForkGroup(),!this.mainUrl&&this.panelManager&&!this.panelManager.isMainGroupCollapsed()&&this.panelManager.collapseMainGroup();let i=new ke(this);i.init(r,{url:e.url,token:e.token}),this.panelManager.addPanel({id:r,element:i.element,groupId:o}),this.forks.set(e.fork,{panelId:r,url:e.url,token:e.token,fork:e.fork,source:e.source,completed:!1,recyclable:e.retentionPolicy==="recycle",retentionPolicy:e.retentionPolicy,closeTimer:null}),this.emitForkActive()}restoreDockedLayout(e){this.panelManager&&(this.createGroupsFromTree(e),this.panelManager.rebuildDockedLayout(e))}createGroupsFromTree(e){if(this.panelManager){if(e.kind==="leaf"){if(e.groupId==="main-group"||this.panelManager.getGroup(e.groupId))return;let n=this.panelManager.addGroup({id:e.groupId});n.dragConstraint="merge-only",this.allowDocking||(n.dockingBlocked=!0),this.allowDialogDocking||(n.dialogDockingBlocked=!0),this.setupForkGroupActions(n);return}this.createGroupsFromTree(e.first),this.createGroupsFromTree(e.second)}}clearAllForks(){this.log("info",`clearAllForks count=${this.forks.size}`),this.removingPanelProgrammatically=!0;try{if(this.panelManager)for(let e of this.forks.values()){e.closeTimer&&(clearTimeout(e.closeTimer),e.closeTimer=null);let n=this.components.get(e.panelId);n&&n.dispose(),this.panelManager.removePanel(e.panelId)}this.forks.clear(),this.removeForkGroupIfEmpty()}finally{this.removingPanelProgrammatically=!1}}rebuildForkGroup(){if(!this.panelManager)return;let e=this.panelManager.getGroup(ee);if(e)if(this.log("info",`rebuildForkGroup newMode=${this.forkDisplay.mode}`),this.forkDisplay.mode==="dialog"){let n=this.rootElement?.offsetWidth??800,o=this.rootElement?.offsetHeight??600,r=Math.min(720,n*.9),i=Math.min(o*.8,600);this.panelManager.addFloatingGroup(e,{width:r,height:i,x:(window.innerWidth-r)/2,y:(window.innerHeight-i)/2}),this.setupFloatingToolbar(e)}else{let n=this.forkDisplay.mode==="side-by-side"?this.forkDisplay.split:void 0,o=n!==void 0?(this.rootElement?.offsetWidth??800)*(1-n/100):void 0;this.panelManager.dockGroup(ee,"right",o)}}handleSessionComplete(){this.clearAllForks(),this.emitForkActive()}handleDoneMessage(e,n){if(this.log("info",`handleDoneMessage fork=${e||"(main)"} retention=${n?.case??"default"}`),!e){this.handleMainDone(n);return}let o=this.forks.get(e);if(!o)return;switch(n?this.resolveRetention(n):o.retentionPolicy){case"close":o.completed=!0,this.scheduleForkClose(e,o,n?.case==="close"?n.timeoutSeconds:void 0);break;case"recycle":o.completed=!0,o.recyclable=!0;break;default:o.completed=!0;break}}handleStoppedMessage(e){if(this.log("info",`handleStoppedMessage fork=${e||"(main)"}`),!e){this.mainCloseTimer&&(clearTimeout(this.mainCloseTimer),this.mainCloseTimer=null),this.mainUrl=null,this.mainToken=void 0;let o=this.components.get(de);o&&o.hide(),this.showStatusMessage(this.options.text?.stopped??"This session has been stopped","stopped");return}let n=this.forks.get(e);if(n){n.closeTimer&&(clearTimeout(n.closeTimer),n.closeTimer=null),this.removingPanelProgrammatically=!0;try{if(this.panelManager){let o=this.components.get(n.panelId);o&&o.dispose(),this.panelManager.removePanel(n.panelId)}this.forks.delete(e),this.removeForkGroupIfEmpty()}finally{this.removingPanelProgrammatically=!1}this.emitForkActive()}}cleanupGroupTracking(e){let n=this.forkGroupActions.get(e);n&&(n.dispose(),this.forkGroupActions.delete(e)),this.floatingToolbars.delete(e),this.floatingAutoResized.delete(e),this.minimizeManager?.removeGroup(e),e===ee&&(this._autoMaximizedByResize=!1)}cleanupStaleGroupTracking(){if(this.panelManager){for(let e of[...this.forkGroupActions.keys()])this.panelManager.getGroup(e)||this.cleanupGroupTracking(e);for(let e of[...this.floatingToolbars.keys()])this.panelManager.getGroup(e)||this.floatingToolbars.delete(e)}}removeForkGroupIfEmpty(){if(!this.panelManager)return;let e=this.panelManager.getGroup(ee);e&&e.size===0?(this.panelManager.removeGroup(ee),this.cleanupGroupTracking(ee)):e||this.cleanupGroupTracking(ee),this.minimizeManager?.removeGroup(ee)}getMaximizedDockedGroupId(){for(let[e,n]of this.forkGroupActions)if(n.isMaximized)return e}emitForkActive(){if(!this.options.onForkActive)return;let e=this.forks.size>0;e!==this.lastForkActive&&(this.lastForkActive=e,this.options.onForkActive(e))}parseInheritToken(){let e=this.options.inheritFrom;return e?"hash"in e?this.parseFromHash(e.hash):this.parseFromParam(e.param):null}parseFromHash(e){let n=window.location.hash.slice(1);if(!n)return null;let o=new URLSearchParams(n),r=o.get(e);if(!r)return null;o.delete(e);let i=o.toString(),a=window.location.pathname+window.location.search+(i?"#"+i:"");return history.replaceState(null,"",a),decodeURIComponent(r)}parseFromParam(e){let n=new URLSearchParams(window.location.search),o=n.get(e);if(!o)return null;n.delete(e);let r=n.toString(),i=window.location.pathname+(r?"?"+r:"")+window.location.hash;return history.replaceState(null,"",i),decodeURIComponent(o)}async init(){this.panelManager?.onDidRemovePanel(n=>{if(!this.removingPanelProgrammatically){for(let[o,r]of this.forks)if(r.panelId===n.id){r.closeTimer&&(clearTimeout(r.closeTimer),r.closeTimer=null);let i=this.components.get(r.panelId);i&&i.dispose(),this.sessionToken&&this.client.stop(this.sessionToken,o).catch(()=>{}),this.forks.delete(o);break}this.emitForkActive(),this.cleanupStaleGroupTracking()}});let e={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"||n.status==="STATUS_DELEGATED"||n.status==="STATUS_EXPIRED")&&(this.sessionTerminated=!0,this.clearState(),this.beforeUnloadHandler&&(window.removeEventListener("beforeunload",this.beforeUnloadHandler),this.beforeUnloadHandler=null)),this.options.onSession&&this.options.onSession(n.status||"STATUS_UNSPECIFIED",n.fork)}};if(this.options.onOutput&&(e.onOutput=this.options.onOutput),e.onError=n=>{this.showErrorStatus(n),this.beforeUnloadHandler&&(window.removeEventListener("beforeunload",this.beforeUnloadHandler),this.beforeUnloadHandler=null)},!this.options.sessionToken&&this.resolvePersistOptions()){this.log("info","attempting session restore from persisted state");let n=await this.tryRestoreSession(e);if(this.log("info",`restore result=${n}`),n!=="none"){this.updateBeforeUnloadGuard();return}}if(this.options.sessionToken)this.log("info","using pre-created sessionToken"),this.sessionToken=this.options.sessionToken,await this.client.subscribe(this.sessionToken,e);else{let n=this.parseInheritToken(),o=n||this.options.inheritToken;if(this.options.inheritFrom&&!n){let a="hash"in this.options.inheritFrom?`hash key '${this.options.inheritFrom.hash}'`:`param '${this.options.inheritFrom.param}'`;this.log("error",`no inherit token found in URL ${a}`);return}let r=this.options.challengeToken;if(this.options.requiresChallenge&&!r&&!o&&(r=await this.showCapWidgetAndSolve(),!r)){this.log("error","failed to solve challenge");return}let i;if(o)this.log("info","starting session via inheritToken"),i=await this.client.runInherit(o,e);else{this.log("info",`starting session via run (transmitter=${this.options.transmitter??"default"})`);let a={...e};this.options.transmitter!==void 0&&(a.transmitter=this.options.transmitter),this.options.signals!==void 0&&(a.signals=this.options.signals),this.options.authToken!==void 0&&(a.authToken=this.options.authToken),r!==void 0&&(a.challengeToken=r),i=await this.client.run(a)}this.sessionToken=i.sessionToken,this.sessionExpiresAt=i.expiresAt,this.log("info",`session started token=${this.sessionToken?.slice(0,8)}...`),this.saveState()}this.updateBeforeUnloadGuard()}async showCapWidgetAndSolve(){let e=an._capWidgetClass;if(!e)throw new Error("Cap.js not loaded. Import '@mochabug/adapt-web/cap' or use the full UMD bundle.");return new Promise(n=>{this.capWidgetInstance=new e({container:this.rootElement,automationId:this.options.automationId,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:o=>{this.capWidgetInstance=null,n(o)},onError:o=>{this.log("error","Cap.js error:",o),this.capWidgetInstance=null,n(void 0)}}),this.darkMode&&this.capWidgetInstance.setDarkMode(!0)})}resolvePersistOptions(){let e=this.options.persist;if(!e)return null;if(e===!0)return{storage:"session",ttl:3600};let n={storage:e.storage??"session",ttl:e.ttl??3600};return e.key!==void 0&&(n.key=e.key),n}getStorageKey(){return`mb_adapt_${this.resolvePersistOptions()?.key??this.options.automationId}`}getStorage(){let e=this.resolvePersistOptions();return e?e.storage==="local"?localStorage:sessionStorage:null}saveState(){if(this.restoringSession)return;let e=this.getStorage();if(!e||!this.sessionToken)return;let n=this.resolvePersistOptions();this.log("info",`saveState key=${this.getStorageKey()} forks=${this.forks.size} mainUrl=${this.mainUrl?"yes":"none"}`);let o={v:3,token:this.sessionToken,expiresAt:this.sessionExpiresAt?this.sessionExpiresAt.toISOString():null,savedAt:Date.now(),ttl:n.ttl,mainUrl:this.mainUrl,mainToken:this.mainToken,forks:Array.from(this.forks.values()).filter(i=>!i.completed||i.recyclable).map(i=>{let a={url:i.url,token:i.token,fork:i.fork,retentionPolicy:i.retentionPolicy};return i.source!==void 0&&(a.source=i.source),a}),forkDisplayMode:this.forkDisplay.mode,layout:this.panelManager?.serializeLayout()};if(this.minimizeManager){let i=this.minimizeManager.getMinimizedGroupIds();i.length>0&&(o.minimizedGroups=i.map(a=>{let s=this.minimizeManager.getEntry(a),l={groupId:a,mode:s?.mode??"floating"};return s?.savedPosition&&(l.savedPosition={...s.savedPosition}),l}))}let r=this.getMaximizedDockedGroupId();r&&(o.maximizedDockedGroupId=r),e.setItem(this.getStorageKey(),JSON.stringify(o))}loadState(){let e=this.getStorage();if(!e)return null;let n=e.getItem(this.getStorageKey());if(!n)return this.log("info","loadState: no persisted state found"),null;let o;try{o=JSON.parse(n)}catch{return this.log("warn","loadState: invalid JSON, clearing"),this.clearState(),null}if(o.v!==3)return this.log("warn",`loadState: version mismatch v=${o.v}, clearing`),this.clearState(),null;let r=Date.now(),i=3e4;if(r-o.savedAt>o.ttl*1e3+i)return this.log("info","loadState: TTL expired, clearing"),this.clearState(),null;if(o.expiresAt){let a=new Date(o.expiresAt).getTime();if(r>a+i)return this.log("info","loadState: session expired, clearing"),this.clearState(),null}return this.log("info",`loadState: found state forks=${o.forks.length} mainUrl=${o.mainUrl?"yes":"none"}`),o}clearState(){this.log("info","clearState");let e=this.getStorage();e&&e.removeItem(this.getStorageKey())}async tryRestoreSession(e){let n=this.loadState();if(!n)return"none";let o=Date.now()-n.savedAt>1e4;if(this.log("info",`tryRestoreSession token=${n.token.slice(0,8)}... forks=${n.forks.length} stale=${o}`),this.sessionToken=n.token,this.sessionExpiresAt=n.expiresAt?new Date(n.expiresAt):void 0,this.mainUrl=n.mainUrl,this.mainToken=n.mainToken,n.forkDisplayMode&&(n.forkDisplayMode==="side-by-side"?this.forkDisplay={mode:"side-by-side"}:this.forkDisplay={mode:"dialog"}),this.mainUrl){let l=this.components.get(de);l&&l.update({url:this.mainUrl,token:this.mainToken})}this.restoringSession=!0;try{if(n.layout?.mainLayout&&this.panelManager&&this.restoreDockedLayout(n.layout.mainLayout),n.layout?.floatingGroups&&this.panelManager)for(let c of n.layout.floatingGroups){if(this.panelManager.getGroup(c.groupId))continue;let p=this.panelManager.addGroup({id:c.groupId,floating:c.bounds});p.dragConstraint="merge-only",this.allowDocking||(p.dockingBlocked=!0),this.allowDialogDocking||(p.dialogDockingBlocked=!0),this.setupForkGroupActions(p),c.internalLayout&&this.createGroupsFromTree(c.internalLayout)}this.panelManager&&Vs(this.panelManager.getGroupIds());let l=()=>{if(!this.panelManager)return ee;for(let c of this.panelManager.getDockedGroups())if(c.id!=="main-group")return c.id;return ee};this.log("info",`restore phase2: ${n.forks.length} forks, panelLocations=${JSON.stringify(n.layout?.panelLocations??{})}`);for(let c of n.forks){let p=`fork-${c.fork}`,g=n.layout?.panelLocations?.[p]??ee,A=this.panelManager?.getGroup(g),h=A?g:l();A||this.log("warn",`restore: target group "${g}" not found for ${p}, fallback="${h}"`),this.restoreFork(c,h)}if(n.layout?.floatingGroups&&this.panelManager)for(let c of n.layout.floatingGroups)c.internalLayout&&this.panelManager.rebuildFloatingInternalLayout(c.groupId,c.internalLayout);if(this.panelManager&&this.panelManager.cleanupEmptyGroups(),n.layout&&this.panelManager)for(let c of n.layout.floatingGroups){let p=this.panelManager.getFloatingOverlay(c.groupId);p&&(p.setFullBounds(c.bounds),c.isMaximized&&(p.maximize(),this.floatingToolbars.get(c.groupId)?.syncMaximizedState()))}if(n.minimizedGroups&&this.minimizeManager&&this.panelManager)for(let c of n.minimizedGroups){let p=this.panelManager.getGroup(c.groupId);if(p&&!this.minimizeManager.isMinimized(c.groupId))if(c.mode==="floating"){let g=this.panelManager.getFloatingOverlay(c.groupId);g&&this.minimizeManager.minimize(c.groupId,g,p)}else c.mode==="docked"&&this.minimizeManager.minimizeDocked(c.groupId,p,this.panelManager)}if(n.maximizedDockedGroupId&&this.panelManager){let c=this.forkGroupActions.get(n.maximizedDockedGroupId);c&&c.setMaximized()}o||e.onSession?.({status:"STATUS_RUNNING"})}finally{this.restoringSession=!1}this.saveState();let r=!1,i=!1,a=e.onError,s={...e,onError:l=>{r=!0;let c=this.loadState();!c||Date.now()-c.savedAt>1e4?(i=!0,this.clearState()):a?.(l)}};try{await this.client.subscribe(n.token,s)}catch{r=!0,o?(i=!0,this.clearState()):this.showErrorStatus(new Error("Session restore failed"))}return r?(await this.client.unsubscribe(),this.sessionToken=null,this.sessionExpiresAt=void 0,this.mainUrl=null,this.mainToken=void 0,this.clearAllForks(),this.components.get(de)?.hide(),i?"none":"failed"):"restored"}async newSession(){this.clearState(),this.sessionTerminated=!1,this.mainCloseTimer&&(clearTimeout(this.mainCloseTimer),this.mainCloseTimer=null),this.mainRetentionPolicy="retain",this.sessionToken&&this.client.stop(this.sessionToken).catch(()=>{}),await this.client.unsubscribe(),this.mainUrl=null,this.mainToken=void 0,this.sessionToken=null,this.sessionExpiresAt=void 0,this.lastForkActive=null,this.updateBeforeUnloadGuard(),this.clearAllForks(),this.components.get(de)?.hide(),this.removeStatusMessage();try{await this.init()}catch(e){this.showErrorStatus(e)}}resizeOverlayForGroup(e){if(!this.panelManager)return;let n=this.panelManager.findOverlayContaining(e.id);if(!n)return;let o=n.getAllGroups(),r=0;for(let i of o){let a=i.activePanel;if(a){let s=this.forkPanelHeights.get(a.id)??0;s>r&&(r=s)}}if(r>0){let i=e.headerElement?.offsetHeight??40,a=Math.ceil(r)+i,s=n.getBounds(),l=(window.innerHeight-a)/2;n.setFullBounds({...s,height:a,y:Math.max(0,l)})}}onContainerResize(e,n){if(!this.panelManager)return;let o=this.panelManager.getGroup(ee);if(!o)return;let r=this.responsiveBreakpoint,i=r+this.responsiveHysteresis,a=this.forkGroupActions.get(ee),s=a?.isMaximized??!1;if(e<r&&!this._autoMaximizedByResize){if(o.location==="floating"){let l=this.panelManager.getFloatingOverlay(ee);l&&!l.isMaximized&&(l.maximize(),this._autoMaximizedByResize=!0)}else s||(a?(a.setMaximized(),a.setAutoMaximizedByResize(!0)):this.panelManager.maximizeDockedGroup(o),this._autoMaximizedByResize=!0);this.applyBestAutoResizeHeight()}e>=i&&this._autoMaximizedByResize&&(o.location==="floating"?this.panelManager.getFloatingOverlay(ee)?.restore():a?a.clearMaximized():this.panelManager.restoreMaximizedDockedGroup(o),this._autoMaximizedByResize=!1,a?.setAutoMaximizedByResize(!1))}setConfirmOnClose(e){this.confirmOnClose=e,this.updateBeforeUnloadGuard()}updateBeforeUnloadGuard(){let e=this.confirmOnClose&&!!this.sessionToken&&!this.destroyed;e&&!this.beforeUnloadHandler?(this.beforeUnloadHandler=n=>{n.preventDefault()},window.addEventListener("beforeunload",this.beforeUnloadHandler)):!e&&this.beforeUnloadHandler&&(window.removeEventListener("beforeunload",this.beforeUnloadHandler),this.beforeUnloadHandler=null)}wireBeforeTabClose(){this.panelManager&&this.panelManager.setBeforeTabClose(e=>{if(this.removingPanelProgrammatically||!this.confirmOnClose)return!0;for(let[,n]of this.forks)if(n.panelId===e)return n.completed?!0:this.showConfirmDialog("This panel hasn\u2019t finished yet. Are you sure you want to close it?");return!0})}confirmCloseGroup(e){return!this.confirmOnClose||!e.panels.some(o=>{for(let r of this.forks.values())if(r.panelId===o.id&&!r.completed)return!0;return!1})?!0:this.showConfirmDialog("Some panels haven\u2019t finished yet. Are you sure you want to close them?")}showConfirmDialog(e){return new Promise(n=>{if(!this.rootElement){n(!0);return}let o=document.createElement("div");o.className="mb-adapt mb-adapt__confirm-overlay",this.darkMode&&o.classList.add("mb-adapt--dark");let r=document.createElement("div");r.className="mb-adapt__confirm-card";let i=document.createElement("p");i.className="mb-adapt__confirm-text",i.textContent=e,r.appendChild(i);let a=document.createElement("div");a.className="mb-adapt__confirm-buttons";let s=document.createElement("button");s.className="mb-adapt__confirm-btn mb-adapt__confirm-btn--cancel",s.textContent="Cancel";let l=document.createElement("button");l.className="mb-adapt__confirm-btn mb-adapt__confirm-btn--confirm",l.textContent="Close",a.appendChild(s),a.appendChild(l),r.appendChild(a),o.appendChild(r),document.body.appendChild(o);let c=p=>{o.remove(),n(p)};s.addEventListener("click",()=>c(!1)),l.addEventListener("click",()=>c(!0)),o.addEventListener("click",p=>{p.target===o&&c(!1)})})}async destroy(){if(!this.destroyed){this.log("info","destroy"),this.destroyed=!0,this.mainCloseTimer&&(clearTimeout(this.mainCloseTimer),this.mainCloseTimer=null);for(let e of this.forks.values())e.closeTimer&&(clearTimeout(e.closeTimer),e.closeTimer=null);this.beforeUnloadHandler&&(window.removeEventListener("beforeunload",this.beforeUnloadHandler),this.beforeUnloadHandler=null),this.resizeObserver?.disconnect(),this.resizeObserver=null,this.capWidgetInstance?.destroy(),this.capWidgetInstance=null,this.minimizeManager?.dispose(),this.minimizeManager=null,this.sessionToken&&!this.loadState()&&!this.sessionTerminated&&this.client.stop(this.sessionToken).catch(()=>{}),await this.client.unsubscribe(),this.messageHandler&&window.removeEventListener("message",this.messageHandler),this.panelManager&&(this.panelManager.dispose(),this.panelManager=null),this.rootElement?.parentNode?.removeChild(this.rootElement),this.mainUrl=null,this.mainToken=void 0,this.forks.clear(),this.components.clear(),this.forkPanelHeights.clear(),this.forkGroupActions.clear(),this.floatingToolbars.clear(),this.sessionToken=null,this.lastForkActive=null,this.rootElement=null,this.messageHandler=null,this.statusMessageElement=null,this.minimizedTabsContainer=null}}showStatusMessage(e,n="error"){if(!this.rootElement)return;this.removeStatusMessage();let o=this.components.get(de);o&&o.hide(),this.statusMessageElement=document.createElement("div"),this.statusMessageElement.className=this.options.classNames?.statusMessage??"mb-adapt__status-message";let r=document.createElement("div");r.className=this.options.classNames?.statusCard??"mb-adapt__status-card";let i=document.createElement("div");i.className=n==="stopped"||n==="expired"?"mb-adapt__status-icon mb-adapt__status-icon--stopped":"mb-adapt__status-icon",i.innerHTML=n==="stopped"||n==="expired"?'<svg viewBox="0 0 24 24" fill="none" stroke="#6b7280" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="6" y="6" width="12" height="12" rx="2"/></svg>':'<svg viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>',r.appendChild(i);let a=document.createElement("p");a.className="mb-adapt__status-text",a.textContent=e,r.appendChild(a);let s=document.createElement("button");s.className="mb-adapt__status-restart",s.textContent=this.options.text?.restartButton??"Try again",s.addEventListener("click",()=>this.newSession()),r.appendChild(s),this.statusMessageElement.appendChild(r),this.rootElement.appendChild(this.statusMessageElement)}removeStatusMessage(){this.statusMessageElement&&(this.statusMessageElement.remove(),this.statusMessageElement=null)}showErrorStatus(e){let n=this.classifyError(e),o=n.kind==="expired"?"expired":"error";this.clearState(),this.clearAllForks(),this.showStatusMessage(n.message,o),this.options.onError?.(n)}isExpiredTokenError(e){return e instanceof X&&e.code===v.PermissionDenied&&e.message.toLowerCase().includes("expired")}getErrorMessage(e){let n=this.options.text,o=n?.error??"Something went wrong. Please try again later.";if(e instanceof X){if(this.isExpiredTokenError(e))return n?.sessionExpired??"Your session has expired.";switch(e.code){case v.ResourceExhausted:return n?.resourceExhausted??"This automation is currently at capacity. Please try again later.";case v.NotFound:return e.message.toLowerCase().includes("session not found")?n?.sessionNotFound??"This session has timed out or been stopped.":n?.notFound??"This automation could not be found.";case v.PermissionDenied:case v.Unauthenticated:return n?.permissionDenied??"You don't have permission to run this automation.";default:return o}}return o}classifyError(e){let n=this.getErrorMessage(e);if(e instanceof X){if(this.isExpiredTokenError(e))return{kind:"expired",message:n,retriable:!1,cause:e};switch(e.code){case v.ResourceExhausted:return{kind:"capacity",message:n,retriable:!0,cause:e};case v.NotFound:return e.message.toLowerCase().includes("session not found")?{kind:"session_not_found",message:n,retriable:!1,cause:e}:{kind:"not_found",message:n,retriable:!1,cause:e};case v.PermissionDenied:case v.Unauthenticated:return{kind:"auth",message:n,retriable:!0,cause:e};default:return{kind:"error",message:n,retriable:!1,cause:e}}}return{kind:"error",message:n,retriable:!1,cause:e}}};an._capWidgetClass=null;var Ne=an;typeof window<"u"&&!window.CAP_CUSTOM_WASM_URL&&(window.CAP_CUSTOM_WASM_URL=new URL("https://cdn.mochabug.com/adapt/web/1.0.1-rc.22/cap_wasm_bg.wasm",window.location.href).href);var Ct=null,Ge=null,ho=new Map;async function Qr(t,e){let n=await t.createChallenge({id:e});return{count:n.count,size:n.size,difficulty:n.difficulty,expires:n.expires?pe(n.expires):new Date,token:n.token,verificationToken:n.verificationToken}}async function Or(t,e,n,o){let r=await t.redeemChallenge({id:e,verificationToken:n,solutions:o});return{token:r.token,expires:r.expires?pe(r.expires):new Date}}typeof window<"u"&&(window.CAP_CUSTOM_FETCH=async(t,e)=>{let n=t.toString();if(n.endsWith("/challenge")){if(!Ct||!Ge)return new Response(JSON.stringify({error:"Cap adapter not initialized"}),{status:500,headers:{"Content-Type":"application/json"}});try{let o=await Qr(Ct,Ge);return ho.set(Ge,o.verificationToken),new Response(JSON.stringify({challenge:{c:o.count,s:o.size,d:o.difficulty},token:o.token,expires:o.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"}})}}if(n.endsWith("/redeem")){if(!Ct||!Ge)return new Response(JSON.stringify({error:"Cap adapter not initialized"}),{status:500,headers:{"Content-Type":"application/json"}});let o=ho.get(Ge);if(!o)return new Response(JSON.stringify({error:"No verification token found - challenge must be created first"}),{status:400,headers:{"Content-Type":"application/json"}});try{let i=((e?.body?JSON.parse(e.body):{}).solutions||[]).map(s=>BigInt(s)),a=await Or(Ct,Ge,o,i);return ho.delete(Ge),new Response(JSON.stringify({success:!0,token:a.token,expires:a.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"}})}}return fetch(t,e)});function Xs(t,e){Ct=t,Ge=e}function Ws(){Ge&&ho.delete(Ge),Ct=null,Ge=null}var Rs=`/* ============================================
894
894
  Mochabug Adapt Cap Widget - Premium Design
895
895
  ============================================ */
896
896