openbird 1.6.0 → 2.0.0

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import"dotenv/config";function al(s,V){return`${new Date().toISOString()} [openb
2
2
  `}var Tt={log(...s){process.stderr.write(al("INFO",s))},warn(...s){process.stderr.write(al("WARN",s))},error(...s){process.stderr.write(al("ERROR",s))},debug(...s){process.env.OPENBIRD_DEBUG==="true"&&process.stderr.write(al("DEBUG",s))}},N=Tt;function kV(s){let V={};if(!s)return V;let e=s.split("; ");for(let l of e){let[t,...o]=l.split("=");t&&o.length>0&&(V[t]=o.join("="))}return V}function p(s){return!s||typeof s!="object"?"":Object.entries(s).map(([V,e])=>`${V}=${e}`).join("; ")}var Nl=class{constructor(){this.cookies={},this.cookieStr=""}prepareAuth(V){this.cookieStr=V,this.cookies=kV(V)}getCookies(){return this.cookies}getCookieString(){return this.cookieStr}},fV=Nl;import{Agent as hR}from"undici";function yt(s){return s instanceof Uint8Array||ArrayBuffer.isView(s)&&s.constructor.name==="Uint8Array"}function fe(s,V=""){if(!Number.isSafeInteger(s)||s<0){let e=V&&`"${V}" `;throw new Error(`${e}expected integer >= 0, got ${s}`)}}function ge(s,V,e=""){let l=yt(s),t=s?.length,o=V!==void 0;if(!l||o&&t!==V){let R=e&&`"${e}" `,A=o?` of length ${V}`:"",c=l?`length=${t}`:`type=${typeof s}`;throw new Error(R+"expected Uint8Array"+A+", got "+c)}return s}function Ke(s,V=!0){if(s.destroyed)throw new Error("Hash instance has been destroyed");if(V&&s.finished)throw new Error("Hash#digest() has already been called")}function nl(s,V){ge(s,void 0,"digestInto() output");let e=V.outputLen;if(s.length<e)throw new Error('"digestInto() output" expected to be of length >='+e)}function KV(s){return new Uint8Array(s.buffer,s.byteOffset,s.byteLength)}function We(s){return new Uint32Array(s.buffer,s.byteOffset,Math.floor(s.byteLength/4))}function me(...s){for(let V=0;V<s.length;V++)s[V].fill(0)}function Me(s,V){return s<<32-V|s>>>V}var MV=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function DV(s){return s<<24&4278190080|s<<8&16711680|s>>>8&65280|s>>>24&255}var HV=MV?s=>s:s=>DV(s);function xt(s){for(let V=0;V<s.length;V++)s[V]=DV(s[V]);return s}var z=MV?s=>s:xt;function Ql(s,V={}){let e=(t,o)=>s(o).update(t).digest(),l=s(void 0);return e.outputLen=l.outputLen,e.blockLen=l.blockLen,e.create=t=>s(t),Object.assign(e,V),Object.freeze(e)}var zV=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var sl=BigInt(4294967295),wV=BigInt(32);function Yl(s,V=!1){return V?{h:Number(s&sl),l:Number(s>>wV&sl)}:{h:Number(s>>wV&sl)|0,l:Number(s&sl)|0}}function Re(s,V,e,l,t){return s=s+V+t|0,l=Me(l^s,16),e=e+l|0,V=Me(V^e,12),{a:s,b:V,c:e,d:l}}function ce(s,V,e,l,t){return s=s+V+t|0,l=Me(l^s,8),e=e+l|0,V=Me(V^e,7),{a:s,b:V,c:e,d:l}}var hl=class{buffer;buffer32;finished=!1;destroyed=!1;length=0;pos=0;blockLen;outputLen;constructor(V,e){fe(V),fe(e),this.blockLen=V,this.outputLen=e,this.buffer=new Uint8Array(V),this.buffer32=We(this.buffer)}update(V){Ke(this),ge(V);let{blockLen:e,buffer:l,buffer32:t}=this,o=V.length,R=V.byteOffset,A=V.buffer;for(let c=0;c<o;){this.pos===e&&(z(t),this.compress(t,0,!1),z(t),this.pos=0);let a=Math.min(e-this.pos,o-c),n=R+c;if(a===e&&!(n%4)&&c+a<o){let h=new Uint32Array(A,n,Math.floor((o-c)/4));z(h);for(let d=0;c+e<o;d+=t.length,c+=e)this.length+=e,this.compress(h,d,!1);z(h);continue}l.set(V.subarray(c,c+a),this.pos),this.pos+=a,this.length+=a,c+=a}return this}digestInto(V){Ke(this),nl(V,this);let{pos:e,buffer32:l}=this;this.finished=!0,me(this.buffer.subarray(e)),z(l),this.compress(l,0,!0),z(l);let t=We(V);this.get().forEach((o,R)=>t[R]=HV(o))}digest(){let{buffer:V,outputLen:e}=this;this.digestInto(V);let l=V.slice(0,e);return this.destroy(),l}_cloneInto(V){let{buffer:e,length:l,finished:t,destroyed:o,outputLen:R,pos:A}=this;return V||=new this.constructor({dkLen:R}),V.set(...this.get()),V.buffer.set(e),V.destroyed=o,V.finished=t,V.length=l,V.pos=A,V.outputLen=R,V}clone(){return this._cloneInto()}};function Jl(s,V,e,l,t,o,R,A,c,a,n,h,d,E,g,X,G,W,m,r){let i=0;for(let Q=0;Q<l;Q++)({a:t,b:c,c:d,d:G}=Re(t,c,d,G,e[V+s[i++]])),{a:t,b:c,c:d,d:G}=ce(t,c,d,G,e[V+s[i++]]),{a:o,b:a,c:E,d:W}=Re(o,a,E,W,e[V+s[i++]]),{a:o,b:a,c:E,d:W}=ce(o,a,E,W,e[V+s[i++]]),{a:R,b:n,c:g,d:m}=Re(R,n,g,m,e[V+s[i++]]),{a:R,b:n,c:g,d:m}=ce(R,n,g,m,e[V+s[i++]]),{a:A,b:h,c:X,d:r}=Re(A,h,X,r,e[V+s[i++]]),{a:A,b:h,c:X,d:r}=ce(A,h,X,r,e[V+s[i++]]),{a:t,b:a,c:g,d:r}=Re(t,a,g,r,e[V+s[i++]]),{a:t,b:a,c:g,d:r}=ce(t,a,g,r,e[V+s[i++]]),{a:o,b:n,c:X,d:G}=Re(o,n,X,G,e[V+s[i++]]),{a:o,b:n,c:X,d:G}=ce(o,n,X,G,e[V+s[i++]]),{a:R,b:h,c:d,d:W}=Re(R,h,d,W,e[V+s[i++]]),{a:R,b:h,c:d,d:W}=ce(R,h,d,W,e[V+s[i++]]),{a:A,b:c,c:E,d:m}=Re(A,c,E,m,e[V+s[i++]]),{a:A,b:c,c:E,d:m}=ce(A,c,E,m,e[V+s[i++]]);return{v0:t,v1:o,v2:R,v3:A,v4:c,v5:a,v6:n,v7:h,v8:d,v9:E,v10:g,v11:X,v12:G,v13:W,v14:m,v15:r}}var Ve={CHUNK_START:1,CHUNK_END:2,PARENT:4,ROOT:8,KEYED_HASH:16,DERIVE_KEY_CONTEXT:32,DERIVE_KEY_MATERIAL:64},Ae=zV.slice(),LV=(()=>{let s=Array.from({length:16},(l,t)=>t),V=l=>[2,6,3,10,7,0,4,13,1,11,12,5,9,14,15,8].map(t=>l[t]),e=[];for(let l=0,t=s;l<7;l++,t=V(t))e.push(...t);return Uint8Array.from(e)})(),Tl=class s extends hl{chunkPos=0;chunksDone=0;flags=0;IV;state;stack=[];posOut=0;bufferOut32=new Uint32Array(16);bufferOut;chunkOut=0;enableXOF=!0;constructor(V={},e=0){super(64,V.dkLen===void 0?32:V.dkLen);let{key:l,context:t}=V,o=t!==void 0;if(l!==void 0){if(o)throw new Error('Only "key" or "context" can be specified at same time');ge(l,32,"key");let R=l.slice();this.IV=We(R),z(this.IV),this.flags=e|Ve.KEYED_HASH}else if(o){ge(t,void 0,"context");let R=t,A=new s({dkLen:32},Ve.DERIVE_KEY_CONTEXT).update(R).digest();this.IV=We(A),z(this.IV),this.flags=e|Ve.DERIVE_KEY_MATERIAL}else this.IV=Ae.slice(),this.flags=e;this.state=this.IV.slice(),this.bufferOut=KV(this.bufferOut32)}get(){return[]}set(){}b2Compress(V,e,l,t=0){let{state:o,pos:R}=this,{h:A,l:c}=Yl(BigInt(V),!0),{v0:a,v1:n,v2:h,v3:d,v4:E,v5:g,v6:X,v7:G,v8:W,v9:m,v10:r,v11:i,v12:Q,v13:Y,v14:T,v15:f}=Jl(LV,t,l,7,o[0],o[1],o[2],o[3],o[4],o[5],o[6],o[7],Ae[0],Ae[1],Ae[2],Ae[3],A,c,R,e);o[0]=a^W,o[1]=n^m,o[2]=h^r,o[3]=d^i,o[4]=E^Q,o[5]=g^Y,o[6]=X^T,o[7]=G^f}compress(V,e=0,l=!1){let t=this.flags;if(this.chunkPos||(t|=Ve.CHUNK_START),(this.chunkPos===15||l)&&(t|=Ve.CHUNK_END),l||(this.pos=this.blockLen),this.b2Compress(this.chunksDone,t,V,e),this.chunkPos+=1,this.chunkPos===16||l){let o=this.state;this.state=this.IV.slice();for(let R,A=this.chunksDone+1;(l||!(A&1))&&(R=this.stack.pop());A>>=1)this.buffer32.set(R,0),this.buffer32.set(o,8),this.pos=this.blockLen,this.b2Compress(0,this.flags|Ve.PARENT,this.buffer32,0),o=this.state,this.state=this.IV.slice();this.chunksDone++,this.chunkPos=0,this.stack.push(o)}this.pos=0}_cloneInto(V){V=super._cloneInto(V);let{IV:e,flags:l,state:t,chunkPos:o,posOut:R,chunkOut:A,stack:c,chunksDone:a}=this;return V.state.set(t.slice()),V.stack=c.map(n=>Uint32Array.from(n)),V.IV.set(e),V.flags=l,V.chunkPos=o,V.chunksDone=a,V.posOut=R,V.chunkOut=A,V.enableXOF=this.enableXOF,V.bufferOut32.set(this.bufferOut32),V}destroy(){this.destroyed=!0,me(this.state,this.buffer32,this.IV,this.bufferOut32),me(...this.stack)}b2CompressOut(){let{state:V,pos:e,flags:l,buffer32:t,bufferOut32:o}=this,{h:R,l:A}=Yl(BigInt(this.chunkOut++));z(t);let{v0:c,v1:a,v2:n,v3:h,v4:d,v5:E,v6:g,v7:X,v8:G,v9:W,v10:m,v11:r,v12:i,v13:Q,v14:Y,v15:T}=Jl(LV,0,t,7,V[0],V[1],V[2],V[3],V[4],V[5],V[6],V[7],Ae[0],Ae[1],Ae[2],Ae[3],A,R,e,l);o[0]=c^G,o[1]=a^W,o[2]=n^m,o[3]=h^r,o[4]=d^i,o[5]=E^Q,o[6]=g^Y,o[7]=X^T,o[8]=V[0]^G,o[9]=V[1]^W,o[10]=V[2]^m,o[11]=V[3]^r,o[12]=V[4]^i,o[13]=V[5]^Q,o[14]=V[6]^Y,o[15]=V[7]^T,z(t),z(o),this.posOut=0}finish(){if(this.finished)return;this.finished=!0,me(this.buffer.subarray(this.pos));let V=this.flags|Ve.ROOT;this.stack.length?(V|=Ve.PARENT,z(this.buffer32),this.compress(this.buffer32,0,!0),z(this.buffer32),this.chunksDone=0,this.pos=this.blockLen):V|=(this.chunkPos?0:Ve.CHUNK_START)|Ve.CHUNK_END,this.flags=V,this.b2CompressOut()}writeInto(V){Ke(this,!1),ge(V),this.finish();let{blockLen:e,bufferOut:l}=this;for(let t=0,o=V.length;t<o;){this.posOut>=e&&this.b2CompressOut();let R=Math.min(e-this.posOut,o-t);V.set(l.subarray(this.posOut,this.posOut+R),t),this.posOut+=R,t+=R}return V}xofInto(V){if(!this.enableXOF)throw new Error("XOF is not possible after digest call");return this.writeInto(V)}xof(V){return fe(V),this.xofInto(new Uint8Array(V))}digestInto(V){if(nl(V,this),this.finished)throw new Error("digest() was already called");return this.enableXOF=!1,this.writeInto(V),this.destroy(),V}digest(){return this.digestInto(new Uint8Array(this.outputLen))}},vV=Ql((s={})=>new Tl(s));function se(s,V){let e=(s&65535)+(V&65535);return(s>>16)+(V>>16)+(e>>16)<<16|e&65535}function kt(s,V){return s<<V|s>>>32-V}function dl(s,V,e,l,t,o){return se(kt(se(se(V,s),se(l,o)),t),e)}function K(s,V,e,l,t,o,R){return dl(V&e|~V&l,s,V,t,o,R)}function M(s,V,e,l,t,o,R){return dl(V&l|e&~l,s,V,t,o,R)}function D(s,V,e,l,t,o,R){return dl(V^e^l,s,V,t,o,R)}function H(s,V,e,l,t,o,R){return dl(e^(V|~l),s,V,t,o,R)}function ft(s,V){s[V>>5]|=128<<V%32,s[14+(V+64>>>9<<4)]=V;let e=1732584193,l=-271733879,t=-1732584194,o=271733878;for(let R=0;R<s.length;R+=16){let A=e,c=l,a=t,n=o;e=K(e,l,t,o,s[R],7,-680876936),o=K(o,e,l,t,s[R+1],12,-389564586),t=K(t,o,e,l,s[R+2],17,606105819),l=K(l,t,o,e,s[R+3],22,-1044525330),e=K(e,l,t,o,s[R+4],7,-176418897),o=K(o,e,l,t,s[R+5],12,1200080426),t=K(t,o,e,l,s[R+6],17,-1473231341),l=K(l,t,o,e,s[R+7],22,-45705983),e=K(e,l,t,o,s[R+8],7,1770035416),o=K(o,e,l,t,s[R+9],12,-1958414417),t=K(t,o,e,l,s[R+10],17,-42063),l=K(l,t,o,e,s[R+11],22,-1990404162),e=K(e,l,t,o,s[R+12],7,1804603682),o=K(o,e,l,t,s[R+13],12,-40341101),t=K(t,o,e,l,s[R+14],17,-1502002290),l=K(l,t,o,e,s[R+15],22,1236535329),e=M(e,l,t,o,s[R+1],5,-165796510),o=M(o,e,l,t,s[R+6],9,-1069501632),t=M(t,o,e,l,s[R+11],14,643717713),l=M(l,t,o,e,s[R],20,-373897302),e=M(e,l,t,o,s[R+5],5,-701558691),o=M(o,e,l,t,s[R+10],9,38016083),t=M(t,o,e,l,s[R+15],14,-660478335),l=M(l,t,o,e,s[R+4],20,-405537848),e=M(e,l,t,o,s[R+9],5,568446438),o=M(o,e,l,t,s[R+14],9,-1019803690),t=M(t,o,e,l,s[R+3],14,-187363961),l=M(l,t,o,e,s[R+8],20,1163531501),e=M(e,l,t,o,s[R+13],5,-1444681467),o=M(o,e,l,t,s[R+2],9,-51403784),t=M(t,o,e,l,s[R+7],14,1735328473),l=M(l,t,o,e,s[R+12],20,-1926607734),e=D(e,l,t,o,s[R+5],4,-378558),o=D(o,e,l,t,s[R+8],11,-2022574463),t=D(t,o,e,l,s[R+11],16,1839030562),l=D(l,t,o,e,s[R+14],23,-35309556),e=D(e,l,t,o,s[R+1],4,-1530992060),o=D(o,e,l,t,s[R+4],11,1272893353),t=D(t,o,e,l,s[R+7],16,-155497632),l=D(l,t,o,e,s[R+10],23,-1094730640),e=D(e,l,t,o,s[R+13],4,681279174),o=D(o,e,l,t,s[R],11,-358537222),t=D(t,o,e,l,s[R+3],16,-722521979),l=D(l,t,o,e,s[R+6],23,76029189),e=D(e,l,t,o,s[R+9],4,-640364487),o=D(o,e,l,t,s[R+12],11,-421815835),t=D(t,o,e,l,s[R+15],16,530742520),l=D(l,t,o,e,s[R+2],23,-995338651),e=H(e,l,t,o,s[R],6,-198630844),o=H(o,e,l,t,s[R+7],10,1126891415),t=H(t,o,e,l,s[R+14],15,-1416354905),l=H(l,t,o,e,s[R+5],21,-57434055),e=H(e,l,t,o,s[R+12],6,1700485571),o=H(o,e,l,t,s[R+3],10,-1894986606),t=H(t,o,e,l,s[R+10],15,-1051523),l=H(l,t,o,e,s[R+1],21,-2054922799),e=H(e,l,t,o,s[R+8],6,1873313359),o=H(o,e,l,t,s[R+15],10,-30611744),t=H(t,o,e,l,s[R+6],15,-1560198380),l=H(l,t,o,e,s[R+13],21,1309151649),e=H(e,l,t,o,s[R+4],6,-145523070),o=H(o,e,l,t,s[R+11],10,-1120210379),t=H(t,o,e,l,s[R+2],15,718787259),l=H(l,t,o,e,s[R+9],21,-343485551),e=se(e,A),l=se(l,c),t=se(t,a),o=se(o,n)}return[e,l,t,o]}function Kt(s){let V="";for(let e=0;e<s.length*32;e+=8)V+=String.fromCharCode(s[e>>5]>>>e%32&255);return V}function Mt(s){let V=[];V[(s.length>>2)-1]=void 0;for(let e=0;e<V.length;e+=1)V[e]=0;for(let e=0;e<s.length*8;e+=8)V[e>>5]|=(s.charCodeAt(e/8)&255)<<e%32;return V}function Dt(s){let V="0123456789abcdef",e="";for(let l=0;l<s.length;l+=1){let t=s.charCodeAt(l);e+=V.charAt(t>>>4&15)+V.charAt(t&15)}return e}function Ht(s){return unescape(encodeURIComponent(s))}function zt(s){return Kt(ft(Mt(s),s.length*8))}function wt(s){return Dt(zt(Ht(s)))}function PV(s){return wt(s)}function ee(){return(Math.random().toString(36)+"0000000000").substring(2,12)}function jV(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,s=>{let V=Math.random()*16|0;return(s==="x"?V:V&3|8).toString(16)})}function _(){let s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",e="";for(let l=0;l<10;l++)e+=s.charAt(Math.floor(Math.random()*s.length));return e}var yl=class{static buildGatewayHeader(V,e={}){return{accept:"*/*","content-type":"application/x-protobuf",locale:"zh-CN",referer:"","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36","x-appid":"161471","x-command":String(V),"x-command-version":"7.61.0","x-lgw-os-type":"3","x-lgw-terminal-type":"2","x-lgw-req-sdk-type":"220","x-lsc-bizid":"1","x-lsc-version":"1","x-request-id":ee(),"x-source":"web","x-web-version":"7.61.0",...e}}static buildCommonHeader(){return{Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","Cache-Control":"max-age=0",Connection:"keep-alive",DNT:"1",Priority:"u=0, i","Sec-Ch-Ua":'"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',"Sec-Ch-Ua-Mobile":"?0","Sec-Ch-Ua-Platform":'"Windows"',"Sec-Fetch-Dest":"document","Sec-Fetch-Mode":"navigate","Sec-Fetch-Site":"none","Sec-Fetch-User":"?1","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0"}}static buildGetCsrfTokenHeader(){return{accept:"application/json, text/plain, */*","accept-language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","cache-control":"no-cache","content-length":"0",origin:"https://open-dev.feishu.cn",priority:"u=1, i",referer:"https://open-dev.feishu.cn/","sec-ch-ua":'"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0","x-api-version":"1.0.8","x-app-id":"12","x-device-info":"platform=websdk","x-lgw-os-type":"1","x-lgw-terminal-type":"2","x-request-id":ee(),"x-terminal-type":"2"}}static buildGetUserInfoHeader(V){return{accept:"application/json, text/plain, */*","accept-language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","cache-control":"no-cache",origin:"https://open-dev.feishu.cn",priority:"u=1, i",referer:"https://open-dev.feishu.cn/","sec-ch-ua":'"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0","x-api-version":"1.0.8","x-app-id":"12","x-csrf-token":V,"x-device-info":"platform=websdk","x-lgw-os-type":"1","x-lgw-terminal-type":"2","x-locale":"zh-CN","x-request-id":jV(),"x-terminal-type":"2"}}static buildSendMsgHeader(){return{accept:"*/*","accept-language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","content-type":"application/x-protobuf",locale:"zh_CN",origin:"https://open-dev.feishu.cn",priority:"u=1, i",referer:"https://open-dev.feishu.cn/","sec-ch-ua":'"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0","x-appid":"161471","x-command":"5","x-command-version":"5.7.0","x-lgw-os-type":"1","x-lgw-terminal-type":"2","x-request-id":ee(),"x-source":"web","x-web-version":"3.9.32"}}static buildCreateChatHeader(){return{accept:"*/*","accept-language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","content-type":"application/x-protobuf",locale:"zh_CN",origin:"https://open-dev.feishu.cn",priority:"u=1, i",referer:"https://open-dev.feishu.cn/","sec-ch-ua":'"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0","x-appid":"161471","x-command":"13","x-command-version":"2.7.0","x-lgw-os-type":"1","x-lgw-terminal-type":"2","x-request-id":ee(),"x-source":"web","x-web-version":"3.9.32"}}static buildCreateGroupHeader(){return this.buildCreateChatHeader()}static buildSearchHeader(){return{accept:"*/*","accept-encoding":"gzip, deflate, br, zstd","accept-language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","content-type":"application/x-protobuf",locale:"zh-CN",origin:"https://open-dev.feishu.cn",priority:"u=1, i",referer:"https://open-dev.feishu.cn/","sec-ch-ua":'"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"Windows"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0","x-appid":"161471","x-command":"11021","x-command-version":"2.7.0","x-lgw-os-type":"1","x-lgw-terminal-type":"2","x-lgw-req-sdk-type":"220","x-request-id":ee(),"x-source":"web","x-web-version":"3.9.32"}}static buildReceiveMsgHeader(){return{accept:"application/json, text/plain, */*","accept-language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6","content-type":"application/x-protobuf",locale:"zh-CN",origin:"https://gcn8oibd0q4p.feishu.cn",priority:"u=1, i",referer:"https://gcn8oibd0q4p.feishu.cn/","sec-ch-ua":'"Not(A:Brand";v="8", "Chromium";v="144", "Google Chrome";v="144"',"sec-ch-ua-mobile":"?0","sec-ch-ua-platform":'"macOS"',"sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36","x-appid":"161471","x-command":"11106","x-command-version":"7.60.0","x-lgw-os-type":"3","x-lgw-terminal-type":"2","x-lgw-req-sdk-type":"2","x-lsc-bizid":"1","x-lsc-terminal":"web","x-lsc-version":"1","x-request-id":ee(),"x-source":"web","x-web-version":"7.60.0"}}static buildGetUserProfileHeader(){return this.buildGatewayHeader(5031)}static buildCalendarRsvpHeader(){return this.buildGatewayHeader(1020002)}static buildCalendarEventDetailHeader(){return this.buildGatewayHeader(1010048)}static buildGetBusyUserHeader(){return this.buildGatewayHeader(1010020)}static buildCreateCalendarEventHeader(){return this.buildGatewayHeader(1002003)}static buildDeleteCalendarEventHeader(){return this.buildGatewayHeader(1002005)}static buildUpdateCalendarEventHeader(){return this.buildGatewayHeader(1002004)}static buildWebListCalendarEventsHeader(){return this.buildGatewayHeader(1002001)}static buildCreateMeetingMinuteHeader(){return this.buildGatewayHeader(1010028)}static buildTransferCalendarEventHeader(){return this.buildGatewayHeader(1010022)}static buildWebShareCalendarEventHeader(){return this.buildGatewayHeader(1002012)}static buildUpgradeToMeetingHeader(){return this.buildGatewayHeader(1010014)}static buildSearchGuestsHeader(){return this.buildGatewayHeader(1000014)}static buildSearchMeetingRoomsHeader(){return this.buildGatewayHeader(1000016)}static buildPullBuildingsHeader(){return this.buildGatewayHeader(1010009)}static buildPullMeetingRoomsInBuildingHeader(){return this.buildGatewayHeader(1010010)}static buildMultiCalendarSearchHeader(){return this.buildGatewayHeader(1000017)}static buildGetPlaceTipsHeader(){return this.buildGatewayHeader(1000037)}static buildPullTenantsByIdsHeader(){return this.buildGatewayHeader(300)}static buildGetUserInfoByIdHeader(){return this.buildGatewayHeader(46)}static buildSetUserSignatureHeader(){return{accept:"application/json, text/plain, */*","content-type":"text/plain;charset=UTF-8",locale:"zh-CN",referer:"","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36","x-lgw-req-sdk-type":"220","x-request-id":ee()}}static buildGetUserProfileCardHeader(){return this.buildGatewayHeader(5017)}static buildCmd77Header(){return this.buildGatewayHeader(77)}static buildPullSmartReplyResourceHeader(){return this.buildGatewayHeader(1105047)}static buildGetChatMetaHeader(){return this.buildGatewayHeader(64)}static buildEmojiReactionHeader(){return this.buildGatewayHeader(25)}static buildRemoveEmojiReactionHeader(){return this.buildGatewayHeader(26)}static buildGetChatHistoryHeader(){return this.buildGatewayHeader(43)}static buildMarkChatReadHeader(){return this.buildGatewayHeader(201)}static buildPinSessionHeader(){return this.buildGatewayHeader(1100)}static buildUnpinSessionHeader(){return this.buildGatewayHeader(1101)}static buildMarkSessionHeader(){return this.buildGatewayHeader(1027)}static buildGetUserRelationHeader(){return this.buildGatewayHeader(406)}static buildGetUserPresenceHeader(){return this.buildGatewayHeader(5093)}static buildGetConfigHeader(){return this.buildGatewayHeader(7026)}static buildGetFeatureFlagsHeader(){return this.buildGatewayHeader(1011741)}static buildFileUploadHeader(V="application/x-protobuf"){return{"content-type":V,locale:"zh-CN",referer:"","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36","x-appid":"161471","x-lgw-os-type":"3","x-lgw-terminal-type":"2","x-lsc-bizid":"1","x-lsc-version":"1","x-source":"web","x-web-version":"7.61.0"}}static buildUploadCreateHeader(){return this.buildFileUploadHeader("application/x-protobuf")}static buildUploadPartHeader(){return this.buildFileUploadHeader("application/octet-stream")}static buildSaveContactAliasHeader(){return this.buildGatewayHeader(5036)}static buildContactInfoSyncHeader(){return this.buildGatewayHeader(1100319)}static buildCreateThreadHeader(){return this.buildGatewayHeader(8111)}static buildPutTransmitMessageHeader(){return this.buildGatewayHeader(51)}static buildPutUrgentHeader(){return this.buildGatewayHeader(3e4)}static buildPullUrgentAckStatusHeader(){return this.buildGatewayHeader(30005)}static buildPutScheduleMessageHeader(){return this.buildGatewayHeader(900030)}static buildPatchScheduleMessageHeader(){return this.buildGatewayHeader(900034)}static buildPullScheduleMessageByIdsHeader(){return this.buildGatewayHeader(900032)}static buildPullChatScheduleMessagesHeader(){return this.buildGatewayHeader(900031)}static buildPatchGroupChatHeader(){return this.buildGatewayHeader(72)}static buildMgetEventsWithIdsHeader(){return this.buildGatewayHeader(1002006)}static buildGetBaikeCardHeader(){return this.buildGatewayHeader(4303)}static buildGetBaikeRecommendDocsHeader(){return this.buildGatewayHeader(4306)}static generateRequestId(){return ee()}},I=yl;var Lt="https://login.feishu.cn/suite/passport/frontier_ticket/",xl=class{static async buildReceiveMsgParam(V){let e=I.buildCommonHeader();e.Cookie=Object.entries(V.cookies).map(([n,h])=>`${n}=${h}`).join("; ");let t=V.cookies.passport_web_did,o="5f45da0e6c7a17dcba80494ef0ab9b21";N.log("[Params] Using appKey:",o);let R=`2${o}${t}f8a69f1719916z`,A=PV(R),c=ee(),a="";try{let n=new URLSearchParams({local_device_id:t}),h=`${Lt}?${n}`;N.log("[Params] Fetching ticket...");let d=await fetch(h,{method:"GET",headers:e});d.ok?(a=(await d.json()).ticket||"",N.log("[Params] Ticket fetched successfully")):N.warn("[Params] Ticket fetch failed:",d.status)}catch(n){N.error("[Params] Error fetching ticket:",n.message)}return{access_key:A,aid:"1",ticket:a,device_id:t,fpid:"2",accept_encoding:"gzip",request_id:c}}static buildGetUserInfoParam(){return{app_id:"12",_t:String(Date.now())}}static buildGetCsrfTokenParam(){return{_t:String(Date.now())}}},De=xl;import GV from"crypto";import{fileDesc as vt,messageDesc as Pt}from"@bufbuild/protobuf/codegenv2";var jt=vt("CgtmcmFtZS5wcm90bxIFZnJhbWUi4QEKBUZyYW1lEg0KBXNlcWlkGAEgAigEEg0KBWxvZ2lkGAIgAigEEg8KB3NlcnZpY2UYAyACKAUSDgoGbWV0aG9kGAQgAigFEisKB2hlYWRlcnMYBSADKAsyGi5mcmFtZS5GcmFtZS5FeHRlbmRlZEVudHJ5EhgKEHBheWxvYWRfZW5jb2RpbmcYBiABKAkSFAoMcGF5bG9hZF90eXBlGAcgASgJEg8KB3BheWxvYWQYCCABKAwaKwoNRXh0ZW5kZWRFbnRyeRILCgNrZXkYASACKAkSDQoFdmFsdWUYAiACKAlCSQoWY29tLnNzLmFuZHJvaWQubGFyay5wYkgDWi1jb2RlLmJ5dGVkLm9yZy9sYXJrL2ltLXByb3RvYnVmL2ltcHJvdG8vZnJhbWU"),He=Pt(jt,0);import{enumDesc as Qc,fileDesc as qt,messageDesc as $t,serviceDesc as Yc,tsEnum as Jc}from"@bufbuild/protobuf/codegenv2";import{enumDesc as Bc,extDesc as Cc,fileDesc as Ot,messageDesc as uc,tsEnum as ic}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_descriptor as _t}from"@bufbuild/protobuf/wkt";var re=Ot("ChBhbm5vdGF0aW9uLnByb3RvEgphbm5vdGF0aW9uIkEKCk9wdGlvbnNFeHQSDQoFc2VyZGUYASABKAgSDAoEaXRlchgCIAEoCBIWCg5jb25zdF9wYXJhbV90eRgDIAEoCCIpCgVEZWJ1ZxITCgh0cnVuY2F0ZRgBIAEoDToBMhILCgNsZW4YAiABKAgiGQoFU2VyZGUSEAoIZGVmYXVsdF8YASABKAgifgoEVGVzdBITCgV0ZXN0MRgBIAEoCEIEirUYABIVCgV0ZXN0MhgCIAEoCEIGirUYAhABEhUKBXRlc3QzGAMgASgIQgaKtRgCCAoSEwoFdGVzdDQYBCABKAhCBIq1GAASFQoFdGVzdDYYBSABKAhCBIq1GABIAEIHCgV0ZXN0NSKhAQoVTWVzc2FnZU9wdGlvbnNFeHREZW1vElAKCmVudW1fZmllbGQYASACKA4yNC5hbm5vdGF0aW9uLk1lc3NhZ2VPcHRpb25zRXh0RGVtby5FbnVtT3B0aW9uc0V4dERlbW9CBpK1GAIIASIuChJFbnVtT3B0aW9uc0V4dERlbW8SBQoBQRABEgUKAUIQAhoKkrUYBggBEAEYAToGirUYAggBOmIKD21lc3NhZ2Vfb3B0aW9ucxIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjRhgMgASgLMhYuYW5ub3RhdGlvbi5PcHRpb25zRXh0Ug5tZXNzYWdlT3B0aW9uczpZCgxlbnVtX29wdGlvbnMSHC5nb29nbGUucHJvdG9idWYuRW51bU9wdGlvbnMY0oYDIAEoCzIWLmFubm90YXRpb24uT3B0aW9uc0V4dFILZW51bU9wdGlvbnM6SAoFZGVidWcSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGNGGAyABKAsyES5hbm5vdGF0aW9uLkRlYnVnUgVkZWJ1ZzpICgVzZXJkZRIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMY0oYDIAEoCzIRLmFubm90YXRpb24uU2VyZGVSBXNlcmRlQkwKFmNvbS5zcy5hbmRyb2lkLmxhcmsucGJaMmNvZGUuYnl0ZWQub3JnL2xhcmsvaW0tcHJvdG9idWYvaW1wcm90by9hbm5vdGF0aW9u",[_t]);var kl=qt("Cg1pbXByb3RvLnByb3RvEgdpbXByb3RvIiYKClBpcGVFbnRpdHkSDAoEdHlwZRgBIAIoCRIKCgJpZBgDIAEoAyIqCgxWZXJzaW9uUmFuZ2USDQoFc3RhcnQYASACKAkSCwoDZW5kGAIgAigJIpEBChFDbGllbnRBY2tSZXNwb25zZRJJCgthY3Rpb25fdHlwZRgBIAEoDjIlLmltcHJvdG8uQ2xpZW50QWNrUmVzcG9uc2UuQWN0aW9uVHlwZToNQmVmb3JlUGVyc2lzdCIxCgpBY3Rpb25UeXBlEhEKDUJlZm9yZVBlcnNpc3QQABIQCgxBZnRlclBlcnNpc3QQASLPAwoGUGFja2V0EgsKA3NpZBgBIAEoCRIvCgxwYXlsb2FkX3R5cGUYAiACKA4yFC5pbXByb3RvLlBheWxvYWRUeXBlOgNQQjISHQoDY21kGAMgAigOMhAuaW1wcm90by5Db21tYW5kEhMKBnN0YXR1cxgEIAEoDToDMjAwEg8KB3BheWxvYWQYBSABKAwSCwoDY2lkGAYgASgJEigKC3BpcGVfZW50aXR5GAcgASgLMhMuaW1wcm90by5QaXBlRW50aXR5EjgKEHZlcnNpb25fcGF5bG9hZHMYCCADKAsyHi5pbXByb3RvLlBhY2tldC5WZXJzaW9uUGF5bG9hZBIqCg1waXBlX2VudGl0aWVzGAkgAygLMhMuaW1wcm90by5QaXBlRW50aXR5EhsKE3dhaXRfcmV0cnlfaW50ZXJ2YWwYCiABKA0SDwoHY29tbWFuZBgLIAEoBRIOCgZjdXJzb3IYDCABKAQSFgoOY29tcGFjdGVkX3NpZHMYDSADKAMaTwoOVmVyc2lvblBheWxvYWQSLAoNdmVyc2lvbl9yYW5nZRgBIAIoCzIVLmltcHJvdG8uVmVyc2lvblJhbmdlEg8KB3BheWxvYWQYAiACKAwicgoaUHVzaEJhY2tncm91bmROb3RpZmljYXRpb24SDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAEoCRINCgVleHRyYRgDIAEoCRITCgtjb2xsYXBzZV9pZBgEIAEoCRIQCghtc2dfdHlwZRgFIAEoCSJgCh1QdXNoQmFubmVyTm90aWZpY2F0aW9uUmVxdWVzdBINCgV0aXRsZRgBIAEoCRIQCghzdWJ0aXRsZRgCIAEoCRIPCgdjb250ZW50GAMgASgJEg0KBWV4dHJhGAQgASgJIp0BChlQdWxsUGFja2V0c0J5U2VxSWRSZXF1ZXN0Eg0KA3NpZBgBIAIoCToAEhEKBWNvdW50GAIgAigNOgIyMBIPCgd2ZXJzaW9uGAMgASgNEiEKEmZyb250aWVyX2Rvd25ncmFkZRgEIAEoCDoFZmFsc2USFQoNYmF0Y2hfdW5pcV9pZBgFIAEoCRITCgtiYXRjaF9pbmRleBgGIAEoAyK6AQoaUHVsbFBhY2tldHNCeVNlcUlkUmVzcG9uc2USFwoIaGFzX21vcmUYASACKAg6BWZhbHNlEiAKB3BhY2tldHMYAiADKAsyDy5pbXByb3RvLlBhY2tldBIfChdsYXN0X3BhY2tldF9jcmVhdGVfdGltZRgDIAEoAxIQCghsYXN0X3NpZBgEIAEoCRIVCg1yZXNwb25zZV90aW1lGAUgASgDEhcKD21heF9iYXRjaF9pbmRleBgGIAEoAyIaCgtTeW5jUmVxdWVzdBILCgNzaWQYASACKAMiOwoMU3luY1Jlc3BvbnNlEgwKBHNpZHMYASADKAMSEAoIbGFzdF9zaWQYAiACKAMSCwoDdHRsGAMgAigNIigKGFB1bGxQYWNrZXRzQnlTaWRzUmVxdWVzdBIMCgRzaWRzGAEgAygJIp4BChlQdWxsUGFja2V0c0J5U2lkc1Jlc3BvbnNlEkAKB3BhY2tldHMYASADKAsyLy5pbXByb3RvLlB1bGxQYWNrZXRzQnlTaWRzUmVzcG9uc2UuUGFja2V0c0VudHJ5Gj8KDFBhY2tldHNFbnRyeRILCgNrZXkYASABKAkSHgoFdmFsdWUYAiABKAsyDy5pbXByb3RvLlBhY2tldDoCOAEiLQoaUHJvY2Vzc011bHRpUGFja2V0c1JlcXVlc3QSDwoHcGFja2V0cxgBIAMoDCLdAQobUHJvY2Vzc011bHRpUGFja2V0c1Jlc3BvbnNlEg8KB3Jlc3VsdHMYASADKAwSVQoRcmVzdWx0c19leHRlbnNpb24YAiADKAsyOi5pbXByb3RvLlByb2Nlc3NNdWx0aVBhY2tldHNSZXNwb25zZS5SZXN1bHRzRXh0ZW5zaW9uRW50cnkaVgoVUmVzdWx0c0V4dGVuc2lvbkVudHJ5EgsKA2tleRgBIAEoBRIsCgV2YWx1ZRgCIAEoCzIdLmltcHJvdG8uTXVsdGlQYWNrZXRSZXN1bHRFeHQ6AjgBIjEKFE11bHRpUGFja2V0UmVzdWx0RXh0EhkKC3N0YXR1c19jb2RlGAEgASgFQgSKtRgAIkQKFFByaW9yaXR5QmF0Y2hSZXF1ZXN0EhQKDG1haW5fcmVxdWVzdBgBIAIoDBIWCg5vdGhlcl9yZXF1ZXN0cxgCIAMoDCI8ChJSZXNwV2l0aFN0YXR1c0NvZGUSEwoLc3RhdHVzX2NvZGUYASACKAUSEQoJcmVzcF9ib2R5GAIgASgMIlwKFVByaW9yaXR5QmF0Y2hSZXNwb25zZRIRCgltYWluX3Jlc3AYASACKAwSMAoLb3RoZXJfcmVzcHMYAiADKAsyGy5pbXByb3RvLlJlc3BXaXRoU3RhdHVzQ29kZSKMAQoRUHVzaEFjdGlvblJlcXVlc3QSRgoPdGhyb3R0bGVfYWN0aW9uGAEgASgOMi0uaW1wcm90by5QdXNoQWN0aW9uUmVxdWVzdC5UaHJvdHRsZUFjdGlvblR5cGUiLwoSVGhyb3R0bGVBY3Rpb25UeXBlEgwKCFRocm90dGxlEAASCwoHUmVsZWFzZRABIqoBChJQdXNoQWN0aW9uUmVzcG9uc2USRwoPdGhyb3R0bGVfcmVzdWx0GAEgASgOMi4uaW1wcm90by5QdXNoQWN0aW9uUmVzcG9uc2UuVGhyb3R0bGVSZXN1bHRUeXBlIksKElRocm90dGxlUmVzdWx0VHlwZRILCgdTdWNjZXNzEAASFAoQQWxyZWFkeVN0cm9uZ2VzdBABEhIKDkFscmVhZHlXZWFrZXN0EAIiiAEKIlJlZ2lzdGVyQ3Jvc3NUZW5hbnRVc2VySW5mb1JlcXVlc3QSMQoVYWxsb3dfcHVzaF91c2VyX2luZm9zGAEgAygLMhIuaW1wcm90by5Vc2VySW5mb3MSLwoTYWxsX3B1c2hfdXNlcl9pbmZvcxgCIAMoCzISLmltcHJvdG8uVXNlckluZm9zIiUKI1JlZ2lzdGVyQ3Jvc3NUZW5hbnRVc2VySW5mb1Jlc3BvbnNlIkQKCVVzZXJJbmZvcxIOCgZVc2VySUQYASACKAkSFQoNRGV2aWNlTG9naW5JRBgCIAEoCRIQCghEZXZpY2VJRBgDIAEoCSKXAwoeUHV0SU9TTGl2ZUFjdGl2aXR5VG9rZW5SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEkUKCnRva2VuX3R5cGUYAiACKA4yMS5pbXByb3RvLlB1dElPU0xpdmVBY3Rpdml0eVRva2VuUmVxdWVzdC5Ub2tlblR5cGUSDwoHY2hhbm5lbBgDIAEoCRJBCghiaXpfdHlwZRgEIAEoDjIvLmltcHJvdG8uUHV0SU9TTGl2ZUFjdGl2aXR5VG9rZW5SZXF1ZXN0LkJpelR5cGUSGQoRdXBkYXRlX3Rva2VuX3V1aWQYBSABKAkSJQoWaXNfZGVsZXRlX3VwZGF0ZV90b2tlbhgGIAEoCDoFZmFsc2UiUQoJVG9rZW5UeXBlEgsKB1VOS05PV04QABIaChZUT0tFTl9UWVBFX1NUQVJUX1RPS0VOEAESGwoXVE9LRU5fVFlQRV9VUERBVEVfVE9LRU4QAiI2CgdCaXpUeXBlEhQKEEJJWl9UWVBFX1VOS05PV04QABIVChFCSVpfVFlQRV9DQUxFTkRBUhABIiEKH1B1dElPU0xpdmVBY3Rpdml0eVRva2VuUmVzcG9uc2Uql6MFCgdDb21tYW5kEgcKA0FDSxABEgsKB0NPTk5FQ1QQAhIOCgpESVNDT05ORUNUEAMSCAoEUElORxAEEg8KC1BVVF9NRVNTQUdFEAUSEQoNUFVTSF9NRVNTQUdFUxAGEhYKElBVTExfQ0hBVF9NRVNTQUdFUxAHEhgKFFBVTExfTUVTU0FHRVNfQllfSURTEAgSEgoOREVMRVRFX01FU1NBR0UQCRIbChdQVUxMX01FU1NBR0VfUkVBRF9TVEFURRAMEgwKCFBVVF9DSEFUEA0SDgoKUFVTSF9DSEFUUxASEg4KClBVU0hfVVNFUlMQFRIMCghQVVRfVVNFUhAWEhgKFFBVTExfTUVTU0FHRV9SRVBMSUVTEBcSEgoOUFVMTF9SRUFDVElPTlMQGBIQCgxQVVRfUkVBQ1RJT04QGRITCg9ERUxFVEVfUkVBQ1RJT04QGhISCg5QVVNIX1JFQUNUSU9OUxAbEhEKDVBBVENIX01FU1NBR0UQHBIUChBTRVJWRVJfRElTQ09OTkVUEB4SDQoJUFVUX0lNQUdFEB8SEAoMU1lOQ19QQUNLRVRTECASFQoRUFVMTF9SRUNFTlRfQ0hBVFMQIRIRCg1QVUxMX0NPTlRBQ1RTECUSDQoJUFVMTF9CT1RTECYSGAoUUFVMTF9VUERBVEVfQ0hBVFRFUlMQJxIVChFQVVRfUkVBRF9NRVNTQUdFUxAoEhsKF1BVU0hfTUVTU0FHRV9SRUFEX0NPVU5UECkSHgoaUFVMTF9NRVNTQUdFU19CWV9QT1NJVElPTlMQKxIWChJQVUxMX0NIQVRfQ0hBVFRFUlMQLBIXChNERUxFVEVfQ0hBVF9DSEFUVEVSEC0SGAoUUFVMTF9DSEFUVEVSU19CWV9JRFMQLhIUChBQVVRfQ0hBVF9DSEFUVEVSEC8SFgoSUFVTSF9DSEFUX0NIQVRURVJTEDASGgoWUFVTSF9DSEFUX01VVEFCTEVfSU5GTxAxEhEKDVBVVF9QMlBfQ0hBVFMQMhIYChRQVVRfVFJBTlNNSVRfTUVTU0FHRRAzEhQKEFBVVF9UUkFOU01JVF9PTkUQNBIXChNCQVRDSF9DT1BZX01FU1NBR0VTEDUSHwobQkFUQ0hfUFVUX1AyUF9DaGF0X01FU1NBR0VTEDYSIAocRklMRV9VUERBVEVfTEFOX1RSQU5TX1NUQVRVUxA5Eh8KG0ZJTEVfVVBEQVRFX1RPX09GRkxJTkVfTU9ERRA4Eh8KG1BVTExfTUVTU0FHRV9UUkFOU01JVF9DSEFJThA3Eh8KG1BVTExfTUVTU0FHRV9JRF9CWV9QT1NJVElPThA6EhgKFFBVVF9TSEFSRV9BU19NRVNTQUdFEDsSFgoSUEFUQ0hfQ0hBVF9TRVRUSU5HEDwSFQoRUFVTSF9DSEFUX1NFVFRJTkcQPRIWChJQVUxMX0NIQVRfU0VUVElOR1MQPhIaChZQVUxMX0FMTF9DSEFUX1NFVFRJTkdTED8SFQoRUFVMTF9DSEFUU19CWV9JRFMQQBIXChNQVVNIX0NIQVRURVJfUkVTSUdOEEYSHwobUFVMTF9DSEFUVEVSU19SRVNJR05fU1RBVFVTEEcSFAoQUEFUQ0hfR1JPVVBfQ0hBVBBIEh4KGlBVTExfTUVTU0FHRV9NRV9SRUFEX1NUQVRFEEkSIQodUFVTSF9HUk9VUF9NRVNTQUdFX1JFQURfU1RBVEUQShIPCgtQVUxMX1RIUkVBRBBaEhsKF1BVU0hfVEhSRUFEX1JFUExZX0NPVU5UEFwSFwoTUFVMTF9USFJFQURfUkVQTElFUxBdEhkKFVBVTExfVEhSRUFEX1JFQUNUSU9OUxBeEhEKDVBVU0hfQ0hBVFRFUlMQXxIeChpQVUxMX1VOUkVBRF9BVF9NRVNTQUdFX0lEUxBgEikKJVBVTExfVU5SRUFEX1NQRUNJQUxfRk9DVVNfTUVTU0FHRV9JRFMQYxIdChlQVUxMX0RFUEFSVE1FTlRfU1RSVUNUVVJFEFASIgoeUFVMTF9GVUxMX0RFUEFSVE1FTlRfU1RSVUNUVVJFEFESIAocUFVMTF9TVUJPUkRJTkFURV9ERVBBUlRNRU5UUxBTEiQKIFBVTExfVU5GT0xEX0RFUEFSVE1FTlRfU1RSVUNUVVJFEFQSGwoXUFVMTF9NQU5BR0VEX0RFUEFSVE1FTlQQVRIXChNQVVRfREVQQVJUTUVOVF9DSEFUEFYSFAoQUFVMTF9HUk9VUF9DSEFUUxBSEhoKFlBVTExfV0FOVEVEX0FUX0NIQVRURVIQSxIZChVQUk9DRVNTX01VTFRJX1BBQ0tFVFMQTRIYChRERUxFVEVfR1JPVVBfTUVTU0FHRRBOEhsKF1BVTExfTUVTU0FHRV9SRUFEX1VTRVJTEE8SHQoZUFVMTF9NRVNTQUdFX1VOUkVBRF9VU0VSUxBXEiEKHU5PX1RSQUNFX1JFTU9WRV9NRVNTQUdFX0JZX0lEEGESIAocUFVTSF9NRVNTQUdFX05PX1RSQUNFX1JFTU9WRRBiEhAKDFBVVF9TVElDS0VSUxBkEhMKD0RFTEVURV9TVElDS0VSUxBlEhIKDlBBVENIX1NUSUNLRVJTEGYSEQoNUFVMTF9TVElDS0VSUxBnEhEKDVBVU0hfU1RJQ0tFUlMQaBIZChVQQVRDSF9DSEFUVEVSX1BST0ZJTEUQaRIiCh1QVVNIX01VTFRJX1RIUkVBRF9SRVBMWV9DT1VOVBCiAhIhChxQVVNIX01VTFRJX0NIQVRfTVVUQUJMRV9JTkZPEKMCEigKI1BVU0hfTVVMVElfR1JPVVBfTUVTU0FHRV9SRUFEX1NUQVRFEKUCEhwKF1BVTExfU1RJQ0tFUl9TRVRTX1NUT1JFEJwYEhYKEVBVTExfU1RJQ0tFUl9TRVRTEJ0YEhwKF1BVTExfU1RJQ0tFUl9TRVRTX0JZX0lEEJ4YEhUKEFBVVF9TVElDS0VSX1NFVFMQnxgSFwoSUEFUQ0hfU1RJQ0tFUl9TRVRTEKAYEhgKE0RFTEVURV9TVElDS0VSX1NFVFMQoRgSFgoRUFVTSF9TVElDS0VSX1NFVFMQohgSGgoVUFVMTF9TVElDS0VSX1NFVF9DQVJEEKMYEhoKFVBVTExfU1RJQ0tFUl9TRVRTX1RBQhCkGBIRCg1QQVRDSF9DSEFUVEVSEGoSGwoXUFVUX1RSQU5TTEFURV9GRUVEQkFDS1MQbBIWChJUUkFOU0xBVEVfTUVTU0FHRVMQaxIYChRQVUxMX1RSQU5TTEFURV9JTkZPUxBtEiAKHFBVU0hfVFJBTlNMQVRFX1NUQVRFU19OT1RJQ0UQbhIcChhQVUxMX1RSQU5TTEFURV9MQU5HVUFHRVMQbxIcChhQQVRDSF9UUkFOU0xBVEVfTEFOR1VBR0UQcBIjCh9QVVNIX1RSQU5TTEFURV9MQU5HVUFHRVNfTk9USUNFEHESIQodUEFUQ0hfTEFOR1VBR0VTX0NPTkZJR1VSQVRJT04QchInCiNQVVNIX0xBTkdVQUdFU19DT05GSUdVUkFUSU9OX05PVElDRRBzEiMKH0RJU0FCTEVfQVVUT19UUkFOU0xBVEVfTEFOR1VBR0UQdBIvCitQVVNIX0RJU0FCTEVfQVVUT19UUkFOU0xBVEVfTEFOR1VBR0VfTk9USUNFEHUSMgouUFVTSF9NRVNTQUdFX0ZJUlNUX1RSQU5TTEFURURfVE9fU0VOREVSX05PVElDRRB2EiAKHFBVTExfQVVUT19UUkFOU0xBVEVfR1VJREFOQ0UQdxIgChxQVUxMX01FU1NBR0VfVFJBTlNMQVRFX0lORk9TEHgSJgoiUEFUQ0hfQVVUT19UUkFOU0xBVEVfR0xPQkFMX1NXSVRDSBB5EiwKKFBVU0hfQVVUT19UUkFOU0xBVEVfR0xPQkFMX1NXSVRDSF9OT1RJQ0UQehIkCiBQQVRDSF9BVVRPX1RSQU5TTEFURV9DSEFUX1NXSVRDSBB7EioKJlBVU0hfQVVUT19UUkFOU0xBVEVfQ0hBVF9TV0lUQ0hfTk9USUNFEHwSIwofUFVMTF9BVVRPX1RSQU5TTEFURV9DSEFUX1NXSVRDSBB9EhkKFVRSQU5TTEFURV9NRVNTQUdFU19WMhB+EiMKH1BVU0hfVFJBTlNMQVRFX1NUQVRFU19OT1RJQ0VfVjIQfxIcChdQVUxMX1JFQUNUSU9OU19SRVNPVVJDRRCAARIYChNQVUxMX1VTRVJfUkVBQ1RJT05TEIEBEhgKE1BVU0hfVVNFUl9SRUFDVElPTlMQggESGAoTUFVMTF9VU0VEX1JFQUNUSU9OUxCDARIYChNQVVNIX1VTRURfUkVBQ1RJT05TEIQBEhkKFFBVTExfRU1PSklfUkVTT1VSQ0VTEIgBEhkKFFBVU0hfUkVBQ1RJT05fU1RBVFVTEIkBEikKJFBVTExfUkVDT01NRU5EX1NUQVRVU19JQ09OX1JFU09VUkNFUxCKARIeChlVUERBVEVfVVNFUl9SRUFDVElPTl9TS0lOEIsBEhwKF1BVU0hfVVNFUl9SRUFDVElPTl9TS0lOEIwBEhUKEFBVTExfRU1PSklfUEFORUwQjQESHAoXUFVMTF9FTU9KSV9SRVNPVVJDRVNfVjIQjgESJwoiUFVMTF9FTU9KSV9SRVNPVVJDRVNfQllfRU1PSklfS0VZUxCPARIpCiRQVUxMX1JFQUNUSU9OX0VBU1RFUl9FR0dfUExBWV9TVEFUVVMQkAESHAoXUFVMTF9VU0VSX01SVV9SRUFDVElPTlMQkQESHAoXUFVTSF9VU0VSX01SVV9SRUFDVElPTlMQkgESKQokUFVTSF9NRVNTQUdFX1NUQVRJQ19SRVNPVVJDRV9ERUxFVEVEEIUBEh0KGFBVU0hfQkFUQ0hfQ09QWV9NRVNTQUdFUxCGARImCiFLTk9XTEVER0VfUFVMTF9TQU1QTEVfVVBMT0FEX0lORk8QzlcSLgopS05PV0xFREdFX1VQREFURV9TQU1QTEVfVVBMT0FEX1VTRVJfU1RBVEUQz1cSGQoUQ0hFQ0tfRU5USVRZX1ZFUlNJT04QhwESHwoaUEFUQ0hfQVVUT19UUkFOU0xBVEVfU0NPUEUQlgESJQogUFVTSF9BVVRPX1RSQU5TTEFURV9TQ09QRV9OT1RJQ0UQlwESKQokUFVMTF9BVVRPX1RSQU5TTEFURV9GSVJTVF9HVUlERV9JTkZPEJgBEjAKK1BVU0hfQVVUT19UUkFOU0xBVEVfRklSU1RfR1VJREVfSU5GT19OT1RJQ0UQmQESKgolUEFUQ0hfQVVUT19UUkFOU0xBVEVfRklSU1RfR1VJREVfSU5GTxCaARIaChVQVUxMX01FU1NBR0VfTEFOR1VBR0UQmwESFgoRVFJBTlNMQVRFX1dFQl9YTUwQnAESGQoUVFJBTlNMQVRFX0lNQUdFX0tFWVMQnQESIAobUFVTSF9JTUFHRV9UUkFOU0xBVElPTl9JTkZPEJ4BEhkKFERFVEVDVF9URVhUX0xBTkdVQUdFEJ8BEiEKHFBBVENIX1dFQl9UUkFOU0xBVElPTl9DT05GSUcQoAESIAobUFVTSF9XRUJfVFJBTlNMQVRJT05fQ09ORklHEKEBEigKI1BBVENIX0xBTkdVQUdFX0FVVE9fVFJBTlNMQVRFX1NDT1BFEKIBEicKIlBVU0hfTEFOR1VBR0VfQVVUT19UUkFOU0xBVEVfU0NPUEUQowESGgoVREVURUNUX0lNQUdFX0xBTkdVQUdFEKQBEiUKIFBBVENIX0xBTkdVQUdFU19DT05GSUdVUkFUSU9OX1YyEKUBEisKJlBVU0hfTEFOR1VBR0VTX0NPTkZJR1VSQVRJT05fTk9USUNFX1YyEKYBEiYKIVBBVENIX1dFQl9OT1RfVFJBTlNMQVRFX0xBTkdVQUdFUxCnARIsCidQVVNIX1dFQl9OT1RfVFJBTlNMQVRFX0xBTkdVQUdFU19OT1RJQ0UQqAESJQogUFVMTF9XRUJfTk9UX1RSQU5TTEFURV9MQU5HVUFHRVMQqQESJwoiREVMRVRFX1dFQl9OT1RfVFJBTlNMQVRFX0xBTkdVQUdFUxCqARIgChtTVFJFQU1JTkdfVFJBTlNMQVRFX01FU1NBR0UQrAESIwoeUFJPQ0VTU19QUklPUklUWV9CQVRDSF9SRVFVRVNUELQBEgkKBFBPTkcQyAESFAoPUFVMTF9BUFBfQ09ORklHEMkBEhQKD1BVU0hfQVBQX0NPTkZJRxDKARIfChpQVVNIX1NFVFRJTkdTX05PVElGSUNBVElPThDLARIXChJQVUxMX0FQUF9DT05GSUdfVjIQ0gESHgoZUFVMTF9TVEFUSUNfQVBQX0NPTkZJR19WMhDTARIZChRQVUxMX1NFQ1VSSVRZX0NPTkZJRxD7ARIZChRQVVNIX1NFQ1VSSVRZX0NPTkZJRxD8ARIYChNQVUxMX0NIQVRfUE9TVF9VU0VSEP0BEhkKFFBBVENIX0NIQVRfUE9TVF9VU0VSEP4BEhkKFFBVTExfQUxMT1dfUE9TVF9DSEFUEP8BEiEKHENIRUNLX1BVQkxJQ19DSEFUX05BTUVfRVhJU1QQgAISHwoaUFVUX0FERF9DSEFUX0NIQVRURVJfQVBQTFkQgQISIAobUFVMTF9BRERfQ0hBVF9DSEFUVEVSX0FQUExZEIICEiEKHFBBVENIX0FERF9DSEFUX0NIQVRURVJfQVBQTFkQgwISGAoTRElTQUJMRV9DSEFUX1NIQVJFRBCOAhIbChZDSEVDS19DSEFUVEVSU19JTl9DSEFUEI8CEhsKFlBVVF9DSEFUX0FOTl9SRUFEX1RJTUUQmAISHQoYUFVMTF9DSEFUU19BTk5fUkVBRF9USU1FEJkCEhwKF1BVU0hfQ0hBVF9BTk5fUkVBRF9USU1FEJoCEhgKE1BVTExfVEVOQU5UU19CWV9JRFMQrAISGgoVUFVTSF9DSEFUX0NIQVRURVJfVEFHEJEDEiAKG1BVTExfQ0hBVF9DSEFUVEVSX0tJQ0tfSU5GTxCSAxIpCiRDSEVDS19XSVRIRFJBV19QSUNLX0VOVElUSUVTX0lOX0NIQVQQkwMSHQoYUFVMTF9DSEFUX01FTUJFUl9TRVRUSU5HEJQDEisKJlBVTExfQ0hBTkdFX0dST1VQX01FTUJFUl9BVVRIT1JJWkFUSU9OEJUDEhUKEFBVTExfQ0hBVF9TV0lUQ0gQlgMSEwoOUFVMTF9DSEFUX01FTlUQlwMSEwoOUFVTSF9DSEFUX01FTlUQmAMSGAoTUFVTSF9DSEFUU19PVVREQVRFRBCZAxIXChJUUklHR0VSX01FTlVfRVZFTlQQmgMSFQoQUFVMTF9DSEFUX1dJREdFVBCbAxIgChtQVVNIX0NIQVRfQklaX1NUQVRFX1VQREFURUQQnAMSFQoQVVBEQVRFX0NIQVRfTUVOVRCdAxIVChBERUxfQ0hBVF9XSURHRVRTEJ4DEhkKFFJFT1JERVJfQ0hBVF9XSURHRVRTEJ8DEi0KKFBVTExfRVhJVF9ERVBBUlRNRU5UX0dST1VQX0FVVEhPUklaQVRJT04QpQMSHgoZUFVMTF9EWU5BTUlDX1JVTEVfT1BUSU9OUxCpAxIeChlBRERfQ0hBVF9SRUZfRFlOQU1JQ19SVUxFEKoDEh4KGURFTF9DSEFUX1JFRl9EWU5BTUlDX1JVTEUQqwMSHwoaUFVMTF9DSEFUX1JFRl9EWU5BTUlDX1JVTEUQrAMSIAobUEFUQ0hfQ0hBVF9SRUZfRFlOQU1JQ19SVUxFEK0DEh0KGFBVTExfVU5JVkVSU0FMX0NIQVRfUElOUxCvAxInCiJOT1RJRllfQ1JFQVRFX1VSTF9DSEFUX1BJTl9QUkVWSUVXELADEiwKJ0dFVF9SRUNPTU1FTkRfVVJMX0NIQVRfUElOX1BSRVZJRVdfSU5GTxCxAxIgChtERUxFVEVfVVJMX0NIQVRfUElOX1BSRVZJRVcQsgMSGAoTQ1JFQVRFX1VSTF9DSEFUX1BJThCzAxIeChlERUxFVEVfVU5JVkVSU0FMX0NIQVRfUElOELQDEhgKE1VQREFURV9VUkxfQ0hBVF9QSU4QtQMSJgohUFVTSF9VTklWRVJTQUxfQ0hBVF9QSU5fT1BFUkFUSU9OELYDEiEKHENSRUFURV9BTk5PVU5DRU1FTlRfQ0hBVF9QSU4QtwMSHAoXQ1JFQVRFX01FU1NBR0VfQ0hBVF9QSU4QuAMSFgoRR0VUX0NIQVRfUElOX0lORk8QuQMSFQoQUkVPUkRFUl9DSEFUX1BJThC6AxIaChVTVElDS19DSEFUX1BJTl9UT19UT1AQuwMSIAobRVhQT1JUX0NIQVRfQ0hBVFRFUl9CSVRBQkxFEMMDEh4KGVBVTExfREVGQVVMVF9BVkFUQVJfU1RZTEUQxAMSGwoWUFVMTF9DSEFUX0xJTktFRF9QQUdFUxDIAxIdChhERUxFVEVfQ0hBVF9MSU5LRURfUEFHRVMQyQMSIQocUkVQT1JUX1VTRVJfRU5URVJfQ0hBVF9FVkVOVBDMAxIgChtTRU5EX01BTlVBTF9PUEVOX1RZX1BST01QVFMQ1gMSGAoTVFJBTlNMQVRFX0NIQVRfTkFNRRDgAxIdChhQVUxMX0NIQVRfVVNFUl9BVVRPX01VVEUQ6gMSHgoZUEFUQ0hfQ0hBVF9VU0VSX0FVVE9fTVVURRDrAxIeChlQVVNIX0NIQVRfVVNFUl9BVVRPX01VVEVTEOwDEhEKDFBVVF9GQVZPUklURRD0AxITCg5QVUxMX0ZBVk9SSVRFUxD1AxIUCg9SRU1PVkVfRkFWT1JJVEUQ9gMSFgoRUFVMTF9BTExfRkFWT1JJVEUQ9wMSHwoaUFVUX01FUkdFX01FU1NBR0VfRkFWT1JJVEUQ+AMSFQoQUFVMTF9ORVdfVkVSU0lPThDYBBIWChFQVUxMX1ZFUlNJT05fTk9URRDZBBIaChVQQVRDSF9ET1dOTE9BRF9TVEFUVVMQ2gQSIQocR0VUX09GRklDSUFMX1dFQlNJVEVfVkVSU0lPThDbBBIlCiBXRUJTSVRFX1ZFUlNJT05fRE9XTkxPQURfUFJFUEFSRRDcBBIkCh9XRUJTSVRFX1ZFUlNJT05fRE9XTkxPQURfUkVQT1JUEN0EEhkKFFBVVF9IT01FX1NDSE9PTF9DSEFUELwFEh8KGkdFVF9IT01FX1NDSE9PTF9DSEFUX0NMQVNTEL0FEhcKElBVTExfTUFOQUdFRF9OT0RFUxC+BRIVChBQVUxMX1NDSE9PTF9OT0RFEL8FEhwKF0VEVV9KT0lOX0NIQVRfUFJFX0NIRUNLEMAFEhIKDUVEVV9KT0lOX0NIQVQQwQUSIQocUFVMTF9DT0xMQUJPUkFUSU9OX1NUUlVDVFVSRRChBhIeChlQVUxMX0NPTExBQk9SQVRJT05fVEVOQU5UEKIGEiQKH0FVVEhfVVNFUl9DT0xMQUJPUkFUSU9OX1ZJU0lCTEUQowYSJQogUFVMTF9DT0xMQUJPUkFUSU9OX0lOVklURV9RUkNPREUQpAYSKgolUFVMTF9DT0xMQUJPUkFUSU9OX1RBUkdFVF9URU5BTlRfSU5GTxClBhIUCg9QVUxMX0ZFRURfQ0FSRFMQ6AcSFQoQUEFUQ0hfRkVFRF9DQVJEUxDpBxIUCg9QVVNIX0ZFRURfQ0FSRFMQ6gcSHwoaUFVMTF9GRUVEX0NBUkRTX0ZFRURfVFlQRVMQ6wcSEwoOUEVBS19GRUVEX0NBUkQQ7AcSGgoVUFVUX0ZFRURfQ0FSRF9ERUxBWUVEEO0HEhwKF1BVVF9GRUVEX0NBUkRTX0lOVE9fQk9YEO4HEh8KGkRFTEVURV9GRUVEX0NBUkRTX0ZST01fQk9YEO8HEhwKF1BVTExfRkVFRF9DQVJEU19ERUxBWUVEEPAHEhsKFlBVTExfRkVFRF9DQVJEU19CWV9JRFMQ8QcSHAoXUFVMTF9ORVdfQk9YX0ZFRURfQ0FSRFMQ8gcSHQoYQ0xFQU5fTkVXX0JPWF9GRUVEX0NBUkRTEPMHEiIKHVBVU0hfQ0xFQU5fTkVXX0JPWF9GRUVEX0NBUkRTEPQHEhcKElBVVF9VU0VSX0NPTERfQk9PVBD2BxIZChRQVUxMX01VVEVfUE9QVVBfSU5GTxD3BxIYChNQVVRfU0hPV19NVVRFX1BPUFVQEPgHEh4KGVBVVF9CQVRDSF9NVVRFX0ZFRURfQ0FSRFMQ+QcSFgoRQ1JFQVRFX0ZFRURfR1JPVVAQ+gcSHQoYUFVMTF9LRVlXT1JEU19GRUVEX0NBUkRTEPsHEhUKEFBVTExfRkVFRF9HUk9VUFMQ/AcSHQoYUFVMTF9JVEVNX0NIQU5HRURfR1JPVVBTEP0HEhoKFVBVTExfRkVFRF9HUk9VUF9JVEVNUxD+BxIXChJVUERBVEVfRkVFRF9HUk9VUFMQ/wcSFQoQUFVTSF9GRUVEX0dST1VQUxCACBIeChlDT05GSVJNX0RFTEVURV9GRUVEX0NBUkRTEIEIEhwKF1BVU0hfREVMRVRFRF9GRUVEX0NBUkRTEIIIEhEKDFVQREFURV9GTEFHUxCDCBIPCgpQVUxMX0ZMQUdTEIQIEg8KClBVU0hfRkxBR1MQhQgSIgodUFVMTF9GRUVEX0dST1VQX1JVTEVTX1BSRVZJRVcQhggSFwoSUFVUX0ZFRURfQVBQX0RBVEFTEIcIEhcKElBVU0hfRkVFRF9BUFBfREFUQRCICBIYChNQVUxMX0ZFRURfQVBQX0RBVEFTEIkIEhsKFlBST0NFU1NfRkVFRF9NVUxUSV9DTUQQiggSGAoTUFVTSF9BUFBfRkVFRF9DQVJEUxCLCBIgChtQQVRDSF9BUFBfRkVFRF9DQVJEX1NFVFRJTkcQjAgSHwoaUFVMTF9BUFBfRkVFRF9DQVJEU19CWV9JRFMQjQgSFgoRUFVMTF9GRUVEX1NFVFRJTkcQjggSFwoSUEFUQ0hfRkVFRF9TRVRUSU5HEI8IEhYKEVBVU0hfRkVFRF9TRVRUSU5HEJAIEhwKF1BVVF9DQUxFTkRBUl9GRUVEX0VWRU5UEJEIEiIKHUFQUF9GRUVEX0NBUkRfQlVUVE9OX0NBTExCQUNLEJIIEigKI1BVTExfQ1JPU1NfVEVOQU5UX1RSQVlfSVRFTVNfQllfSURTEJMIEiEKHFBVTExfQ1JPU1NfVEVOQU5UX1RSQVlfSVRFTVMQlAgSGwoWUEFUQ0hfRkVFRF9DQVJEX1VOUkVBRBCVCBIYChNQQVRDSF9GRUVEX0NBUkRfUElOEJYIEhkKFFBVU0hfRE9VQkFPX01FU1NBR0VTEK4IEh4KGVBVU0hfRE9VQkFPX0NPTlZFUlNBVElPTlMQrwgSJAofUFVTSF9ET1VCQU9fSU5URVJBQ1RJVkVfTUVTU0FHRRCwCBIdChhNQVJLX0ZFRURfQ0FSRF9BU19ERUxFVEUQsQgSEgoNUFVMTF9UQUdfSU5GTxC4CBIYChNQVUxMX1RBR19JTkZPX0JZX0lEELkIEicKIlBVTExfQklaX0VOVElUWV9CSU5EX1RBR19XSVRIX0lORk8QuggSHQoYUFVTSF9CSVpfRU5USVRZX0JJTkRfVEFHELsIEhIKDVBVU0hfVEFHX0lORk8QvAgSEgoNUFVUX1NIT1JUQ1VUUxDMCBIVChBERUxFVEVfU0hPUlRDVVRTEM0IEhQKD1BBVENIX1NIT1JUQ1VUUxDOCBITCg5QVUxMX1NIT1JUQ1VUUxDPCBITCg5QVVNIX1NIT1JUQ1VUUxDQCBIXChJQVUxMX0lORk9fRUZGX0RBVEEQ1ggSFwoSUFVTSF9JTkZPX0VGRl9EQVRBENcIEhsKFkJBVENIX0NMRUFSX0ZFRURfQkFER0UQ2AgSIAobUFVTSF9CQVRDSF9DTEVBUl9GRUVEX0JBREdFENkIEhoKFUJBVENIX01VVEVfRkVFRF9DQVJEUxDaCBIfChpQVVNIX0JBVENIX01VVEVfRkVFRF9DQVJEUxDbCBIaChVDT1JSRUNUX0lORk9fRUZGX0RBVEEQ3AgSHAoXUFVUX1NIT1dfSU5GT19FRkZfR1VJREUQ3QgSGgoVUFVMTF9GRUVEX1VOUkVBRF9EQVRBEN4IEhQKD1BVVF9VTlJFQURfRkVFRBDfCBIdChhQVVRfRE9VQkFPX0RFVklDRV9TVEFUVVMQ6ggSFQoQUFVUX01FU1NBR0VfTElOSxD+CBIgChtHRVRfTUVTU0FHRV9MSU5LX1BFUk1JU1NJT04Q/wgSHwoaUFVMTF9NRVNTQUdFX0xJTktfTUVTU0FHRVMQgAkSHgoZUkVNT1ZFX01FU1NBR0VTX0ZST01fVVNFUhCwCRIeChlQVVRfTUVSR0VfRk9SV0FSRF9NRVNTQUdFELEJEiEKHFBVTExfU1lTVEVNX01FU1NBR0VfVEVNUExBVEUQsgkSIAobUFVTSF9CQURHRV9UT19SRUxBVEVEX1VTRVJTELMJEh0KGFBVTExfUkVMQVRFRF9VU0VSU19CQURHRRC0CRIZChRQVVRfRElBR05PU0VfTUVTU0FHRRC1CRIcChdESUFHTk9TRV9NRVNTQUdFX0NPTkZJRxC2CRIaChVTRU5EX0RJQUdOT1NUSUNfRVZFTlQQtwkSGAoTQkFUQ0hfU0hBUkVfTUVTU0FHRRC4CRIfChpERUxFVEVfTUVTU0FHRV9VUkxfUFJFVklFVxCVChIUCg9QVVRfVVJMX1BSRVZJRVcQmAoSGgoVUFVMTF9NRVNTQUdFX1BSRVZJRVdTEJ4KEhoKFVBVU0hfTUVTU0FHRV9QUkVWSUVXUxCfChIeChlQVUxMX1VSTF9QUkVWSUVXX0NIQVRURVJTEKAKEhIKDUdSQU5UX01JTlVURVMQoQoSIwoeUFVMTF9VUkxfUFJFVklFV19DSEFUVEVSU19MSVNUEKIKEiAKG0dFTkVSQVRFX1VSTF9QUkVWSUVXX0VOVElUWRCjChIUCg9HRVRfVVJMX1BSRVZJRVcQpAoSIAobVVJMX1BSRVZJRVdfQUNUSU9OX0NBTExCQUNLEKUKEhUKEFBVU0hfVVJMX1BSRVZJRVcQpgoSHQoYUFVTSF9VUkxfUFJFVklFV19FTlRSSUVTEKcKEh8KGlBVTExfVVJMX1BSRVZJRVdfVEVNUExBVEVTEKgKEhgKE1VQTE9BRF9VUkxfUFJFVklFV1MQqQoSGwoWTk9USUZZX0NSRUFURV9QUkVWSUVXUxCqChIVChBHRVRfVEVNUF9QUkVWSUVXEKsKEhgKE0dFVF9JTkxJTkVfUFJFVklFV1MQrAoSEQoMR0VUX1BSRVZJRVdTEK0KEhEKDERFTF9QUkVWSUVXUxCuChIRCgxBQ1RfUFJFVklFV1MQrwoSGAoTU0VDTElOS19CQVRDSF9DSEVDSxCwChIeChlHRVRfVEVNUF9QUkVWSUVXX0JZX0JBVENIELEKEhIKDVBVU0hfUFJFVklFV1MQsgoSGwoWQ0xJRU5UX1VQTE9BRF9QUkVWSUVXUxCzChIeChlDTElFTlRfVVBMT0FEX1VSTF9DT05URU5UELQKEhoKFVBVU0hfQ0xJRU5UX1VSTF9GRVRDSBC1ChIiCh1ISURFX0FVRElPX1JFQ09HTklUSU9OX1JFU1VMVBCWChIiCh1QVVNIX0FVRElPX1JFQ09HTklUSU9OX1JFU1VMVBCXChIbChZQVVRfU1BFRUNIX1JFQ09HTklUSU9OEJkKEiIKHVBVVF9BVURJT19NRVNTQUdFX1JFQ09HTklUSU9OEJoKEioKJVBVU0hfQVVESU9fTUVTU0FHRV9SRUNPR05JVElPTl9SRVNVTFQQmwoSFgoRR0VUX1NQRUVDSF9DT05GSUcQnAoSFgoRUFVUX1NQRUVDSF9DT05GSUcQnQoSIQobU1BFRUNIX1JFQ09HTklUSU9OX0ZFRURCQUNLEL6RCBIkCh5TUEVFQ0hfUkVDT0dOSVRJT05fUkVQT1JUX0VESVQQv5EIEjAKKlBVVF9TUEVFQ0hfUkVDT0dOSVRJT05fRk9SX1NNQVJUX0FTU0lTVEFOVBDAkQgSFAoPUFVMTF9WSURFT19JTkZPEMYKEhQKD1BVVF9UT1BJQ19HUk9VUBDADBIiCh1SRUdJU1RFUl9UT1BJQ19HUk9VUF9GQVZPUklURRDBDBIgChtDQU5DRUxfVE9QSUNfR1JPVVBfRkFWT1JJVEUQwgwSIAobUFVTSF9UT1BJQ19HUk9VUF9GRUVEX0NBUkRTEMMMEhsKFlBVVF9UT1BJQ19HUk9VUF9NRU1CRVIQxAwSEQoMUFVMTF9BUFBMSVNUENAPEhIKDVBVVF9SRUNFTlRBUFAQ0Q8SGgoVUFVMTF9URU5BTlRfQVBQQ0VOVEVSENIPEhUKEFNFQVJDSF9BUFBDRU5URVIQ0w8SFAoPQ0FSRF9KU09OX1RPX1BCEJYQEhYKEVNFTkRfUFJFVklFV19DQVJEEJcQEhkKFEdBREdFVF9ERVZfVE9PTF9QVVNIEJgQEhsKFlBVU0hfRVBIRU1FUkFMX01FU1NBR0UQoBASGwoWUFVMTF9FUEhFTUVSQUxfTUVTU0FHRRChEBIiCh1QVVNIX0VQSEVNRVJBTF9NRVNTQUdFX1VQREFURRCiEBIiCh1QVVNIX0VQSEVNRVJBTF9NRVNTQUdFX0RFTEVURRCjEBIRCgxBUFBfU0hBUkVfVjIQshASDgoJQVBQX1NIQVJFELMQEhgKE1BVVF9FMkVFX1ZPSUNFX0NBTEwQtBASGgoVUEFUQ0hfRTJFRV9WT0lDRV9DQUxMELUQEiAKG1BVU0hfRTJFRV9WT0lDRV9DQUxMX05PVElDRRC2EBIaChVQVUxMX0UyRUVfVk9JQ0VfQ0FMTFMQtxASIAobUFVUX0UyRUVfVk9JQ0VfREVWSUNFX1RPS0VOELgQEh0KGFBVVF9FMkVFX1ZPSUNFX0ZFRURCQUNLUxC5EBIlCiBQVUxMX0UyRUVfVk9JQ0VfQ0FMTF9CWV9DQUxMX0lEUxC6EBITCg5QVVRfVklERU9fQ09ORhCYERIVChBQQVRDSF9WSURFT19DT05GEJkREhsKFlBVU0hfVklERU9fQ09ORl9OT1RJQ0UQmhESFQoQUFVMTF9WSURFT19DT05GUxCbERIZChRSRUdJU1RFUl9DTElFTlRfSU5GTxCcERIWChFDUkVBVEVfVklERU9fQ0hBVBCdERIUCg9KT0lOX1ZJREVPX0NIQVQQnhESFgoRVVBEQVRFX1ZJREVPX0NIQVQQnxESFgoRSU5WSVRFX1ZJREVPX0NIQVQQoBESFQoQU0hBUkVfVklERU9fQ0hBVBChERIWChFOT1RJRllfVklERU9fQ0hBVBCiERIXChJTRUFSQ0hfVkNfQ0hBVFRFUlMQoxESGwoWR0VUX0NIQVRURVJTX1ZDX1NUQVRVUxCkERIbChZQVUxMX1ZJREVPX0NIQVRfQ09ORklHEKUREhsKFlBVU0hfVklERU9fQ0hBVF9DT05GSUcQphESGwoWUFVTSF9WSURFT19DSEFUX05PVElDRRCnERIcChdSRVBMWV9WSURFT19DSEFUX05PVElDRRCoERIgChtKT0lOX0NBTEVOREFSX0dST1VQX01FRVRJTkcQqRESEgoNUFVUX0ZFRURCQUNLUxCqERIhChxQVUxMX1ZJREVPQ0hBVF9CWV9TSEFSRV9DT0RFEKsREhsKFlBVVF9CWVRFVklFV19IRUFSVEJFQVQQ/BESHAoXTk9USUZZX1ZJREVPX0NIQVRfRVhUUkEQghISJQogTk9USUZZX1NUQU5EQUxPTkVfVkNfQVBQTElDQVRJT04QgxISEAoLSE9TVF9NQU5BR0UQhBISGQoUSE9TVF9DSEFOR0VfU0VUVElOR1MQhRISIAobUEFSVElDSVBBTlRfQ0hBTkdFX1NFVFRJTkdTEIYSEhEKDFNIQVJFX1NDUkVFThCHEhIkCh9QVUxMX1ZJREVPX0NIQVRfSU5fTUVFVElOR19JTkZPEIgSEhwKF1BSRVZJRVdfSk9JTl9WSURFT19DSEFUEIoSEhsKFkZPUkNFX0xFQVZFX1ZJREVPX0NIQVQQixISFgoRUVVFUllfU0VMRl9TVEFUVVMQjBISHQoYUFVUX1ZJREVPX0NIQVRfRkVFREJBQ0tTEI0SEiAKG1BVTExfRTJFRV9WT0lDRV9DQUxMX0NPTkZJRxCOEhIWChFSRUpPSU5fVklERU9fQ0hBVBCREhIbChZKT0lOX0JZX01FRVRJTkdfTlVNQkVSEJMSEhkKFFNIQVJFX1NDUkVFTl9UT19ST09NEJQSEiAKG1BVTExfUFJFX1ZJREVPX0NIQVRfU0VUVElORxCVEhIcChdJTlZJVEVfQ0FMRU5EQVJfTUVFVElORxCXEhIWChFHRVRfQ0FMRU5EQVJfSU5GTxCYEhIXChJHRVRfQ0FMRU5EQVJfR1JPVVAQmRISEQoMU0hBUkVfRk9MTE9XEJoSEhcKElNZTkNfRk9MTE9XX0FDVElPThCbEhIbChZRVUVSWV9NRUVUSU5HX0pPSU5BQkxFEJwSEhEKDEpPSU5fTUVFVElORxCdEhIeChlQVVNIX0FTU09DSUFURURfVkNfU1RBVFVTEJ4SEhYKEUdFVF9BU1NPQ0lBVEVEX1ZDEJ8SEhkKFFBVTExfRElBTF9URVNUX1NVSVRFEKASEhwKF1JFUE9SVF9ESUFMX1RFU1RfU1RBVFVTEKESEhwKF05PVElGWV9ESUFMX1RFU1RfQUNUSU9OEKISEhMKDlBVTExfU1VCVElUTEVTEKMSEhgKE0dFVF9TSEFSRV9DT0RFX0lORk8QpBISHQoYR0VUX0FTU09DSUFURURfVkNfU1RBVFVTEKUSEiEKHEpPSU5fSU5URVJWSUVXX0dST1VQX01FRVRJTkcQphISEwoOUkVDT1JEX01FRVRJTkcQpxISHwoaR0VUX0NIQVRURVJTX1dJVEhfQ0lfT1JERVIQqBISHQoYU0VBUkNIX1ZJRVdfUEFSVElDSVBBTlRTEKkSEhkKFFJFUVVFU1RfRk9MTE9XX1RPS0VOEKoSEhcKEkdSQU5UX0ZPTExPV19UT0tFThCrEhIYChNSRVFVRVNUX0ZPTExPV19QRVJNEKwSEhIKDVZDX1FVRVJZX0RPQ1MQrRISIgodUFVTSF9WSURFT19DSEFUX05PVElDRV9VUERBVEUQrhISGwoWSk9JTl9NRUVUSU5HX1BSRV9DSEVDSxCvEhIoCiNTRU5EX1ZJREVPX0NIQVRfSU5URVJBQ1RJT05fTUVTU0FHRRCwEhIoCiNQVUxMX1ZJREVPX0NIQVRfSU5URVJBQ1RJT05fTUVTU0FHRRCxEhIpCiRQVVNIX1ZJREVPX0NIQVRfSU5URVJBQ1RJT05fTUVTU0FHRVMQshISKAojR0VUX1ZJREVPX0NIQVRfU1VHR0VTVF9SRUFDVElPTl9LRVkQsxISGwoWUFVTSF9FMkVFX0tFWV9FWENIQU5HRRC1EhIbChZTRU5EX0UyRUVfS0VZX0VYQ0hBTkdFELYSEhkKFFBVQkxJU0hfTUVESUFfU1RSRUFNELgSEh0KGFNFTkRfVVBHUkFERV9QTEFOX05PVElDRRDCEhIbChZQVVNIX1ZJREVPX0NIQVRfUFJPTVBUEMMSEhwKF1JFUExZX1ZJREVPX0NIQVRfUFJPTVBUEMQSEh0KGEFESlVFU1RfTUVFVElOR19EVVJBVElPThDFEhIbChZQVUxMX1ZJRVdfVVNFUl9TRVRUSU5HEMYSEhwKF1BBVENIX1ZJRVdfVVNFUl9TRVRUSU5HEMcSEhsKFlBVU0hfVklFV19VU0VSX1NFVFRJTkcQyBISHAoXU1VCTUlUX0dFTkVSSUNfRkVFREJBQ0sQyRISFAoPR0VUX1JFU0VSVkFUSU9OEMoSEhgKE0xJVkVfTUVFVElOR19BQ1RJT04QzBISHAoXTElWRV9NRUVUSU5HX0VYVFJBX0lORk8QzRISIAobTElWRV9NRUVUSU5HX0pPSU5fUFJFX0NIRUNLEM4SEiYKIUxJVkVfTUVFVElOR19BQ0NPVU5UX0JJTkRJTkdfSU5GTxDPEhIgChtMSVZFX01FRVRJTkdfU1RSRUFNX1NFVFRJTkcQ0BISIwoeTElWRV9NRUVUSU5HX0ZFVENIX0xJVkVfUE9MSUNZENESEioKJUxJVkVfTUVFVElOR19HRVRfVkVSSUZJQ0FUSU9OX1FSX0NPREUQ0hISKgolTElWRV9NRUVUSU5HX1BPTExfVkVSSUZJQ0FUSU9OX1NUQVRVUxDTEhInCiJMSVZFX01FRVRJTkdfR0VUX1ZFUklGSUNBVElPTl9JTkZPENQSEiQKH0xJVkVfTUVFVElOR19WRVJJRllfVFdPX0VMRU1FTlQQ1RISMAorTElWRV9NRUVUSU5HX0xJVkVORVNTX1ZFUklGSUNBVElPTl9DQUxMQkFDSxDWEhIlCiBMSVZFX01FRVRJTkdfR0VUX0xJVkVfUEVSTUlTU0lPThDXEhIpCiRMSVZFX01FRVRJTkdfR0VUX1ZFUklGSUNBVElPTl9USUNLRVQQ2BISHgoZTElWRV9NRUVUSU5HX1BVTExfU0VUVElORxDZEhIoCiNMSVZFX01FRVRJTkdfUFVMTF9TRVRUSU5HX0JZVEVfTElWRRDaEhIiCh1MSVZFX01FRVRJTkdfQUNUSU9OX0JZVEVfTElWRRDbEhIyCi1MSVZFX01FRVRJTkdfR0VUX1BFUk1JU1NJT05fTUVNQkVSU19CWVRFX0xJVkUQ3BISIwoeTElWRV9NRUVUSU5HX1NXSVRDSF9MSVZFX0JSQU5EEN0SEhgKE1BVTExfQUNDT1VOVF9CQURHRVMQxBMSGAoTUFVTSF9BQ0NPVU5UX0JBREdFUxDFExIYChNDTEVBUl9BQ0NPVU5UX0JBREdFEMYTEg4KCVBVVF9FTUFJTBC4FxIXChJQVUxMX0VNQUlMX01FTUJFUlMQuRcSGAoTUEFUQ0hfRU1BSUxfTUVNQkVSUxC6FxIXChJQVVNIX0VNQUlMX01FTUJFUlMQuxcSFwoSUFVMTF9FTUFJTFNfQllfSURTELwXEhAKC1BBVENIX0VNQUlMEL0XEg8KClBVU0hfRU1BSUwQvhcSGAoTUFVMTF9FTUFJTF9DSEFUVEVSUxC/FxIUCg9QVUxMX0VNQUlMX1JPTEUQwBcSIgodUFVMTF9FTUFJTF9XQU5URURfQVRfQ0hBVFRFUlMQwRcSIQocTUFJTF9HRVRfU0VORF9FWFRFUk5BTF9MSU1JVBDCFxIiCh1NQUlMX0dFVF9FTUxfQllfSU5TVEFOQ0VfQ09ERRDDFxIQCgtDUkVBVEVfTUFJTBCsGxIWChFVUERBVEVfTUFJTF9EUkFGVBCtGxITCg5HRVRfTUFJTF9JTkJPWBCuGxIWChFHRVRfVEhSRUFEU19CWV9JRBCvGxIdChhQVVNIX1RIUkVBRF9GT1JfTkVXX01BSUwQsBsSFwoSVVBEQVRFX01BSUxfU1RBVFVTELEbEhUKEENMT05FX0RSSVZFX0ZJTEUQshsSFAoPTUFJTF9BRERfQ0hBTkdFELMbEhkKFEdFVF9GSUxURVJFRF9USFJFQURTELQbEiAKG0dFVF9USFJFQURTX0JZX0lEX1dJVEhfTUVUQRC1GxIZChRDUkVBVEVfT1VUR09JTkdfTUFJTBC2GxIUCg9NQUlMX0FQUExZX1JVTEUQtxsSLwoqTUFJTF9HRVRfTUVTU0FHRVNfQllfVEhSRUFEX0lEU19GT1JfU0VBUkNIELgbEh4KGU1BSUxfTkVXX01FU1NBR0VTX1JFUVVFU1QQuRsSHQoYTUFSS19BTExfQVNfUkVBRF9SRVFVRVNUELobEhoKFU1BSUxfR0VUX1JBV19NRVNTQUdFUxC7GxIWChFNQUlMX1NFTkRfUFJFVklFVxC8GxIdChhHRVRfTUFJTF9DQVJEX1JFUExZX0lORk8QvRsSGAoTTUFJTF9DT1BZX0NBUkRfRklMRRC+GxITCg5NQUlMX0lOSVRfU1lOQxCQHBIZChRHRVRfTUFJTF9USFJFQURfTUVUQRCRHBIWChFHRVRfTUFJTF9NRVNTQUdFUxCSHBIVChBNQUlMX1BVU0hfQ0hBTkdFEJMcEhwKF0dFVF9NQUlMX1RIUkVBRF9NRVRBX1YyEJQcEhsKFkdFVF9MQUJFTF9MSVNUX0JZX1VTRVIQlRwSGgoVR0VUX01BSUxfTUVTU0FHRV9NRVRBEJYcEi4KKUdFVF9NQUlMX01FU1NBR0VfTUVUQV9XSVRIX0ZPTERFUl9ESVNBQkxFEJccEhwKF0dFVF9NQUlMX01FU1NBR0VfR1JPVVBTEJgcEiIKHUdFVF9TVFJBTkdFUl9USFJFQURfTElTVF9NRVRBEJkcEh0KGEdFVF9TVFJBTkdFUl9USFJFQURfTUVUQRCaHBIjCh5HRVRfU1RSQU5HRVJfTUVTU0FHRV9MSVNUX01FVEEQmxwSJAofR0VUX1NUUkFOR0VSX1RIUkVBRF9NRVRBX0JZX01TRxCcHBIcChdNQUlMX1JFUE9SVF9VU0VSX0FDVElPThCdHBIjCh5NQUlMX1JFUE9SVF9VU0VSX1NFQVJDSF9BQ1RJT04QnhwSFAoPTUFJTF9BVF9DT05UQUNUEMIcEh8KGk1BSUxfU0lNUExFX1NFQVJDSF9SRVFVRVNUEMMcEiAKG01BSUxfU0lNUExFX1NFQVJDSF9SRVNQT05TRRDEHBIkCh9NQUlMX0dFVF9TRUFSQ0hfSElTVE9SWV9SRVFVRVNUEMUcEiYKIU1BSUxfU1RPUkVfU0VBUkNIX0hJU1RPUllfS0VZV09SRBDGHBIfChpNQUlMX0RFTEVURV9TRUFSQ0hfSElTVE9SWRDHHBIlCiBNQUlMX1JVTEVfUFJFVklFV19TRUFSQ0hfUkVRVUVTVBDIHBIYChNNQUlMX0NPTlRBQ1RfU0VBUkNIEMkcEhkKFE1BSUxfQURWQU5DRURfU0VBUkNIEMocEh0KGE1BSUxfQ0hBTkdFX0FTWU5DX1JFU1VMVBDLHBIgChtHRVRfVU5SRUFEX01BSUxfVEhSRUFEX01FVEEQzBwSHgoZR0VUX01BSUxfVEhSRUFEX1RJTUVTVEFNUBDNHBInCiJNQUlMX0dFVF9USFJFQURfTUVUQV9CWV9USFJFQURfSURTEM4cEicKIk1BSUxfR0VUX1RIUkVBRF9GVUxMX0JZX1RIUkVBRF9JRFMQzxwSLgopTUFJTF9HRVRfTUFJTF9NRVNTQUdFX0ZVTExfQllfTUVTU0FHRV9JRFMQ0BwSLgopTUFJTF9HRVRfTUFJTF9NRVNTQUdFX0JPRFlfQllfTUVTU0FHRV9JRFMQ0RwSMQosTUFJTF9HRVRfTUFJTF9NRVNTQUdFX1NVTU1BUllfQllfTUVTU0FHRV9JRFMQ0hwSGQoUTUFJTF9HRVRfU1lOQ19TVEFUVVMQ0xwSKQokTUFJTF9HRVRfTUVTU0FHRV9NRVRBX0JZX01FU1NBR0VfSURTENQcEiYKIU1BSUxfREVMRVRFX01BSUxfRVhURVJOQUxfQ09OVEFDVBDVHBIWChFHRVRfTUFJTF9TRVRUSU5HUxD0HBIZChRVUERBVEVfTUFJTF9TRVRUSU5HUxD1HBIXChJQVVNIX01BSUxfU0VUVElOR1MQ9hwSHQoYTUFJTF9DSEFOR0VfT0FVVEhfU1RBVFVTEPccEhsKFlBVU0hfTUFJTF9PQVVUSF9TVEFUVVMQ+BwSIwoeTUFJTF9VUERBVEVfQ0xJRU5UX1RBQl9TRVRUSU5HEPkcEh0KGE1BSUxfR0VUX0dPT0dMRV9BVVRIX1VSTBD6HBIjCh5NQUlMX0dFVF9DQU5fU0hBUkVfVE9fRVhURVJOQUwQ+xwSHgoZTUFJTF9VTkJJTkRfR01BSUxfQUNDT1VOVBD8HBIcChdNQUlMX0dFVF9URU5BTlRfRE9NQUlOUxD9HBIbChZQVVNIX01BSUxfVU5SRUFEX0NPVU5UEP4cEhMKDlBVTExfTUFJTF9DQVJEEP8cEhIKDUdFVF9NQUlMX0NBUkQQgB0SEwoOU0VORF9NQUlMX0NBUkQQgR0SGAoTQUREX01BSUxfQ0hBTkdFX0xPRxCCHRIWChFERUxFVEVfTEFSR0VfRklMRRCDHRIhChxNQUlMX0dFVF9MQUJFTF9USFJFQURTX0NPVU5UEIQdEh8KGk1BSUxfR0VUX0xPTkdfUlVOTklOR19UQVNLEIUdEiIKHU1BSUxfQ0FOQ0VMX0xPTkdfUlVOTklOR19UQVNLEIYdEjkKNE1BSUxfUFVTSF9DTElFTlRfRk9SX1RISVJEX1NFUlZJQ0VfUEVSTUlTU0lPTl9DT05GSUcQhx0SFAoPTUFJTF9HRVRfQ09ORklHEIgdEiYKIU1BSUxfR0VUX1VTRVJfRU5HQUdFTUVOVF9TRVRUSU5HUxCJHRIpCiRNQUlMX1VQREFURV9VU0VSX0VOR0FHRU1FTlRfU0VUVElOR1MQih0SFAoPTUFJTF9TWU5DX0FMSUFTEIsdEhsKFk1BSUxfUklTS19FVkVOVF9VUExPQUQQkh0SHQoYTUFJTF9DUkVBVEVfUlVMRV9SRVFVRVNUEKYdEh0KGE1BSUxfVVBEQVRFX1JVTEVfUkVRVUVTVBCnHRIdChhNQUlMX0RFTEVURV9SVUxFX1JFUVVFU1QQqB0SGwoWTUFJTF9HRVRfUlVMRVNfUkVRVUVTVBCpHRIeChlNQUlMX1JVTEVfQ09OVFJPTF9SRVFVRVNUEKodEiMKHk1BSUxfQURKVVNUX1JVTEVfT1JERVJfUkVRVUVTVBCrHRImCiFNQUlMX1NFTkRfQVVUT19UUkFOU0ZFUl9BVVRIX01BSUwQrB0SIQocTUFJTF9HRVRfQVVUT19UUkFOU0ZFUl9FTUFJTBCtHRIZChRHRVRfTUFJTF9TRVRUSU5HU19WMhCwHRIcChdVUERBVEVfTUFJTF9TRVRUSU5HU19WMhCxHRIkCh9HRVRfTUFJTF9TRVRUSU5HX0xBVEVTVF9WRVJTSU9OELMdEh0KGFBVU0hfTUFJTF9SRUxBVEVEX0JJWl9JRBDCHRInCiJNQUlMX1NIQVJFX01BSUxfQVRUQUNITUVOVF9SRVFVRVNUEMMdEiMKHk1BSUxfU0hBUkVfQ1JFQVRFX1BFUk1fUkVRVUVTVBDEHRIjCh5NQUlMX1NIQVJFX1VQREFURV9QRVJNX1JFUVVFU1QQxR0SIwoeTUFJTF9TSEFSRV9ERUxFVEVfUEVSTV9SRVFVRVNUEMYdEjUKME1BSUxfU0hBUkVfR0VUX1RIUkVBRF9DT0xMQUJPUkFUT1JTX0lORk9fUkVRVUVTVBDHHRIoCiNNQUlMX1NIQVJFX0dFVF9NRVNTQUdFX0ZVTExfUkVRVUVTVBDIHRIoCiNNQUlMX1NIQVJFX0dFVF9TSEFSRV9HUk9VUFNfUkVRVUVTVBDJHRIiCh1NQUlMX1NIQVJFX0NSRUFURV9ET0NfUkVRVUVTVBDKHRIsCidNQUlMX1NIQVJFX0dFVF9TSEFSRV9HUk9VUF9JTkZPX1JFUVVFU1QQyx0SKgolTUFJTF9TSEFSRV9DUkVBVEVfU0hBUkVfRFJBRlRfUkVRVUVTVBDMHRIkCh9NQUlMX1NIQVJFX1VQREFURV9EUkFGVF9SRVFVRVNUEM0dEiEKHE1BSUxfU0hBUkVfR0VUX01BSUxfU0VUVElOR1MQzh0SJQogTUFJTF9HRVRfTUVTU0FHRV9TVU1NQVJZX1JFUVVFU1QQzx0SIgodTUFJTF9HRVRfTUVTU0FHRV9CT0RZX1JFUVVFU1QQ0B0SJQogTUFJTF9TSEFSRV9TRUFSQ0hfTUVNQkVSX1JFUVVFU1QQ0R0SMQosTUFJTF9TSEFSRV9VUERBVEVfQ09MTEFCT1JBVE9SU19ST0xFX1JFUVVFU1QQ0h0SJAofTUFJTF9TSEFSRV9DUkVBVEVfR1JPVVBfUkVRVUVTVBDTHRIeChlNQUlMX0dFVF9NSUdSQVRJT05fU1RBVFVTENQdEhsKFk1BSUxfR0VUX0dST1VQX1NFVFRJTkcQ2R0SGwoWTUFJTF9TRVRfR1JPVVBfU0VUVElORxDaHRIcChdNQUlMX1BVU0hfR1JPVVBfU0VUVElORxDbHRIeChlNQUlMX0RFTEVURV9HUk9VUF9TRVRUSU5HENwdEhwKF01BSUxfR0VUX0NPTkZJR19SRVFVRVNUEN0dEhwKF01BSUxfR0VUX01BTkFHRURfR1JPVVBTEN4dEhoKFU1BSUxfR0VUX0dST1VQX0RFVEFJTBDfHRIWChFNQUlMX1VQREFURV9HUk9VUBDgHRIcChdNQUlMX0xJU1RfR1JPVVBfTUVNQkVSUxDhHRIkCh9NQUlMX0xJU1RfU0hBUkVEX0VNQUlMX0FDQ09VTlRTEOIdEhcKEk1BSUxfUkVDQUxMX1NUQVRVUxDjHRIXChJNQUlMX1JFQ0FMTF9ERVRBSUwQ5B0SFQoQTUFJTF9NQU5FR0VfRlJPTRDnHRIkCh9NQUlMX0dFVF9TVFJBTkdFUl9USFJFQURfQklaX0lEEOgdEiQKH1BVU0hfTUFJTF9JTUFQX01JR1JBVElPTl9TVEFUVVMQ7B0SIwoeTUFJTF9JTUFQX01JR1JBVElPTl9HRVRfU1RBVFVTEO0dEiUKIE1BSUxfSU1BUF9NSUdSQVRJT05fVVBEQVRFX1RPS0VOEO4dEiQKH01BSUxfSU1BUF9NSUdSQVRJT05fVVBEQVRFX1VJRFMQ7x0SLQooTUFJTF9JTUFQX01JR1JBVElPTl9HRVRfT0xEX01FU1NBR0VfVEFTSxDwHRIrCiZNQUlMX0lNQVBfTUlHUkFUSU9OX1VQTE9BRF9PTERfTUVTU0FHRRDxHRIrCiZNQUlMX0lNQVBfTUlHUkFUSU9OX1VQTE9BRF9ORVdfTUVTU0FHRRDyHRInCiJNQUlMX0lNQVBfTUlHUkFUSU9OX1FVRVJZX1BST0dSRVNTEPMdEicKIk1BSUxfSU1BUF9NSUdSQVRJT05fREVDT0RFX01FU1NBR0UQ9B0SKgolTUFJTF9JTUFQX01JR1JBVElPTl9HRVRfTUFJTEJPWF9JTkZPUxD1HRIgChtNQUlMX0lNQVBfTUlHUkFUSU9OX0JMT0NLRUQQ9h0SKQokUFVTSF9NQUlMX0lNQVBfTUlHUkFUSU9OX09MREVTVF9JTkZPEPcdEi4KKU1BSUxfSU1BUF9NSUdSQVRJT05fR0VUX0hJU1RPUllfRE9ORV9JTkZPEPgdEi8KKk1BSUxfSU1BUF9NSUdSQVRJT05fR0VUX0FMTF9BQ0NPVU5UX1NUQVRVUxD5HRIlCiBNQUlMX0lNQVBfTUlHUkFUSU9OX1ZFUklGWV9UT0tFThD6HRImCiFNQUlMX0lNQVBfTUlHUkFUSU9OX0dFVF9BVVRIX0lORk8Q+x0SIAobTUFJTF9JTUFQX1VTRVJfQklORF9BQ0NPVU5UEPwdEiMKHk1BSUxfSU1BUF9HRVRfU01UUF9JTUFQX0NPTkZJRxD9HRIlCiBNQUlMX0lNQVBfQ0hFQ0tfSUZfQ0FOX1VTRVJfQklORBD+HRIVChBNQUlMX1RSQU5TTEFUSU9OEIAeEhUKEE1BSUxfVU5TVUJTQ1JJQkUQgx4SGQoUTUFJTF9HRVRfU01BUlRfUkVQTFkQhR4SKAojTUFJTF9HRVRfSVNfU01BUlRfSU5CT1hfVEFSR0VUX1VTRVIQhh4SIQocTUFJTF9HRVRfQVVUSE9SSVpBVElPTl9DT0RFUxCHHhIjCh5NQUlMX0NSRUFURV9BVVRIT1JJWkFUSU9OX0NPREUQiB4SIwoeTUFJTF9ERUxFVEVfQVVUSE9SSVpBVElPTl9DT0RFEIkeEigKI01BSUxfR0VUX1RISVJEX1BBUlRZX0NMSUVOVF9TRVRUSU5HEIseEjAKK01BSUxfQ0hFQ0tfVEhJUkRfUEFSVFlfQ0xJRU5UX0JFRk9SRV9DUkVBVEUQhB4SHwoaTUFJTF9HRVRfRVhDSEFOR0VfQVVUSF9VUkwQih4SHQoYUFVTSF9NQUlMX1NFVFRJTkdfQ0hBTkdFEIweEiEKHE1BSUxfR0VUX01FU1NBR0VfU0VORF9TVEFUVVMQjR4SHwoaTUFJTF9QVUxMX0VOVEVSUFJJU0VfRU1BSUwQjh4SGQoUTUFJTF9NVUxUSV9DT1BZX0ZJTEUQjx4SHQoYR0VUX1NIQVJFRF9NQUlMX1NFVFRJTkdTEJAeEiAKG1VQREFURV9TSEFSRURfTUFJTF9TRVRUSU5HUxCRHhIkCh9QVVNIX1NIQVJFRF9NQUlMX1NFVFRJTkdfQ0hBTkdFEJIeEiQKH01BSUxfR0VUX0NMRUFSX0lORk9fQ0hBTkdFX0xJU1QQkx4SJgohTUFJTF9DSEVDS19HUk9VUF9NRU1CRVJfRVhJU1RFTkNFEJQeEiEKHE1BSUxfQ0hFQ0tfR1JPVVBfTUVNQkVSX0lORk8QlR4SJQogTUFJTF9DSEVDS19VU0VSX0dST1VQX1BFUk1JU1NJT04Qlh4SIAobTUFJTF9HRVRfQ0hBVF9HUk9VUF9BRERSRVNTEJceEiMKHk1BSUxfQ1JFQVRFX0NIQVRfR1JPVVBfQUREUkVTUxCYHhIjCh5NQUlMX0dFVF9HUk9VUF9ERVRBSUxfRk9SX1VTRVIQmR4SJAofTUFJTF9VTlNVQlNDUklCRV9HUk9VUF9GT1JfVVNFUhCaHhInCiJNQUlMX0xJU1RfQ09OTkVDVEVEX0VNQUlMX0FDQ09VTlRTEJseEiQKH01BSUxfQ1JFQVRFX01BSUxfVVNFUl9TSUdOQVRVUkUQnh4SJAofTUFJTF9VUERBVEVfTUFJTF9VU0VSX1NJR05BVFVSRRCfHhIeChlNQUlMX0FQUExZX01BSUxfU0lHTkFUVVJFEKAeEiQKH01BSUxfREVMRVRFX01BSUxfVVNFUl9TSUdOQVRVUkUQoR4SHgoZTUFJTF9RVUVSWV9NQUlMX1NJR05BVFVSRRCiHhIYChNNQUlMX0dFVF9VU0VSX0ZJRUxEEKMeEicKIk1BSUxfQ0hFQ0tfSU1BR0VfVE9LRU5TX1BFUk1JU1NJT04QpB4SMAorTUFJTF9HRVRfTUFJTF9DT05UQUNUX1RZUEVfQllfRU1BSUxfQUREUkVTUxClHhIfChpNQUlMX0dFVF9NQUlMX0NPTlRBQ1RfTUVUQRCmHhIXChJNQUlMX1BVTExfUkVBQ1RJT04Qpx4SFwoSTUFJTF9QT0xMX1JFQUNUSU9OEKgeEh8KGk1BSUxfUFVMTF9SRUFDVElPTl9CWV9UWVBFEKkeEhsKFk1BSUxfUFVUX1VTRVJfUkVBQ1RJT04Qqh4SGwoWTUFJTF9ERUxfVVNFUl9SRUFDVElPThCrHhIXChJNQUlMX1BVU0hfUkVBQ1RJT04QrB4SHwoaTUFJTF9JTklUX1JFQUNUSU9OX01FU1NBR0UQrR4SLQooTUFJTF9HRVRfTUVTU0FHRV9SRUFEX1NUQVRJU1RJQ1NfU1VNTUFSWRCuHhItCihNQUlMX0dFVF9NRVNTQUdFX1JFQURfU1RBVElTVElDU19ERVRBSUxTEK8eEjMKLk1BSUxfR0VUX01FU1NBR0VfUkVBRF9TVEFUSVNUSUNTX0dST1VQX0RFVEFJTFMQsB4SPQo4TUFJTF9HRVRfTUVTU0FHRV9SRUFEX1NUQVRJU1RJQ1NfQUREUkVTU19JTkZPX0JZX1VTRVJfSUQQsR4SGgoVTUFJTF9JU19JTUFHRV9CTE9DS0VEELIeEh4KGU1BSUxfQUREX1VTRVJfQUxMT1dfQkxPQ0sQsx4SGgoVTUFJTF9JU19JTUFHRV9BTExPV0VEELQeEiUKIE1BSUxfVVBEQVRFX0NMRUFOX01FU1NBR0VfU1RBVFVTELUeEiMKHk1BSUxfQ09VTlRfTEFSR0VfQVRUQUNITUVOVF9QVhC2HhIqCiVNQUlMX0dFVF9MQVJHRV9BVFRBQ0hNRU5UX0JBTk5FRF9JTkZPELceEiYKIU1BSUxfQ0hFQ0tfRVhURVJOQUxfRU1BSUxfQUREUkVTUxC4HhIkCh9NQUlMX0dFVF9FTUFJTF9BRERSRVNTX0RPQ19BVVRIELkeEhYKEU1BSUxfR0VUX0VNTF9TSVpFELoeEiIKHU1BSUxfVVBMT0FEX0VNTF9BU19BVFRBQ0hNRU5UELseEikKJE1BSUxfQ0FOQ0VMX1VQTE9BRF9FTUxfQVNfQVRUQUNITUVOVBC8HhIhChxNQUlMX1NFQVJDSF9VU0VSX0FMTE9XX0JMT0NLEL0eEh4KGU1BSUxfREVMX1VTRVJfQUxMT1dfQkxPQ0sQvh4SIgodTUFJTF9DSEVDS19HUk9VUF9NRU1CRVJfQ09VTlQQvx4SHQoYTUFJTF9HRVRfUkVDSVBJRU5UX0NPVU5UEMAeEh0KGE1BSUxfQUlfR0VUX1FVSUNLX0FDVElPThDBHhIYChNNQUlMX0FJX0NSRUFURV9UQVNLEMIeEh0KGE1BSUxfQUlfVEFTS19TVEFUVVNfUFVTSBDDHhIcChdNQUlMX0FJX0dFVF9UQVNLX1NUQVRVUxDEHhIfChpNQUlMX0xJU1RfTEFSR0VfQVRUQUNITUVOVBDGHhInCiJNQUlMX01VTFRJX0RFTEVURV9MQVJHRV9BVFRBQ0hNRU5UEMceEicKIk1BSUxfR0VUX0xBUkdFX0FUVEFDSE1FTlRfQ0FQQUNJVFkQyB4SKwomTUFJTF9DSEVDS19BVFRBQ0hNRU5UX01PVU5UX1BFUk1JU1NJT04QyR4SHgoZTUFJTF9VUERBVEVfRk9MTE9XX1NUQVRVUxDKHhIbChZNQUlMX0dFVF9GT0xMT1dfU1RBVFVTEMweEiEKHE1BSUxfR0VUX0ZPTExPV0lOR19GRUVEX0xJU1QQzR4SIwoeTUFJTF9HRVRfTUVTU0FHRV9MSVNUX0ZPUl9GRUVEEM4eEiYKIU1BSUxfR0VUX01FU1NBR0VTX0JZX0lEU19GT1JfRkVFRBDPHhIjCh5NQUlMX1BVU0hfRkVFRF9NRVNTQUdFX1ZFUlNJT04Q1R4SIQocTUFJTF9QVVNIX0ZFRURfRk9MTE9XX0NIQU5HRRDWHhIjCh5NQUlMX01HRVRfREVQQVJUTUVOVF9SRUNJUElFTlQQ0B4SJgohTUFJTF9DT05UX1NFTkRfRFJBRlRfRURJVE9SX01PREVMENEeEiMKHk1BSUxfQUlfQUNUSU9OX0dFVF9UQVNLX1BBUkFNUxDXHhIlCiBNQUlMX0FJX0FDVElPTl9HRVRfRFJBRlRfQ09OVEVOVBDYHhIhChxNQUlMX0FJX1BVU0hfT05CT0FSRElOR19DQVJEENkeEiIKHU1BSUxfVEVNUExBVEVfQ1JFQVRFX1RFTVBMQVRFENoeEiIKHU1BSUxfVEVNUExBVEVfVVBEQVRFX1RFTVBMQVRFENseEiIKHU1BSUxfVEVNUExBVEVfREVMRVRFX1RFTVBMQVRFENweEikKJE1BSUxfVEVNUExBVEVfR0VUX1RFTVBMQVRFX01FVEFfTElTVBDdHhIlCiBNQUlMX1RFTVBMQVRFX01HRVRfVEVNUExBVEVfREFUQRDeHhIjCh5NQUlMX0NIRUNLX01FU1NBR0VfQ09VTlRfTElNSVQQ3x4SIgodTUFJTF9HRVRfTUVTU0FHRV9NRVRBX0lEX0xJU1QQ4B4SJgohTUFJTF9HRVRfU09SVF9GSUxURVJfSU5ERVhfQllfSURTEOEeEicKIk1BSUxfR0VUX01FU1NBR0VfTUVUQV9HUk9VUF9ERVRBSUwQ4h4SHwoaTUFJTF9HRVRfTUVTU0FHRV9NRVRBX0xJU1QQ4x4SLgopTUFJTF9HRVRfTUVTU0FHRV9NRVRBX0JZX1NNVFBfTUVTU0FHRV9JRFMQ5B4SHAoXTUFJTF9DSEVDS19CSVpfSURfVkFMSUQQ5R4SHQoYTUFJTF9DSEVDS19TVE9SQUdFX0xJTUlUEOYeEiYKIU1BSUxfTUdFVF9NQUlMX0VOVEVSUFJJU0VfQUREUkVTUxDnHhIhChxNQUlMX01HRVRfQ0hBVF9HUk9VUF9BRERSRVNTEOgeEhcKElBVVF9DUllQVE9fTUVTU0FHRRCgHxIYChNBQ0tfQ1JZUFRPX01FU1NBR0VTEKEfEiYKIVBVTExfQ1JZUFRPX01FU1NBR0VfREVUQUlMX0JZX0lEUxCiHxInCiJQVVRfU1lTVEVNX01FU1NBR0VfRk9SX1NDUkVFTlNIT1RTEKMfEhgKE1BVVF9DUllQVE9fUDJQX0NIQVQQhSASGgoVUFVUX0NSWVBUT19HUk9VUF9DSEFUEIYgEhwKF1BVVF9DUllQVE9fQ0hBVF9DSEFUVEVSEIcgEh8KGkRFTEVURV9DUllQVE9fQ0hBVF9DSEFUVEVSEIggEhgKE0RJU0JBTkRfQ1JZUFRPX0NIQVQQiSASGwoWUFVTSF9ORVdfREVWSUNFX09OTElORRCKIBIbChZQVVRfQ1JZUFRPX0JVUk5FRF9USU1FEIsgEhwKF1BVVF9DUllQVE9fTUVTU0FHRV9NQUlOEIwgEicKIlBVVF9DUllQVE9fTUVTU0FHRV9NSVNTSU5HX0NPTlRFTlQQjSASGAoTUFVUX1VTRVJfREVWSUNFX0lQSxCPIBIgChtQVVNIX1VTRVJfREVWSUNFX0lQS19DSEFOR0UQkCASFwoSUFVUX1NFQ1JFVF9NRVNTQUdFEJEgEhsKFkdFVF9VU0VSU19JUEtTX0JZX0NIQVQQkiASIAobUFVTSF9DSEFUX0RFVklDRV9JUEtfQ0hBTkdFEJMgEicKIlBVVF9TRUNSRVRfTUVTU0FHRV9NSVNTSU5HX0NPTlRFTlQQlCASJgohUFVMTF9TRUNSRVRfTUVTU0FHRV9ERVRBSUxfQllfSURTEJUgEiEKHFBVTExfQ1JZUFRPX0NIQVRfSU5GT19CWV9JRFMQliASGQoUUkVQT1JUX1NFQ1JFVF9ERVZJQ0UQlyASHAoXUFVTSF9TRUNSRVRfREVWSUNFX0lORk8QmCASHwoaUFVMTF9FTUVSR0VOQ1lfQ0FMTF9OVU1CRVIQ6CASHgoZUFVUX0VNRVJHRU5DWV9DQUxMX1JFQVNPThDpIBIeChlQVUxMX0FCQlJFVklBVElPTlNfQllfSURTEM0hEh8KGlBVVF9BQkJSRVZJQVRJT05fRkVFREJBQ0tTEM4hEhoKFUdFVF9BQkJSRVZJQVRJT05fQ0FSRBDPIRIfChpSRUZSRVNIX01FU1NBR0VfQkFJS0VfUkVGUxDQIRIRCgxHRVRfRkVFREJBQ0sQ0SESHQoYR0VUX0VOVFJZX0NBUkRfUkVTT1VSQ0VTENIhEhUKEEdFVF9CQVRDSF9SRUNBTEwQ0yESGQoUUFVUX0hJR0hMSUdIVF9JR05PUkUQ1CESGgoVUFVUX0NIQVRURVJfVklBX1NIQVJFEIgnEhQKD1BVTExfQ0hBVFNfUk9MRRCJJxIbChZQVUxMX0NIQVRfQVBQTElDQVRJT05TEIonEhoKFVBVU0hfQ0hBVF9BUFBMSUNBVElPThCLJxIeChlQUk9DRVNTX0NIQVRfQVBQTElDQVRJT05TEIwnEhgKE1JFU0VUX0NPTlRBQ1RfVE9LRU4QjScSHAoXUFVUX0NPTlRBQ1RfQVBQTElDQVRJT04QjicSFgoRUkVBRF9BUFBMSUNBVElPTlMQjycSGwoWUFVMTF9QRVJTT05BTF9DT05UQUNUUxCQJxISCg1QVVNIX0NPTlRBQ1RTEJEnEigKI1BVTExfVU5SRUFEX0NIQVRfQVBQTElDQVRJT05TX0JBREdFEJInEhMKDkRFTEVURV9DT05UQUNUEJMnEhcKElBVTExfQ09OVEFDVF9UT0tFThCUJxIXChJQVVNIX0NPTlRBQ1RfVE9LRU4QlScSGAoTUFVUX0NPTlRBQ1RfU0VUVElORxCWJxIZChRQVVNIX0NPTlRBQ1RfU0VUVElORxCXJxIZChRQVUxMX0NPTlRBQ1RfU0VUVElORxCYJxIWChFQVUxMX1VTRVJfUFJPRklMRRCZJxIYChNQVVRfVVNFUl9JTlZJVEFUSU9OEJonEiEKHFNFQVJDSF9VU0VSX0JZX0NPTlRBQ1RfUE9JTlQQmycSGwoWUFVMTF9DSEFUX1FSQ09ERV9UT0tFThCcJxIaChVQVUxMX0NIQVRfUVJDT0RFX0lORk8QnScSGwoWUFVUX0NIQVRURVJfVklBX1FSQ09ERRCeJxIdChhQVUxMX0NIQVRfQ0hBVFRFUl9CWV9JRFMQnycSHgoZUFVMTF9DSEFUX1NFQ1VSSVRZX0NPTkZJRxCgJxIpCiRQVUxMX0NIQVRfTk9fVFJBQ0VfUkVNT1ZFRF9QT1NJVElPTlMQoScSFwoSUFVMTF9VU0VSX1BST0ZJTEVTEKInEigKI1BVTExfQ0hBVF9OT05fREVQQVJUTUVOVEFMX0NIQVRURVJTEKMnEh4KGVBVTExfQ0hBVF9TSURFQkFSX0JVVFRPTlMQpCcSIQocUFVMTF9DSEFUX0pPSU5fTEVBVkVfSElTVE9SWRClJxIiCh1DSEVDS19QMlBfQ0hBVFNfRVhJU1RfQllfVVNFUhCmJxIZChRQVUxMX1VTRVJfUFJPRklMRV9WMhCnJxIfChpCQVRDSF9QVUxMX1VTRVJfUFJPRklMRV9WMhCoJxIkCh9QVUxMX0NPTlRBQ1RfVE9LRU5TX0ZPUl9TSEFSSU5HEKknEiQKH0NIRUNLX0NPTlRBQ1RfSVNfTElOS0VEX1RPX1VTRVIQqicSHAoXUEFUQ0hfU0VMRl9VU0VSX1BST0ZJTEUQqycSFAoPUEFUQ0hfVVNFUl9NRU1PEKwnEiIKHVBVTExfVVNFUl9QUk9GSUxFX1NFQ1RJT05fVEFCEK0nEhYKEVJFU0VUX1VTRVJfQVZBVEFSEK4nEiEKHFBVVF9SRVNFVF9VU0VSX0FWQVRBUl9SRVNVTFQQrycSLQooUFVMTF9FWFRFUk5BTF9DSEFUVEVSU19JTl9TQU1FX0NIQVRfQVVUSBCwJxIZChRQVUxMX0FMUkVBRFlfSU5fQ0hBVBCxJxIYChNQVVRfQk9UX1VTRVJfQ09ORklHELInEhkKFFBVU0hfQk9UX1VTRVJfQ09ORklHELMnEhIKDVBVTExfVVNFUl9UQUcQtCcSHgoZUFVMTF9DSEFUX1RBR19EQVRBX0JZX0lEUxC1JxIqCiVTRUFSQ0hfRU5USVRJRVNfSU5GT19CWV9DT05UQUNUX1BPSU5UELknEhUKEFBVTExfV09SS19TVEFUVVMQuicSFwoSREVMRVRFX1dPUktfU1RBVFVEELsnEhkKFFBVTExfQ0hBVF9MSU5LX1RPS0VOEL8nEh8KGlBVVF9DSEFUVEVSX1ZJQV9TSEFSRV9MSU5LEMAnEhgKE1BVTExfQ0hBVF9MSU5LX0lORk8QwScSHAoXUFVMTF9VU0VSX1BFUlNPTkFMX0lORk8QwicSFAoPUFVMTF9BSV9QUk9GSUxFEMMnEhsKFlBVTExfTVlfUFJPTU9USU9OX0xJTksQxCcSGAoTUFVMTF9QUk9NT1RJT05fUlVMRRDFJxIcChdQVVRfQlVTSU5FU1NfSU5WSVRBVElPThDGJxIaChVQVUxMX0NIQVRfQVZBVEFSX01FVEEQzicSGQoUUFVMTF9JTlZJVEFUSU9OX0xJTksQ2CcSGQoUUFVUX0FETUlOX0lOVklUQVRJT04Q2ScSIQocUFVMTF9VU0VSX0lOVklUQVRJT05fTUVTU0FHRRDaJxIaChVQVVRfQkFOTkVSX0JFR0lOX1RJTUUQ2ycSIwoeUFVTSF9VU0VSX1NJREVCQVJfVVBEQVRFX0VWRU5UEOInEhYKEVBVTExfVVNFUl9TSURFQkFSEOMnEhwKF0NIRUNLX1VTRVJfUEhPTkVfTlVNQkVSEOQnEiYKIVBVTExfVVNFUl9QUk9GSUxFX0FTU0lHTkVEX0ZJRUxEUxDlJxIYChNBVVRIX0RPV05MT0FEX1RPS0VOEOYnEh8KGlBVTExfQ0hBVFRFUlNfUEFSVElBTF9JTkZPEOcnEh8KGlBVU0hfQ0hBVFRFUlNfUEFSVElBTF9JTkZPEOgnEjEKLFBVTExfU0VOU0lUSVZFX0NIQVRURVJfSU5GT19GT1JfQ0hBVF9NRU1CRVJTEOknEh0KGFBVTExfVVNFUl9QUk9GSUxFX0ZJRUxEUxDqJxIMCgdQVVRfUElOEOwnEh0KGFBVTExfUElOU19CWV9NRVNTQUdFX0lEUxDtJxITCg5QVUxMX0NIQVRfUElOUxDuJxIQCgtERUxFVEVfUElOUxDvJxINCghQVVNIX1BJThDwJxISCg1QVVNIX1BJTl9SRUFEEPEnEhkKFFBVTExfUElOX1JFQURfU1RBVFVTEPInEhEKDFBVVF9QSU5fUkVBRBDzJxIhChxQVUxMX1BJTl9CWV9DSEFUX1VQREFURV9USU1FEPQnEhgKE1BVVF9BTExfUElOX1NFVFRJTkcQ9ScSGQoUUFVTSF9BTExfUElOX1NFVFRJTkcQ9icSGQoUUFVMTF9BTExfUElOX1NFVFRJTkcQ9ycSGAoTUFVMTF9DSEFUX1BJTl9DT1VOVBD4JxIYChNQVVNIX0NIQVRfUElOX0NPVU5UEPknEiMKHlVQREFURV9BQ0NPVU5UX1VTRVJfTElTVF9PUkRFUhDQKBIbChZQVVNIX0FDQ09VTlRfVVNFUl9MSVNUENEoEhsKFlBVTExfQUNDT1VOVF9VU0VSX0xJU1QQ0igSIwoeUFVTSF9BQ0NPVU5UX1VQREFURV9VU0VSX0VWTkVUENMoEicKIlBVU0hfQUNDT1VOVF9VTlJFR0lTVEVSX1VTRVJfRVZFTlQQ1CgSKgolUFVTSF9HTE9CQUxfQUNDT1VOVF9VUERBVEVfVVNFUl9FVkVOVBDVKBIgChtQVVNIX1VTRVJfTElTVF9VUERBVEVfRVZFTlQQ1igSIwoeUFVTSF9VU0VSX01JR1JBVEVfU1dJVENIX0VWRU5UENcoEhIKDVBVVF9VU0VSX05BTUUQtCkSJAofR0VUX1VTRVJfVVBEQVRFX05BTUVfUEVSTUlTU0lPThC1KRIbChZQVVNIX1VTRVJfTE9HT1VUX0VWRU5UELYpEiYKIVBVTExfVVNFUl9VUERBVEVfRklFTERfUEVSTUlTU0lPThC3KRITCg5QVVRfVVNFUl9BTElBUxCYKhIXChJQVVRfR1JPVVBfTklDS05BTUUQmSoSFAoPUFVTSF9VU0VSX0FMSUFTEJoqEhgKE1BVU0hfR1JPVVBfTklDS05BTUUQmyoSIAobUFVMTF9NRVNTQUdFX0kxOE5fVEVNUExBVEVTEPwqEhQKD1BVTExfVVNFUl9OQU1FUxD9KhIcChdQVUxMX0NIQVRfU0hBUkVfSElTVE9SWRDgKxIbChZQVVRfQ0hBVF9TSEFSRV9ISVNUT1JZEOErEhwKF1BBVENIX0NIQVRfU0hBUkVfU1RBVFVTEOIrEh8KGlBVTExfQ0hBVF9TSEFSRV9UT0tFTl9JTkZPEMQsEiQKH0NSRUFURV9GQUNFX1RPX0ZBQ0VfQVBQTElDQVRJT04QqC0SIQocUFVTSF9GQUNFX1RPX0ZBQ0VfQVBQTElDQU5UUxCpLRIbChZKT0lOX0ZBQ0VfVE9fRkFDRV9DSEFUEKotEhsKFlBBVENIX0NIQVRfQURNSU5fVVNFUlMQjC4SGgoVUFVTSF9DSEFUX0FETUlOX1VTRVJTEI0uEhoKFVBVTExfQ0hBVF9BRE1JTl9VU0VSUxCOLhITCg5QVUxMX0NIQVRfVEFCUxCXLhIUCg9DUkVBVEVfQ0hBVF9UQUIQmC4SFAoPREVMRVRFX0NIQVRfVEFCEJkuEhYKEVJFT1JERVJfQ0hBVF9UQUJTEJouEhUKEFVQREFURV9DSEFUX1RBQlMQmy4SEwoOUFVTSF9DSEFUX1RBQlMQnC4SGwoWUFVUX0NIQVRfT05MSU5FX1NUQVRVUxChLhIdChhQVUxMX0NIQVRfT1BFTl9JRF9CWV9JRFMQoi4SGwoWQU5BTFlaRV9DSEFUVEVSU19TSEVFVBCrLhIlCiBDUkVBVEVfSU1QT1JUX0NIQVRfQ0hBVFRFUl9TSEVFVBCsLhIbChZQVUxMX0NIQVRfVEhFTUVfQllfSURTELQuEhsKFlBBVENIX0NIQVRfVEhFTUVfQllfSUQQtS4SFQoQUFVTSF9DSEFUX1RIRU1FUxC2LhIgChtQVUxMX1NZU1RFTV9DSEFUX1RIRU1FX0xJU1QQty4SGgoVUFVMTF9DSEFUX0NIQVRURVJTX1YyEL4uEhcKElNZTkNfQ0hBVF9DSEFUVEVSUxC/LhIdChhHRVRfQ0hBVF9NWV9BSV9JTklUX0lORk8QxC4SDQoIUFVTSF9TSUQQ8C4SIQocUFVTSF9CQUNLR1JPVU5EX05PVElGSUNBVElPThDxLhIdChhQVVNIX0JBTk5FUl9OT1RJRklDQVRJT04Q8i4SHQoYUFVMTF9DSEFUVEVSX1NVQlNDUklCRVJTEJwxEhkKFFBVTExfTkVXRVNUX1BPTElDSUVTEKc2EhgKE1BVVF9ORVdFU1RfUE9MSUNJRVMQqDYSHgoZUFVUX0RFVklDRV9OT1RJRllfU0VUVElORxDYNhIeChlQVVNIX0RFVklDRV9PTkxJTkVfU1RBVFVTENk2Eh8KGlBVTExfREVWSUNFU19PTkxJTkVfU1RBVFVTENo2Ei0KKFBVVF9ERVZJQ0VfTk9USUZZX1NFVFRJTkdfRElTQUJMRV9OT1RJRlkQ2zYSLgopUFVUX0RFVklDRV9OT1RJRllfU0VUVElOR19TVElMTF9OT1RJRllfQVQQ3DYSGwoWUFVTSF9VU0VSX0xPR0lOX1NUQVRVUxDdNhIfChpQVUxMX0RFVklDRV9OT1RJRllfU0VUVElORxDeNhIXChJQVVRfREVWSUNFX1NFVFRJTkcQ3zYSGAoTUFVMTF9ERVZJQ0VfU0VUVElORxDgNhIlCiBQVVNIX0RFVklDRV9ORVRXT1JLX0FDQ0VTU19FVkVOVBDpNhIWChFQVUxMX1VTRVJfU0VUVElORxDhNhIXChJQQVRDSF9VU0VSX1NFVFRJTkcQ4jYSFgoRUFVTSF9VU0VSX1NFVFRJTkcQ4zYSHwoaUFVUX1dBWV9UT19GSU5EX01FX1NFVFRJTkcQ5DYSIAobUFVTSF9XQVlfVE9fRklORF9NRV9TRVRUSU5HEOU2EicKIlBVVF9XQVlfVE9fQUREX0ZSSUVORF9TRVRUSU5HX0lURU0Q5jYSKAojUFVTSF9XQVlfVE9fQUREX0ZSSUVORF9TRVRUSU5HX0lURU0Q5zYSHAoXUFVMTF9BRERfRlJJRU5EX1NFVFRJTkcQ6DYSGwoWUFVMTF9TUEVMTF9DSEVDS19XT1JEUxDqNhIfChpQVVNIX1NQRUxMX0NIRUNLX0FERF9XT1JEUxDrNhIeChlQVVRfU1BFTExfQ0hFQ0tfQUREX1dPUkRTEOw2EjAKK1BVTExfTUVTU0FHRV9OT1RJRklDQVRJT05TX09GRl9EVVJJTkdfQ0FMTFMQ7TYSHQoYUFVMTF9GRUVEX0ZJTFRFUl9TRVRUSU5HEO42EhwKF1BVVF9GRUVEX0ZJTFRFUl9TRVRUSU5HEO82Eh0KGFBVU0hfRkVFRF9GSUxURVJfU0VUVElORxDwNhIhChxQQVRDSF9VTklWRVJTQUxfVVNFUl9TRVRUSU5HEPE2EiAKG1BVTExfVU5JVkVSU0FMX1VTRVJfU0VUVElORxDyNhIgChtQVVNIX1VOSVZFUlNBTF9VU0VSX1NFVFRJTkcQ8zYSOQo0UFVUX0RFVklDRV9OT1RJRllfU0VUVElOR19TVElMTF9OT1RJRllfU1BFQ0lBTF9GT0NVUxD0NhIhChxQVUxMX0RZTkFNSUNfRU1PSklfUkVTT1VSQ0VTEPU2Eh8KGlBVTExfVEhSRUVfQ09MVU1OU19TRVRUSU5HEPY2EiAKG1BBVENIX1RIUkVFX0NPTFVNTlNfU0VUVElORxD3NhIfChpQVVNIX1RIUkVFX0NPTFVNTlNfU0VUVElORxD4NhIZChRQVUxMX1RPT0xLSVRfU0VUVElORxCANxIVChBQVVRfREVWSUNFX1RPS0VOELw3EhAKC1BVU0hfQUNUSU9OEL03EiIKHVBVVF9ERVZJQ0VfQkFTSUNfTU9ERV9TRVRUSU5HEL43EiMKHlBVTExfREVWSUNFX0JBU0lDX01PREVfU0VUVElORxC/NxIXChJQVUxMX1BST0RVQ1RfR1VJREUQzToSGQoUREVMRVRFX1BST0RVQ1RfR1VJREUQ0DoSFwoSUFVTSF9QUk9EVUNUX0dVSURFENE6EhIKDVBVTExfR1VJREVfVjIQ0joSGwoWR0VUX1VTRVJfR1VJREVfUkVRVUVTVBDTOhImCiFQT1NUX1VTRVJfQ09OU1VNSU5HX0dVSURFX1JFUVVFU1QQ1DoSHwoaVVNFUl9HVUlERV9VUERBVEVEX1JFUVVFU1QQ1ToSHQoYUFVMTF9JQ0VfQlJFQUtJTkdfU1RBVFVTELA7EhwKF1BVVF9JQ0VfQlJFQUtJTkdfQUNUSU9OELE7EhwKF1BVVF9UT1VSX0dVSURFX0FDSElFVkVEELI7Eh4KGVBVVF9VUERBVEVfVEVOQU5UX1BBQ0tBR0UQszsSFQoQUFVUX1RSVVNURURfTUFJTBC0OxIbChZQVUxMX1RSVVNURURfTUFJTF9JTkZPELU7EiAKG0dFVF9BRFZFUlRJU0VfU09VUkNFX0NPTkZJRxC2OxIdChhQVVNIX0dVSURFX1RPX1JBVEVfU1RBVEUQlDwSHQoYUFVMTF9HVUlERV9UT19SQVRFX1NUQVRFEJU8EhwKF1BVVF9HVUlERV9UT19SQVRFX0VWRU5UEJY8Eh0KGFBVU0hfRE9VQkFPX1VTRVJfU0VUVElORxD4PBIdChhQVUxMX0RPVUJBT19VU0VSX1NFVFRJTkcQ+TwSHwoaVVBEQVRFX0RPVUJBT19VU0VSX1NFVFRJTkcQ+jwSFgoRUFVTSF9TWU5DX0RFVklDRVMQwT4SGAoTUFVMTF9HRU9fSU5GT19CWV9JUBDCPhIkCh9QVUxMX0NFUlRJRklDQVRFX0RFQ1JZUFRJT05fS0VZEMM+EjAKK1BVTExfQ0hBVF9NRU1CRVJfU1VQUF9ST0xFX0FQUFJPVkFMX1NFVFRJTkcQxD4SJwoiUFVUX0NIQVRfTUVNQkVSX1NVUFBfUk9MRV9BUFBST1ZBTBDFPhIRCgxQVVNIX1RIUkVBRFMQpD8SEQoMUEFUQ0hfVEhSRUFEEKU/EhYKEVBVTExfQ0hBVF9USFJFQURTEKY/EhkKFFBVTExfVEhSRUFEX01FU1NBR0VTEKc/EhgKE1BVU0hfVEhSRUFEX1NFVFRJTkcQqD8SGAoUUEFUQ0hfVEhSRUFEX1NFVFRJTkcQWxIVChBQVVRfUkVBRF9USFJFQURTEKk/EhsKFlBVU0hfVEhSRUFEX1JFQURfU1RBVEUQqj8SHgoZUFVMTF9USFJFQURTX0JZX1BPU0lUSU9OUxCsPxIlCiBQVUxMX1RIUkVBRF9NRVNTQUdFX0JZX1BPU0lUSU9OUxCtPxIYChNQVVNIX1RIUkVBRF9VUERBVEVEEK4/EhgKE1BVTExfVEhSRUFEU19CWV9JRFMQrz8SGQoUUFVMTF9USFJFQURTX1NFVFRJTkcQsD8SGQoUUFVTSF9USFJFQURTX1JFTU9WRUQQsT8SHQoYUFVTSF9USFJFQURfTVVUQUJMRV9JTkZPELI/EicKIlBVU0hfVEhSRUFEX05PX1JFUExZX0NPVU5UX1VQREFURUQQsz8SFQoQUFVMTF9USFJFQURfQ0FSRBC0PxIbChZQVVNIX1RIUkVBRF9TVEFURV9JTkZPELU/EiIKHVBVTExfRklMVEVSRURfVEhSRUFEU19CWV9DSEFUELY/Eh8KGlBVU0hfVEhSRUFEX0ZJTFRFUl9VUERBVEVEELc/EiEKHFBVTExfUkVDT01NRU5EQVRJT05TX0JZX1VTRVIQuD8SGAoTUFVUX1JFQURfTVlfVEhSRUFEUxC5PxIfChpQVVNIX01ZX1RIUkVBRFNfUkVBRF9TVEFURRC6PxIgChtQVUxMX1RIUkVBRF9BTk9OWU1PVVNfUVVPVEEQuz8SIAobUFVTSF9USFJFQURfQU5PTllNT1VTX1FVT1RBELw/EhUKEFBVVF9USFJFQURfU0hBUkUQvT8SHgoZUFVMTF9DSEFUX1RFTVBMQVRFX0JBTk5FUhC+PxIkCh9QVVRfQ0hBVF9URU1QTEFURV9CQU5ORVJfU1RBVFVTEL8/EhwKF1BVU0hfVEhSRUFEX1VQREFURV9JTkZPEMA/EhoKFVBVVF9UT1BJQ1NfUkVBRF9TVEFURRDsQBIiCh1QVUxMX1JFQ09NTUVOREVEX1RPUElDX0dST1VQUxDtQBIZChRQVUxMX01ZX1RPUElDX0dST1VQUxDuQBIeChlQVUxMX1RPUElDX0dST1VQU19UT19QT1NUEO9AEiQKH1VOSU5URVJFU1RfVE9QSUNfR1JPVVBfRk9SX1VTRVIQ9kASHgoZVU5JTlRFUkVTVF9UT1BJQ19GT1JfVVNFUhD3QBIdChhVTklOVEVSRVNUX1VTRVJfRk9SX1VTRVIQ+EASHQoYUFVMTF9UT1BJQ19HUk9VUFNfQllfSURTEP9AEhgKE1BVU0hfVE9QSUNfTUVTU0FHRVMQgEESLgopUFVUX1RPUElDX0dST1VQX01FTUJFUl9WSUFfUkVDT01NRU5EQVRJT04QgUESJgohUFVMTF9UT1BJQ19HUk9VUF9UQUJfTk9USUZJQ0FUSU9OEIJBEh0KGFBVU0hfVE9QSUNfR1JPVVBfU0VUVElORxCDQRIVChBQVVNIX1RPUElDX0dST1VQEIRBEh0KGFBVTExfVE9QSUNfR1JPVVBfU0VUVElORxCFQRIQCgtTRUFSQ0hfVVNFUhD4VRITCg5TRUFSQ0hfTUVTU0FHRRD5VRIWChFTRUFSQ0hfR1JPVVBfQ0hBVBD6VRILCgZTRUFSQ0gQ+1USEwoOU0VBUkNIX0NIQVRURVIQ/FUSEQoMU01BUlRfU0VBUkNIEP1VEhgKE1BVVF9TRUFSQ0hfRkVFREJBQ0sQ/lUSIQocUFVMTF9TRUFSQ0hfSElTVE9SWV9FTlRJVElFUxD/VRIhChxERUxFVEVfU0VBUkNIX0hJU1RPUllfRU5USVRZEIBWEhEKDFNFR01FTlRfVEVYVBCBVhIZChRTRUFSQ0hfRU1BSUxfTUVTU0FHRRCCVhIPCgpTRUFSQ0hfRE9DEINWEhcKEklOVEVHUkFUSU9OX1NFQVJDSBCEVhIgChtQVUxMX0NIQVRfUkVTT1VSQ0VfTUVTU0FHRVMQhVYSGwoWUFVUX1NFQVJDSF9NU0dfSElTVE9SWRCGVhIcChdQVUxMX1NFQVJDSF9NU0dfSElTVE9SWRCHVhIeChlERUxFVEVfU0VBUkNIX01TR19ISVNUT1JZEIhWEhgKE1BVTExfU0VBUkNIX1NFVFRJTkcQiVYSFwoSUFVMTF9TRUFSQ0hfRklMVEVSEIpWEhsKFlNFQVJDSF9DVVNUT01JWkVfRklFTEQQi1YSEwoOU0VBUkNIX0lOX0NIQVQQjFYSFQoQVU5JVkVSU0FMX1NFQVJDSBCNVhIdChhFWFRFUk5BTF9SRVNPVVJDRV9TRUFSQ0gQjlYSGgoVUFVMTF9VU0VSX1NFQVJDSF9UQUJTEI9WEhkKFFBVVF9VU0VSX1NFQVJDSF9UQUJTEJBWEh8KGlBVTExfQVZBSUxBQkxFX1NFQVJDSF9UQUJTEJFWEh0KGFBVVF9TRUFSQ0hfUVVFUllfSElTVE9SWRCSVhIgChtERUxFVEVfU0VBUkNIX1FVRVJZX0hJU1RPUlkQk1YSGgoVT1BFTl9VTklWRVJTQUxfU0VBUkNIEJRWEhQKD1NQT1RMSUdIVF9UUkFDRRCVVhIbChZQVUxMX1NQT1RMSUdIVF9GRUFUVVJFEJZWEiUKIFBVTExfVVNFUl9JTlRFTlRJT05fU0VBUkNIX1FVRVJZEJdWEiQKH1BVTExfRkVBVFVSRV9FTkdJTkVFUklOR19DT05GSUcQmFYSHgoZUFVMTF9TUE9UTElHSFRfRkVBVFVSRV9WMhCZVhIMCgdNU0VBUkNIEJpWEiAKG1BVTExfU1BPVExJR0hUX1NFQVJDSF9NRVRBUxCbVhIgChtQVUxMX1NFQVJDSF9SRVNPVVJDRV9DSEFOR0UQnFYSIAobUFVMTF9TRUFSQ0hfU0hPV19QRVJNSVNTSU9OEJ1WEiMKHlVQTE9BRF9VU0VSX1NFQVJDSF9UQUJfVklTSUJMRRCeVhISCg1TSE9VTERfQU5TV0VSEKBWEhIKDVNUUkVBTV9BTlNXRVIQoVYSFQoQUFVTSF9OTFNfUkVTVUxUUxCiVhIVChBQVUxMX05MU19SRVNVTFRTEKNWEhgKE0NMSUNLX1NIT1VMRF9BTlNXRVIQpFYSFAoPUFVUX1NFQVJDSF9WSUVXEKpWEhYKEVBVTExfU0VBUkNIX1ZJRVdTEKtWEhcKElVQREFURV9TRUFSQ0hfVklFVxCsVhIXChJERUxFVEVfU0VBUkNIX1ZJRVcQrVYSIAobUFVUX1NFQVJDSF9RVUVSWV9ISVNUT1JZX1YyEK5WEiQKH1BVVF9ET1VCQU9fU0VBUkNIX1FVRVJZX0hJU1RPUlkQr1YSJQogUFVMTF9ET1VCQU9fU0VBUkNIX1FVRVJZX0hJU1RPUlkQsFYSJwoiREVMRVRFX0RPVUJBT19TRUFSQ0hfUVVFUllfSElTVE9SWRCxVhIfChpQVUxMX1JFQ09NTUVORF9GSUxURVJfREFUQRC0VhIhChxSRVNFVF9SRUNPTU1FTkRfRklMVEVSX0NPVU5UELVWEiAKG1BVTExfUkVDT01NRU5EX0NBUFNVTEVfREFUQRC2VhIUCg9QVVRfRklMVEVSX0RBVEEQt1YSEwoOR0VUX1NVR19GSUxURVIQvlYSEAoLUFVUX05FV19UQUIQv1YSGQoUUFVMTF9TRUFSQ0hfU0VUVElOR1MQwFYSGAoTUFVUX1NFQVJDSF9TRVRUSU5HUxDBVhIZChRQVVNIX1NFQVJDSF9TRVRUSU5HUxDCVhIeChlQVUxMX1JFTkRFUl9EU0xfVEVNUExBVEVTEMhWEiUKIFBVTExfTE9DQUxfU0VBUkNIX0lOU1RBTlRfQ09ORklHEMlWEhIKDUdFVF9GVUxMX1BBVEgQ0lYSGgoVUFVMTF9DTE9TRVNUX0NIQVRURVJTENxWEhcKElBVTExfQ0xPU0VTVF9DSEFUUxDdVhIoCiNQVUxMX0xPQ0FMX1NFQVJDSF9SQU5LX01PREVMX0NPTkZJRxDeVhIXChJQVUxMX1NQRUNJQUxfRk9DVVMQ31YSGQoUVVBEQVRFX1NQRUNJQUxfRk9DVVMQ4FYSHAoXUFVTSF9VU0VSX1NQRUNJQUxfRk9DVVMQ4VYSGwoWU1BFQ0lBTF9GT0NVU19HVUlEQU5DRRDiVhISCg1TQVZFX0NBUkRfRE9DEMBXEhMKDkdFVF9ERUJVR19JTkZPEMFXEhoKFVBVTExfUEVSTV9FWFBMQU5BVElPThDCVxISCg1QVUxMX0RPQ19JTkZPEMNXEhkKFFBVTExfS05PV0xFREdFX1NDT1BFEMRXEh0KGERFTEVURV9TRUFSQ0hfUUFfSElTVE9SWRDGVxIbChZQVUxMX1NFQVJDSF9RQV9ISVNUT1JZEMdXEhUKEFJFUE9SVF9TRUFSQ0hfUUEQyFcSGgoVS05PV0xFREdFX01BUktFVF9SRUNPEMlXEiEKHFVQTE9BRF9TRUxFQ1RFRF9XT1JEX0NPTlRFWFQQylcSHwoaS05PV0xFREdFX01BUktFVF9IT1RfUVVFUlkQy1cSJAofS05PV0xFREdFX1BVVF9FWENMVURFX1JFRkVSRU5DRRDMVxIkCh9VUExPQURfU1VQUExFTUVOVF9RVUVSWV9DT05URVhUEM1XEhMKDkdFVF9TS0lMTF9MSVNUENBXEhkKFFVQREFURV9WSUVXRURfU0tJTExTENFXEhwKF0dFVF9VU0VSX1NFTEVDVEVEX1NLSUxMENJXEhkKFEdFVF9QTEFDRUhPTERFUl9QT09MENNXEhwKF1NFQVJDSF9ERVBUX0ZPUl9NRU5USU9OENRXEhkKFFBVTExfUEFDS0VUU19CWV9TSURTEOFdEgkKBFNZTkMQ4l0SIgodUFVMTF9QSVBFTElORV9JTlRFUlZBTF9CWV9TSUQQ410SJAofUkVHSVNURVJfQ1JPU1NfVEVOQU5UX1VTRVJfSU5GTxDkXRIgChtQVVRfSU9TX0xJVkVfQUNUSVZJVFlfVE9LRU4Q5V0SEQoMUFVMTF9PTkNBTExTEMllEhQKD1BVVF9PTkNBTExfQ0hBVBDKZRIZChRQVUxMX0FMTF9PTkNBTExfVEFHUxDLZRIYChNQVUxMX09OQ0FMTF9CWV9UQUdTEMxlEhYKEVBVVF9GSU5JU0hfT05DQUxMEM1lEhsKFlBVTExfSE9NRV9QQUdFX09OQ0FMTFMQzmUSFgoRUFVUX0lOVklURV9PTkNBTEwQz2USGAoTUFVMTF9PTkNBTExTX0JZX0lEUxDQZRIRCgxQVVNIX09OQ0FMTFMQ0WUSEwoOUFVMTF9DSEFUX0JPVFMQrGYSHQoYUFVMTF9DSEFUX0NBTkRJREFURV9CT1RTEK1mEhQKD1BVU0hfTE9HX1VQTE9BRBCuZhIVChBQVVNIX0xPR19SRVFVRVNUEK9mEhQKD01HRVRfQk9UX0NPTkZJRxC6ZhITCg5TRVRfQk9UX0NPTkZJRxC7ZhIYChNQVVNIX0JPVF9NVVRFRF9JTkZPELxmEhcKElBVU0hfTE9HX1JFVFJJRVZBTBC2ZhIdChhSRVRSWV9MT0dfUkVUUklFVkFMX1RBU0sQt2YSJAofRkVUQ0hfTE9HX1JFVFJJRVZBTF9UQVNLX1NUQVRVUxC4ZhIcChdDT05ORUNUX0xPR0lGSUVSX1NUUkVBTRC5ZhIeChlQVVNIX0NBTkNFTF9MT0dfUkVUUklFVkFMEL1mEhMKDlBBVENIX0RPQ19QUkVNELFtEg0KCFBVU0hfRE9DELJtEg4KCVBVTExfRE9DUxCzbRISCg1QVVNIX0RPQ19GRUVEELRtEhoKFVBVTExfRE9DX0ZFRURTX0JZX0lEUxC1bRIOCglQVVNIX0RPQ1MQtm0SEwoOUFVMTF9ET0NfUEVSTVMQt20SEQoMUFVUX0RPQ19GRUVEELhtEhYKEVBVTExfRE9DU19ISVNUT1JZELltEhcKElBVTExfQ09OVkVSVF9UT0tFThC6bRIbChZQQVRDSF9ET0NfRkVFRF9TRVRUSU5HELttEhoKFVBVU0hfRE9DX0ZFRURfU0VUVElORxC8bRIbChZQVUxMX0RPQ19GRUVEX1NFVFRJTkdTEL1tEhoKFVBVVF9SRUFEX0RPQ19NRVNTQUdFUxC+bRIVChBQVUxMX0RPQ19CWV9VUkxTEL9tEiEKHFBVTExfRE9DX01FU1NBR0VfUkVBRF9TVEFUVVMQwG0SDgoJUFVTSF9ET0MyEMFtEg8KClBVU0hfRE9DUzIQwm0SEAoLUFVTSF9UT19ET0MQlG4SGQoUUFVTSF9ET0NfSU1BR0VfUkVMQVkQlW4SGwoWUFVMTF9ET0NfRkVFRF9NU0dfVE1QTBCWbhIVChBQVVNIX0RPQ19TRVRUSU5HEJduEh0KGFBVU0hfRE9DX09GRkxJTkVfU0VUVElORxCYbhIZChRQVVNIX0NDTV9SQ0VfTUVTU0FHRRCZbhIRCgxTRU5EX0hPTkdCQU8QmXUSEQoMR1JBQl9IT05HQkFPEJp1EhMKDlVQREFURV9IT05HQkFPEJt1EhYKEVBVTExfSE9OR0JBT19JTkZPEJx1Eh0KGFBVTExfSE9OR0JBT19SRUNWX0RFVEFJTBCddRIYChNQVUxMX1dBTExFVF9CQUxBTkNFEJ51Eh0KGFBVTExfU0VORF9IT05HQkFPX1JFQ09SRBCfdRIdChhQVUxMX0dSQUJfSE9OR0JBT19SRUNPUkQQoHUSHAoXUFVMTF9IT05HQkFPX0NPVkVSX0xJU1QQoXUSHQoXR1JBQl9DT01NRVJDSUFMX0hPTkdCQU8Q0YwBEh8KGVVQREFURV9DT01NRVJDSUFMX0hPTkdCQU8Q0owBEiIKHFBVTExfQ09NTUVSQ0lBTF9IT05HQkFPX0lORk8Q04wBEikKI1BVTExfQ09NTUVSQ0lBTF9IT05HQkFPX1JFQ1ZfREVUQUlMENSMARIdChhQVUxMX01FU1NBR0VfQUNUSU9OX0xJU1QQgH0SEAoKUFVUX1VSR0VOVBCw6gESFAoOUFVUX1VSR0VOVF9BQ0sQseoBEhEKC1BVU0hfVVJHRU5UELLqARIVCg9QVVNIX1VSR0VOVF9BQ0sQs+oBEh0KF1BVTExfVVJHRU5UX1dBSVRJTkdfQUNLELTqARIcChZQVUxMX1VSR0VOVF9BQ0tfU1RBVFVTELXqARIeChhDT05GSVJNX1VSR0VOVF9BQ0tfQllfSUQQtuoBEhgKElBVTExfVVJHRU5UX1BIT05FUxC36gESJgogUFVTSF9GQUlMRURfVVJHRU5UX05PVElGWV9SRVNVTFQQuOoBEiEKG1BVTExfU0VMRUNUX1VSR0VOVF9DSEFUVEVSUxC56gESHwoZUFVMTF9VUkdFTlRfQ0hBVF9DSEFUVEVSUxC66gESHwoZUFVMTF9DSEFUVEVSU19VUkdFTlRfSU5GTxC76gESGQoTQ0xPU0VfVVJHRU5UX05PVElDRRC86gESEgoMUFVMTF9UVF9VU0VSEMG4AhIRCgtQVVRfVFRfVVNFUhDCuAISHAoWUFVTSF9BUFBfQ0VOVEVSX1VQREFURRCkuQISGQoTUFVTSF9NQUxBSVRBX1VQREFURRCluQISHwoZUFVTSF9BUFBfQ0VOVEVSX1VQREFURV9WMhCmuQISHAoWUFVTSF9URU5BTlRfQVBQX1VQREFURRCnuQISHQoXUFVTSF9NSU5JUFJPR1JBTV9VUERBVEUQqLkCEhgKElBVU0hfT1BFTl9BUFBfRkVFRBCpuQISJAoeUFVTSF9PUEVOX0FQUF9OT1RJRllfUkVBRF9TWU5DEKq5AhIcChZQVVNIX09QRU5fQVBQX1NFVFRJTkdTEKu5AhIeChhQVVNIX01JTklQUk9HUkFNX1BSRVZJRVcQrLkCEhYKEFBVU0hfT1BFTl9DT01NT04Qr7kCEhoKFFBVTExfTUFMQUlUQV9QUkVWSUVXELC5AhIYChJQVUxMX1VMQVdBX1BSRVZJRVcQsbkCEiwKJlBVTExfTUFMQUlUQV9OT1RJRklDQVRJT05fVU5SRUFEX0NPVU5UELK5AhIqCiRQVUxMX1VMQVdBX05PVElGSUNBVElPTl9VTlJFQURfQ09VTlQQs7kCEh0KF1NFVF9NQUxBSVRBX0pVTVBfUkVQT1JUELS5AhIYChJQVUxMX0FQUF9DSEFUX0ZFRUQQtbkCEiEKG1BVU0hfQVBQX0NIQVRfRkVFRF9TRVRUSU5HUxC2uQISFQoPQ1JFQVRFX0FQUF9DSEFUELe5AhIbChVQVUxMX0FQUF9DSEFUX0ZFRURfSUQQuLkCEiAKGlNFVF9BUFBfQ0hBVF9OT1RJQ0VfQ09ORklHELm5AhIaChRQVVNIX0dBREdFVF9BUFBfREFUQRC6uQISHwoZUFVMTF9PUEVOX0FQUF9CQURHRV9OT0RFUxC7uQISHwoZUFVTSF9PUEVOX0FQUF9CQURHRV9OT0RFUxC8uQISIgocUFVMTF9PUEVOX0FQUF9CQURHRV9TRVRUSU5HUxC9uQISGAoSUFVMTF9PUEVOX0FQUF9GRUVEEL65AhIhChtQVVNIX09QRU5QTEFURk9STV9DT05UQUlORVIQv7kCEh4KGE1ZX0FJX0FMTF9FWFRFTlNJT05fTElTVBDAuQISHwoZTVlfQUlfU0VMRl9FWFRFTlNJT05fTElTVBDBuQISIAoaTVlfQUlfTUdFVF9FWFRFTlNJT05fQllfSUQQwrkCEh0KF0RFTEVURV9PUEVOUExBVEZPUk1fQVBQEMO5AhIYChJQVUxMX09QRU5fQVBQX0lORk8QxLkCEhMKDVBVTExfQk9UX01FTlUQzbkCEhwKFlRSSUdHRVJfQk9UX01FTlVfRVZFTlQQzrkCEhoKFFBVU0hfQk9UX01FTlVfQ0hBTkdFENG5AhIqCiRBUFBfQVBQTFlfQUREX0VYVEVSTkFMX1VTRVJfVE9fU0NPUEUQ17kCEhsKFVBVU0hfRElBR05PU0VfUkVRVUVTVBCJugISFAoOUFVMTF9QSVBFX0xJU1QQ8KIEEiYKIFBVTExfTVVMVElfUElQRV9QQUNLRVRTX0JZX1RZUEVTEPGiBBIkCh5QVUxMX01VTFRJX1BJUEVfUEFDS0VUU19CWV9JRFMQ8qIEEiQKHlBVTExfVU5TVVBQT1JUX1BJUEVfVFlQRV9JTkZPUxDzogQSLQonUFVMTF9NVUxUSV9QSVBFX1BBQ0tFVFNfQllfU1VQUE9SVF9UWVBFEPSiBBIcChZQVUxMX0NIQVRfQ0hBTkdFX0xJU1RTEPWiBBIdChdQVUxMX01VTFRJX1BJUEVfUEFDS0VUUxD2ogQSFwoRUFVMTF9DSEFOR0VfTElTVFMQ96IEEhkKE0NIRUNLX1BJUEVTX1RJTUVPVVQQ+KIEEhQKDlBVTExfUk9PTV9JTkZPEOj4BBIWChBTVUJNSVRfRkVFREJBQ0tTEIb5BBIcChZVUERBVEVfU0NIRURVTEVfU1RBVFVTENuABRISCgxTS0VUQ0hfU1RBUlQQwa8FEiIKHFVQREFURV9TSEFSRV9TQ1JFRU5fU0VUVElOR1MQwq8FEhsKFUZFVENIX0FMTF9TS0VUQ0hfREFUQRDDrwUSIgocQVBQTFlfQllURVZJRVdfQUNDRVNTSUJJTElUWRDErwUSJAoeRkVUQ0hfU0tFVENIX0RBVEFfQllfU0hBUEVfSURTEMWvBRIZChNQVUxMX1NLRVRDSF9ISVNUT1JZEMavBRIZChNVUExPQURfU0hBUkVfU1RBVFVTEMevBRIZChNTSEFSRV9DQ01fSU5fU0NSUkVOENSvBRIUCg5SRU1PVEVfQ09OVFJPTBDLrwUSJAoeVVBEQVRFX1JFTU9URV9DT05UUk9MX1NFVFRJTkdTEMyvBRIYChJHRVRfQURNSU5fU0VUVElOR1MQza8FEh0KF1VQTE9BRF9QQVJUSUNJUEFOVF9JTkZPEM+vBRIlCh9HRVRfQURNSU5fTUVESUFfU0VSVkVSX1NFRVRJTkdTENCvBRIcChZHRVRfQURNSU5fT1JHX1NFVFRJTkdTENGvBRIgChpHRVRfQkFUQ0hfVkNfQURNSU5fU0VUVElORxDSrwUSHAoWVVBMT0FEX1ZDX1AyUF9SVENfREFUQRDTrwUSHAoWUFVMTF9BTExfRk9MTE9XX1NUQVRFUxDzrwUSGgoUR0VUX0ZPTExPV19SRVNPVVJDRVMQ9K8FEhQKDkdFVF9VUkxfQlJJRUZTEPWvBRIZChNVUExPQURfR09PR0xFX1RPS0VOEPavBRIWChBHRVRfR09PR0xFX1RPS0VOEPevBRIZChNSRVZPS0VfR09PR0xFX1RPS0VOEPivBRIbChVFWENIQU5HRV9HT09HTEVfVE9LRU4Q+a8FEhkKE1JFUExZX0ZPTExPV19OT1RJQ0UQ+q8FEhsKFVBVU0hfVkNfU0hBUkVfTUVTU0FHRRCksAUSGAoST1BFUkFURV9XSElURUJPQVJEEKWwBRIdChdPUEVSQVRFX1dISVRFQk9BUkRfUEFHRRCmsAUSFwoRVVBMT0FEX1dISVRFQk9BUkQQp7AFEh4KGFBVTExfV0hJVEVCT0FSRF9TTkFQU0hPVBCosAUSFQoPU0FWRV9XSElURUJPQVJEEKmwBRIMCgZWQ19PQ1IQibEFEhYKEFdISVRFQk9BUkRfU1RBUlQQleowEhUKD1dISVRFQk9BUkRfU1RPUBCW6jASHwoZRkVUQ0hfQUxMX1dISVRFQk9BUkRfREFUQRCX6jASJAoeU0VORF9HUk9PVF9DRUxMU19NRUVUSU5HX1NQQUNFEKi3BRIkCh5QVUxMX0dST09UX0NFTExTX01FRVRJTkdfU1BBQ0UQqbcFEhYKEFBVU0hfR1JPT1RfQ0VMTFMQqrcFEisKJUdST09UX0NIQU5ORUxfSEFORFNIQUtFX01FRVRJTkdfU1BBQ0UQq7cFEh0KF1BVU0hfTUVFVElOR19TUEFDRV9JTkZPEKy3BRIYChJVUERBVEVfUkVBRF9DVVJTT1IQrbcFEiEKG0dFVF9NRUVUSU5HX1NQQUNFX01FVEFfREFUQRCutwUSHgoYR0VUX01FRVRJTkdfU1BBQ0VfQUdFTkRBEK+3BRIdChdHRVRfTUVFVElOR19TUEFDRV9GSUxFUxCwtwUSIQobR0VUX1VOSVFVRV9JRF9CWV9NRUVUSU5HX0lEELG3BRImCiBHUk9PVF9DSEFOTkVMX1BJTkdfTUVFVElOR19TUEFDRRCytwUSIwodQ0hFQ0tfSU5URVJWSUVXX01FRVRJTkdfU1BBQ0UQs7cFEh0KF09DQ1VQWV9JTlRFUlZJRVdfQ09ESU5HELS3BRIiChxTRU5EX0lOVEVSVklFV19DT0RJTkdfQUNUSU9OELW3BRIbChVVUERBVEVfTUlOVVRFU19TVEFUVVMQtrcFEicKIUNIRUNLX0lOVEVSVklFV19NRUVUSU5HX1BST01PVElPThC3twUSFgoQU0VORF9HUk9PVF9DRUxMUxDatwUSFgoQUFVMTF9HUk9PVF9DRUxMUxDbtwUSHQoXR1JPT1RfQ0hBTk5FTF9IQU5EU0hBS0UQ3LcFEhgKEkdST09UX0NIQU5ORUxfUElORxDdtwUSHwoZUFVMTF9VUFNUUkVBTV9HUk9PVF9DRUxMUxDetwUSKQojUFVTSF9WSURFT19DSEFUX1dFQklOQVJfQUdHUkVHQVRJT04QjLgFEhYKEEdFVF9XRUJJTkFSX1JPTEUQjbgFEigKIkdFVF9XRUJJTkFSX1JFSEVBUlNBTF9NT0RFX1NFVFRJTkcQjrgFEikKI1BVU0hfV0VCSU5BUl9SRUhFQVJTQUxfTU9ERV9TRVRUSU5HEI+4BRIcChZTRVRfV0VCSU5BUl9TVEFHRV9JTkZPEJC4BRIiChxHRVRfQ0FMRU5EQVJfTUVFVElOR19CWV9VSURTEPG4BRIeChhHRVRfSElTVE9SWV9NRUVUSU5HX0xJU1QQ8rgFEhsKFUdFVF9DQUxMX0hJU1RPUllfTElTVBDzuAUSHgoYQkFUQ0hfR0VUX01FRVRJTkdfQllfSURTEPS4BRIlCh9CQVRDSF9HRVRfVU5JUVVFX0lEX0JZX0VWRU5UX0lEEPW4BRIiChxHRVRfVkNfVEFCX1RPVEFMX01JU1NFRF9DQUxMEPa4BRIgChpWQ19UQUJfTUlTU0VEX0NBTExfQ09ORklSTRD3uAUSHQoXR0VUX1ZDX1RBQl9ISVNUT1JZX0xJU1QQ+LgFEh8KGUdFVF9WQ19UQUJfTUVFVElOR19ERVRBSUwQ+bgFEiAKGk5PVElGWV9WQ19UQUJfTUlTU0VEX0NBTExTEPu4BRImCiBDUkVBVEVfVkNfVEFCX01FRVRJTkdfU1RBVElTVElDUxD8uAUSGAoSUFVTSF9WQ19UQUJfTk9USUNFEP24BRIgChpQVVNIX09OX0NBTExfVElDS0VUX05PVElDRRD+uAUSJQofR0VUX1ZDX1RBQl9DT0xMRUNUSU9OX0lORk9fTElTVBD/uAUSHQoXTUdFVF9WQ19UQUJfUkVDT1JEX0lORk8QgLkFEh0KF1BVU0hfVkNfVEFCX1JFQ09SRF9JTkZPEIG5BRIbChVHRVRfVkNfSU1fTk9USUNFX0lORk8QgrkFEiEKG0NSRUFURV9WQ19UQUJfSU1fUkVDT1JEX0RPQxCDuQUSHgoYR0VUX1VTRVJfVEVOQU5UX1NFVFRJTkdTEIi5BRIZChNTWU5DX01FRVRJTkdfU1RBVFVTEIm5BRIaChRHRVRfTUVFVElOR19VUkxfSU5GTxDVuQUSIgocVkNfT1dORVJfRk9SQ0VfVFJBTlNGRVJfSE9TVBDWuQUSIgocQ0hFQ0tfVkNfTUFOQUdFX0NBUEFCSUxJVElFUxDXuQUSHwoZVkNfU0VBUkNIX1VTRVJfSU5fTUVFVElORxDYuQUSGwoVVVBMT0FEX0VRVUlQTUVOVF9JTkZPENm5BRIkCh5WQ19MQVJLX1NFQVJDSF9VU0VSX0lOX01FRVRJTkcQ2rkFEhgKElZDX0dFVF9TVUlURV9RVU9UQRDcuQUSFwoRVkNfUFVMTF9DQVJEX0lORk8Q3bkFEhIKDEtFRVBfTUVFVElORxDeuQUSFQoPUFVTSF9SVENfU1RBVFVTEN+5BRIZChNQVUxMX0FMTF9SVENfU1RBVFVTEOC5BRIgChpPUEVSQVRFX01FRVRJTkdfQ09VTlRfRE9XThDhuQUSHAoWUFVTSF9VU0VSX1JFQ0VOVF9FTU9KSRDiuQUSGgoUVkNfTUdFVF9SRUxBVElPTl9UQUcQ47kFEhoKFEdFVF9WSURFT19DSEFUX09SREVSEOS5BRISCgxSRUZVU0VfUkVQTFkQ5bkFEh8KGUdFVF9WQ19MT0JCWV9QQVJUSUNJUEFOVFMQ6bkFEiEKG1VQREFURV9WQ19MT0JCWV9QQVJUSUNJUEFOVBDquQUSGAoSVkNfTE9CQllfSEVBUlRCRUFUEOu5BRIVCg9WQ19NQU5BR0VfQVBQTFkQ/bkFEhgKElZDX01BTkFHRV9BUFBST1ZBTBD+uQUSGwoVUFVTSF9WQ19NQU5BR0VfTk9USUZZEP+5BRIbChVQVVNIX1ZDX01BTkFHRV9SRVNVTFQQgLoFEhYKEFNFTkRfQ0xJRU5UX0lORk8QhboFEhoKFEVOVFJVU1RfU0VSVkVSX1RSQUNLEIa6BRIeChhTRVRfQ0FMRU5EQVJfVkNfU0VUVElOR1MQh7oFEh4KGEdFVF9DQUxFTkRBUl9WQ19TRVRUSU5HUxCIugUSHQoXR0VUX0NBTEVOREFSX0dVRVNUX0xJU1QQiboFEiMKHUdFVF9ST09NX1NUQVRVU19CWV9TSEFSRV9DT0RFEIq6BRIfChlCUkVBS09VVF9ST09NX0lORk9fTk9USUZZEJC6BRIhChtTVEFSVF9NRUVUSU5HX0JSRUFLT1VUX1JPT00QkboFEiAKGkpPSU5fTUVFVElOR19CUkVBS09VVF9ST09NEJK6BRIdChdQVUxMX0JSRUFLT1VUX1JPT01fSU5GTxCTugUSHgoYVkNfQ1JFQVRFX0NBTEVOREFSX0VWRU5UEJS6BRIeChhWQ19VUERBVEVfQ0FMRU5EQVJfRVZFTlQQlboFEh0KF1BVTExfVkNfQ0FMRU5EQVJfRVZFTlRTEJa6BRIXChFHRVRfTUFJTl9DQUxFTkRBUhCXugUSEwoNUFVTSF9BSV9VU0FHRRCYugUSHwoZR0VUX0NBTEVOREFSX1ZDSEFUX1NUQVRVUxCaugUSIAoaR0VUX0lOVEVSVklFV19WQ0hBVF9TVEFUVVMQm7oFEiMKHUdFVF9DQUxFTkRBUl9ERUZBVUxUX1NFVFRJTkdTEJy6BRIdChdBUFBMWV9QUkVfVkNfU0VUVElOR19JRBCdugUSHwoZR0VUX0NBTEVOREFSX1BSRV9TRVRUSU5HUxCeugUSHgoYQ0xPU0VfSU5URVJWSUVXRVJfTk9USUNFEJ+6BRIiChxQVVNIX0lOVEVSVklFV19RVUVTVElPTk5BSVJFEKC6BRIlCh9QVVNIX0NBTEVOREFSX1NUQVRVU19FWFRSQV9JTkZPEKG6BRIfChlQVVNIX01FRVRJTkdfUFJPTE9OR19JTkZPEKK6BRIeChhQVVNIX01FRVRJTkdfQ0FSRF9DSEFOR0UQo7oFEiEKG1BVU0hfR0VUX1NVSVRFX1FVT1RBX0NIQU5HRRCkugUSGwoVVFJBTlNMQVRFX1ZDX01FU1NBR0VTEKW6BRIfChlQVVNIX1ZDX1RSQU5TTEFURV9SRVNVTFRTEKa6BRIjCh1TRVRfQlJFQUtPVVRfUk9PTV9QUkVfU0VUVElORxCuugUSIwodR0VUX0JSRUFLT1VUX1JPT01fUFJFX1NFVFRJTkcQr7oFEhsKFUdFVF9BTkRfQklORF9GSUxFU19WQxCwugUSIAoaQlJFQUtPVVRfRE9XTkxPQURfVEVNUExBVEUQsboFEhoKFEJSRUFLT1VUX1VQTE9BRF9GSUxFELK6BRIjCh1OT1RJRllfQlJFQUtPVVRfTUFOQUdFX1JFU1VMVBCzugUSEAoKQVBQTFlfRFRNRhC5ugUSGwoVUFVMTF9QQVJUSUNJUEFOVF9JTkZPELu6BRIhChtHRVRfU0lQX0RPTUFJTl9CWV9VTklRVUVfSUQQvLoFEhUKD0dFVF9QU1ROX1NJUF9GQxC9ugUSIgocR0VUX0gzMjNfQUNDRVNTX0JZX1VOSVFVRV9JRBC+ugUSIQobR0VUX0JBVENIX1ZDX0ZFQVRVUkVfQ09ORklHEL+6BRIdChdDUkVBVEVfRU5URVJQUklTRV9QSE9ORRDqugUSHQoXQ0FOQ0VMX0VOVEVSUFJJU0VfUEhPTkUQ67oFEh0KF05PVElGWV9FTlRFUlBSSVNFX1BIT05FEOy6BRIhChtHRVRfRU5URVJQUklTRV9QSE9ORV9DT05GSUcQ7boFEiIKHENIRUNLX0VOVEVSUFJJU0VfUEhPTkVfUVVPVEEQ7roFEiIKHEdFVF9QSE9ORV9OVU1CRVJfQVRUUklCVVRJT04Q77oFEhkKE0dFVF9TSVBfSU5WSVRFX0lORk8Q8LoFEh8KGVVQR1JBREVfU0lOR0xFX1RPX01FRVRJTkcQ8boFEhYKEEdFVF9NRUVUSU5HX1VOSVQQ9LoFEiIKHEdFVF9UQVJHRVRfVVNFUl9QSE9ORV9OVU1CRVIQ9boFEhkKE0dFVF9NWV9QSE9ORV9OVU1CRVIQ9roFEhgKEkdFTl9PTl9DQUxMX1RJQ0tFVBD5ugUSGwoVVVBEQVRFX09OX0NBTExfVElDS0VUEPq6BRIZChNWQ19NRUVUSU5HX0ZFRURCQUNLEPu6BRIgChpVUERBVEVfVkNfTUVFVElOR19GRUVEQkFDSxD8ugUSGwoVR0VUX1NVQlRJVExFX0xBTkdVQUdFEP+6BRIeChhVUERBVEVfU1VCVElUTEVfTEFOR1VBR0UQgLsFEhwKFlNFQVJDSF9VU0VSU19BTkRfQ0hBVFMQnbsFEiMKHVZDX1FVRVJZX01FRVRJTkdfUkVMQVRFRF9ET0NTEJ67BRIZChNDUkVBVEVfTUVFVElOR19WT1RFEKe7BRIWChBQQVJUSUNJUEFURV9WT1RFEKq7BRIeChhQVUxMX1ZPVEVfU1RBVElTVElDX0xJU1QQq7sFEh4KGFBVTExfVk9URV9TVEFUSVNUSUNfSU5GTxCsuwUSGQoTUFVMTF9VU0VSX1ZPVEVfSU5GTxCtuwUSHQoXVk9URV9PTkVfQ0xJQ0tfUkVNSU5ERVIQrrsFEiAKGlBVTExfVk9URV9DSE9PU0VfVVNFUl9MSVNUEK+7BRIZChNVUERBVEVfTUVFVElOR19WT1RFELC7BRIVCg9DTEVBUl9VU0VSX1ZPVEUQsbsFEhwKFk1BS0VfVk9URV9TVEFUX1BVQkxJU0gQsrsFEhwKFkVYUE9SVF9WT1RFX1NUQVRJU1RJQ1MQs7sFEhgKEk1FRVRJTkdfVFJBTlNDUklQVBC7uwUSFQoPUFVMTF9UUkFOU0NSSVBUELy7BRIjCh1NRUVUSU5HX0FJX0NBUEFCSUxJVFlfQ09OVFJPTBDEuwUSGgoUUFVTSF9BSV9MT0NLX1NVTU1BUlkQxbsFEhsKFUdFVF9BSV9VTkxPQ0tfU1VNTUFSWRDGuwUSHAoWUFVTSF9BSV9VTkxPQ0tfU1VNTUFSWRDHuwUSFgoQR0VUX1ZDX0NQVV9TQ09SRRDPuwUSHwoZRVhQT1JUX01FRVRJTkdfU1RBVElTVElDUxDQuwUSHQoXUFVTSF9NRUVUSU5HX1NUQVRJU1RJQ1MQ0bsFEhQKDkdFVF9WQ19LVl9EQVRBENK7BRIcChZHRVRfQUlfRkVBVFVSRV9VUEdSQURFENO7BRISCgxOT1RFU19NQU5BR0UQ2LsFEhMKDUFHRU5EQV9NQU5BR0UQ2bsFEh4KGFBVU0hfSk9JTkVEX0RFVklDRVNfSU5GTxDiuwUSHQoXR0VUX0pPSU5FRF9ERVZJQ0VTX0lORk8Q47sFEh4KGEdFVF9NSU5VVEVTX01FRVRJTkdfSU5GTxDkuwUSHQoXU1RBUlRfU0FNRV9QQUdFX01FRVRJTkcQgbwFEh4KGFVQREFURV9TQU1FX1BBR0VfTUVFVElORxCCvAUSHAoWSU5JVF9TQU1FX1BBR0VfTUVFVElORxCDvAUSGQoTU1RPUF9TSEFSRV9CT1hfTElOSxDlvAUSGQoTU0hBUkVfQk9YX0hFQVJUQkVBVBDmvAUSGgoUUFVTSF9TSEFSRV9MSU5LX0lORk8Q57wFEhYKEFNUQVJUX1NIQVJFX0xJTksQ6LwFEhUKD1BVU0hfQk9YX05PVElDRRDpvAUSHwoZQ0hBTkdFX1NIQVJFX0xJTktfU0VUVElORxDqvAUSIAoaUFVTSF9QMlBfU0hBUkVfU0NSRUVOX0lORk8Qgr0FEhoKFFBVU0hfUDJQX0lORk9fQ0hBTkdFEIO9BRIdChdVUExPQURfVkNfTUFURVJJQUxfTUVUQRDJvQUSGwoVUFVMTF9WQ19NQVRFUklBTF9NRVRBEMq9BRIYChJERUxFVEVfVkNfTUFURVJJQUwQy70FEhoKFFBVU0hfVkNfTUFURVJJQUxfTVNHEMy9BRInCiFHRVRfRVhUUkFfTUVFVElOR19FRkZFQ1RfU0VUVElOR1MQzb0FEhsKFURFTEVURV9EUklWRV9NQVRFUklBTBDOvQUSGwoVSk9JTl9NRUVUSU5HX1RPR0VUSEVSEK2+BRISCgxHRVRfTFJWQ19VUkwQrr4FEhYKEFNZTkNfUk9PTV9NQU5BR0UQr74FEhkKE0lORk9STV9ORUFSQllfTEFSS1MQsL4FEhcKEVBVU0hfTkVBUkJZX0xBUktTELG+BRIbChVVUExPQURfTE9PUF9ST09NX1NDQU4Qsr4FEhsKFU1NX1BVU0hfUkVBQ1RJT05fSU5GTxCRvwUSHAoWTU1fUFVTSF9TVU1NQVJZX1NUQVRVUxCSvwUSHAoWTU1fUFVTSF9TVU1NQVJZX0NIQU5HRRCTvwUSGwoVTU1fUFVTSF9TVU1NQVJZX0NIRUNLEJS/BRIoCiJNTV9QVVNIX1JFQUxUSU1FX1NVQlRJVExFX1NFTlRFTkNFEJW/BRIoCiJNTV9QVVNIX0RJQVJJWkFUSU9OX1JFTUFUQ0hfU1RBVFVTEJa/BRIdChdWT0lDRV9QUklOVF9QVUxMX1NUQVRVUxCYvwUSHQoXVk9JQ0VfUFJJTlRfUFVTSF9TVEFUVVMQmb8FEhcKEVZPSUNFX1BSSU5UX0NMRUFSEJq/BRIeChhNTV9QVVNIX1JFQUNUSU9OX0lORk9fVjIQnL8FEh8KGU1NX1BVU0hfUEVSTUlTU0lPTl9DSEFOR0UQnb8FEhkKE01NX1BVU0hfTUVUQV9DSEFOR0UQnr8FEh8KGVZPSUNFX1BSSU5UX1NXSVRDSF9DSEFOR0UQn78FEh8KGVZPSUNFX1BSSU5UX0NMRUFSX0RBVEFfVjIQoL8FEiAKGlZPSUNFX1BSSU5UX1NXSVRDSF9WSVNJQkxFEKG/BRIwCipWT0lDRV9QUklOVF9IQVNfQVZBSUxBQkxFX0hJU1RPUllfTUVFVElOR1MQor8FEhwKFlZPSUNFX1BSSU5UX0dFTkVSQVRJT04Qo78FEiEKG1ZPSUNFX1BSSU5UX1NUT1BfR0VORVJBVElPThCkvwUSFgoQVk9JQ0VfUFJJTlRfVElQUxClvwUSHQoXTU1fUFVTSF9BSUdDX0NIQU5HRV9ORVcQrr8FEh0KF01NX1BVU0hfRkVBVFVSRV9VUEdSQURFEK+/BRIZChNNTV9QVVNIX0FJR0NfQ0hBTkdFENG/BRInCiFNTV9QVVNIX09QRVJBVEVfUEVSTUlTU0lPTl9DSEFOR0UQ0r8FEh4KGE1NX1BVU0hfU0NIRURVTEVSX0NIQU5HRRDTvwUSHwoZTU1fUFVTSF9WSURFT19JTkZPX0NIQU5HRRDUvwUSIQobTU1fUFVTSF9BRE1JTl9DT05GSUdfQ0hBTkdFENW/BRIeChhNTV9QVVNIX1VTRVJfVE9VQ0hfRVZFTlQQuL8FEiMKHU1FTVBPUEVfUFVTSF9CSU5EX0lORk9fQ0hBTkdFEIXDBRIaChRTVUJNSVRfTkVPX0ZFRURCQUNLUxCWxwUSIgocR0VUX01FRVRJTkdfU1VCVElUTEVfU0VUVElORxChxwUSIgocU0VUX01FRVRJTkdfU1VCVElUTEVfU0VUVElORxCixwUSIwodU1VCTUlUX1NVQlRJVExFX0ZFRURCQUNLX1RBU0sQo8cFEiMKHVVQREFURV9MSVZFX1JFQ09SRElOR19TRVRUSU5HEKTHBRIgChpHRVRfTElWRV9SRUNPUkRJTkdfU0VUVElORxClxwUSHAoWR0VUX01FRVRJTkdfU0lfU0VUVElORxCrxwUSHwoZVVBEQVRFX01FRVRJTkdfU0lfU0VUVElORxCtxwUSFAoOUFVTSF9TSV9TVEFUVVMQrscFEiIKHFBVU0hfTUVFVElOR19ST09NX05BTUVfUExBVEUQvscFEhoKFENSRUFURV9NRUVUSU5HX0dST1VQEOHOBRIcChZHRVRfTUVFVElOR19HUk9VUF9JTkZPEOLOBRIdChdQVVNIX1ZDSU1fUDJQX0NIQVRfSU5GTxDkzgUSIQobUFVTSF9WQ0lNX0lOVEVSQUNUSU9OX1NUQVRTEOXOBRIqCiRHRVRfQ0FMRU5EQVJfTUVFVElOR19OT1RfVkNJTV9SRUFTT04Q5s4FEjAKKkdFVF9DQUxFTkRBUl9NRUVUSU5HX0JJTkRfR1JPVVBfUEVSTUlTU0lPThDnzgUSGwoVQklORF9NRUVUSU5HX1RPX0dST1VQEOjOBRIpCiNBUFBMWV9NSU5VVEVTX0NPTExFQ1RJT05fUEVSTUlTU0lPThDJ1gUSHAoWR0VUX1ZDX01ZX0FJX0lOSVRfSU5GTxCx3gUSIgocR0VUX1ZDX01ZX0FJX0FDVElWRV9TUEVBS0VSUxCy3gUSHAoWR0VUX01FRVRJTkdfQUlfU1VNTUFSWRCz3gUSIgocUFVTSF9NRUVUSU5HX0FJX1NVTU1BUllfREFUQRC03gUSIQobUFVTSF9NRUVUSU5HX0FJX0xBWU9VVF9EQVRBELXeBRIVCg9HRVRfTElWRV9DT05GSUcQwJoMEhQKDkxJVkVfSEVBUlRCRUFUEMGaDBITCg1HRVRfTElWRV9JTkZPEMKaDBIWChBVUERBVEVfTElWRV9JTkZPEMOaDBIWChBQVVNIX0xJVkVfTk9USUNFEMSaDBIUCg5QVVNIX0xJVkVfSU5GTxDFmgwSGAoSVVBEQVRFX0xJVkVfU1RBVFVTEMaaDBIcChZQT0xMX0xJVkVfQVVESUVOQ0VfTlVNEMeaDBIRCgtDUkVBVEVfTElWRRDImgwSFwoRQ1JFQVRFX0xJVkVfU0NFTkUQyZoMEhUKD0VESVRfTElWRV9TQ0VORRDKmgwSFwoRREVMRVRFX0xJVkVfU0NFTkUQy5oMEhUKD01PVkVfTElWRV9TQ0VORRDMmgwSGAoSR0VUX1NVQl9TQ0VORV9MSVNUEM2aDBIWChBTV0lUQ0hfU1VCX1NDRU5FEM6aDBIWChBNR0VUX1NDRU5FX0JZX0lEEM+aDBIUCg5KT0lOX0xJVkVfUk9PTRDQmgwSFwoRSU5WSVRFX0xJVkVfR1VFU1QQ0ZoMEhcKEVJFTU9WRV9MSVZFX0dVRVNUENKaDBIXChFOT1RJRllfTElWRV9HVUVTVBDTmgwSGAoSVVBEQVRFX0xJVkVfREVWSUNFENSaDBIaChRNR0VUX0xJVkVfVVNFUl9CWV9JRBDVmgwSFgoQUFVTSF9MSVZFX0NIQU5HRRDWmgwSFQoPTEVBVkVfTElWRV9ST09NENeaDBIUCg5MSVZFX1BSRV9DSEVDSxDYmgwSFgoQR0VUX0xJVkVfSU5GT19WMhDZmgwSGQoTVVBEQVRFX0xJVkVfSU5GT19WMhDamgwSFgoQREVMRVRFX0xJVkVfSU5GTxDbmgwSGAoSR0VUX0xJVkVfSU5GT19MSVNUENyaDBIcChZFWFBPUlRfTElWRV9TVEFUSVNUSUNTEN2aDBIaChRMSVZFX1NUQVRJU1RJQ1NfUFVTSBDemgwSHgoYR0VUX0xJVkVfU1RBVElDX1JFU09VUkNFEN+aDBIWChBVUExPQURfTElWRV9GSUxFEOCaDBIiChxMSVZFX0ZJTEVfUkVWSUVXX1JFU1VMVF9QVVNIEOGaDBIWChBVUERBVEVfTElWRV9VU0VSEOKaDBIhChtTRUFSQ0hfTElWRV9TSEFSRV9DQU5ESURBVEUQ45oMEh0KF1NFTkRfTElWRV9TSEFSRV9NRVNTQUdFEOSaDBIdChdQT0xMSU5HX0xJVkVfU1RBVElTVElDUxDlmgwSGwoVQ1JFQVRFX0xJVkVfQUNDRVNTT1JZEOaaDBIbChVERUxFVEVfTElWRV9BQ0NFU1NPUlkQ55oMEhsKFVVQREFURV9MSVZFX0FDQ0VTU09SWRDomgwSHwoZTUdFVF9MSVZFX0FDQ0VTU09SWV9CWV9JRBDpmgwSHgoYTElWRV9SRVNPVVJDRV9SSVNLX0NIRUNLEOqaDBIeChhDTE9TRV9MSVZFX1dJTkRPV19OT1RJQ0UQ65oMEiEKG0dFVF9MSVZFX1BFUk1JU1NJT05fTUVNQkVSUxDsmgwSJAoeR0VUX0xJVkVfUEVSTUlTU0lPTl9DSEFUX1BBR0VEEO2aDBIdChdTRUFSQ0hfTElWRV9QQVJUSUNJUEFOVBDumgwSHAoWR0VUX0xJVkVfUFJPVklERVJfSU5GTxDvmgwSHQoXR0VUX0xJVkVfTElTVF9CWVRFX0xJVkUQ8JoMEiYKIEdFVF9MSVZFX0RFVEFJTF9DT05GSUdfQllURV9MSVZFEPGaDBInCiFTRU5EX0xJVkVfU0hBUkVfTUVTU0FHRV9CWVRFX0xJVkUQ8poMEiIKHFVQREFURV9MSVZFX0NPTkZJR19CWVRFX0xJVkUQ85oMEiQKHkdFVF9MSVZFX1NUUkVBTV9JTkZPX0JZVEVfTElWRRD0mgwSKAoiUkVGUkVTSF9MSVZFX1NUUkVBTV9JTkZPX0JZVEVfTElWRRD1mgwSIwodR0VUX0g1X1VQTE9BRF9UT0tFTl9CWVRFX0xJVkUQ9poMEh8KGUdFVF9JTUFHRV9YX1VSTF9CWVRFX0xJVkUQ95oMEhsKFURFTEVURV9MSVZFX0JZVEVfTElWRRD4mgwSGwoVQ1JFQVRFX0xJVkVfQllURV9MSVZFEPmaDBInCiFHRVRfREVGQVVMVF9MSVZFX0NPTkZJR19CWVRFX0xJVkUQ+poMEiQKHkNBTl9TSE9XX0xJVkVfRU5UUkFOQ0VfRk9SX0FQUBD7mgwSIAoaQllURV9MSVZFX0JPVF9TRU5EX01FU1NBR0UQ/JoMEisKJVVQREFURV9BQ1RJVklUWV9DSEFUX1JFVklFV19CWVRFX0xJVkUQ/ZoMEisKJVVQREFURV9ST0JPVF9DT01NRU5UX0VOQUJMRV9CWVRFX0xJVkUQ/poMEiIKHEVYUE9SVF9DT01NRU5UX01TR19CWVRFX0xJVkUQ/5oMEh0KF0VNUFRZX01FU1NBR0VfQllURV9MSVZFEICbDBIiChxHRVRfTUVTU0FHRV9TV0lUQ0hfQllURV9MSVZFEIGbDBIlCh9VUERBVEVfTUVTU0FHRV9TV0lUQ0hfQllURV9MSVZFEIKbDBIrCiVVUERBVEVfTUFOQUdFUl9NRVNTQUdFX0xJS0VfQllURV9MSVZFEIObDBIqCiRVUERBVEVfTUFOQUdFUl9NRVNTQUdFX1RPUF9CWVRFX0xJVkUQhJsMEiMKHURFTEVURV9VU0VSX01FU1NBR0VfQllURV9MSVZFEIWbDBIcChZVU0VSX1NJTEVOQ0VfQllURV9MSVZFEIabDBIpCiNVUERBVEVfTUVTU0FHRV9CQU5fU1RBVFVTX0JZVEVfTElWRRCHmwwSJgogR0VUX01BTlVBTF9IT1RfQ09NTUVOVF9CWVRFX0xJVkUQiJsMEikKI1VQREFURV9NQU5VQUxfSE9UX0NPTU1FTlRfQllURV9MSVZFEImbDBImCiBHRVRfSU1BR0VfVVBMT0FEX1RPS0VOX0JZVEVfTElWRRCKmwwSIgocQ0hFQ0tfSU1BR0VfVVBMT0FEX0JZVEVfTElWRRCLmwwSIwodU0VBUkNIX1VTRVJfTUVTU0FHRV9CWVRFX0xJVkUQjJsMEh8KGVBPTExJTkdfTUVTU0FHRV9CWVRFX0xJVkUQjZsMEhwKFlNFTkRfQ09NTUVOVF9CWVRFX0xJVkUQjpsMEhsKFVBVU0hfQllURV9MSVZFX0NIQU5HRRCPmwwSJgogR0VUX0NPTU1FTlRfTElLRV9DT1VOVF9CWVRFX0xJVkUQkJsMEiUKH0dFVF9MQVNUX1RJUF9PRkZfQ09NTUVOVF9SRUFTT04QkZsMEh8KGVVQTE9BRF9BQ1RJVklUWV9DTE9VRF9ET0MQkpsMEhwKFkdFVF9BQ1RJVklUWV9DTE9VRF9ET0MQk5sMEi4KKEdFVF9BU1NPQ0lBVEVEX0xJVkVfU1RBVFVTX1dJVEhfRVZFTlRfSUQQ0OgMEiEKG1BVU0hfQVNTT0NJQVRFRF9MSVZFX1NUQVRVUxDR6AwSGwoVUFVTSF9MSVZFX0FDQ0VTU09SSUVTEOC2DRIZChNGRVRDSF9MSVZFX01FU1NBR0VTEPGEDhIXChFTRU5EX0xJVkVfTUVTU0FHRRDyhA4SGQoTREVMRVRFX0xJVkVfTUVTU0FHRRDzhA4SFgoQUElOX0xJVkVfTUVTU0FHRRD0hA4SEwoNTElWRV9CQU5fVVNFUhD1hA4SGgoUR0VUX0xJVkVfQkFOTkVEX1VTRVIQ9oQOEhMKDUdFVF9MSVZFX0xJU1QQgdMOEhQKDkdFVF9NT1JFX0xJVkVTEILTDhIRCgtERUxFVEVfTElWRRCD0w4SFQoPQ01TX0NSRUFURV9MSVZFEITTDhIXChFDTVNfR0VUX0xJVkVfSU5GTxCF0w4SGAoSVVBEQVRFX0xJVkVfQ09ORklHEIbTDhITCg1VUERBVEVfU1RSRUFNEIfTDhIaChRHRVRfU1RSRUFNX1BVU0hfSU5GTxCI0w4SGAoSQ0hFQ0tfQ09OVEVOVF9URVhUEInTDhIhChtHRVRfTElWRV9TVEFUSUNfUkVTT1VSQ0VfVjIQitMOEhoKFEdFVF9MSVZFX1RIRU1FX0NPTE9SEIvTDhIfChlHRVRfTElWRV9DT05GSUdfQ09ORElUSU9OEIzTDhIcChZQVUxMX01FU1NBR0VfRE9DX1BFUk1TEKD3NhIeChhQVVNIX0NJUEhFUl9DSEFOR0VfRVZFTlQQofc2Eh4KGFBVTExfQ0hBTkdFRF9DSVBIRVJfS0VZUxCi9zYSIwodVFJBTlNMQVRFX01FU1NBR0VfVVJMX1BSRVZJRVcQo/c2EiQKHlBVTExfTUVTU0FHRV9MQVNUX1ZJU0lCTEVfSU5GTxCk9zYSJwohUFVTSF9USElSRF9QQVJUWV9LTVNfVEVOQU5UX0VWRU5UEKX3NhIiChxHRVRfTk9USUZJQ0FUSU9OX1dBUk5fQkFOTkVSEKb3NhIrCiVDTE9TRV9OT1RJRklDQVRJT05fV0FSTl9CQU5ORVJfTk9USUNFEKf3NhIdChdQVVNIX0VNT0pJX1BBTkVMX1VQREFURRCo9zYSIQobR0VUX1JFQ0VOVF9UUkFOU01JVF9UQVJHRVRTEKn3NhISCgxFRElUX01FU1NBR0UQqvc2Eh0KF0NMRUFOX1VTRVJfQ0hBVF9NRVNTQUdFEKv3NhIiChxQVVNIX0NMRUFOX1VTRVJfQ0hBVF9NRVNTQUdFEKz3NhIjCh1QVUxMX01FU1NBR0VfT1BFUkFUSU9OX0NPTkZJRxCt9zYSIQobR0VORVJBVEVfTUVTU0FHRV9SRVBPUlRfVVJMEK73NhIhChtHRVRfREVURUNURURfQkFOTkVSX1NFVFRJTkcQr/c2EhcKEVBVTExfTUVTU0FHRV9GT0xEELD3NhIXChFQVVNIX01FU1NBR0VfRk9MRBCx9zYSHQoXUFVUX01FU1NBR0VfRk9MRF9GT0xMT1cQsvc2Eh4KGFBVTExfTUVTU0FHRV9GT0xEX0ZPTExPVxCz9zYSGQoTUkVDQUxMX01FU1NBR0VfRk9MRBC09zYSGgoUUFVUX1NDSEVEVUxFX01FU1NBR0UQvvc2EiEKG1BVTExfQ0hBVF9TQ0hFRFVMRV9NRVNTQUdFUxC/9zYSIQobUFVMTF9TQ0hFRFVMRV9NRVNTQUdFX0JZX0lEEMD3NhIjCh1QVUxMX1NDSEVEVUxFX01FU1NBR0VfQllfVVNFUhDB9zYSHAoWUEFUQ0hfU0NIRURVTEVfTUVTU0FHRRDC9zYSGwoVUFVTSF9TQ0hFRFVMRV9NRVNTQUdFEMP3NhIeChhQVVRfUkVDRU5UX1ZJU0lUX1RBUkdFVFMQxPc2Eh8KGVBVTExfUkVDRU5UX1ZJU0lUX1RBUkdFVFMQxfc2EjcKMVBVTExfU0lNUExJRllfU1lTVEVNX01FU1NBR0VfVE9PTFRJUF9DSEFUVFRFUl9JRFMQxvc2EhwKFlBBVENIX1JFU1RSSUNUX01FU1NBR0UQx/c2EicKIU1FU1NBR0VfQVBQTFlfUDJQX0NIQVRfUEVSTUlTU0lPThDI9zYSJwohTUVTU0FHRV9BR1JFRV9QMlBfQ0hBVF9QRVJNSVNTSU9OEMn3NhIfChlQVVNIX1BBUlRfU1RSRUFNX01FU1NBR0VTEMr3NhIfChlQVUxMX1BBUlRfU1RSRUFNX01FU1NBR0VTEMv3NhIjCh1HRVRfTUVTU0FHRV9NWUFJX0NIQVRfTU9ERV9JRBDM9zYSGwoVREVSSVZFX01FU1NBR0VfVE9fRE9DEM33NhIhChtQVUxMX0VYUEVDVEVEX0FUX1VTRVJfR1JPVVAQzvc2EiMKHVBVTExfVU5GQU1JTElBUl9DSEFUX1NUUkFURUdZEM/3NhIhChtHRVRfVVNFUl9CQU5ORVJfTk9USUZZX0lORk8Q0Pc2EiEKG0dFVF9VU0VSX05PVElGWV9CQU5ORVJfVFlQRRDR9zYSHQoXUkVQT1JUX1VTRVJfU0hPV19CQU5ORVIQ0vc2EiAKGlBVU0hfSU1fUEFSVF9EQVRBX1JFQ09WRVJZEIn/NhIbChVOT1RJQ0VfSU1fU0RLX1VQR1JBREUQiv82EiQKHlBVTExfVFVSVExFX0NBTlZBU19TQ1JJUFRfSU5GTxCL/zYSFAoOU1lOQ19DQUxFTkRBUlMQwYQ9EhQKDlNBVkVfQ0FMRU5EQVJTEMKEPRIhChtQVUxMX0NBTEVOREFSX1VTRVJfSURfUk9MRVMQw4Q9EhoKFFBVTExfQ0FMRU5EQVJfQllfSURTEMSEPRIfChlQVVNIX0NIQU5HRURfQ0FMRU5EQVJfSURTEMWEPRIfChlQVUxMX0NIQVRURVJfQ0FMRU5EQVJfTUFQEMaEPRIYChJTVUJTQ1JJQkVfQ0FMRU5EQVIQx4Q9EhoKFFVOU1VCU0NSSUJFX0NBTEVOREFSEMiEPRIZChNHRVRfR09PR0xFX0FVVEhfVVJMEMmEPRIZChNSRVZPS0VfR09PR0tFX1RPS0VOEMqEPRIwCipTVUJTQ1JJQkVfQU5EX0dFVF9MQVRFU1RfVVBEQVRFRF9DQUxFTkRBUlMQy4Q9EhsKFVNBVkVfQ0FMRU5EQVJfU0VUVElORxDMhD0SGwoVUFVMTF9DQUxFTkRBUl9TRVRUSU5HEM2EPRITCg1TRUFSQ0hfR1VFU1RTEM6EPRIaChRQVUxMX0dST1VQU19DSEFUVEVSUxDPhD0SGgoUU0VBUkNIX01FRVRJTkdfUk9PTVMQ0IQ9EhsKFU1VTFRJX0NBTEVOREFSX1NFQVJDSBDRhD0SIwodUFVMTF9NRUVUSU5HX1JPT01TX1NVQlNDUklCRVIQ0oQ9Eh4KGFNBVkVfQ0FMRU5EQVJfU0VUVElOR19QQhDThD0SHgoYUFVMTF9DQUxFTkRBUl9TRVRUSU5HX1BCENSEPRIdChdHRU5fUEFTU1dPUkRfRk9SX0NBTERBVhDVhD0SIAoaQ0hBTkdFX1BBU1NXT1JEX0ZPUl9DQUxEQVYQ1oQ9EiEKG0RFTEVURV9DQUxEQVZfVVNFUl9QQVNTV09SRBDXhD0SHgoYR0VUX0NBTERBVl9QQVNTV09SRF9MSVNUENiEPRIdChdHRVRfTEFTVF9VU0VEX1JFU09VUkNFUxDZhD0SHQoXR0VUX0xBU1RfSU5WSVRFRF9HVUVTVFMQ2oQ9EiYKIFBVTExfTUVFVElOR19ST09NX1ZJRVdfQ0FMRU5EQVJTENuEPRIrCiVTVUJTQ1JJQkVfTUVFVElOR19ST09NX1ZJRVdfQ0FMRU5EQVJTENyEPRItCidVTlNVQlNDUklCRV9NRUVUSU5HX1JPT01fVklFV19DQUxFTkRBUlMQ3YQ9EhoKFE1TVUJTQ1JJQkVfQ0FMRU5EQVJTEN6EPRIlCh9HRVRfTUVFVElOR19ST09NX1ZJRVdfQ0FMRU5EQVJTEN+EPRIdChdNR0VUX0NBTEVOREFSU19XSVRIX0lEUxDghD0SHAoWTVVOU1VCU0NSSUJFX0NBTEVOREFSUxDhhD0SJAoeR0VUX0ZSRUVfQlVTWV9BQ0NFU1NJQkxFX1VTRVJTEOKEPRInCiFTQVZFX0NBTEVOREFSX1VTRVJfREVWSUNFX1NFVFRJTkcQ44Q9EhUKD0dFVF9QTEFDRV9CWV9JRBDkhD0SFAoOR0VUX1BMQUNFX1RJUFMQ5YQ9Eh0KF1NFQVJDSF9BVFRFTkRFRV9JTl9DSEFUEOaEPRInCiFNR0VUX0NBTEVOREFSX1VTRVJfREVWSUNFX1NFVFRJTkcQ54Q9EhsKFUdFVF9VU0VSX0NBTEVOREFSX0lEUxDohD0SHwoZR0VUX1VTRVJfUFJJTUFSWV9DQUxFTkRBUhDphD0SIgocVVBMT0FEX0NBTEVOREFSU19XSVRIX0NPTU1JVBDwhD0SIAoaU0FWRV9DQUxFTkRBUl9XSVRIX01FTUJFUlMQ8YQ9EhgKEkxJU1RfQ0FMRU5EQVJfTElTVBDyhD0SIAoaRVhQT1JUX0NBTEVOREFSX1NVQlNDUklCRVIQmoU9EiUKH01HRVRfQ0FMRU5EQVJfREVUQUlMX0lORk9fQllfSUQQm4U9Eh0KF0dFVF9SRVNPVVJDRV9FUVVJUE1FTlRTEPOEPRIlCh9GSUxURVJfTVJWSUVXX1JFU09VUkNFX0NBTEVOREFSEPSEPRIqCiRQVUxMX01FRVRJTkdfUk9PTV9TVEFUVVNfSU5GT1JNQVRJT04Q9YQ9EhoKFFZFUklGWV9DQUxFTkRBUl9MSVNUEPiEPRIvCilQVUxMX1JFU09VUkNFX0NVU1RPTUlaQVRJT05fQllfQ09OVEFDVF9JRBD5hD0SJgogUFVMTF9BTExfTUVFVElOR19ST09NU19JTl9URU5BTlQQ+oQ9EiUKH0dFVF9DQUxFTkRBUl9FVkVOVF9GUk9NX0FQUExJTksQ+4Q9Eh4KGEJJTkRJTkdfRVhDSEFOR0VfQUNDT1VOVBD8hD0SHQoXUkVWT0tFX0VYQ0hBTkdFX0FDQ09VTlQQ/YQ9Eh8KGVBVTExfREVQQVJUTUVOVFNfQ0hBVFRFUlMQ/oQ9EiMKHU1HRVRfREVQQVJUTUVOVFNfTUVNQkVSX0NPVU5UEP+EPRIdChdHRVRfQ0FMRU5EQVJfSU5GT19CWV9JRBCAhT0SFAoOUEFUQ0hfQ0FMRU5EQVIQgYU9EhQKDlNIQVJFX0NBTEVOREFSEIKFPRIVCg9DUkVBVEVfQ0FMRU5EQVIQg4U9EiQKHkdFVF9DQUxFTkRBUl9JRF9CWV9TSEFSRV9UT0tFThCEhT0SJgogUFVMTF9NRUVUSU5HX1JPT01fQU5EX0xFVkVMX0lORk8QhYU9EioKJFBVTExfQUxMX01FRVRJTkdfUk9PTV9BTkRfTEVWRUxfSU5GTxCGhT0SHQoXU0VBUkNIX01FRVRJTkdfUk9PTVNfVjIQh4U9EiUKH1BVTExfQ0FMRU5EQVJfVEVOQU5UX1NFVFRJTkdfUEIQiIU9EiYKIEdFVF9NRUVUSU5HX1JPT01TX1JFU0VSVkVfU1RBVFVTEImFPRIjCh1QVUxMX1JFU09VUkNFX1NVQlNDUklCRV9VU0FHRRCKhT0SGQoTUFVMTF9TVUJfTEVWRUxfSU5GTxCLhT0SKwolUFVMTF9DVVNUT01fTEVWRUxfQ09ORElUSU9OX1JFU09VUkNFUxCMhT0SFQoPUFVMTF9MRVZFTF9QQVRIEI2FPRIlCh9QVUxMX0dST1VQX0NIQVRURVJfQ0FMRU5EQVJfSURTEI6FPRIqCiRQVUxMX0RFUEFSVE1FTlRfQ0hBVFRFUl9DQUxFTkRBUl9JRFMQj4U9EhwKFkVYUE9SVF9DQUxFTkRBUl9FVkVOVFMQkIU9Eh0KF0dFVF9DQUxFTkRBUl9TSEFSRV9JTkZPEJGFPRIXChFTSEFSRV9DQUxFTkRBUl9WMhCShT0SKAoiR0VUX0NBTEVOREFSX0RFVklDRV9QRVJNSVNTSU9OX0JMRRCThT0SHQoXVVBMT0FEX05FQVJCWV9ST09NX0lORk8QlIU9EiMKHUdFVF9DQUxFTkRBUl9NWV9BSV9VU0VSX1FVRVJZEJWFPRIlCh9HRVRfQ0FMRU5EQVJfTVlfQUlfSU5MSU5FX0VWRU5UEJaFPRIlCh9SRURFRU1fTkVBUkJZX01FRVRJTkdfUk9PTV9JTkZPEJeFPRIxCitHRVRfTkVBUkJZX0FWQUlMQUJMRV9NRUVUSU5HX1JPT01fUkVTT1VSQ0VTEJiFPRIlCh9HRVRfVVNFUl9FWFRFUk5BTF9JRF9CWV9JRF9UWVBFEJmFPRIfChlNR0VUX0NIQVRfRlJFRV9CVVNZX0ZBVk9SEOqEPRIeChhTRVRfQ0hBVF9GUkVFX0JVU1lfRkFWT1IQ64Q9Eh8KGUdFVF9FWFRFUk5BTF9BQ0NPVU5UX0xJU1QQ7IQ9EiMKHVNBVkVfRVhURVJOQUxfQUNDT1VOVF9TRVRUSU5HEO2EPRIiChxHRVRfRVhURVJOQUxfQUNDT1VOVF9CWV9NQUlMEO6EPRIkCh5NQVJLX0xBUktfU0VSVkVSX01BSUxfU0VMRUNURUQQ74Q9EhgKEldFQl9MSVNUX0NBTEVOREFSUxCpjD0SIwodV0VCX0JBVENIX1NVQlNDUklCRV9DQUxFTkRBUlMQqow9EiUKH1dFQl9CQVRDSF9VTlNVQlNDUklCRV9DQUxFTkRBUlMQq4w9EhkKE1dFQl9DUkVBVEVfQ0FMRU5EQVIQrIw9EhkKE1dFQl9ERUxFVEVfQ0FMRU5EQVIQrYw9EhkKE1dFQl9VUERBVEVfQ0FMRU5EQVIQrow9EiEKG1dFQl9NR0VUX0NBTEVOREFSU19XSVRIX0lEUxCwjD0SHgoYV0VCX0xJU1RfQ0FMRU5EQVJfRVZFTlRTEJGUPRIeChhXRUJfUFVMTF9DQUxFTkRBUl9FVkVOVFMQkpQ9EhYKEFdFQl9DUkVBVEVfRVZFTlQQk5Q9EhYKEFdFQl9VUERBVEVfRVZFTlQQlJQ9EhYKEFdFQl9ERUxFVEVfRVZFTlQQlZQ9Eh4KGFdFQl9NR0VUX0VWRU5UU19XSVRIX0lEUxCWlD0SKgokV0VCX0dFVF9HUk9VUF9BVFRFTkRFRVNfQllfR1JPVVBfSURTEJeUPRIoCiJXRUJfR0VUX1VTRVJfQVRURU5ERUVTX0JZX1VTRVJfSURTEJiUPRInCiFXRUJfR0VUX0FUVEVOREVFU19CWV9DQUxFTkRBUl9JRFMQmZQ9EigKIldFQl9MSVNUX09QVElNSVpFRF9DQUxFTkRBUl9FVkVOVFMQmpQ9EisKJVdFQl9MSVNUX0ZJUlNUX1NDUkVFTl9DQUxFTkRBUl9FVkVOVFMQm5Q9Eh4KGFdFQl9TSEFSRV9DQUxFTkRBUl9FVkVOVBCclD0SJwohUkVTT1VSQ0VfTUFOQUdFTUVOVF9HRVRfSU5TVEFOQ0VTEPmbPRIjCh1SRVNPVVJDRV9NQU5BR0VNRU5UX0dFVF9FVkVOVBD6mz0SJgogUkVTT1VSQ0VfTUFOQUdFTUVOVF9DUkVBVEVfRVZFTlQQ+5s9EiYKIFJFU09VUkNFX01BTkFHRU1FTlRfVVBEQVRFX0VWRU5UEPybPRImCiBSRVNPVVJDRV9NQU5BR0VNRU5UX0RFTEVURV9FVkVOVBD9mz0SMQorUkVTT1VSQ0VfTUFOQUdFTUVOVF9HRVRfQ09ORkxJQ1RfRVZFTlRfSU5GTxD+mz0SMgosUkVTT1VSQ0VfTUFOQUdFTUVOVF9HRVRfUkVTT1VSQ0VfQUNDRVNTX1JPTEUQ/5s9EigKIlJFU09VUkNFX01BTkFHRU1FTlRfTElTVF9CVUlMRElOR1MQgJw9EigKIlJFU09VUkNFX01BTkFHRU1FTlRfTElTVF9SRVNPVVJDRVMQgZw9Ei4KKFJFU09VUkNFX01BTkFHRU1FTlRfU0VBUkNIX01FRVRJTkdfUk9PTVMQgpw9Ei0KJ0NSRUFURV9BVFRFTkRFRV9OVU1CRVJfQ09OVFJPTF9BUFBST1ZBTBDhoz0SLwopR0VUX0FUVEVOREVFX05VTUJFUl9DT05UUk9MX0FQUFJPVkFMX0lORk8Q4qM9EjYKME1HRVRfSVNfRVZFTlRfQVRURU5ERUVfQ09OVFJPTF9BUFBST1ZBTF9BUFBST1ZFRBDjoz0SNQovTk9USUZZX0VWRU5UX09SR0FOSVpFUl9MQVVOQ0hfQVRURU5ERUVfQVBQUk9WQUwQ5KM9EiUKH0RJU0NPVkVSWV9FWENIQU5HRV9BQ0NPVU5UX1RZUEUQxaQ9Ei0KJ1NIT1VMRF9FWENIQU5HRV9BQ0NPVU5UX1NXSVRDSF9UT19PQVVUSBDGpD0SFgoQR0VUX1pPT01fQUNDT1VOVBCppT0SGQoTUkVWT0tFX1pPT01fQUNDT1VOVBCqpT0SGQoTQ1JFQVRFX1pPT01fTUVFVElORxCrpT0SHwoZR0VUX1pPT01fTUVFVElOR19TRVRUSU5HUxCspT0SIgocVVBEQVRFX1pPT01fTUVFVElOR19TRVRUSU5HUxCtpT0SIQobR0VUX1pPT01fTUVFVElOR19QSE9ORV9OVU1TEK6lPRIZChNERUxFVEVfWk9PTV9NRUVUSU5HEK+lPRIgChpDQU5DRUxfVEhJUkRfUEFSVFlfTUVFVElORxCNpj0SFAoOTElTVF9TQ0hFRFVMRVIQyas9EhYKEENSRUFURV9TQ0hFRFVMRVIQyqs9EhYKEFVQREFURV9TQ0hFRFVMRVIQy6s9EhYKEERFTEVURV9TQ0hFRFVMRVIQzKs9EhoKFFNIQVJFX1NDSEVEVUxFUl9MSU5LEM2rPRIdChdTSEFSRV9TQ0hFRFVMRVJfVE9fTEFSSxDOqz0SIgocR0VUX1NDSEVEVUxFUl9BVkFJTEFCTEVfVElNRRDPqz0SHAoWUkVTQ0hFRFVMRV9BUFBPSU5UTUVOVBDQqz0SGAoSQ0FOQ0VMX0FQUE9JTlRNRU5UENGrPRIbChVHRVRfQVBQT0lOVE1FTlRfVE9LRU4Q0qs9EhsKFUdFVF9TQ0hFRFVMRVJfTElDRU5TRRDTqz0SIQobUFVTSF9TQ0hFRFVMRVJfTk9USUZJQ0FUSU9OEK2sPRIYChJMSVNUX1RJTUVDT05UQUlORVIQsbM9EhcKEUdFVF9USU1FQ09OVEFJTkVSELKzPRIUCg5MSVNUX1RJTUVCTE9DSxCzsz0SGgoUTElTVF9USU1FQkxPQ0tfQkFUQ0gQtLM9EhMKDUdFVF9USU1FQkxPQ0sQtbM9Eh8KGUdFVF9USU1FQ09OVEFJTkVSX1NFVFRJTkcQtrM9EiIKHFVQREFURV9USU1FQ09OVEFJTkVSX1NFVFRJTkcQt7M9EiUKH1BVU0hfVElNRUNPTlRBSU5FUl9OT1RJRklDQVRJT04QlbQ9EiEKG1BVU0hfVElNRUJMT0NLX05PVElGSUNBVElPThCWtD0SJQofUFVTSF9USU1FQkxPQ0tfUkVGX05PVElGSUNBVElPThCXtD0SLwopR0VUX0RJQUxPR1VFX1NDRU5FX1JFQ09NTUVOREVEX0VWRU5UX0lORk8Qmbs9Ei8KKUdFVF9DT01NT05fU0NFTkVfUkVDT01NRU5ERURfTUVFVElOR19USU1FEJq7PRIvCilHRVRfQ09NTU9OX1NDRU5FX1JFQ09NTUVOREVEX01FRVRJTkdfUk9PTRCbuz0SJgogR0VUX0VWRU5UX1JFQ09NTUVORF9NRUVUSU5HX1JPT00QnLs9EiQKHkdFVF9BSV9FVkVOVF9EWU5BTUlDX0lORElDQVRPUhCduz0SKAoiR0VUX0FJX0VWRU5UX1JFTEFURURfQ0hBVF9NRVNTQUdFUxCeuz0SHgoYU1VCTUlUX0NBTEVOREVSX0ZFRURCQUNLEJ+7PRIpCiNHRVRfQUlfUkVTT1VSQ0VfUkVDT01NRU5EX0lORElDQVRPUhCguz0SKAoiR0VUX0FJX0ZMT1dfUkVDT01NRU5ERURfRVZFTlRfSU5GTxChuz0SLQonUkVDT01NRU5EX0VWRU5UX0FORF9SRVNPVVJDRV9CWV9NRVNTQUdFEKK7PRIrCiVHRVRfQ09NTU9OX1NDRU5FX1JFQ09NTUVORF9FVkVOVF9USU1FEKO7PRIaChRHRVRfVE9ET19TVUdHRVNUSU9OUxCkuz0SIwodVVBEQVRFX1RPRE9fU1VHR0VTVElPTl9TVEFUVVMQpbs9EiQKHlVQREFURV9UT0RPX1NVR0dFU1RJT05fQ09OVEVOVBCmuz0SHAoWQ1JFQVRFX1RBU0tfRlJPTV9JTlBVVBCnuz0SGwoVR0VUX0VWRU5UX1NVR0dFU1RJT05TEKi7PRIfChlHRVRfRVZFTlRfU1VHR0VTVElPTl9WSUVXEKm7PRIkCh5VUERBVEVfRVZFTlRfU1VHR0VTVElPTl9TVEFUVVMQqrs9EikKI0dFVF9SRUNPTU1FTkRfRVZFTlRfSU5GT19CWV9NRVNTQUdFEKu7PRIgChpQVUxMX0NBTEVOREFSX0FJX1NIT1JUQ1VUUxCsuz0SGgoUU1lOQ19DQUxFTkRBUl9FVkVOVFMQ0dI9EiIKHFBVU0hfQ0FMRU5EQVJfRVZFTlRfUkVNSU5ERVIQ0tI9EicKIVBVTExfQ0FMRU5EQVJfRVZFTlRTX1dJVEhfUkVGX0lEUxDT0j0SIQobUFVMTF9DQUxFTkRBUl9NRUVUSU5HX1JPT01TENTSPRIjCh1QVUxMX0NBTEVOREFSX1JFU09VUkNFU19CWV9JRBDV0j0SFAoOUVVFUllfSU5TVEFOQ0UQ1tI9EiMKHU1HRVRfQ0FMRU5EQVJfRVZFTlRTX1dJVEhfSURTENfSPRIeChhTRUFSQ0hfQ0FMRU5EQVJfQ09OVEFDVFMQ2NI9EiEKG1BVTExfTUVFVElOR19ST09NX0JVSUxESU5HUxDZ0j0SJAoeUFVMTF9NRUVUSU5HX1JPT01TX0lOX0JVSUxESU5HENrSPRIfChlQVUxMX01FRVRJTkdTX0JZX0NIQVRfSURTENvSPRISCgxRVUlUX01FRVRJTkcQ3NI9EhoKFE1BUktfTUVFVElOR19FTlRFUkVEEN3SPRIYChJVUEdSQURFX1RPX01FRVRJTkcQ3tI9EhoKFEJBVENIX1FVRVJZX0lOU1RBTkNFEN/SPRIZChNKT0lOX0NBTEVOREFSX0VWRU5UEODSPRIdChdHRVRfQ0FMRU5EQVJfRVZFTlRfSU5GTxDh0j0SGQoTTUFSS19TQ1JPTExfQ0xJQ0tFRBDi0j0SHQoXQkFUQ0hfUVVFUllfRVZFTlRTX0RJRkYQ49I9EhMKDUdFVF9CVVNZX1VTRVIQ5NI9Eh8KGUNMT1NFX0VWRU5UX1JFTUlOREVSX0NBUkQQ5dI9Eh0KF1RSQU5TRkVSX0NBTEVOREFSX0VWRU5UEObSPRIjCh1NR0VUX0NBTEVOREFSX0VWRU5UU19XSVRIX0tFWRDn0j0SIwodR0VUX1JFU09VUkNFU19CWV9DQUxFTkRBUl9JRFMQ6NI9Eh4KGEdFVF9SRVNPVVJDRVNfV0lUSF9UT0tFThDp0j0SFAoOU0VJWkVfUkVTT1VSQ0UQ6tI9EhgKElNldF9XaGV0aGVyX1BvcF9VcBDr0j0SGwoVQ1JFQVRFX01FRVRJTkdfTUlOVVRFEOzSPRIhChtNRUVUSU5HX01JTlVURV9VUERBVEVfQ0hFQ0sQ7dI9EhgKEkdFVF9WQ0hBVF9CWV9FVk5FVBDu0j0SFgoQR0VUX1ZDSEFUX1NUQVRVUxDv0j0SIAoaR0VUX0VWRU5UX0lORk9fQllfVkNIQVRfSUQQ8NI9EhUKD1VQR1JBREVfVE9fQ0hBVBDx0j0SKAoiRElTUExBWV9UUkFOU0ZFUl9DSEFUX1NDUk9MTF9DSEVDSxDy0j0SJAoeT1BUSU1JWkVEX1NZTkNfQ0FMRU5EQVJfRVZFTlRTEPPSPRIbChVTRUFSQ0hfQ0FMRU5EQVJfRVZFTlQQ9NI9EiwKJkdFVF9BVVRIT1JJWkVEX0NBTEVOREFSX0VWRU5UX1dJVEhfS0VZEPXSPRIlCh9HRVRfVVNFUl8yX0NBTEVOREFSX0JPVF9DSEFUX0lEEPbSPRIhChtNR0VUX0lTX0pPSU5FRF9FVkVOVF9TVEFUVVMQ99I9EhcKEUpPSU5fTUVFVElOR19DSEFUEPjSPRIaChRHRVRfRVZFTlRfU0hBUkVfTElOSxD50j0SJwohUFVMTF9FVkVOVF9HUk9VUF9BVFRFTkRFRV9NRU1CRVJTEPrSPRImCiBQVUxMX0VWRU5UX0dST1VQU19TSU1QTEVfTUVNQkVSUxD70j0SGwoVU1dJVENIX0VWRU5UX0NBTEVOREFSEPzSPRIdChdHRVRfUk9PTV9WSUVXX0lOU1RBTkNFUxD90j0SJgogR0VUX0lORElWSURVQUxfQVRURU5ERUVTX0JZX1BBR0UQ/tI9Eh0KF1BVTExfQ0FMRU5EQVJfSU5TVEFOQ0VTEP/SPRIaChRMSVNUX0NBTEVOREFSX0VWRU5UUxCA0z0SGgoUU0FWRV9DQUxFTkRBUl9FVkVOVFMQgdM9EjAKKkdFVF9FVkVOVF9HUk9VUF9BVFRFTkRFRV9XSVRIX0tFWV9GT1JfQ09QWRCC0z0SNQovR0VUX0VWRU5UX0lORElWSURVQUxfQVRURU5ERUVfV0lUSF9LRVlfRk9SX0NPUFkQg9M9EiEKG0VNQUlMX0NSRUFURV9DQUxFTkRBUl9FVkVOVBCE0z0SLAomTElTVF9FVkVOVF9JTkRJVklEVUFMX1NJTVBMRV9BVFRFTkRFRVMQhdM9EigKIkxJU1RfRVZFTlRfR1JPVVBTX1NJTVBMRV9BVFRFTkRFRVMQhtM9EiMKHUNIRUNLX1VTRVJfQ09MTEFCT1JBVElPTl9QRVJNEIfTPRIcChZKT0lOX0NBTEVOREFSX0VWRU5UX1YyEIrTPRIaChRQVUxMX0VWRU5UX1JTVlBfSU5GTxCL0z0SKwolR0VUX0NIQVRfQ0FMRU5EQVJfRVZFTlRfSU5TVEFOQ0VfVklFVxCP0z0SHgoYQVVUSF9FVkVOVFNfQllfRVZFTlRfSURTEJDTPRIYChJTQVZFX1dFQklOQVJfRVZFTlQQkdM9EhoKFERFTEVURV9XRUJJTkFSX0VWRU5UEJLTPRI0Ci5MSVNUX1dFQklOQVJfRVZFTlRfSU5ESVZJRFVBTF9TSU1QTEVfQVRURU5ERUVTEJPTPRIuCihHRVRfV0VCSU5BUl9JTkRJVklEVUFMX0FUVEVOREVFU19CWV9QQUdFEJTTPRIxCitBRERfTUVFVElOR19DT0xMQUJPUkFUT1JfVE9fQ0hBVF9BTkRfTUlOVVRFEJbTPRIgChpMSVNUX0VOQ1JZUFRJT05fS0VZX1NUQVRVUxCI0z0SJQofTUdFVF9CQVNJQ19FVkVOVF9JTkZPX1dJVEhfS0VZUxCJ0z0SJQofTE9BRF9FVkVOVF9JTkZPX0JZX0tFWV9GT1JfTVlBSRCX0z0SGQoTU0FWRV9JTlNUQU5DRV9OT1RFUxCg0z0SGAoSR0VUX0lOU1RBTkNFU19JTkZPEKHTPRIcChZHRVRfTUVFVElOR19OT1RFU19JTkZPEKLTPRIWChBDUkVBVEVfTk9URVNfRE9DEKTTPRITCg1ERUxfTk9URVNfRE9DEKXTPRIcChZDSEVDS19DQU5fUlNWUF9DT01NRU5UEKbTPRIZChNCQVRDSF9ERUxfTk9URVNfRE9DEKfTPRIgChpDQUxFTkRBUl9ERUxFVEVfRFJJVkVfRklMRRCp0z0SJgogQ0hFQ0tfU01TX05PVElGSUNBVElPTl9BVkFJTEFCTEUQqtM9Ei0KJ0NIRUNLX0RFVklDRV9FVkVOVF9MSVZFX0FDVElWSVRZX1NUQVRVUxCr0z0SIwodU0VBUkNIX1VTRVJfQllfRU1BSUxfQ0FMRU5EQVIQzNo9EikKI0dFVF9FVkVOVF9SRVNPVVJDRV9XQUlUX0xJU1RfT1JERVJTEM3aPRIqCiRTQVZFX0VWRU5UX1JFU09VUkNFX1dBSVRfTElTVF9PUkRFUlMQzto9Ei8KKUdFVF9FVkVOVF9SRVNPVVJDRV9XQUlUX0xJU1RfU1VDQ0VTU19SQVRFEM/aPRI7CjVHRVRfRVZFTlRfUkVTT1VSQ0VfV0FJVF9MSVNUX09SREVSX1NVR0dFU1RfQ09ORElUSU9OUxDQ2j0SNgowR0VUX0VWRU5UX1JFU09VUkNFX1dBSVRfTElTVF9PUkRFUl9CVUlMRElOR19aT05FENHaPRIkCh5QVVNIX0NBTEVOREFSX0VWRU5UX0lOVklUQVRJT04Q4aA+EiUKH1JFUExZX0NBTEVOREFSX0VWRU5UX0lOVklUQVRJT04Q4qA+EisKJVBVU0hfQ0FMRU5EQVJfRVZFTlRfU1lOQ19OT1RJRklDQVRJT04Q46A+Ei0KJ1BVU0hfQ0FMRU5EQVJfRVZFTlRfQ0FOQ0VMX05PVElGSUNBVElPThDkoD4SKgokUFVTSF9SRVBMWV9DQUxFTkRBUl9FVkVOVF9JTlZJVEFUSU9OEOWgPhItCidQVVNIX0NBTEVOREFSX0VWRU5UX1VQREFURV9OT1RJRklDQVRJT04Q5qA+EjEKK1BVU0hfQ0FMRU5EQVJfRVZFTlRfUkVTQ0hFRFVMRV9OT1RJRklDQVRJT04Q56A+EiUKH1BVU0hfQ0FMRU5EQVJfU1lOQ19OT1RJRklDQVRJT04Q6KA+EisKJVBVU0hfQklORF9HT09HTEVfU1VDQ0VTU19OT1RJRklDQVRJT04Q6aA+Ei0KJ1BVU0hfUkVWT0tFX0dPT0dMRV9TVUNDRVNTX05PVElGSUNBVElPThDqoD4SLwopUFVTSF9DQUxFTkRBUl9TRVRUSU5HX0NIQU5HRV9OT1RJRklDQVRJT04Q66A+EjIKLFBVU0hfQ0FMRU5EQVJfU0VUVElOR19QQl9DSEFOR0VfTk9USUZJQ0FUSU9OEOygPhIkCh5QVVNIX01FRVRJTkdfSU5GT19OT1RJRklDQVRJT04Q7aA+EiMKHVBVU0hfQ0FMRU5EQVJfRVZFTlRfV0lUSF9EQVRBEO6gPhI0Ci5QVVNIX1NIQVJFRF9DQUxFTkRBUl9FVkVOVF9DSEFOR0VfTk9USUZJQ0FUSU9OEO+gPhInCiFQVVNIX1JFTUlOREVSX0NMT1NFRF9OT1RJRklDQVRJT04Q8KA+EjAKKlBVU0hfU0hPV19TVUJTQ1JJQkVEX0NBTEVOREFSX05PVElGSUNBVElPThDxoD4SLAomUFVTSF9DTEVBUl9DQUxFTkRBUl9FVkVOVF9OT1RJRklDQVRJT04Q8qA+EiUKH1BVU0hfU0NST0xMX0NMT1NFRF9OT1RJRklDQVRJT04Q86A+EjUKL1BVU0hfRVhURVJOQUxfQUNDT1VOVF9TRVRUSU5HX1NZTkNfTk9USUZJQ0FUSU9OEPSgPhInCiFQVVNIX0dPT0dMRV9CSU5EX1NFVFRJTkdfQ0FMTEJBQ0sQ9aA+EiYKIFBVU0hfQ0FMRU5EQVJfRVZFTlRfVkNIQVRfQ0hBTkdFEPagPhIwCipQVVNIX0VYVEVSTkFMX0NBTEVOREFSX0NIQU5HRV9OT1RJRklDQVRJT04Q96A+EiUKH1BVU0hfQ0FMRU5EQVJfVEVOQU5UX1NFVFRJTkdfUEIQ+KA+EikKI1BVU0hfRVhDSEFOR0VfQklORF9TRVRUSU5HX0NBTExCQUNLEPmgPhItCidQVVNIX0JJTkRfRVhDSEFOR0VfU1VDQ0VTU19OT1RJRklDQVRJT04Q+qA+EiYKIEdFVF9DQUxFTkRBUl9FVkVOVF9DSEVDS19JTl9JTkZPEPugPhInCiFQVVNIX1RFTkFOVF9FTkNSWVBUSU9OX0tFWV9DSEFOR0UQ/KA+EikKI1BVU0hfQklORF9aT09NX1NVQ0NFU1NfTk9USUZJQ0FUSU9OEP2gPhIxCitQVVNIX1JTVlBfQ0FSRF9BVFRFTkRFRV9DSEFOR0VfTk9USUZJQ0FUSU9OEP6gPhIsCiZQVVNIX01FRVRJTkdfTk9URVNfVVBEQVRFX05PVElGSUNBVElPThD/oD4SJgogUFVTSF9DQUxFTkRBUl9NWV9BSV9JTkxJTkVfU1RBR0UQgKE+EicKIVBVU0hfQ0FMRU5EQVJfRVZFTlRfTElWRV9BQ1RJVklUWRCBoT4SIAoaUVVFUllfRVZFTlRfQ1JPU1NfTEFOR1VBR0UQgqE+EiMKHUVWRU5UX0NST1NTX0xBTkdVQUdFX0ZFRURCQUNLEIOhPhIrCiVHRVRfUkVTT1VSQ0VfQ0hFQ0tfSU5fSU5GT19XSVRIX1RPS0VOEPaEPRIZChNDSEVDS19JTl9CWV9RUl9DT0RFEPeEPRIsCiZTRVRfSU5TVEFOQ0VfSU1QT1JUQU5DRV9TQ09SRV9GRUVEQkFDSxDJqD4SIwodR0VUX0lOU1RBTkNFX0lNUE9SVEFOQ0VfU0NPUkUQyqg+Eh0KF1BVU0hfVVBMT0FEX0VOVElUWV9UQVNLEPDuPhIQCgpQVVRfRU5USVRZEPHuPhIhChtQVVNIX01FRVRJTkdfTUlOVVRFX0VESVRPUlMQ8u4+Eh0KF01HRVRfTUFJTF9DQUxFTkRBUl9JTkZPEIG9PxIlCh9SRVBMWV9NQUlMX0lOVklUQVRJT05fQllfTUFJTElEEIK9PxIeChhHRVRfVE9ET19ISVNUT1JZX0NPTU1JVFMQk4tAEhwKFlBPU1RfU1lOQ19UT0RPX0NPTU1JVFMQlItAEhoKFFBVTExfU1lOQ19UT0RPX0lURU1TEJWLQBIUCg5HRVRfVE9ET19JVEVNUxCWi0ASFwoRTUdFVF9UT0RPX0JZX0dVSUQQl4tAEh4KGEdFVF9SRUNPTU1FTkRFRF9DT05URU5UUxCYi0ASHgoYR0VUX1RPRE9fUkVGRVJfUkVTT1VSQ0VTEJmLQBIlCh9NRVJHRV9NRVNTQUdFU19BU19UT0RPX1JFU09VUkNFEJqLQBIiChxNRVJHRV9UT1BJQ19BU19UT0RPX1JFU09VUkNFEJuLQBIRCgtGT0xMT1dfVE9ETxCci0ASFgoQR0VUX1RPRE9fU0VUVElORxCdi0ASFwoRU0FWRV9UT0RPX1NFVFRJTkcQnotAEhoKFEdFVF9DSEFUX1RPRE9fU1RBVFVTEJ+LQBIUCg5HRVRfQ0hBVF9UT0RPUxCgi0ASHgoYR0VUX0NIQVRfQ09NUExFVEVEX1RPRE9TEKGLQBIUCg5MSVNUX0RPQ19UT0RPUxCii0ASIgocR0VUX1RPRE9fTVNHX0NBUkRfUEVSTUlTU0lPThCji0ASGwoVVVBEQVRFX1RPRE9fTVNHX0NBUkRTEKSLQBIbChVNR0VUX1RPRE9fV0lER0VUX0RBVEEQpYtAEhcKEU1HRVRfUEFHSU5HX1RPRE9TEKaLQBIeChhNR0VUX1JFQ0VOVF9DT0xMQUJPUkFUT1IQp4tAEhkKE0dFVF9QQUdJTkdfU1VCX1RBU0sQqItAEhsKFVNVQl9UQVNLX1JBTktTX0NIQU5HRRCqi0ASEQoLQ1JFQVRFX1RBU0sQrotAEhEKC1NFQVJDSF9UQVNLEK+LQBIcChZVUERBVEVfVEFTS19CWV9DT01NSVRTELCLQBIZChNDUkVBVEVfVE9ET19DT01NRU5UENmMQBIZChNVUERBVEVfVE9ET19DT01NRU5UENqMQBIZChNERUxFVEVfVE9ET19DT01NRU5UENuMQBIYChJNR0VUX1RPRE9fQ09NTUVOVFMQ3IxAEicKIU1HRVRfVE9ET19DT01NRU5UU19XSVRIX1BPU0lUSU9OUxDdjEASGAoSTElTVF9UT0RPX0NPTU1FTlRTEN6MQBIiChxDUkVBVEVfVE9ET19DT01NRU5UX1JFQUNUSU9OEN+MQBIiChxERUxFVEVfVE9ET19DT01NRU5UX1JFQUNUSU9OEOCMQBIZChNTRU5EX1RPRE9fSEVBUlRCRUFUELyNQBIRCgtVUERBVEVfVE9ETxD0i0ASEgoMREVMRVRFX1RPRE9TEPWLQBIdChdFWElUX0NPTExBQk9SQVRJT05fVE9ETxD2i0ASIQobVVBEQVRFX1RPRE9fQ09NUExFVEVfU1RBVFVTEPeLQBIVCg9HRVRfVEFTS19DRU5URVIQoI5AEh4KGFNZTkNfVEFTS19DT05UQUlORVJfUkVGUxChjkASGwoVVVBTRVJUX1RBU0tfQ09OVEFJTkVSEKKOQBIZChNVUFNFUlRfVEFTS19TRUNUSU9OEKOOQBIZChNERUxFVEVfVEFTS19TRUNUSU9OEKSOQBIWChBVUERBVEVfVEFTS19WSUVXEKWOQBIfChlVUERBVEVfVEFTS19DT05UQUlORVJfUkVGEKaOQBIdChdNR0VUX1RBU0tfQ09OVEFJTkVSX1JFRhCnjkASGgoUVVBTRVJUX1RBU0tfU0VDVElPTlMQqI5AEiEKG1BVU0hfVE9ET19TWU5DX05PVElGSUNBVElPThD5kkASJQofUFVTSF9UT0RPX1JFTUlOREVSX05PVElGSUNBVElPThD6kkASIgocUFVTSF9UT0RPX0NMRUFSX05PVElGSUNBVElPThD7kkASJAoeUFVTSF9UT0RPX1NFVFRJTkdfTk9USUZJQ0FUSU9OEPySQBIkCh5QVVNIX1RPRE9fQ09NTUVOVF9OT1RJRklDQVRJT04Q/ZJAEi0KJ1BVU0hfVE9ET19DT01NRU5UX1JFQUNUSU9OX05PVElGSUNBVElPThD+kkASKQojUFVTSF9UT0RPX0NPTExBQk9SQVRPUl9OT1RJRklDQVRJT04Q/5JAEicKIVBVU0hfVE9ET19FWFRSQV9JTkZPX05PVElGSUNBVElPThCAk0ASKwolUFVTSF9UQVNLX0NPTlRBSU5FUl9TWU5DX05PVElGSUNBVElPThCBk0ASKQojUFVTSF9UQVNLX1NFQ1RJT05fU1lOQ19OT1RJRklDQVRJT04QgpNAEiYKIFBVU0hfVEFTS19WSUVXX1NZTkNfTk9USUZJQ0FUSU9OEIOTQBIvCilQVVNIX1RBU0tfQ09OVEFJTkVSX1JFRl9TWU5DX05PVElGSUNBVElPThCEk0ASKgokUFVTSF9UQVNLX0NPTlRBSU5FUl9UQUJfTk9USUZJQ0FUSU9OEIWTQBIbChVERUxFVEVfVEFTS19DT05UQUlORVIQ3ZNAEiUKH01HRVRfU0VSVkVSX0NPTlRBSU5FUl9NRVRBX0RBVEEQ3pNAEiMKHUdFVF9UQVNLX0NPTlRBSU5FUl9HUk9VUF9JTkZPEN+TQBIhChtNR0VUX1NFUlZFUl9DT05UQUlORVJfVEFTS1MQ4JNAEiYKIE1HRVRfU0VSVkVSX1RBU0tfUkVGX0FORF9TRUNUSU9OEOGTQBIXChFTRUFSQ0hfVEFTS19MSVNUUxDik0ASGAoSU0VBUkNIX1RBU0tfT1JJR0lOEOOTQBIbChVBUFBMWV9UQVNLX1BFUk1JU1NJT04Q5JNAEh4KGFVQREFURV9UQVNLX0xJU1RfTUVNQkVSUxDlk0ASGwoVR0VUX1RBU0tfTElTVF9NRU1CRVJTEOaTQBIbChVHRVRfUEFHSU5HX0NPTlRBSU5FUlMQ55NAEisKJUdFVF9UQVNLX0xJU1RfUEFHSU5HX0FDVElWSVRZX1JFQ09SRFMQ6JNAEiYKIEdFVF9VU0VSX1BBR0lOR19BQ1RJVklUWV9SRUNPUkRTEOmTQBIZChNNT1ZFX0NPTlRBSU5FUl9UQVNLEOqTQBIZChNDT1BZX1RBU0tfQ09OVEFJTkVSEOuTQBIbChVVUERBVEVfVEFTS19DT05UQUlORVIQ7JNAEhsKFVVQREFURV9DT05UQUlORVJfVEFCUxDtk0ASKAoiVVBTRVJUX1RBU0tfQ09OVEFJTkVSX1NFQ1RJT05fUkVGUxDuk0ASLAomR0VUX1BBR0lOR19UQVNLX0NPTlRBSU5FUl9SRUxBVEVEX0RBVEEQ75NAEikKI1BVTExfUEFHSU5HX01BTkFHRVJfVEFTS19DT05UQUlORVJTEPCTQBIjCh1VUFNFUlRfVEFTS19DT05UQUlORVJfU0VDVElPThDxk0ASLAomR0VUX0NPTlRBSU5FUl9NRVRBX0RBVEFfQU5EX0dST1VQX0lORk8Q8pNAEiEKG0dFVF9QQUdJTkdfQUNUSVZJVFlfUkVDT1JEUxDzk0ASHwoZQ1JFQVRFX1RBU0tMSVNUX0RBU0hCT0FSRBD4k0ASHwoZQ0FOQ0VMX1RBU0tMSVNUX0RBU0hCT0FSRBD5k0ASHQoXUFJFUEFSRV9RVUVSWV9EQVNIQk9BUkQQ+pNAEhwKFkNJUkNMRV9RVUVSWV9EQVNIQk9BUkQQ+5NAEh8KGU1BTlVBTExZX0NSRUFURV9EQVNIQk9BUkQQ/JNAEisKJUNSRUFURV9UQVNLTElTVF9BQ1RJVklUWV9TVUJTQ1JJUFRJT04Q9JNAEikKI0xJU1RfVEFTS0xJU1RfQUNUSVZJVFlfU1VCU0NSSVBUSU9OEPWTQBIrCiVVUERBVEVfVEFTS0xJU1RfQUNUSVZJVFlfU1VCU0NSSVBUSU9OEPaTQBIrCiVERUxFVEVfVEFTS0xJU1RfQUNUSVZJVFlfU1VCU0NSSVBUSU9OEPeTQBIqCiRQVVNIX0xJU1RfVEFTS1NfQ0hBTkdFRF9OT1RJRklDQVRJT04QwZRAEjIKLFBVU0hfQ09OVEFJTkVSX1NFQ1RJT05TX0NIQU5HRURfTk9USUZJQ0FUSU9OEMKUQBI3CjFQVVNIX0NPTlRBSU5FUl9TRUNUSU9OX0lURU1TX0NIQU5HRURfTk9USUZJQ0FUSU9OEMOUQBIeChhDUkVBVEVfQ1VTVE9NX1RBU0tfRklFTEQQpZVAEh4KGFVQREFURV9DVVNUT01fVEFTS19GSUVMRBCmlUASHAoWTUdFVF9DVVNUT01fVEFTS19GSUVMRBCnlUASIAoaR0VUX0FMTF9DVVNUT01fVEFTS19GSUVMRFMQqJVAEiIKHEdFVF9BTExfVEVNUExBVEVfVEFTS19GSUVMRFMQqZVAEh4KGEFERF9DT05UQUlORVJfVEFTS19GSUVMRBCqlUASIQobUkVNT1ZFX0NPTlRBSU5FUl9UQVNLX0ZJRUxEEKuVQBIrCiVQVVNIX1RBU0tfRklFTERTX0NIQU5HRURfTk9USUZJQ0FUSU9OEKyVQBI1Ci9QVVNIX1RBU0tfTElTVF9GSUVMRF9BU1NPQ19DSEFOR0VEX05PVElGSUNBVElPThCtlUASFwoRU0VBUkNIX0VOVElUWV9OVU0QsKpAEhkKE01PTUVOVFNfQ1JFQVRFX1BPU1QQmbJAEhkKE01PTUVOVFNfREVMRVRFX1BPU1QQmrJAEhwKFk1PTUVOVFNfQ1JFQVRFX0NPTU1FTlQQm7JAEhwKFk1PTUVOVFNfREVMRVRFX0NPTU1FTlQQnLJAEh0KF01PTUVOVFNfQ1JFQVRFX1JFQUNUSU9OEJ2yQBIdChdNT01FTlRTX0RFTEVURV9SRUFDVElPThCeskASGAoSTU9NRU5UU19TSEFSRV9QT1NUEJ+yQBIZChNNT01FTlRTX0ZPTExPV19VU0VSEKCyQBIbChVNT01FTlRTX1VORk9MTE9XX1VTRVIQobJAEh0KF01PTUVOVFNfTElTVF9CUk9BRENBU1RTEKKyQBIhChtNT01FTlRTX0xJU1RfVVNFUl9GT0xMT1dFUlMQo7JAEiIKHE1PTUVOVFNfTElTVF9VU0VSX0ZPTExPV0lOR1MQpLJAEiAKGk1PTUVOVFNfTElTVF9OT1RJRklDQVRJT05TEKWyQBIdChdNT01FTlRTX0FETUlOX09QRVJBVElPThCmskASFAoOTU9NRU5UU19SRVBPUlQQqLJAEioKJE1PTUVOVFNfR0VUX1VTRVJfQ09ORklHX0FORF9TRVRUSU5HUxCpskASHQoXTU9NRU5UU19HRVRfUE9TVF9ERVRBSUwQq7JAEhoKFE1PTUVOVFNfTUdFVF9DSVJDTEVTEKyyQBIfChlNT01FTlRTX01HRVRfTU9NRU5UX1VTRVJTEK2yQBIkCh5NT01FTlRTX01HRVRfSVNfVVNFUl9GT0xMT1dJTkcQrrJAEiQKHk1PTUVOVFNfUFVUX1JFQURfTk9USUZJQ0FUSU9OUxCvskASGAoSTU9NRU5UU19NR0VUX1BPU1RTELCyQBIbChVNT01FTlRTX01HRVRfQ09NTUVOVFMQsbJAEh0KF01PTUVOVFNfTUdFVF9DQVRFR09SSUVTELKyQBIdChdNT01FTlRTX0xJU1RfQ0FURUdPUklFUxCzskASFwoRTU9NRU5UU19MSVNUX1RBQlMQtLJAEhkKE01PTUVOVFNfQ09ORklHX1RBQlMQtbJAEiEKG01PTUVOVFNfR0VUX0NBVEVHT1JZX0RFVEFJTBC2skASKQojTU9NRU5UU19MSVNUX0hBU0hUQUdTX0JZX1VTRVJfSU5QVVQQt7JAEiAKGk1PTUVOVFNfR0VUX0hBU0hUQUdfREVUQUlMELiyQBInCiFNT01FTlRTX0NSRUFURV9TVUJTQ1JJUFRJT05fRFJBRlQQubJAEiwKJk1PTUVOVFNfR0VUX1NVQlNDUklQVElPTl9CQUNLU1RBR0VfVVJMELqyQBIiChxNT01FTlRTX0xJU1RfRElTTElLRV9SRUFTT05TELuyQBIcChZNT01FTlRTX0NSRUFURV9ESVNMSUtFELyyQBIcChZNT01FTlRTX0RFTEVURV9ESVNMSUtFEL2yQBIgChpNT01FTlRTX1RSQU5TTEFURV9FTlRJVElFUxC+skASJAoeTU9NRU5UU19UUkFOU0xBVEVfVVJMX1BSRVZJRVdTEL+yQBIeChhNT01FTlRTX0hJREVfVFJBTlNMQVRJT04QwLJAEiMKHU1PTUVOVFNfU0VUX0NBVEVHT1JZX1BJTl9QT1NUEMGyQBIiChxNT01FTlRTX1NFVF9IQVNIVEFHX1BJTl9QT1NUEMKyQBIdChdNT01FTlRTX1NFVF9QSU5fQ09NTUVOVBDDskASFwoRTU9NRU5UU19FRElUX1BPU1QQxLJAEhoKFE1PTUVOVFNfRURJVF9DT01NRU5UEMWyQBIXChFNT01FTlRTX0dFVF9CQURHRRD9skASIAoaTU9NRU5UU19HRVRfUkVDT01NRU5EX0ZFRUQQ/rJAEiAKGk1PTUVOVFNfR0VUX0ZPTExPV0lOR19GRUVEEP+yQBIeChhNT01FTlRTX0dFVF9VU0VSX1BST0ZJTEUQgbNAEh0KF01PTUVOVFNfTElTVF9VU0VSX1BPU1RTEIKzQBIbChVNT01FTlRTX0xJU1RfQ09NTUVOVFMQg7NAEhwKFk1PTUVOVFNfTElTVF9SRUFDVElPTlMQhLNAEiAKGk1PTUVOVFNfUFVMTF9SRUFDVElPTlNfU0VUEIWzQBIeChhNT01FTlRTX0dFVF9VU0VSX1NFVFRJTkcQhrNAEiAKGk1PTUVOVFNfUEFUQ0hfVVNFUl9TRVRUSU5HEIezQBIdChdNT01FTlRTX0NPVU5UX09QRVJBVElPThCIs0ASIwodTU9NRU5UU19HRVRfUkVDT01NRU5EX0FUX0xJU1QQibNAEiEKG01PTUVOVFNfTElTVF9DQVRFR09SWV9QT1NUUxCKs0ASHwoZTU9NRU5UU19QVVNIX1VTRVJfU0VUVElORxCLs0ASIwodTU9NRU5UU19QVUxMX1RBQl9OT1RJRklDQVRJT04QjLNAEiIKHE1PTUVOVFNfUFVUX1RBQl9OT1RJRklDQVRJT04QjbNAEiMKHU1PTUVOVFNfUFVTSF9UQUJfTk9USUZJQ0FUSU9OEI6zQBIgChpNT01FTlRTX0xJU1RfSEFTSFRBR19QT1NUUxCPs0ASIgocTU9NRU5UU19HRVRfTklDS05BTUVfUFJPRklMRRCQs0ASIgocTU9NRU5UU19MSVNUX1VTRVJfQUNUSVZJVElFUxCRs0ASJAoeTU9NRU5UU19MSVNUX01ZX09GRklDSUFMX1VTRVJTEJKzQBIhChtNT01FTlRTX0xPR0lOX09GRklDSUFMX1VTRVIQk7NAEiAKGk1PTUVOVFNfR0VUX0FOT05ZTU9VU19JTkZPEK+zQBIcChZNT01FTlRTX1BVTExfTklDS05BTUVTELCzQBIiChxNT01FTlRTX1BVTExfTklDS05BTUVfQVZBVEFSELGzQBIiChxNT01FTlRTX0NSRUFURV9OSUNLTkFNRV9VU0VSELKzQBImCiBNT01FTlRTX0NIRUNLX1NFQ1JFVF9DSEFUX1NUQVRVUxCzs0ASIQobTU9NRU5UU19BU0tfRk9SX1NFQ1JFVF9DSEFUELSzQBIgChpNT01FTlRTX0FDQ0VQVF9TRUNSRVRfQ0hBVBC1s0ASEgoMTU9NRU5UU19QVVNIEOGzQBIVCg9QVUxMX05BVklHQVRJT04QodlAEhwKFlBVVF9OQVZJR0FUSU9OX0NPTkZJUk0QotlAEhUKD1BVU0hfTkFWSUdBVElPThCj2UASFgoQUEFUQ0hfTkFWSUdBVElPThCk2UASGAoSUFVMTF9OQVZJR0FUSU9OX1YyEKXZQBIaChRQVUxMX0NPTlRBQ1RfRU5UUklFUxCm2UASGwoVUFVMTF9OQVZJR0FUSU9OX09SREVSEKfZQBIeChhQVUxMX05BVklHQVRJT05fQVBQX0lORk8QqNlAEhsKFVBVU0hfTkFWSUdBVElPTl9PUkRFUhCp2UASHAoWUEFUQ0hfTkFWSUdBVElPTl9PUkRFUhCq2UASHgoYUFVMTF9OQVZJR0FUSU9OX09SREVSX1YyEKvZQBIeChhTQVZFX05BVklHQVRJT05fT1JERVJfVjIQrNlAEh4KGFBVU0hfTkFWSUdBVElPTl9PUkRFUl9WMhCt2UASIQobUFVMTF9OQVZJR0FUSU9OX0FQUF9JTkZPX1YyEK7ZQBIeChhQVUxMX05BVklHQVRJT05fT1JERVJfVjMQr9lAEh4KGFNBVkVfTkFWSUdBVElPTl9PUkRFUl9WMxCw2UASHgoYUFVTSF9OQVZJR0FUSU9OX09SREVSX1YzELHZQBInCiFQVVRfTkFWSUdBVElPTl9SRUNFTlRfVklTSVRfRVZFTlQQstlAEiYKIEdFVF9OQVZJR0FUSU9OX1JFQ0VOVF9WSVNJVF9MSVNUELPZQBIXChFTRUFSQ0hfTkFWSUdBVElPThC02UASHwoZR0VUX05BVklHQVRJT05fR1VJREVfTElTVBC12UASIAoaVVBEQVRFX05BVklHQVRJT05fQVBQX0lORk8QttlAEioKJFBVVF9OQVZJR0FUSU9OX1JFQ0VOVF9WSVNJVF9FVkVOVF9WMhC32UASKQojREVMX05BVklHQVRJT05fUkVDRU5UX1ZJU0lUX0xJU1RfVjIQuNlAEioKJFBVTExfTkFWSUdBVElPTl9SRUNFTlRfVklTSVRfTElTVF9WMhC52UASIgocUFVTSF9OQVZJR0FUSU9OX1JFQ0VOVF9WSVNJVBC62UASGwoVQ1JFQVRFX0NPTU1FTlRfVEhSRUFEELGnQRIZChNHRVRfQ09NTUVOVF9USFJFQURTELKnQRIjCh1TRVRfQ09NTUVOVF9USFJFQURfVklTSUJJTElUWRCzp0ESGwoVREVMRVRFX0NPTU1FTlRfVEhSRUFEELSnQRIRCgtBRERfQ09NTUVOVBC1p0ESEgoMRURJVF9DT01NRU5UELanQRIUCg5ERUxFVEVfQ09NTUVOVBC3p0ESHQoXR1JBTlRfRU5USVRZX1BFUk1JU1NJT04QuKdBEhsKFUdFVF9USFJFQURfUEVSTUlTU0lPThC5p0ESFwoRUkVWT0tFX1BFUk1JU1NJT04QuqdBEh0KF0FERF9SRUFDVElPTl9UT19DT01NRU5UELunQRIdChdERUxFVEVfQ09NTUVOVF9SRUFDVElPThC8p0ESIAoaU0VUX1RIUkVBRF9TSEFSRURfU1RSQVRFR1kQvadBEhIKDFVQTE9BRF9JTUFHRRC+p0ESFwoRR0VUX0xPR0lOX1VTRVJfSUQQv6dBEhoKFEdFVF9JU19VUkxfU1VQUE9SVEVEEMCnQRIbChVTRUFSQ0hfQ09NTUVOVF9USFJFQUQQwadBEhYKEEFOQUxZWkVfV0VCX1BBR0UQwqdBEhkKE1NIQVJFX0VNQUlMX1RPX0NIQVQQw6dBEhEKC0dFVF9NRVNTQUdFEMSnQRIbChVDSEVDS19BVVRIX1BFUk1JU1NJT04QxadBEhwKFlJFVk9LRV9BVVRIX1BFUk1JU1NJT04QxqdBEhcKEUdFVF9BVVRIX0VOVElUSUVTEMenQRIPCglHRVRfSU1BR0UQyKdBEhYKEEFJX1RSQU5TTEFURV9JTUcQma9BEhcKEUdFVF9TTUFSVF9DT01QT1NFEJqvQRIaChRHRVRfQ09NUE9TRVJfU0VUVElORxCbr0ESGgoUU0VUX0NPTVBPU0VSX1NFVFRJTkcQnK9BEhsKFVBVU0hfQ09NUE9TRVJfU0VUVElORxCdr0ESFQoPR0VUX1NNQVJUX1JFUExZEJ6vQRIWChBHRVRfU01BUlRfTUVNT1JZEJ+vQRIaChRHRVRfRU5URVJQUklTRV9UT1BJQxCgr0ESEwoNU0xBU0hfQ09NTUFORBChr0ESGwoVUE9TVF9FTlRFUlBSSVNFX1RPUElDEKKvQRInCiFFTlRFUlBSSVNFX1RPUElDX1NFRURfVVNFUl9FTlJPTEwQo69BEh0KF0VOVEVSUFJJU0VfVE9QSUNfUkVDT1JEEKSvQRIoCiJHRVRfQ0hBVF9DUkVBVEVfQ0hBVFRFUlNfUkVDT01NRU5EEKWvQRIWChBHRVRfU01BUlRfV0lER0VUEKavQRInCiFFTlRFUlBSSVNFX1RPUElDX1VTRVJfQ0FSRF9BQ1RJT04Qp69BEiEKG0dFVF9QRVJTT05BTElaQVRJT05fU0VUVElORxCor0ESIQobU0VUX1BFUlNPTkFMSVpBVElPTl9TRVRUSU5HEKmvQRIiChxQVVNIX1BFUlNPTkFMSVpBVElPTl9TRVRUSU5HEKqvQRIdChdHRVRfU01BUlRfUkVQTFlfU0VUVElORxCrr0ESHQoXU0VUX1NNQVJUX1JFUExZX1NFVFRJTkcQrK9BEh4KGFBVU0hfU01BUlRfUkVQTFlfU0VUVElORxCtr0ESGQoTUFVMTF9TTEFTSF9DT01NQU5EUxCur0ESFgoQUE9TVF9BU19GRUVEQkFDSxCvr0ESGgoUR0VUX1NFQVJDSF9SRUNPTU1FTkQQsK9BEh0KF1BVTExfU0VBUkNIX1BMQUNFSE9MREVSELGvQRIdChdQVVNIX1NFQVJDSF9QTEFDRUhPTERFUhCyr0ESFQoPR0VUX0dFQ19TRVRUSU5HELOvQRIVCg9TRVRfR0VDX1NFVFRJTkcQtK9BEhYKEFBVU0hfR0VDX1NFVFRJTkcQta9BEhIKDEdFVF9BSV9WT0NBQhC2r0ESFQoPQ1JFQVRFX0FJX1ZPQ0FCELevQRIVCg9ERUxFVEVfQUlfVk9DQUIQuK9BEhQKDkdFVF9BU19TRVRUSU5HELmvQRIUCg5TRVRfQVNfU0VUVElORxC6r0ESFQoPUFVTSF9BU19TRVRUSU5HELuvQRISCgxTTUFSVF9NT1NBSUMQvK9BEhwKFkdFVF9BSV9URVhUX0NPUlJFQ1RJT04Qva9BEh8KGUdFVF9GRUVEQkFDS19SRUFTT05fSVRFTVMQvq9BEh0KF0dFVF9VTklWRVJTQUxfUkVDT01NRU5EEL+vQRIbChVQT1NUX01BR0lDX1NIQVJFX0lORk8QwK9BEh4KGFBVTExfVVNFQVJDSF9QTEFDRUhPTERFUhDBr0ESHAoWUE9TVF9TQ1JFRU5fU0hBUkVfSU5GTxDCr0ESIwodTk9fUVVFUllfUkVDT01NRU5EX0ZFRURfQ0FSRFMQw69BEh8KGVNNQVJUX1dSSVRFUl9HRVRfUkVWSVNJT04QxK9BEh4KGFNNQVJUX1dSSVRFUl9HRVRfUkVXUklURRDFr0ESIgocVVNFQVJDSF9QTEFDRUhPTERFUl9DQUxMQkFDSxDGr0ESJQofUFVUX0FJX1RFWFRfQ09SUkVDVElPTl9GRUVEQkFDSxDHr0ESGQoTR0VUX0FDVElWSVRZX0JBTk5FUhCBt0ESIgocR0VUX09OQk9BUkRJTkdfU09VUkNFX0NPTkZJRxCCt0ESGgoUR0VUX1RJTUVaT05FX0JZX0NJVFkQwfVBEikKI1BVTExfTEVBTl9NT0RFX1NUQVRVU19BTkRfQVVUSE9SSVRZEMnTBhIcChZQQVRDSF9MRUFOX01PREVfU1RBVFVTEMrTBhIpCiNQVVNIX0xFQU5fTU9ERV9TVEFUVVNfQU5EX0FVVEhPUklUWRDL0wYSGwoVUEFUQ0hfTE9DS19TQ1JFRU5fQ0ZHEMzTBhIXChFQVUxMX0RZTkFNSUNfRkxPVxCx2wYSHAoWUFVMTF9EWU5BTUlDX0ZMT1dfU1RFUBCy2wYSFwoRUkVQT1JUX0ZMT1dfRVZFTlQQs9sGEhsKFVBVTExfRFlOQU1JQ19SRVNPVVJDRRC02wYSFwoRUFVTSF9EWU5BTUlDX0ZMT1cQtdsGEhwKFlBVU0hfRFlOQU1JQ19GTE9XX1NURVAQttsGEhwKFlRSWV9TRVRfVUdfRVZFTlRfU1RBVEUQt9sGEjMKLUdFVF9ORVdfVVNFUl9DUkVBVEVfVEVBTV9TVFJPTkdfR1VJREVfQ09OVEVYVBC42wYSHQoXR0VUX0xEUl9TRVJWSUNFX0FQUExJTksQudsGEhYKEEJJWl9FVkVOVF9SRVBPUlQQutsGEh8KGVBVTExfTkVXX0ZFQVRVUkVfTUFURVJJQUwQ4tsGEiQKHlNVQk1JVF9ORVdfRkVBVFVSRV9DTElDS19FVkVOVBDj2wYSGQoTR0VUX01FRUdPX1NJTkdBVFVSRRD32wYSGQoTRUNNX1NVQlNDUklCRV9FVkVOVBCV3AYSHQoXRUNNX0tFRVBfTElWRV9TVUJTQ1JJQkUQltwGEhoKFEVDTV9DQU5DRUxfU1VCU0NSSUJFEJfcBhIZChNFQ01fRVZFTlRfQlJPQURDQVNUEJjcBhIcChZFQ01fQUREX0lURU1fU1VCU0NSSUJFEJncBhIRCgtQVUxMX0JBTk5FUhDhkUMSFwoRU0VUX0JBTk5FUl9TVEFUVVMQ4pFDEhEKC1BVU0hfQkFOTkVSEOORQxIjCh1NR0VUX0NPTlRBQ1RfUE9JTlRTX1VTRVJfSU5GTxCNlEMSIQobQkFUQ0hfVVBMT0FEX0NPTlRBQ1RfUE9JTlRTEI6UQxIqCiRHRVRfQ0hBTkdFRF9DT05UQUNUX1BPSU5UU19VU0VSX0lORk8Qj5RDEhoKFE1HRVRfQkxPQ0tfVVNFUl9JTkZPEJCUQxIZChNNR0VUX0JMT0NLX1VTRVJfTlVNEJGUQxIWChBTRVRVUF9CTE9DS19VU0VSEJSUQxIWChBQVUxMX0NPTlRBQ1RTX1YyEJaUQxIVCg9NR0VUX0ZSSUVORFNISVAQl5RDEhsKFUdFVF9VU0VSX0JMT0NLX1NUQVRVUxCblEMSHwoZQkxPQ0tfU1RBVFVTX0NIQU5HRV9FVkVOVBCclEMSFAoOU0VUVVBfTVNHX0FVVEgQnZRDEhIKDEdFVF9NU0dfQVVUSBCelEMSGAoSUFVMTF9VU0VSX1JFTEFUSU9OEJ+UQxIaChRJR05PUkVfQ09OVEFDVF9BUFBMWRCglEMSHgoYTVBVVF9DT05UQUNUX0FQUExJQ0FUSU9OEKGUQxIcChZQVUxMX0FVVEhfQ0hBVFRFUl9JTkZPEKKUQxIeChhHRVRfVVNFUl9JRF9BTkRfUkVMQVRJT04Qo5RDEiEKG1BVTExfVVNFUl9TVFJBTkdFUl9SRUxBVElPThCklEMSIAoaUFVUX1VTRVJfU1RSQU5HRVJfUkVMQVRJT04QpZRDEh0KF1BVTExfVVNFUl9TVFJBTkdFUl9MSVNUEKaUQxIhChtQVVNIX1VTRVJfU1RSQU5HRVJfUkVMQVRJT04Qp5RDEhwKFk1HRVRfVVNFUl9CTE9DS19TVEFUVVMQqJRDEhsKFU1HRVRfQ0FOX1NFVF9TVFJBTkdFUhCplEMSFAoOUFVUX0FJX1BST0ZJTEUQ1ZVDEhgKElBVTExfTVlfQUlfQ0hBVFRFUhDWlUMSGQoTUFVMTF9VU0VSX0FHUkVFTUVOVBDXlUMSGAoSUFVUX1VTRVJfQUdSRUVNRU5UENiVQxIhChtQVUxMX1BST0ZJTEVfVEVBTV9CQVNFX0lORk8Q2ZVDEicKIVBVTExfUFJPRklMRV9ERVBBUlRNRU5UX0JBU0VfSU5GTxDalUMSHgoYRVhQT1JUX1NJR05BVFVSRV9ISVNUT1JZENuVQxIbChVHRVRfQ09OVEFDVF9PQVVUSF9VUkwQgZhDEhgKEkdFVF9PQVVUSF9DT05UQUNUUxCCmEMSHgoYR0VUX1BFTkRJTkdfUkVWSUVXX0NPVU5UEIOYQxIgChpHRVRfSU5WSVRBVElPTl9BQ0NFU1NfSU5GTxCEmEMSIQobUFVUX1RSQU5TTEFUSU9OX0ZFRURCQUNLX1YyENicQxIeChhDUkVBVElPTl9ET0NTX05PVElDRV9ORVcQvZ1DEiEKG0NSRUFUSU9OX0RPQ1NfTk9USUNFX0NIQU5HRRC+nUMSHwoZTUdFVF9UQUdfTUVOVElPTl9FTlRJVElFUxChnkMSIQobU0VORF9JTlZJVEFUSU9OX1RPX0lOQUNUSVZFEIWfQxIdChdPTkVfS0VZX0lOVklURV9JTkFDVElWRRCGn0MSGgoUR0VUX0lOQUNUSVZFX1BBUkVOVFMQh59DEiIKHEdFVF9ERVBBUlRNRU5UX0lOQUNUSVZFX0lORk8QiJ9DEiMKHUdFVF9ERVBBUlRNRU5UX0lOVklUQVRJT05fVVJMEImfQxIlCh9QVVNIX0xBTl9UUkFOU19TRU5ERVJfQUREUlNfU0VUEJmfQxIvCilQVVNIX0xBTl9UUkFOU19ET1dOTE9BREVSX0FERFJTX1RPX1NFRURFUhCan0MSFwoRU0VORF9JTUFHRV9UT19PQ1IQk+A9EhUKD1BVTExfUEVSTUlTU0lPThCd4D0SGwoVUFVTSF9QRVJNSVNTSU9OX0VWRU5UEJ7gPRIlCh9VUERBVEVfVVNFUl9SRUNFTlRMWV9VU0VEX0VNT0pJELHgPRIUCg5QVUxMX1NQTEFTSF9BRBC74D0SHwoZR0VUX0FETUlOX1BFUk1JU1NJT05fSU5GTxDP4D0SHgoYR0VUX01BSUxfV0VCX1RBQl9WSVNJQkxFENngPRIWChBQVUxMX1VHX1NDRU5BUklPELGhQxIaChRQVUxMX1VHX1NES19TRVRUSU5HUxCyoUMSFQoPUkVQT1JUX1VHX0VWRU5UELOhQxIbChVQVVNIX1VHX1NDRU5BUklPX0lORk8QtKFDEhYKEFBVU0hfQkxPQ0tfRVZFTlQQ+aJDEg0KB1BVU0hfS1YQ+qJDEh4KGFBVU0hfQkxPQ0tfRU5USVRZX1VQREFURRD7okMSIQobUFVTSF9CTE9DS19FWFRFTlNJT05fVVBEQVRFEPyiQxIbChVQVUxMX05BTUVDQVJEX1BST0ZJTEUQwKRDEhkKE1BVVF9TSU5HTEVfTkFNRUNBUkQQwaRDEhgKElBVTExfTkFNRUNBUkRfTElTVBDCpEMSHAoWVVBEQVRFX1NJTkdMRV9OQU1FQ0FSRBDDpEMSHAoWREVMRVRFX1NJTkdMRV9OQU1FQ0FSRBDEpEMSGwoVUFVMTF9OQU1FQ0FSRFNfQllfSURTEMWkQxIjCh1DSEVDS19DT05UQUNUX1BPSU5UX0RVUExJQ0FURRDGpEMSJgogQ1JFQVRFX09SX1VQREFURV9TSU5HTEVfTkFNRUNBUkQQx6RDEhgKElBVU0hfVEVMRV9NRUVTU0FHRRClpUMSGAoSUFVTSF9TWU5DX01FRVNTQUdFEKalQxIYChJTRU5EX1NZTkNfTUVFU1NBR0UQp6VDEhsKFVBVTExfV0FURVJNQVJLX0NPTkZJRxCJpkMSIAoaR0VUX0hJRERFTl9XQVRFUk1BUktfSU1BR0UQiqZDEhsKFVBVU0hfV0FURVJNQVJLX0NPTkZJRxCLpkMSIAoaUFVTSF9GSUxFX1dBVEVSTUFSS19DT05GSUcQjKZDEiYKIFBVTExfR1VBUkFOVEVFRF9XQVRFUk1BUktfQ09ORklHEI2mQxIRCgtDUkVBVEVfVEVBTRDtpkMSFgoQQ1JFQVRFX1RFQU1fQ0hBVBDupkMSHgoYQklORF9URUFNX0NIQVRfUFJFX0NIRUNLEO+mQxIUCg5CSU5EX1RFQU1fQ0hBVBDwpkMSFgoQVU5CSU5EX1RFQU1fQ0hBVBDxpkMSEAoKUEFUQ0hfVEVBTRDypkMSGAoSUEFUQ0hfVEVBTV9TRVRUSU5HEPOmQxIWChBQVVRfVEVBTV9NRU1CRVJTEPSmQxIZChNERUxFVEVfVEVBTV9NRU1CRVJTEPWmQxIXChFQVUxMX1RFQU1TX0JZX0lEUxD2pkMSDwoJUFVTSF9URUFNEPemQxIXChFQVVNIX1RFQU1fU0VUVElORxD4pkMSGQoTUFVTSF9URUFNX0JBU0VfSU5GTxD5pkMSHQoXQ0hFQ0tfTkFNRV9BVkFJTEFCSUxJVFkQ+qZDEh0KF1BBVENIX1RFQU1fTUVNQkVSU19ST0xFEPumQxIXChFQVUxMX1RFQU1fTUVNQkVSUxD8pkMSFwoRUFVTSF9URUFNX01FTUJFUlMQ/aZDEhwKFlBVVF9URUFNX0NIQVRfQ0hBVFRFUlMQ/qZDEhsKFVBBVENIX1RFQU1fQ0hBVF9CWV9JRBD/pkMSJAoeUFVUX0NIQVRURVJfVklBX1RFQU1fT1BFTl9DSEFUEICnQxIcChZERUxFVEVfVEVBTV9NRU1CRVJTX1YyEIGnQxIZChNQVUxMX1RFQU1TX0ZPUl9DSEFUEIKnQxIaChRQVUxMX1RFQU1fTUVNQkVSU19WMhCDp0MSFgoQUFVMTF9URUFNX0VWRU5UUxCEp0MSIwodUFVMTF9URUFNX01FTUJFUlNfU0VBUkNIX01FVEEQhadDEhgKElBVTExfVEVBTV9DSEFUVEVSUxCGp0MSEAoKUFVMTF9JVEVNUxDRp0MSFwoRUFVMTF9JVEVNU19CWV9JRFMQ0qdDEhMKDVJFT1JERVJfSVRFTVMQ06dDEhAKClBVU0hfSVRFTVMQ1KdDEhgKElBVTExfVEVBTV9JVEVNX0lEUxDVp0MSEAoKUEFUQ0hfSVRFTRDWp0MSHgoYUFVMTF9JVEVNU19CWV9FTlRJVFlfSURTENenQxITCg1QVUxMX0lURU1TX1YyENinQxIZChNQVUxMX0FWQVRBUl9NRVRBX1YyEKuoQxIWChBQVUxMX0FWQVRBUl9NRVRBELSoQxIdChdQVVNIX1NVQlNDUklQVElPTlNfRkVFRBC1qEMSJQofUFVMTF9TVUJTQ1JJUFRJT05TX0ZFRURTX0JZX0lEUxC2qEMSHgoYR0VUX1NVQlNDUklQVElPTlNfQ09ORklHELeoQxImCiBQVUxMX1NVQlNDUklQVElPTlNfQkxPQ0tFRF9GRUVEUxC4qEMSHwoZUFVTSF9TVUJTQ1JJUFRJT05TX0RJQUxPRxC5qEMSIgocQ09ORklSTV9TVUJTQ1JJUFRJT05TX0RJQUxPRxC6qEMSHwoZUFVMTF9TVUJTQ1JJUFRJT05TX0RJQUxPRxC7qEMSMAoqVVBMT0FEX1NVQlNDUklQVElPTlNfRElBTE9HX0VYUE9TVVJFX0VWRU5UELyoQxIVCg9TRU5EX0VNX1RPX1VTRVIQmalDEg8KCUNBTkNFTF9FTRCaqUMSEgoMU0VORF9FTV9JTkZPEJupQxIQCgpSRUNFSVZFX0VNEJypQxIVCg9QVUxMX0VNX1JFQ09SRFMQnalDEhUKD0NIRUNLX0VNX1NUQVRVUxCeqUMSGgoURVhJU1RfQUNUSVZFX0VNX1RBU0sQn6lDEh8KGVBVTExfREFUQV9SRVRFTlRJT05fUlVMRVMQralDEiQKHlBVTExfT0ZGTElORV9TRUFSQ0hfUEVSTUlTU0lPThD9qUMSJAoeUFVTSF9PRkZMSU5FX1NFQVJDSF9QRVJNSVNTSU9OEP6pQxIbChVHRVRfTUVFR09fU0hPV19FTkFCTEUQ4apDEiIKHEdFVF9GRUlTSFVfTUVFR09fU0hPV19FTkFCTEUQ4qpDEhAKClBVU0hfTUVFR08Q46pDEhYKEE9QRU5fQkFOTkVSX1BVTEwQxatDEhYKEE9QRU5fQkFOTkVSX1BVU0gQxqtDEhYKEE9QRU5fQkFOTkVSX1BPU1QQx6tDEh0KF09QRU5fQkFOTkVSX05PVElGWV9QVVNIEMirQxIgChpQVVNIX0NIQVRURVJfQ1VTVE9NX1NUQVRVUxCprEMSKgokSVNfQUxMT1dFRF9DUkVBVEVfVVNFUl9DVVNUT01fU1RBVFVTEKqsQxIfChlDUkVBVEVfVVNFUl9DVVNUT01fU1RBVFVTEKusQxIfChlVUERBVEVfVVNFUl9DVVNUT01fU1RBVFVTEKysQxIfChlQVUxMX1VTRVJfQ1VTVE9NX1NUQVRVU0VTEK2sQxIhChtERUxFVEVfVVNFUl9DVVNUT01fU1RBVFVTRVMQrqxDEiYKH1BVVF9VU0VSX1NUQVRVU19DQUxFTkRBUl9FVkVOVFMQ07uhBRIpCiNQVUxMX1VTRVJfVFlQSU5HX1RSQU5TTEFURV9TRVRUSU5HUxCwrEMSKQojUFVTSF9VU0VSX1RZUElOR19UUkFOU0xBVEVfU0VUVElOR1MQsaxDEhwKFlVQTE9BRF9TWVNURU1fVElNRVpPTkUQsqxDEicKIVBVTExfT1RIRVJfVU5JVkVSU0FMX1VTRVJfU0VUVElORxCzrEMSLQonUFVMTF9BTExPV0VEX0FERF9VUkdFTlRfTlVNX09OX0JPQVJESU5HELSsQxIdChdQVUxMX1VTRVJfVFJJQUxfQUJJTElUWRC1rEMSJgogU1dJVENIX1VTRVJfVFJJQUxfQUJJTElUWV9TVEFUVVMQtqxDEiYKIFNXSVRDSF9UUklBTF9TVUJTQ1JJUFRJT05fU1RBVFVTELesQxIjCh1HRVRfVFJJQUxfU1VCU0NSSVBUSU9OX1NUQVRVUxC4rEMSFQoPUFVTSF9VU0VSX01FREFMEPGtQxIUCg5HRVRfTUVEQUxfTElTVBDyrUMSFgoQR0VUX01FREFMX0RFVEFJTBDzrUMSDwoJU0VUX01FREFMEPStQxIbChVHRVRfVVNFUl9UQUtJTkdfTUVEQUwQ9a1DEiAKGlBVTExfVEVOQU5UX0JVSUxEX1JFU09VUkNFEPatQxIgChpQVVNIX1RFTkFOVF9CVUlMRF9SRVNPVVJDRRD3rUMSHwoZUE9TVF9DTElFTlRfVVBHUkFERV9FVkVOVBD4rUMSLQonUFVTSF9URU5BTlRfQlVJTERfUkVTT1VSQ0VfV0lUSF9IQVJNT05ZEPmtQxIbChVQQVRDSF9DSEFUX1RPUF9OT1RJQ0UQ1a5DEiEKG1BVTExfQ0hBVF9UT1BfTk9USUNFX0JZX0lEUxDWrkMSGwoVQ0xPU0VfQ0hBVF9UT1BfTk9USUNFENeuQxIaChRQVVNIX0NIQVRfVE9QX05PVElDRRDYrkMSKQojUFVTSF9DSEFUX1RPUF9OT1RJQ0VfUEVSU09OQUxfU1RBVEUQ2a5DEiEKG0dFVF9SRVRFTlRJT05fUVVFU1RJT05OQUlSRRC5r0MSJAoeU1VCTUlUX1JFVEVOVElPTl9RVUVTVElPTk5BSVJFELqvQxIiChxHRVRfUkVURU5USU9OX09QRVJBVElPTl9MSU5LELuvQxIZChNHRVRfV0lER0VUX0FQUF9MSVNUELyvQxIcChZHRVRfTUFURVJJQUxTX0JZX1NDRU5FEL2vQxIgChpQQVRDSF9DSEFUVEVSX0VYVFJBX1NUQVRFUxCdsEMSJAoeUFVTSF9BVFRFTkRBTkNFX1JFRlJFU0hfQ09ORklHEKewQxIoCiJQVVNIX0FUVEVOREFOQ0VfVE9QX1NQRUVEX0NMT0NLX0lOEKiwQxISCgxQVUJMSVNIX1ZPVEUQsbBDEgoKBFZPVEUQsrBDEhYKEFBVU0hfVk9URV9SRVNVTFQQs7BDEiMKHU1HRVRfVk9URV9GSVJTVF9TQ1JFRU5fUkVTVUxUELSwQxIWChBNR0VUX1ZPVEVfUkVTVUxUELWwQxIVCg9SRVRSQU5TTUlUX1ZPVEUQtrBDEhAKCkNMT1NFX1ZPVEUQt7BDEh4KGEdFTkVSQVRFX0NMSUVOVF9EQVRBX0tFWRDFsEMSKAoiR0VUX0NMSUVOVF9GT1JFSUdOX0tNU19JTklUX1BBUkFNUxDGsEMSHQoXREVDUllQVF9DTElFTlRfREFUQV9LRVkQx7BDEiMKHUJBVENIX0RFQ1JZUFRfQ0xJRU5UX0RBVEFfS0VZEMiwQxIUCg5UT09MS0lUX0FDVElPThDZsEMSFQoPRkVUQ0hfRk9MTE9XX1VQENqwQxIUCg5HRU5fUkVQT1JUX1VSTBDtsEMSHAoWR0VUX0ZJTEVfUklTS19UQUdfTElTVBD3sEMSHAoWQ0FOX1VTRVJfRE9XTkxPQURfRklMRRD4sEMSGgoUR0VUX0lNX0ZJTEVfUklTS19UQUcQ+bBDEiUKH0NDTV9QRVJNSVNTSU9OX1BFUk1fQ0hBTkdFX1BVU0gQgbFDEh0KF1NDQU5fVVNFUl9WSVNJQkxFX0dST1VQEIuxQxIcChZQVUxMX0NPTlRBQ1RfU1RSVUNUVVJFEIyxQxInCiFQVUxMX1ZJU0lCTEVfREVQQVJUTUVOVF9TVFJVQ1RVUkUQjbFDEhgKElBVTExfR1JPVVBfTUVNQkVSUxCOsUMSIAoaUFVMTF9WSVNJQkxFX0dST1VQU19CWV9JRFMQj7FDEiMKHVBVU0hfQVBQUk9WQUxfVE9ET19UQVNLX0NPVU5UEOWxQxIiChxHRVRfQVBQUk9WQUxfVE9ET19UQVNLX0NPVU5UEOaxQxIaChRHRVRfQVBQUk9WQUxfU0VUVElORxDnsUMSJQofTEFSS19PRkZJQ0VfQUlfSU1fU1RPUF9HRU5FUkFURRDouEMSIQobTEFSS19PRkZJQ0VfQUlfSU1fTkVXX1RPUElDEOm4QxIiChxMQVJLX09GRklDRV9BSV9JTV9SRUdFTkVSQVRFEOq4QxIqCiRMQVJLX09GRklDRV9BSV9JTV9DSEVDS19NWV9BSV9VU0FCTEUQ67hDEiIKHExBUktfT0ZGSUNFX0FJX0lNX0lOSVRfTVlfQUkQ7LhDEicKIUxBUktfT0ZGSUNFX0FJX0lNX1BVTExfTVlfQUlfSU5GTxDtuEMSNQovTEFSS19PRkZJQ0VfQUlfR0VUX1RIUkVBRF9JRF9CWV9BSV9DSEFUX01PREVfSUQQ7rhDEicKIUxBUktfT0ZGSUNFX0FJX0ZFVENIX1FVSUNLX0FDVElPThDvuEMSPwo5TEFSS19PRkZJQ0VfQUlfR0VUX09SX0NSRUFURV9USFJFQURfSURfQllfQUlfQ0hBVF9NT0RFX0lEEPC4QxItCidMQVJLX09GRklDRV9BSV9GRVRDSF9RVUlDS19BQ1RJT05fQllfSUQQ8bhDEiMKHUxBUktfT0ZGSUNFX0FJX1BVTExfVE9PTF9MSVNUEPK4QxImCiBMQVJLX09GRklDRV9BSV9QVUxMX1RPT0xTX0JZX0lEUxDzuEMSHgoYTEFSS19PRkZJQ0VfQUlfUFVUX1RPT0xTEPS4QxIjCh1MQVJLX09GRklDRV9BSV9DSEFUX01PREVfSU5JVBD1uEMSKgokTEFSS19PRkZJQ0VfQUlfUFVMTF9DSEFUX01PREVfVEhSRUFEEPa4QxIrCiVMQVJLX09GRklDRV9BSV9DSEFUX01PREVfVEhSRUFEX0NMT1NFEPe4QxImCiBMQVJLX09GRklDRV9BSV9QVVRfTElLRV9GRUVEQkFDSxD4uEMSJwohTEFSS19PRkZJQ0VfQUlfUFVMTF9MSUtFX0ZFRURCQUNLEPm4QxInCiFMQVJLX09GRklDRV9BSV9QVVNIX0xJS0VfRkVFREJBQ0sQ+rhDEiAKGkxBUktfT0ZGSUNFX0FJX1NFQVJDSF9UT09MEPu4QxIsCiZMQVJLX09GRklDRV9BSV9QVUxMX0VYVEVOU0lPTl9TRVRUSU5HUxD8uEMSKQojTEFSS19PRkZJQ0VfQUlfR0VUX1NVTU1BUklaRV9BQ1RJT04Q/bhDEiUKH0xBUktfT0ZGSUNFX0FJX0VOVEVSX01ZX0FJX0NIQVQQ/rhDEiAKGkxBUktfT0ZGSUNFX0FJX1BVVF9PTkJPQVJEEP+4QxImCiBMQVJLX09GRklDRV9BSV9QVVNIX1FVSUNLX0FDVElPThCAuUMSLQonTEFSS19PRkZJQ0VfQUlfUFVTSF9RVUlDS19BQ1RJT05fREVUQUlMEIG5QxIzCi1MQVJLX09GRklDRV9BSV9QVVRfTVlfQUlfVVNFUl9FWFBFUklFTkNFX1BMQU4QhrlDEi4KKExBUktfT0ZGSUNFX0FJX0dFVF9NWV9BSV9FWFBFUklFTkNFX1BMQU4Qh7lDEi8KKUxBUktfT0ZGSUNFX0FJX1BVU0hfTVlfQUlfRVhQRVJJRU5DRV9QTEFOEIi5QxIvCilMQVJLX09GRklDRV9BSV9QVVNIX01ZX0FJX1JFUExZX1JFQ09NTUVORBCJuUMSKAoiTEFSS19PRkZJQ0VfQUlfR0VUX1JFUExZX1JFQ09NTUVORBCKuUMSRgpATEFSS19PRkZJQ0VfQUlfQ0hFQ0tfVVNFUlNfV0lUSElOX1NDT1BFX09GX0NPTExFQ1RJTkdfUkVQTFlfREFUQRCMuUMSOwo1TEFSS19PRkZJQ0VfQUlfTk9USUZZX1VTRVJfUkVQTFlfQUlfUkVDT01NRU5EX01FU1NBR0UQjblDEjAKKkxBUktfT0ZGSUNFX0FJX1BVU0hfU01BUlRfUkVQTFlfRU5UUllfSU5GTxCOuUMSJAoeTEFSS19PRkZJQ0VfQUlfR0VUX01ZQUlfU1RBVFVTEI+5QxIlCh9MQVJLX09GRklDRV9BSV9QVVNIX01ZQUlfU1RBVFVTEJC5QxInCiFMQVJLX09GRklDRV9BSV9VUERBVEVfTVlBSV9TVEFUVVMQkblDEjMKLUxBUktfT0ZGSUNFX0FJX0dFVF9NWUFJX05FV19GVU5DVElPTl9SRU1JTkRFUhCSuUMSNgowTEFSS19PRkZJQ0VfQUlfVVBEQVRFX01ZQUlfTkVXX0ZVTkNUSU9OX1JFTUlOREVSEJO5QxI0Ci5MQVJLX09GRklDRV9BSV9QVVNIX01ZQUlfTkVXX0ZVTkNUSU9OX1JFTUlOREVSEJS5QxIvCilMQVJLX09GRklDRV9BSV9DTE9TRV9TTUFSVF9SRVBMWV9BU0tfU0VMRhCVuUMSLAomTEFSS19PRkZJQ0VfQUlfUFVTSF9TTUFSVF9SRVBMWV9TVEFUVVMQlrlDEi4KKExBUktfT0ZGSUNFX0FJX1BVTExfU01BUlRfUkVQTFlfUkVTT1VSQ0UQl7lDEiwKJkxBUktfT0ZGSUNFX0FJX0NIRUNLX1NNQVJUX1JFUExZX1FVT1RBEJi5QxIlCh9MQVJLX09GRklDRV9BSV9NR0VUX1NNQVJUX1JFUExZEJm5QxI5CjNMQVJLX09GRklDRV9BSV9QVVNIX1NNQVJUX1JFUExZX1JFQ0VJVkVSX0VOVFJZX0lORk8QrrlDEjIKLExBUktfT0ZGSUNFX0FJX0NMT1NFX1NNQVJUX1JFUExZX0FET1BUX0VOVFJZEK+5QxIlCh9MQVJLX09GRklDRV9QVVRfQVRfQUlfS05PV0xFREdFELC5QxIsCiZMQVJLX09GRklDRV9HRVRfQVRfQUlfS05PV0xFREdFX0FOU1dFUhCxuUMSLgooTEFSS19PRkZJQ0VfQ0xPU0VfQVRfQUlfS05PV0xFREdFX0FOU1dFUhCyuUMSLwopTEFSS19PRkZJQ0VfQUlfUFVTSF9BVF9BSV9SRVBMWV9SRUNPTU1FTkQQs7lDEisKJUxBUktfT0ZGSUNFX0FJX0RFVEVDVF9RVUVSWV9JTlRFTlRJT04QtLlDEj4KOExBUktfT0ZGSUNFX0FJX1BVU0hfU01BUlRfUkVQTFlfVU5ERVJfTUVTU0FHRV9FTlRSWV9JTkZPELW5QxI8CjZMQVJLX09GRklDRV9UUklHR0VSX1VOUkVBRF9NRVNTQUdFX1JFQ09NTUVORF9RVUVTVElPTlMQtrlDEiMKHUxBUktfT0ZGSUNFX1BVU0hfVVNFUl9JTV9JTkZPELe5QxIuCihMQVJLX09GRklDRV9BSV9JTkxJTkVfRkVUQ0hfUVVJQ0tfQUNUSU9OEJq5QxIvCilMQVJLX09GRklDRV9BSV9JTkxJTkVfR0VUX0NIQVRfQ09NUExFVElPThCbuUMSNgowTEFSS19PRkZJQ0VfQUlfSU5MSU5FX0dFVF9DSEFUX0NPTVBMRVRJT05fU1RBVFVTEJy5QxI3CjFMQVJLX09GRklDRV9BSV9JTkxJTkVfUFVTSF9DSEFUX0NPTVBMRVRJT05fU1RBVFVTEJ25QxItCidMQVJLX09GRklDRV9BSV9JTkxJTkVfTUVOVElPTl9SRUNPTU1FTkQQnrlDEi4KKExBUktfT0ZGSUNFX0FJX0lOTElORV9HRVRfUkVDRU5UX0FDVElPTlMQn7lDEikKI0xBUktfT0ZGSUNFX0FJX0lOTElORV9ERUxFVEVfQUNUSU9OEKC5QxIqCiRMQVJLX09GRklDRV9BSV9TQ0VORV9HRVRfQUdFTlRfTU9ERUwQzLlDEicKIUxBUktfT0ZGSUNFX0FJX1NDRU5FX0NSRUFURV9TQ0VORRDNuUMSJAoeTEFSS19PRkZJQ0VfQUlfU0NFTkVfUFVUX1NDRU5FEM65QxIrCiVMQVJLX09GRklDRV9BSV9TQ0VORV9MSVNUX1VTRVJfU0NFTkVTEM+5QxIrCiVMQVJLX09GRklDRV9BSV9TQ0VORV9HRVRfU0NFTkVfREVUQUlMENC5QxInCiFMQVJLX09GRklDRV9BSV9TQ0VORV9TV0lUQ0hfU0NFTkUQ0blDEicKIUxBUktfT0ZGSUNFX0FJX1NDRU5FX1JFTU9WRV9TQ0VORRDSuUMSKwolTEFSS19PRkZJQ0VfQUlfU0NFTkVfU0hBUkVfU0NFTkVfTElOSxDTuUMSLgooTEFSS19PRkZJQ0VfQUlfU0NFTkVfQUREX05FV19TQ0VORV9UT19NRRDUuUMSNAouTEFSS19PRkZJQ0VfQUlfU0NFTkVfR0VUX1NDRU5FX0RFVEFJTF9CWV9UT0tFThDVuUMSJgogTEFSS19PRkZJQ0VfQUlfUFVMTF9PTkJPQVJEX0lORk8Q1rlDEi0KJ0xBUktfT0ZGSUNFX0FJX1BVTExfVVNFUl9QUk9NUFRfU0FNUExFUxDXuUMSJAoeTEFSS19BSV9GRUVEQkFDS19SRUFTT05fU1VCTUlUENHAQxIcChZMQVJLX0FJX0dFVF9ERUJVR19JTkZPENLAQxIZChNHRVRfUkVOREVSX1RFTVBMQVRFELXBQxIUCg5HRVRfUkVOREVSX0RTTBC2wUMSIAoaUFVTSF9BUFBST1ZBTF9UQVNLX0NIQU5HRVMQuchDEhwKFlRSSUdHRVJfVU5SRUFEX1NVTU1BUlkQodBDEiAKGlBVU0hfVU5JVkVSU0FMX0NBUkRfVVBEQVRFEInYQxIgChpQVUxMX1VOSVZFUlNBTF9DQVJEX1VQREFURRCK2EMSIQobUFVMTF9VTklWRVJTQUxfQ0FSRFNfQllfQklaEIvYQxIXChFHRVRfU1VHX1FVRVNUSU9OUxDt2EMSHgoYR0VUX09OQk9BUkRJTkdfUVVFU1RJT05TEO7YQxIdChdHRVRfUkVDT01NRU5EX1FVRVNUSU9OUxDv2EMSJQofR0VUX01FU1NBR0VfUkVDT01NRU5EX1FVRVNUSU9OUxDx2EMSJgogUFVTSF9NRVNTQUdFX1JFQ09NTUVORF9RVUVTVElPTlMQ8thDEioKJFBVU0hfRklMRV9VUExPQURfUkVDT01NRU5EX1FVRVNUSU9OUxDz2EMSJAoeTEFSS19BSV9LTk9XTEVER0VfUFVUX0FJX1JPVU5EEPHfQxIlCh9MQVJLX0FJX0tOT1dMRURHRV9QVVNIX0FJX1JPVU5EEPLfQxI2CjBMQVJLX0FJX0tOT1dMRURHRV9QVVNIX0FJX1JPVU5EX1NUUkVBTUlOR19BTlNXRVIQ899DEjYKMExBUktfQUlfS05PV0xFREdFX1BVTExfQUlfUk9VTkRfU1RSRUFNSU5HX0FOU1dFUhD030MSMgosTEFSS19BSV9LTk9XTEVER0VfUFVMTF9BSV9ST1VORFNfQllfUE9TSVRJT04Q9d9DEiwKJkxBUktfQUlfS05PV0xFREdFX1BVTExfQUlfUk9VTkRTX0JZX0lEEPbfQxIuCihMQVJLX0FJX0tOT1dMRURHRV9QVUxMX0FJX1JPVU5EX1JFU09VUkNFEPffQxInCiFMQVJLX0FJX0tOT1dMRURHRV9QVVRfQUlfRkVFREJBQ0sQ+N9DEiUKH0xBUktfQUlfS05PV0xFREdFX1NUT1BfR0VORVJBVEUQ+99DEioKJExBUktfQUlfS05PV0xFREdFX1BVTExfQUlfUk9VTkRfQ09QWRD830MSJgogTEFSS19BSV9LTk9XTEVER0VfUFVUX1NIQVJFX0xJTksQ/d9DEi8KKUxBUktfQUlfS05PV0xFREdFX1BVTExfU0hBUkVfTElOS19DT05URU5UEP7fQxIoCiJMQVJLX0FJX0tOT1dMRURHRV9QVUxMX1NIQVJFX0lNQUdFEP/fQxItCidMQVJLX0FJX0tOT1dMRURHRV9VUERBVEVfQUlfUk9VTkRfUVVFUlkQgOBDEikKI0xBUktfQUlfS05PV0xFREdFX1BVVF9BSV9UT1BJQ19SRUFEENXgQxIvCilMQVJLX0FJX0tOT1dMRURHRV9QVUxMX1VTRVJfQUlfVE9QSUNfTElTVBDW4EMSKwolTEFSS19BSV9LTk9XTEVER0VfUFVMTF9BSV9UT1BJQ19CWV9JRBDX4EMSKgokTEFSS19BSV9LTk9XTEVER0VfUFVTSF9BSV9UT1BJQ19SRUFEENjgQxIoCiJMQVJLX0FJX0tOT1dMRURHRV9ERUxFVEVfQUlfVE9QSUNTENngQxIrCiVMQVJLX0FJX0tOT1dMRURHRV9QVVNIX0JBVENIX0FJX1RPUElDENrgQxIqCiRMQVJLX0FJX0tOT1dMRURHRV9QVUxMX1VTRVJfRkVBVFVSRVMQneJDEjQKLkxBUktfQUlfS05PV0xFREdFX1BVTExfT05CT0FSRF9RVUVSWV9URU1QTEFURVMQgeNDEisKJUxBUktfQUlfS05PV0xFREdFX1BVTExfSE9NRV9QQUdFX0lORk8QguNDEioKJExBUktfQUlfS05PV0xFREdFX0FQUExZX0ZVTExfRkVBVFVSRRCD40MSPAo2TEFSS19BSV9LTk9XTEVER0VfUFVTSF9GVUxMX0ZFQVRVUkVfQVBQTElDQVRJT05fQ0hBTkdFEITjQxItCidMQVJLX0FJX0tOT1dMRURHRV9QVUxMX0lERU5USVRZX1BST0ZJTEUQ5eNDEiQKHkxBUktfQUlfS05PV0xFREdFX0NIRUNLX1VTQUJMRRDm40MSLQonTEFSS19BSV9LTk9XTEVER0VfUFVTSF9JREVOVElUWV9QUk9GSUxFEOfjQxIkCh5MQVJLX0FJX0tOT1dMRURHRV9QVUxMX1NJREVCQVIQ7+NDEicKIUxBUktfQUlfS05PV0xFREdFX0NSRUFURV9ET0NVTUVOVBDw40MSLQonTEFSS19BSV9LTk9XTEVER0VfR0VUX1VQTE9BRF9XWF9RUl9DT0RFEPHjQxIwCipMQVJLX0FJX0tOT1dMRURHRV9QVUxMX09CSkVDVFNfSU5ERVhfU1RBVEUQ8uNDEi4KKExBUktfQUlfS05PV0xFREdFX1BVTExfV0lLSV9TUEFDRV9ERVRBSUwQ8+NDEicKIUxBUktfQUlfS05PV0xFREdFX1BVTExfQUdFTlRfTElTVBD040MSLQonTEFSS19BSV9LTk9XTEVER0VfUFVUX1VTRVJfQUdFTlRfU1RBVFVTEPXjQxIiChxMQVJLX0FJX0tOT1dMRURHRV9QVVNIX0FHRU5UEPbjQxIqCiRMQVJLX0FJX0tOT1dMRURHRV9SRUxFQVNFX1dJS0lfU1BBQ0UQg+RDEikKI0xBUktfQUlfS05PV0xFREdFX0NSRUFURV9XSUtJX1NQQUNFEITkQxIuCihMQVJLX0FJX0tOT1dMRURHRV9VUERBVEVfV0lLSV9TUEFDRV9JTkZPEIXkQxI0Ci5MQVJLX0FJX0tOT1dMRURHRV9VUERBVEVfV0lLSV9TUEFDRV9QRVJNSVNTSU9OEIbkQxIxCitMQVJLX0FJX0tOT1dMRURHRV9QVUxMX1dJS0lfU1BBQ0VfREVUQUlMX1YyEIfkQxIxCitMQVJLX0FJX0tOT1dMRURHRV9QVUxMX1dJS0lfU1BBQ0VfRklMRV9MSVNUEIjkQxI5CjNMQVJLX0FJX0tOT1dMRURHRV9QVUxMX1dJS0lfU1BBQ0VfQ1JFQVRFX1BFUk1JU1NJT04QieRDEicKIUxBUktfQUlfS05PV0xFREdFX0pPSU5fV0lLSV9TUEFDRRCK5EMSJwohTEFSS19BSV9LTk9XTEVER0VfUVVJVF9XSUtJX1NQQUNFEIvkQxIpCiNMQVJLX0FJX0tOT1dMRURHRV9ERUxFVEVfV0lLSV9TUEFDRRCM5EMSMwotTEFSS19BSV9LTk9XTEVER0VfUFVMTF9NQU5BR0VfV0lLSV9TUEFDRV9MSVNUEI3kQxIzCi1MQVJLX0FJX0tOT1dMRURHRV9QVUxMX0pPSU5FRF9XSUtJX1NQQUNFX0xJU1QQjuRDEjIKLExBUktfQUlfS05PV0xFREdFX1BVTExfTUFOQUdFUl9BTkRfVEVOQU5UX0lEEI/kQxIsCiZMQVJLX0FJX0tOT1dMRURHRV9HRU5fV0lLSV9TSEFSRV9JTUFHRRCQ5EMSLAomTEFSS19BSV9LTk9XTEVER0VfUFVTSF9XSUtJX1NQQUNFX0lORk8QkeRDEjcKMUxBUktfQUlfS05PV0xFREdFX0NSRUFURV9XSUtJX1NQQUNFX0RJU0NPVU5UX0NPREUQkuRDEjYKMExBUktfQUlfS05PV0xFREdFX0NIRUNLX1dJS0lfU1BBQ0VfRElTQ09VTlRfQ09ERRCT5EMSNQovTEFSS19BSV9LTk9XTEVER0VfUFVMTF9XSUtJX1NQQUNFX0RJU0NPVU5UX0NPREUQlORDEi0KJ0xBUktfQUlfS05PV0xFREdFX1BVTExfT05FX1dJS0lfTUFOQUdFUhCV5EMSNwoxTEFSS19BSV9LTk9XTEVER0VfUFVTSF9ESVNDT1VOVF9DT0RFX1NUQVRFX0NIQU5HRRCW5EMSLAomTEFSS19BSV9LTk9XTEVER0VfUFVTSF9XSUtJX1VTQUdFX0lORk8Ql+RDEjEKK0xBUktfQUlfS05PV0xFREdFX0VYUE9SVF9XSUtJX0RJU0NPVU5UX0NPREUQmORDEikKI0xBUktfQUlfS05PV0xFREdFX0NSRUFURV9XSUtJX09SREVSEJnkQxIpCiNMQVJLX0FJX0tOT1dMRURHRV9BUFBMWV9XSUtJX1JFRlVORBCa5EMSKgokTEFSS19BSV9LTk9XTEVER0VfQ0FOQ0VMX1dJS0lfUkVGVU5EEJvkQxIrCiVMQVJLX0FJX0tOT1dMRURHRV9BUFBST1ZFX1dJS0lfUkVGVU5EEJzkQxI3CjFMQVJLX0FJX0tOT1dMRURHRV9RVUVSWV9XSUtJX1JFRlVORF9PUkRFUl9TVU1NQVJZEJ3kQxItCidMQVJLX0FJX0tOT1dMRURHRV9BUFBMWV9XSUtJX0FMTF9SRUZVTkQQnuRDEjQKLkxBUktfQUlfS05PV0xFREdFX1BVTExfV0lLSV9PUkRFUl9MSVNUX0JZX1BBR0UQn+RDEiwKJkxBUktfQUlfS05PV0xFREdFX1BVU0hfV0lLSV9PUkRFUl9JTkZPEKDkQxIzCi1MQVJLX0FJX0tOT1dMRURHRV9QVUxMX1dJS0lfU1VCX01FUkNIQU5UX0lORk8QoeRDEi8KKUxBUktfQUlfS05PV0xFREdFX0FQUExZX1dJS0lfU1VCX01FUkNIQU5UEKLkQxIuCihMQVJLX0FJX0tOT1dMRURHRV9GRVRDSF9XSUtJX0FDQ09VTlRfVVJMEKPkQxI2CjBMQVJLX0FJX0tOT1dMRURHRV9QVUxMX1dJS0lfT1JERVJfTElTVF9CWV9PRkZTRVQQpORDEjwKNkxBUktfQUlfS05PV0xFREdFX1JFTU9WRV9TUEFDRV9NRU1CRVJfQllfRElTQ09VTlRfQ09ERRCl5EMSLQonTEFSS19BSV9LTk9XTEVER0VfUFVTSF9GT0xMT1dfVVBfREVUQUlMEMnkQxItCidMQVJLX0FJX0tOT1dMRURHRV9QVUxMX0ZPTExPV19VUF9ERVRBSUwQyuRDEjEKK0xBUktfQUlfS05PV0xFREdFX0NIRUNLX1VTRVJfSEFTX1NFTlRfUVVFUlkQy+RDEjoKNExBUktfQUlfS05PV0xFREdFX1BVTExfVVNFUl9SRVNPVVJDRV9TVEFUSVNUSUNTX0RBVEEQzORDEjgKMkxBUktfQUlfS05PV0xFREdFX1BVTExfQUlfVE9QSUNfVE9UQUxfVU5SRUFEX0NPVU5UEM3kQxI0Ci5MQVJLX0FJX0tOT1dMRURHRV9QVVNIX1VTRVJfVE9QSUNfVU5SRUFEX0NPVU5UEM7kQxI2CjBMQVJLX0FJX0tOT1dMRURHRV9QVUxMX1VTRVJfUkVDRU5UX0FJX1RPUElDX0xJU1QQz+RDEjAKKkxBUktfQUlfS05PV0xFREdFX1BVU0hfT0JKRUNUU19JTkRFWF9TVEFURRDQ5EMSMAoqTEFSS19BSV9LTk9XTEVER0VfR0VUX1FVRVJZX0JZX01FU1NBR0VfSURTENHkQxI7CjVMQVJLX0FJX0tOT1dMRURHRV9QVUxMX1VTRVJfSE9OR19CQU9fSU5DRU5USVZFX1NUQVRVUxDS5EMSQQo7TEFSS19BSV9LTk9XTEVER0VfUFVTSF9VU0VSX0hPTkdfQkFPX0lOQ0VOVElWRV9RQV9DT01QTEVURUQQ0+RDEjMKLUxBUktfQUlfS05PV0xFREdFX1JFQ09SRF9BQ1RVQUxfRVhQT1NVUkVfREFZUxDU5EMSKAoiTEFSS19BSV9LTk9XTEVER0VfVFJZX1NFTkRfSE9OR0JBTxDV5EMSNQovTEFSS19BSV9LTk9XTEVER0VfUFVUX1RFTkFOVF9BSV9FWFBFUklFTkNFX1BMQU4Q1uRDEjMKLUxBUktfQUlfS05PV0xFREdFX1BVVF9VU0VSX0FJX0VYUEVSSUVOQ0VfUExBThDX5EMSNgowTEFSS19BSV9LTk9XTEVER0VfUFVMTF9BSV9FWFBFUklFTkNFX1BMQU5fU1RBVFVTENjkQxI2CjBMQVJLX0FJX0tOT1dMRURHRV9QVVNIX0FJX0VYUEVSSUVOQ0VfUExBTl9TVEFUVVMQ2eRDEjoKNExBUktfQUlfS05PV0xFREdFX1BVTExfQUlfS05PV0xFREdFX1VTQUdFX0NPVU5UX0lORk8Q2uRDEkAKOkxBUktfQUlfS05PV0xFREdFX1BVTExfQUlfUFJPRFVDVElWSVRZX1JFUE9SVF9URUFNX0RFVEFJTFMQ2+RDEkEKO0xBUktfQUlfS05PV0xFREdFX1BVTExfQUlfUFJPRFVDVElWSVRZX1JFUE9SVF9QRVJTT05BTF9QQUdFENzkQxJTCk1MQVJLX0FJX0tOT1dMRURHRV9QVUxMX0FJX1BST0RVQ1RJVklUWV9SRVBPUlRfUEVSU09OQUxfUEFHRV9ISVNUT1JJQ0FMX1JFVklFVxDd5EMSPQo3TEFSS19BSV9LTk9XTEVER0VfUFVMTF9BSV9QUk9EVUNUSVZJVFlfUkVQT1JUX1RFQU1fUEFHRRDe5EMSQwo9TEFSS19BSV9LTk9XTEVER0VfUFVMTF9BSV9QUk9EVUNUSVZJVFlfUkVQT1JUX1RFQU1fUEFHRV9TVEFURRDf5EMSXQpXTEFSS19BSV9LTk9XTEVER0VfUFVMTF9BSV9QUk9EVUNUSVZJVFlfUkVQT1JUX0NPTExBQk9SQVRJT05fRUZGSUNJRU5DWV9JTVBST1ZFTUVOVF9DQVNFEODkQxIvCilMQVJLX0FJX0tOT1dMRURHRV9DUkVBVEVfQUlfU0NIRURVTEVfVEFTSxD65EMSLwopTEFSS19BSV9LTk9XTEVER0VfVVBEQVRFX0FJX1NDSEVEVUxFX1RBU0sQ++RDEi0KJ0xBUktfQUlfS05PV0xFREdFX1NUT1BfQUlfU0NIRURVTEVfVEFTSxD85EMSLQonTEFSS19BSV9LTk9XTEVER0VfUFVMTF9BSV9TQ0hFRFVMRV9UQVNLEP3kQxI3CjFMQVJLX0FJX0tOT1dMRURHRV9QVUxMX0FJX1NDSEVEVUxFX1RBU0tfVVNFUl9MSVNUEP7kQxItCidMQVJLX0FJX0tOT1dMRURHRV9QVVNIX0FJX1NDSEVEVUxFX1RBU0sQ/+RDEjMKLUxBUktfQUlfS05PV0xFREdFX0dFVF9BSV9TQ0hFRFVMRV9UQVNLX0NPTkZJRxCA5UMSLwopTEFSS19BSV9LTk9XTEVER0VfREVMRVRFX0FJX1NDSEVEVUxFX1RBU0sQgeVDEkEKO0xBUktfQUlfS05PV0xFREdFX0JBVENIX1RSSUdHRVJfTUVTU0FHRV9SRUNPTU1FTkRfUVVFU1RJT05TEJDmQxIlCh9MQVJLX0FJX0tOT1dMRURHRV9JTkRFWF9PQkpFQ1RTEOWuRBIvCilMQVJLX0FJX0tOT1dMRURHRV9HRVRfT0JKRUNUU19JTkRFWF9TVEFURRDmrkQSLwopTEFSS19BSV9LTk9XTEVER0VfRU5BQkxFX1RFTkFOVF9LTk9XTEVER0UQ565EEiwKJkxBUktfQUlfS05PV0xFREdFX1BVTExfVVNFUl9EQVRBX1NUQVRFEOiuRBIxCitMQVJLX0FJX0tOT1dMRURHRV9VUExPQURfU0FNUExFX0RPQ19PQkpFQ1RTEOquRBIpCiNMQVJLX0FJX0tOT1dMRURHRV9QVVRfVVNFUl9TRVRUSU5HUxDrrkQSKgokTEFSS19BSV9LTk9XTEVER0VfUFVMTF9VU0VSX1NFVFRJTkdTEOyuRBIqCiRMQVJLX0FJX0tOT1dMRURHRV9QVVNIX1VTRVJfU0VUVElOR1MQ7a5EEicKIUxBUktfQUlfS05PV0xFREdFX1BVVF9VU0VSX0FDVElPThDurkQSLwopTEFSS19BSV9LTk9XTEVER0VfU1RSRUFNX0FOU1dFUl9JTl9TRUFSQ0gQya9EEjQKLkxBUktfQUlfS05PV0xFREdFX1BVU0hfU0VBUkNIX1NUUkVBTUlOR19BTlNXRVIQyq9EEiEKG0dFVF9NRUVUSU5HX0FOQUxZU0lTX0NPTkZJRxCR/EQSIgocUFVTSF9NRUVUSU5HX0FOQUxZU0lTX0NPTkZJRxCS/EQSJgogR0VUX01FRVRJTkdfQU5BTFlTSVNfVkNfVEFCX0RBVEEQk/xEEicKIVBVU0hfTUVFVElOR19BTkFMWVNJU19WQ19UQUJfREFUQRCU/EQSKAoiU0VUX01FRVRJTkdfQU5BTFlTSVNfQ09OVEVOVF9DTE9TRRCV/EQqMgoLUGF5bG9hZFR5cGUSEAoMVFlQRV9VTktOT1dOEAASBwoDUEIyEAESCAoESlNPThACMpkBCg1QYWNrZXRHcmVldGVyEioKBHNlbmQSDy5pbXByb3RvLlBhY2tldBoPLmltcHJvdG8uUGFja2V0IgASXAoPcHVsbFBhY2tldEJ5U2lkEiIuaW1wcm90by5QdWxsUGFja2V0c0J5U2VxSWRSZXF1ZXN0GiMuaW1wcm90by5QdWxsUGFja2V0c0J5U2VxSWRSZXNwb25zZSIAQksKFmNvbS5zcy5hbmRyb2lkLmxhcmsucGJIA1ovY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL2ltcHJvdG8",[re]);var S=$t(kl,3);import{enumDesc as Ao,fileDesc as ao,messageDesc as le,tsEnum as no}from"@bufbuild/protobuf/codegenv2";import{extDesc as kc,fileDesc as eo}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_descriptor as lo}from"@bufbuild/protobuf/wkt";var y=eo("Cg9maWVsZGluZm8ucHJvdG8SCWZpZWxkaW5mbzo9CglGaWVsZEluZm8SHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGLGoAyABKAlSCUZpZWxkSW5mb0IzWjFjb2RlLmJ5dGVkLm9yZy9sYXJrL2ltLXByb3RvYnVmL2ltcHJvdG8vZmllbGRpbmZv",[lo]);import{extDesc as Dc,fileDesc as Vo}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_descriptor as to}from"@bufbuild/protobuf/wkt";var be=Vo("CgpvcGVuLnByb3RvEgRvcGVuOi8KAmlkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjg1AMgASgJUgJpZDpgChxjb21wYXRpYmxlX211bHRpcGxlX2lkX3R5cGVzEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxjh1AMgASgJUhljb21wYXRpYmxlTXVsdGlwbGVJZFR5cGVzQi5aLGNvZGUuYnl0ZWQub3JnL2xhcmsvaW0tcHJvdG9idWYvaW1wcm90by9vcGVu",[to]);import{enumDesc as Lc,fileDesc as oo,messageDesc as vc,tsEnum as Pc}from"@bufbuild/protobuf/codegenv2";var OV=oo("Cg9udW1fYmFzaWMucHJvdG8SCW51bV9iYXNpYyKKAQoISTE4TlRleHQSFAoMZGVmYXVsdF90ZXh0GAEgASgJEjYKCmkxOG5fdGV4dHMYAiADKAsyIi5udW1fYmFzaWMuSTE4TlRleHQuSTE4blRleHRzRW50cnkaMAoOSTE4blRleHRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIpCg1FbnRpdHlOdW1JbmZvEgsKA251bRgBIAEoCRILCgN1cmwYAiABKAkqIwoKRW50aXR5VHlwZRILCgdVTktOT1dOEAASCAoEVEFTSxABQjVIA1oxY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL251bV9iYXNpYw");import{enumDesc as _c,fileDesc as Ro,messageDesc as qc,tsEnum as $c}from"@bufbuild/protobuf/codegenv2";var _V=Ro("CiZjYWxlbmRhcl9hdHRlbmRlZV9udW1iZXJfY29udHJvbC5wcm90bxIgY2FsZW5kYXJfYXR0ZW5kZWVfbnVtYmVyX2NvbnRyb2wijgIKG0F0dGVuZGVlTnVtYmVyQ29udHJvbENvbmZpZxIaChJhdHRlbmRlZV9tYXhfY291bnQYASABKAUSHgoWaXNfdGVuYW50X2NlcnRpZmljYXRlZBgCIAEoCBIdChVpc19jb250cm9sX2ZlYXR1cmVfb24YAyABKAgSHgoWaXNfdXNlcl9pbl9hY2Nlc3NfbGlzdBgEIAEoCBIiChpjb250cm9sX2F0dGVuZGVlX21heF9jb3VudBgFIAEoBRIpCiFpc19yZWN1cl9ldmVudF9jb250cm9sX2ZlYXR1cmVfb24YBiABKAgSJQodcmVjdXJfZXZlbnRfY29udHJvbF9tYXhfY291bnQYByABKAUiuwMKKkNyZWF0ZUF0dGVuZGVlTnVtYmVyQ29udHJvbEFwcHJvdmFsUmVxdWVzdBITCgtjYWxlbmRhcl9pZBgBIAEoCRILCgN1aWQYAiABKAkSFQoNb3JpZ2luYWxfdGltZRgDIAEoAxIPCgdzdW1tYXJ5GAsgASgJEhIKCnN0YXJ0X3RpbWUYDCABKAMSFgoOc3RhcnRfdGltZXpvbmUYDSABKAkSEAoIZW5kX3RpbWUYDiABKAMSFAoMZW5kX3RpbWV6b25lGA8gASgJEhcKD2R1cmF0aW9uX3NlY29uZBgQIAEoAxJqCgpldmVudF90eXBlGBEgASgOMlYuY2FsZW5kYXJfYXR0ZW5kZWVfbnVtYmVyX2NvbnRyb2wuQ3JlYXRlQXR0ZW5kZWVOdW1iZXJDb250cm9sQXBwcm92YWxSZXF1ZXN0LkV2ZW50VHlwZRIXCg9hdHRlbmRlZV9udW1iZXIYEiABKAUSDgoGcmVhc29uGBMgASgJEhgKEHVzZV9uZXdfYXBwcm92YWwYFCABKAgiJwoJRXZlbnRUeXBlEgoKBk5PUk1BTBABEg4KClJFQ1VSUkVOQ0UQAiItCitDcmVhdGVBdHRlbmRlZU51bWJlckNvbnRyb2xBcHByb3ZhbFJlc3BvbnNlIi0KK0dldEF0dGVuZGVlTnVtYmVyQ29udHJvbEFwcHJvdmFsSW5mb1JlcXVlc3QiSQosR2V0QXR0ZW5kZWVOdW1iZXJDb250cm9sQXBwcm92YWxJbmZvUmVzcG9uc2USGQoRYXBwcm92ZXJfdXNlcl9pZHMYASADKAkiRwoxTUdldElzRXZlbnRBdHRlbmRlZUNvbnRyb2xBcHByb3ZhbEFwcHJvdmVkUmVxdWVzdBISCgpldmVudF91aWRzGAEgAygJIrwCCjJNR2V0SXNFdmVudEF0dGVuZGVlQ29udHJvbEFwcHJvdmFsQXBwcm92ZWRSZXNwb25zZRK2AQoraXNfZXZlbnRfYXR0ZW5kZWVfY29udHJvbF9hcHByb3ZhbF9hcHByb3ZlZBgBIAMoCzKAAS5jYWxlbmRhcl9hdHRlbmRlZV9udW1iZXJfY29udHJvbC5NR2V0SXNFdmVudEF0dGVuZGVlQ29udHJvbEFwcHJvdmFsQXBwcm92ZWRSZXNwb25zZS5Jc0V2ZW50QXR0ZW5kZWVDb250cm9sQXBwcm92YWxBcHByb3ZlZEVudHJ5Gk0KK0lzRXZlbnRBdHRlbmRlZUNvbnRyb2xBcHByb3ZhbEFwcHJvdmVkRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ASJsCjFOb3RpZnlFdmVudE9yZ2FuaXplckxhdW5jaEF0dGVuZGVlQXBwcm92YWxSZXF1ZXN0EhMKC2NhbGVuZGFyX2lkGAEgASgJEgsKA3VpZBgCIAEoCRIVCg1vcmlnaW5hbF90aW1lGAMgASgDIjQKMk5vdGlmeUV2ZW50T3JnYW5pemVyTGF1bmNoQXR0ZW5kZWVBcHByb3ZhbFJlc3BvbnNlQkxIA1pIY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL2NhbGVuZGFyX2F0dGVuZGVlX251bWJlcl9jb250cm9s");import{enumDesc as VA,fileDesc as co,messageDesc as tA,tsEnum as oA}from"@bufbuild/protobuf/codegenv2";var qV=co("ChB0b2RvX2Jhc2ljLnByb3RvEgp0b2RvX2Jhc2ljIiwKCFByb2dyZXNzEg0KBXRvdGFsGAEgASgFEhEKCWNvbXBsZXRlZBgCIAEoBSo9CghUb2RvTW9kZRILCgdVTktOT1dOEAASEQoNVVNFUl9DT01QTEVURRABEhEKDVRPRE9fQ09NUExFVEUQAkJOChZjb20uc3MuYW5kcm9pZC5sYXJrLnBiSANaMmNvZGUuYnl0ZWQub3JnL2xhcmsvaW0tcHJvdG9idWYvaW1wcm90by90b2RvX2Jhc2lj");var J=ao("Cg5lbnRpdGllcy5wcm90bxIIZW50aXRpZXMiygIKBUltYWdlEgsKA2tleRgBIAEoCRIQCgR1cmxzGAIgAygJQgIYARINCgV3aWR0aBgDIAEoBRIOCgZoZWlnaHQYBCABKAUSEgoKc2VjdXJlX2tleRgFIAEoCRIXCgtzZWN1cmVfdXJscxgGIAMoCUICGAESFAoMc2VjdXJlX3dpZHRoGAcgASgFEhUKDXNlY3VyZV9oZWlnaHQYCCABKAUSIAoGY3J5cHRvGAkgASgLMhAuZW50aXRpZXMuQ3J5cHRvEgwKBHNpemUYCiABKAUSDwoHZnNfdW5pdBgLIAEoCRIrCgZwYXJhbXMYDCADKAsyGy5lbnRpdGllcy5JbWFnZS5QYXJhbXNFbnRyeRIMCgRldGFnGA0gASgJGi0KC1BhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiswEKB0FyY2hpdmUSCwoDa2V5GAEgASgJEg8KB2ZzX3VuaXQYAiABKAkSDAoEc2l6ZRgDIAEoAxIQCghjaGVja3N1bRgEIAEoCRIMCgRtaW1lGAUgASgJEi0KBnBhcmFtcxgGIAMoCzIdLmVudGl0aWVzLkFyY2hpdmUuUGFyYW1zRW50cnkaLQoLUGFyYW1zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKeAQoGVXJnZW50EhIKCm1lc3NhZ2VfaWQYASACKAkSIwoEdHlwZRgCIAEoDjIVLmVudGl0aWVzLlVyZ2VudC5UeXBlEhEKCXNlbmRfdGltZRgDIAEoAxIPCgdmcm9tX2lkGAQgASgJIjcKBFR5cGUSEgoOVU5LTk9XTl9VUkdFTlQQABIHCgNBUFAQARIHCgNTTVMQAhIJCgVQSE9ORRADIowCCglVcmdlbnRBY2sSDgoGYWNrX2lkGAEgASgJEhIKCm1lc3NhZ2VfaWQYAiABKAkSDQoFdG9faWQYAyABKAkSEQoJdXJnZW50X2lkGAQgASgJEhEKCXNlbmRfdGltZRgFIAEoAxIjCgR0eXBlGAYgASgOMhUuZW50aXRpZXMuVXJnZW50LlR5cGUSDgoGc3RhdHVzGAcgASgDEhQKDGNvbmZpcm1fdGltZRgIIAEoAxIUCgxwaG9uZV9zdGF0dXMYCSABKAMSDwoHdmVyc2lvbhgKIAEoAxIRCglpc19jbG9zZWQYCyABKAgSEAoIaXNfbXV0ZWQYDCABKAgSDwoHZmVlZF9pZBgNIAEoAyLNAgoISW1hZ2VTZXQSDwoDa2V5GAEgASgJQgIYARIfCgZvcmlnaW4YAiABKAsyDy5lbnRpdGllcy5JbWFnZRIiCgl0aHVtYm5haWwYAyABKAsyDy5lbnRpdGllcy5JbWFnZRIVCglpbWFnZV9rZXkYBCABKAlCAhgBEh8KBm1pZGRsZRgFIAEoCzIPLmVudGl0aWVzLkltYWdlEicKDnRodW1ibmFpbF93ZWJwGAYgASgLMg8uZW50aXRpZXMuSW1hZ2USJAoLbWlkZGxlX3dlYnAYByABKAsyDy5lbnRpdGllcy5JbWFnZRIjCgptaWRkbGVfbXA0GAggASgLMg8uZW50aXRpZXMuSW1hZ2USHgoFY292ZXIYCSABKAsyDy5lbnRpdGllcy5JbWFnZRIfCgZpbnRhY3QYCiABKAsyDy5lbnRpdGllcy5JbWFnZSJNChJJbWFnZUJhc2VBdHRyaWJ1dGUSDQoFd2lkdGgYASACKA0SDgoGaGVpZ2h0GAIgAigNEhgKEGV4aWZfb3JpZW50YXRpb24YAyABKA0isQIKCkltYWdlU2V0VjISEQoJaW1hZ2Vfa2V5GAEgASgJEg8KB2ZzX3VuaXQYAiABKAkSIAoGY3J5cHRvGAMgASgLMhAuZW50aXRpZXMuQ3J5cHRvEjMKBmltYWdlcxgEIAMoCzIjLmVudGl0aWVzLkltYWdlU2V0VjIuSW1hZ2VBdHRyaWJ1dGUSFgoOaW5saW5lX3ByZXZpZXcYBSABKAwSFAoMaXNfZGVzdHJveWVkGAYgASgIEhAKCHNjZW5lX2lkGAcgASgDGmgKDkltYWdlQXR0cmlidXRlEiUKBHR5cGUYASACKA4yFy5lbnRpdGllcy5JbWFnZUNyb3BUeXBlEi8KCWF0dHJpYnV0ZRgCIAIoCzIcLmVudGl0aWVzLkltYWdlQmFzZUF0dHJpYnV0ZSKUAQoTSW1hZ2VTZXRQYXNzVGhyb3VnaBILCgNrZXkYASACKAkSDwoHZnNfdW5pdBgCIAEoCRILCgN1cmwYAyABKAkSIAoGY3J5cHRvGAQgASgLMhAuZW50aXRpZXMuQ3J5cHRvEhEKCWZpbGVfdHlwZRgFIAEoBRINCgV3aWR0aBgGIAEoBRIOCgZoZWlnaHQYByABKAUiUgoQUHJldmlld0ltYWdlSW5mbxILCgNrZXkYASABKAkSDwoHZnNfdW5pdBgCIAEoCRIgCgZjcnlwdG8YAyABKAsyEC5lbnRpdGllcy5DcnlwdG8i3QEKBkNyeXB0bxIjCgR0eXBlGAEgASgOMhUuZW50aXRpZXMuQ3J5cHRvLlR5cGUSIAoGY2lwaGVyGAIgASgLMhAuZW50aXRpZXMuQ2lwaGVyIosBCgRUeXBlEgsKB1VOS05PV04QABIPCgtBRVNfMjU2X0dDTRABEgsKB0FFU19DVFIQAhIWChJDUllQVE9fU0RLX1VOSUZJRUQQAxIYChRDUllQVE9fU0RLX0RPV05HUkFERRAEEhkKFUNSWVBUT19TREtfVEhJUkRQQVJUWRAFEgsKB1NNNF8xMjgQBiJACgZDaXBoZXISDgoGc2VjcmV0GAEgASgMEg0KBW5vbmNlGAIgASgMEhcKD2FkZGl0aW9uYWxfZGF0YRgDIAEoDCJGChdJbWFnZVRyYW5zbGF0aW9uQWJpbGl0eRIVCg1jYW5fdHJhbnNsYXRlGAEgAigIEhQKDHNyY19sYW5ndWFnZRgCIAMoCSJIChlJbWFnZVRyYW5zbGF0aW9uQWJpbGl0eVYyEhUKDWNhbl90cmFuc2xhdGUYASACKAgSFAoMc3JjX2xhbmd1YWdlGAIgAygJInYKE1VybFByZXZpZXdIYW5nUG9pbnQSCwoDdXJsGAEgAigJEhIKCnByZXZpZXdfaWQYAiABKAkSIQoSbmVlZF9sb2NhbF9wcmV2aWV3GAMgASgIOgVmYWxzZRIbCgxpc19sYXp5X2xvYWQYBCABKAg6BWZhbHNlIokBCg1JMThuVGVtcGxhdGVzEkIKDmkxOG5fdGVtcGxhdGVzGAEgAygLMiouZW50aXRpZXMuSTE4blRlbXBsYXRlcy5JMThuVGVtcGxhdGVzRW50cnkaNAoSSTE4blRlbXBsYXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiwQEKElJlbmRlclJvdXRlckVudGl0eRIPCgdyb290X2lkGAEgASgJEjwKCGVsZW1lbnRzGAIgAygLMiouZW50aXRpZXMuUmVuZGVyUm91dGVyRW50aXR5LkVsZW1lbnRzRW50cnkSEgoKd2lkdGhfbW9kZRgDIAEoCRpICg1FbGVtZW50c0VudHJ5EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLmVudGl0aWVzLkNhcmRDb21wb25lbnQ6AjgBIuINCg1DYXJkQ29tcG9uZW50EioKBHR5cGUYASACKA4yHC5lbnRpdGllcy5DYXJkQ29tcG9uZW50LlR5cGUSEQoJY2hpbGRfaWRzGAIgAygJEiwKBXN0eWxlGAMgASgLMh0uZW50aXRpZXMuQ2FyZENvbXBvbmVudC5TdHlsZRI5CgZlbmdpbmUY6AcgASgLMiYuZW50aXRpZXMuQ2FyZENvbXBvbmVudC5FbmdpbmVQcm9wZXJ0eUgAEkIKC2ZsZXhfbGF5b3V0GOkHIAEoCzIqLmVudGl0aWVzLkNhcmRDb21wb25lbnQuRmxleExheW91dFByb3BlcnR5SAAaRwoFVmFsdWUSLwoEdHlwZRgBIAEoDjIhLmVudGl0aWVzLkNhcmRDb21wb25lbnQuVmFsdWVUeXBlEg0KBXZhbHVlGAIgASgCGkMKB1BhZGRpbmcSCwoDdG9wGAEgASgCEg0KBXJpZ2h0GAIgASgCEg4KBmJvdHRvbRgDIAEoAhIMCgRsZWZ0GAQgASgCGo0DCgVTdHlsZRIsCgV3aWR0aBgBIAEoCzIdLmVudGl0aWVzLkNhcmRDb21wb25lbnQuVmFsdWUSLQoGaGVpZ2h0GAIgASgLMh0uZW50aXRpZXMuQ2FyZENvbXBvbmVudC5WYWx1ZRIwCgltYXhfd2lkdGgYAyABKAsyHS5lbnRpdGllcy5DYXJkQ29tcG9uZW50LlZhbHVlEjEKCm1heF9oZWlnaHQYBCABKAsyHS5lbnRpdGllcy5DYXJkQ29tcG9uZW50LlZhbHVlEjAKCW1pbl93aWR0aBgFIAEoCzIdLmVudGl0aWVzLkNhcmRDb21wb25lbnQuVmFsdWUSMQoKbWluX2hlaWdodBgGIAEoCzIdLmVudGl0aWVzLkNhcmRDb21wb25lbnQuVmFsdWUSEwoLZ3Jvd193ZWlnaHQYByABKAUSFQoNc2hyaW5rX3dlaWdodBgIIAEoBRIxCgphbGlnbl9zZWxmGAkgASgOMh0uZW50aXRpZXMuQ2FyZENvbXBvbmVudC5BbGlnbhp8Cg5FbmdpbmVQcm9wZXJ0eRI/CgR0eXBlGAEgASgOMjEuZW50aXRpZXMuQ2FyZENvbXBvbmVudC5FbmdpbmVQcm9wZXJ0eS5FbmdpbmVUeXBlEgwKBGJvZHkYAiABKAwiGwoKRW5naW5lVHlwZRINCglTTUFSVENBUkQQABqiAwoSRmxleExheW91dFByb3BlcnR5Ej0KC29yaWVudGF0aW9uGAEgASgOMiMuZW50aXRpZXMuQ2FyZENvbXBvbmVudC5PcmllbnRhdGlvbjoDUk9XEjwKCWZsZXhfd3JhcBgCIAEoDjIgLmVudGl0aWVzLkNhcmRDb21wb25lbnQuRmxleFdyYXA6B05PX1dSQVASGQoRbWFpbl9heGlzX3NwYWNpbmcYAyABKAISGgoSY3Jvc3NfYXhpc19zcGFjaW5nGAQgASgCEjAKB3BhZGRpbmcYBSABKAsyHy5lbnRpdGllcy5DYXJkQ29tcG9uZW50LlBhZGRpbmcSQQoRbWFpbl9heGlzX2p1c3RpZnkYBiABKA4yHy5lbnRpdGllcy5DYXJkQ29tcG9uZW50Lkp1c3RpZnk6BVNUQVJUEjwKEGNyb3NzX2F4aXNfYWxpZ24YByABKA4yHS5lbnRpdGllcy5DYXJkQ29tcG9uZW50LkFsaWduOgNUT1ASJQoWZm9yY2VfdXNlX2NvbXBhY3RfbW9kZRgIIAEoCDoFZmFsc2UiIwoEVHlwZRIPCgtGTEVYX0xBWU9VVBAAEgoKBkVOR0lORRABIjAKCVZhbHVlVHlwZRIICgRBVVRPEAASCQoFUE9JTlQQARIOCgpQRVJDRU5UQUdFEAIiQwoFQWxpZ24SBwoDVE9QEAASCgoGTUlERExFEAESCgoGQk9UVE9NEAISCwoHU1RSRVRDSBADEgwKCEJBU0VMSU5FEAQiRwoLT3JpZW50YXRpb24SBwoDUk9XEAASCgoGQ09MVU1OEAESDwoLUk9XX1JFVkVSU0UQAhISCg5DT0xVTU5fUkVWRVJTRRADImAKB0p1c3RpZnkSCQoFU1RBUlQQABIKCgZDRU5URVIQARIHCgNFTkQQAhIRCg1TUEFDRV9CRVRXRUVOEAMSEAoMU1BBQ0VfQVJPVU5EEAQSEAoMU1BBQ0VfRVZFTkxZEAUiRAoIRmxleFdyYXASCwoHTk9fV1JBUBAAEggKBFdSQVAQARIQCgxXUkFQX1JFVkVSU0UQAhIPCgtMSU5FQVJfV1JBUBADQhcKFUNhcmRDb21wb25lbnRQcm9wZXJ0eSKwDwoQVXJsUHJldmlld0VudGl0eRIRCglzb3VyY2VfaWQYASACKAkSEgoKcHJldmlld19pZBgCIAIoCRIXCgZsb2NhbGUYAyACKAk6B2RlZmF1bHQSFQoNaTE4bl9pY29uX2tleRgEIAEoCRIPCgdmc191bml0GAUgASgJEhYKDmkxOG5fdGl0bGVfa2V5GAYgASgJEhQKDGkxOG5fdGFnX2tleRgHIAEoCRJSChVsb2NhbGVfaTE4bl90ZW1wbGF0ZXMYCCADKAsyMy5lbnRpdGllcy5VcmxQcmV2aWV3RW50aXR5LkxvY2FsZUkxOG5UZW1wbGF0ZXNFbnRyeRIaCgN1cmwYCSABKAsyDS5lbnRpdGllcy5VUkwSEQoJbmVlZF9wdWxsGAogASgIEg8KB3ZlcnNpb24YCyABKAUSEAoEYm9keRgMIAEoDEICGAESPAoHYWN0aW9ucxgNIAMoCzInLmVudGl0aWVzLlVybFByZXZpZXdFbnRpdHkuQWN0aW9uc0VudHJ5QgIYARIuCgxwcmV2aWV3X2JvZHkYDiABKAsyGC5lbnRpdGllcy5VUkxQcmV2aWV3Qm9keRI6ChRyZW5kZXJfcm91dGVyX2VudGl0eRgXIAEoCzIcLmVudGl0aWVzLlJlbmRlclJvdXRlckVudGl0eRIPCgdleHBpcmVzGA8gASgDEj0KCmkxOG5faWNvbnMYECADKAsyKS5lbnRpdGllcy5VcmxQcmV2aWV3RW50aXR5LkkxOG5JY29uc0VudHJ5EiEKB3VkX2ljb24YESABKAsyEC5lbnRpdGllcy5VREljb24SLgoQdGl0bGVfdGV4dF9jb2xvchgSIAEoCzIULmVudGl0aWVzLlRoZW1lQ29sb3ISLAoOdGFnX3RleHRfY29sb3IYEyABKAsyFC5lbnRpdGllcy5UaGVtZUNvbG9yEioKDHRhZ19iZ19jb2xvchgUIAEoCzIULmVudGl0aWVzLlRoZW1lQ29sb3ISNAoIYXBwX2luZm8YFSABKAsyIi5lbnRpdGllcy5VcmxQcmV2aWV3RW50aXR5LkFwcEluZm8SQAoOdW5pZmllZF9oZWFkZXIYFiABKAsyKC5lbnRpdGllcy5VcmxQcmV2aWV3RW50aXR5LlVuaWZpZWRIZWFkZXISHQoOdXNlX2NvbG9yX2ljb24YGCABKAg6BWZhbHNlEjQKCGV4dF9pbmZvGBkgASgLMiIuZW50aXRpZXMuVXJsUHJldmlld0VudGl0eS5FeHRJbmZvGpkBCglDb2xvckljb24SKgoMaW1hZ2Vfc2V0X3YyGAEgASgLMhQuZW50aXRpZXMuSW1hZ2VTZXRWMhIoCgppY29uX2NvbG9yGAIgASgLMhQuZW50aXRpZXMuVGhlbWVDb2xvchIhCgd1ZF9pY29uGAMgASgLMhAuZW50aXRpZXMuVURJY29uEhMKC2Zhdmljb25fdXJsGAQgASgJGkMKDVVuaWZpZWRIZWFkZXISMgoEaWNvbhgBIAEoCzIkLmVudGl0aWVzLlVybFByZXZpZXdFbnRpdHkuQ29sb3JJY29uGlMKGExvY2FsZUkxOG5UZW1wbGF0ZXNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5lbnRpdGllcy5JMThuVGVtcGxhdGVzOgI4ARpKCgxBY3Rpb25zRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgLMhouZW50aXRpZXMuVXJsUHJldmlld0FjdGlvbjoCOAEaRgoOSTE4bkljb25zRW50cnkSCwoDa2V5GAEgASgJEiMKBXZhbHVlGAIgASgLMhQuZW50aXRpZXMuSW1hZ2VTZXRWMjoCOAEaLQoHQXBwSW5mbxIOCgZhcHBfaWQYASABKAMSEgoKc2NlbmVfdHlwZRgCIAEoAxpqCg5MYXN0VXBkYXRlSW5mbxIoCgp0ZXh0X2NvbG9yGAIgASgLMhQuZW50aXRpZXMuVGhlbWVDb2xvchIdChVsYXN0X3VwZGF0ZV90aW1lc3RhbXAYAyABKAMSDwoHdmlzaWJsZRgEIAEoCBpnCg1UcmFuc2xhdGVJbmZvEiUKHWlubGluZV9yZXBsYWNlbWVudF9lbGVtZW50X2lkGAEgASgJEi8KJ2lubGluZV9yZXBsYWNlbWVudF9lbmdpbmVfcHJvcGVydHlfcGF0aBgCIAEoCRrVAQoHRXh0SW5mbxJDChBsYXN0X3VwZGF0ZV9pbmZvGAEgASgLMikuZW50aXRpZXMuVXJsUHJldmlld0VudGl0eS5MYXN0VXBkYXRlSW5mbxJACg50cmFuc2xhdGVfaW5mbxgCIAEoCzIoLmVudGl0aWVzLlVybFByZXZpZXdFbnRpdHkuVHJhbnNsYXRlSW5mbxJDChBzaW5nbGVfY2FyZF9tb2RlGAMgASgOMikuZW50aXRpZXMuVXJsUHJldmlld0VudGl0eS5TaW5nbGVDYXJkTW9kZSJGCg5TaW5nbGVDYXJkTW9kZRIICgRBVVRPEAASFgoSSU5MSU5FX05PVF9ESVNQTEFZEAESEgoOSU5MSU5FX0RJU1BMQVkQAiKKDQoSVXJsUHJldmlld0VudGl0eVYyEhIKCnByZXZpZXdfaWQYASACKAkSFwoGbG9jYWxlGAIgAigJOgdkZWZhdWx0EhoKA3VybBgDIAEoCzINLmVudGl0aWVzLlVSTBI2CgRpY29uGAQgASgLMiguZW50aXRpZXMuVXJsUHJldmlld0VudGl0eVYyLlByZXZpZXdJY29uEjgKBXRpdGxlGAUgASgLMikuZW50aXRpZXMuVXJsUHJldmlld0VudGl0eVYyLlByZXZpZXdUaXRsZRI1CgR0YWdzGAYgAygLMicuZW50aXRpZXMuVXJsUHJldmlld0VudGl0eVYyLlByZXZpZXdUYWcSLgoMcHJldmlld19ib2R5GAcgASgLMhguZW50aXRpZXMuVVJMUHJldmlld0JvZHkSOgoUcmVuZGVyX3JvdXRlcl9lbnRpdHkYCiABKAsyHC5lbnRpdGllcy5SZW5kZXJSb3V0ZXJFbnRpdHkSRgoQcHJldmlld19zdHJhdGVneRgIIAEoCzIsLmVudGl0aWVzLlVybFByZXZpZXdFbnRpdHlWMi5QcmV2aWV3U3RyYXRlZ3kSQgoOdW5pZmllZF9oZWFkZXIYCSABKAsyKi5lbnRpdGllcy5VcmxQcmV2aWV3RW50aXR5VjIuVW5pZmllZEhlYWRlchI2CghleHRfaW5mbxgLIAEoCzIkLmVudGl0aWVzLlVybFByZXZpZXdFbnRpdHlWMi5FeHRJbmZvGnsKC1ByZXZpZXdJY29uEioKDGltYWdlX3NldF92MhgBIAEoCzIULmVudGl0aWVzLkltYWdlU2V0VjISIQoHdWRfaWNvbhgCIAEoCzIQLmVudGl0aWVzLlVESWNvbhIdCg51c2VfY29sb3JfaWNvbhgDIAEoCDoFZmFsc2UamQEKCUNvbG9ySWNvbhIqCgxpbWFnZV9zZXRfdjIYASABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYyEigKCmljb25fY29sb3IYAiABKAsyFC5lbnRpdGllcy5UaGVtZUNvbG9yEiEKB3VkX2ljb24YAyABKAsyEC5lbnRpdGllcy5VREljb24SEwoLZmF2aWNvbl91cmwYBCABKAkaRQoNVW5pZmllZEhlYWRlchI0CgRpY29uGAEgASgLMiYuZW50aXRpZXMuVXJsUHJldmlld0VudGl0eVYyLkNvbG9ySWNvbhpNCgxQcmV2aWV3VGl0bGUSDQoFdGl0bGUYASABKAkSLgoQdGl0bGVfdGV4dF9jb2xvchgCIAEoCzIULmVudGl0aWVzLlRoZW1lQ29sb3IacwoKUHJldmlld1RhZxILCgN0YWcYASABKAkSLAoOdGFnX3RleHRfY29sb3IYAiABKAsyFC5lbnRpdGllcy5UaGVtZUNvbG9yEioKDHRhZ19iZ19jb2xvchgDIAEoCzIULmVudGl0aWVzLlRoZW1lQ29sb3IaMwoPUHJldmlld1N0cmF0ZWd5Eg8KB3ZlcnNpb24YASABKAMSDwoHZXhwaXJlcxgCIAEoAxpqCg5MYXN0VXBkYXRlSW5mbxIoCgp0ZXh0X2NvbG9yGAIgASgLMhQuZW50aXRpZXMuVGhlbWVDb2xvchIdChVsYXN0X3VwZGF0ZV90aW1lc3RhbXAYAyABKAMSDwoHdmlzaWJsZRgEIAEoCBpnCg1UcmFuc2xhdGVJbmZvEiUKHWlubGluZV9yZXBsYWNlbWVudF9lbGVtZW50X2lkGAEgASgJEi8KJ2lubGluZV9yZXBsYWNlbWVudF9lbmdpbmVfcHJvcGVydHlfcGF0aBgCIAEoCRrbAQoHRXh0SW5mbxJFChBsYXN0X3VwZGF0ZV9pbmZvGAEgASgLMisuZW50aXRpZXMuVXJsUHJldmlld0VudGl0eVYyLkxhc3RVcGRhdGVJbmZvEkIKDnRyYW5zbGF0ZV9pbmZvGAIgASgLMiouZW50aXRpZXMuVXJsUHJldmlld0VudGl0eVYyLlRyYW5zbGF0ZUluZm8SRQoQc2luZ2xlX2NhcmRfbW9kZRgDIAEoDjIrLmVudGl0aWVzLlVybFByZXZpZXdFbnRpdHlWMi5TaW5nbGVDYXJkTW9kZSJGCg5TaW5nbGVDYXJkTW9kZRIICgRBVVRPEAASFgoSSU5MSU5FX05PVF9ESVNQTEFZEAESEgoOSU5MSU5FX0RJU1BMQVkQAiLsBAoNUHJldmlld1N0YXR1cxI3CgtzdGF0dXNfY29kZRgBIAEoDjIiLmVudGl0aWVzLlByZXZpZXdTdGF0dXMuU3RhdHVzQ29kZRIWCg5zdGF0dXNfbWVzc2FnZRgCIAEoCRI3CgtzdGF0dXNfdHlwZRgDIAEoDjIiLmVudGl0aWVzLlByZXZpZXdTdGF0dXMuU3RhdHVzVHlwZRIxCgVleHRyYRgEIAMoCzIiLmVudGl0aWVzLlByZXZpZXdTdGF0dXMuRXh0cmFFbnRyeRosCgpFeHRyYUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiPAoKU3RhdHVzVHlwZRINCglTVUNDRVNTRUQQABIPCgtGQUlMX0NMT1NFRBABEg4KCkZBSUxfUkVUUlkQAiKxAgoKU3RhdHVzQ29kZRIZChVVUkxfUFJFVklFV19TVUNDRVNTRUQQABIjCh1VUkxfUFJFVklFV19QRVJNSVNTSU9OX0RFTklFRBCh0RkSJQofVVJMX1BSRVZJRVdfQVBQX0NPTlRFWFRfTUlTU0lORxCi0RkSHgoYVVJMX1BSRVZJRVdfVVJMX01JU01BVENIEKPRGRIlCh9VUkxfUFJFVklFV19TRVJWSUNFX1VOQVZBSUxBQkxFEKTRGRImCiBVUkxfUFJFVklFV19SRVNPVVJDRV9VTkFWQUlMQUJMRRCl0RkSJAoeVVJMX1BSRVZJRVdfUkVTT1VSQ0VfRVhIQVVTVEVEEKbRGRInCiFVUkxfUFJFVklFV19ORUVEX0dFVF9DQVJEX1BSRVZJRVcQp9EZItYQChBVcmxQcmV2aWV3QWN0aW9uEgsKA3VybBgBIAIoCRIxCgZtZXRob2QYAiACKA4yIS5lbnRpdGllcy5VcmxQcmV2aWV3QWN0aW9uLk1ldGhvZBI9CgpwYXJhbWV0ZXJzGAMgASgLMiUuZW50aXRpZXMuVXJsUHJldmlld0FjdGlvbi5QYXJhbWV0ZXJzQgIYARIhCgNjbWQYBCABKA4yEC5pbXByb3RvLkNvbW1hbmRCAhgBEi4KBnBhY2tldBgFIAEoCzIaLmVudGl0aWVzLkNhcmRBY3Rpb25QYWNrZXRCAhgBEiMKCG9wZW5fdXJsGAYgASgLMg0uZW50aXRpZXMuVVJMQgIYARIaChJmYWxsYmFja19hY3Rpb25faWQYByABKAkSNAoDZ2V0GOgHIAEoCzIkLmVudGl0aWVzLlVybFByZXZpZXdBY3Rpb24uR2V0QWN0aW9uSAASNgoEcG9zdBjpByABKAsyJS5lbnRpdGllcy5VcmxQcmV2aWV3QWN0aW9uLlBvc3RBY3Rpb25IABJACgdjb21tYW5kGOoHIAEoCzIsLmVudGl0aWVzLlVybFByZXZpZXdBY3Rpb24uTGFya0NvbW1hbmRBY3Rpb25IABJACgtvcGVuX3VybF92MhjrByABKAsyKC5lbnRpdGllcy5VcmxQcmV2aWV3QWN0aW9uLk9wZW5VUkxBY3Rpb25IABJFCgxzd2l0Y2hfc3RhdGUY7AcgASgLMiwuZW50aXRpZXMuVXJsUHJldmlld0FjdGlvbi5Td2l0Y2hTdGF0ZUFjdGlvbkgAEkEKCnNob3dfdG9hc3QY7QcgASgLMiouZW50aXRpZXMuVXJsUHJldmlld0FjdGlvbi5TaG93VG9hc3RBY3Rpb25IABJDCgtzaG93X2RpYWxvZxjuByABKAsyKy5lbnRpdGllcy5VcmxQcmV2aWV3QWN0aW9uLlNob3dEaWFsb2dBY3Rpb25IABrCAQoKUGFyYW1ldGVycxJJCgpwYXJhbWV0ZXJzGAEgAygLMjUuZW50aXRpZXMuVXJsUHJldmlld0FjdGlvbi5QYXJhbWV0ZXJzLlBhcmFtZXRlcnNFbnRyeRIPCgd1c2VyX2lkGAIgASgJEhEKCXNvdXJjZV9pZBgDIAEoCRISCgpwcmV2aWV3X2lkGAQgASgJGjEKD1BhcmFtZXRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGkYKCUdldEFjdGlvbhI5CgpwYXJhbWV0ZXJzGAEgASgLMiUuZW50aXRpZXMuVXJsUHJldmlld0FjdGlvbi5QYXJhbWV0ZXJzGkcKClBvc3RBY3Rpb24SOQoKcGFyYW1ldGVycxgBIAEoCzIlLmVudGl0aWVzLlVybFByZXZpZXdBY3Rpb24uUGFyYW1ldGVycxqZAQoRTGFya0NvbW1hbmRBY3Rpb24SHQoDY21kGAEgASgOMhAuaW1wcm90by5Db21tYW5kEioKBnBhY2tldBgCIAEoCzIaLmVudGl0aWVzLkNhcmRBY3Rpb25QYWNrZXQSOQoKcGFyYW1ldGVycxgDIAEoCzIlLmVudGl0aWVzLlVybFByZXZpZXdBY3Rpb24uUGFyYW1ldGVycxowCg1PcGVuVVJMQWN0aW9uEh8KCG9wZW5fdXJsGAEgASgLMg0uZW50aXRpZXMuVVJMGioKEVN3aXRjaFN0YXRlQWN0aW9uEhUKDW5leHRfc3RhdGVfaWQYASABKAkaugEKD1Nob3dUb2FzdEFjdGlvbhJICgR0eXBlGAEgASgOMjQuZW50aXRpZXMuVXJsUHJldmlld0FjdGlvbi5TaG93VG9hc3RBY3Rpb24uVG9hc3RUeXBlOgRpbmZvEg8KB2NvbnRlbnQYAiABKAkSEAoIZHVyYXRpb24YAyABKAUiOgoJVG9hc3RUeXBlEgsKB3N1Y2Nlc3MQARIJCgVlcnJvchACEggKBGluZm8QAxILCgd3YXJuaW5nEAQa5gMKEFNob3dEaWFsb2dBY3Rpb24SRQoFdGl0bGUYASABKAsyNi5lbnRpdGllcy5VcmxQcmV2aWV3QWN0aW9uLlNob3dEaWFsb2dBY3Rpb24uRGlhbG9nSXRlbRJHCgdjb250ZW50GAIgASgLMjYuZW50aXRpZXMuVXJsUHJldmlld0FjdGlvbi5TaG93RGlhbG9nQWN0aW9uLkRpYWxvZ0l0ZW0SSQoHYnV0dG9ucxgDIAMoCzI4LmVudGl0aWVzLlVybFByZXZpZXdBY3Rpb24uU2hvd0RpYWxvZ0FjdGlvbi5EaWFsb2dCdXR0b24aNgoKRGlhbG9nSXRlbRIMCgR0ZXh0GAEgASgJEhoKD251bWJlcl9vZl9saW5lcxgCIAEoBToBMBqEAQoMRGlhbG9nQnV0dG9uEgwKBHRleHQYASABKAkSUwoEdHlwZRgCIAEoDjI8LmVudGl0aWVzLlVybFByZXZpZXdBY3Rpb24uU2hvd0RpYWxvZ0FjdGlvbi5EaWFsb2dCdXR0b25UeXBlOgdERUZBVUxUEhEKCWFjdGlvbl9pZBgDIAEoCSI4ChBEaWFsb2dCdXR0b25UeXBlEgsKB0RFRkFVTFQQABILCgdQUklNQVJZEAESCgoGREFOR0VSEAIibgoGTWV0aG9kEgcKA0dFVBABEggKBFBPU1QQAhIQCgxMQVJLX0NPTU1BTkQQAxIMCghPUEVOX1VSTBAEEhAKDFNXSVRDSF9TVEFURRAFEg4KClNIT1dfVE9BU1QQBhIPCgtTSE9XX0RJQUxPRxAHQggKBkFjdGlvbiKFAgoUVVJMUHJldmlld0NvbXBvbmVudHMSEAoIcm9vdF9pZHMYASADKAkSPgoIZWxlbWVudHMYAiADKAsyLC5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50cy5FbGVtZW50c0VudHJ5EhEKCWltYWdlX2lkcxgDIAMoCRIOCgZhdF9pZHMYBCADKAkSEgoKYnV0dG9uX2lkcxgFIAMoCRIUCgxyaWNodGV4dF9pZHMYBiADKAkaTgoNRWxlbWVudHNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50OgI4ASLKBAoOVVJMUHJldmlld0JvZHkSNgoKY29tcG9uZW50cxgBIAEoCzIeLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnRzQgIYARI6CgdhY3Rpb25zGAIgAygLMiUuZW50aXRpZXMuVVJMUHJldmlld0JvZHkuQWN0aW9uc0VudHJ5QgIYARIjCghjYXJkX3VybBgDIAEoCzINLmVudGl0aWVzLlVSTEICGAESGAoQY3VycmVudF9zdGF0ZV9pZBgEIAEoCRI0CgZzdGF0ZXMYBSADKAsyJC5lbnRpdGllcy5VUkxQcmV2aWV3Qm9keS5TdGF0ZXNFbnRyeRJZChpjb21wb25lbnRfaGFuZ19wb2ludF9wYWlycxgGIAMoCzI1LmVudGl0aWVzLlVSTFByZXZpZXdCb2R5LkNvbXBvbmVudEhhbmdQb2ludFBhaXJzRW50cnkaSgoMQWN0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRIpCgV2YWx1ZRgCIAEoCzIaLmVudGl0aWVzLlVybFByZXZpZXdBY3Rpb246AjgBGkgKC1N0YXRlc0VudHJ5EgsKA2tleRgBIAEoCRIoCgV2YWx1ZRgCIAEoCzIZLmVudGl0aWVzLlVSTFByZXZpZXdTdGF0ZToCOAEaXgocQ29tcG9uZW50SGFuZ1BvaW50UGFpcnNFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKAsyHi5lbnRpdGllcy5QcmV2aWV3SGFuZ1BvaW50UGFpcjoCOAEipgIKClRoZW1lQ29sb3ISDQoFdG9rZW4YASABKAkSJQoDa2V5GAIgASgLMhguZW50aXRpZXMuVGhlbWVDb2xvci5LZXkSDQoFdmFsdWUYAyABKA0aVAoDS2V5EioKBHR5cGUYASACKA4yHC5lbnRpdGllcy5UaGVtZUNvbG9yLktleVR5cGUSDQoFdmFsdWUYAiACKA0SEgoFYWxwaGEYAyABKA06AzEwMCJ9CgdLZXlUeXBlEgUKAU4QABIFCgFCEAESBQoBVxACEgUKAVQQAxIFCgFHEAQSBQoBTBAFEgUKAVkQBhIFCgFTEAcSBQoBTxAIEgUKAVIQCRIFCgFDEAoSBQoBVhALEgUKAVAQDBIFCgFJEA0SEAoMU1RBVElDX1dISVRFEA4i5wEKCEdyYWRpZW50EiUKBHR5cGUYASABKA4yFy5lbnRpdGllcy5HcmFkaWVudC5UeXBlEisKBmxpbmVhchgCIAEoCzIZLmVudGl0aWVzLkdyYWRpZW50LkxpbmVhckgAGmgKBkxpbmVhchIOCgNkZWcYASABKAU6ATASEgoGY29sb3JzGAIgAygFQgIYARIRCgljb2xvcnNfdjIYAyADKA0SJwoJY29sb3JzX3YzGAQgAygLMhQuZW50aXRpZXMuVGhlbWVDb2xvciISCgRUeXBlEgoKBkxJTkVBUhAAQgkKB2NvbnRlbnQiaQoGQm9yZGVyEg0KBXdpZHRoGAEgASgCEhEKBWNvbG9yGAIgASgNQgIYARIVCg1jb3JuZXJfcmFkaXVzGAMgASgCEiYKCGNvbG9yX3YyGAQgASgLMhQuZW50aXRpZXMuVGhlbWVDb2xvciJLCgZVREljb24SCwoDa2V5GAEgASgJEiMKBWNvbG9yGAIgASgLMhQuZW50aXRpZXMuVGhlbWVDb2xvchIPCgd1bmljb2RlGAMgASgJIrACChJVUkxQcmV2aWV3VGVtcGxhdGUSEwoLdGVtcGxhdGVfaWQYASACKAkSGQoRcm9vdF9jb21wb25lbnRfaWQYAiABKAkSPAoIZWxlbWVudHMYAyADKAsyKi5lbnRpdGllcy5VUkxQcmV2aWV3VGVtcGxhdGUuRWxlbWVudHNFbnRyeRIRCglpbWFnZV9pZHMYBCADKAkSDgoGYXRfaWRzGAUgAygJEhIKCmJ1dHRvbl9pZHMYBiADKAkSFAoMcmljaHRleHRfaWRzGAcgAygJEg8KB2V4cGlyZXMYCCABKAMaTgoNRWxlbWVudHNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50OgI4ASKiCAoLUHJldmlld0RhdGESDQoDc3RyGAEgASgJSAASDQoDaTMyGAIgASgFSAASDQoDaTY0GAMgASgDSAASCwoBYhgEIAEoCEgAEgsKAWYYBSABKAJIABIsCgxpbWFnZV9zZXRfdjIYBiABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYySAASLAoFaXRlbXMYByABKAsyGy5lbnRpdGllcy5QcmV2aWV3RGF0YS5JdGVtc0gAEisKC3RoZW1lX2NvbG9yGAggASgLMhQuZW50aXRpZXMuVGhlbWVDb2xvckgAEjgKB3BhZGRpbmcYCSABKAsyJS5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlBhZGRpbmdIABI5Cgx0aGVtZV9jb2xvcnMYCiABKAsyIS5lbnRpdGllcy5QcmV2aWV3RGF0YS5UaGVtZUNvbG9yc0gAEjsKDGxheW91dF92YWx1ZRgLIAEoCzIjLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVmFsdWVIABI7Cg1jaGF0dGVyX2luZm9zGAwgASgLMiIuZW50aXRpZXMuUHJldmlld0RhdGEuQ2hhdHRlckluZm9zSAASNwoLc3RyaW5nX2xpc3QYDSABKAsyIC5lbnRpdGllcy5QcmV2aWV3RGF0YS5TdHJpbmdMaXN0SAASUAoMY2hhdHRlcl9pbmZvGA4gASgLMjguZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5BdmF0YXJQcm9wZXJ0eS5DaGF0dGVySW5mb0gAEj0KCmZvbnRfbGV2ZWwYDyABKAsyJy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LkZvbnRMZXZlbEgAEjEKCHRhZ19saXN0GBAgASgLMh0uZW50aXRpZXMuUHJldmlld0RhdGEuVGFnTGlzdEgAGjoKBUl0ZW1zEjEKBWl0ZW1zGAEgAygLMiIuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5JdGVtGjMKC1RoZW1lQ29sb3JzEiQKBmNvbG9ycxgBIAMoCzIULmVudGl0aWVzLlRoZW1lQ29sb3IaaAoMQ2hhdHRlckluZm9zElgKDWNoYXR0ZXJfaW5mb3MYASADKAsyQS5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LkNoYXR0ZXJzUHJldmlld1Byb3BlcnR5LkNoYXR0ZXJJbmZvGiEKClN0cmluZ0xpc3QSEwoLc3RyaW5nX2xpc3QYASADKAkaUAoHVGFnTGlzdBJFCgptaXhlZF90YWdzGAEgAygLMjEuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5UYWdMaXN0UHJvcGVydHkuVGFnQgcKBXZhbHVlIp4CChZVUkxQcmV2aWV3UHJvcGVydHlEYXRhEjAKBHR5cGUYASACKA4yIi5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlR5cGUSWAoVcHJldmlld19wcm9wZXJ0eV9kYXRhGAIgAygLMjkuZW50aXRpZXMuVVJMUHJldmlld1Byb3BlcnR5RGF0YS5QcmV2aWV3UHJvcGVydHlEYXRhRW50cnkSJQoJcmljaF90ZXh0GAMgASgLMhIuZW50aXRpZXMuUmljaFRleHQaUQoYUHJldmlld1Byb3BlcnR5RGF0YUVudHJ5EgsKA2tleRgBIAEoBRIkCgV2YWx1ZRgCIAEoCzIVLmVudGl0aWVzLlByZXZpZXdEYXRhOgI4ASK2AQoTVVJMUHJldmlld1N0eWxlRGF0YRJPChJwcmV2aWV3X3N0eWxlX2RhdGEYAiADKAsyMy5lbnRpdGllcy5VUkxQcmV2aWV3U3R5bGVEYXRhLlByZXZpZXdTdHlsZURhdGFFbnRyeRpOChVQcmV2aWV3U3R5bGVEYXRhRW50cnkSCwoDa2V5GAEgASgFEiQKBXZhbHVlGAIgASgLMhUuZW50aXRpZXMuUHJldmlld0RhdGE6AjgBIrAECg9VUkxQcmV2aWV3U3RhdGUSLAoEdHlwZRgBIAIoDjIeLmVudGl0aWVzLlVSTFByZXZpZXdTdGF0ZS5UeXBlEhMKC3RlbXBsYXRlX2lkGAIgASgJEh8KCGNhcmRfdXJsGAMgASgLMg0uZW50aXRpZXMuVVJMEjcKB2FjdGlvbnMYBCADKAsyJi5lbnRpdGllcy5VUkxQcmV2aWV3U3RhdGUuQWN0aW9uc0VudHJ5EjUKBnN0eWxlcxgFIAMoCzIlLmVudGl0aWVzLlVSTFByZXZpZXdTdGF0ZS5TdHlsZXNFbnRyeRI9Cgpwcm9wZXJ0aWVzGAYgAygLMikuZW50aXRpZXMuVVJMUHJldmlld1N0YXRlLlByb3BlcnRpZXNFbnRyeRpKCgxBY3Rpb25zRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgLMhouZW50aXRpZXMuVXJsUHJldmlld0FjdGlvbjoCOAEaTAoLU3R5bGVzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgLMh0uZW50aXRpZXMuVVJMUHJldmlld1N0eWxlRGF0YToCOAEaUwoPUHJvcGVydGllc0VudHJ5EgsKA2tleRgBIAEoCRIvCgV2YWx1ZRgCIAEoCzIgLmVudGl0aWVzLlVSTFByZXZpZXdQcm9wZXJ0eURhdGE6AjgBIhsKBFR5cGUSCAoEQ0FSRBAAEgkKBUFMRVJUEAEipAwKElVSTFByZXZpZXdQcm9wZXJ0eRI9CgVlbXB0eRjoByABKAsyKy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LkVtcHR5UHJvcGVydHlIABJGCgZoZWFkZXIY3QsgASgLMjMuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5QcmV2aWV3SGVhZGVyUHJvcGVydHlIABJDCghyaWNodGV4dBjeCyABKAsyLi5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlJpY2hUZXh0UHJvcGVydHlIABI9CgVpbWFnZRjfCyABKAsyKy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LkltYWdlUHJvcGVydHlIABJSChBjaGF0dGVyc19wcmV2aWV3GOALIAEoCzI1LmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuQ2hhdHRlcnNQcmV2aWV3UHJvcGVydHlIABI/CgZidXR0b24Y4QsgASgLMiwuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5CdXR0b25Qcm9wZXJ0eUgAEkgKC2ljb25fYnV0dG9uGOILIAEoCzIwLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuSWNvbkJ1dHRvblByb3BlcnR5SAASSAoLdGV4dF9idXR0b24Y4wsgASgLMjAuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5UZXh0QnV0dG9uUHJvcGVydHlIABI7CgR0aW1lGOQLIAEoCzIqLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVGltZVByb3BlcnR5SAASOwoEdGV4dBjlCyABKAsyKi5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlRleHRQcm9wZXJ0eUgAEkIKCHRhZ19saXN0GOYLIAEoCzItLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVGFnTGlzdFByb3BlcnR5SAASSAoLc3Bpbl9idXR0b24Y5wsgASgLMjAuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5TcGluQnV0dG9uUHJvcGVydHlIABI/CgZhdmF0YXIY6AsgASgLMiwuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5BdmF0YXJQcm9wZXJ0eUgAEj0KBXZpZGVvGOkLIAEoCzIrLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVmlkZW9Qcm9wZXJ0eUgAEk4KDmNhcmRfY29udGFpbmVyGOoLIAEoCzIzLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuQ2FyZENvbnRhaW5lclByb3BlcnR5SAASRAoJZG9jX2ltYWdlGOsLIAEoCzIuLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuRG9jSW1hZ2VQcm9wZXJ0eUgAEkEKB2xvYWRpbmcY7AsgASgLMi0uZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5Mb2FkaW5nUHJvcGVydHlIABJECgl0aW1lX3pvbmUY7QsgASgLMi4uZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5UaW1lWm9uZVByb3BlcnR5SAASTgoOb3ZlcnNpemVkX3RleHQY7gsgASgLMjMuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5PdmVyc2l6ZWRUZXh0UHJvcGVydHlIABI/CgZlbmdpbmUY7wsgASgLMiwuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5FbmdpbmVQcm9wZXJ0eUgAElEKEGRvY19zdGF0ZV9idXR0b24Y8AsgASgLMjQuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5Eb2NTdGF0ZUJ1dHRvblByb3BlcnR5SAASMAoEdHlwZRgBIAIoDjIiLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVHlwZUIdChtVUkxQcmV2aWV3Q29tcG9uZW50UHJvcGVydHki/lAKE1VSTFByZXZpZXdDb21wb25lbnQSMAoEdHlwZRgBIAIoDjIiLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVHlwZRIjChVjYW5fc2tpcF93aGVuX3Vua25vd24YAiABKAg6BHRydWUSMgoFc3R5bGUYAyABKAsyIy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlN0eWxlEhEKCWNoaWxkX2lkcxgEIAMoCRIeChBpc19mb250X3pvb21hYmxlGAUgASgIOgR0cnVlEj0KBWVtcHR5GOgHIAEoCzIrLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuRW1wdHlQcm9wZXJ0eUgAEkwKDWxpbmVhcl9sYXlvdXQY6QcgASgLMjIuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5MaW5lYXJMYXlvdXRQcm9wZXJ0eUgAEkgKC2ZsZXhfbGF5b3V0GOoHIAEoCzIwLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuRmxleExheW91dFByb3BlcnR5SAASRgoGaGVhZGVyGN0LIAEoCzIzLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuUHJldmlld0hlYWRlclByb3BlcnR5SAASQwoIcmljaHRleHQY3gsgASgLMi4uZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5SaWNoVGV4dFByb3BlcnR5SAASPQoFaW1hZ2UY3wsgASgLMisuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5JbWFnZVByb3BlcnR5SAASUgoQY2hhdHRlcnNfcHJldmlldxjgCyABKAsyNS5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LkNoYXR0ZXJzUHJldmlld1Byb3BlcnR5SAASPwoGYnV0dG9uGOELIAEoCzIsLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuQnV0dG9uUHJvcGVydHlIABJICgtpY29uX2J1dHRvbhjiCyABKAsyMC5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50Lkljb25CdXR0b25Qcm9wZXJ0eUgAEkgKC3RleHRfYnV0dG9uGOMLIAEoCzIwLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVGV4dEJ1dHRvblByb3BlcnR5SAASOwoEdGltZRjkCyABKAsyKi5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlRpbWVQcm9wZXJ0eUgAEjsKBHRleHQY5QsgASgLMiouZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5UZXh0UHJvcGVydHlIABJCCgh0YWdfbGlzdBjmCyABKAsyLS5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlRhZ0xpc3RQcm9wZXJ0eUgAEkgKC3NwaW5fYnV0dG9uGOcLIAEoCzIwLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuU3BpbkJ1dHRvblByb3BlcnR5SAASPwoGYXZhdGFyGOgLIAEoCzIsLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuQXZhdGFyUHJvcGVydHlIABI9CgV2aWRlbxjpCyABKAsyKy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlZpZGVvUHJvcGVydHlIABJOCg5jYXJkX2NvbnRhaW5lchjqCyABKAsyMy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LkNhcmRDb250YWluZXJQcm9wZXJ0eUgAEkQKCWRvY19pbWFnZRjrCyABKAsyLi5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LkRvY0ltYWdlUHJvcGVydHlIABJBCgdsb2FkaW5nGOwLIAEoCzItLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuTG9hZGluZ1Byb3BlcnR5SAASRAoJdGltZV96b25lGO0LIAEoCzIuLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVGltZVpvbmVQcm9wZXJ0eUgAEk4KDm92ZXJzaXplZF90ZXh0GO4LIAEoCzIzLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuT3ZlcnNpemVkVGV4dFByb3BlcnR5SAASPwoGZW5naW5lGO8LIAEoCzIsLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuRW5naW5lUHJvcGVydHlIABJRChBkb2Nfc3RhdGVfYnV0dG9uGPALIAEoCzI0LmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuRG9jU3RhdGVCdXR0b25Qcm9wZXJ0eUgAElAKD2ltYWdlX2NvbnRhaW5lchjxCyABKAsyNC5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LkltYWdlQ29udGFpbmVyUHJvcGVydHlIABpcCglGb250TGV2ZWwSPQoEdHlwZRgBIAEoDjImLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuRm9udFR5cGU6B0NBUFRJT04SEAoFbGV2ZWwYAiABKAU6ATAaQwoHUGFkZGluZxILCgN0b3AYASABKAISDQoFcmlnaHQYAiABKAISDgoGYm90dG9tGAMgASgCEgwKBGxlZnQYBCABKAIaTQoFVmFsdWUSNQoEdHlwZRgBIAEoDjInLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVmFsdWVUeXBlEg0KBXZhbHVlGAIgASgCGicKBEl0ZW0SEQoJYWN0aW9uX2lkGAEgASgJEgwKBHRleHQYAiABKAka3AUKBVN0eWxlEjsKCnNpemVfbGV2ZWwYASABKA4yJy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlNpemVMZXZlbBIWCgp0ZXh0X2NvbG9yGAIgASgNQgIYARIsChBiYWNrZ3JvdW5kX2NvbG9yGAMgASgLMhIuZW50aXRpZXMuR3JhZGllbnQSMgoFd2lkdGgYBCABKAsyIy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlZhbHVlEjMKBmhlaWdodBgFIAEoCzIjLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVmFsdWUSNgoJbWF4X3dpZHRoGAYgASgLMiMuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5WYWx1ZRI3CgptYXhfaGVpZ2h0GAcgASgLMiMuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5WYWx1ZRI2CgltaW5fd2lkdGgYCCABKAsyIy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlZhbHVlEjcKCm1pbl9oZWlnaHQYCSABKAsyIy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlZhbHVlEhMKC2dyb3dfd2VpZ2h0GAogASgFEhUKDXNocmlua193ZWlnaHQYCyABKAUSOwoKZm9udF9sZXZlbBgMIAEoCzInLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuRm9udExldmVsEiAKBmJvcmRlchgNIAEoCzIQLmVudGl0aWVzLkJvcmRlchIrCg10ZXh0X2NvbG9yX3YyGA4gASgLMhQuZW50aXRpZXMuVGhlbWVDb2xvchIUCgxhc3BlY3RfcmF0aW8YDyABKAUSNwoKYWxpZ25fc2VsZhgQIAEoDjIjLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuQWxpZ24ahgEKDUVtcHR5UHJvcGVydHkSEQoJYWN0aW9uX2lkGAEgASgJEiMKBWhvdmVyGAIgASgLMhQuZW50aXRpZXMuVGhlbWVDb2xvchIkCgZhY3RpdmUYAyABKAsyFC5lbnRpdGllcy5UaGVtZUNvbG9yEhcKD2NvbnRhaW5lcl9zdHlsZRgEIAEoCRrbAgoUTGluZWFyTGF5b3V0UHJvcGVydHkSQwoLb3JpZW50YXRpb24YASABKA4yKS5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50Lk9yaWVudGF0aW9uOgNST1cSDwoHc3BhY2luZxgCIAEoAhISCgp3cmFwX3dpZHRoGAMgASgCEg8KB3BhZGRpbmcYBCABKAISRwoRbWFpbl9heGlzX2p1c3RpZnkYBSABKA4yJS5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50Lkp1c3RpZnk6BVNUQVJUEkIKEGNyb3NzX2F4aXNfYWxpZ24YBiABKA4yIy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LkFsaWduOgNUT1ASOwoMc2lkZV9wYWRkaW5nGAcgASgLMiUuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5QYWRkaW5nGr8DChJGbGV4TGF5b3V0UHJvcGVydHkSQwoLb3JpZW50YXRpb24YASABKA4yKS5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50Lk9yaWVudGF0aW9uOgNST1cSQgoJZmxleF93cmFwGAIgASgOMiYuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5GbGV4V3JhcDoHTk9fV1JBUBIZChFtYWluX2F4aXNfc3BhY2luZxgDIAEoAhIaChJjcm9zc19heGlzX3NwYWNpbmcYBCABKAISNgoHcGFkZGluZxgFIAEoCzIlLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuUGFkZGluZxJHChFtYWluX2F4aXNfanVzdGlmeRgGIAEoDjIlLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuSnVzdGlmeToFU1RBUlQSQgoQY3Jvc3NfYXhpc19hbGlnbhgHIAEoDjIjLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuQWxpZ246A1RPUBIkChVmb3JjZV91c2VfbmFycm93X21vZGUYCCABKAg6BWZhbHNlGtwEChVQcmV2aWV3SGVhZGVyUHJvcGVydHkSIgoEaWNvbhgBIAEoCzIULmVudGl0aWVzLkltYWdlU2V0VjISDQoFdGl0bGUYAiABKAkSHwoIbGFya190YWcYAyABKA4yDS5lbnRpdGllcy5UYWcSGgoSY2hpbGRfY29tcG9uZW50X2lkGAQgASgJEh8KEWlzX25lZWRfY29weV9saW5rGAUgASgIOgR0cnVlEhsKDWlzX25lZWRfY2xvc2UYBiABKAg6BHRydWUSOQoFdGhlbWUYByABKA4yIy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlRoZW1lOgVMSUdIVBJOCgR0eXBlGAggASgOMjguZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5QcmV2aWV3SGVhZGVyUHJvcGVydHkuVHlwZToGTk9STUFMEicKCXRhZ19jb2xvchgJIAEoCzIULmVudGl0aWVzLlRoZW1lQ29sb3ISLAoOdGFnX3RleHRfY29sb3IYCiABKAsyFC5lbnRpdGllcy5UaGVtZUNvbG9yEhIKCmhlYWRlcl90YWcYCyABKAkSEwoLZmF2aWNvbl91cmwYDCABKAkSKAoKaWNvbl9jb2xvchgNIAEoCzIULmVudGl0aWVzLlRoZW1lQ29sb3ISIQoHdWRfaWNvbhgOIAEoCzIQLmVudGl0aWVzLlVESWNvbhIaCg9udW1iZXJfb2ZfbGluZXMYDyABKAU6ATMiIQoEVHlwZRIKCgZOT1JNQUwQABINCglIRUFETElORVMQARqKAgoQUmljaFRleHRQcm9wZXJ0eRIkCghyaWNodGV4dBgBIAEoCzISLmVudGl0aWVzLlJpY2hUZXh0EhoKD251bWJlcl9vZl9saW5lcxgCIAEoBToBMBIaChJhdF9vdXRfY2hhdHRlcl9pZHMYAyADKAkSGAoQc2hvd191cGRhdGVfdGltZRgEIAEoCBJLCgV0aGVtZRgFIAEoDjI8LmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuUmljaFRleHRQcm9wZXJ0eS5SaWNoVGV4dFRoZW1lIjEKDVJpY2hUZXh0VGhlbWUSCwoHREVGQVVMVBAAEggKBERBUksQARIJCgVMSUdIVBACGncKDUltYWdlUHJvcGVydHkSIwoFaW1hZ2UYASABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYyEgsKA2FsdBgCIAEoCRIhCgd1ZF9pY29uGAMgASgLMhAuZW50aXRpZXMuVURJY29uEhEKCWltYWdlX3VybBgEIAEoCRqXAgoWSW1hZ2VDb250YWluZXJQcm9wZXJ0eRIoCgpiYWNrZ3JvdW5kGAEgASgLMhQuZW50aXRpZXMuSW1hZ2VTZXRWMhIRCglhY3Rpb25faWQYAiABKAkSZQoMY29udGVudF9tb2RlGAMgASgOMkAuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5JbWFnZUNvbnRhaW5lclByb3BlcnR5LkNvbnRlbnRNb2RlOg1TQ0FMRV9UT19GSUxMIlkKC0NvbnRlbnRNb2RlEhEKDVNDQUxFX1RPX0ZJTEwQABIUChBTQ0FMRV9BU1BFQ1RfRklUEAESFQoRU0NBTEVfQVNQRUNUX0ZJTEwQAhIKCgZDRU5URVIQAxrNBAoXQ2hhdHRlcnNQcmV2aWV3UHJvcGVydHkSOQoFdGhlbWUYASABKA4yIy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlRoZW1lOgVMSUdIVBIWCg5jaGF0dGVyc19jb3VudBgCIAEoBRJYCg1jaGF0dGVyX2luZm9zGAMgAygLMkEuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5DaGF0dGVyc1ByZXZpZXdQcm9wZXJ0eS5DaGF0dGVySW5mbxIZCg5tYXhfc2hvd19jb3VudBgEIAEoBToBNRJiCg1jaGF0dGVyc19tb2RlGAUgASgOMkIuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5DaGF0dGVyc1ByZXZpZXdQcm9wZXJ0eS5DaGF0dGVyc01vZGU6B0RZTkFNSUMSDQoFdGl0bGUYBiABKAkapwEKC0NoYXR0ZXJJbmZvEh8KBmF2YXRhchgBIAEoCzIPLmVudGl0aWVzLkltYWdlEhIKCmNoYXR0ZXJfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRJVCgR0eXBlGAQgASgOMkEuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5DaGF0dGVyc1ByZXZpZXdQcm9wZXJ0eS5DaGF0dGVyVHlwZToEVVNFUiIkCgtDaGF0dGVyVHlwZRILCgdVTktOT1dOEAASCAoEVVNFUhABIicKDENoYXR0ZXJzTW9kZRIKCgZTVEFUSUMQABILCgdEWU5BTUlDEAEazQEKDkJ1dHRvblByb3BlcnR5EiIKBGljb24YASABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYyEgwKBHRleHQYAiABKAkSPwoJZGlyZWN0aW9uGAMgASgOMicuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5EaXJlY3Rpb246A0xUUhIRCglhY3Rpb25faWQYBCABKAkSEgoKaXNfZGlzYWJsZRgFIAEoCBIhCgd1ZF9pY29uGAYgASgLMhAuZW50aXRpZXMuVURJY29uGo8BChJJY29uQnV0dG9uUHJvcGVydHkSIgoEaWNvbhgBIAEoCzIULmVudGl0aWVzLkltYWdlU2V0VjISEQoJYWN0aW9uX2lkGAIgASgJEhIKCmlzX2Rpc2FibGUYAyABKAgSCwoDYWx0GAQgASgJEiEKB3VkX2ljb24YBSABKAsyEC5lbnRpdGllcy5VREljb24aSQoSVGV4dEJ1dHRvblByb3BlcnR5EgwKBHRleHQYASABKAkSEQoJYWN0aW9uX2lkGAIgASgJEhIKCmlzX2Rpc2FibGUYAyABKAgahAEKDFRpbWVQcm9wZXJ0eRIYChBzdGFydF90aW1lX3N0YW1wGAEgAigDEhsKDGlzX2NvdW50ZG93bhgCIAEoCDoFZmFsc2USFQoNbnRwX2FjdGlvbl9pZBgDIAEoCRIOCgZpc19lbmQYBCABKAgSFgoOZW5kX3RpbWVfc3RhbXAYBSABKAMaSwoMVGV4dFByb3BlcnR5EgwKBHRleHQYASABKAkSGgoPbnVtYmVyX29mX2xpbmVzGAIgASgFOgEwEhEKCWFjdGlvbl9pZBgDIAEoCRrwAQoPVGFnTGlzdFByb3BlcnR5EgwKBHRhZ3MYASADKAkSRQoKbWl4ZWRfdGFncxgCIAMoCzIxLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVGFnTGlzdFByb3BlcnR5LlRhZxIaCg9udW1iZXJfb2ZfbGluZXMYAyABKAU6ATEabAoDVGFnEgsKA3RhZxgBIAEoCRIoCgp0ZXh0X2NvbG9yGAIgASgLMhQuZW50aXRpZXMuVGhlbWVDb2xvchIuChBiYWNrZ3JvdW5kX2NvbG9yGAMgASgLMhQuZW50aXRpZXMuVGhlbWVDb2xvchrHAQoSU3BpbkJ1dHRvblByb3BlcnR5EiIKBGljb24YASABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYyEjEKBWl0ZW1zGAIgAygLMiIuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5JdGVtEhkKDnNlbGVjdGVkX2luZGV4GAMgASgDOgEwEj8KCWRpcmVjdGlvbhgEIAEoDjInLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuRGlyZWN0aW9uOgNMVFIapAEKDkF2YXRhclByb3BlcnR5Ek4KDGNoYXR0ZXJfaW5mbxgBIAEoCzI4LmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuQXZhdGFyUHJvcGVydHkuQ2hhdHRlckluZm8aQgoLQ2hhdHRlckluZm8SHwoGYXZhdGFyGAEgASgLMg8uZW50aXRpZXMuSW1hZ2USEgoKY2hhdHRlcl9pZBgCIAEoCRqdAgoNVmlkZW9Qcm9wZXJ0eRI+CgRzaXRlGAEgASgOMjAuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5WaWRlb1Byb3BlcnR5LlNpdGUSKQoLY292ZXJfaW1hZ2UYAiABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYyEhAKCGR1cmF0aW9uGAMgASgDEg8KB3NyY191cmwYBCABKAkSCwoDdmlkGAUgASgJEhIKCmlmcmFtZV91cmwYBiABKAkSFwoPY292ZXJfaW1hZ2VfdXJsGAcgASgJIkQKBFNpdGUSCwoHVU5LTk9XThAAEgkKBVhJR1VBEAESCgoGRE9VWUlOEAISCwoHSFVPU0hBThADEgsKB1lPVVRVQkUQBBpBChVDYXJkQ29udGFpbmVyUHJvcGVydHkSKAoKbWFza19jb2xvchgBIAEoCzIULmVudGl0aWVzLlRoZW1lQ29sb3IaswEKEERvY0ltYWdlUHJvcGVydHkSNQoIZG9jX3R5cGUYASABKA4yES5lbnRpdGllcy5Eb2NUeXBlOhBVTktOT1dOX0RPQ19UWVBFEhUKDXRodW1ibmFpbF91cmwYAiABKAkSEgoKc2VjcmV0X3VybBgDIAEoCRITCgtzZWNyZXRfdHlwZRgEIAEoBRISCgpzZWNyZXRfa2V5GAUgASgJEhQKDHNlY3JldF9ub25jZRgGIAEoCRoRCg9Mb2FkaW5nUHJvcGVydHkatwgKEFRpbWVab25lUHJvcGVydHkSYwoOdGltZV96b25lX3R5cGUYASABKA4yOy5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlRpbWVab25lUHJvcGVydHkuVGltZVpvbmVUeXBlOg5GVUxMX0RBVEVfVElNRRJUCgtmb3JtYXRfdHlwZRgCIAEoDjI5LmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuVGltZVpvbmVQcm9wZXJ0eS5Gb3JtYXRUeXBlOgRMT05HEmUKE3RpbWVfcHJlY2lzaW9uX3R5cGUYAyABKA4yQC5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50LlRpbWVab25lUHJvcGVydHkuVGltZVByZWNpc2lvblR5cGU6Bk1JTlVURRJVCgp0aW1lX3N0eWxlGAQgASgOMjguZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5UaW1lWm9uZVByb3BlcnR5LlRpbWVTdHlsZToHREVGQVVMVBJnChNkYXRlX3ByZWNpc2lvbl90eXBlGAUgASgOMkAuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5UaW1lWm9uZVByb3BlcnR5LkRhdGVQcmVjaXNpb25UeXBlOghEQVlfVFlQRRJhChBkYXRlX3N0YXR1c190eXBlGAYgASgOMj0uZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5UaW1lWm9uZVByb3BlcnR5LkRhdGVTdGF0dXNUeXBlOghSRUxBVElWRRIYChBzdGFydF90aW1lX3N0YW1wGAcgASgDEhYKDmVuZF90aW1lX3N0YW1wGAggASgDEhgKCmVuYWJsZV9nbXQYCSABKAg6BHRydWUinAEKDFRpbWVab25lVHlwZRIMCghNRVJJRElFTRAAEggKBFdFRUsQARIJCgVNT05USBACEggKBFRJTUUQAxIICgREQVRFEAQSDQoJRlVMTF9EQVRFEAUSDQoJREFURV9USU1FEAYSEgoORlVMTF9EQVRFX1RJTUUQBxIOCgpEQVRFX1JBTkdFEAgSEwoPREFURV9USU1FX1JBTkdFEAkiIQoKRm9ybWF0VHlwZRIJCgVTSE9SVBAAEggKBExPTkcQASI1ChFUaW1lUHJlY2lzaW9uVHlwZRIKCgZTRUNPTkQQABIKCgZNSU5VVEUQARIICgRIT1VSEAIiOAoJVGltZVN0eWxlEgsKB0RFRkFVTFQQABIOCgpCWV8xMl9IT1VSEAESDgoKQllfMjRfSE9VUhACIjEKEURhdGVQcmVjaXNpb25UeXBlEgwKCERBWV9UWVBFEAASDgoKTU9OVEhfVFlQRRABIiwKDkRhdGVTdGF0dXNUeXBlEgwKCEFCU09MVVRFEAASDAoIUkVMQVRJVkUQARrgAQoVT3ZlcnNpemVkVGV4dFByb3BlcnR5EgwKBHRleHQYASABKAkSGgoPbnVtYmVyX29mX2xpbmVzGAIgASgFOgEwEhUKCWZvbnRfc2l6ZRgDIAEoBToCMzYSXAoLZm9udF93ZWlnaHQYBCABKA4yPi5lbnRpdGllcy5VUkxQcmV2aWV3Q29tcG9uZW50Lk92ZXJzaXplZFRleHRQcm9wZXJ0eS5Gb250V2VpZ2h0OgdSRUdVTEFSIigKCkZvbnRXZWlnaHQSCwoHUkVHVUxBUhAAEg0KCVNFTUlfQk9MRBABGqYBCg5FbmdpbmVQcm9wZXJ0eRJFCgR0eXBlGAEgASgOMjcuZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5FbmdpbmVQcm9wZXJ0eS5FbmdpbmVUeXBlEgwKBGJvZHkYAiABKAwiPwoKRW5naW5lVHlwZRILCgdNRVNTQUdFEAASEQoNRE9DX0NPTVBPTkVOVBABEhEKDVRVUlRMRV9DQU5WQVMQAhr9AgoWRG9jU3RhdGVCdXR0b25Qcm9wZXJ0eRISCgpjdXJyX3N0YXRlGAEgASgJElUKCXN0YXRlX21hcBgCIAMoCzJCLmVudGl0aWVzLlVSTFByZXZpZXdDb21wb25lbnQuRG9jU3RhdGVCdXR0b25Qcm9wZXJ0eS5TdGF0ZU1hcEVudHJ5GocBCghEb2NTdGF0ZRILCgNhbHQYASABKAkSIQoHdWRfaWNvbhgCIAEoCzIQLmVudGl0aWVzLlVESWNvbhISCgpuZXh0X3N0YXRlGAMgASgJEhQKDHVkX2J0bl9jb2xvchgEIAEoCRIPCgdsb2FkaW5nGAUgASgIEhAKCHNlbGVjdGVkGAYgASgIGm4KDVN0YXRlTWFwRW50cnkSCwoDa2V5GAEgASgJEkwKBXZhbHVlGAIgASgLMj0uZW50aXRpZXMuVVJMUHJldmlld0NvbXBvbmVudC5Eb2NTdGF0ZUJ1dHRvblByb3BlcnR5LkRvY1N0YXRlOgI4ASKHAwoEVHlwZRIJCgVFTVBUWRAAEhEKDUxJTkVBUl9MQVlPVVQQARIPCgtGTEVYX0xBWU9VVBACEgsKBkhFQURFUhD1AxINCghSSUNIVEVYVBD2AxIKCgVJTUFHRRD3AxIVChBDSEFUVEVSU19QUkVWSUVXEPgDEgsKBkJVVFRPThD5AxIQCgtJQ09OX0JVVFRPThD6AxIQCgtURVhUX0JVVFRPThD7AxIJCgRUSU1FEPwDEgkKBFRFWFQQ/QMSDQoIVEFHX0xJU1QQ/gMSEAoLU1BJTl9CVVRUT04Q/wMSCwoGQVZBVEFSEIAEEgoKBVZJREVPEIEEEhMKDkNBUkRfQ09OVEFJTkVSEIIEEg4KCURPQ19JTUFHRRCDBBIMCgdMT0FESU5HEIQEEg4KCVRJTUVfWk9ORRCFBBITCg5PVkVSU0laRURfVEVYVBCGBBILCgZFTkdJTkUQhwQSFQoQRE9DX1NUQVRFX0JVVFRPThCIBBIUCg9JTUFHRV9DT05UQUlORVIQiQQiLQoJU2l6ZUxldmVsEgoKBk5PUk1BTBAAEgkKBVNNQUxMEAESCQoFTEFSR0UQAiIwCglWYWx1ZVR5cGUSCAoEQVVUTxAAEgkKBVBPSU5UEAESDgoKUEVSQ0VOVEFHRRACIh0KCURpcmVjdGlvbhIHCgNMVFIQABIHCgNSVEwQASJHCgtPcmllbnRhdGlvbhIHCgNST1cQABIKCgZDT0xVTU4QARIPCgtST1dfUkVWRVJTRRACEhIKDkNPTFVNTl9SRVZFUlNFEAMiYAoHSnVzdGlmeRIJCgVTVEFSVBAAEgoKBkNFTlRFUhABEgcKA0VORBACEhEKDVNQQUNFX0JFVFdFRU4QAxIQCgxTUEFDRV9BUk9VTkQQBBIQCgxTUEFDRV9FVkVOTFkQBSJDCgVBbGlnbhIHCgNUT1AQABIKCgZNSURETEUQARIKCgZCT1RUT00QAhILCgdTVFJFVENIEAMSDAoIQkFTRUxJTkUQBCJECghGbGV4V3JhcBILCgdOT19XUkFQEAASCAoEV1JBUBABEhAKDFdSQVBfUkVWRVJTRRACEg8KC0xJTkVBUl9XUkFQEAMiHAoFVGhlbWUSCQoFTElHSFQQABIICgREQVJLEAEiOgoIRm9udFR5cGUSCQoFVElUTEUQABIMCghIRUFETElORRABEggKBEJPRFkQAhILCgdDQVBUSU9OEANCHQobVVJMUHJldmlld0NvbXBvbmVudFByb3BlcnR5Il0KA1VSTBILCgN1cmwYASABKAkSCwoDaW9zGAIgASgJEg8KB2FuZHJvaWQYAyABKAkSCgoCcGMYBCABKAkSCwoDd2ViGAUgASgJEhIKCmhhcm1vbnlfb3MYBiABKAki5j0KB01lc3NhZ2USCgoCaWQYASABKAkSJAoEdHlwZRgCIAEoDjIWLmVudGl0aWVzLk1lc3NhZ2UuVHlwZRIPCgdmcm9tX2lkGAMgASgJEhMKC2NyZWF0ZV90aW1lGAQgASgDEg8KB2NvbnRlbnQYBSABKAwSKAoGc3RhdHVzGAYgASgOMhguZW50aXRpZXMuTWVzc2FnZS5TdGF0dXMSNwoJZnJvbV90eXBlGAcgASgOMhouZW50aXRpZXMuTWVzc2FnZS5Gcm9tVHlwZToEVVNFUkICGAESDwoHcm9vdF9pZBgIIAEoCRIRCglwYXJlbnRfaWQYCSABKAkSEwoHY2hhdF9pZBgKIAEoCUICGAESGAoQbGFzdF9tb2RpZnlfdGltZRgLIAEoAxILCgNjaWQYDCABKAkSEAoIcG9zaXRpb24YDSABKAUSEwoLdXBkYXRlX3RpbWUYDiABKAMSEwoLaXNfbm90aWZpZWQYDyABKAgSEwoLcmVwbHlfY291bnQYECABKAkSIAoYcGFyZW50X3NvdXJjZV9tZXNzYWdlX2lkGBEgASgJEh4KFnJvb3Rfc291cmNlX21lc3NhZ2VfaWQYEiABKAkSDwoHaXNfZGluZxgTIAEoCBIRCgl0aHJlYWRfaWQYFCABKAkSFAoMc2VuZF90b19jaGF0GBUgASgIEhsKDGlzX3RydW5jYXRlZBgWIAEoCDoFZmFsc2USEgoKaXNfcmVtb3ZlZBgXIAEoCBISCgpjaGFubmVsX2lkGBggASgJEj0KDGNoYW5uZWxfdHlwZRgZIAEoDjIVLmVudGl0aWVzLkNoYW5uZWxUeXBlOgxDSEFUX0NIQU5ORUxCAhgBEhwKCmlzX3Zpc2libGUYGiABKAg6BHRydWVCAhgBEikKC2NyeXB0b19pbmZvGBsgASgLMhQuZW50aXRpZXMuQ3J5cHRvSW5mbxIXCg90aHJlYWRfcG9zaXRpb24YHCABKAUSEgoKcmVtb3Zlcl9pZBgdIAEoAxIaChJ0cmFuc2xhdGVfbGFuZ3VhZ2UYHiABKAkSMwoMcmVtb3Zlcl90eXBlGB8gASgOMh0uZW50aXRpZXMuTWVzc2FnZS5SZW1vdmVyVHlwZRIlCglpMThuX2luZm8YICABKAsyEi5lbnRpdGllcy5JMThuSW5mbxIXCg9ub19iYWRnZWRfY291bnQYISABKAUSEQoJaXNfYmFkZ2VkGCIgASgIEhMKC2JhZGdlX2NvdW50GCMgASgFEhoKEnRocmVhZF9iYWRnZV9jb3VudBgkIAEoBRIaChJ0aHJlYWRfcmVwbHlfY291bnQYJSABKAUSGgoSYXRfb3V0X2NoYXR0ZXJfaWRzGCYgAygJEhgKEG1lc3NhZ2VfbGFuZ3VhZ2UYJyABKAkSTQoedHJhbnNsYXRlX21lc3NhZ2VfZGlzcGxheV9ydWxlGCggASgLMiUuZW50aXRpZXMuVHJhbnNsYXRlTWVzc2FnZURpc3BsYXlSdWxlEiIKE2lzX25vX3RyYWNlX3JlbW92ZWQYKSABKAg6BWZhbHNlEiYKHmlzX2F1dG9fdHJhbnNsYXRlZF9ieV9yZWNlaXZlchgqIAEoCBJDCgtzZW5zaXRpdml0eRgrIAEoDjIkLmVudGl0aWVzLk1lc3NhZ2UuTWVzc2FnZVNlbnNpdGl2aXR5OgRTQUZFQgIYARIbCg1pc192aXNpYmxlX3YyGCwgASgIOgR0cnVlEjMKEHRyYW5zbGF0ZV9zb3VyY2UYLSABKA4yGS5lbnRpdGllcy5UcmFuc2xhdGVTb3VyY2USLQoJY2hhdF90eXBlGC4gASgOMhouZW50aXRpZXMuTWVzc2FnZS5DaGF0VHlwZRIaChJvcmlnaW5hbF9zZW5kZXJfaWQYLyABKAkSKgoiaXNfc3RhdGljX3Jlc291cmNlX21lc3NhZ2VfZGVsZXRlZBgwIAEoCBJXChppbWFnZXNfdHJhbnNsYXRpb25fYWJpbGl0eRgxIAMoCzIvLmVudGl0aWVzLk1lc3NhZ2UuSW1hZ2VzVHJhbnNsYXRpb25BYmlsaXR5RW50cnlCAhgBEioKB3ZlcnNpb24YMiABKAsyGS5lbnRpdGllcy5NZXNzYWdlLlZlcnNpb24SWAodaW1hZ2VzX3RyYW5zbGF0aW9uX2FiaWxpdHlfdjIYMyADKAsyMS5lbnRpdGllcy5NZXNzYWdlLkltYWdlc1RyYW5zbGF0aW9uQWJpbGl0eVYyRW50cnkSHAoUbWVzc2FnZV9waXBlX3ZlcnNpb24YNCABKAMSJQoWaXNfYmF0Y2hfY29weV9tZXNzYWdlcxg1IAEoCDoFZmFsc2USNwoOYW5vbnltb3VzX2luZm8YNiABKAsyHy5lbnRpdGllcy5NZXNzYWdlLkFub255bW91c0luZm8SUQoadXJsX3ByZXZpZXdfaGFuZ19wb2ludF9tYXAYNyADKAsyLS5lbnRpdGllcy5NZXNzYWdlLlVybFByZXZpZXdIYW5nUG9pbnRNYXBFbnRyeRIYChBpc19zcGVjaWFsX2ZvY3VzGDggASgIEjUKDWNvbnRlbnRfc3RhdGUYOSABKAsyHi5lbnRpdGllcy5NZXNzYWdlLkNvbnRlbnRTdGF0ZRIaChJpc19pbmNsdWRlX2RvY191cmwYOiABKAgSEQoJY2lwaGVyX2lkGDsgASgDEhgKEGNoYXJhY3Rlcl9sZW5ndGgYPCABKAUSQAoTdGhyZWFkX21lc3NhZ2VfdHlwZRg9IAEoDjIjLmVudGl0aWVzLk1lc3NhZ2UuVGhyZWFkTWVzc2FnZVR5cGUSFgoOY3JlYXRlX3RpbWVfbXMYPiABKAMSFAoMaXNfZW5jcnlwdGVkGD8gASgIEhcKD2F0X3VzZXJfaWRfbGlzdBhAIAMoAxIvCg5lbmNyeXB0ZWRfaW5mbxhBIAEoCzIXLmVudGl0aWVzLkVuY3J5cHRlZEluZm8SFAoMZWRpdF92ZXJzaW9uGEIgASgFEhQKDGVkaXRfdGltZV9tcxhDIAEoAxIZChFtZXNzYWdlX2xhbmd1YWdlcxhEIAMoCRIPCgdmb2xkX2lkGEUgASgDEjMKDGRpc3BsYXlfbW9kZRhGIAEoDjIdLmVudGl0aWVzLk1lc3NhZ2UuRGlzcGxheU1vZGUSOQoPZGlzYWJsZWRfYWN0aW9uGEcgASgLMiAuZW50aXRpZXMuTWVzc2FnZS5EaXNhYmxlZEFjdGlvbhIYChBzZXRfY29udGVudF9ncmF5GEggASgIEk8KG3Jlc3RyaWN0ZWRfbW9kZV9idXJuZWRfaW5mbxhJIAEoCzIqLmVudGl0aWVzLk1lc3NhZ2UuUmVzdHJpY3RlZE1vZGVCdXJuZWRJbmZvEjUKDXN0cmVhbV9zdGF0dXMYSiABKA4yHi5lbnRpdGllcy5NZXNzYWdlLlN0cmVhbVN0YXR1cxIpCgdhaV9pbmZvGEsgASgLMhguZW50aXRpZXMuTWVzc2FnZS5BSUluZm8SFgoOdXBkYXRlX3RpbWVfbXMYTCABKAMSLwoKcmVmZXJlbmNlcxhNIAMoCzIbLmVudGl0aWVzLk1lc3NhZ2UuUmVmZXJlbmNlEmQKJHJlZmVyZW5jZV91cmxfcHJldmlld19oYW5nX3BvaW50X21hcBhOIAMoCzI2LmVudGl0aWVzLk1lc3NhZ2UuUmVmZXJlbmNlVXJsUHJldmlld0hhbmdQb2ludE1hcEVudHJ5EhYKDm5vX3JlcGx5X2NvdW50GE8gASgFEiMKG3N5bmNfdG9fY2hhdF90aHJlYWRfcm9vdF9pZBhQIAEoAxJKChlzeW5jX3RvX2NoYXRfbWVzc2FnZV90eXBlGFEgASgOMicuZW50aXRpZXMuTWVzc2FnZS5TeW5jVG9DaGF0TWVzc2FnZVR5cGUSJwofc3luY190b19jaGF0X3JlbGF0ZWRfbWVzc2FnZV9pZBhSIAEoAxI2ChJwYXJ0aWFsX3JlcGx5X2luZm8YUyABKAsyGi5lbnRpdGllcy5QYXJ0aWFsUmVwbHlJbmZvEj0KEWF1dGhvcml6ZWRfc291cmNlGFQgASgLMiIuZW50aXRpZXMuTWVzc2FnZS5BdXRob3JpemVkU291cmNlEkIKF0RlbGV0ZWRNZXNzYWdlVXNlcnNJbmZvGFUgASgLMiEuZW50aXRpZXMuRGVsZXRlZE1lc3NhZ2VVc2Vyc0luZm8SFQoNaGFzX2ZvbGxvd191cBhWIAEoCBI9ChVnZW5lcmljX3N0cmVhbV9zdGF0dXMYVyABKA4yHi5lbnRpdGllcy5NZXNzYWdlLlN0cmVhbVN0YXR1cxIhChlhdF91c2VyX2dyb3VwX2NoYXR0ZXJfaWRzGFggAygDEiMKG2ZpbHRlcl9tdXRlX2JvdF9iYWRnZV9jb3VudBhZIAEoBRIrCiNmaWx0ZXJfbXV0ZV9ib3RfYmFkZ2VfY291bnRfdmVyc2lvbhhaIAEoAxraBQoORGlzYWJsZWRBY3Rpb24SPgoHYWN0aW9ucxgBIAMoCzItLmVudGl0aWVzLk1lc3NhZ2UuRGlzYWJsZWRBY3Rpb24uQWN0aW9uc0VudHJ5GlwKCEJlaGF2aW9yEkIKDGRpc3BsYXlfbW9kZRgBIAEoDjIsLmVudGl0aWVzLk1lc3NhZ2UuRGlzYWJsZWRBY3Rpb24uRGlzcGxheU1vZGUSDAoEY29kZRgCIAEoBRpZCgxBY3Rpb25zRW50cnkSCwoDa2V5GAEgASgFEjgKBXZhbHVlGAIgASgLMikuZW50aXRpZXMuTWVzc2FnZS5EaXNhYmxlZEFjdGlvbi5CZWhhdmlvcjoCOAEikQMKBkFjdGlvbhISCg5VTktOT1dOX0FDVElPThAAEg4KCkFMTF9BQ1RJT04QARIMCghSRUFDVElPThACEgkKBVJFUExZEAMSDAoIVFJBTlNNSVQQBBITCg9SRVBMWV9JTl9USFJFQUQQBRIPCgtTRU5EX1VSR0VOVBAGEgoKBlJFQ0FMTBAHEhAKDEVESVRfTUVTU0FHRRAIEhAKDE1VTFRJX1NFTEVDVBAJEggKBEZMQUcQChIMCghGQVZPUklURRALEgcKA1BJThAMEg8KC0NMSVBfVE9fVE9QEA0SDAoIQUREX1RBU0sQDhINCglUUkFOU0xBVEUQDxIKCgZERUxFVEUQEBIRCg1TQVZFX1RPX0xPQ0FMEBESEQoNU0FWRV9UT19TUEFDRRASEg8KC0FERF9TVElDS0VSEBMSDAoIRE9XTkxPQUQQFBIICgRDT1BZEBUSFQoRQ09QWV9NRVNTQUdFX0xJTksQFhILCgdXSURHRVRTEBcSDAoIQ0hBVF9QSU4QGBIKCgZERVJJVkUQGSI7CgtEaXNwbGF5TW9kZRIQCgxVTktOT1dOX01PREUQABILCgdESVNBQkxFEAESDQoJSU5WSVNJQkxFEAIaMwoHVmVyc2lvbhIXCg9jb250ZW50X3ZlcnNpb24YASABKAUSDwoHdmVyc2lvbhgCIAEoBRpWCg1Bbm9ueW1vdXNJbmZvEhQKDGlzX2Fub255bW91cxgBIAIoCBIRCglpc19zZW5kZXIYAiABKAgSHAoUYW5vbnltb3VzX2NoYXR0ZXJfaWQYAyABKAka9QIKDENvbnRlbnRTdGF0ZRJAChNjb250ZW50X2RlbGV0ZV90eXBlGAEgASgOMiMuZW50aXRpZXMuTWVzc2FnZS5Db250ZW50RGVsZXRlVHlwZRIXCg9pc19kZWNyeXB0X2ZhaWwYAiABKAgSQQoQZGxwX3Jldmlld19zdGF0ZRgDIAEoDjInLmVudGl0aWVzLk1lc3NhZ2UuTWVzc2FnZURMUFJldmlld1N0YXRlEhUKDWlzX3Jlc3RyaWN0ZWQYBCABKAgSJQodZmlsZV9zaGFyZV9wZXJtaXNzaW9uX2Jsb2NrZWQYBiABKAgSEgoKaXNfY2xlYW5lZBgHIAEoCBIWCg5pc19oeWJyaWRfY29sZBgIIAEoCBI8CgpjbGVhbl90eXBlGAkgASgOMiguZW50aXRpZXMuTWVzc2FnZS5Db250ZW50U3RhdGUuQ2xlYW5UeXBlIh8KCUNsZWFuVHlwZRISCg5GcmVlTXNnRXhwaXJlZBABGkUKGFJlc3RyaWN0ZWRNb2RlQnVybmVkSW5mbxIWCg5idXJuZWRfc2Vjb25kcxgBIAEoBRIRCglpc19idXJuZWQYAiABKAgagAgKBkFJSW5mbxIUCgxjaGF0X21vZGVfaWQYASABKAMSFwoPYW5zd2VyX3Jhd19kYXRhGAIgASgJEhAKCHJvdW5kX2lkGAMgASgDEhwKFHJvdW5kX2ZpcnN0X3Bvc2l0aW9uGAQgASgFEhYKDnJvdW5kX2ZpbmlzaGVkGAUgASgIEj8KD2FpX21lc3NhZ2VfdHlwZRgGIAEoDjImLmVudGl0aWVzLk1lc3NhZ2UuQUlJbmZvLkFJTWVzc2FnZVR5cGUSRwoTcm91bmRfZmluaXNoX3N0YXR1cxgHIAEoDjIqLmVudGl0aWVzLk1lc3NhZ2UuQUlJbmZvLlJvdW5kRmluaXNoU3RhdHVzEhwKFGNhbl9zaG93X2FpX3Byb2dyZXNzGAggASgIEhIKCnNlc3Npb25faWQYCSABKAkSFAoMaXNfbmV3X3RvcGljGAogASgIEjwKDWJ1dHRvbl9jb25maWcYCyABKAsyJS5lbnRpdGllcy5NZXNzYWdlLkFJSW5mby5CdXR0b25Db25maWcSFQoNcm9vdF9yb3VuZF9pZBgMIAEoAxIiChplbnRlcnByaXNlX3FhX2dlbmVyYWxfaW5mbxgNIAEoCRrPAgoMQnV0dG9uQ29uZmlnEkAKCHN0cmF0ZWd5GAEgASgOMi4uZW50aXRpZXMuTWVzc2FnZS5BSUluZm8uQnV0dG9uQ29uZmlnLlN0cmF0ZWd5EkcKEWN1c3RvbWl6ZV9idXR0b25zGAIgAygOMiwuZW50aXRpZXMuTWVzc2FnZS5BSUluZm8uQnV0dG9uQ29uZmlnLkJ1dHRvbhIfChdhaV9hbnN3ZXJfbWFya2Rvd25fZGF0YRgDIAEoCRIYChBidXR0b25fbGlzdF9qc29uGAQgASgJIiYKCFN0cmF0ZWd5EgsKB0RFRkFVTFQQABINCglDVVNUT01JWkUQASJRCgZCdXR0b24SCwoHVU5LTk9XThAAEggKBExJS0UQARILCgdESVNMSUtFEAISDgoKUkVHRU5FUkFURRADEgkKBVNIQVJFEAQSCAoEQ09QWRAFIoUBCg1BSU1lc3NhZ2VUeXBlEgkKBU9USEVSEAASDAoIUVVFU1RJT04QARIRCg1TVFJFQU1fQU5TV0VSEAISFQoRTk9UX1NUUkVBTV9BTlNXRVIQAxISCg5TWVNURU1fTUVTU0FHRRAEEhEKDUdVSURFX01FU1NBR0UQBRIKCgZOb3RpY2UQBiJaChFSb3VuZEZpbmlzaFN0YXR1cxILCgdVTktOT1dOEAASDgoKUkVTUE9ORElORxABEggKBERPTkUQAhINCglJTlRFUlJVUFQQAxIPCgtST1VORF9FUlJPUhAEGicKCVJlZmVyZW5jZRILCgN1cmwYASABKAkSDQoFdGl0bGUYAiABKAkaYgodSW1hZ2VzVHJhbnNsYXRpb25BYmlsaXR5RW50cnkSCwoDa2V5GAEgASgJEjAKBXZhbHVlGAIgASgLMiEuZW50aXRpZXMuSW1hZ2VUcmFuc2xhdGlvbkFiaWxpdHk6AjgBGmYKH0ltYWdlc1RyYW5zbGF0aW9uQWJpbGl0eVYyRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMuZW50aXRpZXMuSW1hZ2VUcmFuc2xhdGlvbkFiaWxpdHlWMjoCOAEaXAobVXJsUHJldmlld0hhbmdQb2ludE1hcEVudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmVudGl0aWVzLlVybFByZXZpZXdIYW5nUG9pbnQ6AjgBGmUKJFJlZmVyZW5jZVVybFByZXZpZXdIYW5nUG9pbnRNYXBFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5lbnRpdGllcy5VcmxQcmV2aWV3SGFuZ1BvaW50OgI4ARptChBBdXRob3JpemVkU291cmNlEhEKCXNvdXJjZV9pZBgBIAIoAxJGChZhdXRob3JpemVkX3NvdXJjZV90eXBlGAIgAigOMiYuZW50aXRpZXMuTWVzc2FnZS5BdXRob3JpemVkU291cmNlVHlwZSKLAwoEVHlwZRILCgdVTktOT1dOEAASCAoEUE9TVBACEggKBEZJTEUQAxIICgRURVhUEAQSCQoFSU1BR0UQBRIKCgZTWVNURU0QBhIJCgVBVURJTxAHEgkKBUVNQUlMEAgSFAoQU0hBUkVfR1JPVVBfQ0hBVBAJEgsKB1NUSUNLRVIQChIRCg1NRVJHRV9GT1JXQVJEEAsSDAoIQ0FMRU5EQVIQDBIOCgpDTE9VRF9GSUxFEA0SCAoEQ0FSRBAOEgkKBU1FRElBEA8SGAoUU0hBUkVfQ0FMRU5EQVJfRVZFTlQQEBILCgdIT05HQkFPEBESFAoQR0VORVJBTF9DQUxFTkRBUhASEg4KClZJREVPX0NIQVQQExIMCghMT0NBVElPThAUEhoKFkNPTU1FUkNJQUxJWkVEX0hPTkdCQU8QFhITCg9TSEFSRV9VU0VSX0NBUkQQFxIICgRUT0RPEBgSCgoGRk9MREVSEBkSDAoIRElBR05PU0UQGhIICgRWT1RFEBsSCAoETElOSxAcIh0KCEZyb21UeXBlEggKBFVTRVIQARIHCgNCT1QQAiJDCgZTdGF0dXMSEgoOVU5LTk9XTl9TVEFUVVMQABIKCgZOT1JNQUwQARILCgdERUxFVEVEEAISDAoITU9ESUZJRUQQAyJpCgtSZW1vdmVyVHlwZRIXChNVTktOT1dOX1JFTU9WRVJUWVBFEAASDgoKR1JPVVBPV05FUhABEgwKCFNZU0FETUlOEAISDgoKR1JPVVBBRE1JThADEhMKD0VOVEVSUFJJU0VBRE1JThAEIkYKEk1lc3NhZ2VTZW5zaXRpdml0eRIXChNVTktOT1dOX1NFTlNJVElWSVRZEAASCAoEU0FGRRABEg0KCURBTkdFUk9VUxACIkYKCENoYXRUeXBlEhUKEVVOS05PV05fQ0hBVF9UWVBFEAASBwoDUDJQEAESCQoFR1JPVVAQAhIPCgtUT1BJQ19HUk9VUBADIkcKEUNvbnRlbnREZWxldGVUeXBlEhcKE1VOS05PV05fREVMRVRFX1RZUEUQABILCgdSRU1PVkVEEAESDAoIUkVQTEFDRUQQAiKAAQoMU3RyZWFtU3RhdHVzEhIKDlNUUkVBTV9VTktOT1dOEAASEwoPU1RSRUFNX1RSQU5TTUlUEAESDwoLU1RSRUFNX09WRVIQAhIQCgxTVFJFQU1fRVJST1IQAxIQCgxTVFJFQU1fQlJFQUsQBBISCg5TVFJFQU1fUFJFUEFSRRAFImIKEVRocmVhZE1lc3NhZ2VUeXBlEhoKFlVOS05PV05fVEhSRUFEX01FU1NBR0UQABIXChNUSFJFQURfUk9PVF9NRVNTQUdFEAESGAoUVEhSRUFEX1JFUExZX01FU1NBR0UQAiJeChVNZXNzYWdlRExQUmV2aWV3U3RhdGUSEQoNVU5LTk9XTl9TVEFURRAAEg8KC0lOX1BST0dSRVNTEAESCAoEUEFTUxACEgkKBUJMT0NLEAMSDAoISU5BQ1RJVkUQBCJaCgtEaXNwbGF5TW9kZRIYChRVTktOT1dOX0RJU1BMQVlfTU9ERRAAEhgKFERFRkFVTFRfRElTUExBWV9NT0RFEAESFwoTVEhSRUFEX0RJU1BMQVlfTU9ERRACIqEBChVNZXNzYWdlQXR0YWNobWVudFR5cGUSGwoXVU5LTk9XTl9BVFRBQ0hNRU5UX1RZUEUQABIUChBBVFRBQ0hNRU5UX0lNQUdFEAESFAoQQVRUQUNITUVOVF9WSURFTxACEhMKD0FUVEFDSE1FTlRfRklMRRADEhMKD0FUVEFDSE1FTlRfTElOSxAEEhUKEUFUVEFDSE1FTlRfRk9MREVSEAUigAEKFVN5bmNUb0NoYXRNZXNzYWdlVHlwZRIlCiFVTktOT1dOX1NZTkNfVE9fQ0hBVF9NRVNTQUdFX1RZUEUQABIfChtTWU5DX1RPX0NIQVRfVEFSR0VUX01FU1NBR0UQARIfChtTWU5DX1RPX0NIQVRfU09VUkNFX01FU1NBR0UQAiJDChRBdXRob3JpemVkU291cmNlVHlwZRIiCh5VTktOT1dOX0FVVEhPUklaRURfU09VUkNFX1RZUEUQABIHCgNBUFAQASLyAgoXRGVsZXRlZE1lc3NhZ2VVc2Vyc0luZm8STgoTSW5mb1N0b3JhZ2VMb2NhdGlvbhgBIAEoDjIxLmVudGl0aWVzLkRlbGV0ZWRNZXNzYWdlVXNlcnNJbmZvLlN0b3JhZ2VMb2NhdGlvbhJrCh1EZWxldGVkTWVzc2FnZVVzZXJJRHMyRGVsVGltZRgCIAMoCzJELmVudGl0aWVzLkRlbGV0ZWRNZXNzYWdlVXNlcnNJbmZvLkRlbGV0ZWRNZXNzYWdlVXNlcklEczJEZWxUaW1lRW50cnkaRAoiRGVsZXRlZE1lc3NhZ2VVc2VySURzMkRlbFRpbWVFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAM6AjgBIlQKD1N0b3JhZ2VMb2NhdGlvbhILCgdVTktOT1dOEAASFwoTU1RPUkFHRV9JTl9FWFRFUk5BTBABEhsKF1NUT1JBR0VfSU5fTVlTUUxfRU5USVRZEAIi0wEKEFBhcnRpYWxSZXBseUluZm8SIwoHY29udGVudBgBIAEoCzISLmVudGl0aWVzLlJpY2hUZXh0EksKCHBvc2l0aW9uGAIgASgOMjkuZW50aXRpZXMuUGFydGlhbFJlcGx5SW5mby5QYXJ0aWFsQ29udGVudFJlbGF0aXZlUG9zaXRpb24iTQoeUGFydGlhbENvbnRlbnRSZWxhdGl2ZVBvc2l0aW9uEgsKB1VOS05PV04QABIICgRIRUFEEAESCgoGTUlERExFEAISCAoEVEFJTBADIlEKEU1lc3NhZ2VFeHRlbmRJbmZvEhwKFElzR3JvdXBEZWxldGVkQml0TWFwGAEgASgIEh4KFklzTm9UcmFjZVJlbW92ZWRCaXRNYXAYAiABKAgiQgobVHJhbnNsYXRlTWVzc2FnZURpc3BsYXlSdWxlEiMKBHJ1bGUYASACKA4yFS5lbnRpdGllcy5EaXNwbGF5UnVsZSLfAgoRTWVzc2FnZVVybFByZXZpZXcSEgoKbWVzc2FnZV9pZBgBIAIoCRIWCgtzZXF1ZW5jZV9pZBgCIAIoBToBMBILCgN1cmwYAyACKAkSEQoGb2Zmc2V0GAQgAigFOgEwEhAKBWNvdW50GAUgAigFOgEwEg0KBXRpdGxlGAYgASgJEhAKCGFic3RyYWN0GAcgASgJEiAKBGljb24YCCABKAsyEi5lbnRpdGllcy5JbWFnZVNldBIZCgppc19kZWxldGVkGAkgASgIOgVmYWxzZRIZCgtoYXNfcHJldmlldxgKIAEoCDoEdHJ1ZRInCgtjb3Zlcl9pbWFnZRgLIAEoCzISLmVudGl0aWVzLkltYWdlU2V0EicKCnZpZGVvX2luZm8YDCABKAsyEy5lbnRpdGllcy5WaWRlb0luZm8SIQoSbmVlZF9sb2NhbF9wcmV2aWV3GA0gASgIOgVmYWxzZSLeAQoJVmlkZW9JbmZvEiYKBHNpdGUYASABKA4yGC5lbnRpdGllcy5WaWRlb0luZm8uU2l0ZRIPCgdzcmNfdXJsGAIgASgJEgsKA3ZpZBgDIAEoCRISCgppZnJhbWVfdXJsGAQgASgJEhMKC2V4cGlyZV90aW1lGAUgASgDImIKBFNpdGUSCwoHVU5LTk9XThAAEgkKBVhJR1VBEAESCgoGRE9VWUlOEAISCwoHSFVPU0hBThADEgsKB1lPVVRVQkUQBBIJCgVJUUlZSRAFEgkKBVlPVUtVEAYSBgoCUVEQByK7AgoJRG9jRW50aXR5EkUKEmVsZW1lbnRfZW50aXR5X3JlZhgBIAMoCzIpLmVudGl0aWVzLkRvY0VudGl0eS5FbGVtZW50RW50aXR5UmVmRW50cnkaigEKDUVsZW1lbnRFbnRpdHkSDQoFdGl0bGUYASABKAkSIwoIZG9jX3R5cGUYAiABKA4yES5lbnRpdGllcy5Eb2NUeXBlEhQKDHN0cl9kb2NfdHlwZRgDIAEoCRIRCglkb2NfdG9rZW4YBCABKAkSHAoEaWNvbhgFIAEoCzIOLmVudGl0aWVzLkljb24aWgoVRWxlbWVudEVudGl0eVJlZkVudHJ5EgsKA2tleRgBIAEoCRIwCgV2YWx1ZRgCIAEoCzIhLmVudGl0aWVzLkRvY0VudGl0eS5FbGVtZW50RW50aXR5OgI4ASJdChZTZWN1cml0eUVTQ1Jldmlld0V4dHJhEhQKDHRpcF90ZXh0X2tleRgBIAEoCRIXCg9zdWJtaXRfdGV4dF9rZXkYAiABKAkSFAoMZmVlZGJhY2tfdXJsGAMgASgJIpEECgxBYmJyZXZpYXRpb24SRAoQYWJicl9lbGVtZW50X3JlZhgBIAMoCzIqLmVudGl0aWVzLkFiYnJldmlhdGlvbi5BYmJyRWxlbWVudFJlZkVudHJ5Gq4CCgZlbnRpdHkSDwoHYWJicl9pZBgBIAEoCRIUCgxhYmJyX3ZlcnNpb24YAiABKAUSNQoJYWJicl90eXBlGAMgASgOMiIuZW50aXRpZXMuQWJicmV2aWF0aW9uLmVudGl0eS5UeXBlEj4KCGRhdGV0aW1lGAQgASgLMiwuZW50aXRpZXMuQWJicmV2aWF0aW9uLmVudGl0eS5EYXRldGltZUVudGl0eRpNCg5EYXRldGltZUVudGl0eRINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSEAoIZHVyYXRpb24YAyABKAUSDQoFZ3JhaW4YBCABKAkiNwoEVHlwZRIKCgZVTktPV04QABILCgdBQ1JPTllNEAESCAoEV0lLSRACEgwKCERBVEVUSU1FEAMaNQoFQWJicnMSLAoFYWJicnMYASADKAsyHS5lbnRpdGllcy5BYmJyZXZpYXRpb24uZW50aXR5GlMKE0FiYnJFbGVtZW50UmVmRW50cnkSCwoDa2V5GAEgASgJEisKBXZhbHVlGAIgASgLMhwuZW50aXRpZXMuQWJicmV2aWF0aW9uLkFiYnJzOgI4ASIiCgRTcGFuEg0KBXN0YXJ0GAEgAigFEgsKA2VuZBgCIAIoBSKTAQoLTGluZ29PcHRpb24SHgoWaGlnaGxpZ2h0X2lnbm9yZV93b3JkcxgBIAMoCRI0CghwaW5faW5mbxgCIAMoCzIiLmVudGl0aWVzLkxpbmdvT3B0aW9uLlBpbkluZm9FbnRyeRouCgxQaW5JbmZvRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLBAQoSQ2FsZW5kYXJFbnRpdHlNZXRhEjwKC2FjdGlvbl90eXBlGAEgASgOMicuZW50aXRpZXMuQ2FsZW5kYXJFbnRpdHlNZXRhLkFjdGlvblR5cGUSQAoTbW9uaXRvcl9lbnRpdHlfdHlwZRgCIAEoDjIjLmVudGl0aWVzLkNhbGVuZGFyTW9uaXRvckVudGl0eVR5cGUiKwoKQWN0aW9uVHlwZRILCgdVTktOT1dOEAASEAoMQ1JFQVRFX0VWRU5UEAEiiAMKD0JhaWtlRW50aXR5TWV0YRIKCgJpZBgBIAIoCRIUCgxpc19hbGxvd19hbGwYAiABKAgSSQoRYWxsb3dlZF90eXBlZF9pZHMYAyADKAsyLi5lbnRpdGllcy5CYWlrZUVudGl0eU1ldGEuQWxsb3dlZFR5cGVkSWRzRW50cnkSVQoXcGxhdGZvcm1fZGlzYWJsZV9vcHRpb24YBCADKAsyNC5lbnRpdGllcy5CYWlrZUVudGl0eU1ldGEuUGxhdGZvcm1EaXNhYmxlT3B0aW9uRW50cnkaFwoIVHlwZWRJRHMSCwoDaWRzGAEgAygJGloKFEFsbG93ZWRUeXBlZElkc0VudHJ5EgsKA2tleRgBIAEoCRIxCgV2YWx1ZRgCIAEoCzIiLmVudGl0aWVzLkJhaWtlRW50aXR5TWV0YS5UeXBlZElEczoCOAEaPAoaUGxhdGZvcm1EaXNhYmxlT3B0aW9uRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASK0AgoDUmVmEhwKBHNwYW4YASACKAsyDi5lbnRpdGllcy5TcGFuEhQKDG1hdGNoZWRfd29yZBgCIAEoCRJJChdwbGF0Zm9ybV9kaXNhYmxlX29wdGlvbhgDIAMoCzIoLmVudGl0aWVzLlJlZi5QbGF0Zm9ybURpc2FibGVPcHRpb25FbnRyeRI0ChFiYWlrZV9lbnRpdHlfbWV0YRgEIAEoCzIZLmVudGl0aWVzLkJhaWtlRW50aXR5TWV0YRI6ChRjYWxlbmRhcl9lbnRpdHlfbWV0YRgFIAEoCzIcLmVudGl0aWVzLkNhbGVuZGFyRW50aXR5TWV0YRo8ChpQbGF0Zm9ybURpc2FibGVPcHRpb25FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIiMKBFJlZnMSGwoEcmVmcxgBIAMoCzINLmVudGl0aWVzLlJlZiKPAQoLRWxlbWVudFJlZnMSPAoMZWxlbWVudF9yZWZzGAEgAygLMiYuZW50aXRpZXMuRWxlbWVudFJlZnMuRWxlbWVudFJlZnNFbnRyeRpCChBFbGVtZW50UmVmc0VudHJ5EgsKA2tleRgBIAEoCRIdCgV2YWx1ZRgCIAEoCzIOLmVudGl0aWVzLlJlZnM6AjgBIt0CCgtUZXh0Q29udGVudBIMCgR0ZXh0GAEgASgJEikKBHVybHMYAiADKAsyGy5lbnRpdGllcy5NZXNzYWdlVXJsUHJldmlldxIlCglyaWNoX3RleHQYAyABKAsyEi5lbnRpdGllcy5SaWNoVGV4dBInCgpkb2NfZW50aXR5GAQgASgLMhMuZW50aXRpZXMuRG9jRW50aXR5EiwKDGFiYnJldmlhdGlvbhgFIAEoCzIWLmVudGl0aWVzLkFiYnJldmlhdGlvbhJHChJ0eXBlZF9lbGVtZW50X3JlZnMYBiADKAsyKy5lbnRpdGllcy5UZXh0Q29udGVudC5UeXBlZEVsZW1lbnRSZWZzRW50cnkaTgoVVHlwZWRFbGVtZW50UmVmc0VudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLmVudGl0aWVzLkVsZW1lbnRSZWZzOgI4ASIjCg9DYWxlbmRhckNvbnRlbnQSEAoIY2FsZW5kYXIYASABKAki+wIKDUVuY3J5cHRlZEluZm8SEwoLZGF0YV9zZWNyZXQYASABKAwSHQoVZW5jcnlwdGVkX2RhdGFfc2VjcmV0GAIgASgMEhYKDmVuY3J5cHRlZF9kYXRhGAMgASgMEjoKCmltYWdlX2tleXMYBCADKAsyJi5lbnRpdGllcy5FbmNyeXB0ZWRJbmZvLkltYWdlS2V5c0VudHJ5EjgKCWZpbGVfa2V5cxgFIAMoCzIlLmVudGl0aWVzLkVuY3J5cHRlZEluZm8uRmlsZUtleXNFbnRyeRITCgtpc190cmFuc21pdBgGIAEoCBIwCg9yZXNfY3J5cHRvX3R5cGUYByABKA4yFy5lbnRpdGllcy5SZXNDcnlwdG9UeXBlGjAKDkltYWdlS2V5c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaLwoNRmlsZUtleXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBImUKGVNoYXJlQ2FsZW5kYXJFdmVudENvbnRlbnQSLwoOY2FsZW5kYXJfZXZlbnQYASABKAsyFy5lbnRpdGllcy5DYWxlbmRhckV2ZW50EhcKD2F0dGVuZGVlc19jb3VudBgCIAEoBSL0AgoMSW1hZ2VDb250ZW50EiEKBWltYWdlGAEgASgLMhIuZW50aXRpZXMuSW1hZ2VTZXQSJgoIaW1hZ2VfdjIYAiABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYyEhgKEGlzX29yaWdpbl9zb3VyY2UYAyABKAgSEwoLb3JpZ2luX3NpemUYBCABKAQSGAoQcmlza19vYmplY3Rfa2V5cxgFIAMoCRIfChNjbGVhbl9yZXNvdXJjZV9rZXlzGAYgAygJQgIYARJTChhjbGVhbl9yZXNvdXJjZV9rZXlfc2NlbmUYByADKAsyMS5lbnRpdGllcy5JbWFnZUNvbnRlbnQuQ2xlYW5SZXNvdXJjZUtleVNjZW5lRW50cnkaWgoaQ2xlYW5SZXNvdXJjZUtleVNjZW5lRW50cnkSCwoDa2V5GAEgASgJEisKBXZhbHVlGAIgASgOMhwuZW50aXRpZXMuUmVzb3VyY2VDbGVhblNjZW5lOgI4ASKYAgoPTG9jYXRpb25Db250ZW50EksKFGxvY2F0aW9uX2Rlc2NyaXB0aW9uGAEgASgLMi0uZW50aXRpZXMuTG9jYXRpb25Db250ZW50LkxvY2F0aW9uRGVzY3JpcHRpb24SEQoJbG9uZ2l0dWRlGAIgASgJEhAKCGxhdGl0dWRlGAMgASgJEhIKCnpvb21fbGV2ZWwYBCABKAUSIQoFaW1hZ2UYBSABKAsyEi5lbnRpdGllcy5JbWFnZVNldBIOCgZ2ZW5kb3IYBiABKAkSEgoKaXNfaXRlcm5hbBgHIAEoCBo4ChNMb2NhdGlvbkRlc2NyaXB0aW9uEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkiaQoKVHJhbnNFeHRyYRIlCgZzdGF0dXMYASABKA4yFS5lbnRpdGllcy5UcmFuc1N0YXR1cxIYChBzZW5kZXJfZGV2aWNlX2lkGAIgASgJEhoKEnJlY2VpdmVyX2RldmljZV9pZBgDIAEoCSLfCQoLRmlsZUNvbnRlbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSDAoEc2l6ZRgDIAEoAxIMCgRtaW1lGAQgASgJEiwKBnNvdXJjZRgFIAEoDjIcLmVudGl0aWVzLkZpbGVDb250ZW50LlNvdXJjZRISCgpuYW1lX3NwYWNlGAYgASgJEg8KB2ZzX3VuaXQYByABKAkSQAoPbGFuX3RyYW5zX2V4dHJhGAggASgLMiMuZW50aXRpZXMuRmlsZUNvbnRlbnQuTEFOVHJhbnNFeHRyYUICGAESKQoLdHJhbnNfZXh0cmEYCSABKAsyFC5lbnRpdGllcy5UcmFuc0V4dHJhEhgKEHJpc2tfb2JqZWN0X2tleXMYCiADKAkSNwoMZmlsZV9hYmlsaXR5GAsgASgOMiEuZW50aXRpZXMuRmlsZUNvbnRlbnQuRmlsZUFiaWxpdHkSPQoPZmlsZV9wZXJtaXNzaW9uGAwgASgOMiQuZW50aXRpZXMuRmlsZUNvbnRlbnQuRmlsZVBlcm1pc3Npb24SGwoTbGFzdF91cGRhdGVfdXNlcl9pZBgNIAEoAxIbChNsYXN0X3VwZGF0ZV90aW1lX21zGA4gASgDEhkKEWNvbXByZXNzZWRfZm9sZGVyGA8gASgJEjYKEmZpbGVfcHJldmlld19zdGFnZRgQIAEoDjIaLmVudGl0aWVzLkZpbGVQcmV2aWV3U3RhZ2USHwoTY2xlYW5fcmVzb3VyY2Vfa2V5cxgRIAMoCUICGAESFAoMaXNfZGVzdHJveWVkGBIgASgIElIKGGNsZWFuX3Jlc291cmNlX2tleV9zY2VuZRgTIAMoCzIwLmVudGl0aWVzLkZpbGVDb250ZW50LkNsZWFuUmVzb3VyY2VLZXlTY2VuZUVudHJ5EhAKCHNjZW5lX2lkGBQgASgDGtkBCg1MQU5UcmFuc0V4dHJhEj8KBnN0YXR1cxgBIAEoDjIvLmVudGl0aWVzLkZpbGVDb250ZW50LkxBTlRyYW5zRXh0cmEuVHJhbnNTdGF0dXMihgEKC1RyYW5zU3RhdHVzEgsKB1BFTkRJTkcQABIKCgZBQ0NFUFQQARIKCgZSRUZVU0UQAhIKCgZDQU5DRUwQAxITCg9BQk9SVF9CWV9TRU5ERVIQBBIVChFBQk9SVF9CWV9SRUNFSVZFUhAFEggKBERPTkUQBhIQCgxPRkZMSU5FX01PREUQBxpaChpDbGVhblJlc291cmNlS2V5U2NlbmVFbnRyeRILCgNrZXkYASABKAkSKwoFdmFsdWUYAiABKA4yHC5lbnRpdGllcy5SZXNvdXJjZUNsZWFuU2NlbmU6AjgBIjMKBlNvdXJjZRILCgdVTktOT1dOEAASDQoJTlVUX1NUT1JFEAISDQoJTEFOX1RSQU5TEAMiaAoLRmlsZUFiaWxpdHkSGQoVVU5LTk9XTl9TVVBQT1JUX1NUQVRFEAASEAoMU1VQUE9SVF9FRElUEAESEwoPU1VQUE9SVF9QUkVWSUVXEAISFwoTTk9UX1NVUFBPUlRfUFJFVklFVxADIkYKDkZpbGVQZXJtaXNzaW9uEhUKEVVOS05PV05fQ0FOX1NUQVRFEAASDAoIQ0FOX0VESVQQARIPCgtDQU5fUFJFVklFVxACIoQECgxNZWRpYUNvbnRlbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSDAoEc2l6ZRgDIAEoAxIMCgRtaW1lGAQgASgJEi0KBnNvdXJjZRgFIAEoDjIdLmVudGl0aWVzLk1lZGlhQ29udGVudC5Tb3VyY2USIQoFaW1hZ2UYBiABKAsyEi5lbnRpdGllcy5JbWFnZVNldBIQCghkdXJhdGlvbhgHIAEoBRIPCgdmc191bml0GAggASgJEhMKC2lzX29yaWdpbmFsGAkgASgIEhgKEHJpc2tfb2JqZWN0X2tleXMYCiADKAkSHwoTY2xlYW5fcmVzb3VyY2Vfa2V5cxgLIAMoCUICGAESFAoMaXNfZGVzdHJveWVkGAwgASgIElMKGGNsZWFuX3Jlc291cmNlX2tleV9zY2VuZRgNIAMoCzIxLmVudGl0aWVzLk1lZGlhQ29udGVudC5DbGVhblJlc291cmNlS2V5U2NlbmVFbnRyeRIQCghzY2VuZV9pZBgOIAEoAxpaChpDbGVhblJlc291cmNlS2V5U2NlbmVFbnRyeRILCgNrZXkYASABKAkSKwoFdmFsdWUYAiABKA4yHC5lbnRpdGllcy5SZXNvdXJjZUNsZWFuU2NlbmU6AjgBIh8KBlNvdXJjZRILCgdVTktOT1dOEAASCAoETEFSSxABItUCCgxBdWRpb0NvbnRlbnQSCwoDa2V5GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEgwKBHNpemUYAyABKAMSNQoRYXVkaW9fcmVjb2duaXRpb24YBCABKAsyGi5lbnRpdGllcy5BdWRpb1JlY29nbml0aW9uEg8KB2ZzX3VuaXQYBSABKAkSHwoTY2xlYW5fcmVzb3VyY2Vfa2V5cxgGIAMoCUICGAESUwoYY2xlYW5fcmVzb3VyY2Vfa2V5X3NjZW5lGAcgAygLMjEuZW50aXRpZXMuQXVkaW9Db250ZW50LkNsZWFuUmVzb3VyY2VLZXlTY2VuZUVudHJ5GloKGkNsZWFuUmVzb3VyY2VLZXlTY2VuZUVudHJ5EgsKA2tleRgBIAEoCRIrCgV2YWx1ZRgCIAEoDjIcLmVudGl0aWVzLlJlc291cmNlQ2xlYW5TY2VuZToCOAEiyQEKEEF1ZGlvUmVjb2duaXRpb24SGgoScmVjb2duaXRpb25fcmVzdWx0GAEgASgJEhgKEG9yaWdpbl9zZW5kZXJfaWQYAiABKAMSEQoJaXNfaGlkZGVuGAMgASgIEhYKDm9yaWdpbl90b3Nfa2V5GAQgASgJEhEKCWlzX2ZpbmlzaBgFIAEoCBIaChJpc19hdWRpb193aXRoX3RleHQYBiABKAgSJQoJcmljaF90ZXh0GAcgASgLMhIuZW50aXRpZXMuUmljaFRleHQizwUKC1Bvc3RDb250ZW50Eg0KBXRpdGxlGAEgASgJEgwKBHRleHQYAiABKAkSEwoLYXR0YWNobWVudHMYAyADKAkSEwoLaXNfbm90aWZpZWQYBCABKAgSFQoNY29tbWVudF9jb3VudBgFIAEoCRIlCglyaWNoX3RleHQYBiABKAsyEi5lbnRpdGllcy5SaWNoVGV4dBIWCg5pMThuX3RpdGxlX2tleRgHIAEoCRIdChVpc19ncm91cF9hbm5vdW5jZW1lbnQYCCABKAgSJwoKZG9jX2VudGl0eRgJIAEoCzITLmVudGl0aWVzLkRvY0VudGl0eRIsCgxhYmJyZXZpYXRpb24YCiABKAsyFi5lbnRpdGllcy5BYmJyZXZpYXRpb24SKQoEdXJscxgLIAMoCzIbLmVudGl0aWVzLk1lc3NhZ2VVcmxQcmV2aWV3EkcKEnR5cGVkX2VsZW1lbnRfcmVmcxgMIAMoCzIrLmVudGl0aWVzLlBvc3RDb250ZW50LlR5cGVkRWxlbWVudFJlZnNFbnRyeRIYChByaXNrX29iamVjdF9rZXlzGA0gAygJEh8KE2NsZWFuX3Jlc291cmNlX2tleXMYDiADKAlCAhgBElIKGGNsZWFuX3Jlc291cmNlX2tleV9zY2VuZRgPIAMoCzIwLmVudGl0aWVzLlBvc3RDb250ZW50LkNsZWFuUmVzb3VyY2VLZXlTY2VuZUVudHJ5Gk4KFVR5cGVkRWxlbWVudFJlZnNFbnRyeRILCgNrZXkYASABKAkSJAoFdmFsdWUYAiABKAsyFS5lbnRpdGllcy5FbGVtZW50UmVmczoCOAEaWgoaQ2xlYW5SZXNvdXJjZUtleVNjZW5lRW50cnkSCwoDa2V5GAEgASgJEisKBXZhbHVlGAIgASgOMhwuZW50aXRpZXMuUmVzb3VyY2VDbGVhblNjZW5lOgI4ASJ9CgxFbWFpbENvbnRlbnQSDQoFdGl0bGUYASABKAkSDAoEdGV4dBgCIAEoCRIpCgthdHRhY2htZW50cxgDIAMoCzIULmVudGl0aWVzLkF0dGFjaG1lbnQSJQoJcmljaF90ZXh0GAQgASgLMhIuZW50aXRpZXMuUmljaFRleHQimwEKCkF0dGFjaG1lbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSDAoEc2l6ZRgDIAEoAxIMCgRtaW1lGAQgASgJEikKBWV4dHJhGAUgASgLMhouZW50aXRpZXMuQXR0YWNobWVudC5FeHRyYRorCgVFeHRyYRIiCgl0aHVtYm5haWwYASABKAsyDy5lbnRpdGllcy5JbWFnZSL9AQoYQ29tbWVyY2lhbEhvbmdiYW9Db250ZW50EgoKAmlkGAEgAigDEg8KB3N1YmplY3QYAiACKAkSNQoEdHlwZRgDIAIoDjInLmVudGl0aWVzLkNvbW1lcmNpYWxIb25nYmFvQ29udGVudC5UeXBlEhYKB2NsaWNrZWQYBCABKAg6BWZhbHNlEhkKCmlzX2V4cGlyZWQYBSABKAg6BWZhbHNlEhYKB2dyYWJiZWQYBiABKAg6BWZhbHNlEh0KDmdyYWJiZWRfZmluaXNoGAcgASgIOgVmYWxzZSIjCgRUeXBlEgsKB1VOS05PV04QABIOCgpDT01NRVJDSUFMEAEimwMKDkhvbmdiYW9Db250ZW50EgoKAmlkGAEgAigDEg8KB3N1YmplY3QYAiACKAkSKwoEdHlwZRgDIAIoDjIdLmVudGl0aWVzLkhvbmdiYW9Db250ZW50LlR5cGUSFgoHY2xpY2tlZBgEIAEoCDoFZmFsc2USGQoKaXNfZXhwaXJlZBgFIAEoCDoFZmFsc2USFgoHZ3JhYmJlZBgGIAEoCDoFZmFsc2USHQoOZ3JhYmJlZF9maW5pc2gYByABKAg6BWZhbHNlEhYKCGNhbl9ncmFiGAggASgIOgR0cnVlEhgKEHByZXZpZXdfdXNlcl9pZHMYCSADKAMSEQoJdG90YWxfbnVtGAogASgFEiUKBWNvdmVyGBUgASgLMhYuZW50aXRpZXMuSG9uZ2Jhb0NvdmVyImkKBFR5cGUSCwoHVU5LTk9XThAAEgcKA1AyUBABEg0KCUdST1VQX0ZJWBACEhAKDEdST1VQX1JBTkRPTRADEg0KCUVYQ0xVU0lWRRAFEgsKB0IyQ19GSVgQBhIOCgpCMkNfUkFORE9NEAci+QsKFFRvZG9PcGVyYXRpb25Db250ZW50EjsKDm9wZXJhdGlvbl90eXBlGAEgASgOMiMuZW50aXRpZXMuVG9kb09wZXJhdGlvbkNvbnRlbnQuVHlwZRITCgtvcGVyYXRvcl9pZBgCIAEoCRIpCgt0b2RvX2RldGFpbBgDIAEoCzIULmVudGl0aWVzLlRvZG9EZXRhaWwSQQoNdXBkYXRlX2ZpZWxkcxgEIAMoDjIqLmVudGl0aWVzLlRvZG9PcGVyYXRpb25Db250ZW50LlVwZGF0ZUZpZWxkEjwKCm1zZ19zdGF0dXMYBSABKA4yKC5lbnRpdGllcy5Ub2RvT3BlcmF0aW9uQ29udGVudC5Nc2dTdGF0dXMSOAoTdG9kb19jb21tZW50X2RldGFpbBgGIAEoCzIbLmVudGl0aWVzLlRvZG9Db21tZW50RGV0YWlsEi8KDGRhaWx5X3JlbWluZBgHIAEoCzIZLmVudGl0aWVzLlRvZG9EYWlseVJlbWluZBIXCg90YXJnZXRfdXNlcl9pZHMYCCADKAkSQgoNY29tcGxldGVfdHlwZRgJIAEoDjIrLmVudGl0aWVzLlRvZG9PcGVyYXRpb25Db250ZW50LkNvbXBsZXRlVHlwZSLCAgoEVHlwZRILCgdVTktOT1dOEAASCgoGVVBEQVRFEAESCgoGQVNTSUdOEAISDAoIQ09NUExFVEUQAxIKCgZDQU5DRUwQBBIKCgZERUxFVEUQBRIKCgZDUkVBVEUQBhIOCgpJTkNPTVBMRVRFEAcSCQoFU0hBUkUQCBISCg5DUkVBVEVfQ09NTUVOVBAJEhEKDVJFUExZX0NPTU1FTlQQChIQCgxEQUlMWV9SRU1JTkQQCxIKCgZGT0xMT1cQDBIMCghVTkZPTExPVxANEhEKDVJFQUNUX0NPTU1FTlQQDhIVChFDT01QTEVURV9BU1NJR05FRRAPEhEKDUNPTVBMRVRFX1NFTEYQEBIUChBSRVNUT1JFX0FTU0lHTkVFEBESEAoMUkVTVE9SRV9TRUxGEBISEAoMQVNTSUdOX09XTkVSEBMihQUKDENvbXBsZXRlVHlwZRIZChVVTktOT1dOX0NPTVBMRVRFX1RZUEUQABIXChNDT01QTEVURV9XSE9MRV9UT0RPEAESMgouQ09NUExFVEVfV0hPTEVfVE9ET19BRlRFUl9SRU1PVkVfQVNTSUdORUVfU0VMRhACEi4KKkNPTVBMRVRFX1dIT0xFX1RPRE9fQUZURVJfUkVNT1ZFX0FTU0lHTkVFUxADEjYKMkNPTVBMRVRFX1dIT0xFX1RPRE9fQUZURVJfUkVNT1ZFX0FTU0lHTkVFX1lPVVJTRUxGEAQSMAosQ09NUExFVEVfV0hPTEVfVE9ET19BRlRFUl9DT01QTEVURV9BU1NJR05FRVMQBRI4CjRDT01QTEVURV9XSE9MRV9UT0RPX0FGVEVSX0NPTVBMRVRFX0FTU0lHTkVFX1lPVVJTRUxGEAYSFgoSUkVTVE9SRV9XSE9MRV9UT0RPEBUSLgoqUkVTVE9SRV9XSE9MRV9UT0RPX0FGVEVSX0FERF9BU1NJR05FRV9TRUxGEBYSKgomUkVTVE9SRV9XSE9MRV9UT0RPX0FGVEVSX0FERF9BU1NJR05FRVMQFxIzCi9SRVNUT1JFX1dIT0xFX1RPRE9fQUZURVJfQUREX0FTU0lHTkVFU19ZT1VSU0VMRhAYEikKJVJFU1RPUkVfV0hPTEVfVE9ET19BRlRFUl9SRVNUT1JFX1NFTEYQGRItCilSRVNUT1JFX1dIT0xFX1RPRE9fQUZURVJfUkVTVE9SRV9BU1NJR05FRRAaEjYKMlJFU1RPUkVfV0hPTEVfVE9ET19BRlRFUl9SRVNUT1JFX0FTU0lHTkVFX1lPVVJTRUxGEBsiKAoLVXBkYXRlRmllbGQSCwoHU1VNTUFSWRAAEgwKCERVRV9USU1FEAEiJAoJTXNnU3RhdHVzEgoKBkFDVElWRRAAEgsKB0RFTEVURUQQASL/CAoKVG9kb0RldGFpbBIMCgRndWlkGAEgASgJEhEKCWFzc2lnbmVlcxgCIAMoCRIPCgdzdW1tYXJ5GAMgASgJEhAKCGR1ZV90aW1lGAQgASgDEhUKDWR1ZV90aW1lX3pvbmUYBSABKAkSEgoKaXNfYWxsX2RheRgGIAEoCBI3Cg1tc2dfYmVsb25nX3RvGAcgASgOMiAuZW50aXRpZXMuVG9kb0RldGFpbC5Nc2dCZWxvbmdUbxIrCgxyaWNoX3N1bW1hcnkYCCABKAsyFS5lbnRpdGllcy5SaWNoQ29udGVudBIRCglmb2xsb3dlcnMYCSADKAkSEgoKY3JlYXRvcl9pZBgKIAEoCRIcChRjb21wbGV0ZWRfbWlsbGlfdGltZRgLIAEoAxIaChJkZWxldGVkX21pbGxpX3RpbWUYDCABKAMSDgoGc291cmNlGA0gASgFEhIKCmNhbl9mb2xsb3cYDiABKAgSRgoSdXNlcl90b19wZXJtaXNzaW9uGA8gAygLMiouZW50aXRpZXMuVG9kb0RldGFpbC5Vc2VyVG9QZXJtaXNzaW9uRW50cnkSOwoMdXNlcl9kZXRhaWxzGBAgAygLMiUuZW50aXRpZXMuVG9kb0RldGFpbC5Vc2VyRGV0YWlsc0VudHJ5EjEKD2N1c3RvbV9jb21wbGV0ZRgRIAEoCzIYLmVudGl0aWVzLkN1c3RvbUNvbXBsZXRlEg0KBXJydWxlGBIgASgJEi8KCXJlbWluZGVycxgTIAMoCzIcLmVudGl0aWVzLlRvZG9EZXRhaWxSZW1pbmRlchIsCgplbnRpdHlfbnVtGBQgASgLMhgubnVtX2Jhc2ljLkVudGl0eU51bUluZm8SEAoIb3duZXJfaWQYFSABKAkSIgoEbW9kZRgWIAEoDjIULnRvZG9fYmFzaWMuVG9kb01vZGUSGAoQc3RhcnRfbWlsbGlfdGltZRgXIAEoAxIUCgxpc19taWxlc3RvbmUYGCABKAgaVgoKUGVybWlzc2lvbhIZChFjYW5fY29tcGxldGVfc2VsZhgBIAEoCBIZChFjYW5fY29tcGxldGVfdG9kbxgCIAEoCBISCgpjYW5fZm9sbG93GAMgASgIGkIKClVzZXJEZXRhaWwSFAoMaXNfY29tcGxldGVkGAEgASgIEh4KFmFzc2lnbmVlX3NvcnRfcG9zaXRpb24YAiABKAMaWAoVVXNlclRvUGVybWlzc2lvbkVudHJ5EgsKA2tleRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLmVudGl0aWVzLlRvZG9EZXRhaWwuUGVybWlzc2lvbjoCOAEaUwoQVXNlckRldGFpbHNFbnRyeRILCgNrZXkYASABKAkSLgoFdmFsdWUYAiABKAsyHy5lbnRpdGllcy5Ub2RvRGV0YWlsLlVzZXJEZXRhaWw6AjgBIkAKC01zZ0JlbG9uZ1RvEgsKB1VOS05PV04QABIHCgNCb3QQARIICgRDaGF0EAISEQoNQ2hhdEVudGl0eU51bRADIrABChJUb2RvRGV0YWlsUmVtaW5kZXISLwoEdHlwZRgBIAEoDjIhLmVudGl0aWVzLlRvZG9EZXRhaWxSZW1pbmRlci5UeXBlEgwKBHRpbWUYAiABKAMSFQoNbm90X25lZWRfZmlyZRgDIAEoCBISCgppc19hbGxfZGF5GAQgASgIIjAKBFR5cGUSDAoIQUJTT0xVVEUQARIMCghSRUxBVElWRRACEgwKCEZMT0FUSU5HEAMimAIKDkN1c3RvbUNvbXBsZXRlEjAKB2FuZHJvaWQYASABKAsyHy5lbnRpdGllcy5DdXN0b21Db21wbGV0ZS5BY3Rpb24SLAoDaW9zGAIgASgLMh8uZW50aXRpZXMuQ3VzdG9tQ29tcGxldGUuQWN0aW9uEisKAnBjGAMgASgLMh8uZW50aXRpZXMuQ3VzdG9tQ29tcGxldGUuQWN0aW9uGnkKBkFjdGlvbhIMCgRocmVmGAEgASgJEjUKA3RpcBgCIAMoCzIoLmVudGl0aWVzLkN1c3RvbUNvbXBsZXRlLkFjdGlvbi5UaXBFbnRyeRoqCghUaXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIv8CChFUb2RvQ29tbWVudERldGFpbBISCgpjb21tZW50X2lkGAEgASgDEkEKDGNvbW1lbnRfdHlwZRgCIAEoDjIrLmVudGl0aWVzLlRvZG9Db21tZW50RGV0YWlsLlRvZG9Db21tZW50VHlwZRIrCgxyaWNoX2NvbnRlbnQYAyABKAsyFS5lbnRpdGllcy5SaWNoQ29udGVudBIQCghwb3NpdGlvbhgEIAEoBRIxCgthdHRhY2htZW50cxgFIAMoCzIcLmVudGl0aWVzLlRvZG9BdHRhY2htZW50SW5mbxJCChRuZXdseV9hZGRlZF9yZWFjdGlvbhgGIAEoCzIkLmVudGl0aWVzLlRvZG9Db21tZW50RGV0YWlsLlJlYWN0aW9uGikKCFJlYWN0aW9uEg8KB3VzZXJfaWQYASABKAkSDAoEdHlwZRgCIAEoCSIyCg9Ub2RvQ29tbWVudFR5cGUSEAoMVU5LTk9XTl9UWVBFEAASDQoJUklDSF9URVhUEAEiNgoPVG9kb0RhaWx5UmVtaW5kEiMKBXRvZG9zGAEgAygLMhQuZW50aXRpZXMuVG9kb0RldGFpbCKRAQoSVG9kb0F0dGFjaG1lbnRJbmZvEj0KBHR5cGUYASABKA4yLy5lbnRpdGllcy5Ub2RvQXR0YWNobWVudEluZm8uVG9kb0F0dGFjaG1lbnRUeXBlIjwKElRvZG9BdHRhY2htZW50VHlwZRIbChdVTktOT1dOX0FUVEFDSE1FTlRfVFlQRRAAEgkKBUlNQUdFEAEiiwIKC1JpY2hDb250ZW50EiUKCXJpY2hfdGV4dBgBIAEoCzISLmVudGl0aWVzLlJpY2hUZXh0EicKCmRvY19lbnRpdHkYAiABKAsyEy5lbnRpdGllcy5Eb2NFbnRpdHkSUAoXdXJsX3ByZXZpZXdfaGFuZ19wb2ludHMYAyADKAsyLy5lbnRpdGllcy5SaWNoQ29udGVudC5VcmxQcmV2aWV3SGFuZ1BvaW50c0VudHJ5GloKGVVybFByZXZpZXdIYW5nUG9pbnRzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgLMh0uZW50aXRpZXMuVXJsUHJldmlld0hhbmdQb2ludDoCOAEi8gMKFkdlbmVyYWxDYWxlbmRhckNvbnRlbnQSPAoNY2FsZW5kYXJfdHlwZRgBIAEoDjIlLmVudGl0aWVzLkdlbmVyYWxDYWxlbmRhckNvbnRlbnQuVHlwZRIvCgpldmVudF9jYXJkGAIgASgLMhsuZW50aXRpZXMuRXZlbnRDYXJkVGVtcGxhdGUSNAoRcnN2cF9jb21tZW50X2luZm8YAyABKAsyGS5lbnRpdGllcy5SU1ZQQ29tbWVudEluZm8SLgoOcnN2cF9jYXJkX2luZm8YBCABKAsyFi5lbnRpdGllcy5SU1ZQQ2FyZEluZm8SJwofYXBwb2ludG1lbnRfbWVzc2FnZV9ub3RpZnlfZGF0YRgFIAEoDBIsCiRhcHBvaW50bWVudF9tZXNzYWdlX3JvdW5kX3JvYmluX2RhdGEYBiABKAwiqwEKBFR5cGUSCwoHVU5LTk9XThAAEhsKF1RSQU5TRkVSX0NBTEVOREFSX0VWRU5UEAESEAoMUlNWUF9DT01NRU5UEAISEwoPU1dJVENIX0NBTEVOREFSEAMSDQoJUlNWUF9DQVJEEAQSHgoaQVBQT0lOVE1FTlRfTUVTU0FHRV9OT1RJRlkQBRIjCh9BUFBPSU5UTUVOVF9NRVNTQUdFX1JPVU5EX1JPQklOEAYigwQKDFJTVlBDYXJkSW5mbxISCgptZXNzYWdlX2lkGAEgASgDEg8KB2NoYXRfaWQYAiABKAMSNQoQYmFzaWNfZXZlbnRfaW5mbxgDIAEoCzIbLmVudGl0aWVzLkV2ZW50Q2FyZFRlbXBsYXRlEjYKEmF0dGVuZGVlX3JzdnBfaW5mbxgEIAMoCzIaLmVudGl0aWVzLkF0dGVuZGVlUlNWUEluZm8SPwoLY2FyZF9zdGF0dXMYBSABKA4yKi5lbnRpdGllcy5SU1ZQQ2FyZEluZm8uRXZlbnRSU1ZQQ2FyZFN0YXR1cxI2ChBjYXJkX2NoYW5nZV9pbmZvGAYgASgLMhwuZW50aXRpZXMuUlNWUENhcmRDaGFuZ2VJbmZvEhkKEWV2ZW50X2NoYW5nZV90aW1lGAcgASgDEhwKFGlzX2F0dGVuZGVlX292ZXJmbG93GAggASgIEi4KCm5vdGVzX2luZm8YCSABKAsyGi5lbnRpdGllcy5NZWV0aW5nTm90ZXNJbmZvEkAKFG9yZ2FuaXplcl92aXNpYmlsaXR5GAogASgOMiIuZW50aXRpZXMuQ2FsZW5kYXJFdmVudC5WaXNpYmlsaXR5IjsKE0V2ZW50UlNWUENhcmRTdGF0dXMSCgoGTk9STUFMEAASCwoHVVBEQVRFRBABEgsKB0lOVkFMSUQQAiJ9ChJSU1ZQQ2FyZENoYW5nZUluZm8SFwoPaXNfcnJ1bGVfY2hhbmdlGAEgASgIEhYKDmlzX3RpbWVfY2hhbmdlGAIgASgIEhoKEmlzX2xvY2F0aW9uX2NoYW5nZRgDIAEoCBIaChJpc19yZXNvdXJjZV9jaGFuZ2UYBCABKAgihQEKEEF0dGVuZGVlUlNWUEluZm8SEwoLY2FsZW5kYXJfaWQYASABKAMSDwoHdXNlcl9pZBgCIAEoAxI2CgZzdGF0dXMYAyABKA4yJi5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWUuU3RhdHVzEhMKC2lzX29wdGlvbmFsGAQgASgIIsEBChRSU1ZQQ2FyZEF0dGVuZGVlSW5mbxIxCgVldmVudBgBIAEoCzIiLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRVbmlxdWVGaWVsZBISCgptZXNzYWdlX2lkGAIgASgDEg8KB2NoYXRfaWQYAyABKAMSNgoSYXR0ZW5kZWVfcnN2cF9pbmZvGAQgAygLMhouZW50aXRpZXMuQXR0ZW5kZWVSU1ZQSW5mbxIZChFldmVudF9jaGFuZ2VfdGltZRgFIAEoAyJuChBNZWV0aW5nTm90ZXNJbmZvEhEKCWRvY190b2tlbhgBIAEoCRIjCghkb2NfdHlwZRgCIAEoDjIRLmVudGl0aWVzLkRvY1R5cGUSDgoGZG9jVXJsGAMgASgJEhIKCmRvY093bmVySWQYBCABKAMiSAoWTWVldGluZ05vdGVzVXBkYXRlSW5mbxIuCghpbnN0YW5jZRgBIAEoCzIcLmVudGl0aWVzLk5vdGVzSW5zdGFuY2VGaWVsZCJbChJOb3Rlc0luc3RhbmNlRmllbGQSEQoJZXZlbnRfdWlkGAEgASgJEhUKDW9yaWdpbmFsX3RpbWUYAiABKAMSGwoTaW5zdGFuY2Vfc3RhcnRfdGltZRgDIAEoAyJeCg9SU1ZQQ29tbWVudEluZm8SGgoQcmVwbHlfY29tbWVudF9pZBgBIAEoCToAEhEKB2NvbW1lbnQYAiABKAk6ABIcChJpbnZpdGVfb3BlcmF0b3JfaWQYAyABKAk6ACLfAgoZVmlkZW9DaGF0STE4bkRlZmF1bHRUb3BpYxIQCghpMThuX2tleRgBIAIoCRI5CgZwYXJhbXMYAiADKAsyKS5lbnRpdGllcy5WaWRlb0NoYXRJMThuRGVmYXVsdFRvcGljLlBhcmFtGvQBCgVQYXJhbRI8CgR0eXBlGAEgAigOMi4uZW50aXRpZXMuVmlkZW9DaGF0STE4bkRlZmF1bHRUb3BpYy5QYXJhbS5UeXBlEhcKD2RlZmF1bHRfY29udGVudBgCIAEoCRIXCg1maXhlZF9jb250ZW50GAMgASgJSAASEQoHY2hhdF9pZBgEIAEoCUgAEhEKB3VzZXJfaWQYBSABKAlIACJKCgRUeXBlEgsKB1VOS05PV04QABIRCg1GSVhFRF9DT05URU5UEAESCQoFR1JPVVAQAhINCglMQVJLX1VTRVIQAxIICgRST09NEARCCQoHY29udGVudCK0FgoQVmlkZW9DaGF0Q29udGVudBItCgR0eXBlGAEgAigOMh8uZW50aXRpZXMuVmlkZW9DaGF0Q29udGVudC5UeXBlEjwKDG1lZXRpbmdfY2FyZBgCIAEoCzImLmVudGl0aWVzLlZpZGVvQ2hhdENvbnRlbnQuTWVldGluZ0NhcmQSEwoLc2VxdWVuY2VfaWQYAyABKAMayxQKC01lZXRpbmdDYXJkEhIKCm1lZXRpbmdfaWQYASACKAkSPQoGc3RhdHVzGAIgAigOMi0uZW50aXRpZXMuVmlkZW9DaGF0Q29udGVudC5NZWV0aW5nQ2FyZC5TdGF0dXMSFQoNc3RhcnRfdGltZV9tcxgDIAIoAxITCgtlbmRfdGltZV9tcxgEIAEoAxINCgV0b3BpYxgFIAIoCRISCgpzcG9uc29yX2lkGAYgAigJEg8KB2hvc3RfaWQYByABKAkSEwoLbWVldF9udW1iZXIYCCABKAkSTwoMcGFydGljaXBhbnRzGAkgAygLMjkuZW50aXRpZXMuVmlkZW9DaGF0Q29udGVudC5NZWV0aW5nQ2FyZC5NZWV0aW5nUGFydGljaXBhbnQSHQoVbWF4X3BhcnRpY2lwYW50X2NvdW50GAogASgFElQKCWhvc3RfdHlwZRgLIAEoDjI2LmVudGl0aWVzLlZpZGVvQ2hhdENvbnRlbnQuTWVldGluZ0NhcmQuUGFydGljaXBhbnRUeXBlOglMQVJLX1VTRVISQgoJY2FyZF90eXBlGAwgASgOMi8uZW50aXRpZXMuVmlkZW9DaGF0Q29udGVudC5NZWV0aW5nQ2FyZC5DYXJkVHlwZRIUCgxmb3J3YXJkZXJfaWQYDSABKAkSTAoObWVldGluZ19zb3VyY2UYDiABKA4yNC5lbnRpdGllcy5WaWRlb0NoYXRDb250ZW50Lk1lZXRpbmdDYXJkLk1lZXRpbmdTb3VyY2USFAoMY2FsZW5kYXJfdWlkGA8gASgJEhEKCWlzX2xvY2tlZBgQIAEoCBIaChJpc19sb2NrZWRfam9pbmFibGUYESABKAgSEAoIZ3JvdXBfaWQYEiABKAkSPwoSaTE4bl9kZWZhdWx0X3RvcGljGBMgASgLMiMuZW50aXRpZXMuVmlkZW9DaGF0STE4bkRlZmF1bHRUb3BpYxIVCg1pc19vcGVuX2xvYmJ5GBQgASgIEhUKDW93bmVyX3VzZXJfaWQYFSABKAkSSgoKb3duZXJfdHlwZRgWIAEoDjI2LmVudGl0aWVzLlZpZGVvQ2hhdENvbnRlbnQuTWVldGluZ0NhcmQuUGFydGljaXBhbnRUeXBlEh0KFXRvdGFsX3BhcnRpY2lwYW50X251bRgXIAEoAxIeChZhbGxfcGFydGljaXBhbnRfdGVuYW50GBggAygDEhgKEGlzX2Nyb3NzX3dpdGhfa2EYGSABKAgSGAoQbWVldGluZ19zdWJfdHlwZRgeIAEoBRIcChR3ZWJpbmFyX2F0dGVuZGVlX251bRgfIAEoBRq/BgoSTWVldGluZ1BhcnRpY2lwYW50Eg8KB3VzZXJfaWQYASACKAkSFAoMam9pbl90aW1lX21zGAIgASgDElAKBnN0YXR1cxgDIAEoDjJALmVudGl0aWVzLlZpZGVvQ2hhdENvbnRlbnQuTWVldGluZ0NhcmQuTWVldGluZ1BhcnRpY2lwYW50LlN0YXR1cxIRCglkZXZpY2VfaWQYBCABKAkSVAoJdXNlcl90eXBlGAUgASgOMjYuZW50aXRpZXMuVmlkZW9DaGF0Q29udGVudC5NZWV0aW5nQ2FyZC5QYXJ0aWNpcGFudFR5cGU6CUxBUktfVVNFUhIVCg1pc19sYXJrX2d1ZXN0GAYgASgIElkKC2RldmljZV90eXBlGAcgASgOMkQuZW50aXRpZXMuVmlkZW9DaGF0Q29udGVudC5NZWV0aW5nQ2FyZC5NZWV0aW5nUGFydGljaXBhbnQuRGV2aWNlVHlwZRIRCgl0ZW5hbnRfaWQYCCABKAkSVwoKdGVuYW50X3RhZxgJIAEoDjJDLmVudGl0aWVzLlZpZGVvQ2hhdENvbnRlbnQuTWVldGluZ0NhcmQuTWVldGluZ1BhcnRpY2lwYW50LlRlbmFudFRhZxIPCgdiaW5kX2lkGAogASgJElUKCWJpbmRfdHlwZRgLIAEoDjJCLmVudGl0aWVzLlZpZGVvQ2hhdENvbnRlbnQuTWVldGluZ0NhcmQuTWVldGluZ1BhcnRpY2lwYW50LkJpbmRUeXBlEhQKDHVzZWRfY2FsbF9tZRgMIAEoCCJKCgZTdGF0dXMSCwoHVU5LTk9XThAAEgsKB0NBTExJTkcQARIPCgtPTl9USEVfQ0FMTBACEgsKB1JJTkdJTkcQAxIICgRJRExFEAQiNAoJVGVuYW50VGFnEgwKCFNUQU5EQVJEEAASDQoJVU5ERUZJTkVEEAESCgoGU0lNUExFEAIiRwoKRGV2aWNlVHlwZRIXChNVTktOT1dOX0RFVklDRV9UWVBFEAASCwoHREVTS1RPUBABEgoKBk1PQklMRRACEgcKA1dFQhADIiAKCEJpbmRUeXBlEgoKBlVOS09XThAAEggKBExBUksQASI2CgZTdGF0dXMSCwoHVU5LTk9XThAAEgwKCEpPSU5BQkxFEAESCAoERlVMTBACEgcKA0VORBADIrcECg9QYXJ0aWNpcGFudFR5cGUSDwoLVU5LTk9XX1RZUEUQABINCglMQVJLX1VTRVIQARIICgRST09NEAISDAoIRE9DX1VTRVIQAxIMCghORU9fVVNFUhAEEhIKDk5FT19HVUVTVF9VU0VSEAUSDQoJUFNUTl9VU0VSEAYSDAoIU0lQX1VTRVIQBxITCg9SRVNFUlZFRF9VU0VSXzEQCBITCg9SRVNFUlZFRF9VU0VSXzIQCRITCg9SRVNFUlZFRF9VU0VSXzMQChITCg9SRVNFUlZFRF9VU0VSXzQQCxITCg9SRVNFUlZFRF9VU0VSXzUQDBITCg9SRVNFUlZFRF9VU0VSXzYQDRITCg9SRVNFUlZFRF9VU0VSXzcQDhITCg9SRVNFUlZFRF9VU0VSXzgQDxITCg9SRVNFUlZFRF9VU0VSXzkQEBIUChBSRVNFUlZFRF9VU0VSXzEwEBESFAoQUkVTRVJWRURfVVNFUl8xMRASEhQKEFJFU0VSVkVEX1VTRVJfMTIQExIUChBSRVNFUlZFRF9VU0VSXzEzEBQSFAoQUkVTRVJWRURfVVNFUl8xNBAVEhQKEFJFU0VSVkVEX1VTRVJfMTUQFhIUChBSRVNFUlZFRF9VU0VSXzE2EBcSFAoQUkVTRVJWRURfVVNFUl8xNxAYEhQKEFJFU0VSVkVEX1VTRVJfMTgQGRIUChBSRVNFUlZFRF9VU0VSXzE5EBoSFAoQUkVTRVJWRURfVVNFUl8yMBAbIjsKCENhcmRUeXBlEhUKEVVOS05PV05fQ0FSRF9UWVBFEAASCwoHU1BPTlNPUhABEgsKB0ZPUldBUkQQAiJyCg1NZWV0aW5nU291cmNlEhwKGENBUkRfVU5LTk9XTl9TT1VSQ0VfVFlQRRAAEhIKDkNBUkRfRlJPTV9VU0VSEAESFgoSQ0FSRF9GUk9NX0NBTEVOREFSEAISFwoTQ0FSRF9GUk9NX0lOVEVSVklFVxADIlAKBFR5cGUSCwoHVU5LTk9XThAAEhAKDE1FRVRJTkdfQ0FSRBABEhIKDkNIQVRfUk9PTV9DQVJEEAISFQoRU0FNRV9QQUdFX01FRVRJTkcQAyKk0QEKDVN5c3RlbUNvbnRlbnQSHAoQbWVzc2FnZV90ZW1wbGF0ZRgBIAIoCUICGAESOwoIY29udGVudHMYAiADKAsyJS5lbnRpdGllcy5TeXN0ZW1Db250ZW50LkNvbnRlbnRzRW50cnlCAhgBEioKBHR5cGUYAyABKA4yHC5lbnRpdGllcy5TeXN0ZW1Db250ZW50LlR5cGUSEQoFZXZlbnQYBCABKAxCAhgBEkYKDmNvbnRlbnRfdmFsdWVzGAUgAygLMiouZW50aXRpZXMuU3lzdGVtQ29udGVudC5Db250ZW50VmFsdWVzRW50cnlCAhgBEhAKCHR5cGVfbnVtGAYgASgFEk0KEm5ld19jb250ZW50X3ZhbHVlcxgHIAMoCzItLmVudGl0aWVzLlN5c3RlbUNvbnRlbnQuTmV3Q29udGVudFZhbHVlc0VudHJ5QgIYARJJChJzeXNfY29udGVudF92YWx1ZXMYCCADKAsyLS5lbnRpdGllcy5TeXN0ZW1Db250ZW50LlN5c0NvbnRlbnRWYWx1ZXNFbnRyeRI+CgxpdGVtX2FjdGlvbnMYCSADKAsyKC5lbnRpdGllcy5TeXN0ZW1Db250ZW50Lkl0ZW1BY3Rpb25zRW50cnkSDwoHdmVyc2lvbhgKIAEoBRI5CgxlMmVlX2NvbnRlbnQYZCABKAsyIy5lbnRpdGllcy5TeXN0ZW1Db250ZW50LkUyRUVDb250ZW50EkMKCnZjX2NvbnRlbnQYyAEgASgLMi4uZW50aXRpZXMuU3lzdGVtQ29udGVudC5WaWRlb0NvbmZlcmVuY2VDb250ZW50EkAKD2hvbmdiYW9fY29udGVudBisAiABKAsyJi5lbnRpdGllcy5TeXN0ZW1Db250ZW50LkhvbmdiYW9Db250ZW50EjoKCmRvY19lbnRpdHkYkAMgASgLMiEuZW50aXRpZXMuU3lzdGVtQ29udGVudC5Eb2NFbnRpdHlCAhgBEkkKFHN5c3RlbV9leHRyYV9jb250ZW50GPQDIAEoCzIqLmVudGl0aWVzLlN5c3RlbUNvbnRlbnQuU3lzdGVtRXh0cmFDb250ZW50GtgECgxDb250ZW50VmFsdWUSDgoCaWQYASABKAlCAhgBEjoKBHR5cGUYAiABKA4yKC5lbnRpdGllcy5TeXN0ZW1Db250ZW50LkNvbnRlbnRWYWx1ZVR5cGVCAhgBEg8KA2lkcxgDIAMoCUICGAESEAoEdGV4dBgEIAEoCUICGAESOAoFaXRlbXMYBSADKAsyKS5lbnRpdGllcy5TeXN0ZW1Db250ZW50LkNvbnRlbnRWYWx1ZS5JdGVtEhAKBGxpbmsYBiABKAlCAhgBEjEKBmFjdGlvbhgHIAEoCzIdLmVudGl0aWVzLlN5c3RlbU1lc3NhZ2VBY3Rpb25CAhgBEhgKDGlzX2NsaWNrYWJsZRgIIAEoCEICGAEavwIKBEl0ZW0SNgoEdHlwZRgBIAEoDjIoLmVudGl0aWVzLlN5c3RlbUNvbnRlbnQuQ29udGVudFZhbHVlVHlwZRIKCgJpZBgCIAEoCRIMCgR0ZXh0GAMgASgJEgwKBGxpbmsYBCABKAkSSgoJaTE4bl90ZXh0GAUgAygLMjcuZW50aXRpZXMuU3lzdGVtQ29udGVudC5Db250ZW50VmFsdWUuSXRlbS5JMThuVGV4dEVudHJ5EjEKBmFjdGlvbhgGIAEoCzIdLmVudGl0aWVzLlN5c3RlbU1lc3NhZ2VBY3Rpb25CAhgBEhEKCWFjdGlvbl9pZBgHIAEoBRIUCgxpc19jbGlja2FibGUYCCABKAgaLwoNSTE4blRleHRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGi8KDUNvbnRlbnRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpaChJDb250ZW50VmFsdWVzRW50cnkSCwoDa2V5GAEgASgJEjMKBXZhbHVlGAIgASgLMiQuZW50aXRpZXMuU3lzdGVtQ29udGVudC5Db250ZW50VmFsdWU6AjgBGl0KFU5ld0NvbnRlbnRWYWx1ZXNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5lbnRpdGllcy5TeXN0ZW1Db250ZW50LkNvbnRlbnRWYWx1ZToCOAEaXQoVU3lzQ29udGVudFZhbHVlc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLmVudGl0aWVzLlN5c3RlbUNvbnRlbnQuQ29udGVudFZhbHVlOgI4ARpVChBJdGVtQWN0aW9uc0VudHJ5EgsKA2tleRgBIAEoBRIwCgV2YWx1ZRgCIAEoCzIhLmVudGl0aWVzLlN5c3RlbU1lc3NhZ2VJdGVtQWN0aW9uOgI4ARpBCgtFMkVFQ29udGVudBIPCgdmcm9tX2lkGAEgASgJEg0KBXRvX2lkGAIgASgJEhIKCnRyaWdnZXJfaWQYAyABKAka3wEKFlZpZGVvQ29uZmVyZW5jZUNvbnRlbnQSDwoHZnJvbV9pZBgBIAEoCRINCgV0b19pZBgCIAEoCRIVCg1kdXJhdGlvbl90aW1lGAMgASgJEhIKCm1lZXRpbmdfaWQYBCABKAkSEAoIcGFzc2NvZGUYBSABKAkSFwoPZmVlZGJhY2tfc3RhdHVzGAYgASgJEhwKFGZyb21fZmVlZGJhY2tfc3RhdHVzGAcgASgJEhoKEnRvX2ZlZWRiYWNrX3N0YXR1cxgIIAEoCRIVCg1pc192b2ljZV9jYWxsGAkgASgIGrIBCg5Ib25nYmFvQ29udGVudBJHCglpMThuX25hbWUYASADKAsyNC5lbnRpdGllcy5TeXN0ZW1Db250ZW50LkhvbmdiYW9Db250ZW50LkkxOG5OYW1lRW50cnkSEgoKaG9uZ2Jhb19pZBgCIAEoCRISCgptZXNzYWdlX2lkGAMgASgJGi8KDUkxOG5OYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARrMAgoJRG9jRW50aXR5ElcKEmVsZW1lbnRfZW50aXR5X3JlZhgBIAMoCzI3LmVudGl0aWVzLlN5c3RlbUNvbnRlbnQuRG9jRW50aXR5LkVsZW1lbnRFbnRpdHlSZWZFbnRyeUICGAEafAoNRWxlbWVudEVudGl0eRIRCgV0aXRsZRgBIAEoCUICGAESJwoIZG9jX3R5cGUYAiABKA4yES5lbnRpdGllcy5Eb2NUeXBlQgIYARIYCgxzdHJfZG9jX3R5cGUYAyABKAlCAhgBEhUKCWRvY190b2tlbhgEIAEoCUICGAEaaAoVRWxlbWVudEVudGl0eVJlZkVudHJ5EgsKA2tleRgBIAEoCRI+CgV2YWx1ZRgCIAEoCzIvLmVudGl0aWVzLlN5c3RlbUNvbnRlbnQuRG9jRW50aXR5LkVsZW1lbnRFbnRpdHk6AjgBGtEBChJTeXN0ZW1FeHRyYUNvbnRlbnQSMwoNZ3VpZGVfY29udGVudBgBIAEoCzIcLmVudGl0aWVzLlN5c3RlbUd1aWRlQ29udGVudBJbCiZuZXdfdG9waWNfc3lzdGVtX21lc3NhZ2VfZXh0cmFfY29udGVudBgCIAEoCzIrLmVudGl0aWVzLk5ld1RvcGljU3lzdGVtTWVzc2FnZUV4dHJhQ29udGVudBIUCgxjbGVhcl9zY3JlZW4YAyABKAgSEwoLZnJvbV9hcHBfaWQYBCABKAMimrkBCgRUeXBlEgsKB1VOS05PV04QABIaChZVU0VSX01PRElGWV9HUk9VUF9OQU1FEAESHAoYVVNFUl9NT0RJRllfR1JPVVBfQVZBVEFSEAISIQodVVNFUl9NT0RJRllfR1JPVVBfREVTQ1JJUFRJT04QAxIeChpVU0VSX01PRElGWV9HUk9VUF9TRVRUSU5HUxAEEh8KG1VTRVJfU1RBUlRfR1JPVVBfQU5EX0lOVklURRAFEhcKE1NZU1RFTV9XRUxDT01FX1VTRVIQBhIbChdVU0VSX0lOVklURV9PVEhFUlNfSk9JThAHEhMKD1VTRVJfUVVJVF9HUk9VUBAIEhYKElVTRVJfUkVNT1ZFX09USEVSUxAJEiEKHVVTRVJfUkVNT1ZFX0dST1VQX0RFU0NSSVBUSU9OEAoSHwobVVNFUl9DSEVDS19PVEhFUlNfVEVMRVBIT05FEAsSGAoUREVSSVZFX0ZST01fUDJQX0NIQVQQDBIXChNVU0VSX0pPSU5fVklBX1NIQVJFEA0SHQoZVFJBTlNGRVJfR1JPVVBfQ0hBVF9PV05FUhAOEiYKIlRSQU5TRkVSX0dST1VQX0NIQVRfT1dORVJfQU5EX1FVSVQQDxIVChFXSVBFX0FOTk9VTkNFTUVOVBAQEhUKEUFERF9FTUFJTF9NRU1CRVJTEBESGAoUUkVNT1ZFX0VNQUlMX01FTUJFUlMQEhIYChRNT0RJRllfRU1BSUxfTUVNQkVSUxATEh0KGVVTRVJfTU9ESUZZX0VNQUlMX1NVQkpFQ1QQFBIVChFVU0VSX1NZTkNfTUVTU0FHRRAVEhwKGFVTRVJfTU9ESUZZX1RIUkVBRF9UT1BJQxAWEicKI1VTRVJfSU5WSVRFX09USEVSU19KT0lOX0NSWVBUT19DSEFUEBcSJgoiVVNFUl9TVEFSVF9DUllQVE9fR1JPVVBfQU5EX0lOVklURRAYEicKI1VTRVJfQ0FMTF9FMkVFX1ZPSUNFX1dIRU5fQ0FOQ0VMTEVEEBkSJAogVVNFUl9DQUxMX0UyRUVfVk9JQ0VfV0hFTl9NSVNTRUQQGhIhCh1VU0VSX0NBTExfRTJFRV9WT0lDRV9EVVJBVElPThAbEhcKE1ZDX0NBTExfSE9TVF9DQU5DRUwQHBIbChdWQ19DQUxMX1BBUlRJX05PX0FOU1dFUhAdEhgKFFZDX0NBTExfUEFSVElfQ0FOQ0VMEB4SFQoRVkNfQ0FMTF9IT1NUX0JVU1kQHxIWChJWQ19DQUxMX1BBUlRJX0JVU1kQIBIZChVWQ19DQUxMX0ZJTklTSF9OT1RJQ0UQIRIUChBWQ19DQUxMX0RVUkFUSU9OECISJwojVVNFUl9TVEFSVF9NRUVUSU5HX0dST1VQX0FORF9JTlZJVEUQIxIjCh9VU0VSX0lOVklURV9PVEhFUlNfSk9JTl9NRUVUSU5HECQSGgoWVVNFUl9RVUlUX01FRVRJTkdfQ0hBVBAlEh8KG1VTRVJfRElTTUlTU0VEX01FRVRJTkdfQ0hBVBAmEhQKEFVTRVJfU1RBUlRfR1JPVVAQJxIjCh9VU0VSX1JFTU9WRV9PVEhFUlNfRlJPTV9NRUVUSU5HECgSGQoVVVNFUl9BRERfTUVFVElOR19DSEFUECkSGQoVSk9JTl9ERVBBUlRNRU5UX0dST1VQECoSFAoQQlVJTERfRlJJRU5EU0hJUBArEhYKEk5PTl9GUklFTkRTX05PVElDRRAsEhYKEkRFQ0xJTkVfSU5WSVRBVElPThAtEhsKF0RFQ0xJTkVfU1BFQ19JTlZJVEFUSU9OEC4SGQoVVVNFUl9KT0lOX1ZJQV9RUl9DT0RFEC8SGAoUVkNfQ0FMTF9DT05ORUNUX0ZBSUwQMBIWChJWQ19DQUxMX0RJU0NPTk5FQ1QQMRIcChhWQ19DQUxMX0hPU1RfTE9XX1ZFUlNJT04QMhIdChlWQ19DQUxMX1BBUlRJX0xPV19WRVJTSU9OEDMSJQohVVNFUl9DQUxMX0UyRUVfVk9JQ0VfV0hFTl9SRUZVU0VEEDQSJAogVVNFUl9DQUxMX0UyRUVfVk9JQ0VfV0hFTl9PQ0NVUFkQNRIWChJHUkFCX09USEVSX0hPTkdCQU8QNhIZChVPVEhFUl9HUkFCX01ZX0hPTkdCQU8QNxIbChdMQVNUX0hPTkdCQU9fSVNfR1JBQkJFRBA4Eh8KG1NFTkRfSE9OR0JBT19NRVNTQUdFX0ZBSUxFRBA5EhgKFFVTRVJfU1lOQ19NRVNTQUdFX1YyEDoSHQoZVVNFUl9TSEFSRV9ET0NfUEVSTUlTU0lPThA7Eh4KGlVTRVJfQ0hBTkdFX0RPQ19QRVJNSVNTSU9OEDwSGQoVVVNFUl9TSEFSRV9ET0NfRk9MREVSED0SHQoZVVNFUl9PUEVOX09OTFlfQURNSU5fUE9TVBA+Eh4KGlVTRVJfU0VQRUNJRllfTUVNQkVSU19QT1NUED8SGQoVVVNFUl9MT1dfVkVSU0lPTl9ISU5UEEASGwoXVVNFUl9USFJFQURfQ0xFQVJfVElUTEUQQRIZChVVU0VSX09QRU5fQU5ZT05FX1BPU1QQQhIlCiFDUllQVE9fTUVTU0FHRV9OT1RJQ0VfTk9fVFJBTlNNSVQQQxIkCiBDUllQVE9fTUVTU0FHRV9OT1RJQ0VfU0VWRU5fREFZUxBEEiwKKENSWVBUT19NRVNTQUdFX05PVElDRV9CVVJOX0FGVEVSX1JFQURJTkcQRRIlCiFVU0VSX1NFVF9DUllQVE9fTUVTU0FHRV9CVVJOX0xJRkUQRhInCiNVU0VSX1RPT0tfU0NSRUVOU0hPVF9JTl9DUllQVE9fQ0hBVBBHEhsKF0NSWVBUT19MT1dfVkVSU0lPTl9ISU5UEEgSIQodSU5WSVRFX0NIQVRfTUVNQkVSXzJfT1VUX0NIQVQQSRIrCidDUkVBVEVfQ0hBVF9BTkRfSU5WSVRFX0ZST01fQ0hBVF9NRU1CRVIQShIbChdBVVRPX1RSQU5TTEFURV9HVUlEQU5DRRBLEhcKE1dJVEhEUkFXX0FEREVEX1VTRVIQTBIeChpTQUlQQU5fUkVNSU5EX09OQ0FMTF9SRVBMWRBNEh0KGVNBSVBBTl9SRU1JTkRfT05DQUxMX0RPTkUQThIiCh5TQUlQQU5fUkVNSU5EX09OQ0FMTF9BVVRPX0RPTkUQTxIVChFTQUlQQU5fQUREX09OQ0FMTBBQEhsKF1VTRVJfU1RBUlRfQ1JZUFRPX0dST1VQEFESIgoeVVNFUl9JTlZJVEVfT1RIRVJTX0pPSU5fT05DQUxMEFISFgoSVkNfTUVFVElOR19TVEFSVEVEEFMSJAogVVNFUl9PUEVOX09OTFlfQURNSU5fUE9TVF9USFJFQUQQVBIkCiBVU0VSX1NQRUNJRllfTUVNQkVSU19QT1NUX1RIUkVBRBBVEiAKHFVTRVJfT1BFTl9BTllPTkVfUE9TVF9USFJFQUQQVhIiCh5WQ19NRUVUSU5HX0VOREVEX09WRVJfT05FX0hPVVIQVxIWChJJTlZJVEVfQVRfQ0hBVFRFUlMQWBIiCh5WQ19NRUVUSU5HX0VOREVEX0xFU1NfT05FX0hPVVIQWRIhCh1WQ19NRUVUSU5HX0VOREVEX0xFU1NfT05FX01JThBaEioKJlZDX0RFRkFVTFRfTUVFVElOR19FTkRFRF9PVkVSX09ORV9IT1VSEFsSKgomVkNfREVGQVVMVF9NRUVUSU5HX0VOREVEX0xFU1NfT05FX0hPVVIQXBIpCiVWQ19ERUZBVUxUX01FRVRJTkdfRU5ERURfTEVTU19PTkVfTUlOEF0SGQoVVkNfVklERU9fQ0hBVF9TVEFSVEVEEF4SHwobVkNfQ0FMTF9FTkRFRF9PVkVSX09ORV9IT1VSEF8SHwobVkNfQ0FMTF9FTkRFRF9MRVNTX09ORV9IT1VSEGASHgoaVkNfQ0FMTF9FTkRFRF9MRVNTX09ORV9NSU4QYRIsCihWQ19DQUxMX0RJU0NPTk5FQ1RFRF9FTkRFRF9PVkVSX09ORV9IT1VSEGISLAooVkNfQ0FMTF9ESVNDT05ORUNURURfRU5ERURfTEVTU19PTkVfSE9VUhBjEisKJ1ZDX0NBTExfRElTQ09OTkVDVEVEX0VOREVEX0xFU1NfT05FX01JThBkEiEKHVZDX0NBTExfSU5URVJWSUVXRUVfTk9fQU5TV0VSEGUSHgoaVkNfQ0FMTF9JTlRFUlZJRVdFRV9SRUZVU0UQZhIeChpWQ19DQUxMX0lOVEVSVklFV0VSX0NBTkNFTBBnEhwKGFZDX0NBTExfSU5URVJWSUVXRUVfQlVTWRBoEhwKGFZPSVBfRU5ERURfT1ZFUl9PTkVfSE9VUhBpEhwKGFZPSVBfRU5ERURfTEVTU19PTkVfSE9VUhBqEhsKF1ZPSVBfRU5ERURfTEVTU19PTkVfTUlOEGsSKQolVk9JUF9ESVNDT05ORUNURURfRU5ERURfT1ZFUl9PTkVfSE9VUhBsEikKJVZPSVBfRElTQ09OTkVDVEVEX0VOREVEX0xFU1NfT05FX0hPVVIQbRIoCiRWT0lQX0RJU0NPTk5FQ1RFRF9FTkRFRF9MRVNTX09ORV9NSU4QbhIeChpWT0lQX0lOVEVSVklFV0VFX05PX0FOU1dFUhBvEhsKF1ZPSVBfSU5URVJWSUVXRUVfUkVGVVNFEHASGwoXVk9JUF9JTlRFUlZJRVdFUl9DQU5DRUwQcRIZChVWT0lQX0lOVEVSVklFV0VFX0JVU1kQchIeChpTQUlQQU5fU0VMRUNUX0NBUkRfQ09OVEVOVBBzEhgKFFNBSVBBTl9VU0VSX1FVRVVFSU5HEHQSIAocU0FJUEFOX05PVElGWV9BR0VOVF9RVUVVRUlORxB1EhsKF1NBSVBBTl9BR0VOVF9FTlRFUl9DSEFUEHYSFQoRU0FJUEFOX1JFU0VSVkVEXzQQdxIVChFTQUlQQU5fUkVTRVJWRURfNRB4EhkKFUNBTkNFTF9FTUVSR0VOQ1lfQ0FMTBB5EhkKFUhBTkdVUF9FTUVSR0VOQ1lfQ0FMTBB6EhgKFFNUQVJUX0VNRVJHRU5DWV9DQUxMEHsSHAoYTUVFVElOR19UUkFOU0ZFUl9UT19DSEFUEHwSKQolTUVFVElOR19UUkFOU0ZFUl9UT19DSEFUX1dJVEhfRE9DX1VSTBB9EjEKLUVYVEVSTkFMX0RBVEFfTUlHUkFUSU9OX0xBUktfTUVTU0FHRV9OT1RJRllfMRB+EjEKLUVYVEVSTkFMX0RBVEFfTUlHUkFUSU9OX0xBUktfTUVTU0FHRV9OT1RJRllfMhB/EjIKLUVYVEVSTkFMX0RBVEFfTUlHUkFUSU9OX0xBUktfTUVTU0FHRV9OT1RJRllfMxCAARIyCi1FWFRFUk5BTF9EQVRBX01JR1JBVElPTl9MQVJLX01FU1NBR0VfTk9USUZZXzQQgQESMgotRVhURVJOQUxfREFUQV9NSUdSQVRJT05fTEFSS19NRVNTQUdFX05PVElGWV81EIIBEiMKHlZDX0NBTExfSU5URVJWSUVXRUVfTk9UX09OTElORRCDARIgChtWT0lQX0lOVEVSVklFV0VFX05PVF9PTkxJTkUQhAESIAobRk9MREVSX1JPTEVfQUREX0ZPUl9JTlZJVEVFEIUBEhgKE0ZPTERFUl9PQkpfTU9WRV9PVVQQhgESFgoRRk9MREVSX09CSl9SRU1PVkUQhwESKAojRklMRV9PV05FUl9SRU1PVkVfRk9MREVSX1BFUk1JU1NJT04QiAESIAobTUVTU0FHRV9QQVlNRU5UX0ZSQVVEX0FMRVJUEIkBEh0KGFVTRVJfSk9JTl9DSEFUX0FVVE9fTVVURRCKARIdChhFTUVSR0VOQ1lfQ0FMTF9OT1RBTlNXRVIQiwESOQo0SU5WSVRFX0NIQVRURVJTX1RPX0NIQVRfTk9fUEVSTUlTU0lPTl9MRVNTX1RIUkVTSE9MRBCMARI5CjRJTlZJVEVfQ0hBVFRFUlNfVE9fQ0hBVF9OT19QRVJNSVNTSU9OX09WRVJfVEhSRVNIT0xEEI0BEiQKH1VTRVJTX1VOQUJMRV9UT19VU0VfQ1JZUFRPX0NIQVQQjgESFAoPQ0hBVF9ST09NX1NUQVJUEI8BEiYKIVVTRVJfU1RBUlRfVE9QSUNfR1JPVVBfQU5EX0lOVklURRCQARIhChxVU0VSX01PRElGWV9UT1BJQ19HUk9VUF9OQU1FEJEBEiMKHlVTRVJfTU9ESUZZX1RPUElDX0dST1VQX0FWQVRBUhCSARIbChZVU0VSX1NUQVJUX1RPUElDX0dST1VQEJMBEhwKF1VTRVJfVFVSTl9PTl9HUk9VUF9NQUlMEJQBEh0KGFVTRVJfVFVSTl9PRkZfR1JPVVBfTUFJTBCVARIsCidVU0VSX0NIQU5HRV9HUk9VUF9NQUlMX1BFUk1JU1NJT05fT1dORVIQlgESLgopVVNFUl9DSEFOR0VfR1JPVVBfTUFJTF9QRVJNSVNTSU9OX01FTUJFUlMQlwESLQooVVNFUl9DSEFOR0VfR1JPVVBfTUFJTF9QRVJNSVNTSU9OX1RFTkFOVBCYARIvCipVU0VSX0NIQU5HRV9HUk9VUF9NQUlMX1BFUk1JU1NJT05fRVZFUllPTkUQmQESHQoYVVNFUl9KT0lOX1ZJQV9HUk9VUF9MSU5LEJoBEhIKDUNIQVRfUk9PTV9FTkQQmwESFwoSQ0hBVF9ST09NX1NUQVJUX1YyEJwBEhwKF1NZU1RFTV9FUEhFTUVSQUxfTk9USUZZEJ0BEhoKFUJVSUxEX09ORVdBWV9SRUxBVElPThCeARIbChZJTlZJVEVfRlJJRU5EU19TVUNDRVNTEJ8BEhYKEUNSRUFURV9QMlBfU09VUkNFEKABEisKJlNFTkRfTUVTU0FHRV9DT0xMQUJPUkFUSU9OX0FVVEhfRkFJTEVEEKEBEjEKLE5PVF9DT0xMQUJPUkFUSU9OX0FVVEhfU0VORF9NU0dfTElNSVRfTk9USUZZEKIBEjAKK05PVF9DT0xMQUJPUkFUSU9OX0FVVEhfU0VORF9NU0dfUkVBQ0hfTElNSVQQowESOwo2TEFSS19TRVJWRVJfU1lTVEVNQ09OVEVOVF9QRVJNSVNTSU9OUkVRVUVTVEFQUFJPVkVEVElQEKQBEjsKNkxBUktfU0VSVkVSX1NZU1RFTUNPTlRFTlRfUEVSTUlTU0lPTlJFUVVFU1RSRUpFQ1RFRFRJUBClARIcChdTRU5EX01FU1NBR0VfQkVfQkxPQ0tFRBCmARIcChdVU0VSX01PRElGWV9HUk9VUF9PV05FUhCnARIZChRURU1QTEFURV9HUk9VUF9TSEFSRRCoARIZChRVU0VSX0lOVklURV9CT1RfSk9JThCpARIdChhET0NfVEVNUExBVEVfR1JPVVBfU0hBUkUQqgESHwoaU0hFRVRfVEVNUExBVEVfR1JPVVBfU0hBUkUQqwESIwoeTUlORF9OT1RFX1RFTVBMQVRFX0dST1VQX1NIQVJFEKwBEi0KKFVTRVJTX0hBVkVfTk9fREVWSUNFU19UT19VU0VfQ1JZUFRPX0NIQVQQrQESFQoQQmxvY2tlZFRpcEluQ2hhdBCuARIgChtDYW50Q2hhdFVzZXJQcml2YWN5U2V0dGluZ3MQrwESIAobQ2FudENoYXRZb3VyUHJpdmFjeVNldHRpbmdzELABEioKJVJFQ0VJVkVEX0NPTlRBQ1RfUkVRVUVTVF9TRUNVUklUWV9USVAQsQESJwoiTk9UX0NPTlRBQ1RfTUVTU0FHRV9MSU1JVF9SRUNFSVZFUhCyARIxCixMYXJrX05ld0NvbnRhY3RzX0NhbnRBZGRUb0NvbnRhY3RzQmxvY2tlZFRpcBCzARI3CjJMYXJrX05ld0NvbnRhY3RzX0NhbnRBZGRUb0NvbnRhY3RzQmxvY2tlZE90aGVyc1RpcBC0ARIyCi1MYXJrX05ld0NvbnRhY3RzX0NvbnRhY3RSZXF1ZXN0U2VudFBsZWFzZVdhaXQQtQESIQocTEFSS19ORVdHVUlERV9TRU5EX1RPX01ZU0VMRhC3ARIsCidHUk9VUF9NRU5USU9OX0FMTF9QRVJNSVNTSU9OX1NVR0dFU1RJT04QtgESLAonQ0hBVF9XSVRIX05PX0NPTlRBQ1RTX1JFQUNIX0RBSUxZX0xJTUlUELgBEi4KKUNSRUFURV9DSVJDTEVfQU5EX0lOVklURV9PVEhFUlNfRlJPTV9DSEFUELkBEiMKHk1FTlRJT05FRF9QRVJTT05fTk9UX0lOX0NJUkNMRRC6ARIrCiZJTlZJVEVfTUVNQkVSU19UT19KT0lOX0VYVEVSTkFMX0NJUkNMRRC7ARIyCi1DSVJDTEVfQ0FOVF9BRERfTUVNQkVSU19EVUVfVE9fQURNSU5fU0VUVElOR1MQvAESNwoyQ0lSQ0xFX0NBTlRfQUREX01BTllfTUVNQkVSU19EVUVfVE9fQURNSU5fU0VUVElOR1MQvQESJwoiSk9JTl9DSVJDTEVfVklBX0hFTFBfREVTS19NU0dfQ0FSRBC+ARIfChpDSVJDTEVfV0VMQ09NRV9ORVdfTUVNQkVSUxC/ARIaChVUUkFOU0ZFUl9DSVJDTEVfT1dORVIQwAESJAofVFJBTlNGRVJfQ0lSQ0xFX09XTkVSX0FORF9MRUFWRRDBARImCiFDSVJDTEVfVVNFUl9DSEFOR0VfRE9DX1BFUk1JU1NJT04QwgESIAobVVNFUl9JTlZJVEVfQk9UX0pPSU5fQ0lSQ0xFEMMBEiMKHlVTRVJfSU5WSVRFX09USEVSU19KT0lOX0NJUkNMRRDEARIrCiZVU0VSX0lOVklURV9PVEhFUlNfSk9JTl9DSVJDTEVfQllfTElOSxDFARIvCipDSVJDTEVfVE9PX01BTllfTUVNQkVSU19OT1RJRklDQVRJT05fTVVURUQQxgESLgopVVNFUl9JTlZJVEVfT1RIRVJTX0pPSU5fQ0lSQ0xFX0JZX1FSX0NPREUQxwESNgoxVVNFUl9JTlZJVEVfT1RIRVJTX0pPSU5fQ0lSQ0xFX0JZX0lOVklUQVRJT05fQ0FSRBDIARIeChlVU0VSX01PRElGWV9DSVJDTEVfQVZBVEFSEMkBEiMKHlVTRVJfTU9ESUZZX0NJUkNMRV9ERVNDUklQVElPThDKARIcChdVU0VSX01PRElGWV9DSVJDTEVfTkFNRRDLARIdChhVU0VSX01PRElGWV9DSVJDTEVfT1dORVIQzAESIAobVVNFUl9NT0RJRllfQ0lSQ0xFX1NFVFRJTkdTEM0BEigKI1VTRVJfU0VUX09OTFlfQ0lSQ0xFX09XTkVSX0NBTl9QT1NUEM4BEjUKMFVTRVJfU0VUX09OTFlfQ0lSQ0xFX09XTkVSX0NBTl9DUkVBVEVfTkVXX1RPUElDUxDPARIWChFVU0VSX0xFQVZFX0NJUkNMRRDQARIjCh5VU0VSX1JFTU9WRV9DSVJDTEVfREVTQ1JJUFRJT04Q0QESHwoaVVNFUl9SRU1PVkVfQ0lSQ0xFX01FTUJFUlMQ0gESFwoSVVNFUl9DUkVBVEVfQ0lSQ0xFENMBEiIKHVVTRVJfQ1JFQVRFX0NJUkNMRV9BTkRfSU5WSVRFENQBEiAKG1VTRVJfU1lOQ19NRVNTQUdFX1RPX0NJUkNMRRDVARIjCh5VU0VSX0NMRUFSX0NJUkNMRV9BTk5PVU5DRU1FTlQQ1gESJAofVVNFUl9XSVRIRFJBV19DSVJDTEVfSU5WSVRBVElPThDXARIYChNDSVJDTEVfQU5PTllNT1VTX09OENgBEhkKFENJUkNMRV9BTk9OWU1PVVNfT0ZGENkBEisKJkNSRUFURV9DUk9TU19XSVRIX0tBX0NIQVRfTk9USUZJQ0FUSU9OENoBEjIKLUxhcmtfUHJpdmFjeVNldHRpbmdzX0VuYWJsZVN1Y2Nlc3NmdWxseV9Ub2FzdBDbARIhChxDUF9WaWV3RGlmZmVyZW5jZV9GZWlzaHVMaW5rENwBEh8KGkNQX1ZpZXdEaWZmZXJlbmNlX0xhcmtMaW5rEN0BEiUKIExhcmtfSGVscERlc2tfQm90VHJhbnNmZXJyZWROb3RlEN4BEjIKLU5FRURfVVBEQVRFX1ZFUlNJT05fVE9fU0hPV19FWENMVVNJVkVfSE9OR0JBTxDfARIoCiNTQUlQQU5fRkFRX1VOUkVTT0xWRURfQ09OVEFDVF9BR0VOVBDgARIxCixMYXJrX0lNX0NyZWF0ZUdyb3VwX1VzZXJBbmRHcm91cF9Pd25lckludml0ZRDhARIyCi1MYXJrX0lNX0NyZWF0ZUdyb3VwX1VzZXJBbmRHcm91cF9NZW1iZXJJbnZpdGUQ4gESNgoxTGFya19JTV9DcmVhdGVHcm91cF9Vc2VyQW5kRGVwYXJ0bWVudF9Pd25lckludml0ZRDjARI4CjNMYXJrX0lNX0NyZWF0ZUdyb3VwX1VzZXJBbmREZXBhcnRtZW50X01lbWJlckluaXZpdGUQ5AESNwoyTGFya19JTV9DcmVhdGVHcm91cF9Hcm91cEFuZERlcGFydG1lbnRfT3duZXJJbnZpdGUQ5QESOAozTGFya19JTV9DcmVhdGVHcm91cF9Hcm91cEFuZERlcGFydG1lbnRfTWVtYmVySW52aXRlEOYBEj4KOUxhcmtfSU1fQ3JlYXRlR3JvdXBfVXNlckFuZEdyb3VwQW5kRGVwYXJ0bWVudF9Pd25lckludml0ZRDnARI/CjpMYXJrX0lNX0NyZWF0ZUdyb3VwX1VzZXJBbmRHcm91cEFuZERlcGFydG1lbnRfTWVtYmVySW52aXRlEOgBEjsKNkxhcmtfSU1fRW50ZXJHcm91cF9Vc2VyQW5kR3JvdXBfQ2hhdEhpc3RvcnlZZXNfSW52aXRlchDpARI6CjVMYXJrX0lNX0VudGVyR3JvdXBfVXNlckFuZEdyb3VwX0NoYXRIaXN0b3J5Tm9fSW52aXRlchDqARI7CjZMYXJrX0lNX0VudGVyR3JvdXBfVXNlckFuZEdyb3VwX0NoYXRIaXN0b3J5WWVzX0ludml0ZWUQ6wESOgo1TGFya19JTV9FbnRlckdyb3VwX1VzZXJBbmRHcm91cF9DaGF0SGlzdG9yeU5vX0ludml0ZWUQ7AESQAo7TGFya19JTV9FbnRlckdyb3VwX1VzZXJBbmRHcm91cF9DaGF0SGlzdG9yeVllc19PdGhlck1lbWJlcnMQ7QESPwo6TGFya19JTV9FbnRlckdyb3VwX1VzZXJBbmRHcm91cF9DaGF0SGlzdG9yeU5vX090aGVyTWVtYmVycxDuARJACjtMYXJrX0lNX0VudGVyR3JvdXBfVXNlckFuZERlcGFydG1lbnRfQ2hhdEhpc3RvcnlZZXNfSW52aXRlchDvARI/CjpMYXJrX0lNX0VudGVyR3JvdXBfVXNlckFuZERlcGFydG1lbnRfQ2hhdEhpc3RvcnlOb19JbnZpdGVyEPABEkAKO0xhcmtfSU1fRW50ZXJHcm91cF9Vc2VyQW5kRGVwYXJ0bWVudF9DaGF0SGlzdG9yeVllc19JbnZpdGVlEPEBEj8KOkxhcmtfSU1fRW50ZXJHcm91cF9Vc2VyQW5kRGVwYXJ0bWVudF9DaGF0SGlzdG9yeU5vX0ludml0ZWUQ8gESRQpATGFya19JTV9FbnRlckdyb3VwX1VzZXJBbmREZXBhcnRtZW50X0NoYXRIaXN0b3J5WWVzX090aGVyTWVtYmVycxDzARJECj9MYXJrX0lNX0VudGVyR3JvdXBfVXNlckFuZERlcGFydG1lbnRfQ2hhdEhpc3RvcnlOb19PdGhlck1lbWJlcnMQ9AESQQo8TGFya19JTV9FbnRlckdyb3VwX0dyb3VwQW5kRGVwYXJ0bWVudF9DaGF0SGlzdG9yeVllc19JbnZpdGVyEPUBEkAKO0xhcmtfSU1fRW50ZXJHcm91cF9Hcm91cEFuZERlcGFydG1lbnRfQ2hhdEhpc3RvcnlOb19JbnZpdGVyEPYBEkEKPExhcmtfSU1fRW50ZXJHcm91cF9Hcm91cEFuZERlcGFydG1lbnRfQ2hhdEhpc3RvcnlZZXNfSW52aXRlZRD3ARJACjtMYXJrX0lNX0VudGVyR3JvdXBfR3JvdXBBbmREZXBhcnRtZW50X0NoYXRIaXN0b3J5Tm9fSW52aXRlZRD4ARJGCkFMYXJrX0lNX0VudGVyR3JvdXBfR3JvdXBBbmREZXBhcnRtZW50X0NoYXRIaXN0b3J5WWVzX090aGVyTWVtYmVycxD5ARJFCkBMYXJrX0lNX0VudGVyR3JvdXBfR3JvdXBBbmREZXBhcnRtZW50X0NoYXRIaXN0b3J5Tm9fT3RoZXJNZW1iZXJzEPoBEkgKQ0xhcmtfSU1fRW50ZXJHcm91cF9Vc2VyQW5kR3JvdXBBbmREZXBhcnRtZW50X0NoYXRIaXN0b3J5WWVzX0ludml0ZXIQ+wESWgpVTGFya19JTV9FbnRlckdyb3VwX0xhcmtfSU1fRW50ZXJHcm91cF9Vc2VyQW5kR3JvdXBBbmREZXBhcnRtZW50X0NoYXRIaXN0b3J5Tm9fSW52aXRlchD8ARJICkNMYXJrX0lNX0VudGVyR3JvdXBfVXNlckFuZEdyb3VwQW5kRGVwYXJ0bWVudF9DaGF0SGlzdG9yeVllc19JbnZpdGVlEP0BEkcKQkxhcmtfSU1fRW50ZXJHcm91cF9Vc2VyQW5kR3JvdXBBbmREZXBhcnRtZW50X0NoYXRIaXN0b3J5Tm9fSW52aXRlZRD+ARJNCkhMYXJrX0lNX0VudGVyR3JvdXBfVXNlckFuZEdyb3VwQW5kRGVwYXJ0bWVudF9DaGF0SGlzdG9yeVllc19PdGhlck1lbWJlcnMQ/wESTApHTGFya19JTV9FbnRlckdyb3VwX1VzZXJBbmRHcm91cEFuZERlcGFydG1lbnRfQ2hhdEhpc3RvcnlOb19PdGhlck1lbWJlcnMQgAISNAovTGFya19JTV9FbnRlckdyb3VwX1VzZXJfQ2hhdEhpc3RvcnlZZXNfRnJvbVRlYW0QgQISKQokSEVMUERFU0tfVElDS0VUX1FVRVVFSU5HX1BMRUFTRV9XQUlUEIICEi0KKEhFTFBERVNLX1RJQ0tFVF9RVUVVRUlOR19UUllfQUdBSU5fTEFURVIQgwISTQpITGFya19JTV9SZXN0cmljdGVkTW9kZV9Hcm91cE93bmVyT3JBZG1pbkVuYWJsZWRSZXN0cmljdGVkTW9kZV9TeXN0ZW1UZXh0EIQCEjUKMExhcmtfSU1fUmVzdHJpY3RlZE1vZGVfU3lzdGVtTWVzc2FnZV9Db3B5Rm9yd2FyZBCFAhIyCi1MYXJrX0lNX1Jlc3RyaWN0ZWRNb2RlX1N5c3RlbU1lc3NhZ2VfRG93bmxvYWQQhgISPwo6TGFya19JTV9SZXN0cmljdGVkTW9kZV9TeXN0ZW1NZXNzYWdlX1NjcmVlblNob3RPclJlY29yZGluZxCHAhI9CjhMYXJrX0lNX1Jlc3RyaWN0ZWRNb2RlX1N5c3RlbU1lc3NhZ2VfQ29weUZvcndhcmREb3dubG9hZBCIAhJHCkJMYXJrX0lNX1Jlc3RyaWN0ZWRNb2RlX1N5c3RlbU1lc3NhZ2VfRG93bmxvYWRTY3JlZW5TaG90T3JSZWNvcmRpbmcQiQISSgpFTGFya19JTV9SZXN0cmljdGVkTW9kZV9TeXN0ZW1NZXNzYWdlX0NvcHlGb3J3YXJkU2NyZWVuU2hvdE9yUmVjb3JkaW5nEIoCEkIKPUxhcmtfSU1fUmVzdHJpY3RlZE1vZGVfU3lzdGVtTWVzc2FnZV9BZG1pbk9yT3duZXJEaXNhYmxlZE1vZGUQiwISIgodTGFya19JTV9TZXJ2ZXJfV2VsY29tZVRvX1RleHQQjAISMAorTGFya19JTV9Hcm91cENoYXRFeHRlcm5hbFByaXZhY3lOb3RpY2VfVGV4dBCNAhIuCilMYXJrX0lNX0NvbnRhY3RFeHRlcm5hbFByaXZhY3lOb3RpY2VfVGV4dBCOAhImCiFMYXJrX0lNX093bmVyRGlzYmFuZFRoaXNHcnBfVG9hc3QQjwISLQooTGFya19JTV9NZWV0aW5nRW5kQ2hlY2tOb3Rlc19TZXJ2ZXJfVGV4dBCQAhIwCitMYXJrX0lNX0FJTWVldGluZ05vdGVzQXZhaWxhYmxlX1NlcnZlcl9UZXh0EJECEiwKJ0xhcmtfR3JvdXBfVG9vTXVjaFRvQ2F0Y2hVcF9TZXJ2ZXJfVGV4dBCSAhIyCi1MYXJrX0lNX093bmVyT2ZmYm9hcmRHcm91cERpc2JhbmRfU2VydmVyX1RleHQQkwISMwouTGFya19TZXJ2ZXJfT3duZXJTdWJtaXRHcm91cExpbWl0SW5jcmVhc2VfVGV4dBCiAhIzCi5MYXJrX1NlcnZlcl9BZG1pblN1Ym1pdEdyb3VwTGltaXRJbmNyZWFzZV9UZXh0EKMCEikKJExhcmtfU2VydmVyX0dyb3VwTGltaXRJbmNyZWFzZWRfVGV4dBCkAhIsCidMYXJrX1NlcnZlcl9Hcm91cFNpemVBcHByb2FjZUxpbWl0X1RleHQQpQISNgoxTGFya19TZXJ2ZXJfT3duZXJTdWJtaXRHcm91cExpbWl0SW5jcmVhc2VOdW1fVGV4dBCmAhI2CjFMYXJrX1NlcnZlcl9BZG1pblN1Ym1pdEdyb3VwTGltaXRJbmNyZWFzZU51bV9UZXh0EKcCEi0KKExhcmtfU2VydmVyX0NhbmNlbEdyb3VwTGltaXRSZXF1ZXN0X1RleHQQqAISHgoZSU5WSVRFX0NIQVRfTUVNQkVSXzJfQ0hBVBCsAhIoCiNXSUxMX1JFQUNIX0NIQVRfQ0hBVFRFUl9DT1VOVF9MSU1JVBCtAhIrCiZBTFJFQURZX1JFQUNIX0NIQVRfQ0hBVFRFUl9DT1VOVF9MSU1JVBCuAhIiCh1VU0VSX0NSRUFURV9GQUNFX1RPX0ZBQ0VfQ0hBVBCvAhIgChtVU0VSX0pPSU5fRkFDRV9UT19GQUNFX0NIQVQQsAISKAojV0VMQ09NRV9VU0VSX0pPSU5fRkFDRV9UT19GQUNFX0NIQVQQsQISQQo8VVNFUl9DUkVBVEVEX0dST1VQX0FORF9JTlZJVEVEX09USEVSX0NIQVRURVJfQ0hBVF9ERVBBUlRNRU5UELICEjQKL1VTRVJfSU5WSVRFX09USEVSU19DSEFUVEVSX0NIQVRfREVQQVJUTUVOVF9KT0lOELMCEjcKMkNSRUFURV9DSEFUX0FORF9JTlZJVEVfRlJPTV9DSEFUX0RFUEFSVE1FTlRfTUVNQkVSELQCEikKJFVTRVJfT1BFTl9PTkxZX1NFUEVDSUZZX01FTUJFUlNfUE9TVBC1AhIwCitVU0VSX09QRU5fT05MWV9TRVBFQ0lGWV9NRU1CRVJTX1BPU1RfVEhSRUFEELYCEiYKIVVTRVJfUkVNT1ZFX1NFUEVDSUZZX01FTUJFUlNfUE9TVBC3AhItCihVU0VSX1JFTU9WRV9TRVBFQ0lGWV9NRU1CRVJTX1BPU1RfVEhSRUFEELgCEh0KGEFERF9NRU1CRVJfVE9fQURNSU5fTElTVBC5AhIiCh1SRU1PVkVfTUVNQkVSX0ZST01fQURNSU5fTElTVBC6AhIpCiRORUVEX1VQREFURV9WRVJTSU9OX1RPX1NVUFBPUlRfQURNSU4QuwISLwoqTUVOVElPTl9BTExfUEVSTUlTU0lPTl9TVUdHRVNUSU9OX1RPX0FETUlOELwCEigKI1VTRVJfT1BFTl9PTkxZX09XTkVSX0FORF9BRE1JTl9QT1NUEL0CEi8KKlVTRVJfT1BFTl9PTkxZX09XTkVSX0FORF9BRE1JTl9QT1NUX1RIUkVBRBC+AhIbChZBRE1JTl9PUEVOX0FOWU9ORV9QT1NUEL8CEiIKHUFETUlOX09QRU5fQU5ZT05FX1BPU1RfVEhSRUFEEMACEh0KGFNBSVBBTl9CT1RfT05MWV9IRUxQREVTSxDBAhI1CjBVU0VSX0NIQU5HRV9HUk9VUF9NQUlMX1BFUk1JU1NJT05fT1dORVJfT1JfQURNSU4QwgISKwomR1JPVVBfTkVXX01FTUJFUlNfVklFV19DSEFUX0hJU1RPUllfT04QwwISLAonR1JPVVBfTkVXX01FTUJFUlNfVklFV19DSEFUX0hJU1RPUllfT0ZGEMQCEjAKK0dST1VQX05FV19NRU1CRVJTX0NBTl9WSUVXX0hJU1RPUllfTUVTU0FHRVMQxQISKgolQ0lSQ0xFX1dFTENPTUVfTkVXX01FTUJFUlNfTk9fSElTVE9SWRDGAhIyCi1KT0lOX0NJUkNMRV9WSUFfSEVMUF9ERVNLX01TR19DQVJEX05PX0hJU1RPUlkQxwISLgopVVNFUl9JTlZJVEVfT1RIRVJTX0pPSU5fQ0lSQ0xFX05PX0hJU1RPUlkQyAISQQo8VVNFUl9JTlZJVEVfT1RIRVJTX0pPSU5fQ0lSQ0xFX0JZX0lOVklUQVRJT05fQ0FSRF9OT19ISVNUT1JZEMkCEjYKMVVTRVJfSU5WSVRFX09USEVSU19KT0lOX0NJUkNMRV9CWV9MSU5LX05PX0hJU1RPUlkQygISOQo0VVNFUl9JTlZJVEVfT1RIRVJTX0pPSU5fQ0lSQ0xFX0JZX1FSX0NPREVfTk9fSElTVE9SWRDLAhI4CjNVU0VSX0lOVklURV9PVEhFUlNfQ0hBVFRFUl9DSEFUX0RFUEFSVE1FTlRfSk9JTl9ORVcQ0gISPwo6VVNFUl9JTlZJVEVfT1RIRVJTX0NIQVRURVJfQ0hBVF9ERVBBUlRNRU5UX0pPSU5fTk9fSElTVE9SWRDMAhIZChRVU0VSX0pPSU5fVklBX1FSX05FVxDTAhIlCiBVU0VSX0pPSU5fVklBX1FSX0NPREVfTk9fSElTVE9SWRDNAhIjCh5VU0VSX0pPSU5fQ0hBVF9XRUxDT01FX01FU1NBR0UQzgISLgopVVNFUl9KT0lOX0NIQVRfV0VMQ09NRV9NRVNTQUdFX05PX0hJU1RPUlkQzwISKQokVVNFUl9JTlZJVEVfT1RIRVJTX0pPSU5fQ0hBVF9NRVNTQUdFENACEjQKL1VTRVJfSU5WSVRFX09USEVSU19KT0lOX0NIQVRfTUVTU0FHRV9OT19ISVNUT1JZENECEhwKF1VTRVJfSk9JTl9WSUFfU0hBUkVfTkVXENQCEiMKHlVTRVJfSk9JTl9WSUFfU0hBUkVfTk9fSElTVE9SWRDVAhIbChZVU0VSX0pPSU5fQ0hBVF9CWV9MSU5LENYCEiYKIVVTRVJfSk9JTl9DSEFUX0JZX0xJTktfTk9fSElTVE9SWRDXAhIdChhIRUxQX0RFU0tfVVNFUl9KT0lOX0NIQVQQ2AISKAojSEVMUF9ERVNLX1VTRVJfSk9JTl9DSEFUX05PX0hJU1RPUlkQ2QISKgolQ1JFQVRFX1VSR0VOVF9PTkxZX09XTkVSX0FORF9BRE1JTl9PThDaAhIrCiZDUkVBVEVfVVJHRU5UX09OTFlfT1dORVJfQU5EX0FETUlOX09GRhDbAhIXChJVUEdSQURFX1NVUEVSX0NIQVQQ3AISEQoMQUREX0NIQVRfVEFCEN0CEhEKDERFTF9DSEFUX1RBQhDeAhIYChNPTkxZX0FETUlOU19DQU5fUElOEN8CEhgKE0FMTF9NRU1CRVJTX0NBTl9QSU4Q4AISLAonT05MWV9BRE1JTlNfQ0FOX0NSRUFURV9WSURFT19DT05GRVJFTkNFEOECEiwKJ0FMTF9NRU1CRVJTX0NBTl9DUkVBVEVfVklERU9fQ09ORkVSRU5DRRDiAhIjCh5PTkxZX0FETUlOU19DQU5fRURJVF9DSEFUX0lORk8Q4wISIwoeQUxMX01FTUJFUlNfQ0FOX0VESVRfQ0hBVF9JTkZPEOQCEiMKHk9OTFlfQURNSU5TX0NBTl9BVF9BTExfTUVNQkVSUxDlAhIjCh5BTExfTUVNQkVSU19DQU5fQVRfQUxMX01FTUJFUlMQ5gISKgolT05MWV9BRE1JTlNfQ0FOX0FERF9NRU1CRVJTX0FORF9TSEFSRRDnAhIqCiVBTExfTUVNQkVSU19DQU5fQUREX01FTUJFUlNfQU5EX1NIQVJFEOgCEiMKHkNIQVRfTUVNQkVSX1JFQUNIX01BTkFHRV9MSU1JVBDpAhIkCh9VU0VSX1JFQ09WRVJfREVGQVVMVF9HUk9VUF9OQU1FEOoCEh8KGkFVVE9fT1BFTl9UWVBJTkdfVFJBTlNMQVRFEOsCEiMKHk9OTFlfQURNSU5fQ0FOX01BTkFHRV9DSEFUX1RBQhDsAhIkCh9BTExfTUVNQkVSU19DQU5fTUFOQUdFX0NIQVRfVEFCEO0CEiEKHEJPVF9NU0dfUkVDRUlWRV9NU0dfRElTQUJMRUQQ7gISHwoaQk9UX01TR19SRUNFSVZFX01TR19FTkFCTEUQ7wISIAobQVVUT19DTE9TRV9UWVBJTkdfVFJBTlNMQVRFEPACEi4KKUNIQVRfT1BFTl9USFJFQURfRElTUExBWV9NT0RFX05FV19WRVJTSU9OEPECEi4KKUNIQVRfT1BFTl9USFJFQURfRElTUExBWV9NT0RFX09MRF9WRVJTSU9OEPICEiMKHkNIQVRfQ0xPU0VfVEhSRUFEX0RJU1BMQVlfTU9ERRDzAhI3CjJVU0VSX0NSRUFURURfQ1JZUFRPX0NIQVRfQU5EX0lOVklURURfT1RIRVJfQ0hBVFRFUhD0AhIaChVDSEFUX0FETUlOX0FMTE9XX1BPU1QQ9QISGwoWQ0hBVF9BRE1JTl9CQU5ORURfUE9TVBD2AhIeChlDSEFUX0FETUlOX0lOVklURV9TRUVfQUxMEPcCEh4KGUNIQVRfQURNSU5fSU5WSVRFX1NFRV9ORVcQ+AISHQoYQ0hBVF9BRE1JTl9TRVRfTkVXX09XTkVSEPkCEh0KGENIQVRfR1JPVVBfVEhFTUVfQ0hBTkdFRBD6AhIrCiZBTExfTUVNQkVSU19DQU5fTUFOQUdFX1RhYnNNZW51V2lkZ2V0cxD7AhIqCiVPTkxZX0FETUlOX0NBTl9NQU5BR0VfVGFic01lbnVXaWRnZXRzEPwCEjAKK0NVUlJFTlRfVVNFUl9UT09LX1NDUkVFTlNIT1RfSU5fQ1JZUFRPX0NIQVQQ/QISMQosT1BQT1NJVEVfVVNFUl9UT09LX1NDUkVFTlNIT1RfSU5fQ1JZUFRPX0NIQVQQ/gISLgopQ1VSUkVOVF9VU0VSX1NFVF9DUllQVE9fTUVTU0FHRV9CVVJOX0xJRkUQ/wISLwoqT1BQT1NJVEVfVVNFUl9TRVRfQ1JZUFRPX01FU1NBR0VfQlVSTl9MSUZFEIADEi0KKEFMTF9NRU1CRVJTX0NBTl9NQU5BR0VfVGFic01lbnVXaWRnZXRzVjEQgQMSLAonT05MWV9BRE1JTl9DQU5fTUFOQUdFX1RhYnNNZW51V2lkZ2V0c1YxEIIDEiYKIU1FRVRJTkdfSE9TVF9TRVRfT05MWV9BRE1JTl9TUEVBSxCDAxIiCh1NRUVUSU5HX0hPU1RfU0VUX0FOWU9ORV9TUEVBSxCEAxIeChlDSEFUX0FETUlOX0JBTk5FRF9QT1NUX1YyEIUDEigKI0FMTF9NRU1CRVJTX0NBTl9NQU5BR0VfVVJMX0NIQVRfUElOEIYDEicKIk9OTFlfQURNSU5fQ0FOX01BTkFHRV9VUkxfQ0hBVF9QSU4QhwMSMgotQUxMX01FTUJFUlNfQ0hBVF9VUkxfVE9QX05PVElDRV9ISUdIX1ZfTk9STUFMEIgDEjIKLUNBTl9NQU5BR0VSX0NIQVRfVVJMX1RPUF9OT1RJQ0VfSElHSF9WX05PUk1BTBCJAxIyCi1BTExfTUVNQkVSU19DSEFUX1VSTF9UT1BfTk9USUNFX0hJR0hfVl9USFJFQUQQigMSMgotQ0FOX01BTkFHRVJfQ0hBVF9VUkxfVE9QX05PVElDRV9ISUdIX1ZfVEhSRUFEEIsDEjEKLEFMTF9NRU1CRVJTX0NIQVRfVVJMX1RPUF9OT1RJQ0VfTE9XX1ZfTk9STUFMEIwDEjEKLENBTl9NQU5BR0VSX0NIQVRfVVJMX1RPUF9OT1RJQ0VfTE9XX1ZfTk9STUFMEI0DEjEKLEFMTF9NRU1CRVJTX0NIQVRfVVJMX1RPUF9OT1RJQ0VfTE9XX1ZfVEhSRUFEEI4DEjEKLENBTl9NQU5BR0VSX0NIQVRfVVJMX1RPUF9OT1RJQ0VfTE9XX1ZfVEhSRUFEEI8DEjIKLVN5c3RlbUNvbnRlbnRfQk9UX1NUQVJUX0dST1VQX1dJVEhfVVNFUl9PV05FUhCQAxIwCitCT1RfU1RBUlRfR1JPVVBfV0lUSF9VU0VSX09XTkVSX0lOVklURV9VU0VSEKsEEhwKF09OTFlfQURNSU5TX0NBTl9QSU5fTE9XEJoDEhwKF0FMTF9NRU1CRVJTX0NBTl9QSU5fTE9XEJsDEisKJk9OTFlfQURNSU5TX0NBTl9PUEVSQVRFX1RPUF9OT1RJQ0VfTE9XEJwDEisKJkFMTF9NRU1CRVJTX0NBTl9PUEVSQVRFX1RPUF9OT1RJQ0VfTE9XEJ0DEjIKLU9OTFlfQURNSU5TX0NBTl9PUEVSQVRFX1RPUF9OT1RJQ0VfVEhSRUFEX0xPVxCeAxIyCi1BTExfTUVNQkVSU19DQU5fT1BFUkFURV9UT1BfTk9USUNFX1RIUkVBRF9MT1cQnwMSLAonQUxMX01FTUJFUlNfQ0FOX01BTkFHRV9VUkxfQ0hBVF9QSU5fTE9XEKADEisKJk9OTFlfQURNSU5fQ0FOX01BTkFHRV9VUkxfQ0hBVF9QSU5fTE9XEKEDEjEKLEFMTF9NRU1CRVJTX0NBTl9NQU5BR0VfVGFic01lbnVXaWRnZXRzVjFfTE9XEKIDEjAKK09OTFlfQURNSU5fQ0FOX01BTkFHRV9UYWJzTWVudVdpZGdldHNWMV9MT1cQowMSLwoqQUxMX01FTUJFUlNfQ0FOX01BTkFHRV9UYWJzTWVudVdpZGdldHNfTE9XEKQDEi4KKU9OTFlfQURNSU5fQ0FOX01BTkFHRV9UYWJzTWVudVdpZGdldHNfTE9XEKUDEigKI0FMTF9NRU1CRVJTX0NBTl9NQU5BR0VfQ0hBVF9UQUJfTE9XEKYDEicKIk9OTFlfQURNSU5fQ0FOX01BTkFHRV9DSEFUX1RBQl9MT1cQpwMSHgoZVVNFUl9KT0lOX1ZJQV9MSU5LRURfUEFHRRCoAxIpCiRVU0VSX0pPSU5fVklBX0xJTktFRF9QQUdFX05PX0hJU1RPUlkQqQMSIQocVFVSTl9PTl9ISURFX0NIQVRfVVNFUl9DT1VOVBCqAxIiCh1UVVJOX09GRl9ISURFX0NIQVRfVVNFUl9DT1VOVBCrAxIhChxNQU5VQUxfT1BFTl9UWVBJTkdfVFJBTlNMQVRFEKwDEiIKHUFVVE9fT1BFTl9UWVBJTkdfVFJBTlNMQVRFX1YxEK0DEhwKF0VYVEVSTkFMX0NPT1JESU5BVEVfQ1RMEJEDEiMKHlRBUkdFVF9FWFRFUk5BTF9DT09SRElOQVRFX0NUTBCSAxIoCiNDSEFUX09QRU5fQ0FOX1NFQVJDSF9TWVNURU1fTUVTU0FHRRCTAxIqCiVDSEFUX0NMT1NFRF9DQU5fU0VBUkNIX1NZU1RFTV9NRVNTQUdFEJQDEjAKK0JJVEFCTEVfVEVNUExBVEVfR1JPVVBfU0hBUkVfU1lTVEVNX01FU1NBR0UQlQMSLAonTU9NRU5UU19TVEFSVF9TRUNSRVRfQ0hBVF9BQk9VVF9NRVNTQUdFEJYDEiMKHkNSRUFURV9URUFNX0FORF9JTlZJVEVfTUVNQkVSUxD1AxIYChNVUERBVEVfQ0hBVF9UT19URUFNEPYDEh0KGElOVklURV9NRU1CRVJTX0pPSU5fVEVBTRD3AxIbChZNRU1CRVJTX0pPSU5fVEVBTV9GQUlMEPgDEhoKFUtJQ0tfTUVNQkVSU19PVVRfVEVBTRD5AxIWChFNRU1CRVJfTEVBVkVfVEVBTRD6AxIYChNUUkFOU0ZFUl9URUFNX09XTkVSEPsDEhUKEE1PRElGWV9URUFNX05BTUUQ/AMSJwoiRU5BQkxFX1RFQU1fQ1JFQVRFX0NIQVRfUEVSTUlTU0lPThD9AxImCiFDTE9TRV9URUFNX0NSRUFURV9DSEFUX1BFUk1JU1NJT04Q/gMSJwoiRU5BQkxFX1RFQU1fQUREX01FTUJFUlNfUEVSTUlTU0lPThD/AxImCiFDTE9TRV9URUFNX0FERF9NRU1CRVJTX1BFUk1JU1NJT04QgAQSIgodRElTU09MVkVfVEVBTV9BTkRfVU5CSU5EX0NIQVQQgQQSFQoQQ1JFQVRFX1RFQU1fQ0hBVBCCBBIYChNCSU5EX0NIQVRfSU5UT19URUFNEIMEEhoKFVVOQklORF9DSEFUX1dJVEhfVEVBTRCEBBIqCiVNRU1CRVJTX0pPSU5fVEVBTV9DSEFUX1NFRV9ISVNUT1JJQ0FMEIUEEiwKJ01FTUJFUlNfSk9JTl9URUFNX0NIQVRfU0VFX05FV19NRVNTQUdFUxCGBBIgChtNRU1CRVJTX0pPSU5fVEVBTV9DSEFUX0ZBSUwQhwQSHwoaTUVNQkVSU19MRUFWRV9BTkRfVFJBTlNGRVIQiAQSFQoQVVNFUl9DUkVBVEVfVEVBTRCJBBIcChdDSEVDS19VU0VSX1BIT05FX05VTUJFUhCKBBInCiJDSEVDS19VU0VSX1BIT05FX1VTRVJfSU5fV0hJVEVMSVNUEIsEEh0KGENhbnRCdXp6RW1wdHlQaG9uZU51bWJlchCMBBIWChFDYW50QnV6ekVtcHR5TmFtZRCNBBIOCglCdXp6TGltaXQQjgQSFAoPQnV6elN5c3RlbUVycm9yEI8EEhAKC0J1enpUaW1lT3V0EJAEEhQKD0NhbnRCdXp6TWVtYmVycxCRBBISCg1CdXp6Tm90QW5zd2VyEJIEEhsKFk11bHRpSXRlbVN5c3RlbUNvbnRlbnQQkwQSHwoaVkNfRU5URVJQUklTRV9QSE9ORV9DUkVBVEUQlAQSFwoSTU9ESUZZX1RFQU1fQVZBVEFSEJUEEhwKF01PRElGWV9URUFNX0RFU0NSSVBUSU9OEJYEEhwKF0RFTEVURV9URUFNX0RFU0NSSVBUSU9OEJcEEicKIkVOQUJMRV9BRERfVEVBTV9NRU1CRVJTX1BFUk1JU1NJT04QmAQSJgohQ0xPU0VfQUREX1RFQU1fTUVNQkVSU19QRVJNSVNTSU9OEJkEEiUKIEVOQUJMRV9CSU5EX1RFQU1fQ0hBVF9QRVJNSVNTSU9OEJoEEiQKH0NMT1NFX0JJTkRfVEVBTV9DSEFUX1BFUk1JU1NJT04QmwQSGAoTQ1JFQVRFX1RFQU1fQ0hBVF9WMhCcBBIgChtDUkVBVEVfVEVBTV9DSEFUX1YyX01BTkFHRVIQnQQSIAobQklORF9DSEFUX0lOVE9fVEVBTV9NQU5BR0VSEJ4EEh0KGFVTRVJfSk9JTl9DSEFUX0ZST01fVEVBTRCfBBIoCiNURUFNX0NIQVRfVFVSTl9PUEVOX01FU1NBR0VfVE9fVEVBTRCgBBIgChtURUFNX0NIQVRfVFVSTl9PUEVOX01FU1NBR0UQoQQSGwoWQklORF9DSEFUX0lOVE9fVEVBTV9WMhCiBBIZChRBRERfVEVBTV9DSEFUX01FTUJFUhCjBBImCiFCSU5EX0NIQVRfSU5UT19URUFNX0FORF9BU19NRU1CRVIQpAQSKwomVEVBTV9DSEFUX1RVUk5fT1BFTl9NRVNTQUdFX1RPX1RFQU1fVjIQpQQSHQoYVU5CSU5EX0NIQVRfV0lUSF9URUFNX1YyEKYEEh8KGk1FTUJFUlNfSk9JTl9URUFNX1ZJQV9DSEFUEKcEEiYKIU1FTUJFUlNfSk9JTl9TSU5HTEVfVEVBTV9WSUFfQ0hBVBCoBBIlCiBNRU1CRVJTX0pPSU5fTVVMVElfVEVBTV9WSUFfQ0hBVBCpBBIoCiNVU0VSX0pPSU5fQ0hBVF9GUk9NX1RFQU1fTk9fSElTVE9SWRCqBBIgChtDSEFUX1RPUF9OT1RJQ0VfVE9QX01FU1NBR0UQ2QQSJQogQ0hBVF9UT1BfTk9USUNFX1RPUF9BTk5PVU5DRU1FTlQQ2gQSHwoaQ0hBVF9UT1BfTk9USUNFX1RPUF9USFJFQUQQ2wQSGwoWQ0hBVF9UT1BfTk9USUNFX1JFTU9WRRDcBBInCiJPTkxZX0FETUlOU19DQU5fT1BFUkFURV9UT1BfTk9USUNFEN0EEicKIkFMTF9NRU1CRVJTX0NBTl9PUEVSQVRFX1RPUF9OT1RJQ0UQ3gQSLgopT05MWV9BRE1JTlNfQ0FOX09QRVJBVEVfVE9QX05PVElDRV9USFJFQUQQ3wQSLgopQUxMX01FTUJFUlNfQ0FOX09QRVJBVEVfVE9QX05PVElDRV9USFJFQUQQ4AQSHgoZQnV6ek1lbWJlckJ1enpGYWlsZWRMaW1pdBDhBBIkCh9CdXp6TWVtYmVyQnV6ekZhaWxlZFN5c3RlbUVycm9yEOIEEiAKG0J1enpNZW1iZXJCdXp6RmFpbGVkVGltZU91dBDjBBIdChhCdXp6QnV6ekZhaWxQdXNoRmFpbExpc3QQ5AQSIQocQnV6ek5hbWVzRGlkbnRQaWNrVXBCdXp6Q2FsbBDlBBIkCh9CdXp6U29tZURpZG50UGlja1VwU29tZUNhbnRDYWxsEOYEEiMKHlNJTVBMSUZZX09USEVSX0dSQUJfTVlfSE9OR0JBTxDnBBI0Ci9TSU1QTElGWV9PVEhFUl9HUkFCX01ZX0hPTkdCQU9fTk9UX09WRVJfT1VUX05VTRD5BBIlCiBTSU1QTElGWV9VU0VSX0lOVklURV9PVEhFUlNfSk9JThDoBBI9CjhTSU1QTElGWV9VU0VSX0lOVklURV9PVEhFUlNfSk9JTl9DSEFUX01FU1NBR0VfTk9fSElTVE9SWRDpBBIhChxTSU1QTElGWV9TWVNURU1fV0VMQ09NRV9VU0VSEOoEEiwKJ1NJTVBMSUZZX1VTRVJfSk9JTl9DSEFUX1dFTENPTUVfTUVTU0FHRRDrBBI3CjJTSU1QTElGWV9VU0VSX0pPSU5fQ0hBVF9XRUxDT01FX01FU1NBR0VfTk9fSElTVE9SWRDsBBIoCiNTSU1QTElGWV9DSVJDTEVfV0VMQ09NRV9ORVdfTUVNQkVSUxDtBBIhChxTSU1QTElGWV9VU0VSX0pPSU5fVklBX1NIQVJFEO4EEiwKJ1NJTVBMSUZZX1VTRVJfSk9JTl9WSUFfU0hBUkVfTk9fSElTVE9SWRDvBBI/CjpTSU1QTElGWV9VU0VSX0lOVklURV9PVEhFUlNfSk9JTl9DSVJDTEVfQllfSU5WSVRBVElPTl9DQVJEEPAEEiMKHlNJTVBMSUZZX1VTRVJfSk9JTl9WSUFfUVJfQ09ERRDxBBIuCilTSU1QTElGWV9VU0VSX0pPSU5fVklBX1FSX0NPREVfTk9fSElTVE9SWRDyBBI3CjJTSU1QTElGWV9VU0VSX0lOVklURV9PVEhFUlNfSk9JTl9DSVJDTEVfQllfUVJfQ09ERRDzBBImCiFTSU1QTElGWV9VU0VSX0pPSU5fVklBX0dST1VQX0xJTksQ9AQSLwoqU0lNUExJRllfVVNFUl9KT0lOX0NIQVRfQllfTElOS19OT19ISVNUT1JZEPUEEjQKL1NJTVBMSUZZX1VTRVJfSU5WSVRFX09USEVSU19KT0lOX0NJUkNMRV9CWV9MSU5LEPYEEjEKLFNJTVBMSUZZX1dFTENPTUVfVVNFUl9KT0lOX0ZBQ0VfVE9fRkFDRV9DSEFUEPcEEiYKIVNJTVBMSUZZX1VTRVJfSk9JTl9DSEFUX0ZST01fVEVBTRD4BBIsCidTSU1QTElGWV9VU0VSX0lOVklURV9PVEhFUlNfSk9JTl9DSVJDTEUQ+gQSIAobRVhQT1JUX0NIQVRfQ0hBVFRFUl9TVUNDRVNTEPsEEh0KGEVYUE9SVF9DSEFUX0NIQVRURVJfRkFJTBD8BBIrCiZOT1RJQ0VfVVNFUl9ERVZJQ0VfVVBEQVRFX0xBUktfVkVSU0lPThC9BRI1CjBISUdITElHSFRfTUVTU0FHRVNfRlJPTV9DT05UQUNUX1RPX1NUQVlfSU5GT1JNRUQQvgUSKQokQ1JFQVRFX0NIQVRfV0lUSF9USElSRF9QQVJUWV9FTkNSWVBUEMYFEikKJENhbGVuZGFyX0dfUmVhY2hMaW1pdEFkZENvbnRhY3RfTm90ZRDHBRIlCiBDYWxlbmRhcl9HX1JlYWNoTGltaXROb0pvaW5fTm90ZRDIBRIsCidDYWxlbmRhcl9HX0FkZFJlbW92ZU5vQ2hhbmdlUGFydGljaXBhbnQQyQUSNAovQ2FsZW5kYXJfR19WZXJpZmljYXRpb25Pbk5vRnJlZUVudGVyRXhpdF9TZXJpZXMQygUSMQosTGFya19DYWxlbmRhcl9JTV9OYW1lU2VuZEludml0ZU5vVmlld1ZlcnNpb24QywUSLwoqTGFya19DYWxlbmRhcl9BZGRSZW1vdmVOb0NoYW5nZVBhcnRpY2lwYW50EMwFEjcKMkxhcmtfQ2FsZW5kYXJfVmVyaWZpY2F0aW9uT25Ob0ZyZWVFbnRlckV4aXRfU2VyaWVzEM0FEiMKHkxhcmtfQ2FsZW5kYXJfRXZlbnRCaW5kaW5nQ2hhdBDOBRIrCiZMYXJrX0NhbGVuZGFyX0V2ZW50QmluZGluZ0NoYXRXaXRoVXNlchDPBRItCihMYXJrX0NhbGVuZGFyX0V2ZW50VW5iaW5kaW5nQ2hhdFdpdGhVc2VyENAFEjoKNUxhcmtfQ2FsZW5kYXJfTWVldGluZ1RyYW5zZmVyVG9DaGF0QW5kQmluZE9yaWdpbkV2ZW50ENEFEjAKK0xhcmtfQ2FsZW5kYXJfREVDTElORV9SRUNVUlJFTkNFX0lOVklUQVRJT04Q0gUSKgolTGFya19DYWxlbmRhcl9ERUNMSU5FX1NQRUNfSU5WSVRBVElPThDTBRIfChpSRVBMWV9ZT1VfSU5fRElBTE9HX1RIUkVBRBCgBhIcChdBVF9ZT1VfSU5fRElBTE9HX1RIUkVBRBChBhIiCh1BRE1JTl9SRVNUUklDVEVEX1lPVVJfTUVTU0FHRRCiBhIkCh9BRE1JTl9VTlJFU1RSSUNURURfWU9VUl9NRVNTQUdFEKMGEiMKHlVTRVJfQUNDRVBURURfQU5fQUlfU1VHR0VTVElPThCkBhIhChxVU0VSX1JFTU9WRV9BTl9BSV9TVUdHRVNUSU9OEKUGEiwKJ0lOTkVSX1ZDX01FRVRJTkdfQ0hBVF9DT05WRVJUX1RPX05PUk1BTBCEBxIzCi5DUkVBVEVfQ1JPU1NfVEVOQU5UX1ZDX01FRVRJTkdfQ0hBVF9CWV9VUEdSQURFEIUHEiMKHlZDX01FRVRJTkdfRU5EX05PVElGWV9EVVJBVElPThCGBxInCiJWQ19NRUVUSU5HX0VORF9OT1RJRllfRFVSQVRJT05fU0VDEIcHEi4KKVZDX01FRVRJTkdfRU5EX05PVElGWV9EVVJBVElPTl9IUl9NSU5fU0VDEIgHEh4KGVZDX01FRVRJTkdfVEVNUF9VU0VSX0pPSU4QiQcSHwoaVkNfTUVFVElOR19URU1QX1VTRVJfTEVBVkUQigcSJwoiVkNfTUVFVElOR19URU1QX0VYVEVSTkFMX1VTRVJfSk9JThCLBxIoCiNWQ19NRUVUSU5HX1RFTVBfRVhURVJOQUxfVVNFUl9MRUFWRRCMBxIkCh9WQ19NRUVUSU5HX1RFTVBfR1VFU1RfVVNFUl9KT0lOEI0HEiUKIFZDX01FRVRJTkdfVEVNUF9HVUVTVF9VU0VSX0xFQVZFEI4HEiEKHFZDX01FRVRJTkdfU1RBUlRfTk9USUZZX0NIQVQQjwcSKwomVkNfQ0FMTF9JTlRFUlZJRVdFRV9OT19BTlNXRVJfTk9fQkFER0UQkAcSKAojVkNfQ0FMTF9JTlRFUlZJRVdFUl9DQU5DRUxfTk9fQkFER0UQkQcSNAovTGFya19TZXJ2ZXJfU3lzdGVtQ29udGVudF9Vc2VySW5NZWV0Q2FudFJlbW92ZWQQtwcSMQosTGFya19TZXJ2ZXJfU3lzdGVtQ29udGVudF9Vc2VySW5NZWV0Q2FudFF1aXQQuAcSGgoVQnV6elRleHRGYWlsT3ZlckxpbWl0ELkHEhwKF0J1enpUZXh0RmFpbFNlcnZlckVycm9yELoHEhwKF0J1enpUZXh0RmFpbFVuYXZhaWxhYmxlELsHEiMKHkJ1enpUZXh0RmFpbE51bWJlckRvZXNOb3RFeGlzdBC8BxIcChdCdXp6Q2FsbEZhaWxTd2l0Y2hlZE9mZhC9BxIdChhCdXp6Q2FsbEZhaWxPdXRPZlNlcnZpY2UQvgcSGQoUQnV6ekNhbGxGYWlsTm90RXhpc3QQvwcSHAoXQnV6ekNhbGxGYWlsU2VydmVyRXJyb3IQwAcSHwoaQnV6ekNhbGxGYWlsVW5hdmFpbGFibGVOb3cQwQcSHAoXQnV6ekNhbGxGYWlsTm90QW5zd2VyZWQQwgcSFQoQQnV6ekNhbGxGYWlsQnVzeRDDBxIZChRCdXp6Q2FsbEZhaWxSZWplY3RlZBDEBxIiCh1CdXp6Q2FsbEZhaWxOdW1iZXJVbmF2YWlsYWJsZRDFBxIYChNCdXp6Q2FsbEZhaWxCbG9ja2VkEMYHEhsKFlVzZXJBcHBseUNvbW11bmljYXRpb24QxwcSDwoKQWdyZWVBcHBseRDIBxIOCglBcHBseVBhc3MQyQcSMgotTGFya19JTV9SZXN0cmljdGVkTW9kZVR1cm5lZE9uQWxsX1NlcnZlcl9UZXh0EMoHEkIKPUxhcmtfSU1fUmVzdHJpY3RlZE1vZGVUdXJuZWRPbkNvcHlGb3J3YXJkRG93bmxvYWRfU2VydmVyX1RleHQQywcSQAo7TGFya19JTV9SZXN0cmljdGVkTW9kZVR1cm5lZE9uQ29weUZvcndhcmRTY3JlZW5fU2VydmVyX1RleHQQzAcSPQo4TGFya19JTV9SZXN0cmljdGVkTW9kZVR1cm5lZE9uRG93bmxvYWRTY3JlZW5fU2VydmVyX1RleHQQzQcSNQowTGFya19JTV9SZXN0cmljdGVkTW9kZVR1cm5lZE9uU2NyZWVuX1NlcnZlcl9UZXh0EM4HEjcKMkxhcmtfSU1fUmVzdHJpY3RlZE1vZGVUdXJuZWRPbkRvd25sb2FkX1NlcnZlcl9UZXh0EM8HEjoKNUxhcmtfSU1fUmVzdHJpY3RlZE1vZGVUdXJuZWRPbkNvcHlGb3J3YXJkX1NlcnZlcl9UZXh0ENAHEjAKK0xhcmtfSU1fVHVybmVkT2ZmUmVzdHJpY3RlZE1vZGVfU2VydmVyX1RleHQQ0QcSPQo4TGFya19JTV9OZXdNZXNzYWdlc1dpbGxTZWxmRGVzdHJ1Y3RJbkFQZXJpb2RfU2VydmVyX1RleHQQ0gcSOQo0TGFya19JTV9Vc2VyVHVybmVkT2ZmTWVzc2FnZVNlbGZEZXN0cnVjdF9TZXJ2ZXJfVGV4dBDTBxJECj9MYXJrX0lNX0dyb3VwT3duZXJBZG1pblR1cm5lZE9mZk1lc3NhZ2VTZWxmRGVzdHJ1Y3RfU2VydmVyX1RleHQQ1AcSJgohTGFya19JTV9SZWNhbGxNZXNzYWdlX1NlcnZlcl9UZXh0ENUHEjIKLUxhcmtfR3JvdXBfU2VydmVyX1Jlc3RyaWN0aW9uc09uRXZlcnlvbmVfVGV4dBDWBxI4CjNMYXJrX0dyb3VwX1NlcnZlcl9SZXN0cmljdGlvbnNFeGNlcHRPd25lckFkbWluX1RleHQQ1wcSPQo4TGFya19Hcm91cF9TZXJ2ZXJfUmVzdHJpY3Rpb25zRXhjZXB0U2VsZWN0ZWRNZW1iZXJzX1RleHQQ2AcSFQoQTXlBSV9OZXdUb3BpY1RpcBDMCBIhChxNeUFJX1RuU0Nyb3NzQnJhbmRQYWNrYWdlVGlwEM0IEhwKF015QUlfVG5TQ3Jvc3NCcmFuZElQVGlwEM4IEhcKEk15QUlfUmVnZW5lcmF0ZVRpcBDPCBIZChRNeUFJX1RyaWdnZXJUbnNBbGVydBDQCBIeChlNeUFJX1NjZW5lVG9waWNEeW5hbWljVGlwENYIEigKI0hlbHBkZXNrQUlNb2RlbEVuYWJsZWRSZWFkQWdyZWVtZW50ELEJEi0KKExhcmtfSU1fQ2hhdE11dGVkRm9yRXZlcnlvbmVfU2VydmVyX1RleHQQsgkSHQoYTGFya19JTV9Cb3RDdXN0b21pemF0aW9uELMJEiMKHlZDX1VzZXJKb2luTWVldEdyb3VwQW5kVXBncmFkZRC0CRIrCiZWQ19NRUVUSU5HX1NUQVJUX05PVElGWV9JTlZJU0lCTEVfQ0hBVBC1CRIoCiNWQ19NRUVUSU5HX0JJTkRfSU5fTUVFVElOR19UT19HUk9VUBC2CRIpCiRNQU5VQUxfT1BFTl9UWVBJTkdfVFJBTlNMQVRFX1BST01QVFMQlQoSIgodQVVUT19PUEVOX1RZUElOR19UUkFOU0xBVEVfVjIQlgoSFQoQVE5TX0ZyYXVkX1JlbWluZBCXChIYChNUTlNfRnJhdWRfUmVtaW5kX1YyEJgKEhUKEEtQX0NIQVRfUkVBREFCTEUQ+AoSIwoeQ0hBVF9VU0VSX0xBUkdFX0NIQVRfQVVUT19NVVRFENwLEhwKF0NIQVRfVVNFUl9CT1RfQVVUT19NVVRFEN0LEh4KGUNIQVRfVVNFUl9CT1RfQVVUT19NVVRFX1MQ3gsSIAobQ0hBVF9VU0VSX1AyUF9CT1RfQVVUT19NVVRFEN8LIoMBChBDb250ZW50VmFsdWVUeXBlEhYKElVOS05PV05fVkFMVUVfVFlQRRAAEggKBFVTRVIQARIHCgNCT1QQAhIICgRURVhUEAMSCAoEQ0hBVBAEEgsKB0NIQVRURVIQBRIHCgNVUkwQBhIKCgZBQ1RJT04QBxIOCgpERVBBUlRNRU5UEAgiTQoSRG9jc1Blcm1pc3Npb25UeXBlEhsKF1VOS05PV05fUEVSTUlTU0lPTl9UWVBFEAASDAoIUkVBREFCTEUQARIMCghXUklUQUJMRRACIowBCgpNaW5WZXJzaW9uEhMKC21pbl92ZXJzaW9uGAEgASgJEhsKE2FuZHJvaWRfbWluX3ZlcnNpb24YAiABKAkSFwoPaW9zX21pbl92ZXJzaW9uGAMgASgJEhYKDnBjX21pbl92ZXJzaW9uGAQgASgJEhsKE2hhcm1vbnlfbWluX3ZlcnNpb24YBSABKAkioEUKC0NhcmRDb250ZW50EigKBHR5cGUYASACKA4yGi5lbnRpdGllcy5DYXJkQ29udGVudC5UeXBlEiQKCHJpY2h0ZXh0GAIgAigLMhIuZW50aXRpZXMuUmljaFRleHQSMwoHYWN0aW9ucxgDIAMoCzIiLmVudGl0aWVzLkNhcmRDb250ZW50LkFjdGlvbnNFbnRyeRIuCgVleHRyYRgEIAEoDjIfLmVudGl0aWVzLkNhcmRDb250ZW50LkV4dHJhVHlwZRIpCgttaW5fdmVyc2lvbhgFIAEoCzIULmVudGl0aWVzLk1pblZlcnNpb24SEQoJY2FyZF9kZXNjGAYgASgJEhQKDGNhcmRfdmVyc2lvbhgHIAEoBRI1CgtjYXJkX2hlYWRlchgIIAEoCzIgLmVudGl0aWVzLkNhcmRDb250ZW50LkNhcmRIZWFkZXISHwoQd2lkZV9zY3JlZW5fbW9kZRgJIAEoCDoFZmFsc2USDgoGYm90X2lkGAogASgDEjMKCmV4dHJhX2luZm8YCyABKAsyHy5lbnRpdGllcy5DYXJkQ29udGVudC5FeHRyYUluZm8SDgoGYXBwX2lkGAwgASgDEhEKCXRlbmFudF9pZBgNIAEoAxIWCg5lbmFibGVfZm9yd2FyZBgOIAEoCBIwCgZzb3VyY2UYDyABKA4yIC5lbnRpdGllcy5DYXJkQ29udGVudC5Tb3VyY2VUeXBlEhUKDWNvbXBhY3Rfd2lkdGgYECABKAgSGQoRb3Blbl9jYXJkX2NvbnRlbnQYESABKAwSMAoKYXR0YWNobWVudBgSIAEoCzIcLmVudGl0aWVzLk9wZW5DYXJkQXR0YWNobWVudBI/Cg5jYXJkX2Rlc2NfaTE4bhgTIAMoCzInLmVudGl0aWVzLkNhcmRDb250ZW50LkNhcmREZXNjSTE4bkVudHJ5EhEKCWpzb25fY2FyZBgUIAEoCRI9Cg9qc29uX2F0dGFjaG1lbnQYFSABKAsyJC5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQXR0YWNobWVudBJDChNqc29uX2NhcmRfaTE4bl9pbmZvGBYgASgLMiYuZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkNhcmRJMThuSW5mbxISCgp3aWR0aF9tb2RlGBcgASgJEh8KE2NsZWFuX3Jlc291cmNlX2tleXMYGCADKAlCAhgBEg8KB2NhcmRfaWQYGSABKAkSDwoHdmVyc2lvbhgaIAEoAxIWCg5zdHJlYW1pbmdfbW9kZRgbIAEoCBIVCg1oZWFkZXJfaXNfbmlsGBwgASgIElIKGGNsZWFuX3Jlc291cmNlX2tleV9zY2VuZRgdIAMoCzIwLmVudGl0aWVzLkNhcmRDb250ZW50LkNsZWFuUmVzb3VyY2VLZXlTY2VuZUVudHJ5EjEKCWRhdGFfdHlwZRgeIAEoDjIeLmVudGl0aWVzLkNhcmRDb250ZW50LkRhdGFUeXBlEjMKCnBhdGNoX2luZm8YHyABKAsyHy5lbnRpdGllcy5DYXJkQ29udGVudC5QYXRjaEluZm8SEwoLY2FyZF9zY2hlbWEYICABKAUSHgoWdW5pdmVyc2FsX2hvc3RfY2FyZF9pZBghIAEoCRIdChV1bml2ZXJzYWxfY2FyZF9lbnRpdHkYIiABKAwSOgoOY2FyZF9wYWNrX2luZm8YIyABKAsyIi5lbnRpdGllcy5DYXJkQ29udGVudC5DYXJkUGFja0luZm8SEgoKYWN0aW9uX3VybBgkIAEoCRq9BQoKQ2FyZEhlYWRlchINCgV0aXRsZRgBIAEoCRIWCg50aXRsZV9pMThuX2tleRgCIAEoCRI6CgVzdHlsZRgDIAMoCzIrLmVudGl0aWVzLkNhcmRDb250ZW50LkNhcmRIZWFkZXIuU3R5bGVFbnRyeRJDCgp0aXRsZV9pMThuGAQgAygLMi8uZW50aXRpZXMuQ2FyZENvbnRlbnQuQ2FyZEhlYWRlci5UaXRsZUkxOG5FbnRyeRINCgV0aGVtZRgFIAEoCRI1CgRpY29uGAYgASgLMicuZW50aXRpZXMuUmljaFRleHRFbGVtZW50LkltYWdlUHJvcGVydHkSEAoIc3VidGl0bGUYByABKAkSGQoRc3VidGl0bGVfaTE4bl9rZXkYCCABKAkSSgoOc3ViX3RpdGxlX2kxOG4YCSADKAsyMi5lbnRpdGllcy5DYXJkQ29udGVudC5DYXJkSGVhZGVyLlN1YlRpdGxlSTE4bkVudHJ5EhIKCm1haW5fdGl0bGUYCiABKAkSGwoTbWFpbl90aXRsZV9pMThuX2tleRgLIAEoCRJMCg9tYWluX3RpdGxlX2kxOG4YDCADKAsyMy5lbnRpdGllcy5DYXJkQ29udGVudC5DYXJkSGVhZGVyLk1haW5UaXRsZUkxOG5FbnRyeRosCgpTdHlsZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaMAoOVGl0bGVJMThuRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARozChFTdWJUaXRsZUkxOG5FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjQKEk1haW5UaXRsZUkxOG5FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGtQBCglFeHRyYUluZm8SOQoNZ2FkZ2V0X2NvbmZpZxgBIAEoCzIiLmVudGl0aWVzLkNhcmRDb250ZW50LkdhZGdldENvbmZpZxI5Cg1jdXN0b21fY29uZmlnGAIgASgLMiIuZW50aXRpZXMuQ2FyZENvbnRlbnQuQ3VzdG9tQ29uZmlnEjcKDG1lZWdvX2NvbmZpZxgDIAEoCzIhLmVudGl0aWVzLkNhcmRDb250ZW50Lk1lZWdvQ29uZmlnEhgKEGN1c3RvbV9wYXJhbWV0ZXIYBCABKAkaKAoLTWVlZ29Db25maWcSGQoKaXNfcHJlbG9hZBgBIAEoCDoFZmFsc2UaOgoMR2FkZ2V0Q29uZmlnEhkKCmlzX3ByZWxvYWQYASABKAg6BWZhbHNlEg8KB2NsaV9pZHMYAiADKAka1gMKDEN1c3RvbUNvbmZpZxIWCg5hbmFseXRpY3NfZGF0YRgBIAEoCRIeChZ1c2VfY3VzdG9tX3RyYW5zbGF0aW9uGAIgASgIEhgKEGVuYWJsZV90cmFuc2xhdGUYAyABKAgSYQoZdXNlcl9jYXJkX2xhbmd1YWdlX2RldGVjdBgEIAMoCzI+LmVudGl0aWVzLkNhcmRDb250ZW50LkN1c3RvbUNvbmZpZy5Vc2VyQ2FyZExhbmd1YWdlRGV0ZWN0RW50cnkSRwoLbG9jYWxlX2luZm8YBSADKAsyMi5lbnRpdGllcy5DYXJkQ29udGVudC5DdXN0b21Db25maWcuTG9jYWxlSW5mb0VudHJ5Gj0KG1VzZXJDYXJkTGFuZ3VhZ2VEZXRlY3RFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGicKCkxvY2FsZUluZm8SGQoRY29udGVudF9sYW5ndWFnZXMYASADKAkaYAoPTG9jYWxlSW5mb0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmVudGl0aWVzLkNhcmRDb250ZW50LkN1c3RvbUNvbmZpZy5Mb2NhbGVJbmZvOgI4ARq7IgoOSnNvbkF0dGFjaG1lbnQSQAoGaW1hZ2VzGAEgAygLMjAuZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuSW1hZ2VzRW50cnkSQwoIYXRfdXNlcnMYAiADKAsyMS5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQXR0YWNobWVudC5BdFVzZXJzRW50cnkSSwoMb3B0aW9uX3VzZXJzGAMgAygLMjUuZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuT3B0aW9uVXNlcnNFbnRyeRJECgdzdW1tYXJ5GAQgASgLMjMuZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuU3VtbWFyeUNvbnRlbnQSPwoObWluX2pzX3ZlcnNpb24YBSABKAsyJy5lbnRpdGllcy5DYXJkQ29udGVudC5UZW1wbGF0ZUpTVmVyc2lvbhJFChRyZWNvbW1lbmRfanNfdmVyc2lvbhgGIAEoCzInLmVudGl0aWVzLkNhcmRDb250ZW50LlRlbXBsYXRlSlNWZXJzaW9uEhQKDGNhcmRfZmdfbmFtZRgHIAEoCRIeChZwcmV2aWV3X2ltYWdlX2tleV9saXN0GAggAygJEhIKCmlzX2ZvcndhcmQYCSABKAgSYQoYY29tcG9uZW50X3N0YXR1c19ieV9uYW1lGAogAygLMj8uZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuQ29tcG9uZW50U3RhdHVzQnlOYW1lRW50cnkSQgoHcGVyc29ucxgLIAMoCzIxLmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LlBlcnNvbnNFbnRyeRJgChpsb2NhbF9pMThuX2F0dGFjaG1lbnRzX21hcBgMIAEoCzI8LmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LkxvY2FsSTE4bkF0dGFjaG1lbnRzTWFwEkAKBmF1ZGlvcxgNIAMoCzIwLmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LkF1ZGlvc0VudHJ5EkAKBnZpZGVvcxgOIAMoCzIwLmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LlZpZGVvc0VudHJ5GoMBCgpQZXJzb25JbmZvEhEKCXBlcnNvbl9pZBgBIAEoCRIPCgdjb250ZW50GAIgASgJEj0KBHR5cGUYAyABKA4yLy5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQXR0YWNobWVudC5QZXJzb25UeXBlEhIKCmF2YXRhcl9rZXkYBCABKAkaQgoKT3B0aW9uVXNlchIPCgd1c2VyX2lkGAEgASgJEg8KB2NvbnRlbnQYAiABKAkSEgoKYXZhdGFyX2tleRgDIAEoCRpWCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSNgoFdmFsdWUYAiABKAsyJy5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuSW1hZ2VQcm9wZXJ0eToCOAEaVAoMQXRVc2Vyc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5BdFByb3BlcnR5OgI4ARpjChBPcHRpb25Vc2Vyc0VudHJ5EgsKA2tleRgBIAEoCRI+CgV2YWx1ZRgCIAEoCzIvLmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50Lk9wdGlvblVzZXI6AjgBGrcFCg5TdW1tYXJ5Q29udGVudBJHCgVpdGVtcxgBIAMoCzI4LmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LlN1bW1hcnlDb250ZW50Lkl0ZW0a2wQKBEl0ZW0SDgoEdGV4dBgBIAEoCUgAEk8KBWltYWdlGAIgASgLMj4uZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuU3VtbWFyeUNvbnRlbnQuSXRlbS5JbWFnZUgAEjcKB2F0X3VzZXIYAyABKAsyJC5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuQXRQcm9wZXJ0eUgAElMKB2Vtb3Rpb24YBCABKAsyQC5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQXR0YWNobWVudC5TdW1tYXJ5Q29udGVudC5JdGVtLkVtb3Rpb25IABJaCgtwZXJzb25fbGlzdBgFIAEoCzJDLmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LlN1bW1hcnlDb250ZW50Lkl0ZW0uUGVyc29uTGlzdEgAElwKDGkxOG5fY29udGVudBgGIAEoCzJELmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LlN1bW1hcnlDb250ZW50Lkl0ZW0uSTE4TkNvbnRlbnRIABoHCgVJbWFnZRoWCgdFbW90aW9uEgsKA2tleRgBIAIoCRpOCgpQZXJzb25MaXN0EkAKB3BlcnNvbnMYASADKAsyLy5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQXR0YWNobWVudC5QZXJzb25JbmZvGjAKC0kxOE5Db250ZW50EgsKA2tleRgBIAIoCRIUCgxkZWZhdWx0VmFsdWUYAiABKAlCBwoFRW50cnkaPAoaQ29tcG9uZW50U3RhdHVzQnlOYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpfCgxQZXJzb25zRW50cnkSCwoDa2V5GAEgASgJEj4KBXZhbHVlGAIgASgLMi8uZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuUGVyc29uSW5mbzoCOAEaEwoES2V5cxILCgNrZXkYASADKAkaswEKB0VsZW1NYXASTAoIaW5uZXJNYXAYASADKAsyOi5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQXR0YWNobWVudC5FbGVtTWFwLklubmVyTWFwRW50cnkaWgoNSW5uZXJNYXBFbnRyeRILCgNrZXkYASABKAkSOAoFdmFsdWUYAiABKAsyKS5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQXR0YWNobWVudC5LZXlzOgI4ARqiAwoXTG9jYWxJMThuQXR0YWNobWVudHNNYXASZAoMaW1hZ2VLZXlzTWFwGAEgAygLMk4uZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuTG9jYWxJMThuQXR0YWNobWVudHNNYXAuSW1hZ2VLZXlzTWFwRW50cnkSXgoJYXRLZXlzTWFwGAIgAygLMksuZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuTG9jYWxJMThuQXR0YWNobWVudHNNYXAuQXRLZXlzTWFwRW50cnkaYQoRSW1hZ2VLZXlzTWFwRW50cnkSCwoDa2V5GAEgASgJEjsKBXZhbHVlGAIgASgLMiwuZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuRWxlbU1hcDoCOAEaXgoOQXRLZXlzTWFwRW50cnkSCwoDa2V5GAEgASgJEjsKBXZhbHVlGAIgASgLMiwuZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuRWxlbU1hcDoCOAEaxAMKCVZpc2l0SW5mbxJGCgpzY2VuZV90eXBlGAEgASgOMjIuZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuRG93bmxvYWRTY2VuZRJECgtlbnRpdHlfdHlwZRgGIAEoDjIvLmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LkVudGl0eVR5cGUSEQoJZW50aXR5X2lkGAIgASgJEhQKDGlubmVyX21zZ19pZBgDIAEoAxIVCg1hdXRoX2ZpbGVfa2V5GAQgASgJEkkKBmltX2V4dBgHIAMoCzI5LmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LlZpc2l0SW5mby5JbUV4dEVudHJ5EkQKA2V4dBgFIAMoCzI3LmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LlZpc2l0SW5mby5FeHRFbnRyeRosCgpJbUV4dEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKgoIRXh0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARqNAQoJQXVkaW9JbmZvEgsKA2tleRgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaXplGAMgASgDEg8KB2ZzX3VuaXQYBCABKAkSQgoKdmlzaXRfaW5mbxgFIAEoCzIuLmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LlZpc2l0SW5mbxpdCgtBdWRpb3NFbnRyeRILCgNrZXkYASABKAkSPQoFdmFsdWUYAiABKAsyLi5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQXR0YWNobWVudC5BdWRpb0luZm86AjgBGpsBCglWaWRlb0luZm8SCwoDa2V5GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEgwKBHNpemUYAyABKAMSDAoEbWltZRgEIAEoCRIPCgdmc191bml0GAUgASgJEkIKCnZpc2l0X2luZm8YBiABKAsyLi5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQXR0YWNobWVudC5WaXNpdEluZm8aXQoLVmlkZW9zRW50cnkSCwoDa2V5GAEgASgJEj0KBXZhbHVlGAIgASgLMi4uZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkF0dGFjaG1lbnQuVmlkZW9JbmZvOgI4ASItCgpQZXJzb25UeXBlEgsKB1VOS05PV04QABIICgRVU0VSEAESCAoEQ0hBVBACIqwBCg1Eb3dubG9hZFNjZW5lEhoKFlVOS05PV05fRE9XTkxPQURfU0NFTkUQABIOCgpDSEFUX1NDRU5FEAESDAoIRkFWT1JJVEUQAhIICgRUT0RPEAMSCwoHTW9tZW50cxAEEggKBE1hcmsQBRILCgdNZXNzYWdlEAYSDwoLSW1GZWVkQXVkaW8QBxIPCgtNZXNzYWdlTGluaxAIEhEKDVVuaXZlcnNhbENhcmQQCSL4AgoKRW50aXR5VHlwZRIVChFFbnRpdHlUeXBlVW5rbm93bhAAEhIKDkVudGl0eVR5cGVDSEFUEAESEwoPRW50aXR5VHlwZUVNQUlMEAISEgoORW50aXR5VHlwZVRPRE8QAxIVChFFbnRpdHlUeXBlTU9NRU5UUxAEEhYKEkVudGl0eVR5cGVDQUxFTkRBUhAFEh4KGkVudGl0eVR5cGVWQ0JSRUFLT1VUVU5JUVVFEAYSHwobRW50aXR5VHlwZVZDQlJFQUtPVVRNRUVUSU5HEAcSGAoURW50aXR5VHlwZVZDRkVFREJBQ0sQCBIaChZFbnRpdHlUeXBlUHJldmlld1Rva2VuEAkSFQoRRW50aXR5VHlwZU1lc3NhZ2UQChISCg5FbnRpdHlUeXBlRmxhZxALEhYKEkVudGl0eVR5cGVGYXZvcmF0ZRAMEhUKEUVudGl0eVR5cGVBSVJvdW5kEA0SFgoSRW50aXR5VHlwZUNhcmRGaWxlEBAaVQoRVGVtcGxhdGVKU1ZlcnNpb24SFwoPYW5kcm9pZF92ZXJzaW9uGAEgASgDEhMKC2lvc192ZXJzaW9uGAIgASgDEhIKCnBjX3ZlcnNpb24YAyABKAMatAIKEEpzb25DYXJkSTE4bkluZm8SDgoGbG9jYWxlGAEgASgJEhAKCGkxOG5fa2V5GAIgASgJElAKDmkxOG5fanNvbl9jYXJkGAMgAygLMjguZW50aXRpZXMuQ2FyZENvbnRlbnQuSnNvbkNhcmRJMThuSW5mby5JMThuSnNvbkNhcmRFbnRyeRJGCglpMThuX3R5cGUYBCABKA4yMy5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQ2FyZEkxOG5JbmZvLkkxOG5UeXBlRW51bRozChFJMThuSnNvbkNhcmRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIi8KDEkxOG5UeXBlRW51bRIPCgtHTE9CQUxfSTE4ThAAEg4KCkxPQ0FMX0kxOE4QARo6CglQYXRjaEluZm8SFgoOdGFyZ2V0X3ZlcnNpb24YASABKAMSFQoNcGF0Y2hfdmVyc2lvbhgCIAEoAxq4BQoMQ2FyZFBhY2tJbmZvEhEKCWNhcmRfdGV4dBgBIAMoCRJJCgxib2R5X3N1bW1hcnkYAiABKAsyMy5lbnRpdGllcy5DYXJkQ29udGVudC5Kc29uQXR0YWNobWVudC5TdW1tYXJ5Q29udGVudBJLCg5oZWFkZXJfc3VtbWFyeRgDIAEoCzIzLmVudGl0aWVzLkNhcmRDb250ZW50Lkpzb25BdHRhY2htZW50LlN1bW1hcnlDb250ZW50ElEKEGNvbnRlbnRfbGFuZ3VhZ2UYBCADKAsyNy5lbnRpdGllcy5DYXJkQ29udGVudC5DYXJkUGFja0luZm8uQ29udGVudExhbmd1YWdlRW50cnkSRwoLbG9jYWxlX2luZm8YBSADKAsyMi5lbnRpdGllcy5DYXJkQ29udGVudC5DYXJkUGFja0luZm8uTG9jYWxlSW5mb0VudHJ5EiEKGW5vbl9pMThuX2NvbnRlbnRfbGFuZ3VhZ2UYBiABKAkSIgoabm9uX2kxOG5fY29udGVudF9sYW5ndWFnZXMYByADKAkSEwoLYXRfdXNlcl9pZHMYCCADKAMSEQoJaXNfYXRfYWxsGAkgASgIEhoKEnJlcGxhY2VkX2pzb25fY2FyZBgKIAEoCRITCgthbGxfbG9jYWxlcxgLIAMoCRo2ChRDb250ZW50TGFuZ3VhZ2VFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGicKCkxvY2FsZUluZm8SGQoRY29udGVudF9sYW5ndWFnZXMYASADKAkaYAoPTG9jYWxlSW5mb0VudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLmVudGl0aWVzLkNhcmRDb250ZW50LkNhcmRQYWNrSW5mby5Mb2NhbGVJbmZvOgI4ARpECgxBY3Rpb25zRW50cnkSCwoDa2V5GAEgASgJEiMKBXZhbHVlGAIgASgLMhQuZW50aXRpZXMuQ2FyZEFjdGlvbjoCOAEaMwoRQ2FyZERlc2NJMThuRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpaChpDbGVhblJlc291cmNlS2V5U2NlbmVFbnRyeRILCgNrZXkYASABKAkSKwoFdmFsdWUYAiABKA4yHC5lbnRpdGllcy5SZXNvdXJjZUNsZWFuU2NlbmU6AjgBIkYKBFR5cGUSEAoMVU5LTk9XTl9UWVBFEAASCAoEVk9URRABEggKBFRFWFQQAhIJCgVWQ0hBVBADEg0KCU9QRU5fQ0FSRBAEIjEKCUV4dHJhVHlwZRILCgdVTktOT1dOEAASFwoTU0VOREVSX0NBTk5PVF9DTElDSxABIkYKClNvdXJjZVR5cGUSEgoOVU5LTk9XTl9Tb3VyY2UQABILCgdBUFBfQk9UEAESDQoJU1VJVEVfQk9UEAISCAoEVVNFUhADIikKCERhdGFUeXBlEggKBENhcmQQABITCg9BY3Rpb25TeW5jUGF0Y2gQASK9BQoST3BlbkNhcmRBdHRhY2htZW50EjgKBmltYWdlcxgBIAMoCzIoLmVudGl0aWVzLk9wZW5DYXJkQXR0YWNobWVudC5JbWFnZXNFbnRyeRI7CghhdF91c2VycxgCIAMoCzIpLmVudGl0aWVzLk9wZW5DYXJkQXR0YWNobWVudC5BdFVzZXJzRW50cnkSQwoMb3B0aW9uX3VzZXJzGAMgAygLMi0uZW50aXRpZXMuT3BlbkNhcmRBdHRhY2htZW50Lk9wdGlvblVzZXJzRW50cnkSSgoQZGlnZXN0X2hhc2hfdGFncxgEIAMoCzIwLmVudGl0aWVzLk9wZW5DYXJkQXR0YWNobWVudC5EaWdlc3RIYXNoVGFnc0VudHJ5EhIKCmltYWdlX2tleXMYBSADKAkSGQoRY2FyZF9jb250ZW50X2hhc2gYBiACKAkaLgoKT3B0aW9uVXNlchIPCgd1c2VyX2lkGAEgASgJEg8KB2NvbnRlbnQYAiABKAkaVgoLSW1hZ2VzRW50cnkSCwoDa2V5GAEgASgJEjYKBXZhbHVlGAIgASgLMicuZW50aXRpZXMuUmljaFRleHRFbGVtZW50LkltYWdlUHJvcGVydHk6AjgBGlQKDEF0VXNlcnNFbnRyeRILCgNrZXkYASABKAkSMwoFdmFsdWUYAiABKAsyJC5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuQXRQcm9wZXJ0eToCOAEaWwoQT3B0aW9uVXNlcnNFbnRyeRILCgNrZXkYASABKAkSNgoFdmFsdWUYAiABKAsyJy5lbnRpdGllcy5PcGVuQ2FyZEF0dGFjaG1lbnQuT3B0aW9uVXNlcjoCOAEaNQoTRGlnZXN0SGFzaFRhZ3NFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBImUKEENhcmRBY3Rpb25QYWNrZXQSCwoDY2lkGAEgASgJEjMKCnBhcmFtZXRlcnMYAiABKAsyHy5lbnRpdGllcy5DYXJkQWN0aW9uLlBhcmFtZXRlcnMSDwoHcGF5bG9hZBgDIAEoDCLdBwoKQ2FyZEFjdGlvbhILCgN1cmwYASACKAkSKwoGbWV0aG9kGAIgAigOMhsuZW50aXRpZXMuQ2FyZEFjdGlvbi5NZXRob2QSRAoTcmVxdWlyZWRfcGFyYW1ldGVycxgDIAEoCzInLmVudGl0aWVzLkNhcmRBY3Rpb24uUmVxdWlyZWRQYXJhbWV0ZXJzEjMKCnBhcmFtZXRlcnMYBCABKAsyHy5lbnRpdGllcy5DYXJkQWN0aW9uLlBhcmFtZXRlcnMSHQoDY21kGAUgASgOMhAuaW1wcm90by5Db21tYW5kEioKBnBhY2tldBgGIAEoCzIaLmVudGl0aWVzLkNhcmRBY3Rpb25QYWNrZXQSKgoIb3Blbl91cmwYByABKAsyGC5lbnRpdGllcy5DYXJkQWN0aW9uLlVybBpdCgNVcmwSCwoDdXJsGAEgASgJEg8KB2lvc191cmwYAiABKAkSEwoLYW5kcm9pZF91cmwYAyABKAkSDgoGcGNfdXJsGAQgASgJEhMKC2hhcm1vbnlfdXJsGAUgASgJGpIBChJSZXF1aXJlZFBhcmFtZXRlcnMSHQoObmVlZF91c2VyX2luZm8YASABKAg6BWZhbHNlEiAKEW5lZWRfbWVzc2FnZV9pbmZvGAIgASgIOgVmYWxzZRIbCgxuZWVkX3VzZXJfaWQYAyABKAg6BWZhbHNlEh4KD25lZWRfbWVzc2FnZV9pZBgEIAEoCDoFZmFsc2UaIAoIVXNlckluZm8SFAoMdXNlcl9vcGVuX2lkGAEgASgJGiYKC01lc3NhZ2VJbmZvEhcKD21lc3NhZ2Vfb3Blbl9pZBgCIAEoCRqTAgoKUGFyYW1ldGVycxJDCgpwYXJhbWV0ZXJzGAEgAygLMi8uZW50aXRpZXMuQ2FyZEFjdGlvbi5QYXJhbWV0ZXJzLlBhcmFtZXRlcnNFbnRyeRIwCgl1c2VyX2luZm8YAiABKAsyHS5lbnRpdGllcy5DYXJkQWN0aW9uLlVzZXJJbmZvEjYKDG1lc3NhZ2VfaW5mbxgDIAEoCzIgLmVudGl0aWVzLkNhcmRBY3Rpb24uTWVzc2FnZUluZm8SDwoHdXNlcl9pZBgEIAEoCRISCgptZXNzYWdlX2lkGAUgASgJGjEKD1BhcmFtZXRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIk8KBk1ldGhvZBISCg5VTktOT1dOX01FVEhPRBAAEgcKA0dFVBABEggKBFBPU1QQAhIQCgxMQVJLX0NPTU1BTkQQAxIMCghPUEVOX1VSTBAEIopRCg9SaWNoVGV4dEVsZW1lbnQSKgoDdGFnGAEgAigOMh0uZW50aXRpZXMuUmljaFRleHRFbGVtZW50LlRhZxIzCgVzdHlsZRgCIAMoCzIkLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5TdHlsZUVudHJ5EhAKCHByb3BlcnR5GAMgAigMEhEKCWNoaWxkX2lkcxgEIAMoCRISCgpzdHlsZV9rZXlzGAUgAygJEhcKD3VwZ3JhZGVfZWxlbWVudBgGIAEoDBoTChFQYXJhZ3JhcGhQcm9wZXJ0eRoQCg5GaWd1cmVQcm9wZXJ0eRpLCgxUZXh0UHJvcGVydHkSDwoHY29udGVudBgBIAIoCRIQCghpMThuX2tleRgCIAEoCRIYCg1udW1iZXJPZkxpbmVzGAMgASgFOgEwGjMKDkl0YWxpY1Byb3BlcnR5Eg8KB2NvbnRlbnQYASACKAkSEAoIaTE4bl9rZXkYAiABKAkaMQoMQm9sZFByb3BlcnR5Eg8KB2NvbnRlbnQYASACKAkSEAoIaTE4bl9rZXkYAiABKAkaNgoRVW5kZXJsaW5lUHJvcGVydHkSDwoHY29udGVudBgBIAIoCRIQCghpMThuX2tleRgCIAEoCRqUAwoOQW5jaG9yUHJvcGVydHkSDAoEaHJlZhgBIAIoCRIPCgdjb250ZW50GAIgAigJEhQKDHRleHRfY29udGVudBgDIAEoCRIpCgtzcGVjaWFsX3VybBgEIAEoDjIULmVudGl0aWVzLlNwZWNpYWxVUkwSEAoIaTE4bl9rZXkYBSABKAkSEAoIaW9zX2hyZWYYBiABKAkSFAoMYW5kcm9pZF9ocmVmGAcgASgJEg8KB3BjX2hyZWYYCCABKAkSEQoJaXNfY3VzdG9tGAkgASgIEj0KBXNjZW5lGAogASgOMi4uZW50aXRpZXMuUmljaFRleHRFbGVtZW50LkFuY2hvclByb3BlcnR5LlNjZW5lEiEKEmNsb3NlX2NhcmRfcHJldmlldxgLIAEoCDoFZmFsc2UiYgoFU2NlbmUSCwoHVU5LTk9XThAAEhUKEUNPUFlfUEFTVEVfQU5DSE9SEAESEwoPQ09QWV9QQVNURV9URVhUEAISDwoLQ1VTVE9NX0VESVQQAxIPCgtTRVZFUl9QQVJTRRAEGjIKCkF0UHJvcGVydHkSDwoHdXNlcl9pZBgBIAIoCRITCgdjb250ZW50GAIgAigJQgIYARrZAQoTQXRVc2VyR3JvdXBQcm9wZXJ0eRIVCg11c2VyX2dyb3VwX2lkGAEgASgDEhoKEmRlZmF1bHRfZ3JvdXBfbmFtZRgCIAEoCRJZCg9pMThuX2dyb3VwX25hbWUYAyADKAsyQC5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuQXRVc2VyR3JvdXBQcm9wZXJ0eS5JMThuR3JvdXBOYW1lRW50cnkaNAoSSTE4bkdyb3VwTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaVwoPTWVudGlvblByb3BlcnR5EjMKBGl0ZW0YASACKAsyJS5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuTWVudGlvbkl0ZW0SDwoHY29udGVudBgCIAIoCRqmAQoLTWVudGlvbkl0ZW0SCgoCaWQYASACKAkSPwoEdHlwZRgCIAIoDjIxLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5NZW50aW9uSXRlbS5NZW50aW9uVHlwZSJKCgtNZW50aW9uVHlwZRIYChRVTktOT1dOX01FTlRJT05fVFlQRRAAEgwKCEhBU0hfVEFHEAESEwoPTU9NRU5UU19IQVNIVEFHEAIa/AQKDUltYWdlUHJvcGVydHkSDwoFdG9rZW4YAiABKAk6ABINCgNhbHQYCiABKAk6ABIWCgxhbHRfaTE4bl9rZXkYCyABKAk6ABIeCg9pbWdfY2FuX3ByZXZpZXcYDCABKAg6BWZhbHNlEiAKBmNpcGhlchgDIAEoCzIQLmVudGl0aWVzLkNpcGhlchIqCgtjaXBoZXJfdHlwZRgTIAEoDjIVLmVudGl0aWVzLkNyeXB0by5UeXBlEhQKCm9yaWdpbl9rZXkYBCABKAk6ABIPCgdmc191bml0GAkgASgJEhAKBHVybHMYASADKAlCAhgBEhQKCm1pZGRsZV9rZXkYBSABKAk6ABITCgl0aHVtYl9rZXkYBiABKAk6ABIXCgxvcmlnaW5fd2lkdGgYByABKAU6ATASGAoNb3JpZ2luX2hlaWdodBgIIAEoBToBMBInCg50aHVtYm5haWxfd2VicBgNIAEoCzIPLmVudGl0aWVzLkltYWdlEiQKC21pZGRsZV93ZWJwGA4gASgLMg8uZW50aXRpZXMuSW1hZ2USIwoKbWlkZGxlX21wNBgPIAEoCzIPLmVudGl0aWVzLkltYWdlEh4KBWNvdmVyGBAgASgLMg8uZW50aXRpZXMuSW1hZ2USIwoFaW1hZ2UYESABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYyEhQKDGN1c3RvbV93aWR0aBgSIAEoBRIYChBpc19vcmlnaW5fc291cmNlGBQgASgIEhMKC29yaWdpbl9zaXplGBUgASgEEhEKCXNob3dfbW9kZRgWIAEoBRINCgV3aWR0aBgXIAEoDRIOCgZoZWlnaHQYGCABKA0aHwoQUmVhY3Rpb25Qcm9wZXJ0eRILCgNrZXkYASACKAkaHgoPRW1vdGlvblByb3BlcnR5EgsKA2tleRgBIAIoCRrkAQoOQnV0dG9uUHJvcGVydHkSEQoJYWN0aW9uX2lkGAEgASgJEhYKB2Rpc2FibGUYAiABKAg6BWZhbHNlEhUKBmFjdGl2ZRgDIAEoCDoFZmFsc2USQAoHY29uZmlybRgEIAEoCzIvLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5CdXR0b25Db25maXJtUHJvcGVydHkSQAoHbG9hZGluZxgFIAEoCzIvLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5CdXR0b25Mb2FkaW5nUHJvcGVydHkSDAoEbW9kZRgGIAEoCRq5AQoVQnV0dG9uQ29uZmlybVByb3BlcnR5Eg0KBXRpdGxlGAEgAigJEgwKBHRleHQYAiACKAkSDwoHY29uZmlybRgDIAIoCRIPCgdkaXNtaXNzGAQgAigJEhYKDnRpdGxlX2kxOG5fa2V5GAUgASgJEhUKDXRleHRfaTE4bl9rZXkYBiABKAkSGAoQY29uZmlybV9pMThuX2tleRgHIAEoCRIYChBkaXNtaXNzX2kxOG5fa2V5GAggASgJGo4BChVCdXR0b25Mb2FkaW5nUHJvcGVydHkSDQoFYmVnaW4YASACKAkSDwoHc3VjY2VzcxgCIAIoCRIMCgRmYWlsGAMgAigJEhYKDmJlZ2luX2kxOG5fa2V5GAQgASgJEhgKEHN1Y2Nlc3NfaTE4bl9rZXkYBSABKAkSFQoNZmFpbF9pMThuX2tleRgGIAEoCRpCCg5TZWxlY3RQcm9wZXJ0eRIXCgxtaW5fcGlja19udW0YBCABKAU6ATESFwoMbWF4X3BpY2tfbnVtGAUgASgFOgExGtsCChJTZWxlY3RNZW51UHJvcGVydHkSPwoEdHlwZRgBIAEoDjIxLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5TZWxlY3RNZW51UHJvcGVydHkuVHlwZRIRCglhY3Rpb25faWQYAiABKAkSFAoMcGxhY2VfaG9sZGVyGAMgASgJEh0KFXBsYWNlX2hvbGRlcl9pMThuX2tleRgEIAEoCRIWCg5pbml0aWFsX29wdGlvbhgFIAEoCRI1CgdvcHRpb25zGAYgAygLMiQuZW50aXRpZXMuUmljaFRleHRFbGVtZW50Lk1lbnVPcHRpb24SQAoHY29uZmlybRgHIAEoCzIvLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5CdXR0b25Db25maXJtUHJvcGVydHkiKwoEVHlwZRILCgdVTktOT1dOEAASCgoGU1RBVElDEAESCgoGUEVSU09OEAIagQEKCk1lbnVPcHRpb24SDAoEdGV4dBgBIAEoCRIVCg10ZXh0X2kxOG5fa2V5GAIgASgJEg0KBXZhbHVlGAMgASgJEiUKA3VybBgEIAEoCzIYLmVudGl0aWVzLkNhcmRBY3Rpb24uVXJsEhgKEG9wdGlvbl9hY3Rpb25faWQYBSABKAkaogEKFE92ZXJmbG93TWVudVByb3BlcnR5EhEKCWFjdGlvbl9pZBgBIAEoCRI1CgdvcHRpb25zGAIgAygLMiQuZW50aXRpZXMuUmljaFRleHRFbGVtZW50Lk1lbnVPcHRpb24SQAoHY29uZmlybRgDIAEoCzIvLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5CdXR0b25Db25maXJtUHJvcGVydHkatAEKEkRhdGVQaWNrZXJQcm9wZXJ0eRIRCglhY3Rpb25faWQYASABKAkSFAoMcGxhY2VfaG9sZGVyGAIgASgJEh0KFXBsYWNlX2hvbGRlcl9pMThuX2tleRgDIAEoCRIUCgxpbml0aWFsX2RhdGUYBCABKAkSQAoHY29uZmlybRgFIAEoCzIvLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5CdXR0b25Db25maXJtUHJvcGVydHkatAEKElRpbWVQaWNrZXJQcm9wZXJ0eRIRCglhY3Rpb25faWQYASABKAkSFAoMcGxhY2VfaG9sZGVyGAIgASgJEh0KFXBsYWNlX2hvbGRlcl9pMThuX2tleRgDIAEoCRIUCgxpbml0aWFsX3RpbWUYBCABKAkSQAoHY29uZmlybRgFIAEoCzIvLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5CdXR0b25Db25maXJtUHJvcGVydHkavAEKFkRhdGV0aW1lUGlja2VyUHJvcGVydHkSEQoJYWN0aW9uX2lkGAEgASgJEhQKDHBsYWNlX2hvbGRlchgCIAEoCRIdChVwbGFjZV9ob2xkZXJfaTE4bl9rZXkYAyABKAkSGAoQaW5pdGlhbF9kYXRldGltZRgEIAEoCRJACgdjb25maXJtGAUgASgLMi8uZW50aXRpZXMuUmljaFRleHRFbGVtZW50LkJ1dHRvbkNvbmZpcm1Qcm9wZXJ0eRr0AQocUHJvZ3Jlc3NTZWxlY3RPcHRpb25Qcm9wZXJ0eRIRCglhY3Rpb25faWQYASABKAkSGQoRYWN0aW9uX3BhcmFtX25hbWUYAiABKAkSGgoSYWN0aW9uX3BhcmFtX3ZhbHVlGAMgASgJEhYKB2Rpc2FibGUYBCABKAg6BWZhbHNlEhcKCHNlbGVjdGVkGAUgASgIOgVmYWxzZRITCgtvcHRpb25fY2FzZRgGIAEoCRIPCgdjb250ZW50GAcgASgJEhoKEm51bWJlcl9vZl9zZWxlY3RlZBgIIAEoBRIXCg9udW1iZXJfb2ZfdG90YWwYCSABKAUaDQoLRGl2UHJvcGVydHkaMAoUVGV4dGFibGVBcmVhUHJvcGVydHkSGAoNbnVtYmVyT2ZMaW5lcxgBIAEoBToBMBp+CgxUaW1lUHJvcGVydHkSHQoVbWlsbGlzZWNvbmRfc2luY2UxOTcwGAEgAigDEiwKBmZvcm1hdBgCIAEoCTocWVlZWS5NTS5ERChkZGRkKSBISDptbSAoR01UKRIMCgRsaW5rGAMgASgJEhMKC2Zvcm1hdF90eXBlGAQgASgJGoYCCgxMaW5rUHJvcGVydHkSCwoDdXJsGAEgASgJEg8KB2lvc191cmwYAiABKAkSEwoLYW5kcm9pZF91cmwYAyABKAkSDgoGcGNfdXJsGAQgASgJEikKC3NwZWNpYWxfdXJsGAUgASgOMhQuZW50aXRpZXMuU3BlY2lhbFVSTBI/CgVzY2VuZRgGIAEoDjIwLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5MaW5rUHJvcGVydHkuTGlua1NjZW5lIkcKCUxpbmtTY2VuZRILCgdVTktOT1dOEAASDAoIQ2FyZExpbmsQARIPCgtDb250ZW50TGluaxACEg4KCkZvb3RlckxpbmsQAxqTAgoNTWVkaWFQcm9wZXJ0eRILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIMCgRzaXplGAMgASgDEgwKBG1pbWUYBCABKAkSPgoGc291cmNlGAUgASgOMi4uZW50aXRpZXMuUmljaFRleHRFbGVtZW50Lk1lZGlhUHJvcGVydHkuU291cmNlEiEKBWltYWdlGAYgASgLMhIuZW50aXRpZXMuSW1hZ2VTZXQSEAoIZHVyYXRpb24YByABKAUSDwoHZnNfdW5pdBgIIAEoCRIUCgxjcnlwdG9fdG9rZW4YCSABKAkSDgoGY3J5cHRvGAogASgMIh8KBlNvdXJjZRILCgdVTktOT1dOEAASCAoETEFSSxABGg4KDERvY3NQcm9wZXJ0eRoMCgpIMVByb3BlcnR5GgwKCkgyUHJvcGVydHkaDAoKSDNQcm9wZXJ0eRoMCgpINFByb3BlcnR5GgwKCkg1UHJvcGVydHkaDAoKSDZQcm9wZXJ0eRp5CgpVTFByb3BlcnR5EjcKBHR5cGUYASABKA4yKS5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuVUxQcm9wZXJ0eS5UeXBlIjIKBFR5cGUSCAoERElTQxAAEgoKBkNJUkNMRRABEgoKBlNRVUFSRRACEggKBE5PTkUQAxrBAQoKT0xQcm9wZXJ0eRI3CgR0eXBlGAEgASgOMikuZW50aXRpZXMuUmljaFRleHRFbGVtZW50Lk9MUHJvcGVydHkuVHlwZRIQCgVzdGFydBgCIAEoBToBMSJoCgRUeXBlEgoKBk5VTUJFUhAAEg8KC0xPV0VSQ0FTRV9BEAESDwoLVVBQRVJDQVNFX0EQAhITCg9MT1dFUkNBU0VfUk9NQU4QAxITCg9VUFBFUkNBU0VfUk9NQU4QBBIICgROT05FEAUaDAoKTElQcm9wZXJ0eRoPCg1RdW90ZVByb3BlcnR5Gg4KDENvZGVQcm9wZXJ0eRr6BQoRQ29kZUJsb2NrUHJvcGVydHkSRgoIbGFuZ3VhZ2UYASABKA4yNC5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuQ29kZUJsb2NrUHJvcGVydHkuTGFuZ3VhZ2USDwoHY29udGVudBgCIAEoCRJICgpzdHlsZV9yZWZzGAMgAygLMjQuZW50aXRpZXMuUmljaFRleHRFbGVtZW50LkNvZGVCbG9ja1Byb3BlcnR5LlN0eWxlUmVmEkEKBnN0eWxlcxgEIAMoCzIxLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5Db2RlQmxvY2tQcm9wZXJ0eS5TdHlsZRppCgVTdHlsZRJDCgR0eXBlGAEgASgOMjUuZW50aXRpZXMuUmljaFRleHRFbGVtZW50LkNvZGVCbG9ja1Byb3BlcnR5LlN0eWxlVHlwZRIMCgRuYW1lGAIgASgJEg0KBXZhbHVlGAMgASgJGkUKCFN0eWxlUmVmEhMKCGxvY2F0aW9uGAEgASgFOgEwEhEKBmxlbmd0aBgCIAEoBToBMBIRCglzdHlsZV9pZHMYAyADKAUiowIKCExhbmd1YWdlEgYKAkpTEAASCgoGQVBBQ0hFEAESCAoEQkFTSBACEgYKAkNTEAMSDQoJQ1BMVVNQTFVTEAQSEAoMQ09GRkVfU0NSSVBUEAUSCAoESFRNTBAGEgcKA1hNTBAHEggKBEhUVFAQCBIICgRKU09OEAkSCAoESkFWQRAKEgwKCE1BS0VGSUxFEAsSDAoITUFSS0RPV04QDBIJCgVOR0lOWBANEggKBE9CSkMQDhIHCgNQSFAQDxIICgRQRVJMEBASCgoGUFlUSE9OEBESCAoEUlVCWRASEgcKA1NRTBATEgkKBVNIRUxMEBQSBgoCR08QFRIICgRTQ1NTEBYSBwoDTFVBEBcSCgoGREpBTkdPEBgSCgoGS09UTElOEBkiJwoJU3R5bGVUeXBlEg0KCUNVU1RPTUlaRRAAEgsKB0dSQU1NQVIQARrYEAoTQ29kZUJsb2NrVjJQcm9wZXJ0eRJICghsYW5ndWFnZRgBIAEoDjI2LmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5Db2RlQmxvY2tWMlByb3BlcnR5Lkxhbmd1YWdlEksKCGNvbnRlbnRzGAIgAygLMjkuZW50aXRpZXMuUmljaFRleHRFbGVtZW50LkNvZGVCbG9ja1YyUHJvcGVydHkuTGluZUNvbnRlbnQSEQoJd29yZF93cmFwGAQgASgIEg8KB3ZlcnNpb24YBSABKAUa4gEKB0NvbnRlbnQSDwoHY29udGVudBgBIAEoCRJHCgR0eXBlGAIgASgOMjkuZW50aXRpZXMuUmljaFRleHRFbGVtZW50LkNvZGVCbG9ja1YyUHJvcGVydHkuQ29udGVudFR5cGUSTwoFc3R5bGUYAyADKAsyQC5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuQ29kZUJsb2NrVjJQcm9wZXJ0eS5Db250ZW50LlN0eWxlRW50cnkaLAoKU3R5bGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGlYKC0xpbmVDb250ZW50EkcKCGNvbnRlbnRzGAEgAygLMjUuZW50aXRpZXMuUmljaFRleHRFbGVtZW50LkNvZGVCbG9ja1YyUHJvcGVydHkuQ29udGVudCLCBgoITGFuZ3VhZ2USDgoKUExBSU5fVEVYVBAAEggKBEFCQVAQARIHCgNBREEQAhIKCgZBUEFDSEUQAxIICgRBUEVYEAQSDAoIQVNTRU1CTFkQBRIICgRCQVNIEAYSCwoHQ19TSEFSUBAHEgcKA0NQUBAIEgUKAUMQCRIJCgVDTUFLRRAKEgkKBUNPQk9MEAsSBwoDQ1NTEAwSEQoNQ09GRkVFX1NDUklQVBANEgUKAUQQDhIICgREQVJUEA8SCgoGREVMUEhJEBASCAoERElGRhAREgoKBkRKQU5HTxASEg8KC0RPQ0tFUl9GSUxFEBMSCgoGRVJMQU5HEBQSCwoHRk9SVFJBThAVEgsKB0dIRVJLSU4QFhIGCgJHTxAXEgsKB0dSQVBIUUwQGBIKCgZHUk9PVlkQGRIICgRIVE1MEBoSDAoISFRNTEJBUlMQGxIICgRIVFRQEBwSCwoHSEFTS0VMTBAdEggKBEpTT04QHhIICgRKQVZBEB8SDgoKSkFWQVNDUklQVBAgEgkKBUpVTElBECESCgoGS09UTElOECISCQoFTEFURVgQIxIICgRMSVNQECQSBwoDTFVBECUSCgoGTUFUTEFCECYSDAoITUFLRUZJTEUQJxIMCghNQVJLRE9XThAoEgkKBU5HSU5YECkSDwoLT0JKRUNUSVZFX0MQKhIbChdPUEVOR0xfU0hBRElOR19MQU5HVUFHRRArEgcKA1BIUBAsEggKBFBFUkwQLRIOCgpQT1dFUlNIRUxMEC4SCgoGUFJPTE9HEC8SDgoKUFJPUEVSVElFUxAwEgwKCFBST1RPQlVGEDESCgoGUFlUSE9OEDISBQoBUhAzEggKBFJVQlkQNBIICgRSVVNUEDUSBwoDU0FTEDYSCAoEU0NTUxA3EgcKA1NRTBA4EgkKBVNDQUxBEDkSCgoGU0NIRU1FEDoSCQoFU0hFTEwQOxIMCghTT0xJRElUWRA8EgkKBVNXSUZUED0SCAoEVE9NTBA+EgoKBlRIUklGVBA/Eg4KClRZUEVTQ1JJUFQQQBIMCghWQlNDUklQVBBBEhAKDFZJU1VBTF9CQVNJQxBCEgcKA1hNTBBDEggKBFlBTUwQRCKDBgoLQ29udGVudFR5cGUSCAoEVEVYVBAAEgsKB0tFWVdPUkQQARIMCghCVUlMVF9JThACEggKBFRZUEUQAxILCgdMSVRFUkFMEAQSCgoGTlVNQkVSEAUSDAoIT1BFUkFUT1IQBhIPCgtQVU5DVFVBVElPThAHEgwKCFBST1BFUlRZEAgSCgoGUkVHRVhQEAkSCgoGU1RSSU5HEAoSDwoLQ0hBUl9FU0NBUEUQCxIJCgVTVUJTVBAMEgoKBlNZTUJPTBANEgkKBUNMQVNTEA4SDAoIRlVOQ1RJT04QDxIMCghWQVJJQUJMRRAQEhUKEVZBUklBQkxFX0xBTkdVQUdFEBESFQoRVkFSSUFCTEVfQ09OU1RBTlQQEhIJCgVUSVRMRRATEg8KC1RJVExFX0NMQVNTEBQSGQoVVElUTEVfQ0xBU1NfSU5IRVJJVEVEEBUSEgoOVElUTEVfRlVOQ1RJT04QFhIZChVUSVRMRV9GVU5DVElPTl9JTlZPS0UQFxIKCgZQQVJBTVMQGBILCgdDT01NRU5UEBkSCgoGRE9DVEFHEBoSCAoETUVUQRAbEg8KC01FVEFfUFJPTVBUEBwSEAoMTUVUQV9LRVlXT1JEEB0SDwoLTUVUQV9TVFJJTkcQHhILCgdTRUNUSU9OEB8SBwoDVEFHECASCAoETkFNRRAhEggKBEFUVFIQIhINCglBVFRSSUJVVEUQIxIKCgZCVUxMRVQQJBIICgRDT0RFECUSDAoIRU1QSEFTSVMQJhILCgdGT1JNVUxBECcSCAoETElOSxAoEgkKBVFVT1RFECkSEAoMU0VMRUNUT1JfVEFHECoSDwoLU0VMRUNUT1JfSUQQKxISCg5TRUxFQ1RPUl9DTEFTUxAsEhEKDVNFTEVDVE9SX0FUVFIQLRITCg9TRUxFQ1RPUl9QU0VVRE8QLhIQCgxURU1QTEFURV9UQUcQLxIVChFURU1QTEFURV9WQVJJQUJMRRAwEgwKCEFERElUSU9OEDESDAoIREVMRVRJT04QMhoMCgpIUlByb3BlcnR5GtUDChBNeUFJVG9vbFByb3BlcnR5Eg8KB3Rvb2xfaWQYASABKAkSFwoPdG9vbF9ydW50aW1lX2lkGAIgASgJEkEKBnN0YXR1cxgDIAEoDjIxLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5NeUFJVG9vbFByb3BlcnR5LlN0YXR1cxJLCglpMThuX25hbWUYBCADKAsyOC5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuTXlBSVRvb2xQcm9wZXJ0eS5JMThuTmFtZUVudHJ5EgwKBG5hbWUYBSABKAkSDAoEdGV4dBgGIAEoCRI9CgRpY29uGAcgASgOMi8uZW50aXRpZXMuUmljaFRleHRFbGVtZW50Lk15QUlUb29sUHJvcGVydHkuSWNvbhovCg1JMThuTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiLQoGU3RhdHVzEgoKBlJVTklORxAAEgsKB1NVQ0NFU1MQARIKCgZGQUlMRUQQAiJMCgRJY29uEgsKB0xPQURJTkcQABINCglBTkFMWVpJTkcQARIOCgpSRVRSSUVWSU5HEAISDgoKR0VORVJBVElORxADEggKBE5PTkUQBBqDAgoNVGFibGVQcm9wZXJ0eRI/Cgdjb2x1bW5zGAEgAygLMi4uZW50aXRpZXMuUmljaFRleHRFbGVtZW50LlRhYmxlUHJvcGVydHkuQ29sdW1uGrABCgZDb2x1bW4SDQoFd2lkdGgYASABKAUSQwoQaG9yaXpvbnRhbF9hbGlnbhgCIAEoDjIpLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5Ib3Jpem9udGFsQWxpZ24SPwoOdmVydGljYWxfYWxpZ24YAyABKA4yJy5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuVmVydGljYWxBbGlnbhIRCglpc19oZWFkZXIYBCABKAgaqwEKEFRhYmxlUm93UHJvcGVydHkSQwoQaG9yaXpvbnRhbF9hbGlnbhgBIAEoDjIpLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5Ib3Jpem9udGFsQWxpZ24SPwoOdmVydGljYWxfYWxpZ24YAiABKA4yJy5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQuVmVydGljYWxBbGlnbhIRCglpc19oZWFkZXIYAyABKAga1AEKEVRhYmxlQ2VsbFByb3BlcnR5EhIKB2NvbHNwYW4YASABKAU6ATESEgoHcm93c3BhbhgCIAEoBToBMRJDChBob3Jpem9udGFsX2FsaWduGAMgASgOMikuZW50aXRpZXMuUmljaFRleHRFbGVtZW50Lkhvcml6b250YWxBbGlnbhI/Cg52ZXJ0aWNhbF9hbGlnbhgEIAEoDjInLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5WZXJ0aWNhbEFsaWduEhEKCWlzX21lcmdlZBgFIAEoCBoRCg9Db2x1bW5zUHJvcGVydHkaHwoOQ29sdW1uUHJvcGVydHkSDQoFd2lkdGgYASABKAUaLAoKU3R5bGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIsUECgNUYWcSDwoLVU5LTk9XTl9UQUcQABIICgRURVhUEAESBwoDSU1HEAISBQoBUBADEgoKBkZJR1VSRRAEEgYKAkFUEAUSBQoBQRAGEgUKAUIQBxIFCgFJEAgSBQoBVRAJEgsKB0VNT1RJT04QChIKCgZCVVRUT04QCxIKCgZTRUxFQ1QQDBIaChZQUk9HUkVTU19TRUxFQ1RfT1BUSU9OEA0SBwoDRElWEA4SEQoNVEVYVEFCTEVfQVJFQRAPEggKBFRJTUUQEBIICgRMSU5LEBESCQoFTUVESUEQEhIOCgpTRUxFQ1RNRU5VEBMSEAoMT1ZFUkZMT1dNRU5VEBQSDgoKREFURVBJQ0tFUhAVEggKBERPQ1MQFhIGCgJIMRAXEgYKAkgyEBgSBgoCSDMQGRIGCgJVTBAaEgYKAk9MEBsSBgoCTEkQHBIJCgVRVU9URRAdEggKBENPREUQHhIOCgpDT0RFX0JMT0NLEB8SBgoCSFIQIBIOCgpUSU1FUElDS0VSECESEgoOREFURVRJTUVQSUNLRVIQIhIMCghSRUFDVElPThAjEgsKB01FTlRJT04QJBIRCg1DT0RFX0JMT0NLX1YyECUSDgoKTVlfQUlfVE9PTBAmEgkKBVRBQkxFECcSDQoJVEFCTEVfUk9XECgSDgoKVEFCTEVfQ0VMTBApEgsKB0NPTFVNTlMQKhIKCgZDT0xVTU4QKxIGCgJINBAsEgYKAkg1EC0SBgoCSDYQLhIRCg1BVF9VU0VSX0dST1VQEC8igwEKD0hvcml6b250YWxBbGlnbhIcChhIT1JJWk9OVEFMX0FMSUdOX1VOS05PV04QABIZChVIT1JJWk9OVEFMX0FMSUdOX0xFRlQQARIbChdIT1JJWk9OVEFMX0FMSUdOX0NFTlRFUhACEhoKFkhPUklaT05UQUxfQUxJR05fUklHSFQQAyJ5Cg1WZXJ0aWNhbEFsaWduEhoKFlZFUlRJQ0FMX0FMSUdOX1VOS05PV04QABIWChJWRVJUSUNBTF9BTElHTl9UT1AQARIZChVWRVJUSUNBTF9BTElHTl9DRU5URVIQAhIZChVWRVJUSUNBTF9BTElHTl9CT1RUT00QAyLdAwoQUmljaFRleHRFbGVtZW50cxI+CgpkaWN0aW9uYXJ5GAEgAygLMiouZW50aXRpZXMuUmljaFRleHRFbGVtZW50cy5EaWN0aW9uYXJ5RW50cnkSPQoKc3R5bGVfcmVmcxgCIAMoCzIpLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudHMuU3R5bGVSZWZzRW50cnkSOAoGc3R5bGVzGAMgAygLMiguZW50aXRpZXMuUmljaFRleHRFbGVtZW50cy5SaWNoVGV4dFN0eWxlGiwKDVJpY2hUZXh0U3R5bGUSDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRotChhSaWNoVGV4dEVsZW1lbnRTdHlsZVJlZnMSEQoJc3R5bGVfaWRzGAEgAygFGkwKD0RpY3Rpb25hcnlFbnRyeRILCgNrZXkYASABKAkSKAoFdmFsdWUYAiABKAsyGS5lbnRpdGllcy5SaWNoVGV4dEVsZW1lbnQ6AjgBGmUKDlN0eWxlUmVmc0VudHJ5EgsKA2tleRgBIAEoCRJCCgV2YWx1ZRgCIAEoCzIzLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudHMuUmljaFRleHRFbGVtZW50U3R5bGVSZWZzOgI4ASKpAgoIUmljaFRleHQSEwoLZWxlbWVudF9pZHMYASADKAkSEgoKaW5uZXJfdGV4dBgCIAIoCRIsCghlbGVtZW50cxgDIAIoCzIaLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudHMSEQoJaW1hZ2VfaWRzGAUgAygJEg4KBmF0X2lkcxgGIAMoCRISCgphbmNob3JfaWRzGAcgAygJEhAKCGkxOG5faWRzGAggAygJEhEKCW1lZGlhX2lkcxgJIAMoCRIQCghkb2NzX2lkcxgKIAMoCRIXCg9pbnRlcmFjdGl2ZV9pZHMYCyADKAkSEwoLbWVudGlvbl9pZHMYDCADKAkSDwoHdmVyc2lvbhgNIAEoBRIZChFhdF91c2VyX2dyb3VwX2lkcxgOIAMoCSJsChBFbWFpbFN5c3RlbUV2ZW50EhIKCmNoYXR0ZXJfaWQYASABKAkSIQoCdG8YAiADKAsyFS5lbnRpdGllcy5FbWFpbE1lbWJlchIhCgJjYxgDIAMoCzIVLmVudGl0aWVzLkVtYWlsTWVtYmVyIm8KFVNoYXJlR3JvdXBDaGF0Q29udGVudBIcCgRjaGF0GAEgASgLMg4uZW50aXRpZXMuQ2hhdBISCgpqb2luX3Rva2VuGAIgASgJEhMKC2V4cGlyZV90aW1lGAMgASgDEg8KB2NoYXRfaWQYBCABKAki/QEKFFNoYXJlVXNlckNhcmRDb250ZW50Eg8KB3VzZXJfaWQYASABKAkSJQoMYXZhdGFyX2ltYWdlGAIgASgLMg8uZW50aXRpZXMuSW1hZ2USDAoEbmFtZRgDIAEoCRISCgplbl91c19uYW1lGAQgASgJElEKEmludGVybmF0aW9uYWxfbmFtZRgFIAMoCzI1LmVudGl0aWVzLlNoYXJlVXNlckNhcmRDb250ZW50LkludGVybmF0aW9uYWxOYW1lRW50cnkaOAoWSW50ZXJuYXRpb25hbE5hbWVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIswCCg5TdGlja2VyQ29udGVudBILCgNrZXkYBCABKAkSDQoFd2lkdGgYBSABKAUSDgoGaGVpZ2h0GAYgASgFEh4KBWltYWdlGAcgASgLMg8uZW50aXRpZXMuSW1hZ2USDwoHZnNfdW5pdBgIIAEoCRIWCg5zdGlja2VyX3NldF9pZBgJIAEoCRISCgpzdGlja2VyX2lkGAogASgJElUKGGNsZWFuX3Jlc291cmNlX2tleV9zY2VuZRgLIAMoCzIzLmVudGl0aWVzLlN0aWNrZXJDb250ZW50LkNsZWFuUmVzb3VyY2VLZXlTY2VuZUVudHJ5GloKGkNsZWFuUmVzb3VyY2VLZXlTY2VuZUVudHJ5EgsKA2tleRgBIAEoCRIrCgV2YWx1ZRgCIAEoDjIcLmVudGl0aWVzLlJlc291cmNlQ2xlYW5TY2VuZToCOAEinw4KE01lcmdlRm9yd2FyZENvbnRlbnQSIwoIbWVzc2FnZXMYASADKAsyES5lbnRpdGllcy5NZXNzYWdlEiYKCWNoYXRfdHlwZRgCIAEoDjITLmVudGl0aWVzLkNoYXQuVHlwZRIXCg9ncm91cF9jaGF0X25hbWUYAyABKAkSGAoQcDJwX2NyZWF0b3JfbmFtZRgEIAEoCRIYChBwMnBfcGFydG5lcl9uYW1lGAUgASgJEhsKE3AycF9jcmVhdG9yX3VzZXJfaWQYDiABKAMSGwoTcDJwX3BhcnRuZXJfdXNlcl9pZBgPIAEoAxJPChJjcmVhdG9yX2kxOG5fbmFtZXMYCSADKAsyMy5lbnRpdGllcy5NZXJnZUZvcndhcmRDb250ZW50LkNyZWF0b3JJMThuTmFtZXNFbnRyeRJPChJwYXJ0bmVyX2kxOG5fbmFtZXMYCiADKAsyMy5lbnRpdGllcy5NZXJnZUZvcndhcmRDb250ZW50LlBhcnRuZXJJMThuTmFtZXNFbnRyeRI9CghjaGF0dGVycxgGIAMoCzIrLmVudGl0aWVzLk1lcmdlRm9yd2FyZENvbnRlbnQuQ2hhdHRlcnNFbnRyeRJQChJyZWFjdGlvbl9zbmFwc2hvdHMYCyADKAsyNC5lbnRpdGllcy5NZXJnZUZvcndhcmRDb250ZW50LlJlYWN0aW9uU25hcHNob3RzRW50cnkSIAoGdGhyZWFkGAwgASgLMhAuZW50aXRpZXMuVGhyZWFkEk0KEWkxOG5fdGhyZWFkX3RpdGxlGA0gAygLMjIuZW50aXRpZXMuTWVyZ2VGb3J3YXJkQ29udGVudC5JMThuVGhyZWFkVGl0bGVFbnRyeRJKCg9tZXNzYWdlX3RocmVhZHMYECADKAsyMS5lbnRpdGllcy5NZXJnZUZvcndhcmRDb250ZW50Lk1lc3NhZ2VUaHJlYWRzRW50cnkSFgoOb3JpZ2luX2NoYXRfaWQYESABKAMaNwoVQ3JlYXRvckkxOG5OYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNwoVUGFydG5lckkxOG5OYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEargIKC0NoYXR0ZXJJbmZvEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSJgoGYXZhdGFyGAMgASgLMhIuZW50aXRpZXMuSW1hZ2VTZXRCAhgBEiMKBHR5cGUYBCABKA4yFS5lbnRpdGllcy5DaGF0dGVyVHlwZRImCg1hdmF0YXJfZW50aXR5GAUgASgLMg8uZW50aXRpZXMuSW1hZ2USFAoMaXNfYW5vbnltb3VzGAYgASgIEkkKCGkxOG5OYW1lGAcgAygLMjcuZW50aXRpZXMuTWVyZ2VGb3J3YXJkQ29udGVudC5DaGF0dGVySW5mby5JMThuTmFtZUVudHJ5Gi8KDUkxOG5OYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpaCg1DaGF0dGVyc0VudHJ5EgsKA2tleRgBIAEoCRI4CgV2YWx1ZRgCIAEoCzIpLmVudGl0aWVzLk1lcmdlRm9yd2FyZENvbnRlbnQuQ2hhdHRlckluZm86AjgBGlMKFlJlYWN0aW9uU25hcHNob3RzRW50cnkSCwoDa2V5GAEgASgJEigKBXZhbHVlGAIgASgLMhkuZW50aXRpZXMuTWVzc2FnZVJlYWN0aW9uOgI4ARo2ChRJMThuVGhyZWFkVGl0bGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGrsCCg1NZXNzYWdlVGhyZWFkEgoKAmlkGAEgASgDEhMKC3JlcGx5X2NvdW50GAIgASgFEhQKDHRvcF9yZXBsaWVycxgDIAMoAxIZChFsYXRlc3RfcmVwbHlfdGltZRgEIAEoAxIjCghtZXNzYWdlcxgFIAMoCzIRLmVudGl0aWVzLk1lc3NhZ2USXgoScmVhY3Rpb25fc25hcHNob3RzGAYgAygLMkIuZW50aXRpZXMuTWVyZ2VGb3J3YXJkQ29udGVudC5NZXNzYWdlVGhyZWFkLlJlYWN0aW9uU25hcHNob3RzRW50cnkaUwoWUmVhY3Rpb25TbmFwc2hvdHNFbnRyeRILCgNrZXkYASABKAkSKAoFdmFsdWUYAiABKAsyGS5lbnRpdGllcy5NZXNzYWdlUmVhY3Rpb246AjgBGmIKE01lc3NhZ2VUaHJlYWRzRW50cnkSCwoDa2V5GAEgASgDEjoKBXZhbHVlGAIgASgLMisuZW50aXRpZXMuTWVyZ2VGb3J3YXJkQ29udGVudC5NZXNzYWdlVGhyZWFkOgI4ASLwAgoISTE4bkluZm8SHgoPaXNfaTE4bl9tZXNzYWdlGAEgASgIOgVmYWxzZRIVCgZsb2NhbGUYAiABKAk6BXpoX2NuEkEKEGNvbnRlbnRfbGFuZ3VhZ2UYAyADKAsyJy5lbnRpdGllcy5JMThuSW5mby5Db250ZW50TGFuZ3VhZ2VFbnRyeRI3Cgtsb2NhbGVfaW5mbxgEIAMoCzIiLmVudGl0aWVzLkkxOG5JbmZvLkxvY2FsZUluZm9FbnRyeRo2ChRDb250ZW50TGFuZ3VhZ2VFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGicKCkxvY2FsZUluZm8SGQoRY29udGVudF9sYW5ndWFnZXMYASADKAkaUAoPTG9jYWxlSW5mb0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmVudGl0aWVzLkkxOG5JbmZvLkxvY2FsZUluZm86AjgBIk8KDkV4dGVybmFsU2VhcmNoEhAKAmlkGAEgAigJQgSKtRgAEhMKBXRpdGxlGAIgASgJQgSKtRgAEhYKCGljb25fdXJsGAMgASgJQgSKtRgAIoQWCglBcHBDb25maWcSPwoObWVzc2FnZV9jb25maWcYASABKAsyIS5lbnRpdGllcy5BcHBDb25maWcuTWVzc2FnZUNvbmZpZ0IEirUYABI5CgtjaGF0X2NvbmZpZxgCIAEoCzIeLmVudGl0aWVzLkFwcENvbmZpZy5DaGF0Q29uZmlnQgSKtRgAEkQKEXZvaWNlX2NhbGxfY29uZmlnGAMgASgLMiMuZW50aXRpZXMuQXBwQ29uZmlnLlZvaWNlQ2FsbENvbmZpZ0IEirUYABI3Cgp1cmxfY29uZmlnGAQgASgLMh0uZW50aXRpZXMuQXBwQ29uZmlnLlVSTENvbmZpZ0IEirUYABI0CghyZXNvdXJjZRgFIAEoCzIcLmVudGl0aWVzLkFwcENvbmZpZy5SZXNvdXJjZUIEirUYABJHCg9iaWxsaW5nX3BhY2thZ2UYBiABKAsyKC5lbnRpdGllcy5BcHBDb25maWcuQmlsbGluZ1BhY2thZ2VDb25maWdCBIq1GAASNQoJdXJsX3JlZ2V4GAcgASgLMhwuZW50aXRpZXMuQXBwQ29uZmlnLlVSTFJlZ2V4QgSKtRgAEjIKB3plbmRlc2sYCCABKAsyGy5lbnRpdGllcy5BcHBDb25maWcuWmVuZGVza0IEirUYABIgChJhbmRyb2lkX2FwcF9zdG9yZXMYCSADKAlCBIq1GAASJwoZZ3VpZGVfdG9fcmF0ZV9kZWxheV9ob3VycxgKIAEoBUIEirUYABI9Cg1zZWFyY2hfY29uZmlnGAsgASgLMiAuZW50aXRpZXMuQXBwQ29uZmlnLlNlYXJjaENvbmZpZ0IEirUYABI9Cg1iYW5uZXJfY29uZmlnGAwgASgLMiAuZW50aXRpZXMuQXBwQ29uZmlnLkJhbm5lckNvbmZpZ0IEirUYABJEChFjcnlwdG9fY2hhdF9zdGF0ZRgNIAEoDjIjLmVudGl0aWVzLkFwcENvbmZpZy5DcnlwdG9DaGF0U3RhdGVCBIq1GAASNQoJbGFuX3RyYW5zGA4gASgLMhwuZW50aXRpZXMuQXBwQ29uZmlnLkxBTlRyYW5zQgSKtRgAEjEKCnVyZ2VudF9udW0YDyABKAsyHS5lbnRpdGllcy5BcHBDb25maWcuVXJnZW50TnVtEjkKDmRhdGFfcmVzaWRlbmN5GBAgASgLMiEuZW50aXRpZXMuQXBwQ29uZmlnLkRhdGFSZXNpZGVuY3kaOgoNTWVzc2FnZUNvbmZpZxIpChVtYXhfcmVjYWxsX3RpbWVfbGltaXQYASABKAM6BDE0NDBCBIq1GAAauQIKCkNoYXRDb25maWcSJAoQbWF4X21lbWJlcl9jb3VudBgBIAEoBToEMjAwMEIEirUYABJQCg9wb3N0X3Blcm1pc3Npb24YAiABKAsyMS5lbnRpdGllcy5BcHBDb25maWcuQ2hhdENvbmZpZy5DaGF0UG9zdFBlcm1pc3Npb25CBIq1GAASMQojd2l0aGRyYXdfY2hhdHRlcl9leHBpcmF0aW9uX2J5X2hvdXIYAyABKAVCBIq1GAASRQo3bWF4X29yaWdpbl9ncm91cF9jaGF0X3VzZXJfY291bnRfNF9jcmVhdGVfZXh0ZXJuYWxfY2hhdBgEIAEoBUIEirUYABo5ChJDaGF0UG9zdFBlcm1pc3Npb24SIwoOb3Blbl90b190aHJlYWQYASABKAg6BWZhbHNlQgSKtRgAGl0KD1ZvaWNlQ2FsbENvbmZpZxIgCg9oZWFydGJlYXRfY3ljbGUYAiABKAU6ATNCBIq1GAASKAoWaGVhcnRiZWF0X2V4cGlyZWRfdGltZRgDIAEoBToCMTJCBIq1GAAaoQMKFEJpbGxpbmdQYWNrYWdlQ29uZmlnEiMKEWNoYXRfbnVtYmVyX2xpbWl0GAEgASgDOgItMUIEirUYABIgCg5jaGF0X2JvdF9saW1pdBgCIAEoAzoCLTFCBIq1GAASIgoQYXBwX251bWJlcl9saW1pdBgDIAEoAzoCLTFCBIq1GAASHAoKYnV6el9saW1pdBgUIAEoAzoCLTFCBIq1GAASIwoPaGFzX3NlY3JldF9jaGF0GB4gASgIOgR0cnVlQgSKtRgAEiIKEGRvY19udW1iZXJfbGltaXQYZCABKAM6Ai0xQgSKtRgAEi4KG3ZpZGVvY2hhdF9wYXJ0aWNpcGFudF9saW1pdBjIASABKAM6Ai0xQgSKtRgAEisKGHZpZGVvY2hhdF9kdXJhdGlvbl9saW1pdBjJASABKAM6Ai0xQgSKtRgAEi0KGGlzX29wZW5fYXV0b190cmFuc2xhdGlvbhisAiABKAg6BHRydWVCBIq1GAASKwoWaXNfbGFya19ob25nYmFvX2VuYWJsZRiQAyABKAg6BHRydWVCBIq1GAAa7wEKCVVSTENvbmZpZxI6CgZkb21haW4YASABKAsyJC5lbnRpdGllcy5BcHBDb25maWcuVVJMQ29uZmlnLkRvbWFpbkIEirUYABI/Cgtkb2NfZG9tYWlucxgCIAMoCzIkLmVudGl0aWVzLkFwcENvbmZpZy5VUkxDb25maWcuRG9tYWluQgSKtRgAEh0KD2NyZWF0ZV9kb2NfYWRkchgDIAEoCUIEirUYABImChV1cmxfcHJldmlld190aW1lX3dhaXQYBCABKAU6ATFCBIq1GAAaHgoGRG9tYWluEhQKBmRvbWFpbhgBIAEoCUIEirUYABp2CghSZXNvdXJjZRI8CgVhZGRycxgBIAMoCzInLmVudGl0aWVzLkFwcENvbmZpZy5SZXNvdXJjZS5BZGRyc0VudHJ5QgSKtRgAGiwKCkFkZHJzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARqZAQoIVVJMUmVnZXgSQAoHcmVnZXhlcxgBIAMoCzIpLmVudGl0aWVzLkFwcENvbmZpZy5VUkxSZWdleC5SZWdleGVzRW50cnlCBIq1GAASGwoIdGltZV9vdXQYAiABKAU6AzMwMEIEirUYABouCgxSZWdleGVzRW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgJOgI4ARpJCgxTZWFyY2hDb25maWcSOQoRZXh0ZXJuYWxfc2VhcmNoZXMYAyADKAsyGC5lbnRpdGllcy5FeHRlcm5hbFNlYXJjaEIEirUYABpkCgdaZW5kZXNrEhwKDHdlYl9mb3JtX3VybBgBIAEoCUIEirUYAEgAEhsKC29uY2FsbF9jaGF0GAIgASgIQgSKtRgASAASFQoHcGF0dGVybhhkIAEoCUIEirUYAEIHCgVlbnRyeRo3CgxCYW5uZXJDb25maWcSJwoZbm90aWZpY2F0aW9uX3JlZnJlc2hfdGltZRgBIAEoBUIEirUYABovCghMQU5UcmFucxIjChVsYW5fdHJhbnNfbWluX3NpemVfbWIYASABKAVCBIq1GAAaLgoJVXJnZW50TnVtEgwKBG51bXMYASADKAkSEwoLdXBkYXRlX3RpbWUYAiABKAMaTwoNRGF0YVJlc2lkZW5jeRIRCglyZXNpZGVuY3kYASABKAkSGQoRaXNfc2hvd19yZXNpZGVuY3kYAiABKAgSEAoIaGVscF91cmwYAyABKAkiQQoPQ3J5cHRvQ2hhdFN0YXRlEgsKB1VOS05PV04QABIJCgVBTExPVxABEgkKBUJMT0NLEAISCwoHREVGQVVMVBADIuICCgtBcHBDb25maWdWMhIPCgd2ZXJzaW9uGAEgAigDEhMKC3VwZGF0ZV90aW1lGAIgASgDEi4KB3NlY3Rpb24YZCABKAsyHS5lbnRpdGllcy5BcHBDb25maWdWMi5TZWN0aW9uGisKC0ZlYXR1cmVDb25mEgwKBGlzT24YASACKAgSDgoGdHJhaXRzGAIgASgJGpwBCgdTZWN0aW9uEj0KCGZlYXR1cmVzGAIgAygLMisuZW50aXRpZXMuQXBwQ29uZmlnVjIuU2VjdGlvbi5GZWF0dXJlc0VudHJ5GlIKDUZlYXR1cmVzRW50cnkSCwoDa2V5GAEgASgJEjAKBXZhbHVlGAIgASgLMiEuZW50aXRpZXMuQXBwQ29uZmlnVjIuRmVhdHVyZUNvbmY6AjgBIjEKBlNvdXJjZRILCgdVTktOT1dOEAASCwoHREVGQVVMVBABEg0KCUxFQU5fTU9ERRACItABChNOb3RpZmljYXRpb25TZXR0aW5nEg0KA2FsbBgBIAEoCEgAEk8KEXNwZWNpZmljX21lc3NhZ2VzGAIgASgLMjIuZW50aXRpZXMuTm90aWZpY2F0aW9uU2V0dGluZy5TcGVjaWZpY05vdGlmaWNhdGlvbkgAEhgKDm5vX25vdGlmaWNhaW9uGAMgASgISAAaNQoUU3BlY2lmaWNOb3RpZmljYXRpb24SDwoHbWVudGlvbhgBIAEoCBIMCgRidXp6GAIgASgIQggKBm1ldGhvZCLNBAocTWVzc2VuZ2VyTm90aWZpY2F0aW9uU2V0dGluZxJHCgxzd2l0Y2hfc3RhdGUYASACKA4yMS5lbnRpdGllcy5NZXNzZW5nZXJOb3RpZmljYXRpb25TZXR0aW5nLlN3aXRoU3RhdGUSEQoJYnV6el9vcGVuGAIgASgIEhkKDXJlYWN0aW9uX29wZW4YAyABKAhCAhgBEhQKDG1lbnRpb25fb3BlbhgEIAEoCBIZCg1wMnBfY2hhdF9vcGVuGAUgASgIQgIYARIbCg9ncm91cF9jaGF0X29wZW4YBiABKAhCAhgBEhoKEnVzZXJfcDJwX2NoYXRfb3BlbhgHIAEoCBIYChBtZW50aW9uX2FsbF9vcGVuGAggASgIEiAKEnNwZWNpYWxfZm9jdXNfb3BlbhgJIAEoCDoEdHJ1ZRJSChVzcGVjaWFsX2ZvY3VzX3NldHRpbmcYCiABKAsyMy5lbnRpdGllcy5NZXNzZW5nZXJOb3RpZmljYXRpb25TZXR0aW5nLlNwZWNpYWxGb2N1cxp2CgxTcGVjaWFsRm9jdXMSIQoTbm90aWNlX2luX211dGVfY2hhdBgBIAEoCDoEdHJ1ZRIhChNub3RpY2VfaW5fbXV0ZV9tb2RlGAIgASgIOgR0cnVlEiAKEm5vdGljZV9pbl9jaGF0X2JveBgDIAEoCDoEdHJ1ZSJECgpTd2l0aFN0YXRlEhEKDVVOS05PV05fU1RBVEUQABIKCgZDTE9TRUQQARINCglIQUxGX09QRU4QAhIICgRPUEVOEAMijAIKGVVzZXJOb3RpZmljYXRpb25TZXR0aW5nVjMSYgobY29tbW9uX25vdGlmaWNhdGlvbl9zZXR0aW5nGAEgASgLMj0uZW50aXRpZXMuVXNlck5vdGlmaWNhdGlvblNldHRpbmdWMy5Db21tb25Ob3RpZmljYXRpb25TZXR0aW5nElIKFXNwZWNpYWxfZm9jdXNfc2V0dGluZxgCIAEoCzIzLmVudGl0aWVzLk1lc3Nlbmdlck5vdGlmaWNhdGlvblNldHRpbmcuU3BlY2lhbEZvY3VzGjcKGUNvbW1vbk5vdGlmaWNhdGlvblNldHRpbmcSGgoSc3BlY2lhbF9mb2N1c19vcGVuGAkgASgIIi8KGERyaXZlTm90aWZpY2F0aW9uU2V0dGluZxITCgtub3RpZnlfb3BlbhgBIAEoCCJJChVOb3RpZmljYXRpb25TZXR0aW5nVjISGQoRbWVzc2VuZ2VyX3NldHRpbmcYASABKAwSFQoNZHJpdmVfc2V0dGluZxgCIAEoDCKRDAoLVXNlclNldHRpbmcSRAoTd29ya19zdGF0dXNfc2V0dGluZxgBIAEoCzInLmVudGl0aWVzLlVzZXJTZXR0aW5nLldvcmtTdGF0dXNTZXR0aW5nEjkKDWJhZGdlX3NldHRpbmcYAiABKAsyIi5lbnRpdGllcy5Vc2VyU2V0dGluZy5CYWRnZVNldHRpbmcSOwoUbm90aWZpY2F0aW9uX3NldHRpbmcYAyABKAsyHS5lbnRpdGllcy5Ob3RpZmljYXRpb25TZXR0aW5nEkQKE3RpbWVfZm9ybWF0X3NldHRpbmcYBCABKAsyJy5lbnRpdGllcy5Vc2VyU2V0dGluZy5UaW1lRm9ybWF0U2V0dGluZxIaChJhdXRvX2F1ZGlvX3RvX3RleHQYBSABKAgSTQoYc21zX3Bob25lX3VyZ2VudF9zZXR0aW5nGAYgASgLMisuZW50aXRpZXMuVXNlclNldHRpbmcuU21zUGhvbmVVcmdlbnRTZXR0aW5nEhYKDnVwZGF0ZV90aW1lX21zGBQgASgDEh8KF2Rvbm90X2Rpc3R1cmJfYmVmb3JlX21zGBUgASgDEjcKDGZlZWRfc2V0dGluZxgWIAEoCzIhLmVudGl0aWVzLlVzZXJTZXR0aW5nLkZlZWRTZXR0aW5nEkAKF25vdGlmaWNhdGlvbl9zZXR0aW5nX3YyGBcgASgLMh8uZW50aXRpZXMuTm90aWZpY2F0aW9uU2V0dGluZ1YyEjQKJm1lc3NhZ2Vfbm90aWZpY2F0aW9uc19vZmZfZHVyaW5nX2NhbGxzGBggASgIOgR0cnVlEigKGm5hdmlnYXRpb25fc2hvd19tdXRlX2JhZGdlGBkgASgIOgR0cnVlEl8KIWV4dGVybmFsX2Rpc3BsYXlfdGltZXpvbmVfc2V0dGluZxgaIAEoCzI0LmVudGl0aWVzLlVzZXJTZXR0aW5nLkV4dGVybmFsRGlzcGxheVRpbWV6b25lU2V0dGluZxo8ChFXb3JrU3RhdHVzU2V0dGluZxInChlzaG91bGRfbm90aWZ5X3dvcmtfc3RhdHVzGAEgASgIOgR0cnVlGoIBCgxCYWRnZVNldHRpbmcSQAoFc3R5bGUYASABKA4yKC5lbnRpdGllcy5Vc2VyU2V0dGluZy5CYWRnZVNldHRpbmcuU3R5bGU6B0RFRkFVTFQiMAoFU3R5bGUSCwoHVU5LTk9XThAAEgsKB0RFRkFVTFQQARINCglSRURfUE9JTlQQAhqXAgoeRXh0ZXJuYWxEaXNwbGF5VGltZXpvbmVTZXR0aW5nEhwKDWZvbGxvd19zeXN0ZW0YASABKAg6BWZhbHNlEhAKCHRpbWV6b25lGAIgASgJEnYKFXRpbWV6b25lX3NldHRpbmdfdHlwZRgDIAEoDjJILmVudGl0aWVzLlVzZXJTZXR0aW5nLkV4dGVybmFsRGlzcGxheVRpbWV6b25lU2V0dGluZy5UaW1lem9uZVNldHRpbmdUeXBlOg1GT0xMT1dfU1lTVEVNIk0KE1RpbWV6b25lU2V0dGluZ1R5cGUSCwoHVU5LTk9XThAAEhEKDUZPTExPV19TWVNURU0QARIKCgZDVVNUT00QAhIKCgZISURERU4QAxqrAQoRVGltZUZvcm1hdFNldHRpbmcSVAoLdGltZV9mb3JtYXQYASABKA4yMi5lbnRpdGllcy5Vc2VyU2V0dGluZy5UaW1lRm9ybWF0U2V0dGluZy5UaW1lRm9ybWF0OgtUV0VMVkVfSE9VUiJACgpUaW1lRm9ybWF0EgsKB1VOS05PV04QABIPCgtUV0VMVkVfSE9VUhABEhQKEFRXRU5UWV9GT1VSX0hPVVIQAhpjChVTbXNQaG9uZVVyZ2VudFNldHRpbmcSDgoGYWNjZXB0GAEgASgIEhIKCmNhbl9tb2RpZnkYAiABKAgSFAoMbmVlZF9jb25maXJtGAMgASgIEhAKCGNhbl9zZW5kGAQgASgIGi4KC0ZlZWRTZXR0aW5nEh8KEGlzX29wZW5fYXV0b19ib3gYASABKAg6BWZhbHNlIvkBCg5TZWN1cml0eUNvbmZpZxJYChxkYXRhX2NhY2hlX2V4cGlyYXRpb25fY29uZmlnGAEgASgLMjIuZW50aXRpZXMuU2VjdXJpdHlDb25maWcuRGF0YUNhY2hlRXhwaXJhdGlvbkNvbmZpZxIYChBlbmFibGVfd2F0ZXJtYXJrGAIgASgIEh8KF29mZmxpbmVfZGF0YV9leHBpcmF0aW9uGAMgASgDEg8KB3ZlcnNpb24YFCABKAMaQQoZRGF0YUNhY2hlRXhwaXJhdGlvbkNvbmZpZxIOCgZlbmFibGUYASABKAgSFAoMZGVsYXlfc2Vjb25kGAIgASgDIrYeChFDaGF0RW50aXR5U2V0dGluZxJvCh1hZGRfbWVtYmVyX3Blcm1pc3Npb25fc2V0dGluZxgBIAEoDjI7LmVudGl0aWVzLkNoYXRFbnRpdHlTZXR0aW5nLkFkZE1lbWJlclBlcm1pc3Npb25TZXR0aW5nLkVudW06C0FMTF9NRU1CRVJTEmcKGWF0X2FsbF9wZXJtaXNzaW9uX3NldHRpbmcYAiABKA4yNy5lbnRpdGllcy5DaGF0RW50aXR5U2V0dGluZy5BdEFsbFBlcm1pc3Npb25TZXR0aW5nLkVudW06C0FMTF9NRU1CRVJTEm4KHGpvaW5fbWVzc2FnZV92aXNpYmxlX3NldHRpbmcYAyABKA4yPC5lbnRpdGllcy5DaGF0RW50aXR5U2V0dGluZy5TeXN0ZW1NZXNzYWdlVmlzaWJsZVNldHRpbmcuRW51bToKT05MWV9PV05FUhJuChxxdWl0X21lc3NhZ2VfdmlzaWJsZV9zZXR0aW5nGAQgASgOMjwuZW50aXRpZXMuQ2hhdEVudGl0eVNldHRpbmcuU3lzdGVtTWVzc2FnZVZpc2libGVTZXR0aW5nLkVudW06Ck9OTFlfT1dORVISawodc2hhcmVfY2FyZF9wZXJtaXNzaW9uX3NldHRpbmcYBSABKA4yOy5lbnRpdGllcy5DaGF0RW50aXR5U2V0dGluZy5TaGFyZUNhcmRQZXJtaXNzaW9uU2V0dGluZy5FbnVtOgdBTExPV0VEEmIKGGFkZF9tZW1iZXJfYXBwbHlfc2V0dGluZxgGIAEoDjI2LmVudGl0aWVzLkNoYXRFbnRpdHlTZXR0aW5nLkFkZE1lbWJlckFwcGx5U2V0dGluZy5FbnVtOghOT19BUFBMWRJkChh0aHJlYWRfYW5vbnltb3VzX3NldHRpbmcYByABKA4yNy5lbnRpdGllcy5DaGF0RW50aXR5U2V0dGluZy5UaHJlYWRBbm9ueW1vdXNTZXR0aW5nLkVudW06CUlOVklTSUJMRRJrChptZXNzYWdlX3Zpc2liaWxpdHlfc2V0dGluZxgIIAEoDjI5LmVudGl0aWVzLkNoYXRFbnRpdHlTZXR0aW5nLk1lc3NhZ2VWaXNpYmlsaXR5U2V0dGluZy5FbnVtOgxBTExfTUVTU0FHRVMSRwoRYW5vbnltb3VzX3NldHRpbmcYCSABKAsyLC5lbnRpdGllcy5DaGF0RW50aXR5U2V0dGluZy5Bbm9ueW1vdXNTZXR0aW5nEmAKFWNyZWF0ZV91cmdlbnRfc2V0dGluZxgKIAEoDjI0LmVudGl0aWVzLkNoYXRFbnRpdHlTZXR0aW5nLkNyZWF0ZVVyZ2VudFNldHRpbmcuRW51bToLQUxMX01FTUJFUlMScwofY3JlYXRlX3ZpZGVvX2NvbmZlcmVuY2Vfc2V0dGluZxgLIAEoDjI9LmVudGl0aWVzLkNoYXRFbnRpdHlTZXR0aW5nLkNyZWF0ZVZpZGVvQ29uZmVyZW5jZVNldHRpbmcuRW51bToLQUxMX01FTUJFUlMSYgoWcGluX3Blcm1pc3Npb25fc2V0dGluZxgMIAEoDjI1LmVudGl0aWVzLkNoYXRFbnRpdHlTZXR0aW5nLlBpblBlcm1pc3Npb25TZXR0aW5nLkVudW06C0FMTF9NRU1CRVJTEm8KHXRvcF9ub3RpY2VfcGVybWlzc2lvbl9zZXR0aW5nGA0gASgOMjsuZW50aXRpZXMuQ2hhdEVudGl0eVNldHRpbmcuVG9wTm90aWNlUGVybWlzc2lvblNldHRpbmcuRW51bToLQUxMX01FTUJFUlMSawobY2hhdF90YWJfcGVybWlzc2lvbl9zZXR0aW5nGA4gASgOMjkuZW50aXRpZXMuQ2hhdEVudGl0eVNldHRpbmcuQ2hhdFRhYlBlcm1pc3Npb25TZXR0aW5nLkVudW06C0FMTF9NRU1CRVJTEmMKGWNoYXRfZGlzcGxheV9tb2RlX3NldHRpbmcYDyABKA4yNy5lbnRpdGllcy5DaGF0RW50aXR5U2V0dGluZy5DaGF0RGlzcGxheU1vZGVTZXR0aW5nLkVudW06B0RFRkFVTFQSWQoSYWRtaW5fcG9zdF9zZXR0aW5nGBAgASgOMjEuZW50aXRpZXMuQ2hhdEVudGl0eVNldHRpbmcuQWRtaW5Qb3N0U2V0dGluZy5FbnVtOgpBTExPV19QT1NUEmsKG2NoYXRfcGluX3Blcm1pc3Npb25fc2V0dGluZxgRIAEoDjI5LmVudGl0aWVzLkNoYXRFbnRpdHlTZXR0aW5nLkNoYXRQaW5QZXJtaXNzaW9uU2V0dGluZy5FbnVtOgtBTExfTUVNQkVSUxJpChp1c2VyX2NvdW50X3Zpc2libGVfc2V0dGluZxgSIAEoDjI4LmVudGl0aWVzLkNoYXRFbnRpdHlTZXR0aW5nLlVzZXJDb3VudFZpc2libGVTZXR0aW5nLkVudW06C0FMTF9NRU1CRVJTGlIKGkFkZE1lbWJlclBlcm1pc3Npb25TZXR0aW5nIjQKBEVudW0SCwoHVU5LTk9XThAAEg8KC0FMTF9NRU1CRVJTEAESDgoKT05MWV9PV05FUhACGkoKFUFkZE1lbWJlckFwcGx5U2V0dGluZyIxCgRFbnVtEgsKB1VOS05PV04QABIMCghOT19BUFBMWRABEg4KCk5FRURfQVBQTFkQAhpjChtTeXN0ZW1NZXNzYWdlVmlzaWJsZVNldHRpbmciRAoERW51bRILCgdVTktOT1dOEAASDgoKT05MWV9PV05FUhABEg8KC0FMTF9NRU1CRVJTEAISDgoKTk9UX0FOWU9ORRADGk8KGlNoYXJlQ2FyZFBlcm1pc3Npb25TZXR0aW5nIjEKBEVudW0SCwoHVU5LTk9XThAAEgsKB0FMTE9XRUQQARIPCgtOT1RfQUxMT1dFRBACGk4KFkF0QWxsUGVybWlzc2lvblNldHRpbmciNAoERW51bRILCgdVTktOT1dOEAASDwoLQUxMX01FTUJFUlMQARIOCgpPTkxZX09XTkVSEAIaWgoWVGhyZWFkQW5vbnltb3VzU2V0dGluZyJACgRFbnVtEgsKB1VOS05PV04QABINCglJTlZJU0lCTEUQARIPCgtOT1RfQUxMT1dFRBACEgsKB0FMTE9XRUQQAxpYChhNZXNzYWdlVmlzaWJpbGl0eVNldHRpbmciPAoERW51bRILCgdVTktOT1dOEAASEAoMQUxMX01FU1NBR0VTEAESFQoRT05MWV9ORVdfTUVTU0FHRVMQAhpCChBBbm9ueW1vdXNTZXR0aW5nEhoKEmlzX2FsbG93X2Fub255bW91cxgBIAEoCBISCgppc192aXNpYmxlGAIgASgIGk0KE0NyZWF0ZVVyZ2VudFNldHRpbmciNgoERW51bRILCgdVTktOT1dOEAASDwoLQUxMX01FTUJFUlMQARIQCgxPTkxZX01BTkFHRVIQAhpWChxDcmVhdGVWaWRlb0NvbmZlcmVuY2VTZXR0aW5nIjYKBEVudW0SCwoHVU5LTk9XThAAEg8KC0FMTF9NRU1CRVJTEAESEAoMT05MWV9NQU5BR0VSEAIaTgoUUGluUGVybWlzc2lvblNldHRpbmciNgoERW51bRILCgdVTktOT1dOEAASDwoLQUxMX01FTUJFUlMQARIQCgxPTkxZX01BTkFHRVIQAhpUChpUb3BOb3RpY2VQZXJtaXNzaW9uU2V0dGluZyI2CgRFbnVtEgsKB1VOS05PV04QABIPCgtBTExfTUVNQkVSUxABEhAKDE9OTFlfTUFOQUdFUhACGlIKGENoYXRUYWJQZXJtaXNzaW9uU2V0dGluZyI2CgRFbnVtEgsKB1VOS05PV04QABIPCgtBTExfTUVNQkVSUxABEhAKDE9OTFlfTUFOQUdFUhACGkYKFkNoYXREaXNwbGF5TW9kZVNldHRpbmciLAoERW51bRILCgdVTktOT1dOEAASCwoHREVGQVVMVBABEgoKBlRIUkVBRBACGkgKEEFkbWluUG9zdFNldHRpbmciNAoERW51bRILCgdVTktOT1dOEAASDgoKQUxMT1dfUE9TVBABEg8KC0JBTk5FRF9QT1NUEAIaUgoYQ2hhdFBpblBlcm1pc3Npb25TZXR0aW5nIjYKBEVudW0SCwoHVU5LTk9XThAAEg8KC0FMTF9NRU1CRVJTEAESEAoMT05MWV9NQU5BR0VSEAIaUQoXVXNlckNvdW50VmlzaWJsZVNldHRpbmciNgoERW51bRILCgdVTktOT1dOEAASDwoLQUxMX01FTUJFUlMQARIQCgxPTkxZX01BTkFHRVIQAiLOBAoFRmllbGQSCwoHVU5LTk9XThAAEiEKHUFERF9NRU1CRVJfUEVSTUlTU0lPTl9TRVRUSU5HEAESHQoZQVRfQUxMX1BFUk1JU1NJT05fU0VUVElORxACEiAKHEpPSU5fTUVTU0FHRV9WSVNJQkxFX1NFVFRJTkcQAxIgChxRVUlUX01FU1NBR0VfVklTSUJMRV9TRVRUSU5HEAQSIQodU0hBUkVfQ0FSRF9QRVJNSVNTSU9OX1NFVFRJTkcQBRIcChhBRERfTUVNQkVSX0FQUExZX1NFVFRJTkcQBhIcChhUSFJFQURfQU5PTllNT1VTX1NFVFRJTkcQBxIeChpNRVNTQUdFX1ZJU0lCSUxJVFlfU0VUVElORxAIEhsKF0FMTE9XX0FOT05ZTU9VU19TRVRUSU5HEAkSGQoVQ1JFQVRFX1VSR0VOVF9TRVRUSU5HEAoSIwofQ1JFQVRFX1ZJREVPX0NPTkZFUkVOQ0VfU0VUVElORxALEhoKFlBJTl9QRVJNSVNTSU9OX1NFVFRJTkcQDBIhCh1UT1BfTk9USUNFX1BFUk1JU1NJT05fU0VUVElORxAOEh8KG0NIQVRfVEFCX1BFUk1JU1NJT05fU0VUVElORxAPEh0KGUNIQVRfRElTUExBWV9NT0RFX1NFVFRJTkcQEBIWChJBRE1JTl9QT1NUX1NFVFRJTkcQERIfChtDSEFUX1BJTl9QRVJNSVNTSU9OX1NFVFRJTkcQEhIeChpVU0VSX0NPVU5UX1ZJU0lCTEVfU0VUVElORxATIuoOChJHZW5lcmFsQ2hhdFNldHRpbmcSaAoicmVzdHJpY3RlZF9tb2RlX3Blcm1pc3Npb25fc2V0dGluZxgBIAEoCzI8LmVudGl0aWVzLkdlbmVyYWxDaGF0U2V0dGluZy5SZXN0cmljdGVkTW9kZVBlcm1pc3Npb25TZXR0aW5nEkMKE2RlZl9kaXNwbGF5X3NldHRpbmcYAiABKA4yGy5lbnRpdGllcy5EZWZEaXNwbGF5U2V0dGluZzoJSU5QVVRfQk9YGk8KGEZvcndhcmRQZXJtaXNzaW9uU2V0dGluZyIzCgRFbnVtEgsKB1VOS05PV04QABIPCgtBTExfTUVNQkVSUxABEg0KCU5PX01FTUJFUhACGkwKFUNvcHlQZXJtaXNzaW9uU2V0dGluZyIzCgRFbnVtEgsKB1VOS05PV04QABIPCgtBTExfTUVNQkVSUxABEg0KCU5PX01FTUJFUhACGlAKGURvd25sb2FkUGVybWlzc2lvblNldHRpbmciMwoERW51bRILCgdVTktOT1dOEAASDwoLQUxMX01FTUJFUlMQARINCglOT19NRU1CRVIQAhpSChtTY3JlZW5zaG90UGVybWlzc2lvblNldHRpbmciMwoERW51bRILCgdVTktOT1dOEAASDwoLQUxMX01FTUJFUlMQARINCglOT19NRU1CRVIQAhpKCh1PblRpbWVEZWxNc2dQZXJtaXNzaW9uU2V0dGluZxIVCgZzdGF0dXMYASABKAg6BWZhbHNlEhIKCmFsaXZlX3RpbWUYAiABKAMalQIKEFdoaXRlTGlzdFNldHRpbmcSUQoFbGV2ZWwYASABKA4yNy5lbnRpdGllcy5HZW5lcmFsQ2hhdFNldHRpbmcuV2hpdGVMaXN0U2V0dGluZy5MZXZlbEVudW06CU5PX01FTUJFUhIUCgxhZGRfdXNlcl9pZHMYAiADKAMSFAoMZGVsX3VzZXJfaWRzGAMgAygDEhAKCHVzZXJfaWRzGAQgAygDEhwKDWhpdF93aGl0ZWxpc3QYBSABKAg6BWZhbHNlIlIKCUxldmVsRW51bRILCgdVTktOT1dOEAASDQoJTk9fTUVNQkVSEAESGAoUT05MWV9BRE1JTl9BTkRfT1dORVIQAhIPCgtNRU1CRVJfTElTVBADGpoFCh9SZXN0cmljdGVkTW9kZVBlcm1pc3Npb25TZXR0aW5nEhUKBnN0YXR1cxgBIAEoCDoFZmFsc2USagobdHJhbnNtaXRfcGVybWlzc2lvbl9zZXR0aW5nGAIgASgOMjouZW50aXRpZXMuR2VuZXJhbENoYXRTZXR0aW5nLkZvcndhcmRQZXJtaXNzaW9uU2V0dGluZy5FbnVtOglOT19NRU1CRVISYwoXY29weV9wZXJtaXNzaW9uX3NldHRpbmcYAyABKA4yNy5lbnRpdGllcy5HZW5lcmFsQ2hhdFNldHRpbmcuQ29weVBlcm1pc3Npb25TZXR0aW5nLkVudW06CU5PX01FTUJFUhJrChtkb3dubG9hZF9wZXJtaXNzaW9uX3NldHRpbmcYBCABKA4yOy5lbnRpdGllcy5HZW5lcmFsQ2hhdFNldHRpbmcuRG93bmxvYWRQZXJtaXNzaW9uU2V0dGluZy5FbnVtOglOT19NRU1CRVISbwodc2NyZWVuc2hvdF9wZXJtaXNzaW9uX3NldHRpbmcYBSABKA4yPS5lbnRpdGllcy5HZW5lcmFsQ2hhdFNldHRpbmcuU2NyZWVuc2hvdFBlcm1pc3Npb25TZXR0aW5nLkVudW06CU5PX01FTUJFUhJmCiJvbl90aW1lX2RlbF9tc2dfcGVybWlzc2lvbl9zZXR0aW5nGAYgASgLMjouZW50aXRpZXMuR2VuZXJhbENoYXRTZXR0aW5nLk9uVGltZURlbE1zZ1Blcm1pc3Npb25TZXR0aW5nEkkKEndoaXRlX2xpc3Rfc2V0dGluZxgHIAEoCzItLmVudGl0aWVzLkdlbmVyYWxDaGF0U2V0dGluZy5XaGl0ZUxpc3RTZXR0aW5nIt4CCgVGaWVsZBILCgdVTktOT1dOEAASJgoiUkVTVFJJQ1RFRF9NT0RFX1BFUk1JU1NJT05fU0VUVElORxABEh4KGkZPUldBUkRfUEVSTUlTU0lPTl9TRVRUSU5HEAISGwoXQ09QWV9QRVJNSVNTSU9OX1NFVFRJTkcQAxIfChtET1dOTE9BRF9QRVJNSVNTSU9OX1NFVFRJTkcQBBIhCh1TQ1JFRU5TSE9UX1BFUk5JU1NJT05fU0VUVElORxAFEhcKE0RFRl9ESVNQTEFZX1NFVFRJTkcQBhIiCh5PTl9USU1FX0RFTF9NU0dfU0VUVElOR19TVEFUVVMQBxImCiJPTl9USU1FX0RFTF9NU0dfU0VUVElOR19BTElWRV9USU1FEAgSHAoYV0hJVEVfTElTVF9TRVRUSU5HX0xFVkVMEAkSHAoYV0hJVEVfTElTVF9TRVRUSU5HX1VTRVJTEAoigQEKE0NyeXB0b01lc3NhZ2VEZXRhaWwSDwoHY29udGVudBgBIAEoDBIWCg5mcm9tX2RldmljZV9pZBgCIAEoCRIZChFzZW5kZXJfcHVibGljX2tleRgDIAEoDBINCgVub25jZRgEIAEoDBIXCg9hZGRpdGlvbmFsX2RhdGEYBSABKAwiaQoTU2VjcmV0TWVzc2FnZURldGFpbBIPCgdjb250ZW50GAEgASgMEhkKEXNlbmRlcl9wdWJsaWNfa2V5GAIgASgMEg4KBmhlYWRlchgDIAEoDBIWCg5mcm9tX2RldmljZV9pZBgEIAEoCSKuAgoKQ3J5cHRvSW5mbxI0CgtjcnlwdG9fdHlwZRgBIAEoDjIfLmVudGl0aWVzLkNyeXB0b0luZm8uQ3J5cHRvVHlwZRIWCg5zZWNyZXRfdmVyc2lvbhgCIAEoCRIWCg5idXJuZWRfc2Vjb25kcxgDIAEoBRI2Cg9mYWxsYmFja19kZXRhaWwYBCABKAsyHS5lbnRpdGllcy5DcnlwdG9NZXNzYWdlRGV0YWlsEjwKFXNlY3JldF9tZXNzYWdlX2RldGFpbBgFIAEoCzIdLmVudGl0aWVzLlNlY3JldE1lc3NhZ2VEZXRhaWwiRAoKQ3J5cHRvVHlwZRILCgdVTktOT1dOEAASDgoKUExBSU5fVEVYVBABEggKBEUyRUUQAhIPCgtUSElSRF9QQVJUWRADIloKCkNoYXRDb25maWcSFgoIY2hhdGFibGUYASABKAg6BHRydWUSFgoIbXV0ZWFibGUYAiABKAg6BHRydWUSHAoOaW5fdG90YWxfYmFkZ2UYAyABKAg6BHRydWUiGgoLQ2hhdFRvb2xraXQSCwoDaWRzGAEgAygDItknCgRDaGF0EgoKAmlkGAEgASgJEiYKBHR5cGUYAiABKA4yEy5lbnRpdGllcy5DaGF0LlR5cGU6A1AyUBIXCg9sYXN0X21lc3NhZ2VfaWQYAyABKAkSDAoEbmFtZRgEIAEoCRIfCgZhdmF0YXIYBSABKAsyDy5lbnRpdGllcy5JbWFnZRIQCghvd25lcl9pZBgGIAEoCRIZChFuZXdfbWVzc2FnZV9jb3VudBgHIAEoBRIlCgZzdGF0dXMYCCABKA4yFS5lbnRpdGllcy5DaGF0LlN0YXR1cxITCgt1cGRhdGVfdGltZRgJIAEoAxILCgNrZXkYCiABKAkSEwoLZGVzY3JpcHRpb24YCyABKAkSFAoMbWVtYmVyX2NvdW50GAwgASgFEhUKDWlzX2RlcGFydG1lbnQYDSABKAgSEQoJaXNfcHVibGljGA4gASgIEh0KFWxhc3RfbWVzc2FnZV9wb3NpdGlvbhgPIAEoBRISCgp1c2VyX2NvdW50GBAgASgFEhMKC25hbWVfcGlueWluGBEgASgJEhMKC2NyZWF0ZV90aW1lGBIgASgDEhsKE2lzX2N1c3RvbWVyX3NlcnZpY2UYEyABKAgSKQoEcm9sZRgUIAEoDjITLmVudGl0aWVzLkNoYXQuUm9sZToGSUdOT1JFEhYKDmlzX2N1c3RvbV9pY29uGBUgASgIEiMKG25vX2JhZGdlZF9uZXdfbWVzc2FnZV9jb3VudBgWIAEoBRInChhvZmZfZWRpdF9ncm91cF9jaGF0X2luZm8YFyABKAg6BWZhbHNlEjEKDGFubm91bmNlbWVudBgYIAEoCzIbLmVudGl0aWVzLkNoYXQuQW5ub3VuY2VtZW50EhEKCXRlbmFudF9pZBgZIAEoCRIWCg51cGRhdGVfdGltZV9tcxgaIAEoAxIXCglpc19yZW1pbmQYGyABKAg6BHRydWUSOAoTY2hhdF9lbnRpdHlfc2V0dGluZxgcIAEoCzIbLmVudGl0aWVzLkNoYXRFbnRpdHlTZXR0aW5nEisKDHVzZXJfc2V0dGluZxgdIAEoCzIVLmVudGl0aWVzLkNoYXRTZXR0aW5nEhsKDGlzX2Rpc3NvbHZlZBgeIAEoCDoFZmFsc2USGQoKaXNfbWVldGluZxgfIAEoCDoFZmFsc2USHwoXbGFzdF92aXNpYmxlX21lc3NhZ2VfaWQYICABKAkSSgoabWVzc2FnZV9sYXN0X3Zpc2libGVfcGF0Y2gYgwEgASgLMiUuZW50aXRpZXMuTWVzc2FnZUxhc3RWaXNpYmxlSW5mb1BhdGNoEhYKDmxhc3RfdGhyZWFkX2lkGCEgASgJEhgKEG5ld190aHJlYWRfY291bnQYIiABKAUSHAoUbGFzdF90aHJlYWRfcG9zaXRpb24YIyABKAUSGAoJaXNfY3J5cHRvGCQgASgIOgVmYWxzZRIiChpub19iYWRnZWRfbmV3X3RocmVhZF9jb3VudBglIAEoBRIdChV0aHJlYWRfc3RhcnRfcG9zaXRpb24YJiABKAUSMwoJY2hhdF9tb2RlGCcgASgOMhcuZW50aXRpZXMuQ2hhdC5DaGF0TW9kZToHREVGQVVMVBIpCgtjaGF0X2NvbmZpZxgoIAEoCzIULmVudGl0aWVzLkNoYXRDb25maWcSFwoPaXNfY3Jvc3NfdGVuYW50GCkgASgIEhEKCWlzX3RlbmFudBgqIAEoCBIwCgxzdXBwb3J0X3ZpZXcYKyABKA4yGi5lbnRpdGllcy5DaGF0LlN1cHBvcnRWaWV3EhQKDGpvaW5fdGltZV9tcxgsIAEoAxIRCglvbmNhbGxfaWQYLSABKAMSJQodbGFzdF92aXNpYmxlX21lc3NhZ2VfcG9zaXRpb24YLiABKAUSLAokbGFzdF92aXNpYmxlX21lc3NhZ2Vfbm9fYmFkZ2VkX2NvdW50GC8gASgFEhUKDXJlYWRfcG9zaXRpb24YMCABKAUSIQoZcmVhZF9wb3NpdGlvbl9iYWRnZV9jb3VudBgxIAEoBRIpCiFsYXN0X21lc3NhZ2VfcG9zaXRpb25fYmFkZ2VfY291bnQYMiABKAUSGAoQZW5hYmxlX3dhdGVybWFyaxgzIAEoCBIkCgttaW5pX2F2YXRhchg0IAEoCzIPLmVudGl0aWVzLkltYWdlEhIKCnNpZGViYXJfaWQYNSABKAkSDwoHbmFtZV9weRhkIAEoCRI1CgppMThuX25hbWVzGGUgAygLMh0uZW50aXRpZXMuQ2hhdC5JMThuTmFtZXNFbnRyeUICGAESKAoIaTE4bl9pbmYYZiABKAsyFi5lbnRpdGllcy5DaGF0LkkxOG5JbmYSHAoUcmVhZF90aHJlYWRfcG9zaXRpb24YZyABKAUSKAogcmVhZF90aHJlYWRfcG9zaXRpb25fYmFkZ2VfY291bnQYaCABKAUSKAogbGFzdF90aHJlYWRfcG9zaXRpb25fYmFkZ2VfY291bnQYaSABKAUSJAocbGFzdF92aXNpYmxlX3RocmVhZF9wb3NpdGlvbhhqIAEoBRIeChZsYXN0X3Zpc2libGVfdGhyZWFkX2lkGGsgASgJEkkKGXRocmVhZF9sYXN0X3Zpc2libGVfcGF0Y2gYhAEgASgLMiUuZW50aXRpZXMuTWVzc2FnZUxhc3RWaXNpYmxlSW5mb1BhdGNoEjoKFGNoYXRfc2VjdXJpdHlfY29uZmlnGGwgASgLMhwuZW50aXRpZXMuQ2hhdFNlY3VyaXR5Q29uZmlnEhQKDGlzX3B1YmxpY192MhhtIAEoCBIpCglwb3N0X3R5cGUYbiABKA4yFi5lbnRpdGllcy5DaGF0UG9zdFR5cGUSEgoKYWxsb3dfcG9zdBhvIAEoCBITCgtidXJuZWRfdGltZRhwIAEoAxIfChdwdXRfY2hhdHRlcl9hcHBseV9jb3VudBhxIAEoBRITCgtzaG93X2Jhbm5lchhyIAEoCBIWCg5pc19sYXJnZV9ncm91cBhzIAEoCBIjChtmaXJzdF9jaGF0X21lc3NhZ2VfcG9zaXRpb24YdCABKAUSDAoEdGFncxh1IAMoBRIoCgVleHRyYRh2IAMoCzIZLmVudGl0aWVzLkNoYXQuRXh0cmFFbnRyeRIjChRpc19zYW1lX3BhZ2VfbWVldGluZxh3IAEoCDoFZmFsc2USIQoZbXlfdGhyZWFkc19yZWFkX3RpbWVzdGFtcBh4IAEoAxIhChlteV90aHJlYWRzX2xhc3RfdGltZXN0YW1wGHkgASgDEg4KBmlzX2VkdRh6IAEoCBIqCiJteV90aHJlYWRzX2xhc3RfZGlzcGxheV9tZXNzYWdlX2lkGHsgASgDEh8KF215X3RocmVhZHNfdW5yZWFkX2NvdW50GHwgASgFEhgKEGlzX2Nyb3NzX3dpdGhfa2EYfSABKAgSEAoIaXNfYWRtaW4YfiABKAgSEAoIaXNfc3VwZXIYfyABKAgSEAoHaXNfdGVhbRiAASABKAgSLgoLYml6X2NvbnRlbnQYgQEgASgLMhguZW50aXRpZXMuQ2hhdEJpekNvbnRlbnQSRQoUY2hhdHRlcl9leHRyYV9zdGF0ZXMYggEgAygLMiYuZW50aXRpZXMuQ2hhdC5DaGF0dGVyRXh0cmFTdGF0ZXNFbnRyeRIfCg9pc19wcml2YXRlX21vZGUYhQEgASgIOgVmYWxzZRIVCgxvcGVuX2NoYXRfaWQYhgEgASgJEicKB3Rvb2xraXQYhwEgASgLMhUuZW50aXRpZXMuQ2hhdFRvb2xraXQSOwoUY2hhdF9nZW5lcmFsX3NldHRpbmcYiAEgASgLMhwuZW50aXRpZXMuR2VuZXJhbENoYXRTZXR0aW5nEiQKCHRhZ19kYXRhGIkBIAEoCzIRLmVudGl0aWVzLlRhZ0RhdGESMgoKZ3JvdXBfdHlwZRiKASADKAsyHS5lbnRpdGllcy5DaGF0Lkdyb3VwVHlwZUVudHJ5EjsKD2Jpel92ZXJzaW9uX21hcBiLASADKAsyIS5lbnRpdGllcy5DaGF0LkJpelZlcnNpb25NYXBFbnRyeRIzChBjcnlwdG9fY2hhdF9pbmZvGIwBIAEoCzIYLmVudGl0aWVzLkNyeXB0b0NoYXRJbmZvEhkKCWlzX2Zyb3plbhiNASABKAg6BWZhbHNlEh0KFGNoYXRfY2hhdHRlcl92ZXJzaW9uGI4BIAEoAxIZChBpc19kZXBhcnRtZW50X3YxGI8BIAEoCBISCglpc19wMnBfYWkYkAEgASgIEjAKDmJhbm5lcl9zZXR0aW5nGJEBIAEoCzIXLmVudGl0aWVzLkJhbm5lclNldHRpbmcSFgoNaGFzX2NoYXRfbWVudRiSASABKAgSJgoWaXNfcDJwX29mZmljaWFsX2JvdF9haRiTASABKAg6BWZhbHNlEhwKDGlzX2ludmlzaWJsZRiUASABKAg6BWZhbHNlEhsKEmlzX2Nyb3NzX3RlbmFudF92MRiVASABKAgSQgoWdXNlcl9hdXRvX211dGVfc2V0dGluZxiWASABKAsyIS5lbnRpdGllcy5DaGF0VXNlckF1dG9NdXRlU2V0dGluZxIyCilyZWFkX3Bvc2l0aW9uX2ZpbHRlcl9tdXRlX2JvdF9iYWRnZV9jb3VudBiXASABKAUSOgoxbGFzdF9tZXNzYWdlX3Bvc2l0aW9uX2ZpbHRlcl9tdXRlX2JvdF9iYWRnZV9jb3VudBiYASABKAUSOQowcmVhZF90aHJlYWRfcG9zaXRpb25fZmlsdGVyX211dGVfYm90X2JhZGdlX2NvdW50GJkBIAEoBRJBCjhsYXN0X3RocmVhZF9tZXNzYWdlX3Bvc2l0aW9uX2ZpbHRlcl9tdXRlX2JvdF9iYWRnZV9jb3VudBiaASABKAUSLAojZmlsdGVyX211dGVfYm90X2JhZGdlX2NvdW50X3ZlcnNpb24YmwEgASgDGpcBCgxBbm5vdW5jZW1lbnQSDwoHY29udGVudBgBIAEoCRITCgt1cGRhdGVfdGltZRgCIAEoAxIWCg5sYXN0X2VkaXRvcl9pZBgDIAEoCRIPCgdkb2NfdXJsGAQgASgJEh0KDmVuYWJsZV9vcGVuZG9jGAUgASgIOgVmYWxzZRIZCgt1c2Vfb3BlbmRvYxgGIAEoCDoEdHJ1ZRowCg5JMThuTmFtZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGqgECgdJMThuSW5mEjkKCmkxOG5fbmFtZXMYASADKAsyJS5lbnRpdGllcy5DaGF0LkkxOG5JbmYuSTE4bk5hbWVzRW50cnkSTgoVaTE4bl90cmFuc2xhdGVkX25hbWVzGAIgAygLMi8uZW50aXRpZXMuQ2hhdC5JMThuSW5mLkkxOG5UcmFuc2xhdGVkTmFtZXNFbnRyeRI7Cg5pMThuX25hbWVfdHlwZRgDIAEoDjIjLmVudGl0aWVzLkNoYXQuSTE4bkluZi5JMThuTmFtZVR5cGUSUwoYY2hhdF9uYW1lX2xhbmd1YWdlX3JhdGlvGAQgAygLMjEuZW50aXRpZXMuQ2hhdC5JMThuSW5mLkNoYXROYW1lTGFuZ3VhZ2VSYXRpb0VudHJ5Eg8KB3ZlcnNpb24YBSABKAkaMAoOSTE4bk5hbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo6ChhJMThuVHJhbnNsYXRlZE5hbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo8ChpDaGF0TmFtZUxhbmd1YWdlUmF0aW9FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAE6AjgBIkMKDEkxOG5OYW1lVHlwZRILCgdVTktOT1dOEAASCwoHREVGQVVMVBABEgoKBkNVU1RPTRACEg0KCVRSQU5TTEFURRADGiwKCkV4dHJhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo5ChdDaGF0dGVyRXh0cmFTdGF0ZXNFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBGjAKDkdyb3VwVHlwZUVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoCDoCOAEaNAoSQml6VmVyc2lvbk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoAzoCOAEiOAoEVHlwZRILCgdVTktOT1dOEAASBwoDUDJQEAESCQoFR1JPVVAQAhIPCgtUT1BJQ19HUk9VUBADIi4KBlN0YXR1cxIKCgZOT1JNQUwQABILCgdBUkNISVZFEAESCwoHREVMRVRFRBACIkkKCENoYXRNb2RlEhUKEVVOS05PV05fQ0hBVF9NT0RFEAASCwoHREVGQVVMVBABEgoKBlRIUkVBRBACEg0KCVRIUkVBRF9WMhADImYKC1N1cHBvcnRWaWV3EhAKDFZJRVdfVU5LTk9XThAAEhEKDVZJRVdfUDJQR1JPVVAQARIQCgxWSUVXX01FRVRJTkcQAhIPCgtWSUVXX1RIUkVBRBADEg8KC1ZJRVdfQ1JZUFRPEAQiQAoEUm9sZRIKCgZJR05PUkUQABIKCgZNRU1CRVIQARILCgdWSVNJVE9SEAISEwoPVEhSRUFEX0ZPTExPV0VSEAMi2QIKDkNoYXRCaXpDb250ZW50Eg8KB3RlYW1faWQYASABKAMSLgoOdGVhbV9jaGF0X3R5cGUYAiABKA4yFi5lbnRpdGllcy5UZWFtQ2hhdFR5cGUSOwoKdGVhbV9pbmZvcxgDIAMoCzInLmVudGl0aWVzLkNoYXRCaXpDb250ZW50LlRlYW1JbmZvc0VudHJ5GnQKCFRlYW1JbmZvEg8KB3RlYW1faWQYASABKAMSLgoOdGVhbV9jaGF0X3R5cGUYAiABKA4yFi5lbnRpdGllcy5UZWFtQ2hhdFR5cGUSEQoJYmluZF90aW1lGAMgASgDEhQKDGRpc2NvdmVyYWJsZRgEIAEoCBpTCg5UZWFtSW5mb3NFbnRyeRILCgNrZXkYASABKAMSMAoFdmFsdWUYAiABKAsyIS5lbnRpdGllcy5DaGF0Qml6Q29udGVudC5UZWFtSW5mbzoCOAEiwgIKEkNoYXRTZWN1cml0eUNvbmZpZxIVCg1vcGVuX3NlY3VyaXR5GAEgASgIEg0KBWxpbWl0GAIgASgFEi8KBHJlYWQYAyABKAsyIS5lbnRpdGllcy5DaGF0U2VjdXJpdHlDb25maWcuUmVhZBIUCgx1cmdlbnRfbGltaXQYBCABKAUavgEKBFJlYWQSRgoOcmVhZF9zaG93X3R5cGUYASABKA4yLi5lbnRpdGllcy5DaGF0U2VjdXJpdHlDb25maWcuUmVhZC5SZWFkU2hvd1R5cGUSDQoFbGltaXQYAiABKAUiXwoMUmVhZFNob3dUeXBlEgsKB1VOS05PV04QABIMCghOT19MSU1JVBABEhkKFVRXT19DT0xVTU5fV0lUSF9MSU1JVBACEhkKFU9ORV9DT0xVTU5fV0lUSF9MSU1JVBADIo8WCg9DaGF0TXV0YWJsZUluZm8SCgoCaWQYASACKAkSDAoEbmFtZRgCIAEoCRIfCgZhdmF0YXIYAyABKAsyDy5lbnRpdGllcy5JbWFnZRIQCghvd25lcl9pZBgEIAEoCRITCgtkZXNjcmlwdGlvbhgFIAEoCRIUCgxtZW1iZXJfY291bnQYBiABKAUSEgoKdXNlcl9jb3VudBgHIAEoBRIPCgduYW1lX3B5GAggASgJEhYKDmlzX2N1c3RvbV9pY29uGAkgASgIEiAKGG9mZl9lZGl0X2dyb3VwX2NoYXRfaW5mbxgKIAEoCBIxCgxhbm5vdW5jZW1lbnQYCyABKAsyGy5lbnRpdGllcy5DaGF0LkFubm91bmNlbWVudBI4ChNjaGF0X2VudGl0eV9zZXR0aW5nGAwgASgLMhsuZW50aXRpZXMuQ2hhdEVudGl0eVNldHRpbmcSFQoNaXNfZGVwYXJ0bWVudBgNIAEoCBIUCgxpc19kaXNzb2x2ZWQYDiABKAgSEQoJaXNfcHVibGljGA8gASgIEiUKBnN0YXR1cxgQIAEoDjIVLmVudGl0aWVzLkNoYXQuU3RhdHVzEigKCGkxOG5faW5mGBEgASgLMhYuZW50aXRpZXMuQ2hhdC5JMThuSW5mEhQKDGlzX3B1YmxpY192MhgSIAEoCBIpCglwb3N0X3R5cGUYEyABKA4yFi5lbnRpdGllcy5DaGF0UG9zdFR5cGUSEgoKYWxsb3dfcG9zdBgUIAEoCBI1Cg9zZWN1cml0eV9jb25maWcYFSABKAsyHC5lbnRpdGllcy5DaGF0U2VjdXJpdHlDb25maWcSEwoLYnVybmVkX3RpbWUYFiABKAMSHwoXcHV0X2NoYXR0ZXJfYXBwbHlfY291bnQYFyABKAUSEwoLc2hvd19iYW5uZXIYGCABKAgSEgoKaXNfbWVldGluZxgZIAEoCBIWCg5pc19sYXJnZV9ncm91cBgaIAEoCBIjChtmaXJzdF9jaGF0X21lc3NhZ2VfcG9zaXRpb24YGyABKAUSKQoLY2hhdF9jb25maWcYHCABKAsyFC5lbnRpdGllcy5DaGF0Q29uZmlnEiQKC21pbmlfYXZhdGFyGB0gASgLMg8uZW50aXRpZXMuSW1hZ2USEgoKc2lkZWJhcl9pZBgeIAEoCRIMCgR0YWdzGB8gAygFEjMKBWV4dHJhGCAgAygLMiQuZW50aXRpZXMuQ2hhdE11dGFibGVJbmZvLkV4dHJhRW50cnkSHAoUaXNfc2FtZV9wYWdlX21lZXRpbmcYISABKAgSFQoNcmVhZF9wb3NpdGlvbhgiIAEoBRIhChlyZWFkX3Bvc2l0aW9uX2JhZGdlX2NvdW50GCMgASgFEikKIWxhc3RfbWVzc2FnZV9wb3NpdGlvbl9iYWRnZV9jb3VudBgkIAEoBRIcChRsYXN0X3RocmVhZF9wb3NpdGlvbhglIAEoBRIcChRyZWFkX3RocmVhZF9wb3NpdGlvbhgmIAEoBRIoCiByZWFkX3RocmVhZF9wb3NpdGlvbl9iYWRnZV9jb3VudBgnIAEoBRIoCiBsYXN0X3RocmVhZF9wb3NpdGlvbl9iYWRnZV9jb3VudBgoIAEoBRIlCh1sYXN0X3Zpc2libGVfbWVzc2FnZV9wb3NpdGlvbhgpIAEoBRIfChdsYXN0X3Zpc2libGVfbWVzc2FnZV9pZBgqIAEoCRIkChxsYXN0X3Zpc2libGVfdGhyZWFkX3Bvc2l0aW9uGCsgASgFEh4KFmxhc3RfdmlzaWJsZV90aHJlYWRfaWQYLCABKAkSEQoJaXNfcmVtaW5kGC4gASgIEhEKCWlzX3RlbmFudBgvIAEoCBIdChVsYXN0X21lc3NhZ2VfcG9zaXRpb24YMCABKAUSIQoZbXlfdGhyZWFkc19yZWFkX3RpbWVzdGFtcBgxIAEoAxIhChlteV90aHJlYWRzX2xhc3RfdGltZXN0YW1wGDIgASgDEg4KBmlzX2VkdRgzIAEoCBIqCiJteV90aHJlYWRzX2xhc3RfZGlzcGxheV9tZXNzYWdlX2lkGDQgASgDEh8KF215X3RocmVhZHNfdW5yZWFkX2NvdW50GDUgASgFEhAKCGlzX2FkbWluGDYgASgIEhAKCGlzX3N1cGVyGDcgASgIEg8KB2lzX3RlYW0YOCABKAgSLQoLYml6X2NvbnRlbnQYOSABKAsyGC5lbnRpdGllcy5DaGF0Qml6Q29udGVudBJPChRjaGF0dGVyX2V4dHJhX3N0YXRlcxg6IAMoCzIxLmVudGl0aWVzLkNoYXRNdXRhYmxlSW5mby5DaGF0dGVyRXh0cmFTdGF0ZXNFbnRyeRIrCgx1c2VyX3NldHRpbmcYOyABKAsyFS5lbnRpdGllcy5DaGF0U2V0dGluZxJEChVtZXNzYWdlX3Zpc2libGVfcGF0Y2gYPCABKAsyJS5lbnRpdGllcy5NZXNzYWdlTGFzdFZpc2libGVJbmZvUGF0Y2gSQwoUdGhyZWFkX3Zpc2libGVfcGF0Y2gYPSABKAsyJS5lbnRpdGllcy5NZXNzYWdlTGFzdFZpc2libGVJbmZvUGF0Y2gSJgoHdG9vbGtpdBg+IAEoCzIVLmVudGl0aWVzLkNoYXRUb29sa2l0EjoKFGdlbmVyYWxfY2hhdF9zZXR0aW5nGD8gASgLMhwuZW50aXRpZXMuR2VuZXJhbENoYXRTZXR0aW5nEiMKCHRhZ19kYXRhGEAgASgLMhEuZW50aXRpZXMuVGFnRGF0YRI8Cgpncm91cF90eXBlGEEgAygLMiguZW50aXRpZXMuQ2hhdE11dGFibGVJbmZvLkdyb3VwVHlwZUVudHJ5Ei0KC2NyeXB0b19pbmZvGEIgASgLMhguZW50aXRpZXMuQ3J5cHRvQ2hhdEluZm8SEQoJaXNfZnJvemVuGEMgASgIEhwKFGNoYXRfY2hhdHRlcl92ZXJzaW9uGEQgASgDEi8KDmJhbm5lcl9zZXR0aW5nGEUgASgLMhcuZW50aXRpZXMuQmFubmVyU2V0dGluZxIUCgxpc19pbnZpc2libGUYRiABKAgSMQopcmVhZF9wb3NpdGlvbl9maWx0ZXJfbXV0ZV9ib3RfYmFkZ2VfY291bnQYRyABKAUSOQoxbGFzdF9tZXNzYWdlX3Bvc2l0aW9uX2ZpbHRlcl9tdXRlX2JvdF9iYWRnZV9jb3VudBhIIAEoBRI4CjByZWFkX3RocmVhZF9wb3NpdGlvbl9maWx0ZXJfbXV0ZV9ib3RfYmFkZ2VfY291bnQYSSABKAUSQAo4bGFzdF90aHJlYWRfbWVzc2FnZV9wb3NpdGlvbl9maWx0ZXJfbXV0ZV9ib3RfYmFkZ2VfY291bnQYSiABKAUSKwojZmlsdGVyX211dGVfYm90X2JhZGdlX2NvdW50X3ZlcnNpb24YSyABKAMSQQoWY2hhdF9hdXRvX211dGVfc2V0dGluZxhMIAEoCzIhLmVudGl0aWVzLkNoYXRVc2VyQXV0b011dGVTZXR0aW5nGiwKCkV4dHJhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo5ChdDaGF0dGVyRXh0cmFTdGF0ZXNFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBGjAKDkdyb3VwVHlwZUVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoCDoCOAEi6gEKDUJhbm5lclNldHRpbmcSDwoHY2hhdF9pZBgBIAIoAxIdChVjaGF0X21lc3NhZ2VfcG9zaXRpb24YAiABKAUSHAoUY2hhdF90aHJlYWRfcG9zaXRpb24YAyABKAUSOgoKaTE4bl9uYW1lcxgEIAMoCzImLmVudGl0aWVzLkJhbm5lclNldHRpbmcuSTE4bk5hbWVzRW50cnkSHQoVY2xlYW5faGlzdG9yeV9tZXNzYWdlGAUgASgIGjAKDkkxOG5OYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQolQmxvY2tCeVN0cmFuZ2VyUmVsYXRpb25MYXJrRXJyb3JFeHRyYRIYChBzdHJhbmdlcl91c2VyX2lkGAEgASgDIuECCg5Db250YWN0U3VtbWFyeRIPCgd1c2VyX2lkGAEgASgJEhEKCXVzZXJfbmFtZRgCIAEoCRIUCgx1c2VyX2VuX25hbWUYAyABKAkSFwoPZGVwYXJ0bWVudF9uYW1lGAQgASgJEhIKCmF2YXRhcl9rZXkYBSABKAkSEwoLdGVuYW50X25hbWUYBiABKAkSFgoOYXZhdGFyX2ZzX3VuaXQYByABKAkSHwoGYXZhdGFyGAggASgLMg8uZW50aXRpZXMuSW1hZ2USNgoSdGVuYW50X25hbWVfc3RhdHVzGAkgASgOMhouZW50aXRpZXMuVGVuYW50TmFtZVN0YXR1cxI3ChJjZXJ0aWZpY2F0aW9uX2luZm8YCiABKAsyGy5lbnRpdGllcy5DZXJ0aWZpY2F0aW9uSW5mbxIpCg51c2VyX25hbWVfaTE4bhgLIAEoCzIRLmVudGl0aWVzLkkxOG5WYWwi3AMKD0NoYXRBcHBsaWNhdGlvbhIKCgJpZBgBIAEoAxI7CgR0eXBlGAIgASgOMi0uZW50aXRpZXMuQ2hhdEFwcGxpY2F0aW9uLkNoYXRBcHBsaWNhdGlvblR5cGUSDwoHY2hhdF9pZBgDIAEoCRIxCg9jb250YWN0X3N1bW1hcnkYBCABKAsyGC5lbnRpdGllcy5Db250YWN0U3VtbWFyeRISCgphcHBseV90aW1lGAUgASgDEhYKDnByb2Nlc3NlZF90aW1lGAYgASgDEjsKBnN0YXR1cxgHIAEoDjIrLmVudGl0aWVzLkNoYXRBcHBsaWNhdGlvbi5BcHBsaWNhdGlvblN0YXR1cxIPCgdpc19yZWFkGAggASgIEhUKDWV4dHJhX21lc3NhZ2UYCSABKAkiZwoRQXBwbGljYXRpb25TdGF0dXMSEgoOVU5LTk9XTl9TVEFUVVMQABILCgdQRU5ESU5HEAESCgoGQUdSRUVEEAISCwoHUkVGVVNFRBADEgsKB0RFTEVURUQQBBILCgdFWFBJUkVEEAUiQgoTQ2hhdEFwcGxpY2F0aW9uVHlwZRIQCgxVTktOT1dOX1RZUEUQABIKCgZGUklFTkQQARINCglKT0lOX0NIQVQQAiJNCgdDb250YWN0EgoKAmlkGAEgASgDEiIKB2NoYXR0ZXIYAiABKAsyES5lbnRpdGllcy5DaGF0dGVyEhIKCmlzX2RlbGV0ZWQYAyABKAgi9QYKDUNoYXRTaGFyZUluZm8SCgoCaWQYASABKAkSLwoEdHlwZRgCIAEoDjIhLmVudGl0aWVzLkNoYXRTaGFyZUluZm8uU2hhcmVUeXBlEjMKBnN0YXR1cxgDIAEoDjIjLmVudGl0aWVzLkNoYXRTaGFyZUluZm8uU2hhcmVTdGF0dXMSPAoLdGFyZ2V0X3R5cGUYBCABKA4yJy5lbnRpdGllcy5DaGF0U2hhcmVJbmZvLlNoYXJlVGFyZ2V0VHlwZRIVCg1zaGFyZV9jaGF0X2lkGAUgASgJEhIKCmNoYXR0ZXJfaWQYBiABKAkSDQoFdG9rZW4YByABKAkSEwoLY3JlYXRlX3RpbWUYCCABKAMSEwoLZXhwaXJlX3RpbWUYCSABKAMSMQoFZXh0cmEYCiABKAsyIi5lbnRpdGllcy5DaGF0U2hhcmVJbmZvLlNoYXJlRXh0cmESKwoMY2hhdHRlcl90eXBlGAsgASgOMhUuZW50aXRpZXMuQ2hhdHRlclR5cGUaygEKClNoYXJlRXh0cmESDwoHY2hhdF9pZBgBIAEoCRIRCgljaGF0X25hbWUYAiABKAkSEgoKc2hhcmVkX3VybBgDIAEoCRIPCgd1c2VyX2lkGAQgASgJEhEKCXVzZXJfbmFtZRgFIAEoCRIPCgdkb2NfdXJsGAYgASgJEhAKCGRvY19uYW1lGAcgASgJEiMKCGRvY190eXBlGAggASgOMhEuZW50aXRpZXMuRG9jVHlwZRIYChB1bmF1dGhvcml6ZWRfZG9jGAkgASgIIlMKCVNoYXJlVHlwZRIQCgxVTktOT1dOX1RZUEUQABIQCgxDQVJEX01FU1NBR0UQARIKCgZRUkNPREUQAhIMCghDQVJEX0RPQxADEggKBExJTksQBCKDAQoPU2hhcmVUYXJnZXRUeXBlEhcKE1VOS05PV05fVEFSR0VUX1RZUEUQABIPCgtUQVJHRVRfQ0hBVBABEhIKDlRBUkdFVF9DSEFUVEVSEAISEQoNVEFSR0VUX1FSQ09ERRADEg4KClRBUkdFVF9ET0MQBBIPCgtUQVJHRVRfTElOSxAFIkgKC1NoYXJlU3RhdHVzEhEKDVVOS05PV05fU1RBVEUQABIKCgZBQ1RJVkUQARILCgdFWFBJUkVEEAISDQoJREVBQ1RJVkVEEAMi8ggKFENoYXRKb2luTGVhdmVIaXN0b3J5EgoKAmlkGAEgASgJEjUKBmFjdGlvbhgCIAEoDjIlLmVudGl0aWVzLkNoYXRKb2luTGVhdmVIaXN0b3J5LkFjdGlvbhI3CgVldmVudBgDIAEoDjIoLmVudGl0aWVzLkNoYXRKb2luTGVhdmVIaXN0b3J5LkV2ZW50VHlwZRISCgpjaGF0dGVyX2lkGAQgASgJEg8KB2NoYXRfaWQYBSABKAkSEwoLY3JlYXRlX3RpbWUYBiABKAMSOgoFZXh0cmEYByABKAsyKy5lbnRpdGllcy5DaGF0Sm9pbkxlYXZlSGlzdG9yeS5IaXN0b3J5RXh0cmESKwoMY2hhdHRlcl90eXBlGAggASgOMhUuZW50aXRpZXMuQ2hhdHRlclR5cGUajQIKDENvbnRlbnRWYWx1ZRIKCgJpZBgBIAEoCRJDCgR0eXBlGAIgASgOMjUuZW50aXRpZXMuQ2hhdEpvaW5MZWF2ZUhpc3RvcnkuQ29udGVudFZhbHVlLlZhbHVlVHlwZRIPCgdkb2NfdXJsGAMgASgJEhAKCGRvY19uYW1lGAQgASgJEhgKEHVuYXV0aG9yaXplZF9kb2MYBSABKAgSEQoJdGVhbV9uYW1lGAYgASgJIlwKCVZhbHVlVHlwZRIWChJVTktOT1dOX1ZBTFVFX1RZUEUQABIICgRVU0VSEAESBwoDQk9UEAISCAoEQ0hBVBADEgcKA0RPQxAEEggKBFRFQU0QBRIHCgNERVAQBhrbAQoMSGlzdG9yeUV4dHJhEhAKCHRlbXBsYXRlGAEgASgJElYKDmNvbnRlbnRfdmFsdWVzGAIgAygLMj4uZW50aXRpZXMuQ2hhdEpvaW5MZWF2ZUhpc3RvcnkuSGlzdG9yeUV4dHJhLkNvbnRlbnRWYWx1ZXNFbnRyeRphChJDb250ZW50VmFsdWVzRW50cnkSCwoDa2V5GAEgASgJEjoKBXZhbHVlGAIgASgLMisuZW50aXRpZXMuQ2hhdEpvaW5MZWF2ZUhpc3RvcnkuQ29udGVudFZhbHVlOgI4ASIxCgZBY3Rpb24SEgoOVU5LTk9XTl9BQ1RJT04QABIICgRKT0lOEAESCQoFTEVBVkUQAiKZAgoJRXZlbnRUeXBlEhAKDFVOS05PV05fVFlQRRAAEgwKCERFTF9TRUxGEAESDQoJREVMX0FETUlOEAISFAoQSU5WX01FU1NBR0VfQ0FSRBAKEg8KC0lOVl9RUl9DT0RFEAsSDwoLSU5WX0NIQVRURVIQDBILCgdJTlZfRE9DEA0SDgoKSU5WX1NFQVJDSBAOEgwKCElOVl9TRUxGEA8SEAoMSU5WX1AyUF9DSEFUEBASEgoOSU5WX0dST1VQX0NIQVQQERIMCghJTlZfTElOSxASEhEKDUlOVl9GUk9NX1RFQU0QExIQCgxJTlZfRlJPTV9ERVAQFBIQCgxERUxfRlJPTV9ERVAQFRIPCgtMSU5LRURfUEFHRRAWIncKD1RocmVhZFN0YXRlSW5mbxIkCgVzdGF0ZRgBIAEoDjIVLmVudGl0aWVzLlRocmVhZFN0YXRlEhMKC29wZXJhdG9yX2lkGAIgASgJEhYKDnVwZGF0ZV90aW1lX21zGAMgASgDEhEKCXN0YXRlX251bRgEIAEoBSJnChFDZXJ0aWZpY2F0aW9uSW5mbxIZChFpc19zaG93X2NlcnRfc2lnbhgBIAEoCBI3ChJjZXJ0aWZpY2F0ZV9zdGF0dXMYAiABKA4yGy5lbnRpdGllcy5DZXJ0aWZpY2F0ZVN0YXR1cyKMDAoGVGhyZWFkEgoKAmlkGAEgAigJEhIKCmNoYW5uZWxfaWQYAiABKAkSOQoMY2hhbm5lbF90eXBlGAMgASgOMhUuZW50aXRpZXMuQ2hhbm5lbFR5cGU6DENIQVRfQ0hBTk5FTBINCgV0b3BpYxgEIAEoCRIQCghwb3NpdGlvbhgFIAEoBRITCgt1cGRhdGVfdGltZRgGIAEoAxIXCg9yb290X21lc3NhZ2VfaWQYByABKAkSFwoPbGFzdF9tZXNzYWdlX2lkGAggASgJEh0KFWxhc3RfbWVzc2FnZV9wb3NpdGlvbhgJIAEoBRIZChFuZXdfbWVzc2FnZV9jb3VudBgKIAEoBRITCgtyZXBseV9jb3VudBgLIAEoBRIjChtub19iYWRnZWRfbmV3X21lc3NhZ2VfY291bnQYDCABKAUSHgoWbWVzc2FnZV9zdGFydF9wb3NpdGlvbhgNIAEoBRIQCghvd25lcl9pZBgOIAEoCRISCgppc192aXNpYmxlGA8gASgIEhEKCWlzX2JhZGdlZBgQIAEoCBITCgtiYWRnZV9jb3VudBgRIAEoBRIlCh1sYXN0X3Zpc2libGVfbWVzc2FnZV9wb3NpdGlvbhgSIAEoBRIfChdsYXN0X3Zpc2libGVfbWVzc2FnZV9pZBgTIAEoCRIVCg1yZWFkX3Bvc2l0aW9uGBQgASgFEiEKGXJlYWRfcG9zaXRpb25fYmFkZ2VfY291bnQYFSABKAUSKQohbGFzdF9tZXNzYWdlX3Bvc2l0aW9uX2JhZGdlX2NvdW50GBYgASgFEhMKC2NyZWF0ZV90aW1lGBcgASgDEhAKCHN1YnRpdGxlGBggASgJEiIKE2lzX25vX3RyYWNlX3JlbW92ZWQYGSABKAg6BWZhbHNlEhYKDm5vX3JlcGx5X2NvdW50GBogASgFEi0KCnN0YXRlX2luZm8YGyABKAsyGS5lbnRpdGllcy5UaHJlYWRTdGF0ZUluZm8SEQoJcmFua190aW1lGBwgASgDEhsKE2Nhbl9hbm9ueW1vdXNfcmVwbHkYHSABKAgSFAoMdG9wX3JlcGxpZXJzGB4gAygDEhkKEWxhdGVzdF9yZXBseV90aW1lGB8gASgDEhoKEmlzX3JlcGx5X2luX3RocmVhZBggIAEoCBIiChpyb290X21lc3NhZ2VfY2hhdF9wb3NpdGlvbhghIAEoBRIoCgdhaV9pbmZvGCIgASgLMhcuZW50aXRpZXMuVGhyZWFkLkFJSW5mbxIjChtmaWx0ZXJfbXV0ZV9ib3RfYmFkZ2VfY291bnQYIyABKAUSKwojZmlsdGVyX211dGVfYm90X2JhZGdlX2NvdW50X3ZlcnNpb24YJCABKAMagAQKBkFJSW5mbxIUCgxjaGF0X21vZGVfaWQYASABKAMSPQoWdXJsX3ByZXZpZXdfaGFuZ19wb2ludBgCIAEoCzIdLmVudGl0aWVzLlVybFByZXZpZXdIYW5nUG9pbnQSNQoKc2NlbmVfaW5mbxgDIAEoCzIhLmVudGl0aWVzLlRocmVhZC5BSUluZm8uU2NlbmVJbmZvEjcKC3RocmVhZF90eXBlGAQgASgOMiIuZW50aXRpZXMuVGhyZWFkLkFJSW5mby5UaHJlYWRUeXBlEg0KBXRpdGxlGAUgASgJEjsKDWNyZWF0ZV9zb3VyY2UYBiABKA4yJC5lbnRpdGllcy5UaHJlYWQuQUlJbmZvLkNyZWF0ZVNvdXJjZRpkCglTY2VuZUluZm8SEAoIc2NlbmVfaWQYASABKAMSEgoKc2NlbmVfbmFtZRgCIAEoCRIxCgpzY2VuZV9pY29uGAMgASgLMh0uZW50aXRpZXMuSW1hZ2VTZXRQYXNzVGhyb3VnaCJQCgpUaHJlYWRUeXBlEhQKEFVOS05PV05fQUlfVEhFQUQQABIRCg1DT1JFX0FJX1RIRUFEEAESGQoVQVBQTElDQVRJT05fQUlfVEhSRUFEEAIiLQoMQ3JlYXRlU291cmNlEgsKB1VOS05PV04QABIICgRVU0VSEAESBgoCQUkQAiJmChFNZXNzYWdlV2l0aFRocmVhZBInCgxyb290X21lc3NhZ2UYASACKAsyES5lbnRpdGllcy5NZXNzYWdlEigKDWxhc3RfbWVzc2FnZXMYAiADKAsyES5lbnRpdGllcy5NZXNzYWdlIo4BCg1UaHJlYWRTZXR0aW5nEiUKCXRocmVhZF9pZBgBIAIoCUISisMaDnNwbGl0LHR5cGU9bXNnEhEKCWlzX2ZvbGxvdxgCIAEoCBIUCgxpc19mb2xsb3dfdjIYAyABKAgSFAoMYW5vbnltb3VzX2lkGAQgASgJEhcKCWlzX3JlbWluZBgFIAEoCDoEdHJ1ZSKOAQoMVGhyZWFkRmlsdGVyEhEKCWZpbHRlcl9pZBgBIAIoAxI5CgppMThuX25hbWVzGAIgAygLMiUuZW50aXRpZXMuVGhyZWFkRmlsdGVyLkkxOG5OYW1lc0VudHJ5GjAKDkkxOG5OYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi5wEKDkFjY2Vzc2libGVJbmZvEhsKDWlzX2FjY2Vzc2libGUYASABKAg6BHRydWUSRAoRaW5hY2Nlc3NpYmxlX2NvZGUYAiABKA4yKS5lbnRpdGllcy5BY2Nlc3NpYmxlSW5mby5JbmFjY2Vzc2libGVDb2RlInIKEEluYWNjZXNzaWJsZUNvZGUSCwoHREVGQVVMVBAAEg4KCkVYRUNVVElWRVMQARIOCgpFTVBUWV9OQU1FEAISDwoLRU1QVFlfUEhPTkUQAxIQCgxDUk9TU19URU5BTlQQBBIOCgpOT1RfRlJJRU5EEAUiywIKClVzZXJDb25maWcSIwoVcGhvbmVfY2FsbF9hY2Nlc3NpYmxlGAEgASgIOgR0cnVlEiMKFXZvaWNlX2NhbGxfYWNjZXNzaWJsZRgCIAEoCDoEdHJ1ZRIjChV2aWRlb19jYWxsX2FjY2Vzc2libGUYAyABKAg6BHRydWUSMwoRYWNjZXNzX3Bob25lX2NhbGwYBCABKAsyGC5lbnRpdGllcy5BY2Nlc3NpYmxlSW5mbxIzChFhY2Nlc3Nfdm9pY2VfY2FsbBgFIAEoCzIYLmVudGl0aWVzLkFjY2Vzc2libGVJbmZvEjMKEWFjY2Vzc192aWRlb19jYWxsGAYgASgLMhguZW50aXRpZXMuQWNjZXNzaWJsZUluZm8SLwoNYWNjZXNzX3VyZ2VudBgHIAEoCzIYLmVudGl0aWVzLkFjY2Vzc2libGVJbmZvIvQCCgRVc2VyEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSIgoGYXZhdGFyGAMgASgLMhIuZW50aXRpZXMuSW1hZ2VTZXQSDgoGc3RhdHVzGAQgASgFEhIKCmF2YXRhcl91cmwYBSABKAkSEwoLbmFtZV9waW55aW4YBiABKAkSEwoLdXBkYXRlX3RpbWUYByABKAMSFQoNaXNfcmVnaXN0ZXJlZBgJIAEoCBIPCgduYW1lX3B5GAogASgJEhEKCXRlbmFudF9pZBgLIAEoCRITCgtkZXNjcmlwdGlvbhgMIAEoCRJBChBkZXNjcmlwdGlvbl9mbGFnGA0gASgOMh4uZW50aXRpZXMuVXNlci5EZXNjcmlwdGlvbkZsYWc6B0RFRkFVTFQiTQoPRGVzY3JpcHRpb25GbGFnEgsKB0RFRkFVTFQQABIPCgtPTl9CVVNJTkVTUxABEgwKCE9OX0xFQVZFEAISDgoKT05fTUVFVElORxADIl8KCUJvdENvbmZpZxIZCgx3aXRoX2JvdF90YWcYASABKAk6A2JvdBIZCgtpbl9jb250YWN0cxgCIAEoCDoEdHJ1ZRIcCg5jYW5fam9pbl9ncm91cBgDIAEoCDoEdHJ1ZSJACg9BY3Rpb25FeHRyYUluZm8SEAoIYWRtaW5faWQYASABKAMSCwoDdXJsGAIgASgJEg4KBnBhcmFtcxgDIAEoCSKYAwoKQWN0aW9uSW5mbxI1CglpMThuX3RleHQYASADKAsyIi5lbnRpdGllcy5BY3Rpb25JbmZvLkkxOG5UZXh0RW50cnkSPQoNb3BlcmF0b3JfY29kZRgCIAEoDjImLmVudGl0aWVzLkFjdGlvbkluZm8uQWN0aW9uT3BlcmF0ZUNvZGUSNAoLYWN0aW9uX2NvZGUYAyABKA4yHy5lbnRpdGllcy5BY3Rpb25JbmZvLkFjdGlvbkNvZGUSKAoFZXh0cmEYBCABKAsyGS5lbnRpdGllcy5BY3Rpb25FeHRyYUluZm8aLwoNSTE4blRleHRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjQKEUFjdGlvbk9wZXJhdGVDb2RlEhAKDENMT1NFX1dJTkRPVxABEg0KCUNMT1NFX0FQUBACIk0KCkFjdGlvbkNvZGUSDwoLQUNUSU9OX05PTkUQABIYChRBQ1RJT05fQ09OVEFDVF9BRE1JThABEhQKEEFDVElPTl9BUFBMWV9VU0UQAiKXAgoLVGlwc0NvbnRlbnQSDwoHdmVyc2lvbhgBIAEoAxI4CgppMThuX3RpdGxlGAIgAygLMiQuZW50aXRpZXMuVGlwc0NvbnRlbnQuSTE4blRpdGxlRW50cnkSNAoIaTE4bl9tc2cYAyADKAsyIi5lbnRpdGllcy5UaXBzQ29udGVudC5JMThuTXNnRW50cnkSJQoHYWN0aW9ucxgEIAMoCzIULmVudGl0aWVzLkFjdGlvbkluZm8aMAoOSTE4blRpdGxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARouCgxJMThuTXNnRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKLAgoOQm90VGlwc0NvbnRlbnQSDwoHdmVyc2lvbhgBIAEoAxI3CghpMThuX21zZxgCIAMoCzIlLmVudGl0aWVzLkJvdFRpcHNDb250ZW50LkkxOG5Nc2dFbnRyeRIQCghhZG1pbl9pZBgDIAEoAxI7CgphZG1pbl9uYW1lGAQgAygLMicuZW50aXRpZXMuQm90VGlwc0NvbnRlbnQuQWRtaW5OYW1lRW50cnkaLgoMSTE4bk1zZ0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaMAoOQWRtaW5OYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKgAgoOQm90Q2hlY2tTdGF0dXMSDgoGYm90X2lkGAEgASgDEjcKBnN0YXR1cxgCIAEoDjInLmVudGl0aWVzLkJvdENoZWNrU3RhdHVzLkJvdFVzYWdlU3RhdHVzEiYKBHRpcHMYAyABKAsyGC5lbnRpdGllcy5Cb3RUaXBzQ29udGVudCKcAQoOQm90VXNhZ2VTdGF0dXMSDgoKQk9UX1VTQUJMRRABEhgKFEJPVF9URU5BTlRfRk9SQklEREVOEAISGgoWQk9UX1BMQVRGT1JNX0ZPUkJJRERFThADEhsKF0JPVF9ERVZFTE9QRVJfRk9SQklEREVOEAQSDwoLQk9UX09GRkxJTkUQBRIWChJCT1RfVVNFUl9VTlZJU0lCTEUQBiLyCAoNQXBwU3RhdHVzSW5mbxIOCgZjbGlfaWQYASABKAkSNgoGc3RhdHVzGAIgASgOMiYuZW50aXRpZXMuQXBwU3RhdHVzSW5mby5BcHBVc2FnZVN0YXR1cxIjCgR0aXBzGAMgASgLMhUuZW50aXRpZXMuVGlwc0NvbnRlbnQSKgoIYm90X2xpc3QYBCADKAsyGC5lbnRpdGllcy5Cb3RDaGVja1N0YXR1cxI7CgthcHBfYWJpbGl0eRgFIAMoDjImLmVudGl0aWVzLkFwcFN0YXR1c0luZm8uRmVhdHVyZUFiaWxpdHkSDwoHYXBwX3VybBgGIAEoCRI6CgppMThuX25hbWVzGAcgAygLMiYuZW50aXRpZXMuQXBwU3RhdHVzSW5mby5JMThuTmFtZXNFbnRyeRJIChFpMThuX2Rlc2NyaXB0aW9ucxgIIAMoCzItLmVudGl0aWVzLkFwcFN0YXR1c0luZm8uSTE4bkRlc2NyaXB0aW9uc0VudHJ5EhIKCmF2YXRhcl9rZXkYCSABKAkSDgoGYXBwX2lkGAogASgDEhAKCGNoYXRhYmxlGAsgASgIEhQKDGV4dHJhX2NvbmZpZxgMIAEoCRIfCgZhdmF0YXIYDSABKAsyDy5lbnRpdGllcy5JbWFnZRIVCg1hcHBfc3RvcmVfdXJsGA4gASgJEg4KBmlzX2lzdhgPIAEoCBIUCgxpc19hdmFpbGFibGUYECABKAgSLwoOZXh0cmFIaXRGaWVsZHMYESADKAsyFy5lbnRpdGllcy5FeHRyYUhpdEZpZWxkElEKGWJvdF9tZW51X2Rpc3BsYXlfc3RyYXRlZ3kYEiABKA4yLi5lbnRpdGllcy5BcHBTdGF0dXNJbmZvLkJvdE1lbnVEaXNwbGF5U3RyYXRlZ3kaMAoOSTE4bk5hbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVJMThuRGVzY3JpcHRpb25zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLDAQoOQXBwVXNhZ2VTdGF0dXMSDgoKQVBQX1VTQUJMRRABEhgKFEFQUF9URU5BTlRfRk9SQklEREVOEAISGgoWQVBQX1BMQVRGT1JNX0ZPUkJJRERFThADEhsKF0FQUF9ERVZFTE9QRVJfRk9SQklEREVOEAQSDwoLQVBQX09GRkxJTkUQBRIWChJBUFBfVVNFUl9VTlZJU0lCTEUQBhIUChBBUFBfTkVFRF9QQVlfVVNFEAcSDwoLQVBQX0RFTEVURUQQCCJBCg5GZWF0dXJlQWJpbGl0eRIJCgVTTUFMTBABEgYKAkg1EAISBwoDQk9UEAMSEwoPTE9DQUxfQ09NUE9ORU5UEAQiUgoWQm90TWVudURpc3BsYXlTdHJhdGVneRILCgdVTktOT1dOEAASDQoJQ0hBVF9NRU5VEAESDgoKQ0hBVF9JTlBVVBACEgwKCEZMT0FUSU5HEAMiqgMKGFVuYXZhaWxhYmxlSXN2U3RhdHVzSW5mbxIOCgZjbGlfaWQYASABKAkSRQoKaTE4bl9uYW1lcxgCIAMoCzIxLmVudGl0aWVzLlVuYXZhaWxhYmxlSXN2U3RhdHVzSW5mby5JMThuTmFtZXNFbnRyeRJTChFpMThuX2Rlc2NyaXB0aW9ucxgDIAMoCzI4LmVudGl0aWVzLlVuYXZhaWxhYmxlSXN2U3RhdHVzSW5mby5JMThuRGVzY3JpcHRpb25zRW50cnkSFQoNYXBwX3N0b3JlX3VybBgEIAEoCRIOCgZhcHBfaWQYBSABKAMSHwoGYXZhdGFyGAYgASgLMg8uZW50aXRpZXMuSW1hZ2USLwoOZXh0cmFIaXRGaWVsZHMYByADKAsyFy5lbnRpdGllcy5FeHRyYUhpdEZpZWxkGjAKDkkxOG5OYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNwoVSTE4bkRlc2NyaXB0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiSwoNRXh0cmFIaXRGaWVsZBISCgpmaWVsZF9uYW1lGAEgASgJEg0KBXRpdGxlGAIgASgJEhcKD3RpdGxlX2hpdF90ZXJtcxgDIAMoCSJGCgdCb3RJbmZvEg4KBmJvdF9pZBgBIAIoAxIrCgphcHBfc3RhdHVzGAIgASgLMhcuZW50aXRpZXMuQXBwU3RhdHVzSW5mbyKDAgoDQm90EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSIgoGYXZhdGFyGAMgASgLMhIuZW50aXRpZXMuSW1hZ2VTZXQSDgoGc3RhdHVzGAQgASgFEhIKCmF2YXRhcl91cmwYBSABKAkSEwoLdXBkYXRlX3RpbWUYBiABKAMSEgoKY3JlYXRvcl9pZBgHIAEoCRITCgtkZXNjcmlwdGlvbhgIIAEoCRIPCgduYW1lX3B5GAogASgJEhEKCXRlbmFudF9pZBgLIAEoCRInCgpib3RfY29uZmlnGAwgASgLMhMuZW50aXRpZXMuQm90Q29uZmlnEg8KB2VuX25hbWUYDSABKAkiGAoIVGltZVpvbmUSDAoEbmFtZRgBIAIoCSJFCgdUYWdJbmZvEhMKC2lzX3Nob3dfdGFnGAEgASgIEiUKCXRhZ19jb2xvchgCIAEoDjISLmVudGl0aWVzLlRhZ0NvbG9yInsKEUVmZmVjdGl2ZUludGVydmFsEhIKCnN0YXJ0X3RpbWUYASABKAMSEAoIZW5kX3RpbWUYAiABKAMSHgoQaXNfc2hvd19lbmRfdGltZRgDIAEoCDoEdHJ1ZRIgChhpc19vcGVuX3dpdGhvdXRfZW5kX3RpbWUYBCABKAgi0wEKClRpbWVGb3JtYXQSJQoJdGltZV91bml0GAEgASgOMhIuZW50aXRpZXMuVGltZVVuaXQSPQoQc3RhcnRfZW5kX2xheW91dBgCIAEoDjIjLmVudGl0aWVzLlRpbWVGb3JtYXQuU3RhcnRFbmRMYXlvdXQSGQoRaXNfc2hvd190b19vdGhlcnMYAyABKAgiRAoOU3RhcnRFbmRMYXlvdXQSCAoESElERRAAEgoKBk5PUk1BTBABEg4KClNUQVJUX09OTFkQAhIMCghFTkRfT05MWRADIvQCChNDaGF0dGVyQ3VzdG9tU3RhdHVzEg0KBXRpdGxlGAEgASgJEkAKCmkxOG5fdGl0bGUYAiADKAsyLC5lbnRpdGllcy5DaGF0dGVyQ3VzdG9tU3RhdHVzLkkxOG5UaXRsZUVudHJ5EhAKCGljb25fa2V5GAMgASgJEg8KB2ZzX3VuaXQYBCABKAkSNwoSZWZmZWN0aXZlX2ludGVydmFsGAUgASgLMhsuZW50aXRpZXMuRWZmZWN0aXZlSW50ZXJ2YWwSGwoTaXNfbm90X2Rpc3R1cmJfbW9kZRgGIAEoCBIjCgh0YWdfaW5mbxgHIAEoCzIRLmVudGl0aWVzLlRhZ0luZm8SKQoLdGltZV9mb3JtYXQYCCABKAsyFC5lbnRpdGllcy5UaW1lRm9ybWF0EhEKCXN0YXR1c19pZBgJIAEoAxowCg5JMThuVGl0bGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIoMBCgdJMThuVmFsEhMKC2RlZmF1bHRfdmFsGAEgAigJEjIKCWkxOG5fdmFscxgCIAMoCzIfLmVudGl0aWVzLkkxOG5WYWwuSTE4blZhbHNFbnRyeRovCg1JMThuVmFsc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiZgoLQXZhdGFyTWVkYWwSCwoDa2V5GAEgASgJEg8KB2ZzX3VuaXQYAiABKAkSJAoJaTE4bl9uYW1lGAMgASgLMhEuZW50aXRpZXMuSTE4blZhbBITCgtzaG93X3N3aXRjaBgEIAEoCCKBAQoMQm90TXV0ZWRJbmZvEj0KDG11dGVkX3NjZW5lcxgBIAMoCzInLmVudGl0aWVzLkJvdE11dGVkSW5mby5NdXRlZFNjZW5lc0VudHJ5GjIKEE11dGVkU2NlbmVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ASKbDgoHQ2hhdHRlchIXCgJpZBgBIAEoCUILgqYdB3VzZXJfaWQSDAoEbmFtZRgCIAEoCRIiCgZhdmF0YXIYAyABKAsyEi5lbnRpdGllcy5JbWFnZVNldBIOCgZzdGF0dXMYBCABKAUSEgoKYXZhdGFyX3VybBgFIAEoCRITCgt1cGRhdGVfdGltZRgGIAEoAxITCgtuYW1lX3BpbnlpbhgHIAEoCRISCgpjcmVhdG9yX2lkGAggASgJEiMKBHR5cGUYCSABKA4yFS5lbnRpdGllcy5DaGF0dGVyVHlwZRITCgtkZXNjcmlwdGlvbhgLIAEoCRIVCg1pc19yZWdpc3RlcmVkGAwgASgIEg8KB25hbWVfcHkYDSABKAkSEgoKZW5fdXNfbmFtZRgOIAEoCRIRCgl0ZW5hbnRfaWQYDyABKAkSRAoQZGVzY3JpcHRpb25fZmxhZxgQIAEoDjIhLmVudGl0aWVzLkNoYXR0ZXIuRGVzY3JpcHRpb25GbGFnOgdERUZBVUxUEicKCmJvdF9jb25maWcYESABKAsyEy5lbnRpdGllcy5Cb3RDb25maWcSRAoSaW50ZXJuYXRpb25hbF9uYW1lGBIgAygLMiguZW50aXRpZXMuQ2hhdHRlci5JbnRlcm5hdGlvbmFsTmFtZUVudHJ5Eg0KBWFsaWFzGBMgASgJEikKC3dvcmtfc3RhdHVzGBQgASgLMhQuZW50aXRpZXMuV29ya1N0YXR1cxJGChFpMThuX2Rlc2NyaXB0aW9ucxgVIAMoCzInLmVudGl0aWVzLkNoYXR0ZXIuSTE4bkRlc2NyaXB0aW9uc0VudHJ5QgIYARISCgphY2NvdW50X2lkGBYgASgJEisKCGkxOG5faW5mGBcgASgLMhkuZW50aXRpZXMuQ2hhdHRlci5JMThuSW5mEikKC3VzZXJfY29uZmlnGBggASgLMhQuZW50aXRpZXMuVXNlckNvbmZpZxINCgVlbWFpbBgZIAEoCRIfChdkb25vdF9kaXN0dXJiX2JlZm9yZV9tcxgaIAEoAxIfChdhY2NlcHRfc21zX3Bob25lX3VyZ2VudBgbIAEoCBIXCg9sYXN0X2xvZ2luX3RpbWUYHCABKAMSJQoMYXZhdGFyX2ltYWdlGB0gASgLMg8uZW50aXRpZXMuSW1hZ2USJQoJdGltZV96b25lGB4gASgLMhIuZW50aXRpZXMuVGltZVpvbmUSEAoIaXNfZ3Vlc3QYHyABKAgSEQoJaXNfZnJvemVuGCAgASgIEhQKDGlzX2Fub255bW91cxghIAEoCBIoCgpkZXBhcnRtZW50GCIgAygLMhQuZW50aXRpZXMuRGVwYXJ0bWVudBIYChBlbnRlcnByaXNlX2VtYWlsGCMgASgJEjYKD2N1c3RvbV9zdGF0dXNlcxgkIAMoCzIdLmVudGl0aWVzLkNoYXR0ZXJDdXN0b21TdGF0dXMSKwoMYXZhdGFyX21lZGFsGCUgASgLMhUuZW50aXRpZXMuQXZhdGFyTWVkYWwSFAoMYW5vdGhlcl9uYW1lGCYgASgJEhUKDWFjdGl2ZV9zdGF0dXMYJyABKAUSGAoQaXNfc3BlY2lhbF9mb2N1cxgoIAEoCBIWCg5tYWpvcl9sYW5ndWFnZRgpIAEoCRIqCgptdXRlZF9pbmZvGCogASgLMhYuZW50aXRpZXMuQm90TXV0ZWRJbmZvEicKDGRpc3BsYXlfbmFtZRgrIAEoCzIRLmVudGl0aWVzLkkxOG5WYWwSIwoIdGFnX2RhdGEYLCABKAsyES5lbnRpdGllcy5UYWdEYXRhEh8KF2lzX3RlbmFudF9jZXJ0aWZpY2F0aW9uGC0gASgIEjYKEnRlbmFudF9uYW1lX3N0YXR1cxguIAEoDjIaLmVudGl0aWVzLlRlbmFudE5hbWVTdGF0dXMSFgoOY29tbW9uX2xvY2FsZXMYLyADKAkaOAoWSW50ZXJuYXRpb25hbE5hbWVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjcKFUkxOG5EZXNjcmlwdGlvbnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGo4BCgdJMThuSW5mEkoKEWkxOG5fZGVzY3JpcHRpb25zGAEgAygLMi8uZW50aXRpZXMuQ2hhdHRlci5JMThuSW5mLkkxOG5EZXNjcmlwdGlvbnNFbnRyeRo3ChVJMThuRGVzY3JpcHRpb25zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJNCg9EZXNjcmlwdGlvbkZsYWcSCwoHREVGQVVMVBAAEg8KC09OX0JVU0lORVNTEAESDAoIT05fTEVBVkUQAhIOCgpPTl9NRUVUSU5HEAMigQQKD01lc3NhZ2VSZWFjdGlvbhISCgptZXNzYWdlX2lkGAEgASgJEjUKCXJlYWN0aW9ucxgCIAMoCzIiLmVudGl0aWVzLk1lc3NhZ2VSZWFjdGlvbi5SZWFjdGlvbhITCgt1cGRhdGVfdGltZRgDIAEoAxIYChBuYW5vX3VwZGF0ZV90aW1lGAQgASgDGvMCCghSZWFjdGlvbhIMCgR0eXBlGAEgASgJEg0KBWNvdW50GAIgASgFEhAKCHVzZXJfaWRzGAMgAygJEhMKC2NoYXR0ZXJfaWRzGAQgAygJEkkKDHVkcGF0ZV90aW1lcxgFIAMoCzIzLmVudGl0aWVzLk1lc3NhZ2VSZWFjdGlvbi5SZWFjdGlvbi5VZHBhdGVUaW1lc0VudHJ5ElIKEW5hbm9fdXBkYXRlX3RpbWVzGAYgAygLMjcuZW50aXRpZXMuTWVzc2FnZVJlYWN0aW9uLlJlYWN0aW9uLk5hbm9VcGRhdGVUaW1lc0VudHJ5EhgKEG5hbm9fdXBkYXRlX3RpbWUYByABKAMaMgoQVWRwYXRlVGltZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBGjYKFE5hbm9VcGRhdGVUaW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEi2gEKD01lc3NhZ2VSZW1pbmRlchIKCgJpZBgBIAIoCRISCgptZXNzYWdlX2lkGAIgAigJEhUKDXJlbWluZGVyX3RpbWUYAyACKAMSDwoHY2hhdF9pZBgEIAIoCRIcChFyZW1pbmRlcl9wb3NpdGlvbhgFIAIoBToBMBIXCghjYW5jZWxlZBgGIAIoCDoFZmFsc2USFgoOY29uZmlybWVkX3RpbWUYByACKAMSGwoQbWVzc2FnZV9wb3NpdGlvbhgIIAIoBToBMBITCgt1cGRhdGVfdGltZRgJIAEoAyLzCwoLQ2hhdFNldHRpbmcSFwoJaXNfcmVtaW5kGAEgASgIOgR0cnVlEhMKC3VwZGF0ZV90aW1lGAIgASgDEmMKFmNoZWNrX21lc3NhZ2VfcG9zaXRpb24YAyABKA4yNi5lbnRpdGllcy5DaGF0U2V0dGluZy5DaGVja01lc3NhZ2VQb3NpdGlvblNldHRpbmcuRW51bToLUkVDRU5UX0xFRlQSIAoRaXNfYXV0b190cmFuc2xhdGUYBCABKAg6BWZhbHNlEhoKEmlzX2hpZGRlbl9uaWNrbmFtZRgFIAEoCBIhChlpc19hdXRvX3RyYW5zbGF0ZV92ZXJzaW9uGAYgASgDEhkKEWFub255bW91c191c2VyX2lkGAcgASgDEh0KDmlzX211dGVfYXRfYWxsGAggASgIOgVmYWxzZRJFChB0eXBpbmdfdHJhbnNsYXRlGAkgASgLMisuZW50aXRpZXMuQ2hhdFNldHRpbmcuVHlwaW5nVHJhbnNsYXRlRW50aXR5EkoKE2NoYXRfbmFtZV90cmFuc2xhdGUYCiABKAsyLS5lbnRpdGllcy5DaGF0U2V0dGluZy5DaGF0TmFtZVRyYW5zbGF0ZUVudGl0eRpWChtDaGVja01lc3NhZ2VQb3NpdGlvblNldHRpbmciNwoERW51bRILCgdVTktOT1dOEAASDwoLUkVDRU5UX0xFRlQQARIRCg1ORVdFU1RfVU5SRUFEEAIajQQKFVR5cGluZ1RyYW5zbGF0ZUVudGl0eRIWCgdpc19vcGVuGAEgASgIOgVmYWxzZRJHCglvcGVuX21vZGUYAiABKA4yNC5lbnRpdGllcy5DaGF0U2V0dGluZy5UeXBpbmdUcmFuc2xhdGVFbnRpdHkuT3Blbk1vZGUSDgoGbG9jYWxlGAMgASgJEhsKDWNhbl9hdXRvX29wZW4YBCABKAg6BHRydWUSJQodZW5hYmxlX3VzZV90cmFuc2xhdGVfb3JpZ2luYWwYBSABKAgSFgoOdXBkYXRlX3RpbWVfbnMYBiABKAMSHgoQY2FuX2F1dG9fb3Blbl92MRgHIAEoCDoEdHJ1ZRIeChBjYW5fYXV0b19vcGVuX3YzGAggASgIOgR0cnVlElEKCmNsb3NlX21vZGUYCiABKA4yPS5lbnRpdGllcy5DaGF0U2V0dGluZy5UeXBpbmdUcmFuc2xhdGVFbnRpdHkuQXV0b09wZW5DbG9zZU1vZGUiLQoIT3Blbk1vZGUSCwoHVU5LTk9XThAAEgoKBk1BTlVBTBABEggKBEFVVE8QAiJlChFBdXRvT3BlbkNsb3NlTW9kZRIRCg1DTE9TRV9VTktOT1dOEAASEgoOQ0xPU0VfRElSRUNUTFkQARIPCgtDTE9TRV9QT1BVUBACEhgKFENMT1NFX05PX0xPTkdFUl9PUEVOEAMapgEKF0NoYXROYW1lVHJhbnNsYXRlRW50aXR5EiwKHWlzX21hbnVhbF90cmFuc2xhdGVfY2hhdF9uYW1lGAEgASgIOgVmYWxzZRI6CgxkaXNwbGF5X3J1bGUYAiABKA4yFS5lbnRpdGllcy5EaXNwbGF5UnVsZToNV0lUSF9PUklHSU5BTBIhChljaGF0X25hbWVfdGFyZ2V0X2xhbmd1YWdlGAMgASgJIpECCgVGaWVsZBILCgdVTktOT1dOEAASDQoJSVNfUkVNSU5EEAESDwoLVVBEQVRFX1RJTUUQAhIaChZDSEVDS19NRVNTQUdFX1BPU0lUSU9OEAMSFQoRSVNfQVVUT19UUkFOU0xBVEUQBBIWChJJU19ISURERU5fTklDS05BTUUQBRISCg5JU19NVVRFX0FUX0FMTBAGEhQKEFRZUElOR19UUkFOU0xBVEUQBxIhCh1FTkFCTEVfVVNFX1RSQU5TTEFURV9PUklHSU5BTBAIEhQKEENBTl9BVVRPX09QRU5fVjEQCRIUChBDQU5fQVVUT19PUEVOX1YzEAoSFwoTQ0hBVF9OQU1FX1RSQU5TTEFURRALIogBCg5BdXRvTXV0ZUNvbmZpZxIPCgdpc19tdXRlGAEgASgIEhAKCHBvc2l0aW9uGAIgASgDEhMKC2JhZGdlX2NvdW50GAMgASgDEiMKCG11dGVfd2F5GAQgASgOMhEuZW50aXRpZXMuTXV0ZVdheRIZChFvcGVuX211dGVfdGltZV9tcxgFIAEoAyLGAgoXQ2hhdFVzZXJBdXRvTXV0ZVNldHRpbmcSNgoUbGFyZ2VfY2hhdF9hdXRvX211dGUYASABKAsyGC5lbnRpdGllcy5BdXRvTXV0ZUNvbmZpZxJLCg5ib3RfYXV0b19tdXRlcxgCIAMoCzIzLmVudGl0aWVzLkNoYXRVc2VyQXV0b011dGVTZXR0aW5nLkJvdEF1dG9NdXRlc0VudHJ5EikKC25vdGljZV90eXBlGAMgASgOMhQuZW50aXRpZXMuTm90aWNlVHlwZRITCgt1cGRhdGVfdGltZRgEIAEoAxIXCg9zaG93X3RvcF9iYW5uZXIYBSABKAgaTQoRQm90QXV0b011dGVzRW50cnkSCwoDa2V5GAEgASgDEicKBXZhbHVlGAIgASgLMhguZW50aXRpZXMuQXV0b011dGVDb25maWc6AjgBIjEKC0NvbnRhY3RVc2VyEiIKB2NoYXR0ZXIYASABKAsyES5lbnRpdGllcy5DaGF0dGVyInEKEERlcGFydG1lbnRMZWFkZXISKAoKbGVhZGVyVHlwZRgBIAIoDjIULmVudGl0aWVzLkxlYWRlclR5cGUSEAoIbGVhZGVySUQYAiACKAMSIQoGbGVhZGVyGAMgASgLMhEuZW50aXRpZXMuQ2hhdHRlciL9AgoKRGVwYXJ0bWVudBIdCgJpZBgBIAIoCUIRgqYdDWRlcGFydG1lbnRfaWQSDAoEbmFtZRgCIAEoCRIRCglwYXJlbnRfaWQYAyABKAkSEQoJbGVhZGVyX2lkGAQgASgJEhQKDG1lbWJlcl9jb3VudBgFIAEoBRIOCgZzdGF0dXMYBiABKAUSEwoLbmFtZV9waW55aW4YByABKAkSDwoHY2hhdF9pZBgIIAEoCRIRCgloYXNfY2hpbGQYCSABKAgSNQoJaTE4bl9uYW1lGAogAygLMiIuZW50aXRpZXMuRGVwYXJ0bWVudC5JMThuTmFtZUVudHJ5Ei8KC2RlcHRMZWFkZXJzGAsgAygLMhouZW50aXRpZXMuRGVwYXJ0bWVudExlYWRlchIkChxtZW1iZXJfY291bnRfYnlfZGlzcGxheV9ydWxlGAwgASgFGi8KDUkxOG5OYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJXCgZOb3RpY2USHAoNc2hvdWxkX25vdGlmeRgBIAEoCDoFZmFsc2USDQoFdGl0bGUYAiABKAkSDwoHY29udGVudBgDIAEoCRIPCgdzdW1tYXJ5GAQgASgJIn4KC0VtYWlsVGhyZWFkEgoKAmlkGAEgASgJEhAKCG93bmVyX2lkGAIgASgJEhcKD2xhc3RfbWVzc2FnZV9pZBgDIAEoCRIZChFuZXdfbWVzc2FnZV9jb3VudBgEIAEoBRIdChVsYXN0X21lc3NhZ2VfcG9zaXRpb24YBSABKAUilgEKC0VtYWlsTWVtYmVyEgoKAmlkGAEgAigJEigKBHR5cGUYAiACKA4yGi5lbnRpdGllcy5FbWFpbE1lbWJlci5UeXBlEhIKCmludml0ZXJfaWQYAyABKAkSEQoJam9pbl90aW1lGAQgASgDIioKBFR5cGUSCwoHVU5LTk9XThAAEgsKB0NIQVRURVIQARIICgRDSEFUEAIirgIKBUVtYWlsEgoKAmlkGAEgASgJEhAKCG93bmVyX2lkGAIgASgJEhcKD2xhc3RfbWVzc2FnZV9pZBgDIAEoCRIZChFuZXdfbWVzc2FnZV9jb3VudBgEIAEoBRIdChVsYXN0X21lc3NhZ2VfcG9zaXRpb24YBSABKAUSEwoLdXBkYXRlX3RpbWUYBiABKAMSDwoHc3ViamVjdBgHIAEoCRIuCgZzdGF0dXMYCCABKA4yFi5lbnRpdGllcy5FbWFpbC5TdGF0dXM6Bk5PUk1BTBItCg11cGRhdGVfZmllbGRzGOcHIAMoDjIVLmVudGl0aWVzLkVtYWlsRmllbGRzIi8KBlN0YXR1cxILCgdVTktOT1dOEAASCgoGTk9STUFMEAESDAoITU9ESUZJRUQQAiKGBQoGT25jYWxsEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSEwoLbmFtZV9waW55aW4YBCABKAkSIgoGYXZhdGFyGAUgASgLMhIuZW50aXRpZXMuSW1hZ2VTZXQSEgoKYXZhdGFyX3VybBgGIAEoCRIPCgdjaGF0X2lkGAcgASgJEg8KB3RhZ19pZHMYCCADKAMSDwoHZW5fbmFtZRgJIAEoCRIWCg5lbl9kZXNjcmlwdGlvbhgKIAEoCRIqCghpMThuX2luZhgLIAEoCzIYLmVudGl0aWVzLk9uY2FsbC5JMThuSW5mEhQKDHBob25lX251bWJlchgMIAEoCRIXCg9yZXBvcnRfbG9jYXRpb24YDSABKAgSJQoMYXZhdGFyX2ltYWdlGA4gASgLMg8uZW50aXRpZXMuSW1hZ2USEQoJaWNvbl90YWdzGA8gAygFEiEKGWJ1c2luZXNzX2hvdXJzX3BlcmlvZHNfbXMYECADKAMa/AEKB0kxOG5JbmYSOwoKaTE4bl9uYW1lcxgBIAMoCzInLmVudGl0aWVzLk9uY2FsbC5JMThuSW5mLkkxOG5OYW1lc0VudHJ5EkkKEWkxOG5fZGVzY3JpcHRpb25zGAIgAygLMi4uZW50aXRpZXMuT25jYWxsLkkxOG5JbmYuSTE4bkRlc2NyaXB0aW9uc0VudHJ5GjAKDkkxOG5OYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNwoVSTE4bkRlc2NyaXB0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiJQoJT25jYWxsVGFnEgoKAmlkGAEgASgDEgwKBG5hbWUYAiABKAkiMQoKQ29vcmRpbmF0ZRIRCglsb25naXR1ZGUYASABKAISEAoIbGF0aXR1ZGUYAiABKAIiQgoKQ2lyY2xlQXJlYRIkCgZjZW50ZXIYASABKAsyFC5lbnRpdGllcy5Db29yZGluYXRlEg4KBnJhZGl1cxgCIAEoAiJjCg1SZWN0YW5nbGVBcmVhEigKCm5vcnRoX2Vhc3QYASABKAsyFC5lbnRpdGllcy5Db29yZGluYXRlEigKCnNvdXRoX3dlc3QYAiABKAsyFC5lbnRpdGllcy5Db29yZGluYXRlIjMKC1BvbHlnb25BcmVhEiQKBnBvaW50cxgBIAMoCzIULmVudGl0aWVzLkNvb3JkaW5hdGUizAEKCExvY2F0aW9uEiUKBXBvaW50GAEgASgLMhQuZW50aXRpZXMuQ29vcmRpbmF0ZUgAEisKC2NpcmNsZV9hcmVhGAIgASgLMhQuZW50aXRpZXMuQ2lyY2xlQXJlYUgAEjEKDnJlY3RhbmdsZV9hcmVhGAMgASgLMhcuZW50aXRpZXMuUmVjdGFuZ2xlQXJlYUgAEi0KDHBvbHlnb25fYXJlYRgEIAEoCzIVLmVudGl0aWVzLlBvbHlnb25BcmVhSABCCgoIbG9jYXRpb24idwoNRGV2aWNlU2V0dGluZxIRCglkZXZpY2VfaWQYASABKAkSMQoGbG9jYWxlGAIgASgOMhYuZW50aXRpZXMuTGFuZ3VhZ2VUeXBlOgVaSF9DTkICGAESIAoRbG9jYWxlX2lkZW50aWZpZXIYAyABKAk6BXpoX0NOIkUKDURvY1Blcm1pc3Npb24SEQoJcGVybV9jb2RlGAEgASgFEhEKCXBlcm1fbmFtZRgCIAEoCRIOCgZpc19zZXQYAyABKAgiRgoESWNvbhIgCgR0eXBlGAEgASgOMhIuZW50aXRpZXMuSWNvblR5cGUSCwoDS2V5GAIgASgJEg8KB2ZzX3VuaXQYAyABKAkibAoISWNvbkluZm8SLQoEdHlwZRgBIAEoDjIfLmVudGl0aWVzLkljb25JbmZvLkljb25JbmZvVHlwZRILCgNrZXkYAiABKAkiJAoMSWNvbkluZm9UeXBlEgkKBVVOU0VUEAASCQoFRU1PSkkQASLOAgoDRG9jEg0KBXRva2VuGAEgASgJEgsKA3VybBgCIAEoCRIjCghkb2NfdHlwZRgDIAEoDjIRLmVudGl0aWVzLkRvY1R5cGUSDAoEbmFtZRgEIAEoCRIQCghpY29uX2tleRgFIAEoCRIQCghhYnN0cmFjdBgGIAEoCRITCgtjcmVhdGVfdGltZRgHIAEoAxITCgt1cGRhdGVfdGltZRgIIAEoAxISCgpvd25lcl9uYW1lGAkgASgJEhAKCG93bmVyX2lkGAogASgDEhcKD2lzX2Nyb3NzX3RlbmFudBgLIAEoCBITCgtpc191bnRpdGxlZBgOIAEoCBIUCgxzdHJfZG9jX3R5cGUYDyABKAkSDwoHZXhwaXJlcxgQIAEoAxIRCgl1c2VyX3Blcm0YESABKAUSHAoEaWNvbhgSIAEoCzIOLmVudGl0aWVzLkljb24ioAMKB0RvY0NhcmQSDQoFdG9rZW4YASABKAkSEgoKbWVzc2FnZV9pZBgCIAEoCRIQCghncm91cF9pZBgDIAEoCRI2ChVwZXJtaXNzaW9uc19jb3VsZF9wdXQYBCADKAsyFy5lbnRpdGllcy5Eb2NQZXJtaXNzaW9uEhIKCnNoYXJlX2luZm8YBSABKAkSGQoRYXV0aGVkX2J5X3VzZXJfaWQYBiABKAMSEwoLYXV0aGVkX3Blcm0YByABKAUSFwoPbWVzc2FnZV9leGlzdGVkGAggASgIEg0KBXRpdGxlGAkgASgJEg8KB2V4cGlyZXMYCiABKAMSEQoJdXNlcl9wZXJtGAsgASgFEg8KB2RvY191cmwYDCABKAkSFQoNc2hvdWxkX3JlbmRlchgNIAEoCBIUCgxzaGFyZV9zdGF0dXMYDiABKAMSGAoQdGh1bWJuYWlsX2RldGFpbBgPIAEoCRIVCg1yZWNlaXZlcl9wZXJtGBAgASgFEhoKEnNlbmRlcl9pc19leHRlcm5hbBgRIAEoCBINCgVleHRyYRgSIAEoCSLnEQoKRG9jTWVzc2FnZRIKCgJpZBgBIAEoCRInCgR0eXBlGAIgASgOMhkuZW50aXRpZXMuRG9jTWVzc2FnZS5UeXBlEhMKC2NyZWF0ZV90aW1lGAMgASgDEhMKC3VwZGF0ZV90aW1lGAQgASgDEg8KB2NvbnRlbnQYBSABKAkSEwoLZG9jX2ZlZWRfaWQYBiABKAkSDwoHZnJvbV9pZBgHIAEoCRIlCglyaWNoX3RleHQYCCABKAsyEi5lbnRpdGllcy5SaWNoVGV4dBI0Cg1kb2NfcmVhY3Rpb25zGAkgAygLMh0uZW50aXRpZXMuRG9jTWVzc2FnZS5SZWFjdGlvbhI8Cg9yZWFjdGlvbl9ub3RpY2UYCiABKAsyIy5lbnRpdGllcy5Eb2NNZXNzYWdlLlJlYWN0aW9uTm90aWNlEhcKD2lzX2kxOG5fbWVzc2FnZRgLIAEoCBIwCglpMThuX2luZm8YDCABKAsyHS5lbnRpdGllcy5Eb2NNZXNzYWdlLkkxOG5JbmZvEg0KBWV4dHJhGA0gASgJEhcKCGlzX2F0X21lGA4gASgIOgVmYWxzZRIaChJjb21tZW50X3Zpc2liaWxpdHkYDyABKAMapwEKCFJlYWN0aW9uEgwKBHR5cGUYASABKAkSEwoLY2hhdHRlcl9pZHMYAiADKAkSRAoMdXBkYXRlX3RpbWVzGAMgAygLMi4uZW50aXRpZXMuRG9jTWVzc2FnZS5SZWFjdGlvbi5VcGRhdGVUaW1lc0VudHJ5GjIKEFVwZGF0ZVRpbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ARpmCg5SZWFjdGlvbk5vdGljZRIMCgR0eXBlGAEgASgJEhQKDGlzX2NhbmNlbGxlZBgCIAEoCBISCgpjaGF0dGVyX2lkGAMgASgJEhwKDXNob3VsZF9ub3RpZnkYBCABKAg6BWZhbHNlGl4KFFRtcGxQYXJhbUVsZW1lbnRMaXN0EkYKF3RtcGxfcGFyYW1fZWxlbWVudF9saXN0GAEgAygLMiUuZW50aXRpZXMuRG9jTWVzc2FnZS5UbXBsUGFyYW1FbGVtZW50GrYICghJMThuSW5mbxJCCgtpMThuX3RpdGxlcxgBIAMoCzItLmVudGl0aWVzLkRvY01lc3NhZ2UuSTE4bkluZm8uSTE4blRpdGxlc0VudHJ5EkgKDmkxOG5fcmljaHRleHRzGAIgAygLMjAuZW50aXRpZXMuRG9jTWVzc2FnZS5JMThuSW5mby5JMThuUmljaHRleHRzRW50cnkSFwoPdGl0bGVfdG1wbF9jb2RlGAMgASgDEhYKDnRleHRfdG1wbF9jb2RlGAQgASgDEk0KEXRpdGxlX3RtcGxfcGFyYW1zGAUgAygLMjIuZW50aXRpZXMuRG9jTWVzc2FnZS5JMThuSW5mby5UaXRsZVRtcGxQYXJhbXNFbnRyeRJLChB0ZXh0X3RtcGxfcGFyYW1zGAYgAygLMjEuZW50aXRpZXMuRG9jTWVzc2FnZS5JMThuSW5mby5UZXh0VG1wbFBhcmFtc0VudHJ5EhYKDnRpdGxlX3RtcGxfa2V5GAcgASgJEhUKDXRleHRfdG1wbF9rZXkYCCABKAkSUAoTdGV4dF90bXBsX3BhcmFtc192MhgJIAMoCzIzLmVudGl0aWVzLkRvY01lc3NhZ2UuSTE4bkluZm8uVGV4dFRtcGxQYXJhbXNWMkVudHJ5ElAKE3RleHRfdG1wbF9wYXJhbXNfdjMYCiADKAsyMy5lbnRpdGllcy5Eb2NNZXNzYWdlLkkxOG5JbmZvLlRleHRUbXBsUGFyYW1zVjNFbnRyeRoxCg9JMThuVGl0bGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpIChJJMThuUmljaHRleHRzRW50cnkSCwoDa2V5GAEgASgJEiEKBXZhbHVlGAIgASgLMhIuZW50aXRpZXMuUmljaFRleHQ6AjgBGl0KFFRpdGxlVG1wbFBhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRI0CgV2YWx1ZRgCIAEoCzIlLmVudGl0aWVzLkRvY01lc3NhZ2UuVG1wbFBhcmFtRWxlbWVudDoCOAEaXAoTVGV4dFRtcGxQYXJhbXNFbnRyeRILCgNrZXkYASABKAkSNAoFdmFsdWUYAiABKAsyJS5lbnRpdGllcy5Eb2NNZXNzYWdlLlRtcGxQYXJhbUVsZW1lbnQ6AjgBGl4KFVRleHRUbXBsUGFyYW1zVjJFbnRyeRILCgNrZXkYASABKAkSNAoFdmFsdWUYAiABKAsyJS5lbnRpdGllcy5Eb2NNZXNzYWdlLlRtcGxQYXJhbUVsZW1lbnQ6AjgBGmIKFVRleHRUbXBsUGFyYW1zVjNFbnRyeRILCgNrZXkYASABKAkSOAoFdmFsdWUYAiABKAsyKS5lbnRpdGllcy5Eb2NNZXNzYWdlLlRtcGxQYXJhbUVsZW1lbnRMaXN0OgI4ARpZChBUbXBsUGFyYW1FbGVtZW50EjQKBHR5cGUYASABKA4yJi5lbnRpdGllcy5Eb2NNZXNzYWdlLlRtcGxQYXJhbUVsZW1UeXBlEg8KB2NvbnRlbnQYAiABKAkiywEKBFR5cGUSEAoMVU5LTk9XTl9UWVBFEAASCwoHTUVOVElPThABEgsKB0NPTU1FTlQQAhIJCgVSRVBMWRADEgkKBVNPTFZFEAQSCQoFU0hBUkUQBRIKCgZSRU9QRU4QBhIUChBDT01NRU5UX1JFQUNUSU9OEAcSEQoNVEVNUExBVEVfQ0FSRBAIEgwKCFdJVEhEUkFXEAkSFAoQQ09OVEVOVF9SRUFDVElPThAKEh0KGVdJVEhEUkFXX0NPTlRFTlRfUkVBQ1RJT04QCyJFChFUbXBsUGFyYW1FbGVtVHlwZRILCgdVTktOT1dOEAASCwoHVVNFUl9JRBABEggKBFRFWFQQAhIMCghJMThOX0tFWRADIqwFCgtPcGVuQXBwRmVlZBIOCgZhcHBfaWQYASACKAMSEgoKYXZhdGFyX2tleRgCIAEoCRISCgphdmF0YXJfdXJsGAMgASgJEhAKCGFwcF9uYW1lGAQgAigJEg8KB2JvdF9pZHMYBSADKAMSEQoJcGNfc2NoZW1hGAYgASgJEhIKCmlvc19zY2hlbWEYByABKAkSFgoOYW5kcm9pZF9zY2hlbWEYCCABKAkSHAoUbGF0ZXN0X29wZW5fc2VxdWVuY2UYCSABKAMSHAoUbGF0ZXN0X3JlYWRfc2VxdWVuY2UYCiABKAMSCwoDdGFnGAsgASgJEg8KB3N1bW1hcnkYDCABKAkSEwoLbm90aWZ5X29wZW4YDSABKAgSPQoNYXBwX25hbWVfaTE4bhgOIAMoCzImLmVudGl0aWVzLk9wZW5BcHBGZWVkLkFwcE5hbWVJMThuRW50cnkSEQoJcHVzaF90aW1lGA8gASgDEh8KBmF2YXRhchgQIAEoCzIPLmVudGl0aWVzLkltYWdlEhAKCGFwcF90eXBlGBEgASgDEg8KB2NoYXRfaWQYEiABKAkSFAoMcHVzaF90aW1lX21zGBMgASgDEhUKDWFwcF9jbGllbnRfaWQYFCABKAkSPAoMc3VtbWFyeV9pMThuGBUgAygLMiYuZW50aXRpZXMuT3BlbkFwcEZlZWQuU3VtbWFyeUkxOG5FbnRyeRIXCg9pbmNyZW1lbnRfaW5kZXgYFiABKAMSEgoKcmVhZF9pbmRleBgXIAEoAxoyChBBcHBOYW1lSTE4bkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaMgoQU3VtbWFyeUkxOG5FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIqMFCgdEb2NGZWVkEgoKAmlkGAEgASgJEg0KBXRpdGxlGAIgASgJEiQKBHR5cGUYAyABKA4yFi5lbnRpdGllcy5Eb2NGZWVkLlR5cGUSEAoIaWNvbl9rZXkYBCABKAkSCwoDdXJsGAUgASgJEhMKC2NyZWF0ZV90aW1lGAYgASgDEhMKC3VwZGF0ZV90aW1lGAcgASgDEhAKCG93bmVyX2lkGAggASgJEhcKD2xhc3RfbWVzc2FnZV9pZBgJIAEoCRIZChFuZXdfbWVzc2FnZV9jb3VudBgKIAEoBRIXCg9kb2NfbWVzc2FnZV9pZHMYCyADKAkSFwoPaXNfY3Jvc3NfdGVuYW50GAwgASgIEhcKCWlzX3JlbWluZBgNIAEoCDoEdHJ1ZRIaChJ1bnJlYWRfbWVzc2FnZV9pZHMYDiADKAMSDQoFdG9rZW4YDyABKAkSEAoIc3RyX3R5cGUYECABKAkSHAoEaWNvbhgRIAEoCzIOLmVudGl0aWVzLkljb24SHQoVbmV3X21lc3NhZ2VfY291bnRfdmVyGBIgASgFEhwKDWlzX25vdF9yZW1pbmQYEyABKAg6BWZhbHNlEiMKCHRhZ19kYXRhGBQgASgLMhEuZW50aXRpZXMuVGFnRGF0YRIRCglpY29uX2luZm8YFSABKAkirAEKBFR5cGUSEAoMVU5LTk9XTl9UWVBFEAASBwoDRE9DEAESCQoFU0hFRVQQAhILCgdCSVRBQkxFEAMSDAoITUlORE5PVEUQBBIICgRGSUxFEAUSCQoFU0xJREUQBhIICgRXSUtJEAcSCAoERE9DWBAIEgoKBkZPTERFUhAJEgsKB0NBVEFMT0cQChIKCgZTTElERVMQCxIVChFET0NYX1NZTkNFRF9CTE9DSxANImMKDkRvY0ZlZWRTZXR0aW5nEhcKCWlzX3JlbWluZBgBIAEoCDoEdHJ1ZRITCgt1cGRhdGVfdGltZRgCIAEoAyIjCgVGaWVsZBILCgdVTktOT1dOEAASDQoJSVNfUkVNSU5EEAEiUQoPQ2FsZGF2VXNlckV4dHJhEj4KF2NhbGRhdl91c2VyX2V4dHJhX2l0ZW1zGAEgAygLMh0uZW50aXRpZXMuQ2FsZGF2VXNlckV4dHJhSXRlbSKeAQoTQ2FsZGF2VXNlckV4dHJhSXRlbRITCgtwYXNzd29yZF9pZBgBIAIoCRIXCg1wYXNzd29yZF9uYW1lGAIgASgJOgASEgoIcGFzc3dvcmQYAyABKAk6ABIfChRwYXNzd29yZF9jcmVhdGVfdGltZRgEIAEoAzoBMBIkChlwYXNzd29yZF9sYXN0X3VwZGF0ZV90aW1lGAUgASgDOgEwIokBChJDYWxkYXZQYXNzd29yZEl0ZW0SEwoLcGFzc3dvcmRfaWQYASACKAkSFwoNcGFzc3dvcmRfbmFtZRgCIAEoCToAEh8KFHBhc3N3b3JkX2NyZWF0ZV90aW1lGAMgASgDOgEwEiQKGXBhc3N3b3JkX2xhc3RfdXBkYXRlX3RpbWUYBCABKAM6ATAimgEKCFJlbWluZGVyEhwKEWNhbGVuZGFyX2V2ZW50X2lkGAEgASgJOgEwEg8KB21pbnV0ZXMYAiACKAUSKQoGbWV0aG9kGAMgAigOMhkuZW50aXRpZXMuUmVtaW5kZXIuTWV0aG9kIjQKBk1ldGhvZBILCgdERUZBVUxUEAESCQoFRU1BSUwQAhIJCgVQT1BVUBADEgcKA1NNUxAEIrsBChRDYWxlbmRhclJlc291cmNlSW5mbxITCghjYXBhY2l0eRgBIAEoBToBMBITCgljaXR5X25hbWUYAiABKAk6ABIXCg1idWlsZGluZ19uYW1lGAMgASgJOgASFwoNcmVzb3VyY2VfbmFtZRgEIAEoCToAEhQKCmZsb29yX25hbWUYBSABKAk6ABIaCgtpc19kaXNhYmxlZBgGIAEoCDoFZmFsc2USFQoLcmVzb3VyY2VfaWQYByABKAk6ACLwEwoIQ2FsZW5kYXISDQoCaWQYASABKAk6ATASEQoHc3VtbWFyeRgCIAEoCToAEhUKC2Rlc2NyaXB0aW9uGAMgASgJOgASGAoQZGVmYXVsdF90aW1lem9uZRgEIAEoCRIaCg9jcmVhdG9yX3VzZXJfaWQYBSABKAk6ATASFgoLY3JlYXRlX3RpbWUYBiABKAM6ATASFgoLdXBkYXRlX3RpbWUYByABKAM6ATASRQoMZGVmYXVsdF9yb2xlGAggASgOMh0uZW50aXRpZXMuQ2FsZW5kYXIuQWNjZXNzUm9sZToQRlJFRV9CVVNZX1JFQURFUhIsCgR0eXBlGAkgASgOMhcuZW50aXRpZXMuQ2FsZW5kYXIuVHlwZToFT1RIRVISRAoLYWNjZXNzX3JvbGUYCiABKA4yHS5lbnRpdGllcy5DYWxlbmRhci5BY2Nlc3NSb2xlOhBGUkVFX0JVU1lfUkVBREVSEikKBnN0YXR1cxgLIAEoDjIZLmVudGl0aWVzLkNhbGVuZGFyLlN0YXR1cxIbChBmb3JlZ3JvdW5kX2NvbG9yGAwgASgFOgEwEhsKEGJhY2tncm91bmRfY29sb3IYDSABKAU6ATASEQoGd2VpZ2h0GA4gASgFOgEwEhkKCmlzX2RlZmF1bHQYDyABKAg6BWZhbHNlEhgKCmlzX3Zpc2libGUYECABKAg6BHRydWUSGQoKaXNfcHJpbWFyeRgRIAEoCDoFZmFsc2USGQoKaXNfZGVsZXRlZBgSIAEoCDoFZmFsc2USGwoRZGVmYXVsdF9yZW1pbmRlcnMYEyABKAk6ABIpCgdtZW1iZXJzGBQgAygLMhguZW50aXRpZXMuQ2FsZW5kYXJNZW1iZXISDwoFZW1haWwYFSABKAk6ABIXCglpc19zeW5jZWQYFyABKAg6BHRydWUSGAoJaXNfYWNjZXB0GBggASgIOgVmYWxzZRIcCg1pc19zdWJzY3JpYmVyGBkgASgIOgVmYWxzZRIYCglpc19wdWJsaWMYGiABKAg6BWZhbHNlEg4KBG5vdGUYGyABKAk6ABI+ChZjYWxlbmRhcl9yZXNvdXJjZV9pbmZvGBwgASgLMh4uZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZUluZm8SGwoMaXNfYWxsX3N0YWZmGB0gASgIOgVmYWxzZRIzChBleHRlcm5hbF9hY2NvdW50GB4gASgLMhkuZW50aXRpZXMuRXh0ZXJuYWxBY2NvdW50EjQKEXdvcmtfaG91cl9zZXR0aW5nGB8gASgLMhkuZW50aXRpZXMuV29ya0hvdXJTZXR0aW5nEh4KE3Zpc2liaWxpdHlfcHJvcGVydHkYICABKAU6ATASEgoIdGltZXpvbmUYISABKAk6ABIdChVjYWxlbmRhcl9ldmVudF9zY2hlbWEYIiABKAwSFwoPY2FsZW5kYXJfc2NoZW1hGCMgASgMEhkKEXNjaGVtYV9leHRyYV9kYXRhGCQgASgMEiAKGGNhbGVuZGFyX2V2ZW50X3NjaGVtYV92MhglIAEoDBIZChFzdWNjZXNzb3JfdXNlcl9pZBgmIAEoCRI+Cg1zaGFyZV9vcHRpb25zGCcgASgLMicuZW50aXRpZXMuQ2FsZW5kYXIuQ2FsZW5kYXJTaGFyZU9wdGlvbnMSOAoKc2hhcmVfaW5mbxgoIAEoCzIkLmVudGl0aWVzLkNhbGVuZGFyLkNhbGVuZGFyU2hhcmVJbmZvEhcKD2lzX2Nyb3NzX3RlbmFudBgpIAEoCBIZChFjYWxlbmRhcl9vd25lcl9pZBgqIAEoCRImCgtjb3Zlcl9pbWFnZRgrIAEoCzIRLmVudGl0aWVzLkltSW1hZ2USGgoSY2FsZW5kYXJfdGVuYW50X2lkGCwgASgJEjYKDW9mZmljaWFsX3R5cGUYLSABKA4yHy5lbnRpdGllcy5DYWxlbmRhci5PZmZpY2lhbFR5cGUa2AEKFENhbGVuZGFyU2hhcmVPcHRpb25zEjwKFGRlZmF1bHRfc2hhcmVfb3B0aW9uGAEgASgOMh4uZW50aXRpZXMuQ2FsZW5kYXIuU2hhcmVPcHRpb24SQgoaY3Jvc3NfZGVmYXVsdF9zaGFyZV9vcHRpb24YAiABKA4yHi5lbnRpdGllcy5DYWxlbmRhci5TaGFyZU9wdGlvbhI+ChZjcm9zc190b3Bfc2hhcmVfb3B0aW9uGAMgASgOMh4uZW50aXRpZXMuQ2FsZW5kYXIuU2hhcmVPcHRpb24aPgoRQ2FsZW5kYXJTaGFyZUluZm8SEQoJc2hhcmVfdXJsGAEgASgJEhYKDnN1YnNjcmliZXJfbnVtGAIgASgFIqYBCgRUeXBlEhAKDFVOS05PV05fVFlQRRAAEgsKB1BSSU1BUlkQARIJCgVPVEhFUhACEgoKBkdPT0dMRRADEg0KCVJFU09VUkNFUxAEEhQKEEdPT0dMRV9SRVNPVVJDRVMQBRIRCglESVNNSVNTRUQQBhoCCAESCQoFRU1BSUwQBxIMCghFWENIQU5HRRAIEgwKCEFDVElWSVRZEAkSCQoFUEhPTkUQCiJSCgpBY2Nlc3NSb2xlEgsKB1VOS05PV04QABIUChBGUkVFX0JVU1lfUkVBREVSEAESCgoGUkVBREVSEAISCgoGV1JJVEVSEAMSCQoFT1dORVIQBCJLCgZTdGF0dXMSCwoHREVGQVVMVBABEgwKCEFDQ0VQVEVEEAISDAoIREVDTElORUQQAxILCgdJTlZJVEVEEAQSCwoHUkVNT1ZFRBAFIqgBChJWaXNpYmlsaXR5UHJvcGVydHkSDwoLTk9STUFMX1ZJRVcQARIQCgxNRUVUSU5HX1ZJRVcQAhITCg9UT0RBWV9GRUVEX1ZJRVcQBBIWChJNT0JJTEVfTk9STUFMX1ZJRVcQCBIXChNNT0JJTEVfTUVFVElOR19WSUVXEBASEwoPV0VCX05PUk1BTF9WSUVXECASFAoQV0VCX01FRVRJTkdfVklFVxBAIj0KEFN1YnNjcmlwdGlvblR5cGUSEwoPU1VCX05PUk1BTF9WSUVXEAESFAoQU1VCX01FRVRJTkdfVklFVxACIpwBCgtTaGFyZU9wdGlvbhIVChFVTktOT1dOX1NIQVJFX09QVBAAEhUKEVNIQVJFX09QVF9QUklWQVRFEAUSHgoaU0hBUkVfT1BUX0ZSRUVfQlVTWV9SRUFERVIQChIUChBTSEFSRV9PUFRfUkVBREVSEA8SFAoQU0hBUkVfT1BUX1dSSVRFUhAUEhMKD1NIQVJFX09QVF9PV05FUhAZIi8KDE9mZmljaWFsVHlwZRIQCgxOT1RfT0ZGSUNJQUwQABINCglCWVRFREFOQ0UQASLcAQoHSW1JbWFnZRIRCglpbWFnZV9rZXkYASABKAkSDwoHZnNfdW5pdBgCIAEoCRIgCgZjcnlwdG8YAyABKAsyEC5lbnRpdGllcy5DcnlwdG8SLwoFQXR0cnMYBCADKAsyIC5lbnRpdGllcy5JbUltYWdlLkltYWdlQXR0cmlidXRlGloKDkltYWdlQXR0cmlidXRlEikKCENyb3BUeXBlGAEgASgOMhcuZW50aXRpZXMuSW1hZ2VDcm9wVHlwZRINCgVXaWR0aBgCIAEoAxIOCgZIZWlnaHQYAyABKAMiPQoQVXNlckNhbGVuZGFySW5mbxIMCgRub3RlGAEgASgJEhsKEGJhY2tncm91bmRfY29sb3IYAiABKAU6ATAigwMKFENhbGVuZGFyTWVtYmVyQ29tbWl0EkYKC21lbWJlcl90eXBlGAEgASgOMjEuZW50aXRpZXMuQ2FsZW5kYXJNZW1iZXJDb21taXQuQ2FsZW5kYXJNZW1iZXJUeXBlEkQKC2FjY2Vzc19yb2xlGAIgASgOMh0uZW50aXRpZXMuQ2FsZW5kYXIuQWNjZXNzUm9sZToQRlJFRV9CVVNZX1JFQURFUhIzCgR1c2VyGGQgASgLMiMuZW50aXRpZXMuQ2FsZW5kYXJNZW1iZXJDb21taXQuVXNlckgAEjUKBWdyb3VwGGUgASgLMiQuZW50aXRpZXMuQ2FsZW5kYXJNZW1iZXJDb21taXQuR3JvdXBIABoXCgRVc2VyEg8KB3VzZXJfaWQYASABKAkaGQoFR3JvdXASEAoIZ3JvdXBfaWQYASABKAkiLwoSQ2FsZW5kYXJNZW1iZXJUeXBlEg4KCklORElWSURVQUwQARIJCgVHUk9VUBACQgwKCmRlcGVuZGVuY3ki8wEKFUNhbGVuZGFyTWVtYmVyQ29tbWl0cxIzCgthZGRfbWVtYmVycxgBIAMoCzIeLmVudGl0aWVzLkNhbGVuZGFyTWVtYmVyQ29tbWl0EjYKDnVwZGF0ZV9tZW1iZXJzGAIgAygLMh4uZW50aXRpZXMuQ2FsZW5kYXJNZW1iZXJDb21taXQSFwoPcmVtb3ZlX3VzZXJfaWRzGAMgAygJEhgKEHJlbW92ZV9ncm91cF9pZHMYBCADKAkSDwoHY29tbWVudBgFIAEoCRIpCiF1c2VyX2NvbGxhYm9yYXRpb25fZm9yYmlkZGVuX2xpc3QYBiADKAkisQIKEENhbGVuZGFyU2F2ZUluZm8SDQoCaWQYASABKAk6ATASDwoHc3VtbWFyeRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIYChBkZWZhdWx0X3RpbWV6b25lGAQgASgJEhcKD2NvdmVyX2ltYWdlX2tleRgFIAEoCRI+Cg1zaGFyZV9vcHRpb25zGAYgASgLMicuZW50aXRpZXMuQ2FsZW5kYXIuQ2FsZW5kYXJTaGFyZU9wdGlvbnMSNwoObWVtYmVyX2NvbW1pdHMYByABKAsyHy5lbnRpdGllcy5DYWxlbmRhck1lbWJlckNvbW1pdHMSPAoYaW5kaXZpZHVhbF9jYWxlbmRhcl9pbmZvGAggASgLMhouZW50aXRpZXMuVXNlckNhbGVuZGFySW5mbyJBCg9FeHRlcm5hbEFjY291bnQSDQoFZW1haWwYASABKAkSHwoQcGFzc3dvcmRfaW52YWxpZBgCIAEoCDoFZmFsc2UibQoaRXh0ZXJuYWxNYWlsQWNjb3VudFNldHRpbmcSHgoPZW5hYmxlX2NhbGVuZGFyGAEgASgIOgVmYWxzZRIvCiBlbmFibGVfZW1haWxfYXR0ZW5kZWVfaW52aXRhdGlvbhgCIAEoCDoFZmFsc2Ui5AEKE0V4dGVybmFsTWFpbEFjY291bnQSFAoMbWFpbF9hZGRyZXNzGAEgASgJEjcKBHR5cGUYAiABKA4yKS5lbnRpdGllcy5FeHRlcm5hbE1haWxBY2NvdW50LkFjY291bnRUeXBlEh4KD2hhc19nbWFpbF9zY29wZRgDIAEoCDoFZmFsc2USNQoHc2V0dGluZxgEIAEoCzIkLmVudGl0aWVzLkV4dGVybmFsTWFpbEFjY291bnRTZXR0aW5nIicKC0FjY291bnRUeXBlEgoKBkdvb2dsZRABEgwKCEV4Y2hhbmdlEAIisQEKEUNhbGVuZGFyQnJpZWZJbmZvEgoKAmlkGAEgASgJEiUKBHR5cGUYAiABKA4yFy5lbnRpdGllcy5DYWxlbmRhci5UeXBlEhkKEXN1Y2Nlc3Nvcl91c2VyX2lkGAMgASgDEhsKDGlzX2FsbF9zdGFmZhgEIAEoCDoFZmFsc2USGAoQY2FsZW5kYXJfc3VtbWFyeRgFIAEoCRIXCg9jcmVhdG9yX3VzZXJfaWQYBiABKAMihwIKDUNhbGVuZGFyRXh0cmESFgoLbWF4X3ZlcnNpb24YASABKAM6ATASGgoQZm9sZGVyX29ial90b2tlbhgDIAEoCToAEhkKEXN1Y2Nlc3Nvcl91c2VyX2lkGAQgASgDEjsKD2NhbGVuZGFyX3NjaGVtYRgFIAEoCzIiLmVudGl0aWVzLkNhbGVuZGFyU2NoZW1hQ29sbGVjdGlvbhJBChVjYWxlbmRhcl9ldmVudF9zY2hlbWEYBiABKAsyIi5lbnRpdGllcy5DYWxlbmRhclNjaGVtYUNvbGxlY3Rpb24SJwoMQ292ZXJJbWdJbmZvGAcgASgLMhEuZW50aXRpZXMuSW1JbWFnZSLQAQoSQ2FsZW5kYXJFbWFpbEV4dHJhEhsKE2lzX3NhdmVfZW1haWxfZXZlbnQYASABKAgSPQoWZW1haWxfZXZlbnRfc3luY19yYW5nZRgCIAEoDjIdLmVudGl0aWVzLkVtYWlsRXZlbnRTeW5jUmFuZ2USEQoJc3luY190eXBlGAMgASgDEhMKC21haWxfc291cmNlGAQgASgFEjYKC2F0dGFjaG1lbnRzGAUgAygLMiEuZW50aXRpZXMuQ2FsZW5kYXJFdmVudEF0dGFjaG1lbnQi9gQKDkNhbGVuZGFyTWVtYmVyEhIKCmNoYXR0ZXJfaWQYASACKAkSRAoLYWNjZXNzX3JvbGUYAiABKA4yHS5lbnRpdGllcy5DYWxlbmRhci5BY2Nlc3NSb2xlOhBGUkVFX0JVU1lfUkVBREVSEjIKBnN0YXR1cxgDIAEoDjIZLmVudGl0aWVzLkNhbGVuZGFyLlN0YXR1czoHREVGQVVMVBIqCgR0YWdzGAQgAygLMhwuZW50aXRpZXMuVXNlckNhbGVuZGFyUmVmVGFnEkwKC21lbWJlcl90eXBlGAUgASgOMisuZW50aXRpZXMuQ2FsZW5kYXJNZW1iZXIuQ2FsZW5kYXJNZW1iZXJUeXBlOgpJTkRJVklEVUFMEhEKB2NoYXRfaWQYBiABKAk6ABIkChV1c2Vfc2VydmVyX21lbWJlcl9udW0YByABKAg6BWZhbHNlEhwKEXNlcnZlcl9tZW1iZXJfbnVtGAggASgFOgEwEhcKD2RlcGFydG1lbnRfbmFtZRgJIAEoCRI8Cg1yZWxhdGlvbl90eXBlGAogASgOMiUuZW50aXRpZXMuQ2FsZW5kYXJNZW1iZXIuUmVsYXRpb25UeXBlIi8KEkNhbGVuZGFyTWVtYmVyVHlwZRIOCgpJTkRJVklEVUFMEAESCQoFR1JPVVAQAiJRChlDYWxlbmRhck1lbWJlclN1cHBvcnRUeXBlEhYKElNVUFBPUlRfSU5ESVZJRFVBTBABEhwKGFNVUFBPUlRfSU5ESVZJRFVBTF9HUk9VUBACIioKDFJlbGF0aW9uVHlwZRIMCghJTlRFUk5BTBAAEgwKCEVYVEVSTkFMEAEiwwEKElVzZXJDYWxlbmRhclJlZlRhZxJNCgR0eXBlGAEgASgOMjMuZW50aXRpZXMuVXNlckNhbGVuZGFyUmVmVGFnLlVzZXJDYWxlbmRhclJlZlRhZ1R5cGU6CklORElWSURVQUwSEQoHY29udGVudBgCIAEoCToAEhYKC2FjY2Vzc19yb2xlGAMgASgFOgEwIjMKFlVzZXJDYWxlbmRhclJlZlRhZ1R5cGUSDgoKSU5ESVZJRFVBTBABEgkKBUdST1VQEAIiYQoRVXNlckNhbGVuZGFyRXh0cmESKgoEdGFncxgBIAMoCzIcLmVudGl0aWVzLlVzZXJDYWxlbmRhclJlZlRhZxIgChVDYWxlbmRhckNyZWF0b3JVc2VySUQYAiABKAM6ATAimQEKD0NhbGVuZGFyQ29udGFjdBITCgtjYWxlbmRhcl9pZBgBIAIoCRIRCgdzdW1tYXJ5GAIgASgJOgASFAoKYXZhdGFyX3VybBgDIAEoCToAEhoKC2lzX3Jlc291cmNlGAQgASgIOgVmYWxzZRIWCg5kZXBhcnRtZW50X2lkcxgFIAMoCRIUCgpjaGF0dGVyX2lkGAYgASgJOgAi0QYKEUV2ZW50Q2FyZFRlbXBsYXRlEg8KB3N1bW1hcnkYASABKAkSEQoJc2VuZGVyX2lkGAIgASgJEhMKC2lzX29wdGlvbmFsGAMgASgIEhIKCnN0YXJ0X3RpbWUYBCABKAMSEAoIZW5kX3RpbWUYBSABKAMSDQoFcnJ1bGUYBiABKAkSEgoKaXNfYWxsX2RheRgHIAEoCBIPCgd2ZXJzaW9uGAggASgDEhYKDnN0YXJ0X3RpbWV6b25lGAkgASgJEhQKDGVuZF90aW1lem9uZRgKIAEoCRIKCgJpZBgLIAEoCRIMCgR0eXBlGAwgASgFEgsKA3VpZBgNIAEoCRIVCg1vcmlnaW5hbF90aW1lGA4gASgDEhMKC2NhbGVuZGFyX2lkGA8gASgJEhUKDW1lZXRpbmdfcm9vbXMYECADKAkSHAoUYXR0ZW5kZWVfY2hhdHRlcl9pZHMYESADKAkSEAoIY2hhdF9pZHMYEiADKAkSHAoUc2VsZl9hdHRlbmRlZV9zdGF0dXMYEyABKAUSFgoOYXR0ZW5kZWVfY291bnQYFCABKAUSEAoIbG9jYXRpb24YFSABKAkSEwoLZGVzY3JpcHRpb24YFiABKAkSEgoKZXZlbnRfdHlwZRgXIAEoBRIXCg9pc19jcm9zc190ZW5hbnQYGCABKAgSHgoWaW5kaXZpZHVhbF9jaGF0dGVyX2lkcxgZIAMoCRI/ChdjYWxlbmRhcl9yZXNvdXJjZV9pbmZvcxgaIAMoCzIeLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2VJbmZvEhQKDHJzdnBfdXNlcl9pZBgbIAEoCRISCgppc193ZWJpbmFyGBwgASgIEhsKE3NwZWFrZXJfY2hhdHRlcl9pZHMYHSADKAkSGAoQc3BlYWtlcl9jaGF0X2lkcxgeIAMoCRInCgxyZWxhdGlvbl90YWcYHyABKAsyES5lbnRpdGllcy5UYWdEYXRhEh0KFW9yZ2FuaXplcl9jYWxlbmRhcl9pZBggIAEoAxIXCg9jcmVhdG9yX3VzZXJfaWQYISABKAMSGQoRb3JnYW5pemVyX3VzZXJfaWQYIiABKAMSGQoRc3VjY2Vzc29yX3VzZXJfaWQYIyABKAMiiwIKGENhbGVuZGFyRXZlbnRXZWJpbmFyQ29uZhImCh5zcGVha2VyX2Nhbl9zZWVfb3RoZXJfc3BlYWtlcnMYASABKAgSIQoZc3BlYWtlcl9jYW5faW52aXRlX290aGVycxgCIAEoCBInCh9hdWRpZW5jZV9jYW5fc2VlX290aGVyX3NwZWFrZXJzGAMgASgIEiIKGmF1ZGllbmNlX2Nhbl9pbnZpdGVfb3RoZXJzGAQgASgIEioKInNwZWFrZXJfY2FuX25vdF9zZWVfb3RoZXJfYXVkaWVuY2UYBSABKAgSKwojYXVkaWVuY2VfY2FuX25vdF9zZWVfb3RoZXJfYXVkaWVuY2UYBiABKAgiVgocQ2FsZW5kYXJFdmVudFdlYmluYXJBdHRlbmRlZRI2Cg1hdHRlbmRlZV9pbmZvGAEgASgLMh8uZW50aXRpZXMuQ2FsZW5kYXJFdmVudEF0dGVuZGVlImAKIUNhbGVuZGFyRXZlbnRXZWJpbmFyR3JvdXBBdHRlbmRlZRI7Cg1hdHRlbmRlZV9pbmZvGAEgASgLMiQuZW50aXRpZXMuQ2FsZW5kYXJFdmVudEdyb3VwQXR0ZW5kZWUihwIKIENhbGVuZGFyRXZlbnRXZWJpbmFyQXR0ZW5kZWVJbmZvEjkKCWF0dGVuZGVlcxgBIAMoCzImLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRXZWJpbmFyQXR0ZW5kZWUSRAoPZ3JvdXBfYXR0ZW5kZWVzGAIgAygLMisuZW50aXRpZXMuQ2FsZW5kYXJFdmVudFdlYmluYXJHcm91cEF0dGVuZGVlEjgKE2V2ZW50X2F0dGVuZGVlX2luZm8YAyABKAsyGy5lbnRpdGllcy5FdmVudEF0dGVuZGVlSW5mbxIUCgxyZXF1aXJlX21vcmUYBCABKAgSEgoKc3luY190b2tlbhgFIAEoCSLRAgoYQ2FsZW5kYXJFdmVudFdlYmluYXJJbmZvEjAKBGNvbmYYASABKAsyIi5lbnRpdGllcy5DYWxlbmRhckV2ZW50V2ViaW5hckNvbmYSPAoIc3BlYWtlcnMYAiABKAsyKi5lbnRpdGllcy5DYWxlbmRhckV2ZW50V2ViaW5hckF0dGVuZGVlSW5mbxI9CglhdWRpZW5jZXMYAyABKAsyKi5lbnRpdGllcy5DYWxlbmRhckV2ZW50V2ViaW5hckF0dGVuZGVlSW5mbxIyCglyZXNvdXJjZXMYBCADKAsyHy5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWUSPAoVd2ViaW5hcl9hdHRlbmRlZV90eXBlGAUgASgOMh0uZW50aXRpZXMuV2ViaW5hckF0dGVuZGVlVHlwZRIUCgx3ZWJpbmFyX2RhdGEYBiABKAkiwwUKFkNhbGVuZGFyRXZlbnREaWZmRmllbGQi2wMKD0NoYW5nZWFibGVGaWVsZBIWChJTZWxmQXR0ZW5kZWVTdGF0dXMQARIJCgVTdGFydBACEhEKDVN0YXJ0VGltZXpvbmUQAxIHCgNFbmQQBBIPCgtFbmRUaW1lem9uZRAFEg0KCUxvY2F0aW9ucxAGEgkKBVJydWxlEAcSGQoVR3Vlc3RzQ2FuSW52aXRlT3RoZXJzEAgSGwoXR3Vlc3RzQ2FuU2VlT3RoZXJHdWVzdHMQCRITCg9HdWVzdHNDYW5Nb2RpZnkQChIJCgVDb2xvchALEg4KClZpc2liaWxpdHkQDBIMCghJc0FsbERheRANEg0KCVJlbWluZGVycxAOEgoKBklzRnJlZRAPEgsKB1N1bW1hcnkQEBIPCgtEZXNjcmlwdGlvbhAREhMKD0RvY3NEZXNjcmlwdGlvbhASEg8KC0F0dGFjaG1lbnRzEBMSDwoLVmlkZW9Db25maWcQFBIRCg1DaGVja0luQ29uZmlnEBUSFgoSTWVldGluZ05vdGVzQ29uZmlnEBYSFQoRTWVldGluZ0NoYXRDb25maWcQFxIaChZSZXNvdXJjZVdhaXRMaXN0T3JkZXJzEBgSGgoWRXZlbnRDcm9zc0xhbmd1YWdlVHlwZRAZIsoBChFVbkNoYW5nZWFibGVGaWVsZBIVChFDcmVhdG9yQ2FsZW5kYXJJZBABEhcKE09yZ2FuaXplckNhbGVuZGFySWQQAhIKCgZTb3VyY2UQAxIRCg1PcmlnaW5hbEV2ZW50EAQSFAoQT3JpZ2luYWxJc0FsbERheRAFEg4KCkltcG9ydGFuY2UQBhIMCghBdWRpb1VybBAHEgcKA1VybBAIEggKBFR5cGUQCRIRCg1Jc0Nyb3NzVGVuYW50EAoSDAoIQ2F0ZWdvcnkQCyKrHQoNQ2FsZW5kYXJFdmVudBINCgJpZBgBIAEoCToBMBISCgp1bmlxdWVfa2V5GAIgAigJEhMKC2NhbGVuZGFyX2lkGAMgAigJEhUKDW9yaWdpbmFsX3RpbWUYBCACKAMSHgoTY3JlYXRvcl9jYWxlbmRhcl9pZBgFIAEoCToBMBIgChVvcmdhbml6ZXJfY2FsZW5kYXJfaWQYBiABKAk6ATASYAoUc2VsZl9hdHRlbmRlZV9zdGF0dXMYByABKA4yKi5lbnRpdGllcy5DYWxlbmRhckV2ZW50LlNlbGZBdHRlbmRlZVN0YXR1czoWQVRURU5ERUVfU1RBVFVTX0FDQ0VQVBINCgVzdGFydBgIIAIoAxIWCg5zdGFydF90aW1lem9uZRgJIAIoCRILCgNlbmQYCiACKAMSFAoMZW5kX3RpbWV6b25lGAsgASgJEjkKBnN0YXR1cxgMIAEoDjIeLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQuU3RhdHVzOglDT05GSVJNRUQSMgoJbG9jYXRpb25zGA0gAygLMh8uZW50aXRpZXMuQ2FsZW5kYXJFdmVudExvY2F0aW9uEg8KBXJydWxlGA4gASgJOgASJgoYZ3Vlc3RzX2Nhbl9pbnZpdGVfb3RoZXJzGA8gASgIOgR0cnVlEikKG2d1ZXN0c19jYW5fc2VlX290aGVyX2d1ZXN0cxgQIAEoCDoEdHJ1ZRIgChFndWVzdHNfY2FuX21vZGlmeRgRIAEoCDoFZmFsc2USFgoLY3JlYXRlX3RpbWUYEiABKAM6ATASFgoLdXBkYXRlX3RpbWUYEyABKAM6ATASGQoKaXNfZGVsZXRlZBgUIAEoCDoFZmFsc2USEQoFY29sb3IYFSABKAU6Ai0xEjkKBnNvdXJjZRgWIAEoDjIeLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQuU291cmNlOglQQ19DTElFTlQSPwoKdmlzaWJpbGl0eRgXIAEoDjIiLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQuVmlzaWJpbGl0eToHREVGQVVMVBIVCgppbXBvcnRhbmNlGBggASgFOgEwEhkKCmlzX2FsbF9kYXkYGSABKAg6BWZhbHNlEjIKCWF0dGVuZGVlcxgaIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRlbmRlZRIlCglyZW1pbmRlcnMYGyADKAsyEi5lbnRpdGllcy5SZW1pbmRlchIWCgdpc19mcmVlGBwgASgIOgVmYWxzZRIRCgdzdW1tYXJ5GB0gASgJOgASFQoLZGVzY3JpcHRpb24YHiABKAk6ABIYCg5vcmlnaW5hbF9ldmVudBgfIAEoCToAEiIKE29yaWdpbmFsX2lzX2FsbF9kYXkYICABKAg6BWZhbHNlEhMKCWF1ZGlvX3VybBghIAEoCToAEg0KA3VybBgiIAEoCToAEhcKCWhhc19hbGFybRgjIAEoCDoEdHJ1ZRIbCgxoYXNfYXR0ZW5kZWUYJCABKAg6BWZhbHNlEhsKDGhhc19sb2NhdGlvbhglIAEoCDoFZmFsc2USEgoHdmVyc2lvbhgmIAEoAzoBMBITCghzZXF1ZW5jZRgnIAEoBToBMBI4CgR0eXBlGCggASgOMhwuZW50aXRpZXMuQ2FsZW5kYXJFdmVudC5UeXBlOgxERUZBVUxUX1RZUEUSFAoKbWVldGluZ19pZBgpIAEoCToAEhgKDmRvY3Nfb2JqX3Rva2VuGCogASgJOgASGgoQZG9jc19kZXNjcmlwdGlvbhgrIAEoCToAEh8KFXN1Y2Nlc3Nvcl9jYWxlbmRhcl9pZBgsIAEoCToAEl4KEW5vdGlmaWNhdGlvbl90eXBlGC0gASgOMiguZW50aXRpZXMuQ2FsZW5kYXJFdmVudC5Ob3RpZmljYXRpb25UeXBlOhlERUZBVUxUX05PVElGSUNBVElPTl9UWVBFEh4KD2lzX2Nyb3NzX3RlbmFudBguIAEoCDoFZmFsc2USHgoQZGlzc29sdmVfbWVldGluZxgvIAEoCDoEdHJ1ZRJMCh5jYWxlbmRhcl9ldmVudF9ncm91cF9hdHRlbmRlZXMYMCADKAsyJC5lbnRpdGllcy5DYWxlbmRhckV2ZW50R3JvdXBBdHRlbmRlZRI2ChJjYWxlbmRhcl9yZXNvdXJjZXMYMSADKAsyGi5lbnRpdGllcy5DYWxlbmRhclJlc291cmNlEjYKEmNhbGVuZGFyX2J1aWxkaW5ncxgyIAMoCzIaLmVudGl0aWVzLkNhbGVuZGFyQnVpbGRpbmcSHAoSbWVldGluZ19taW51dGVfdXJsGDMgASgJOgASJwoYaXNfbWVldGluZ19taW51dGVfdXBkYXRlGDQgASgIOgVmYWxzZRIZCg92Y2hhdF91bmlxdWVfaWQYNSABKAk6ABI2ChJnb29nbGVfZXZlbnRfZXh0cmEYNiABKAsyGi5lbnRpdGllcy5Hb29nbGVFdmVudEV4dHJhEhwKEmludml0ZV9vcGVyYXRvcl9pZBg3IAEoCToAEjYKC2F0dGFjaG1lbnRzGDggAygLMiEuZW50aXRpZXMuQ2FsZW5kYXJFdmVudEF0dGFjaG1lbnQSGgoPYXR0ZW5kZWVfc291cmNlGDkgASgFOgExEg4KBnNjaGVtYRg6IAEoDBJECghjYXRlZ29yeRg7IAEoDjIgLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQuQ2F0ZWdvcnk6EERFRkFVTFRfQ0FURUdPUlkSOAoRc2FtZV9wYWdlX21lZXRpbmcYPCABKAsyHS5lbnRpdGllcy5TYW1lUGFnZU1lZXRpbmdJbmZvEhEKCXNjaGVtYV92Mhg9IAEoDBIyCg1hdHRlbmRlZV9pbmZvGD4gASgLMhsuZW50aXRpZXMuRXZlbnRBdHRlbmRlZUluZm8SMAoMdmlkZW9fY29uZmlnGD8gASgLMhouZW50aXRpZXMuRXZlbnRWQ2hhdENvbmZpZxIRCglsYXN0X2RhdGUYQCABKAMSNQoPY2hlY2tfaW5fY29uZmlnGEEgASgLMhwuZW50aXRpZXMuRXZlbnRDaGVja0luQ29uZmlnEjYKD2VuY3J5cHRpb25faW5mbxhCIAEoCzIdLmVudGl0aWVzLkV2ZW50RW5jcnlwdGlvbkluZm8SOAoMd2ViaW5hcl9pbmZvGEMgASgLMiIuZW50aXRpZXMuQ2FsZW5kYXJFdmVudFdlYmluYXJJbmZvEicKDHJlbGF0aW9uX3RhZxhEIAEoCzIRLmVudGl0aWVzLlRhZ0RhdGESOgoUbWVldGluZ19ub3Rlc19jb25maWcYRSABKAsyHC5lbnRpdGllcy5NZWV0aW5nTm90ZXNDb25maWcSJQodc2VuZF9zbXNfbm90aWZpY2F0aW9uX3NldHRpbmcYRiABKAgSOAoTbWVldGluZ19jaGF0X2NvbmZpZxhHIAEoCzIbLmVudGl0aWVzLk1lZXRpbmdDaGF0Q29uZmlnEkMKGXJlc291cmNlX3dhaXRfbGlzdF9vcmRlcnMYSCABKAsyIC5lbnRpdGllcy5SZXNvdXJjZVdhaXRMaXN0T3JkZXJzEjoKFGV4dGVybmFsX2V2ZW50X2V4dHJhGEkgASgLMhwuZW50aXRpZXMuRXh0ZXJuYWxFdmVudEV4dHJhEkMKGWV2ZW50X2Nyb3NzX2xhbmd1YWdlX2RhdGEYSiABKAsyIC5lbnRpdGllcy5FdmVudENyb3NzTGFuZ3VhZ2VEYXRhIvYBCgZTb3VyY2USCwoHVU5LTk9XThAAEgcKA1dFQhABEgcKA0lPUxACEgsKB0lPU19BUFAQAxILCgdBTkRST0lEEAQSDwoLQU5EUk9JRF9BUFAQBRINCglQQ19DTElFTlQQBhIKCgZHT09HTEUQBxIKCgZQRU9QTEUQCBIQCgxQTEFDRV9IT0xERVIQCRIMCghPUEVOX0FQSRAKEgoKBkNBTERBVhALEgsKB1RJTUVPRkYQDBIJCgVFTUFJTBANEgwKCEVYQ0hBTkdFEA4SCwoHSU5FTUFJTBAPEg0KCUxJVkVfSE9TVBAQEg0KCVNDSEVEVUxFUhARIjIKClZpc2liaWxpdHkSCwoHREVGQVVMVBABEgoKBlBVQkxJQxACEgsKB1BSSVZBVEUQAyI1CgZTdGF0dXMSDQoJVEVOVEFUSVZFEAESDQoJQ09ORklSTUVEEAISDQoJQ0FOQ0VMTEVEEAMiNAoEVHlwZRIQCgxERUZBVUxUX1RZUEUQARILCgdNRUVUSU5HEAISDQoJQklORF9DSEFUEAMihgEKEE5vdGlmaWNhdGlvblR5cGUSHQoZREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRRABEhMKD05PX05PVElGSUNBVElPThACEhUKEVNFTkRfTk9USUZJQ0FUSU9OEAMSJwojTk9fTk9USUZJQ0FUSU9OX0ZPUl9ERUxFVEVfQVRURU5ERUUQBCKrAQoSU2VsZkF0dGVuZGVlU3RhdHVzEiAKHEFUVEVOREVFX1NUQVRVU19ORUVEU19BQ1RJT04QARIaChZBVFRFTkRFRV9TVEFUVVNfQUNDRVBUEAISHQoZQVRURU5ERUVfU1RBVFVTX1RFTlRBVElWRRADEhsKF0FUVEVOREVFX1NUQVRVU19ERUNMSU5FEAQSGwoXQVRURU5ERUVfU1RBVFVTX1JFTU9WRUQQBSI3Cg5BdHRlbmRlZVNvdXJjZRIICgRMQVJLEAESCAoETUFJTBACEhEKDUVYQ0hBTkdFX1NZTkMQAyJ1CghDYXRlZ29yeRIUChBERUZBVUxUX0NBVEVHT1JZEAESFQoRU0FNRV9QQUdFX01FRVRJTkcQAhIVChFSRVNPVVJDRV9TVFJBVEVHWRADEhgKFFJFU09VUkNFX1JFUVVJU0lUSU9OEAQSCwoHV0VCSU5BUhAFIqIBChZDYWxlbmRhckV2ZW50RXh0cmFJbmZvEhIKCmNoYXR0ZXJfaWQYASABKAkSIgoHbWVldGluZxgCIAEoCzIRLmVudGl0aWVzLk1lZXRpbmcSHwoGdl9jaGF0GAMgASgLMg8uZW50aXRpZXMuVmNoYXQSLwoKYnJpZWZfaW5mbxgEIAEoCzIbLmVudGl0aWVzLkNhbGVuZGFyQnJpZWZJbmZvIoMBChFDYWxlbmRhckV2ZW50SW5mbxI4ChNjYWxlbmRhcl9ldmVudF9jb3JlGAEgASgLMhsuZW50aXRpZXMuQ2FsZW5kYXJFdmVudENvcmUSNAoKZXh0cmFfaW5mbxgCIAEoCzIgLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRFeHRyYUluZm8iewoQR29vZ2xlRXZlbnRFeHRyYRJCCgtkYXRhX3NvdXJjZRgBIAEoDjIlLmVudGl0aWVzLkdvb2dsZUV2ZW50RXh0cmEuRGF0YVNvdXJjZToGR09PR0xFIiMKCkRhdGFTb3VyY2USCgoGR09PR0xFEAESCQoFQ0FDSEUQAiJOChJFeHRlcm5hbEV2ZW50RXh0cmESHwoXZGlyZWN0bHlfc3luY19mcm9tX2xhcmsYASABKAgSFwoPaXNfb25lX3dheV9zeW5jGAIgASgIIukDCgpFdmVudEV4dHJhEjgKBHR5cGUYASABKA4yHC5lbnRpdGllcy5DYWxlbmRhckV2ZW50LlR5cGU6DERFRkFVTFRfVFlQRRJGChpjYWxlbmRhcl9zY2hlbWFfY29sbGVjdGlvbhgCIAEoCzIiLmVudGl0aWVzLkNhbGVuZGFyU2NoZW1hQ29sbGVjdGlvbhIgChFFeGNlcHRpb25DcmVhdGluZxgDIAEoCDoFZmFsc2USMAoMdmNoYXRfY29uZmlnGAQgASgLMhouZW50aXRpZXMuRXZlbnRWQ2hhdENvbmZpZxI1Cg9jaGVja19pbl9jb25maWcYBSABKAsyHC5lbnRpdGllcy5FdmVudENoZWNrSW5Db25maWcSTQoecmVzb3VyY2VfcmVuZXdhbF9yZW1pbmRlcl9pbmZvGAYgASgLMiUuZW50aXRpZXMuUmVzb3VyY2VSZW5ld2FsUmVtaW5kZXJJbmZvEjoKFG1lZXRpbmdfbm90ZXNfY29uZmlnGAcgASgLMhwuZW50aXRpZXMuTWVldGluZ05vdGVzQ29uZmlnEkMKGWV2ZW50X2Nyb3NzX2xhbmd1YWdlX2luZm8YCCABKAsyIC5lbnRpdGllcy5FdmVudENyb3NzTGFuZ3VhZ2VJbmZvIoYCChZFdmVudENyb3NzTGFuZ3VhZ2VJbmZvEjcKDWxhbmd1YWdlX3R5cGUYASABKA4yIC5lbnRpdGllcy5FdmVudENyb3NzTGFuZ3VhZ2VUeXBlEicKH2lzX3N1bW1hcnlfdmFsaWRfbXVsdGlfbGFuZ3VhZ2UYAiABKAgSHwoXY2hpbmVzZV9hdHRlbmRlZV9udW1iZXIYAyABKAUSHwoXZW5nbGlzaF9hdHRlbmRlZV9udW1iZXIYBCABKAUSSAoZbGFuZ3VhZ2VfdW5rbm93bl9zdWJfdHlwZRgFIAEoDjIlLmVudGl0aWVzLkNyb3NzTGFuZ3VhZ2VVbmtub3duU3ViVHlwZSJRChZFdmVudENyb3NzTGFuZ3VhZ2VEYXRhEjcKDWxhbmd1YWdlX3R5cGUYASABKA4yIC5lbnRpdGllcy5FdmVudENyb3NzTGFuZ3VhZ2VUeXBlIvIBChJFdmVudENyb3NzTGFuZ3VhZ2USLQoJZXZlbnRfa2V5GAEgASgLMhouZW50aXRpZXMuQ2FsZW5kYXJFdmVudEtleRJSCiFjcm9zc19sYW5ndWFnZV9zdW1tYXJ5X2FwcGx5X3R5cGUYAiABKA4yJy5lbnRpdGllcy5Dcm9zc0xhbmd1YWdlU3VtbWFyeUFwcGx5VHlwZRIxCgVzY2VuZRgDIAEoDjIiLmVudGl0aWVzLkV2ZW50Q3Jvc3NMYW5ndWFnZS5TY2VuZSImCgVTY2VuZRILCgdERUZBVUxUEAASEAoMQk9UX01TR19DQVJEEAEiqAoKEEV2ZW50VkNoYXRDb25maWcSNwoKdmNoYXRfdHlwZRgBIAEoDjIZLmVudGl0aWVzLlZjaGF0LlZDaGF0VHlwZToIVU5fS05PV04SEwoLbWVldGluZ191cmwYAiABKAkSTAoNb3RoZXJfY29uZmlncxhlIAEoCzIzLmVudGl0aWVzLkV2ZW50VkNoYXRDb25maWcuT3RoZXJWaWRlb01lZXRpbmdDb25maWdzSAASUAoOZ29vZ2xlX2NvbmZpZ3MYZiABKAsyNi5lbnRpdGllcy5FdmVudFZDaGF0Q29uZmlnLkdvb2dsZVZpZGVvQ29uZmVyZW5jZUNvbmZpZ0gAEkoKDHpvb21fY29uZmlncxhnIAEoCzIyLmVudGl0aWVzLkV2ZW50VkNoYXRDb25maWcuWm9vbVZpZGVvTWVldGluZ0NvbmZpZ3NIABJSChN0aGlyZF9wYXJ0eV9jb25maWdzGGggASgLMjMuZW50aXRpZXMuRXZlbnRWQ2hhdENvbmZpZy5UaGlyZFBhcnR5TWVldGluZ0NvbmZpZ3NIABJKChRsYXJrX3ZjX2JpbmRpbmdfZGF0YRgDIAEoCzIsLmVudGl0aWVzLkV2ZW50VkNoYXRDb25maWcuTGFya1ZDQmluZGluZ0RhdGEavgEKGE90aGVyVmlkZW9NZWV0aW5nQ29uZmlncxJKCgRpY29uGAEgASgOMjwuZW50aXRpZXMuRXZlbnRWQ2hhdENvbmZpZy5PdGhlclZpZGVvTWVldGluZ0NvbmZpZ3MuSWNvblR5cGUSIAoWY3VzdG9taXplZF9kZXNjcmlwdGlvbhgCIAEoCToAIjQKCEljb25UeXBlEgsKB0RFRkFVTFQQABIRCg1WSURFT19NRUVUSU5HEAESCAoETElWRRACGlIKG0dvb2dsZVZpZGVvQ29uZmVyZW5jZUNvbmZpZxIUCgxwaG9uZV9udW1iZXIYASABKAkSHQoVbW9yZV9waG9uZV9udW1iZXJfdXJsGAIgASgJGioKEUxhcmtWQ0JpbmRpbmdEYXRhEhUKDXZjX3NldHRpbmdfaWQYASABKAkarwEKF1pvb21WaWRlb01lZXRpbmdDb25maWdzEhIKCm1lZXRpbmdfaWQYASABKAMSEgoKbWVldGluZ19ubxgCIAEoAxIXCg9jcmVhdG9yX2FjY291bnQYAyABKAkSEwoLbWVldGluZ191cmwYBCABKAkSEAoIcGFzc3dvcmQYBSABKAkSEwoLaXNfZWRpdGFibGUYBiABKAgSFwoPY3JlYXRvcl91c2VyX2lkGAcgASgDGrACChhUaGlyZFBhcnR5TWVldGluZ0NvbmZpZ3MSNQoMbWVldGluZ190eXBlGAEgAigOMh8uZW50aXRpZXMuVGhpcmRQYXJ0eU1lZXRpbmdUeXBlEhIKCm1lZXRpbmdfaWQYAiABKAkSEgoKbWVldGluZ19ubxgDIAEoCRIQCghwYXNzd29yZBgEIAEoCRJoChNtZWV0aW5nX2Rlc2NyaXB0aW9uGAUgAygLMksuZW50aXRpZXMuRXZlbnRWQ2hhdENvbmZpZy5UaGlyZFBhcnR5TWVldGluZ0NvbmZpZ3MuTWVldGluZ0Rlc2NyaXB0aW9uRW50cnkaOQoXTWVldGluZ0Rlc2NyaXB0aW9uRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUIUChJjdXN0b21pemVkX2NvbmZpZ3Mi/QIKEkV2ZW50Q2hlY2tJbkNvbmZpZxIXCg9jaGVja19pbl9lbmFibGUYASABKAgSRQoTY2hlY2tfaW5fc3RhcnRfdGltZRgCIAEoCzIoLmVudGl0aWVzLkV2ZW50Q2hlY2tJbkNvbmZpZy5DaGVja0luVGltZRJDChFjaGVja19pbl9lbmRfdGltZRgDIAEoCzIoLmVudGl0aWVzLkV2ZW50Q2hlY2tJbkNvbmZpZy5DaGVja0luVGltZRIdChVuZWVkX25vdGlmeV9hdHRlbmRlZXMYBCABKAgaogEKC0NoZWNrSW5UaW1lEjsKBHR5cGUYASABKA4yLS5lbnRpdGllcy5FdmVudENoZWNrSW5Db25maWcuQ2hlY2tJblRpbWUuVHlwZRIQCghkdXJhdGlvbhgCIAEoAyJECgRUeXBlEhQKEEJlZm9yZUV2ZW50U3RhcnQQARITCg9BZnRlckV2ZW50U3RhcnQQAhIRCg1BZnRlckV2ZW50RW5kEAMipwEKEk1lZXRpbmdOb3Rlc0NvbmZpZxJTChdjcmVhdGVfbm90ZXNfcGVybWlzc2lvbhgBIAEoDjIyLmVudGl0aWVzLk1lZXRpbmdOb3Rlc0NvbmZpZy5DcmVhdGVOb3Rlc1Blcm1pc3Npb24iPAoVQ3JlYXRlTm90ZXNQZXJtaXNzaW9uEgsKB1VOS05PV04QABINCglPUkdBTklaRVIQARIHCgNBTEwQAiKyAgoRTWVldGluZ0NoYXRDb25maWcSGgoSZm9yYmlkX2NyZWF0ZV9jaGF0GAEgASgIElUKGW1lZXRpbmdfY2hhdF9zZXR0aW5nX3R5cGUYAiABKA4yMi5lbnRpdGllcy5NZWV0aW5nQ2hhdENvbmZpZy5NZWV0aW5nQ2hhdFNldHRpbmdUeXBlEhQKDGJpbmRfY2hhdF9pZBgDIAEoCRIUCgxiaW5kX3VzZXJfaWQYBCABKAkSGQoRYXNzb2NpYXRlX2NoYXRfaWQYBSABKAkiYwoWTWVldGluZ0NoYXRTZXR0aW5nVHlwZRILCgdVTktOT1dOEAASFQoRQUxMT1dfQ1JFQVRFX0NIQVQQARIWChJGT1JCSURfQ1JFQVRFX0NIQVQQAhINCglCSU5EX0NIQVQQAyJPCgxMYXN0V2FpdFRpbWUSLQoJdGltZV90eXBlGAEgAigOMhouZW50aXRpZXMuTGFzdFdhaXRUaW1lVHlwZRIQCghkdXJhdGlvbhgCIAEoBSLRAgoVUmVzb3VyY2VXYWl0TGlzdE9yZGVyEhkKEWJ1aWxkaW5nX2xldmVsX2lkGAEgAigJEhEKCWxldmVsX2lkcxgCIAMoCRIQCghjYXBhY2l0eRgDIAIoBRI9ChVlcXVpcG1lbnRfcmVxdWlyZW1lbnQYBCACKA4yHi5lbnRpdGllcy5FcXVpcG1lbnRSZXF1aXJlVHlwZRIUCgxkaXNwbGF5X25hbWUYBSACKAkSLgoObGFzdF93YWl0X3RpbWUYBiACKAsyFi5lbnRpdGllcy5MYXN0V2FpdFRpbWUSKAoGc3RhdHVzGAcgAigOMhguZW50aXRpZXMuV2FpdExpc3RTdGF0dXMSFgoOY3JlYXRlX3VzZXJfaWQYCCACKAkSFAoMbWF4X2NhcGFjaXR5GAkgASgFEhsKE2J1aWxkaW5nX3pvbmVfY29kZXMYCiADKAkiSQoWUmVzb3VyY2VXYWl0TGlzdE9yZGVycxIvCgZvcmRlcnMYASADKAsyHy5lbnRpdGllcy5SZXNvdXJjZVdhaXRMaXN0T3JkZXIiwAEKFUNhbGVuZGFyRXZlbnRSZWZFeHRyYRIdChVhdHRlbmRlZV9jYWxlbmRhcl9pZHMYASADKAMSJgoXaXNfYXR0ZW5kZWVfbGlzdF9zZXR0ZWQYAiABKAg6BWZhbHNlEhMKCWRhdl9leHRyYRgDIAEoCToAEhYKC21heF92ZXJzaW9uGAQgASgDOgEwEh8KFGV2ZW50X2NoYW5nZV92ZXJzaW9uGAUgASgDOgEwEhIKCklzU3RyYW5nZXIYBiABKAgiqRIKEUNhbGVuZGFyRXZlbnRDb3JlEgwKAmlkGAEgASgJOgASEgoKdW5pcXVlX2tleRgCIAIoCRIVCg1vcmlnaW5hbF90aW1lGAMgAigDEhMKC2NhbGVuZGFyX2lkGAQgAigJEhsKE2NyZWF0b3JfY2FsZW5kYXJfaWQYBSACKAkSHQoVb3JnYW5pemVyX2NhbGVuZGFyX2lkGAYgAigJEhIKB3ZlcnNpb24YByABKAM6ATASDwoFcnJ1bGUYCCABKAk6ABINCgVzdGFydBgJIAIoAxILCgNlbmQYCiACKAMSPQoGc3RhdHVzGAsgASgOMiIuZW50aXRpZXMuQ2FsZW5kYXJFdmVudENvcmUuU3RhdHVzOglDT05GSVJNRUQSGQoKaXNfYWxsX2RheRgMIAEoCDoFZmFsc2USGQoKaXNfZGVsZXRlZBgNIAEoCDoFZmFsc2USFgoHaXNfZnJlZRgOIAEoCDoFZmFsc2USEQoDYWNrGA8gASgIOgR0cnVlEhkKC25lZWRfdXBkYXRlGBAgASgIOgR0cnVlEmoKFHNlbGZfYXR0ZW5kZWVfc3RhdHVzGBEgASgOMi4uZW50aXRpZXMuQ2FsZW5kYXJFdmVudENvcmUuU2VsZkF0dGVuZGVlU3RhdHVzOhxBVFRFTkRFRV9TVEFUVVNfTkVFRFNfQUNUSU9OEhEKB3N1bW1hcnkYEiABKAk6ABIRCgVjb2xvchgTIAEoBToCLTESJQoJcmVtaW5kZXJzGBQgAygLMhIuZW50aXRpZXMuUmVtaW5kZXISPwoKdmlzaWJpbGl0eRgVIAEoDjIiLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQuVmlzaWJpbGl0eToHREVGQVVMVBIyCglsb2NhdGlvbnMYFiADKAsyHy5lbnRpdGllcy5DYWxlbmRhckV2ZW50TG9jYXRpb24SMgoJYXR0ZW5kZWVzGBcgAygLMh8uZW50aXRpZXMuQ2FsZW5kYXJFdmVudEF0dGVuZGVlEhgKDnN0YXJ0X3RpbWV6b25lGBggASgJOgASFgoMZW5kX3RpbWV6b25lGBkgASgJOgASOQoGc291cmNlGBogASgOMh4uZW50aXRpZXMuQ2FsZW5kYXJFdmVudC5Tb3VyY2U6CVBDX0NMSUVOVBI4CgR0eXBlGBsgASgOMhwuZW50aXRpZXMuQ2FsZW5kYXJFdmVudC5UeXBlOgxERUZBVUxUX1RZUEUSJgoYZ3Vlc3RzX2Nhbl9pbnZpdGVfb3RoZXJzGBwgASgIOgR0cnVlEikKG2d1ZXN0c19jYW5fc2VlX290aGVyX2d1ZXN0cxgdIAEoCDoEdHJ1ZRIgChFndWVzdHNfY2FuX21vZGlmeRgeIAEoCDoFZmFsc2USFAoKbWVldGluZ19pZBgpIAEoCToAEhgKDmRvY3Nfb2JqX3Rva2VuGCogASgJOgASHwoVc3VjY2Vzc29yX2NhbGVuZGFyX2lkGCsgASgJOgASHgoPaXNfY3Jvc3NfdGVuYW50GCwgASgIOgVmYWxzZRJMCh5jYWxlbmRhcl9ldmVudF9ncm91cF9hdHRlbmRlZXMYLSADKAsyJC5lbnRpdGllcy5DYWxlbmRhckV2ZW50R3JvdXBBdHRlbmRlZRIYCg5vcmlnaW5hbF9ldmVudBguIAEoCToAEhwKEm1lZXRpbmdfbWludXRlX3VybBgvIAEoCToAEhkKD3ZjaGF0X3VuaXF1ZV9pZBgwIAEoCToAEjYKEmdvb2dsZV9ldmVudF9leHRyYRgxIAEoCzIaLmVudGl0aWVzLkdvb2dsZUV2ZW50RXh0cmESGwoMZm9yY2VfdXBkYXRlGDIgASgIOgVmYWxzZRIaCg9hdHRlbmRlZV9zb3VyY2UYMyABKAU6ATESSAoIY2F0ZWdvcnkYNCABKA4yJC5lbnRpdGllcy5DYWxlbmRhckV2ZW50Q29yZS5DYXRlZ29yeToQREVGQVVMVF9DQVRFR09SWRIyCg1hdHRlbmRlZV9pbmZvGDUgASgLMhsuZW50aXRpZXMuRXZlbnRBdHRlbmRlZUluZm8SMAoMdmlkZW9fY29uZmlnGDYgASgLMhouZW50aXRpZXMuRXZlbnRWQ2hhdENvbmZpZxI1Cg9jaGVja19pbl9jb25maWcYNyABKAsyHC5lbnRpdGllcy5FdmVudENoZWNrSW5Db25maWcSNgoPZW5jcnlwdGlvbl9pbmZvGDggASgLMh0uZW50aXRpZXMuRXZlbnRFbmNyeXB0aW9uSW5mbxInCgxyZWxhdGlvbl90YWcYOSABKAsyES5lbnRpdGllcy5UYWdEYXRhEiUKHXNlbmRfc21zX25vdGlmaWNhdGlvbl9zZXR0aW5nGDogASgIEjgKE21lZXRpbmdfY2hhdF9jb25maWcYOyABKAsyGy5lbnRpdGllcy5NZWV0aW5nQ2hhdENvbmZpZxJDChlyZXNvdXJjZV93YWl0X2xpc3Rfb3JkZXJzGDwgASgLMiAuZW50aXRpZXMuUmVzb3VyY2VXYWl0TGlzdE9yZGVycxJDChlldmVudF9jcm9zc19sYW5ndWFnZV9kYXRhGD4gASgLMiAuZW50aXRpZXMuRXZlbnRDcm9zc0xhbmd1YWdlRGF0YSI1CgZTdGF0dXMSDQoJVEVOVEFUSVZFEAESDQoJQ09ORklSTUVEEAISDQoJQ0FOQ0VMTEVEEAMiqwEKElNlbGZBdHRlbmRlZVN0YXR1cxIgChxBVFRFTkRFRV9TVEFUVVNfTkVFRFNfQUNUSU9OEAESGgoWQVRURU5ERUVfU1RBVFVTX0FDQ0VQVBACEh0KGUFUVEVOREVFX1NUQVRVU19URU5UQVRJVkUQAxIbChdBVFRFTkRFRV9TVEFUVVNfREVDTElORRAEEhsKF0FUVEVOREVFX1NUQVRVU19SRU1PVkVEEAUidQoIQ2F0ZWdvcnkSFAoQREVGQVVMVF9DQVRFR09SWRABEhUKEVNBTUVfUEFHRV9NRUVUSU5HEAISFQoRUkVTT1VSQ0VfU1RSQVRFR1kQAxIYChRSRVNPVVJDRV9SRVFVSVNJVElPThAEEgsKB1dFQklOQVIQBSKhAwoHTWVldGluZxIKCgJpZBgBIAIoCRIPCgdjaGF0X2lkGAIgAigJEh8KEWlzX2ZpcnN0X2VudHJhbmNlGAMgASgIOgR0cnVlEh4KFmNhbGVuZGFyX2V2ZW50X3JlZl9pZHMYBCADKAkSEgoIZG9jc191cmwYBSABKAk6ABIgChJzaG91bGRfc2hvd19zY3JvbGwYBiABKAg6BHRydWUSNQoLc2Nyb2xsX3R5cGUYByABKA4yFC5lbnRpdGllcy5TY3JvbGxUeXBlOgpFVkVOVF9JTkZPEiYKF2lzX2NoYXRfb3Blbl9lbnRyeV9hdXRoGAggASgIOgVmYWxzZRIhChJpc19pbl9tZWV0aW5nX2NoYXQYCSABKAg6BWZhbHNlEiYKF2lzX21lZXRpbmdfY2hhdF9tYW5hZ2VyGAogASgIOgVmYWxzZRI4ChNtZWV0aW5nX2NoYXRfY29uZmlnGAsgASgLMhsuZW50aXRpZXMuTWVldGluZ0NoYXRDb25maWcSHgoPaXNfaW5fYmluZF9jaGF0GAwgASgIOgVmYWxzZSJ3CgxNZWV0aW5nRXh0cmESFQoNZG9jc19vYmpfdHlwZRgBIAEoAxIWCg5kb2NzX29ial90b2tlbhgCIAEoCRI4ChNtZWV0aW5nX2NoYXRfY29uZmlnGAMgASgLMhsuZW50aXRpZXMuTWVldGluZ0NoYXRDb25maWciWwoaTWVldGluZ0NoYXR0ZXJBY3Rpb25zRXh0cmESGwoTZmlyc3RfZW50cmFuY2VfdGltZRgBIAEoAxIgChJzaG91bGRfc2hvd19zY3JvbGwYAiABKAg6BHRydWUi3QMKBVZjaGF0EhEKCXVuaXF1ZV9pZBgBIAIoCRISCgptZWV0aW5nX25vGAIgAigJEhkKCmlzX2V4cGlyZWQYAyABKAg6BWZhbHNlEhUKC21lZXRpbmdfdXJsGAQgASgJOgASNAoEdHlwZRgFIAEoDjIULmVudGl0aWVzLlZjaGF0LlR5cGU6EFZJREVPX0NPTkZFUkVOQ0USNwoKdmNoYXRfdHlwZRgGIAEoDjIZLmVudGl0aWVzLlZjaGF0LlZDaGF0VHlwZToIVU5fS05PV04iHwoGU3RhdHVzEgsKB1VOS05PV04QABIICgRMSVZFEAEiLQoEVHlwZRIUChBWSURFT19DT05GRVJFTkNFEAESDwoLVEhJUkRfUEFSVFkQAiK7AQoJVkNoYXRUeXBlEgwKCFVOX0tOT1dOEAASGQoVTEFSS19WSURFT19DT05GRVJFTkNFEAESEwoPVEhJUkRfUEFSVFlfVVJMEAISEgoOTEFSS19MSVZFX0hPU1QQAxIUChBOT19WSURFT19NRUVUSU5HEAQSGwoXR09PR0xFX1ZJREVPX0NPTkZFUkVOQ0UQBRIQCgxaT09NX01FRVRJTkcQBhIXChNUSElSRF9QQVJUWV9NRUVUSU5HEAciKAoPUmVuZXdWY2hhdFBhcmFtEhUKDXZjX3NldHRpbmdfaWQYASABKAMicwoYQ2FsZW5kYXJFdmVudFZDaGF0Q2hhbmdlEhMKC2NhbGVuZGFyX2lkGAEgASgJEgsKA3VpZBgCIAEoCRIVCg1vcmlnaW5hbF90aW1lGAMgASgJEh4KBXZjaGF0GAQgASgLMg8uZW50aXRpZXMuVmNoYXQiiQEKD1ZjaGF0TGl2ZVN0YXR1cxIvCgZzdGF0dXMYASABKA4yFi5lbnRpdGllcy5WY2hhdC5TdGF0dXM6B1VOS05PV04SFQoKc3RhcnRfdGltZRgCIAEoAzoBMBIYCg1saXZlX2R1cmF0aW9uGAMgASgDOgEwEhQKCm1lZXRpbmdfaWQYBCABKAk6ACJSChBDYWxlbmRhckV2ZW50S2V5EhIKCnVuaXF1ZV9rZXkYASACKAkSEwoLY2FsZW5kYXJfaWQYAiACKAkSFQoNb3JpZ2luYWxfdGltZRgDIAIoAyJcChhBdHRlbmRlZUFwcHJvdmFsRm9ybURhdGESFwoPZHVyYXRpb25fc2Vjb25kGAEgASgDEhcKD2F0dGVuZGVlX251bWJlchgCIAEoBRIOCgZyZWFzb24YAyABKAkiUAoPTWVldGluZ0V2ZW50UmVmEhIKCnVuaXF1ZV9rZXkYASACKAkSFQoNb3JpZ2luYWxfdGltZRgCIAIoAxISCgptZWV0aW5nX2lkGAMgAigJIsMBChhDYWxlbmRhckV2ZW50QXR0ZW5kZWVUYWcSWQoEdHlwZRgBIAEoDjI/LmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRlbmRlZVRhZy5DYWxlbmRhckV2ZW50QXR0ZW5kZWVUYWdUeXBlOgpJTkRJVklEVUFMEhEKB2NvbnRlbnQYAiABKAk6ACI5ChxDYWxlbmRhckV2ZW50QXR0ZW5kZWVUYWdUeXBlEg4KCklORElWSURVQUwQARIJCgVHUk9VUBACIuIIChVDYWxlbmRhckV2ZW50QXR0ZW5kZWUSFgoMZGlzcGxheV9uYW1lGAEgASgJOgASHAoUYXR0ZW5kZWVfY2FsZW5kYXJfaWQYAiACKAkSGwoMaXNfb3JnYW5pemVyGAMgASgIOgVmYWxzZRIaCgtpc19yZXNvdXJjZRgEIAEoCDoFZmFsc2USGgoLaXNfb3B0aW9uYWwYBSABKAg6BWZhbHNlEkQKBnN0YXR1cxgGIAEoDjImLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRlbmRlZS5TdGF0dXM6DE5FRURTX0FDVElPThIcChFhZGRpdGlvbmFsX2d1ZXN0cxgHIAEoBToBMBIWCgtjcmVhdGVfdGltZRgIIAEoAzoBMBIWCgt1cGRhdGVfdGltZRgJIAEoAzoBMBIuCgR0eXBlGAogASgOMhcuZW50aXRpZXMuQ2FsZW5kYXIuVHlwZToHUFJJTUFSWRIwCgR0YWdzGAsgAygLMiIuZW50aXRpZXMuQ2FsZW5kYXJFdmVudEF0dGVuZGVlVGFnEhMKCXRlbmFudF9pZBgMIAEoCToAEkUKC2ludml0ZV9pbmZvGA0gASgLMjAuZW50aXRpZXMuQ2FsZW5kYXJFdmVudEF0dGVuZGVlSW52aXRlSW5mb3JtYXRpb24SGgoLaXNfZGlzYWJsZWQYDiABKAg6BWZhbHNlEg8KBWVtYWlsGA8gASgJOgASHQoOaXNfdGhpcmRfcGFydHkYECABKAg6BWZhbHNlEhcKD2F0dGVuZGVlX3NjaGVtYRgRIAEoDBIZChFzY2hlbWFfZXh0cmFfZGF0YRgSIAEoDBJPCg9yZXNvdXJjZV9zdGF0dXMYEyABKA4yLi5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWUuUmVzb3VyY2VTdGF0dXM6Bk5PUk1BTBIkChxyZXNvdXJjZV9yZXNlcnZlX29wZXJhdG9yX2lkGBQgASgJEicKDHJlbGF0aW9uX3RhZxgVIAEoCzIRLmVudGl0aWVzLlRhZ0RhdGESDwoFcGhvbmUYFiABKAk6ABJYChhpbmRpdmlkdWFsX2F0dGVuZGVlX3R5cGUYFyABKA4yNi5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWUuSW5kaXZpZHVhbEF0dGVuZGVlVHlwZSJPCgZTdGF0dXMSEAoMTkVFRFNfQUNUSU9OEAESCgoGQUNDRVBUEAISDQoJVEVOVEFUSVZFEAMSCwoHREVDTElORRAEEgsKB1JFTU9WRUQQBSIwCg5SZXNvdXJjZVN0YXR1cxIKCgZOT1JNQUwQABISCg5SRUxFQVNFRF9FQVJMWRABIl4KFkluZGl2aWR1YWxBdHRlbmRlZVR5cGUSCwoHVU5LTk9XThAAEggKBFVTRVIQARIMCghSRVNPVVJDRRACEhQKEFRISVJEX1BBUlRZX1VTRVIQAxIJCgVQSE9ORRAEIpwCCiZDYWxlbmRhckV2ZW50QXR0ZW5kZWVJbnZpdGVJbmZvcm1hdGlvbhIcChJpbnZpdGVfb3BlcmF0b3JfaWQYASABKAk6ABIlChtpbnZpdGVfb3BlcmF0b3JfY2FsZW5kYXJfaWQYAiABKAk6ABIdChNpbnZpdGVyX2NhbGVuZGFyX2lkGAMgASgJOgASIgoYZmlyc3RfaW52aXRlX29wZXJhdG9yX2lkGAQgASgJOgASFgoLaW52aXRlX3RpbWUYBSABKAM6ATASHAoScmVtb3ZlZF9jaGF0dGVyX2lkGAYgASgJOgASHAoScmVtb3ZlZF9yZXF1ZXN0X2lkGAcgASgJOgASFgoLcmVtb3ZlX3RpbWUYCCABKAM6ATAi/AEKGkNhbGVuZGFyRXZlbnRHcm91cEF0dGVuZGVlEg8KB2NoYXRfaWQYASABKAkSGQoKaXNfcmVtb3ZlZBgCIAEoCDoFZmFsc2USRQoLaW52aXRlX2luZm8YAyABKAsyMC5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWVJbnZpdGVJbmZvcm1hdGlvbhIaChJ2YWxpZF9tZW1iZXJfY291bnQYBCABKAUSJgoXaXNfc2VsZl9pbl9ncm91cF9tZW1iZXIYBSABKAg6BWZhbHNlEicKDHJlbGF0aW9uX3RhZxgGIAEoCzIRLmVudGl0aWVzLlRhZ0RhdGEiWgoRRXZlbnRDaGF0UmVmRXh0cmESRQoLaW52aXRlX2luZm8YASABKAsyMC5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWVJbnZpdGVJbmZvcm1hdGlvbiJ/ChVSZXNvdXJjZUN1c3RvbWl6YXRpb24SNwoSY3VzdG9taXphdGlvbl9kYXRhGAEgAygLMhsuZW50aXRpZXMuQ3VzdG9taXphdGlvbkRhdGESEwoLY29udGFjdF9pZHMYAiADKAMSGAoQcHJlcGFyYXRpb25fdGltZRgDIAEoAyLnAgoRQ3VzdG9taXphdGlvbkRhdGESSQoSY3VzdG9taXphdGlvbl90eXBlGAEgASgOMi0uZW50aXRpZXMuQ3VzdG9taXphdGlvbkRhdGEuQ3VzdG9taXphdGlvblR5cGUSEwoLaXNfcmVxdWlyZWQYAiABKAgSDQoFbGFiZWwYAyABKAkSEQoJaW5kZXhfa2V5GAQgASgJEi4KB29wdGlvbnMYBSADKAsyHS5lbnRpdGllcy5DdXN0b21pemF0aW9uT3B0aW9uEi0KCmNvbmRpdGlvbnMYBiADKAsyGS5lbnRpdGllcy5PcHRpb25Db25kaXRpb24SFQoNaW5wdXRfY29udGVudBgHIAEoCRIUCgxwbGFjZV9ob2xkZXIYCCABKAkiRAoRQ3VzdG9taXphdGlvblR5cGUSEAoMU2luZ2xlU2VsZWN0EAESEgoOTXVsdGlwbGVTZWxlY3QQAhIJCgVJbnB1dBADIpkBChNDdXN0b21pemF0aW9uT3B0aW9uEhEKCWlzX290aGVycxgBIAEoCBIWCg5vdGhlcnNfY29udGVudBgCIAEoCRIUCgxvcHRpb25fbGFiZWwYAyABKAkSGAoQb3B0aW9uX2ltYWdlX3VybBgEIAEoCRISCgpvcHRpb25fa2V5GAUgASgJEhMKC2lzX3NlbGVjdGVkGAYgASgIIjoKD09wdGlvbkNvbmRpdGlvbhISCgpjdXN0b21fa2V5GAEgASgJEhMKC29wdGlvbl9rZXlzGAIgAygJIocBChdSZXNvdXJjZUFwcHJvdmFsUmVxdWVzdBIXCg9DcmVhdGVDaGF0dGVySWQYASABKAMSFAoMQXBwcm92YWxDb2RlGAIgASgJEhQKDEluc3RhbmNlQ29kZRgDIAEoCRIOCgZSZWFzb24YBCABKAkSFwoPQXBwcm92ZXJVc2VySURzGAUgAygDIpoEChpDYWxlbmRhckV2ZW50QXR0ZW5kZWVFeHRyYRIuCgR0eXBlGAEgASgOMhcuZW50aXRpZXMuQ2FsZW5kYXIuVHlwZToHUFJJTUFSWRIwCgR0YWdzGAIgAygLMiIuZW50aXRpZXMuQ2FsZW5kYXJFdmVudEF0dGVuZGVlVGFnEhQKCXRlbmFudF9pZBgDIAEoAzoBMBJFCgtpbnZpdGVfaW5mbxgEIAEoCzIwLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRlbmRlZUludml0ZUluZm9ybWF0aW9uEhQKDHJzdnBfY29tbWVudBgFIAEoCRINCgVlbWFpbBgGIAEoCRIWCg5yZWNlaXZlcl9lbWFpbBgHIAEoCRJPCg9yZXNvdXJjZV9zdGF0dXMYCCABKA4yLi5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWUuUmVzb3VyY2VTdGF0dXM6Bk5PUk1BTBJEChlyZXNvdXJjZV9hcHByb3ZhbF9yZXF1ZXN0GAkgASgLMiEuZW50aXRpZXMuUmVzb3VyY2VBcHByb3ZhbFJlcXVlc3QSJAoccmVzb3VyY2VfcmVzZXJ2ZV9vcGVyYXRvcl9pZBgKIAEoAxINCgVwaG9uZRgLIAEoCRIgChhBdHRlbmRlZVN0YXR1c0ZvckRpc21pc3MYDCABKAUSEgoKSXNTdHJhbmdlchgNIAEoCCLPAQoVQ2FsZW5kYXJFdmVudExvY2F0aW9uEg4KBG5hbWUYASABKAk6ABIRCgdhZGRyZXNzGAIgASgJOgASPAoEdHlwZRgDIAEoDjIkLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRMb2NhdGlvbi5UeXBlOghPUkRJTkFSWRIVCghsYXRpdHVkZRgEIAEoAjoDMzYwEhYKCWxvbmdpdHVkZRgFIAEoAjoDMzYwIiYKBFR5cGUSEAoMTUVFVElOR19ST09NEAESDAoIT1JESU5BUlkQAiKQAQoVQ2FsZW5kYXJFdmVudEluc3RhbmNlEgoKAmlkGAEgAigJEhYKDGV2ZW50X3JlZl9pZBgCIAEoCToAEhUKC2NhbGVuZGFyX2lkGAMgASgJOgASFQoKYmVnaW5fdGltZRgEIAEoAzoBMBITCghlbmRfdGltZRgFIAEoAzoBMBIQCgVzY29yZRgGIAEoAToBMCLQAwoSRXZlbnRJbmZvSW5zdGFuY2VzEhAKCGV2ZW50X2lkGAEgASgJEg8KB3N1bW1hcnkYAiABKAkSCwoDdWlkGAMgASgJEhUKDW9yaWdpbmFsX3RpbWUYBCABKAMSEgoKc3RhcnRfdGltZRgFIAEoAxINCgVjb2xvchgGIAEoBRISCgppc19hbGxfZGF5GAcgASgIEjcKEGV2ZW50X3Zpc2liaWxpdHkYCCABKA4yHS5lbnRpdGllcy5Vc2VyRXZlbnRWaXNpYmlsaXR5EkgKFHNlbGZfYXR0ZW5kZWVfc3RhdHVzGAkgASgOMiouZW50aXRpZXMuQ2FsZW5kYXJFdmVudC5TZWxmQXR0ZW5kZWVTdGF0dXMSHQoVcmVzb3VyY2VfY2FsZW5kYXJfaWRzGBQgAygJEjIKCWxvY2F0aW9ucxgVIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRMb2NhdGlvbhIuCg5pbnN0YW5jZV9zcGFucxgWIAMoCzIWLmVudGl0aWVzLlN0YXJ0RW5kVGltZRI2Cg9lbmNyeXB0aW9uX2luZm8YFyABKAsyHS5lbnRpdGllcy5FdmVudEVuY3J5cHRpb25JbmZvIvICChdDYWxlbmRhckV2ZW50QXR0YWNobWVudBISCgpmaWxlX3Rva2VuGAEgASgJEhEKCWZpbGVfc2l6ZRgCIAEoCRIMCgRuYW1lGAMgASgJEjQKBHR5cGUYBCABKA4yJi5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0YWNobWVudC5UeXBlEhgKEHVwbG9hZGVyX3VzZXJfaWQYBSABKAkSEgoKaXNfZGVsZXRlZBgGIAEoCBIQCghwb3NpdGlvbhgHIAEoBRIQCghkb2NfdXJscxgIIAMoCRITCgtleHBpcmVfdGltZRgJIAEoAxIZChFnb29nbGVfZHJpdmVfbGluaxgKIAEoCRIQCgh1cmxfbGluaxgLIAEoCSJYCgRUeXBlEgsKB1VOS05PV04QABIJCgVMT0NBTBABEhMKD1NBTUVQQUdFTUVFVElORxACEgkKBUxBUkdFEAMSDwoLR09PR0xFRFJJVkUQBBIHCgNVUkwQBSIiChNTYW1lUGFnZU1lZXRpbmdJbmZvEgsKA3VybBgBIAMoCSIrCg9BcHByb3ZhbFRyaWdnZXISGAoQZHVyYXRpb25fdHJpZ2dlchgBIAEoAyJmChNMZXZlbEFkanVzdFRpbWVJbmZvEhgKEG5lZWRfYWRqdXN0X3RpbWUYASABKAgSNQoRcmVzb3VyY2Vfc3RyYXRlZ3kYAiABKAsyGi5lbnRpdGllcy5SZXNvdXJjZVN0cmF0ZWd5IncKHVJlc291cmNlUmVuZXdhbFJlbWluZGVyQ29tbWl0EhMKC2NhbGVuZGFyX2lkGAEgASgJEgsKA2tleRgCIAEoCRIVCg1vcmlnaW5hbF90aW1lGAMgASgDEh0KFW5lZWRfcmVuZXdhbF9yZW1pbmRlchgEIAEoCCI8ChtSZXNvdXJjZVJlbmV3YWxSZW1pbmRlckluZm8SHQoVbmVlZF9yZW5ld2FsX3JlbWluZGVyGAEgASgIInMKFFJlc291cmNlQXBwcm92YWxJbmZvEhkKEWFwcHJvdmVyX3VzZXJfaWRzGAEgAygDEioKB3RyaWdnZXIYAiABKAsyGS5lbnRpdGllcy5BcHByb3ZhbFRyaWdnZXISFAoMYWRtaW5fb25fb2ZmGAMgASgIIugCChBSZXNvdXJjZVN0cmF0ZWd5EhsKE3NpbmdsZV9tYXhfZHVyYXRpb24YASABKAMSGgoSdW50aWxfbWF4X2R1cmF0aW9uGAIgASgDEhgKEGRhaWx5X3N0YXJ0X3RpbWUYAyABKAMSFgoOZGFpbHlfZW5kX3RpbWUYBCABKAMSEAoIdGltZXpvbmUYBSABKAkSEQoJaXNfZW5hYmxlGAYgASgIEhoKEmVhcmxpZXN0X2Jvb2tfdGltZRgHIAEoBRJEChd1bnRpbF9tYXhfZHVyYXRpb25fdW5pdBgIIAEoDjIjLmVudGl0aWVzLlJlc291cmNlU3RyYXRlZ3kuVGltZVVuaXQiYgoIVGltZVVuaXQSCwoHdW5rbm93bhAAEgoKBm1pbnV0ZRABEggKBGhvdXIQAhIHCgNkYXkQAxIICgR3ZWVrEAQSCQoFbW9udGgQBRIICgR5ZWFyEAYSCwoHd29ya2RheRAHIo0BChNSZXNvdXJjZVJlbGF0ZWRJbmZvEjUKEXJlc291cmNlX3N0cmF0ZWd5GAEgASgLMhouZW50aXRpZXMuUmVzb3VyY2VTdHJhdGVneRI/ChZyZXNvdXJjZV9jdXN0b21pemF0aW9uGAIgASgLMh8uZW50aXRpZXMuUmVzb3VyY2VDdXN0b21pemF0aW9uIoIGChBDYWxlbmRhclJlc291cmNlEgoKAmlkGAEgAigJEhUKC2NhbGVuZGFyX2lkGAIgASgJOgASDgoEbmFtZRgDIAEoCToAEjQKBHR5cGUYBCABKA4yHy5lbnRpdGllcy5DYWxlbmRhclJlc291cmNlLlR5cGU6BU9USEVSEjcKBnN0YXR1cxgFIAEoDjIhLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2UuU3RhdHVzOgRGUkVFEhUKC2J1aWxkaW5nX2lkGAYgASgJOgASFQoLZGVzY3JpcHRpb24YByABKAk6ABITCghjYXBhY2l0eRgIIAEoBToBMBIUCgpmbG9vcl9uYW1lGAkgASgJOgASEgoIY2F0ZWdvcnkYCiABKAk6ABIZCgppc19kZWxldGVkGAsgASgIOgVmYWxzZRIaCgtpc19leHRlcm5hbBgMIAEoCDoFZmFsc2USEQoGd2VpZ2h0GA0gASgFOgEwEhMKCXRlbmFudF9pZBgOIAEoCToAEhoKC2lzX2Rpc2FibGVkGA8gASgIOgVmYWxzZRIXCg9yZXNvdXJjZV9zY2hlbWEYECABKAwSGQoRc2NoZW1hX2V4dHJhX2RhdGEYESABKAwSGwoPZXF1aXBtZW50X25hbWVzGBIgAygJQgIYARJMChJlcXVpcG1lbnRfbmFtZV9tYXAYEyADKAsyMC5lbnRpdGllcy5DYWxlbmRhclJlc291cmNlLkVxdWlwbWVudE5hbWVNYXBFbnRyeRIlCh1yZXNvdXJjZV9uYW1lX3dpdGhfbGV2ZWxfaW5mbxgUIAMoCRo3ChVFcXVpcG1lbnROYW1lTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIjCgRUeXBlEhAKDE1FRVRJTkdfUk9PTRABEgkKBU9USEVSEAIiHAoGU3RhdHVzEggKBEZSRUUQARIICgRCVVNZEAIiIgoURXh0ZXJuYWxSZXNvdXJjZVR5cGUSCgoGR09PR0xFEAEilgQKFUNhbGVuZGFyUmVzb3VyY2VFeHRyYRIVCgtkZXNjcmlwdGlvbhgBIAEoCToAEhMKCGNhcGFjaXR5GAIgASgFOgEwEhIKCGNhdGVnb3J5GAMgASgJOgASFAoKZmxvb3JfbmFtZRgEIAEoCToAEkcKDWltYWdlX2tleV9tYXAYBSADKAsyMC5lbnRpdGllcy5DYWxlbmRhclJlc291cmNlRXh0cmEuSW1hZ2VLZXlNYXBFbnRyeRIRCgdjb21tZW50GAYgASgJOgASEwoJaW1hZ2VfdXJsGAcgASgJOgASNQoNYXBwcm92YWxfaW5mbxgIIAEoCzIeLmVudGl0aWVzLlJlc291cmNlQXBwcm92YWxJbmZvEjcKEHJlcXVpc2l0aW9uX2luZm8YCSABKAsyHS5lbnRpdGllcy5SZXNvdXJjZVJlcXVpc2l0aW9uElcKFmNoZWNrX2luX2ltYWdlX2tleV9tYXAYCiADKAsyNy5lbnRpdGllcy5DYWxlbmRhclJlc291cmNlRXh0cmEuQ2hlY2tJbkltYWdlS2V5TWFwRW50cnkaMgoQSW1hZ2VLZXlNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjkKF0NoZWNrSW5JbWFnZUtleU1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEimAEKE1Jlc291cmNlUmVxdWlzaXRpb24SEgoKc3RhcnRfdGltZRgBIAEoAxIQCghlbmRfdGltZRgCIAEoAxITCgtjb250YWN0X2lkcxgDIAMoAxIOCgZyZWFzb24YBCABKAkSGQoRbmVlZF9ub3RpZmljYXRpb24YBSABKAgSGwoTcmVzdW1lX25vdGlmaWNhdGlvbhgGIAEoCCLZAQoVQ2FsZW5kYXJTZXR0aW5nQ29uZmlnEmIKG2xhbmdfYWx0ZXJuYXRlX2NhbGVuZGFyX21hcBgBIAMoCzI9LmVudGl0aWVzLkNhbGVuZGFyU2V0dGluZ0NvbmZpZy5MYW5nQWx0ZXJuYXRlQ2FsZW5kYXJNYXBFbnRyeRpcCh1MYW5nQWx0ZXJuYXRlQ2FsZW5kYXJNYXBFbnRyeRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKA4yGy5lbnRpdGllcy5BbHRlcm5hdGVDYWxlbmRhcjoCOAEi0w0KD0NhbGVuZGFyU2V0dGluZxIlChlkZWZhdWx0X2V2ZW50X2R1cmF0aW9uX3YyGAEgASgFOgIzMBIkChZzaG93X3JlamVjdGVkX3NjaGVkdWxlGAIgASgIOgR0cnVlEiYKGGRlZmF1bHRfYWxsX2RheV9yZW1pbmRlchgDIAEoBToELTQ4MBIoCh1kZWZhdWx0X25vbmVfYWxsX2RheV9yZW1pbmRlchgEIAEoBToBNRIjChRiaW5kX2dvb2dsZV9jYWxlbmRhchgFIAEoCDoFZmFsc2USIQoScmVtaW5kX2FjY2VwdF9vbmx5GAYgASgIOgVmYWxzZRIpChpub3RpZnlfd2hlbl9ndWVzdHNfZGVjbGluZRgHIAEoCDoFZmFsc2USIwoVc2hvd19wYXN0X2V2ZW50c19tYXNrGAggASgIOgR0cnVlEhQKCXNraW5fdHlwZRgJIAEoBToBMRIQCgh0aW1lem9uZRgKIAEoCRImChhzaG93X3Bhc3RfZXZlbnRzX21hc2tfcGMYCyABKAg6BHRydWUSFwoMc2tpbl90eXBlX3BjGAwgASgFOgExEisKHXNob3dfcGFzdF9ldmVudHNfbWFza19hbmRyb2lkGA0gASgIOgR0cnVlEhwKEXNraW5fdHlwZV9hbmRyb2lkGA4gASgFOgExEicKGXNob3dfcGFzdF9ldmVudHNfbWFza19pb3MYDyABKAg6BHRydWUSGAoNc2tpbl90eXBlX2lvcxgQIAEoBToBMRIZCg53ZWVrX3N0YXJ0X2RheRgRIAEoBToBMBIfChVnb29nbGVfY2FsZW5kYXJfZW1haWwYEiABKAk6ABIiChNzaG93X290aGVyX3RpbWV6b25lGBMgASgIOgVmYWxzZRIXCg9vdGhlcl90aW1lem9uZXMYFCADKAkSKwocaGlkZV9iaW5kaW5nX2dvb2dsZV9jYWxlbmRhchgVIAEoCDoFZmFsc2USHwoRc3VtbWVyX3RpbWVfYWxlcnQYFiABKAg6BHRydWUSJAoWZW5hYmxlX3N5c3RlbV90aW1lem9uZRgXIAEoCDoEdHJ1ZRI0ChF3b3JrX2hvdXJfc2V0dGluZxgYIAEoCzIZLmVudGl0aWVzLldvcmtIb3VyU2V0dGluZxIdCg9zaG93X3RvZGF5X3ZpZXcYGSABKAg6BHRydWUSJwoZc2hvd19wYXN0X2V2ZW50c19tYXNrX3dlYhgaIAEoCDoEdHJ1ZRIYCg1za2luX3R5cGVfd2ViGBsgASgFOgExEjcKEmFsdGVybmF0ZV9jYWxlbmRhchgcIAEoDjIbLmVudGl0aWVzLkFsdGVybmF0ZUNhbGVuZGFyEkAKF2NhbGVuZGFyX3NldHRpbmdfY29uZmlnGB0gASgLMh8uZW50aXRpZXMuQ2FsZW5kYXJTZXR0aW5nQ29uZmlnEkcKG2NhbGVuZGFyX2V2ZW50X2VkaXRfc2V0dGluZxgeIAEoCzIiLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRFZGl0U2V0dGluZxIZChFyZW1pbmRfbm9fZGVjbGluZRgfIAEoCBJOCiBjYWxlbmRhcl9ldmVudF9lZGl0X25vdGlmeV9mYXZvchggIAEoDjIkLmVudGl0aWVzLkNhbGVuZGFyU2V0dGluZy5Ob3RpZnlUeXBlEigKIGZpcnN0X3dlZWtfc3RhcnRfbG9naWNhbF9zZXR0aW5nGCcgASgIEloKHWZpcnN0X3dlZWtfc3RhcnRfbG9naWNhbF90eXBlGCggASgOMjMuZW50aXRpZXMuQ2FsZW5kYXJTZXR0aW5nLkZpcnN0V2Vla1N0YXJ0TG9naWNhbFR5cGUSIQoZcmVjb21tZW5kX2V2ZW50X2Zyb21fY2hhdBgpIAEoCBIfChdyZWNvbW1lbmRfcm9vbV9mb3JfdXNlchgqIAEoCBImCh5pc19zaG93X2VtYWlsX2V2ZW50X3N5bmNfZW50cnkYKyABKAgSPQoWZW1haWxfZXZlbnRfc3luY19yYW5nZRgsIAEoDjIdLmVudGl0aWVzLkVtYWlsRXZlbnRTeW5jUmFuZ2UiLAoKTm90aWZ5VHlwZRILCgdVTktOT1dOEAASBwoDQk9UEAESCAoEQ0hBVBACIn8KGUZpcnN0V2Vla1N0YXJ0TG9naWNhbFR5cGUSEgoOREVGQVVMVF9ISURERU4QABIVChFGSVJTVF9EQVlfT0ZfWUVBUhABEhsKF0ZJUlNUX0ZVTExfV0VFS19PRl9ZRUFSEAISGgoWRklSU1RfRk9VUl9EQVlfT0ZfWUVBUhADIqgGChVDYWxlbmRhclRlbmFudFNldHRpbmcSJQoWZW5hYmxlX211bHRpX3NlbGVjdGlvbhgBIAEoCDoFZmFsc2USMwoMZGlzcGxheV90eXBlGAIgASgOMh0uZW50aXRpZXMuUmVzb3VyY2VEaXNwbGF5VHlwZRJAChJyZXNvdXJjZV9jb25kaXRpb24YAyABKAsyJC5lbnRpdGllcy5SZXNvdXJjZVN1YnNjcmliZUNvbmRpdGlvbhJlCh5hdHRlbmRlZV9udW1iZXJfY29udHJvbF9jb25maWcYBCABKAsyPS5jYWxlbmRhcl9hdHRlbmRlZV9udW1iZXJfY29udHJvbC5BdHRlbmRlZU51bWJlckNvbnRyb2xDb25maWcSOQoVZW5jcnlwdGlvbl9rZXlfc3RhdHVzGAUgASgOMhouZW50aXRpZXMuRW5jcnlwdGlvblN0YXR1cxIXCg9jYWxlbmRhcl9ib3RfaWQYBiABKAMSSQocY2FsZW5kYXJfYWRtaW5fYWNjZXNzX2NvbmZpZxgHIAEoCzIjLmVudGl0aWVzLkNhbGVuZGFyQWRtaW5BY2Nlc3NDb25maWcSRwobY2FsZW5kYXJfZXZlbnRfZWRpdF9zZXR0aW5nGAggASgLMiIuZW50aXRpZXMuQ2FsZW5kYXJFdmVudEVkaXRTZXR0aW5nEj4KFnBob25lX2F0dGVuZGVlX3NldHRpbmcYCSABKAsyHi5lbnRpdGllcy5QaG9uZUF0dGVuZGVlU2V0dGluZxJHChtyZXNvdXJjZV93YWl0X2xpc3RfZHVyYXRpb24YCiABKAsyIi5lbnRpdGllcy5SZXNvdXJjZVdhaXRMaXN0RHVyYXRpb24SGgoSaGFzX2JsZV9wZXJtaXNzaW9uGAsgASgIEkcKG3RoaXJkX3BhcnR5X21lZXRpbmdfc2V0dGluZxgMIAEoCzIiLmVudGl0aWVzLlRoaXJkUGFydHlNZWV0aW5nU2V0dGluZxI0CixyZXNvdXJjZV93YWl0X2xpc3Rfc3VwcG9ydF9lcXVpcG1lbnRfcmVxdWlyZRgNIAEoCCKMAgoYVGhpcmRQYXJ0eU1lZXRpbmdTZXR0aW5nEksKDW1lZXRpbmdfbmFtZXMYASADKAsyNC5lbnRpdGllcy5UaGlyZFBhcnR5TWVldGluZ1NldHRpbmcuTWVldGluZ05hbWVzRW50cnkSNQoMbWVldGluZ190eXBlGAIgASgOMh8uZW50aXRpZXMuVGhpcmRQYXJ0eU1lZXRpbmdUeXBlEhYKDm1lZXRpbmdfaDVfdXJsGAMgASgJGlQKEU1lZXRpbmdOYW1lc0VudHJ5EgsKA2tleRgBIAEoAxIuCgV2YWx1ZRgCIAEoCzIfLmVudGl0aWVzLlRoaXJkUGFydHlNZWV0aW5nTmFtZToCOAEioAEKFVRoaXJkUGFydHlNZWV0aW5nTmFtZRJPChFpMThuX21lZXRpbmdfbmFtZRgBIAMoCzI0LmVudGl0aWVzLlRoaXJkUGFydHlNZWV0aW5nTmFtZS5JMThuTWVldGluZ05hbWVFbnRyeRo2ChRJMThuTWVldGluZ05hbWVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBImMKGFJlc291cmNlV2FpdExpc3REdXJhdGlvbhIjChtkdXJhdGlvbl9iZWZvcmVfZXZlbnRfc3RhcnQYASABKAUSIgoaZHVyYXRpb25fYWZ0ZXJfZXZlbnRfc3RhcnQYAiABKAUiUgoUUGhvbmVBdHRlbmRlZVNldHRpbmcSEgoKY2FuX2ludml0ZRgBIAEoCBImCh5zZW5kX3Bob25lX21zZ19kZWZhdWx0X3NldHRpbmcYAiABKAgicgoYQ2FsZW5kYXJFdmVudEVkaXRTZXR0aW5nEhgKEGd1ZXN0X2Nhbl9pbnZpdGUYASABKAgSIgoaZ3Vlc3RfY2FuX3NlZV9vdGhlcl9ndWVzdHMYAiABKAgSGAoQZ3Vlc3RfY2FuX21vZGlmeRgDIAEoCCKKAQoYQ2FsZW5kYXJTaGFyZVBlcm1TZXR0aW5nEi4KDWNhbGVuZGFyX3R5cGUYASABKA4yFy5lbnRpdGllcy5DYWxlbmRhci5UeXBlEj4KDXNoYXJlX29wdGlvbnMYAiABKAsyJy5lbnRpdGllcy5DYWxlbmRhci5DYWxlbmRhclNoYXJlT3B0aW9ucyJWChlDYWxlbmRhckFkbWluQWNjZXNzQ29uZmlnEjkKDXBlcm1fc2V0dGluZ3MYASADKAsyIi5lbnRpdGllcy5DYWxlbmRhclNoYXJlUGVybVNldHRpbmcijQEKGlJlc291cmNlU3Vic2NyaWJlQ29uZGl0aW9uEhUKDWxpbWl0X3Blcl9kYXkYASABKAUSIQoZZm9yYmlkX2luX3JlY3Vyc2l2ZV9ldmVudBgCIAEoCBIaChJvbmVfbW9zdF9wZXJfZXZlbnQYAyABKAgSGQoRY291bnRfcmVmdW5kX3RpbWUYBCABKAUi4wEKD1dvcmtIb3VyU2V0dGluZxIfChBlbmFibGVfd29ya19ob3VyGAEgASgIOgVmYWxzZRJFCg93b3JrX2hvdXJfaXRlbXMYAiADKAsyLC5lbnRpdGllcy5Xb3JrSG91clNldHRpbmcuV29ya0hvdXJJdGVtc0VudHJ5EhoKDGlzX2ZpcnN0X3NldBgDIAEoCDoEdHJ1ZRpMChJXb3JrSG91ckl0ZW1zRW50cnkSCwoDa2V5GAEgASgJEiUKBXZhbHVlGAIgASgLMhYuZW50aXRpZXMuV29ya0hvdXJJdGVtOgI4ASI1CgxXb3JrSG91ckl0ZW0SJQoFc3BhbnMYASADKAsyFi5lbnRpdGllcy5Xb3JrSG91clNwYW4iOAoMV29ya0hvdXJTcGFuEhQKDHN0YXJ0X21pbnV0ZRgBIAIoBRISCgplbmRfbWludXRlGAIgAigFIpkBChlDYWxlbmRhclVzZXJEZXZpY2VTZXR0aW5nEhAKCHRpbWV6b25lGAEgASgJEhEKCWRldmljZV9pZBgCIAEoCRIeChZlbmFibGVfc3lzdGVtX3RpbWV6b25lGAMgASgIEjcKEmFsdGVybmF0ZV9jYWxlbmRhchgEIAEoDjIbLmVudGl0aWVzLkFsdGVybmF0ZUNhbGVuZGFyImgKGkNhbGVuZGFyVXNlckRldmljZVNldHRpbmdzEkoKHWNhbGVuZGFyX3VzZXJfZGV2aWNlX3NldHRpbmdzGAEgAygLMiMuZW50aXRpZXMuQ2FsZW5kYXJVc2VyRGV2aWNlU2V0dGluZyL6AgoQQ2FsZW5kYXJCdWlsZGluZxIKCgJpZBgBIAIoCRIOCgRuYW1lGAIgASgJOgASFQoLZGVzY3JpcHRpb24YAyABKAk6ABIVCghsYXRpdHVkZRgEIAEoAjoDMzYwEhYKCWxvbmdpdHVkZRgFIAEoAjoDMzYwEg4KBmZsb29ycxgGIAMoCRIxCg1tZWV0aW5nX3Jvb21zGAcgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZRIZCgppc19kZWxldGVkGAggASgIOgVmYWxzZRIRCgZ3ZWlnaHQYCSABKAU6ATASFQoKc2VpemVfdGltZRgKIAEoAzoBMBJGCg9mbG9vcl9sZXZlbF9pZHMYCyADKAsyLS5lbnRpdGllcy5DYWxlbmRhckJ1aWxkaW5nLkZsb29yTGV2ZWxJZHNFbnRyeRo0ChJGbG9vckxldmVsSWRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKsAQoVQ2FsZW5kYXJCdWlsZGluZ0V4dHJhEhUKC2Rlc2NyaXB0aW9uGAEgASgJOgASFQoIbGF0aXR1ZGUYAiABKAI6AzM2MBIWCglsb25naXR1ZGUYAyABKAI6AzM2MBIOCgZmbG9vcnMYBCADKAkSEgoIbG9jYXRpb24YBSABKAk6ABISCgh0aW1lem9uZRgGIAEoCToAEhUKCnNlaXplX3RpbWUYByABKAM6ATAirAIKDVNlYXJjaENvbnRlbnQSCgoCaWQYASACKAkSDgoEbmFtZRgCIAEoCToAEhUKC2Rlc2NyaXB0aW9uGAMgASgJOgASFAoKYXZhdGFyX3VybBgEIAEoCToAEk8KE3NlYXJjaF9jb250ZW50X3R5cGUYBSABKA4yKS5lbnRpdGllcy5TZWFyY2hDb250ZW50LlNlYXJjaENvbnRlbnRUeXBlOgdDSEFUVEVSEhMKCXRlbmFudF9pZBgGIAEoCToAEh4KD2lzX2Nyb3NzX3RlbmFudBgHIAEoCDoFZmFsc2USHwoQaXNfbWVldGluZ19ncm91cBgIIAEoCDoFZmFsc2UiKwoRU2VhcmNoQ29udGVudFR5cGUSCwoHQ0hBVFRFUhABEgkKBUdST1VQEAIiTwoSR3JvdXBNZW1iZXJDb250YWN0EhMKC2NhbGVuZGFyX2lkGAEgAigJEhQKCmF2YXRhcl91cmwYAiABKAk6ABIOCgRuYW1lGAMgASgJOgAiUgoTR3JvdXBNZW1iZXJzQ29udGFjdBI7ChVncm91cF9tZW1iZXJzX2NvbnRhY3QYASADKAsyHC5lbnRpdGllcy5Hcm91cE1lbWJlckNvbnRhY3QihgQKGk11bHRpQ2FsZW5kYXJTZWFyY2hDb250ZW50EhMKC2NhbGVuZGFyX2lkGAEgAigJEloKBHR5cGUYAiABKA4yQy5lbnRpdGllcy5NdWx0aUNhbGVuZGFyU2VhcmNoQ29udGVudC5NdWx0aUNhbGVuZGFyU2VhcmNoQ29udGVudFR5cGU6B0NIQVRURVISDwoFdGl0bGUYAyABKAk6ABISCghzdWJ0aXRsZRgEIAEoCToAEhQKCmF2YXRhcl91cmwYBSABKAk6ABIZCgppc19wcml2YXRlGAYgASgIOgVmYWxzZRIYCglpc19tZW1iZXIYByABKAg6BWZhbHNlEhoKC2lzX2Rpc2FibGVkGAggASgIOgVmYWxzZRIZCgppc19kaXNtaXNzGAkgASgIOgVmYWxzZRIeCg9pc19jcm9zc190ZW5hbnQYCiABKAg6BWZhbHNlEhoKEmNhbGVuZGFyX3RlbmFudF9pZBgLIAEoCRImCgtjb3Zlcl9pbWFnZRgOIAEoCzIRLmVudGl0aWVzLkltSW1hZ2USFgoOc3Vic2NyaWJlcl9udW0YDyABKAUiVAoeTXVsdGlDYWxlbmRhclNlYXJjaENvbnRlbnRUeXBlEgsKB0NIQVRURVIQARIQCgxNRUVUSU5HX1JPT00QAhITCg9TSEFSRURfQ0FMRU5EQVIQAyKzAgoeTWVldGluZ1N1YnNjcmlwdGlvbkluZm9ybWF0aW9uEhgKCWlzX3B1YmxpYxgBIAEoCDoFZmFsc2USEQoHc3VtbWFyeRgCIAEoCToAEi0KDWV2ZW50X2NyZWF0b3IYAyABKAsyFi5lbnRpdGllcy5FdmVudENyZWF0b3ISMQoIaW5zdGFuY2UYBCABKAsyHy5lbnRpdGllcy5DYWxlbmRhckV2ZW50SW5zdGFuY2USGQoKaXNfYWxsX2RheRgFIAEoCDoFZmFsc2USNgoWb3JpZ2luYWxfZXZlbnRfY3JlYXRvchgGIAEoCzIWLmVudGl0aWVzLkV2ZW50Q3JlYXRvchIvCg9ldmVudF9vcmdhbml6ZXIYByABKAsyFi5lbnRpdGllcy5FdmVudENyZWF0b3IiXwoaTWVldGluZ1Jvb21VbnVzYWJsZVJlYXNvbnMSQQoQdW51c2FibGVfcmVhc29ucxgBIAMoDjInLmVudGl0aWVzLk1lZXRpbmdSb29tVW51c2FibGVSZWFzb25UeXBlIlMKGENhbGVuZGFyRXZlbnRVbmlxdWVGaWVsZBITCgtjYWxlbmRhcl9pZBgBIAIoCRILCgNrZXkYAiACKAkSFQoNb3JpZ2luYWxfdGltZRgDIAIoCSKQAgoMRXZlbnRDcmVhdG9yEkYKDGNyZWF0b3JfdHlwZRgBIAEoDjInLmVudGl0aWVzLkV2ZW50Q3JlYXRvci5FdmVudENyZWF0b3JUeXBlOgdDSEFUVEVSEhQKCmNoYXR0ZXJfaWQYAiABKAk6ABIWCgxjcmVhdG9yX25hbWUYAyABKAk6ABIUCgpkZXBhcnRtZW50GAQgASgJOgASFAoKYXZhdGFyX3VybBgFIAEoCToAEiAKFGRpc21pc3NlZF9jcmVhdG9yX2lkGAYgASgDQgIYASI8ChBFdmVudENyZWF0b3JUeXBlEgsKB0NIQVRURVIQARIKCgZHT09HTEUQAhIPCgtDSEFUVEVSX0JPVBADIiAKHlRlbmFudEFsbFN0dWZmQ2FsZW5kYXJSZWZFeHRyYSLqAgoGVGVuYW50EgoKAmlkGAEgAigJEgwKBG5hbWUYAiACKAkSFAoMY29udGFjdF9uYW1lGAMgASgJEhYKDmNvbnRhY3RfbW9iaWxlGAQgASgJEhUKDWNvbnRhY3RfZW1haWwYBSABKAkSDwoHYWRkcmVzcxgGIAEoCRIOCgZkb21haW4YByABKAkSEQoJcG9zdF9jb2RlGAggASgJEg4KBnJlbWFyaxgJIAEoCRIRCgl0ZWxlcGhvbmUYCiABKAkSEAoIaWNvbl91cmwYCyABKAkSHwoGYXZhdGFyGAwgASgLMg8uZW50aXRpZXMuSW1hZ2USEwoLdW5pdF9sZWFndWUYDSABKAkSMQoJaTE4bl9uYW1lGA4gAygLMh4uZW50aXRpZXMuVGVuYW50LkkxOG5OYW1lRW50cnkaLwoNSTE4bk5hbWVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjQKDFN0YXJ0RW5kVGltZRISCgpzdGFydF90aW1lGAEgAigDEhAKCGVuZF90aW1lGAIgAigDIqQEChNDYWxlbmRhckluc3RhbmNlU2V0EkEKGGNhbGVuZGFyX2V2ZW50X2luc3RhbmNlcxgBIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRJbnN0YW5jZRI5CgZldmVudHMYAiADKAsyKS5lbnRpdGllcy5DYWxlbmRhckluc3RhbmNlU2V0LkV2ZW50c0VudHJ5EkgKDmV2ZW50X2NyZWF0b3JzGAMgAygLMjAuZW50aXRpZXMuQ2FsZW5kYXJJbnN0YW5jZVNldC5FdmVudENyZWF0b3JzRW50cnkSWQoXb3JpZ2luYWxfZXZlbnRfY3JlYXRvcnMYBCADKAsyOC5lbnRpdGllcy5DYWxlbmRhckluc3RhbmNlU2V0Lk9yaWdpbmFsRXZlbnRDcmVhdG9yc0VudHJ5GkYKC0V2ZW50c0VudHJ5EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQ6AjgBGkwKEkV2ZW50Q3JlYXRvcnNFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5lbnRpdGllcy5FdmVudENyZWF0b3I6AjgBGlQKGk9yaWdpbmFsRXZlbnRDcmVhdG9yc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmVudGl0aWVzLkV2ZW50Q3JlYXRvcjoCOAEiqgEKCFVzZXJOYW1lEgwKBG5hbWUYASACKAkSDwoHbmFtZV9weRgCIAEoCRJFChJpbnRlcm5hdGlvbmFsX25hbWUYAyADKAsyKS5lbnRpdGllcy5Vc2VyTmFtZS5JbnRlcm5hdGlvbmFsTmFtZUVudHJ5GjgKFkludGVybmF0aW9uYWxOYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJAChJFdmVudElkVmVyc2lvblBhaXISGQoRY2FsZW5kYXJfZXZlbnRfaWQYASACKAkSDwoHdmVyc2lvbhgCIAIoAyJ9ChdDYWxlbmRhckV2ZW50VmVyc2lvblNldBI3ChFldmVudF92ZXJzaW9uX3NldBgBIAMoCzIcLmVudGl0aWVzLkV2ZW50SWRWZXJzaW9uUGFpchIpCgl0aW1lX3BhaXIYAiACKAsyFi5lbnRpdGllcy5TdGFydEVuZFRpbWUioAIKCldvcmtTdGF0dXMSKwoGc3RhdHVzGAcgASgOMhsuZW50aXRpZXMuV29ya1N0YXR1cy5TdGF0dXMSEgoKc3RhcnRfdGltZRgIIAEoAxIQCghlbmRfdGltZRgJIAEoAxJNChVkZXNjcmlwdGlvbl90ZW1wbGF0ZXMYCiADKAsyLi5lbnRpdGllcy5Xb3JrU3RhdHVzLkRlc2NyaXB0aW9uVGVtcGxhdGVzRW50cnkaOwoZRGVzY3JpcHRpb25UZW1wbGF0ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjMKBlN0YXR1cxILCgdVTktOT1dOEAASDAoIT05fTEVBVkUQARIOCgpPTl9NRUVUSU5HEAIiWAoOQ3J5cHRvQ2hhdEluZm8SHAoOZmlyc3RfcG9zaXRpb24YASABKAVCBIq1GAASKAoaZmlyc3RfcG9zaXRpb25fYmFkZ2VfY291bnQYAiABKAVCBIq1GAAi2wMKC0FjY291bnRVc2VyEiIKB2NoYXR0ZXIYASABKAsyES5lbnRpdGllcy5DaGF0dGVyEhAKCGljb25fdXJsGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhMKC3RlbmFudF9jb2RlGAQgASgJEhAKCHVzZXJfZW52GAUgASgJEicKCnRlbmFudF90YWcYBiABKA4yEy5lbnRpdGllcy5UZW5hbnRUYWcSHwoGYXZhdGFyGAcgASgLMg8uZW50aXRpZXMuSW1hZ2USQAoXYWNjb3VudF9zZWN1cml0eV9jb25maWcYCCABKAsyHy5lbnRpdGllcy5BY2NvdW50U2VjdXJpdHlDb25maWcSPQoWdGVuYW50X3NpbmdsZV9wcm9kdWN0cxgJIAMoCzIdLmVudGl0aWVzLlRlbmFudFNpbmdsZVByb2R1Y3QSDgoGaXNfaWRwGAogASgIEhEKCWlzX2Zyb3plbhgLIAEoCBIRCglpc19hY3RpdmUYDCABKAgSEQoJdXNlcl91bml0GA0gASgJEhIKCnVzZXJfYnJhbmQYDiABKAkSGQoRc3VpdGVfZnVsbF9kb21haW4YDyABKAkSFwoPdXBncmFkZV9lbmFibGVkGBAgASgIIrsDChVBY2NvdW50U2VjdXJpdHlDb25maWcSNwoRbW9kdWxlX21vZGlmeV9wd2QYASABKAsyHC5lbnRpdGllcy5Nb2R1bGVTd2l0Y2hDb25maWcSPwoZbW9kdWxlX2FjY291bnRfbWFuYWdlbWVudBgCIAEoCzIcLmVudGl0aWVzLk1vZHVsZVN3aXRjaENvbmZpZxJCChxtb2R1bGVfc2VjdXJpdHlfdmVyaWZpY2F0aW9uGAMgASgLMhwuZW50aXRpZXMuTW9kdWxlU3dpdGNoQ29uZmlnEj4KGG1vZHVsZV9kZXZpY2VfbWFuYWdlbWVudBgEIAEoCzIcLmVudGl0aWVzLk1vZHVsZVN3aXRjaENvbmZpZxIwCgptb2R1bGVfMmZhGAUgASgLMhwuZW50aXRpZXMuTW9kdWxlU3dpdGNoQ29uZmlnEjUKD21vZHVsZV9iaW9fYXV0aBgGIAEoCzIcLmVudGl0aWVzLk1vZHVsZVN3aXRjaENvbmZpZxI7ChVtb2R1bGVfYmlvX2F1dGhfbG9naW4YByABKAsyHC5lbnRpdGllcy5Nb2R1bGVTd2l0Y2hDb25maWcioQEKEk1vZHVsZVN3aXRjaENvbmZpZxIVCg1zd2l0Y2hfc3RhdHVzGAEgASgFEkEKC21vZHVsZV9pbmZvGAIgAygLMiwuZW50aXRpZXMuTW9kdWxlU3dpdGNoQ29uZmlnLk1vZHVsZUluZm9FbnRyeRoxCg9Nb2R1bGVJbmZvRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLRBAoRQXBwRmVlZENhcmRCdXR0b24SCgoCaWQYASABKAkSMgoJbXVsdGlfdXJsGAIgASgLMh8uZW50aXRpZXMuQXBwRmVlZENhcmRCdXR0b24uVVJMEjsKC2FjdGlvbl90eXBlGAMgASgOMiYuZW50aXRpZXMuQXBwRmVlZENhcmRCdXR0b24uQWN0aW9uVHlwZRIuCgR0ZXh0GAQgASgLMiAuZW50aXRpZXMuQXBwRmVlZENhcmRCdXR0b24uVGV4dBJECgtidXR0b25fdHlwZRgFIAEoDjImLmVudGl0aWVzLkFwcEZlZWRDYXJkQnV0dG9uLkJ1dHRvblR5cGU6B0RFRkFVTFQakwEKBFRleHQSDwoHY29udGVudBgBIAIoCRJGCgtpMThuQ29udGVudBgCIAMoCzIxLmVudGl0aWVzLkFwcEZlZWRDYXJkQnV0dG9uLlRleHQuSTE4bkNvbnRlbnRFbnRyeRoyChBJMThuQ29udGVudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaSAoDVVJMEgsKA3VybBgBIAIoCRITCgthbmRyb2lkX3VybBgCIAEoCRIPCgdpb3NfdXJsGAMgASgJEg4KBnBjX3VybBgEIAEoCSI0CgpBY3Rpb25UeXBlEgsKB1VOS05PV04QABIMCghVUkxfUEFHRRABEgsKB1dFQkhPT0sQAiIzCgpCdXR0b25UeXBlEgsKB0RFRkFVTFQQARILCgdQUklNQVJZEAISCwoHU1VDQ0VTUxADIk8KDkZlZWRCdXR0b25EYXRhEiwKB2J1dHRvbnMYASADKAsyGy5lbnRpdGllcy5BcHBGZWVkQ2FyZEJ1dHRvbhIPCgd2ZXJzaW9uGAogASgDIq8FCghGZWVkQ2FyZBIKCgJpZBgBIAEoCRIrCgR0eXBlGAIgASgOMhcuZW50aXRpZXMuRmVlZENhcmQuVHlwZToEQ0hBVBITCgt1cGRhdGVfdGltZRgDIAEoAxIWCg51cGRhdGVfdGltZV9tcxgJIAEoAxISCgppc19kZWxheWVkGAQgASgIEhYKDnBhcmVudF9jYXJkX2lkGAUgASgDEhEKCXJhbmtfdGltZRgGIAEoAxIlCglmZWVkX3R5cGUYByABKA4yEi5lbnRpdGllcy5GZWVkVHlwZRIpCgZzdGF0dXMYCiABKA4yGS5lbnRpdGllcy5GZWVkQ2FyZC5TdGF0dXMSDwoHaXNfaGlkZRgLIAEoCBI2ChBsYXN0X3VucmVhZF90aW1lGAwgASgLMhwuZW50aXRpZXMuRmVlZExhc3RVbnJlYWRUaW1lEjAKD2ZlZWRfY2FyZF9maWVsZBgNIAEoCzIXLmVudGl0aWVzLkZlZWRDYXJkRmllbGQSDwoHaW1wcl9pZBgIIAEoCSLDAQoEVHlwZRIQCgxVTktOT1dOX1RZUEUQABIICgRDSEFUEAESCAoETUFJTBACEgcKA0RPQxADEgoKBlRIUkVBRBAEEgcKA0JPWBAFEgsKB09QRU5BUFAQBhIJCgVUT1BJQxAHEgwKCEFQUF9DSEFUEAgSEAoMU1VCU0NSSVBUSU9OEAoSDgoKTVNHX1RIUkVBRBALEgkKBU1ZX0FJEAwSDAoIQVBQX0ZFRUQQDRIQCgxLTk9XTEVER0VfQUkQDiIECAkQCSJaCgZTdGF0dXMSEgoOVU5LTk9XTl9TVEFUVVMQABIKCgZOT1JNQUwQARISCg5QRU5ESU5HX0RFTEVURRACEgsKB0RFTEVURUQQAxIPCgtDT09MSU5HX09GRhAEIn4KEUZlZWRCdXR0b25BY3Rpb25zEjkKB2FjdGlvbnMYASADKAsyKC5lbnRpdGllcy5GZWVkQnV0dG9uQWN0aW9ucy5BY3Rpb25zRW50cnkaLgoMQWN0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi+AIKDUZlZWRDYXJkRmllbGQSJwoIdGVtcF90b3AYASABKAsyFS5lbnRpdGllcy5GZWVkVGVtcFRvcBItCgtidXR0b25fZGF0YRgCIAEoCzIYLmVudGl0aWVzLkZlZWRCdXR0b25EYXRhEkIKDmJ1dHRvbnNfYWN0aW9uGAMgAygLMiouZW50aXRpZXMuRmVlZENhcmRGaWVsZC5CdXR0b25zQWN0aW9uRW50cnkSFQoNYnV0dG9uX2FwcF9pZBgEIAEoAxIyCg5tYXJrX2FzX3VucmVhZBgFIAEoCzIaLmVudGl0aWVzLkZlZWRNYXJrQXNVbnJlYWQSLQoNcHJpb3JpdHlfaW5mbxgGIAEoCzIWLmVudGl0aWVzLlByaW9yaXR5SW5mbxpRChJCdXR0b25zQWN0aW9uRW50cnkSCwoDa2V5GAEgASgJEioKBXZhbHVlGAIgASgLMhsuZW50aXRpZXMuRmVlZEJ1dHRvbkFjdGlvbnM6AjgBIjoKC0ZlZWRUZW1wVG9wEhMKC2lzX3RlbXBfdG9wGAEgASgIEhYKDnVwZGF0ZV90aW1lX21zGAIgASgDIkwKEEZlZWRNYXJrQXNVbnJlYWQSDgoGdW5yZWFkGAEgASgIEhYKDnVwZGF0ZV90aW1lX21zGAIgASgDEhAKCHJlYWRfcG9zGAMgASgDIkUKEEZlZWRDYXJkSWRlbnRpdHkSCgoCaWQYASABKAkSJQoEdHlwZRgCIAEoDjIXLmVudGl0aWVzLkZlZWRDYXJkLlR5cGUiZAoUVXNlckZlZWRDYXJkSWRlbnRpdHkSDwoHdXNlcl9pZBgBIAEoCRIPCgdjYXJkX2lkGAIgASgJEioKCWNhcmRfdHlwZRgDIAEoDjIXLmVudGl0aWVzLkZlZWRDYXJkLlR5cGUi3gUKDFByaW9yaXR5SW5mbxI+Cg9wcmlvcml0eV9zdGF0dXMYASABKA4yJS5lbnRpdGllcy5Qcmlvcml0eUluZm8uUHJpb3JpdHlTdGF0dXMSHQoVbWF4X3ByaW9yaXR5X3Bvc2l0aW9uGAIgASgFEhYKDnVwZGF0ZV90aW1lX21zGAMgASgDEm4KJ3ByaW9yaXR5X21zZ190eXBlXzJfc2luZ2xlX3ByaW9yaXR5X21zZxgEIAMoCzI9LmVudGl0aWVzLlByaW9yaXR5SW5mby5Qcmlvcml0eU1zZ1R5cGUyU2luZ2xlUHJpb3JpdHlNc2dFbnRyeRpyCiZQcmlvcml0eU1zZ1R5cGUyU2luZ2xlUHJpb3JpdHlNc2dFbnRyeRILCgNrZXkYASABKAUSNwoFdmFsdWUYAiABKAsyKC5lbnRpdGllcy5Qcmlvcml0eUluZm8uU2luZ2xlUHJpb3JpdHlNc2c6AjgBGnUKEVNpbmdsZVByaW9yaXR5TXNnEh0KFXByaW9yaXR5X21zZ19wb3NpdGlvbhgBIAEoBRJBChFwcmlvcml0eV9tc2dfdHlwZRgCIAEoDjImLmVudGl0aWVzLlByaW9yaXR5SW5mby5Qcmlvcml0eU1zZ1R5cGUiigEKD1ByaW9yaXR5TXNnVHlwZRIdChlQUklPUklUWV9NU0dfVFlQRV9VTktOT1dOEAASEAoMT1JHQU5JWkFUSU9OEAESCgoGVVJHRU5UEAISDQoJVU5SRUFEX0FUEAMSEQoNU1BFQ0lBTF9GT0NVUxAEEhgKFFJFQ0VOVExZX0FEREVEX0dST1VQEAUibwoOUHJpb3JpdHlTdGF0dXMSGwoXUFJJT1JJVFlfU1RBVFVTX1VOS05PV04QABIdChlSRUNFSVZFRF9QUklPUklUWV9NRVNTQUdFEAESEwoPQ0FOQ0VMX1BSSU9SSVRZEAISDAoIUFJJT1JJVFkQAyK1AQoQSW52aXNpYmxlTWVzc2FnZRIKCgJpZBgBIAEoCRITCgtjcmVhdGVfdGltZRgCIAEoAxIQCghwb3NpdGlvbhgDIAEoBRIRCgl0aHJlYWRfaWQYBCABKAkSFwoPdGhyZWFkX3Bvc2l0aW9uGAUgASgFEg8KB2Zyb21faWQYBiABKAkSMQoJZnJvbV90eXBlGAcgASgOMhouZW50aXRpZXMuTWVzc2FnZS5Gcm9tVHlwZUICGAEiXQoPSW52aXNpYmxlVGhyZWFkEhAKCG93bmVyX2lkGAEgASgJEhEKCXRocmVhZF9pZBgCIAEoCRITCgt1cGRhdGVfdGltZRgDIAEoAxIQCghwb3NpdGlvbhgEIAEoBSL9AQoZV2F5VG9BZGRGcmllbmRTZXR0aW5nSXRlbRI2CgR0eXBlGAEgASgOMiguZW50aXRpZXMuV2F5VG9BZGRGcmllbmRTZXR0aW5nSXRlbS5UeXBlEg4KBmVuYWJsZRgCIAEoCCKXAQoEVHlwZRIQCgxVTktOT1dOX1RZUEUQABIICgRDSEFUEAESEQoNQ09OVEFDVF9UT0tFThACEgsKB1BST0ZJTEUQAxIICgRET0NTEAQSDAoIQ0FMRU5EQVIQBRIUChBWSURFT19DT05GRVJFTkNFEAYSCQoFRU1BSUwQBxINCglOQU1FX0NBUkQQCBILCgdNSU5VVEVTEAkiiwEKFVdheVRvQWRkRnJpZW5kU2V0dGluZxIUCgxjaGF0X3NldHRpbmcYASABKAgSHQoVY29udGFjdF90b2tlbl9zZXR0aW5nGAIgASgIEj0KEHdheV90b19hZGRfaXRlbXMYAyADKAsyIy5lbnRpdGllcy5XYXlUb0FkZEZyaWVuZFNldHRpbmdJdGVtIt4BChZXYXlUb0ZpbmRNZVNldHRpbmdJdGVtEjMKBHR5cGUYASABKA4yJS5lbnRpdGllcy5XYXlUb0ZpbmRNZVNldHRpbmdJdGVtLlR5cGUSCgoCaWQYAiABKAkSGQoRZGlzcGxheWVkX2NvbnRhY3QYAyABKAkSDgoGZW5hYmxlGAQgASgIEhQKDGhhc192ZXJpZmllZBgFIAEoCBIWCg5uZWVkX2NwX3ZlcmlmeRgGIAEoCCIqCgRUeXBlEgsKB1VOS05PV04QABIKCgZNT0JJTEUQARIJCgVFTUFJTBACImAKF0luc3RhbmNlSW1wb3J0YW5jZVNjb3JlEhkKEWNhbGVuZGFyX2V2ZW50X2lkGAEgAigJEhsKE2luc3RhbmNlX3N0YXJ0X3RpbWUYAiACKAMSDQoFc2NvcmUYAyACKAUiSgoKV29yZEVudGl0eRIMCgR0ZXh0GAEgASgJEhkKEWxvY2FsZV9pZGVudGlmaWVyGAIgASgJEhMKC3VwZGF0ZV90aW1lGAMgASgDItECChNTeXN0ZW1NZXNzYWdlQWN0aW9uEgwKBHR5cGUYASABKAUSDwoHcGF5bG9hZBgCIAEoDBIdCgNjbWQYBCABKA4yEC5pbXByb3RvLkNvbW1hbmQSLgoDdXJsGAUgASgLMiEuZW50aXRpZXMuU3lzdGVtTWVzc2FnZUFjdGlvbi5VcmwaKgoQSW52aXRlQXRDaGF0dGVycxIWCg5hdF9jaGF0dGVyX2lkcxgBIAMoAxpMCgNVcmwSCwoDaW9zGAEgASgJEg8KB2FuZHJvaWQYAiABKAkSCgoCcGMYAyABKAkSCwoDd2ViGAQgASgJEg4KBmNvbW1vbhhkIAIoCSJSCgdBY3RUeXBlEhQKEFVOS05PV05fQUNUX1RZUEUQABIWChJJTlZJVEVfQVRfQ0hBVFRFUlMQARIHCgNVUkwQAhIQCgxMQVJLX0NPTU1BTkQQAyKoBQoXU3lzdGVtTWVzc2FnZUl0ZW1BY3Rpb24SUAoSaW52aXRlX2F0X2NoYXR0ZXJzGAEgASgLMjIuZW50aXRpZXMuU3lzdGVtTWVzc2FnZUl0ZW1BY3Rpb24uSW52aXRlQXRDaGF0dGVyc0gAEkMKC2FjdGlvbl9saW5rGAIgASgLMiwuZW50aXRpZXMuU3lzdGVtTWVzc2FnZUl0ZW1BY3Rpb24uQWN0aW9uTGlua0gAEkUKDGxhcmtfY29tbWFuZBgDIAEoCzItLmVudGl0aWVzLlN5c3RlbU1lc3NhZ2VJdGVtQWN0aW9uLkxhcmtDb21tYW5kSAASSwoPY2hhdHRlcl90b29sdGlwGAQgASgLMjAuZW50aXRpZXMuU3lzdGVtTWVzc2FnZUl0ZW1BY3Rpb24uQ2hhdHRlclRvb2x0aXBIABoqChBJbnZpdGVBdENoYXR0ZXJzEhYKDmF0X2NoYXR0ZXJfaWRzGAEgAygDGlMKCkFjdGlvbkxpbmsSCwoDaW9zGAEgASgJEg8KB2FuZHJvaWQYAiABKAkSCgoCcGMYAyABKAkSCwoDd2ViGAQgASgJEg4KBmNvbW1vbhgFIAEoCRo9CgtMYXJrQ29tbWFuZBIPCgdwYXlsb2FkGAIgASgMEh0KA2NtZBgEIAEoDjIQLmltcHJvdG8uQ29tbWFuZBqXAQoOQ2hhdHRlclRvb2x0aXASUwoUY2hhdHRlcl90b29sdGlwX3R5cGUYASABKA4yNS5lbnRpdGllcy5TeXN0ZW1NZXNzYWdlSXRlbUFjdGlvbi5DaGF0dGVyVG9vbHRpcC5UeXBlIjAKBFR5cGUSCwoHVU5LTk9XThAAEhsKF1NJTVBMSUZZX1NZU1RFTV9NRVNTQUdFEAFCCAoGQWN0aW9uIh8KCUZhdm9ySXRlbRISCgpjaGF0dGVyX2lkGAEgASgJIosBChNGYXZvckNoYXR0ZXJzSW5DaGF0Eg8KB2NoYXRfaWQYASABKAkSMAoTb3JkZXJlZF9mYXZvcl9pdGVtcxgCIAMoCzITLmVudGl0aWVzLkZhdm9ySXRlbRIxChRzZWxlY3RlZF9mYXZvcl9pdGVtcxgDIAMoCzITLmVudGl0aWVzLkZhdm9ySXRlbSIwCgxQbGF0Zm9ybUluZm8SDAoEdHlwZRgBIAIoCRISCgptaW5WZXJzaW9uGAIgASgJIukDCgdBcHBJbmZvEgoKAklEGAEgAigJEgsKA2tleRgCIAIoCRIpCgRuYW1lGAMgAygLMhsuZW50aXRpZXMuQXBwSW5mby5OYW1lRW50cnkSKQoEbG9nbxgEIAMoCzIbLmVudGl0aWVzLkFwcEluZm8uTG9nb0VudHJ5Eg8KB2FwcFR5cGUYBSACKAkSKQoJcGxhdGZvcm1zGAYgAygLMhYuZW50aXRpZXMuUGxhdGZvcm1JbmZvEhMKC3ByaW1hcnlPbmx5GAcgAigIEikKBGRlc2MYCCADKAsyGy5lbnRpdGllcy5BcHBJbmZvLkRlc2NFbnRyeRIrCgVleHRyYRgJIAMoCzIcLmVudGl0aWVzLkFwcEluZm8uRXh0cmFFbnRyeRIRCgl1bm1vdmFibGUYCiABKAgaKwoJTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKwoJTG9nb0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKwoJRGVzY0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaLAoKRXh0cmFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIuIHChFOYXZpZ2F0aW9uQXBwSW5mbxIKCgJJRBgBIAIoAxILCgNrZXkYAiACKAkSLAoHYXBwVHlwZRgDIAIoDjIbLmVudGl0aWVzLk5hdmlnYXRpb25BcHBUeXBlEjMKBG5hbWUYBCADKAsyJS5lbnRpdGllcy5OYXZpZ2F0aW9uQXBwSW5mby5OYW1lRW50cnkSLgoEbG9nbxgFIAEoCzIgLmVudGl0aWVzLk5hdmlnYXRpb25BcHBJbmZvLkxvZ28SOwoJcGxhdGZvcm1zGAYgAygLMiguZW50aXRpZXMuTmF2aWdhdGlvbkFwcEluZm8uUGxhdGZvcm1JbmZvEjUKBWV4dHJhGAcgAygLMiYuZW50aXRpZXMuTmF2aWdhdGlvbkFwcEluZm8uRXh0cmFFbnRyeRIPCgdleHBpcmVzGAggASgNEhQKDHByaW1hcnlfb25seRgeIAEoCBIRCgl1bm1vdmFibGUYHyABKAga8gEKBExvZ28SFwoPcHJpbWFyeV9kZWZhdWx0GAEgASgJEhgKEHByaW1hcnlfc2VsZWN0ZWQYAiABKAkSGAoQc2hvcnRjdXRfZGVmYXVsdBgDIAEoCRIbChNwcmltYXJ5X2RlZmF1bHRfc3ZnGAQgASgJEhkKEXByaW1hcnlfY29sb3JfcG5nGAUgASgJEhwKFHBjX3ByaW1hcnlfY29sb3Jfc3ZnGAYgASgJEiIKGm1vYmlsZV9wcmltYXJ5X2RlZmF1bHRfcG5nGAcgASgJEiMKG21vYmlsZV9wcmltYXJ5X3NlbGVjdGVkX3BuZxgIIAEoCRo2CgdWZXJzaW9uEg0KBW1ham9yGAEgASgFEg0KBW1pbm9yGAIgASgFEg0KBXBhdGNoGAMgASgFGoABCgxQbGF0Zm9ybUluZm8SNgoIcGxhdGZvcm0YASABKA4yJC5lbnRpdGllcy5OYXZpZ2F0aW9uQXBwSW5mby5QbGF0Zm9ybRI4CgttaW5fdmVyc2lvbhgCIAEoCzIjLmVudGl0aWVzLk5hdmlnYXRpb25BcHBJbmZvLlZlcnNpb24aKwoJTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaLAoKRXh0cmFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBImgKCFBsYXRmb3JtEgsKB1Vua25vd24QABIHCgNNYWMQARILCgdXaW5kb3dzEAISCwoHQW5kcm9pZBADEgoKBklQaG9uZRAEEggKBElQYWQQBRIJCgVMaW51eBAGEgsKB0hhcm1vbnkQByKrCwoTTmF2aWdhdGlvbkFwcEluZm9WMhIKCgJpZBgBIAIoCRILCgNrZXkYAiABKAkSLQoIYXBwX3R5cGUYAyACKA4yGy5lbnRpdGllcy5OYXZpZ2F0aW9uQXBwVHlwZRI1CgRuYW1lGAQgAygLMicuZW50aXRpZXMuTmF2aWdhdGlvbkFwcEluZm9WMi5OYW1lRW50cnkSMAoEbG9nbxgFIAEoCzIiLmVudGl0aWVzLk5hdmlnYXRpb25BcHBJbmZvVjIuTG9nbxJBCg1wbGF0Zm9ybV9saXN0GAYgAygLMiouZW50aXRpZXMuTmF2aWdhdGlvbkFwcEluZm9WMi5QbGF0Zm9ybUluZm8SNwoFZXh0cmEYByADKAsyKC5lbnRpdGllcy5OYXZpZ2F0aW9uQXBwSW5mb1YyLkV4dHJhRW50cnkSDwoHZXhwaXJlcxgIIAEoDRIUCgxwcmltYXJ5X29ubHkYHiABKAgSEQoJdW5tb3ZhYmxlGB8gASgIEhAKCGVyYXNhYmxlGCAgASgIEi8KCW9wZW5fbW9kZRghIAEoDjIcLmVudGl0aWVzLk5hdmlnYXRpb25PcGVuTW9kZRIqCgZzb3VyY2UYIiABKA4yGi5lbnRpdGllcy5OYXZpZ2F0aW9uU291cmNlEhQKDGRpc3BsYXlfbmFtZRgjIAEoCRIQCghzdWJ0aXRsZRgkIAEoCRqvAwoETG9nbxIXCg9wcmltYXJ5X2RlZmF1bHQYASABKAkSGAoQcHJpbWFyeV9zZWxlY3RlZBgCIAEoCRIYChBzaG9ydGN1dF9kZWZhdWx0GAMgASgJEhsKE3ByaW1hcnlfZGVmYXVsdF9zdmcYBCABKAkSGQoRcHJpbWFyeV9jb2xvcl9wbmcYBSABKAkSHAoUcGNfcHJpbWFyeV9jb2xvcl9zdmcYBiABKAkSIgoabW9iaWxlX3ByaW1hcnlfZGVmYXVsdF9wbmcYByABKAkSIwobbW9iaWxlX3ByaW1hcnlfc2VsZWN0ZWRfcG5nGAggASgJEkUKGmN1c3RvbV9uYXZpZ2F0aW9uX2FwcF9sb2dvGAkgASgLMiEuZW50aXRpZXMuQ3VzdG9tTmF2aWdhdGlvbkFwcExvZ28SQAoKbG9nb19zdHlsZRgKIAEoDjIsLmVudGl0aWVzLk5hdmlnYXRpb25BcHBJbmZvVjIuTG9nby5Mb2dvU3R5bGUiMgoJTG9nb1N0eWxlEgsKB1Vua25vd24QABIICgRGaWxsEAESDgoKQmFja2dyb3VuZBACGjYKB1ZlcnNpb24SDQoFbWFqb3IYASABKAUSDQoFbWlub3IYAiABKAUSDQoFcGF0Y2gYAyABKAUahAEKDFBsYXRmb3JtSW5mbxI4CghwbGF0Zm9ybRgBIAEoDjImLmVudGl0aWVzLk5hdmlnYXRpb25BcHBJbmZvVjIuUGxhdGZvcm0SOgoLbWluX3ZlcnNpb24YAiABKAsyJS5lbnRpdGllcy5OYXZpZ2F0aW9uQXBwSW5mb1YyLlZlcnNpb24aKwoJTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaLAoKRXh0cmFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBImgKCFBsYXRmb3JtEgsKB1Vua25vd24QABIHCgNNYWMQARILCgdXaW5kb3dzEAISCwoHQW5kcm9pZBADEgoKBklQaG9uZRAEEggKBElQYWQQBRIJCgVMaW51eBAGEgsKB0hhcm1vbnkQByJgCgdCaXpUeXBlEhAKDFVOS05PV05fVFlQRRAAEgcKA0NDTRABEgwKCE1JTklfQVBQEAISCwoHV0VCX0FQUBADEgkKBU1FRUdPEAQSBwoDV0VCEAUSCwoHUFJPRklMRRAGInAKD05hdmlnYXRpb25PcmRlchIxCgtuYXZpZ2F0aW9ucxgBIAMoCzIcLmVudGl0aWVzLk5hdmlnYXRpb25VbmlxdWVJRBIVCg1wcmltYXJ5X2NvdW50GAIgAigFEhMKC3RvdGFsX2NvdW50GAMgASgFIo4BCg5OYXZpZ2F0aW9uSW5mbxIpCg5tYWluTmF2aWdhdGlvbhgBIAMoCzIRLmVudGl0aWVzLkFwcEluZm8SLQoSc2hvcnRjdXROYXZpZ2F0aW9uGAIgAygLMhEuZW50aXRpZXMuQXBwSW5mbxIPCgd2ZXJzaW9uGAMgAigFEhEKCXZlcnNpb25WMhgEIAEoAyJgChJOYXZpZ2F0aW9uVW5pcXVlSUQSCgoCSUQYASACKAkSLAoHYXBwVHlwZRgCIAIoDjIbLmVudGl0aWVzLk5hdmlnYXRpb25BcHBUeXBlEhAKCFBvc2l0aW9uGAMgASgFIsEBCg9OYXZpZ2F0aW9uR3JvdXASNAoOdW5pcXVlX2lkX2xpc3QYASADKAsyHC5lbnRpdGllcy5OYXZpZ2F0aW9uVW5pcXVlSUQSDAoEZGF0YRgCIAEoCRIKCgJpZBgDIAEoCRIxCgRuYW1lGAQgAygLMiMuZW50aXRpZXMuTmF2aWdhdGlvbkdyb3VwLk5hbWVFbnRyeRorCglOYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJWChFOYXZpZ2F0aW9uT3JkZXJWMhItCgpncm91cF9saXN0GAEgAygLMhkuZW50aXRpZXMuTmF2aWdhdGlvbkdyb3VwEhIKCm1haW5fY291bnQYAiACKAUiwAEKEE5hdmlnYXRpb25Gb2xkZXISMQoMZWxlbWVudF9saXN0GAEgAygLMhsuZW50aXRpZXMuTmF2aWdhdGlvbkVsZW1lbnQSDAoEZGF0YRgCIAEoCRIKCgJpZBgDIAEoCRIyCgRuYW1lGAQgAygLMiQuZW50aXRpZXMuTmF2aWdhdGlvbkZvbGRlci5OYW1lRW50cnkaKwoJTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEinQEKEU5hdmlnYXRpb25FbGVtZW50EiMKBHR5cGUYASACKA4yFS5lbnRpdGllcy5FbGVtZW50VHlwZRIqCgVncm91cBhlIAEoCzIZLmVudGl0aWVzLk5hdmlnYXRpb25Hcm91cEgAEiwKBmZvbGRlchhmIAEoCzIaLmVudGl0aWVzLk5hdmlnYXRpb25Gb2xkZXJIAEIJCgdjb250ZW50IpgBCg5Vc2VyTmF2aWdhdGlvbhIvCgp1c2VyX29yZGVyGAEgASgLMhsuZW50aXRpZXMuTmF2aWdhdGlvbk9yZGVyVjISOwoUY3VzdG9tX2FwcF9pbmZvX2xpc3QYAiADKAsyHS5lbnRpdGllcy5OYXZpZ2F0aW9uQXBwSW5mb1YyEhgKEGlzX3ByZV9pbnN0YWxsZWQYAyABKAgimgEKEFVzZXJOYXZpZ2F0aW9uVjISLwoKdXNlcl9vcmRlchgBIAMoCzIbLmVudGl0aWVzLk5hdmlnYXRpb25FbGVtZW50EjsKFGN1c3RvbV9hcHBfaW5mb19saXN0GAIgAygLMh0uZW50aXRpZXMuTmF2aWdhdGlvbkFwcEluZm9WMhIYChBpc19wcmVfaW5zdGFsbGVkGAMgASgIIpcDChJSZWNlbnRWaXNpdEFwcEluZm8SEQoJdW5pcXVlX2lkGAEgAigJEjcKCGJpel90eXBlGAIgASgOMiUuZW50aXRpZXMuTmF2aWdhdGlvbkFwcEluZm9WMi5CaXpUeXBlEjQKBG5hbWUYAyADKAsyJi5lbnRpdGllcy5SZWNlbnRWaXNpdEFwcEluZm8uTmFtZUVudHJ5EjAKBGxvZ28YBCABKAsyIi5lbnRpdGllcy5OYXZpZ2F0aW9uQXBwSW5mb1YyLkxvZ28SCwoDdXJsGAUgASgJEg4KBmFwcF9pZBgGIAEoCRIdChVsYXN0X3VwZGF0ZV90aW1lc3RhbXAYByACKAMSNgoFZXh0cmEYCCADKAsyJy5lbnRpdGllcy5SZWNlbnRWaXNpdEFwcEluZm8uRXh0cmFFbnRyeRorCglOYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARosCgpFeHRyYUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiXwoXQ3VzdG9tTmF2aWdhdGlvbkFwcExvZ28SDwoHY29udGVudBgBIAEoCRIzCgR0eXBlGAIgASgOMiUuZW50aXRpZXMuQ3VzdG9tTmF2aWdhdGlvbkFwcExvZ29UeXBlIj8KD05hdmlnYXRpb25HdWlkZRIXCg9jb2xsZWN0X2FwcF9pZHMYASADKAkSEwoLcGluX2FwcF9pZHMYAiADKAki5QMKEk9uY2FsbEdyb3VwQ2hhdHRlchIoCgxncm91cF9hdmF0YXIYASABKAsyEi5lbnRpdGllcy5JbWFnZVNldBI8Cg5ncm91cF9pMThuX2luZhgCIAEoCzIkLmVudGl0aWVzLk9uY2FsbEdyb3VwQ2hhdHRlci5JMThuSW5mEhMKC25hbWVfcGlueWluGAMgASgJEhQKDGlzX2Fub255bW91cxgEIAEoCBIlCgxpbWFnZV9hdmF0YXIYBSABKAsyDy5lbnRpdGllcy5JbWFnZRqUAgoHSTE4bkluZhJHCgppMThuX25hbWVzGAEgAygLMjMuZW50aXRpZXMuT25jYWxsR3JvdXBDaGF0dGVyLkkxOG5JbmYuSTE4bk5hbWVzRW50cnkSVQoRaTE4bl9kZXNjcmlwdGlvbnMYAiADKAsyOi5lbnRpdGllcy5PbmNhbGxHcm91cENoYXR0ZXIuSTE4bkluZi5JMThuRGVzY3JpcHRpb25zRW50cnkaMAoOSTE4bk5hbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVJMThuRGVzY3JpcHRpb25zRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI0ChNUZW5hbnRTaW5nbGVQcm9kdWN0Eh0KFXRlbmFudF9zaW5nbGVfcHJvZHVjdBgBIAEoBSKiAgoKVG9waWNHcm91cBIiCgJpZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBI2Cgx1c2VyX3NldHRpbmcYAiABKAsyIC5lbnRpdGllcy5Ub3BpY0dyb3VwLlVzZXJTZXR0aW5nEgwKBHR5cGUYAyABKAUaawoLVXNlclNldHRpbmcSEwoLaXNfZmF2b3JpdGUYASABKAgSEwoLdXBkYXRlX3RpbWUYAiABKAMSMgoQdG9waWNfZ3JvdXBfcm9sZRgDIAEoDjIYLmVudGl0aWVzLlRvcGljR3JvdXBSb2xlIj0KBFR5cGUSEAoMVU5LTk9XTl9UWVBFEAASCgoGTk9STUFMEAESCwoHREVGQVVMVBACEgoKBlBVQkxJQxADIusBChBNYWlsR3JvdXBTZXR0aW5nElEKD3NlbmRfcGVybWlzc2lvbhgBIAEoDjIpLmVudGl0aWVzLk1haWxHcm91cFNldHRpbmcuU2VuZFBlcm1pc3Npb246DUdST1VQX01FTUJFUlMSHgoQZW5hYmxlX21haWxfc2VuZBgCIAEoCDoEdHJ1ZSJkCg5TZW5kUGVybWlzc2lvbhILCgdVTktOT1dOEAASDwoLR1JPVVBfQURNSU4QARIRCg1HUk9VUF9NRU1CRVJTEAISGAoUT1JHQU5JWkFUSU9OX01FTUJFUlMQAxIHCgNBTEwQBCKIAQoYQ2FsZW5kYXJTY2hlbWFDb2xsZWN0aW9uEi4KDmVudGl0eV9zY2hlbWFzGAEgAygLMhYuZW50aXRpZXMuRW50aXR5U2NoZW1hEjwKDWNvbXBhdGliaWxpdHkYAiABKAsyJS5lbnRpdGllcy5DYWxlbmRhclNjaGVtYUNvbXBhdGliaWxpdHki2QEKDEVudGl0eVNjaGVtYRITCgt1bmlxdWVfbmFtZRgBIAEoCRI0Cgh1aV9sZXZlbBgCIAEoDjIiLmVudGl0aWVzLkVudGl0eVNjaGVtYS5JdGVtVUlMZXZlbBIQCghhcHBfbGluaxgDIAEoCRI3ChJpbmNvbXBhdGlibGVfbGV2ZWwYBCABKA4yGy5lbnRpdGllcy5JbmNvbXBhdGlibGVMZXZlbCIzCgtJdGVtVUlMZXZlbBIICgRISURFEAESDAoIUkVBRE9OTFkQAhIMCghFRElUQUJMRRADInkKG0NhbGVuZGFyU2NoZW1hQ29tcGF0aWJpbGl0eRIhChltaW5pbXVtX2NvbXBhdGliaWxpdHlfdmVyGAEgASgFEjcKEmluY29tcGF0aWJsZV9sZXZlbBgCIAEoDjIbLmVudGl0aWVzLkluY29tcGF0aWJsZUxldmVsIpoBCgtQZW5kaW5nVXNlchIRCgl1c2VyX25hbWUYASABKAkSEAoIdXNlcl9lbnYYAiABKAkSEQoJdGVuYW50X2lkGAMgASgDEhMKC3RlbmFudF9uYW1lGAQgASgJEhcKD3RlbmFudF9pY29uX3VybBgFIAEoCRIRCgl1c2VyX3VuaXQYBiABKAkSEgoKdXNlcl9icmFuZBgHIAEoCSKOBAoKQXZhdGFyTWV0YRInCgR0eXBlGAEgASgOMhkuZW50aXRpZXMuQXZhdGFyTWV0YS5UeXBlEg0KBWNvbG9yGAIgASgFEgwKBHRleHQYAyABKAkSFAoMYm9yZGVyX2NvbG9yGAUgASgFEhgKEGJhY2tncm91bmRfY29sb3IYByABKAUSFAoMY2VudGVyX2NvbG9yGAggASgFEhMKC3N0YXJ0X2NvbG9yGAkgASgFEhEKCWVuZF9jb2xvchgKIAEoBRI4CgpzdHlsZV90eXBlGAsgASgOMiQuZW50aXRpZXMuQXZhdGFyTWV0YS5BdmF0YXJTdHlsZVR5cGUSNgoMY29sbGFnZV9kYXRhGAwgAygLMiAuZW50aXRpZXMuQXZhdGFyTWV0YS5Db2xsYWdlRGF0YRIlCglyaWNoX3RleHQYDSABKAsyEi5lbnRpdGllcy5SaWNoVGV4dBoyCgtDb2xsYWdlRGF0YRIPCgd1c2VyX2lkGAEgASgDEhIKCmF2YXRhcl9rZXkYAiABKAkiQwoEVHlwZRILCgdVTktOT1dOEAASCgoGUkFORE9NEAESCQoFV09SRFMQAhIKCgZVUExPQUQQAxILCgdDT0xMQUdFEAQiOgoPQXZhdGFyU3R5bGVUeXBlEhEKDVVOS05PV05fU1RZTEUQABIICgRGSUxMEAESCgoGQk9SREVSEAIiqAEKC1NpZGViYXJJbmZvEisKDHNpZGViYXJfdHlwZRgBIAEoDjIVLmVudGl0aWVzLlNpZGViYXJUeXBlEhQKDHNpZGViYXJfaWNvbhgCIAEoCRIUCgxzaWRlYmFyX2xpbmsYAyABKAkSFgoOc2lkZWJhcl9pc3Nob3cYBCABKAgSKAoMc2lkZWJhcl90ZXh0GAUgASgLMhIuZW50aXRpZXMuSTE4blRleHQiZAoMU2ltcGxlTWVtYmVyEhwKFGF0dGVuZGVlX2NhbGVuZGFyX2lkGAEgASgJEjYKBnN0YXR1cxgCIAEoDjImLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRlbmRlZS5TdGF0dXMiOAoNU2ltcGxlTWVtYmVycxInCgdtZW1iZXJzGAEgAygLMhYuZW50aXRpZXMuU2ltcGxlTWVtYmVyIukBChFFdmVudEF0dGVuZGVlSW5mbxIQCgh0b3RhbF9ubxgBIAEoBRIRCglhY2NlcHRfbm8YAiABKAUSEgoKZGVjbGluZV9ubxgDIAEoBRIUCgx0ZW50YXRpdmVfbm8YBCABKAUSFgoObmVlZF9hY3Rpb25fbm8YBSABKAUSLwoOZXZlbnRfY3JlYXRvcnMYBiABKAsyFy5lbnRpdGllcy5FdmVudENyZWF0b3JzEh8KF2FsbF9pbmRpdmlkdWFsX2F0dGVuZGVlGAcgASgIEhsKE3NuYXBzaG90X3BhZ2VfdG9rZW4YCCABKAkiqQEKDUV2ZW50Q3JlYXRvcnMSMgoJb3JnYW5pemVyGAEgASgLMh8uZW50aXRpZXMuQ2FsZW5kYXJFdmVudEF0dGVuZGVlEjAKB2NyZWF0b3IYAiABKAsyHy5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWUSMgoJc3VjY2Vzc29yGAMgASgLMh8uZW50aXRpZXMuQ2FsZW5kYXJFdmVudEF0dGVuZGVlIrEGCg5BdHRlbmRlZUNvbW1pdBI5CghjYXRlZ29yeRgBIAEoDjIhLmVudGl0aWVzLkF0dGVuZGVlQ29tbWl0LkNhdGVnb3J5OgRVU0VSEh8KFGF0dGVuZGVlX2NhbGVuZGFyX2lkGAIgASgJOgEwEhcKD2F0dGVuZGVlX3NjaGVtYRgDIAEoDBIZChFzY2hlbWFfZXh0cmFfZGF0YRgEIAEoDBJECgZzdGF0dXMYBSABKA4yJi5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWUuU3RhdHVzOgxORUVEU19BQ1RJT04SLQoEdXNlchhkIAEoCzIdLmVudGl0aWVzLkF0dGVuZGVlQ29tbWl0LlVzZXJIABIvCgVncm91cBhlIAEoCzIeLmVudGl0aWVzLkF0dGVuZGVlQ29tbWl0Lkdyb3VwSAASNQoIcmVzb3VyY2UYZiABKAsyIS5lbnRpdGllcy5BdHRlbmRlZUNvbW1pdC5SZXNvdXJjZUgAEkMKEHRoaXJkX3BhcnR5X3VzZXIYZyABKAsyJy5lbnRpdGllcy5BdHRlbmRlZUNvbW1pdC5UaGlyZFBhcnR5VXNlckgAEjgKCnBob25lX3VzZXIYaCABKAsyIi5lbnRpdGllcy5BdHRlbmRlZUNvbW1pdC5QaG9uZVVzZXJIABosCgRVc2VyEhMKC2lzX29wdGlvbmFsGAEgASgIEg8KB3VzZXJfaWQYAiABKAkaNAoFR3JvdXASEAoIZ3JvdXBfaWQYASABKAkSGQoRcmVqZWN0ZWRfdXNlcl9pZHMYBCADKAMaCgoIUmVzb3VyY2UaNAoOVGhpcmRQYXJ0eVVzZXISDQoFZW1haWwYASABKAkSEwoLaXNfb3B0aW9uYWwYAiABKAgaLwoJUGhvbmVVc2VyEg0KBXBob25lGAEgASgJEhMKC2lzX29wdGlvbmFsGAIgASgIIk4KCENhdGVnb3J5EggKBFVTRVIQARIJCgVHUk9VUBACEgwKCFJFU09VUkNFEAMSFAoQVEhJUkRfUEFSVFlfVVNFUhAEEgkKBVBIT05FEAVCDAoKZGVwZW5kZW5jeSLGAQoPQXR0ZW5kZWVDb21taXRzEjEKD2FkZGVkX2F0dGVuZGVlcxgBIAMoCzIYLmVudGl0aWVzLkF0dGVuZGVlQ29tbWl0EjMKEXVwZGF0ZWRfYXR0ZW5kZWVzGAIgAygLMhguZW50aXRpZXMuQXR0ZW5kZWVDb21taXQSMAoocmVtb3ZlZF9pbmRpdmlkdWFsX2F0dGVuZGVlX2NhbGVuZGFyX2lkcxgDIAMoCRIZChFyZW1vdmVkX2dyb3VwX2lkcxgEIAMoCSKEAQoURXZlbnRBdHRlbmRlZUNvbW1pdHMSEwoLY2FsZW5kYXJfaWQYASACKAkSCwoDa2V5GAIgAigJEhUKDW9yaWdpbmFsX3RpbWUYAyACKAMSMwoQYXR0ZW5kZWVfY29tbWl0cxgEIAEoCzIZLmVudGl0aWVzLkF0dGVuZGVlQ29tbWl0cyKdAwoIVXNlckluZm8SFgoKYXZhdGFyX2tleRgBIAEoCUICGAESEQoJdXNlcl9uYW1lGAIgASgJEg8KB25hbWVfcHkYAyABKAkSEwoLdGVuYW50X25hbWUYBCABKAkSJQodbGFzdF9zZXZlbl9kYXlfb25saW5lX21pbnV0ZXMYBSABKAUSDwoHdXNlcl9pZBgGIAEoCRIRCgl0ZW5hbnRfaWQYByABKAkSDQoFYWxpYXMYCCABKAkSEwoLZGVzY3JpcHRpb24YCSABKAkSDgoGc3RhdHVzGAogASgFEhUKDXNlYXJjaF9lbmFibGUYCyABKAgSJQoMYXZhdGFyX2ltYWdlGAwgASgLMg8uZW50aXRpZXMuSW1hZ2USEgoKYWdyZWVfdGltZRgNIAEoAxI2ChJ0ZW5hbnRfbmFtZV9zdGF0dXMYDiABKA4yGi5lbnRpdGllcy5UZW5hbnROYW1lU3RhdHVzEjcKEmNlcnRpZmljYXRpb25faW5mbxgPIAEoCzIbLmVudGl0aWVzLkNlcnRpZmljYXRpb25JbmZvIoABCgtDb250YWN0SW5mbxIlCgl1c2VyX2luZm8YASACKAsyEi5lbnRpdGllcy5Vc2VySW5mbxImCgJvcBgCIAEoDjIaLmVudGl0aWVzLkNvbnRhY3RPcGVyYXRpb24SIgoHY2hhdHRlchgDIAEoCzIRLmVudGl0aWVzLkNoYXR0ZXIiQgoRTWVldGluZ1Jvb21GaWx0ZXISFAoMbWluX2NhcGFjaXR5GAEgASgFEhcKD25lZWRfZXF1aXBtZW50cxgCIAMoCSJEChZNZWV0aW5nUm9vbUZsb29yRmlsdGVyEhMKC2J1aWxkaW5nX2lkGAEgASgJEhUKDW5lZWRlZF9mbG9vcnMYAiADKAkioAEKCUVxdWlwbWVudBIUCgxkZWZhdWx0X25hbWUYASABKAkSNAoJaTE4bl9uYW1lGAIgAygLMiEuZW50aXRpZXMuRXF1aXBtZW50LkkxOG5OYW1lRW50cnkSFgoOZXF1aXBtZW50X3R5cGUYAyABKAkaLwoNSTE4bk5hbWVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpUBChRVbml2ZXJzYWxVc2VyU2V0dGluZxILCgNrZXkYASACKAkSEgoKaXNfZGVmYXVsdBgCIAEoCBITCglpbnRfdmFsdWUYAyABKANIABITCglzdHJfdmFsdWUYBCABKAlIABIUCgpib29sX3ZhbHVlGAUgASgISAASEwoLdXBkYXRlX3RpbWUYFSABKANCBwoFdmFsdWUikwQKEkdlbmVyYWxVc2VyU2V0dGluZxItCgNrZXkYASACKA4yIC5lbnRpdGllcy5HZW5lcmFsVXNlclNldHRpbmcuS2V5EhMKC3VwZGF0ZV90aW1lGAIgASgDEhMKCXN0cl92YWx1ZRgDIAEoCUgAEhQKCmJvb2xfdmFsdWUYBCABKAhIABJoCiFleHRlcm5hbF9kaXNwbGF5X3RpbWV6b25lX3NldHRpbmcYBSABKAsyOy5lbnRpdGllcy5HZW5lcmFsVXNlclNldHRpbmcuRXh0ZXJuYWxEaXNwbGF5VGltZVpvbmVTZXR0aW5nSAAa3wEKHkV4dGVybmFsRGlzcGxheVRpbWVab25lU2V0dGluZxJuChV0aW1lem9uZV9zZXR0aW5nX3R5cGUYASABKA4yTy5lbnRpdGllcy5HZW5lcmFsVXNlclNldHRpbmcuRXh0ZXJuYWxEaXNwbGF5VGltZVpvbmVTZXR0aW5nLlRpbWV6b25lU2V0dGluZ1R5cGUiTQoTVGltZXpvbmVTZXR0aW5nVHlwZRILCgdVTktOT1dOEAASEQoNRk9MTE9XX1NZU1RFTRABEgoKBkNVU1RPTRACEgoKBkhJRERFThADIjkKA0tleRILCgdVTktOT1dOEAASJQohRVhURVJOQUxfRElTUExBWV9USU1FWk9ORV9TRVRUSU5HEAFCBwoFdmFsdWUi4gMKEFN1YnNjcmlwdGlvbkZlZWQSCgoCaWQYASACKAMSMgoEbmFtZRgCIAMoCzIkLmVudGl0aWVzLlN1YnNjcmlwdGlvbkZlZWQuTmFtZUVudHJ5EhIKBmF2YXRhchgDIAEoCUICGAESOAoHc3VtbWFyeRgEIAMoCzInLmVudGl0aWVzLlN1YnNjcmlwdGlvbkZlZWQuU3VtbWFyeUVudHJ5EhEKCWlzX25vdGlmeRgFIAEoCBINCgViYWRnZRgGIAEoBRI2CgZzY2hlbWEYByADKAsyJi5lbnRpdGllcy5TdWJzY3JpcHRpb25GZWVkLlNjaGVtYUVudHJ5EgwKBGJvZHkYCCABKAkSFAoMZGlzcGxheV90aW1lGAkgASgDEg8KB3ZlcnNpb24YCiABKAMSJQoMYXZhdGFyX2ltYWdlGAsgASgLMg8uZW50aXRpZXMuSW1hZ2UaKwoJTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaLgoMU3VtbWFyeUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaLQoLU2NoZW1hRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASL5BAoTU3Vic2NyaXB0aW9uc0RpYWxvZxIKCgJpZBgBIAIoAxI1CgRuYW1lGAIgAygLMicuZW50aXRpZXMuU3Vic2NyaXB0aW9uc0RpYWxvZy5OYW1lRW50cnkSJQoMYXZhdGFyX2ltYWdlGAMgAigLMg8uZW50aXRpZXMuSW1hZ2USNwoFdGl0bGUYBCADKAsyKC5lbnRpdGllcy5TdWJzY3JpcHRpb25zRGlhbG9nLlRpdGxlRW50cnkSOwoHY29udGVudBgFIAMoCzIqLmVudGl0aWVzLlN1YnNjcmlwdGlvbnNEaWFsb2cuQ29udGVudEVudHJ5EkIKC2J1dHRvbl90ZXh0GAYgAygLMi0uZW50aXRpZXMuU3Vic2NyaXB0aW9uc0RpYWxvZy5CdXR0b25UZXh0RW50cnkSEwoLYnV0dG9uX2xpbmsYByACKAkSFAoMaXNfY29uZmlybWVkGAggAigIEhAKCGNsb3NhYmxlGAkgAigIEhQKDHJlY2VpdmVfdGltZRgKIAIoAxIUCgxjb25maXJtX3RpbWUYCyACKAMSFwoPYnV0dG9uX2FwcF9saW5rGAwgAigJGisKCU5hbWVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGiwKClRpdGxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARouCgxDb250ZW50RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARoxCg9CdXR0b25UZXh0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLBAwofQ3J5cHRvTWVzc2FnZU1pc3NpbmdEZXZpY2VzSW5mbxISCgptZXNzYWdlX2lkGAEgASgJElsKEmNyeXB0b19kZXZpY2VfaW5mbxgCIAMoCzI/LmVudGl0aWVzLkNyeXB0b01lc3NhZ2VNaXNzaW5nRGV2aWNlc0luZm8uQ3J5cHRvRGV2aWNlSW5mb0VudHJ5GrcBChBDcnlwdG9EZXZpY2VJbmZvEloKC2RldmljZV9pbmZvGAEgAygLMkUuZW50aXRpZXMuQ3J5cHRvTWVzc2FnZU1pc3NpbmdEZXZpY2VzSW5mby5DcnlwdG9EZXZpY2VJbmZvLkRldmljZUluZm8aRwoKRGV2aWNlSW5mbxIQCghkZXZpY2VJZBgBIAEoCRITCgtjcmVhdGVfdGltZRgCIAEoAxISCgpwdWJsaWNfa2V5GAMgASgMGnMKFUNyeXB0b0RldmljZUluZm9FbnRyeRILCgNrZXkYASABKAkSSQoFdmFsdWUYAiABKAsyOi5lbnRpdGllcy5DcnlwdG9NZXNzYWdlTWlzc2luZ0RldmljZXNJbmZvLkNyeXB0b0RldmljZUluZm86AjgBIrsCCiBDcnlwdG9NZXNzYWdlRmFsbGJhY2tVc2VyQ29udGVudBJKCghjb250ZW50cxgBIAMoCzI4LmVudGl0aWVzLkNyeXB0b01lc3NhZ2VGYWxsYmFja1VzZXJDb250ZW50LkNvbnRlbnRzRW50cnkaXgoPRmFsbGJhY2tDb250ZW50Eg8KB2NvbnRlbnQYASABKAwSDQoFbm9uY2UYAiABKAwSFwoPYWRkaXRpb25hbF9kYXRhGAMgASgMEhIKCnB1YmxpY19rZXkYBCABKAwaawoNQ29udGVudHNFbnRyeRILCgNrZXkYASABKAkSSQoFdmFsdWUYAiABKAsyOi5lbnRpdGllcy5DcnlwdG9NZXNzYWdlRmFsbGJhY2tVc2VyQ29udGVudC5GYWxsYmFja0NvbnRlbnQ6AjgBIroCCgRUZWFtEgoKAmlkGAEgASgDEgwKBG5hbWUYAiABKAkSJAoGc3RhdHVzGAMgASgOMhQuZW50aXRpZXMuVGVhbVN0YXR1cxIQCghvd25lcl9pZBgEIAEoAxIUCgxtZW1iZXJfY291bnQYBSABKAUSFwoPZGVmYXVsdF9jaGF0X2lkGAYgASgDEhMKC2Rlc2NyaXB0aW9uGAcgASgJEh8KBmF2YXRhchgIIAEoCzIPLmVudGl0aWVzLkltYWdlEhMKC2NyZWF0ZV90aW1lGBQgASgDEg8KB3ZlcnNpb24YFSABKAMSJgoHc2V0dGluZxhkIAEoCzIVLmVudGl0aWVzLlRlYW1TZXR0aW5nEi0KC3VzZXJfZW50aXR5GGUgASgLMhguZW50aXRpZXMuVGVhbVVzZXJFbnRpdHkiuQEKDFRlYW1CYXNlSW5mbxIMCgRuYW1lGAEgASgJEiQKBnN0YXR1cxgCIAEoDjIULmVudGl0aWVzLlRlYW1TdGF0dXMSEAoIb3duZXJfaWQYAyABKAMSFAoMbWVtYmVyX2NvdW50GAQgASgFEhcKD2RlZmF1bHRfY2hhdF9pZBgFIAEoAxITCgtkZXNjcmlwdGlvbhgGIAEoCRIfCgZhdmF0YXIYByABKAsyDy5lbnRpdGllcy5JbWFnZSJpCghUZWFtUm9sZRIuCglyb2xlX3R5cGUYASABKA4yGy5lbnRpdGllcy5UZWFtUm9sZS5Sb2xlVHlwZSItCghSb2xlVHlwZRILCgdVTktOT1dOEAASCQoFT1dORVIQARIJCgVBRE1JThACIqcBCg5UZWFtVXNlckVudGl0eRIwCgl1c2VyX3JvbGUYASABKA4yHS5lbnRpdGllcy5UZWFtVXNlckVudGl0eS5Sb2xlEiYKCnVzZXJfcm9sZXMYAiADKAsyEi5lbnRpdGllcy5UZWFtUm9sZRIPCgd2ZXJzaW9uGGQgASgDIioKBFJvbGUSCwoHVU5LTk9XThAAEgoKBk1FTUJFUhABEgkKBU9XTkVSEAIiuAkKC1RlYW1TZXR0aW5nEkwKFWFkZF9tZW1iZXJfcGVybWlzc2lvbhgBIAEoDjItLmVudGl0aWVzLlRlYW1TZXR0aW5nLkFkZE1lbWJlclBlcm1pc3Npb25FbnVtElcKG2NyZWF0ZV90ZWFtX2NoYXRfcGVybWlzc2lvbhgCIAEoDjIyLmVudGl0aWVzLlRlYW1TZXR0aW5nLkNyZWF0ZVRlYW1DaGF0UGVybWlzc2lvbkVudW0SUwoZYmluZF90ZWFtX2NoYXRfcGVybWlzc2lvbhgDIAEoDjIwLmVudGl0aWVzLlRlYW1TZXR0aW5nLkJpbmRUZWFtQ2hhdFBlcm1pc3Npb25FbnVtElEKGGFkZF90ZWFtX2NoYXRfcGVybWlzc2lvbhgEIAEoDjIvLmVudGl0aWVzLlRlYW1TZXR0aW5nLkFkZFRlYW1DaGF0UGVybWlzc2lvbkVudW0SYAogYWRkX3ByaXZhdGVfdGVhbV9jaGF0X3Blcm1pc3Npb24YBSABKA4yNi5lbnRpdGllcy5UZWFtU2V0dGluZy5BZGRQcml2YXRlVGVhbUNoYXRQZXJtaXNzaW9uRW51bSKJAQoXQWRkTWVtYmVyUGVybWlzc2lvbkVudW0SIQodQUREX01FTUJFUl9QRVJNSVNTSU9OX1VOS05PV04QABIlCiFBRERfTUVNQkVSX1BFUk1JU1NJT05fQUxMX01FTUJFUlMQARIkCiBBRERfTUVNQkVSX1BFUk1JU1NJT05fT05MWV9PV05FUhACIqABChxDcmVhdGVUZWFtQ2hhdFBlcm1pc3Npb25FbnVtEicKI0NSRUFURV9URUFNX0NIQVRfUEVSTUlTU0lPTl9VTktOT1dOEAASKwonQ1JFQVRFX1RFQU1fQ0hBVF9QRVJNSVNTSU9OX0FMTF9NRU1CRVJTEAESKgomQ1JFQVRFX1RFQU1fQ0hBVF9QRVJNSVNTSU9OX09OTFlfT1dORVIQAiKYAQoaQmluZFRlYW1DaGF0UGVybWlzc2lvbkVudW0SJQohQklORF9URUFNX0NIQVRfUEVSTUlTU0lPTl9VTktOT1dOEAASKQolQklORF9URUFNX0NIQVRfUEVSTUlTU0lPTl9BTExfTUVNQkVSUxABEigKJEJJTkRfVEVBTV9DSEFUX1BFUk1JU1NJT05fT05MWV9PV05FUhACIpYBChlBZGRUZWFtQ2hhdFBlcm1pc3Npb25FbnVtEiQKIEFERF9URUFNX0NIQVRfUEVSTUlTU0lPTl9VTktOT1dOEAASKAokQUREX1RFQU1fQ0hBVF9QRVJNSVNTSU9OX0FMTF9NRU1CRVJTEAESKQolQUREX1RFQU1fQ0hBVF9QRVJNSVNTSU9OX09OTFlfTUFOQUdFUhACIpQBCiBBZGRQcml2YXRlVGVhbUNoYXRQZXJtaXNzaW9uRW51bRIhCh1BRERfUFJJVkFURV9URUFNX0NIQVRfVU5LTk9XThAAEiUKIUFERF9QUklWQVRFX1RFQU1fQ0hBVF9BTExfTUVNQkVSUxABEiYKIkFERF9QUklWQVRFX1RFQU1fQ0hBVF9PTkxZX01BTkFHRVIQAiI4Cg5UZWFtTWVtYmVyTWV0YRImCgp1c2VyX3JvbGVzGAEgAygLMhIuZW50aXRpZXMuVGVhbVJvbGUiTgoSVGVhbU1lbWJlckNoYXRJbmZvEg8KB2NoYXRfaWQYASABKAMSDQoFY291bnQYAiABKAUSGAoQb3BlcmF0b3JfaW5fY2hhdBgDIAEoCCJmChJUZWFtTWVtYmVyVXNlckluZm8SDwoHdXNlcl9pZBgBIAEoAxImCgp1c2VyX3JvbGVzGAIgAygLMhIuZW50aXRpZXMuVGVhbVJvbGUSFwoPam9pbmVkX2NoYXRfaWRzGAMgAygDIvoBCg5UZWFtTWVtYmVySW5mbxIRCgltZW1iZXJfaWQYASABKAMSNAoJbWV0YV90eXBlGAIgASgOMiEuZW50aXRpZXMuVGVhbU1lbWJlckluZm8uTWV0YVR5cGUSLwoJY2hhdF9pbmZvGAMgASgLMhwuZW50aXRpZXMuVGVhbU1lbWJlckNoYXRJbmZvEiYKBG1ldGEYBCABKAsyGC5lbnRpdGllcy5UZWFtTWVtYmVyTWV0YRIWCg5vcmRlcmVkX3dlaWdodBgFIAEoAyIuCghNZXRhVHlwZRILCgdVTktOT1dOEAASCwoHQ0hBVFRFUhABEggKBENIQVQQAiK8AgoESXRlbRIKCgJpZBgBIAEoAxIRCgllbnRpdHlfaWQYAiABKAkSLgoLZW50aXR5X3R5cGUYAyABKA4yGS5lbnRpdGllcy5JdGVtLkVudGl0eVR5cGUSEQoJcGFyZW50X2lkGAQgASgDEhQKDG9yZGVyX3dlaWdodBgFIAEoAxIPCgd2ZXJzaW9uGAYgASgDEhEKCWlzX2hpZGRlbhgHIAEoCBIlCgZzdGF0dXMYCCABKA4yFS5lbnRpdGllcy5JdGVtLlN0YXR1cyItCgpFbnRpdHlUeXBlEgsKB1VOS05PV04QABIICgRDSEFUEAESCAoEVEVBTRACIkIKBlN0YXR1cxISCg5TVEFUVVNfVU5LTk9XThAAEhEKDVNUQVRVU19BQ1RJVkUQARIRCg1TVEFUVVNfREVMRVRFEAIiwAEKCVRlYW1FdmVudBIQCgh0ZW1wbGF0ZRgBIAEoCRI3Cgp0ZW1wbGF0ZUt2GAIgAygLMiMuZW50aXRpZXMuVGVhbUV2ZW50LlRlbXBsYXRlS3ZFbnRyeRITCgtjcmVhdGVfdGltZRgDIAEoAxpTCg9UZW1wbGF0ZUt2RW50cnkSCwoDa2V5GAEgASgJEi8KBXZhbHVlGAIgASgLMiAuZW50aXRpZXMuVGVhbUV2ZW50VGVtcGxhdGVWYWx1ZToCOAEiwQMKFlRlYW1FdmVudFRlbXBsYXRlVmFsdWUSNAoFaXRlbXMYASADKAsyJS5lbnRpdGllcy5UZWFtRXZlbnRUZW1wbGF0ZVZhbHVlLkl0ZW0SFAoMaXRlbXNfam9pbmVyGAIgASgJGtoCCgRJdGVtEjgKBHR5cGUYASABKA4yKi5lbnRpdGllcy5UZWFtRXZlbnRUZW1wbGF0ZVZhbHVlLkl0ZW0uVHlwZRIKCgJpZBgCIAEoAxIMCgR0ZXh0GAMgASgJEkEKCWNoYXRfaW5mbxgEIAEoCzIuLmVudGl0aWVzLlRlYW1FdmVudFRlbXBsYXRlVmFsdWUuSXRlbS5DaGF0SW5mbxp+CghDaGF0SW5mbxIYChBvcGVyYXRvcl9pbl9jaGF0GAEgASgIEhkKEWlzX3RlYW1fb3Blbl9jaGF0GAIgASgIEioKCWNoYXRfbW9kZRgDIAEoDjIXLmVudGl0aWVzLkNoYXQuQ2hhdE1vZGUSEQoJaXNfY3J5cHRvGAQgASgIIjsKBFR5cGUSCwoHVU5LTk9XThAAEggKBFRFWFQQARIICgRVU0VSEAISCAoEQ0hBVBADEggKBFRFQU0QBCI8ChJDYWxlbmRhclRlbmFudEluZm8SEQoJdGVuYW50X2lkGAEgASgJEhMKC3RlbmFudF9uYW1lGAIgASgJIpYFCgxIb25nYmFvQ292ZXISCgoCaWQYASABKAMSDAoEbmFtZRgCIAEoCRI0Cgpjb3Zlcl90eXBlGAMgASgOMiAuZW50aXRpZXMuSG9uZ2Jhb0NvdmVyLkNvdmVyVHlwZRIxCgptYWluX2NvdmVyGAQgASgLMh0uZW50aXRpZXMuSW1hZ2VTZXRQYXNzVGhyb3VnaBI0Cg1tZXNzYWdlX2NvdmVyGAUgASgLMh0uZW50aXRpZXMuSW1hZ2VTZXRQYXNzVGhyb3VnaBIxCgpoZWFkX2NvdmVyGAYgASgLMh0uZW50aXRpZXMuSW1hZ2VTZXRQYXNzVGhyb3VnaBIzCgxjb21wYW55X2xvZ28YByABKAsyHS5lbnRpdGllcy5JbWFnZVNldFBhc3NUaHJvdWdoEjMKDHNlbGVjdF9jb3ZlchgIIAEoCzIdLmVudGl0aWVzLkltYWdlU2V0UGFzc1Rocm91Z2gSOAoMZGlzcGxheV9uYW1lGAkgASgLMiIuZW50aXRpZXMuSG9uZ2Jhb0NvdmVyLkRpc3BsYXlOYW1lEhQKDGNvbXBhbnlfbmFtZRgKIAEoCRqoAQoLRGlzcGxheU5hbWUSNQoOYmFja2dyb3VuZF9pbWcYASABKAsyHS5lbnRpdGllcy5JbWFnZVNldFBhc3NUaHJvdWdoEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIXCg9iZ19ib3JkZXJfd2lkdGgYAyABKAUSMwoMYmdfaW1nX2RvdF85GAQgASgLMh0uZW50aXRpZXMuSW1hZ2VTZXRQYXNzVGhyb3VnaCI1CglDb3ZlclR5cGUSCwoHVU5LTk9XThAAEgwKCFRFTVBMQVRFEAESDQoJQ1VTVE9NSVpFEAIigQIKE0RldmljZVNlY3JldENvbnRlbnQSSgoPZGV2aWNlX2NvbnRlbnRzGAEgAygLMjEuZW50aXRpZXMuRGV2aWNlU2VjcmV0Q29udGVudC5EZXZpY2VDb250ZW50c0VudHJ5GkAKB0NvbnRlbnQSDwoHY29udGVudBgBIAEoDBIUCgxyZWNlaXZlcl9pcGsYAiABKAwSDgoGaGVhZGVyGAMgASgMGlwKE0RldmljZUNvbnRlbnRzRW50cnkSCwoDa2V5GAEgASgJEjQKBXZhbHVlGAIgASgLMiUuZW50aXRpZXMuRGV2aWNlU2VjcmV0Q29udGVudC5Db250ZW50OgI4ASJVCg1EZXZpY2VJcGtJbmZvEg8KB3VzZXJfaWQYASABKAkSEQoJZGV2aWNlX2lkGAIgASgJEhMKC2NyZWF0ZV90aW1lGAMgASgDEgsKA2lwaxgEIAEoDCKZAQoLVXNlcklwa0luZm8SPQoNdXNlcl9pcGtfaW5mbxgBIAMoCzImLmVudGl0aWVzLlVzZXJJcGtJbmZvLlVzZXJJcGtJbmZvRW50cnkaSwoQVXNlcklwa0luZm9FbnRyeRILCgNrZXkYASABKAMSJgoFdmFsdWUYAiABKAsyFy5lbnRpdGllcy5EZXZpY2VJcGtJbmZvOgI4ASJlChpUcmFuc2xhdGVkVXJsUHJldmlld0VudGl0eRISCgpwcmV2aWV3X2lkGAEgAigJEg0KBXRpdGxlGAIgASgJEgsKA3RhZxgDIAEoCRIXCg90YXJnZXRfbGFuZ3VhZ2UYBCACKAkifQoaVHJhbnNsYXRlVXJsUHJldmlld0NvbnRleHQSEgoKcHJldmlld19pZBgBIAIoCRINCgV0aXRsZRgCIAEoCRILCgN0YWcYAyABKAkSFwoPdGFyZ2V0X2xhbmd1YWdlGAQgAigJEhYKDmlzX3Nka19wcmV2aWV3GAUgASgIIr0CChREeW5hbWljRW1vamlSZXNvdXJjZRITCgtzaG93X3dlaWdodBgBIAIoBRIUCgxyZXNvdXJjZV9rZXkYAiACKAkSNQoEdGV4dBgDIAIoCzInLmVudGl0aWVzLkR5bmFtaWNFbW9qaVJlc291cmNlLkkxOE5OYW1lEg8KB2ZzX3VuaXQYBCACKAkSFQoNcmVzb3VyY2VfbmFtZRgFIAIoCRqaAQoISTE4Tk5hbWUSEwoLZGVmYXVsdF92YWwYASACKAkSSAoJaTE4bl92YWxzGAIgAygLMjUuZW50aXRpZXMuRHluYW1pY0Vtb2ppUmVzb3VyY2UuSTE4Tk5hbWUuSTE4blZhbHNFbnRyeRovCg1JMThuVmFsc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEigwEKG01lc3NhZ2VMYXN0VmlzaWJsZUluZm9QYXRjaBISCgp2aXNpYmxlX2lkGAEgASgDEhgKEHZpc2libGVfcG9zaXRpb24YAiABKAUSHQoVcmVtb3ZlZF9sYXN0X3Bvc2l0aW9uGAMgASgFEhcKD3JlbW92ZWRfbGFzdF9pZBgEIAEoAyJsChZNZXNzYWdlTGFzdFZpc2libGVJbmZvEgoKAmlkGAEgAigDEhAKCHBvc2l0aW9uGAIgAigFEjQKBXBhdGNoGAMgASgLMiUuZW50aXRpZXMuTWVzc2FnZUxhc3RWaXNpYmxlSW5mb1BhdGNoIpAECgpUb2RvV2lkZ2V0EgwKBGd1aWQYASABKAkSEQoJYXNzaWduZWVzGAIgAygJEhAKCGR1ZV90aW1lGAMgASgDEhUKDWR1ZV90aW1lX3pvbmUYBCABKAkSEgoKaXNfYWxsX2RheRgFIAEoCBIPCgdzdW1tYXJ5GAYgASgJEhIKCmNyZWF0b3JfaWQYByABKAkSHAoUY29tcGxldGVkX21pbGxpX3RpbWUYCCABKAMSMwoKcGVybWlzc2lvbhgJIAEoCzIfLmVudGl0aWVzLlRvZG9XaWRnZXQuUGVybWlzc2lvbhI0Cgt1c2VyX2RldGFpbBgKIAEoCzIfLmVudGl0aWVzLlRvZG9XaWRnZXQuVXNlckRldGFpbBIxCg9jdXN0b21fY29tcGxldGUYCyABKAsyGC5lbnRpdGllcy5DdXN0b21Db21wbGV0ZRIQCghhcHBfbGluaxgMIAEoCRINCgVycnVsZRgNIAEoCRIsCgplbnRpdHlfbnVtGA4gASgLMhgubnVtX2Jhc2ljLkVudGl0eU51bUluZm8SDAoEbW9kZRgPIAEoBRpCCgpQZXJtaXNzaW9uEhkKEWNhbl9jb21wbGV0ZV9zZWxmGAEgASgIEhkKEWNhbl9jb21wbGV0ZV90b2RvGAIgASgIGiIKClVzZXJEZXRhaWwSFAoMaXNfY29tcGxldGVkGAEgASgIIrsCCgxUb2RvTGlzdFZpZXcSKQoEdHlwZRgBIAEoDjIbLmVudGl0aWVzLlRvZG9MaXN0Vmlldy5UeXBlEhsKE29uZ29pbmdfY2hpbGRfY291bnQYAiABKAUSLwoKcGFyZW50VHlwZRgDIAEoDjIbLmVudGl0aWVzLlRvZG9MaXN0Vmlldy5UeXBlIrEBCgRUeXBlEgsKB1VOS05PV04QABIHCgNBTEwQARISCg5BU1NJR05fRlJPTV9NRRACEhAKDEFTU0lHTl9UT19NRRADEg0KCUNPTVBMRVRFRBAEEgsKB0RFTEVURUQQBRIMCghGT0xMT1dFRBAGEgwKCEZST01fRE9DEAcSEwoPQ1JFQVRFRF9GUk9NX01FEAgSDwoLTk9fRFVFX1RJTUUQCRIPCgtOT19BU1NJR05FRRAKIqADChFUb2RvT3BlcmF0aW9uVHlwZRI4Cg5vcGVyYXRpb25fdHlwZRgBIAEoDjIgLmVudGl0aWVzLlRvZG9PcGVyYXRpb25UeXBlLlR5cGUi0AIKBFR5cGUSCwoHVU5LTk9XThAAEgoKBlVQREFURRABEgoKBkFTU0lHThACEgwKCENPTVBMRVRFEAMSCgoGQ0FOQ0VMEAQSCgoGREVMRVRFEAUSCgoGQ1JFQVRFEAYSDgoKSU5DT01QTEVURRAHEgkKBVNIQVJFEAgSEgoOQ1JFQVRFX0NPTU1FTlQQCRIRCg1SRVBMWV9DT01NRU5UEAoSEAoMREFJTFlfUkVNSU5EEAsSCgoGRk9MTE9XEAwSDAoIVU5GT0xMT1cQDRIRCg1SRUFDVF9DT01NRU5UEA4SFQoRQ09NUExFVEVfQVNTSUdORUUQDxIRCg1DT01QTEVURV9TRUxGEBASFAoQUkVTVE9SRV9BU1NJR05FRRAREhAKDFJFU1RPUkVfU0VMRhASEgwKCFVOREVMRVRFEBMSEAoMQVNTSUdOX09XTkVSEBQivQEKFUZlZWRDYXJkQmFkZ2VJZGVudGl0eRIPCgdmZWVkX2lkGAEgASgJEiUKBHR5cGUYAiABKA4yFy5lbnRpdGllcy5GZWVkQ2FyZC5UeXBlEhUKDXJlYWRfcG9zaXRpb24YAyABKAUSHAoOaGFzX2Jpel91bnJlYWQYBCABKAg6BHRydWUSFwoPaGFzX2ZlZWRfdW5yZWFkGAUgASgIEh4KFmhhc19jaGF0X2NoYXR0ZXJfYXBwbHkYBiABKAgimgIKFk1lc3NhZ2VPcGVyYXRpb25Db25maWcSHQoVcmVjYWxsX2VmZmVjdGl2ZV90aW1lGAEgASgDEhsKE2VkaXRfZWZmZWN0aXZlX3RpbWUYAiABKAMSGwoTaW5wdXRfYm94X3BsYWNlaG9sZBgDIAEoCRIjChtpc19zdXBwb3J0X3Jlc3RyaWN0X21lc3NhZ2UYBCABKAgigQEKBFR5cGUSCwoHVU5LTk9XThAAEhkKFVJFQ0FMTF9FRkZFQ1RJVkVfVElNRRABEhcKE0VESVRfRUZGRUNUSVZFX1RJTUUQAhIXChNJTlBVVF9CT1hfUExBQ0VIT0xEEAMSHwobSVNfU1VQUE9SVF9SRVNUUklDVF9NRVNTQUdFEAQi7wEKD1NjaGVkdWxlTWVzc2FnZRISCgptZXNzYWdlX2lkGAEgAigJEisKEHNjaGVkdWxlX21lc3NhZ2UYAiABKAsyES5lbnRpdGllcy5NZXNzYWdlEhUKDXNjaGVkdWxlX3RpbWUYAyABKAMSMAoGc3RhdHVzGAQgASgOMiAuZW50aXRpZXMuU2NoZWR1bGVNZXNzYWdlLlN0YXR1cyJSCgZTdGF0dXMSCwoHVU5LTk9XThAAEgsKB1BFTkRJTkcQARILCgdTVVNQRU5EEAISCwoHU1VDQ0VTUxADEggKBEZBSUwQBBIKCgZERUxFVEUQBSLZAgoPRGlzcGxheUZlZWRSdWxlEkAKCW1haW5fcnVsZRgBIAEoDjItLmVudGl0aWVzLkRpc3BsYXlGZWVkUnVsZS5EaXNwbGF5RmVlZE1haW5SdWxlEj8KCW1zZ190eXBlcxgCIAMoDjIsLmVudGl0aWVzLkRpc3BsYXlGZWVkUnVsZS5EaXNwbGF5RmVlZE1zZ1R5cGUiaAoTRGlzcGxheUZlZWRNYWluUnVsZRIQCgxVTktOT1dOX1JVTEUQABISCg5BTFdBWVNfRElTUExBWRABEhgKFERJU1BMQVlfV0hFTl9ORVdfTVNHEAISEQoNTkVWRVJfRElTUExBWRADIlkKEkRpc3BsYXlGZWVkTXNnVHlwZRIQCgxVTktOT1dOX1RZUEUQABIHCgNBTEwQARIJCgVBVF9NRRACEgoKBkFUX0FMTBADEhEKDVNUQVJfQ09OVEFDVFMQBCKoAwoKQnV0dG9uSXRlbRIKCgJpZBgBIAIoAxIjCgppY29uX2ltYWdlGAIgASgLMg8uZW50aXRpZXMuSW1hZ2USDQoFdGl0bGUYAyABKAkSNwoKaTE4bl90aXRsZRgEIAMoCzIjLmVudGl0aWVzLkJ1dHRvbkl0ZW0uSTE4blRpdGxlRW50cnkSOgoNcmVkaXJlY3RfbGluaxhkIAEoCzIhLmVudGl0aWVzLkJ1dHRvbkl0ZW0uUmVkaXJlY3RMaW5rSAASMgoJY2FsbF9iYWNrGGUgASgLMh0uZW50aXRpZXMuQnV0dG9uSXRlbS5DYWxsQmFja0gAGjAKDkkxOG5UaXRsZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaaQoMUmVkaXJlY3RMaW5rEhIKCmNvbW1vbl91cmwYASABKAkSDwoHaW9zX3VybBgCIAEoCRITCgthbmRyb2lkX3VybBgDIAEoCRIOCgZwY191cmwYBCABKAkSDwoHd2ViX3VybBgFIAEoCRoKCghDYWxsQmFja0IICgZhY3Rpb24izwIKDENoYXRNZW51SXRlbRIKCgJpZBgBIAEoAxIWCg5idXR0b25faXRlbV9pZBgCIAEoAxI2CglpdGVtX3R5cGUYAyACKA4yIy5lbnRpdGllcy5DaGF0TWVudUl0ZW0uTWVudUl0ZW1UeXBlEjYKC3NvdXJjZV90eXBlGAQgAigOMiEuZW50aXRpZXMuQ2hhdE1lbnVJdGVtLlNvdXJjZVR5cGUSKwoLY2hpbGRfbm9kZXMYBSADKAsyFi5lbnRpdGllcy5DaGF0TWVudUl0ZW0iSQoKU291cmNlVHlwZRIQCgxVTktOT1dOX1RZUEUQABIOCgpDSEFUX0lOTkVSEAESDAoIT1BFTl9BUFAQAhILCgdQMlBfQk9UEAMiMwoMTWVudUl0ZW1UeXBlEgsKB1VOS05PV04QABIKCgZBQ1RJT04QARIKCgZFWFBBTkQQAiLAAQoIQ2hhdE1lbnUSLwoPY2hhdF9tZW51X2l0ZW1zGAEgAygLMhYuZW50aXRpZXMuQ2hhdE1lbnVJdGVtEjkKDGJ1dHRvbl9pdGVtcxgCIAMoCzIjLmVudGl0aWVzLkNoYXRNZW51LkJ1dHRvbkl0ZW1zRW50cnkaSAoQQnV0dG9uSXRlbXNFbnRyeRILCgNrZXkYASABKAMSIwoFdmFsdWUYAiABKAsyFC5lbnRpdGllcy5CdXR0b25JdGVtOgI4ASK4AwoKQ2hhdFdpZGdldBIKCgJpZBgBIAIoAxI0Cgt3aWRnZXRfdHlwZRgCIAIoDjIfLmVudGl0aWVzLkNoYXRXaWRnZXQuV2lkZ2V0VHlwZRI8Cg9wcmV2aWV3X2NvbnRlbnQYAyABKAsyIy5lbnRpdGllcy5DaGF0V2lkZ2V0LlByZXZpZXdDb250ZW50GpYBChBQcmV2aWV3SGFuZ1BvaW50EhIKCnByZXZpZXdfaWQYASABKAkSIQoSbmVlZF9sb2NhbF9wcmV2aWV3GAIgASgIOgVmYWxzZRIhChJjbG9zZV9jYXJkX3ByZXZpZXcYAyABKAg6BWZhbHNlEgsKA3VybBgEIAEoCRIbCgxpc19sYXp5X2xvYWQYBSABKAg6BWZhbHNlGmUKDlByZXZpZXdDb250ZW50EkEKEnByZXZpZXdfaGFuZ19wb2ludBgBIAEoCzIlLmVudGl0aWVzLkNoYXRXaWRnZXQuUHJldmlld0hhbmdQb2ludBIQCghiYXNlX3VybBgCIAEoCSIqCgpXaWRnZXRUeXBlEgsKB1VOS05PV04QABIPCgtVUkxfUFJFVklFVxABIvUBChJDaGF0UmVmRHluYW1pY1J1bGUSCgoCaWQYASABKAkSOAoJcnVsZV90eXBlGAIgAigOMiUuZW50aXRpZXMuQ2hhdFJlZkR5bmFtaWNSdWxlLlJ1bGVUeXBlEg4KBnJlZl9pZBgDIAEoCRIQCghyZWZfbmFtZRgEIAEoCRIWCg5lbXBsb3llZV90eXBlcxgFIAMoCRIfChdhbGxvd19hbGxfZW1wbG95ZWVfdHlwZRgGIAEoCBIQCghlZGl0YWJsZRgHIAEoCCIsCghSdWxlVHlwZRIQCgxVTktOT1dOX1JVTEUQABIOCgpERVBBUlRNRU5UEAEiKQoNUnVsZVNlbGVjdE9wdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJIskECgtNZXNzYWdlRm9sZBIPCgdmb2xkX2lkGAEgASgDEhcKD3Jvb3RfbWVzc2FnZV9pZBgCIAEoAxIdChVyb290X21lc3NhZ2VfcG9zaXRpb24YAyABKAUSIgoHbWVzc2FnZRgEIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2USEAoIdXNlcl9sZW4YBSABKAUSEwoLdG90YWxfY291bnQYBiABKAUSFwoPbGFzdF9tZXNzYWdlX2lkGAcgASgDEh0KFWxhc3RfbWVzc2FnZV9wb3NpdGlvbhgIIAEoBRIgChhsYXN0X21lc3NhZ2VfYmFkZ2VfY291bnQYCSABKAUSFgoOdXBkYXRlX3RpbWVfbXMYCiABKAMSOAoLdXNlcl9jb3VudHMYCyADKAsyIy5lbnRpdGllcy5NZXNzYWdlRm9sZC5Gb2xkVXNlckNvdW50EjUKC3JlY2FsbF90eXBlGAwgASgOMiAuZW50aXRpZXMuTWVzc2FnZUZvbGQuUmVjYWxsVHlwZRIWCg5yZWNhbGxfdXNlcl9pZBgNIAEoAxovCg1Gb2xkVXNlckNvdW50Eg8KB3VzZXJfaWQYASABKAMSDQoFY291bnQYAiABKAUiegoKUmVjYWxsVHlwZRIOCgpOT1RfUkVDQUxMEAASDwoLVVNFUl9SRUNBTEwQARIWChJHUk9VUF9PV05FUl9SRUNBTEwQAhIWChJHUk9VUF9BRE1JTl9SRUNBTEwQAxIbChdFTlRFUlBSSVNFX0FETUlOX1JFQ0FMTBAEIpoBChFNZXNzYWdlRm9sZEZvbGxvdxIPCgd1c2VyX2lkGAEgASgDEg0KBWNvdW50GAIgASgFEjUKC3JlY2FsbF90eXBlGAMgASgOMiAuZW50aXRpZXMuTWVzc2FnZUZvbGQuUmVjYWxsVHlwZRIWCg5yZWNhbGxfdXNlcl9pZBgEIAEoAxIWCg5mb2xsb3dfdGltZV9tcxgFIAEoAyLbAgodQ2hhdENhbGVuZGFyRXZlbnRJbnN0YW5jZVZpZXcSEgoKc3RhcnRfdGltZRgBIAIoAxIQCghlbmRfdGltZRgCIAIoAxIdChVjYWxlbmRhcl9ldmVudF9yZWZfaWQYAyACKAkSGwoTaXNfaW5fbWVldGluZ19ldmVudBgEIAIoCBISCgp1bmlxdWVfa2V5GAUgAigJEhUKDW9yaWdpbmFsX3RpbWUYBiACKAMSEgoKaXNfYWxsX2RheRgHIAIoCBIPCgdzdW1tYXJ5GAggAigJEj8KEmNhbGVuZGFyX2J1aWxkaW5ncxgJIAMoCzIjLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2VCYXNpY0luZm8SMgoJbG9jYXRpb25zGAogAygLMh8uZW50aXRpZXMuQ2FsZW5kYXJFdmVudExvY2F0aW9uEhMKC2NhbGVuZGFyX2lkGAsgAigJIoIBChlDYWxlbmRhclJlc291cmNlQmFzaWNJbmZvEhAKCGNhcGFjaXR5GAEgASgFEhEKCWNpdHlfbmFtZRgCIAEoCRIVCg1idWlsZGluZ19uYW1lGAMgASgJEhUKDXJlc291cmNlX25hbWUYBCABKAkSEgoKZmxvb3JfbmFtZRgFIAEoCSKxAgoTRXZlbnRFbmNyeXB0aW9uSW5mbxIWCg5lbmNyeXB0aW9uX2tleRgBIAEoCRJCCgxlbmNyeXB0X3R5cGUYAiABKA4yLC5lbnRpdGllcy5FdmVudEVuY3J5cHRpb25JbmZvLkVuY3J5cHRpb25UeXBlEicKCmtleV9zdGF0dXMYAyABKA4yEy5lbnRpdGllcy5LZXlTdGF0dXMSNQoRZW5jcnlwdGlvbl9zdGF0dXMYBCABKA4yGi5lbnRpdGllcy5FbmNyeXB0aW9uU3RhdHVzIl4KDkVuY3J5cHRpb25UeXBlEgsKB1VOS05PV04QARIRCg1VTl9FTkNSWVBUSU9OEAISFAoQTE9DQUxfRU5DUllQVElPThADEhYKElVOSUZJRURfRU5DUllQVElPThAEIt4BCh9QdXNoVGVuYW50RW5jcnlwdGlvbktleUNoYW5nZVBiEkkKC2NoYW5nZV90eXBlGAEgASgOMjQuZW50aXRpZXMuUHVzaFRlbmFudEVuY3J5cHRpb25LZXlDaGFuZ2VQYi5DaGFuZ2VUeXBlEhYKDmVuY3J5cHRpb25fa2V5GAIgASgJEicKCmtleV9zdGF0dXMYAyABKA4yEy5lbnRpdGllcy5LZXlTdGF0dXMiLwoKQ2hhbmdlVHlwZRIPCgtLRVlfRElTQUJMRRABEhAKDEtFWV9SRUNPVkVSWRACIn4KCEkxOG5UZXh0EgwKBHRleHQYASABKAkSMwoJaTE4bl90ZXh0GAIgAygLMiAuZW50aXRpZXMuSTE4blRleHQuSTE4blRleHRFbnRyeRovCg1JMThuVGV4dEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi1QEKElN5c3RlbUd1aWRlQ1RBSXRlbRIKCgJpZBgBIAEoCRIuCgdsbV9pY29uGAIgASgLMh0uZW50aXRpZXMuSW1hZ2VTZXRQYXNzVGhyb3VnaBIuCgdkbV9pY29uGAMgASgLMh0uZW50aXRpZXMuSW1hZ2VTZXRQYXNzVGhyb3VnaBIgCgR0ZXh0GAQgASgLMhIuZW50aXRpZXMuSTE4blRleHQSMQoGYWN0aW9uGAUgASgLMiEuZW50aXRpZXMuU3lzdGVtTWVzc2FnZUl0ZW1BY3Rpb24i7QEKElN5c3RlbUd1aWRlQ29udGVudBIhCgV0aXRsZRgBIAEoCzISLmVudGl0aWVzLkkxOG5UZXh0EiUKCXN1Yl90aXRsZRgCIAEoCzISLmVudGl0aWVzLkkxOG5UZXh0Ei8KCGxtX2ltYWdlGAMgASgLMh0uZW50aXRpZXMuSW1hZ2VTZXRQYXNzVGhyb3VnaBIvCghkbV9pbWFnZRgEIAEoCzIdLmVudGl0aWVzLkltYWdlU2V0UGFzc1Rocm91Z2gSKwoFaXRlbXMYBSADKAsyHC5lbnRpdGllcy5TeXN0ZW1HdWlkZUNUQUl0ZW0iNQohTmV3VG9waWNTeXN0ZW1NZXNzYWdlRXh0cmFDb250ZW50EhAKCHRvb2xfaWRzGAEgAygJIsMJCgtNZXNzYWdlTGluaxINCgV0b2tlbhgBIAIoCRISCgplbnRpdHlfaWRzGAIgAygDEjUKCGVudGl0aWVzGAMgAygLMiMuZW50aXRpZXMuTWVzc2FnZUxpbmsuRW50aXRpZXNFbnRyeRI+Cg1jaGF0dGVyX3NuYXBzGAQgAygLMicuZW50aXRpZXMuTWVzc2FnZUxpbmsuQ2hhdHRlclNuYXBzRW50cnkSLAoEaW5mbxgPIAEoCzIeLmVudGl0aWVzLk1lc3NhZ2VMaW5rLk1ldGFJbmZvEjEKCWNoYXRfaW5mbxgQIAEoCzIeLmVudGl0aWVzLk1lc3NhZ2VMaW5rLkNoYXRJbmZvGsEBCgZFbnRpdHkSIgoHbWVzc2FnZRgBIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2USIAoGdGhyZWFkGAIgASgLMhAuZW50aXRpZXMuVGhyZWFkEjQKEXJlYWN0aW9uX3NuYXBzaG90GAMgASgLMhkuZW50aXRpZXMuTWVzc2FnZVJlYWN0aW9uEjsKDm1lc3NhZ2VfdGhyZWFkGAQgASgLMiMuZW50aXRpZXMuTWVzc2FnZUxpbmsuTWVzc2FnZVRocmVhZBphCghNZXRhSW5mbxITCgtvcGVyYXRvcl9pZBgBIAEoAxIUCgxmcm9tX2NoYXRfaWQYAiABKAMSGAoQb3BlcmF0b3JfdGltZV9ucxgDIAEoAxIQCghqdW1wX3BvcxgEIAEoBRqHAgoPQ2hhdHRlclNuYXBzaG90EgoKAmlkGAEgASgDEgwKBG5hbWUYAiABKAkSIwoEdHlwZRgDIAEoDjIVLmVudGl0aWVzLkNoYXR0ZXJUeXBlEiYKDWF2YXRhcl9lbnRpdHkYBCABKAsyDy5lbnRpdGllcy5JbWFnZRIUCgxpc19hbm9ueW1vdXMYBSABKAgSRgoJaTE4bl9uYW1lGAYgAygLMjMuZW50aXRpZXMuTWVzc2FnZUxpbmsuQ2hhdHRlclNuYXBzaG90LkkxOG5OYW1lRW50cnkaLwoNSTE4bk5hbWVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGnsKDU1lc3NhZ2VUaHJlYWQSCgoCaWQYASABKAMSEwoLcmVwbHlfY291bnQYAiABKAUSFAoMdG9wX3JlcGxpZXJzGAMgAygDEhkKEWxhdGVzdF9yZXBseV90aW1lGAQgASgDEhgKEHJlcGx5X2VudGl0eV9pZHMYBSADKAMaYAoIQ2hhdEluZm8SDAoEbmFtZRgBIAEoCRIPCgdpc19hdXRoGAIgAigIEiEKBHR5cGUYAyABKA4yEy5lbnRpdGllcy5DaGF0LlR5cGUSEgoKaXNfcDJwX2JvdBgEIAEoCBpNCg1FbnRpdGllc0VudHJ5EgsKA2tleRgBIAEoAxIrCgV2YWx1ZRgCIAEoCzIcLmVudGl0aWVzLk1lc3NhZ2VMaW5rLkVudGl0eToCOAEaWgoRQ2hhdHRlclNuYXBzRW50cnkSCwoDa2V5GAEgASgDEjQKBXZhbHVlGAIgASgLMiUuZW50aXRpZXMuTWVzc2FnZUxpbmsuQ2hhdHRlclNuYXBzaG90OgI4ASKBAgoHVGFnRGF0YRI1Cg50YWdfZGF0YV9pdGVtcxgBIAMoCzIdLmVudGl0aWVzLlRhZ0RhdGEuVGFnRGF0YUl0ZW0avgEKC1RhZ0RhdGFJdGVtEiMKCHRleHRfdmFsGAEgASgLMhEuZW50aXRpZXMuSTE4blZhbBIOCgZ0YWdfaWQYAiABKAkSMgoMcmVxX3RhZ190eXBlGAMgASgOMhwuZW50aXRpZXMuUmVxdWVzdFRhZ1R5cGVFbnVtEjQKDXJlc3BfdGFnX3R5cGUYBCABKA4yHS5lbnRpdGllcy5SZXNwb25zZVRhZ1R5cGVFbnVtEhAKCHByaW9yaXR5GAUgASgFIroCChRDaGF0QmFja2dyb3VuZEVudGl0eRI7CgRtb2RlGAEgASgOMi0uZW50aXRpZXMuQ2hhdEJhY2tncm91bmRFbnRpdHkuQmFja2dyb3VuZE1vZGUSNwoFY29sb3IYAiABKAsyKC5lbnRpdGllcy5DaGF0QmFja2dyb3VuZEVudGl0eS5Db2xvckluZm8SEQoJaW1hZ2Vfa2V5GAMgASgJEg4KBmZzdW5pdBgEIAEoCRpGCglDb2xvckluZm8SEAoIdWRfdG9rZW4YASABKAkSEwoLbGlnaHRfY29sb3IYAiABKA0SEgoKZGFya19jb2xvchgDIAEoDSJBCg5CYWNrZ3JvdW5kTW9kZRIPCgtPUklHSU5fTU9ERRAAEg4KCkNPTE9SX01PREUQARIOCgpJTUFHRV9NT0RFEAIipgMKCUNoYXRUaGVtZRIyCg9jb21wb25lbnRfc2NlbmUYASABKA4yGS5lbnRpdGllcy5DaGF0VGhlbWUuU2NlbmUSCgoCaWQYAiABKAMSOQoRYmFja2dyb3VuZF9lbnRpdHkYAyABKAsyHi5lbnRpdGllcy5DaGF0QmFja2dyb3VuZEVudGl0eRIMCgRuYW1lGAQgASgJEjQKCWkxOG5fbmFtZRgFIAMoCzIhLmVudGl0aWVzLkNoYXRUaGVtZS5JMThuTmFtZUVudHJ5EjEKCnRoZW1lX3R5cGUYBiABKA4yHS5lbnRpdGllcy5DaGF0VGhlbWUuVGhlbWVUeXBlGi8KDUkxOG5OYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIwCgVTY2VuZRIRCg1ERUZBVUxUX1NDRU5FEAASCAoEREFSSxABEgoKBkJSSUdIVBACIkQKCVRoZW1lVHlwZRIQCgxVTktOT1dOX1RZUEUQABIQCgxTWVNURU1fVEhFTUUQARITCg9DVVNUT01JWkVfVEhFTUUQAiJHChJGZWVkTGFzdFVucmVhZFRpbWUSGAoQbGFzdF91bnJlYWRfdGltZRgBIAEoAxIXCg9sYXN0X3VucmVhZF9wb3MYAiABKAUi6QIKEENyb3NzQnJhbmRBY3Rpb24SOQoKc3R5bGVfdHlwZRgBIAIoDjIlLmVudGl0aWVzLkNyb3NzQnJhbmRBY3Rpb25VaVN0eWxlVHlwZRIPCgdtZXNzYWdlGAIgASgJEg0KBXRpdGxlGAMgASgJEg8KB2NvbnRlbnQYBCABKAkSGwoTY29uZmlybV9idG5fY29udGVudBgFIAEoCRIfChdjb25maXJtX2J0bl9hY3Rpb25fbGluaxgGIAEoCRIaChJjYW5jZWxfYnRuX2NvbnRlbnQYByABKAkSHgoWY2FuY2VsX2J0bl9hY3Rpb25fbGluaxgIIAEoCRI9Cgp0cmFjZV9pbmZvGAkgAygLMikuZW50aXRpZXMuQ3Jvc3NCcmFuZEFjdGlvbi5UcmFjZUluZm9FbnRyeRowCg5UcmFjZUluZm9FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIs8BCgtQdXNoUGF5bG9hZBIPCgdwYXlsb2FkGAEgASgMEjEKD3ZlcnNpb25fcGF5bG9hZBgCIAMoCzIYLmVudGl0aWVzLlZlcnNpb25QYXlsb2FkEjkKDWVuY29kaW5nX3R5cGUYAyABKA4yIi5lbnRpdGllcy5QdXNoUGF5bG9hZC5FbmNvZGluZ1R5cGUiQQoMRW5jb2RpbmdUeXBlEhgKFEVuY29kaW5nVHlwZV9ERUZBVUxUEAESFwoTRW5jb2RpbmdUeXBlX0xBVElOMRACIkgKDlZlcnNpb25QYXlsb2FkEiUKBXJhbmdlGAEgAigLMhYuZW50aXRpZXMuVmVyc2lvblJhbmdlEg8KB3BheWxvYWQYAiACKAwiKgoMVmVyc2lvblJhbmdlEg0KBXN0YXJ0GAEgAigJEgsKA2VuZBgCIAIoCSIsCgZEZXZpY2USDwoHdXNlcl9pZBgBIAIoAxIRCglkZXZpY2VfaWQYAiABKAMihAEKC1BpcGVPcHRpb25zEhkKEW5lZWRfc2F2ZV90b19waXBlGAEgASgIEisKDXRhcmdldF9lbnRpdHkYAiABKAsyFC5lbnRpdGllcy5QaXBlRW50aXR5Ei0KD3RhcmdldF9lbnRpdGllcxgDIAMoCzIULmVudGl0aWVzLlBpcGVFbnRpdHkiqgIKClBpcGVFbnRpdHkSCgoCaWQYASABKAMSMQoEdHlwZRgCIAIoDjIjLmVudGl0aWVzLlBpcGVFbnRpdHkuUGlwZUVudGl0eVR5cGUi3AEKDlBpcGVFbnRpdHlUeXBlEhcKE1BpcGVFbnRpdHlUeXBlX1VTRVIQARIXChNQaXBlRW50aXR5VHlwZV9DSEFUEAISFgoSUGlwZUVudGl0eVR5cGVfRE9DEAMSFwoTUGlwZUVudGl0eVR5cGVfTUFJTBAEEhoKFlBpcGVFbnRpdHlUeXBlX01FU1NBR0UQBRIXChNQaXBlRW50aXR5VHlwZV9GRUVEEAYSFQoRUGlwZUVudGl0eVR5cGVfVkMQBxIbChdQaXBlRW50aXR5VHlwZV9DQUxFTkRBUhAIIngKDk9mZmxpbmVDb250ZW50Eg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiABKAkSDQoFZXh0cmEYAyABKAwSEQoJb25seV92b2lwGAQgASgIEhAKCG9ubHlfaW9zGAUgASgIEhIKCnNlcnZlcl9zdHIYBiABKAkibwoLUHVzaE9wdGlvbnMSGQoRbmVlZF9vZmZsaW5lX3B1c2gYASABKAgSKQoPZXhjbHVkZV9kZXZpY2VzGAIgAygLMhAuZW50aXRpZXMuRGV2aWNlEhoKEmZvcmNlX29mZmxpbmVfcHVzaBgDIAEoCCK/BwoNUHVzaE9wdGlvbnNWMhIpCg9leGNsdWRlX2RldmljZXMYASADKAsyEC5lbnRpdGllcy5EZXZpY2USVQobcHVzaF9vZmZsaW5lX2NvbnRlbnRfb3B0aW9uGAIgASgOMjAuZW50aXRpZXMuUHVzaE9wdGlvbnNWMi5QdXNoT2ZmbGluZUNvbnRlbnRPcHRpb24SZgokYW5kcm9pZF9vZmZsaW5lX2NvbnRlbnRfcHVzaF9jaGFubmVsGAMgASgOMjguZW50aXRpZXMuUHVzaE9wdGlvbnNWMi5BbmRyb2lkT2ZmbGluZUNvbnRlbnRQdXNoQ2hhbm5lbBJcCh9pb3Nfb25saW5lX2NvbnRlbnRfcHVzaF9jaGFubmVsGAQgASgOMjMuZW50aXRpZXMuUHVzaE9wdGlvbnNWMi5JT1NPbmxpbmVDb250ZW50UHVzaENoYW5uZWwinAEKGFB1c2hPZmZsaW5lQ29udGVudE9wdGlvbhIhCh1QdXNoT2ZmbGluZUNvbnRlbnRPcHRpb25fTm9uZRAAEjgKNFB1c2hPZmZsaW5lQ29udGVudE9wdGlvbl9XaGVuRmFpbFRvUHVzaE9ubGluZUNvbnRlbnQQARIjCh9QdXNoT2ZmbGluZUNvbnRlbnRPcHRpb25fQWx3YXlzEAIisgIKIEFuZHJvaWRPZmZsaW5lQ29udGVudFB1c2hDaGFubmVsEkYKQkFuZHJvaWRPZmZsaW5lQ29udGVudFB1c2hDaGFubmVsX0Zyb250aWVyQmFja2dyb3VuZE9yQW5kcm9pZFZlbmRvchAAEjIKLkFuZHJvaWRPZmZsaW5lQ29udGVudFB1c2hDaGFubmVsX0FuZHJvaWRWZW5kb3IQARJHCkNBbmRyb2lkT2ZmbGluZUNvbnRlbnRQdXNoQ2hhbm5lbF9Gcm9udGllckJhY2tncm91bmRBbmRBbmRyb2lkVmVuZG9yEAISSQpFQW5kcm9pZE9mZmxpbmVDb250ZW50UHVzaENoYW5uZWxfQW5kcm9pZFZlbmRvckFmdGVyRnJvbnRpZXJCYWNrZ3JvdW5kEAMikQEKG0lPU09ubGluZUNvbnRlbnRQdXNoQ2hhbm5lbBIuCipJT1NPbmxpbmVDb250ZW50UHVzaENoYW5uZWxfRnJvbnRpZXJPbmxpbmUQABJCCj5JT1NPbmxpbmVDb250ZW50UHVzaENoYW5uZWxfRnJvbnRpZXJPbmxpbmVPckZyb250aWVyQmFja2dyb3VuZBABIj0KDVBvc2l0aW9uUmFuZ2USFgoOc3RhcnRfcG9zaXRpb24YASABKAUSFAoMZW5kX3Bvc2l0aW9uGAIgASgFIq0DCg5DYWxlbmRhckRldGFpbBI2ChJjYWxlbmRhcl9iYXNlX2luZm8YASACKAsyGi5lbnRpdGllcy5DYWxlbmRhckJhc2VJbmZvEjIKC2FjY2Vzc19yb2xlGAIgAigOMh0uZW50aXRpZXMuQ2FsZW5kYXIuQWNjZXNzUm9sZRI4ChN1c2VyX3N1YnNjcmliZV9pbmZvGAMgASgLMhsuZW50aXRpZXMuVXNlclN1YnNjcmliZUluZm8SPgoWYWxsX3N0YWZmX2NhbGVuZGFyX2V4dBgEIAEoCzIeLmVudGl0aWVzLkFsbFN0YWZmQ2FsZW5kYXJJbmZvEjkKE2dvb2dsZV9jYWxlbmRhcl9leHQYBSABKAsyHC5lbnRpdGllcy5Hb29nbGVDYWxlbmRhckluZm8SPQoVZXhjaGFuZ2VfY2FsZW5kYXJfZXh0GAYgASgLMh4uZW50aXRpZXMuRXhjaGFuZ2VDYWxlbmRhckluZm8SOwoUcHJpbWFyeV9jYWxlbmRhcl9leHQYByABKAsyHS5lbnRpdGllcy5QcmltYXJ5Q2FsZW5kYXJJbmZvIosFChBDYWxlbmRhckJhc2VJbmZvEgoKAmlkGAEgAigJEg8KB3N1bW1hcnkYAiACKAkSEwoLZGVzY3JpcHRpb24YAyACKAkSEQoJdGVuYW50X2lkGAQgAigJEhcKD2NyZWF0b3JfdXNlcl9pZBgFIAIoCRIZChFzdWNjZXNzb3JfdXNlcl9pZBgGIAIoCRIZChFjYWxlbmRhcl9vd25lcl9pZBgHIAIoCRIXCg9pc19jcm9zc190ZW5hbnQYCCACKAgSJQoEdHlwZRgJIAIoDjIXLmVudGl0aWVzLkNhbGVuZGFyLlR5cGUSHAoUY2FsZW5kYXJfdXBkYXRlX3RpbWUYCiACKAMSPgoNc2hhcmVfb3B0aW9ucxgLIAIoCzInLmVudGl0aWVzLkNhbGVuZGFyLkNhbGVuZGFyU2hhcmVPcHRpb25zEjgKCnNoYXJlX2luZm8YDCACKAsyJC5lbnRpdGllcy5DYWxlbmRhci5DYWxlbmRhclNoYXJlSW5mbxImCgtjb3Zlcl9pbWFnZRgNIAIoCzIRLmVudGl0aWVzLkltSW1hZ2USNgoNb2ZmaWNpYWxfdHlwZRgOIAIoDjIfLmVudGl0aWVzLkNhbGVuZGFyLk9mZmljaWFsVHlwZRIgChhjYWxlbmRhcl9ldmVudF9zY2hlbWFfdjIYDyACKAwSFwoPY2FsZW5kYXJfc2NoZW1hGBAgAigMEhEKCWlzX3B1YmxpYxgRIAIoCBIzCgxkZWZhdWx0X3JvbGUYEiACKA4yHS5lbnRpdGllcy5DYWxlbmRhci5BY2Nlc3NSb2xlEhIKCmlzX2RlbGV0ZWQYEyACKAgSFAoMaXNfYWxsX3N0YWZmGBQgAigIIsIBChFVc2VyU3Vic2NyaWJlSW5mbxIbChN2aXNpYmlsaXR5X3Byb3BlcnR5GAEgAigFEhgKEGZvcmVncm91bmRfY29sb3IYAiACKAUSGAoQYmFja2dyb3VuZF9jb2xvchgDIAIoBRIOCgZ3ZWlnaHQYBCACKAUSEwoLdXBkYXRlX3RpbWUYBSACKAMSEgoKaXNfcHJpbWFyeRgGIAIoCBIVCg1pc19zdWJzY3JpYmVyGAcgAigIEgwKBG5vdGUYCCACKAkiIwoSR29vZ2xlQ2FsZW5kYXJJbmZvEg0KBWVtYWlsGAEgAigJIksKFEV4Y2hhbmdlQ2FsZW5kYXJJbmZvEjMKEGV4dGVybmFsX2FjY291bnQYASACKAsyGS5lbnRpdGllcy5FeHRlcm5hbEFjY291bnQi8QEKFEFsbFN0YWZmQ2FsZW5kYXJJbmZvEkMKDmFsbF9zdGFmZl90eXBlGAEgAigOMisuZW50aXRpZXMuQWxsU3RhZmZDYWxlbmRhckluZm8uQWxsU3RhZmZUeXBlEh0KFWlzX2ZvcmJpZF91bnN1YnNjcmliZRgCIAIoCCJ1CgxBbGxTdGFmZlR5cGUSIAocQUxMX1NUQUZGX1RZUEVfQUxMX1NVQlNDUklCRRAAEiAKHEFMTF9TVEFGRl9UWVBFX01FTUJFUl9QVUJMSUMQARIhCh1BTExfU1RBRkZfVFlQRV9NRU1CRVJfUFJJVkFURRACIl8KE1ByaW1hcnlDYWxlbmRhckluZm8SNAoRd29ya19ob3VyX3NldHRpbmcYASABKAsyGS5lbnRpdGllcy5Xb3JrSG91clNldHRpbmcSEgoIdGltZXpvbmUYAiABKAk6ACK5CQoMUGFydFJpY2hUZXh0EikKBHR5cGUYASABKA4yGy5lbnRpdGllcy5QYXJ0UmljaFRleHQuVHlwZRJFChNhcHBlbmRfdGV4dF9jb250ZW50GAIgASgLMiguZW50aXRpZXMuUGFydFJpY2hUZXh0LkFwcGVuZFRleHRDb250ZW50EjYKC2FkZF9lbGVtZW50GAMgASgLMiEuZW50aXRpZXMuUGFydFJpY2hUZXh0LkFkZEVsZW1lbnQSUAoZYXBwZW5kX2NvZGVfYmxvY2tfY29udGVudBgEIAEoCzItLmVudGl0aWVzLlBhcnRSaWNoVGV4dC5BcHBlbmRDb2RlQmxvY2tDb250ZW50EkoKFmFkZF9jb2RlX2Jsb2NrX2NvbnRlbnQYBSABKAsyKi5lbnRpdGllcy5QYXJ0UmljaFRleHQuQWRkQ29kZUJsb2NrQ29udGVudBJEChNhZGRfY29kZV9ibG9ja19saW5lGAYgASgLMicuZW50aXRpZXMuUGFydFJpY2hUZXh0LkFkZENvZGVCbG9ja0xpbmUSQAoRdXBkYXRlX215X2FpX3Rvb2wYByABKAsyJS5lbnRpdGllcy5QYXJ0UmljaFRleHQuVXBkYXRlTXlBSVRvb2waPwoRQXBwZW5kVGV4dENvbnRlbnQSEgoKZWxlbWVudF9pZBgBIAEoCRIWCg5hcHBlbmRfY29udGVudBgCIAEoCRpfCgpBZGRFbGVtZW50EhIKCmVsZW1lbnRfaWQYASABKAkSKgoHZWxlbWVudBgCIAEoCzIZLmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudBIRCglwYXJlbnRfaWQYAyABKAkaRAoWQXBwZW5kQ29kZUJsb2NrQ29udGVudBISCgplbGVtZW50X2lkGAEgASgJEhYKDmFwcGVuZF9jb250ZW50GAIgASgJGnIKE0FkZENvZGVCbG9ja0NvbnRlbnQSEgoKZWxlbWVudF9pZBgBIAEoCRJHCghjb250ZW50cxgCIAMoCzI1LmVudGl0aWVzLlJpY2hUZXh0RWxlbWVudC5Db2RlQmxvY2tWMlByb3BlcnR5LkNvbnRlbnQacAoQQWRkQ29kZUJsb2NrTGluZRISCgplbGVtZW50X2lkGAEgASgJEkgKBWxpbmVzGAIgAygLMjkuZW50aXRpZXMuUmljaFRleHRFbGVtZW50LkNvZGVCbG9ja1YyUHJvcGVydHkuTGluZUNvbnRlbnQabQoOVXBkYXRlTXlBSVRvb2wSEgoKZWxlbWVudF9pZBgBIAEoCRJHChNteV9haV90b29sX3Byb3BlcnR5GAIgASgLMiouZW50aXRpZXMuUmljaFRleHRFbGVtZW50Lk15QUlUb29sUHJvcGVydHkimwEKBFR5cGUSFwoTQVBQRU5EX1RFWFRfQ09OVEVOVBAAEg8KC0FERF9FTEVNRU5UEAESHQoZQVBQRU5EX0NPREVfQkxPQ0tfQ09OVEVOVBACEhoKFkFERF9DT0RFX0JMT0NLX0NPTlRFTlQQAxIXChNBRERfQ09ERV9CTE9DS19MSU5FEAQSFQoRVVBEQVRFX01ZX0FJX1RPT0wQBSLnCgoRUGFydFN0cmVhbU1lc3NhZ2USEgoKbWVzc2FnZV9pZBgBIAEoAxITCgtzZXF1ZW5jZV9pZBgCIAEoBRIuCgR0eXBlGAMgASgOMiAuZW50aXRpZXMuUGFydFN0cmVhbU1lc3NhZ2UuVHlwZRI7CgtwYXJ0X3BhY2tldBgEIAEoCzImLmVudGl0aWVzLlBhcnRTdHJlYW1NZXNzYWdlLlBhcnRQYWNrZXQSOwoLZnVsbF9wYWNrZXQYBSABKAsyJi5lbnRpdGllcy5QYXJ0U3RyZWFtTWVzc2FnZS5GdWxsUGFja2V0GrMGCgpQYXJ0UGFja2V0ElgKFXBhcnRfcmljaF90ZXh0X3BhY2tldBgBIAEoCzI5LmVudGl0aWVzLlBhcnRTdHJlYW1NZXNzYWdlLlBhcnRQYWNrZXQuUGFydFJpY2hUZXh0UGFja2V0EmMKG3BhcnRfdXJsX3ByZXZpZXdfaGFuZ19wb2ludBgCIAEoCzI+LmVudGl0aWVzLlBhcnRTdHJlYW1NZXNzYWdlLlBhcnRQYWNrZXQuUGFydFVybFByZXZpZXdIYW5nUG9pbnQSQwoMcGFydF9hdF91c2VyGAMgASgLMi0uZW50aXRpZXMuUGFydFN0cmVhbU1lc3NhZ2UuUGFydFBhY2tldC5QYXJ0QXQaoAEKElBhcnRSaWNoVGV4dFBhY2tldBIuCgR0eXBlGAEgASgOMiAuZW50aXRpZXMuUGFydFN0cmVhbU1lc3NhZ2UuVHlwZRIuCg5wYXJ0X3JpY2hfdGV4dBgCIAMoCzIWLmVudGl0aWVzLlBhcnRSaWNoVGV4dBIqCg5mdWxsX3JpY2hfdGV4dBgDIAEoCzISLmVudGl0aWVzLlJpY2hUZXh0GqcCChdQYXJ0VXJsUHJldmlld0hhbmdQb2ludBIuCgR0eXBlGAEgASgOMiAuZW50aXRpZXMuUGFydFN0cmVhbU1lc3NhZ2UuVHlwZRJ+Chp1cmxfcHJldmlld19oYW5nX3BvaW50X21hcBgCIAMoCzJaLmVudGl0aWVzLlBhcnRTdHJlYW1NZXNzYWdlLlBhcnRQYWNrZXQuUGFydFVybFByZXZpZXdIYW5nUG9pbnQuVXJsUHJldmlld0hhbmdQb2ludE1hcEVudHJ5GlwKG1VybFByZXZpZXdIYW5nUG9pbnRNYXBFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5lbnRpdGllcy5VcmxQcmV2aWV3SGFuZ1BvaW50OgI4ARpUCgZQYXJ0QXQSLgoEdHlwZRgBIAEoDjIgLmVudGl0aWVzLlBhcnRTdHJlYW1NZXNzYWdlLlR5cGUSGgoSYXRfb3V0X2NoYXR0ZXJfaWRzGAIgAygDGqwCCgpGdWxsUGFja2V0EioKDmZ1bGxfcmljaF90ZXh0GAEgASgLMhIuZW50aXRpZXMuUmljaFRleHQSbwofZnVsbF91cmxfcHJldmlld19oYW5nX3BvaW50X21hcBgCIAMoCzJGLmVudGl0aWVzLlBhcnRTdHJlYW1NZXNzYWdlLkZ1bGxQYWNrZXQuRnVsbFVybFByZXZpZXdIYW5nUG9pbnRNYXBFbnRyeRIfChdmdWxsX2F0X291dF9jaGF0dGVyX2lkcxgDIAMoAxpgCh9GdWxsVXJsUHJldmlld0hhbmdQb2ludE1hcEVudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmVudGl0aWVzLlVybFByZXZpZXdIYW5nUG9pbnQ6AjgBIhoKBFR5cGUSCAoEUEFSVBAAEggKBEZVTEwQASL0AQoNQUlJbmZvQ29udGV4dBIXCg9haV9jaGF0X21vZGVfaWQYASABKAMSNAoRcXVpY2tfYWN0aW9uX2luZm8YAyABKAsyGS5lbnRpdGllcy5RdWlja0FjdGlvbkluZm8SKwoMY2hhdF9jb250ZXh0GAQgASgLMhUuZW50aXRpZXMuQ2hhdENvbnRleHQSNAoSYXRfYWlfaW5fY2hhdF9pbmZvGAUgASgLMhguZW50aXRpZXMuQXRBSUluQ2hhdEluZm8SFAoMaXNfbmV3X3RvcGljGAYgASgIEhUKDXJvb3Rfcm91bmRfaWQYByABKANKBAgCEAMitgEKD1F1aWNrQWN0aW9uSW5mbxIRCglhY3Rpb25faWQYASABKAkSOgoJaW5wdXRfbWFwGAIgAygLMicuZW50aXRpZXMuUXVpY2tBY3Rpb25JbmZvLklucHV0TWFwRW50cnkSDgoGY2FsbGVyGAMgASgJEhMKC2FjdGlvbl90eXBlGAQgASgFGi8KDUlucHV0TWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKfAQoLQ2hhdENvbnRleHQSNgoJZXh0cmFfbWFwGAEgAygLMiMuZW50aXRpZXMuQ2hhdENvbnRleHQuRXh0cmFNYXBFbnRyeRInCgZvYmplY3QYAiABKAsyFy5lbnRpdGllcy5BSVNjZW5lT2JqZWN0Gi8KDUV4dHJhTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI3Cg1BSVNjZW5lT2JqZWN0EhEKCW9iamVjdF9pZBgBIAEoCRITCgtvYmplY3RfdHlwZRgCIAEoCSIqCg5BdEFJSW5DaGF0SW5mbxIYChBpc19hdF9haV9pbl9jaGF0GAEgASgIIqwBCg5BSUxpa2VGZWVkYmFjaxISCgptZXNzYWdlX2lkGAEgASgJEjsKBnN0YXR1cxgCIAEoDjIrLmVudGl0aWVzLkFJTGlrZUZlZWRiYWNrLkxpa2VGZWVkYmFja1N0YXR1cxIPCgd2ZXJzaW9uGAMgASgDIjgKEkxpa2VGZWVkYmFja1N0YXR1cxILCgdVTktOT1dOEAASCAoETElLRRABEgsKB0RJU0xJS0UQAiKYBAodQ2hhdEJhbm5lckZpcnN0UG9zaXRpb25EZXRhaWwSDwoHY2hhdF9pZBgBIAIoAxIdChVjaGF0X21lc3NhZ2VfcG9zaXRpb24YAiACKAUSHAoUY2hhdF90aHJlYWRfcG9zaXRpb24YAyABKAUSPwoEdGV4dBgEIAMoCzIxLmVudGl0aWVzLkNoYXRCYW5uZXJGaXJzdFBvc2l0aW9uRGV0YWlsLlRleHRFbnRyeRIdChVjbGVhbl9oaXN0b3J5X21lc3NhZ2UYBSABKAgSRwoLYmFubmVyX3R5cGUYBiABKA4yMi5lbnRpdGllcy5DaGF0QmFubmVyRmlyc3RQb3NpdGlvbkRldGFpbC5CYW5uZXJUeXBlElAKDW1hc2tfbWVzc2FnZXMYByADKAsyOS5lbnRpdGllcy5DaGF0QmFubmVyRmlyc3RQb3NpdGlvbkRldGFpbC5NYXNrTWVzc2FnZXNFbnRyeRorCglUZXh0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpGChFNYXNrTWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAUSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5NZXNzYWdlOgI4ASI5CgpCYW5uZXJUeXBlEgsKB1VOS05PV04QABINCglSRVRFTlRJT04QARIPCgtGUkVFX1RFTkFOVBACIpYBChBQcmV2aWV3SGFuZ1BvaW50EhIKCnByZXZpZXdfaWQYASABKAkSIQoSbmVlZF9sb2NhbF9wcmV2aWV3GAIgASgIOgVmYWxzZRIhChJjbG9zZV9jYXJkX3ByZXZpZXcYAyABKAg6BWZhbHNlEgsKA3VybBgEIAEoCRIbCgxpc19sYXp5X2xvYWQYBSABKAg6BWZhbHNlItEBChRQcmV2aWV3SGFuZ1BvaW50UGFpchJeChp1cmxfcHJldmlld19oYW5nX3BvaW50X21hcBgBIAMoCzI6LmVudGl0aWVzLlByZXZpZXdIYW5nUG9pbnRQYWlyLlVybFByZXZpZXdIYW5nUG9pbnRNYXBFbnRyeRpZChtVcmxQcmV2aWV3SGFuZ1BvaW50TWFwRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgLMhouZW50aXRpZXMuUHJldmlld0hhbmdQb2ludDoCOAEipAIKEklNUGFydERhdGFSZWNvdmVyeRJLChNwb3NpdGlvbl9jaGF0X3JhbmdlGAEgASgLMi4uZW50aXRpZXMuSU1QYXJ0RGF0YVJlY292ZXJ5LlBvc2l0aW9uQ2hhdFJhbmdlEk8KFXBvc2l0aW9uX3RocmVhZF9yYW5nZRgCIAEoCzIwLmVudGl0aWVzLklNUGFydERhdGFSZWNvdmVyeS5Qb3NpdGlvblRocmVhZFJhbmdlGjUKEVBvc2l0aW9uQ2hhdFJhbmdlEhAKCGNoYXRfaWRzGAEgAygDEg4KBmlzX2FsbBgCIAEoCBo5ChNQb3NpdGlvblRocmVhZFJhbmdlEhIKCnRocmVhZF9pZHMYASADKAMSDgoGaXNfYWxsGAIgASgIIokBChBGZWVkVW5yZWFkRW50aXR5EhQKDGZlZWRfY2FyZF9pZBgBIAEoAxIvCg5mZWVkX2NhcmRfdHlwZRgCIAEoDjIXLmVudGl0aWVzLkZlZWRDYXJkLlR5cGUSFAoMdW5yZWFkX2NvdW50GAMgASgFEhgKEHVwZGF0ZV90aW1lX3VuaXgYBCABKAMi6gEKDVVzZXJHcm91cE5vZGUSEAoIZ3JvdXBfaWQYASABKAMSEgoKZ3JvdXBfbmFtZRgCIAEoCRJFChBncm91cF9pMThuX25hbWVzGAMgAygLMisuZW50aXRpZXMuVXNlckdyb3VwTm9kZS5Hcm91cEkxOG5OYW1lc0VudHJ5EhkKEWdyb3VwX2Rlc2NyaXB0aW9uGAQgASgJEhoKEmdyb3VwX21lbWJlcl9jb3VudBgFIAEoBRo1ChNHcm91cEkxOG5OYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEipwIKE1R1cnRsZUNhbnZhc0NvbnRlbnQSEgoKc2NyaXB0X2tleRgBIAEoCRIWCg5zY3JpcHRfdmVyc2lvbhgCIAEoBRIMCgRkYXRhGAMgASgMEjwKCmF0dGFjaG1lbnQYBCABKAsyKC5lbnRpdGllcy5UdXJ0bGVDYW52YXNDb250ZW50LkF0dGFjaG1lbnQalwEKCkF0dGFjaG1lbnQSRAoGaW1hZ2VzGAEgAygLMjQuZW50aXRpZXMuVHVydGxlQ2FudmFzQ29udGVudC5BdHRhY2htZW50LkltYWdlc0VudHJ5GkMKC0ltYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmVudGl0aWVzLkltYWdlU2V0VjI6AjgBIk0KFlR1cnRsZUNhbnZhc1NjcmlwdEluZm8SEAoIZmlsZV9rZXkYASABKAkSDwoHdmVyc2lvbhgCIAEoBRIQCghmaWxlX21kNRgDIAEoCSIxCglFdmVudFRpbWUSEgoKc3RhcnRfdGltZRgBIAEoCRIQCghlbmRfdGltZRgCIAEoCSKIAQoUT3BlcmF0ZUluc3RhbmNlRmllbGQSGwoTaW5zdGFuY2Vfc3RhcnRfdGltZRgBIAEoCRIZChFpbnN0YW5jZV9lbmRfdGltZRgCIAEoCRI4ChNjYWxlbmRhcl9ldmVudF9zcGFuGAMgASgOMhsuZW50aXRpZXMuQ2FsZW5kYXJFdmVudFNwYW4i3QcKCkV2ZW50RmllbGQSDwoHc3VtbWFyeRgBIAEoCRIoCiBpbmRpdmlkdWFsX2F0dGVuZGVlX2NhbGVuZGFyX2lkcxgCIAMoCRIjChtlbWFpbF9hdHRlbmRlZV9jYWxlbmRhcl9pZHMYAyADKAkSIwobcGhvbmVfYXR0ZW5kZWVfY2FsZW5kYXJfaWRzGAQgAygJEh8KF2dyb3VwX2F0dGVuZGVlX2NoYXRfaWRzGAUgAygJEjoKFGF0dGVuZGVlX3Blcm1pc3Npb25zGAYgAygOMhwuZW50aXRpZXMuQXR0ZW5kZWVQZXJtaXNzaW9uEh0KFWV2ZW50X3N0YXJ0X3RpbWVzdGFtcBgHIAEoCRIbChNldmVudF9lbmRfdGltZXN0YW1wGAggASgJEhUKDWFsbF9kYXlfZXZlbnQYCSABKAgSDQoFcnJ1bGUYCiABKAkSFgoOc3RhcnRfdGltZXpvbmUYCyABKAkSFAoMZW5kX3RpbWV6b25lGAwgASgJEjEKDXZfY2hhdF9jb25maWcYDSABKAsyGi5lbnRpdGllcy5FdmVudFZDaGF0Q29uZmlnEh0KFXJlc291cmNlX2NhbGVuZGFyX2lkcxgOIAMoCRIxCghsb2NhdGlvbhgPIAEoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRMb2NhdGlvbhI1Cg9jaGVja19pbl9jb25maWcYECABKAsyHC5lbnRpdGllcy5FdmVudENoZWNrSW5Db25maWcSOAoTbWVldGluZ19jaGF0X2NvbmZpZxgRIAEoCzIbLmVudGl0aWVzLk1lZXRpbmdDaGF0Q29uZmlnEj8KF21lZXRpbmdfbm90ZXNfYmluZF90eXBlGBIgASgOMh4uZW50aXRpZXMuTWVldGluZ05vdGVzQmluZFR5cGUSGwoTbWVldGluZ19ub3Rlc190b2tlbhgTIAEoCRITCgtkZXNjcmlwdGlvbhgUIAEoCRI2CgthdHRhY2htZW50cxgVIAMoCzIhLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRhY2htZW50EiUKCXJlbWluZGVycxgWIAMoCzISLmVudGl0aWVzLlJlbWluZGVyEhMKC2NhbGVuZGFyX2lkGBcgASgJEhMKC2NvbG9yX2luZGV4GBggASgFEjYKCnZpc2liaWxpdHkYGSABKA4yIi5lbnRpdGllcy5DYWxlbmRhckV2ZW50LlZpc2liaWxpdHkSDwoHaXNfZnJlZRgaIAEoCBILCgN1aWQYGyABKAkSFQoNb3JpZ2luYWxfdGltZRgcIAEoCSr5AQoKQ29sb3JJbmRleBIRCg1DT0xPUl9DQVJNSU5FEAASDQoJQ09MT1JfUkVEEAESEAoMQ09MT1JfT1JBTkdFEAISEAoMQ09MT1JfWUVMTE9XEAMSDwoLQ09MT1JfR1JFRU4QBBITCg9DT0xPUl9UVVJRVU9JU0UQBRIOCgpDT0xPUl9CTFVFEAYSEAoMQ09MT1JfV0FUSEVUEAcSEAoMQ09MT1JfSU5ESUdPEAgSEAoMQ09MT1JfUFVSUExFEAkSEAoMQ09MT1JfVklPTEVUEAoSEQoNQ09MT1JfTkVVVFJBTBALEhQKEENPTE9SX05PTkVfQ09MT1IQYyp6Cg1JbWFnZUNyb3BUeXBlEgoKBk9SSUdJThABEgoKBk1JRERMRRACEgkKBVRIVU1CEAMSDwoLTUlERExFX1dFQlAQBBIOCgpUSFVNQl9XRUJQEAUSDgoKTUlERExFX01QNBAGEgkKBUNPVkVSEAcSCgoGSU5UQUNUEAgqPQoLQ2hhdHRlclR5cGUSEwoPVU5LTk9XTl9DSEFUVEVSEAASCAoEVVNFUhABEgcKA0JPVBACEgYKAkFJEAMqTAoLQ2hhbm5lbFR5cGUSGAoUVU5LTk9XTl9DSEFOTkVMX1RZUEUQABIQCgxDSEFUX0NIQU5ORUwQARIRCg1FTUFJTF9DSEFOTkVMEAIqKAoITG9hZFR5cGUSBgoCVVAQARIICgRET1dOEAISCgoGTEFURVNUEAMqxQwKEkNvbXBvbmVudEF0dHJpYnV0ZRIPCgtvcmllbnRhdGlvbhABEgsKB3NwYWNpbmcQAhIOCgp3cmFwX3dpZHRoEAMSCwoHcGFkZGluZxAEEhUKEW1haW5fYXhpc19qdXN0aWZ5EAUSFAoQY3Jvc3NfYXhpc19hbGlnbhAGEhAKDHNpZGVfcGFkZGluZxAHEggKBGljb24QCBIJCgV0aXRsZRAJEgwKCGxhcmtfdGFnEAoSFgoSY2hpbGRfY29tcG9uZW50X2lkEAsSFgoSc2hvd19jb3B5X0xpbmtfQnRuEAwSEgoOc2hvd19jbG9zZV9CdG4QDRIJCgV0aGVtZRAOEggKBHR5cGUQDxIPCgt0aGVtZV9jb2xvchAQEg4KCmhlYWRlcl90YWcQERIPCgtmYXZpY29uX3VybBASEg8KC3VkX2ljb25fa2V5EBMSFwoTdWRfaWNvbl90aGVtZV9jb2xvchAUEgkKBWltYWdlEBUSBwoDYWx0EBYSEgoOY2hhdHRlcnNfY291bnQQFxISCg5jaGF0dGVyc19pbmZvcxAYEhIKDm1heF9zaG93X2NvdW50EBkSCAoEdGV4dBAaEg0KCWRpcmVjdGlvbhAbEg0KCWFjdGlvbl9pZBAcEg4KCmlzX2Rpc2FibGUQHRIUChBzdGFydF90aW1lX3N0YW1wEB4SEAoMaXNfY291bnRkb3duEB8SEQoNbnRwX2FjdGlvbl9pZBAgEgoKBmlzX2VuZBAhEhIKDmVuZF90aW1lX3N0YW1wECISEwoPbnVtYmVyX29mX2xpbmVzECMSCAoEdGFncxAkEgkKBWl0ZW1zECUSEgoOc2VsZWN0ZWRfaW5kZXgQJhIXChNhdmF0YXJfY2hhdHRlcl9pbmZvECcSCAoEc2l0ZRAoEg8KC2NvdmVyX2ltYWdlECkSDAoIZHVyYXRpb24QKhILCgdzcmNfdXJsECsSBwoDdmlkECwSDgoKaWZyYW1lX3VybBAtEgwKCGRvY190eXBlEC4SEQoNdGh1bWJuYWlsX3VybBAvEg4KCnNlY3JldF91cmwQMBIPCgtzZWNyZXRfdHlwZRAxEg4KCnNlY3JldF9rZXkQMhIQCgxzZWNyZXRfbm9uY2UQMxINCgl0YWdfY29sb3IQNBISCg50YWdfdGV4dF9jb2xvchA1Eg4KCmljb25fY29sb3IQNhIRCg1jaGF0dGVyc19tb2RlEDcSEwoPY292ZXJfaW1hZ2VfdXJsEDgSEgoOdGltZV96b25lX3R5cGUQORIPCgtmb3JtYXRfdHlwZRA6EhcKE3RpbWVfcHJlY2lzaW9uX3R5cGUQOxIOCgp0aW1lX3N0eWxlEDwSFwoTZGF0ZV9wcmVjaXNpb25fdHlwZRA9EhQKEGRhdGVfc3RhdHVzX3R5cGUQPhIOCgplbmFibGVfZ210ED8SDQoJaW1hZ2VfdXJsEEASDgoKbWl4ZWRfdGFncxBBEg0KCWZvbnRfc2l6ZRBCEg8KC2ZvbnRfd2VpZ2h0EEMSDQoJZmxleF93cmFwEEQSFQoRbWFpbl9heGlzX3NwYWNpbmcQRRIWChJjcm9zc19heGlzX3NwYWNpbmcQRhIZChVmb3JjZV91c2VfbmFycm93X21vZGUQRxILCgd1bmljb2RlEEgSDwoKc2l6ZV9sZXZlbBDIARIUCg9iYWNrZ3JvdW5kX3R5cGUQyQESGgoVYmFja2dyb3VuZF9saW5lYXJfZGVnEMoBEiMKHmJhY2tncm91bmRfbGluZWFyX3RoZW1lX2NvbG9ycxDLARIKCgV3aWR0aBDMARILCgZoZWlnaHQQzQESDgoJbWF4X3dpZHRoEM4BEg8KCm1heF9oZWlnaHQQzwESDgoJbWluX3dpZHRoENABEg8KCm1pbl9oZWlnaHQQ0QESEAoLZ3Jvd193ZWlnaHQQ0gESEgoNc2hyaW5rX3dlaWdodBDTARIPCgpmb250X2xldmVsENUBEhEKDGJvcmRlcl93aWR0aBDWARIZChRib3JkZXJfY29ybmVyX3JhZGl1cxDXARIXChJib3JkZXJfdGhlbWVfY29sb3IQ2AESEQoMYXNwZWN0X3JhdGlvENkBEg8KCmFsaWduX3NlbGYQ2gEqWQoPVHJhbnNsYXRlU291cmNlEhwKGFVOS05PV05fVFJBTlNMQVRFX1NPVVJDRRAAEhQKEE1BTlVBTF9UUkFOU0xBVEUQARISCg5BVVRPX1RSQU5TTEFURRACKlkKC0Rpc3BsYXlSdWxlEhAKDFVOS05PV05fUlVMRRAAEg8KC05PVF9ESVNQTEFZEAESFAoQT05MWV9UUkFOU0xBVElPThACEhEKDVdJVEhfT1JJR0lOQUwQAypjChlDYWxlbmRhck1vbml0b3JFbnRpdHlUeXBlEhwKGENBTEVOREFSX01PTklUT1JfVU5LTk9XThAAEhQKEEZST01fUkVHRVhfTUFUQ0gQARISCg5GUk9NX0xMTV9DSEVDSxACKkMKDVJlc0NyeXB0b1R5cGUSBwoDTk9UEAASDQoJQllfQ0xJRU5UEAESCwoHQllfRktNUxACEg0KCUJZX1NFUlZFUhADKqQBCgtUcmFuc1N0YXR1cxILCgdQRU5ESU5HEAASCgoGQUNDRVBUEAESCgoGUkVGVVNFEAISCgoGQ0FOQ0VMEAMSFgoSQ0FOQ0VMX0JZX1JFQ0VJVkVSEAgSEwoPQUJPUlRfQllfU0VOREVSEAQSFQoRQUJPUlRfQllfUkVDRUlWRVIQBRIOCgpUUkFOU19ET05FEAYSEAoMT0ZGTElORV9NT0RFEAcqmwEKElJlc291cmNlQ2xlYW5TY2VuZRIgChxVTktOT1dOX1JFU09VUkNFX0NMRUFOX1NDRU5FEAASJAogVU5JRklFRF9TVE9SQUdFX1JFR1VMQVJMWV9ERUxFVEUQARIPCgtDU0FNX0RFTEVURRACEiwKKFVOSUZJRURfU1RPUkFHRV9SRUdVTEFSTFlfREVMRVRFX0JZX1VTRVIQAyprChBGaWxlUHJldmlld1N0YWdlEhAKDFVua25vd25TdGFnZRAAEgoKBk5vcm1hbBABEg0KCUVuY3J5cHRlZBACEhQKEE5vdFN1cHBvcnRlZFR5cGUQAxIUChBOb3RTdXBwb3J0ZWRTaXplEAQqNwoKU3BlY2lhbFVSTBIPCgtVTktOT1dOX1VSTBAAEggKBEJFQVIQARIOCgpFTlRJVFlfTlVNEAIqUgoRRGVmRGlzcGxheVNldHRpbmcSHwobVU5LTk9XTl9ERUZfRElTUExBWV9TRVRUSU5HEAASDQoJSU5QVVRfQk9YEAESDQoJQ0hBVF9NRU5VEAIqcAoRR3JvdXBTb3J0UnVsZVR5cGUSFgoSR1JPVVBfREVGQVVMVF9TT1JUEAESFQoRR1JPVVBfVVBEQVRFX1RJTUUQAhIVChFHUk9VUF9DUkVBVEVfVElNRRADEhUKEUdST1VQX05VTV9NRU1CRVJTEAQqhwIKCUdyb3VwVHlwZRIOCgpERVBBUlRNRU5UEAASCgoGUFVCTElDEAESCQoFSU5ORVIQAhITCg9HUk9VUF9DT01QQU5JRVMQAxIUChBDVVNUT01FUl9TRVJWSUNFEAQSCwoHTUVFVElORxAFEgoKBlRFTkFOVBAGEhAKDE9OQ0FMTF9HUk9VUBAHEgwKCFBVQkxJQ1YyEAgSDwoLTEFSR0VfR1JPVVAQCRIVChFTQU1FX1BBR0VfTUVFVElORxAKEgcKA0VEVRALEgkKBVNVUEVSEAwSCAoEVEVBTRANEg4KClZDX01FRVRJTkcQDhIZChVPQ0lDX0NVU1RPTUVSX1NFUlZJQ0UQEip0CgtDaGF0Qml6VHlwZRIPCgtVTktOT1dOX0JJWhAAEg8KC0NIQVRfV0lER0VUEAESDgoKQ0hBVF9USEVNRRACEhIKDkNIQVRfTUVOVV9UWVBFEAMSDAoIQ0hBVF9QSU4QBBIRCg1DSEFUX1BJTl9JTkZPEAUqUQoMQ2hhdFBvc3RUeXBlEhUKEVVOS05PV05fUE9TVF9UWVBFEAASCgoGQU5ZT05FEAESDgoKT05MWV9BRE1JThACEg4KCldISVRFX0xJU1QQAyqSAQoQVGVuYW50TmFtZVN0YXR1cxIeChpURU5BTlRfTkFNRV9TVEFUVVNfVU5LTk9XThAAEiEKHVRFTkFOVF9OQU1FX1NUQVRVU19OT1RfRlJJRU5EEAESHgoaVEVOQU5UX05BTUVfU1RBVFVTX1ZJU0lCTEUQAhIbChdURU5BTlRfTkFNRV9TVEFUVVNfSElERRADKjYKC1RocmVhZFN0YXRlEhEKDVVOS05PV05fU1RBVEUQABIICgRPUEVOEAESCgoGQ0xPU0VEEAIqXQoRQ2VydGlmaWNhdGVTdGF0dXMSEgoOVU5DRVJUSUZJQ0FURUQQABIQCgxDRVJUSUZJQ0FURUQQARILCgdFWFBJUkVEEAISFQoRVEVBTV9DRVJUSUZJQ0FURUQQAyrNAgoYUHJlZGVmaW5lZFRocmVhZEZpbHRlcklEEhwKGFVOS05PV05fVEhSRUFEX0ZJTFRFUl9JRBAAEhsKF0ZPTExPV19USFJFQURfRklMVEVSX0lEEAESGwoXQ0xPU0VEX1RIUkVBRF9GSUxURVJfSUQQAhIZChVPUEVOX1RIUkVBRF9GSUxURVJfSUQQAxIcChhNWV9PV05fVEhSRUFEU19GSUxURVJfSUQQBBIeChpNWV9SRVBMWV9USFJFQURTX0ZJTFRFUl9JRBAFEiIKHk1ZX01FTlRJT05FRF9USFJFQURTX0ZJTFRFUl9JRBAGEhcKE01ZX0ZPTExPV19GSUxURVJfSUQQBxIYChRNWV9USFJFQURTX0ZJTFRFUl9JRBAIEikKJU1ZX1VOUkVBRF9NRU5USU9ORURfVEhSRUFEU19GSUxURVJfSUQQCSopCgZHZW5kZXISCwoHREVGQVVMVBAAEgcKA01BThABEgkKBVdPTUFOEAIqoAEKCFRhZ0NvbG9yEggKBEJMVUUQABIICgRHUkFZEAESCgoGSU5ESUdPEAISCgoGV0FUSEVUEAMSCQoFR1JFRU4QBBINCglUVVJRVU9JU0UQBRIKCgZZRUxMT1cQBhIICgRMSU1FEAcSBwoDUkVEEAgSCgoGT1JBTkdFEAkSCgoGUFVSUExFEAoSCgoGVklPTEVUEAsSCwoHQ0FSTUlORRAMKkoKCFRpbWVVbml0EgoKBlNFQ09ORBAAEgoKBk1JTlVURRABEggKBEhPVVIQAhIHCgNEQVkQAxIJCgVNT05USBAEEggKBFlFQVIQBSpICgpOb3RpY2VUeXBlEhIKDk5vdGljZV9kZWZhdWx0EAASEgoORElHSVRBTF9OT1RJQ0UQARISCg5SRURfRE9UX05PVElDRRACKkcKB011dGVXYXkSFAoQVU5LTk9XTl9NVVRFX1dBWRAAEhEKDUFVVE9fTVVURV9XQVkQARITCg9NQU5VQUxfTVVURV9XQVkQAiorCgpMZWFkZXJUeXBlEg4KCk1haW5MZWFkZXIQARINCglTdWJMZWFkZXIQAionCgtFbWFpbEZpZWxkcxILCgdVTktOT1dOEAASCwoHU1VCSkVDVBABKjMKCUVtYWlsUm9sZRIWChJVTktOT1dOX0VNQUlMX1JPTEUQABIGCgJUTxABEgYKAkNDEAIqhwEKDExhbmd1YWdlVHlwZRIUChBVTktOT1dOX0xBTkdVQUdFEAASCQoFWkhfQ04QARIJCgVFTl9VUxACEgkKBUpBX0pQEAMSCQoFRlJfRlIQBBIJCgVERV9ERRAFEgkKBUVTX0VTEAYSCQoFUlVfUlUQBxIJCgVBUl9FRxAIEgkKBVBUX1BUEAkqqgEKB0RvY1R5cGUSFAoQVU5LTk9XTl9ET0NfVFlQRRAAEgcKA0RPQxABEgkKBVNIRUVUEAISCwoHQklUQUJMRRADEgwKCE1JTkROT1RFEAQSCAoERklMRRAFEgkKBVNMSURFEAYSCAoEV0lLSRAHEggKBERPQ1gQCBIKCgZGT0xERVIQCRILCgdDQVRBTE9HEAoSCgoGU0xJREVTEAsSDAoIU0hPUlRDVVQQDCq8AgoPRG9jU29ydFJ1bGVUeXBlEhAKDERFRkFVTFRfVFlQRRABEg0KCU9QRU5fVElNRRACEg0KCUVESVRfVElNRRAEEhEKDUVESVRfVElNRV9BU0MQBRIPCgtGSUxURVJfT1BFThAIEg8KC0ZJTFRFUl9FRElUEBASEwoPTVNHX0NSRUFURV9USU1FECASGgoWRU5USVRZX0NSRUFURV9USU1FX0FTQxBAEhsKF0VOVElUWV9DUkVBVEVfVElNRV9ERVNDEEESEQoMVEFHX1RJTUVfQVNDEIABEhIKDVRBR19USU1FX0RFU0MQgQESEAoLQ1JFQVRFX1RJTUUQgAISFAoPQ1JFQVRFX1RJTUVfQVNDEIECEhIKDUZJTEVfU0laRV9BU0MQgAQSEwoORklMRV9TSVpFX0RFU0MQgQQqWAoIRmlsZVR5cGUSDgoKRklMRV9WSURFTxABEg4KCkZJTEVfQVVESU8QAhIOCgpGSUxFX0lNQUdFEAMSDAoIRklMRV9QREYQBBIOCgpGSUxFX09USEVSEGMqNwoISWNvblR5cGUSFQoRVU5LTk9XTl9JQ09OX1RZUEUQABIJCgVFTU9KSRABEgkKBUlNQUdFEAIqPQoTV2ViaW5hckF0dGVuZGVlVHlwZRILCgdVbmtub3duEAASCwoHU3BlYWtlchABEgwKCEF1ZGllbmNlEAIqdwoWRXZlbnRDcm9zc0xhbmd1YWdlVHlwZRIQCgxUWVBFX1VOS05PV04QABIPCgtBTExfQ0hJTkVTRRABEhMKD0FMTF9OT05fQ0hJTkVTRRACEiUKIUxFQVNUX09ORV9DSElORVNFX0FORF9OT05fQ0hJTkVTRRADKn4KG0Nyb3NzTGFuZ3VhZ2VVbmtub3duU3ViVHlwZRIUChBTVUJfVFlQRV9VTktOT1dOEAASEgoOU01BTExfTEFOR1VBR0UQARI1CjFIQVNfQ0hJTkVTRV9BTkRfRU5HTElTSF9CVVRfT1JHQU5JWkVSX05PTl9DSElORVNFEAIqYQodQ3Jvc3NMYW5ndWFnZVN1bW1hcnlBcHBseVR5cGUSFgoSQVBQTFlfVFlQRV9VTktOT1dOEAASEQoNQVBQTFlfU1VNTUFSWRABEhUKEU5PVF9BUFBMWV9TVU1NQVJZEAIqRgoURXF1aXBtZW50UmVxdWlyZVR5cGUSGAoUUmVxdWlyZU5vbmVFcXVpcG1lbnQQABIUChBJbmNsdWRlUHJvamVjdG9yEAEqawoQTGFzdFdhaXRUaW1lVHlwZRIWChJCRUZPUkVfRVZFTlRfU1RBUlQQARIUChBXSEVOX0VWRU5UX1NUQVJUEAISFQoRQUZURVJfRVZFTlRfU1RBUlQQAxISCg5XSEVOX0VWRU5UX0VORBAEKkMKDldhaXRMaXN0U3RhdHVzEgsKB1dBSVRJTkcQARILCgdTVUNDRUVEEAISCgoGRkFJTEVEEAMSCwoHUkVNT1ZFRBAEKjcKClNjcm9sbFR5cGUSDgoKRVZFTlRfSU5GTxABEhkKFU1FRVRJTkdfVFJBTlNGRVJfQ0hBVBACKkMKE1VzZXJFdmVudFZpc2liaWxpdHkSDwoLQlVTWV9SRUFERVIQABIPCgtGUkVFX1JFQURFUhABEgoKBlJFQURFUhACKkIKEUFsdGVybmF0ZUNhbGVuZGFyEhEKDU5PTkVfQ0FMRU5EQVIQABIaChZDSElORVNFX0xVTkFSX0NBTEVOREFSEAEqagoTRW1haWxFdmVudFN5bmNSYW5nZRIQCgxVTktOT1dOX1NZTkMQABITCg9BTExfRU1BSUxfRVZFTlQQARIQCgxLTk9XTl9TRU5ERVIQAhIaChZTRUxFQ1RfQUNDRVBUX0lOX0VNQUlMEAMqPQoVVGhpcmRQYXJ0eU1lZXRpbmdUeXBlEhgKFFVOS05PV05fTUVFVElOR19UWVBFEAASCgoGSlVMSUFOEAEqSwoTUmVzb3VyY2VEaXNwbGF5VHlwZRIPCgtVTlNQRUNJRklFRBAAEhEKDUJVSUxESU5HX0xJS0UQARIQCgxISUVSQVJDSElDQUwQAipnCglEYXlPZldlZWsSCgoGU1VOREFZEAASCgoGTU9OREFZEAESCwoHVFVFU0RBWRACEg0KCVdFRE5FU0RBWRADEgwKCFRIVVJTREFZEAQSCgoGRlJJREFZEAUSDAoIU0FUVVJEQVkQBiqDAwodTWVldGluZ1Jvb21VbnVzYWJsZVJlYXNvblR5cGUSGwoXVU5LTk9XTl9VTlVTQUJMRV9SRUFTT04QABIVChFPVkVSX01BWF9EVVJBVElPThABEhcKE09WRVJfTUFYX1VOVElMX1RJTUUQAhIWChJOT1RfSU5fVVNBQkxFX1RJTUUQAxIWChJEVVJJTkdfUkVRVUlTSVRJT04QBBINCglQQVNUX1RJTUUQBRIdChlCRUZPUkVfRUFSTElFU1RfQk9PS19USU1FEAcSGwoXUkVTRVJWRURfQllfT1RIRVJfRVZFTlQQCBIUChBPVkVSX1VTQUdFX0xJTUlUEAkSFwoTRk9SQklEX0lOX1JFQ1VSU0lWRRAKEhYKEk9WRVJfT05FX1BFUl9FVkVOVBALEhoKFkNBTlRfUkVTRVJWRV9PVkVSX1RJTUUQZRIYChRVUEdSQURFX0ZPUl9BUFBST1ZBTBBmEh0KGU9WRVJfUkVTRVJWRV9USU1FX0FQUFJPVkUQZypFChRDaGF0dGVyTWVldGluZ1N0YXR1cxIKCgZVTktPV04QABIICgRJRExFEAESCAoEQlVTWRACEg0KCUlOTUVFVElORxADKjEKCEZlZWRUeXBlEhAKDFVOS05PV05fVFlQRRAAEgkKBUlOQk9YEAESCAoERE9ORRACKmoKFENoYW5uZWxEYXRhRGlyZWN0aW9uEhUKEVVOS05PV05fRElSRUNUSU9OEAASDgoKQ0hBTk5FTF9VUBABEhAKDENIQU5ORUxfRE9XThACEhkKFUNIQU5ORUxfQklESVJFQ1RJT05BTBADKiQKC0VsZW1lbnRUeXBlEgkKBUdyb3VwEAASCgoGRm9sZGVyEAEqlwEKEU5hdmlnYXRpb25BcHBUeXBlEhgKFEFQUF9UWVBFX0xBUktfTkFUSVZFEAESEQoNQVBQX1RZUEVfTUlOSRACEhAKDEFQUF9UWVBFX1dFQhADEhoKFkFQUF9UWVBFX0NVU1RPTV9OQVRJVkUQBBIVChFBUFBfVFlQRV9PUEVOX0FQUBAFEhAKDEFQUF9UWVBFX1VSTBAGKj4KEk5hdmlnYXRpb25QbGF0Zm9ybRIKCgZOQVZfUEMQARIOCgpOQVZfTU9CSUxFEAISDAoITkFWX0lQQUQQAypGChJOYXZpZ2F0aW9uT3Blbk1vZGUSEAoMVU5LTk9XTl9NT0RFEAASDwoLU1dJVENIX01PREUQARINCglQVVNIX01PREUQAipKChBOYXZpZ2F0aW9uU291cmNlEhIKDlNPVVJDRV9VTktOT1dOEAASEQoNVEVOQU5UX1NPVVJDRRABEg8KC1VTRVJfU09VUkNFEAIqvgEKG0N1c3RvbU5hdmlnYXRpb25BcHBMb2dvVHlwZRIZChVBUFBfTE9HT19UWVBFX1VOS05PV04QABIaChZBUFBfTE9HT19UWVBFX1VEX1RPS0VOEAESFQoRQVBQX0xPR09fVFlQRV9VUkwQAhIbChdBUFBfTE9HT19UWVBFX0lNQUdFX0tFWRADEhoKFkFQUF9MT0dPX1RZUEVfQ0NNX0lDT04QBBIYChRBUFBfTE9HT19UWVBFX0FWQVRBUhAFKjQKCVRlbmFudFRhZxIMCghTVEFOREFSRBAAEg0KCVVOREVGSU5FRBABEgoKBlNJTVBMRRACKtkBCgxQbGF0Zm9ybVR5cGUSEwoPUGxhdGZvcm1Vbmtub3duEAASEgoOUGxhdGZvcm1JUGhvbmUQARITCg9QbGF0Zm9ybUFuZHJvaWQQAhIUChBQbGF0Zm9ybVdlYkFkbWluEAMSFAoQUGxhdGZvcm1XZWJPdGhlchAEEhMKD1BsYXRmb3JtV2luZG93cxAFEg8KC1BsYXRmb3JtTWFjEAYSFAoQUGxhdGZvcm1QYXNzcG9ydBAHEhAKDFBsYXRmb3JtSXBhZBAIEhEKDVBsYXRmb3JtTGludXgQCSpWCg5Ub3BpY0dyb3VwUm9sZRIQCgxVTktOT1dOX1JPTEUQABIVChFVTkFVVEhPUklaRURfVVNFUhABEgoKBk1FTUJFUhACEg8KC1BBUlRJQ0lQQU5UEAMqRgoRSW5jb21wYXRpYmxlTGV2ZWwSDQoJU0hPV19ISU5UEAESEAoMRElTQUJMRV9FRElUEAISEAoMRElTQUJMRV9SRUFEEAMqcwoDVGFnEg8KC1VOS05PV05fVEFHEAASDAoIQVBQUk9WQUwQARIMCghPRkZJQ0lBTBACEgoKBk9OQ0FMTBADEhIKDk9OQ0FMTF9PRkZMSU5FEAQSDAoIRVhURVJOQUwQBRIRCg1FWFRFUk5BTF9XQVJOEAYqrAIKDUNvbnRhY3RTb3VyY2USEgoOVU5LTk9XTl9TT1VSQ0UQABIICgRMSU5LEAESCAoEQ0hBVBACEgwKCENBTEVOREFSEAMSCAoERE9DUxAEEgYKAlZDEAUSCQoFRU1BSUwQBhINCglOQU1FX0NBUkQQBxIQCgxTRUFSQ0hfUEhPTkUQCBIQCgxTRUFSQ0hfRU1BSUwQCRISCg5TRUFSQ0hfQ09OVEFDVBAKEg4KCkNDTV9GT0xERVIQCxINCglDQ01fU0hFRVQQDBINCglDQ01fU0xJREUQDRIRCg1DQ01fTUlORF9OT1RFEA4SEwoPQ0NNX1NNQVJUX1RBQkxFEA8SCwoHSE9UTElORRAQEhEKDVNQRUNJQUxfRk9DVVMQExILCgdNSU5VVEVTEBQqYwoLU2lkZWJhclR5cGUSGAoUVU5LTk9XTl9TSURFQkFSX1RZUEUQABIJCgVBRE1JThABEhUKEUZFSVNIVV9BTUJBU1NBRE9SEAISGAoUTEFSS19CRU5FRklUX1VQR1JBREUQAypoChBDb250YWN0T3BlcmF0aW9uEhUKEU9QRVJBVElPTl9VTktOT1dOEAASEQoNT1BFUkFUSU9OX0FERBABEhQKEE9QRVJBVElPTl9ERUxFVEUQAhIUChBPUEVSQVRJT05fVVBEQVRFEAMqWAoKVGVhbVN0YXR1cxIXChNURUFNX1NUQVRVU19VTktOT1dOEAASFgoSVEVBTV9TVEFUVVNfQUNUSVZFEAESGQoVVEVBTV9TVEFUVVNfRElTU09MVkVEEAIqlgEKDFRlYW1DaGF0VHlwZRIaChZURUFNX0NIQVRfVFlQRV9VTktOT1dOEAASGgoWVEVBTV9DSEFUX1RZUEVfREVGQVVMVBABEhkKFVRFQU1fQ0hBVF9UWVBFX1BVQkxJQxACEhoKFlRFQU1fQ0hBVF9UWVBFX1BSSVZBVEUQAxIXChNURUFNX0NIQVRfVFlQRV9PUEVOEAQqagoOVGVhbU1lbWJlclR5cGUSHAoYVEVBTV9NRU1CRVJfVFlQRV9VTktOT1dOEAASHwobVEVBTV9NRU1CRVJfVFlQRV9JTkRJVklEVUFMEAESGQoVVEVBTV9NRU1CRVJfVFlQRV9DSEFUEAIqPgodU2VuZE1hbnVhbE9wZW5UeVByb21wdHNTdGF0dXMSDAoIQ0FOX1NFTkQQABIPCgtDQU5OT1RfU0VORBABKrQBChVDaGF0dGVyRXh0cmFTdGF0ZVR5cGUSHAoYVU5LTk9XTl9FWFRSQV9TVEFURV9UWVBFEAASHQoZSElERV9MQVJHRV9DSEFUX01VVEVfVElQUxABEhEKDVdJREdFVF9TVEFUVVMQAhIXChNQRVJTT05BTF9DSEFUX1RIRU1FEAMSHwobU0VORF9NQU5VQUxfT1BFTl9UWV9QUk9NUFRTEAQSEQoNQ0hBVF9SRUFEQUJMRRAFKj0KGkhpZGVMYXJnZUNoYXRNdXRlVGlwc1N0YXRlEhAKDERJU1BMQVlfVElQUxAAEg0KCUhJREVfVElQUxABKiMKC1dpZGdldFN0YXRlEgoKBkVYUEFORBAAEggKBEZPTEQQASpDChFDaGF0UmVhZGFibGVTdGF0ZRIZChVDSEFUX1JFQURBQkxFX1VOS05PV04QABIICgRUUlVFEAESCQoFRkFMU0UQAio9CglLZXlTdGF0dXMSDwoLS0VZX1VOS05PV04QABIPCgtLRVlfRElTQUJMRRABEg4KCktFWV9OT1JNQUwQAipZChBFbmNyeXB0aW9uU3RhdHVzEhYKEkVOQ1JZUFRJT05fVU5LTk9XThAAEhUKEUVOQ1JZUFRJT05fTk9STUFMEAESFgoSRU5DUllQVElPTl9ESVNBQkxFEAIqPAoSUmVxdWVzdFRhZ1R5cGVFbnVtEhQKEFVOS05PV05fVEFHX1RZUEUQABIQCgxSRUxBVElPTl9UQUcQASqAAQoTUmVzcG9uc2VUYWdUeXBlRW51bRIWChJSRUxBVElPTl9UQUdfVU5TRVQQABIZChVSRUxBVElPTl9UQUdfRVhURVJOQUwQARIYChRSRUxBVElPTl9UQUdfUEFSVE5FUhACEhwKGFJFTEFUSU9OX1RBR19URU5BTlRfTkFNRRADKpYBChtDcm9zc0JyYW5kQWN0aW9uVWlTdHlsZVR5cGUSFgoSU1RZTEVfVFlQRV9VTktOT1dOEAASFAoQU1RZTEVfVFlQRV9BTEVSVBABEhQKEFNUWUxFX1RZUEVfVE9BU1QQAhISCg5TVFlMRV9UWVBFX1RJUBADEh8KG1NUWUxFX1RZUEVfQUxFUlRfTk9fQ09ORklSTRAEKjwKFENoYXRTaGFyZVRhcmdldFNjZW5lEhEKDVVOS05PV05fU0NFTkUQARIRCg1TQ0VORV9CSVRBQkxFEAIqJgoNRXh0ZW5zaW9uTW9kZRIKCgZTSU5HTEUQABIJCgVNVUxUSRABKogCChJVc2VyR3JvdXBTY2VuZVR5cGUSFQoRU2NlbmVUeXBlX1VOS05PV04QABIRCg1TY2VuZVR5cGVfQ0NNEAESFgoSU2NlbmVUeXBlX0NBTEVOREFSEAISFwoTU2NlbmVUeXBlX0hFTFBfREVTSxADEhYKElNjZW5lVHlwZV9BUFBST1ZBTBAEEhsKF1NjZW5lVHlwZV9TVUJTQ1JJUFRJT05TEAUSEQoNU2NlbmVUeXBlX09LUhAGEhsKF1NjZW5lVHlwZV9PUEVOX1BMQVRGT1JNEAcSGAoUU2NlbmVUeXBlX0RJQ1RJT05BUlkQCBIYChRTY2VuZVR5cGVfQVBQX0NFTlRFUhAJKl8KDVVzZXJHcm91cFR5cGUSGQoVVXNlckdyb3VwVHlwZV9VTktOT1dOEAASGAoUVXNlckdyb3VwVHlwZV9BU1NJR04QARIZChVVc2VyR3JvdXBUeXBlX0RZTkFNSUMQAirGAQoSQXR0ZW5kZWVQZXJtaXNzaW9uEh8KG0FUVEVOREVFX1BFUk1JU1NJT05fVU5LTk9XThAAEiIKHkFUVEVOREVFX1BFUk1JU1NJT05fRURJVF9FVkVOVBABEh4KGkFUVEVOREVFX1BFUk1JU1NJT05fSU5WSVRFEAISJQohQVRURU5ERUVfUEVSTUlTU0lPTl9WSUVXX0FUVEVOREVFEAMSJAogQVRURU5ERUVfUEVSTUlTU0lPTl9DUkVBVEVfTk9URVMQBCqGAQoUTWVldGluZ05vdGVzQmluZFR5cGUSIwofTUVFVElOR19OT1RFU19CSU5EX1RZUEVfVU5LTk9XThAAEiIKHk1FRVRJTkdfTk9URVNfQklORF9UWVBFX0NSRUFURRABEiUKIU1FRVRJTkdfTk9URVNfQklORF9UWVBFX1JFTEVWQU5DRRACKqoNChJFdmVudFNjaGVkdWxlU2NlbmUSIAocRVZFTlRfU0NIRURVTEVfU0NFTkVfVU5LTk9XThAAEjsKN0VWRU5UX1NDSEVEVUxFX1NDRU5FX0ZBU1RfRVZFTlRfRURJVE9SX0ZST01fTk9STUFMX1ZJRVcQARI5CjVFVkVOVF9TQ0hFRFVMRV9TQ0VORV9GQVNUX0VWRU5UX0VESVRPUl9GUk9NX1JPT01fVklFVxACEjgKNEVWRU5UX1NDSEVEVUxFX1NDRU5FX0ZBU1RfRVZFTlRfRURJVE9SX0ZST01fTUFJTF9UQUIQAxJCCj5FVkVOVF9TQ0hFRFVMRV9TQ0VORV9GVUxMX0VWRU5UX0VESVRPUl9GUk9NX0NBTF9UQUJfQ1JFQVRFX0JUThAEEjsKN0VWRU5UX1NDSEVEVUxFX1NDRU5FX0ZVTExfRVZFTlRfRURJVE9SX0ZST01fTUVFVElOR19UQUIQBRJACjxFVkVOVF9TQ0hFRFVMRV9TQ0VORV9GVUxMX0VWRU5UX0VESVRPUl9GUk9NX0ZJTkRfVElNRV9TSU5HTEUQBhI/CjtFVkVOVF9TQ0hFRFVMRV9TQ0VORV9GVUxMX0VWRU5UX0VESVRPUl9GUk9NX0ZJTkRfVElNRV9HUk9VUBAHEkgKREVWRU5UX1NDSEVEVUxFX1NDRU5FX0ZVTExfRVZFTlRfRURJVE9SX0ZST01fRklORF9USU1FX1NJTkdMRV9NU0dfQkFSEAgSRwpDRVZFTlRfU0NIRURVTEVfU0NFTkVfRlVMTF9FVkVOVF9FRElUT1JfRlJPTV9GSU5EX1RJTUVfR1JPVVBfTVNHX0JBUhAJEjsKN0VWRU5UX1NDSEVEVUxFX1NDRU5FX0ZVTExfRVZFTlRfRURJVE9SX0ZST01fQ0FMX1BST0ZJTEUQChJSCk5FVkVOVF9TQ0hFRFVMRV9TQ0VORV9GVUxMX0VWRU5UX0VESVRPUl9GUk9NX0ZBU1RfRVZFTlRfRURJVE9SX0ZST01fTk9STUFMX1ZJRVcQCxJQCkxFVkVOVF9TQ0hFRFVMRV9TQ0VORV9GVUxMX0VWRU5UX0VESVRPUl9GUk9NX0ZBU1RfRVZFTlRfRURJVE9SX0ZST01fUk9PTV9WSUVXEAwSRApARVZFTlRfU0NIRURVTEVfU0NFTkVfRlVMTF9FVkVOVF9FRElUT1JfRlJPTV9DQUxfVEFCX0RPVUJMRV9DTElDSxANEjoKNkVWRU5UX1NDSEVEVUxFX1NDRU5FX0ZVTExfRVZFTlRfRURJVE9SX0ZST01fQ09QWV9FVkVOVBAOEkIKPkVWRU5UX1NDSEVEVUxFX1NDRU5FX0ZVTExfRVZFTlRfRURJVE9SX0ZST01fQVBQX0xJTktfV0lUSF9USU1FEA8SRQpBRVZFTlRfU0NIRURVTEVfU0NFTkVfRlVMTF9FVkVOVF9FRElUT1JfRlJPTV9BUFBfTElOS19XSVRIT1VUX1RJTUUQEBJECkBFVkVOVF9TQ0hFRFVMRV9TQ0VORV9GVUxMX0VWRU5UX0VESVRPUl9GUk9NX09SSUdJTkFMX0xJTkVfU0lOR0xFEBESQwo/RVZFTlRfU0NIRURVTEVfU0NFTkVfRlVMTF9FVkVOVF9FRElUT1JfRlJPTV9PUklHSU5BTF9MSU5FX0dST1VQEBISRQpBRVZFTlRfU0NIRURVTEVfU0NFTkVfRlVMTF9FVkVOVF9FRElUT1JfRlJPTV9BSV9QTEFDRUhPTERFUl9TSU5HTEUQExJECkBFVkVOVF9TQ0hFRFVMRV9TQ0VORV9GVUxMX0VWRU5UX0VESVRPUl9GUk9NX0FJX1BMQUNFSE9MREVSX0dST1VQEBQSRwpDRVZFTlRfU0NIRURVTEVfU0NFTkVfRlVMTF9FVkVOVF9FRElUT1JfRlJPTV9BSV9SRUNPTU1FTkRfUDJQX01TR0JBUhAVEkkKRUVWRU5UX1NDSEVEVUxFX1NDRU5FX0ZVTExfRVZFTlRfRURJVE9SX0ZST01fQUlfUkVDT01NRU5EX0dST1VQX01TR0JBUhAWEkMKP0VWRU5UX1NDSEVEVUxFX1NDRU5FX0ZVTExfRVZFTlRfRURJVE9SX0ZST01fQUlfRVZFTlRfU1VHR0VTVElPThAXEkgKREVWRU5UX1NDSEVEVUxFX1NDRU5FX0ZVTExfRVZFTlRfRURJVE9SX0ZST01fQUlfRVZFTlRfU0lNUExFX0RJQUxPR1VFEBgqsQQKFlJlY29tbWVuZFRyaWdnZXJBY3Rpb24SJAogUkVDT01NRU5EX1RSSUdHRVJfQUNUSU9OX1VOS05PV04QABIhCh1SRUNPTU1FTkRfVFJJR0dFUl9BQ1RJT05fSU5JVBABEiUKIVJFQ09NTUVORF9UUklHR0VSX0FDVElPTl9BVFRFTkRFRRACEigKJFJFQ09NTUVORF9UUklHR0VSX0FDVElPTl9USU1FX1BJQ0tFUhADEisKJ1JFQ09NTUVORF9UUklHR0VSX0FDVElPTl9USU1FX0ZSRUVfQlVTWRAEEjEKLVJFQ09NTUVORF9UUklHR0VSX0FDVElPTl9GUkVFX0JVU1lfVElNRV9SQU5HRRAFEicKI1JFQ09NTUVORF9UUklHR0VSX0FDVElPTl9JU19BTExfREFZEAYSIgoeUkVDT01NRU5EX1RSSUdHRVJfQUNUSU9OX1JSVUxFEAcSJAogUkVDT01NRU5EX1RSSUdHRVJfQUNUSU9OX1JFRlJFU0gQCBIpCiVSRUNPTU1FTkRfVFJJR0dFUl9BQ1RJT05fQUREX0FUVEVOREVFEAkSKQolUkVDT01NRU5EX1RSSUdHRVJfQUNUSU9OX0RFTF9BVFRFTkRFRRAKEikKJVJFQ09NTUVORF9UUklHR0VSX0FDVElPTl9BRERfUkVTT1VSQ0UQCxIpCiVSRUNPTU1FTkRfVFJJR0dFUl9BQ1RJT05fREVMX1JFU09VUkNFEAwqoAEKEUNhbGVuZGFyRXZlbnRTcGFuEhwKGENBTEVOREFSX0VWRU5UX1NQQU5fTk9ORRAAEiIKHkNBTEVOREFSX0VWRU5UX1NQQU5fVEhJU19FVkVOVBABEiUKIUNBTEVOREFSX0VWRU5UX1NQQU5fRlVUVVJFX0VWRU5UUxACEiIKHkNBTEVOREFSX0VWRU5UX1NQQU5fQUxMX0VWRU5UUxADQkwKFmNvbS5zcy5hbmRyb2lkLmxhcmsucGJIA1owY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL2VudGl0aWVz",[kl,y,be,OV,_V,qV,re]),fl=le(J,0);var Be=le(J,6);var Zl=le(J,9);var Kl=le(J,35);var El=le(J,56);var $V=le(J,84);var te=le(J,93,2);var Ml=le(J,94);var Dl=le(J,95);var Hl=le(J,119);var so=Ao(J,216,0),et=no(so);var lt=le(J,241);import{enumDesc as Zo,fileDesc as Eo,messageDesc as P,serviceDesc as mA,tsEnum as go}from"@bufbuild/protobuf/codegenv2";import{enumDesc as FA,fileDesc as ho,messageDesc as SA,tsEnum as XA}from"@bufbuild/protobuf/codegenv2";var he=ho("CgptaXNjLnByb3RvEgRtaXNjIikKFlB1c2hTeW5jRGV2aWNlc1JlcXVlc3QSDwoHcGF5bG9hZBgBIAIoDCIZChdQdXNoU3luY0RldmljZXNSZXNwb25zZSIkChZQdWxsR2VvSW5mb0J5SXBSZXF1ZXN0EgoKAmlwGAEgASgJIoMBChdQdWxsR2VvSW5mb0J5SXBSZXNwb25zZRI2Cgdjb3VudHJ5GAEgASgLMiUubWlzYy5QdWxsR2VvSW5mb0J5SXBSZXNwb25zZS5Db3VudHJ5GjAKB0NvdW50cnkSEwoLZ2VvX25hbWVfaWQYASABKAMSEAoIaXNvX2NvZGUYAiABKAkiPgoZQ2hhdHRlclBlcm1pc3Npb25zUmVxdWVzdBIhCgdhY3Rpb25zGAEgAygOMhAubWlzYy5BY3Rpb25UeXBlIuMCChhDaGF0dGVyc1Blcm1pc3Npb25SZXN1bHQSIAoGYWN0aW9uGAEgAigOMhAubWlzYy5BY3Rpb25UeXBlEkQKC3Blcm1pc3Npb25zGAIgAygLMi8ubWlzYy5DaGF0dGVyc1Blcm1pc3Npb25SZXN1bHQuUGVybWlzc2lvbnNFbnRyeRIWCg5hbGxvd19jaGF0dGVycxgDIAMoCRJJCg5kZW5pZWRfcmVhc29ucxgEIAMoCzIxLm1pc2MuQ2hhdHRlcnNQZXJtaXNzaW9uUmVzdWx0LkRlbmllZFJlYXNvbnNFbnRyeRoyChBQZXJtaXNzaW9uc0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoCDoCOAEaSAoSRGVuaWVkUmVhc29uc0VudHJ5EgsKA2tleRgBIAEoCRIhCgV2YWx1ZRgCIAEoDjISLm1pc2MuRGVuaWVkUmVhc29uOgI4ASJNChpDaGF0dGVyUGVybWlzc2lvbnNSZXNwb25zZRIvCgdyZXN1bHRzGAEgAygLMh4ubWlzYy5DaGF0dGVyc1Blcm1pc3Npb25SZXN1bHQiowEKEkNoYXR0ZXJzQXV0aFJlc3VsdBJDCg5kZW5pZWRfcmVhc29ucxgBIAMoCzIrLm1pc2MuQ2hhdHRlcnNBdXRoUmVzdWx0LkRlbmllZFJlYXNvbnNFbnRyeRpIChJEZW5pZWRSZWFzb25zRW50cnkSCwoDa2V5GAEgASgJEiEKBXZhbHVlGAIgASgOMhIubWlzYy5EZW5pZWRSZWFzb246AjgBIksKD0ZldGNoS2V5UmVxdWVzdBIMCgRwa2lkGAEgASgMEhsKE2VwaGVtZXJhbF9wdWJsaWNrZXkYAiABKAwSDQoFbm9uY2UYAyABKAwiHwoQRmV0Y2hLZXlSZXNwb25zZRILCgNrZXkYASABKAwipwIKJFB1dENoYXRNZW1iZXJTdXBwUm9sZUFwcHJvdmFsUmVxdWVzdBIPCgdjaGF0X2lkGAEgAigDEhkKEWFwcGx5X3VwcGVyX2xpbWl0GAIgAigFEhMKC2Rlc2NyaXB0aW9uGAMgAigJEhYKDmFwcGx5X3R5cGVfa2V5GAQgASgJEl0KDG9wZXJhdGVfdHlwZRgFIAEoDjI4Lm1pc2MuUHV0Q2hhdE1lbWJlclN1cHBSb2xlQXBwcm92YWxSZXF1ZXN0Lk9wZXJhdGlvblR5cGU6DURFRkFVTFRfQVBQTFkiRwoNT3BlcmF0aW9uVHlwZRIRCg1ERUZBVUxUX0FQUExZEAASIwofT0xfQ1JFQVRFX0NIQVRfQU5EX0NBTkNFTF9BUFBMWRABIicKJVB1dENoYXRNZW1iZXJTdXBwUm9sZUFwcHJvdmFsUmVzcG9uc2UisQEKLFB1bGxDaGF0TWVtYmVyU3VwcFJvbGVBcHByb3ZhbFNldHRpbmdSZXF1ZXN0EigKCXRlbmFudF9pZBgBIAIoA0IVisMaEXNwbGl0LHR5cGU9dGVuYW50Eg8KB2NoYXRfaWQYCyABKAMSGQoRYXBwbHlfdXBwZXJfbGltaXQYDCABKAUSEwoLZGVzY3JpcHRpb24YDSABKAkSFgoOYXBwbHlfdHlwZV9rZXkYDiABKAkinQMKLVB1bGxDaGF0TWVtYmVyU3VwcFJvbGVBcHByb3ZhbFNldHRpbmdSZXNwb25zZRIUCgxhcHByb3Zlcl9pZHMYASADKAMSIQoZYXBwbHlfdXBwZXJfbGltaXRfb3B0aW9ucxgCIAMoBRIaChJhcHByb3ZhbF9kZXNjX2xpbmsYAyABKAkSUQoKYXBwbHlfdHlwZRgEIAEoCzI9Lm1pc2MuUHVsbENoYXRNZW1iZXJTdXBwUm9sZUFwcHJvdmFsU2V0dGluZ1Jlc3BvbnNlLkFwcGx5VHlwZRrDAQoJQXBwbHlUeXBlElUKB29wdGlvbnMYASADKAsyRC5taXNjLlB1bGxDaGF0TWVtYmVyU3VwcFJvbGVBcHByb3ZhbFNldHRpbmdSZXNwb25zZS5BcHBseVR5cGUuT3B0aW9uEhYKDmRlZmF1bHRfb3B0aW9uGAIgASgJGkcKBk9wdGlvbhILCgNrZXkYASABKAkSDAoEdGV4dBgCIAEoCRINCgV0aXRsZRgDIAEoCRITCgtwbGFjZWhvbGRlchgEIAEoCSqvBgoKQWN0aW9uVHlwZRISCg5VTktOT1dOX0FDVElPThAAEhMKD0NSRUFURV9QMlBfQ0hBVBABEhQKEElOVklURV9TQU1FX0NIQVQQAhIPCgtTRU5EX1VSR0VOVBADEhAKDFNFTkRfTUVTU0FHRRAEEhMKD01BS0VfUEhPTkVfQ0FMTBAFEhkKFUNSQVRFX1AyUF9DUllQVE9fQ0hBVBAGEhgKFFZJRVdfUEVSU09OQUxfU1RBVFVTEAcSDQoJVk9JUF9DQUxMEAgSGwoXQ1JFQVRFX1NJTkdMRV9WSURFT0NIQVQQCRIVChFJTlZJVEVfVklERU9fQ0hBVBAKEhQKEFNIQVJFX1ZJREVPX0NIQVQQCxIQCgxJTlZJVEVfRVZFTlQQDBIPCgtTSEFSRV9FVkVOVBANEhIKDlRSQU5TRkVSX0VWRU5UEA4SFAoQQ0NNX1NFTkRfTUVTU0FHRRAPEhMKD0NDTV9CT1RfTUVTU0FHRRAQEhQKEENDTV9GRUVEX01FU1NBR0UQERIbChdJTlZJVEVfU0FNRV9DUllQVE9fQ0hBVBASEh0KGVNIQVJFX01FU1NBR0VfU0VMRUNUX1VTRVIQExIXChNET0NfU0hBUkVfT1JfQ1JFQVRFEBQSEwoPU0hBUkVfTkFNRV9DQVJEEBUSGgoWQ0FMRU5EQVJfUFJJVkFURV9DSEVDSxAWEg8KC0FERF9DT05UQUNUEBcSFwoTSk9JTl9DSEFUX1ZJQV9TSEFSRRAYEiEKHUlOVklURV9TQU1FX0NST1NTX1RFTkFOVF9DSEFUEBkSCQoFQkxPQ0sQHhIPCgtDT09QRVJBVElPThAfEiEKHUFMTE9XX1NFVFRJTkdfQVNfUFVCTElDX0dST1VQECASEAoMUFJJVkFURV9DSEFUECMSFAoQUFJJVkFURV9QMlBfQ0hBVBAkEiAKHFBSSVZBVEVfU0VORF9QUklWQVRFX01FU1NBR0UQJRIiCh5DUkVBVEVfUFJJVkFURV9DSEFUX0FORF9JTlZJVEUQJhITCg9UQVNLX0FERF9NRU1CRVIQJxIPCgtDSEVDS19CTE9DSxAoKscDCgxEZW5pZWRSZWFzb24SEgoOVU5LTk9XTl9SRUFTT04QABIOCgpCRV9CTE9DS0VEEAESFQoRQ1JPU1NfVEVOQU5UX0RFTlkQAhIUChBTQU1FX1RFTkFOVF9ERU5ZEAMSFAoQQ1JZUFRPX0NIQVRfREVOWRAEEgsKB0JMT0NLRUQQBRIRCg1OT19GUklFTkRTSElQEAYSEwoPUFJJVkFDWV9TRVRUSU5HEAcSGgoWVEFSR0VUX1BSSVZBQ1lfU0VUVElORxAIEhQKEFBSSVZBVEVfQ0FMRU5EQVIQCRIbChdFWFRFUk5BTF9DT09SRElOQVRFX0NUTBAKEiIKHlRBUkdFVF9FWFRFUk5BTF9DT09SRElOQVRFX0NUTBALEiEKHVNFTkRfU0VDUkVUX0NIQVRfQllfSUNPTl9ERU5ZEAwSGQoVUFJJVkFURV9DSEFUX0RJU0FCTEVEEA8SIAocUFJJVkFURV9DSEFUX0tNU19VTkFWQUlMQUJMRRAQEhUKEVBSSVZBVEVfQ0hBVF9ERU5ZEBESHQoZUFJJVkFURV9DSEFUX0NST1NTX1RFTkFOVBASEhIKDk5PVF9TVVBQT1JUX0FJEDNCSAoWY29tLnNzLmFuZHJvaWQubGFyay5wYkgDWixjb2RlLmJ5dGVkLm9yZy9sYXJrL2ltLXByb3RvYnVmL2ltcHJvdG8vbWlzYw",[y]);var w=Eo("Cg5tZXNzYWdlcy5wcm90bxIIbWVzc2FnZXMiSgoiUHVsbE1lc3NhZ2VMYXN0VmlzaWJsZUluZm9zUmVxdWVzdBIQCghjaGF0X2lkcxgBIAMoCRISCgp0aHJlYWRfaWRzGAIgAygJIukECiNQdWxsTWVzc2FnZUxhc3RWaXNpYmxlSW5mb3NSZXNwb25zZRJdChFjaGF0X3Zpc2libGVfaW5mbxgBIAMoCzJCLm1lc3NhZ2VzLlB1bGxNZXNzYWdlTGFzdFZpc2libGVJbmZvc1Jlc3BvbnNlLkNoYXRWaXNpYmxlSW5mb0VudHJ5EmoKGGNoYXRfdGhyZWFkX3Zpc2libGVfaW5mbxgCIAMoCzJILm1lc3NhZ2VzLlB1bGxNZXNzYWdlTGFzdFZpc2libGVJbmZvc1Jlc3BvbnNlLkNoYXRUaHJlYWRWaXNpYmxlSW5mb0VudHJ5EmEKE3RocmVhZF92aXNpYmxlX2luZm8YAyADKAsyRC5tZXNzYWdlcy5QdWxsTWVzc2FnZUxhc3RWaXNpYmxlSW5mb3NSZXNwb25zZS5UaHJlYWRWaXNpYmxlSW5mb0VudHJ5GlgKFENoYXRWaXNpYmxlSW5mb0VudHJ5EgsKA2tleRgBIAEoAxIvCgV2YWx1ZRgCIAEoCzIgLmVudGl0aWVzLk1lc3NhZ2VMYXN0VmlzaWJsZUluZm86AjgBGl4KGkNoYXRUaHJlYWRWaXNpYmxlSW5mb0VudHJ5EgsKA2tleRgBIAEoAxIvCgV2YWx1ZRgCIAEoCzIgLmVudGl0aWVzLk1lc3NhZ2VMYXN0VmlzaWJsZUluZm86AjgBGloKFlRocmVhZFZpc2libGVJbmZvRW50cnkSCwoDa2V5GAEgASgDEi8KBXZhbHVlGAIgASgLMiAuZW50aXRpZXMuTWVzc2FnZUxhc3RWaXNpYmxlSW5mbzoCOAEiVQoXR2VuTGFya1JlcG9ydFVybFJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIRCglsYW5nX3R5cGUYAiACKAkiTQoYR2VuTGFya1JlcG9ydFVybFJlc3BvbnNlEhIKCnJlcG9ydF91cmwYASACKAkSHQoVb3Blbl9wY19jdXN0b21pemVkX3d2GAIgASgIIr0OChFQdXRNZXNzYWdlUmVxdWVzdBIkCgR0eXBlGAEgASgOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlEjQKB2NvbnRlbnQYAiABKAsyIy5tZXNzYWdlcy5QdXRNZXNzYWdlUmVxdWVzdC5Db250ZW50EicKB2NoYXRfaWQYAyABKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSDwoHcm9vdF9pZBgEIAEoCRIRCglwYXJlbnRfaWQYBSABKAkSCwoDY2lkGAYgASgJEhkKC2lzX25vdGlmaWVkGAcgASgIOgR0cnVlEhoKDHNlbmRfdG9fY2hhdBgIIAEoCDoEdHJ1ZRISCgd2ZXJzaW9uGAkgASgFOgEwEh0KFWlzX3RocmVhZF9ncm91cF90b3BpYxgKIAEoCBIUCgxpc19hbm9ueW1vdXMYCyABKAgSGgoSaXNfcmVwbHlfaW5fdGhyZWFkGAwgASgIEhQKDGlzX2VuY3J5cHRlZBgNIAEoCBIXCg9hdF91c2VyX2lkX2xpc3QYDiADKAMSEAoIaXNfc2hhcmUYDyABKAgSMAoPYWlfaW5mb19jb250ZXh0GBAgASgLMhcuZW50aXRpZXMuQUlJbmZvQ29udGV4dBIUCgxzeW5jX3RvX2NoYXQYESABKAgSNgoScGFydGlhbF9yZXBseV9pbmZvGBIgASgLMhouZW50aXRpZXMuUGFydGlhbFJlcGx5SW5mbxIWCg5pc19zbWFydF9yZXBseRgTIAEoCBIhChlsZWZ0X3N0YXRpY19yZXNvdXJjZV9rZXlzGGUgAygJEhYKDnRocmlmdF9tZXNzYWdlGGYgASgMEg4KBm1zZ19pZBhnIAEoAxqxCQoHQ29udGVudBIMCgR0ZXh0GAEgASgJEhEKCWltYWdlX2tleRgCIAEoCRIYChBpc19vcmlnaW5fc291cmNlGB8gASgIEg0KBXRpdGxlGAMgASgJEhMKC2F0dGFjaG1lbnRzGAQgAygJEhMKC2lzX25vdGlmaWVkGAUgASgIEhEKCWF1ZGlvX2tleRgHIAEoCRIWCg5hdWRpb19kdXJhdGlvbhgIIAEoBRIPCgdjaGF0X2lkGAkgASgJEhQKDGNyeXB0b190b2tlbhgKIAEoCRIQCghmaWxlX2tleRgGIAEoCRIRCglmaWxlX25hbWUYCyABKAkSEQoJZmlsZV9taW1lGAwgASgJEhEKCWZpbGVfc2l6ZRgNIAEoAxJKCg9maWxlX3RyYW5zX21vZGUYHCABKA4yMS5tZXNzYWdlcy5QdXRNZXNzYWdlUmVxdWVzdC5Db250ZW50LkZpbGVUcmFuc01vZGUSGAoQc2VuZGVyX2RldmljZV9pZBgdIAEoCRIlCglyaWNoX3RleHQYDiABKAsyEi5lbnRpdGllcy5SaWNoVGV4dBIQCghkdXJhdGlvbhgPIAEoBRIvCg5jYWxlbmRhcl9ldmVudBgQIAEoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQSFwoPYXR0ZW5kZWVzX2NvdW50GBEgASgFEh0KFWlzX2dyb3VwX2Fubm91bmNlbWVudBgSIAEoCBI1ChFhdWRpb19yZWNvZ25pdGlvbhgTIAEoCzIaLmVudGl0aWVzLkF1ZGlvUmVjb2duaXRpb24SLQoJY2FyZF90eXBlGBQgASgOMhouZW50aXRpZXMuQ2FyZENvbnRlbnQuVHlwZRJBCgdhY3Rpb25zGBUgAygLMjAubWVzc2FnZXMuUHV0TWVzc2FnZVJlcXVlc3QuQ29udGVudC5BY3Rpb25zRW50cnkSMwoKY2FyZF9leHRyYRgWIAEoDjIfLmVudGl0aWVzLkNhcmRDb250ZW50LkV4dHJhVHlwZRIuChBjYXJkX21pbl92ZXJzaW9uGBogASgLMhQuZW50aXRpZXMuTWluVmVyc2lvbhIrCghsb2NhdGlvbhgXIAEoCzIZLmVudGl0aWVzLkxvY2F0aW9uQ29udGVudBIWCg5zdGlja2VyX3NldF9pZBgYIAEoCRISCgpzdGlja2VyX2lkGBkgASgJEhUKDXNoYXJlX3VzZXJfaWQYGyABKAkSPgoWdG9kb19vcGVyYXRpb25fY29udGVudBgeIAEoCzIeLmVudGl0aWVzLlRvZG9PcGVyYXRpb25Db250ZW50Ei8KDmVuY3J5cHRlZF9pbmZvGCAgASgLMhcuZW50aXRpZXMuRW5jcnlwdGVkSW5mbxIrCgxsaW5nb19vcHRpb24YISABKAsyFS5lbnRpdGllcy5MaW5nb09wdGlvbhpECgxBY3Rpb25zRW50cnkSCwoDa2V5GAEgASgJEiMKBXZhbHVlGAIgASgLMhQuZW50aXRpZXMuQ2FyZEFjdGlvbjoCOAEiKwoNRmlsZVRyYW5zTW9kZRILCgdVTktOT1dOEAASDQoJTEFOX1RSQU5TEAEiqwMKElB1dE1lc3NhZ2VSZXNwb25zZRIiCgdtZXNzYWdlGAEgAigLMhEuZW50aXRpZXMuTWVzc2FnZRI+Cglwb3NpdGlvbnMYAiADKAsyKy5tZXNzYWdlcy5QdXRNZXNzYWdlUmVzcG9uc2UuUG9zaXRpb25zRW50cnkSIAoGdGhyZWFkGAMgASgLMhAuZW50aXRpZXMuVGhyZWFkEiUKCWZlZWRfY2FyZBgEIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkEj8KCmZlZWRfY2FyZHMYBSADKAsyKy5tZXNzYWdlcy5QdXRNZXNzYWdlUmVzcG9uc2UuRmVlZENhcmRzRW50cnkSLwoUc3luY190b19jaGF0X21lc3NhZ2UYBiABKAsyES5lbnRpdGllcy5NZXNzYWdlGjAKDlBvc2l0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBToCOAEaRAoORmVlZENhcmRzRW50cnkSCwoDa2V5GAEgASgJEiEKBXZhbHVlGAIgASgLMhIuZW50aXRpZXMuRmVlZENhcmQ6AjgBIr0BCh1CYXRjaFB1dFAyUENoYXRNZXNzYWdlUmVxdWVzdBITCgt0b191c2VyX2lkcxgBIAMoCRI0Cgdjb250ZW50GAIgAigLMiMubWVzc2FnZXMuUHV0TWVzc2FnZVJlcXVlc3QuQ29udGVudBIrCgt0b19jaGF0X2lkcxgDIAMoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIkCgR0eXBlGAQgASgOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlIlsKHkJhdGNoUHV0UDJQQ2hhdE1lc3NhZ2VSZXNwb25zZRI5Cg9maWxlX3Blcm1fY2hlY2sYASABKAsyIC5tZXNzYWdlcy5GaWxlUGVybUNoZWNrQmxvY2tJbmZvIpIBCh9GaWxlVXBkYXRlTGFuVHJhbnNTdGF0dXNSZXF1ZXN0EiYKCm1lc3NhZ2VfaWQYASACKAlCEorDGg5zcGxpdCx0eXBlPW1zZxIrCgx0cmFuc19zdGF0dXMYAiACKA4yFS5lbnRpdGllcy5UcmFuc1N0YXR1cxIaChJyZWNlaXZlcl9kZXZpY2VfaWQYAyABKAkiRgogRmlsZVVwZGF0ZUxhblRyYW5zU3RhdHVzUmVzcG9uc2USIgoHbWVzc2FnZRgBIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2UiawoeRmlsZVVwZGF0ZVRvT2ZmbGluZU1vZGVSZXF1ZXN0EiYKCm1lc3NhZ2VfaWQYASACKAlCEorDGg5zcGxpdCx0eXBlPW1zZxIQCghmaWxlX2tleRgCIAIoCRIPCgdjaGF0X2lkGAMgASgJIkUKH0ZpbGVVcGRhdGVUb09mZmxpbmVNb2RlUmVzcG9uc2USIgoHbWVzc2FnZRgBIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2UigQEKE1BhdGNoTWVzc2FnZVJlcXVlc3QSNgoHY29udGVudBgBIAIoCzIlLm1lc3NhZ2VzLlBhdGNoTWVzc2FnZVJlcXVlc3QuQ29udGVudBIKCgJpZBgCIAIoCRomCgdDb250ZW50EgwKBHRleHQYASABKAkSDQoFdGl0bGUYAiABKAkiOgoUUGF0Y2hNZXNzYWdlUmVzcG9uc2USIgoHbWVzc2FnZRgBIAIoCzIRLmVudGl0aWVzLk1lc3NhZ2UiNgoURGVsZXRlTWVzc2FnZVJlcXVlc3QSHgoCaWQYASACKAlCEorDGg5zcGxpdCx0eXBlPW1zZyIoChVEZWxldGVNZXNzYWdlUmVzcG9uc2USDwoHbWVzc2FnZRgBIAIoCSI7ChlEZWxldGVHcm91cE1lc3NhZ2VSZXF1ZXN0Eh4KAmlkGAEgAigJQhKKwxoOc3BsaXQsdHlwZT1tc2ciUQoaRGVsZXRlR3JvdXBNZXNzYWdlUmVzcG9uc2USMwoMcmVtb3Zlcl90eXBlGAEgASgOMh0uZW50aXRpZXMuTWVzc2FnZS5SZW1vdmVyVHlwZSLTAQoXUHVsbENoYXRNZXNzYWdlc1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBITCghwb3NpdGlvbhgCIAEoBToBMBIRCgVjb3VudBgDIAEoBToCMjASPAoEdHlwZRgEIAIoDjImLm1lc3NhZ2VzLlB1bGxDaGF0TWVzc2FnZXNSZXF1ZXN0LlR5cGU6BkxBVEVTVCIpCgRUeXBlEgoKBkJFRk9SRRABEgkKBUFGVEVSEAISCgoGTEFURVNUEAMiogEKGFB1bGxDaGF0TWVzc2FnZXNSZXNwb25zZRJCCghtZXNzYWdlcxgBIAMoCzIwLm1lc3NhZ2VzLlB1bGxDaGF0TWVzc2FnZXNSZXNwb25zZS5NZXNzYWdlc0VudHJ5GkIKDU1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuTWVzc2FnZToCOAEisgEKFlB1dFJlYWRNZXNzYWdlc1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBITCgttZXNzYWdlX2lkcxgCIAMoCRIYCgxtYXhfcG9zaXRpb24YAyACKAU6Ai0xEhEKCXRocmVhZF9pZBgEIAEoCRIbChN0aHJlYWRfbWF4X3Bvc2l0aW9uGAUgASgFEhAKCGZvbGRfaWRzGAYgAygDIpYDChdQdXRSZWFkTWVzc2FnZXNSZXNwb25zZRIdChVsYXN0X21lc3NhZ2VfcG9zaXRpb24YASABKAUSGQoRbmV3X21lc3NhZ2VfY291bnQYAiABKAUSRAoKcmVhZF90aW1lcxgDIAMoCzIwLm1lc3NhZ2VzLlB1dFJlYWRNZXNzYWdlc1Jlc3BvbnNlLlJlYWRUaW1lc0VudHJ5EiQKHHRocmVhZF9sYXN0X21lc3NhZ2VfcG9zaXRpb24YBCABKAUSIAoYdGhyZWFkX25ld19tZXNzYWdlX2NvdW50GAUgASgFEhwKFHRocmVhZF9yZWFkX3Bvc2l0aW9uGAggASgFEigKIHRocmVhZF9yZWFkX3Bvc2l0aW9uX2JhZGdlX2NvdW50GAkgASgFEhUKDXJlYWRfcG9zaXRpb24YBiABKAUSIgoacmVhZF9wb3NpdGlvbl9iYWRnZWRfY291bnQYByABKAUaMAoOUmVhZFRpbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASK8AwoaUHVzaE1lc3NhZ2VSZWFkQ291bnROb3RpY2USOAoFcGFpcnMYASADKAsyKS5tZXNzYWdlcy5QdXNoTWVzc2FnZVJlYWRDb3VudE5vdGljZS5QYWlyGuMCCgRQYWlyEg8KB2NoYXRfaWQYASABKAkSEgoKbWVzc2FnZV9pZBgCIAEoCRINCgVjb3VudBgDIAEoBRITCgtjaGF0dGVyX2lkcxgEIAMoCRIUCgx1bnJlYWRfY291bnQYBSABKAUSEgoKcmVhZF9jb3VudBgGIAEoBRJCCgR0eXBlGAcgASgOMi4ubWVzc2FnZXMuUHVzaE1lc3NhZ2VSZWFkQ291bnROb3RpY2UuUGFpci5UeXBlOgRDSEFUElMKE2xhc3RfdXNlcl9yZWFkX2luZm8YCCABKAsyNi5tZXNzYWdlcy5QdXNoTWVzc2FnZVJlYWRDb3VudE5vdGljZS5QYWlyLlVzZXJSZWFkSW5mbxoyCgxVc2VyUmVhZEluZm8SDwoHdXNlcl9pZBgBIAEoCRIRCglyZWFkX3RpbWUYAiABKAMiGwoEVHlwZRIICgRDSEFUEAESCQoFRU1BSUwQAiLaAQobUHVsbE1lc3NhZ2VSZWFkU3RhdGVSZXF1ZXN0EjkKBXBhaXJzGAEgAygLMioubWVzc2FnZXMuUHVsbE1lc3NhZ2VSZWFkU3RhdGVSZXF1ZXN0LlBhaXISHAoKbmVlZF91c2VycxgCIAEoCDoEdHJ1ZUICGAEaYgoEUGFpchIPCgdjaGF0X2lkGAEgASgJEhIKCm1lc3NhZ2VfaWQYAiABKAkSFwoPZmlsdGVyX3VzZXJfaWRzGAMgAygJEhwKDWVuYWJsZV9maWx0ZXIYBCABKAg6BWZhbHNlIsgDChxQdWxsTWVzc2FnZVJlYWRTdGF0ZVJlc3BvbnNlEksKC3JlYWRfc3RhdGVzGAEgAygLMjYubWVzc2FnZXMuUHVsbE1lc3NhZ2VSZWFkU3RhdGVSZXNwb25zZS5SZWFkU3RhdGVzRW50cnka9QEKCVJlYWRTdGF0ZRIVCg1yZWFkX3VzZXJfaWRzGAEgAygJEhcKD3VucmVhZF91c2VyX2lkcxgCIAMoCRIUCgx1bnJlYWRfY291bnQYAyABKAUSEgoKcmVhZF9jb3VudBgEIAEoBRJaChNsYXN0X3VzZXJfcmVhZF9pbmZvGAUgASgLMj0ubWVzc2FnZXMuUHVsbE1lc3NhZ2VSZWFkU3RhdGVSZXNwb25zZS5SZWFkU3RhdGUuVXNlclJlYWRJbmZvGjIKDFVzZXJSZWFkSW5mbxIPCgd1c2VyX2lkGAEgASgJEhEKCXJlYWRfdGltZRgCIAEoAxpjCg9SZWFkU3RhdGVzRW50cnkSCwoDa2V5GAEgASgJEj8KBXZhbHVlGAIgASgLMjAubWVzc2FnZXMuUHVsbE1lc3NhZ2VSZWFkU3RhdGVSZXNwb25zZS5SZWFkU3RhdGU6AjgBIpoBChtQdWxsTWVzc2FnZVJlYWRVc2Vyc1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBISCgptZXNzYWdlX2lkGAIgAigJEg4KBm9mZnNldBgDIAIoCRINCgVsaW1pdBgEIAIoBRIfChBuZWVkX3RvdGFsX2NvdW50GAUgASgIOgVmYWxzZSJtChxQdWxsTWVzc2FnZVJlYWRVc2Vyc1Jlc3BvbnNlEiMKCGNoYXR0ZXJzGAEgAygLMhEuZW50aXRpZXMuQ2hhdHRlchITCgtuZXh0X29mZnNldBgCIAIoCRITCgt0b3RhbF9jb3VudBgDIAEoBSIzChxQdWxsTWVzc2FnZUlSZWFkU3RhdGVSZXF1ZXN0EhMKC21lc3NhZ2VfaWRzGAEgAygJIqABCh1QdWxsTWVzc2FnZUlSZWFkU3RhdGVSZXNwb25zZRJMCgtyZWFkX3N0YXR1cxgBIAMoCzI3Lm1lc3NhZ2VzLlB1bGxNZXNzYWdlSVJlYWRTdGF0ZVJlc3BvbnNlLlJlYWRTdGF0dXNFbnRyeRoxCg9SZWFkU3RhdHVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ASJnCh1QdWxsTWVzc2FnZU1lUmVhZFN0YXRlUmVxdWVzdBInCgttZXNzYWdlX2lkcxgBIAMoCUISisMaDnNwbGl0LHR5cGU9bXNnEh0KDm5lZWRfcmVhZF90aW1lGAIgASgIOgVmYWxzZSKhAgoeUHVsbE1lc3NhZ2VNZVJlYWRTdGF0ZVJlc3BvbnNlEk0KC3JlYWRfc3RhdHVzGAEgAygLMjgubWVzc2FnZXMuUHVsbE1lc3NhZ2VNZVJlYWRTdGF0ZVJlc3BvbnNlLlJlYWRTdGF0dXNFbnRyeRJLCgpyZWFkX3RpbWVzGAIgAygLMjcubWVzc2FnZXMuUHVsbE1lc3NhZ2VNZVJlYWRTdGF0ZVJlc3BvbnNlLlJlYWRUaW1lc0VudHJ5GjEKD1JlYWRTdGF0dXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBGjAKDlJlYWRUaW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEikwEKGENoYW5uZWxJbnZpc2libGVNZXNzYWdlcxISCgpjaGFubmVsX2lkGAEgAigJEisKDGNoYW5uZWxfdHlwZRgCIAEoDjIVLmVudGl0aWVzLkNoYW5uZWxUeXBlEjYKEmludmlzaWJsZV9tZXNzYWdlcxgDIAMoCzIaLmVudGl0aWVzLkludmlzaWJsZU1lc3NhZ2UinAkKE1B1c2hNZXNzYWdlc1JlcXVlc3QSPQoIbWVzc2FnZXMYASADKAsyKy5tZXNzYWdlcy5QdXNoTWVzc2FnZXNSZXF1ZXN0Lk1lc3NhZ2VzRW50cnkSOwoHbm90aWNlcxgCIAMoCzIqLm1lc3NhZ2VzLlB1c2hNZXNzYWdlc1JlcXVlc3QuTm90aWNlc0VudHJ5ElsKGHBhcnRpY2lwYXRlZF9tZXNzYWdlX2lkcxgDIAMoCzI5Lm1lc3NhZ2VzLlB1c2hNZXNzYWdlc1JlcXVlc3QuUGFydGljaXBhdGVkTWVzc2FnZUlkc0VudHJ5EjsKB3RocmVhZHMYBCADKAsyKi5tZXNzYWdlcy5QdXNoTWVzc2FnZXNSZXF1ZXN0LlRocmVhZHNFbnRyeRJACgpmZWVkX2NhcmRzGAUgAygLMiwubWVzc2FnZXMuUHVzaE1lc3NhZ2VzUmVxdWVzdC5GZWVkQ2FyZHNFbnRyeRJGChpjaGFubmVsX2ludmlzaWJsZV9tZXNzYWdlcxgGIAMoCzIiLm1lc3NhZ2VzLkNoYW5uZWxJbnZpc2libGVNZXNzYWdlcxJFCg1mZWVkX2NhcmRzX3YyGAcgAygLMi4ubWVzc2FnZXMuUHVzaE1lc3NhZ2VzUmVxdWVzdC5GZWVkQ2FyZHNWMkVudHJ5EkAKCmZvcmNlX3B1c2gYCCADKAsyLC5tZXNzYWdlcy5QdXNoTWVzc2FnZXNSZXF1ZXN0LkZvcmNlUHVzaEVudHJ5EkcKDm1lc3NhZ2VzX2F0X21lGAkgAygLMi8ubWVzc2FnZXMuUHVzaE1lc3NhZ2VzUmVxdWVzdC5NZXNzYWdlc0F0TWVFbnRyeRIXCg9ub3RfY2xlYXJfYmFkZ2UYCiABKAgaQgoNTWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAkSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5NZXNzYWdlOgI4ARpACgxOb3RpY2VzRW50cnkSCwoDa2V5GAEgASgJEh8KBXZhbHVlGAIgASgLMhAuZW50aXRpZXMuTm90aWNlOgI4ARo9ChtQYXJ0aWNpcGF0ZWRNZXNzYWdlSWRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ARpACgxUaHJlYWRzRW50cnkSCwoDa2V5GAEgASgJEh8KBXZhbHVlGAIgASgLMhAuZW50aXRpZXMuVGhyZWFkOgI4ARpECg5GZWVkQ2FyZHNFbnRyeRILCgNrZXkYASABKAkSIQoFdmFsdWUYAiABKAsyEi5lbnRpdGllcy5GZWVkQ2FyZDoCOAEaRgoQRmVlZENhcmRzVjJFbnRyeRILCgNrZXkYASABKAkSIQoFdmFsdWUYAiABKAsyEi5lbnRpdGllcy5GZWVkQ2FyZDoCOAEaMAoORm9yY2VQdXNoRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ARozChFNZXNzYWdlc0F0TWVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBIisKFFB1c2hNZXNzYWdlc1Jlc3BvbnNlEhMKC21lc3NhZ2VfaWRzGAEgAygJIskCCiBQdXNoTWVzc2FnZVN0YXRpY1Jlc291cmNlRGVsZXRlZBISCgptZXNzYWdlX2lkGAEgAigDElgKEHN1Yl9tZXNzYWdlc19tYXAYAiADKAsyPi5tZXNzYWdlcy5QdXNoTWVzc2FnZVN0YXRpY1Jlc291cmNlRGVsZXRlZC5TdWJNZXNzYWdlc01hcEVudHJ5EhwKFHN0YXRpY19yZXNvdXJjZV9rZXlzGAMgAygJGigKDVN1Yk1lc3NhZ2VJRHMSFwoPc3ViX21lc3NhZ2VfaWRzGAEgAygDGm8KE1N1Yk1lc3NhZ2VzTWFwRW50cnkSCwoDa2V5GAEgASgDEkcKBXZhbHVlGAIgASgLMjgubWVzc2FnZXMuUHVzaE1lc3NhZ2VTdGF0aWNSZXNvdXJjZURlbGV0ZWQuU3ViTWVzc2FnZUlEczoCOAEifAoVUHVzaEJhdGNoQ29weU1lc3NhZ2VzEhMKC21lc3NhZ2VfaWRzGAEgAygDEiUKCWZlZWRfY2FyZBgCIAIoCzISLmVudGl0aWVzLkZlZWRDYXJkEicKDGxhc3RfbWVzc2FnZRgDIAIoCzIRLmVudGl0aWVzLk1lc3NhZ2UizQUKEVB1c2hUb3BpY01lc3NhZ2VzEjsKCG1lc3NhZ2VzGAEgAygLMikubWVzc2FnZXMuUHVzaFRvcGljTWVzc2FnZXMuTWVzc2FnZXNFbnRyeRI5Cgd0aHJlYWRzGAIgAygLMigubWVzc2FnZXMuUHVzaFRvcGljTWVzc2FnZXMuVGhyZWFkc0VudHJ5Ej4KCmZlZWRfY2FyZHMYAyADKAsyKi5tZXNzYWdlcy5QdXNoVG9waWNNZXNzYWdlcy5GZWVkQ2FyZHNFbnRyeRJGChpjaGFubmVsX2ludmlzaWJsZV9tZXNzYWdlcxgEIAMoCzIiLm1lc3NhZ2VzLkNoYW5uZWxJbnZpc2libGVNZXNzYWdlcxI+Cgpmb3JjZV9wdXNoGAUgAygLMioubWVzc2FnZXMuUHVzaFRvcGljTWVzc2FnZXMuRm9yY2VQdXNoRW50cnkSRQoObWVzc2FnZXNfYXRfbWUYBiADKAsyLS5tZXNzYWdlcy5QdXNoVG9waWNNZXNzYWdlcy5NZXNzYWdlc0F0TWVFbnRyeRpCCg1NZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIgCgV2YWx1ZRgCIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2U6AjgBGkAKDFRocmVhZHNFbnRyeRILCgNrZXkYASABKAkSHwoFdmFsdWUYAiABKAsyEC5lbnRpdGllcy5UaHJlYWQ6AjgBGkQKDkZlZWRDYXJkc0VudHJ5EgsKA2tleRgBIAEoCRIhCgV2YWx1ZRgCIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkOgI4ARowCg5Gb3JjZVB1c2hFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBGjMKEU1lc3NhZ2VzQXRNZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEiQwoYUHVsbE1lc3NhZ2VzQnlJZHNSZXF1ZXN0EicKC21lc3NhZ2VfaWRzGAEgAygJQhKKwxoOc3BsaXQsdHlwZT1tc2cipAEKGVB1bGxNZXNzYWdlc0J5SWRzUmVzcG9uc2USQwoIbWVzc2FnZXMYASADKAsyMS5tZXNzYWdlcy5QdWxsTWVzc2FnZXNCeUlkc1Jlc3BvbnNlLk1lc3NhZ2VzRW50cnkaQgoNTWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAkSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5NZXNzYWdlOgI4ASKdBAoeUHVsbE1lc3NhZ2VzQnlQb3NpdGlvbnNSZXF1ZXN0EicKB2NoYXRfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSEQoJcG9zaXRpb25zGAIgAygFEkEKBHR5cGUYAyABKA4yLS5tZXNzYWdlcy5QdWxsTWVzc2FnZXNCeVBvc2l0aW9uc1JlcXVlc3QuVHlwZToEQ0hBVBIKCgJpZBgEIAEoCRIZChFtYXhfcmVsYXRpdmVfdGltZRgFIAEoAxIkChVvbmx5X3Zpc2libGVfbWVzc2FnZXMYBiABKAg6BWZhbHNlEkUKCWRpcmVjdGlvbhgHIAEoDjIyLm1lc3NhZ2VzLlB1bGxNZXNzYWdlc0J5UG9zaXRpb25zUmVxdWVzdC5EaXJlY3Rpb24SFAoMdXBfcG9zaXRpb25zGAggAygFEhYKDmRvd25fcG9zaXRpb25zGAkgAygFEh8KF3VwX2ZpbHRlcl9vdXRfcG9zaXRpb25zGAogAygFEiEKGWRvd25fZmlsdGVyX291dF9wb3NpdGlvbnMYCyADKAUSGgoSbmVlZF9uZXh0X3Bvc2l0aW9uGAwgASgIIhsKBFR5cGUSCAoEQ0hBVBABEgkKBUVNQUlMEAIiPQoJRGlyZWN0aW9uEgsKB1VOS05PV04QARIGCgJVUBACEggKBERPV04QAxIRCg1CSURJUkVDVElPTkFMEAQi0QcKH1B1bGxNZXNzYWdlc0J5UG9zaXRpb25zUmVzcG9uc2USSQoIbWVzc2FnZXMYASADKAsyNy5tZXNzYWdlcy5QdWxsTWVzc2FnZXNCeVBvc2l0aW9uc1Jlc3BvbnNlLk1lc3NhZ2VzRW50cnkSIgoaY3J5cHRvX2NoYXRfZmlyc3RfcG9zaXRpb24YAiABKAUSTwoMcmVhZF90aW1lX21zGAMgAygLMjkubWVzc2FnZXMuUHVsbE1lc3NhZ2VzQnlQb3NpdGlvbnNSZXNwb25zZS5SZWFkVGltZU1zRW50cnkSXAoSaW52aXNpYmxlX21lc3NhZ2VzGAQgAygLMkAubWVzc2FnZXMuUHVsbE1lc3NhZ2VzQnlQb3NpdGlvbnNSZXNwb25zZS5JbnZpc2libGVNZXNzYWdlc0VudHJ5EjIKEGNyeXB0b19jaGF0X2luZm8YBSABKAsyGC5lbnRpdGllcy5DcnlwdG9DaGF0SW5mbxISCgpjaGFubmVsX2lkGAYgASgJEisKDGNoYW5uZWxfdHlwZRgHIAEoDjIVLmVudGl0aWVzLkNoYW5uZWxUeXBlEhcKD2J1cm5lZF9tZXNzYWdlcxgIIAMoBRIYChBleHBpcmVkX21lc3NhZ2VzGAkgAygFEiMKF2RhdGFfcmV0ZW50aW9uX3Bvc2l0aW9uGAogASgFQgIYARIQCghoYXNfbW9yZRgLIAEoCBIVCg1uZXh0X3Bvc2l0aW9uGAwgASgFEiAKGHVucmVtb3ZlZF9tZXNzYWdlc19jb3VudBgNIAEoBRI4ChdpbnZhbGlkX3Bvc2l0aW9uX3JhbmdlcxgOIAMoCzIXLmVudGl0aWVzLlBvc2l0aW9uUmFuZ2USTQocYmFubmVyX2ZpcnN0X3Bvc2l0aW9uX2RldGFpbBgPIAEoCzInLmVudGl0aWVzLkNoYXRCYW5uZXJGaXJzdFBvc2l0aW9uRGV0YWlsEiIKGmFibm9ybWFsX21lc3NhZ2VfcG9zaXRpb25zGBAgAygFGkIKDU1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgFEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuTWVzc2FnZToCOAEaMQoPUmVhZFRpbWVNc0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoAzoCOAEaVAoWSW52aXNpYmxlTWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAUSKQoFdmFsdWUYAiABKAsyGi5lbnRpdGllcy5JbnZpc2libGVNZXNzYWdlOgI4ASLGAQoNRm9yd2FyZFRhcmdldBIwCgt0YXJnZXRfdHlwZRgBIAIoDjIbLm1lc3NhZ2VzLkZvcndhcmRUYXJnZXRUeXBlEkoKE3RocmVhZF9pZHNfY2lkc19tYXAYAiADKAsyLS5tZXNzYWdlcy5Gb3J3YXJkVGFyZ2V0LlRocmVhZElkc0NpZHNNYXBFbnRyeRo3ChVUaHJlYWRJZHNDaWRzTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKOAQoTRm9yd2FyZFJlc3BvbnNlSW5mbxIPCgdjaGF0X2lkGAEgASgJEiIKB21lc3NhZ2UYAiABKAsyES5lbnRpdGllcy5NZXNzYWdlEiUKCWZlZWRfY2FyZBgDIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkEg4KBmZhaWxlZBgEIAEoCBILCgNjaWQYBSABKAkisAEKFlN0YXRpY1Jlc291cmNlVHJhbnNtaXQSRAoNcmVzb3VyY2VfdHlwZRgBIAIoDjItLm1lc3NhZ2VzLlN0YXRpY1Jlc291cmNlVHJhbnNtaXQuUmVzb3VyY2VUeXBlEhAKCGZpbGVfa2V5GAIgAigJIj4KDFJlc291cmNlVHlwZRILCgdVTktOT1dOEAASCQoFSU1BR0UQARIJCgVNRURJQRACEgsKB1NUSUNLRVIQAyLVBAoZUHV0VHJhbnNtaXRNZXNzYWdlUmVxdWVzdBIoCghjaGF0X2lkcxgBIAMoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBISCgptZXNzYWdlX2lkGAIgAigJEjsKBGNpZHMYAyADKAsyLS5tZXNzYWdlcy5QdXRUcmFuc21pdE1lc3NhZ2VSZXF1ZXN0LkNpZHNFbnRyeRISCgd2ZXJzaW9uGAQgASgFOgEwEkYKGHN0YXRpY19yZXNvdXJjZV90cmFuc21pdBgIIAEoCzIgLm1lc3NhZ2VzLlN0YXRpY1Jlc291cmNlVHJhbnNtaXRCAhgBEhYKDnRocmlmdF9tZXNzYWdlGAUgASgMEkEKB3RhcmdldHMYBiADKAsyMC5tZXNzYWdlcy5QdXRUcmFuc21pdE1lc3NhZ2VSZXF1ZXN0LlRhcmdldHNFbnRyeRI4ChZjb3BpZWRfdGhyaWZ0X21lc3NhZ2VzGAcgASgLMhgubWVzc2FnZXMuQ29waWVkTWVzc2FnZXMSHwoXb3JpZ2luX21lcmdlX2ZvcndhcmRfaWQYCSABKAkSNQoRaW1tdXRhYmxlX21lc3NhZ2UYZCABKAsyGi5tZXNzYWdlcy5JbW11dGFibGVNZXNzYWdlGisKCUNpZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGkcKDFRhcmdldHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5tZXNzYWdlcy5Gb3J3YXJkVGFyZ2V0OgI4ASJ2ChBJbW11dGFibGVNZXNzYWdlEhIKCm1lc3NhZ2VfaWQYASABKAMSDwoHY2hhdF9pZBgCIAEoAxIsCgxtZXNzYWdlX3R5cGUYAyABKA4yFi5lbnRpdGllcy5NZXNzYWdlLlR5cGUSDwoHdXNlcl9pZBgEIAEoAyKeBQoaUHV0VHJhbnNtaXRNZXNzYWdlUmVzcG9uc2USRAoIbWVzc2FnZXMYASADKAsyMi5tZXNzYWdlcy5QdXRUcmFuc21pdE1lc3NhZ2VSZXNwb25zZS5NZXNzYWdlc0VudHJ5EkcKCmZlZWRfY2FyZHMYAiADKAsyMy5tZXNzYWdlcy5QdXRUcmFuc21pdE1lc3NhZ2VSZXNwb25zZS5GZWVkQ2FyZHNFbnRyeRJQCg50aHJlYWRNZXNzYWdlcxgDIAMoCzI4Lm1lc3NhZ2VzLlB1dFRyYW5zbWl0TWVzc2FnZVJlc3BvbnNlLlRocmVhZE1lc3NhZ2VzRW50cnkSOQoPZmlsZV9wZXJtX2NoZWNrGAQgASgLMiAubWVzc2FnZXMuRmlsZVBlcm1DaGVja0Jsb2NrSW5mbxJCCgd0aHJlYWRzGAUgAygLMjEubWVzc2FnZXMuUHV0VHJhbnNtaXRNZXNzYWdlUmVzcG9uc2UuVGhyZWFkc0VudHJ5GkIKDU1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuTWVzc2FnZToCOAEaRAoORmVlZENhcmRzRW50cnkSCwoDa2V5GAEgASgJEiEKBXZhbHVlGAIgASgLMhIuZW50aXRpZXMuRmVlZENhcmQ6AjgBGlQKE1RocmVhZE1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgLMh0ubWVzc2FnZXMuRm9yd2FyZFJlc3BvbnNlSW5mbzoCOAEaQAoMVGhyZWFkc0VudHJ5EgsKA2tleRgBIAEoCRIfCgV2YWx1ZRgCIAEoCzIQLmVudGl0aWVzLlRocmVhZDoCOAEiywkKHVB1dE1lcmdlRm9yd2FyZE1lc3NhZ2VSZXF1ZXN0EhMKC21lc3NhZ2VfaWRzGAEgAygJEisKC3RvX2NoYXRfaWRzGAIgAygJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEj8KBGNpZHMYAyADKAsyMS5tZXNzYWdlcy5QdXRNZXJnZUZvcndhcmRNZXNzYWdlUmVxdWVzdC5DaWRzRW50cnkSQwoEdHlwZRgJIAEoDjIsLm1lc3NhZ2VzLlB1dE1lcmdlRm9yd2FyZE1lc3NhZ2VSZXF1ZXN0LlR5cGU6B01FU1NBR0USGQoKaXNfbGltaXRlZBgKIAEoCDoFZmFsc2USEQoJdGhyZWFkX2lkGAsgASgJEkUKB3RhcmdldHMYDCADKAsyNC5tZXNzYWdlcy5QdXRNZXJnZUZvcndhcmRNZXNzYWdlUmVxdWVzdC5UYXJnZXRzRW50cnkSDgoGbG9jYWxlGAQgASgJElQKD3RocmlmdF9tZXNzYWdlcxgFIAMoCzI7Lm1lc3NhZ2VzLlB1dE1lcmdlRm9yd2FyZE1lc3NhZ2VSZXF1ZXN0LlRocmlmdE1lc3NhZ2VzRW50cnkSGAoQdGhyaWZ0X2Zyb21fY2hhdBgGIAEoDBJUCg90aHJpZnRfY2hhdHRlcnMYByADKAsyOy5tZXNzYWdlcy5QdXRNZXJnZUZvcndhcmRNZXNzYWdlUmVxdWVzdC5UaHJpZnRDaGF0dGVyc0VudHJ5EhgKEHAycF9jaGF0X21lbWJlcnMYCCADKAMSGgoSbmVlZF9jb3B5X3JlYWN0aW9uGA0gASgIEh8KF29yaWdpbl9tZXJnZV9mb3J3YXJkX2lkGA4gASgJEjgKFmNvcGllZF90aHJpZnRfbWVzc2FnZXMYZSABKAsyGC5tZXNzYWdlcy5Db3BpZWRNZXNzYWdlcxIfChdjb3BpZWRfbWVzc2FnZV9yZWFjdGlvbhhmIAMoDBIOCgZ0aHJlYWQYZyABKAwSWgoSaW1tdXRhYmxlX21lc3NhZ2VzGGggAygLMj4ubWVzc2FnZXMuUHV0TWVyZ2VGb3J3YXJkTWVzc2FnZVJlcXVlc3QuSW1tdXRhYmxlTWVzc2FnZXNFbnRyeRIeChZjb3BpZWRfbWVzc2FnZV90aHJlYWRzGGkgASgMGisKCUNpZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGkcKDFRhcmdldHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5tZXNzYWdlcy5Gb3J3YXJkVGFyZ2V0OgI4ARo1ChNUaHJpZnRNZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoDDoCOAEaNQoTVGhyaWZ0Q2hhdHRlcnNFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAw6AjgBGlQKFkltbXV0YWJsZU1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgDEikKBXZhbHVlGAIgASgLMhoubWVzc2FnZXMuSW1tdXRhYmxlTWVzc2FnZToCOAEiHwoEVHlwZRILCgdNRVNTQUdFEAESCgoGVEhSRUFEEAIiuAYKHlB1dE1lcmdlRm9yd2FyZE1lc3NhZ2VSZXNwb25zZRJICghtZXNzYWdlcxgBIAMoCzI2Lm1lc3NhZ2VzLlB1dE1lcmdlRm9yd2FyZE1lc3NhZ2VSZXNwb25zZS5NZXNzYWdlc0VudHJ5ElAKDWZhaWxfY2hhdF9pZHMYAiADKAsyOS5tZXNzYWdlcy5QdXRNZXJnZUZvcndhcmRNZXNzYWdlUmVzcG9uc2UuRmFpbENoYXRJZHNFbnRyeRJLCgpmZWVkX2NhcmRzGAMgAygLMjcubWVzc2FnZXMuUHV0TWVyZ2VGb3J3YXJkTWVzc2FnZVJlc3BvbnNlLkZlZWRDYXJkc0VudHJ5ElQKDnRocmVhZE1lc3NhZ2VzGAQgAygLMjwubWVzc2FnZXMuUHV0TWVyZ2VGb3J3YXJkTWVzc2FnZVJlc3BvbnNlLlRocmVhZE1lc3NhZ2VzRW50cnkSOQoPZmlsZV9wZXJtX2NoZWNrGAUgASgLMiAubWVzc2FnZXMuRmlsZVBlcm1DaGVja0Jsb2NrSW5mbxJGCgd0aHJlYWRzGAYgAygLMjUubWVzc2FnZXMuUHV0TWVyZ2VGb3J3YXJkTWVzc2FnZVJlc3BvbnNlLlRocmVhZHNFbnRyeRpCCg1NZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIgCgV2YWx1ZRgCIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2U6AjgBGjIKEEZhaWxDaGF0SWRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARpECg5GZWVkQ2FyZHNFbnRyeRILCgNrZXkYASABKAkSIQoFdmFsdWUYAiABKAsyEi5lbnRpdGllcy5GZWVkQ2FyZDoCOAEaVAoTVGhyZWFkTWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5tZXNzYWdlcy5Gb3J3YXJkUmVzcG9uc2VJbmZvOgI4ARpACgxUaHJlYWRzRW50cnkSCwoDa2V5GAEgASgJEh8KBXZhbHVlGAIgASgLMhAuZW50aXRpZXMuVGhyZWFkOgI4ASJZCh1QdWxsVW5yZWFkQXRNZXNzYWdlSWRzUmVxdWVzdBIPCgd2ZXJzaW9uGAEgASgFEicKC21lc3NhZ2VfaWRzGAIgAygDQhKKwxoOc3BsaXQsdHlwZT1tc2ciygEKHlB1bGxVbnJlYWRBdE1lc3NhZ2VJZHNSZXNwb25zZRITCgttZXNzYWdlX2lkcxgBIAMoCRJaChJtZXNzYWdlX3RocmVhZF9pZHMYAiADKAsyPi5tZXNzYWdlcy5QdWxsVW5yZWFkQXRNZXNzYWdlSWRzUmVzcG9uc2UuTWVzc2FnZVRocmVhZElkc0VudHJ5GjcKFU1lc3NhZ2VUaHJlYWRJZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkgKHVJlbW92ZU1lc3NhZ2VzRnJvbVVzZXJSZXF1ZXN0EicKC21lc3NhZ2VfaWRzGAEgAygJQhKKwxoOc3BsaXQsdHlwZT1tc2ciIAoeUmVtb3ZlTWVzc2FnZXNGcm9tVXNlclJlc3BvbnNlIkUKG05vVHJhY2VSZW1vdmVNZXNzYWdlUmVxdWVzdBImCgptZXNzYWdlX2lkGAEgAigJQhKKwxoOc3BsaXQsdHlwZT1tc2ciHgocTm9UcmFjZVJlbW92ZU1lc3NhZ2VSZXNwb25zZSKkAQoZUHVzaE1lc3NhZ2VOb1RyYWNlUmVtb3ZlZBJDCghtZXNzYWdlcxgBIAMoCzIxLm1lc3NhZ2VzLlB1c2hNZXNzYWdlTm9UcmFjZVJlbW92ZWQuTWVzc2FnZXNFbnRyeRpCCg1NZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIgCgV2YWx1ZRgCIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2U6AjgBIlUKJlB1bGxDaGF0Tm9UcmFjZVJlbW92ZWRQb3NpdGlvbnNSZXF1ZXN0EisKC2NoYW5uZWxfaWRzGAEgAygJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsIpMCCidQdWxsQ2hhdE5vVHJhY2VSZW1vdmVkUG9zaXRpb25zUmVzcG9uc2USUwoJcG9zaXRpb25zGAEgAygLMkAubWVzc2FnZXMuUHVsbENoYXROb1RyYWNlUmVtb3ZlZFBvc2l0aW9uc1Jlc3BvbnNlLlBvc2l0aW9uc0VudHJ5GiEKDFBvc2l0aW9uTGlzdBIRCglwb3NpdGlvbnMYASADKAUacAoOUG9zaXRpb25zRW50cnkSCwoDa2V5GAEgASgJEk0KBXZhbHVlGAIgASgLMj4ubWVzc2FnZXMuUHVsbENoYXROb1RyYWNlUmVtb3ZlZFBvc2l0aW9uc1Jlc3BvbnNlLlBvc2l0aW9uTGlzdDoCOAEipAcKH1B1c2hHcm91cE1lc3NhZ2VSZWFkU3RhdGVOb3RpY2USEAoIZ3JvdXBfaWQYASABKAkSHQoRbmV3X21lc3NhZ2VfY291bnQYAiABKAVCAhgBEh0KFWxhc3RfbWVzc2FnZV9wb3NpdGlvbhgDIAEoBRITCgttZXNzYWdlX2lkcxgEIAMoCRInChtub19iYWRnZWRfbmV3X21lc3NhZ2VfY291bnQYBSABKAVCAhgBEkIKBHR5cGUYBiABKA4yLi5tZXNzYWdlcy5QdXNoR3JvdXBNZXNzYWdlUmVhZFN0YXRlTm90aWNlLlR5cGU6BENIQVQSTAoKcmVhZF90aW1lcxgHIAMoCzI4Lm1lc3NhZ2VzLlB1c2hHcm91cE1lc3NhZ2VSZWFkU3RhdGVOb3RpY2UuUmVhZFRpbWVzRW50cnkSFwoPbGFzdF9tZXNzYWdlX2lkGAkgASgJEkEKDXRocmVhZF9ub3RpY2UYCiABKAsyKi5tZXNzYWdlcy5QdXNoVGhyZWFkTWVzc2FnZVJlYWRTdGF0ZU5vdGljZRIjChdsYXN0X3Zpc2libGVfbWVzc2FnZV9pZBgLIAEoCUICGAESKQodbGFzdF92aXNpYmxlX21lc3NhZ2VfcG9zaXRpb24YDCABKAVCAhgBEjAKJGxhc3RfdmlzaWJsZV9tZXNzYWdlX25vX2JhZGdlZF9jb3VudBgNIAEoBUICGAESFQoNcmVhZF9wb3NpdGlvbhgOIAEoBRIhChlyZWFkX3Bvc2l0aW9uX2JhZGdlX2NvdW50GA8gASgFEikKIWxhc3RfbWVzc2FnZV9wb3NpdGlvbl9iYWRnZV9jb3VudBgQIAEoBRIcChRzdGFydF9wdXNoX3RpbWVzdGFtcBgRIAEoBRIWCg5pc19iYXRjaF9jbGVhchgSIAEoCBIxCilyZWFkX3Bvc2l0aW9uX2ZpbHRlcl9tdXRlX2JvdF9iYWRnZV9jb3VudBgTIAEoBRI5CjFsYXN0X21lc3NhZ2VfcG9zaXRpb25fZmlsdGVyX211dGVfYm90X2JhZGdlX2NvdW50GBQgASgFEisKI2ZpbHRlcl9tdXRlX2JvdF9iYWRnZV9jb3VudF92ZXJzaW9uGBUgASgDGjAKDlJlYWRUaW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEiGwoEVHlwZRIICgRDSEFUEAESCQoFRU1BSUwQAiJiCiRQdXNoTXVsdGlHcm91cE1lc3NhZ2VSZWFkU3RhdGVOb3RpY2USOgoHbm90aWNlcxgBIAMoCzIpLm1lc3NhZ2VzLlB1c2hHcm91cE1lc3NhZ2VSZWFkU3RhdGVOb3RpY2Ui6gIKIFB1c2hUaHJlYWRNZXNzYWdlUmVhZFN0YXRlTm90aWNlEhEKCXRocmVhZF9pZBgBIAIoCRIdChFuZXdfbWVzc2FnZV9jb3VudBgCIAEoBUICGAESHQoVbGFzdF9tZXNzYWdlX3Bvc2l0aW9uGAMgASgFEicKG25vX2JhZGdlZF9uZXdfbWVzc2FnZV9jb3VudBgEIAEoBUICGAESFwoPbGFzdF9tZXNzYWdlX2lkGAUgASgJEiMKF2xhc3RfdmlzaWJsZV9tZXNzYWdlX2lkGAYgASgJQgIYARIpCh1sYXN0X3Zpc2libGVfbWVzc2FnZV9wb3NpdGlvbhgHIAEoBUICGAESFQoNcmVhZF9wb3NpdGlvbhgIIAEoBRIhChlyZWFkX3Bvc2l0aW9uX2JhZGdlX2NvdW50GAkgASgFEikKIWxhc3RfbWVzc2FnZV9wb3NpdGlvbl9iYWRnZV9jb3VudBgKIAEoBSI4CgpVcmxQcmV2aWV3EhIKCm1lc3NhZ2VfaWQYASACKAkSFgoLc2VxdWVuY2VfaWQYAiACKAU6ATAiSAoeRGVsZXRlTWVzc2FnZVVybFByZXZpZXdSZXF1ZXN0EiYKCHByZXZpZXdzGAEgAygLMhQubWVzc2FnZXMuVXJsUHJldmlldyJJCh9EZWxldGVNZXNzYWdlVXJsUHJldmlld1Jlc3BvbnNlEiYKCHByZXZpZXdzGAEgAygLMhQubWVzc2FnZXMuVXJsUHJldmlldyIzChRQdWxsVmlkZW9JbmZvUmVxdWVzdBIMCgR1cmxzGAEgAygJEg0KBWlzX3BjGAIgASgIIqQBChVQdWxsVmlkZW9JbmZvUmVzcG9uc2USQwoKdmlkZW9JbmZvcxgBIAMoCzIvLm1lc3NhZ2VzLlB1bGxWaWRlb0luZm9SZXNwb25zZS5WaWRlb0luZm9zRW50cnkaRgoPVmlkZW9JbmZvc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoCzITLmVudGl0aWVzLlZpZGVvSW5mbzoCOAEiSwohSGlkZUF1ZGlvUmVjb2duaXRpb25SZXN1bHRSZXF1ZXN0EiYKCm1lc3NhZ2VfaWQYASADKANCEorDGg5zcGxpdCx0eXBlPW1zZyKwAQoiSGlkZUF1ZGlvUmVjb2duaXRpb25SZXN1bHRSZXNwb25zZRJVCg1oaWRkZW5fc3RhdHVzGAEgAygLMj4ubWVzc2FnZXMuSGlkZUF1ZGlvUmVjb2duaXRpb25SZXN1bHRSZXNwb25zZS5IaWRkZW5TdGF0dXNFbnRyeRozChFIaWRkZW5TdGF0dXNFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAg6AjgBIosBCiBQdWxsU3lzdGVtTWVzc2FnZVRlbXBsYXRlUmVxdWVzdBIgChFsb2NhbGVfaWRlbnRpZmllchgBIAEoCToFemhfQ04SGgoLaXNfcHVsbF9hbGwYAiABKAg6BWZhbHNlEhIKB3ZlcnNpb24YAyABKAU6ATASFQoNdGVtcGxhdGVfZXRhZxgEIAEoCSLpBQohUHVsbFN5c3RlbU1lc3NhZ2VUZW1wbGF0ZVJlc3BvbnNlEloKEGxvY2FsZV90ZW1wbGF0ZXMYASADKAsyQC5tZXNzYWdlcy5QdWxsU3lzdGVtTWVzc2FnZVRlbXBsYXRlUmVzcG9uc2UuTG9jYWxlVGVtcGxhdGVzRW50cnkSEgoKaXNfdXBkYXRlZBgCIAEoCBIVCg10ZW1wbGF0ZV9ldGFnGAMgASgJGoMCChBMYW5ndWFnZVRlbXBsYXRlEi4KBHR5cGUYASABKA4yHC5lbnRpdGllcy5TeXN0ZW1Db250ZW50LlR5cGVCAhgBEhMKB2NvbnRlbnQYAiABKAlCAhgBElwKCGNvbnRlbnRzGAMgAygLMkoubWVzc2FnZXMuUHVsbFN5c3RlbU1lc3NhZ2VUZW1wbGF0ZVJlc3BvbnNlLkxhbmd1YWdlVGVtcGxhdGUuQ29udGVudHNFbnRyeRIbChNzeXN0ZW1fbWVzc2FnZV90eXBlGAQgASgFGi8KDUNvbnRlbnRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARrBAQoPTWVzc2FnZVRlbXBsYXRlElQKCmxhbmdfdGVtcHMYASADKAsyPC5tZXNzYWdlcy5QdWxsU3lzdGVtTWVzc2FnZVRlbXBsYXRlUmVzcG9uc2UuTGFuZ3VhZ2VUZW1wbGF0ZUICGAESWAoSbGFuZ3VhZ2VfdGVtcGxhdGVzGAIgAygLMjwubWVzc2FnZXMuUHVsbFN5c3RlbU1lc3NhZ2VUZW1wbGF0ZVJlc3BvbnNlLkxhbmd1YWdlVGVtcGxhdGUacwoUTG9jYWxlVGVtcGxhdGVzRW50cnkSCwoDa2V5GAEgASgJEkoKBXZhbHVlGAIgASgLMjsubWVzc2FnZXMuUHVsbFN5c3RlbU1lc3NhZ2VUZW1wbGF0ZVJlc3BvbnNlLk1lc3NhZ2VUZW1wbGF0ZToCOAEigAkKF1B1dENyeXB0b01lc3NhZ2VSZXF1ZXN0EiQKBHR5cGUYASABKA4yFi5lbnRpdGllcy5NZXNzYWdlLlR5cGUSPwoHY29udGVudBgCIAMoCzIuLm1lc3NhZ2VzLlB1dENyeXB0b01lc3NhZ2VSZXF1ZXN0LkNvbnRlbnRFbnRyeRInCgdjaGF0X2lkGAMgASgJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEg8KB3Jvb3RfaWQYBCABKAkSEQoJcGFyZW50X2lkGAUgASgJEgsKA2NpZBgGIAEoCRIZCgtpc19ub3RpZmllZBgHIAEoCDoEdHJ1ZRI0CgtjcnlwdG9fdHlwZRgIIAEoDjIfLmVudGl0aWVzLkNyeXB0b0luZm8uQ3J5cHRvVHlwZRIWCg5zZWNyZXRfdmVyc2lvbhgJIAEoCRIWCg5idXJuZWRfc2Vjb25kcxgKIAEoBRJQChBmYWxsYmFja19jb250ZW50GAsgAygLMjYubWVzc2FnZXMuUHV0Q3J5cHRvTWVzc2FnZVJlcXVlc3QuRmFsbGJhY2tDb250ZW50RW50cnkSGQoRc2VuZGVyX3B1YmxpY19rZXkYDCABKAwSEQoJZmlsZV9rZXlzGA0gAygJEhIKCmltYWdlX2tleXMYDiADKAkajQEKC1VzZXJDb250ZW50Ek0KCGNvbnRlbnRzGAEgAygLMjsubWVzc2FnZXMuUHV0Q3J5cHRvTWVzc2FnZVJlcXVlc3QuVXNlckNvbnRlbnQuQ29udGVudHNFbnRyeRovCg1Db250ZW50c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDDoCOAEaXQoMQ29udGVudEVudHJ5EgsKA2tleRgBIAEoCRI8CgV2YWx1ZRgCIAEoCzItLm1lc3NhZ2VzLlB1dENyeXB0b01lc3NhZ2VSZXF1ZXN0LlVzZXJDb250ZW50OgI4ARqwAgoTRmFsbGJhY2tVc2VyQ29udGVudBJVCghjb250ZW50cxgBIAMoCzJDLm1lc3NhZ2VzLlB1dENyeXB0b01lc3NhZ2VSZXF1ZXN0LkZhbGxiYWNrVXNlckNvbnRlbnQuQ29udGVudHNFbnRyeRpKCg9GYWxsYmFja0NvbnRlbnQSDwoHY29udGVudBgBIAEoDBINCgVub25jZRgCIAEoDBIXCg9hZGRpdGlvbmFsX2RhdGEYAyABKAwadgoNQ29udGVudHNFbnRyeRILCgNrZXkYASABKAkSVAoFdmFsdWUYAiABKAsyRS5tZXNzYWdlcy5QdXRDcnlwdG9NZXNzYWdlUmVxdWVzdC5GYWxsYmFja1VzZXJDb250ZW50LkZhbGxiYWNrQ29udGVudDoCOAEabQoURmFsbGJhY2tDb250ZW50RW50cnkSCwoDa2V5GAEgASgJEkQKBXZhbHVlGAIgASgLMjUubWVzc2FnZXMuUHV0Q3J5cHRvTWVzc2FnZVJlcXVlc3QuRmFsbGJhY2tVc2VyQ29udGVudDoCOAEi8gEKGFB1dENyeXB0b01lc3NhZ2VSZXNwb25zZRIiCgdtZXNzYWdlGAEgAigLMhEuZW50aXRpZXMuTWVzc2FnZRIlCglmZWVkX2NhcmQYAiABKAsyEi5lbnRpdGllcy5GZWVkQ2FyZBJFCgpmZWVkX2NhcmRzGAMgAygLMjEubWVzc2FnZXMuUHV0Q3J5cHRvTWVzc2FnZVJlc3BvbnNlLkZlZWRDYXJkc0VudHJ5GkQKDkZlZWRDYXJkc0VudHJ5EgsKA2tleRgBIAEoCRIhCgV2YWx1ZRgCIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkOgI4ASLsAQojUHVsbENyeXB0b01lc3NhZ2VEZXRhaWxCeUlkc1JlcXVlc3QSJwoLbWVzc2FnZV9pZHMYASADKAlCEorDGg5zcGxpdCx0eXBlPW1zZxJVChFyZXF1aXJlZF9tZXNzYWdlcxgCIAMoCzI6Lm1lc3NhZ2VzLlB1bGxDcnlwdG9NZXNzYWdlRGV0YWlsQnlJZHNSZXF1ZXN0LkNoYXRNZXNzYWdlcxIPCgdvbGRfZGlkGAMgASgJGjQKDENoYXRNZXNzYWdlcxIPCgdjaGF0X2lkGAEgAigDEhMKC21lc3NhZ2VfaWRzGAIgAygDIroGCiRQdWxsQ3J5cHRvTWVzc2FnZURldGFpbEJ5SWRzUmVzcG9uc2USTAoHZGV0YWlscxgBIAMoCzI7Lm1lc3NhZ2VzLlB1bGxDcnlwdG9NZXNzYWdlRGV0YWlsQnlJZHNSZXNwb25zZS5EZXRhaWxzRW50cnkSXQoQZmFsbGJhY2tfZGV0YWlscxgCIAMoCzJDLm1lc3NhZ2VzLlB1bGxDcnlwdG9NZXNzYWdlRGV0YWlsQnlJZHNSZXNwb25zZS5GYWxsYmFja0RldGFpbHNFbnRyeRIdChVpbnZpc2libGVfbWVzc2FnZV9pZHMYAyADKAMSWgoPb2xkX2RpZF9kZXRhaWxzGAQgAygLMkEubWVzc2FnZXMuUHVsbENyeXB0b01lc3NhZ2VEZXRhaWxCeUlkc1Jlc3BvbnNlLk9sZERpZERldGFpbHNFbnRyeRJrChhvbGRfZGlkX2ZhbGxiYWNrX2RldGFpbHMYBSADKAsySS5tZXNzYWdlcy5QdWxsQ3J5cHRvTWVzc2FnZURldGFpbEJ5SWRzUmVzcG9uc2UuT2xkRGlkRmFsbGJhY2tEZXRhaWxzRW50cnkSJQodb2xkX2RpZF9pbnZpc2libGVfbWVzc2FnZV9pZHMYBiADKAMaTQoMRGV0YWlsc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmVudGl0aWVzLkNyeXB0b01lc3NhZ2VEZXRhaWw6AjgBGlUKFEZhbGxiYWNrRGV0YWlsc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmVudGl0aWVzLkNyeXB0b01lc3NhZ2VEZXRhaWw6AjgBGlMKEk9sZERpZERldGFpbHNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5lbnRpdGllcy5DcnlwdG9NZXNzYWdlRGV0YWlsOgI4ARpbChpPbGREaWRGYWxsYmFja0RldGFpbHNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5lbnRpdGllcy5DcnlwdG9NZXNzYWdlRGV0YWlsOgI4ASIvChhBY2tDcnlwdG9NZXNzYWdlc1JlcXVlc3QSEwoLbWVzc2FnZV9pZHMYASADKAkiGwoZQWNrQ3J5cHRvTWVzc2FnZXNSZXNwb25zZSKEBAoYUHV0VHJhbnNtaXRPYmplY3RSZXF1ZXN0EigKCGNoYXRfaWRzGAEgAygJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEgoKAmlkGAIgAigJEjUKBHR5cGUYAyACKA4yJy5tZXNzYWdlcy5QdXRUcmFuc21pdE9iamVjdFJlcXVlc3QuVHlwZRI6CgRjaWRzGAQgAygLMiwubWVzc2FnZXMuUHV0VHJhbnNtaXRPYmplY3RSZXF1ZXN0LkNpZHNFbnRyeRJACgd0YXJnZXRzGAUgAygLMi8ubWVzc2FnZXMuUHV0VHJhbnNtaXRPYmplY3RSZXF1ZXN0LlRhcmdldHNFbnRyeRIWCg50aHJpZnRfbWVzc2FnZRhkIAEoDBI1ChFpbW11dGFibGVfbWVzc2FnZRhlIAEoCzIaLm1lc3NhZ2VzLkltbXV0YWJsZU1lc3NhZ2UaKwoJQ2lkc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaRwoMVGFyZ2V0c0VudHJ5EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLm1lc3NhZ2VzLkZvcndhcmRUYXJnZXQ6AjgBIjgKBFR5cGUSCwoHVU5LTk9XThAAEgsKB01FU1NBR0UQARIMCghGQVZPUklURRACEggKBEZMQUcQAyKZBQoZUHV0VHJhbnNtaXRPYmplY3RSZXNwb25zZRJDCghtZXNzYWdlcxgBIAMoCzIxLm1lc3NhZ2VzLlB1dFRyYW5zbWl0T2JqZWN0UmVzcG9uc2UuTWVzc2FnZXNFbnRyeRJGCgpmZWVkX2NhcmRzGAIgAygLMjIubWVzc2FnZXMuUHV0VHJhbnNtaXRPYmplY3RSZXNwb25zZS5GZWVkQ2FyZHNFbnRyeRJPCg50aHJlYWRNZXNzYWdlcxgDIAMoCzI3Lm1lc3NhZ2VzLlB1dFRyYW5zbWl0T2JqZWN0UmVzcG9uc2UuVGhyZWFkTWVzc2FnZXNFbnRyeRI5Cg9maWxlX3Blcm1fY2hlY2sYBCABKAsyIC5tZXNzYWdlcy5GaWxlUGVybUNoZWNrQmxvY2tJbmZvEkEKB3RocmVhZHMYBSADKAsyMC5tZXNzYWdlcy5QdXRUcmFuc21pdE9iamVjdFJlc3BvbnNlLlRocmVhZHNFbnRyeRpCCg1NZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIgCgV2YWx1ZRgCIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2U6AjgBGkQKDkZlZWRDYXJkc0VudHJ5EgsKA2tleRgBIAEoCRIhCgV2YWx1ZRgCIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkOgI4ARpUChNUaHJlYWRNZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLm1lc3NhZ2VzLkZvcndhcmRSZXNwb25zZUluZm86AjgBGkAKDFRocmVhZHNFbnRyeRILCgNrZXkYASABKAkSHwoFdmFsdWUYAiABKAsyEC5lbnRpdGllcy5UaHJlYWQ6AjgBItkEChhCYXRjaENvcHlNZXNzYWdlc1JlcXVlc3QSEwoLbWVzc2FnZV9pZHMYASADKAkSKwoLdG9fY2hhdF9pZHMYAiADKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSPgoEY2lkcxgDIAMoCzIsLm1lc3NhZ2VzLkJhdGNoQ29weU1lc3NhZ2VzUmVxdWVzdC5DaWRzRW50cnlCAhgBEk8KD3RocmlmdF9tZXNzYWdlcxgEIAMoCzI2Lm1lc3NhZ2VzLkJhdGNoQ29weU1lc3NhZ2VzUmVxdWVzdC5UaHJpZnRNZXNzYWdlc0VudHJ5EjgKFmNvcGllZF90aHJpZnRfbWVzc2FnZXMYBSABKAsyGC5tZXNzYWdlcy5Db3BpZWRNZXNzYWdlcxIfChdvcmlnaW5fbWVyZ2VfZm9yd2FyZF9pZBgGIAEoCRJVChJpbW11dGFibGVfbWVzc2FnZXMYZCADKAsyOS5tZXNzYWdlcy5CYXRjaENvcHlNZXNzYWdlc1JlcXVlc3QuSW1tdXRhYmxlTWVzc2FnZXNFbnRyeRorCglDaWRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo1ChNUaHJpZnRNZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoDDoCOAEaVAoWSW1tdXRhYmxlTWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAMSKQoFdmFsdWUYAiABKAsyGi5tZXNzYWdlcy5JbW11dGFibGVNZXNzYWdlOgI4ASJWChlCYXRjaENvcHlNZXNzYWdlc1Jlc3BvbnNlEjkKD2ZpbGVfcGVybV9jaGVjaxgBIAEoCzIgLm1lc3NhZ2VzLkZpbGVQZXJtQ2hlY2tCbG9ja0luZm8ioQEKEVRyYW5zbGF0ZUZlZWRiYWNrEg8KB2NvbW1lbnQYASABKAkSOgoKZXZhbHVhdGlvbhgCIAEoDjImLm1lc3NhZ2VzLlRyYW5zbGF0ZUZlZWRiYWNrLkV2YWx1YXRpb24iPwoKRXZhbHVhdGlvbhILCgdVTktOT1dOEAASDQoJVkVSWV9HT09EEAESFQoRQ0FOTk9UX1VOREVSU1RBTkQQAiLLAQocUHV0VHJhbnNsYXRlRmVlZGJhY2tzUmVxdWVzdBJcCglmZWVkYmFja3MYASADKAsyNS5tZXNzYWdlcy5QdXRUcmFuc2xhdGVGZWVkYmFja3NSZXF1ZXN0LkZlZWRiYWNrc0VudHJ5QhKKwxoOc3BsaXQsdHlwZT1tc2caTQoORmVlZGJhY2tzRW50cnkSCwoDa2V5GAEgASgJEioKBXZhbHVlGAIgASgLMhsubWVzc2FnZXMuVHJhbnNsYXRlRmVlZGJhY2s6AjgBIh8KHVB1dFRyYW5zbGF0ZUZlZWRiYWNrc1Jlc3BvbnNlIpACChdQdWxsQ2hhdFJlc291cmNlUmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhsKEGxhc3RfY3JlYXRlX3RpbWUYAiABKAM6ATASFwoPbGFzdF9tZXNzYWdlX2lkGAMgASgJEhEKBWNvdW50GAQgASgFOgIxMBIWCgdyZXZlcnNlGAUgASgIOgVmYWxzZRJECg1tZXNzYWdlX3R5cGVzGAYgAygOMi0ubWVzc2FnZXMuUHVsbENoYXRSZXNvdXJjZVJlcXVlc3QuTWVzc2FnZVR5cGUiJQoLTWVzc2FnZVR5cGUSCwoHUElDVFVSRRABEgkKBVZJREVPEAIiYAoYUHVsbENoYXRSZXNvdXJjZVJlc3BvbnNlEiMKCG1lc3NhZ2VzGAEgAygLMhEuZW50aXRpZXMuTWVzc2FnZRINCgV0b3RhbBgCIAEoBRIQCghoYXNfbW9yZRgDIAEoCCJACh5QdXNoQmFkZ2VUb1JlbGF0ZWRVc2Vyc1JlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCRINCgViYWRnZRgCIAEoBSIeChxQdWxsUmVsYXRlZFVzZXJzQmFkZ2VSZXF1ZXN0IpMBCh1QdWxsUmVsYXRlZFVzZXJzQmFkZ2VSZXNwb25zZRJDCgZiYWRnZXMYASADKAsyMy5tZXNzYWdlcy5QdWxsUmVsYXRlZFVzZXJzQmFkZ2VSZXNwb25zZS5CYWRnZXNFbnRyeRotCgtCYWRnZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBIl0KJVB1dFN5c3RlbU1lc3NhZ2VGb3JTY3JlZW5zaG90c1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBILCgNjaWQYAiABKAkiKAomUHV0U3lzdGVtTWVzc2FnZUZvclNjcmVlbnNob3RzUmVzcG9uc2UitQEKFFB1dFVSTFByZXZpZXdSZXF1ZXN0EhIKCm1lc3NhZ2VfaWQYASABKAkSOwoIcHJldmlld3MYAiADKAsyKS5tZXNzYWdlcy5QdXRVUkxQcmV2aWV3UmVxdWVzdC5VUkxQcmV2aWV3GkwKClVSTFByZXZpZXcSCwoDdXJsGAEgASgJEg0KBXRpdGxlGAMgASgJEhAKCGFic3RyYWN0GAQgASgJEhAKCGljb25fdXJsGAIgASgJIhcKFVB1dFVSTFByZXZpZXdSZXNwb25zZSJHCg5MaXN0T2ZNZXNzYWdlcxIXCg90aHJpZnRfbWVzc2FnZXMYASADKAwSHAoUdGhyaWZ0X2kxOG5fVGVtcGxhdGUYAiADKAwiyAIKDkNvcGllZE1lc3NhZ2VzEkYKEHRvX2NoYXRfbWVzc2FnZXMYASADKAsyLC5tZXNzYWdlcy5Db3BpZWRNZXNzYWdlcy5Ub0NoYXRNZXNzYWdlc0VudHJ5EkoKEnRvX3RocmVhZF9tZXNzYWdlcxgCIAMoCzIuLm1lc3NhZ2VzLkNvcGllZE1lc3NhZ2VzLlRvVGhyZWFkTWVzc2FnZXNFbnRyeRpPChNUb0NoYXRNZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoAxInCgV2YWx1ZRgCIAEoCzIYLm1lc3NhZ2VzLkxpc3RPZk1lc3NhZ2VzOgI4ARpRChVUb1RocmVhZE1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgDEicKBXZhbHVlGAIgASgLMhgubWVzc2FnZXMuTGlzdE9mTWVzc2FnZXM6AjgBIjYKDFRyYW5zbWl0Tm9kZRISCgptZXNzYWdlX2lkGAEgAigJEhIKCmNoYXR0ZXJfaWQYAiACKAkiPwoNVHJhbnNtaXRDaGFpbhIuCg50cmFuc21pdF9jaGFpbhgBIAMoCzIWLm1lc3NhZ2VzLlRyYW5zbWl0Tm9kZSI2Ch9QdWxsTWVzc2FnZVRyYW5zbWl0Q2hhaW5SZXF1ZXN0EhMKC21lc3NhZ2VfaWRzGAEgAygJIt4BCiBQdWxsTWVzc2FnZVRyYW5zbWl0Q2hhaW5SZXNwb25zZRJkChZtZXNzYWdlX3RyYW5zbWl0X2NoYWluGAEgAygLMkQubWVzc2FnZXMuUHVsbE1lc3NhZ2VUcmFuc21pdENoYWluUmVzcG9uc2UuTWVzc2FnZVRyYW5zbWl0Q2hhaW5FbnRyeRpUChlNZXNzYWdlVHJhbnNtaXRDaGFpbkVudHJ5EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLm1lc3NhZ2VzLlRyYW5zbWl0Q2hhaW46AjgBIo0BCh9QdWxsTWVzc2FnZUlEc0J5UG9zaXRpb25SZXF1ZXN0EicKB2NoYXRfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSFgoOc3RhcnRfcG9zaXRpb24YAiACKAUSDQoFY291bnQYAyABKAUSGgoSbmVlZF9uZXh0X3Bvc2l0aW9uGAQgASgIIokDCiBQdWxsTWVzc2FnZUlEc0J5UG9zaXRpb25SZXNwb25zZRJPCgttZXNzYWdlX2lkcxgBIAMoCzI6Lm1lc3NhZ2VzLlB1bGxNZXNzYWdlSURzQnlQb3NpdGlvblJlc3BvbnNlLk1lc3NhZ2VJZHNFbnRyeRJYChBtZXNzYWdlX2lkX3R5cGVzGAIgAygLMj4ubWVzc2FnZXMuUHVsbE1lc3NhZ2VJRHNCeVBvc2l0aW9uUmVzcG9uc2UuTWVzc2FnZUlkVHlwZXNFbnRyeRIQCghoYXNfbW9yZRgDIAEoCBIVCg1uZXh0X3Bvc2l0aW9uGAQgASgFEg8KB2NoYXRfaWQYBSABKAkaMQoPTWVzc2FnZUlkc0VudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoCToCOAEaTQoTTWVzc2FnZUlkVHlwZXNFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKA4yFi5lbnRpdGllcy5NZXNzYWdlLlR5cGU6AjgBIqEBCgtTaGFyZU9iamVjdBJGChNmaWxlX21hbmFnZXJfb2JqZWN0GAEgASgLMicubWVzc2FnZXMuU2hhcmVPYmplY3QuRmlsZU1hbmFnZXJPYmplY3RIABpAChFGaWxlTWFuYWdlck9iamVjdBIQCghmaWxlX2tleRgBIAIoCRIZChFvcmlnaW5fbWVzc2FnZV9pZBgCIAEoCUIICgZvYmplY3QijwIKC1NoYXJlVGFyZ2V0Ei0KB3RvX2NoYXQYASABKAsyGi5tZXNzYWdlcy5TaGFyZVRhcmdldC5DaGF0SAASMQoJdG9fdGhyZWFkGAIgASgLMhwubWVzc2FnZXMuU2hhcmVUYXJnZXQuVGhyZWFkSAASMwoKZXh0cmFfaW5mbxgyIAEoCzIfLm1lc3NhZ2VzLlNoYXJlVGFyZ2V0LkV4dHJhSW5mbxoXCgRDaGF0Eg8KB2NoYXRfaWQYASACKAkaLAoGVGhyZWFkEhEKCXRocmVhZF9pZBgBIAIoCRIPCgdjaGF0X2lkGAIgAigJGhgKCUV4dHJhSW5mbxILCgNjaWQYASABKAlCCAoGdGFyZ2V0Ir8DChFTaGFyZVJlc3BvbnNlSW5mbxI+Cgd0b19jaGF0GAEgASgLMisubWVzc2FnZXMuU2hhcmVSZXNwb25zZUluZm8uU2hhcmVUb0NoYXRJbmZvSAASQgoJdG9fdGhyZWFkGAIgASgLMi0ubWVzc2FnZXMuU2hhcmVSZXNwb25zZUluZm8uU2hhcmVUb1RocmVhZEluZm9IABqPAQoPU2hhcmVUb0NoYXRJbmZvEg8KB2NoYXRfaWQYASACKAkSIgoHbWVzc2FnZRgCIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2USJQoJZmVlZF9jYXJkGAMgASgLMhIuZW50aXRpZXMuRmVlZENhcmQSIAoGdGhyZWFkGAQgASgLMhAuZW50aXRpZXMuVGhyZWFkGoIBChFTaGFyZVRvVGhyZWFkSW5mbxIPCgdjaGF0X2lkGAEgAigJEhEKCXRocmVhZF9pZBgCIAIoCRIiCgdtZXNzYWdlGAMgASgLMhEuZW50aXRpZXMuTWVzc2FnZRIlCglmZWVkX2NhcmQYBCABKAsyEi5lbnRpdGllcy5GZWVkQ2FyZEIPCg1TaGFyZVJlc3BvbnNlIuABChhQdXRTaGFyZUFzTWVzc2FnZVJlcXVlc3QSKwoMc2hhcmVfb2JqZWN0GAEgAigLMhUubWVzc2FnZXMuU2hhcmVPYmplY3QSJgoHdGFyZ2V0cxgCIAMoCzIVLm1lc3NhZ2VzLlNoYXJlVGFyZ2V0EjgKFmNvcGllZF90aHJpZnRfbWVzc2FnZXMYZCABKAsyGC5tZXNzYWdlcy5Db3BpZWRNZXNzYWdlcxI1ChFpbW11dGFibGVfbWVzc2FnZRhlIAEoCzIaLm1lc3NhZ2VzLkltbXV0YWJsZU1lc3NhZ2UiiwEKGVB1dFNoYXJlQXNNZXNzYWdlUmVzcG9uc2USMwoOc2hhcmVfcmVzcG9uc2UYASADKAsyGy5tZXNzYWdlcy5TaGFyZVJlc3BvbnNlSW5mbxI5Cg9maWxlX3Blcm1fY2hlY2sYAiABKAsyIC5tZXNzYWdlcy5GaWxlUGVybUNoZWNrQmxvY2tJbmZvIs4CChFQcmV2aWV3RW50aXR5UGFpchJGCg5wcmV2aWV3X2VudGl0eRgBIAMoCzIuLm1lc3NhZ2VzLlByZXZpZXdFbnRpdHlQYWlyLlByZXZpZXdFbnRpdHlFbnRyeRJNChJwcmV2aWV3X3N0YXR1c19tYXAYAiADKAsyMS5tZXNzYWdlcy5QcmV2aWV3RW50aXR5UGFpci5QcmV2aWV3U3RhdHVzTWFwRW50cnkaUAoSUHJldmlld0VudGl0eUVudHJ5EgsKA2tleRgBIAEoCRIpCgV2YWx1ZRgCIAEoCzIaLmVudGl0aWVzLlVybFByZXZpZXdFbnRpdHk6AjgBGlAKFVByZXZpZXdTdGF0dXNNYXBFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5lbnRpdGllcy5QcmV2aWV3U3RhdHVzOgI4ASK4AgoaUHVsbE1lc3NhZ2VQcmV2aWV3c1JlcXVlc3QSWAoTbWVzc2FnZV9wcmV2aWV3X21hcBgBIAMoCzI7Lm1lc3NhZ2VzLlB1bGxNZXNzYWdlUHJldmlld3NSZXF1ZXN0Lk1lc3NhZ2VQcmV2aWV3TWFwRW50cnkSDgoGbG9jYWxlGAIgASgJGkQKC1ByZXZpZXdQYWlyEjUKC3ByZXZpZXdfaWRzGAEgAygJQiCKwxocc3BsaXQsdHlwZT11cmxfcHJldmlld190b2tlbhpqChZNZXNzYWdlUHJldmlld01hcEVudHJ5EgsKA2tleRgBIAEoCRI/CgV2YWx1ZRgCIAEoCzIwLm1lc3NhZ2VzLlB1bGxNZXNzYWdlUHJldmlld3NSZXF1ZXN0LlByZXZpZXdQYWlyOgI4ASLGAQoaUHVsbE1lc3NhZ2VQcmV2aWV3UmVzcG9uc2USUwoQcHJldmlld19lbnRpdGllcxgBIAMoCzI5Lm1lc3NhZ2VzLlB1bGxNZXNzYWdlUHJldmlld1Jlc3BvbnNlLlByZXZpZXdFbnRpdGllc0VudHJ5GlMKFFByZXZpZXdFbnRpdGllc0VudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLm1lc3NhZ2VzLlByZXZpZXdFbnRpdHlQYWlyOgI4ASLcAQoTUHVzaE1lc3NhZ2VQcmV2aWV3cxJMChBwcmV2aWV3X2VudGl0aWVzGAEgAygLMjIubWVzc2FnZXMuUHVzaE1lc3NhZ2VQcmV2aWV3cy5QcmV2aWV3RW50aXRpZXNFbnRyeRIiChpuZWVkX2xhenlfbG9hZF9wcmV2aWV3X2lkcxgCIAMoCRpTChRQcmV2aWV3RW50aXRpZXNFbnRyeRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKAsyGy5tZXNzYWdlcy5QcmV2aWV3RW50aXR5UGFpcjoCOAEiWQohUHVsbE1lc3NhZ2VQcmV2aWV3Q2hhdHRlcnNSZXF1ZXN0EjQKCnByZXZpZXdfaWQYASACKAlCIIrDGhxzcGxpdCx0eXBlPXVybF9wcmV2aWV3X3Rva2VuIjkKIlB1bGxNZXNzYWdlUHJldmlld0NoYXR0ZXJzUmVzcG9uc2USEwoLY2hhdHRlcl9pZHMYASADKAkimgQKG1B1dENyeXB0b01lc3NhZ2VNYWluUmVxdWVzdBIkCgR0eXBlGAEgASgOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlEicKB2NoYXRfaWQYAiABKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSDwoHcm9vdF9pZBgDIAEoCRIRCglwYXJlbnRfaWQYBCABKAkSCwoDY2lkGAUgASgJEhkKC2lzX25vdGlmaWVkGAYgASgIOgR0cnVlEjQKC2NyeXB0b190eXBlGAcgASgOMh8uZW50aXRpZXMuQ3J5cHRvSW5mby5DcnlwdG9UeXBlEhYKDnNlY3JldF92ZXJzaW9uGAggASgJEhYKDmJ1cm5lZF9zZWNvbmRzGAkgASgFEhkKEXNlbmRlcl9wdWJsaWNfa2V5GAogASgMElQKEGZhbGxiYWNrX2NvbnRlbnQYFSADKAsyOi5tZXNzYWdlcy5QdXRDcnlwdG9NZXNzYWdlTWFpblJlcXVlc3QuRmFsbGJhY2tDb250ZW50RW50cnkSEQoJZmlsZV9rZXlzGBkgAygJEhIKCmltYWdlX2tleXMYGiADKAkaYgoURmFsbGJhY2tDb250ZW50RW50cnkSCwoDa2V5GAEgASgJEjkKBXZhbHVlGAIgASgLMiouZW50aXRpZXMuQ3J5cHRvTWVzc2FnZUZhbGxiYWNrVXNlckNvbnRlbnQ6AjgBIpQCChxQdXRDcnlwdG9NZXNzYWdlTWFpblJlc3BvbnNlEiIKB21lc3NhZ2UYASABKAsyES5lbnRpdGllcy5NZXNzYWdlEkkKCmZlZWRfY2FyZHMYAiADKAsyNS5tZXNzYWdlcy5QdXRDcnlwdG9NZXNzYWdlTWFpblJlc3BvbnNlLkZlZWRDYXJkc0VudHJ5Ej8KDG1pc3NpbmdfaW5mbxgDIAEoCzIpLmVudGl0aWVzLkNyeXB0b01lc3NhZ2VNaXNzaW5nRGV2aWNlc0luZm8aRAoORmVlZENhcmRzRW50cnkSCwoDa2V5GAEgASgJEiEKBXZhbHVlGAIgASgLMhIuZW50aXRpZXMuRmVlZENhcmQ6AjgBIqgCCiVQdXRDcnlwdG9NZXNzYWdlTWlzc2luZ0NvbnRlbnRSZXF1ZXN0EhIKCm1lc3NhZ2VfaWQYASABKAkSJwoHY2hhdF9pZBgCIAEoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBJeChBmYWxsYmFja19jb250ZW50GAQgAygLMkQubWVzc2FnZXMuUHV0Q3J5cHRvTWVzc2FnZU1pc3NpbmdDb250ZW50UmVxdWVzdC5GYWxsYmFja0NvbnRlbnRFbnRyeRpiChRGYWxsYmFja0NvbnRlbnRFbnRyeRILCgNrZXkYASABKAkSOQoFdmFsdWUYAiABKAsyKi5lbnRpdGllcy5DcnlwdG9NZXNzYWdlRmFsbGJhY2tVc2VyQ29udGVudDoCOAEi5wEKJlB1dENyeXB0b01lc3NhZ2VNaXNzaW5nQ29udGVudFJlc3BvbnNlEiIKB21lc3NhZ2UYASABKAsyES5lbnRpdGllcy5NZXNzYWdlElMKCmZlZWRfY2FyZHMYAiADKAsyPy5tZXNzYWdlcy5QdXRDcnlwdG9NZXNzYWdlTWlzc2luZ0NvbnRlbnRSZXNwb25zZS5GZWVkQ2FyZHNFbnRyeRpECg5GZWVkQ2FyZHNFbnRyeRILCgNrZXkYASABKAkSIQoFdmFsdWUYAiABKAsyEi5lbnRpdGllcy5GZWVkQ2FyZDoCOAEiKQonUHVsbFVucmVhZFNwZWNpYWxGb2N1c01lc3NhZ2VJZHNSZXF1ZXN0Ij8KKFB1bGxVbnJlYWRTcGVjaWFsRm9jdXNNZXNzYWdlSWRzUmVzcG9uc2USEwoLbWVzc2FnZV9pZHMYASADKAMiYAoWRmlsZVBlcm1DaGVja0Jsb2NrSW5mbxINCgV0b2FzdBgBIAEoCRITCgtwb3B1cF90aXRsZRgCIAEoCRISCgpwb3B1cF90ZXh0GAMgASgJEg4KBmJ1dHRvbhgEIAEoCSIfCh1QdWxsRGF0YVJldGVudGlvblJ1bGVzUmVxdWVzdCLxBwoeUHVsbERhdGFSZXRlbnRpb25SdWxlc1Jlc3BvbnNlEkoKDGRlbGV0ZV9ydWxlcxgBIAEoCzI0Lm1lc3NhZ2VzLlB1bGxEYXRhUmV0ZW50aW9uUnVsZXNSZXNwb25zZS5EZWxldGVSdWxlcxJUChJyZXBsYWNlX3Byb3BlcnRpZXMYAiADKAsyOC5tZXNzYWdlcy5QdWxsRGF0YVJldGVudGlvblJ1bGVzUmVzcG9uc2UuUmVwbGFjZVByb3BlcnR5ElAKD3JlcGxhY2VfY29udGVudBgDIAEoCzI3Lm1lc3NhZ2VzLlB1bGxEYXRhUmV0ZW50aW9uUnVsZXNSZXNwb25zZS5SZXBsYWNlQ29udGVudBqLBAoLRGVsZXRlUnVsZXMSHAoUZmlsdGVyX2V4dGVybmFsX2NoYXQYASABKAgSTgoKY2hhdF9ydWxlcxgCIAEoCzI6Lm1lc3NhZ2VzLlB1bGxEYXRhUmV0ZW50aW9uUnVsZXNSZXNwb25zZS5EZWxldGVSdWxlcy5SdWxlcxJVChF0b3BpY19ncm91cF9ydWxlcxgDIAEoCzI6Lm1lc3NhZ2VzLlB1bGxEYXRhUmV0ZW50aW9uUnVsZXNSZXNwb25zZS5EZWxldGVSdWxlcy5SdWxlcxpOCg1SZXNvdXJjZVJ1bGVzEiUKBXR5cGVzGAEgAygOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlEhYKDnJldGVudGlvbl90aW1lGAIgASgNGiIKCEFsbFJ1bGVzEhYKDnJldGVudGlvbl90aW1lGAEgASgNGsIBCgVSdWxlcxJSCglhbGxfcnVsZXMYASABKAsyPS5tZXNzYWdlcy5QdWxsRGF0YVJldGVudGlvblJ1bGVzUmVzcG9uc2UuRGVsZXRlUnVsZXMuQWxsUnVsZXNIABJcCg5yZXNvdXJjZV9ydWxlcxgCIAEoCzJCLm1lc3NhZ2VzLlB1bGxEYXRhUmV0ZW50aW9uUnVsZXNSZXNwb25zZS5EZWxldGVSdWxlcy5SZXNvdXJjZVJ1bGVzSABCBwoFcnVsZXMagwEKD1JlcGxhY2VQcm9wZXJ0eRIuCgdvbGRfdGFnGAEgASgOMh0uZW50aXRpZXMuUmljaFRleHRFbGVtZW50LlRhZxIuCgduZXdfdGFnGAIgASgOMh0uZW50aXRpZXMuUmljaFRleHRFbGVtZW50LlRhZxIQCghwcm9wZXJ0eRgDIAEoDBpHCg5SZXBsYWNlQ29udGVudBIkCgR0eXBlGAEgASgOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlEg8KB2NvbnRlbnQYAiABKAwiRQoaUHVsbE1lc3NhZ2VEb2NQZXJtc1JlcXVlc3QSJwoLbWVzc2FnZV9pZHMYASADKAlCEorDGg5zcGxpdCx0eXBlPW1zZyKLAgobUHVsbE1lc3NhZ2VEb2NQZXJtc1Jlc3BvbnNlEkAKCWRvY19wZXJtcxgBIAMoCzItLm1lc3NhZ2VzLlB1bGxNZXNzYWdlRG9jUGVybXNSZXNwb25zZS5Eb2NQZXJtGqkBCgdEb2NQZXJtEhEKCWRvY190aXRsZRgBIAEoCRIjCghkb2NfdHlwZRgCIAEoDjIRLmVudGl0aWVzLkRvY1R5cGUSEgoKb3duZXJfbmFtZRgDIAEoCRIPCgdkb2NfdXJsGAQgASgJEiwKC3Blcm1pc3Npb25zGAUgAygLMhcuZW50aXRpZXMuRG9jUGVybWlzc2lvbhITCgttZXNzYWdlX2lkcxgGIAMoCSIeChxQdXNoQ2lwaGVyQ2hhbmdlRXZlbnRSZXF1ZXN0Ih8KHVB1c2hDaXBoZXJDaGFuZ2VFdmVudFJlc3BvbnNlIj8KHFB1bGxDaGFuZ2VkQ2lwaGVyS2V5c1JlcXVlc3QSDgoGY3Vyc29yGAEgASgDEg8KB2lzX2luaXQYAiABKAgiNgojUHVzaFRoaXJkUGFydHlLTVNUZW5hbnRFdmVudFJlcXVlc3QSDwoHY29udGVudBgBIAEoCSKVAgodUHVsbENoYW5nZWRDaXBoZXJLZXlzUmVzcG9uc2USEgoKbmV3X2N1cnNvchgBIAEoAxJJCgZldmVudHMYAiADKAsyOS5tZXNzYWdlcy5QdWxsQ2hhbmdlZENpcGhlcktleXNSZXNwb25zZS5DaXBoZXJDaGFuZ2VFdmVudBprChFDaXBoZXJDaGFuZ2VFdmVudBJCCghidXNpbmVzcxgBIAEoDjIwLm1lc3NhZ2VzLlB1bGxDaGFuZ2VkQ2lwaGVyS2V5c1Jlc3BvbnNlLkJ1c2luZXNzEhIKCmNoYW5nZV9pZHMYAiADKAMiKAoIQnVzaW5lc3MSCwoHVU5LTk9XThAAEgYKAklNEAESBwoDQ0NNEAIiYQoZUHV0RGlhZ25vc2VNZXNzYWdlUmVxdWVzdBIkCgR0eXBlGAEgASgOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlEgsKA2NpZBgCIAEoCRIRCglzY2hlbWFfaWQYBSABKAkiyAEKGlB1dERpYWdub3NlTWVzc2FnZVJlc3BvbnNlEkIKBnN0YXR1cxgBIAIoDjIyLm1lc3NhZ2VzLlB1dERpYWdub3NlTWVzc2FnZVJlc3BvbnNlLk1lc3NhZ2VTdGF0dXMSIgoHbWVzc2FnZRgCIAIoCzIRLmVudGl0aWVzLk1lc3NhZ2USEAoIdHJhY2VfaWQYAyACKAkiMAoNTWVzc2FnZVN0YXR1cxILCgdVTktOT1dOEAASEgoOT0ZGTElORV9QVVNIRUQQASKSAgocRGlhZ25vc2VNZXNzYWdlQ29uZmlnUmVxdWVzdBIWCg5wYWNrYWdlX2FwcF9pZBgBIAEoAxIOCgZpc19nY20YAiABKAgSEwoLcGhvbmVfYnJhbmQYAyABKAkSGwoTaXNfaW5zdGFsbGVkX2dvb2dsZRgEIAEoCBIiChppc19mb3JlZ3JvdW5kX25vdGlmaWNhdGlvbhgFIAEoCBImCh5pc19pZ25vcmVfYmF0dGVyeV9vcHRpbWl6YXRpb24YBiABKAgSGAoQYXBwX3BhY2thZ2VfbmFtZRgHIAEoCRIgChhpc19mZWlzaHVfZmFtaWx5X3BhY2thZ2UYCCABKAgSEAoIaXNvX2NvZGUYCSABKAkiiAoKHURpYWdub3NlTWVzc2FnZUNvbmZpZ1Jlc3BvbnNlEksKDWNoZWNrZWRfaXRlbXMYAiADKAsyNC5tZXNzYWdlcy5EaWFnbm9zZU1lc3NhZ2VDb25maWdSZXNwb25zZS5EaWFnbm9zZUl0ZW0SCgoCaWQYAyABKAkajQkKDERpYWdub3NlSXRlbRJHCgRpdGVtGAEgAigOMjkubWVzc2FnZXMuRGlhZ25vc2VNZXNzYWdlQ29uZmlnUmVzcG9uc2UuRGlhZ25vc2VJdGVtLkl0ZW0SSwoGc3RhdHVzGAIgAigOMjsubWVzc2FnZXMuRGlhZ25vc2VNZXNzYWdlQ29uZmlnUmVzcG9uc2UuRGlhZ25vc2VJdGVtLlN0YXR1cxJQCgZyZWFzb24YAyADKAsyQC5tZXNzYWdlcy5EaWFnbm9zZU1lc3NhZ2VDb25maWdSZXNwb25zZS5EaWFnbm9zZUl0ZW0uUmVhc29uRW50cnkScAoab3RoZXJfc2V0dGluZ19jaGlsZF9zdGF0dXMYBCABKA4yTC5tZXNzYWdlcy5EaWFnbm9zZU1lc3NhZ2VDb25maWdSZXNwb25zZS5EaWFnbm9zZUl0ZW0uT3RoZXJTZXR0aW5nQ2hpbGRTdGF0dXMSWAoNc3RhdHVzX2RldGFpbBgFIAEoDjJBLm1lc3NhZ2VzLkRpYWdub3NlTWVzc2FnZUNvbmZpZ1Jlc3BvbnNlLkRpYWdub3NlSXRlbS5TdGF0dXNEZXRhaWwaLQoLUmVhc29uRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLMAQoESXRlbRIPCgtVbmtub3duSXRlbRAAEhMKD0N1c3RvbWl6ZVN0YXR1cxABEhEKDU90aGVyU2V0dGluZ3MQAhIaChZOb3RpZmljYXRpb25DbG9zZVBob25lEAMSGgoWTm90aWZpY2F0aW9uRGlzYWJsZUFsbBAEEh0KGU5vdGlmaWNhdGlvbkRpc2FibGVOb3JtYWwQBRIgChxOb3RpZmljYXRpb25NZWV0aW5nT3JDYWxsaW5nEAYSEgoORkNNRGlhZ25vc3RpY3MQByI8CgZTdGF0dXMSEQoNVW5rbm93blN0YXR1cxAAEgoKBlBhc3NlZBABEgkKBUVycm9yEAISCAoEV2FybhADIosBChdPdGhlclNldHRpbmdDaGlsZFN0YXR1cxILCgdVbmtub3duEAASDQoJUGVlckxvZ2luEAESFAoQQ2hhbm5lbExpc3RFbXB0eRACEhAKDENoYW5uZWxWYWxpZBADEg4KClRva2VuVmFsaWQQBBIcChhQYWNrYWdlTm90U3VwcG9ydE9mZmxpbmUQBSL+AQoMU3RhdHVzRGV0YWlsEhEKDVVua25vd25EZXRhaWwQABILCgdTdWNjZXNzEAESLQopTm90U3VwcG9ydEJldGFWZXJzaW9uT2ZmbGluZU5vdGlmaWNhdGlvbnMQAhIhCh1Ob0dvb2dsZVBsYXlTZXJ2aWNlQW5kTm9BbGl2ZRADEh8KG05vR29vZ2xlUGxheVNlcnZpY2VBbmRBbGl2ZRAEEiMKH0ZDTU5vdEF2YWlsYWJsZUluQ3VycmVudEVudmlyb24QBRIbChdNaVB1c2hDaGFubmVsQW5kTm9BbGl2ZRAGEhkKFU1pUHVzaENoYW5uZWxBbmRBbGl2ZRAHIoIFCiBTZW5kRGlhZ25vc2VFdmVudFRvU2VydmVyUmVxdWVzdBISCgpldmVudF9uYW1lGAEgAigJEk0KCmV2ZW50X2luZm8YAiADKAsyOS5tZXNzYWdlcy5TZW5kRGlhZ25vc2VFdmVudFRvU2VydmVyUmVxdWVzdC5FdmVudEluZm9FbnRyeRIKCgJpZBgDIAEoCRpKCgZQYXJhbXMSQAoGcGFyYW1zGAEgAygLMjAubWVzc2FnZXMuU2VuZERpYWdub3NlRXZlbnRUb1NlcnZlclJlcXVlc3QuUGFyYW0a6gEKBVBhcmFtEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSEwoJaW50X3ZhbHVlGGQgASgFSAASFAoKbG9uZ192YWx1ZRhlIAEoA0gAEhUKC2Zsb2F0X3ZhbHVlGGYgASgCSAASFgoMZG91YmxlX3ZhbHVlGGcgASgBSAASFgoMc3RyaW5nX3ZhbHVlGGggASgJSAASQwoGcGFyYW1zGGkgASgLMjEubWVzc2FnZXMuU2VuZERpYWdub3NlRXZlbnRUb1NlcnZlclJlcXVlc3QuUGFyYW1zSABCBwoFdmFsdWUaTgoJRXZlbnRJbmZvEkEKBnBhcmFtcxgBIAEoCzIxLm1lc3NhZ2VzLlNlbmREaWFnbm9zZUV2ZW50VG9TZXJ2ZXJSZXF1ZXN0LlBhcmFtcxpmCg5FdmVudEluZm9FbnRyeRILCgNrZXkYASABKAkSQwoFdmFsdWUYAiABKAsyNC5tZXNzYWdlcy5TZW5kRGlhZ25vc2VFdmVudFRvU2VydmVyUmVxdWVzdC5FdmVudEluZm86AjgBIiMKIVNlbmREaWFnbm9zZUV2ZW50VG9TZXJ2ZXJSZXNwb25zZSKgAQogR2V0Tm90aWZpY2F0aW9uV2FybkJhbm5lclJlcXVlc3QSFgoOcGFja2FnZV9hcHBfaWQYASACKAMSHQoVaXNfc3RhcnRfZm9yZV9zZXJ2aWNlGAIgAigIEh0KFWlzX2luX3Bvd2VyX3doaXRlbGlzdBgDIAIoCBIYChBjYW5fc3RhcnRfbXlzZWxmGAQgASgIEgwKBHV1aWQYBSABKAkidQohR2V0Tm90aWZpY2F0aW9uV2FybkJhbm5lclJlc3BvbnNlEhcKD2Nhbl9zaG93X2Jhbm5lchgBIAIoCBIRCglzaG93X3RpcHMYAiABKAkSEQoJanVtcF90aXBzGAMgASgJEhEKCWp1bXBfZGVzdBgEIAEoCSIqCihDbG9zZU5vdGlmaWNhdGlvbldhcm5CYW5uZXJOb3RpY2VSZXF1ZXN0IisKKUNsb3NlTm90aWZpY2F0aW9uV2FybkJhbm5lck5vdGljZVJlc3BvbnNlIkAKHlB1bGxFeHBlY3RlZEF0VXNlckdyb3VwUmVxdWVzdBINCgVxdWVyeRgBIAEoCRIPCgdjaGF0X2lkGAIgASgDIvQBCh9QdWxsRXhwZWN0ZWRBdFVzZXJHcm91cFJlc3BvbnNlEicKBmdyb3VwcxgBIAMoCzIXLmVudGl0aWVzLlVzZXJHcm91cE5vZGUSaQoaZ3JvdXBfbWVtYmVyX2luX2NoYXRfY291bnQYAiADKAsyRS5tZXNzYWdlcy5QdWxsRXhwZWN0ZWRBdFVzZXJHcm91cFJlc3BvbnNlLkdyb3VwTWVtYmVySW5DaGF0Q291bnRFbnRyeRo9ChtHcm91cE1lbWJlckluQ2hhdENvdW50RW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgFOgI4ASIjCiFQdWxsVW5mYW1pbGlhckNoYXRTdHJhdGVneVJlcXVlc3QiTQoiUHVsbFVuZmFtaWxpYXJDaGF0U3RyYXRlZ3lSZXNwb25zZRIUCgxoaXRfc3RyYXRlZ3kYASABKAgSEQoJam9pbl90aW1lGAIgASgDIkwKHFB1dFJlY2VudFZpc2l0VGFyZ2V0c1JlcXVlc3QSLAoHdGFyZ2V0cxgBIAMoCzIbLm1lc3NhZ2VzLlJlY2VudFZpc2l0VGFyZ2V0IlIKHVB1dFJlY2VudFZpc2l0VGFyZ2V0c1Jlc3BvbnNlEjEKDGZhaWxfdGFyZ2V0cxgBIAMoCzIbLm1lc3NhZ2VzLlJlY2VudFZpc2l0VGFyZ2V0Im8KEVJlY2VudFZpc2l0VGFyZ2V0EjQKC3RhcmdldF90eXBlGAEgASgOMh8ubWVzc2FnZXMuUmVjZW50VmlzaXRUYXJnZXRUeXBlEhEKCXRhcmdldF9pZBgCIAEoCRIRCgl0aW1lc3RhbXAYAyABKAMijQsKHVB1bGxSZWNlbnRWaXNpdFRhcmdldHNSZXF1ZXN0EhEKBWxpbWl0GAEgASgFOgI2MBJICgxlbnRpdHlfaXRlbXMYAiADKAsyMi5tZXNzYWdlcy5QdWxsUmVjZW50VmlzaXRUYXJnZXRzUmVxdWVzdC5FbnRpdHlJdGVtEhgKEGlzX3NlcnZlcl9maWx0ZXIYAyABKAgSNgoRc2RrX2NhY2hlX3RhcmdldHMYBCADKAsyGy5tZXNzYWdlcy5SZWNlbnRWaXNpdFRhcmdldBq8CQoKRW50aXR5SXRlbRJVCgx1c2VyX2NvbmZpZ3MYASABKAsyPS5tZXNzYWdlcy5QdWxsUmVjZW50VmlzaXRUYXJnZXRzUmVxdWVzdC5FbnRpdHlJdGVtLlVzZXJDb25maWdIABJgChJncm91cF9jaGF0X2NvbmZpZ3MYAiABKAsyQi5tZXNzYWdlcy5QdWxsUmVjZW50VmlzaXRUYXJnZXRzUmVxdWVzdC5FbnRpdHlJdGVtLkdyb3VwQ2hhdENvbmZpZ0gAElMKC2JvdF9jb25maWdzGAMgASgLMjwubWVzc2FnZXMuUHVsbFJlY2VudFZpc2l0VGFyZ2V0c1JlcXVlc3QuRW50aXR5SXRlbS5Cb3RDb25maWdIABJZCg50aHJlYWRfY29uZmlncxgEIAEoCzI/Lm1lc3NhZ2VzLlB1bGxSZWNlbnRWaXNpdFRhcmdldHNSZXF1ZXN0LkVudGl0eUl0ZW0uVGhyZWFkQ29uZmlnSAASVgoNbXlfYWlfY29uZmlncxgFIAEoCzI9Lm1lc3NhZ2VzLlB1bGxSZWNlbnRWaXNpdFRhcmdldHNSZXF1ZXN0LkVudGl0eUl0ZW0uTXlBSUNvbmZpZ0gAGvsBCgpVc2VyQ29uZmlnEjMKEHRlbmFudF9jb25kaXRpb24YASABKA4yGS5tZXNzYWdlcy5UZW5hbnRDb25kaXRpb24SQAoXdGFsa2VkX3N0YXR1c19jb25kaXRpb24YAiABKA4yHy5tZXNzYWdlcy5UYWxrZWRTdGF0dXNDb25kaXRpb24SOAoTdXNlcl90eXBlX2NvbmRpdGlvbhgDIAEoDjIbLm1lc3NhZ2VzLlVzZXJUeXBlQ29uZGl0aW9uEjwKFXdvcmtfc3RhdHVzX2NvbmRpdGlvbhgEIAEoDjIdLm1lc3NhZ2VzLldvcmtTdGF0dXNDb25kaXRpb24ahwIKD0dyb3VwQ2hhdENvbmZpZxIzChB0ZW5hbnRfY29uZGl0aW9uGAEgASgOMhkubWVzc2FnZXMuVGVuYW50Q29uZGl0aW9uEkMKGWdyb3VwX2NoYXRfdHlwZV9jb25kaXRpb24YAiABKA4yIC5tZXNzYWdlcy5Hcm91cENoYXRUeXBlQ29uZGl0aW9uEjwKFXB1YmxpY190eXBlX2NvbmRpdGlvbhgDIAEoDjIdLm1lc3NhZ2VzLlB1YmxpY1R5cGVDb25kaXRpb24SPAoVc2hpZWxkX3R5cGVfY29uZGl0aW9uGAQgASgOMh0ubWVzc2FnZXMuU2hpZWxkVHlwZUNvbmRpdGlvbhoLCglCb3RDb25maWcavwEKDFRocmVhZENvbmZpZxIzChB0ZW5hbnRfY29uZGl0aW9uGAEgASgOMhkubWVzc2FnZXMuVGVuYW50Q29uZGl0aW9uEjwKFXRocmVhZF90eXBlX2NvbmRpdGlvbhgCIAEoDjIdLm1lc3NhZ2VzLlRocmVhZFR5cGVDb25kaXRpb24SPAoVcHVibGljX3R5cGVfY29uZGl0aW9uGAMgASgOMh0ubWVzc2FnZXMuUHVibGljVHlwZUNvbmRpdGlvbhoMCgpNeUFJQ29uZmlnQggKBmNvbmZpZyLyCQoeUHVsbFJlY2VudFZpc2l0VGFyZ2V0c1Jlc3BvbnNlEiwKB3RhcmdldHMYASADKAsyGy5tZXNzYWdlcy5SZWNlbnRWaXNpdFRhcmdldBJNCgtjaGF0dGVyX21hcBgCIAMoCzI4Lm1lc3NhZ2VzLlB1bGxSZWNlbnRWaXNpdFRhcmdldHNSZXNwb25zZS5DaGF0dGVyTWFwRW50cnkSRwoIY2hhdF9tYXAYAyADKAsyNS5tZXNzYWdlcy5QdWxsUmVjZW50VmlzaXRUYXJnZXRzUmVzcG9uc2UuQ2hhdE1hcEVudHJ5EksKCnRocmVhZF9tYXAYBCADKAsyNy5tZXNzYWdlcy5QdWxsUmVjZW50VmlzaXRUYXJnZXRzUmVzcG9uc2UuVGhyZWFkTWFwRW50cnkSaAoaY2FuX25vdF9zZWxlY3RfY2hhdHRlcl9tYXAYBSADKAsyRC5tZXNzYWdlcy5QdWxsUmVjZW50VmlzaXRUYXJnZXRzUmVzcG9uc2UuQ2FuTm90U2VsZWN0Q2hhdHRlck1hcEVudHJ5EmkKGnVzZXJfY291bnRfaW52aXNpYmxlX2NoYXRzGAYgAygLMkUubWVzc2FnZXMuUHVsbFJlY2VudFZpc2l0VGFyZ2V0c1Jlc3BvbnNlLlVzZXJDb3VudEludmlzaWJsZUNoYXRzRW50cnkSYAoVY2hhdF9jaGF0dGVyX25pY2tuYW1lGAcgAygLMkEubWVzc2FnZXMuUHVsbFJlY2VudFZpc2l0VGFyZ2V0c1Jlc3BvbnNlLkNoYXRDaGF0dGVyTmlja25hbWVFbnRyeRpECg9DaGF0dGVyTWFwRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuQ2hhdHRlcjoCOAEaPgoMQ2hhdE1hcEVudHJ5EgsKA2tleRgBIAEoCRIdCgV2YWx1ZRgCIAEoCzIOLmVudGl0aWVzLkNoYXQ6AjgBGkIKDlRocmVhZE1hcEVudHJ5EgsKA2tleRgBIAEoCRIfCgV2YWx1ZRgCIAEoCzIQLmVudGl0aWVzLlRocmVhZDoCOAEaUQobQ2FuTm90U2VsZWN0Q2hhdHRlck1hcEVudHJ5EgsKA2tleRgBIAEoCRIhCgV2YWx1ZRgCIAEoDjISLm1pc2MuRGVuaWVkUmVhc29uOgI4ARo+ChxVc2VyQ291bnRJbnZpc2libGVDaGF0c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEadAoYQ2hhdENoYXR0ZXJOaWNrbmFtZUVudHJ5EgsKA2tleRgBIAEoCRJHCgV2YWx1ZRgCIAEoCzI4Lm1lc3NhZ2VzLlB1bGxSZWNlbnRWaXNpdFRhcmdldHNSZXNwb25zZS5DaGF0dGVyTmlja25hbWU6AjgBGrIBCg9DaGF0dGVyTmlja25hbWUSZwoQY2hhdHRlcl9uaWNrbmFtZRgBIAMoCzJNLm1lc3NhZ2VzLlB1bGxSZWNlbnRWaXNpdFRhcmdldHNSZXNwb25zZS5DaGF0dGVyTmlja25hbWUuQ2hhdHRlck5pY2tuYW1lRW50cnkaNgoUQ2hhdHRlck5pY2tuYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKTBQofR2V0UmVjZW50VHJhbnNtaXRUYXJnZXRzUmVxdWVzdBIQCgVsaW1pdBgBIAEoBToBNRIZChFmaWx0ZXJfZ3JvdXBfY2hhdBgCIAEoCBIXCg9maWx0ZXJfcDJwX2NoYXQYAyABKAgSGgoSZmlsdGVyX3RocmVhZF9jaGF0GAQgASgIEiAKGGZpbHRlcl9jcm9zc190ZW5hbnRfY2hhdBgFIAEoCBIVCg1maWx0ZXJfbXlzZWxmGAYgASgIEhUKDWluY2x1ZGVfbXlfYWkYByABKAgSHQoVbmVlZF9wYWNrX3RhcmdldF9kYXRhGAggASgIEhsKE2luY2x1ZGVfdGhyZWFkX2RhdGEYCSABKAgSSgoMZW50aXR5X2l0ZW1zGAogAygLMjQubWVzc2FnZXMuR2V0UmVjZW50VHJhbnNtaXRUYXJnZXRzUmVxdWVzdC5FbnRpdHlJdGVtGrUCCgpFbnRpdHlJdGVtElsKDnRocmVhZF9jb25maWdzGAEgASgLMkEubWVzc2FnZXMuR2V0UmVjZW50VHJhbnNtaXRUYXJnZXRzUmVxdWVzdC5FbnRpdHlJdGVtLlRocmVhZENvbmZpZ0gAGr8BCgxUaHJlYWRDb25maWcSMwoQdGVuYW50X2NvbmRpdGlvbhgBIAEoDjIZLm1lc3NhZ2VzLlRlbmFudENvbmRpdGlvbhI8ChV0aHJlYWRfdHlwZV9jb25kaXRpb24YAiABKA4yHS5tZXNzYWdlcy5UaHJlYWRUeXBlQ29uZGl0aW9uEjwKFXB1YmxpY190eXBlX2NvbmRpdGlvbhgDIAEoDjIdLm1lc3NhZ2VzLlB1YmxpY1R5cGVDb25kaXRpb25CCAoGY29uZmlnIp4HCiBHZXRSZWNlbnRUcmFuc21pdFRhcmdldHNSZXNwb25zZRJQCgd0YXJnZXRzGAEgAygLMj8ubWVzc2FnZXMuR2V0UmVjZW50VHJhbnNtaXRUYXJnZXRzUmVzcG9uc2UuUmVjZW50VHJhbnNtaXRUYXJnZXQSTwoLY2hhdHRlcl9tYXAYAiADKAsyOi5tZXNzYWdlcy5HZXRSZWNlbnRUcmFuc21pdFRhcmdldHNSZXNwb25zZS5DaGF0dGVyTWFwRW50cnkSSQoIY2hhdF9tYXAYAyADKAsyNy5tZXNzYWdlcy5HZXRSZWNlbnRUcmFuc21pdFRhcmdldHNSZXNwb25zZS5DaGF0TWFwRW50cnkSTQoKdGhyZWFkX21hcBgEIAMoCzI5Lm1lc3NhZ2VzLkdldFJlY2VudFRyYW5zbWl0VGFyZ2V0c1Jlc3BvbnNlLlRocmVhZE1hcEVudHJ5GvICChRSZWNlbnRUcmFuc21pdFRhcmdldBJfCgt0YXJnZXRfdHlwZRgBIAIoDjJKLm1lc3NhZ2VzLkdldFJlY2VudFRyYW5zbWl0VGFyZ2V0c1Jlc3BvbnNlLlJlY2VudFRyYW5zbWl0VGFyZ2V0LlRhcmdldFR5cGUSEQoJdGFyZ2V0X2lkGAIgAigJEloKCWV4dF90eXBlcxgDIAMoDjJHLm1lc3NhZ2VzLkdldFJlY2VudFRyYW5zbWl0VGFyZ2V0c1Jlc3BvbnNlLlJlY2VudFRyYW5zbWl0VGFyZ2V0LkV4dFR5cGUSEQoJdGltZXN0YW1wGAQgASgDIjMKClRhcmdldFR5cGUSDwoLVU5LT1dOX1RZUEUQABIICgRDSEFUEAESCgoGVEhSRUFEEAIiQgoHRXh0VHlwZRIPCgtDT01NT05fVFlQRRAAEhIKDkVOQ1JZUFRFRF9UWVBFEAESEgoOUDJQX01ZX0FJX1RZUEUQAhpECg9DaGF0dGVyTWFwRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuQ2hhdHRlcjoCOAEaPgoMQ2hhdE1hcEVudHJ5EgsKA2tleRgBIAEoCRIdCgV2YWx1ZRgCIAEoCzIOLmVudGl0aWVzLkNoYXQ6AjgBGkIKDlRocmVhZE1hcEVudHJ5EgsKA2tleRgBIAEoCRIfCgV2YWx1ZRgCIAEoCzIQLmVudGl0aWVzLlRocmVhZDoCOAEiRAofR2V0RGV0ZWN0ZWRCYW5uZXJTZXR0aW5nUmVxdWVzdBINCgVicmFuZBgBIAIoCRISCgpvc192ZXJzaW9uGAIgAigJIssFCiBHZXREZXRlY3RlZEJhbm5lclNldHRpbmdSZXNwb25zZRJSCg9iYXR0ZXJ5X3NldHRpbmcYASABKAsyOS5tZXNzYWdlcy5HZXREZXRlY3RlZEJhbm5lclNldHRpbmdSZXNwb25zZS5CYXR0ZXJ5U2V0dGluZxJXChJzZWxmX3N0YXJ0X3NldHRpbmcYAiABKAsyOy5tZXNzYWdlcy5HZXREZXRlY3RlZEJhbm5lclNldHRpbmdSZXNwb25zZS5TZWxmU3RhcnRTZXR0aW5nEmEKGGJhdHRlcnlfd2hpdGVfanVtcF9wYXRocxgDIAMoCzI/Lm1lc3NhZ2VzLkdldERldGVjdGVkQmFubmVyU2V0dGluZ1Jlc3BvbnNlLkJhdHRlcnlXaGl0ZUp1bXBQYXRoEmAKF211bHRpX3Rhc2tfbG9ja19zZXR0aW5nGAQgASgLMj8ubWVzc2FnZXMuR2V0RGV0ZWN0ZWRCYW5uZXJTZXR0aW5nUmVzcG9uc2UuTXVsdGlUYXNrTG9ja1NldHRpbmcaTwoOQmF0dGVyeVNldHRpbmcSEQoJaW1hZ2Vfa2V5GAEgASgJEhUKDWltYWdlX2ZzX3VuaXQYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkaUQoQU2VsZlN0YXJ0U2V0dGluZxIRCglpbWFnZV9rZXkYASABKAkSFQoNaW1hZ2VfZnNfdW5pdBgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRo6ChRCYXR0ZXJ5V2hpdGVKdW1wUGF0aBIQCghwa2dfbmFtZRgBIAIoCRIQCghjbHNfbmFtZRgCIAIoCRpVChRNdWx0aVRhc2tMb2NrU2V0dGluZxIRCglpbWFnZV9rZXkYASABKAkSFQoNaW1hZ2VfZnNfdW5pdBgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCSLIAgoSRWRpdE1lc3NhZ2VSZXF1ZXN0EiIKBm1zZ19pZBgBIAIoA0ISisMaDnNwbGl0LHR5cGU9bXNnEgsKA2NpZBgCIAEoCRIkCgR0eXBlGAMgASgOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlEjUKB2NvbnRlbnQYBCABKAsyJC5tZXNzYWdlcy5FZGl0TWVzc2FnZVJlcXVlc3QuQ29udGVudBI2ChJwYXJ0aWFsX3JlcGx5X2luZm8YBSABKAsyGi5lbnRpdGllcy5QYXJ0aWFsUmVwbHlJbmZvGmwKB0NvbnRlbnQSJQoJcmljaF90ZXh0GAEgASgLMhIuZW50aXRpZXMuUmljaFRleHQSDQoFdGl0bGUYAiABKAkSKwoMbGluZ29fb3B0aW9uGAMgASgLMhUuZW50aXRpZXMuTGluZ29PcHRpb24iOQoTRWRpdE1lc3NhZ2VSZXNwb25zZRIiCgdtZXNzYWdlGAEgAigLMhEuZW50aXRpZXMuTWVzc2FnZSJYChtDbGVhblVzZXJDaGF0TWVzc2FnZVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIQCghwb3NpdGlvbhgCIAIoBSIeChxDbGVhblVzZXJDaGF0TWVzc2FnZVJlc3BvbnNlIj0KGFB1c2hDbGVhblVzZXJDaGF0TWVzc2FnZRIPCgdjaGF0X2lkGAEgAigDEhAKCHBvc2l0aW9uGAIgAigFImAKIVB1bGxNZXNzYWdlT3BlcmF0aW9uQ29uZmlnUmVxdWVzdBI7Cgxjb25maWdfdHlwZXMYASADKA4yJS5lbnRpdGllcy5NZXNzYWdlT3BlcmF0aW9uQ29uZmlnLlR5cGUiVgoiUHVsbE1lc3NhZ2VPcGVyYXRpb25Db25maWdSZXNwb25zZRIwCgZjb25maWcYASACKAsyIC5lbnRpdGllcy5NZXNzYWdlT3BlcmF0aW9uQ29uZmlnIj4KFlB1bGxNZXNzYWdlRm9sZFJlcXVlc3QSJAoIZm9sZF9pZHMYASADKANCEorDGg5zcGxpdCx0eXBlPW1zZyKxAQoXUHVsbE1lc3NhZ2VGb2xkUmVzcG9uc2USSgoNbWVzc2FnZV9mb2xkcxgBIAMoCzIzLm1lc3NhZ2VzLlB1bGxNZXNzYWdlRm9sZFJlc3BvbnNlLk1lc3NhZ2VGb2xkc0VudHJ5GkoKEU1lc3NhZ2VGb2xkc0VudHJ5EgsKA2tleRgBIAEoAxIkCgV2YWx1ZRgCIAEoCzIVLmVudGl0aWVzLk1lc3NhZ2VGb2xkOgI4ASI+Cg9QdXNoTWVzc2FnZUZvbGQSKwoMbWVzc2FnZV9mb2xkGAEgAygLMhUuZW50aXRpZXMuTWVzc2FnZUZvbGQiUQobUHV0TWVzc2FnZUZvbGRGb2xsb3dSZXF1ZXN0EiMKB2ZvbGRfaWQYASABKANCEorDGg5zcGxpdCx0eXBlPW1zZxINCgVjb3VudBgCIAEoBSIeChxQdXRNZXNzYWdlRm9sZEZvbGxvd1Jlc3BvbnNlInAKHFB1bGxNZXNzYWdlRm9sZEZvbGxvd1JlcXVlc3QSIwoHZm9sZF9pZBgBIAEoA0ISisMaDnNwbGl0LHR5cGU9bXNnEhwKFHN0YXJ0X2ZvbGxvd190aW1lX21zGAIgASgDEg0KBWxpbWl0GAMgASgFIl8KHVB1bGxNZXNzYWdlRm9sZEZvbGxvd1Jlc3BvbnNlEiwKB2ZvbGxvd3MYASADKAsyGy5lbnRpdGllcy5NZXNzYWdlRm9sZEZvbGxvdxIQCghoYXNfbW9yZRgCIAEoCCJeChhSZWNhbGxNZXNzYWdlRm9sZFJlcXVlc3QSIwoHZm9sZF9pZBgBIAEoA0ISisMaDnNwbGl0LHR5cGU9bXNnEh0KFXJlY2FsbF9ieV9ncm91cF9hZG1pbhgCIAEoCCIbChlSZWNhbGxNZXNzYWdlRm9sZFJlc3BvbnNlIqABChlQdXRTY2hlZHVsZU1lc3NhZ2VSZXF1ZXN0EjAKC3B1dF9yZXF1ZXN0GAEgAigLMhsubWVzc2FnZXMuUHV0TWVzc2FnZVJlcXVlc3QSFQoNc2NoZWR1bGVfdGltZRgCIAIoAxInCgdjaGF0X2lkGAMgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhEKCWVudGl0eV9pZBgEIAIoCSJIChpQdXRTY2hlZHVsZU1lc3NhZ2VSZXNwb25zZRIqCgdtZXNzYWdlGAEgASgLMhkuZW50aXRpZXMuU2NoZWR1bGVNZXNzYWdlIpoCCh9QdWxsQ2hhdFNjaGVkdWxlTWVzc2FnZXNSZXF1ZXN0EicKB2NoYXRfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSSQoLZW50aXR5X3R5cGUYAiACKA4yNC5tZXNzYWdlcy5QdWxsQ2hhdFNjaGVkdWxlTWVzc2FnZXNSZXF1ZXN0LkVudGl0eVR5cGUSEQoJZW50aXR5X2lkGAMgAigJEjAKBnN0YXR1cxgEIAMoDjIgLmVudGl0aWVzLlNjaGVkdWxlTWVzc2FnZS5TdGF0dXMiPgoKRW50aXR5VHlwZRIQCgxVTktOT1dOX1RZUEUQABINCglDSEFUX09OTFkQARIPCgtUSFJFQURfT05MWRACIk8KIFB1bGxDaGF0U2NoZWR1bGVNZXNzYWdlc1Jlc3BvbnNlEisKCG1lc3NhZ2VzGAEgAygLMhkuZW50aXRpZXMuU2NoZWR1bGVNZXNzYWdlIl8KH1B1bGxTY2hlZHVsZU1lc3NhZ2VCeUlEc1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBITCgttZXNzYWdlX2lkcxgCIAMoCSK6AQogUHVsbFNjaGVkdWxlTWVzc2FnZUJ5SURzUmVzcG9uc2USSgoIbWVzc2FnZXMYASADKAsyOC5tZXNzYWdlcy5QdWxsU2NoZWR1bGVNZXNzYWdlQnlJRHNSZXNwb25zZS5NZXNzYWdlc0VudHJ5GkoKDU1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgJEigKBXZhbHVlGAIgASgLMhkuZW50aXRpZXMuU2NoZWR1bGVNZXNzYWdlOgI4ASIiCiBQdWxsU2NoZWR1bGVNZXNzYWdlQnlVc2VyUmVxdWVzdCIjCiFQdWxsU2NoZWR1bGVNZXNzYWdlQnlVc2VyUmVzcG9uc2UiqAMKG1BhdGNoU2NoZWR1bGVNZXNzYWdlUmVxdWVzdBJDCgpwYXRjaF90eXBlGAEgAigOMi8ubWVzc2FnZXMuUGF0Y2hTY2hlZHVsZU1lc3NhZ2VSZXF1ZXN0LlBhdGNoVHlwZRISCgptZXNzYWdlX2lkGAIgAigJEicKB2NoYXRfaWQYAyACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSFQoNc2NoZWR1bGVfdGltZRgUIAEoAxIkCgR0eXBlGBUgASgOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlEjQKB2NvbnRlbnQYFiABKAsyIy5tZXNzYWdlcy5QdXRNZXNzYWdlUmVxdWVzdC5Db250ZW50EhgKEHNlbmRfaW1tZWRpYXRlbHkYFyABKAgSNgoScGFydGlhbF9yZXBseV9pbmZvGBggASgLMhouZW50aXRpZXMuUGFydGlhbFJlcGx5SW5mbyJCCglQYXRjaFR5cGUSEAoMVU5LTk9XTl9UWVBFEAASCgoGVVBEQVRFEAESCwoHU1VTUEVORBACEgoKBkRFTEVURRADIkoKHFBhdGNoU2NoZWR1bGVNZXNzYWdlUmVzcG9uc2USKgoHbWVzc2FnZRgBIAEoCzIZLmVudGl0aWVzLlNjaGVkdWxlTWVzc2FnZSKHBAoaUHVzaFNjaGVkdWxlTWVzc2FnZVJlcXVlc3QSDwoHY2hhdF9pZBgBIAIoCRJKCghtZXNzYWdlcxgCIAMoCzI4Lm1lc3NhZ2VzLlB1c2hTY2hlZHVsZU1lc3NhZ2VSZXF1ZXN0LlNjaGVkdWxlTWVzc2FnZUluZm8SJQoJZmVlZF9jYXJkGAMgASgLMhIuZW50aXRpZXMuRmVlZENhcmQa0AEKE1NjaGVkdWxlTWVzc2FnZUluZm8SEgoKbWVzc2FnZV9pZBgBIAIoCRI7CgZhY3Rpb24YAiACKA4yKy5tZXNzYWdlcy5QdXNoU2NoZWR1bGVNZXNzYWdlUmVxdWVzdC5BQ1RJT04SKgoHbWVzc2FnZRgDIAEoCzIZLmVudGl0aWVzLlNjaGVkdWxlTWVzc2FnZRIQCghwb3NpdGlvbhgEIAEoBRIRCgl0aHJlYWRfaWQYBSABKAkSFwoPdGhyZWFkX3Bvc2l0aW9uGAYgASgFIpEBCgZBQ1RJT04SCwoHVU5LTk9XThAAEhIKDkNSRUFURV9TVUNDRVNTEAESEgoOVVBEQVRFX1NVQ0NFU1MQAhIZChVTRU5EX1NDSEVEVUxFX1NVQ0NFU1MQAxIcChhTRU5EX0lNTUVESUFURUxZX1NVQ0NFU1MQBBINCglTRU5EX0ZBSUwQBRIKCgZERUxFVEUQBiKpAQoVUHV0TWVzc2FnZUxpbmtSZXF1ZXN0Eg8KB2Zyb21faWQYASACKAMSNgoEZnJvbRgCIAIoDjIoLm1lc3NhZ2VzLlB1dE1lc3NhZ2VMaW5rUmVxdWVzdC5MaW5rRnJvbRIRCgljb3BpZWRfaWQYAyADKAMiNAoITGlua0Zyb20SCAoEQ0hBVBABEgoKBlRIUkVBRBACEhIKDk1FU1NBR0VfVEhSRUFEEAMiOgoWUHV0TWVzc2FnZUxpbmtSZXNwb25zZRINCgV0b2tlbhgBIAIoCRIRCgl0b2tlbl91cmwYAiACKAkiMAofR2V0TWVzc2FnZUxpbmtQZXJtaXNzaW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCSKtAQogR2V0TWVzc2FnZUxpbmtQZXJtaXNzaW9uUmVzcG9uc2USSQoKcGVybWlzc2lvbhgBIAEoDjI1Lm1lc3NhZ2VzLkdldE1lc3NhZ2VMaW5rUGVybWlzc2lvblJlc3BvbnNlLlBlcm1pc3Npb24SEwoLYXBwbGlua191cmwYAiABKAkiKQoKUGVybWlzc2lvbhIICgROT05FEAASEQoNQUxMT1dfUFJFVklFVxABInwKHlB1bGxNZXNzYWdlTGlua01lc3NhZ2VzUmVxdWVzdBIYChBtZXNzYWdlX2xpbmtfdXJsGAEgAigJEhUKDXByZXZpZXdfdG9rZW4YAiACKAkSGAoQbmVlZF9tZXNzYWdlX2lkcxgDIAMoAxIPCgdjaGF0X2lkGAQgASgDIkYKH1B1bGxNZXNzYWdlTGlua01lc3NhZ2VzUmVzcG9uc2USIwoEbGluaxgBIAIoCzIVLmVudGl0aWVzLk1lc3NhZ2VMaW5rIlsKMVB1bGxTaW1wbGlmeVN5c3RlbU1lc3NhZ2VUb29sVGlwQ2hhdHRlcklEc1JlcXVlc3QSJgoKbWVzc2FnZV9pZBgBIAEoA0ISisMaDnNwbGl0LHR5cGU9bXNnImoKMlB1bGxTaW1wbGlmeVN5c3RlbU1lc3NhZ2VUb29sVGlwQ2hhdHRlcklEc1Jlc3BvbnNlEhMKC2NoYXR0ZXJfaWRzGAEgAygDEh8KF21lc3NhZ2VfY29udGVudF92ZXJzaW9uGAIgASgFIsABChtQYXRjaFJlc3RyaWN0TWVzc2FnZVJlcXVlc3QSDgoGbXNnX2lkGAEgASgJEicKB2NoYXRfaWQYAiABKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSRQoLYWN0aW9uX3R5cGUYAyABKA4yMC5tZXNzYWdlcy5QYXRjaFJlc3RyaWN0TWVzc2FnZVJlcXVlc3QuQWN0aW9uVHlwZSIhCgpBY3Rpb25UeXBlEggKBE9QRU4QARIJCgVDTE9TRRACIsUBChxQYXRjaFJlc3RyaWN0TWVzc2FnZVJlc3BvbnNlEg4KBm1zZ19pZBgBIAEoCRJACgZyZXN1bHQYAiABKA4yMC5tZXNzYWdlcy5QYXRjaFJlc3RyaWN0TWVzc2FnZVJlcXVlc3QuQWN0aW9uVHlwZRI5Cg9kaXNhYmxlZF9hY3Rpb24YAyABKAsyIC5lbnRpdGllcy5NZXNzYWdlLkRpc2FibGVkQWN0aW9uEhgKEHNldF9jb250ZW50X2dyYXkYBCABKAgivwIKGlB1c2hSZXN0cmljdE1lc3NhZ2VSZXF1ZXN0Eg8KB2NoYXRfaWQYASABKAkSSgoIbWVzc2FnZXMYAiADKAsyOC5tZXNzYWdlcy5QdXNoUmVzdHJpY3RNZXNzYWdlUmVxdWVzdC5SZXN0cmljdE1lc3NhZ2VJbmZvGqABChNSZXN0cmljdE1lc3NhZ2VJbmZvEg4KBm1zZ19pZBgBIAEoCRIPCgdjaGF0X2lkGAIgASgJEkQKC2FjdGlvbl90eXBlGAMgASgOMi8ubWVzc2FnZXMuUHVzaFJlc3RyaWN0TWVzc2FnZVJlcXVlc3QuQWN0aW9uVHlwZRIiCgdtZXNzYWdlGAQgASgLMhEuZW50aXRpZXMuTWVzc2FnZSIhCgpBY3Rpb25UeXBlEggKBE9QRU4QARIJCgVDTE9TRRACIiAKHkFwcGx5UDJQQ2hhdFBlcm1pc3Npb25SZXNwb25zZSJOCh1BcHBseVAyUENoYXRQZXJtaXNzaW9uUmVxdWVzdBISCgp0b191c2VyX2lkGAEgAigJEhkKEWFwcGx5X2Rlc2NyaXB0aW9uGAIgASgJIiAKHkFncmVlUDJQQ2hhdFBlcm1pc3Npb25SZXNwb25zZSI1Ch1BZ3JlZVAyUENoYXRQZXJtaXNzaW9uUmVxdWVzdBIUCgxmcm9tX3VzZXJfaWQYASACKAkiRwoWUHVzaFBhcnRTdHJlYW1NZXNzYWdlcxItCghtZXNzYWdlcxgBIAMoCzIbLmVudGl0aWVzLlBhcnRTdHJlYW1NZXNzYWdlIn0KHVB1bGxQYXJ0U3RyZWFtTWVzc2FnZXNSZXF1ZXN0EiYKCm1lc3NhZ2VfaWQYASABKANCEorDGg5zcGxpdCx0eXBlPW1zZxIUCgxzZXF1ZW5jZV9pZHMYAiADKAUSHgoWZ2V0X2xhdGVzdF9mdWxsX3BhY2tldBgDIAEoCCJ/Ch5QdWxsUGFydFN0cmVhbU1lc3NhZ2VzUmVzcG9uc2USOQoUcGFydF9zdHJlYW1fbWVzc2FnZXMYASADKAsyGy5lbnRpdGllcy5QYXJ0U3RyZWFtTWVzc2FnZRIiCgdtZXNzYWdlGAIgASgLMhEuZW50aXRpZXMuTWVzc2FnZSJNChlOb3RpY2VJTVNES1VwZ3JhZGVSZXF1ZXN0EhgKEGZyb21fc2RrX3ZlcnNpb24YASABKAkSFgoOdG9fc2RrX3ZlcnNpb24YAiABKAkiHAoaTm90aWNlSU1TREtVcGdyYWRlUmVzcG9uc2UicgoaRGVyaXZlTWVzc2FnZXNUb0RvY1JlcXVlc3QSFgoOdXNlcl90aW1lX3pvbmUYASABKAkSJwoHY2hhdF9pZBgCIAEoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBITCgttZXNzYWdlX2lkcxgDIAMoAyKVAQobRGVyaXZlTWVzc2FnZXNUb0RvY1Jlc3BvbnNlEg8KB2RvY191cmwYASABKAkSEQoJZG9jX3RpdGxlGAIgASgJEhYKDmRvY3VtZW50X3Rva2VuGAMgASgJEhoKEmRlcml2ZV9tZXNzYWdlX2lkcxgEIAMoAxIeChZyZXN0cmljdGVkX21lc3NhZ2VfaWRzGAUgAygDIkkKH0dldE1lc3NhZ2VNeUFJQ2hhdE1vZGVJRFJlcXVlc3QSJgoKbWVzc2FnZV9pZBgBIAEoA0ISisMaDnNwbGl0LHR5cGU9bXNnImYKIEdldE1lc3NhZ2VNeUFJQ2hhdE1vZGVJRFJlc3BvbnNlEhkKEW15YWlfY2hhdF9tb2RlX2lkGAEgASgDEhQKDG15YWlfY2hhdF9pZBgCIAEoAxIRCglkb2NfdG9rZW4YAyABKAkiqQcKGEJhdGNoU2hhcmVNZXNzYWdlUmVxdWVzdBIoCghjaGF0X2lkcxgBIAMoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBI+Cgd0YXJnZXRzGAIgAygLMi0ubWVzc2FnZXMuQmF0Y2hTaGFyZU1lc3NhZ2VSZXF1ZXN0LlRhcmdldEluZm8SNwoFc2NlbmUYAyACKA4yKC5tZXNzYWdlcy5CYXRjaFNoYXJlTWVzc2FnZVJlcXVlc3QuU2NlbmUSUwoUbWVzc2FnZV9zaGFyZV9vcHRpb24YBCABKAsyNS5tZXNzYWdlcy5CYXRjaFNoYXJlTWVzc2FnZVJlcXVlc3QuTWVzc2FnZVNoYXJlT3B0aW9uEksKEGZhdl9zaGFyZV9vcHRpb24YBSABKAsyMS5tZXNzYWdlcy5CYXRjaFNoYXJlTWVzc2FnZVJlcXVlc3QuRmF2U2hhcmVPcHRpb24STQoRZmxhZ19zaGFyZV9vcHRpb24YBiABKAsyMi5tZXNzYWdlcy5CYXRjaFNoYXJlTWVzc2FnZVJlcXVlc3QuRmxhZ1NoYXJlT3B0aW9uGp8BCgpUYXJnZXRJbmZvEgsKA2NpZBgBIAEoCRJNCgt0YXJnZXRfdHlwZRgCIAEoDjI4Lm1lc3NhZ2VzLkJhdGNoU2hhcmVNZXNzYWdlUmVxdWVzdC5UYXJnZXRJbmZvLlRhcmdldFR5cGUSEQoJdGFyZ2V0X2lkGAMgASgJIiIKClRhcmdldFR5cGUSCAoEQ0hBVBABEgoKBlRIUkVBRBACGl4KEk1lc3NhZ2VTaGFyZU9wdGlvbhISCgptZXNzYWdlX2lkGAEgAigJEhQKDHJlc291cmNlX2tleRgCIAIoCRIeChZvcmlnaW5fbWVyZ2Vmb3J3YXJkX2lkGAMgASgJGkoKDkZhdlNoYXJlT3B0aW9uEhIKCm1lc3NhZ2VfaWQYASACKAkSFAoMcmVzb3VyY2Vfa2V5GAIgAigJEg4KBmZhdl9pZBgDIAEoCRpbCg9GbGFnU2hhcmVPcHRpb24SEgoKbWVzc2FnZV9pZBgBIAIoCRIUCgxyZXNvdXJjZV9rZXkYAiACKAkSHgoWb3JpZ2luX21lcmdlZm9yd2FyZF9pZBgDIAEoCSJOCgVTY2VuZRIWChJDSEFUX01FU1NBR0VfU0hBUkUQARIVChFGQVZfTUVTU0FHRV9TSEFSRRACEhYKEkZMQUdfTUVTU0FHRV9TSEFSRRADIqQBChlCYXRjaFNoYXJlTWVzc2FnZVJlc3BvbnNlEkMKCG1lc3NhZ2VzGAEgAygLMjEubWVzc2FnZXMuQmF0Y2hTaGFyZU1lc3NhZ2VSZXNwb25zZS5NZXNzYWdlc0VudHJ5GkIKDU1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuTWVzc2FnZToCOAEiOAohUHVsbFR1cnRsZUNhbnZhc1NjcmlwdEluZm9SZXF1ZXN0EhMKC3NjcmlwdF9rZXlzGAEgAygJIs8BCiJQdWxsVHVydGxlQ2FudmFzU2NyaXB0SW5mb1Jlc3BvbnNlElMKDHNjcmlwdF9pbmZvcxgBIAMoCzI9Lm1lc3NhZ2VzLlB1bGxUdXJ0bGVDYW52YXNTY3JpcHRJbmZvUmVzcG9uc2UuU2NyaXB0SW5mb3NFbnRyeRpUChBTY3JpcHRJbmZvc0VudHJ5EgsKA2tleRgBIAEoCRIvCgV2YWx1ZRgCIAEoCzIgLmVudGl0aWVzLlR1cnRsZUNhbnZhc1NjcmlwdEluZm86AjgBIiAKHkdldFVzZXJCYW5uZXJOb3RpZnlJbmZvUmVxdWVzdCK8AQofR2V0VXNlckJhbm5lck5vdGlmeUluZm9SZXNwb25zZRIWCg5pc19mcmVlX3RlbmFudBgBIAIoCBITCgtzaG93X2Jhbm5lchgCIAIoCBIaChJ0ZW5hbnRfY3JlYXRlX3RpbWUYAyACKAMSHgoWbG9naWNhbF9kZWxldGVfbWludXRlcxgEIAEoAxIfChdwaHlzaWNhbF9kZWxldGVfbWludXRlcxgFIAEoAxIPCgdpc19iYXNlGAYgASgIIiAKHkdldFVzZXJOb3RpZnlCYW5uZXJUeXBlUmVxdWVzdCJ1Ch9HZXRVc2VyTm90aWZ5QmFubmVyVHlwZVJlc3BvbnNlEikKC2Jhbm5lcl90eXBlGAEgAigOMhQubWVzc2FnZXMuQmFubmVyVHlwZRISCgphYl90ZXN0X2lkGAIgASgDEhMKC2JpbGxpbmdfdXJsGAMgASgJIkgKG1JlcG9ydFVzZXJTaG93QmFubmVyUmVxdWVzdBIpCgtiYW5uZXJfdHlwZRgBIAIoDjIULm1lc3NhZ2VzLkJhbm5lclR5cGUiHgocUmVwb3J0VXNlclNob3dCYW5uZXJSZXNwb25zZSpnChFGb3J3YXJkVGFyZ2V0VHlwZRIfChtVTktOT1dOX0ZPUldBUkRfVEFSR0VUX1RZUEUQABINCglDSEFUX09OTFkQARIOCgpUT1BJQ19PTkxZEAISEgoOQ0hBVF9BTkRfVE9QSUMQAyo6ChVSZWNlbnRWaXNpdFRhcmdldFR5cGUSCwoHVU5LTk9XThAAEggKBENIQVQQARIKCgZUSFJFQUQQAipJCg9UZW5hbnRDb25kaXRpb24SDgoKQUxMX1RFTkFOVBAAEhQKEE5PVF9DUk9TU19URU5BTlQQARIQCgxDUk9TU19URU5BTlQQAipDChVUYWxrZWRTdGF0dXNDb25kaXRpb24SDgoKQUxMX1RBTEtFRBAAEgoKBlRBTEtFRBABEg4KCk5PVF9UQUxLRUQQAio3ChFVc2VyVHlwZUNvbmRpdGlvbhIMCghBTExfVVNFUhAAEggKBFNFTEYQARIKCgZPVEhFUlMQAipHChNXb3JrU3RhdHVzQ29uZGl0aW9uEhAKDEFMTF9SRVNJR05FRBAAEgwKCFJFU0lHTkVEEAESEAoMTk9UX1JFU0lHTkVEEAIqSQoWR3JvdXBDaGF0VHlwZUNvbmRpdGlvbhIMCghBTExfQ0hBVBAAEhAKDERFRkFVTFRfQ0hBVBABEg8KC1RIUkVBRF9DSEFUEAIqRgoTVGhyZWFkVHlwZUNvbmRpdGlvbhIOCgpBTExfVEhSRUFEEAASDwoLQ0hBVF9USFJFQUQQARIOCgpNU0dfVEhSRUFEEAIqPgoTUHVibGljVHlwZUNvbmRpdGlvbhIOCgpBTExfU1RBVFVTEAASCgoGUFVCTElDEAESCwoHUFJJVkFURRACKjYKE1NoaWVsZFR5cGVDb25kaXRpb24SBwoDQUxMEAASCgoGU0hJRUxEEAESCgoGTk9STUFMEAIqSwoKQmFubmVyVHlwZRIMCghOb0Jhbm5lchABEg8KC0Jsb2NrQmFubmVyEAISDgoKRmVlZEJhbm5lchADEg4KClNpZGVCYW5uZXIQBDLzBAoOTWVzc2FnZUdyZWV0ZXISQwoEc2VuZBIbLm1lc3NhZ2VzLlB1dE1lc3NhZ2VSZXF1ZXN0GhwubWVzc2FnZXMuUHV0TWVzc2FnZVJlc3BvbnNlIgASVwoIdHJhbnNtaXQSIy5tZXNzYWdlcy5QdXRUcmFuc21pdE1lc3NhZ2VSZXF1ZXN0GiQubWVzc2FnZXMuUHV0VHJhbnNtaXRNZXNzYWdlUmVzcG9uc2UiABJQCgNnZXQSIi5tZXNzYWdlcy5QdWxsTWVzc2FnZXNCeUlkc1JlcXVlc3QaIy5tZXNzYWdlcy5QdWxsTWVzc2FnZXNCeUlkc1Jlc3BvbnNlIgASZwoOZ2V0QnlQb3NpdGlvbnMSKC5tZXNzYWdlcy5QdWxsTWVzc2FnZXNCeVBvc2l0aW9uc1JlcXVlc3QaKS5tZXNzYWdlcy5QdWxsTWVzc2FnZXNCeVBvc2l0aW9uc1Jlc3BvbnNlIgASSwoGZGVsZXRlEh4ubWVzc2FnZXMuRGVsZXRlTWVzc2FnZVJlcXVlc3QaHy5tZXNzYWdlcy5EZWxldGVNZXNzYWdlUmVzcG9uc2UiABJfCgxnZXRSZWFkU3RhdGUSJS5tZXNzYWdlcy5QdWxsTWVzc2FnZVJlYWRTdGF0ZVJlcXVlc3QaJi5tZXNzYWdlcy5QdWxsTWVzc2FnZVJlYWRTdGF0ZVJlc3BvbnNlIgASWgoPZ2V0Q2hhdE1lc3NhZ2VzEiEubWVzc2FnZXMuUHVsbENoYXRNZXNzYWdlc1JlcXVlc3QaIi5tZXNzYWdlcy5QdWxsQ2hhdE1lc3NhZ2VzUmVzcG9uc2UiAEJMChZjb20uc3MuYW5kcm9pZC5sYXJrLnBiSANaMGNvZGUuYnl0ZWQub3JnL2xhcmsvaW0tcHJvdG9idWYvaW1wcm90by9tZXNzYWdlcw",[J,y,he]);var Ce=P(w,4),ue=P(w,4,0);var zl=P(w,22);var wl=P(w,32);var gl=P(w,39);var Vt=P(w,41);var Ll=P(w,44);var tt=P(w,46);var vl=P(w,58);var Pl=P(w,108);var jl=P(w,167);var Ol=P(w,169);var _l=P(w,171);var ql=P(w,175);var Fo=Zo(w,0),Fe=go(Fo);import{enumDesc as Xo,fileDesc as Uo,messageDesc as ie,serviceDesc as TA,tsEnum as Go}from"@bufbuild/protobuf/codegenv2";import{enumDesc as iA,fileDesc as So,messageDesc as pA,tsEnum as IA}from"@bufbuild/protobuf/codegenv2";var Fl=So("ChF0b3BpY19ncm91cC5wcm90bxILdG9waWNfZ3JvdXAikgEKGVB1dFRvcGljc1JlYWRTdGF0ZVJlcXVlc3QSQwoKcmVhZF9wYWlycxgBIAMoCzIvLnRvcGljX2dyb3VwLlB1dFRvcGljc1JlYWRTdGF0ZVJlcXVlc3QuUmVhZFBhaXIaMAoIUmVhZFBhaXISDwoHY2hhdF9pZBgBIAIoCRITCgttZXNzYWdlX2lkcxgCIAMoCSI2ChpQdXRUb3BpY3NSZWFkU3RhdGVSZXNwb25zZRIYChByZWFkX21lc3NhZ2VfaWRzGAEgAygJIj0KIlVuaW50ZXJlc3RUb3BpY0dyb3VwRm9yVXNlclJlcXVlc3QSFwoPdG9waWNfZ3JvdXBfaWRzGAEgAygJIiUKI1VuaW50ZXJlc3RUb3BpY0dyb3VwRm9yVXNlclJlc3BvbnNlIjMKHVVuaW50ZXJlc3RUb3BpY0ZvclVzZXJSZXF1ZXN0EhIKCnRocmVhZF9pZHMYASADKAkiIAoeVW5pbnRlcmVzdFRvcGljRm9yVXNlclJlc3BvbnNlIjAKHFVuaW50ZXJlc3RVc2VyRm9yVXNlclJlcXVlc3QSEAoIdXNlcl9pZHMYASADKAkiHwodVW5pbnRlcmVzdFVzZXJGb3JVc2VyUmVzcG9uc2UioAQKFFJlY29tbWVuZGVkR3JvdXBJdGVtEhYKDnRvcGljX2dyb3VwX2lkGAEgAigJEhgKEHRvcGljX2dyb3VwX25hbWUYAiABKAkSHwoGYXZhdGFyGAMgASgLMg8uZW50aXRpZXMuSW1hZ2USWgoWaTE4bl90b3BpY19ncm91cF9uYW1lcxgEIAMoCzI6LnRvcGljX2dyb3VwLlJlY29tbWVuZGVkR3JvdXBJdGVtLkkxOG5Ub3BpY0dyb3VwTmFtZXNFbnRyeRI2Cgtqb2luX3N0YXR1cxgFIAEoDjIhLnRvcGljX2dyb3VwLlRvcGljR3JvdXBKb2luU3RhdHVzEkQKDXJlbGF0ZWRfdXNlcnMYBiADKAsyLS50b3BpY19ncm91cC5SZWNvbW1lbmRlZEdyb3VwSXRlbS5SZWxhdGVkVXNlchIgChh0b3BpY19ncm91cF9tZW1iZXJfY291bnQYByABKAUafQoLUmVsYXRlZFVzZXISDwoHdXNlcl9pZBgBIAIoCRISCgphdmF0YXJfdXJsGAIgASgJEiIKBmF2YXRhchgDIAEoCzISLmVudGl0aWVzLkltYWdlU2V0EiUKDGF2YXRhcl9pbWFnZRgEIAEoCzIPLmVudGl0aWVzLkltYWdlGjoKGEkxOG5Ub3BpY0dyb3VwTmFtZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkYKIVB1bGxSZWNvbW1lbmRlZFRvcGljR3JvdXBzUmVxdWVzdBIOCgZjdXJzb3IYASABKAMSEQoFY291bnQYAiABKAU6AjIwIo8BCiJQdWxsUmVjb21tZW5kZWRUb3BpY0dyb3Vwc1Jlc3BvbnNlEkIKF3JlY29tbWVuZGVkX2dyb3VwX2l0ZW1zGAEgAygLMiEudG9waWNfZ3JvdXAuUmVjb21tZW5kZWRHcm91cEl0ZW0SEwoLbmV4dF9jdXJzb3IYAiABKAMSEAoIaGFzX21vcmUYAyABKAgiOAoLTXlHcm91cEl0ZW0SKQoLdG9waWNfZ3JvdXAYASACKAsyFC5lbnRpdGllcy5Ub3BpY0dyb3VwIj0KGFB1bGxNeVRvcGljR3JvdXBzUmVxdWVzdBIOCgZjdXJzb3IYASABKAMSEQoFY291bnQYAiABKAU6AjIwInQKGVB1bGxNeVRvcGljR3JvdXBzUmVzcG9uc2USMAoObXlfZ3JvdXBfaXRlbXMYASADKAsyGC50b3BpY19ncm91cC5NeUdyb3VwSXRlbRITCgtuZXh0X2N1cnNvchgCIAEoAxIQCghoYXNfbW9yZRgDIAEoCCI6Cg1Qb3N0R3JvdXBJdGVtEikKC3RvcGljX2dyb3VwGAEgAigLMhQuZW50aXRpZXMuVG9waWNHcm91cCJBChxQdWxsVG9waWNHcm91cHNUb1Bvc3RSZXF1ZXN0Eg4KBmN1cnNvchgBIAEoAxIRCgVjb3VudBgCIAEoBToCMjAifAodUHVsbFRvcGljR3JvdXBzVG9Qb3N0UmVzcG9uc2USNAoQcG9zdF9ncm91cF9pdGVtcxgBIAMoCzIaLnRvcGljX2dyb3VwLlBvc3RHcm91cEl0ZW0SEwoLbmV4dF9jdXJzb3IYAiABKAMSEAoIaGFzX21vcmUYAyABKAgikgQKG1B1bGxUb3BpY0dyb3Vwc0J5SWRzUmVxdWVzdBIvCg90b3BpY19ncm91cF9pZHMYASADKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSZQoYbGFzdF92aXNpYmxlX21lc3NhZ2VfaWRzGGUgAygLMkMudG9waWNfZ3JvdXAuUHVsbFRvcGljR3JvdXBzQnlJZHNSZXF1ZXN0Lkxhc3RWaXNpYmxlTWVzc2FnZUlkc0VudHJ5EhcKD2lzX2xpY2Vuc2VfYXV0aBhmIAEoCBIkChxhdXRoX3RyYW5zbGF0ZV9nbG9iYWxfc3dpdGNoGGcgASgIEiwKJGF1dGhfdHJhbnNsYXRlX2dsb2JhbF9zd2l0Y2hfdmVyc2lvbhhoIAEoAxJuCh1iYXNlX2xhc3RfdmlzaWJsZV9tZXNzYWdlX2lkcxhpIAMoCzJHLnRvcGljX2dyb3VwLlB1bGxUb3BpY0dyb3Vwc0J5SWRzUmVxdWVzdC5CYXNlTGFzdFZpc2libGVNZXNzYWdlSWRzRW50cnkaPAoaTGFzdFZpc2libGVNZXNzYWdlSWRzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgDOgI4ARpACh5CYXNlTGFzdFZpc2libGVNZXNzYWdlSWRzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgDOgI4ASLjAgocUHVsbFRvcGljR3JvdXBzQnlJZHNSZXNwb25zZRJQCgx0b3BpY19ncm91cHMYASADKAsyOi50b3BpY19ncm91cC5QdWxsVG9waWNHcm91cHNCeUlkc1Jlc3BvbnNlLlRvcGljR3JvdXBzRW50cnkSQwoFY2hhdHMYAiADKAsyNC50b3BpY19ncm91cC5QdWxsVG9waWNHcm91cHNCeUlkc1Jlc3BvbnNlLkNoYXRzRW50cnkSJAocdW5hdXRob3JpemVkX3RvcGljX2dyb3VwX2lkcxgDIAMoCRpIChBUb3BpY0dyb3Vwc0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmVudGl0aWVzLlRvcGljR3JvdXA6AjgBGjwKCkNoYXRzRW50cnkSCwoDa2V5GAEgASgJEh0KBXZhbHVlGAIgASgLMg4uZW50aXRpZXMuQ2hhdDoCOAEiTwocUHVsbFRvcGljR3JvdXBTZXR0aW5nUmVxdWVzdBIvCg90b3BpY19ncm91cF9pZHMYASADKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwiuQEKHVB1bGxUb3BpY0dyb3VwU2V0dGluZ1Jlc3BvbnNlEkgKB3NldHRpbmcYASADKAsyNy50b3BpY19ncm91cC5QdWxsVG9waWNHcm91cFNldHRpbmdSZXNwb25zZS5TZXR0aW5nRW50cnkaTgoMU2V0dGluZ0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoCzIeLnRvcGljX2dyb3VwLlRvcGljR3JvdXBTZXR0aW5nOgI4ASImCiRQdWxsVG9waWNHcm91cFRhYk5vdGlmaWNhdGlvblJlcXVlc3QiQAolUHVsbFRvcGljR3JvdXBUYWJOb3RpZmljYXRpb25SZXNwb25zZRIXCg9oYXNfbmV3X2NvbnRlbnQYASABKAgiVAoVUHVzaFRvcGljR3JvdXBTZXR0aW5nEjsKE3RvcGljX2dyb3VwX3NldHRpbmcYASABKAsyHi50b3BpY19ncm91cC5Ub3BpY0dyb3VwU2V0dGluZyKJAQoRVG9waWNHcm91cFNldHRpbmcSFgoOdG9waWNfZ3JvdXBfaWQYASACKAkSEwoLaXNfZmF2b3JpdGUYAiABKAgSEwoLdXBkYXRlX3RpbWUYAyABKAMSMgoQdG9waWNfZ3JvdXBfcm9sZRgEIAEoDjIYLmVudGl0aWVzLlRvcGljR3JvdXBSb2xlIp4BCg5QdXNoVG9waWNHcm91cBJCCgx0b3BpY19ncm91cHMYASADKAsyLC50b3BpY19ncm91cC5QdXNoVG9waWNHcm91cC5Ub3BpY0dyb3Vwc0VudHJ5GkgKEFRvcGljR3JvdXBzRW50cnkSCwoDa2V5GAEgASgJEiMKBXZhbHVlGAIgASgLMhQuZW50aXRpZXMuVG9waWNHcm91cDoCOAEitQEKEFRvcGljR3JvdXBQYWNrZXQSQwoOcmVsYXRpb25DaGFuZ2UYASABKAsyKS50b3BpY19ncm91cC5Vc2VyVG9waWNHcm91cFJlbGF0aW9uQ2hhbmdlSAASQQoUdG9waWNHcm91cEluZm9DaGFuZ2UYAiABKAsyIS50b3BpY19ncm91cC5Ub3BpY0dyb3VwSW5mb0NoYW5nZUgAEhAKCGV2ZW50X2lkGAMgASgJQgcKBWV2ZW50IvgDChxVc2VyVG9waWNHcm91cFJlbGF0aW9uQ2hhbmdlEmUKGHRvcGljX2dyb3VwX3VzZXJfaWRzX21hcBgBIAMoCzJDLnRvcGljX2dyb3VwLlVzZXJUb3BpY0dyb3VwUmVsYXRpb25DaGFuZ2UuVG9waWNHcm91cFVzZXJJZHNNYXBFbnRyeRJaCgtjaGFuZ2VfdHlwZRgCIAIoDjI8LnRvcGljX2dyb3VwLlVzZXJUb3BpY0dyb3VwUmVsYXRpb25DaGFuZ2UuUmVsYXRpb25DaGFuZ2VUeXBlOgdVTktOT1dOEjMKEHRvcGljX2dyb3VwX3R5cGUYAyABKA4yGS5lbnRpdGllcy5Ub3BpY0dyb3VwLlR5cGUSFgoOdXBkYXRlX3RpbWVfbXMYBCABKAMaHgoKVXNlcklETGlzdBIQCgh1c2VyX2lkcxgBIAMoAxpxChlUb3BpY0dyb3VwVXNlcklkc01hcEVudHJ5EgsKA2tleRgBIAEoAxJDCgV2YWx1ZRgCIAEoCzI0LnRvcGljX2dyb3VwLlVzZXJUb3BpY0dyb3VwUmVsYXRpb25DaGFuZ2UuVXNlcklETGlzdDoCOAEiNQoSUmVsYXRpb25DaGFuZ2VUeXBlEgsKB1VOS05PV04QABIICgRKT0lOEAESCAoEUVVJVBACIvwBChRUb3BpY0dyb3VwSW5mb0NoYW5nZRIWCg50b3BpY19ncm91cF9pZBgBIAIoAxJKCgtjaGFuZ2VfdHlwZRgCIAIoDjIsLnRvcGljX2dyb3VwLlRvcGljR3JvdXBJbmZvQ2hhbmdlLkNoYW5nZVR5cGU6B1VOS05PV04SFgoOdXBkYXRlX3RpbWVfbXMYAyABKAMSMwoQdG9waWNfZ3JvdXBfdHlwZRgEIAEoDjIZLmVudGl0aWVzLlRvcGljR3JvdXAuVHlwZSIzCgpDaGFuZ2VUeXBlEgsKB1VOS05PV04QABIKCgZDUkVBVEUQARIMCghESVNTT0xWRRACIskBChRQdXRUb3BpY0dyb3VwUmVxdWVzdBIUCgpncm91cF9uYW1lGAEgASgJOgASFAoKZ3JvdXBfZGVzYxgCIAEoCToAEhgKCWlzX3B1YmxpYxgDIAEoCDoFZmFsc2USEwoLY2hhdHRlcl9pZHMYBCADKAkSFwoPb3JnYW5pemF0aW9uX2lkGAUgASgJEhAKCGljb25fa2V5GAYgASgJEh4KD2lzX2Nyb3NzX3RlbmFudBgHIAEoCDoFZmFsc2USCwoDY2lkGAggASgJIocBChVQdXRUb3BpY0dyb3VwUmVzcG9uc2USKQoLdG9waWNfZ3JvdXAYASACKAsyFC5lbnRpdGllcy5Ub3BpY0dyb3VwEhwKBGNoYXQYAiABKAsyDi5lbnRpdGllcy5DaGF0EiUKCWZlZWRfY2FyZBgDIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkIlMKIVJlZ2lzdGVyVG9waWNHcm91cEZhdm9yaXRlUmVxdWVzdBIuCg50b3BpY19ncm91cF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbCJLCiJSZWdpc3RlclRvcGljR3JvdXBGYXZvcml0ZVJlc3BvbnNlEiUKCWZlZWRfY2FyZBgBIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkIlEKH0NhbmNlbFRvcGljR3JvdXBGYXZvcml0ZVJlcXVlc3QSLgoOdG9waWNfZ3JvdXBfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwiSQogQ2FuY2VsVG9waWNHcm91cEZhdm9yaXRlUmVzcG9uc2USJQoJZmVlZF9jYXJkGAEgASgLMhIuZW50aXRpZXMuRmVlZENhcmQivwQKF1B1c2hUb3BpY0dyb3VwRmVlZENhcmRzEk4KEXRvcGljX2dyb3VwX2ZlZWRzGAEgAygLMjMudG9waWNfZ3JvdXAuUHVzaFRvcGljR3JvdXBGZWVkQ2FyZHMuVG9waWNHcm91cEZlZWQSSwoMdG9waWNfZ3JvdXBzGAIgAygLMjUudG9waWNfZ3JvdXAuUHVzaFRvcGljR3JvdXBGZWVkQ2FyZHMuVG9waWNHcm91cHNFbnRyeRI+CgVjaGF0cxgDIAMoCzIvLnRvcGljX2dyb3VwLlB1c2hUb3BpY0dyb3VwRmVlZENhcmRzLkNoYXRzRW50cnkavgEKDlRvcGljR3JvdXBGZWVkEiUKCWZlZWRfY2FyZBgBIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkElMKCXB1c2hfdHlwZRgCIAEoDjJALnRvcGljX2dyb3VwLlB1c2hUb3BpY0dyb3VwRmVlZENhcmRzLlRvcGljR3JvdXBGZWVkLkZlZWRQdXNoVHlwZSIwCgxGZWVkUHVzaFR5cGUSCwoHVU5LTk9XThAAEgcKA0FERBABEgoKBkRFTEVURRACGkgKEFRvcGljR3JvdXBzRW50cnkSCwoDa2V5GAEgASgJEiMKBXZhbHVlGAIgASgLMhQuZW50aXRpZXMuVG9waWNHcm91cDoCOAEaPAoKQ2hhdHNFbnRyeRILCgNrZXkYASABKAkSHQoFdmFsdWUYAiABKAsyDi5lbnRpdGllcy5DaGF0OgI4ASKcBAoaUHV0VG9waWNHcm91cE1lbWJlclJlcXVlc3QSLgoOdG9waWNfZ3JvdXBfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSEgoKbWVtYmVyX2lkcxgCIAMoCRIdChVpc19pbnZpdGVfYXRfY2hhdHRlcnMYAyABKAgSGwoTaXNfZGVmYXVsdF9mYXZvcml0ZRgEIAEoCBIfChdsYXN0X3Zpc2libGVfbWVzc2FnZV9pZBhlIAEoAxJSCg50aHJpZnRfbWVtYmVycxhmIAMoCzI6LnRvcGljX2dyb3VwLlB1dFRvcGljR3JvdXBNZW1iZXJSZXF1ZXN0LlRocmlmdE1lbWJlcnNFbnRyeRIkChxiYXNlX2xhc3RfdmlzaWJsZV9tZXNzYWdlX2lkGGcgASgDEmsKG3RocmlmdF9pbnNlbnNpdGl2ZV9jaGF0dGVycxhoIAMoCzJGLnRvcGljX2dyb3VwLlB1dFRvcGljR3JvdXBNZW1iZXJSZXF1ZXN0LlRocmlmdEluc2Vuc2l0aXZlQ2hhdHRlcnNFbnRyeRo0ChJUaHJpZnRNZW1iZXJzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgMOgI4ARpACh5UaHJpZnRJbnNlbnNpdGl2ZUNoYXR0ZXJzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgMOgI4ASJmChtQdXRUb3BpY0dyb3VwTWVtYmVyUmVzcG9uc2USHAoEY2hhdBgBIAEoCzIOLmVudGl0aWVzLkNoYXQSKQoLdG9waWNfZ3JvdXAYAiABKAsyFC5lbnRpdGllcy5Ub3BpY0dyb3VwKlgKFFRvcGljR3JvdXBKb2luU3RhdHVzEhcKE1VOS05PV05fSk9JTl9TVEFUVVMQABIOCgpOT1RfSk9JTkVEEAESCwoHQVBQTElFRBACEgoKBkpPSU5FRBADQk4KFmNvbS5zcy5hbmRyb2lkLmxhcmsucGJIA1oyY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL3RvcGljZ3JvdXA",[y,J]);var Se=Uo("CgtjaGF0cy5wcm90bxIFY2hhdHMiSgofUHVsbENoYXRQb3N0VXNlckJ5Q2hhdElEUmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsIjQKIFB1bGxDaGF0UG9zdFVzZXJCeUNoYXRJRFJlc3BvbnNlEhAKCHVzZXJfaWRzGAEgAygJIkQKGFB1bGxBbGxvd1Bvc3RDaGF0UmVxdWVzdBIoCghjaGF0X2lkcxgBIAMoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbCKpAQoZUHVsbEFsbG93UG9zdENoYXRSZXNwb25zZRJTChNhbGxvd19wb3N0X2NoYXRfaWRzGAEgAygLMjYuY2hhdHMuUHVsbEFsbG93UG9zdENoYXRSZXNwb25zZS5BbGxvd1Bvc3RDaGF0SWRzRW50cnkaNwoVQWxsb3dQb3N0Q2hhdElkc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEioAEKGFBhdGNoQ2hhdFBvc3RVc2VyUmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEikKCXBvc3RfdHlwZRgCIAIoDjIWLmVudGl0aWVzLkNoYXRQb3N0VHlwZRIXCg90b19hZGRfdXNlcl9pZHMYAyADKAkSFwoPdG9fZGVsX3VzZXJfaWRzGAQgAygJIhsKGVBhdGNoQ2hhdFBvc3RVc2VyUmVzcG9uc2UiZAoWUHVsbFJlY2VudENoYXRzUmVxdWVzdBIaCg9uZXdfdXBkYXRlX3RpbWUYASABKAM6ATASGwoQbW9yZV91cGRhdGVfdGltZRgCIAEoAzoBMBIRCgVjb3VudBgDIAEoBToCMjAi0gMKF1B1bGxSZWNlbnRDaGF0c1Jlc3BvbnNlEjgKBWNoYXRzGAEgAygLMikuY2hhdHMuUHVsbFJlY2VudENoYXRzUmVzcG9uc2UuQ2hhdHNFbnRyeRI+CghtZXNzYWdlcxgCIAMoCzIsLmNoYXRzLlB1bGxSZWNlbnRDaGF0c1Jlc3BvbnNlLk1lc3NhZ2VzRW50cnkSTwoRbWVzc2FnZV9wb3NpdGlvbnMYAyADKAsyNC5jaGF0cy5QdWxsUmVjZW50Q2hhdHNSZXNwb25zZS5NZXNzYWdlUG9zaXRpb25zRW50cnkSGAoQb3JkZXJlZF9jaGF0X2lkcxgEIAMoCRIXCghoYXNfbW9yZRgFIAEoCDoFZmFsc2UaPAoKQ2hhdHNFbnRyeRILCgNrZXkYASABKAkSHQoFdmFsdWUYAiABKAsyDi5lbnRpdGllcy5DaGF0OgI4ARpCCg1NZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIgCgV2YWx1ZRgCIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2U6AjgBGjcKFU1lc3NhZ2VQb3NpdGlvbnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBIpQEChVQdWxsQ2hhdHNCeUlkc1JlcXVlc3QSKAoIY2hhdF9pZHMYASADKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSWQoYbGFzdF92aXNpYmxlX21lc3NhZ2VfaWRzGGUgAygLMjcuY2hhdHMuUHVsbENoYXRzQnlJZHNSZXF1ZXN0Lkxhc3RWaXNpYmxlTWVzc2FnZUlkc0VudHJ5EhcKD2lzX2xpY2Vuc2VfYXV0aBhmIAEoCBIkChxhdXRoX3RyYW5zbGF0ZV9nbG9iYWxfc3dpdGNoGGcgASgIEiwKJGF1dGhfdHJhbnNsYXRlX2dsb2JhbF9zd2l0Y2hfdmVyc2lvbhhoIAEoAxJiCh1iYXNlX2xhc3RfdmlzaWJsZV9tZXNzYWdlX2lkcxhpIAMoCzI7LmNoYXRzLlB1bGxDaGF0c0J5SWRzUmVxdWVzdC5CYXNlTGFzdFZpc2libGVNZXNzYWdlSWRzRW50cnkSJQodbmVlZF9jaGF0X25hbWVfdHJhbnNsYXRlX2luZm8YaiABKAgaPAoaTGFzdFZpc2libGVNZXNzYWdlSWRzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgDOgI4ARpACh5CYXNlTGFzdFZpc2libGVNZXNzYWdlSWRzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgDOgI4ASLqAgoWUHVsbENoYXRzQnlJZHNSZXNwb25zZRI3CgVjaGF0cxgBIAMoCzIoLmNoYXRzLlB1bGxDaGF0c0J5SWRzUmVzcG9uc2UuQ2hhdHNFbnRyeRIdChV1bmF1dGhvcml6ZWRfY2hhdF9pZHMYAiADKAkSGgoSaW5fdGhyZWFkX2NoYXRfaWRzGAMgAygJEl4KGnVzZXJfY291bnRfaW52aXNpYmxlX2NoYXRzGAQgAygLMjouY2hhdHMuUHVsbENoYXRzQnlJZHNSZXNwb25zZS5Vc2VyQ291bnRJbnZpc2libGVDaGF0c0VudHJ5GjwKCkNoYXRzRW50cnkSCwoDa2V5GAEgASgJEh0KBXZhbHVlGAIgASgLMg4uZW50aXRpZXMuQ2hhdDoCOAEaPgocVXNlckNvdW50SW52aXNpYmxlQ2hhdHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBIkQKDFBpY2tFbnRpdGllcxIiCglwaWNrX3R5cGUYASACKA4yDy5jaGF0cy5QaWNrVHlwZRIQCghwaWNrX2lkcxgCIAMoCSIWCgdJRHNMaXN0EgsKA2lkcxgBIAMoCSLpAwoST3BlcmF0ZUNoYXR0ZXJMaXN0Ej0KCmNoYXR0ZXJNYXAYASADKAsyKS5jaGF0cy5PcGVyYXRlQ2hhdHRlckxpc3QuQ2hhdHRlck1hcEVudHJ5EhYKDnRhcmdldF9jaGF0X2lkGAIgAigDEjoKCWN0eF9wYXJhbRgDIAMoCzInLmNoYXRzLk9wZXJhdGVDaGF0dGVyTGlzdC5DdHhQYXJhbUVudHJ5ElEKFXJldmVyc2VfcGlja19lbnRpdGllcxgEIAMoCzIyLmNoYXRzLk9wZXJhdGVDaGF0dGVyTGlzdC5SZXZlcnNlUGlja0VudGl0aWVzRW50cnkSGAoQaXNfY3Jvc3Nfd2l0aF9rYRgFIAEoCBITCgtvcGVyYXRvcl9pZBgGIAEoAxpBCg9DaGF0dGVyTWFwRW50cnkSCwoDa2V5GAEgASgFEh0KBXZhbHVlGAIgASgLMg4uY2hhdHMuSURzTGlzdDoCOAEaLwoNQ3R4UGFyYW1FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGkoKGFJldmVyc2VQaWNrRW50aXRpZXNFbnRyeRILCgNrZXkYASABKAUSHQoFdmFsdWUYAiABKAsyDi5jaGF0cy5JRHNMaXN0OgI4ASL/CQoOUHV0Q2hhdFJlcXVlc3QSIQoEdHlwZRgBIAIoDjITLmVudGl0aWVzLkNoYXQuVHlwZRIQCgh1c2VyX2lkcxgCIAMoCRIUCgpncm91cF9uYW1lGAMgASgJOgASFAoKZ3JvdXBfZGVzYxgEIAEoCToAEhgKCWlzX3B1YmxpYxgFIAEoCDoFZmFsc2USEwoLY2hhdHRlcl9pZHMYBiADKAkSFwoPb3JnYW5pemF0aW9uX2lkGAcgASgJEhQKDGZyb21fY2hhdF9pZBgIIAEoCRIYChBpbml0X21lc3NhZ2VfaWRzGAkgAygJEhAKCGljb25fa2V5GAogASgJEjYKCWRvY19wZXJtcxgLIAMoCzIjLmNoYXRzLlB1dENoYXRSZXF1ZXN0LkRvY1Blcm1zRW50cnkSHgoPaXNfY3Jvc3NfdGVuYW50GAwgASgIOgVmYWxzZRIUCgxpc19wdWJsaWNfdjIYDSABKAgSKgoJY2hhdF9tb2RlGA4gASgOMhcuZW50aXRpZXMuQ2hhdC5DaGF0TW9kZRI4Cgpkb2NfcGVybXMyGA8gAygLMiQuY2hhdHMuUHV0Q2hhdFJlcXVlc3QuRG9jUGVybXMyRW50cnkSCwoDY2lkGBAgASgJEikKC2F2YXRhcl9tZXRhGBEgASgLMhQuZW50aXRpZXMuQXZhdGFyTWV0YRI6ChZjcmVhdGVfcDJwX2NoYXRfc291cmNlGBIgASgLMhouY2hhdHMuQ3JlYXRlUDJQQ2hhdFNvdXJjZRIqCg1waWNrX2VudGl0aWVzGBMgAygLMhMuY2hhdHMuUGlja0VudGl0aWVzEjIKFXJldmVyc2VfcGlja19lbnRpdGllcxgUIAMoCzITLmNoYXRzLlBpY2tFbnRpdGllcxIYChBjaGF0X3RlbXBsYXRlX2lkGBUgASgJEiEKGWdyYW50X2RvY192aWFfdXJsX3ByZXZpZXcYFiABKAgSFwoPaXNfcHJpdmF0ZV9tb2RlGBcgASgIEjMKBnNvdXJjZRgYIAEoDjIjLmNoYXRzLlB1dENoYXRSZXF1ZXN0LlB1dENoYXRTb3VyY2USLQoNdG9fbGlua19wYWdlcxgZIAMoCzIWLmNoYXRzLkNoYXRQYWdlQ29udGV4dBpSCg1Eb2NQZXJtc0VudHJ5EgsKA2tleRgBIAEoCRIwCgV2YWx1ZRgCIAEoDjIhLmNoYXRzLlB1dENoYXRSZXF1ZXN0LkRvY1Blcm1UeXBlOgI4ARqTAQoHRG9jUGFpchI3CgVwZXJtcxgBIAMoCzIoLmNoYXRzLlB1dENoYXRSZXF1ZXN0LkRvY1BhaXIuUGVybXNFbnRyeRpPCgpQZXJtc0VudHJ5EgsKA2tleRgBIAEoCRIwCgV2YWx1ZRgCIAEoDjIhLmNoYXRzLlB1dENoYXRSZXF1ZXN0LkRvY1Blcm1UeXBlOgI4ARpPCg5Eb2NQZXJtczJFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5jaGF0cy5QdXRDaGF0UmVxdWVzdC5Eb2NQYWlyOgI4ASIuCgtEb2NQZXJtVHlwZRILCgdVTktOT1dOEAASCAoEUkVBRBABEggKBEVESVQQAiI1Cg1QdXRDaGF0U291cmNlEhIKDlVOS05PV05fU09VUkNFEAASEAoMVE9fTElOS19QQUdFEAEiJQoPQ2hhdFBhZ2VDb250ZXh0EhIKCnRhcmdldF91cmwYASABKAkirQEKE0NyZWF0ZVAyUENoYXRTb3VyY2USEQoJc2VuZGVyX2lkGAEgASgDEiwKC3NvdXJjZV90eXBlGAIgASgOMhcuZW50aXRpZXMuQ29udGFjdFNvdXJjZRIRCglzb3VyY2VfaWQYAyABKAkSEwoLc291cmNlX25hbWUYBCABKAkSFAoMc2VuZGVyX2lkX3YyGAUgASgJEhcKD3N1Yl9zb3VyY2VfdHlwZRgGIAEoCSLVAQoPUHV0Q2hhdFJlc3BvbnNlEhwKBGNoYXQYASACKAsyDi5lbnRpdGllcy5DaGF0EiUKCWZlZWRfY2FyZBgCIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkEkMKEHBhZ2VfbGlua19yZXN1bHQYAyABKAsyKS5jaGF0cy5QdXRDaGF0UmVzcG9uc2UuQ2hhdFBhZ2VMaW5rUmVzdWx0GjgKEkNoYXRQYWdlTGlua1Jlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhEKCWVycm9yX21zZxgCIAEoCSKZAQoYUHV0RGVwYXJ0bWVudENoYXRSZXF1ZXN0EhUKDWRlcGFydG1lbnRfaWQYASACKAkSEwoLY2hhdHRlcl9pZHMYAiADKAkSFAoKZ3JvdXBfZGVzYxgDIAEoCToAEhAKCGljb25fa2V5GAQgASgJEikKC2F2YXRhcl9tZXRhGAUgASgLMhQuZW50aXRpZXMuQXZhdGFyTWV0YSJgChlQdXREZXBhcnRtZW50Q2hhdFJlc3BvbnNlEhwKBGNoYXQYASABKAsyDi5lbnRpdGllcy5DaGF0EiUKCWZlZWRfY2FyZBgCIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkIikKElB1dFAyUENoYXRzUmVxdWVzdBITCgtjaGF0dGVyX2lkcxgBIAMoCSKOAgoTUHV0UDJQQ2hhdHNSZXNwb25zZRI0CgVjaGF0cxgBIAMoCzIlLmNoYXRzLlB1dFAyUENoYXRzUmVzcG9uc2UuQ2hhdHNFbnRyeRI9CgpmZWVkX2NhcmRzGAIgAygLMikuY2hhdHMuUHV0UDJQQ2hhdHNSZXNwb25zZS5GZWVkQ2FyZHNFbnRyeRo8CgpDaGF0c0VudHJ5EgsKA2tleRgBIAEoCRIdCgV2YWx1ZRgCIAEoCzIOLmVudGl0aWVzLkNoYXQ6AjgBGkQKDkZlZWRDYXJkc0VudHJ5EgsKA2tleRgBIAEoCRIhCgV2YWx1ZRgCIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkOgI4ASI6ChBQYXRjaENoYXRSZXF1ZXN0Eg8KB2NoYXRfaWQYASACKAkSFQoJaXNfcHVibGljGAIgASgFOgItMSIxChFQYXRjaENoYXRSZXNwb25zZRIcCgRjaGF0GAEgAigLMg4uZW50aXRpZXMuQ2hhdCInChRQdWxsQ2hhdFVzZXJzUmVxdWVzdBIPCgdjaGF0X2lkGAEgAigJIv4CChVQdWxsQ2hhdFVzZXJzUmVzcG9uc2USNgoFdXNlcnMYASADKAsyJy5jaGF0cy5QdWxsQ2hhdFVzZXJzUmVzcG9uc2UuVXNlcnNFbnRyeRI0CgRib3RzGAIgAygLMiYuY2hhdHMuUHVsbENoYXRVc2Vyc1Jlc3BvbnNlLkJvdHNFbnRyeRJHCg5vcmRlcmVkX3dlaWdodBgDIAMoCzIvLmNoYXRzLlB1bGxDaGF0VXNlcnNSZXNwb25zZS5PcmRlcmVkV2VpZ2h0RW50cnkaPAoKVXNlcnNFbnRyeRILCgNrZXkYASABKAkSHQoFdmFsdWUYAiABKAsyDi5lbnRpdGllcy5Vc2VyOgI4ARo6CglCb3RzRW50cnkSCwoDa2V5GAEgASgJEhwKBXZhbHVlGAIgASgLMg0uZW50aXRpZXMuQm90OgI4ARo0ChJPcmRlcmVkV2VpZ2h0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASLnAgoQR3JvdXBDaGF0dGVyTWV0YRIcCgdjaGF0X2lkGAEgAigDQguCph0HY2hhdF9pZBIfCgpjaGF0dGVyX2lkGAIgAigDQguCph0HdXNlcl9pZBIqCgRyb2xlGAMgASgOMhwuY2hhdHMuR3JvdXBDaGF0dGVyTWV0YS5Sb2xlEhYKDmdyb3VwX25pY2tuYW1lGAQgASgJEh0KFWdyb3VwX25pY2tuYW1lX3BpbnlpbhgFIAEoCRIcChRvbmNhbGxfZ3JvdXBfY2hhdHRlchgGIAEoDBIrCgh0YWdfaW5mbxgHIAEoCzIZLmNoYXRzLkNoYXRDaGF0dGVyVGFnSW5mbyJmCgRSb2xlEgsKB1VOS05PV04QABIJCgVPV05FUhABEg8KC09OQ0FMTF9VU0VSEAMSCgoGT05DQUxMEAQSEQoNT05DQUxMX0hFTFBFUhAFEhYKEk9OQ0FMTF9VU0VSX0hFTFBFUhAGIqQBChdQdWxsQ2hhdENoYXR0ZXJzUmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhsKDW5lZWRfY2hhdHRlcnMYAiABKAg6BHRydWUSDgoGY3Vyc29yGAMgASgDEg4KBm9mZnNldBgEIAEoCRINCgVsaW1pdBgFIAEoBRIUCgxvcmRlcl9jdXJzb3IYBiABKAMiuQkKGFB1bGxDaGF0Q2hhdHRlcnNSZXNwb25zZRI/CghjaGF0dGVycxgBIAMoCzItLmNoYXRzLlB1bGxDaGF0Q2hhdHRlcnNSZXNwb25zZS5DaGF0dGVyc0VudHJ5EkoKDm9yZGVyZWRfd2VpZ2h0GAIgAygLMjIuY2hhdHMuUHVsbENoYXRDaGF0dGVyc1Jlc3BvbnNlLk9yZGVyZWRXZWlnaHRFbnRyeRJMCg91cGRhdGVfY2hhdHRlcnMYAyADKAsyMy5jaGF0cy5QdWxsQ2hhdENoYXR0ZXJzUmVzcG9uc2UuVXBkYXRlQ2hhdHRlcnNFbnRyeRJMCg9kZWxldGVfY2hhdHRlcnMYBCADKAsyMy5jaGF0cy5QdWxsQ2hhdENoYXR0ZXJzUmVzcG9uc2UuRGVsZXRlQ2hhdHRlcnNFbnRyeRITCgtuZXh0X2N1cnNvchgFIAEoAxIPCgdtYXhfYWdlGAYgASgDEkwKD2dyb3VwX25pY2tuYW1lcxgHIAMoCzIzLmNoYXRzLlB1bGxDaGF0Q2hhdHRlcnNSZXNwb25zZS5Hcm91cE5pY2tuYW1lc0VudHJ5EjkKBW1ldGFzGAggAygLMiouY2hhdHMuUHVsbENoYXRDaGF0dGVyc1Jlc3BvbnNlLk1ldGFzRW50cnkSEwoLbmV4dF9vZmZzZXQYCSABKAkSPgoIdGFnX2luZm8YCiADKAsyLC5jaGF0cy5QdWxsQ2hhdENoYXR0ZXJzUmVzcG9uc2UuVGFnSW5mb0VudHJ5EhkKEW5leHRfb3JkZXJfY3Vyc29yGAsgASgDEkkKDmpvaW5fdGltZXNfc2VjGAwgAygLMjEuY2hhdHMuUHVsbENoYXRDaGF0dGVyc1Jlc3BvbnNlLkpvaW5UaW1lc1NlY0VudHJ5GkIKDUNoYXR0ZXJzRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuQ2hhdHRlcjoCOAEaNAoST3JkZXJlZFdlaWdodEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEaSAoTVXBkYXRlQ2hhdHRlcnNFbnRyeRILCgNrZXkYASABKAkSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5DaGF0dGVyOgI4ARpIChNEZWxldGVDaGF0dGVyc0VudHJ5EgsKA2tleRgBIAEoCRIgCgV2YWx1ZRgCIAEoCzIRLmVudGl0aWVzLkNoYXR0ZXI6AjgBGjUKE0dyb3VwTmlja25hbWVzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgJOgI4ARpFCgpNZXRhc0VudHJ5EgsKA2tleRgBIAEoAxImCgV2YWx1ZRgCIAEoCzIXLmNoYXRzLkdyb3VwQ2hhdHRlck1ldGE6AjgBGkkKDFRhZ0luZm9FbnRyeRILCgNrZXkYASABKAkSKAoFdmFsdWUYAiABKAsyGS5jaGF0cy5DaGF0Q2hhdHRlclRhZ0luZm86AjgBGjMKEUpvaW5UaW1lc1NlY0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoAzoCOAEiRQoWUHVzaENoYXRDaGF0dGVyVGFnSW5mbxIrCgh0YWdfaW5mbxgBIAMoCzIZLmNoYXRzLkNoYXRDaGF0dGVyVGFnSW5mbyL2AwoSQ2hhdENoYXR0ZXJUYWdJbmZvEg8KB2NoYXRfaWQYASACKAkSEgoKY2hhdHRlcl9pZBgCIAIoCRIvCgR0YWdzGAMgAygLMiEuY2hhdHMuQ2hhdENoYXR0ZXJUYWdJbmZvLlRhZ0luZm8SEgoGd2VpZ2h0GAQgASgFQgIYARIjChtjaGF0X2NoYXR0ZXJfb3JkZXJlZF93ZWlnaHQYBSABKAMa4wEKB1RhZ0luZm8SQgoJaTE4bl9uYW1lGAEgAygLMi8uY2hhdHMuQ2hhdENoYXR0ZXJUYWdJbmZvLlRhZ0luZm8uSTE4bk5hbWVFbnRyeRIQCgh0YWdfdHlwZRgCIAEoBRovCg1JMThuTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiUQoHVGFnVHlwZRILCgdVTktOT1dOEAASEQoNQ0xBU1NfVEVBQ0hFUhABEhYKEkRJU0NJUExJTkVfVEVBQ0hFUhACEg4KCkFETUlOX1VTRVIQAyJrCgZXZWlnaHQSCwoHVU5LTk9XThAAEh8KEkRJU0NJUExJTkVfVEVBQ0hFUhD///////////8BEhoKDUNMQVNTX1RFQUNIRVIQnP//////////ARIXCgpBRE1JTl9VU0VSEMDl8////////wEisAEKHFB1bGxDaGF0Q2hhdHRlcnNCeUlEc1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIbCg1uZWVkX2NoYXR0ZXJzGAIgASgIOgR0cnVlEhMKC2NoYXR0ZXJfaWRzGAMgAygDEhUKDW5lZWRfYm90X2luZm8YBCABKAgSHgoWbm90X3N1YnNjcmliZV9jaGF0dGVycxgFIAEoCCLVBQodUHVsbENoYXRDaGF0dGVyc0J5SURzUmVzcG9uc2USRAoIY2hhdHRlcnMYASADKAsyMi5jaGF0cy5QdWxsQ2hhdENoYXR0ZXJzQnlJRHNSZXNwb25zZS5DaGF0dGVyc0VudHJ5Ek8KDm9yZGVyZWRfd2VpZ2h0GAIgAygLMjcuY2hhdHMuUHVsbENoYXRDaGF0dGVyc0J5SURzUmVzcG9uc2UuT3JkZXJlZFdlaWdodEVudHJ5Ej4KBW1ldGFzGAMgAygLMi8uY2hhdHMuUHVsbENoYXRDaGF0dGVyc0J5SURzUmVzcG9uc2UuTWV0YXNFbnRyeRIPCgdtYXhfYWdlGAQgASgDEkMKCGJvdF9pbmZvGAUgAygLMjEuY2hhdHMuUHVsbENoYXRDaGF0dGVyc0J5SURzUmVzcG9uc2UuQm90SW5mb0VudHJ5Ek4KDmpvaW5fdGltZXNfc2VjGAYgAygLMjYuY2hhdHMuUHVsbENoYXRDaGF0dGVyc0J5SURzUmVzcG9uc2UuSm9pblRpbWVzU2VjRW50cnkaQgoNQ2hhdHRlcnNFbnRyeRILCgNrZXkYASABKAMSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5DaGF0dGVyOgI4ARo0ChJPcmRlcmVkV2VpZ2h0RW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgDOgI4ARpFCgpNZXRhc0VudHJ5EgsKA2tleRgBIAEoAxImCgV2YWx1ZRgCIAEoCzIXLmNoYXRzLkdyb3VwQ2hhdHRlck1ldGE6AjgBGkEKDEJvdEluZm9FbnRyeRILCgNrZXkYASABKAMSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5Cb3RJbmZvOgI4ARozChFKb2luVGltZXNTZWNFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAM6AjgBIjcKElB1dENoYXRVc2VyUmVxdWVzdBIPCgdjaGF0X2lkGAEgAigJEhAKCHVzZXJfaWRzGAIgAygJIjMKE1B1dENoYXRVc2VyUmVzcG9uc2USHAoEY2hhdBgBIAEoCzIOLmVudGl0aWVzLkNoYXQimgQKDlByZVByb2Nlc3NJbmZvEkEKEWF1dGhfY2hhdHRlcl9pbmZvGAEgASgLMiYuY2hhdHMuUHJlUHJvY2Vzc0luZm8uQXV0aENoYXR0ZXJzSW5mbxI/Cgx2YWxpZF9maWVsZHMYAiADKA4yKS5jaGF0cy5QcmVQcm9jZXNzSW5mby5QcmVQcm9jZXNzSW5mb0ZpZWxkEkQKE2dldF9mcmllbmRzaGlwX2luZm8YAyABKAsyJy5jaGF0cy5QcmVQcm9jZXNzSW5mby5HZXRGcmllbmRzaGlwSW5mbxrBAQoQQXV0aENoYXR0ZXJzSW5mbxITCgtjaGF0dGVyX2lkcxgBIAMoAxJPCg1kZW5pZWRfcmVhc29uGAIgAygLMjguY2hhdHMuUHJlUHJvY2Vzc0luZm8uQXV0aENoYXR0ZXJzSW5mby5EZW5pZWRSZWFzb25FbnRyeRpHChFEZW5pZWRSZWFzb25FbnRyeRILCgNrZXkYASABKAMSIQoFdmFsdWUYAiABKA4yEi5taXNjLkRlbmllZFJlYXNvbjoCOAEaLAoRR2V0RnJpZW5kc2hpcEluZm8SFwoPZnJpZW5kX3VzZXJfaWRzGAEgAygDIkwKE1ByZVByb2Nlc3NJbmZvRmllbGQSGQoVQXV0aENoYXR0ZXJzSW5mb0ZpZWxkEAESGgoWR2V0RnJpZW5kc2hpcEluZm9GaWVsZBACIr0GChVQdXRDaGF0Q2hhdHRlclJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBITCgtjaGF0dGVyX2lkcxgCIAMoCRIdChVpc19pbnZpdGVfYXRfY2hhdHRlcnMYAyABKAgSKgoNcGlja19lbnRpdGllcxgEIAMoCzITLmNoYXRzLlBpY2tFbnRpdGllcxIyChVyZXZlcnNlX3BpY2tfZW50aXRpZXMYBSADKAsyEy5jaGF0cy5QaWNrRW50aXRpZXMSQQoGc291cmNlGAYgASgOMjEuY2hhdHMuUHV0Q2hhdENoYXR0ZXJSZXF1ZXN0LlB1dENoYXRDaGF0dGVyU291cmNlEikKCWZyb21fcGFnZRgHIAEoCzIWLmNoYXRzLkNoYXRQYWdlQ29udGV4dBIfChdsYXN0X3Zpc2libGVfbWVzc2FnZV9pZBhlIAEoAxJJCg90aHJpZnRfY2hhdHRlcnMYZiADKAsyMC5jaGF0cy5QdXRDaGF0Q2hhdHRlclJlcXVlc3QuVGhyaWZ0Q2hhdHRlcnNFbnRyeRIkChxiYXNlX2xhc3RfdmlzaWJsZV9tZXNzYWdlX2lkGGcgASgDEi8KEHByZV9wcmVjZXNzX2luZm8YaCABKAsyFS5jaGF0cy5QcmVQcm9jZXNzSW5mbxJgCht0aHJpZnRfaW5zZW5zaXRpdmVfY2hhdHRlcnMYaSADKAsyOy5jaGF0cy5QdXRDaGF0Q2hhdHRlclJlcXVlc3QuVGhyaWZ0SW5zZW5zaXRpdmVDaGF0dGVyc0VudHJ5GjUKE1RocmlmdENoYXR0ZXJzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgMOgI4ARpACh5UaHJpZnRJbnNlbnNpdGl2ZUNoYXR0ZXJzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgMOgI4ASJbChRQdXRDaGF0Q2hhdHRlclNvdXJjZRIRCg1Tb3VyY2VVbmtub3duEAASFgoSU291cmNlQ2hhdFRlbXBsYXRlEAoSGAoUU291cmNlQ2hhdExpbmtlZFBhZ2UQCyKHAgoWUHV0Q2hhdENoYXR0ZXJSZXNwb25zZRIcCgRjaGF0GAEgASgLMg4uZW50aXRpZXMuQ2hhdBJdChpyZWFsX3RvX2Fub255bW91c191c2VyX2lkcxgCIAMoCzI5LmNoYXRzLlB1dENoYXRDaGF0dGVyUmVzcG9uc2UuUmVhbFRvQW5vbnltb3VzVXNlcklkc0VudHJ5EhwKFGNoYXRfY2hhdHRlcl92ZXJzaW9uGAMgASgDEhMKC3N5bmNfY3Vyc29yGAQgASgDGj0KG1JlYWxUb0Fub255bW91c1VzZXJJZHNFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAM6AjgBIl4KGVB1dENoYXR0ZXJWaWFTaGFyZVJlcXVlc3QSLQoKam9pbl90b2tlbhgBIAEoCUIZisMaFXNwbGl0LHR5cGU9Y2hhdF90b2tlbhISCgptZXNzYWdlX2lkGAIgASgJIoQBChpQdXRDaGF0dGVyVmlhU2hhcmVSZXNwb25zZRIcCgRjaGF0GAEgASgLMg4uZW50aXRpZXMuQ2hhdBIhChlqb2luX2dyb3VwX2FwcGxpY2F0aW9uX2lkGAIgASgDEiUKCWZlZWRfY2FyZBgDIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkIm8KK1B1dFRvcGljR3JvdXBNZW1iZXJWaWFSZWNvbW1lbmRhdGlvblJlcXVlc3QSLgoOdG9waWNfZ3JvdXBfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSEAoIdXNlcl9pZHMYAiADKAkiLgosUHV0VG9waWNHcm91cE1lbWJlclZpYVJlY29tbWVuZGF0aW9uUmVzcG9uc2UiOgoVRGVsZXRlQ2hhdFVzZXJSZXF1ZXN0Eg8KB2NoYXRfaWQYASACKAkSEAoIdXNlcl9pZHMYAiADKAkiGAoWRGVsZXRlQ2hhdFVzZXJSZXNwb25zZSIrChdEZWxldGVDaGF0Q2hhdHRlck9wdGlvbhIQCgh3aXRoZHJhdxgBIAEoCCLKAQoYRGVsZXRlQ2hhdENoYXR0ZXJSZXF1ZXN0EicKB2NoYXRfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSEwoLY2hhdHRlcl9pZHMYAiADKAkSFAoMbmV3X293bmVyX2lkGAMgASgJEi4KBm9wdGlvbhgEIAEoCzIeLmNoYXRzLkRlbGV0ZUNoYXRDaGF0dGVyT3B0aW9uEioKDXBpY2tfZW50aXRpZXMYBSADKAsyEy5jaGF0cy5QaWNrRW50aXRpZXMibAoZRGVsZXRlQ2hhdENoYXR0ZXJSZXNwb25zZRIcCgRjaGF0GAEgASgLMg4uZW50aXRpZXMuQ2hhdBIcChRjaGF0X2NoYXR0ZXJfdmVyc2lvbhgCIAEoAxITCgtzeW5jX2N1cnNvchgDIAEoAyIzChJQdXRDaGF0TmFtZVJlcXVlc3QSDwoHY2hhdF9pZBgBIAIoCRIMCgRuYW1lGAIgAigJIjMKE1B1dENoYXROYW1lUmVzcG9uc2USHAoEY2hhdBgBIAIoCzIOLmVudGl0aWVzLkNoYXQiQwobUGF0Y2hDaGF0RGVzY3JpcHRpb25SZXF1ZXN0Eg8KB2NoYXRfaWQYASACKAkSEwoLZGVzY3JpcHRpb24YAiACKAkiPAocUGF0Y2hDaGF0RGVzY3JpcHRpb25SZXNwb25zZRIcCgRjaGF0GAEgAigLMg4uZW50aXRpZXMuQ2hhdCI6ChRQYXRjaENoYXRJY29uUmVxdWVzdBIPCgdjaGF0X2lkGAEgAigJEhEKCWljb25fZGF0YRgCIAIoCSI1ChVQYXRjaENoYXRJY29uUmVzcG9uc2USHAoEY2hhdBgBIAIoCzIOLmVudGl0aWVzLkNoYXQipAkKFVBhdGNoR3JvdXBDaGF0UmVxdWVzdBInCgdjaGF0X2lkGAEgASgDQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEgwKBG5hbWUYAiABKAkSEQoJaWNvbl9kYXRhGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhQKDGFubm91bmNlbWVudBgFIAEoCRIQCghvd25lcl9pZBgGIAEoAxIUCgxtZW1iZXJfY291bnQYByABKAUSGQoKaXNfYXJjaGl2ZRgIIAEoCDoFZmFsc2USGAoJaXNfcHVibGljGAkgASgIOgVmYWxzZRIXCghpc19pbm5lchgKIAEoCDoFZmFsc2USGgoPb3JnYW5pemF0aW9uX2lkGAsgASgDOgEwEiEKEmlzX2dyb3VwX2NvbXBhbmllcxgMIAEoCDoFZmFsc2USHQoSZ3JvdXBfY29tcGFuaWVzX2lkGA0gASgDOgEwEhwKDW9mZl9lZGl0X2luZm8YDiABKAg6BWZhbHNlEhAKCGljb25fa2V5GA8gASgJEjMKDmVudGl0eV9zZXR0aW5nGBAgASgLMhsuZW50aXRpZXMuQ2hhdEVudGl0eVNldHRpbmcSRwocdXBkYXRlX2VudGl0eV9zZXR0aW5nX2ZpZWxkcxgRIAMoDjIhLmVudGl0aWVzLkNoYXRFbnRpdHlTZXR0aW5nLkZpZWxkEhsKDGlzX2Rpc3NvbHZlZBgSIAEoCDoFZmFsc2USGwoMaXNfcHVibGljX3YyGBMgASgIOgVmYWxzZRIpCgthdmF0YXJfbWV0YRgUIAEoCzIULmVudGl0aWVzLkF2YXRhck1ldGESNQoPZ2VuZXJhbF9zZXR0aW5nGBUgASgLMhwuZW50aXRpZXMuR2VuZXJhbENoYXRTZXR0aW5nEkkKHXVwZGF0ZV9nZW5lcmFsX3NldHRpbmdfZmllbGRzGBYgAygOMiIuZW50aXRpZXMuR2VuZXJhbENoYXRTZXR0aW5nLkZpZWxkEhgKCWlzX2Zyb3plbhgXIAEoCDoFZmFsc2USQQoNdXBkYXRlX2ZpZWxkcxjnByADKA4yKS5jaGF0cy5QYXRjaEdyb3VwQ2hhdFJlcXVlc3QuVXBkYXRlRmllbGRzIs8CCgxVcGRhdGVGaWVsZHMSCAoETkFNRRABEgwKCElDT05fS0VZEAISDwoLREVTQ1JJUFRJT04QAxIQCgxBTk5PVU5DRU1FTlQQBBIMCghPV05FUl9JRBAFEhAKDE1FTUJFUl9DT1VOVBAGEg4KCklTX0FSQ0hJVkUQBxINCglJU19QVUJMSUMQCBIMCghJU19JTk5FUhAJEhMKD09SR0FOSVpBVElPTl9JRBAKEhYKEklTX0dST1VQX0NPTVBBTklFUxALEhYKEkdST1VQX0NPTVBBTklFU19JRBAMEhEKDU9GRl9FRElUX0lORk8QDhISCg5FTlRJVFlfU0VUVElORxAPEhAKDElTX0RJU1NPTFZFRBAQEhAKDElTX1BVQkxJQ19WMhAXEhgKFEdFTkVSQUxfQ0hBVF9TRVRUSU5HECkSDQoJSVNfRlJPWkVOECsiNgoWUGF0Y2hHcm91cENoYXRSZXNwb25zZRIcCgRjaGF0GAEgAigLMg4uZW50aXRpZXMuQ2hhdCKUAwoQUHVzaENoYXRzUmVxdWVzdBIxCgVjaGF0cxgBIAMoCzIiLmNoYXRzLlB1c2hDaGF0c1JlcXVlc3QuQ2hhdHNFbnRyeRIZChFpbl92YWxpZF9jaGF0X2lkcxgCIAMoCRI6CgpmZWVkX2NhcmRzGAMgAygLMiYuY2hhdHMuUHVzaENoYXRzUmVxdWVzdC5GZWVkQ2FyZHNFbnRyeRI+CgxvcGVyYXRvcl9pZHMYBCADKAsyKC5jaGF0cy5QdXNoQ2hhdHNSZXF1ZXN0Lk9wZXJhdG9ySWRzRW50cnkaPAoKQ2hhdHNFbnRyeRILCgNrZXkYASABKAkSHQoFdmFsdWUYAiABKAsyDi5lbnRpdGllcy5DaGF0OgI4ARpECg5GZWVkQ2FyZHNFbnRyeRILCgNrZXkYASABKAkSIQoFdmFsdWUYAiABKAsyEi5lbnRpdGllcy5GZWVkQ2FyZDoCOAEaMgoQT3BlcmF0b3JJZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIhMKEVB1c2hDaGF0c1Jlc3BvbnNlIpIJChdQdXNoQ2hhdENoYXR0ZXJzUmVxdWVzdBIxCgR0eXBlGAEgAigOMiMuY2hhdHMuUHVzaENoYXRDaGF0dGVyc1JlcXVlc3QuVHlwZRIcCgRjaGF0GAIgAigLMg4uZW50aXRpZXMuQ2hhdBI+CghjaGF0dGVycxgDIAMoCzIsLmNoYXRzLlB1c2hDaGF0Q2hhdHRlcnNSZXF1ZXN0LkNoYXR0ZXJzRW50cnkSPgoIbWVzc2FnZXMYBCADKAsyLC5jaGF0cy5QdXNoQ2hhdENoYXR0ZXJzUmVxdWVzdC5NZXNzYWdlc0VudHJ5EkkKDm9yZGVyZWRfd2VpZ2h0GAUgAygLMjEuY2hhdHMuUHVzaENoYXRDaGF0dGVyc1JlcXVlc3QuT3JkZXJlZFdlaWdodEVudHJ5EhMKC29wZXJhdG9yX2lkGAYgASgJEg8KB21heF9hZ2UYByABKAMSNAoRY2hhdF9tdXRhYmxlX2luZm8YCCABKAsyGS5lbnRpdGllcy5DaGF0TXV0YWJsZUluZm8SOAoFbWV0YXMYCSADKAsyKS5jaGF0cy5QdXNoQ2hhdENoYXR0ZXJzUmVxdWVzdC5NZXRhc0VudHJ5EhYKDmlzX3NpbGVudF9xdWl0GAogASgIEhMKC25leHRfY3Vyc29yGAsgASgDEhMKC3ByZXZfY3Vyc29yGAwgASgDEkgKDmpvaW5fdGltZXNfc2VjGA0gAygLMjAuY2hhdHMuUHVzaENoYXRDaGF0dGVyc1JlcXVlc3QuSm9pblRpbWVzU2VjRW50cnkSHAoUY2hhdF9jaGF0dGVyX3ZlcnNpb24YDiABKAMSGwoTZXhwaXJlX2R1cmF0aW9uX3NlYxgPIAEoAxITCgtzeW5jX2N1cnNvchgQIAEoAxJIChBjaGF0dGVyX3N0cmF0ZWd5GBEgASgOMi4uY2hhdHMuUHVzaENoYXRDaGF0dGVyc1JlcXVlc3QuQ2hhdHRlclN0cmF0ZWd5GkIKDUNoYXR0ZXJzRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuQ2hhdHRlcjoCOAEaQgoNTWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAkSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5NZXNzYWdlOgI4ARo0ChJPcmRlcmVkV2VpZ2h0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ARpFCgpNZXRhc0VudHJ5EgsKA2tleRgBIAEoAxImCgV2YWx1ZRgCIAEoCzIXLmNoYXRzLkdyb3VwQ2hhdHRlck1ldGE6AjgBGjMKEUpvaW5UaW1lc1NlY0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoAzoCOAEiKwoEVHlwZRIPCgtBRERfQ0hBVFRFUhABEhIKDkRFTEVURV9DSEFUVEVSEAIiOAoPQ2hhdHRlclN0cmF0ZWd5EhQKEERFRkFVTFRfU1RSQVRFR1kQARIPCgtGSUxURVJfTk9ORRACIhoKGFB1c2hDaGF0Q2hhdHRlcnNSZXNwb25zZSJgChNQdXNoQ2hhdE11dGFibGVJbmZvEhMKC29wZXJhdG9yX2lkGAEgASgJEjQKEWNoYXRfbXV0YWJsZV9pbmZvGAIgASgLMhkuZW50aXRpZXMuQ2hhdE11dGFibGVJbmZvIlIKGFB1c2hNdWx0aUNoYXRNdXRhYmxlSW5mbxI2ChJjaGF0X211dGFibGVfaW5mb3MYASADKAsyGi5jaGF0cy5QdXNoQ2hhdE11dGFibGVJbmZvIr4BCh5QdXNoQ2hhdE1lc3NhZ2VSZWFkU3RhdGVOb3RpY2USDwoHY2hhdF9pZBgBIAEoCRIZChFuZXdfbWVzc2FnZV9jb3VudBgCIAEoBRIdChVsYXN0X21lc3NhZ2VfcG9zaXRpb24YAyABKAUSEwoLbWVzc2FnZV9pZHMYBCADKAkSIwobbm9fYmFkZ2VkX25ld19tZXNzYWdlX2NvdW50GAUgASgFEhcKD2xhc3RfbWVzc2FnZV9pZBgJIAEoCSKlAQoTQ2hhdENoYXR0ZXJLaWNrSW5mbxInCgdjaGF0X2lkGAEgASgJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEjYKBnJlYXNvbhgCIAMoCzImLmNoYXRzLkNoYXRDaGF0dGVyS2lja0luZm8uUmVhc29uRW50cnkaLQoLUmVhc29uRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJFChpQdWxsQ2hhdENoYXR0ZXJLaWNrUmVxdWVzdBInCgdjaGF0X2lkGAEgASgJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsIlkKG1B1bGxDaGF0Q2hhdHRlcktpY2tSZXNwb25zZRI6ChZjaGF0X2NoYXR0ZXJfa2lja19pbmZvGAEgASgLMhouY2hhdHMuQ2hhdENoYXR0ZXJLaWNrSW5mbyJJCh5TZW5kTWFudWFsT3BlblR5UHJvbXB0c1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbCIhCh9TZW5kTWFudWFsT3BlblR5UHJvbXB0c1Jlc3BvbnNlIpwCChdQYXRjaENoYXRTZXR0aW5nUmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEisKDGNoYXRfc2V0dGluZxgCIAEoCzIVLmVudGl0aWVzLkNoYXRTZXR0aW5nEj4KGXVwZGF0ZV9jaGF0X3NldHRpbmdfZmllbGQYAyADKA4yGy5lbnRpdGllcy5DaGF0U2V0dGluZy5GaWVsZBIXCg9pc19saWNlbnNlX2F1dGgYZSABKAgSLAokYXV0aF90cmFuc2xhdGVfZ2xvYmFsX3N3aXRjaF92ZXJzaW9uGGYgASgDEiQKHGF1dGhfdHJhbnNsYXRlX2dsb2JhbF9zd2l0Y2gYZyABKAgiWAoYUGF0Y2hDaGF0U2V0dGluZ1Jlc3BvbnNlEg8KB2NoYXRfaWQYASABKAkSKwoMY2hhdF9zZXR0aW5nGAIgASgLMhUuZW50aXRpZXMuQ2hhdFNldHRpbmciVwoXUHVzaENoYXRTZXR0aW5nUmVzcG9uc2USDwoHY2hhdF9pZBgBIAEoCRIrCgxjaGF0X3NldHRpbmcYAiABKAsyFS5lbnRpdGllcy5DaGF0U2V0dGluZyJVChVQdXNoQ2hhdFNldHRpbmdOb3RpY2USDwoHY2hhdF9pZBgBIAEoCRIrCgxjaGF0X3NldHRpbmcYAiABKAsyFS5lbnRpdGllcy5DaGF0U2V0dGluZyJNCiJQdWxsQ2hhdFVzZXJBdXRvTXV0ZVNldHRpbmdSZXF1ZXN0EicKB2NoYXRfaWQYASACKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwibwojUHVsbENoYXRVc2VyQXV0b011dGVTZXR0aW5nUmVzcG9uc2USDwoHY2hhdF9pZBgBIAEoAxI3CgxtdXRlX3NldHRpbmcYAiABKAsyIS5lbnRpdGllcy5DaGF0VXNlckF1dG9NdXRlU2V0dGluZyKOBAokVXBkYXRlQ2hhdFVzZXJBdXRvTXV0ZVNldHRpbmdSZXF1ZXN0EicKB2NoYXRfaWQYASACKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSDgoGYm90X2lkGAIgASgDEk0KDHVwZGF0ZV9maWVsZBgEIAEoDjI3LmNoYXRzLlVwZGF0ZUNoYXRVc2VyQXV0b011dGVTZXR0aW5nUmVxdWVzdC5VcGRhdGVGaWVsZBJGCgZzb3VyY2UYBSABKA4yNi5jaGF0cy5VcGRhdGVDaGF0VXNlckF1dG9NdXRlU2V0dGluZ1JlcXVlc3QuTXV0ZVNvdXJjZSJzCgtVcGRhdGVGaWVsZBILCgdVTktOT1dOEAASGQoVQ0xPU0VfTEFSR0VfQ0hBVF9NVVRFEAESEgoOQ0xPU0VfQk9UX01VVEUQAhIRCg1PUEVOX0JPVF9NVVRFEAMSFQoRQ0xPU0VfQkFOTkVSX1NIT1cQBCKgAQoKTXV0ZVNvdXJjZRISCg5VTktOT1dOX1NPVVJDRRAAEhMKD0NIQVRfVE9QX0JBTk5FUhABEhsKF0dST1VQX01FTUJFUl9ST0JPVF9MSVNUEAISGwoXTk9JU0VfUkVEVUNUSU9OX1NZU19NU0cQAxIcChhSSUdIVF9DTElDS19MSVNUX09QVElPTlMQBBIRCg1DSEFUX1NFVFRJTkdTEAUicwolVXBkYXRlQ2hhdFVzZXJBdXRvTXV0ZVNldHRpbmdSZXNwb25zZRIPCgdjaGF0X2lkGAEgASgDEjkKDnVzZXJfYXV0b19tdXRlGAIgASgLMiEuZW50aXRpZXMuQ2hhdFVzZXJBdXRvTXV0ZVNldHRpbmci6wEKHFB1c2hDaGF0VXNlckF1dG9NdXRlU2V0dGluZ3MSZwocY2hhdF91c2VyX2F1dG9fbXV0ZV9zZXR0aW5ncxgBIAMoCzJBLmNoYXRzLlB1c2hDaGF0VXNlckF1dG9NdXRlU2V0dGluZ3MuQ2hhdFVzZXJBdXRvTXV0ZVNldHRpbmdzRW50cnkaYgodQ2hhdFVzZXJBdXRvTXV0ZVNldHRpbmdzRW50cnkSCwoDa2V5GAEgASgDEjAKBXZhbHVlGAIgASgLMiEuZW50aXRpZXMuQ2hhdFVzZXJBdXRvTXV0ZVNldHRpbmc6AjgBIrABChdQdWxsQ2hhdFNldHRpbmdzUmVxdWVzdBIoCghjaGF0X2lkcxgBIAMoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIXCg9pc19saWNlbnNlX2F1dGgYZSABKAgSJAocYXV0aF90cmFuc2xhdGVfZ2xvYmFsX3N3aXRjaBhnIAEoCBIsCiRhdXRoX3RyYW5zbGF0ZV9nbG9iYWxfc3dpdGNoX3ZlcnNpb24YaCABKAMisAEKGFB1bGxDaGF0U2V0dGluZ3NSZXNwb25zZRJICg1jaGF0X3NldHRpbmdzGAEgAygLMjEuY2hhdHMuUHVsbENoYXRTZXR0aW5nc1Jlc3BvbnNlLkNoYXRTZXR0aW5nc0VudHJ5GkoKEUNoYXRTZXR0aW5nc0VudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEoCzIVLmVudGl0aWVzLkNoYXRTZXR0aW5nOgI4ASI0ChpQdWxsQWxsQ2hhdFNldHRpbmdzUmVxdWVzdBIWCgt1cGRhdGVfdGltZRgBIAEoAzoBMCK2AQobUHVsbEFsbENoYXRTZXR0aW5nc1Jlc3BvbnNlEksKDWNoYXRfc2V0dGluZ3MYASADKAsyNC5jaGF0cy5QdWxsQWxsQ2hhdFNldHRpbmdzUmVzcG9uc2UuQ2hhdFNldHRpbmdzRW50cnkaSgoRQ2hhdFNldHRpbmdzRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUuZW50aXRpZXMuQ2hhdFNldHRpbmc6AjgBIqMBChVQdWxsR3JvdXBDaGF0c1JlcXVlc3QSLwoEdHlwZRgBIAIoDjIhLmNoYXRzLlB1bGxHcm91cENoYXRzUmVxdWVzdC5UeXBlEhYKC3VwZGF0ZV90aW1lGAIgASgDOgEwEhEKBWNvdW50GAMgASgFOgIyMCIuCgRUeXBlEgoKBk1BTkFHRRABEggKBEpPSU4QAhIQCgxBRE1JTklTVFJBVEUQAyKMBAoWUHVsbEdyb3VwQ2hhdHNSZXNwb25zZRIQCghjaGF0X2lkcxgBIAMoCRIQCghoYXNfbW9yZRgCIAEoCBJJCg9jaGF0X2pvaW5fdGltZXMYAyADKAsyMC5jaGF0cy5QdWxsR3JvdXBDaGF0c1Jlc3BvbnNlLkNoYXRKb2luVGltZXNFbnRyeRJNChFjaGF0X2NyZWF0ZV90aW1lcxgEIAMoCzIyLmNoYXRzLlB1bGxHcm91cENoYXRzUmVzcG9uc2UuQ2hhdENyZWF0ZVRpbWVzRW50cnkSEwoLdG90YWxfY291bnQYBSABKAUSGAoQbmV4dF91cGRhdGVfdGltZRgGIAEoAxJZChdjaGF0X2FkbWluaXN0cmF0ZV90aW1lcxgHIAMoCzI4LmNoYXRzLlB1bGxHcm91cENoYXRzUmVzcG9uc2UuQ2hhdEFkbWluaXN0cmF0ZVRpbWVzRW50cnkaNAoSQ2hhdEpvaW5UaW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEaNgoUQ2hhdENyZWF0ZVRpbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ARo8ChpDaGF0QWRtaW5pc3RyYXRlVGltZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBIkEKGVB1bGxDaGF0U2hhcmVUb2tlblJlcXVlc3QSDwoHY2hhdF9pZBgBIAEoCRITCgtleHBpcmVfdGltZRgCIAEoAyJGChpQdWxsQ2hhdFNoYXJlVG9rZW5SZXNwb25zZRIVCg1qb2luX2NoYXRfdXJsGAEgASgJEhEKCWV4cGlyZV9hdBgCIAEoAyIeChxQdXRDaGF0Q2hhdHRlckJ5VG9rZW5SZXF1ZXN0Ij0KHVB1dENoYXRDaGF0dGVyQnlUb2tlblJlc3BvbnNlEhwKBGNoYXQYASABKAsyDi5lbnRpdGllcy5DaGF0Ii0KF1B1dENyeXB0b1AyUENoYXRSZXF1ZXN0EhIKCmNoYXR0ZXJfaWQYASACKAkiXwoYUHV0Q3J5cHRvUDJQQ2hhdFJlc3BvbnNlEhwKBGNoYXQYASACKAsyDi5lbnRpdGllcy5DaGF0EiUKCWZlZWRfY2FyZBgCIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkIrwBChlQdXRDcnlwdG9Hcm91cENoYXRSZXF1ZXN0EiEKBHR5cGUYASACKA4yEy5lbnRpdGllcy5DaGF0LlR5cGUSFAoKZ3JvdXBfbmFtZRgCIAEoCToAEhMKC2NoYXR0ZXJfaWRzGAMgAygJEhAKCGljb25fa2V5GAQgASgJEikKC2F2YXRhcl9tZXRhGAUgASgLMhQuZW50aXRpZXMuQXZhdGFyTWV0YRIUCgxmcm9tX2NoYXRfaWQYBiABKAkiYQoaUHV0Q3J5cHRvR3JvdXBDaGF0UmVzcG9uc2USHAoEY2hhdBgBIAIoCzIOLmVudGl0aWVzLkNoYXQSJQoJZmVlZF9jYXJkGAIgASgLMhIuZW50aXRpZXMuRmVlZENhcmQiQwoYRGlzYmFuZENyeXB0b0NoYXRSZXF1ZXN0EicKB2NoYXRfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwiLAoZRGlzYmFuZENyeXB0b0NoYXRSZXNwb25zZRIPCgdjaGF0X2lkGAEgAigJIkAKGlB1c2hOZXdEZXZpY2VPbmxpbmVSZXF1ZXN0Eg8KB3VzZXJfaWQYASACKAkSEQoJZGV2aWNlX2lkGAIgAigJIkAKFFB1bGxDaGF0c1JvbGVSZXF1ZXN0EigKCGNoYXRfaWRzGAEgAygJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsIpIBChVQdWxsQ2hhdHNSb2xlUmVzcG9uc2USNgoFcm9sZXMYASADKAsyJy5jaGF0cy5QdWxsQ2hhdHNSb2xlUmVzcG9uc2UuUm9sZXNFbnRyeRpBCgpSb2xlc0VudHJ5EgsKA2tleRgBIAEoCRIiCgV2YWx1ZRgCIAEoDjITLmVudGl0aWVzLkNoYXQuUm9sZToCOAEixgEKG1B1bGxDaGF0QXBwbGljYXRpb25zUmVxdWVzdBIOCgZjdXJzb3IYASABKAMSEQoFY291bnQYAiABKAU6AjIwEjsKBHR5cGUYAyABKA4yLS5lbnRpdGllcy5DaGF0QXBwbGljYXRpb24uQ2hhdEFwcGxpY2F0aW9uVHlwZRIcCg1pc19kZXNjX29yZGVyGAQgASgIOgVmYWxzZRIPCgdjaGF0X2lkGAUgASgJEhgKEG9yaWdpbmFsX3ZlcnNpb24YBiABKAMilAEKHFB1bGxDaGF0QXBwbGljYXRpb25zUmVzcG9uc2USLwoMYXBwbGljYXRpb25zGAEgAygLMhkuZW50aXRpZXMuQ2hhdEFwcGxpY2F0aW9uEhAKCGhhc19tb3JlGAIgASgIEhgKEG9yaWdpbmFsX3ZlcnNpb24YAyABKAMSFwoPY3VycmVudF92ZXJzaW9uGAQgASgDInoKFFB1c2hDaGF0QXBwbGljYXRpb25zEi8KDGFwcGxpY2F0aW9ucxgBIAMoCzIZLmVudGl0aWVzLkNoYXRBcHBsaWNhdGlvbhIYChBvcmlnaW5hbF92ZXJzaW9uGAIgASgDEhcKD2N1cnJlbnRfdmVyc2lvbhgDIAEoAyKZAQodUHJvY2Vzc0NoYXRBcHBsaWNhdGlvblJlcXVlc3QSCgoCaWQYASABKAMSOwoGc3RhdHVzGAIgASgOMisuZW50aXRpZXMuQ2hhdEFwcGxpY2F0aW9uLkFwcGxpY2F0aW9uU3RhdHVzEhwKB3VzZXJfaWQYAyABKAlCC4KmHQd1c2VyX2lkEhEKCWF1dGhfc3luYxgEIAEoCCIgCh5Qcm9jZXNzQ2hhdEFwcGxpY2F0aW9uUmVzcG9uc2UiGgoYUmVzZXRDb250YWN0VG9rZW5SZXF1ZXN0IioKGVJlc2V0Q29udGFjdFRva2VuUmVzcG9uc2USDQoFdG9rZW4YASABKAkiIQoQUHVzaENvbnRhY3RUb2tlbhINCgV0b2tlbhgBIAEoCSIZChdQdWxsQ29udGFjdFRva2VuUmVxdWVzdCKGAQoYUHVsbENvbnRhY3RUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEhIKCmludml0ZV91cmwYAiABKAkSEgoKaW52aXRlX21zZxgDIAEoCRIUCgxjb3VudHJ5X2NvZGUYBCABKAkSHQoVY2FuX3NlYXJjaF93aXRoX3Rva2VuGAUgASgIIiQKIlB1bGxDb250YWN0VG9rZW5zRm9yU2hhcmluZ1JlcXVlc3QijQEKDENvbnRhY3RUb2tlbhINCgV0b2tlbhgBIAEoCRISCgppbnZpdGVfdXJsGAIgASgJEhIKCmludml0ZV9tc2cYAyABKAkSFAoMY291bnRyeV9jb2RlGAQgASgJEh0KFWNhbl9zZWFyY2hfd2l0aF90b2tlbhgFIAEoCBIRCgl1bmlxdWVfaWQYBiABKAkihQEKI1B1bGxDb250YWN0VG9rZW5zRm9yU2hhcmluZ1Jlc3BvbnNlEi8KEmxpbmtfY29udGFjdF90b2tlbhgBIAEoCzITLmNoYXRzLkNvbnRhY3RUb2tlbhItChBxcl9jb250YWN0X3Rva2VuGAIgASgLMhMuY2hhdHMuQ29udGFjdFRva2VuIo8DChxQdXRDb250YWN0QXBwbGljYXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhUKDWV4dHJhX21lc3NhZ2UYAiABKAkSHAoHY2hhdF9pZBgDIAEoCUILgqYdB2NoYXRfaWQSDgoGc2VuZGVyGAQgASgJEicKBnNvdXJjZRgFIAEoDjIXLmVudGl0aWVzLkNvbnRhY3RTb3VyY2USEwoLc291cmNlX25hbWUYBiABKAkSHgoJc2VuZGVyX2lkGAcgASgJQguCph0HdXNlcl9pZBIRCglzb3VyY2VfaWQYCCABKAkSFwoPc3ViX3NvdXJjZV90eXBlGAkgASgJEhwKB3VzZXJfaWQYCiABKAlCC4KmHQd1c2VyX2lkEhIKCnVzZXJfYWxpYXMYCyABKAkSIgoadXNlX3Ruc19jcm9zc19icmFuZF9hY3Rpb24YDCABKAgSOwoMZXhwZWN0X3N0eWxlGA0gASgOMiUuZW50aXRpZXMuQ3Jvc3NCcmFuZEFjdGlvblVpU3R5bGVUeXBlIl4KHVB1dENvbnRhY3RBcHBsaWNhdGlvblJlc3BvbnNlEj0KGWNyb3NzX2JyYW5kX2FjdGlvbl9yZXN1bHQYASABKAsyGi5lbnRpdGllcy5Dcm9zc0JyYW5kQWN0aW9uIlwKG1JlYWRDaGF0QXBwbGljYXRpb25zUmVxdWVzdBIXCg9hcHBsaWNhdGlvbl9pZHMYASADKAMSJAoVcmVhZF9hbGxfYXBwbGljYXRpb25zGAIgASgIOgVmYWxzZSIeChxSZWFkQ2hhdEFwcGxpY2F0aW9uc1Jlc3BvbnNlIkwKE1B1bGxDb250YWN0c1JlcXVlc3QSEQoFY291bnQYASABKAU6AjEwEg4KBmN1cnNvchgCIAEoAxISCgppbl9jaGF0X2lkGAMgASgJImoKFFB1bGxDb250YWN0c1Jlc3BvbnNlEiMKCGNvbnRhY3RzGAEgAygLMhEuZW50aXRpZXMuQ29udGFjdBIQCghoYXNfbW9yZRgCIAEoCBIbChNjaGF0dGVyc19pbl9jaGF0X2lkGAMgAygJIl4KC1B1c2hDb250YWN0EiIKB2NvbnRhY3QYASABKAsyES5lbnRpdGllcy5Db250YWN0EisKDGNvbnRhY3RfaW5mbxgCIAEoCzIVLmVudGl0aWVzLkNvbnRhY3RJbmZvImQKJVB1bGxDaGF0QXBwbGljYXRpb25VbnJlYWRCYWRnZVJlcXVlc3QSOwoEdHlwZRgBIAEoDjItLmVudGl0aWVzLkNoYXRBcHBsaWNhdGlvbi5DaGF0QXBwbGljYXRpb25UeXBlIjcKJlB1bGxDaGF0QXBwbGljYXRpb25VbnJlYWRCYWRnZVJlc3BvbnNlEg0KBWJhZGdlGAEgASgFIjQKFERlbGV0ZUNvbnRhY3RSZXF1ZXN0EhwKB3VzZXJfaWQYASABKAlCC4KmHQd1c2VyX2lkIhcKFURlbGV0ZUNvbnRhY3RSZXNwb25zZSI9ChhQdXRDb250YWN0U2V0dGluZ1JlcXVlc3QSIQoZYWxsb3dfY29udGFjdF9hcHBsaWNhdGlvbhgBIAEoCCIbChlQdXRDb250YWN0U2V0dGluZ1Jlc3BvbnNlIjcKElB1c2hDb250YWN0U2V0dGluZxIhChlhbGxvd19jb250YWN0X2FwcGxpY2F0aW9uGAEgASgIIhsKGVB1bGxDb250YWN0U2V0dGluZ1JlcXVlc3QiPwoaUHVsbENvbnRhY3RTZXR0aW5nUmVzcG9uc2USIQoZYWxsb3dfY29udGFjdF9hcHBsaWNhdGlvbhgBIAEoCCJ6ChpQdWxsQ2hhdFFSQ29kZVRva2VuUmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhYKC2V4cGlyZWRfZGF5GAIgASgFOgE3EhsKDGlzX3VubGltaXRlZBgDIAEoCDoFZmFsc2UicgobUHVsbENoYXRRUkNvZGVUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEhMKC2V4cGlyZV90aW1lGAIgASgDEhIKCnNoYXJlZF91cmwYAyABKAkSGwoMaXNfdW5saW1pdGVkGAQgASgIOgVmYWxzZSJ0ChlQdWxsQ2hhdFFSQ29kZUluZm9SZXF1ZXN0EigKBXRva2VuGAEgAigJQhmKwxoVc3BsaXQsdHlwZT1jaGF0X3Rva2VuEi0KDXBsYXRmb3JtX3R5cGUYAiABKA4yFi5lbnRpdGllcy5QbGF0Zm9ybVR5cGUisQEKGlB1bGxDaGF0UVJDb2RlSW5mb1Jlc3BvbnNlEhcKD2FscmVhZHlfaW5fY2hhdBgBIAEoCBIcCgRjaGF0GAIgASgLMg4uZW50aXRpZXMuQ2hhdBISCgppbnZpdGVyX2lkGAMgASgJEiEKGWlzX2ludml0ZXJfY2FuX2FkZF9tZW1iZXIYBCABKAgSEAoIc2hvd19tc2cYBSABKAkSEwoLaW52aXRlcl91cmwYBiABKAkiSQodUHVsbENoYXRTaGFyZVRva2VuSW5mb1JlcXVlc3QSKAoFdG9rZW4YASACKAlCGYrDGhVzcGxpdCx0eXBlPWNoYXRfdG9rZW4iXgoeUHVsbENoYXRTaGFyZVRva2VuSW5mb1Jlc3BvbnNlEhcKD2FscmVhZHlfaW5fY2hhdBgBIAEoCBIPCgdjaGF0X2lkGAIgASgJEhIKCmludml0ZXJfaWQYAyABKAkibQoaUHV0Q2hhdHRlclZpYVFSQ29kZVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBISCgppbnZpdGVyX2lkGAIgAigJEhIKCmpvaW5fdG9rZW4YAyABKAkiYgobUHV0Q2hhdHRlclZpYVFSQ29kZVJlc3BvbnNlEhwKBGNoYXQYASABKAsyDi5lbnRpdGllcy5DaGF0EiUKCWZlZWRfY2FyZBgCIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkIuQBChNGYWNlVG9GYWNlQXBwbGljYW50Eg8KB3VzZXJfaWQYASACKAMSTQoSaW50ZXJuYXRpb25hbF9uYW1lGAIgAygLMjEuY2hhdHMuRmFjZVRvRmFjZUFwcGxpY2FudC5JbnRlcm5hdGlvbmFsTmFtZUVudHJ5EiUKDGF2YXRhcl9pbWFnZRgDIAEoCzIPLmVudGl0aWVzLkltYWdlEgwKBHJhbmsYBCABKAMaOAoWSW50ZXJuYXRpb25hbE5hbWVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBImUKIkNyZWF0ZUZhY2VUb0ZhY2VBcHBsaWNhdGlvblJlcXVlc3QSKwoIbG9jYXRpb24YASACKAsyGS5lbnRpdGllcy5Mb2NhdGlvbkNvbnRlbnQSEgoKbWF0Y2hfY29kZRgCIAIoBSJ8CiNDcmVhdGVGYWNlVG9GYWNlQXBwbGljYXRpb25SZXNwb25zZRIWCg5hcHBsaWNhdGlvbl9pZBgBIAIoCRINCgV0b2tlbhgCIAIoCRIuCgphcHBsaWNhbnRzGAMgAygLMhouY2hhdHMuRmFjZVRvRmFjZUFwcGxpY2FudCJpCh9QdXNoRmFjZVRvRmFjZUFwcGxpY2FudHNSZXF1ZXN0EhYKDmFwcGxpY2F0aW9uX2lkGAEgAigJEi4KCmFwcGxpY2FudHMYAiADKAsyGi5jaGF0cy5GYWNlVG9GYWNlQXBwbGljYW50IiIKIFB1c2hGYWNlVG9GYWNlQXBwbGljYW50c1Jlc3BvbnNlIioKGUpvaW5GYWNlVG9GYWNlQ2hhdFJlcXVlc3QSDQoFdG9rZW4YASACKAkieQoaSm9pbkZhY2VUb0ZhY2VDaGF0UmVzcG9uc2USHAoEY2hhdBgBIAEoCzIOLmVudGl0aWVzLkNoYXQSJQoJZmVlZF9jYXJkGAIgASgLMhIuZW50aXRpZXMuRmVlZENhcmQSFgoOaXNfY3JlYXRlX2NoYXQYAyABKAgiSQodUHVsbENoYXRTZWN1cml0eUNvbmZpZ1JlcXVlc3QSKAoIY2hhdF9pZHMYASADKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwiswEKHlB1bGxDaGF0U2VjdXJpdHlDb25maWdSZXNwb25zZRJDCgdjb25maWdzGAEgAygLMjIuY2hhdHMuUHVsbENoYXRTZWN1cml0eUNvbmZpZ1Jlc3BvbnNlLkNvbmZpZ3NFbnRyeRpMCgxDb25maWdzRW50cnkSCwoDa2V5GAEgASgJEisKBXZhbHVlGAIgASgLMhwuZW50aXRpZXMuQ2hhdFNlY3VyaXR5Q29uZmlnOgI4ASLAAQoYUHVsbENoYXRMaW5rVG9rZW5SZXF1ZXN0EicKB2NoYXRfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSFgoLZXhwaXJlZF9kYXkYAiABKAU6ATcSEAoIYXBwX25hbWUYAyABKAkSGwoMaXNfdW5saW1pdGVkGAQgASgIOgVmYWxzZRI0Cgx0YXJnZXRfc2NlbmUYBSABKA4yHi5lbnRpdGllcy5DaGF0U2hhcmVUYXJnZXRTY2VuZSKcAQoZUHVsbENoYXRMaW5rVG9rZW5SZXNwb25zZRIoCgV0b2tlbhgBIAEoCUIZisMaFXNwbGl0LHR5cGU9Y2hhdF90b2tlbhITCgtleHBpcmVfdGltZRgCIAEoAxISCgpzaGFyZWRfdXJsGAMgASgJEg8KB2tvdUxpbmcYBCABKAkSGwoMaXNfdW5saW1pdGVkGAUgASgIOgVmYWxzZSJEChhQdXRDaGF0dGVyVmlhTGlua1JlcXVlc3QSKAoFdG9rZW4YASACKAlCGYrDGhVzcGxpdCx0eXBlPWNoYXRfdG9rZW4iOQoZUHV0Q2hhdHRlclZpYUxpbmtSZXNwb25zZRIcCgRjaGF0GAEgASgLMg4uZW50aXRpZXMuQ2hhdCJDChdQdWxsQ2hhdExpbmtJbmZvUmVxdWVzdBIoCgV0b2tlbhgBIAIoCUIZisMaFXNwbGl0LHR5cGU9Y2hhdF90b2tlbiL8AQoYUHVsbENoYXRMaW5rSW5mb1Jlc3BvbnNlEhcKD2FscmVhZHlfaW5fY2hhdBgBIAEoCBIcCgRjaGF0GAIgASgLMg4uZW50aXRpZXMuQ2hhdBIoCg1vd25lcl9jaGF0dGVyGAMgASgLMhEuZW50aXRpZXMuQ2hhdHRlchIhChlpc19pbnZpdGVyX2Nhbl9hZGRfbWVtYmVyGAQgASgIEioKD2ludml0ZXJfY2hhdHRlchgFIAEoCzIRLmVudGl0aWVzLkNoYXR0ZXISEwoLZXhwaXJlX3RpbWUYBiABKAkSGwoMaXNfdW5saW1pdGVkGAcgASgIOgVmYWxzZSI0Ch9DaGVja1B1YmxpY0NoYXROYW1lRXhpc3RSZXF1ZXN0EhEKCWNoYXRfbmFtZRgBIAIoCSIxCiBDaGVja1B1YmxpY0NoYXROYW1lRXhpc3RSZXNwb25zZRINCgVleGlzdBgBIAIoCCI2Ch9DaGVja1AyUENoYXRzRXhpc3RCeVVzZXJSZXF1ZXN0EhMKC2NoYXR0ZXJfaWRzGAEgAygJIqICCiBDaGVja1AyUENoYXRzRXhpc3RCeVVzZXJSZXNwb25zZRJDCgZleGlzdHMYASADKAsyMy5jaGF0cy5DaGVja1AyUENoYXRzRXhpc3RCeVVzZXJSZXNwb25zZS5FeGlzdHNFbnRyeRJTCg5jaGF0dGVyQ2hhdE1hcBgCIAMoCzI7LmNoYXRzLkNoZWNrUDJQQ2hhdHNFeGlzdEJ5VXNlclJlc3BvbnNlLkNoYXR0ZXJDaGF0TWFwRW50cnkaLQoLRXhpc3RzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ARo1ChNDaGF0dGVyQ2hhdE1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiWgoaUHV0Q3J5cHRvQnVybmVkVGltZVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBITCgtidXJuZWRfdGltZRgCIAEoAyI7ChtQdXRDcnlwdG9CdXJuZWRUaW1lUmVzcG9uc2USHAoEY2hhdBgBIAEoCzIOLmVudGl0aWVzLkNoYXQi3QEKE0FkZENoYXRDaGF0dGVyQXBwbHkSDgoGcmVhc29uGAEgASgJEiIKBnN0YXR1cxgCIAIoDjISLmNoYXRzLkFwcGx5U3RhdHVzEgwKBHRpbWUYAyACKAMSJAoKYXBwbHlfd2F5cxgEIAIoDjIQLmNoYXRzLkFwcGx5V2F5cxISCgppbnZpdGVyX2lkGAUgASgJEhIKCmludml0ZWVfaWQYBiACKAkSEgoKam9pbl90b2tlbhgHIAEoCRIPCgd0ZWFtX2lkGAggASgDEhEKCXRlYW1fbmFtZRgJIAEoCSJZCh5QdWxsQWRkQ2hhdENoYXR0ZXJBcHBseVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIOCgZjdXJzb3IYAiACKAMiYwofUHVsbEFkZENoYXRDaGF0dGVyQXBwbHlSZXNwb25zZRIrCgdhcHBsaWVzGAEgAygLMhouY2hhdHMuQWRkQ2hhdENoYXR0ZXJBcHBseRITCgtuZXh0X2N1cnNvchgCIAIoAyLIAQofUGF0Y2hBZGRDaGF0Q2hhdHRlckFwcGx5UmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhMKC3Nob3dfYmFubmVyGAIgASgIEhIKCmludml0ZWVfaWQYAyABKAkSIgoGc3RhdHVzGAQgASgOMhIuY2hhdHMuQXBwbHlTdGF0dXMSLwoQcHJlX3ByZWNlc3NfaW5mbxhlIAEoCzIVLmNoYXRzLlByZVByb2Nlc3NJbmZvIiIKIFBhdGNoQWRkQ2hhdENoYXR0ZXJBcHBseVJlc3BvbnNlIoMCCh1QdXRBZGRDaGF0Q2hhdHRlckFwcGx5UmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEh4KBHdheXMYAiACKA4yEC5jaGF0cy5BcHBseVdheXMSDgoGcmVhc29uGAMgASgJEhMKC2NoYXR0ZXJfaWRzGAQgAygJEhIKCmludml0ZXJfaWQYBSABKAkSEgoKam9pbl90b2tlbhgGIAEoCRIPCgd0ZWFtX2lkGAcgASgDEhAKCGV2ZW50X2lkGAggASgJEikKCWZyb21fcGFnZRgJIAEoCzIWLmNoYXRzLkNoYXRQYWdlQ29udGV4dCIgCh5QdXRBZGRDaGF0Q2hhdHRlckFwcGx5UmVzcG9uc2UiQgoYRGlzYWJsZUNoYXRTaGFyZWRSZXF1ZXN0EiYKCm1lc3NhZ2VfaWQYASABKAlCEorDGg5zcGxpdCx0eXBlPW1zZyIaChhEaXNhYmxlU2hhcmVDYXJkUmVzcG9uc2UiWgoaQ2hlY2tDaGF0dGVyc0luQ2hhdFJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBITCgtjaGF0dGVyX2lkcxgCIAMoCSKSAQobQ2hlY2tDaGF0dGVyc0luQ2hhdFJlc3BvbnNlEkIKCGNoYXR0ZXJzGAEgAygLMjAuY2hhdHMuQ2hlY2tDaGF0dGVyc0luQ2hhdFJlc3BvbnNlLkNoYXR0ZXJzRW50cnkaLwoNQ2hhdHRlcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBIkQKGVB1dENoYXRBbm5SZWFkVGltZVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbCIcChpQdXRDaGF0QW5uUmVhZFRpbWVSZXNwb25zZSJHChtQdWxsQ2hhdHNBbm5SZWFkVGltZVJlcXVlc3QSKAoIY2hhdF9pZHMYASADKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwipQEKHFB1bGxDaGF0c0FublJlYWRUaW1lUmVzcG9uc2USTwoPY2hhdHNfcmVhZF90aW1lGAEgAygLMjYuY2hhdHMuUHVsbENoYXRzQW5uUmVhZFRpbWVSZXNwb25zZS5DaGF0c1JlYWRUaW1lRW50cnkaNAoSQ2hhdHNSZWFkVGltZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEiOQoTUHVzaENoYXRBbm5SZWFkVGltZRIPCgdjaGF0X2lkGAEgAigJEhEKCXJlYWRfdGltZRgCIAIoAyJsChtQdWxsQ2hhdFNoYXJlSGlzdG9yeVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIRCgZjdXJzb3IYAiABKAk6ATASEQoFY291bnQYAyABKAU6AjIwInUKHFB1bGxDaGF0U2hhcmVIaXN0b3J5UmVzcG9uc2USLgoNc2hhcmVfaGlzdG9yeRgBIAMoCzIXLmVudGl0aWVzLkNoYXRTaGFyZUluZm8SEAoIaGFzX21vcmUYAiABKAgSEwoLbmV4dF9jdXJzb3IYAyABKAkidwoaUHV0Q2hhdFNoYXJlSGlzdG9yeVJlcXVlc3QSKAoFdG9rZW4YASACKAlCGYrDGhVzcGxpdCx0eXBlPWNoYXRfdG9rZW4SLwoEdHlwZRgCIAIoDjIhLmVudGl0aWVzLkNoYXRTaGFyZUluZm8uU2hhcmVUeXBlIh0KG1B1dENoYXRTaGFyZUhpc3RvcnlSZXNwb25zZSJ8ChtQYXRjaENoYXRTaGFyZVN0YXR1c1JlcXVlc3QSKAoFdG9rZW4YASADKAlCGYrDGhVzcGxpdCx0eXBlPWNoYXRfdG9rZW4SMwoGc3RhdHVzGAIgAigOMiMuZW50aXRpZXMuQ2hhdFNoYXJlSW5mby5TaGFyZVN0YXR1cyIeChxQYXRjaENoYXRTaGFyZVN0YXR1c1Jlc3BvbnNlIo4BCiZQdWxsQ2hhdE5vbkRlcGFydG1lbnRhbENoYXR0ZXJzUmVxdWVzdBInCgdjaGF0X2lkGAEgAigDQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhEKBmN1cnNvchgCIAEoAzoBMBIRCgVjb3VudBgDIAEoBToCMjASFQoLbmFtZV9maWx0ZXIYBCABKAk6ACLeBQonUHVsbENoYXROb25EZXBhcnRtZW50YWxDaGF0dGVyc1Jlc3BvbnNlEk4KCGNoYXR0ZXJzGAEgAygLMjwuY2hhdHMuUHVsbENoYXROb25EZXBhcnRtZW50YWxDaGF0dGVyc1Jlc3BvbnNlLkNoYXR0ZXJzRW50cnkSEAoIaGFzX21vcmUYAiABKAgSEwoLbmV4dF9jdXJzb3IYAyABKAMSWwoPZ3JvdXBfbmlja25hbWVzGAQgAygLMkIuY2hhdHMuUHVsbENoYXROb25EZXBhcnRtZW50YWxDaGF0dGVyc1Jlc3BvbnNlLkdyb3VwTmlja25hbWVzRW50cnkSSAoFbWV0YXMYBSADKAsyOS5jaGF0cy5QdWxsQ2hhdE5vbkRlcGFydG1lbnRhbENoYXR0ZXJzUmVzcG9uc2UuTWV0YXNFbnRyeRIUCgxtZW1iZXJfY291bnQYBiABKAUSEwoLY2hhdHRlcl9pZHMYByADKAMSagoXY2hhdHRlcl9kZXBhcnRtZW50X25hbWUYCCADKAsySS5jaGF0cy5QdWxsQ2hhdE5vbkRlcGFydG1lbnRhbENoYXR0ZXJzUmVzcG9uc2UuQ2hhdHRlckRlcGFydG1lbnROYW1lRW50cnkaQgoNQ2hhdHRlcnNFbnRyeRILCgNrZXkYASABKAMSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5DaGF0dGVyOgI4ARo1ChNHcm91cE5pY2tuYW1lc0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoCToCOAEaRQoKTWV0YXNFbnRyeRILCgNrZXkYASABKAMSJgoFdmFsdWUYAiABKAsyFy5jaGF0cy5Hcm91cENoYXR0ZXJNZXRhOgI4ARo8ChpDaGF0dGVyRGVwYXJ0bWVudE5hbWVFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAk6AjgBIkYKHVB1bGxDaGF0U2lkZUJhckJ1dHRvbnNSZXF1ZXN0Eg8KB2NoYXRfaWQYASACKAMSFAoKc2lkZWJhcl9pZBgCIAIoCToAIk8KHlB1bGxDaGF0U2lkZUJhckJ1dHRvbnNSZXNwb25zZRItCg9zaWRlYmFyX2J1dHRvbnMYASADKAsyFC5jaGF0cy5TaWRlQmFyQnV0dG9uIqMBCg1TaWRlQmFyQnV0dG9uEjUKCWkxOG5fbmFtZRgBIAMoCzIiLmNoYXRzLlNpZGVCYXJCdXR0b24uSTE4bk5hbWVFbnRyeRIdCgRpY29uGAIgAigLMg8uZW50aXRpZXMuSW1hZ2USCwoDdXJsGAMgAigJGi8KDUkxOG5OYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJwCh9QdWxsQ2hhdEpvaW5MZWF2ZUhpc3RvcnlSZXF1ZXN0EicKB2NoYXRfaWQYASACKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSEQoGY3Vyc29yGAIgASgDOgEwEhEKBWNvdW50GAMgASgFOgIyMCKCAQogUHVsbENoYXRKb2luTGVhdmVIaXN0b3J5UmVzcG9uc2USNwoPY2hhdHRlcl9oaXN0b3J5GAEgAygLMh4uZW50aXRpZXMuQ2hhdEpvaW5MZWF2ZUhpc3RvcnkSEAoIaGFzX21vcmUYAiABKAgSEwoLbmV4dF9jdXJzb3IYAyABKAkiRwobUHVsbENoYXRzTWFpbFNldHRpbmdSZXF1ZXN0EigKCGNoYXRfaWRzGAEgAygJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsItEBChxQdWxsQ2hhdHNNYWlsU2V0dGluZ1Jlc3BvbnNlEloKFWNoYXRpZF8yX21hbGlfc2V0dGluZxgBIAMoCzI7LmNoYXRzLlB1bGxDaGF0c01haWxTZXR0aW5nUmVzcG9uc2UuQ2hhdGlkMk1hbGlTZXR0aW5nRW50cnkaVQoXQ2hhdGlkMk1hbGlTZXR0aW5nRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgLMhouZW50aXRpZXMuTWFpbEdyb3VwU2V0dGluZzoCOAEieAobUGF0Y2hDaGF0TWFpbFNldHRpbmdSZXF1ZXN0EicKB2NoYXRfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSMAoMbWFpbF9zZXR0aW5nGAIgAigLMhouZW50aXRpZXMuTWFpbEdyb3VwU2V0dGluZyJ5ChxQYXRjaENoYXRNYWlsU2V0dGluZ1Jlc3BvbnNlEicKB2NoYXRfaWQYASABKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSMAoMbWFpbF9zZXR0aW5nGAIgASgLMhouZW50aXRpZXMuTWFpbEdyb3VwU2V0dGluZyJ3ChpQdXNoQ2hhdE1haWxTZXR0aW5nUmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEjAKDG1haWxfc2V0dGluZxgCIAIoCzIaLmVudGl0aWVzLk1haWxHcm91cFNldHRpbmciRwocRGVsZXRlQ2hhdE1haWxTZXR0aW5nUmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsIh8KHURlbGV0ZUNoYXRNYWlsU2V0dGluZ1Jlc3BvbnNlIkQKGVB1bGxDaGF0QXZhdGFyTWV0YVJlcXVlc3QSJwoHY2hhdF9pZBgBIAEoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbCJHChpQdWxsQ2hhdEF2YXRhck1ldGFSZXNwb25zZRIpCgthdmF0YXJfbWV0YRgBIAEoCzIULmVudGl0aWVzLkF2YXRhck1ldGEidwopUHVsbEV4dGVybmFsQ2hhdHRlcnNJblNhbWVDaGF0QXV0aFJlcXVlc3QSEwoLY2hhdHRlcl9pZHMYASADKAkSDwoHY2hhdF9pZBgCIAEoCRIkCgphY3Rpb25UeXBlGAMgASgOMhAubWlzYy5BY3Rpb25UeXBlItEBCipQdWxsRXh0ZXJuYWxDaGF0dGVyc0luU2FtZUNoYXRBdXRoUmVzcG9uc2USUgoJYXV0aF9yZXNwGAEgAygLMj8uY2hhdHMuUHVsbEV4dGVybmFsQ2hhdHRlcnNJblNhbWVDaGF0QXV0aFJlc3BvbnNlLkF1dGhSZXNwRW50cnkaTwoNQXV0aFJlc3BFbnRyeRILCgNrZXkYASABKAkSLQoFdmFsdWUYAiABKAsyHi5jaGF0cy5FeHRlcm5hbENoYXR0ZXJBdXRoSW5mbzoCOAEiYAoXRXh0ZXJuYWxDaGF0dGVyQXV0aEluZm8SKQoNZGVuaWVkX3JlYXNvbhgBIAEoDjISLm1pc2MuRGVuaWVkUmVhc29uEhoKEmlzX2FscmVhZHlfaW5fY2hhdBgCIAEoCCJYChhQdWxsQWxyZWFkeUluQ2hhdFJlcXVlc3QSEwoLY2hhdHRlcl9pZHMYASADKAkSJwoHY2hhdF9pZBgCIAEoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbCJ/ChlQdWxsQWxyZWFkeUluQ2hhdFJlc3BvbnNlEjYKA3JlcxgBIAMoCzIpLmNoYXRzLlB1bGxBbHJlYWR5SW5DaGF0UmVzcG9uc2UuUmVzRW50cnkaKgoIUmVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ASJ9CiZDaGVja1dpdGhkcmF3UGlja0VudGl0aWVzSW5DaGF0UmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEioKDXBpY2tfZW50aXRpZXMYAiADKAsyEy5jaGF0cy5QaWNrRW50aXRpZXMiugEKJ0NoZWNrV2l0aGRyYXdQaWNrRW50aXRpZXNJbkNoYXRSZXNwb25zZRJZCg5hbGxvd193aXRoZHJhdxgBIAMoCzJBLmNoYXRzLkNoZWNrV2l0aGRyYXdQaWNrRW50aXRpZXNJbkNoYXRSZXNwb25zZS5BbGxvd1dpdGhkcmF3RW50cnkaNAoSQWxsb3dXaXRoZHJhd0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEidwoaUGF0Y2hDaGF0QWRtaW5Vc2Vyc1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIXCg90b19hZGRfdXNlcl9pZHMYAiADKAkSFwoPdG9fZGVsX3VzZXJfaWRzGAMgAygJIv0BChtQYXRjaENoYXRBZG1pblVzZXJzUmVzcG9uc2USHwoFdXNlcnMYASADKAsyEC5jaGF0cy5BZG1pblVzZXISUgoRdXBkYXRlZF90YWdfaW5mb3MYAiADKAsyNy5jaGF0cy5QYXRjaENoYXRBZG1pblVzZXJzUmVzcG9uc2UuVXBkYXRlZFRhZ0luZm9zRW50cnkSFgoOdXBkYXRlX3ZlcnNpb24YAyABKAMaUQoUVXBkYXRlZFRhZ0luZm9zRW50cnkSCwoDa2V5GAEgASgJEigKBXZhbHVlGAIgASgLMhkuY2hhdHMuQ2hhdENoYXR0ZXJUYWdJbmZvOgI4ASJrChlQdXNoQ2hhdEFkbWluVXNlcnNSZXF1ZXN0Eg8KB2NoYXRfaWQYASACKAkSJQoLYWRtaW5fdXNlcnMYAiADKAsyEC5jaGF0cy5BZG1pblVzZXISFgoOdXBkYXRlX3ZlcnNpb24YAyABKAMiMgoJQWRtaW5Vc2VyEg8KB3VzZXJfaWQYASACKAMSFAoMb3JkZXJfd2VpZ2h0GAIgASgDIhwKGlB1c2hDaGF0QWRtaW5Vc2Vyc1Jlc3BvbnNlIkQKGVB1bGxDaGF0QWRtaW5Vc2Vyc1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbCJbChpQdWxsQ2hhdEFkbWluVXNlcnNSZXNwb25zZRIlCgthZG1pbl91c2VycxgBIAMoCzIQLmNoYXRzLkFkbWluVXNlchIWCg51cGRhdGVfdmVyc2lvbhgCIAEoAyJPChNQdWxsQ2hhdFRhYnNSZXF1ZXN0EicKB2NoYXRfaWQYASACKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSDwoHdmVyc2lvbhgCIAEoAyI3Cg1Eb2NUYWJQYXlsb2FkEgsKA2tleRgBIAEoCRILCgN1cmwYAiABKAkSDAoEbmFtZRgDIAEoCSLOAgoHQ2hhdFRhYhIKCgJpZBgBIAEoAxIMCgRuYW1lGAIgASgJEiUKCHRhYl90eXBlGAMgASgOMhMuY2hhdHMuQ2hhdFRhYi5UeXBlEg8KB3BheWxvYWQYBCABKAwSDwoHY2hhdF9pZBgFIAEoAxIQCghzZXF1ZW5jZRgGIAEoBRIUCgxwYXlsb2FkX2pzb24YByABKAkitwEKBFR5cGUSCwoHVU5LTk9XThAAEgsKB01FU1NBR0UQARIMCghET0NfTElTVBACEgcKA0RPQxADEgcKA1BJThAEEhIKDk1FRVRJTkdfTUlOVVRFEAUSFQoRQ0hBVF9BTk5PVU5DRU1FTlQQBhIHCgNVUkwQBxIICgRGSUxFEAgSCAoEVEFTSxAJEhYKEkRPQ19GSUxFX1VSTF9NRVJHRRAKEhUKEUlNQUdFX1ZJREVPX01FUkdFEAsiSgoUUHVsbENoYXRUYWJzUmVzcG9uc2USIQoJY2hhdF90YWJzGAEgAygLMg4uY2hhdHMuQ2hhdFRhYhIPCgd2ZXJzaW9uGAIgASgDImEKFENyZWF0ZUNoYXRUYWJSZXF1ZXN0EiAKCGNoYXRfdGFiGAEgAigLMg4uY2hhdHMuQ2hhdFRhYhInCgdjaGF0X2lkGGUgASgDQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsInAKFUNyZWF0ZUNoYXRUYWJSZXNwb25zZRIPCgdjaGF0X2lkGAEgAigDEhIKCmFkZF90YWJfaWQYAiACKAMSIQoJY2hhdF90YWJzGAMgAygLMg4uY2hhdHMuQ2hhdFRhYhIPCgd2ZXJzaW9uGAQgASgDIlQKFERlbGV0ZUNoYXRUYWJSZXF1ZXN0EhMKC2NoYXRfdGFiX2lkGAEgAigDEicKB2NoYXRfaWQYAiACKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwiXAoVRGVsZXRlQ2hhdFRhYlJlc3BvbnNlEg8KB2NoYXRfaWQYASACKAMSIQoJY2hhdF90YWJzGAIgAygLMg4uY2hhdHMuQ2hhdFRhYhIPCgd2ZXJzaW9uGAMgASgDIlIKFlJlb3JkZXJDaGF0VGFic1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIPCgd0YWJfaWRzGAIgAygDIl4KF1Jlb3JkZXJDaGF0VGFic1Jlc3BvbnNlEg8KB2NoYXRfaWQYASACKAMSIQoJY2hhdF90YWJzGAIgAygLMg4uY2hhdHMuQ2hhdFRhYhIPCgd2ZXJzaW9uGAMgASgDIogCChRVcGRhdGVDaGF0VGFiUmVxdWVzdBInCgdjaGF0X2lkGAEgASgDQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhYKDmRlbGV0ZV90YWJfaWRzGAIgAygDEhcKD3Jlb3JkZXJfdGFiX2lkcxgDIAMoAxJNChJ1cGRhdGVfdGFiX2RldGFpbHMYBCADKAsyMS5jaGF0cy5VcGRhdGVDaGF0VGFiUmVxdWVzdC5VcGRhdGVUYWJEZXRhaWxzRW50cnkaRwoVVXBkYXRlVGFiRGV0YWlsc0VudHJ5EgsKA2tleRgBIAEoAxIdCgV2YWx1ZRgCIAEoCzIOLmNoYXRzLkNoYXRUYWI6AjgBIlMKDFB1c2hDaGF0VGFicxIPCgdjaGF0X2lkGAEgASgDEg8KB3ZlcnNpb24YAiABKAMSIQoJY2hhdF90YWJzGAMgAygLMg4uY2hhdHMuQ2hhdFRhYiJXChVVcGRhdGVDaGF0VGFiUmVzcG9uc2USDwoHY2hhdF9pZBgBIAEoAxIcCgR0YWJzGAIgAygLMg4uY2hhdHMuQ2hhdFRhYhIPCgd2ZXJzaW9uGAMgASgDIq8CChpQdXRDaGF0T25saW5lU3RhdHVzUmVxdWVzdBJICg1vbmxpbmVfc3RhdHVzGAEgAygLMjEuY2hhdHMuUHV0Q2hhdE9ubGluZVN0YXR1c1JlcXVlc3QuQ2hhdE9ubGluZVN0YXRlEigKCGNoYXRfaWRzGGUgAygDQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsGmgKD0NoYXRPbmxpbmVTdGF0ZRIPCgdjaGF0X2lkGAEgASgDEkQKDW9ubGluZV9zdGF0dXMYAiABKA4yLS5jaGF0cy5QdXRDaGF0T25saW5lU3RhdHVzUmVxdWVzdC5PbmxpbmVTdGF0ZSIzCgtPbmxpbmVTdGF0ZRILCgdVTktOT1dOEAASCgoGT05MSU5FEAESCwoHT0ZGTElORRACIh0KG1B1dENoYXRPbmxpbmVTdGF0dXNSZXNwb25zZSJZChxQdWxsQ2hhdE1lbWJlclNldHRpbmdSZXF1ZXN0EigKCXRlbmFudF9pZBgBIAIoA0IVisMaEXNwbGl0LHR5cGU9dGVuYW50Eg8KB2NoYXRfaWQYAiABKAMiuAEKHVB1bGxDaGF0TWVtYmVyU2V0dGluZ1Jlc3BvbnNlEhMKC2FsbG93X2FwcGx5GAEgAigIEhoKEm1lbWJlcl91cHBlcl9saW1pdBgCIAIoBRIiChptZW1iZXJfdXBwZXJfbGltaXRfb3B0aW9ucxgDIAMoBRIfChdjaGF0X21lbWJlcl91cHBlcl9saW1pdBgEIAEoBRIhChl0aHJlYWRfbWVtYmVyX3VwcGVyX2xpbWl0GAUgAigFIu0BChRDaGF0VG9wTm90aWNlQ29udGVudBI1CgR0eXBlGAEgAigOMicuY2hhdHMuQ2hhdFRvcE5vdGljZUNvbnRlbnQuQ29udGVudFR5cGUSEgoKbWVzc2FnZV9pZBgCIAEoAxIxCgxhbm5vdW5jZW1lbnQYAyABKAsyGy5lbnRpdGllcy5DaGF0LkFubm91bmNlbWVudBIRCglzZW5kZXJfaWQYBCABKAMiRAoLQ29udGVudFR5cGUSEAoMVU5LTk9XTl9UWVBFEAASDAoITVNHX1RZUEUQARIVChFBTk5PVU5DRU1FTlRfVFlQRRACIoQBCg1DaGF0VG9wTm90aWNlEiwKB2NvbnRlbnQYASABKAsyGy5jaGF0cy5DaGF0VG9wTm90aWNlQ29udGVudBIWCg5ub3RpY2VfdmVyc2lvbhgCIAIoBRIVCgZjbG9zZWQYAyABKAg6BWZhbHNlEhYKC29wZXJhdG9yX2lkGAQgASgDOgEwIq0CChlQYXRjaENoYXRUb3BOb3RpY2VSZXF1ZXN0EicKB2NoYXRfaWQYASACKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSOQoEdHlwZRgCIAIoDjIrLmNoYXRzLlBhdGNoQ2hhdFRvcE5vdGljZVJlcXVlc3QuQWN0aW9uVHlwZRISCgptZXNzYWdlX2lkGAMgASgDEhYKDm5vdGljZV92ZXJzaW9uGAQgAigFEiMKFGlzX21lc3NhZ2Vfb3BlcmF0aW9uGAUgASgIOgVmYWxzZRIRCglzZW5kZXJfaWQYBiABKAMiSAoKQWN0aW9uVHlwZRILCgdVTktOT1dOEAASCwoHVE9QX01TRxABEhQKEFRPUF9BTk5PVU5DRU1FTlQQAhIKCgZSRU1PVkUQAyJGChpQYXRjaENoYXRUb3BOb3RpY2VSZXNwb25zZRIoCgp0b3Bfbm90aWNlGAEgAigLMhQuY2hhdHMuQ2hhdFRvcE5vdGljZSJNCh1QdWxsQ2hhdFRvcE5vdGljZUJ5SWRzUmVxdWVzdBIsCgxjaGF0X2lkX2xpc3QYASADKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwiqwEKGVB1bGxDaGF0VG9wTm90aWNlUmVzcG9uc2USRQoLdG9wX25vdGljZXMYASADKAsyMC5jaGF0cy5QdWxsQ2hhdFRvcE5vdGljZVJlc3BvbnNlLlRvcE5vdGljZXNFbnRyeRpHCg9Ub3BOb3RpY2VzRW50cnkSCwoDa2V5GAEgASgDEiMKBXZhbHVlGAIgASgLMhQuY2hhdHMuQ2hhdFRvcE5vdGljZToCOAEigQEKGUNsb3NlQ2hhdFRvcE5vdGljZVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIWCg5ub3RpY2VfdmVyc2lvbhgCIAIoBRIjChRpc19tZXNzYWdlX29wZXJhdGlvbhgDIAEoCDoFZmFsc2UiOwoaQ2xvc2VDaGF0VG9wTm90aWNlUmVzcG9uc2USHQoVY2xvc2VkX25vdGljZV92ZXJzaW9uGAEgASgFIk4KEVB1c2hDaGF0VG9wTm90aWNlEg8KB2NoYXRfaWQYASACKAMSKAoKdG9wX25vdGljZRgCIAIoCzIULmNoYXRzLkNoYXRUb3BOb3RpY2UiWQoeUHVzaENoYXRUb3BOb3RpY2VQZXJzb25hbFN0YXRlEg8KB2NoYXRfaWQYASACKAMSFgoObm90aWNlX3ZlcnNpb24YAiACKAUSDgoGY2xvc2VkGAMgAigIIpkBCilQdWxsQ2hhbmdlR3JvdXBNZW1iZXJBdXRob3JpemF0aW9uUmVxdWVzdBIqCg1waWNrX2VudGl0aWVzGAEgAygLMhMuY2hhdHMuUGlja0VudGl0aWVzEioKCWNoYXRfbW9kZRgCIAEoDjIXLmVudGl0aWVzLkNoYXQuQ2hhdE1vZGUSFAoMZnJvbV9jaGF0X2lkGAMgASgDIokBCipQdWxsQ2hhbmdlR3JvdXBNZW1iZXJBdXRob3JpemF0aW9uUmVzcG9uc2USDAoEcGFzcxgBIAEoCBIXCg9tc2dfZGVzY3JpcHRpb24YAiABKAkSGwoTbmVlZF9hcHBseV9mb3JfaW5jchgDIAEoCBIXCg9pc19jcm9zc190ZW5hbnQYBCABKAgiSQoUQW5hbHl6ZVNoZWV0RXJyb3JSb3cSDAoEbGluZRgBIAEoBRIQCghyb3dfaW5mbxgCIAEoCRIRCgllcnJvcl9tc2cYAyABKAkiXgobQW5hbHl6ZUNoYXR0ZXJzU2hlZXRSZXF1ZXN0EhEKCXNoZWV0X3VybBgBIAEoCRIbChNuZWVkX2Vycm9yX3Jvd3NfdXJsGAIgASgIEg8KB2NoYXRfaWQYAyABKAMitQIKHEFuYWx5emVDaGF0dGVyc1NoZWV0UmVzcG9uc2USTgoGc3RhdHVzGAEgASgOMj4uY2hhdHMuQW5hbHl6ZUNoYXR0ZXJzU2hlZXRSZXNwb25zZS5BbmFseXplQ2hhdHRlcnNTaGVldFN0YXR1cxIQCgh1c2VyX2lkcxgCIAMoAxIvCgplcnJvcl9yb3dzGAMgAygLMhsuY2hhdHMuQW5hbHl6ZVNoZWV0RXJyb3JSb3cSHQoVZXJyb3Jfcm93c19kZXRhaWxfdXJsGAQgASgJEhgKEGVycm9yX3Jvd3NfY291bnQYBSABKAUiSQoaQW5hbHl6ZUNoYXR0ZXJzU2hlZXRTdGF0dXMSCwoHVU5LTk9XThAAEgsKB1NVQ0NFU1MQARIRCg1IQVNfRVJST1JfUk9XEAIiNgojQ3JlYXRlSW1wb3J0Q2hhdENoYXR0ZXJTaGVldFJlcXVlc3QSDwoHY2hhdF9pZBgBIAIoAyI5CiRDcmVhdGVJbXBvcnRDaGF0Q2hhdHRlclNoZWV0UmVzcG9uc2USEQoJc2hlZXRfdXJsGAEgASgJIssBCh5QYXRjaENoYXR0ZXJFeHRyYVN0YXRlc1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBJMCgxwYXRjaF9zdGF0ZXMYAiADKAsyNi5jaGF0cy5QYXRjaENoYXR0ZXJFeHRyYVN0YXRlc1JlcXVlc3QuUGF0Y2hTdGF0ZXNFbnRyeRoyChBQYXRjaFN0YXRlc0VudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiugEKH1BhdGNoQ2hhdHRlckV4dHJhU3RhdGVzUmVzcG9uc2USXAoUY2hhdHRlcl9leHRyYV9zdGF0ZXMYASADKAsyPi5jaGF0cy5QYXRjaENoYXR0ZXJFeHRyYVN0YXRlc1Jlc3BvbnNlLkNoYXR0ZXJFeHRyYVN0YXRlc0VudHJ5GjkKF0NoYXR0ZXJFeHRyYVN0YXRlc0VudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi0QIKFVB1bGxDaGF0U3dpdGNoUmVxdWVzdBInCgdjaGF0X2lkGAEgAigDQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEjwKC2FjdGlvbl90eXBlGAIgAygOMicuY2hhdHMuUHVsbENoYXRTd2l0Y2hSZXF1ZXN0LkFjdGlvblR5cGUi0AEKCkFjdGlvblR5cGUSEwoPUkVTVFJJQ1RFRF9NT0RFEAESFwoTUEVSU09OQUxfQ0hBVF9USEVNRRACEhQKEEdST1VQX0NIQVRfVEhFTUUQAxIYChRPTl9USU1FX0RFTF9NU0dfTU9ERRAEEiMKH1JFU1RSSUNURURfTU9ERV9XSElURV9MSVNUX01PREUQBRIfChtFWFBPUlRfQ0hBVF9DSEFUVEVSX0JJVEFCTEUQBhIeChpVU0VSX0NPVU5UX1ZJU0lCTEVfU0VUVElORxAHIqEBChZQdWxsQ2hhdFN3aXRjaFJlc3BvbnNlEkAKCmF1dGhfaW5mb3MYASADKAsyLC5jaGF0cy5QdWxsQ2hhdFN3aXRjaFJlc3BvbnNlLkF1dGhJbmZvc0VudHJ5GkUKDkF1dGhJbmZvc0VudHJ5EgsKA2tleRgBIAEoBRIiCgV2YWx1ZRgCIAEoCzITLmNoYXRzLlN3aXRjaFJlc3VsdDoCOAEiIAoMU3dpdGNoUmVzdWx0EhAKCGlzX2FsbG93GAEgASgIIk8KE1B1bGxDaGF0TWVudVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIPCgd2ZXJzaW9uGAIgASgDInQKFFB1bGxDaGF0TWVudVJlc3BvbnNlEiUKCWNoYXRfbWVudRgBIAEoCzISLmVudGl0aWVzLkNoYXRNZW51Eg8KB3ZlcnNpb24YAiABKAMSEwoLZXhwaXJlX3RpbWUYAyABKAMSDwoHY2hhdF9pZBgEIAEoAyJnChVVcGRhdGVDaGF0TWVudVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIlCgljaGF0X21lbnUYAiABKAsyEi5lbnRpdGllcy5DaGF0TWVudSJ2ChZVcGRhdGVDaGF0TWVudVJlc3BvbnNlEiUKCWNoYXRfbWVudRgBIAEoCzISLmVudGl0aWVzLkNoYXRNZW51Eg8KB3ZlcnNpb24YAiABKAMSEwoLZXhwaXJlX3RpbWUYAyABKAMSDwoHY2hhdF9pZBgEIAEoAyJsCgxQdXNoQ2hhdE1lbnUSDwoHY2hhdF9pZBgBIAIoAxIlCgljaGF0X21lbnUYAiABKAsyEi5lbnRpdGllcy5DaGF0TWVudRIPCgd2ZXJzaW9uGAMgASgDEhMKC2V4cGlyZV90aW1lGAQgASgDIlMKF1RyaWdnZXJNZW51RXZlbnRSZXF1ZXN0EicKB2NoYXRfaWQYASACKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSDwoHbWVudV9pZBgCIAIoAyIsChhUcmlnZ2VyTWVudUV2ZW50UmVzcG9uc2USEAoIc2hvd19tc2cYASABKAkiUQoVUHVsbENoYXRXaWRnZXRSZXF1ZXN0EicKB2NoYXRfaWQYASACKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSDwoHdmVyc2lvbhgCIAEoAyJqChZQdWxsQ2hhdFdpZGdldFJlc3BvbnNlEioKDGNoYXRfd2lkZ2V0cxgBIAMoCzIULmVudGl0aWVzLkNoYXRXaWRnZXQSDwoHdmVyc2lvbhgCIAEoAxITCgtleHBpcmVfdGltZRgDIAEoAyJXChhEZWxldGVDaGF0V2lkZ2V0c1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBISCgp3aWRnZXRfaWRzGAIgAygDIm0KGURlbGV0ZUNoYXRXaWRnZXRzUmVzcG9uc2USKgoMY2hhdF93aWRnZXRzGAEgAygLMhQuZW50aXRpZXMuQ2hhdFdpZGdldBIPCgd2ZXJzaW9uGAIgASgDEhMKC2V4cGlyZV90aW1lGAMgASgDIlgKGVJlb3JkZXJDaGF0V2lkZ2V0c1JlcXVlc3QSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBISCgp3aWRnZXRfaWRzGAIgAygDIm4KGlJlb3JkZXJDaGF0V2lkZ2V0c1Jlc3BvbnNlEioKDGNoYXRfd2lkZ2V0cxgBIAMoCzIULmVudGl0aWVzLkNoYXRXaWRnZXQSDwoHdmVyc2lvbhgCIAEoAxITCgtleHBpcmVfdGltZRgDIAEoAyI9Cg9QdXNoQ2hhdFdpZGdldHMSKgoMY2hhdF93aWRnZXRzGAIgAygLMhQuZW50aXRpZXMuQ2hhdFdpZGdldCIsChhQdXNoQ2hhdHNPdXRkYXRlZFJlcXVlc3QSEAoIY2hhdF9pZHMYASADKAMigQEKG1B1bGxDaGF0VGFnRGF0YUJ5SWRzUmVxdWVzdBIsCgxjaGF0X2lkX2xpc3QYASADKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSNAoOcmVxdWVzdF9maWVsZHMYAiADKA4yHC5lbnRpdGllcy5SZXF1ZXN0VGFnVHlwZUVudW0ivAEKHFB1bGxDaGF0VGFnRGF0YUJ5SWRzUmVzcG9uc2USUgoRY2hhdF90YWdfZGF0YV9tYXAYASADKAsyNy5jaGF0cy5QdWxsQ2hhdFRhZ0RhdGFCeUlkc1Jlc3BvbnNlLkNoYXRUYWdEYXRhTWFwRW50cnkaSAoTQ2hhdFRhZ0RhdGFNYXBFbnRyeRILCgNrZXkYASABKAMSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5UYWdEYXRhOgI4ASKaAQoXUHVzaENoYXRCaXpTdGF0ZVVwZGF0ZWQSDwoHY2hhdF9pZBgBIAEoAxInCghiaXpfdHlwZRgCIAEoDjIVLmVudGl0aWVzLkNoYXRCaXpUeXBlEg8KB3BheWxvYWQYAyABKAwSFwoPY3VycmVudF92ZXJzaW9uGAQgASgDEhsKE2V4cGlyZV90aW1lc3RhbXBfbXMYBSABKAMiRwoTTXVsdGlDaGF0VGhlbWVTY29wZRIwCgt0aGVtX3Njb3BlcxgBIAMoDjIVLmNoYXRzLkNoYXRUaGVtZVNjb3BlQgSKtRgAIqUBChJDaGF0VGhlbWVXaXRoU2NvcGUSJwoKY2hhdF90aGVtZRgBIAEoCzITLmVudGl0aWVzLkNoYXRUaGVtZRIqCgt0aGVtZV9zY29wZRgCIAEoDjIVLmNoYXRzLkNoYXRUaGVtZVNjb3BlEg8KB3ZlcnNpb24YAyABKAMSDAoEaGlkZRgEIAEoCBIbChNleHBpcmVfdGltZXN0YW1wX21zGAUgASgDIkQKDUNoYXRUaGVtZUxpc3QSMwoQdGhlbV93aXRoX3Njb3BlcxgBIAMoCzIZLmNoYXRzLkNoYXRUaGVtZVdpdGhTY29wZSLjAQoZUHVsbENoYXRUaGVtZUJ5SWRzUmVxdWVzdBJvChVtdWx0aV90aGVtZV9zY29wZV9tYXAYASADKAsyOC5jaGF0cy5QdWxsQ2hhdFRoZW1lQnlJZHNSZXF1ZXN0Lk11bHRpVGhlbWVTY29wZU1hcEVudHJ5QhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsGlUKF011bHRpVGhlbWVTY29wZU1hcEVudHJ5EgsKA2tleRgBIAEoAxIpCgV2YWx1ZRgCIAEoCzIaLmNoYXRzLk11bHRpQ2hhdFRoZW1lU2NvcGU6AjgBIrQBChpQdWxsQ2hhdFRoZW1lQnlJZHNSZXNwb25zZRJLCg5jaGF0X3RoZW1lX21hcBgBIAMoCzIzLmNoYXRzLlB1bGxDaGF0VGhlbWVCeUlkc1Jlc3BvbnNlLkNoYXRUaGVtZU1hcEVudHJ5GkkKEUNoYXRUaGVtZU1hcEVudHJ5EgsKA2tleRgBIAEoAxIjCgV2YWx1ZRgCIAEoCzIULmNoYXRzLkNoYXRUaGVtZUxpc3Q6AjgBIroBChlQYXRjaENoYXRUaGVtZUJ5SWRSZXF1ZXN0EicKB2NoYXRfaWQYASABKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSEAoIdGhlbWVfaWQYAiABKAMSJwoKY2hhdF90aGVtZRgDIAEoCzITLmVudGl0aWVzLkNoYXRUaGVtZRIqCgt0aGVtZV9zY29wZRgEIAEoDjIVLmNoYXRzLkNoYXRUaGVtZVNjb3BlEg0KBXJlc2V0GAUgASgIIlEKGlBhdGNoQ2hhdFRoZW1lQnlJZFJlc3BvbnNlEjMKEHRoZW1lX3dpdGhfc2NvcGUYASABKAsyGS5jaGF0cy5DaGF0VGhlbWVXaXRoU2NvcGUiTAoOUHVzaENoYXRUaGVtZXMSDwoHY2hhdF9pZBgBIAEoAxIpCgtjaGF0X3RoZW1lcxgCIAEoCzIULmNoYXRzLkNoYXRUaGVtZUxpc3QiawoeUHVsbFN5c3RlbUNoYXRUaGVtZUxpc3RSZXF1ZXN0EioKC3RoZW1lX3Njb3BlGAEgASgOMhUuY2hhdHMuQ2hhdFRoZW1lU2NvcGUSDgoGb2Zmc2V0GAIgASgDEg0KBWxpbWl0GAMgASgDIkwKD1N5c3RlbUNoYXRUaGVtZRInCgpjaGF0X3RoZW1lGAEgASgLMhMuZW50aXRpZXMuQ2hhdFRoZW1lEhAKCHNlcXVlbmNlGAIgASgDIo0BCh9QdWxsU3lzdGVtQ2hhdFRoZW1lTGlzdFJlc3BvbnNlEjIKEnN5c3RlbV9jaGF0X3RoZW1lcxgBIAMoCzIWLmNoYXRzLlN5c3RlbUNoYXRUaGVtZRIPCgd2ZXJzaW9uGAIgASgDEhMKC25leHRfY3Vyc29yGAMgASgDEhAKCGhhc19tb3JlGAQgASgIIkoKHlB1bGxDcnlwdG9DaGF0SW5mb0J5SWRzUmVxdWVzdBIoCghjaGF0X2lkcxgBIAMoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbCLFAQofUHVsbENyeXB0b0NoYXRJbmZvQnlJZHNSZXNwb25zZRJSCg9jcnlwdG9faW5mb19tYXAYASADKAsyOS5jaGF0cy5QdWxsQ3J5cHRvQ2hhdEluZm9CeUlkc1Jlc3BvbnNlLkNyeXB0b0luZm9NYXBFbnRyeRpOChJDcnlwdG9JbmZvTWFwRW50cnkSCwoDa2V5GAEgASgDEicKBXZhbHVlGAIgASgLMhguZW50aXRpZXMuQ3J5cHRvQ2hhdEluZm86AjgBIlYKK1B1bGxFeGl0RGVwYXJ0bWVudEdyb3VwQXV0aG9yaXphdGlvblJlcXVlc3QSJwoHY2hhdF9pZBgBIAEoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbCIuCixQdWxsRXhpdERlcGFydG1lbnRHcm91cEF1dGhvcml6YXRpb25SZXNwb25zZSJjChlQdWxsQ2hhdENoYXR0ZXJzVjJSZXF1ZXN0EicKB2NoYXRfaWQYASABKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSDgoGY3Vyc29yGAIgASgDEg0KBWxpbWl0GAMgASgFIrcEChpQdWxsQ2hhdENoYXR0ZXJzVjJSZXNwb25zZRJYChVjaGF0dGVyX2pvaW5fdGltZV9zZWMYASADKAsyOS5jaGF0cy5QdWxsQ2hhdENoYXR0ZXJzVjJSZXNwb25zZS5DaGF0dGVySm9pblRpbWVTZWNFbnRyeRJKCg1jaGF0dGVyX21ldGFzGAIgAygLMjMuY2hhdHMuUHVsbENoYXRDaGF0dGVyc1YyUmVzcG9uc2UuQ2hhdHRlck1ldGFzRW50cnkSTgoPY2hhdHRlcl93ZWlnaHRzGAMgAygLMjUuY2hhdHMuUHVsbENoYXRDaGF0dGVyc1YyUmVzcG9uc2UuQ2hhdHRlcldlaWdodHNFbnRyeRITCgtuZXh0X2N1cnNvchgEIAEoAxIcChRjaGF0X2NoYXR0ZXJfdmVyc2lvbhgGIAEoAxIbChNleHBpcmVfZHVyYXRpb25fc2VjGAcgASgDEhMKC3N5bmNfY3Vyc29yGAggASgDGjkKF0NoYXR0ZXJKb2luVGltZVNlY0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoAzoCOAEaTAoRQ2hhdHRlck1ldGFzRW50cnkSCwoDa2V5GAEgASgDEiYKBXZhbHVlGAIgASgLMhcuY2hhdHMuR3JvdXBDaGF0dGVyTWV0YToCOAEaNQoTQ2hhdHRlcldlaWdodHNFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAM6AjgBIlcKF1N5bmNDaGF0Q2hhdHRlcnNSZXF1ZXN0EicKB2NoYXRfaWQYASABKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSEwoLc3luY19jdXJzb3IYAiABKAMi+gUKGFN5bmNDaGF0Q2hhdHRlcnNSZXNwb25zZRJWChVjaGF0dGVyX2pvaW5fdGltZV9zZWMYASADKAsyNy5jaGF0cy5TeW5jQ2hhdENoYXR0ZXJzUmVzcG9uc2UuQ2hhdHRlckpvaW5UaW1lU2VjRW50cnkSSAoNY2hhdHRlcl9tZXRhcxgCIAMoCzIxLmNoYXRzLlN5bmNDaGF0Q2hhdHRlcnNSZXNwb25zZS5DaGF0dGVyTWV0YXNFbnRyeRJMCg9jaGF0dGVyX3dlaWdodHMYAyADKAsyMy5jaGF0cy5TeW5jQ2hhdENoYXR0ZXJzUmVzcG9uc2UuQ2hhdHRlcldlaWdodHNFbnRyeRJWChVjaGF0dGVyX3F1aXRfdGltZV9zZWMYBCADKAsyNy5jaGF0cy5TeW5jQ2hhdENoYXR0ZXJzUmVzcG9uc2UuQ2hhdHRlclF1aXRUaW1lU2VjRW50cnkSEwoLc3luY19jdXJzb3IYBSABKAMSGAoQaXNfZnVsbF9jaGF0dGVycxgGIAEoCBIfChduZWVkX3B1bGxfZnVsbF9jaGF0dGVycxgHIAEoCBIQCghoYXNfbW9yZRgIIAEoCBIcChRjaGF0X2NoYXR0ZXJfdmVyc2lvbhgJIAEoAxIbChNleHBpcmVfZHVyYXRpb25fc2VjGAogASgDGjkKF0NoYXR0ZXJKb2luVGltZVNlY0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoAzoCOAEaTAoRQ2hhdHRlck1ldGFzRW50cnkSCwoDa2V5GAEgASgDEiYKBXZhbHVlGAIgASgLMhcuY2hhdHMuR3JvdXBDaGF0dGVyTWV0YToCOAEaNQoTQ2hhdHRlcldlaWdodHNFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAM6AjgBGjkKF0NoYXR0ZXJRdWl0VGltZVNlY0VudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoAzoCOAEi7wEKJFB1bGxEeW5hbWljUnVsZU9wdGlvbnNCeUZpZWxkUmVxdWVzdBIPCgdjaGF0X2lkGAEgAigJEk0KBWZpZWxkGAIgAigOMj4uY2hhdHMuUHVsbER5bmFtaWNSdWxlT3B0aW9uc0J5RmllbGRSZXF1ZXN0LlJ1bGVTZWxlY3RPcHRGaWVsZBIOCgZjdXJzb3IYAyABKAkSDQoFbGltaXQYBCABKAkiSAoSUnVsZVNlbGVjdE9wdEZpZWxkEhAKDFVOS05PV05fUlVMRRAAEg4KCkRFUEFSVE1FTlQQARIQCgxFbXBsb3llZVR5cGUQAiJ4CiVQdWxsRHluYW1pY1J1bGVPcHRpb25zQnlGaWVsZFJlc3BvbnNlEigKB3NldHRpbmcYASADKAsyFy5lbnRpdGllcy5SdWxlU2VsZWN0T3B0EhMKC25leHRfY3Vyc29yGAIgASgJEhAKCGhhc19tb3JlGAMgASgIInQKHEFkZENoYXRSZWZEeW5hbWljUnVsZVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIrCgVydWxlcxgCIAMoCzIcLmVudGl0aWVzLkNoYXRSZWZEeW5hbWljUnVsZSIfCh1BZGRDaGF0UmVmRHluYW1pY1J1bGVSZXNwb25zZSJYChxEZWxDaGF0UmVmRHluYW1pY1J1bGVSZXF1ZXN0EicKB2NoYXRfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSDwoHZGVsX2lkcxgCIAMoCSIfCh1EZWxDaGF0UmVmRHluYW1pY1J1bGVSZXNwb25zZSJICh1QdWxsQ2hhdFJlZkR5bmFtaWNSdWxlUmVxdWVzdBInCgdjaGF0X2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsIvsBCh5QdWxsQ2hhdFJlZkR5bmFtaWNSdWxlUmVzcG9uc2USKwoFcnVsZXMYASADKAsyHC5lbnRpdGllcy5DaGF0UmVmRHluYW1pY1J1bGUSWQoTZW1wbG95ZWVfdHlwZV9pbmZvcxgCIAMoCzI8LmNoYXRzLlB1bGxDaGF0UmVmRHluYW1pY1J1bGVSZXNwb25zZS5FbXBsb3llZVR5cGVJbmZvc0VudHJ5GlEKFkVtcGxveWVlVHlwZUluZm9zRW50cnkSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgLMhcuZW50aXRpZXMuUnVsZVNlbGVjdE9wdDoCOAEiSgofRXhwb3J0Q2hhdENoYXR0ZXJCaXRhYmxlUmVxdWVzdBInCgdjaGF0X2lkGAEgASgDQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsIiIKIEV4cG9ydENoYXRDaGF0dGVyQml0YWJsZVJlc3BvbnNlIkUKGlB1bGxDaGF0TGlua2VkUGFnZXNSZXF1ZXN0EicKB2NoYXRfaWQYASABKANCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwiUAobUHVsbENoYXRMaW5rZWRQYWdlc1Jlc3BvbnNlEjEKDGxpbmtlZF9wYWdlcxgBIAMoCzIbLmNoYXRzLkNoYXRMaW5rZWRQYWdlRGV0YWlsIlIKFENoYXRMaW5rZWRQYWdlRGV0YWlsEjoKFnVybF9wcmV2aWV3X2hhbmdfcG9pbnQYASABKAsyGi5lbnRpdGllcy5QcmV2aWV3SGFuZ1BvaW50IloKHERlbGV0ZUNoYXRMaW5rZWRQYWdlc1JlcXVlc3QSJwoHY2hhdF9pZBgBIAEoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIRCglwYWdlX3VybHMYAiADKAkiHwodRGVsZXRlQ2hhdExpbmtlZFBhZ2VzUmVzcG9uc2UiYgoaR2V0Q2hhdE15QUlJbml0SW5mb1JlcXVlc3QSMAoQc2NlbmFyaW9fY2hhdF9pZBgBIAEoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBISCgpuZWVkX3JlbmV3GAIgASgIIkcKG0dldENoYXRNeUFJSW5pdEluZm9SZXNwb25zZRIXCg9haV9jaGF0X21vZGVfaWQYASABKAMSDwoHY2hhdF9pZBgCIAEoAyImCiRQdWxsRGVmYXVsdEF2YXRhclN0eWxlU2V0dGluZ1JlcXVlc3QiZAolUHVsbERlZmF1bHRBdmF0YXJTdHlsZVNldHRpbmdSZXNwb25zZRI7ChRhdmF0YXJfc3R5bGVfc2V0dGluZxgBIAEoCzIdLmNoYXRzLlB1bGxBdmF0YXJTdHlsZVNldHRpbmcimwEKFlB1bGxBdmF0YXJTdHlsZVNldHRpbmcSRgoMYXZhdGFyX3N0eWxlGAEgASgOMjAuY2hhdHMuUHVsbEF2YXRhclN0eWxlU2V0dGluZy5EZWZhdWx0QXZhdGFyU3R5bGUiOQoSRGVmYXVsdEF2YXRhclN0eWxlEgwKCFVOX0tOT1dOEAASCAoEV09SRBABEgsKB0NPTExBR0UQAiJ1Ch5QYXRjaENoYXRSZWZEeW5hbWljUnVsZVJlcXVlc3QSJwoHY2hhdF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIqCgRydWxlGAIgASgLMhwuZW50aXRpZXMuQ2hhdFJlZkR5bmFtaWNSdWxlIiEKH1BhdGNoQ2hhdFJlZkR5bmFtaWNSdWxlUmVzcG9uc2UiYQofUmVwb3J0VXNlckVudGVyQ2hhdEV2ZW50UmVxdWVzdBInCgdjaGF0X2lkGAEgAigDQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhUKDWVudGVyX3RpbWVfbXMYAiABKAMiIgogUmVwb3J0VXNlckVudGVyQ2hhdEV2ZW50UmVzcG9uc2UiVgoYVHJhbnNsYXRlQ2hhdE5hbWVSZXF1ZXN0EjoKEVRyYW5zbGF0ZUNvbnRleHRzGAEgAygLMh8uY2hhdHMuQ2hhdE5hbWVUcmFuc2xhdGVDb250ZXh0ItIBChhDaGF0TmFtZVRyYW5zbGF0ZUNvbnRleHQSJwoHY2hhdF9pZBgBIAIoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIlCh1pc19tYW51YWxfdHJhbnNsYXRlX2NoYXRfbmFtZRgCIAEoCBIXCg90YXJnZXRfbGFuZ3VhZ2UYAyABKAkSKwoMZGlzcGxheV9ydWxlGAQgASgOMhUuZW50aXRpZXMuRGlzcGxheVJ1bGUSIAoRb3ZlcnJpZGVfbGFuZ3VhZ2UYBSABKAg6BWZhbHNlIokBChlUcmFuc2xhdGVDaGF0TmFtZVJlc3BvbnNlEj8KGWNoYXRfbmFtZV90cmFuc2xhdGVfaW5mb3MYASADKAsyHC5jaGF0cy5DaGF0TmFtZVRyYW5zbGF0ZUluZm8SKwojaXNfY2xvc2VfZ2xvYmFsX2NoYXRfbmFtZV90cmFuc2xhdGUYAiABKAgi4gEKFUNoYXROYW1lVHJhbnNsYXRlSW5mbxIPCgdjaGF0X2lkGAEgAigDEigKCGkxOG5faW5mGAIgASgLMhYuZW50aXRpZXMuQ2hhdC5JMThuSW5mEiUKHWlzX21hbnVhbF90cmFuc2xhdGVfY2hhdF9uYW1lGAMgASgIEhcKD3RhcmdldF9sYW5ndWFnZRgEIAEoCRIrCgxkaXNwbGF5X3J1bGUYBSABKA4yFS5lbnRpdGllcy5EaXNwbGF5UnVsZRIQCghlcnJfY29kZRhjIAEoBRIPCgdlcnJfbXNnGGQgASgJIkoKGlB1bGxDaGF0T3BlbklEQnlJZHNSZXF1ZXN0EiwKDGNoYXRfaWRfbGlzdBgBIAMoA0IWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbCKnAQobUHVsbENoYXRPcGVuSURCeUlkc1Jlc3BvbnNlElEKEWNoYXRfb3Blbl9pZF9pbmZvGAEgAygLMjYuY2hhdHMuUHVsbENoYXRPcGVuSURCeUlkc1Jlc3BvbnNlLkNoYXRPcGVuSWRJbmZvRW50cnkaNQoTQ2hhdE9wZW5JZEluZm9FbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAk6AjgBKjUKCFBpY2tUeXBlEgsKB1VOS05PV04QABIICgRVU0VSEAESCAoEQ0hBVBACEggKBERFUFQQAypSCgtBcHBseVN0YXR1cxIYChRBUFBMWV9TVEFUVVNfVU5LTk9XThAAEgwKCEFQUFJPVkVEEAESCwoHUkVGVVNFRBACEg4KClBST0NFU1NJTkcQAyr6AQoJQXBwbHlXYXlzEhYKEkFQUExZX1dBWVNfVU5LTk9XThAAEg0KCVZJQV9TSEFSRRABEhIKDlZJQV9JTlZJVEFUSU9OEAISDwoLVklBX1FSX0NPREUQAxIOCgpWSUFfU0VBUkNIEAQSHAoYVklBX0RFUEFSVE1FTlRfU1RSVUNUVVJFEAUSDAoIVklBX0xJTksQBhIWChJWSUFfVEVBTV9PUEVOX0NIQVQQBxIQCgxWSUFfQ0FMRU5EQVIQCBIhCh1WSUFfVEVBTV9QUklWQVRFX0RJU0NPVkVSQUJMRRAJEhgKFFZJQV9DSEFUX0xJTktFRF9QQUdFEAoqXQoOQ2hhdFRoZW1lU2NvcGUSHAoYVU5LTk9XTl9DSEFUX1RIRU1FX1Njb3BlEAASFwoTUEVSU09OQUxfQ0hBVF9USEVNRRABEhQKEEdST1VQX0NIQVRfVEhFTUUQAjL0BgoLQ2hhdEdyZWV0ZXISTAoJZ2V0UmVjZW50Eh0uY2hhdHMuUHVsbFJlY2VudENoYXRzUmVxdWVzdBoeLmNoYXRzLlB1bGxSZWNlbnRDaGF0c1Jlc3BvbnNlIgASTQoIZ2V0VXNlcnMSHi5jaGF0cy5QdWxsQ2hhdENoYXR0ZXJzUmVxdWVzdBofLmNoYXRzLlB1bGxDaGF0Q2hhdHRlcnNSZXNwb25zZSIAEjkKBmNyZWF0ZRIVLmNoYXRzLlB1dENoYXRSZXF1ZXN0GhYuY2hhdHMuUHV0Q2hhdFJlc3BvbnNlIgASSQoOY3JlYXRlUDJQQ2hhdHMSGS5jaGF0cy5QdXRQMlBDaGF0c1JlcXVlc3QaGi5jaGF0cy5QdXRQMlBDaGF0c1Jlc3BvbnNlIgASSQoIYWRkVXNlcnMSHC5jaGF0cy5QdXRDaGF0Q2hhdHRlclJlcXVlc3QaHS5jaGF0cy5QdXRDaGF0Q2hhdHRlclJlc3BvbnNlIgASUgoLZGVsZXRlVXNlcnMSHy5jaGF0cy5EZWxldGVDaGF0Q2hhdHRlclJlcXVlc3QaIC5jaGF0cy5EZWxldGVDaGF0Q2hhdHRlclJlc3BvbnNlIgASSQoObW9kaWZ5Q2hhdE5hbWUSGS5jaGF0cy5QdXRDaGF0TmFtZVJlcXVlc3QaGi5jaGF0cy5QdXRDaGF0TmFtZVJlc3BvbnNlIgASUwoOc2V0Q2hhdFNldHRpbmcSHi5jaGF0cy5QYXRjaENoYXRTZXR0aW5nUmVxdWVzdBofLmNoYXRzLlBhdGNoQ2hhdFNldHRpbmdSZXNwb25zZSIAElQKD2dldENoYXRTZXR0aW5ncxIeLmNoYXRzLlB1bGxDaGF0U2V0dGluZ3NSZXF1ZXN0Gh8uY2hhdHMuUHVsbENoYXRTZXR0aW5nc1Jlc3BvbnNlIgASXQoSZ2V0QWxsQ2hhdFNldHRpbmdzEiEuY2hhdHMuUHVsbEFsbENoYXRTZXR0aW5nc1JlcXVlc3QaIi5jaGF0cy5QdWxsQWxsQ2hhdFNldHRpbmdzUmVzcG9uc2UiABJOCg1nZXRDaGF0c0J5SWRzEhwuY2hhdHMuUHVsbENoYXRzQnlJZHNSZXF1ZXN0Gh0uY2hhdHMuUHVsbENoYXRzQnlJZHNSZXNwb25zZSIAQkkKFmNvbS5zcy5hbmRyb2lkLmxhcmsucGJIA1otY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL2NoYXRz",[J,Fl,y,he,be,re]);var pe=ie(Se,13);var $l=ie(Se,16);var Sl=ie(Se,52),ot=Xo(Se,52,0),ze=Go(ot),eV=ie(Se,53);var lV=ie(Se,215);var VV=ie(Se,229);import{enumDesc as Fa,fileDesc as Co,messageDesc as at,tsEnum as Sa}from"@bufbuild/protobuf/codegenv2";import{enumDesc as zA,fileDesc as Wo,messageDesc as wA,tsEnum as LA}from"@bufbuild/protobuf/codegenv2";var Xl=Wo("Cg1zZWN0aW9uLnByb3RvEgdzZWN0aW9uIpMBCg1TZWN0aW9uSGVhZGVyEg0KBXRpdGxlGAEgASgJEhIKCmF2YXRhcl9rZXkYAiABKAkSEgoKYXZhdGFyX3VybBgDIAEoCRIfCgZhdmF0YXIYBCABKAsyDy5lbnRpdGllcy5JbWFnZRIqCg90aXRsZV9tb2RpZmllcnMYBSADKAsyES5zZWN0aW9uLk1vZGlmaWVyIlIKDVNlY3Rpb25Gb290ZXISEgoKYXZhdGFyX2tleRgBIAEoCRIMCgR0ZXh0GAIgASgJEh8KBmFjdGlvbhgDIAEoCzIPLnNlY3Rpb24uQWN0aW9uIt0BCgZBY3Rpb24SKAoEdHlwZRgBIAEoDjIaLnNlY3Rpb24uQWN0aW9uLkFjdGlvblR5cGUSCwoDdXJpGAIgASgJEisKBnBhcmFtcxgDIAMoCzIbLnNlY3Rpb24uQWN0aW9uLlBhcmFtc0VudHJ5Gi0KC1BhcmFtc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQAoKQWN0aW9uVHlwZRILCgdVTktOT1dOEAASEQoNU0VBUkNIX0lOU0lERRABEhIKDlNFQVJDSF9PVVRTSURFEAIiRwoMTW9kaWZpZXJNZXRhEiMKBHR5cGUYASABKA4yFS5zZWN0aW9uLk1vZGlmaWVyVHlwZRISCgphdHRhY2htZW50GAIgASgJIlgKCE1vZGlmaWVyEhMKC3N0YXJ0X2luZGV4GAEgASgFEhEKCWVuZF9pbmRleBgCIAEoBRIkCgVtZXRhcxgDIAMoCzIVLnNlY3Rpb24uTW9kaWZpZXJNZXRhKlIKDE1vZGlmaWVyVHlwZRILCgdVTktOT1dOEAASCgoGQUNUSU9OEAESDQoJSElHSExJR0hUEAISDAoIRU1QSEFTSVMQAxIMCghUT09MVElQUxAEQksKFmNvbS5zcy5hbmRyb2lkLmxhcmsucGJIA1ovY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL3NlY3Rpb24",[J]);import{enumDesc as OA,fileDesc as mo,messageDesc as _A,tsEnum as qA}from"@bufbuild/protobuf/codegenv2";var Rt=mo("Cg9zaWRlX2NhcmQucHJvdG8SCXNpZGVfY2FyZCJmCghTaWRlQ2FyZBIrCgxlbnRpdHlfY2FyZHMYASADKAsyFS5zaWRlX2NhcmQuRW50aXR5Q2FyZBItCg1zZXJ2aWNlX2NhcmRzGAIgAygLMhYuc2lkZV9jYXJkLlNlcnZpY2VDYXJkImoKCkVudGl0eUNhcmQSCgoCaWQYASACKAkSKQoKc291cmNlVHlwZRgCIAEoDjIVLnNpZGVfY2FyZC5Tb3VyY2VUeXBlEiUKCGNhcmRUeXBlGAMgASgOMhMuc2lkZV9jYXJkLkNhcmRUeXBlIjEKC1NlcnZpY2VDYXJkEgoKAmlkGAEgAigJEhYKDnJlbmRlcl9jb250ZW50GAIgAigJKiIKClNvdXJjZVR5cGUSCQoFRXhhY3QQARIJCgVGdXp6eRACKl4KCENhcmRUeXBlEgsKB1VOS05PV04QABIPCgtGVVpaWV9DTElDSxABEg4KCkZVTExfTUFUQ0gQAhIQCgxGVVpaWV9TUFJFQUQQAxISCg5GVVpaWV9DT0xMQVBTRRAEQk0KFmNvbS5zcy5hbmRyb2lkLmxhcmsucGJIA1oxY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL3NpZGVfY2FyZA");import{enumDesc as la,fileDesc as ro,messageDesc as Va,serviceDesc as ta,tsEnum as oa}from"@bufbuild/protobuf/codegenv2";var ct=ro("Cg5zZWFyY2hlcy5wcm90bxIIc2VhcmNoZXMiQQoNU2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAEoCRIQCgViZWdpbhgCIAEoBToBMBIPCgNlbmQYAyABKAU6AjEwIq4BCg5TZWFyY2hSZXNwb25zZRI2Cgtncm91cF9jaGF0cxgCIAEoCzIhLnNlYXJjaGVzLlNlYXJjaEdyb3VwQ2hhdFJlc3BvbnNlEjEKCG1lc3NhZ2VzGAMgASgLMh8uc2VhcmNoZXMuU2VhcmNoTWVzc2FnZVJlc3BvbnNlEjEKCGNoYXR0ZXJzGAQgASgLMh8uc2VhcmNoZXMuU2VhcmNoQ2hhdHRlclJlc3BvbnNlIkgKFFNlYXJjaENoYXR0ZXJSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEhAKBWJlZ2luGAIgASgFOgEwEg8KA2VuZBgDIAEoBToCMTAi1gIKFVNlYXJjaENoYXR0ZXJSZXNwb25zZRIjCghjaGF0dGVycxgBIAMoCzIRLmVudGl0aWVzLkNoYXR0ZXISDQoFdG90YWwYAiABKAUSEAoIaGFzX21vcmUYAyABKAgSRQoLZGVwYXJ0bWVudHMYBCADKAsyMC5zZWFyY2hlcy5TZWFyY2hDaGF0dGVyUmVzcG9uc2UuRGVwYXJ0bWVudHNFbnRyeRIzCgVwYWlycxgFIAMoCzIkLnNlYXJjaGVzLlNlYXJjaENoYXR0ZXJSZXNwb25zZS5QYWlyGkgKEERlcGFydG1lbnRzRW50cnkSCwoDa2V5GAEgASgJEiMKBXZhbHVlGAIgASgLMhQuZW50aXRpZXMuRGVwYXJ0bWVudDoCOAEaMQoEUGFpchISCgpjaGF0dGVyX2lkGAEgASgJEhUKDWRlcGFydG1lbnRfaWQYAiABKAkiSgoWU2VhcmNoR3JvdXBDaGF0UmVxdWVzdBINCgVxdWVyeRgBIAEoCRIQCgViZWdpbhgCIAEoBToBMBIPCgNlbmQYAyABKAU6AjEwIlkKF1NlYXJjaEdyb3VwQ2hhdFJlc3BvbnNlEh0KBWNoYXRzGAEgAygLMg4uZW50aXRpZXMuQ2hhdBINCgV0b3RhbBgCIAEoBRIQCghoYXNfbW9yZRgDIAEoCCKWAQoUU2VhcmNoTWVzc2FnZVJlcXVlc3QSDQoFcXVlcnkYASABKAkSEAoFYmVnaW4YAiABKAU6ATASDwoDZW5kGAMgASgFOgIxMBIPCgdjaGF0X2lkGAQgASgJEg8KB2Zyb21faWQYBSABKAkSFQoKc3RhcnRfdGltZRgGIAEoAzoBMBITCghlbmRfdGltZRgHIAEoAzoBMCJdChVTZWFyY2hNZXNzYWdlUmVzcG9uc2USIwoIbWVzc2FnZXMYASADKAsyES5lbnRpdGllcy5NZXNzYWdlEg0KBXRvdGFsGAIgASgFEhAKCGhhc19tb3JlGAMgASgIIigKDFBhbm9WaWV3VXNlchIKCgJpZBgBIAEoAxIMCgRuYW1lGAIgASgJIjIKDVNjZW5lVmFyaWFibGUSDwoHY2hhdF9pZBgBIAEoCRIQCghlbWFpbF9pZBgCIAEoCSI3ChFTbGFzaENvbW1hbmRQYXJhbRISCgpjb21tYW5kX2lkGAEgAigJEg4KBmV4dHJhcxgCIAMoCSKEAgoSU21hcnRTZWFyY2hSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEhAKBWJlZ2luGAIgASgFOgEwEg8KA2VuZBgDIAEoBToCMTASGwoNaXNfc2VhcmNoX2JvdBgLIAEoCDoEdHJ1ZRIcCg5pc19zZWFyY2hfY2hhdBgMIAEoCDoEdHJ1ZRIcCg5pc19zZWFyY2hfdXNlchgNIAEoCDoEdHJ1ZRIyCgVzY2VuZRgOIAEoDjIPLnNlYXJjaGVzLlNjZW5lOhJTTUFSVF9TRUFSQ0hfU0NFTkUSLwoOc2NlbmVfdmFyaWFibGUYDyABKAsyFy5zZWFyY2hlcy5TY2VuZVZhcmlhYmxlIloKCkVudGl0eVBhaXISEQoJZW50aXR5X2lkGAEgAigJEiIKBHR5cGUYAiACKA4yFC5zZWFyY2hlcy5FbnRpdHlUeXBlEhUKDWRlcGFydG1lbnRfaWQYAyABKAkiLAoNRW50aXR5Q29udGVudBINCgV0aXRsZRgBIAEoCRIMCgR0ZXh0GAIgASgJIqIBCghEb2NFeHRyYRITCgtjcmVhdGVfdGltZRgBIAEoAxITCgt1cGRhdGVfdGltZRgCIAEoAxIRCglkb2Nfb3duZXIYAyABKAkSEQoJZG9jX3Rva2VuGAQgASgJEg8KB2RvY191cmwYBSABKAkSIwoIZG9jX3R5cGUYBiABKA4yES5lbnRpdGllcy5Eb2NUeXBlEhAKCGljb25fa2V5GAcgASgJIq8BCgpFbnRpdHlNZXRhEgoKAmlkGAEgAigJEiIKBHR5cGUYAiACKA4yFC5zZWFyY2hlcy5FbnRpdHlUeXBlEiAKBGljb24YAyABKAsyEi5lbnRpdGllcy5JbWFnZVNldBIoCgdjb250ZW50GAQgASgLMhcuc2VhcmNoZXMuRW50aXR5Q29udGVudBIlCglkb2NfZXh0cmEYBSABKAsyEi5zZWFyY2hlcy5Eb2NFeHRyYSLWBgoTU21hcnRTZWFyY2hSZXNwb25zZRI3CgVjaGF0cxgBIAMoCzIoLnNlYXJjaGVzLlNtYXJ0U2VhcmNoUmVzcG9uc2UuQ2hhdHNFbnRyeRI9CghjaGF0dGVycxgCIAMoCzIrLnNlYXJjaGVzLlNtYXJ0U2VhcmNoUmVzcG9uc2UuQ2hhdHRlcnNFbnRyeRJDCgtkZXBhcnRtZW50cxgDIAMoCzIuLnNlYXJjaGVzLlNtYXJ0U2VhcmNoUmVzcG9uc2UuRGVwYXJ0bWVudHNFbnRyeRIQCghoYXNfbW9yZRgEIAEoCBINCgV0b3RhbBgFIAEoBRIjCgVwYWlycxgGIAMoCzIULnNlYXJjaGVzLkVudGl0eVBhaXISNQoEZG9jcxgHIAMoCzInLnNlYXJjaGVzLlNtYXJ0U2VhcmNoUmVzcG9uc2UuRG9jc0VudHJ5EjkKBmVtYWlscxgIIAMoCzIpLnNlYXJjaGVzLlNtYXJ0U2VhcmNoUmVzcG9uc2UuRW1haWxzRW50cnkSPgoJZG9jX2ZlZWRzGAkgAygLMisuc2VhcmNoZXMuU21hcnRTZWFyY2hSZXNwb25zZS5Eb2NGZWVkc0VudHJ5GjwKCkNoYXRzRW50cnkSCwoDa2V5GAEgASgJEh0KBXZhbHVlGAIgASgLMg4uZW50aXRpZXMuQ2hhdDoCOAEaQgoNQ2hhdHRlcnNFbnRyeRILCgNrZXkYASABKAkSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5DaGF0dGVyOgI4ARpIChBEZXBhcnRtZW50c0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmVudGl0aWVzLkRlcGFydG1lbnQ6AjgBGjoKCURvY3NFbnRyeRILCgNrZXkYASABKAkSHAoFdmFsdWUYAiABKAsyDS5lbnRpdGllcy5Eb2M6AjgBGj4KC0VtYWlsc0VudHJ5EgsKA2tleRgBIAEoCRIeCgV2YWx1ZRgCIAEoCzIPLmVudGl0aWVzLkVtYWlsOgI4ARpCCg1Eb2NGZWVkc0VudHJ5EgsKA2tleRgBIAEoCRIgCgV2YWx1ZRgCIAEoCzIRLmVudGl0aWVzLkRvY0ZlZWQ6AjgBIoMDChhQdXRTZWFyY2hGZWVkYmFja1JlcXVlc3QSEQoGb2Zmc2V0GAEgASgFOgEwEikKC2VudGl0eV90eXBlGAIgASgOMhQuc2VhcmNoZXMuRW50aXR5VHlwZRIRCgllbnRpdHlfaWQYAyABKAkSDQoFcXVlcnkYBCABKAkSHgoFc2NlbmUYBSABKA4yDy5zZWFyY2hlcy5TY2VuZRI+CglmZWVkYmFja3MYBiADKAsyKy5zZWFyY2hlcy5QdXRTZWFyY2hGZWVkYmFja1JlcXVlc3QuRmVlZGJhY2sSLwoOc2NlbmVfdmFyaWFibGUYByABKAsyFy5zZWFyY2hlcy5TY2VuZVZhcmlhYmxlEhYKDnNlYXJjaF9zZXNzaW9uGAggASgJEg8KB2ltcHJfaWQYCSABKAkaTQoIRmVlZGJhY2sSEQoGb2Zmc2V0GAEgASgFOgEwEiIKBHR5cGUYAiABKA4yFC5zZWFyY2hlcy5FbnRpdHlUeXBlEgoKAmlkGAMgASgJIhsKGVB1dFNlYXJjaEZlZWRiYWNrUmVzcG9uc2UiZAogUHVsbFNlYXJjaEhpc3RvcnlFbnRpdGllc1JlcXVlc3QSIAoRbG9jYWxlX2lkZW50aWZpZXIYASABKAk6BXpoX0NOEh4KBXNjZW5lGAIgASgOMg8uc2VhcmNoZXMuU2NlbmUioggKIVB1bGxTZWFyY2hIaXN0b3J5RW50aXRpZXNSZXNwb25zZRJFCgVjaGF0cxgBIAMoCzI2LnNlYXJjaGVzLlB1bGxTZWFyY2hIaXN0b3J5RW50aXRpZXNSZXNwb25zZS5DaGF0c0VudHJ5EksKCGNoYXR0ZXJzGAIgAygLMjkuc2VhcmNoZXMuUHVsbFNlYXJjaEhpc3RvcnlFbnRpdGllc1Jlc3BvbnNlLkNoYXR0ZXJzRW50cnkSIwoFcGFpcnMYAyADKAsyFC5zZWFyY2hlcy5FbnRpdHlQYWlyElEKC2RlcGFydG1lbnRzGAQgAygLMjwuc2VhcmNoZXMuUHVsbFNlYXJjaEhpc3RvcnlFbnRpdGllc1Jlc3BvbnNlLkRlcGFydG1lbnRzRW50cnkSQwoEYXBwcxgFIAMoCzI1LnNlYXJjaGVzLlB1bGxTZWFyY2hIaXN0b3J5RW50aXRpZXNSZXNwb25zZS5BcHBzRW50cnkSSQoHb25jYWxscxgGIAMoCzI4LnNlYXJjaGVzLlB1bGxTZWFyY2hIaXN0b3J5RW50aXRpZXNSZXNwb25zZS5PbmNhbGxzRW50cnkSSwoMY2hhdHRlcl9saXN0GAcgAygLMjUuc2VhcmNoZXMuUHVsbFNlYXJjaEhpc3RvcnlFbnRpdGllc1Jlc3BvbnNlLkZpZWxkTWV0YRJICgljaGF0X2xpc3QYCCADKAsyNS5zZWFyY2hlcy5QdWxsU2VhcmNoSGlzdG9yeUVudGl0aWVzUmVzcG9uc2UuRmllbGRNZXRhGjwKCkNoYXRzRW50cnkSCwoDa2V5GAEgASgJEh0KBXZhbHVlGAIgASgLMg4uZW50aXRpZXMuQ2hhdDoCOAEaQgoNQ2hhdHRlcnNFbnRyeRILCgNrZXkYASABKAkSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5DaGF0dGVyOgI4ARpIChBEZXBhcnRtZW50c0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmVudGl0aWVzLkRlcGFydG1lbnQ6AjgBGkQKCUFwcHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5lbnRpdGllcy5BcHBTdGF0dXNJbmZvOgI4ARpACgxPbmNhbGxzRW50cnkSCwoDa2V5GAEgASgJEh8KBXZhbHVlGAIgASgLMhAuZW50aXRpZXMuT25jYWxsOgI4ARp2CglGaWVsZE1ldGESCgoCaWQYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEhIKCmF2YXRhcl9rZXkYAyABKAkSHwoGYXZhdGFyGAQgASgLMg8uZW50aXRpZXMuSW1hZ2USEgoKY2hhdHRlcl9pZBgFIAEoCSI1CiBEZWxldGVTZWFyY2hIaXN0b3J5RW50aXR5UmVxdWVzdBIRCgllbnRpdHlfaWQYASABKAkiIwohRGVsZXRlU2VhcmNoSGlzdG9yeUVudGl0eVJlc3BvbnNlIiMKElNlZ21lbnRUZXh0UmVxdWVzdBINCgV0ZXh0cxgBIAMoCSLAAQoTU2VnbWVudFRleHRSZXNwb25zZRI5CglzZW50ZW5jZXMYASADKAsyJi5zZWFyY2hlcy5TZWdtZW50VGV4dFJlc3BvbnNlLlNlbnRlbmNlGiEKBFdvcmQSDAoEY29udBgBIAEoCRILCgNwb3MYAiABKAkaSwoIU2VudGVuY2USDAoEdGV4dBgBIAEoCRIxCgV3b3JkcxgCIAMoCzIiLnNlYXJjaGVzLlNlZ21lbnRUZXh0UmVzcG9uc2UuV29yZCJNChlTZWFyY2hFbWFpbE1lc3NhZ2VSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEhAKBWJlZ2luGAIgASgFOgEwEg8KA2VuZBgDIAEoBToCMTAiYgoaU2VhcmNoRW1haWxNZXNzYWdlUmVzcG9uc2USIwoIbWVzc2FnZXMYASADKAsyES5lbnRpdGllcy5NZXNzYWdlEg0KBXRvdGFsGAIgASgFEhAKCGhhc19tb3JlGAMgASgIIkQKEFNlYXJjaERvY1JlcXVlc3QSDQoFcXVlcnkYASABKAkSEAoFYmVnaW4YAiABKAU6ATASDwoDZW5kGAMgASgFOgIxMCLUAQoRU2VhcmNoRG9jUmVzcG9uc2USNQoFbWV0YXMYASADKAsyJi5zZWFyY2hlcy5TZWFyY2hEb2NSZXNwb25zZS5NZXRhc0VudHJ5EiMKBXBhaXJzGAIgAygLMhQuc2VhcmNoZXMuRW50aXR5UGFpchINCgV0b3RhbBgDIAEoBRIQCghoYXNfbW9yZRgEIAEoCBpCCgpNZXRhc0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULnNlYXJjaGVzLkVudGl0eU1ldGE6AjgBIssECgxTZWFyY2hSZXN1bHQSCgoCaWQYASACKAkSKQoEdHlwZRgCIAEoDjIbLnNlYXJjaGVzLlNlYXJjaFJlc3VsdC5UeXBlEhEKCWltYWdlX3VybBgDIAEoCRIRCglpbWFnZV9rZXkYBCABKAkSDQoFdGl0bGUYBSABKAkSEAoIc3VidGl0bGUYBiABKAkSFwoPdGl0bGVfaGl0X3Rlcm1zGAcgAygJEhoKEnN1YnRpdGxlX2hpdF90ZXJtcxgIIAMoCRISCgphdmF0YXJfa2V5GAkgASgJEh8KBmF2YXRhchgKIAEoCzIPLmVudGl0aWVzLkltYWdlEhMKC2V4YWN0X3RpdGxlGAsgASgJIr0CCgRUeXBlEgsKB1VOS05PV04QABILCgdDSEFUVEVSEAESCAoEQ0hBVBACEgsKB01FU1NBR0UQAxIMCghET0NfRkVFRBAEEgkKBUVNQUlMEAUSBwoDRE9DEAYSEQoNRU1BSUxfTUVTU0FHRRAHEg8KC1RIUkVBRF9GRUVEEAgSDAoIQ0hBVF9CT1gQCRIKCgZPTkNBTEwQChITCg9DUllQVE9fUDJQX0NIQVQQCxIHCgNBUFAQDBIHCgNVUkwQDRIMCghFWFRFUk5BTBAOEggKBFdJS0kQDxIQCgxNQUlMX0NPTlRBQ1QQEBIOCgpERVBBUlRNRU5UEBESBgoCUUEQEhIMCghQQU5PX1RBRxATEg0KCVBBTk9fVklFVxAUEhEKDVNMQVNIX0NPTU1BTkQQFRILCgdTRUNUSU9OEBYi5AUKEVNlYXJjaENoYXR0ZXJNZXRhEgoKAmlkGAEgAigJEiMKBHR5cGUYAiABKA4yFS5lbnRpdGllcy5DaGF0dGVyVHlwZRITCgtkZXNjcmlwdGlvbhgDIAEoCRI7ChBkZXNjcmlwdGlvbl9mbGFnGAQgASgOMiEuZW50aXRpZXMuQ2hhdHRlci5EZXNjcmlwdGlvbkZsYWcSFQoNaXNfcmVnaXN0ZXJlZBgFIAEoCBIMCgRuYW1lGAYgASgJEicKCmJvdF9jb25maWcYByABKAsyEy5lbnRpdGllcy5Cb3RDb25maWcSEgoKZW5fdXNfbmFtZRgIIAEoCRIRCgl0ZW5hbnRfaWQYCSABKAkSDQoFZW1haWwYCiABKAkSEwoLaW5fY2hhdF9pZHMYCyADKAkSFwoPaXNfcmVhZF9tZXNzYWdlGAwgASgIEh8KF2Rvbm90X2Rpc3R1cmJfYmVmb3JlX21zGA0gASgDEh8KF2FjY2VwdF9zbXNfcGhvbmVfdXJnZW50GA4gASgIEhMKC2V4dHJhX3RpdGxlGA8gASgJEhcKD2V4dHJhX2hpdF90ZXJtcxgQIAMoCRIcChRmdWxsX2RlcGFydG1lbnRfcGF0aBgRIAEoCRJACg5zdWJ0aXRsZV9pbmZvcxgSIAMoCzIoLnNlYXJjaGVzLlNlYXJjaENoYXR0ZXJNZXRhLlN1YlRpdGxlSW5mbxIWCg5oYXNfcGVybWlzc2lvbhgTIAEoCBIkCgh0aW1lem9uZRgUIAEoCzISLmVudGl0aWVzLlRpbWVab25lEhMKC3AycF9jaGF0X2lkGBUgASgJEhoKEmNyeXB0b19wMnBfY2hhdF9pZBgWIAEoCRIpCgt3b3JrX3N0YXR1cxgXIAEoCzIULmVudGl0aWVzLldvcmtTdGF0dXMaMAoMU3ViVGl0bGVJbmZvEg0KBXRpdGxlGAEgASgJEhEKCWhpdF90ZXJtcxgCIAMoCSKaBQoXU2VhcmNoQ3J5cHRvUDJQQ2hhdE1ldGESCgoCaWQYASACKAkSIwoEdHlwZRgCIAEoDjIVLmVudGl0aWVzLkNoYXR0ZXJUeXBlEhMKC2Rlc2NyaXB0aW9uGAMgASgJEjsKEGRlc2NyaXB0aW9uX2ZsYWcYBCABKA4yIS5lbnRpdGllcy5DaGF0dGVyLkRlc2NyaXB0aW9uRmxhZxIVCg1pc19yZWdpc3RlcmVkGAUgASgIEgwKBG5hbWUYBiABKAkSJwoKYm90X2NvbmZpZxgHIAEoCzITLmVudGl0aWVzLkJvdENvbmZpZxISCgplbl91c19uYW1lGAggASgJEhEKCXRlbmFudF9pZBgJIAEoCRISCgpjaGF0dGVyX2lkGAogASgJEhkKEW5ld19tZXNzYWdlX2NvdW50GAsgASgFEiMKG25vX2JhZGdlZF9uZXdfbWVzc2FnZV9jb3VudBgMIAEoBRIRCglpc19yZW1pbmQYDSABKAgSFQoNcmVhZF9wb3NpdGlvbhgOIAEoBRIhChlyZWFkX3Bvc2l0aW9uX2JhZGdlX2NvdW50GA8gASgFEh0KFWxhc3RfbWVzc2FnZV9wb3NpdGlvbhgQIAEoBRIpCiFsYXN0X21lc3NhZ2VfcG9zaXRpb25fYmFkZ2VfY291bnQYESABKAUSDAoEVGFncxgSIAMoBRIRCglvbmNhbGxfaWQYEyABKAMSFwoPaXNfY3Jvc3NfdGVuYW50GBQgASgIEhIKCmlzX21lZXRpbmcYFSABKAgSEQoJaXNfdGVuYW50GBYgASgIEhEKCWlzX3B1YmxpYxgXIAEoCBIVCg1pc19kZXBhcnRtZW50GBggASgIEhEKCWlzX2NyeXB0bxgZIAEoCCL3AwoRU2VhcmNoUDJQQ2hhdE1ldGESCgoCaWQYASACKAkSIwoEdHlwZRgCIAEoDjIVLmVudGl0aWVzLkNoYXR0ZXJUeXBlEhEKCXRlbmFudF9pZBgDIAEoCRISCgpjaGF0dGVyX2lkGAQgASgJEhkKEW5ld19tZXNzYWdlX2NvdW50GAUgASgFEiMKG25vX2JhZGdlZF9uZXdfbWVzc2FnZV9jb3VudBgGIAEoBRIRCglpc19yZW1pbmQYByABKAgSFQoNcmVhZF9wb3NpdGlvbhgIIAEoBRIhChlyZWFkX3Bvc2l0aW9uX2JhZGdlX2NvdW50GAkgASgFEh0KFWxhc3RfbWVzc2FnZV9wb3NpdGlvbhgKIAEoBRIpCiFsYXN0X21lc3NhZ2VfcG9zaXRpb25fYmFkZ2VfY291bnQYCyABKAUSDAoEVGFncxgMIAMoBRIRCglvbmNhbGxfaWQYDSABKAMSFwoPaXNfY3Jvc3NfdGVuYW50GA4gASgIEhIKCmlzX21lZXRpbmcYDyABKAgSEQoJaXNfdGVuYW50GBAgASgIEhEKCWlzX3B1YmxpYxgRIAEoCBIVCg1pc19kZXBhcnRtZW50GBIgASgIEhEKCWlzX2NyeXB0bxgTIAEoCBIVCg1pc19yZWdpc3RlcmVkGBQgASgIIqEGCg5TZWFyY2hDaGF0TWV0YRIKCgJpZBgBIAIoCRIhCgR0eXBlGAIgASgOMhMuZW50aXRpZXMuQ2hhdC5UeXBlEhQKDG1lbWJlcl9jb3VudBgDIAEoBRISCgp1c2VyX2NvdW50GAQgASgFEhkKEW5ld19tZXNzYWdlX2NvdW50GAUgASgFEiMKG25vX2JhZGdlZF9uZXdfbWVzc2FnZV9jb3VudBgGIAEoBRIRCglpc19yZW1pbmQYByABKAgSDAoEbmFtZRgIIAEoCRIVCg1pc19kZXBhcnRtZW50GAkgASgIEhEKCWlzX3RlbmFudBgKIAEoCBIRCglvbmNhbGxfaWQYCyABKAkSHQoVbGFzdF9tZXNzYWdlX3Bvc2l0aW9uGAwgASgFEhUKDXJlYWRfcG9zaXRpb24YDSABKAUSIQoZcmVhZF9wb3NpdGlvbl9iYWRnZV9jb3VudBgOIAEoBRIpCiFsYXN0X21lc3NhZ2VfcG9zaXRpb25fYmFkZ2VfY291bnQYDyABKAUSEQoJaXNfY3J5cHRvGBAgASgIEhQKDGlzX3B1YmxpY192MhgRIAEoCBIRCglpc19tZW1iZXIYEiABKAgSEgoKYWxsb3dfcG9zdBgTIAEoCBIcChRsYXN0X3RocmVhZF9wb3NpdGlvbhgUIAEoBRIcChRyZWFkX3RocmVhZF9wb3NpdGlvbhgVIAEoBRIoCiByZWFkX3RocmVhZF9wb3NpdGlvbl9iYWRnZV9jb3VudBgWIAEoBRIoCiBsYXN0X3RocmVhZF9wb3NpdGlvbl9iYWRnZV9jb3VudBgXIAEoBRITCgtkZXNjcmlwdGlvbhgYIAEoCRISCgppc19tZWV0aW5nGBkgASgIEgwKBHRhZ3MYGiADKAUSJQoEbW9kZRgbIAEoDjIXLmVudGl0aWVzLkNoYXQuQ2hhdE1vZGUSFwoPaXNfY3Jvc3NfdGVuYW50GBwgASgIEhEKCWlzX3B1YmxpYxgdIAEoCBIYChBpc19jcm9zc193aXRoX2thGB4gASgIEhAKCG93bmVyX2lkGB8gASgJItwEChFTZWFyY2hNZXNzYWdlTWV0YRIKCgJpZBgBIAIoCRIkCgR0eXBlGAIgASgOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlEhMKC3VwZGF0ZV90aW1lGAMgASgDEhAKCHBvc2l0aW9uGAQgASgFEg8KB2NoYXRfaWQYBSABKAkSEgoKY2hhbm5lbF9pZBgGIAEoCRIRCgl0aHJlYWRfaWQYByABKAkSKAoJZmlsZV9tZXRhGAggASgLMhUuZW50aXRpZXMuRmlsZUNvbnRlbnQSDwoHZnJvbV9pZBgJIAEoCRIRCglmcm9tX25hbWUYCiABKAkSFwoPdGhyZWFkX3Bvc2l0aW9uGAsgASgFEhwKFHRocmVhZF9jaGF0X3Bvc2l0aW9uGAwgASgFEkEKD2RvY19leHRyYV9pbmZvcxgNIAMoCzIoLnNlYXJjaGVzLlNlYXJjaE1lc3NhZ2VNZXRhLkRvY0V4dHJhSW5mbxIXCg9mcm9tX2F2YXRhcl9rZXkYDiABKAkSIgoHbWVzc2FnZRgPIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2USJAoLZnJvbV9hdmF0YXIYECABKAsyDy5lbnRpdGllcy5JbWFnZRISCgpwMnBfYm90X2lkGBEgASgDEhYKDnAycF9jaGF0dGVyX2lkGBIgASgDEhMKC2lzX3AycF9jaGF0GBMgASgIGkoKDERvY0V4dHJhSW5mbxIfCgR0eXBlGAEgASgOMhEuZW50aXRpZXMuRG9jVHlwZRILCgN1cmwYAiABKAkSDAoEbmFtZRgDIAEoCSLQAwoNU2VhcmNoRG9jTWV0YRIKCgJpZBgBIAIoCRIfCgR0eXBlGAIgASgOMhEuZW50aXRpZXMuRG9jVHlwZRITCgt1cGRhdGVfdGltZRgDIAEoAxILCgN1cmwYBCABKAkSEgoKb3duZXJfbmFtZRgFIAEoCRIQCghvd25lcl9pZBgGIAEoCRISCgptZXNzYWdlX2lkGAcgASgJEhAKCHBvc2l0aW9uGAggASgFEhcKD2lzX2Nyb3NzX3RlbmFudBgJIAEoCBITCgtjcmVhdGVfdGltZRgKIAEoAxIWCg5sYXN0X29wZW5fdGltZRgLIAEoAxIUCgxlZGl0X3VzZXJfaWQYDCABKAkSFgoOZWRpdF91c2VyX25hbWUYDSABKAkSEAoIc3RyX3R5cGUYDiABKAkSDwoHY2hhdF9pZBgPIAEoCRIRCgl0aHJlYWRfaWQYECABKAkSFwoPdGhyZWFkX3Bvc2l0aW9uGBEgASgFEhwKFHRocmVhZF9jaGF0X3Bvc2l0aW9uGBIgASgFEhwKBGljb24YEyABKAsyDi5lbnRpdGllcy5JY29uEiUKCXdpa2lfaW5mbxgUIAMoCzISLnNlYXJjaGVzLldpa2lJbmZvIlEKCFdpa2lJbmZvEhIKCndpa2lfdG9rZW4YASABKAkSEAoIc3BhY2VfaWQYAiABKAMSEgoKc3BhY2VfbmFtZRgDIAEoCRILCgN1cmwYBCABKAkiOAoPU2VhcmNoRW1haWxNZXRhEgoKAmlkGAEgAigJEhkKEW5ld19tZXNzYWdlX2NvdW50GAIgASgFIsMBChBTZWFyY2hUaHJlYWRNZXRhEgoKAmlkGAEgAigJEhIKCmNoYW5uZWxfaWQYAiABKAkSKwoMY2hhbm5lbF90eXBlGAMgASgOMhUuZW50aXRpZXMuQ2hhbm5lbFR5cGUSDQoFdG9waWMYBCABKAkSGQoRbmV3X21lc3NhZ2VfY291bnQYBSABKAUSIwobbm9fYmFkZ2VkX25ld19tZXNzYWdlX2NvdW50GAYgASgFEhMKC3VwZGF0ZV90aW1lGAcgASgDIs8BChBTZWFyY2hPbmNhbGxNZXRhEgoKAmlkGAEgAigJEgwKBG5hbWUYAiABKAkSDwoHZW5fbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRIPCgd0YWdfaWRzGAUgAygJEg4KBmJvdF9pZBgGIAIoCRIRCgl0ZW5hbnRfaWQYByABKAkSDAoEdGFncxgIIAMoBRIOCgZmYXFfaWQYCSABKAkSEQoJZmFxX3RpdGxlGAogASgJEhYKDmNyb3NzX3RhZ19pbmZvGAsgASgJIncKDVNlYXJjaEFwcE1ldGESMAoPYXBwX3N0YXR1c19pbmZvGAEgASgLMhcuZW50aXRpZXMuQXBwU3RhdHVzSW5mbxIZChFuZXdfbWVzc2FnZV9jb3VudBgCIAEoBRIZChFub3RpZmljYXRpb25fdHlwZRgDIAEoBSJjChhTZWFyY2hVbkF2YWlsYWJsZUFwcE1ldGESRwobdW5hdmFpbGFibGVfYXBwX3N0YXR1c19pbmZvGAEgASgLMiIuZW50aXRpZXMuVW5hdmFpbGFibGVJc3ZTdGF0dXNJbmZvIuIBCg1TZWFyY2hVUkxNZXRhEgoKAmlkGAEgAigJEg8KB2NoYXRfaWQYAiABKAkSEgoKbWVzc2FnZV9pZBgDIAEoCRIPCgdmcm9tX2lkGAQgASgJEhMKC2NyZWF0ZV90aW1lGAUgASgDEgsKA3VybBgGIAEoCRIRCglmcm9tX25hbWUYByABKAkSEAoIcG9zaXRpb24YCCABKAUSEQoJdGhyZWFkX2lkGAkgASgJEhcKD3RocmVhZF9wb3NpdGlvbhgKIAEoBRIcChR0aHJlYWRfY2hhdF9wb3NpdGlvbhgLIAEoBSJSChJTZWFyY2hFeHRlcm5hbE1ldGESCgoCaWQYASACKAkSCwoDdXJsGAIgASgJEhMKC3VwZGF0ZV90aW1lGAMgASgDEg4KBnNvdXJjZRgEIAEoCSJfCg5TZWFyY2hXaWtpTWV0YRIKCgJpZBgBIAIoCRIQCghzcGFjZV9pZBgCIAIoCRISCgpzcGFjZV9uYW1lGAMgAigJEgsKA3VybBgEIAEoCRIOCgZkb2NfaWQYBSACKAkiEwoRU2VhcmNoUGFub1RhZ01ldGEipgIKElNlYXJjaFBhbm9WaWV3TWV0YRIPCgd2aWV3X2lkGAEgAigDEiUKCXZpZXdfdHlwZRgCIAEoDjISLnNlYXJjaGVzLlZpZXdUeXBlEgwKBG5hbWUYAyABKAkSDgoGYXBwX2lkGAQgASgJEhEKCXRlbmFudF9pZBgFIAEoAxITCgtkZXNjcmlwdGlvbhgGIAEoCRImCgZvd25lcnMYByADKAsyFi5zZWFyY2hlcy5QYW5vVmlld1VzZXISEgoKY3JlYXRlZF9hdBgIIAEoAxISCgp1cGRhdGVkX2F0GAkgASgDEhQKDGlzX2F2YWlsYWJsZRgKIAEoCBIsCgpwZXJtaXNzaW9uGAsgASgOMhguc2VhcmNoZXMuVmlld1Blcm1pc3Npb24ipQIKEFNsYXNoQ29tbWFuZE1ldGESRwoSc2xhc2hfY29tbWFuZF90eXBlGAEgAigOMisuc2VhcmNoZXMuU2xhc2hDb21tYW5kTWV0YS5TbGFzaENvbW1hbmRUeXBlEhAKCGFwcF9saW5rGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEjcKA3RhZxgEIAMoCzIqLnNlYXJjaGVzLlNsYXNoQ29tbWFuZE1ldGEuU2xhc2hDb21tYW5kVGFnEg0KBWV4dHJhGAYgASgJGi0KD1NsYXNoQ29tbWFuZFRhZxIMCgR0eXBlGAEgAigFEgwKBHRleHQYAiACKAkiKgoQU2xhc2hDb21tYW5kVHlwZRIKCgZFTlRJVFkQABIKCgZGSUxURVIQASK/AwoMU2VhcmNoUWFNZXRhEgoKAmlkGAEgAigJEgwKBG5hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSNgoLc291cmNlX3R5cGUYBCABKA4yIS5zZWFyY2hlcy5TZWFyY2hRYU1ldGEuU291cmNlVHlwZRIRCglzb3VyY2VfaWQYBSABKAkSDgoGZmFxX2lkGAYgASgJEhIKCnNvdXJjZV91cmwYByABKAkSFQoNY2F0ZWdvcnlfbmFtZRgIIAEoCRIVCg1jYXRlZ29yeV9kZXNjGAkgASgJEhMKC3VwZGF0ZV90aW1lGAogASgDEhIKCmF2YXRhcl9rZXkYCyABKAkSHwoGYXZhdGFyGAwgASgLMg8uZW50aXRpZXMuSW1hZ2USDwoHdXNlcl9pZBgNIAEoCRIZChFzb3VyY2VfYW5jaG9yX3VybBgOIAEoCRIjCghkb2NfdHlwZRgPIAEoDjIRLmVudGl0aWVzLkRvY1R5cGUiSAoKU291cmNlVHlwZRISCg5VTktOT1dOX1NPVVJDRRAAEgoKBk9OQ0FMTBABEgcKA0RPQxACEgcKA0FQUBADEggKBFdJS0kQBCL7AgoPQ2hhdEZpbHRlclBhcmFtEjYKCmNoYXRfdHlwZXMYASADKA4yIi5zZWFyY2hlcy5DaGF0RmlsdGVyUGFyYW0uQ2hhdFR5cGUSFwoPY2hhdF9tZW1iZXJfaWRzGAIgAygJEhgKEGNoYXRfbWVzc2FnZV9rZXkYAyABKAkSNgoKY2hhdF9tb2RlcxgEIAMoDjIiLnNlYXJjaGVzLkNoYXRGaWx0ZXJQYXJhbS5DaGF0TW9kZRIlCglzb3J0X3R5cGUYBSABKA4yEi5zZWFyY2hlcy5Tb3J0VHlwZRITCgtleGNsdWRlX2lkcxgGIAMoCSJWCghDaGF0VHlwZRIOCgpVTktOT1dOVEFCEAASCwoHUFJJVkFURRABEgkKBU9VVEVSEAISDwoLUFVCTElDX0pPSU4QAxIRCg1QVUJMSUNfQUJTRU5UEAQiMQoIQ2hhdE1vZGUSDQoJVU5MSU1JVEVEEAASCgoGTk9STUFMEAESCgoGVEhSRUFEEAIi/wIKEk1lc3NhZ2VGaWx0ZXJQYXJhbRIYChBjaGF0X2F0X3VzZXJfaWRzGAEgAygJEkUKD211c3RfZnJvbV90eXBlcxgCIAMoDjIsLnNlYXJjaGVzLk1lc3NhZ2VGaWx0ZXJQYXJhbS5NZXNzYWdlRnJvbVR5cGUSSQoTbXVzdF9ub3RfZnJvbV90eXBlcxgDIAMoDjIsLnNlYXJjaGVzLk1lc3NhZ2VGaWx0ZXJQYXJhbS5NZXNzYWdlRnJvbVR5cGUSJQoJc29ydF90eXBlGAQgASgOMhIuc2VhcmNoZXMuU29ydFR5cGUSEwoLZXhjbHVkZV9pZHMYBSADKAkSLAoMbWVzc2FnZV90eXBlGAYgASgOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlEi0KDW1lc3NhZ2VfdHlwZXMYByADKA4yFi5lbnRpdGllcy5NZXNzYWdlLlR5cGUiJAoPTWVzc2FnZUZyb21UeXBlEgcKA0JPVBAAEggKBFVTRVIQASKcAQoORG9jRmlsdGVyUGFyYW0SPwoPZG9jX3NlYXJjaF90eXBlGAEgAygOMiYuc2VhcmNoZXMuRG9jRmlsdGVyUGFyYW0uRG9jU2VhcmNoVHlwZSJJCg1Eb2NTZWFyY2hUeXBlEgsKB1VOS05PV04QABIJCgVUSVRMRRABEg0KCUZVTExfVEVYVBACEhEKDU1BVENIX0NPTU1FTlQQAyI4ChJDaGF0dGVyRmlsdGVyUGFyYW0SEQoJZmllbGRfa2V5GAEgAigJEg8KB2ZpbHRlcnMYAiADKAkiSwoTQ2FsZW5kYXJGaWx0ZXJQYXJhbRIbChNzZWFyY2hfbWVldGluZ19jaGF0GAEgASgIEhcKD3JlbW92ZV9jaGF0X2lkcxgCIAMoCSL1AgoSUGFub1RhZ0ZpbHRlclBhcmFtEg8KB3RhZ19pZHMYASADKAkSJAoMdGFnX2lkc19leHByGAIgASgOMg4uc2VhcmNoZXMuRXhwchIVCg10YWdfaWRfdmFsdWVzGAMgAygJEioKEnRhZ19pZF92YWx1ZXNfZXhwchgEIAEoDjIOLnNlYXJjaGVzLkV4cHISNgoedGFnX2lkc19hbmRfdGFnX2lkX3ZhbHVlc19leHByGAUgASgOMg4uc2VhcmNoZXMuRXhwchIRCgl0YWdfdHlwZXMYBiADKAMSEwoLY3JlYXRvcl9pZHMYByADKAMSFwoPZGVzY3JpcHRpb25fa2V5GAggASgJEg4KBm93bmVycxgJIAMoAxIaChJjcmVhdGVfdGltZV9iZWZvcmUYCiABKAMSGQoRY3JlYXRlX3RpbWVfYWZ0ZXIYCyABKAMSJQoJc29ydF90eXBlGAwgASgOMhIuc2VhcmNoZXMuU29ydFR5cGUi7w0KGEludGVncmF0aW9uU2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAIoCRIgChFsb2NhbGVfaWRlbnRpZmllchgCIAEoCToFemhfQ04SEAoFYmVnaW4YAyABKAU6ATASDwoDZW5kGAQgASgFOgIxMBIeCgVzY2VuZRgFIAIoDjIPLnNlYXJjaGVzLlNjZW5lEkQKDGZpbHRlcl9wYXJhbRgGIAEoCzIuLnNlYXJjaGVzLkludGVncmF0aW9uU2VhcmNoUmVxdWVzdC5GaWx0ZXJQYXJhbRIWCg5zZWFyY2hfc2Vzc2lvbhgHIAEoCRJCCgtxdWVyeV9zdGF0ZRgIIAEoDjItLnNlYXJjaGVzLkludGVncmF0aW9uU2VhcmNoUmVxdWVzdC5RdWVyeVN0YXRlEg4KBmV4dHJhcxgJIAEoCRJICgtleHRyYV9wYXJhbRgKIAEoCzIzLnNlYXJjaGVzLkludGVncmF0aW9uU2VhcmNoUmVxdWVzdC5TZWFyY2hFeHRyYVBhcmFtEg8KB2ltcHJfaWQYCyABKAkSOAoTc2xhc2hfY29tbWFuZF9wYXJhbRgMIAEoCzIbLnNlYXJjaGVzLlNsYXNoQ29tbWFuZFBhcmFtGrkJCgtGaWx0ZXJQYXJhbRIQCghjaGF0X2lkcxgBIAMoCRIRCgllbWFpbF9pZHMYAiADKAkSGwoTbWVzc2FnZV9jcmVhdG9yX2lkcxgDIAMoCRIdChJtZXNzYWdlX3N0YXJ0X3RpbWUYBCABKAM6ATASGwoQbWVzc2FnZV9lbmRfdGltZRgFIAEoAzoBMBIgChhuZWVkX3NlYXJjaF9vdXRlcl90ZW5hbnQYBiABKAgSGwoQbGFzdF9jcmVhdGVfdGltZRgHIAEoAzoBMBIXCg9sYXN0X21lc3NhZ2VfaWQYCCABKAkSEQoFY291bnQYCSABKAU6AjEwEhYKB3JldmVyc2UYCiABKAg6BWZhbHNlEhYKDmRvY19jcmVhdG9yX2lkGAsgASgJEiMKCGRvY190eXBlGAwgASgOMhEuZW50aXRpZXMuRG9jVHlwZRIXCg9kb2NfY3JlYXRvcl9pZHMYDSADKAkSEQoJZG9jX3R5cGVzGA4gAygJEkwKCnRpbWVfcmFuZ2UYDyABKA4yOC5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlcXVlc3QuRmlsdGVyUGFyYW0uVGltZUxhYmVsEiMKG2RvX25vdF9zZWFyY2hfcmVzaWduZWRfdXNlchgQIAEoCBIaChJpc19yZWFkX21lc3NhZ2VfaWQYESABKAkSEwoLZXh0ZXJuYWxfaWQYEiABKAkSEgoKdGhyZWFkX2lkcxgTIAMoCRIlCgltb2RpZmllcnMYFCADKAsyEi5zZWFyY2hlcy5Nb2RpZmllchIWCg5tZXNzYWdlX3RvX2lkcxgVIAMoCRJPCgxtZXNzYWdlX3RhZ3MYFiADKA4yOS5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlcXVlc3QuRmlsdGVyUGFyYW0uTWVzc2FnZVRhZxI0ChFjaGF0X2ZpbHRlcl9wYXJhbRgXIAEoCzIZLnNlYXJjaGVzLkNoYXRGaWx0ZXJQYXJhbRI7ChVjaGF0dGVyX2ZpbHRlcl9wYXJhbXMYGCADKAsyHC5zZWFyY2hlcy5DaGF0dGVyRmlsdGVyUGFyYW0SPAoVY2FsZW5kYXJfZmlsdGVyX3BhcmFtGBkgASgLMh0uc2VhcmNoZXMuQ2FsZW5kYXJGaWx0ZXJQYXJhbRIyChBkb2NfZmlsdGVyX3BhcmFtGBogASgLMhguc2VhcmNoZXMuRG9jRmlsdGVyUGFyYW0SOgoUbWVzc2FnZV9maWx0ZXJfcGFyYW0YGyABKAsyHC5zZWFyY2hlcy5NZXNzYWdlRmlsdGVyUGFyYW0SOwoVcGFub190YWdfZmlsdGVyX3BhcmFtGBwgASgLMhwuc2VhcmNoZXMuUGFub1RhZ0ZpbHRlclBhcmFtEhYKDmRvY19zaGFyZXJfaWRzGB0gAygJIl4KCVRpbWVMYWJlbBINCglVTkxJTUlURUQQABINCglZRVNURVJEQVkQARIPCgtMQVNUXzdfREFZUxACEhAKDExBU1RfMzBfREFZUxADEhAKDExBU1RfOTBfREFZUxAEIiIKCk1lc3NhZ2VUYWcSCwoHVU5LTk9XThAAEgcKA1BJThABGjYKEFNlYXJjaEV4dHJhUGFyYW0SIgoaY2hhdHRlcl9wZXJtaXNzb25zX3JlcXVlc3QYASABKAwiJAoKUXVlcnlTdGF0ZRIKCgZFeHBhbmQQABIKCgZTaHJpbmsQASJ4ChNTZWFyY2hSZXN1bHRTdW1tYXJ5EikKBHR5cGUYASACKA4yGy5zZWFyY2hlcy5TZWFyY2hSZXN1bHQuVHlwZRITCgtyZWNhbGxfbnVtcxgCIAEoBRIQCghoYXZlX2VychgDIAIoCBIPCgdlcnJfbXNnGAQgASgJIlkKElN1Z2dlc3RKdW1wVGFiSW5mbxIWCg5mb3JtYXR0ZWRfdGV4dBgBIAEoCRIrCgpzZWFyY2hfdGFiGAIgASgOMhcuc2VhcmNoZXMuU2VhcmNoVGFiTmFtZSKuGgoZSW50ZWdyYXRpb25TZWFyY2hSZXNwb25zZRInCgdyZXN1bHRzGAEgAygLMhYuc2VhcmNoZXMuU2VhcmNoUmVzdWx0Eg0KBXRvdGFsGAIgASgFEhAKCGhhc19tb3JlGAMgASgIEkMKCGNoYXR0ZXJzGAQgAygLMjEuc2VhcmNoZXMuSW50ZWdyYXRpb25TZWFyY2hSZXNwb25zZS5DaGF0dGVyc0VudHJ5Ej0KBWNoYXRzGAUgAygLMi4uc2VhcmNoZXMuSW50ZWdyYXRpb25TZWFyY2hSZXNwb25zZS5DaGF0c0VudHJ5EkMKCG1lc3NhZ2VzGAYgAygLMjEuc2VhcmNoZXMuSW50ZWdyYXRpb25TZWFyY2hSZXNwb25zZS5NZXNzYWdlc0VudHJ5EjsKBGRvY3MYByADKAsyLS5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlc3BvbnNlLkRvY3NFbnRyeRI/CgZlbWFpbHMYCCADKAsyLy5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlc3BvbnNlLkVtYWlsc0VudHJ5EkEKB3RocmVhZHMYCSADKAsyMC5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlc3BvbnNlLlRocmVhZHNFbnRyeRJBCgdvbmNhbGxzGAogAygLMjAuc2VhcmNoZXMuSW50ZWdyYXRpb25TZWFyY2hSZXNwb25zZS5PbmNhbGxzRW50cnkSFQoNbWVzc2FnZV9jb3VudBgLIAEoCRJRChBjcnlwdG9fcDJwX2NoYXRzGAwgAygLMjcuc2VhcmNoZXMuSW50ZWdyYXRpb25TZWFyY2hSZXNwb25zZS5DcnlwdG9QMnBDaGF0c0VudHJ5EjsKBGFwcHMYDSADKAsyLS5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlc3BvbnNlLkFwcHNFbnRyeRI7CgR1cmxzGA4gAygLMi0uc2VhcmNoZXMuSW50ZWdyYXRpb25TZWFyY2hSZXNwb25zZS5VcmxzRW50cnkSDwoHaW1wcl9pZBgPIAEoCRJFCglleHRlcm5hbHMYECADKAsyMi5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlc3BvbnNlLkV4dGVybmFsc0VudHJ5Eg4KBmV4dHJhcxgRIAEoCRI9CgV3aWtpcxgSIAMoCzIuLnNlYXJjaGVzLkludGVncmF0aW9uU2VhcmNoUmVzcG9uc2UuV2lraXNFbnRyeRJLCgxleHRyYV9maWVsZHMYEyABKAsyNS5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlc3BvbnNlLlNlYXJjaEV4dHJhRmllbGRzEkQKCXAycF9jaGF0cxgUIAMoCzIxLnNlYXJjaGVzLkludGVncmF0aW9uU2VhcmNoUmVzcG9uc2UuUDJwQ2hhdHNFbnRyeRIuCgdzdW1tYXJ5GBUgAygLMh0uc2VhcmNoZXMuU2VhcmNoUmVzdWx0U3VtbWFyeRJSChB1bmF2YWlsYWJsZV9hcHBzGBYgAygLMjguc2VhcmNoZXMuSW50ZWdyYXRpb25TZWFyY2hSZXNwb25zZS5VbmF2YWlsYWJsZUFwcHNFbnRyeRI5CgNRYXMYFyADKAsyLC5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlc3BvbnNlLlFhc0VudHJ5EjIKEXN1Z2dlc3RfanVtcF90YWJzGBggAygOMhcuc2VhcmNoZXMuU2VhcmNoVGFiTmFtZRJECglwYW5vX3RhZ3MYGSADKAsyMS5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlc3BvbnNlLlBhbm9UYWdzRW50cnkSRgoKcGFub192aWV3cxgaIAMoCzIyLnNlYXJjaGVzLkludGVncmF0aW9uU2VhcmNoUmVzcG9uc2UuUGFub1ZpZXdzRW50cnkSTgoOc2xhc2hfY29tbWFuZHMYGyADKAsyNi5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlc3BvbnNlLlNsYXNoQ29tbWFuZHNFbnRyeRIrCghzZWN0aW9ucxgcIAMoCzIVLnNlYXJjaGVzLlNlY3Rpb25NZXRhQgIYARI0ChRyZXN1bHRfd2l0aF9zZWN0aW9ucxgdIAMoCzIWLnNlYXJjaGVzLlNlYXJjaFJlc3VsdBJSChBzZWN0aW9uX3BvcnRpb25zGB4gAygLMjguc2VhcmNoZXMuSW50ZWdyYXRpb25TZWFyY2hSZXNwb25zZS5TZWN0aW9uUG9ydGlvbnNFbnRyeRIlCglzaWRlX2NhcmQYHyABKAsyEi5zZWFyY2hlcy5TaWRlQ2FyZBI8ChZzdWdnZXN0X2p1bXBfdGFiX2luZm9zGCAgAygLMhwuc2VhcmNoZXMuU3VnZ2VzdEp1bXBUYWJJbmZvGkwKDUNoYXR0ZXJzRW50cnkSCwoDa2V5GAEgASgJEioKBXZhbHVlGAIgASgLMhsuc2VhcmNoZXMuU2VhcmNoQ2hhdHRlck1ldGE6AjgBGkYKCkNoYXRzRW50cnkSCwoDa2V5GAEgASgJEicKBXZhbHVlGAIgASgLMhguc2VhcmNoZXMuU2VhcmNoQ2hhdE1ldGE6AjgBGkwKDU1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgJEioKBXZhbHVlGAIgASgLMhsuc2VhcmNoZXMuU2VhcmNoTWVzc2FnZU1ldGE6AjgBGkQKCURvY3NFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5zZWFyY2hlcy5TZWFyY2hEb2NNZXRhOgI4ARpICgtFbWFpbHNFbnRyeRILCgNrZXkYASABKAkSKAoFdmFsdWUYAiABKAsyGS5zZWFyY2hlcy5TZWFyY2hFbWFpbE1ldGE6AjgBGkoKDFRocmVhZHNFbnRyeRILCgNrZXkYASABKAkSKQoFdmFsdWUYAiABKAsyGi5zZWFyY2hlcy5TZWFyY2hUaHJlYWRNZXRhOgI4ARpKCgxPbmNhbGxzRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgLMhouc2VhcmNoZXMuU2VhcmNoT25jYWxsTWV0YToCOAEaWAoTQ3J5cHRvUDJwQ2hhdHNFbnRyeRILCgNrZXkYASABKAkSMAoFdmFsdWUYAiABKAsyIS5zZWFyY2hlcy5TZWFyY2hDcnlwdG9QMlBDaGF0TWV0YToCOAEaRAoJQXBwc0VudHJ5EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLnNlYXJjaGVzLlNlYXJjaEFwcE1ldGE6AjgBGkQKCVVybHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5zZWFyY2hlcy5TZWFyY2hVUkxNZXRhOgI4ARpOCg5FeHRlcm5hbHNFbnRyeRILCgNrZXkYASABKAkSKwoFdmFsdWUYAiABKAsyHC5zZWFyY2hlcy5TZWFyY2hFeHRlcm5hbE1ldGE6AjgBGkYKCldpa2lzRW50cnkSCwoDa2V5GAEgASgJEicKBXZhbHVlGAIgASgLMhguc2VhcmNoZXMuU2VhcmNoV2lraU1ldGE6AjgBGkwKDVAycENoYXRzRW50cnkSCwoDa2V5GAEgASgJEioKBXZhbHVlGAIgASgLMhsuc2VhcmNoZXMuU2VhcmNoUDJQQ2hhdE1ldGE6AjgBGjgKEVNlYXJjaEV4dHJhRmllbGRzEiMKG2NoYXR0ZXJfcGVybWlzc29uc19yZXNwb25zZRgBIAEoDBpaChRVbmF2YWlsYWJsZUFwcHNFbnRyeRILCgNrZXkYASABKAkSMQoFdmFsdWUYAiABKAsyIi5zZWFyY2hlcy5TZWFyY2hVbkF2YWlsYWJsZUFwcE1ldGE6AjgBGkIKCFFhc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLnNlYXJjaGVzLlNlYXJjaFFhTWV0YToCOAEaTAoNUGFub1RhZ3NFbnRyeRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKAsyGy5zZWFyY2hlcy5TZWFyY2hQYW5vVGFnTWV0YToCOAEaTgoOUGFub1ZpZXdzRW50cnkSCwoDa2V5GAEgASgJEisKBXZhbHVlGAIgASgLMhwuc2VhcmNoZXMuU2VhcmNoUGFub1ZpZXdNZXRhOgI4ARpQChJTbGFzaENvbW1hbmRzRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgLMhouc2VhcmNoZXMuU2xhc2hDb21tYW5kTWV0YToCOAEaTQoUU2VjdGlvblBvcnRpb25zRW50cnkSCwoDa2V5GAEgASgJEiQKBXZhbHVlGAIgASgLMhUuc2VhcmNoZXMuU2VjdGlvbk1ldGE6AjgBIqsEChFTZWFyY2hIaXN0b3J5SW5mbxINCgVxdWVyeRgBIAIoCRJECgxmaWx0ZXJfcGFyYW0YAiABKAsyLi5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlcXVlc3QuRmlsdGVyUGFyYW0SEQoJdGFiX2luZGV4GAMgASgFEgoKAmlkGAQgASgJEi8KA3NyYxgFIAEoDjIiLnNlYXJjaGVzLlNlYXJjaEhpc3RvcnlJbmZvLlNvdXJjZRI6Cgh0YWJfdHlwZRgGIAEoDjIjLnNlYXJjaGVzLlNlYXJjaEhpc3RvcnlJbmZvLlRhYlR5cGU6A0FMTBJICg1leHRlcm5hbF90eXBlGAcgASgOMiguc2VhcmNoZXMuU2VhcmNoSGlzdG9yeUluZm8uRXh0ZXJuYWxUeXBlOgdNQUlOVEFCEhQKDGV4dGVybmFsX2lkcxgIIAMoCSJjCgZTb3VyY2USCwoHVU5LTk9XThAAEggKBE1BSU4QARILCgdNRVNTQUdFEAISCQoFU1BBQ0UQAxIMCghFWFRFUk5BTBAEEggKBFdJS0kQBRIICgRDSEFUEAYSCAoEVVNFUhAHIjYKB1RhYlR5cGUSDgoKVU5LTk9XTlRBQhAAEgcKA0FMTBABEggKBEZJTEUQAhIICgRMSU5LEAMiOAoMRXh0ZXJuYWxUeXBlEg8KC1VOS05PV05UWVBFEAASCwoHTUFJTlRBQhABEgoKBlNVQlRBQhACIkUKF1B1dFNlYXJjaEhpc3RvcnlSZXF1ZXN0EioKBWVudHJ5GAEgASgLMhsuc2VhcmNoZXMuU2VhcmNoSGlzdG9yeUluZm8iJgoYUHV0U2VhcmNoSGlzdG9yeVJlc3BvbnNlEgoKAmlkGAEgASgJIhoKGFB1bGxTZWFyY2hIaXN0b3J5UmVxdWVzdCJJChlQdWxsU2VhcmNoSGlzdG9yeVJlc3BvbnNlEiwKB2VudHJpZXMYASADKAsyGy5zZWFyY2hlcy5TZWFyY2hIaXN0b3J5SW5mbyI8ChpEZWxldGVTZWFyY2hIaXN0b3J5UmVxdWVzdBIKCgJpZBgBIAIoCRISCgpkZWxldGVfYWxsGAIgASgIIh0KG0RlbGV0ZVNlYXJjaEhpc3RvcnlSZXNwb25zZSJZCghNb2RpZmllchILCgNrZXkYASABKAkSDgoGdmFsdWVzGAIgAygJEjAKD21vZGlmaWVyX3ZhbHVlcxgDIAMoCzIXLnNlYXJjaGVzLk1vZGlmaWVyVmFsdWUiWgoNTW9kaWZpZXJWYWx1ZRINCgV2YWx1ZRgBIAIoCRINCgVxdWVyeRgCIAEoCRIrCgZlbnRpdHkYAyABKA4yGy5zZWFyY2hlcy5TZWFyY2hSZXN1bHQuVHlwZSIaChhQdWxsU2VhcmNoU2V0dGluZ1JlcXVlc3QiQgoZUHVsbFNlYXJjaFNldHRpbmdSZXNwb25zZRIlCgltb2RpZmllcnMYASADKAsyEi5zZWFyY2hlcy5Nb2RpZmllciLcAQoWVmlkZW9DaGF0U2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAIoCRIgChFsb2NhbGVfaWRlbnRpZmllchgCIAEoCToFemhfQ04SEAoFYmVnaW4YAyABKAU6ATASDwoDZW5kGAQgASgFOgIxMBJACgt2ZW5kb3JfdHlwZRgFIAEoDjIrLnNlYXJjaGVzLlZpZGVvQ2hhdFNlYXJjaFJlcXVlc3QuVmVuZG9yVHlwZSIsCgpWZW5kb3JUeXBlEgsKB1VOS05PV04QABIICgRaT09NEAESBwoDUlRDEAIi/gMKF1ZpZGVvQ2hhdFNlYXJjaFJlc3BvbnNlEjQKB3Jlc3VsdHMYASACKAsyIy5zZWFyY2hlcy5JbnRlZ3JhdGlvblNlYXJjaFJlc3BvbnNlEj0KBnN0YXR1cxgCIAMoCzItLnNlYXJjaGVzLlZpZGVvQ2hhdFNlYXJjaFJlc3BvbnNlLlN0YXR1c0VudHJ5Ek4KD3ZlcnNpb25fc3VwcG9ydBgDIAMoCzI1LnNlYXJjaGVzLlZpZGVvQ2hhdFNlYXJjaFJlc3BvbnNlLlZlcnNpb25TdXBwb3J0RW50cnkSTAoOZXhlY3V0aXZlX21vZGUYBCADKAsyNC5zZWFyY2hlcy5WaWRlb0NoYXRTZWFyY2hSZXNwb25zZS5FeGVjdXRpdmVNb2RlRW50cnkaTQoLU3RhdHVzRW50cnkSCwoDa2V5GAEgASgJEi0KBXZhbHVlGAIgASgOMh4uZW50aXRpZXMuQ2hhdHRlck1lZXRpbmdTdGF0dXM6AjgBGjUKE1ZlcnNpb25TdXBwb3J0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ARpKChJFeGVjdXRpdmVNb2RlRW50cnkSCwoDa2V5GAEgASgJEiMKBXZhbHVlGAIgASgLMhQuZW50aXRpZXMuVXNlckNvbmZpZzoCOAEiGgoYUHVsbFNlYXJjaEZpbHRlcnNSZXF1ZXN0ItUBChlQdWxsU2VhcmNoRmlsdGVyc1Jlc3BvbnNlEj8KB2ZpbHRlcnMYASADKAsyLi5zZWFyY2hlcy5QdWxsU2VhcmNoRmlsdGVyc1Jlc3BvbnNlLkZpbHRlck1ldGEadwoKRmlsdGVyTWV0YRIRCglmaWVsZF9rZXkYASACKAkSGgoSaXNfY3VzdG1pemVkX2ZpbGVkGAIgASgIEhMKC2ZpbHRlcl9uYW1lGAMgASgJEiUKDHNlYXJjaF9zY2VuZRgEIAEoDjIPLnNlYXJjaGVzLlNjZW5lImIKG0N1c3RvbWl6ZUZpZWxkU2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAIoCRIRCglmaWVsZF9rZXkYAiACKAkSEAoFYmVnaW4YAyABKAU6ATASDwoDZW5kGAQgASgFOgIxMCJQChxDdXN0b21pemVGaWVsZFNlYXJjaFJlc3BvbnNlEg8KB3Jlc3VsdHMYASADKAkSDQoFdG90YWwYAiABKAUSEAoIaGFzX21vcmUYAyABKAgioAEKC1NlY3Rpb25NZXRhEgoKAmlkGAEgASgJEiYKBmhlYWRlchgCIAEoCzIWLnNlY3Rpb24uU2VjdGlvbkhlYWRlchImCgZmb290ZXIYAyABKAsyFi5zZWN0aW9uLlNlY3Rpb25Gb290ZXISJQoFaXRlbXMYBCADKAsyFi5zZWFyY2hlcy5TZWFyY2hSZXN1bHQSDgoGZXh0cmFzGAUgASgJIjYKCFNpZGVDYXJkEioKDGVudGl0eV9jYXJkcxgBIAMoCzIULnNlYXJjaGVzLkVudGl0eUNhcmQiGAoKRW50aXR5Q2FyZBIKCgJpZBgBIAIoCSLJBQoJU2VhcmNoVGFiEg0KBWxhYmVsGAEgAigJEiUKBHR5cGUYAiACKA4yFy5zZWFyY2hlcy5TZWFyY2hUYWJOYW1lEg4KBmFwcF9pZBgDIAEoCRIQCghpY29uX3VybBgEIAEoCRIzCgtyZXN1bHRfdHlwZRgFIAEoDjIeLnNlYXJjaGVzLlNlYXJjaFRhYi5SZXN1bHRUeXBlEiYKB2ZpbHRlcnMYBiADKA4yFS5zZWFyY2hlcy5GaWx0ZXJJblRhYhIVCg10b3Bfbl9maWx0ZXJzGAcgASgFEj8KDmN1c3RvbV9maWx0ZXJzGAggAygLMicuc2VhcmNoZXMuU2VhcmNoRmlsdGVyLkN1c3RvbUZpbHRlckluZm8SUAoXcGxhdGZvcm1fY3VzdG9tX2ZpbHRlcnMYCSADKAsyLy5zZWFyY2hlcy5QbGF0Zm9ybVNlYXJjaEZpbHRlci5DdXN0b21GaWx0ZXJJbmZvEisKB2Jpel9rZXkYCiABKA4yGi5zZWFyY2hlcy5TZWFyY2hUYWIuQml6S2V5EjEKBnBhcmFtcxgLIAEoCzIhLnNlYXJjaGVzLlNlYXJjaFRhYi5SZXF1ZXN0UGFyYW1zGoYBCg1SZXF1ZXN0UGFyYW1zEjQKBG1vZGUYASABKA4yJi5zZWFyY2hlcy5TZWFyY2hUYWIuUmVxdWVzdFBhcmFtcy5Nb2RlEhEKCXBhZ2Vfc2l6ZRgCIAEoBSIsCgRNb2RlEgsKB1VOS05PV04QABIKCgZOT1JNQUwQARILCgdOT19QQUdFEAIiMgoKUmVzdWx0VHlwZRIRCg1TTEFTSF9DT01NQU5EEAASEQoNQ1VTVE9NSVpBVElPThABIkAKBkJpektleRILCgdVTktOT1dOEAASCQoFRU1BSUwQARIMCghDQUxFTkRBUhACEhAKDEtOT1dMRURHRV9RQRADItEFChRQbGF0Zm9ybVNlYXJjaEZpbHRlchotCglFbnVtVmFsdWUSCgoCaWQYASABKAkSFAoMZGlzcGxheV90ZXh0GAIgASgJGq0DChBDdXN0b21GaWx0ZXJJbmZvEgoKAmlkGAEgAigJEhQKDGRpc3BsYXlfbmFtZRgCIAIoCRI+CgtmaWx0ZXJfdHlwZRgDIAIoDjIpLnNlYXJjaGVzLlBsYXRmb3JtU2VhcmNoRmlsdGVyLkZpbHRlclR5cGUSRwoVcHJlZGVmaW5lX2VudW1fdmFsdWVzGAQgAygLMiguc2VhcmNoZXMuUGxhdGZvcm1TZWFyY2hGaWx0ZXIuRW51bVZhbHVlEj4KC29wdGlvbl9tb2RlGAUgASgOMikuc2VhcmNoZXMuUGxhdGZvcm1TZWFyY2hGaWx0ZXIuT3B0aW9uTW9kZRIYChByZWZlcmVuY2VfYXBwX2lkGAYgASgJEjYKF2Fzc29jaWF0ZWRfc21hcnRfZmlsdGVyGAcgASgOMhUuc2VhcmNoZXMuRmlsdGVySW5UYWISGgoSZGVmYXVsdF9jaGVja2VkX2lkGAggASgJEhUKDXNob3VsZF9yZXBvcnQYCSABKAgSKQohZGlzYWJsZV9lbXB0eV9zZWFyY2hfb25seV9jaGVja2VkGAogASgIIrEBCgpGaWx0ZXJUeXBlEg8KC1VTRVJfRklMVEVSEAESDwoLVElNRV9GSUxURVIQAhIVChFTRUFSQ0hBQkxFX0ZJTFRFUhAEEhkKFVBSRURFRklORV9FTlVNX0ZJTFRFUhAFEg0KCU1BSUxfVVNFUhAGEhUKEUlOUFVUX1RFWFRfRklMVEVSEAcSFAoQVVNFUl9DSEFUX0ZJTFRFUhAIEhMKD0NBTEVOREFSX0ZJTFRFUhAJIiYKCk9wdGlvbk1vZGUSCgoGU0lOR0xFEAESDAoITVVMVElQTEUQAiK4AgoMU2VhcmNoRmlsdGVyGqwBChBDdXN0b21GaWx0ZXJJbmZvEgoKAmlkGAEgAigJEhQKDGRpc3BsYXlfbmFtZRgCIAIoCRIvCgR0eXBlGAMgAigOMiEuc2VhcmNoZXMuU2VhcmNoRmlsdGVyLkZpbHRlclR5cGUSDwoHb3B0aW9ucxgEIAMoCRI0ChVzbWFydF90YWJfZmlsdGVyX3R5cGUYBSABKA4yFS5zZWFyY2hlcy5GaWx0ZXJJblRhYiJ5CgpGaWx0ZXJUeXBlEg8KC1VTRVJfRklMVEVSEAESEwoPRFVSQVRJT05fRklMVEVSEAISGAoUU0lOR0xFX0NIT0lDRV9GSUxURVIQAxIaChZNVUxUSVBMRV9DSE9JQ0VfRklMVEVSEAQSDwoLQ0hBVF9GSUxURVIQBSI2ChlQdWxsVXNlclNlYXJjaFRhYnNSZXF1ZXN0EhkKEWlzX3F1ZXJ5X3RlbXBsYXRlGAEgASgIIkYKGlB1bGxVc2VyU2VhcmNoVGFic1Jlc3BvbnNlEigKC3NlYXJjaF90YWJzGAEgAygLMhMuc2VhcmNoZXMuU2VhcmNoVGFiIl8KGFB1dFVzZXJTZWFyY2hUYWJzUmVxdWVzdBIoCgtzZWFyY2hfdGFicxgBIAMoCzITLnNlYXJjaGVzLlNlYXJjaFRhYhIZChFpc19xdWVyeV90ZW1wbGF0ZRgCIAEoCCIbChlQdXRVc2VyU2VhcmNoVGFic1Jlc3BvbnNlIjsKHlB1bGxBdmFpbGFibGVTZWFyY2hUYWJzUmVxdWVzdBIZChFpc19xdWVyeV90ZW1wbGF0ZRgBIAEoCCJLCh9QdWxsQXZhaWxhYmxlU2VhcmNoVGFic1Jlc3BvbnNlEigKC3NlYXJjaF90YWJzGAEgAygLMhMuc2VhcmNoZXMuU2VhcmNoVGFiKrwKCgVTY2VuZRIRCg1VTktOT1dOX1NDRU5FEAASEgoOQVRfVVNFUlNfU0NFTkUQARIWChJBRERfQ0hBVFRFUlNfU0NFTkUQAhIbChdUUkFOU01JVF9NRVNTQUdFU19TQ0VORRADEhYKElNNQVJUX1NFQVJDSF9TQ0VORRAEEhkKFVNFQVJDSF9NRVNTQUdFU19TQ0VORRAFEhYKElNFQVJDSF9DSEFUU19TQ0VORRAGEhkKFVNFQVJDSF9DSEFUVEVSU19TQ0VORRAHEhYKElNFQVJDSF9VU0VSU19TQ0VORRAIEhgKFFNFQVJDSF9JTl9DSEFUX1NDRU5FEAkSGQoVU0VBUkNIX0lOX0VNQUlMX1NDRU5FEAoSIAocU0VBUkNIX01FTUJFUl9JTl9FTUFJTF9TQ0VORRALEhUKEVNFQVJDSF9ET0NTX1NDRU5FEAwSHgoaU0VBUkNIX0VNQUlMX01FU1NBR0VfU0NFTkUQDRIfChtTRUFSQ0hfRE9DU19JTl9ESUFMT0dfU0NFTkUQDhIcChhTRUFSQ0hfSU5fQ0FMRU5EQVJfU0NFTkUQDxIhCh1TRUFSQ0hfSEFEX0NIQVRfSElTVE9SWV9TQ0VORRAQEiAKHFNFQVJDSF9NRVNTQUdFX0lOX0NIQVRfU0NFTkUQERIdChlTRUFSQ0hfRklMRV9JTl9DSEFUX1NDRU5FEBISHQoZU0VBUkNIX0RPQ1NfSU5fQ0hBVF9TQ0VORRATEhsKF1BVTExfRklMRV9JTl9DSEFUX1NDRU5FEBQSGwoXUFVMTF9ET0NTX0lOX0NIQVRfU0NFTkUQFRIUChBTRUFSQ0hfQk9YX1NDRU5FEBYSFwoTU0VBUkNIX09OQ0FMTF9TQ0VORRAXEhgKFFNFQVJDSF9NRVNTQUdFX0NPVU5UEBgSFwoTU0VBUkNIX1RIUkVBRF9TQ0VORRAZEhYKEkNIQVRfTUVOVElPTl9TQ0VORRAaEhUKEVNFQVJDSF9BUFBTX1NDRU5FEBsSHAoYTEFSR0VfR1JPVVBfU0VBUkNIX1NDRU5FEBwSGgoWTEFSR0VfR1JPVVBfUkVBRF9TQ0VORRAdEhUKEVNFQVJDSF9VUkxTX1NDRU5FEB4SFQoRU0VBUkNIX0ZJTEVfU0NFTkUQHxIZChVTRUFSQ0hfRVhURVJOQUxfU0NFTkUQIBIVChFTRUFSQ0hfV0lLSV9TQ0VORRAhEh0KGVNFQVJDSF9XSUtJX0lOX0NIQVRfU0NFTkUQIhIgChxBRFZBTkNFRF9TRUFSQ0hfRklMVEVSX1NDRU5FECMSHwobU0VBUkNIX0NBTEVOREFSX0VWRU5UX1NDRU5FECQSIQodU0VBUkNIX0NIQVRTX0lOX0FEVkFOQ0VfU0NFTkUQJRIkCiBTRUFSQ0hfQ0hBVFRFUlNfSU5fQURWQU5DRV9TQ0VORRAmEhsKF1NFQVJDSF9ERVBBUlRNRU5UX1NDRU5FECcSGQoVU0VBUkNIX1BBTk9fVEFHX1NDRU5FECgSGgoWU0VBUkNIX1BBTk9fVklFV19TQ0VORRApEh4KGlNFQVJDSF9TTEFTSF9DT01NQU5EX1NDRU5FECoSHAoYU0VBUkNIX09QRU5fU0VBUkNIX1NDRU5FECsSIgoeU0VBUkNIX0RPQ1NfV0lLSV9JTl9DSEFUX1NDRU5FECwSIAocUFVMTF9ET0NTX1dJS0lfSU5fQ0hBVF9TQ0VORRAtEiEKHVNFQVJDSF9SRVNPVVJDRV9JTl9DSEFUX1NDRU5FEC4qFwoERXhwchIHCgNBTkQQABIGCgJPUhABKocCCghTb3J0VHlwZRILCgdERUZBVUxUEAASGwoXREVTQ19CWV9UQUdfQ1JFQVRFX1RJTUUQARIaChZBU0NfQllfVEFHX0NSRUFURV9USU1FEAISGwoXREVTQ19CWV9UQUdfVVBEQVRFX1RJTUUQAxIaChZBU0NfQllfVEFHX1VQREFURV9USU1FEAQSHgoaREVTQ19CWV9FTlRJVFlfQ1JFQVRFX1RJTUUQBRIdChlBU0NfQllfRU5USVRZX0NSRUFURV9USU1FEAYSHgoaREVTQ19CWV9FTlRJVFlfVVBEQVRFX1RJTUUQBxIdChlBU0NfQllfRU5USVRZX1VQREFURV9USU1FEAgqJAoIVmlld1R5cGUSBwoDVEFHEAESDwoLQ1VTVE9NX1ZJRVcQAipICg5WaWV3UGVybWlzc2lvbhIRCg1ERUZBVUxUX1NDT1BFEAASEAoMUFVCTElDX1NDT1BFEAESEQoNUFJJVkFURV9TQ09QRRACKnIKCkVudGl0eVR5cGUSEgoOVU5LTk9XTl9FTlRJVFkQABILCgdDSEFUVEVSEAESCAoEQ0hBVBACEgsKB01FU1NBR0UQAxIMCghCRUFSX0RPQxAEEgkKBUVNQUlMEAUSBwoDQVBQEAYSCgoGT05DQUxMEAcq5gEKDVNlYXJjaFRhYk5hbWUSDwoLVU5LTk9XTl9UQUIQABIPCgtNRVNTQUdFX1RBQhABEgwKCERPQ1NfVEFCEAISDAoIV0lLSV9UQUIQAxIMCghDSEFUX1RBQhAEEhAKDENBTEVOREFSX1RBQhAFEgsKB0FQUF9UQUIQBhINCglFTUFJTF9UQUIQBxIPCgtDSEFUVEVSX1RBQhAIEgwKCFBBTk9fVEFCEAkSEAoMSEVMUERFU0tfVEFCEAoSFAoPT1BFTl9TRUFSQ0hfVEFCEP8BEhQKEFNNQVJUX1NFQVJDSF9UQUIQCyqBAwoLRmlsdGVySW5UYWISDgoKU01BUlRfVVNFUhABEg4KClNNQVJUX0NIQVQQAhIOCgpTTUFSVF9USU1FEAMSEwoPU01BUlRfTUFJTF9VU0VSEAQSDgoKTVNHX1NFTkRFUhAKEgwKCE1TR19DSEFUEAsSDAoITVNHX1RZUEUQDBIRCg1NU0dfU0VORF9USU1FEA0SDQoJTVNHX0FUX01FEA4SEAoMTVNHX0hJREVfQk9UEA8SDAoIRE9DX01JTkUQHhINCglET0NfT1dORVIQHxIOCgpET0NfU0hBUkVSECASDAoIRE9DX0NIQVQQIRIMCghET0NfVFlQRRAiEg4KCkRPQ19GT1JNQVQQIxIRCg1ET0NfVklFV19USU1FECQSEwoPRE9DX01BVENIX1NDT1BFECUSDAoIRE9DX1NPUlQQJhIMCghET0NfRlJPTRAnEg4KCkdST1VQX1RZUEUQMhIQCgxHUk9VUF9NRU1CRVIQMxIOCgpHUk9VUF9TT1JUEDQyyQIKDVNlYXJjaEdyZWV0ZXISPQoGc2VhcmNoEhcuc2VhcmNoZXMuU2VhcmNoUmVxdWVzdBoYLnNlYXJjaGVzLlNlYXJjaFJlc3BvbnNlIgASTwoKc2VhcmNoVXNlchIeLnNlYXJjaGVzLlNlYXJjaENoYXR0ZXJSZXF1ZXN0Gh8uc2VhcmNoZXMuU2VhcmNoQ2hhdHRlclJlc3BvbnNlIgASVAoLc2VhcmNoR3JvdXASIC5zZWFyY2hlcy5TZWFyY2hHcm91cENoYXRSZXF1ZXN0GiEuc2VhcmNoZXMuU2VhcmNoR3JvdXBDaGF0UmVzcG9uc2UiABJSCg1zZWFyY2hNZXNzYWdlEh4uc2VhcmNoZXMuU2VhcmNoTWVzc2FnZVJlcXVlc3QaHy5zZWFyY2hlcy5TZWFyY2hNZXNzYWdlUmVzcG9uc2UiAEJMChZjb20uc3MuYW5kcm9pZC5sYXJrLnBiSANaMGNvZGUuYnl0ZWQub3JnL2xhcmsvaW0tcHJvdG9idWYvaW1wcm90by9zZWFyY2hlcw",[J,Xl]);import{enumDesc as na,extDesc as sa,fileDesc as bo,messageDesc as ha,tsEnum as da}from"@bufbuild/protobuf/codegenv2";import{file_google_protobuf_descriptor as Bo}from"@bufbuild/protobuf/wkt";var At=bo("Cg5zZWN1cml0eS5wcm90bxIIc2VjdXJpdHkiNwoKQXV0aEVudGl0eRIpCgtlbnRpdHlfdHlwZRgBIAEoDjIULnNlY3VyaXR5LkVudGl0eVR5cGUiPgoPU2VjdXJpdHlDb250ZXh0EisKDGF1dGhfY29udGV4dBgBIAEoCzIVLnNlY3VyaXR5LkF1dGhDb250ZXh0ImwKC0F1dGhDb250ZXh0EiYKDHN1YmplY3RfbGlzdBgBIAMoCzIQLnNlY3VyaXR5LkVudGl0eRIOCgZhY3Rpb24YAiABKAkSJQoLb2JqZWN0X2xpc3QYAyADKAsyEC5zZWN1cml0eS5FbnRpdHkiuwEKBkVudGl0eRIKCgJpZBgBIAIoCRITCgtlbnRpdHlfdHlwZRgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAMSKgoFZXh0cmEYBCADKAsyGy5zZWN1cml0eS5FbnRpdHkuRXh0cmFFbnRyeRINCgVzY2VuZRgFIAEoCRIUCgxiaXpQZXJtQWxsb3cYZCABKAgaLAoKRXh0cmFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBKhoKCkVudGl0eVR5cGUSDAoIUkVTRVJWRUQQADpeCg9zZWN1cml0eV9vYmplY3QSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGKKQAyABKAsyFC5zZWN1cml0eS5BdXRoRW50aXR5Ug5zZWN1cml0eU9iamVjdDpNChJzZWN1cml0eV90ZW5hbnRfaWQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGKOQAyABKAhSEHNlY3VyaXR5VGVuYW50SWQ6RgoOc2VjdXJpdHlfZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGKSQAyABKAhSDXNlY3VyaXR5RmllbGQ6Xgobc2VjdXJpdHlfc2VhcmNoX2VudGl0eV90eXBlEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiykAMgASgIUhhzZWN1cml0eVNlYXJjaEVudGl0eVR5cGU6Ywoec2VjdXJpdHlfc2VhcmNoX2RhdGFfc291cmNlX2lkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxizkAMgASgIUhpzZWN1cml0eVNlYXJjaERhdGFTb3VyY2VJZEIyWjBjb2RlLmJ5dGVkLm9yZy9sYXJrL2ltLXByb3RvYnVmL2ltcHJvdG8vc2VjdXJpdHk",[Bo]);var Ul=Co("Cg11c2VhcmNoLnByb3RvEgd1c2VhcmNoIocaCgpCYXNlRW50aXR5Gt8ICgxFbnRpdHlGaWx0ZXISOwoLdXNlcl9maWx0ZXIYASABKAsyJC51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuVXNlckZpbHRlckgAEkYKEWdyb3VwX2NoYXRfZmlsdGVyGAIgASgLMikudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLkdyb3VwQ2hhdEZpbHRlckgAEkEKDm1lc3NhZ2VfZmlsdGVyGAMgASgLMicudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLk1lc3NhZ2VGaWx0ZXJIABI5Cgp1cmxfZmlsdGVyGAQgASgLMiMudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLlVSTEZpbHRlckgAEjkKCmRvY19maWx0ZXIYBSABKAsyIy51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuRG9jRmlsdGVySAASRwoRZGVwYXJ0bWVudF9maWx0ZXIYBiABKAsyKi51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuRGVwYXJ0bWVudEZpbHRlckgAEkwKFHNsYXNoX2NvbW1hbmRfZmlsdGVyGAcgASgLMiwudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLlNsYXNoQ29tbWFuZEZpbHRlckgAEjsKC3dpa2lfZmlsdGVyGAggASgLMiQudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLldpa2lGaWx0ZXJIABJNChRjdXN0b21pemF0aW9uX2ZpbHRlchgJIAEoCzItLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5DdXN0b21pemF0aW9uRmlsdGVySAASOQoKYm90X2ZpbHRlchgKIAEoCzIjLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5Cb3RGaWx0ZXJIABI/Cg1iYW5uZXJfZmlsdGVyGAsgASgLMiYudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLkJhbm5lckZpbHRlckgAEkYKEXdpa2lfc3BhY2VfZmlsdGVyGAwgASgLMikudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLldpa2lTcGFjZUZpbHRlckgAEkEKDnBob2VuaXhfZmlsdGVyGA0gASgLMicudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLlBob2VuaXhGaWx0ZXJIABJKChNtZXNzYWdlX2ZpbGVfZmlsdGVyGA4gASgLMisudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLk1lc3NhZ2VGaWxlRmlsdGVySAASPAoMbXlfYWlfZmlsdGVyGA8gASgLMiQudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLk15QUlGaWx0ZXJIABJNChVuZXdfdXNlcl9ncm91cF9maWx0ZXIYECABKAsyLC51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuTmV3VXNlckdyb3VwRmlsdGVySABCDgoMdHlwZWRfZmlsdGVyGuoHCg5FbnRpdHlTZWxlY3RvchJBCg11c2VyX3NlbGVjdG9yGAEgASgLMigudXNlYXJjaC5Vbml2ZXJzYWxTZWxlY3RvcnMuVXNlclNlbGVjdG9ySAASRgoQcWFfY2FyZF9zZWxlY3RvchgCIAEoCzIqLnVzZWFyY2guVW5pdmVyc2FsU2VsZWN0b3JzLlFhQ2FyZFNlbGVjdG9ySAASPwoMYm90X3NlbGVjdG9yGAMgASgLMicudXNlYXJjaC5Vbml2ZXJzYWxTZWxlY3RvcnMuQm90U2VsZWN0b3JIABJTChZjdXN0b21pemF0aW9uX3NlbGVjdG9yGAQgASgLMjEudXNlYXJjaC5Vbml2ZXJzYWxTZWxlY3RvcnMuQ3VzdG9taXphdGlvblNlbGVjdG9ySAASRwoQbWVzc2FnZV9zZWxlY3RvchgFIAEoCzIrLnVzZWFyY2guVW5pdmVyc2FsU2VsZWN0b3JzLk1lc3NhZ2VTZWxlY3RvckgAEkEKDXdpa2lfc2VsZWN0b3IYBiABKAsyKC51c2VhcmNoLlVuaXZlcnNhbFNlbGVjdG9ycy5XaWtpU2VsZWN0b3JIABJMChNncm91cF9jaGF0X3NlbGVjdG9yGAcgASgLMi0udXNlYXJjaC5Vbml2ZXJzYWxTZWxlY3RvcnMuR3JvdXBDaGF0U2VsZWN0b3JIABI/Cgxkb2Nfc2VsZWN0b3IYCCABKAsyJy51c2VhcmNoLlVuaXZlcnNhbFNlbGVjdG9ycy5Eb2NTZWxlY3RvckgAElUKGGNyeXB0b19wMnBfY2hhdF9zZWxlY3RvchgJIAEoCzIxLnVzZWFyY2guVW5pdmVyc2FsU2VsZWN0b3JzLkNyeXB0b1AyUENoYXRTZWxlY3RvckgAElUKGHNoaWVsZF9wMnBfY2hhdF9zZWxlY3RvchgKIAEoCzIxLnVzZWFyY2guVW5pdmVyc2FsU2VsZWN0b3JzLlNoaWVsZFAyUENoYXRTZWxlY3RvckgAEj8KDHVybF9zZWxlY3RvchgLIAEoCzInLnVzZWFyY2guVW5pdmVyc2FsU2VsZWN0b3JzLlVSTFNlbGVjdG9ySAASSQoRcmVzb3VyY2Vfc2VsZWN0b3IYDCABKAsyLC51c2VhcmNoLlVuaXZlcnNhbFNlbGVjdG9ycy5SZXNvdXJjZVNlbGVjdG9ySAASUAoVbWVzc2FnZV9maWxlX3NlbGVjdG9yGA0gASgLMi8udXNlYXJjaC5Vbml2ZXJzYWxTZWxlY3RvcnMuTWVzc2FnZUZpbGVTZWxlY3RvckgAQhAKDnR5cGVkX3NlbGVjdG9yGs0CCgpFbnRpdHlJdGVtEicKBHR5cGUYASACKA4yGS51c2VhcmNoLlNlYXJjaEVudGl0eVR5cGUSMAoGZmlsdGVyGAIgASgLMiAudXNlYXJjaC5CYXNlRW50aXR5LkVudGl0eUZpbHRlchI0CghzZWxlY3RvchgDIAEoCzIiLnVzZWFyY2guQmFzZUVudGl0eS5FbnRpdHlTZWxlY3RvchIjCg5ib29zdF9jaGF0X2lkcxgEIAMoCUILgqYdB2NoYXRfaWQSHgoWbG9jYWxfcGFnaW5hdGlvbl90b2tlbhgFIAEoCRI6CgZleHRyYXMYBiADKAsyKi51c2VhcmNoLkJhc2VFbnRpdHkuRW50aXR5SXRlbS5FeHRyYXNFbnRyeRotCgtFeHRyYXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGtIBChJTdWdnZXN0aW9uU2VsZWN0b3ISUAoVc2VydmljZV9jYXJkX3NlbGVjdG9yGAEgASgLMi8udXNlYXJjaC5Vbml2ZXJzYWxTZWxlY3RvcnMuU2VydmljZUNhcmRTZWxlY3RvckgAElgKGXJlY29tbWVuZF9maWx0ZXJfc2VsZWN0b3IYAiABKAsyMy51c2VhcmNoLlVuaXZlcnNhbFNlbGVjdG9ycy5SZWNvbW1lbmRGaWx0ZXJTZWxlY3RvckgAQhAKDnR5cGVkX3NlbGVjdG9yGm8KEVN1Z2dlc3Rpb25Cb29zdGVyEkkKEmJhaWtlX2NhcmRfYm9vc3RlchgBIAEoCzIrLnVzZWFyY2guVW5pdmVyc2FsQm9vc3RlcnMuQmFpa2VDYXJkQm9vc3RlckgAQg8KDXR5cGVkX2Jvb3N0ZXIaqQEKDlN1Z2dlc3Rpb25JdGVtEiUKBHR5cGUYASACKA4yFy51c2VhcmNoLlN1Z2dlc3Rpb25UeXBlEjgKCHNlbGVjdG9yGAIgASgLMiYudXNlYXJjaC5CYXNlRW50aXR5LlN1Z2dlc3Rpb25TZWxlY3RvchI2Cgdib29zdGVyGAMgASgLMiUudXNlYXJjaC5CYXNlRW50aXR5LlN1Z2dlc3Rpb25Cb29zdGVyGucCCg1TZWFyY2hDb250ZXh0EhAKCHRhZ19uYW1lGAEgASgJEjQKDGVudGl0eV9pdGVtcxgCIAMoCzIeLnVzZWFyY2guQmFzZUVudGl0eS5FbnRpdHlJdGVtEj0KDWNvbW1vbl9maWx0ZXIYAyABKAsyJi51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuQ29tbW9uRmlsdGVyEjwKEHN1Z2dlc3Rpb25faXRlbXMYBCADKAsyIi51c2VhcmNoLkJhc2VFbnRpdHkuU3VnZ2VzdGlvbkl0ZW0SEgoKc291cmNlX2tleRgFIAEoCRIsCg1zZWFyY2hfYWN0aW9uGAYgASgLMhUudXNlYXJjaC5TZWFyY2hBY3Rpb24STwoaa25vd2xlZGdlX3FhX3NlYXJjaF9maWx0ZXIYByABKAsyKy51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuS25vd2xlZGdlUUFGaWx0ZXIiQwoRVW5pdmVyc2FsQm9vc3RlcnMaLgoQQmFpa2VDYXJkQm9vc3RlchIaChJzZWxlY3RlZF9lbnRpdHlfaWQYASABKAkiywsKElVuaXZlcnNhbFNlbGVjdG9ycxqOAQoMVXNlclNlbGVjdG9yEhUKDWlzX2luX2NoYXRfaWQYASABKAkSGgoSaXNfcmVhZF9tZXNzYWdlX2lkGAIgASgJEhUKDWlzX2Z1enp5X3VzZXIYAyABKAgSHgoWaXNfZGlyZWN0bHlfaW5fdGVhbV9pZBgEIAEoCRIUCgxyZWxhdGlvbl90YWcYBSABKAgaJAoLQm90U2VsZWN0b3ISFQoNaXNfaW5fY2hhdF9pZBgBIAEoCRpkChNTZXJ2aWNlQ2FyZFNlbGVjdG9yEhAKCHRlbXBsYXRlGAEgASgJEjsKC3JlbmRlcl90eXBlGAIgASgOMiYudXNlYXJjaC5Vbml2ZXJzYWxTZWxlY3RvcnMuUmVuZGVyVHlwZRpfCg5RYUNhcmRTZWxlY3RvchIQCgh0ZW1wbGF0ZRgBIAEoCRI7CgtyZW5kZXJfdHlwZRgCIAEoDjImLnVzZWFyY2guVW5pdmVyc2FsU2VsZWN0b3JzLlJlbmRlclR5cGUaVAoVQ3VzdG9taXphdGlvblNlbGVjdG9yEjsKC3JlbmRlcl90eXBlGAEgASgOMiYudXNlYXJjaC5Vbml2ZXJzYWxTZWxlY3RvcnMuUmVuZGVyVHlwZRqEAQoPTWVzc2FnZVNlbGVjdG9yEhUKDWlzX2FnZ3JlZ2F0ZWQYASABKAgSGAoQbGFzdF9jcmVhdGVfdGltZRgCIAEoAxIPCgdsYXN0X2lkGAMgASgJEhMKC2FjY2Vzc19hdXRoGAQgASgIEhoKEm5lZWRfY29sZF9ob3RfbW9kZRgFIAEoCBpGChNNZXNzYWdlRmlsZVNlbGVjdG9yEhMKC2FjY2Vzc19hdXRoGAEgASgIEhoKEm5lZWRfY29sZF9ob3RfbW9kZRgCIAEoCBopCgtVUkxTZWxlY3RvchIaChJuZWVkX2NvbGRfaG90X21vZGUYASABKAgaLgoQUmVzb3VyY2VTZWxlY3RvchIaChJuZWVkX2NvbGRfaG90X21vZGUYASABKAgaVAoMV2lraVNlbGVjdG9yEhIKCm5lZWRfb3duZXIYASABKAgSFAoMcmVsYXRpb25fdGFnGAIgASgIEhoKEm5lZWRfY29sZF9ob3RfbW9kZRgDIAEoCBqsAgoXUmVjb21tZW5kRmlsdGVyU2VsZWN0b3ISLQoOZmlsdGVyX2luX3RhYnMYASADKA4yFS5zZWFyY2hlcy5GaWx0ZXJJblRhYhJfChZyZWNvbW1lbmRfZmlsdGVyX2luZm9zGAIgAygLMj8udXNlYXJjaC5Vbml2ZXJzYWxTZWxlY3RvcnMuUmVjb21tZW5kRmlsdGVyU2VsZWN0b3IuRmlsdGVySW5mb3MagAEKC0ZpbHRlckluZm9zEiwKDWZpbHRlcl9pbl90YWIYASABKA4yFS5zZWFyY2hlcy5GaWx0ZXJJblRhYhJDChlyZWNvbW1lbmRfZmlsdGVyX3N0cmF0ZWd5GAIgASgOMiAudXNlYXJjaC5SZWNvbW1lbmRGaWx0ZXJTdHJhdGVneRpfChFHcm91cENoYXRTZWxlY3RvchIVCg1pc19pbl90ZWFtX2lkGAEgASgJEhQKDHJlbGF0aW9uX3RhZxgCIAEoCBIdChVzaG93X2VudGVycHJpc2VfZW1haWwYAyABKAgaPwoLRG9jU2VsZWN0b3ISFAoMcmVsYXRpb25fdGFnGAEgASgIEhoKEm5lZWRfY29sZF9ob3RfbW9kZRgCIAEoCBotChVDcnlwdG9QMlBDaGF0U2VsZWN0b3ISFAoMcmVsYXRpb25fdGFnGAEgASgIGi0KFVNoaWVsZFAyUENoYXRTZWxlY3RvchIUCgxyZWxhdGlvbl90YWcYASABKAgiMgoKUmVuZGVyVHlwZRILCgdBU19DQVJEEAESCQoFQkxPQ0sQAhIMCghKU09OX1JBVxADIvEuChBVbml2ZXJzYWxGaWx0ZXJzGh4KD1NlYXJjaFNvdXJjZUlEcxILCgNpZHMYASADKAkaNwoJVGltZVJhbmdlEhUKCnN0YXJ0X3RpbWUYASABKAM6ATASEwoIZW5kX3RpbWUYAiABKAM6ATAaSwoKU2VhcmNoVHlwZRIRCglpc19qb2luZWQYASABKAgSEQoJaXNfcHVibGljGAIgASgIEhcKD2lzX2Nyb3NzX3RlbmFudBgDIAEoCBpSCghDaGF0SW5mbxIPCgdjaGF0X2lkGAEgASgJEjUKCWNoYXRfdHlwZRgCIAEoDjIiLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5DaGF0VHlwZRq1AwoMQ29tbW9uRmlsdGVyEiIKFGluY2x1ZGVfb3V0ZXJfdGVuYW50GAEgASgIOgR0cnVlEhwKB2NoYXRfaWQYAiABKAlCC4KmHQdjaGF0X2lkEiIKDWZyb21fdXNlcl9pZHMYAyADKAlCC4KmHQd1c2VyX2lkEiAKC2luX2NoYXRfaWRzGAQgAygJQguCph0HY2hhdF9pZBI3Cgp0aW1lX3JhbmdlGAUgASgLMiMudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLlRpbWVSYW5nZRISCgppbl90ZWFtX2lkGAYgASgJEiIKDXdpdGhfdXNlcl9pZHMYByADKAlCC4KmHQd1c2VyX2lkEh4KFmVuYWJsZV9leHRlbmRlZF9zZWFyY2gYCCABKAgSHgoWdXNlX2V4dGVuZGVkX3NlYXJjaF92MhgJIAEoCBI2CgpjaGF0X2luZm9zGAogAygLMiIudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLkNoYXRJbmZvEjQKEnNlYXJjaF9xYV9iaXpfdHlwZRgLIAMoDjIYLnVzZWFyY2guU2VhcmNoUUFCaXpUeXBlGocDCgpVc2VyRmlsdGVyEhMKC2lzX3Jlc2lnbmVkGAEgASgIEhQKDGhhdmVfY2hhdHRlchgCIAEoCBJNCg1jdXN0b21fZmllbGRzGAMgAygLMjYudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLlVzZXJGaWx0ZXIuQ3VzdG9tRmllbGRzRW50cnkSFgoHZXhjbHVkZRgEIAEoCDoFZmFsc2USJAoVZXhjbHVkZV9vdXRlcl9jb250YWN0GAUgASgIOgVmYWxzZRImChdleGlzdHNfZW50ZXJwcmlzZV9lbWFpbBgGIAEoCDoFZmFsc2USEwoLaW5fdXNlcl9pZHMYByADKAMaHQoLRmllbGRWYWx1ZXMSDgoGdmFsdWVzGAEgAygJGmUKEUN1c3RvbUZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRI/CgV2YWx1ZRgCIAEoCzIwLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5Vc2VyRmlsdGVyLkZpZWxkVmFsdWVzOgI4ARr2AgoPR3JvdXBDaGF0RmlsdGVyEjoKDHNlYXJjaF90eXBlcxgBIAMoCzIkLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5TZWFyY2hUeXBlEiQKD2NoYXRfbWVtYmVyX2lkcxgCIAMoCUILgqYdB3VzZXJfaWQSJgoRZXhjbHVkZWRfY2hhdF9pZHMYAyADKAlCC4KmHQdjaGF0X2lkEhUKDXNlYXJjaF9jcnlwdG8YBCABKAgSFwoPYWRkYWJsZV9hc191c2VyGAUgASgIEi0KCHNvcnRUeXBlGAYgASgOMhsuZW50aXRpZXMuR3JvdXBTb3J0UnVsZVR5cGUSKwoWcmVjZW50X2FjdGl2ZV9jaGF0X2lkcxgHIAMoCUILgqYdB2NoYXRfaWQSFQoNc2VhcmNoX3NoaWVsZBgIIAEoCBIcChRjbG9zZV9zZWFyY2hfYnlfdXNlchgJIAEoCBIYChBuZWVkX2Zyb3plbl9jaGF0GAogASgIGoIBCglVUkxGaWx0ZXISNwoKdGltZV9yYW5nZRgBIAEoCzIjLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5UaW1lUmFuZ2USEwoLY3JlYXRvcl9pZHMYAiADKAkSEAoIY2hhdF9pZHMYAyADKAkSFQoNd2l0aF91c2VyX2lkcxgEIAMoCRrXBQoNTWVzc2FnZUZpbHRlchI3Cgp0aW1lX3JhbmdlGAEgASgLMiMudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLlRpbWVSYW5nZRITCgtjcmVhdG9yX2lkcxgCIAMoCRIQCghjaGF0X2lkcxgDIAMoCRJICgxzZWFyY2hfdHlwZXMYBCADKA4yMi51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuTWVzc2FnZUZpbHRlci5TZWFyY2hUeXBlEi0KDW1lc3NhZ2VfdHlwZXMYBSADKA4yFi5lbnRpdGllcy5NZXNzYWdlLlR5cGUSGwoTaW5jbHVkZV9hdF91c2VyX2lkcxgGIAMoCRJECgpmcm9tX3R5cGVzGAcgAygOMjAudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLk1lc3NhZ2VGaWx0ZXIuRnJvbVR5cGUSTQoTZXhjbHVkZWRfZnJvbV90eXBlcxgIIAMoDjIwLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5NZXNzYWdlRmlsdGVyLkZyb21UeXBlEhQKDHJlY2VpdmVyX2lkcxgJIAMoCRJDCgljaGF0X3R5cGUYCiABKA4yMC51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuTWVzc2FnZUZpbHRlci5DaGF0VHlwZRIVCg13aXRoX3VzZXJfaWRzGAsgAygJEkkKGGluY2x1ZGVfYXR0YWNobWVudF90eXBlcxgNIAMoDjInLmVudGl0aWVzLk1lc3NhZ2UuTWVzc2FnZUF0dGFjaG1lbnRUeXBlEhEKCWlzX2F0X2FsbBgOIAEoCCIiCgpTZWFyY2hUeXBlEgsKB1VOS05PV04QABIHCgNQSU4QASIdCghGcm9tVHlwZRIHCgNCT1QQARIICgRVU0VSEAIiKAoIQ2hhdFR5cGUSDgoKR1JPVVBfQ0hBVBABEgwKCFAyUF9DSEFUEAIacwoRTWVzc2FnZUZpbGVGaWx0ZXISNwoKdGltZV9yYW5nZRgBIAEoCzIjLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5UaW1lUmFuZ2USEwoLY3JlYXRvcl9pZHMYAiADKAkSEAoIY2hhdF9pZHMYAyADKAkaxAYKCURvY0ZpbHRlchIgCgtjcmVhdG9yX2lkcxgBIAMoCUILgqYdB3VzZXJfaWQSHQoIY2hhdF9pZHMYAiADKAlCC4KmHQdjaGF0X2lkEh8KBHR5cGUYAyADKA4yES5lbnRpdGllcy5Eb2NUeXBlEhgKCW9ubHlUaXRsZRgEIAEoCDoFZmFsc2USEAoIb3BlblRpbWUYBSABKAMSDwoHZW5kVGltZRgGIAEoAxIfCgpzaGFyZXJfaWRzGAcgAygJQguCph0HdXNlcl9pZBITCgtvbmx5Q29tbWVudBgIIAEoCBIrCghzb3J0VHlwZRgJIAEoDjIZLmVudGl0aWVzLkRvY1NvcnRSdWxlVHlwZRIdCghmcm9tX2lkcxgKIAMoCUILgqYdB3VzZXJfaWQSJgoKZmlsZV90eXBlcxgLIAMoDjISLmVudGl0aWVzLkZpbGVUeXBlEhUKDWZvbGRlcl90b2tlbnMYDCADKAkSGAoQc2VhcmNoX2Zhdm91cml0ZRgNIAEoCBIWCg5jcm9zc19sYW5ndWFnZRgOIAEoCBIeChZlbmFibGVfZXh0ZW5kZWRfc2VhcmNoGA8gASgIEh4KFnVzZV9leHRlbmRlZF9zZWFyY2hfdjIYECABKAgSNwoKdGltZV9yYW5nZRgSIAEoCzIjLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5UaW1lUmFuZ2USNgoKY2hhdF9pbmZvcxgTIAMoCzIiLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5DaGF0SW5mbxJRCg9zZWFyY2hTb3VyY2VJRHMYFCADKAsyOC51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuRG9jRmlsdGVyLlNlYXJjaFNvdXJjZUlEc0VudHJ5Ej4KEWNyZWF0ZV90aW1lX3JhbmdlGBUgASgLMiMudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLlRpbWVSYW5nZRphChRTZWFyY2hTb3VyY2VJRHNFbnRyeRILCgNrZXkYASABKAkSOAoFdmFsdWUYAiABKAsyKS51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuU2VhcmNoU291cmNlSURzOgI4ARpAChBEZXBhcnRtZW50RmlsdGVyEhcKD2FkZGFibGVfYXNfdXNlchgBIAEoCBITCgtiMmJfZW5hYmxlZBgCIAEoCBrMBgoKV2lraUZpbHRlchIgCgtjcmVhdG9yX2lkcxgBIAMoCUILgqYdB3VzZXJfaWQSHQoIY2hhdF9pZHMYAiADKAlCC4KmHQdjaGF0X2lkEh8KBHR5cGUYAyADKA4yES5lbnRpdGllcy5Eb2NUeXBlEhgKCW9ubHlUaXRsZRgEIAEoCDoFZmFsc2USFQoNb3BlblN0YXJ0VGltZRgFIAEoAxITCgtvcGVuRW5kVGltZRgGIAEoAxIfCgpzaGFyZXJfaWRzGAcgAygJQguCph0HdXNlcl9pZBIUCgxvbmx5X2NvbW1lbnQYCCABKAgSKwoIc29ydFR5cGUYCSABKA4yGS5lbnRpdGllcy5Eb2NTb3J0UnVsZVR5cGUSHQoIZnJvbV9pZHMYCiADKAlCC4KmHQd1c2VyX2lkEiYKCmZpbGVfdHlwZXMYCyADKA4yEi5lbnRpdGllcy5GaWxlVHlwZRIYChBzZWFyY2hfZmF2b3VyaXRlGAwgASgIEhEKCXNwYWNlX2lkcxgNIAMoCRIWCg5jcm9zc19sYW5ndWFnZRgOIAEoCBIeChZlbmFibGVfZXh0ZW5kZWRfc2VhcmNoGA8gASgIEh4KFnVzZV9leHRlbmRlZF9zZWFyY2hfdjIYECABKAgSNwoKdGltZV9yYW5nZRgSIAEoCzIjLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5UaW1lUmFuZ2USNgoKY2hhdF9pbmZvcxgTIAMoCzIiLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5DaGF0SW5mbxJSCg9zZWFyY2hTb3VyY2VJRHMYFCADKAsyOS51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuV2lraUZpbHRlci5TZWFyY2hTb3VyY2VJRHNFbnRyeRI+ChFjcmVhdGVfdGltZV9yYW5nZRgVIAEoCzIjLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5UaW1lUmFuZ2UaYQoUU2VhcmNoU291cmNlSURzRW50cnkSCwoDa2V5GAEgASgJEjgKBXZhbHVlGAIgASgLMikudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLlNlYXJjaFNvdXJjZUlEczoCOAEalwIKElNsYXNoQ29tbWFuZEZpbHRlchISCgpjb21tYW5kX2lkGAEgAigJEg4KBmV4dHJhcxgCIAMoCRJLCgdmaWx0ZXJzGAMgAygLMjoudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLlNsYXNoQ29tbWFuZEZpbHRlci5Db21tYW5kRmlsdGVyEiMKG2VuYWJsZV9zbGFzaF9jb21tYW5kX2ZpbHRlchgEIAEoCBprCg1Db21tYW5kRmlsdGVyEhEKCWZpbHRlcl9pZBgBIAIoCRIOCgZ2YWx1ZXMYAiADKAkSNwoKdGltZV9yYW5nZRgDIAEoCzIjLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5UaW1lUmFuZ2UaHQoJVGVtcGxhdGVzEhAKCHZlcnNpb25zGAEgAygJGr0BChNDdXN0b21pemF0aW9uRmlsdGVyEk8KCXRlbXBsYXRlcxgBIAMoCzI8LnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5DdXN0b21pemF0aW9uRmlsdGVyLlRlbXBsYXRlc0VudHJ5GlUKDlRlbXBsYXRlc0VudHJ5EgsKA2tleRgBIAEoCRIyCgV2YWx1ZRgCIAEoCzIjLnVzZWFyY2guVW5pdmVyc2FsRmlsdGVycy5UZW1wbGF0ZXM6AjgBGjMKCUJvdEZpbHRlchIQCghjaGF0X2lkcxgBIAMoCRIUCgxoYXZlX2NoYXR0ZXIYAiABKAgahQEKDEJhbm5lckZpbHRlchIqCgpzZWFyY2hfdGFiGAEgAigOMhYudXNlYXJjaC5TZWFyY2hUYWJOYW1lEhYKDmNhbl9zdXBwb3J0X3YyGAIgASgIEjEKDmJhbm5lcl9hY3Rpb25zGAMgAygOMhkudXNlYXJjaC5CYW5uZXJBY3Rpb25UeXBlGoACCg9XaWtpU3BhY2VGaWx0ZXISOgoQd2lraV9zcGFjZV90eXBlcxgBIAMoDjIgLnVzZWFyY2guV2lraVNwYWNlTWV0YS5TcGFjZVR5cGUSSwoRd2lraV9zcGFjZV9zb3J0ZXIYAiABKA4yMC51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuV2lraVNwYWNlRmlsdGVyLlNvcnRlchI7Chd3aWtpX3NwYWNlX3BheW1lbnRfdHlwZRgDIAMoDjIaLnVzZWFyY2guRmlsdGVyUGF5bWVudFR5cGUiJwoGU29ydGVyEgsKB0RFRkFVTFQQABIHCgNIT1QQARIHCgNORVcQAhrbAgoNUGhvZW5peEZpbHRlchITCgtjcmVhdG9yX2lkcxgBIAMoCRIQCghjaGF0X2lkcxgCIAMoCRIfCgR0eXBlGAMgAygOMhEuZW50aXRpZXMuRG9jVHlwZRIYCglvbmx5VGl0bGUYBCABKAg6BWZhbHNlEhUKDW9wZW5TdGFydFRpbWUYBSABKAMSEwoLb3BlbkVuZFRpbWUYBiABKAMSEgoKc2hhcmVyX2lkcxgHIAMoCRIUCgxvbmx5X2NvbW1lbnQYCCABKAgSKwoIc29ydFR5cGUYCSABKA4yGS5lbnRpdGllcy5Eb2NTb3J0UnVsZVR5cGUSEAoIZnJvbV9pZHMYCiADKAkSJgoKZmlsZV90eXBlcxgLIAMoDjISLmVudGl0aWVzLkZpbGVUeXBlEhgKEHNlYXJjaF9mYXZvdXJpdGUYDCABKAgSEQoJc3BhY2VfaWRzGA0gAygJGj4KCk15QUlGaWx0ZXISFgoObXVzdF9oYXZlX2NoYXQYASABKAgSGAoQbXVzdF9iZV9vbl9ib2FyZBgCIAEoCBrmAQoSTmV3VXNlckdyb3VwRmlsdGVyEjEKEHVzZXJfZ3JvdXBfdHlwZXMYASADKA4yFy5lbnRpdGllcy5Vc2VyR3JvdXBUeXBlEkoKCm5hbWVzcGFjZXMYAiADKAsyNi51c2VhcmNoLlVuaXZlcnNhbEZpbHRlcnMuTmV3VXNlckdyb3VwRmlsdGVyLk5hbWVzcGFjZRpRCglOYW1lc3BhY2USDAoEbmFtZRgBIAEoCRI2ChB2aXNpYmlsaXR5X3R5cGVzGAIgAygOMhwuZW50aXRpZXMuVXNlckdyb3VwU2NlbmVUeXBlGpEBChFLbm93bGVkZ2VRQUZpbHRlchJJCgpzY2VuZV9pbmZvGAEgAygLMjUudXNlYXJjaC5Vbml2ZXJzYWxGaWx0ZXJzLktub3dsZWRnZVFBRmlsdGVyLlNjZW5lSW5mbxoxCglTY2VuZUluZm8SEQoJYXNrX3NjZW5lGAEgASgFEhEKCW9iamVjdF9pZBgCIAEoCSIoCghDaGF0VHlwZRIOCgpHUk9VUF9DSEFUEAESDAoIUDJQX0NIQVQQAiLZCwoKUmVzdWx0TWV0YRImCgl1c2VyX21ldGEYASABKAsyES51c2VhcmNoLlVzZXJNZXRhSAASJAoIYm90X21ldGEYAiABKAsyEC51c2VhcmNoLkJvdE1ldGFIABIxCg9ncm91cF9jaGF0X21ldGEYAyABKAsyFi51c2VhcmNoLkdyb3VwQ2hhdE1ldGFIABI6ChRjcnlwdG9fcDJwX2NoYXRfbWV0YRgEIAEoCzIaLnVzZWFyY2guQ3J5cHRvUDJQQ2hhdE1ldGFIABIsCgxtZXNzYWdlX21ldGEYBSABKAsyFC51c2VhcmNoLk1lc3NhZ2VNZXRhSAASKgoLb25jYWxsX21ldGEYBiABKAsyEy51c2VhcmNoLk9uY2FsbE1ldGFIABIqCgt0aHJlYWRfbWV0YRgHIAEoCzITLnVzZWFyY2guVGhyZWFkTWV0YUgAEiQKCHVybF9tZXRhGAggASgLMhAudXNlYXJjaC5VUkxNZXRhSAASJgoHcWFfbWV0YRgJIAEoCzITLnVzZWFyY2guUUFDYXJkTWV0YUgAEjIKD2RlcGFydG1lbnRfbWV0YRgKIAEoCzIXLnVzZWFyY2guRGVwYXJ0bWVudE1ldGFIABIkCghkb2NfbWV0YRgLIAEoCzIQLnVzZWFyY2guRG9jTWV0YUgAEiQKCGFwcF9tZXRhGAwgASgLMhAudXNlYXJjaC5BcHBNZXRhSAASPQoSc2xhc2hfY29tbWFuZF9tZXRhGA0gASgLMhkudXNlYXJjaC5TbGFzaENvbW1hbmRNZXRhQgSgghkBSAASJgoJd2lraV9tZXRhGA4gASgLMhEudXNlYXJjaC5XaWtpTWV0YUgAEjIKDHNlY3Rpb25fbWV0YRgPIAEoCzIULnVzZWFyY2guU2VjdGlvbk1ldGFCBKCCGQFIABIuCg1yZXNvdXJjZV9tZXRhGBAgASgLMhUudXNlYXJjaC5SZXNvdXJjZU1ldGFIABI4ChJjdXN0b21pemF0aW9uX21ldGEYESABKAsyGi51c2VhcmNoLkN1c3RvbWl6YXRpb25NZXRhSAASLgoNZmFjaWxpdHlfbWV0YRgSIAEoCzIVLnVzZWFyY2guRmFjaWxpdHlNZXRhSAASNQoRbWFpbF9jb250YWN0X21ldGEYFCABKAsyGC51c2VhcmNoLk1haWxDb250YWN0TWV0YUgAEi4KDWNhbGVuZGFyX21ldGEYFSABKAsyFS51c2VhcmNoLkNhbGVuZGFyTWV0YUgAEjUKEWxhcmtfbWludXRlc19tZXRhGBYgASgLMhgudXNlYXJjaC5MYXJrTWludXRlc01ldGFIABIqCgtiYW5uZXJfbWV0YRgXIAEoCzITLnVzZWFyY2guQmFubmVyTWV0YUgAEjEKD3dpa2lfc3BhY2VfbWV0YRgYIAEoCzIWLnVzZWFyY2guV2lraVNwYWNlTWV0YUgAEiwKDHBob2VuaXhfbWV0YRgZIAEoCzIULnVzZWFyY2guUGhvZW5peE1ldGFIABI6ChRzaGllbGRfcDJwX2NoYXRfbWV0YRgaIAEoCzIaLnVzZWFyY2guU2hpZWxkUDJQQ2hhdE1ldGFIABIxCg91c2VyX2dyb3VwX21ldGEYGyABKAsyFi51c2VhcmNoLlVzZXJHcm91cE1ldGFIABI1ChFtZXNzYWdlX2ZpbGVfbWV0YRgcIAEoCzIYLnVzZWFyY2guTWVzc2FnZUZpbGVNZXRhSAASJwoKbXlfYWlfbWV0YRgdIAEoCzIRLnVzZWFyY2guTXlBSU1ldGFIABIsCgxwYXNzYWdlX21ldGEYHiABKAsyFC51c2VhcmNoLlBhc3NhZ2VNZXRhSAASPAoSYWdncmVfbWVzc2FnZV9tZXRhGBMgASgLMh4udXNlYXJjaC5BZ2dyZWdhdGVkTWVzc2FnZU1ldGFIAUIMCgp0eXBlZF9tZXRhQhEKD2FnZ3JlZ2F0ZWRfbWV0YSLgBgoMU2VhcmNoUmVzdWx0EgoKAmlkGAEgAigJEjEKBHR5cGUYAiABKA4yGS51c2VhcmNoLlNlYXJjaEVudGl0eVR5cGVCCKCCGQGQgxkBEhkKEXRpdGxlX2hpZ2hsaWdodGVkGAMgASgJEhsKE3N1bW1hcnlfaGlnaGxpZ2h0ZWQYBCABKAkSGgoSZXh0cmFzX2hpZ2hsaWdodGVkGAUgASgJEhIKCmF2YXRhcl9rZXkYBiABKAkSLgoLcmVzdWx0X21ldGEYByABKAsyEy51c2VhcmNoLlJlc3VsdE1ldGFCBKCCGQESMQoQZXhwbGFuYXRpb25fdGFncxgIIAMoCzIXLnVzZWFyY2guRXhwbGFuYXRpb25UYWcSLAoLZXh0cmFfaW5mb3MYCSADKAsyFy51c2VhcmNoLkV4dHJhSW5mb0Jsb2NrEhwKFGV4dHJhX2luZm9fc2VwYXJhdG9yGAogASgJEioKDWJhaWtlX2VudHJpZXMYCyADKAsyEy51c2VhcmNoLkJhaWtlRW50cnkSFQoNaXNfdHJhbnNsYXRlZBgMIAEoCBIdChVyYXdfdGl0bGVfaGlnaGxpZ2h0ZWQYDSABKAkSHwoXcmF3X3N1bW1hcnlfaGlnaGxpZ2h0ZWQYDiABKAkSCwoDYmlkGA8gASgJEhMKC2VudGl0eV90eXBlGBAgASgJEhoKCGF1dGh6X2lkGBEgASgJQgiSghkAoIIZARIVCg10cmFja2luZ19tZXRhGBIgASgJEhMKC3JlbmRlcl9kYXRhGBMgASgJEisKDXBhcnNpbmdfaW5mb3MYFCADKAsyFC51c2VhcmNoLlBhcnNpbmdJbmZvEjUKC2F2YXRhcl90eXBlGBUgASgOMiAudXNlYXJjaC5TZWFyY2hSZXN1bHQuQXZhdGFyVHlwZRI3CgxyZWNhbGxfc2NlbmUYFiABKA4yIS51c2VhcmNoLlNlYXJjaFJlc3VsdC5SZWNhbGxTY2VuZSIwCgpBdmF0YXJUeXBlEgsKB1VOS05PV04QABIICgRDSEFUEAESCwoHQ0hBVFRFUhACIj4KC1JlY2FsbFNjZW5lEgsKB0RFRkFVTFQQABIiCh5NRVNTQUdFX1BJTllJTl9UT19DSElORVNFX05BTUUQASKPAQoLUGFyc2luZ0luZm8SDAoEdGV4dBgBIAEoCRIuCgppbmZvX3N0eWxlGAIgASgOMhoudXNlYXJjaC5QYXJzaW5nSW5mby5TdHlsZSJCCgVTdHlsZRILCgdVTktOT1dOEAASDQoJSElHSExJR0hUEAESEQoNU1RSSUtFVEhST1VHSBACEgoKBk5PUk1BTBADIjIKCkJhaWtlRW50cnkSCgoCaWQYASACKAkSGAoQdGV4dF9oaWdobGlnaHRlZBgCIAIoCSJ1ChJHZXRGdWxsUGF0aFJlcXVlc3QSCgoCaWQYASACKAkSLgoLZW50aXR5X3R5cGUYAiACKA4yGS51c2VhcmNoLlNlYXJjaEVudGl0eVR5cGUSIwoIZG9jX3R5cGUYAyACKA4yES5lbnRpdGllcy5Eb2NUeXBlIigKE0dldEZ1bGxQYXRoUmVzcG9uc2USEQoJZnVsbF9wYXRoGAEgAigJIkwKFlVuaXZlcnNhbFNlYXJjaFJlcXVlc3QSMgoGaGVhZGVyGAEgAigLMiIudXNlYXJjaC5TZWFyY2hDb21tb25SZXF1ZXN0SGVhZGVyIocLChdVbml2ZXJzYWxTZWFyY2hSZXNwb25zZRIzCgZoZWFkZXIYASACKAsyIy51c2VhcmNoLlNlYXJjaENvbW1vblJlc3BvbnNlSGVhZGVyEiwKB3Jlc3VsdHMYAiADKAsyFS51c2VhcmNoLlNlYXJjaFJlc3VsdEIEoIIZARJICgxleHRyYV9maWVsZHMYAyABKAsyMi51c2VhcmNoLlVuaXZlcnNhbFNlYXJjaFJlc3BvbnNlLlNlYXJjaEV4dHJhRmllbGRzEjAKD3N1Z2dlc3Rpb25faW5mbxgEIAEoCzIXLnVzZWFyY2guU3VnZ2VzdGlvbkluZm8STgoTZmFpbGVkX2VudGl0eV9pbmZvcxgFIAMoCzIxLnVzZWFyY2guVW5pdmVyc2FsU2VhcmNoUmVzcG9uc2UuRmFpbGVkRW50aXR5SW5mbxJbChhwYXJ0aWFsX2ZhaWx1cmVfZW50aXRpZXMYBiADKAsyOS51c2VhcmNoLlVuaXZlcnNhbFNlYXJjaFJlc3BvbnNlLlBhcnRpYWxGYWlsdXJlRW50aXR5SW5mbxIeChZ0ZW1wbGF0ZV9pbmZvX3Jlc3BvbnNlGAcgASgMEjoKCG5sc19pbmZvGAggASgLMigudXNlYXJjaC5Vbml2ZXJzYWxTZWFyY2hSZXNwb25zZS5OTFNJbmZvEksKEWNvcHlfd3JpdGluZ19pbmZvGAkgASgLMjAudXNlYXJjaC5Vbml2ZXJzYWxTZWFyY2hSZXNwb25zZS5Db3B5V3JpdGluZ0luZm8a4wEKEVNlYXJjaEV4dHJhRmllbGRzEiMKG2NoYXR0ZXJfcGVybWlzc2lvbl9yZXNwb25zZRgBIAEoDBJsChZzZWFyY2hfbWV0cmljX3Jlc3BvbnNlGAIgAygLMkwudXNlYXJjaC5Vbml2ZXJzYWxTZWFyY2hSZXNwb25zZS5TZWFyY2hFeHRyYUZpZWxkcy5TZWFyY2hNZXRyaWNSZXNwb25zZUVudHJ5GjsKGVNlYXJjaE1ldHJpY1Jlc3BvbnNlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARqCAQoQRmFpbGVkRW50aXR5SW5mbxIuCgtlbnRpdHlfdHlwZRgBIAIoDjIZLnVzZWFyY2guU2VhcmNoRW50aXR5VHlwZRIeChZpc19uZWVkX2xvY2FsX2ZhbGxiYWNrGAIgAigIEh4KFmxvY2FsX3BhZ2luYXRpb25fdG9rZW4YAyABKAkaagoYUGFydGlhbEZhaWx1cmVFbnRpdHlJbmZvEi4KC2VudGl0eV90eXBlGAEgASgOMhkudXNlYXJjaC5TZWFyY2hFbnRpdHlUeXBlEh4KFmlzX25lZWRfbG9jYWxfZmFsbGJhY2sYAiABKAgatgEKB05MU0luZm8SEgoKaGFzX3Jlc3VsdBgBIAEoCBIZChFzZWFyY2hfY29udGV4dF9pZBgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRJKCgxleHBsYW5hdGlvbnMYBCADKAsyNC51c2VhcmNoLlVuaXZlcnNhbFNlYXJjaFJlc3BvbnNlLk5MU0luZm8uRXhwbGFuYXRpb24aGwoLRXhwbGFuYXRpb24SDAoEdGV4dBgBIAEoCRqmAQoPQ29weVdyaXRpbmdJbmZvEhoKEm1lc3NhZ2VfaGFzX3Jlc3VsdBgBIAEoCRIZChFtZXNzYWdlX25vX3Jlc3VsdBgCIAEoCRIoCiBtZXNzYWdlX25vX3Jlc3VsdF9mb3JfcWFfaW5fY2hhdBgDIAEoCRIyCiptZXNzYWdlX25vX3Jlc3VsdF9mb3JfcWFfaW5fbWVzc2FnZV9zZWFyY2gYBCABKAkiGwoLUmVzb3VyY2VUYWcSDAoEdGFncxgBIAMoCSLMAQoLSnVtcFRhYkluZm8SGQoRdGl0bGVfaGlnaGxpZ2h0ZWQYASABKAkSLwoJanVtcF90YWJzGAIgAygLMhwudXNlYXJjaC5KdW1wVGFiSW5mby5KdW1wVGFiGnEKB0p1bXBUYWISFgoOZm9ybWF0dGVkX3RleHQYASABKAkSKgoKc2VhcmNoX3RhYhgCIAEoDjIWLnVzZWFyY2guU2VhcmNoVGFiTmFtZRIQCghhcHBfbGluaxgDIAEoCRIQCghpY29uX3VybBgEIAEoCSKAAQoPUmVjb21tZW5kRmlsdGVyEjUKCnF1ZXJ5X2luZm8YASABKAsyIS51c2VhcmNoLlJlY29tbWVuZEZpbHRlclF1ZXJ5SW5mbxI2Cg5maWx0ZXJfcmVzdWx0cxgCIAMoCzIeLnVzZWFyY2guUmVjb21tZW5kRmlsdGVyUmVzdWx0Ii4KBFNwYW4SEwoLc3RhcnRfaW5kZXgYASACKAUSEQoJZW5kX2luZGV4GAIgAigFIjAKGFJlY29tbWVuZEZpbHRlclF1ZXJ5SW5mbxIUCgxvcmlnaW5fcXVlcnkYASABKAki0wIKFVJlY29tbWVuZEZpbHRlclJlc3VsdBIsCg1maWx0ZXJfaW5fdGFiGAEgASgOMhUuc2VhcmNoZXMuRmlsdGVySW5UYWISJgoHcmVzdWx0cxgCIAMoCzIVLnVzZWFyY2guU2VhcmNoUmVzdWx0EiAKCXNsb3Rfc3BhbhgDIAEoCzINLnVzZWFyY2guU3BhbhJDChlyZWNvbW1lbmRfZmlsdGVyX3N0cmF0ZWd5GAQgASgOMiAudXNlYXJjaC5SZWNvbW1lbmRGaWx0ZXJTdHJhdGVneRIvCgpzdWdfZmlsdGVyGAUgASgLMhsudXNlYXJjaC5TZWFyY2hBY3Rpb25GaWx0ZXISJAoDdGFiGAYgASgOMhcuc2VhcmNoZXMuU2VhcmNoVGFiTmFtZRImCgpzZWFyY2hfdGFiGAcgASgLMhIudXNlYXJjaC5TZWFyY2hUYWIirAIKDlN1Z2dlc3Rpb25JbmZvEiYKCXNpZGVfY2FyZBgBIAEoCzITLnNpZGVfY2FyZC5TaWRlQ2FyZBIqCgxyZXNvdXJjZV90YWcYAiABKAsyFC51c2VhcmNoLlJlc291cmNlVGFnEisKDWp1bXBfdGFiX2luZm8YAyABKAsyFC51c2VhcmNoLkp1bXBUYWJJbmZvEjIKEHJlY29tbWVuZF9maWx0ZXIYBCABKAsyGC51c2VhcmNoLlJlY29tbWVuZEZpbHRlchIYChBzYXZlX3NlYXJjaF92aWV3GAUgASgIEicKCnRvcF9iYW5uZXIYBiABKAsyEy51c2VhcmNoLkJhbm5lck1ldGESIgoIc3VnX21ldGEYByABKAsyEC51c2VhcmNoLlN1Z01ldGEiMgoUUXVlcnlDb21wb3NpdGlvbkluZm8SDQoFc3RhcnQYASACKAUSCwoDZW5kGAIgAigFImYKD1N1Z0ZpbHRlclBhcmFtcxImCghyYXdfdGV4dBgBIAMoDjIULnVzZWFyY2guU3VnVGV4dFR5cGUSKwoJcmljaF90ZXh0GAIgAygOMhgudXNlYXJjaC5TdWdSaWNoVGV4dFR5cGUi/QIKFUNvbGRBbmRIb3RTdG9yYWdlSW5mbxIZChFpc19uZWVkX2NvbGRfZGF0YRgBIAEoCBIRCgl0aW1lX3NpemUYAiABKAUSQAoJdGltZV91bml0GAMgASgOMicudXNlYXJjaC5Db2xkQW5kSG90U3RvcmFnZUluZm8uVGltZVVuaXQ6BFlFQVISEQoJdGltZV90ZXh0GAQgASgJEkEKDWhhc19tb3JlX2luZm8YBSABKA4yKi51c2VhcmNoLkNvbGRBbmRIb3RTdG9yYWdlSW5mby5IYXNNb3JlSW5mbyIyCghUaW1lVW5pdBIHCgNEQVkQARIICgRXRUVLEAISCQoFTU9OVEgQAxIICgRZRUFSEAQiagoLSGFzTW9yZUluZm8SCwoHVU5LTk9XThAAEhAKDEhPVF9IQVNfTU9SRRABEhMKD0hPVF9IQVNfTk9fTU9SRRACEhEKDUNPTERfSEFTX01PUkUQAxIUChBDT0xEX0hBU19OT19NT1JFEAQixA0KGVNlYXJjaENvbW1vblJlcXVlc3RIZWFkZXISFgoOc2VhcmNoX3Nlc3Npb24YASACKAkSFgoOc2Vzc2lvbl9zZXFfaWQYAiACKAUSDQoFcXVlcnkYAyACKAkSGAoQcGFnaW5hdGlvbl90b2tlbhgEIAEoCRI5Cg5zZWFyY2hfY29udGV4dBgFIAEoCzIhLnVzZWFyY2guQmFzZUVudGl0eS5TZWFyY2hDb250ZXh0Eg4KBmxvY2FsZRgGIAEoCRIVCg1pbXByZXNzaW9uX2lkGAcgASgJEkgKC2V4dHJhX3BhcmFtGAggASgLMjMudXNlYXJjaC5TZWFyY2hDb21tb25SZXF1ZXN0SGVhZGVyLlNlYXJjaEV4dHJhUGFyYW0SPwoMdGl0bGVfbGF5b3V0GAkgASgLMikudXNlYXJjaC5TZWFyY2hDb21tb25SZXF1ZXN0SGVhZGVyLkxheW91dBJBCg5zdW1tYXJ5X2xheW91dBgKIAEoCzIpLnVzZWFyY2guU2VhcmNoQ29tbW9uUmVxdWVzdEhlYWRlci5MYXlvdXQSEQoJcGFnZV9zaXplGAsgASgFEjQKDHN0b3JhZ2VfaW5mbxgMIAEoCzIeLnVzZWFyY2guQ29sZEFuZEhvdFN0b3JhZ2VJbmZvEkkKFnNlY3Rpb25fc3VtbWFyeV9sYXlvdXQYDSABKAsyKS51c2VhcmNoLlNlYXJjaENvbW1vblJlcXVlc3RIZWFkZXIuTGF5b3V0EkMKDHBhZ2luZ19pbmZvcxgOIAMoCzItLnVzZWFyY2guU2VhcmNoQ29tbW9uUmVxdWVzdEhlYWRlci5QYWdpbmdJbmZvEjAKD2NsdXN0ZXJpbmdfdHlwZRgPIAEoDjIXLnVzZWFyY2guQ2x1c3RlcmluZ1R5cGUSEAoIdGltZXpvbmUYECABKAkSFQoNdGVtcGxhdGVfaW5mbxgRIAEoDBIZChFpc19xdWVyeV90ZW1wbGF0ZRgSIAEoCBIhCgJvcBgTIAEoCzIVLnVzZWFyY2guT3BBZnRlckVycm9yEhgKEGlzVGVuYW50Tm90UGF5ZWQYFCABKAgalwYKEFNlYXJjaEV4dHJhUGFyYW0SIgoaY2hhdHRlcl9wZXJtaXNzaW9uX3JlcXVlc3QYASABKAwSGQoRcXVlcnlfaW5wdXRfc3RhdGUYAiABKAUSPQoWcXVlcnlfY29tcG9zaXRpb25faW5mbxgDIAEoCzIdLnVzZWFyY2guUXVlcnlDb21wb3NpdGlvbkluZm8SFQoNZW5hYmxlX2ZvbGRlchgEIAEoCBIWCg5uZWVkX3Nob3dfcGF0aBgFIAEoCBIeChZleHBsYW5hdGlvbl90YWdfZW5hYmxlGAYgASgIEhoKEnJlbmRlcl9kYXRhX2VuYWJsZRgHIAEoCBIzChFzdWdfZmlsdGVyX3BhcmFtcxgIIAEoCzIYLnVzZWFyY2guU3VnRmlsdGVyUGFyYW1zEhcKD2VuYWJsZV9zaG9ydGN1dBgJIAEoCBIVCg1pbmNsdWRlX215X2FpGAogASgIEiEKGWVuYWJsZV9tZXNzYWdlX2F0dGFjaG1lbnQYDCABKAgSHgoWZW5hYmxlX2RvY191c2VycHJvZmlsZRgNIAEoCBISCgplbmFibGVfbmxzGA4gASgIEh0KFWVuYWJsZV9zZWFyY2hfaW5fY2hhdBgPIAEoCBIdChVlbmFibGVfc2VjdGlvbl9jb25maWcYECABKAgSJgoeZW5hYmxlX3NlYXJjaF9yZXNvdXJjZV9pbl9jaGF0GBEgASgIEjwKFnF1ZXJ5X3BhcnNlcl9zdXBwbGllcnMYEiADKAsyHC51c2VhcmNoLlF1ZXJ5UGFyc2VyU3VwcGxpZXISYAoYYWR2X2dyYW1tYXJfcXVlcnlfc2xpY2VzGBMgAygLMj4udXNlYXJjaC5TZWFyY2hDb21tb25SZXF1ZXN0SGVhZGVyLlNlYXJjaEV4dHJhUGFyYW0uUXVlcnlTbGljZRpYCgpRdWVyeVNsaWNlEjsKDXNlbGVjdG9yX3R5cGUYASABKA4yJC51c2VhcmNoLkFkdkdyYW1tYXJDb25mLlNlbGVjdG9yVHlwZRINCgV2YWx1ZRgCIAEoCRolCgZMYXlvdXQSDAoEbGluZRgBIAEoBRINCgV3aWR0aBgCIAEoBRpRCgpQYWdpbmdJbmZvEjAKD2NsdXN0ZXJpbmdfdHlwZRgBIAEoDjIXLnVzZWFyY2guQ2x1c3RlcmluZ1R5cGUSEQoJcGFnZV9zaXplGAIgASgFIrcBChNRdWVyeVBhcnNlclN1cHBsaWVyEjoKBXNjZW5lGAEgAigOMisudXNlYXJjaC5RdWVyeVBhcnNlclN1cHBsaWVyLlF1ZXJ5UGFyc2VJbmZvEg0KBXF1ZXJ5GAIgAygJEicKBHR5cGUYAyADKA4yGS51c2VhcmNoLlNlYXJjaEVudGl0eVR5cGUiLAoOUXVlcnlQYXJzZUluZm8SGgoWUElOWUlOX1RPX0NISU5FU0VfTkFNRRABIrEHChpTZWFyY2hDb21tb25SZXNwb25zZUhlYWRlchIWCg5zZWFyY2hfc2Vzc2lvbhgBIAEoCRIWCg5zZXNzaW9uX3NlcV9pZBgCIAEoBRINCgV0b3RhbBgDIAEoBRIQCghoYXNfbW9yZRgEIAEoCBIYChBwYWdpbmF0aW9uX3Rva2VuGAUgASgJElgKFmludm9rZV9hYm5vcm1hbF9ub3RpY2UYBiABKA4yOC51c2VhcmNoLlNlYXJjaENvbW1vblJlc3BvbnNlSGVhZGVyLkludm9rZUFibm9ybWFsTm90aWNlEjQKDHN0b3JhZ2VfaW5mbxgHIAEoCzIeLnVzZWFyY2guQ29sZEFuZEhvdFN0b3JhZ2VJbmZvElgKFmNsdXN0ZXJpbmdfcmVzdWx0X2luZm8YCCABKAsyOC51c2VhcmNoLlNlYXJjaENvbW1vblJlc3BvbnNlSGVhZGVyLkNsdXN0ZXJpbmdSZXN1bHRJbmZvEhIKCmVycm9yX2NvZGUYCSABKAUSFQoNZXJyb3JfbWVzc2FnZRgKIAEoCRIiChpzZWNvbmRhcnlfc3RhZ2Vfc2VhcmNoYWJsZRgLIAEoCBIVCg10ZW1wbGF0ZV9pbmZvGAwgASgMEjIKEHJlbGlhYmlsaXR5X2luZm8YDSABKAsyGC51c2VhcmNoLlJlbGlhYmlsaXR5SW5mbxJBCgplcnJvcl9pbmZvGA4gASgLMi0udXNlYXJjaC5TZWFyY2hDb21tb25SZXNwb25zZUhlYWRlci5FcnJvckluZm8aSQoUQ2x1c3RlcmluZ1Jlc3VsdEluZm8SFwoPY29tbW9uX2hhc19tb3JlGAEgASgIEhgKEHNlY3Rpb25faGFzX21vcmUYAiABKAgaYgoJRXJyb3JJbmZvEh4KBGljb24YASABKAsyEC5lbnRpdGllcy5VREljb24SEQoJbWFpbl90ZXh0GAIgASgJEiIKA29wcxgDIAMoCzIVLnVzZWFyY2guT3BBZnRlckVycm9yIlsKFEludm9rZUFibm9ybWFsTm90aWNlEhQKEFJFUVVFU1RfQ0FOQ0VMRUQQARISCg5WRVJTSU9OX1NXSVRDSBACEhkKFVFVRVJZX0xFTkdUSF9FWENFRURFRBADIlUKCUVycm9yQ29kZRIXChJTZXJ2ZXJFcnJvckRvY0NvZGUQkQMSGQoUU2VydmVyRXJyb3JRdWVyeUNvZGUQkgMSFAoPUmVuZGVyRXJyb3JJbmZvEI9OIlMKD1JlbGlhYmlsaXR5SW5mbxJAChhlbnRpdHlfcmVsaWFiaWxpdHlfaW5mb3MYASADKAsyHi51c2VhcmNoLkVudGl0eVJlbGlhYmlsaXR5SW5mbyJXChVFbnRpdHlSZWxpYWJpbGl0eUluZm8SLgoLZW50aXR5X3R5cGUYASABKA4yGS51c2VhcmNoLlNlYXJjaEVudGl0eVR5cGUSDgoGZmFpbGVkGAIgASgIIn4KDE9wQWZ0ZXJFcnJvchItCgdvcF90eXBlGAEgASgOMhwudXNlYXJjaC5PcEFmdGVyRXJyb3IuT3BUeXBlEgwKBHRleHQYAiABKAkSDgoGcGFyYW1zGAMgASgJIiEKBk9wVHlwZRIXChNJR05PUkVfUVVPVEFfU0VBUkNIEAEilQUKCFVzZXJNZXRhEhcKAmlkGAEgAigJQguCph0HdXNlcl9pZBIVCg1pc19yZWdpc3RlcmVkGAIgASgIEiIKCXRlbmFudF9pZBgDIAEoCToAQg2Cph0JdGVuYW50X2lkEhQKDG1haWxfYWRkcmVzcxgEIAEoCRIfChdkb19ub3RfZGlzdHVyYl9lbmRfdGltZRgFIAEoAxIfChdhY2NlcHRfc21zX3Bob25lX3VyZ2VudBgGIAEoCBIcCgdjaGF0X2lkGAcgASgJQguCph0HY2hhdF9pZBIyCgtleHRyYUZpZWxkcxgIIAEoCzIdLnVzZWFyY2guVXNlck1ldGEuRXh0cmFGaWVsZHMSHwoXZW50ZXJwcmlzZV9tYWlsX2FkZHJlc3MYCSABKAkSNgoPY3VzdG9tX3N0YXR1c2VzGAogAygLMh0uZW50aXRpZXMuQ2hhdHRlckN1c3RvbVN0YXR1cxI0CgppMThuX25hbWVzGAsgAygLMiAudXNlYXJjaC5Vc2VyTWV0YS5JMThuTmFtZXNFbnRyeRIeCg9pc19jcm9zc190ZW5hbnQYDCABKAg6BWZhbHNlEicKDHJlbGF0aW9uX3RhZxgNIAEoCzIRLmVudGl0aWVzLlRhZ0RhdGESKAoMYmxvY2tfc3RhdHVzGA4gASgOMhIubWlzYy5EZW5pZWRSZWFzb24aVwoLRXh0cmFGaWVsZHMSEgoKaXNfaW5fY2hhdBgBIAEoCBIXCg9pc19yZWFkX21lc3NhZ2UYAiABKAgSGwoTaXNfZGlyZWN0bHlfaW5fdGVhbRgDIAEoCBowCg5JMThuTmFtZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIuUBCgdCb3RNZXRhEgoKAmlkGAEgAigJEhMKCXRlbmFudF9pZBgCIAEoCToAEhkKDHdpdGhfYm90X3RhZxgDIAEoCToDYm90EhkKC2luX2NvbnRhY3RzGAQgASgIOgR0cnVlEhwKDmNhbl9qb2luX2dyb3VwGAUgASgIOgR0cnVlEg8KB2NoYXRfaWQYBiABKAkSMQoLZXh0cmFGaWVsZHMYCCABKAsyHC51c2VhcmNoLkJvdE1ldGEuRXh0cmFGaWVsZHMaIQoLRXh0cmFGaWVsZHMSEgoKaXNfaW5fY2hhdBgBIAEoCCKYAgoRQ3J5cHRvUDJQQ2hhdE1ldGESCgoCaWQYASACKAkSFQoNaXNfcmVnaXN0ZXJlZBgCIAEoCBITCgl0ZW5hbnRfaWQYAyABKAk6ABIUCgxtYWlsX2FkZHJlc3MYBCABKAkSHwoXZG9fbm90X2Rpc3R1cmJfZW5kX3RpbWUYBSABKAMSHwoXYWNjZXB0X3Ntc19waG9uZV91cmdlbnQYBiABKAgSEgoKY2hhdHRlcl9pZBgHIAEoCRI2Cg9jdXN0b21fc3RhdHVzZXMYCCADKAsyHS5lbnRpdGllcy5DaGF0dGVyQ3VzdG9tU3RhdHVzEicKDHJlbGF0aW9uX3RhZxgJIAEoCzIRLmVudGl0aWVzLlRhZ0RhdGEimAIKEVNoaWVsZFAyUENoYXRNZXRhEgoKAmlkGAEgAigJEhUKDWlzX3JlZ2lzdGVyZWQYAiABKAgSEwoJdGVuYW50X2lkGAMgASgJOgASFAoMbWFpbF9hZGRyZXNzGAQgASgJEh8KF2RvX25vdF9kaXN0dXJiX2VuZF90aW1lGAUgASgDEh8KF2FjY2VwdF9zbXNfcGhvbmVfdXJnZW50GAYgASgIEhIKCmNoYXR0ZXJfaWQYByABKAkSNgoPY3VzdG9tX3N0YXR1c2VzGAggAygLMh0uZW50aXRpZXMuQ2hhdHRlckN1c3RvbVN0YXR1cxInCgxyZWxhdGlvbl90YWcYCSABKAsyES5lbnRpdGllcy5UYWdEYXRhIp4ECg1Hcm91cENoYXRNZXRhEhcKAmlkGAEgAigJQguCph0HY2hhdF9pZBIuCgRtb2RlGAIgASgOMhcuZW50aXRpZXMuQ2hhdC5DaGF0TW9kZToHREVGQVVMVBIcCg1pc19kZXBhcnRtZW50GAMgASgIOgVmYWxzZRIYCglpc190ZW5hbnQYBCABKAg6BWZhbHNlEh4KD2lzX2Nyb3NzX3RlbmFudBgFIAEoCDoFZmFsc2USEQoJb25jYWxsX2lkGAYgASgJEhEKCWlzX2NyeXB0bxgHIAEoCBIUCgxpc19wdWJsaWNfdjIYCCABKAgSEQoJaXNfbWVtYmVyGAkgASgIEhIKCmlzX21lZXRpbmcYCiABKAgSEgoKdXNlcl9jb3VudBgLIAEoBRIZChFsYXN0X21lc3NhZ2VfdGltZRgMIAEoAxIfChBpc19jcm9zc193aXRoX2thGA0gASgIOgVmYWxzZRIVCg1lbmFibGVkX2VtYWlsGA4gASgIEhMKC2Rlc2NyaXB0aW9uGA8gASgJEhgKCWlzX3NoaWVsZBgQIAEoCDoFZmFsc2USEgoKaXNfaW5fdGVhbRgRIAEoCBInCgxyZWxhdGlvbl90YWcYEiABKAsyES5lbnRpdGllcy5UYWdEYXRhEhgKEGVudGVycHJpc2VfZW1haWwYEyABKAkSHAoUdXNlcl9jb3VudF9pbnZpc2libGUYFCABKAgiWgoPTWVzc2FnZUJlaGF2aW9yEjkKFG1lc3NhZ2VfZGlzcGxheV9tb2RlGAEgASgOMhsudXNlYXJjaC5NZXNzYWdlRGlzcGxheU1vZGUSDAoEY29kZRgCIAEoBSLSBwoHRG9jTWV0YRIKCgJpZBgBIAIoCRIfCgR0eXBlGAIgASgOMhEuZW50aXRpZXMuRG9jVHlwZRITCgt1cGRhdGVfdGltZRgDIAEoAxILCgN1cmwYBCABKAkSEgoKb3duZXJfbmFtZRgFIAEoCRIdCghvd25lcl9pZBgGIAEoCUILgqYdB3VzZXJfaWQSIgoKbWVzc2FnZV9pZBgHIAEoCUIOgqYdCm1lc3NhZ2VfaWQSEAoIcG9zaXRpb24YCCABKAUSFwoPaXNfY3Jvc3NfdGVuYW50GAkgASgIEhMKC2NyZWF0ZV90aW1lGAogASgDEhYKDmxhc3Rfb3Blbl90aW1lGAsgASgDEiEKDGVkaXRfdXNlcl9pZBgMIAEoCUILgqYdB3VzZXJfaWQSFgoOZWRpdF91c2VyX25hbWUYDSABKAkSHAoHY2hhdF9pZBgOIAEoCUILgqYdB2NoYXRfaWQSEQoJdGhyZWFkX2lkGA8gASgJEhcKD3RocmVhZF9wb3NpdGlvbhgQIAEoBRIcChR0aHJlYWRfY2hhdF9wb3NpdGlvbhgRIAEoBRIcCgRpY29uGBIgASgLMg4uZW50aXRpZXMuSWNvbhINCgV0b2tlbhgTIAEoCRIXCg9pc19zaGFyZV9mb2xkZXIYFCABKAgSEQoJZmlsZV9zaXplGBUgASgDEicKDHJlbGF0aW9uX3RhZxgWIAEoCzIRLmVudGl0aWVzLlRhZ0RhdGESFQoNaXNfcmVzdHJpY3RlZBgXIAEoCBI9Cg9kaXNhYmxlZF9hY3Rpb24YGCADKAsyJC51c2VhcmNoLkRvY01ldGEuRGlzYWJsZWRBY3Rpb25FbnRyeRIOCgZvcmlfaWQYGSABKAkSIwoIb3JpX3R5cGUYGiABKA4yES5lbnRpdGllcy5Eb2NUeXBlEhEKCW9yaV90b2tlbhgbIAEoCRIRCglpY29uX2luZm8YHCABKAkSQAoTdGhyZWFkX21lc3NhZ2VfdHlwZRgdIAEoDjIjLmVudGl0aWVzLk1lc3NhZ2UuVGhyZWFkTWVzc2FnZVR5cGUSHQoVcm9vdF9tZXNzYWdlX3Bvc2l0aW9uGB4gASgFEhEKCWVkaXRfdGltZRgfIAEoAxIbChNtZXNzYWdlX3NlbmRlcl9uYW1lGCAgASgJEhEKCWZpbGVfdHlwZRghIAEoCRpPChNEaXNhYmxlZEFjdGlvbkVudHJ5EgsKA2tleRgBIAEoBRInCgV2YWx1ZRgCIAEoCzIYLnVzZWFyY2guTWVzc2FnZUJlaGF2aW9yOgI4ASLoBwoIV2lraU1ldGESCgoCaWQYASACKAkSHwoEdHlwZRgCIAEoDjIRLmVudGl0aWVzLkRvY1R5cGUSEwoLdXBkYXRlX3RpbWUYAyABKAMSFwoPaXNfY3Jvc3NfdGVuYW50GAQgASgIEhwKB2NoYXRfaWQYBSABKAlCC4KmHQdjaGF0X2lkEhAKCHBvc2l0aW9uGAYgASgFEhEKCXRocmVhZF9pZBgHIAEoCRIXCg90aHJlYWRfcG9zaXRpb24YCCABKAUSHAoUdGhyZWFkX2NoYXRfcG9zaXRpb24YCSABKAUSIgoKbWVzc2FnZV9pZBgKIAEoCUIOgqYdCm1lc3NhZ2VfaWQSEwoLY3JlYXRlX3RpbWUYCyABKAMSFgoObGFzdF9vcGVuX3RpbWUYDCABKAMSIQoMZWRpdF91c2VyX2lkGA0gASgJQguCph0HdXNlcl9pZBIWCg5lZGl0X3VzZXJfbmFtZRgOIAEoCRILCgN1cmwYDyABKAkSDwoHZG9jX3VybBgQIAEoCRIQCghzcGFjZV9pZBgRIAEoAxISCgpzcGFjZV9uYW1lGBIgASgJEg0KBXRva2VuGBMgASgJEh0KCG93bmVyX2lkGBQgASgJQguCph0HdXNlcl9pZBISCgpvd25lcl9uYW1lGBUgASgJEhEKCWZpbGVfc2l6ZRgWIAEoAxInCgxyZWxhdGlvbl90YWcYFyABKAsyES5lbnRpdGllcy5UYWdEYXRhEhUKDWlzX3Jlc3RyaWN0ZWQYGCABKAgSPgoPZGlzYWJsZWRfYWN0aW9uGBkgAygLMiUudXNlYXJjaC5XaWtpTWV0YS5EaXNhYmxlZEFjdGlvbkVudHJ5Eg4KBm9yaV9pZBgaIAEoCRIjCghvcmlfdHlwZRgbIAEoDjIRLmVudGl0aWVzLkRvY1R5cGUSEQoJb3JpX3Rva2VuGBwgASgJEhEKCWljb25faW5mbxgdIAEoCRJAChN0aHJlYWRfbWVzc2FnZV90eXBlGB4gASgOMiMuZW50aXRpZXMuTWVzc2FnZS5UaHJlYWRNZXNzYWdlVHlwZRIdChVyb290X21lc3NhZ2VfcG9zaXRpb24YHyABKAUSEQoJZWRpdF90aW1lGCAgASgDEhsKE21lc3NhZ2Vfc2VuZGVyX25hbWUYISABKAkSEgoKd2lraV90b2tlbhgiIAEoCRIRCglmaWxlX3R5cGUYIyABKAkaTwoTRGlzYWJsZWRBY3Rpb25FbnRyeRILCgNrZXkYASABKAUSJwoFdmFsdWUYAiABKAsyGC51c2VhcmNoLk1lc3NhZ2VCZWhhdmlvcjoCOAEiWgoORGVwYXJ0bWVudE1ldGESCgoCaWQYASACKAkSEwoJdGVuYW50X2lkGAIgASgJOgASJwoMcmVsYXRpb25fdGFnGAMgASgLMhEuZW50aXRpZXMuVGFnRGF0YSKaAQoVQWdncmVnYXRlZE1lc3NhZ2VNZXRhEgoKAmlkGAEgAigJEhIKCmFsbF9udW1iZXIYAiABKAUSJwoIbWVzc2FnZXMYAyADKAsyFS51c2VhcmNoLlNlYXJjaFJlc3VsdBISCgpjaGF0dGVyX2lkGAQgASgJEhMKC2lzX3AycF9jaGF0GAUgASgIEg8KB2lzX2ZvbGQYBiABKAgi2QYKC01lc3NhZ2VNZXRhEgoKAmlkGAEgAigJEiQKBHR5cGUYAiABKA4yFi5lbnRpdGllcy5NZXNzYWdlLlR5cGUSEwoLdXBkYXRlX3RpbWUYAyABKAMSEwoLY3JlYXRlX3RpbWUYBCABKAMSEAoIcG9zaXRpb24YBSABKAUSDwoHY2hhdF9pZBgGIAEoCRIoCglmaWxlX21ldGEYByABKAsyFS5lbnRpdGllcy5GaWxlQ29udGVudBIPCgdmcm9tX2lkGAggASgJEhEKCXRocmVhZF9pZBgJIAEoCRIXCg90aHJlYWRfcG9zaXRpb24YCiABKAUSHAoUdGhyZWFkX2NoYXRfcG9zaXRpb24YCyABKAUSOgoPZG9jX2V4dHJhX2luZm9zGAwgAygLMiEudXNlYXJjaC5NZXNzYWdlTWV0YS5Eb2NFeHRyYUluZm8SHQoVYXZhdGFyX2tleV9jaGF0dGVyX2lkGA0gASgDEhMKC2lzX3AycF9jaGF0GA4gASgIEhsKE2lzX2ZpbGVfYWNjZXNzX2F1dGgYDyABKAgSQAoTdGhyZWFkX21lc3NhZ2VfdHlwZRgQIAEoDjIjLmVudGl0aWVzLk1lc3NhZ2UuVGhyZWFkTWVzc2FnZVR5cGUSHQoVcm9vdF9tZXNzYWdlX3Bvc2l0aW9uGBEgASgFEhUKDWlzX3Jlc3RyaWN0ZWQYEiABKAgSQQoPZGlzYWJsZWRfYWN0aW9uGBMgAygLMigudXNlYXJjaC5NZXNzYWdlTWV0YS5EaXNhYmxlZEFjdGlvbkVudHJ5EhgKEGF0dGFjaG1lbnRfY291bnQYFCABKAUSLwoLYXR0YWNobWVudHMYFSADKAsyGi51c2VhcmNoLk1lc3NhZ2VBdHRhY2htZW50EhYKDmZyb21fdGVuYW50X2lkGBYgASgJGkoKDERvY0V4dHJhSW5mbxIfCgR0eXBlGAEgASgOMhEuZW50aXRpZXMuRG9jVHlwZRILCgN1cmwYAiABKAkSDAoEbmFtZRgDIAEoCRpPChNEaXNhYmxlZEFjdGlvbkVudHJ5EgsKA2tleRgBIAEoBRInCgV2YWx1ZRgCIAEoCzIYLnVzZWFyY2guTWVzc2FnZUJlaGF2aW9yOgI4ASKEBAoRTWVzc2FnZUF0dGFjaG1lbnQSCgoCaWQYASABKAkSPwoOYXR0YWNobWVudFR5cGUYAiABKA4yJy5lbnRpdGllcy5NZXNzYWdlLk1lc3NhZ2VBdHRhY2htZW50VHlwZRJNChRhdHRhY2htZW50UmVuZGVyVHlwZRgDIAEoDjIvLnVzZWFyY2guTWVzc2FnZUF0dGFjaG1lbnQuQXR0YWNobWVudFJlbmRlclR5cGUSDQoFdGl0bGUYBCABKAkSGQoRdGl0bGVfaGlnaGxpZ2h0ZWQYBSABKAkSDwoHc3VtbWFyeRgGIAEoCRIbChNzdW1tYXJ5X2hpZ2hsaWdodGVkGAcgASgJEiMKBWltYWdlGAsgASgLMhQuZW50aXRpZXMuSW1hZ2VTZXRWMhItCg1tZWRpYV9jb250ZW50GAwgASgLMhYuZW50aXRpZXMuTWVkaWFDb250ZW50EigKCWZpbGVfbWV0YRgNIAEoCzIVLmVudGl0aWVzLkZpbGVDb250ZW50EiIKCHVybF9tZXRhGA4gASgLMhAudXNlYXJjaC5VUkxNZXRhEiAKGGhhc19yZXNvdXJjZV9hY2Nlc3NfYXV0aBgPIAEoCCI3ChRBdHRhY2htZW50UmVuZGVyVHlwZRILCgdVTktOT1dOEAASCAoEU0xPVBABEggKBENBUkQQAiKLBAoHVVJMTWV0YRIKCgJpZBgBIAIoCRITCgtjcmVhdGVfdGltZRgCIAEoAxISCgptZXNzYWdlX2lkGAMgASgJEhgKEG1lc3NhZ2VfcG9zaXRpb24YBCABKAUSDwoHY2hhdF9pZBgFIAEoCRIPCgdmcm9tX2lkGAYgASgJEgsKA3VybBgHIAEoCRIQCghpY29uX3VybBgIIAEoCRIRCgl0aHJlYWRfaWQYCSABKAkSFwoPdGhyZWFkX3Bvc2l0aW9uGAogASgFEhwKFHRocmVhZF9jaGF0X3Bvc2l0aW9uGAsgASgFEhUKDWlzX3Jlc3RyaWN0ZWQYDCABKAgSPQoPZGlzYWJsZWRfYWN0aW9uGA0gAygLMiQudXNlYXJjaC5VUkxNZXRhLkRpc2FibGVkQWN0aW9uRW50cnkSIQoHdWRfaWNvbhgOIAEoCzIQLmVudGl0aWVzLlVESWNvbhIoCgppbWFnZV9pY29uGA8gASgLMhQuZW50aXRpZXMuSW1hZ2VTZXRWMhIbChNtZXNzYWdlX3NlbmRlcl9uYW1lGBAgASgJEhUKDXByZXZpZXdfdG9rZW4YESABKAkaTwoTRGlzYWJsZWRBY3Rpb25FbnRyeRILCgNrZXkYASABKAUSJwoFdmFsdWUYAiABKAsyGC51c2VhcmNoLk1lc3NhZ2VCZWhhdmlvcjoCOAEilAYKD01lc3NhZ2VGaWxlTWV0YRIKCgJpZBgBIAIoCRI0CglmaWxlX3R5cGUYAiABKA4yIS51c2VhcmNoLk1lc3NhZ2VGaWxlTWV0YS5GaWxlVHlwZRITCgtjcmVhdGVfdGltZRgDIAEoAxISCgptZXNzYWdlX2lkGAQgASgJEhgKEG1lc3NhZ2VfcG9zaXRpb24YBSABKAUSDwoHY2hhdF9pZBgGIAEoCRIPCgdmcm9tX2lkGAcgASgJEigKCWZpbGVfbWV0YRgIIAEoCzIVLmVudGl0aWVzLkZpbGVDb250ZW50EhYKDmZpbGVfaGllcmFyY2h5GAkgASgJEhUKDWlzX2lubmVyX2ZpbGUYCiABKAgSEQoJdGhyZWFkX2lkGAsgASgJEhcKD3RocmVhZF9wb3NpdGlvbhgMIAEoBRIcChR0aHJlYWRfY2hhdF9wb3NpdGlvbhgNIAEoBRIbChNpc19maWxlX2FjY2Vzc19hdXRoGA4gASgIEkAKE3RocmVhZF9tZXNzYWdlX3R5cGUYDyABKA4yIy5lbnRpdGllcy5NZXNzYWdlLlRocmVhZE1lc3NhZ2VUeXBlEh0KFXJvb3RfbWVzc2FnZV9wb3NpdGlvbhgQIAEoBRIVCg1pc19yZXN0cmljdGVkGBEgASgIEkUKD2Rpc2FibGVkX2FjdGlvbhgSIAMoCzIsLnVzZWFyY2guTWVzc2FnZUZpbGVNZXRhLkRpc2FibGVkQWN0aW9uRW50cnkSFAoMaXNfZGVzdHJveWVkGBMgASgIEhYKDmZyb21fdGVuYW50X2lkGBQgASgJEhsKE21lc3NhZ2Vfc2VuZGVyX25hbWUYFSABKAkSEAoIc2NlbmVfaWQYFiABKAMaTwoTRGlzYWJsZWRBY3Rpb25FbnRyeRILCgNrZXkYASABKAUSJwoFdmFsdWUYAiABKAsyGC51c2VhcmNoLk1lc3NhZ2VCZWhhdmlvcjoCOAEiLQoIRmlsZVR5cGUSCwoHVU5LTk9XThAAEggKBEZJTEUQARIKCgZGT0xERVIQAiI+CgpUaHJlYWRNZXRhEgoKAmlkGAEgAigJEg8KB2NoYXRfaWQYAiABKAkSEwoLdXBkYXRlX3RpbWUYAyABKAMiSQoKT25jYWxsTWV0YRIKCgJpZBgBIAIoCRIMCgR0YWdzGAIgAygFEg4KBmZhcV9pZBgDIAEoCRIRCglmYXFfdGl0bGUYBCABKAkiqwQKB0FwcE1ldGESCgoCaWQYASACKAkSFQoNYXBwX3N0b3JlX3VybBgCIAEoCRIUCgxpc19hdmFpbGFibGUYAyABKAgSNgoGc3RhdHVzGAQgASgOMiYuZW50aXRpZXMuQXBwU3RhdHVzSW5mby5BcHBVc2FnZVN0YXR1cxI7CgthcHBfYWJpbGl0eRgFIAMoDjImLmVudGl0aWVzLkFwcFN0YXR1c0luZm8uRmVhdHVyZUFiaWxpdHkSDgoGYm90X2lkGAYgASgJEg8KB2FwcF91cmwYByABKAkSDgoGY2xpX2lkGAggASgJEkEKFWFwcF9zaG9ydGN1dF9lbnRpdGllcxgJIAMoCzIiLnVzZWFyY2guQXBwTWV0YS5BcHBTaG9ydGN1dEVudGl0eRoxCg9BcHBTaG9ydGN1dEl0ZW0SDAoEbmFtZRgBIAIoCRIQCghhcHBfbGluaxgCIAIoCRrKAQoRQXBwU2hvcnRjdXRFbnRpdHkSOQoPUENTaG9ydGN1dEl0ZW1zGAEgAygLMiAudXNlYXJjaC5BcHBNZXRhLkFwcFNob3J0Y3V0SXRlbRI6ChBJT1NTaG9ydGN1dEl0ZW1zGAIgAygLMiAudXNlYXJjaC5BcHBNZXRhLkFwcFNob3J0Y3V0SXRlbRI+ChRBbmRyb2lkU2hvcnRjdXRJdGVtcxgDIAMoCzIgLnVzZWFyY2guQXBwTWV0YS5BcHBTaG9ydGN1dEl0ZW0iCgoIUGFub01ldGEiiQcKClFBQ2FyZE1ldGESCgoCaWQYASACKAkSEQoJc291cmNlX2lkGAIgASgJEjMKC3NvdXJjZV90eXBlGAMgASgOMh4udXNlYXJjaC5RQUNhcmRNZXRhLlNvdXJjZVR5cGUSMwoLc291cmNlX21ldGEYBCACKAsyHi51c2VhcmNoLlFBQ2FyZE1ldGEuU291cmNlTWV0YRISCgpzb3VyY2VfdXJsGAUgASgJEgwKBG5hbWUYBiABKAkSFQoNY2F0ZWdvcnlfbmFtZRgHIAEoCRIVCg1jYXRlZ29yeV9kZXNjGAggASgJEhMKC3VwZGF0ZV90aW1lGAkgASgDEhoKEmNvbnRlbnRfYXZhdGFyX2tleRgKIAEoCRIdChVyZWNvbW1lbmRlZF9xdWVzdGlvbnMYCyADKAkSFgoOcWFfcmVuZGVyX21ldGEYDCABKAkSLwoJanVtcF90eXBlGA0gASgOMhwudXNlYXJjaC5RQUNhcmRNZXRhLkp1bXBUeXBlGhwKCk9uY2FsbE1ldGESDgoGZmFxX2lkGAEgASgJGkIKB0RvY01ldGESEgoKYW5jaG9yX3VybBgBIAEoCRIjCghkb2NfdHlwZRgCIAEoDjIRLmVudGl0aWVzLkRvY1R5cGUaHgoIV2lraU1ldGESEgoKYW5jaG9yX3VybBgBIAEoCRoaCgdBcHBNZXRhEg8KB3VzZXJfaWQYASABKAka5gEKClNvdXJjZU1ldGESNQoLb25jYWxsX21ldGEYASABKAsyHi51c2VhcmNoLlFBQ2FyZE1ldGEuT25jYWxsTWV0YUgAEi8KCGRvY19tZXRhGAIgASgLMhsudXNlYXJjaC5RQUNhcmRNZXRhLkRvY01ldGFIABIvCghhcHBfbWV0YRgDIAEoCzIbLnVzZWFyY2guUUFDYXJkTWV0YS5BcHBNZXRhSAASMQoJd2lraV9tZXRhGAQgASgLMhwudXNlYXJjaC5RQUNhcmRNZXRhLldpa2lNZXRhSABCDAoKdHlwZWRfbWV0YSJICgpTb3VyY2VUeXBlEhIKDlVOS05PV05fU09VUkNFEAASCgoGT05DQUxMEAESBwoDRE9DEAISBwoDQVBQEAMSCAoEV0lLSRAEIjgKCEp1bXBUeXBlEgsKB1VOS05PV04QABIRCg1FTlRFUlBSSVNFX1FBEAESDAoISEVMUERFU0sQAiKpAwoQU2xhc2hDb21tYW5kTWV0YRJGChJzbGFzaF9jb21tYW5kX3R5cGUYASACKA4yKi51c2VhcmNoLlNsYXNoQ29tbWFuZE1ldGEuU2xhc2hDb21tYW5kVHlwZRIQCghhcHBfbGluaxgCIAEoCRI2CgN0YWcYAyADKAsyKS51c2VhcmNoLlNsYXNoQ29tbWFuZE1ldGEuU2xhc2hDb21tYW5kVGFnEg0KBWV4dHJhGAQgASgJEhEKCWltYWdlX3VybBgFIAEoCRITCgtkZXNjcmlwdGlvbhgGIAEoCRIgCg5kYXRhX3NvdXJjZV9pZBgHIAEoCUIIoIIZAZiDGQESNAoSc2VhcmNoX3FhX2Jpel90eXBlGAggASgOMhgudXNlYXJjaC5TZWFyY2hRQUJpelR5cGUSGQoRcmVuZGVyX3RpbWVfc3RhbXAYCSABKAMaLQoPU2xhc2hDb21tYW5kVGFnEgwKBHR5cGUYASACKAUSDAoEdGV4dBgCIAIoCSIqChBTbGFzaENvbW1hbmRUeXBlEgoKBkVOVElUWRAAEgoKBkZJTFRFUhABIq8BCgtTZWN0aW9uTWV0YRIUCgJpZBgBIAEoCUIIkoIZAKCCGQESJgoGaGVhZGVyGAIgASgLMhYuc2VjdGlvbi5TZWN0aW9uSGVhZGVyEiYKBmZvb3RlchgDIAEoCzIWLnNlY3Rpb24uU2VjdGlvbkZvb3RlchIqCgVpdGVtcxgEIAMoCzIVLnVzZWFyY2guU2VhcmNoUmVzdWx0QgSgghkBEg4KBmV4dHJhcxgFIAEoCSL9AgoSTWVzc2FnZVJlbGF0ZWRJbmZvEgoKAmlkGAEgAigJEhAKCHBvc2l0aW9uGAIgASgFEhMKC2NyZWF0ZV90aW1lGAMgASgDEhcKD3RocmVhZF9wb3NpdGlvbhgEIAEoBRIRCgl0aHJlYWRfaWQYBSABKAkSHAoUdGhyZWFkX2NoYXRfcG9zaXRpb24YBiABKAUSDwoHY2hhdF9pZBgHIAEoCRIVCg1pc19yZXN0cmljdGVkGAggASgIEkgKD2Rpc2FibGVkX2FjdGlvbhgJIAMoCzIvLnVzZWFyY2guTWVzc2FnZVJlbGF0ZWRJbmZvLkRpc2FibGVkQWN0aW9uRW50cnkSDwoHZnJvbV9pZBgKIAEoCRIWCg5mcm9tX3RlbmFudF9pZBgLIAEoCRpPChNEaXNhYmxlZEFjdGlvbkVudHJ5EgsKA2tleRgBIAEoBRInCgV2YWx1ZRgCIAEoCzIYLnVzZWFyY2guTWVzc2FnZUJlaGF2aW9yOgI4ASLgAgoMUmVzb3VyY2VNZXRhEgoKAmlkGAEgAigJEjgKDHJlc291cmNlVHlwZRgCIAEoDjIiLnVzZWFyY2guUmVzb3VyY2VNZXRhLlJlc291cmNlVHlwZRI5ChRtZXNzYWdlX3JlbGF0ZWRfaW5mbxgDIAEoCzIbLnVzZWFyY2guTWVzc2FnZVJlbGF0ZWRJbmZvEi0KDW1lZGlhX2NvbnRlbnQYBCABKAsyFi5lbnRpdGllcy5NZWRpYUNvbnRlbnQSIwoFaW1hZ2UYBSABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYyEiAKGGhhc19yZXNvdXJjZV9hY2Nlc3NfYXV0aBgGIAEoCBIUCgxpc19kZXN0cm95ZWQYByABKAgSEAoIc2NlbmVfaWQYCCABKAMiMQoMUmVzb3VyY2VUeXBlEgsKB1VOS05PV04QABIJCgVJTUFHRRABEgkKBVZJREVPEAIi3QEKEUN1c3RvbWl6YXRpb25NZXRhEgoKAmlkGAEgAigJEhYKDnJlbmRlcl9jb250ZW50GAIgASgJEhYKDmRhdGFfc291cmNlX2lkGAMgASgJEhUKDXRlbXBsYXRlX25hbWUYBCABKAkSNgoJY2FyZF90eXBlGAUgASgOMiMudXNlYXJjaC5DdXN0b21pemF0aW9uTWV0YS5DYXJkVHlwZRIYChBuZWVkX3N0aWNreV9wb3N0GAYgASgIIiMKCENhcmRUeXBlEgwKCEFTTF9MWU5YEAASCQoFQkxPQ0sQASJACgxGYWNpbGl0eU1ldGESCgoCaWQYASACKAkSEgoKc291cmNlX2tleRgCIAEoCRIQCghhcHBfbGluaxgDIAEoCSLtAQoPTWFpbENvbnRhY3RNZXRhEgoKAmlkGAEgAigJEjIKBHR5cGUYAiABKA4yJC51c2VhcmNoLk1haWxDb250YWN0TWV0YS5Db250YWN0VHlwZRINCgVlbWFpbBgDIAEoCSKKAQoLQ29udGFjdFR5cGUSCwoHVU5LTk9XThAAEgsKB0NIQVRURVIQARIJCgVHUk9VUBACEhQKEEVYVEVSTkFMX0NPTlRBQ1QQAxINCglOQU1FX0NBUkQQBBISCg5TSEFSRURfTUFJTEJPWBAFEg4KCk1BSUxfR1JPVVAQBhINCglOT05FX1RZUEUQByJaCgxDYWxlbmRhck1ldGESCgoCaWQYASACKAkSCwoDdXJpGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhwKBGljb24YBCABKAsyDi5lbnRpdGllcy5JY29uIkgKD0xhcmtNaW51dGVzTWV0YRIKCgJpZBgBIAIoCRILCgN1cmkYAiABKAkSHAoEaWNvbhgEIAEoCzIOLmVudGl0aWVzLkljb24icQoKQmFubmVyVGV4dBIRCglyaWNoX3RleHQYASABKAkSEQoJaGVhZF9pY29uGAIgASgJEhEKCXRhaWxfaWNvbhgDIAEoCRIqCgl0ZXh0X3R5cGUYBCABKA4yFy51c2VhcmNoLkJhbm5lclRleHRUeXBlIj8KCFNoZWxsQXBpEiMKBHR5cGUYASABKA4yFS51c2VhcmNoLlNoZWxsQXBpVHlwZRIOCgZwYXJhbXMYAiABKAki6QUKDEJhbm5lckFjdGlvbhIzCglub19hY3Rpb24YASABKAsyHi51c2VhcmNoLkJhbm5lckFjdGlvbi5Ob0FjdGlvbkgAEkEKEGhpZ2hsaWdodF9maWx0ZXIYAiABKAsyJS51c2VhcmNoLkJhbm5lckFjdGlvbi5IaWdobGlnaHRGaWx0ZXJIABJIChRzZWxlY3RfZmlsdGVyX29wdGlvbhgDIAEoCzIoLnVzZWFyY2guQmFubmVyQWN0aW9uLlNlbGVjdEZpbHRlck9wdGlvbkgAEkoKFWRpc2FibGVfZmlsdGVyX29wdGlvbhgEIAEoCzIpLnVzZWFyY2guQmFubmVyQWN0aW9uLkRpc2FibGVGaWx0ZXJPcHRpb25IABIzCglyZV9zZWFyY2gYBSABKAsyHi51c2VhcmNoLkJhbm5lckFjdGlvbi5SZVNlYXJjaEgAEjEKCHJvdXRlX3RvGAYgASgLMh0udXNlYXJjaC5CYW5uZXJBY3Rpb24uUm91dGVUb0gAGgoKCE5vQWN0aW9uGj4KD0hpZ2hsaWdodEZpbHRlchIrCgZmaWx0ZXIYASABKAsyGy51c2VhcmNoLlNlYXJjaEFjdGlvbkZpbHRlchpIChJTZWxlY3RGaWx0ZXJPcHRpb24SMgoNZmlsdGVyX29wdGlvbhgBIAEoCzIbLnVzZWFyY2guU2VhcmNoQWN0aW9uRmlsdGVyGkkKE0Rpc2FibGVGaWx0ZXJPcHRpb24SMgoNZmlsdGVyX29wdGlvbhgBIAEoCzIbLnVzZWFyY2guU2VhcmNoQWN0aW9uRmlsdGVyGkcKCFJlU2VhcmNoEg0KBXF1ZXJ5GAEgASgJEiwKB2ZpbHRlcnMYAiADKAsyGy51c2VhcmNoLlNlYXJjaEFjdGlvbkZpbHRlchovCgdSb3V0ZVRvEiQKCXNoZWxsX2FwaRgBIAEoCzIRLnVzZWFyY2guU2hlbGxBcGlCCAoGYWN0aW9uInYKDUJhbm5lckVsZW1lbnQSKAoLYmFubmVyX3RleHQYASABKAsyEy51c2VhcmNoLkJhbm5lclRleHQSJQoGYWN0aW9uGAIgASgLMhUudXNlYXJjaC5CYW5uZXJBY3Rpb24SFAoMdHJhY2tpbmdfa2V5GAMgASgJImUKEkJhbm5lckVsZW1lbnRBcnJheRIoCghlbGVtZW50cxgBIAMoCzIWLnVzZWFyY2guQmFubmVyRWxlbWVudBIlCglhbGlnbm1lbnQYAiABKA4yEi51c2VhcmNoLkFsaWdubWVudCLtAwoKQmFubmVyTWV0YRIKCgJpZBgBIAIoCRJGChRoaWdobGlnaHRfdGhlX2ZpbHRlchgCIAEoCzImLnVzZWFyY2guQmFubmVyTWV0YS5IaWdobGlnaHRUaGVGaWx0ZXJIABJIChVzZWxlY3RfZmlsdGVyX29wdGlvbnMYAyABKAsyJy51c2VhcmNoLkJhbm5lck1ldGEuU2VsZWN0RmlsdGVyT3B0aW9uc0gAEi0KCGVsZW1lbnRzGAQgAygLMhsudXNlYXJjaC5CYW5uZXJFbGVtZW50QXJyYXkSIwoFc3R5bGUYBSABKA4yFC51c2VhcmNoLkJhbm5lclN0eWxlEhQKDHRyYWNraW5nX2tleRgGIAEoCRpsChJIaWdobGlnaHRUaGVGaWx0ZXISDQoFaW50cm8YASABKAkSGgoSaGlnaHRsaWdodF9zdW1tYXJ5GAIgASgJEisKBmZpbHRlchgDIAEoCzIbLnVzZWFyY2guU2VhcmNoQWN0aW9uRmlsdGVyGlkKE1NlbGVjdEZpbHRlck9wdGlvbnMSDQoFaW50cm8YASABKAkSMwoOZmlsdGVyX29wdGlvbnMYAiADKAsyGy51c2VhcmNoLlNlYXJjaEFjdGlvbkZpbHRlckIOCgx0eXBlZF9iYW5uZXIiiQEKDEkxOE5OYW1lVGV4dBINCgV2YWx1ZRgBIAEoCRI4CgppMThuX3ZhbHVlGAIgAygLMiQudXNlYXJjaC5JMThOTmFtZVRleHQuSTE4blZhbHVlRW50cnkaMAoOSTE4blZhbHVlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKwAQoUV2lraUNvbGxhYm9yYXRvckluZm8SEQoJbWVtYmVyX2lkGAEgASgDEioKC21lbWJlcl9uYW1lGAIgASgLMhUudXNlYXJjaC5JMThOTmFtZVRleHQSMgoTbWVtYmVyX2Rpc3BsYXlfbmFtZRgDIAEoCzIVLnVzZWFyY2guSTE4Tk5hbWVUZXh0EhIKCmF2YXRhcl91cmwYBCABKAkSEQoJdGVuYW50X2lkGAUgASgDImMKDldpa2lUZW5hbnRJbmZvEhEKCXRlbmFudF9pZBgBIAEoAxIqCgt0ZW5hbnRfbmFtZRgCIAEoCzIVLnVzZWFyY2guSTE4Tk5hbWVUZXh0EhIKCmF2YXRhcl9rZXkYAyABKAkihQEKEURpc3BsYXlDcmVhdGVJbmZvEj0KFndpa2lfY29sbGFib3JhdG9yX2luZm8YASABKAsyHS51c2VhcmNoLldpa2lDb2xsYWJvcmF0b3JJbmZvEjEKEHdpa2lfdGVuYW50X2luZm8YAiABKAsyFy51c2VhcmNoLldpa2lUZW5hbnRJbmZvIp8FCg1XaWtpU3BhY2VNZXRhEhAKCHNwYWNlX2lkGAEgAigJEhIKCnNwYWNlX25hbWUYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkSDwoHaXNfc3RhchgEIAEoCBI5Cg93aWtpX3NwYWNlX3R5cGUYBSABKA4yIC51c2VhcmNoLldpa2lTcGFjZU1ldGEuU3BhY2VUeXBlEjUKCndpa2lfc2NvcGUYBiABKA4yIS51c2VhcmNoLldpa2lTcGFjZU1ldGEuU3BhY2VTY29wZRISCgpyb290X3Rva2VuGAcgASgJEhkKEWNvdmVyX2NvbG9yX3ZhbHVlGAggASgJEhsKE2NvdmVyX2lzX2dyYXBoX2RhcmsYCSABKAgSEQoJY292ZXJfa2V5GAogASgJEhQKDGNvdmVyX29yaWdpbhgLIAEoCRIXCg9jb3Zlcl90aHVtYm5haWwYDCABKAkSFAoMbWVtYmVyX2NvdW50GA0gASgFEhIKCm5vZGVfY291bnQYDiABKAUSEgoKY3JlYXRlX3VpZBgPIAEoAxIYChBjcmVhdGVfdGVuYW50X2lkGBAgASgDEjcKE2Rpc3BsYXlfY3JlYXRlX2luZm8YESABKAsyGi51c2VhcmNoLkRpc3BsYXlDcmVhdGVJbmZvEioKDHBheW1lbnRfdHlwZRgSIAEoDjIULnVzZWFyY2guUGF5bWVudFR5cGUSEgoKcGF5X2Ftb3VudBgTIAEoCSJKCglTcGFjZVR5cGUSCAoEVGVhbRAAEgwKCFBlcnNvbmFsEAESDQoJTXlMaWJyYXJ5EAISFgoSTXlMaWJyYXJ5X1Jlc2lnbmVkEAMiJQoKU3BhY2VTY29wZRILCgdQUklWQVRFEAASCgoGUFVCTElDEAEirAMKC1Bob2VuaXhNZXRhEgoKAmlkGAEgAigJEh8KBHR5cGUYAiABKA4yES5lbnRpdGllcy5Eb2NUeXBlEhMKC3VwZGF0ZV90aW1lGAMgASgDEhcKD2lzX2Nyb3NzX3RlbmFudBgEIAEoCBIPCgdjaGF0X2lkGAUgASgJEhAKCHBvc2l0aW9uGAYgASgFEhEKCXRocmVhZF9pZBgHIAEoCRIXCg90aHJlYWRfcG9zaXRpb24YCCABKAUSHAoUdGhyZWFkX2NoYXRfcG9zaXRpb24YCSABKAUSEgoKbWVzc2FnZV9pZBgKIAEoCRITCgtjcmVhdGVfdGltZRgLIAEoAxIWCg5sYXN0X29wZW5fdGltZRgMIAEoAxIUCgxlZGl0X3VzZXJfaWQYDSABKAkSFgoOZWRpdF91c2VyX25hbWUYDiABKAkSCwoDdXJsGA8gASgJEhAKCHNwYWNlX2lkGBEgASgDEhIKCnNwYWNlX25hbWUYEiABKAkSDQoFdG9rZW4YEyABKAkSEAoIb3duZXJfaWQYFCABKAkSEgoKb3duZXJfbmFtZRgVIAEoCSJQCghNeUFJTWV0YRIKCgJpZBgBIAEoCRIjCgR0eXBlGAIgASgOMhUuZW50aXRpZXMuQ2hhdHRlclR5cGUSEwoLcDJwX2NoYXRfaWQYAyABKAkiKQoLUGFzc2FnZU1ldGESCgoCaWQYASABKAkSDgoFZXh0cmEY/wEgASgJIucBCg5FeHBsYW5hdGlvblRhZxIMCgR0ZXh0GAEgASgJEhAKCHRhZ190eXBlGAIgASgJEjMKCXRhZ19zdHlsZRgDIAEoDjIgLnVzZWFyY2guRXhwbGFuYXRpb25UYWcuVGFnU3R5bGUSJAoJdGFnX2hvdmVyGAQgASgLMhEudXNlYXJjaC5UYWdIb3ZlciJaCghUYWdTdHlsZRILCgdVTktOT1dOEAASCAoEVEVYVBABEgoKBkNSWVBUTxACEgoKBlNISUVMRBADEg0KCUhFTFBfREVTSxAEEhAKDE9GRklDSUFMX0RPQxAFIioKCFRhZ0hvdmVyEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiABKAkiqwEKDkV4dHJhSW5mb0Jsb2NrEjYKDmJsb2NrX3NlZ21lbnRzGAEgAygLMh4udXNlYXJjaC5FeHRyYUluZm9CbG9ja1NlZ21lbnQSGQoRc2VnbWVudF9zZXBhcmF0b3IYAiABKAkSLwoKYmxvY2tfaWNvbhgDIAEoCzIbLnVzZWFyY2guRXh0cmFJbmZvQmxvY2tJY29uEhUKDWlzX25lZWRfaG92ZXIYBCABKAgiOgoSRXh0cmFJbmZvQmxvY2tJY29uEhIKCmhvdmVyX3RleHQYASABKAkSEAoIaWNvbl9rZXkYAiABKAki2AIKFUV4dHJhSW5mb0Jsb2NrU2VnbWVudBIYChB0ZXh0X2hpZ2hsaWdodGVkGAEgASgJEhQKDGlzX29taXNzaWJsZRgCIAEoCBI8CgR0eXBlGAMgASgOMi4udXNlYXJjaC5FeHRyYUluZm9CbG9ja1NlZ21lbnQuU2VnbWVudFRleHRUeXBlEkAKDHVzZXJfcHJvZmlsZRgEIAEoCzIqLnVzZWFyY2guRXh0cmFJbmZvQmxvY2tTZWdtZW50LlVzZXJQcm9maWxlGkUKC1VzZXJQcm9maWxlEg8KB3VzZXJfaWQYASABKAkSEQoJdXNlcl9uYW1lGAIgASgJEhIKCmF2YXRhcl9rZXkYAyABKAkiSAoPU2VnbWVudFRleHRUeXBlEgsKB1VOS05PV04QABIICgRURVhUEAESDQoJVElNRVNUQU1QEAISDwoLVVNFUlBST0ZJTEUQAyLUAwoMU2VhcmNoRW50aXR5EioKBXByb3BzGAEgAygLMhsudXNlYXJjaC5TZWFyY2hFbnRpdHkuUHJvcHMaXgoNRG9jRm9sZGVyTWV0YRITCgt1cGRhdGVfdGltZRgBIAEoAxIXCg9pc19zaGFyZV9mb2xkZXIYAiABKAgSHwoEdHlwZRgDIAEoDjIRLmVudGl0aWVzLkRvY1R5cGUaQgoLQ2hhdHRlck1ldGESHwoXZW50ZXJwcmlzZV9tYWlsX2FkZHJlc3MYASABKAkSEgoKY2hhdHRlcl9pZBgCIAEoCRqWAQoLSGlzdG9yeU1ldGESPgoPZG9jX2ZvbGRlcl9tZXRhGAEgASgLMiMudXNlYXJjaC5TZWFyY2hFbnRpdHkuRG9jRm9sZGVyTWV0YUgAEjkKDGNoYXR0ZXJfbWV0YRgCIAEoCzIhLnVzZWFyY2guU2VhcmNoRW50aXR5LkNoYXR0ZXJNZXRhSABCDAoKdHlwZWRfbWV0YRpbCgVQcm9wcxIMCgRuYW1lGAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEi8KBG1ldGEYAyABKAsyIS51c2VhcmNoLlNlYXJjaEVudGl0eS5IaXN0b3J5TWV0YSKqAQoYQWR2R3JhbW1hclNlbGVjdG9yUmVzdWx0EhMKC3N0YXJ0X2luZGV4GAEgASgFEhEKCWVuZF9pbmRleBgCIAEoBRIqCgtyZXN1bHRfbWV0YRgDIAEoCzIVLnVzZWFyY2guU2VhcmNoUmVzdWx0EjoKDHNlbGVjdG9yVHlwZRgEIAEoDjIkLnVzZWFyY2guQWR2R3JhbW1hckNvbmYuU2VsZWN0b3JUeXBlIqsCChBRdWVyeUhpc3RvcnlJbmZvEg4KBmRpZ2VzdBgBIAIoCRINCgVxdWVyeRgCIAIoCRIfCgZhY3Rpb24YAyACKAsyDy5zZWN0aW9uLkFjdGlvbhIsCg1zZWFyY2hfYWN0aW9uGAQgASgLMhUudXNlYXJjaC5TZWFyY2hBY3Rpb24SEgoKc2Vzc2lvbl9pZBgFIAEoCRInCghlbnRpdGllcxgGIAMoCzIVLnVzZWFyY2guU2VhcmNoRW50aXR5EhAKCGFwcF9saW5rGAcgASgJEhkKEWlzX3F1ZXJ5X3RlbXBsYXRlGAggASgIEj8KFGFkdl9ncmFtbWFyX3NlbGVjdG9yGAkgAygLMiEudXNlYXJjaC5BZHZHcmFtbWFyU2VsZWN0b3JSZXN1bHQiTQoUUXVlcnlIaXN0b3J5SW5mb0xpc3QSNQoScXVlcnlfaGlzdG9yeV9pbmZvGAEgAygLMhkudXNlYXJjaC5RdWVyeUhpc3RvcnlJbmZvIvIBChxQdXRTZWFyY2hRdWVyeUhpc3RvcnlSZXF1ZXN0EiwKCXF1ZXJ5TWV0YRgBIAEoCzIZLnVzZWFyY2guUXVlcnlIaXN0b3J5SW5mbxJFCgtjbGllbnRfdHlwZRgCIAEoDjIwLnVzZWFyY2guUHV0U2VhcmNoUXVlcnlIaXN0b3J5UmVxdWVzdC5DbGllbnRUeXBlIl0KCkNsaWVudFR5cGUSCwoHVU5LTk9XThAAEgsKB1dJTkRPV1MQARIHCgNNQUMQAhIJCgVMSU5VWBADEgsKB0FORFJPSUQQBBIHCgNJT1MQBRILCgdIYXJtb255EAYiHwodUHV0U2VhcmNoUXVlcnlIaXN0b3J5UmVzcG9uc2UiPAofRGVsZXRlU2VhcmNoUXVlcnlIaXN0b3J5UmVxdWVzdBIZChFpc19xdWVyeV90ZW1wbGF0ZRgBIAEoCCIiCiBEZWxldGVTZWFyY2hRdWVyeUhpc3RvcnlSZXNwb25zZSLcAgoRU2VhcmNoUGxhY2Vob2xkZXISDAoEdGV4dBgBIAIoCRI7CglpMThuX3RleHQYAiADKAsyKC51c2VhcmNoLlNlYXJjaFBsYWNlaG9sZGVyLkkxOG5UZXh0RW50cnkSDQoFcXVlcnkYAyABKAkSMAoPc2VhcmNoX3RhYl9uYW1lGAQgASgOMhcuc2VhcmNoZXMuU2VhcmNoVGFiTmFtZRInCgdmaWx0ZXJzGAUgAygLMhYudXNlYXJjaC5NYXJxdWVlRmlsdGVyEi8KEHVzZXJfc2VhcmNoX2luZm8YBiABKAsyFS51c2VhcmNoLlNlYXJjaFJlc3VsdBIUCgxtYXJxdWVlX3RleHQYByABKAkSCgoCaWQYCCABKAkSDgoGYW5zd2VyGAkgASgJGi8KDUkxOG5UZXh0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKsAQoNTWFycXVlZUZpbHRlchJAChNtZXNzYWdlX3RpbWVfZmlsdGVyGAEgASgLMiEudXNlYXJjaC5NZXNzYWdlRmlsdGVyLlRpbWVGaWx0ZXJIABJJChhtZXNzYWdlX2Zyb21fdXNlcl9maWx0ZXIYAiABKAsyJS51c2VhcmNoLk1lc3NhZ2VGaWx0ZXIuRnJvbVVzZXJGaWx0ZXJIAEIOCgx0eXBlZF9maWx0ZXIivAMKEVNtYXJ0U2VhcmNoRmlsdGVyGiIKDkZyb21Vc2VyRmlsdGVyEhAKCHVzZXJfaWRzGAEgAygJGj8KDEluQ2hhdEZpbHRlchIWCg5ncm91cF9jaGF0X2lkcxgBIAMoCRIXCg9wMnBfY2hhdHRlcl9pZHMYAiADKAkaIgoOV2l0aFVzZXJGaWx0ZXISEAoIdXNlcl9pZHMYASADKAkanQIKD1RpbWVSYW5nZUZpbHRlchJRCg90aW1lX3JhbmdlX3R5cGUYASABKA4yOC51c2VhcmNoLlNtYXJ0U2VhcmNoRmlsdGVyLlRpbWVSYW5nZUZpbHRlci5UaW1lUmFuZ2VUeXBlEh0KFWN1c3RvbWl6ZWRfc3RhcnRfdGltZRgCIAEoAxIbChNjdXN0b21pemVkX2VuZF90aW1lGAMgASgDInsKDVRpbWVSYW5nZVR5cGUSCwoHREVGQVVMVBAAEhAKDExBU1RfT05FX0RBWRABEhEKDUxBU1RfT05FX1dFRUsQAhISCg5MQVNUX09ORV9NT05USBADEhQKEExBU1RfVEhSRUVfTU9OVEgQBBIOCgpDVVNUT01JWkVEEAUipwcKDU1lc3NhZ2VGaWx0ZXIa/QEKClRpbWVGaWx0ZXISSQoPdGltZV9yYW5nZV90eXBlGAEgASgOMjAudXNlYXJjaC5NZXNzYWdlRmlsdGVyLlRpbWVGaWx0ZXIuVGltZUZpbHRlclR5cGUSHQoVY3VzdG9taXplZF9zdGFydF90aW1lGAIgASgDEhsKE2N1c3RvbWl6ZWRfZW5kX3RpbWUYAyABKAMiaAoOVGltZUZpbHRlclR5cGUSCwoHREVGQVVMVBAAEgsKB09ORV9EQVkQARIMCghPTkVfV0VFSxACEg0KCU9ORV9NT05USBADEg8KC1RIUkVFX01PTlRIEAQSDgoKQ1VTVE9NSVpFRBAFGiIKDkZyb21Vc2VyRmlsdGVyEhAKCHVzZXJfaWRzGAEgAygJGj8KDEluQ2hhdEZpbHRlchIWCg5ncm91cF9jaGF0X2lkcxgBIAMoCRIXCg9wMnBfY2hhdHRlcl9pZHMYAiADKAkaIgoOV2l0aFVzZXJGaWx0ZXISEAoIdXNlcl9pZHMYASADKAkaUQoRTWVzc2FnZVR5cGVGaWx0ZXISLAoMbWVzc2FnZV90eXBlGAEgASgOMhYuZW50aXRpZXMuTWVzc2FnZS5UeXBlEg4KBmlzX3VybBgCIAEoCBpdChBBdHRhY2htZW50RmlsdGVyEkkKGGluY2x1ZGVfYXR0YWNobWVudF90eXBlcxgBIAMoDjInLmVudGl0aWVzLk1lc3NhZ2UuTWVzc2FnZUF0dGFjaG1lbnRUeXBlGroBChBNYXRjaFNjb3BlRmlsdGVyEkYKC3Njb3BlX3R5cGVzGAEgAygOMjEudXNlYXJjaC5NZXNzYWdlRmlsdGVyLk1hdGNoU2NvcGVGaWx0ZXIuU2NvcGVUeXBlIl4KCVNjb3BlVHlwZRILCgdERUZBVUxUEAASCQoFQVRfTUUQARIVChFCTE9DS19CT1RfTUVTU0FHRRACEhYKEkJMT0NLX1VTRVJfTUVTU0FHRRADEgoKBkFUX0FMTBAEGp0BCg5DaGF0VHlwZUZpbHRlchJOChBjaGF0X2ZpbHRlcl90eXBlGAEgASgOMjQudXNlYXJjaC5NZXNzYWdlRmlsdGVyLkNoYXRUeXBlRmlsdGVyLkNoYXRGaWx0ZXJUeXBlIjsKDkNoYXRGaWx0ZXJUeXBlEgsKB0RFRkFVTFQQABIOCgpHUk9VUF9DSEFUEAESDAoIUDJQX0NIQVQQAiK+AgoPR3JvdXBDaGF0RmlsdGVyGsEBChBTZWFyY2hUeXBlRmlsdGVyEkkKC3NlYXJjaF90eXBlGAEgAygOMjQudXNlYXJjaC5Hcm91cENoYXRGaWx0ZXIuU2VhcmNoVHlwZUZpbHRlci5TZWFyY2hUeXBlImIKClNlYXJjaFR5cGUSCwoHREVGQVVMVBAAEgsKB1BSSVZBVEUQARIQCgxDUk9TU19URU5BTlQQAhIRCg1QVUJMSUNfSk9JTkVEEAMSFQoRUFVCTElDX05PVF9KT0lORUQQBBolChFJbmNsdWRlVXNlckZpbHRlchIQCgh1c2VyX2lkcxgBIAMoCRpACg5Tb3J0UnVsZUZpbHRlchIuCglzb3J0X3R5cGUYASABKA4yGy5lbnRpdGllcy5Hcm91cFNvcnRSdWxlVHlwZSL0CAoKRG9jc0ZpbHRlchoiCg5Gcm9tVXNlckZpbHRlchIQCgh1c2VyX2lkcxgBIAMoCRofCgtPd25lckZpbHRlchIQCgh1c2VyX2lkcxgBIAMoCRogCgxTaGFyZXJGaWx0ZXISEAoIdXNlcl9pZHMYASADKAkalgEKE0NvbnRhaW5lclR5cGVGaWx0ZXISTQoOY29udGFpbmVyX3R5cGUYASABKA4yNS51c2VhcmNoLkRvY3NGaWx0ZXIuQ29udGFpbmVyVHlwZUZpbHRlci5Db250YWluZXJUeXBlIjAKDUNvbnRhaW5lclR5cGUSCwoHREVGQVVMVBAAEggKBERPQ1MQARIICgRXSUtJEAIaOwoQT2JqZWN0VHlwZUZpbHRlchInCgxvYmplY3RfdHlwZXMYASADKA4yES5lbnRpdGllcy5Eb2NUeXBlGp4CChNPcGVuVGltZVJhbmdlRmlsdGVyEk4KD3RpbWVfcmFuZ2VfdHlwZRgBIAEoDjI1LnVzZWFyY2guRG9jc0ZpbHRlci5PcGVuVGltZVJhbmdlRmlsdGVyLlRpbWVSYW5nZVR5cGUSHQoVY3VzdG9taXplZF9zdGFydF90aW1lGAIgASgDEhsKE2N1c3RvbWl6ZWRfZW5kX3RpbWUYAyABKAMiewoNVGltZVJhbmdlVHlwZRILCgdERUZBVUxUEAASEAoMTEFTVF9PTkVfREFZEAESEQoNTEFTVF9PTkVfV0VFSxACEhIKDkxBU1RfT05FX01PTlRIEAMSFAoQTEFTVF9USFJFRV9NT05USBAEEg4KCkNVU1RPTUlaRUQQBRqoAQoPTWF0Y2hUeXBlRmlsdGVyEkEKCm1hdGNoX3R5cGUYASABKA4yLS51c2VhcmNoLkRvY3NGaWx0ZXIuTWF0Y2hUeXBlRmlsdGVyLk1hdGNoVHlwZSJSCglNYXRjaFR5cGUSCwoHREVGQVVMVBAAEg4KCk9OTFlfVElUTEUQARIQCgxPTkxZX0NPTU1FTlQQAhIWChJUUkFOU0xBVEVfRU5fVE9fQ04QAxo/CgxJbkNoYXRGaWx0ZXISFgoOZ3JvdXBfY2hhdF9pZHMYASADKAkSFwoPcDJwX2NoYXR0ZXJfaWRzGAIgAygJGpIBCgZTb3J0ZXISPQoNc29ydF9ieV9maWVsZBgBIAEoDjImLnVzZWFyY2guRG9jc0ZpbHRlci5Tb3J0ZXIuU29ydEJ5RmllbGQiSQoLU29ydEJ5RmllbGQSCwoHREVGQVVMVBAAEg0KCU9QRU5fVElNRRABEg0KCUVESVRfVElNRRACEg8KC0NSRUFURV9USU1FEAMaJwoOSW5Gb2xkZXJGaWx0ZXISFQoNZm9sZGVyX3Rva2VucxgBIAMoCRomChFJbldpa2lTcGFjZUZpbHRlchIRCglzcGFjZV9pZHMYASADKAkaNgoURW5hYmxlRXh0ZW5kZWRTZWFyY2gSHgoWZW5hYmxlX2V4dGVuZGVkX3NlYXJjaBgBIAEoCCJYChBPcGVuU2VhcmNoRmlsdGVyGkQKFE9wZW5TZWFyY2hTb3J0RmlsdGVyEhgKEGN1c3RvbV9maWx0ZXJfaWQYASABKAkSEgoKY2hlY2tlZF9pZBgCIAEoCSKJAQocUHVsbFNlYXJjaFBsYWNlaG9sZGVyUmVxdWVzdBIyChBwbGFjZWhvbGRlcl90eXBlGAEgASgOMhgudXNlYXJjaC5QbGFjZUhvbGRlclR5cGUSGwoTcmVtYWluaW5nX3F1ZXJ5X2lkcxgCIAMoCRIYChBuZWVkX3Nob3dfYW5zd2VyGAMgASgIIp0BCh1QdWxsU2VhcmNoUGxhY2Vob2xkZXJSZXNwb25zZRIyChBwbGFjZWhvbGRlcl90eXBlGAEgASgOMhgudXNlYXJjaC5QbGFjZUhvbGRlclR5cGUSNgoSc2VhcmNoX3BsYWNlaG9sZGVyGAIgAygLMhoudXNlYXJjaC5TZWFyY2hQbGFjZWhvbGRlchIQCghoYXNfbW9yZRgDIAEoCCJ8ChVQdXNoU2VhcmNoUGxhY2Vob2xkZXISLwoLcGxhY2Vob2xkZXIYASACKAsyGi51c2VhcmNoLlNlYXJjaFBsYWNlaG9sZGVyEjIKEHBsYWNlaG9sZGVyX3R5cGUYAiABKA4yGC51c2VhcmNoLlBsYWNlSG9sZGVyVHlwZSLDAQogU2VhcmNoUGxhY2Vob2xkZXJDYWxsQmFja1JlcXVlc3QSMgoQcGxhY2Vob2xkZXJfdHlwZRgBIAEoDjIYLnVzZWFyY2guUGxhY2VIb2xkZXJUeXBlEjYKEnNlYXJjaF9wbGFjZWhvbGRlchgCIAEoCzIaLnVzZWFyY2guU2VhcmNoUGxhY2Vob2xkZXISMwoLYWN0aW9uX3R5cGUYAyABKA4yHi51c2VhcmNoLlBsYWNlaG9sZGVyQWN0aW9uVHlwZSIjCiFTZWFyY2hQbGFjZWhvbGRlckNhbGxCYWNrUmVzcG9uc2UimAEKClNlYXJjaFZpZXcSCgoCaWQYASABKAMSDAoEbmFtZRgCIAEoCRIsCg1zZWFyY2hfYWN0aW9uGAMgAigLMhUudXNlYXJjaC5TZWFyY2hBY3Rpb24SEgoKaXNfaW52YWxpZBgEIAEoCBIuCg9hY3Rpb25fZW50aXRpZXMYBSADKAsyFS51c2VhcmNoLlNlYXJjaFJlc3VsdCKjAQoMU2VhcmNoQWN0aW9uEg0KBXF1ZXJ5GAEgASgJEiQKA3RhYhgCIAEoDjIXLnNlYXJjaGVzLlNlYXJjaFRhYk5hbWUSLAoHZmlsdGVycxgDIAMoCzIbLnVzZWFyY2guU2VhcmNoQWN0aW9uRmlsdGVyEg4KBmFwcF9pZBgEIAEoCRIgChhjYXBzdWxlX3JlY29tbWVuZF9lbmFibGUYBSABKAgiqQ8KElNlYXJjaEFjdGlvbkZpbHRlchJLChZzbWFydF9zZWFyY2hfZnJvbV91c2VyGAEgASgLMikudXNlYXJjaC5TbWFydFNlYXJjaEZpbHRlci5Gcm9tVXNlckZpbHRlckgAEkcKFHNtYXJ0X3NlYXJjaF9pbl9jaGF0GAIgASgLMicudXNlYXJjaC5TbWFydFNlYXJjaEZpbHRlci5JbkNoYXRGaWx0ZXJIABJNChdzbWFydF9zZWFyY2hfdGltZV9yYW5nZRgDIAEoCzIqLnVzZWFyY2guU21hcnRTZWFyY2hGaWx0ZXIuVGltZVJhbmdlRmlsdGVySAASSwoWc21hcnRfc2VhcmNoX3dpdGhfdXNlchgEIAEoCzIpLnVzZWFyY2guU21hcnRTZWFyY2hGaWx0ZXIuV2l0aFVzZXJGaWx0ZXJIABI/ChJtZXNzYWdlX3RpbWVfcmFuZ2UYCyABKAsyIS51c2VhcmNoLk1lc3NhZ2VGaWx0ZXIuVGltZUZpbHRlckgAEkIKEW1lc3NhZ2VfZnJvbV91c2VyGAwgASgLMiUudXNlYXJjaC5NZXNzYWdlRmlsdGVyLkZyb21Vc2VyRmlsdGVySAASPgoPbWVzc2FnZV9pbl9jaGF0GA0gASgLMiMudXNlYXJjaC5NZXNzYWdlRmlsdGVyLkluQ2hhdEZpbHRlckgAEkAKDG1lc3NhZ2VfdHlwZRgOIAEoCzIoLnVzZWFyY2guTWVzc2FnZUZpbHRlci5NZXNzYWdlVHlwZUZpbHRlckgAEkYKE21lc3NhZ2VfbWF0Y2hfc2NvcGUYDyABKAsyJy51c2VhcmNoLk1lc3NhZ2VGaWx0ZXIuTWF0Y2hTY29wZUZpbHRlckgAEkEKEGNoYXRfdHlwZV9maWx0ZXIYECABKAsyJS51c2VhcmNoLk1lc3NhZ2VGaWx0ZXIuQ2hhdFR5cGVGaWx0ZXJIABJCChFtZXNzYWdlX3dpdGhfdXNlchgRIAEoCzIlLnVzZWFyY2guTWVzc2FnZUZpbHRlci5XaXRoVXNlckZpbHRlckgAEkUKEm1lc3NhZ2VfYXR0YWNobWVudBgSIAEoCzInLnVzZWFyY2guTWVzc2FnZUZpbHRlci5BdHRhY2htZW50RmlsdGVySAASSwoWZ3JvdXBfY2hhdF9zZWFyY2hfdHlwZRgVIAEoCzIpLnVzZWFyY2guR3JvdXBDaGF0RmlsdGVyLlNlYXJjaFR5cGVGaWx0ZXJIABJNChdncm91cF9jaGF0X2luY2x1ZGVfdXNlchgWIAEoCzIqLnVzZWFyY2guR3JvdXBDaGF0RmlsdGVyLkluY2x1ZGVVc2VyRmlsdGVySAASRwoUZ3JvdXBfY2hhdF9zb3J0X3R5cGUYFyABKAsyJy51c2VhcmNoLkdyb3VwQ2hhdEZpbHRlci5Tb3J0UnVsZUZpbHRlckgAEjwKDmRvY3NfZnJvbV91c2VyGB8gASgLMiIudXNlYXJjaC5Eb2NzRmlsdGVyLkZyb21Vc2VyRmlsdGVySAASNQoKZG9jc19vd25lchggIAEoCzIfLnVzZWFyY2guRG9jc0ZpbHRlci5Pd25lckZpbHRlckgAEjcKC2RvY3Nfc2hhcmVyGCEgASgLMiAudXNlYXJjaC5Eb2NzRmlsdGVyLlNoYXJlckZpbHRlckgAEkYKE2RvY3NfY29udGFpbmVyX3R5cGUYIiABKAsyJy51c2VhcmNoLkRvY3NGaWx0ZXIuQ29udGFpbmVyVHlwZUZpbHRlckgAEkAKEGRvY3Nfb2JqZWN0X3R5cGUYIyABKAsyJC51c2VhcmNoLkRvY3NGaWx0ZXIuT2JqZWN0VHlwZUZpbHRlckgAEkcKFGRvY3Nfb3Blbl90aW1lX3JhbmdlGCQgASgLMicudXNlYXJjaC5Eb2NzRmlsdGVyLk9wZW5UaW1lUmFuZ2VGaWx0ZXJIABI+Cg9kb2NzX21hdGNoX3R5cGUYJSABKAsyIy51c2VhcmNoLkRvY3NGaWx0ZXIuTWF0Y2hUeXBlRmlsdGVySAASOAoMZG9jc19pbl9jaGF0GCYgASgLMiAudXNlYXJjaC5Eb2NzRmlsdGVyLkluQ2hhdEZpbHRlckgAEjEKC2RvY3Nfc29ydGVyGCcgASgLMhoudXNlYXJjaC5Eb2NzRmlsdGVyLlNvcnRlckgAEjwKDmRvY3NfaW5fZm9sZGVyGCggASgLMiIudXNlYXJjaC5Eb2NzRmlsdGVyLkluRm9sZGVyRmlsdGVySAASRAoTd2lraXNfaW5fd2lraV9zcGFjZRgpIAEoCzIlLnVzZWFyY2guRG9jc0ZpbHRlci5Jbldpa2lTcGFjZUZpbHRlckgAEkoKFmVuYWJsZV9leHRlbmRlZF9zZWFyY2gYKiABKAsyKC51c2VhcmNoLkRvY3NGaWx0ZXIuRW5hYmxlRXh0ZW5kZWRTZWFyY2hIABJRChdvcGVuX3NlYXJjaF9zb3J0X2ZpbHRlchgsIAEoCzIuLnVzZWFyY2guT3BlblNlYXJjaEZpbHRlci5PcGVuU2VhcmNoU29ydEZpbHRlckgAQg4KDHR5cGVkX2ZpbHRlciI2ChZQdWxsU2VhcmNoVmlld3NSZXF1ZXN0Eg4KBm9mZnNldBgBIAIoBRIMCgRzaXplGAIgAigFImUKF1B1bGxTZWFyY2hWaWV3c1Jlc3BvbnNlEikKDHNlYXJjaF92aWV3cxgBIAMoCzITLnVzZWFyY2guU2VhcmNoVmlldxIQCghoYXNfbW9yZRgCIAEoCBINCgV0b3RhbBgDIAEoBSJSChRQdXRTZWFyY2hWaWV3UmVxdWVzdBIMCgRuYW1lGAEgAigJEiwKDXNlYXJjaF9hY3Rpb24YAiACKAsyFS51c2VhcmNoLlNlYXJjaEFjdGlvbiKcAQoVUHV0U2VhcmNoVmlld1Jlc3BvbnNlEg8KB21lc3NhZ2UYASACKAkSNQoGc3RhdHVzGAIgAigOMiUudXNlYXJjaC5QdXRTZWFyY2hWaWV3UmVzcG9uc2UuU3RhdHVzEg0KAmlkGAMgASgDOgEwIiwKBlN0YXR1cxILCgdERUZBVUxUEAASCwoHU1VDQ0VTUxABEggKBEZBSUwQAiIlChdEZWxldGVTZWFyY2hWaWV3UmVxdWVzdBIKCgJpZBgBIAIoAyKTAQoYRGVsZXRlU2VhcmNoVmlld1Jlc3BvbnNlEg8KB21lc3NhZ2UYASACKAkSOAoGc3RhdHVzGAIgAigOMigudXNlYXJjaC5EZWxldGVTZWFyY2hWaWV3UmVzcG9uc2UuU3RhdHVzIiwKBlN0YXR1cxILCgdERUZBVUxUEAASCwoHU1VDQ0VTUxABEggKBEZBSUwQAiJEChdVcGRhdGVTZWFyY2hWaWV3UmVxdWVzdBIKCgJpZBgBIAIoAxIMCgRuYW1lGAIgASgJEg8KA3BvcxgDIAEoBToCLTEikwEKGFVwZGF0ZVNlYXJjaFZpZXdSZXNwb25zZRIPCgdtZXNzYWdlGAEgAigJEjgKBnN0YXR1cxgCIAIoDjIoLnVzZWFyY2guVXBkYXRlU2VhcmNoVmlld1Jlc3BvbnNlLlN0YXR1cyIsCgZTdGF0dXMSCwoHREVGQVVMVBAAEgsKB1NVQ0NFU1MQARIICgRGQUlMEAIi2gEKE0dldFN1Z0ZpbHRlclJlcXVlc3QSFgoOc2VhcmNoX3Nlc3Npb24YASACKAkSFgoOc2Vzc2lvbl9zZXFfaWQYAiACKAUSDQoFcXVlcnkYAyACKAkSJAoDdGFiGAQgASgOMhcuc2VhcmNoZXMuU2VhcmNoVGFiTmFtZRIzCg5zZWFyY2hfZmlsdGVycxgFIAMoCzIbLnVzZWFyY2guU2VhcmNoQWN0aW9uRmlsdGVyEg4KBmFwcF9pZBgGIAEoCRIZChFpc19xdWVyeV90ZW1wbGF0ZRgHIAEoCCJKChRHZXRTdWdGaWx0ZXJSZXNwb25zZRIyChByZWNvbW1lbmRfZmlsdGVyGAEgASgLMhgudXNlYXJjaC5SZWNvbW1lbmRGaWx0ZXIiGQoXUHVsbERvY0ZlZWRDYXJkc1JlcXVlc3QiQQoYUHVsbERvY0ZlZWRDYXJkc1Jlc3BvbnNlEiUKBnJlc3VsdBgBIAMoCzIVLnVzZWFyY2guU2VhcmNoUmVzdWx0Il0KHVB1bGxSZW5kZXJEU0xUZW1wbGF0ZXNSZXF1ZXN0Eg4KBmxvY2FsZRgBIAEoCRIRCgl0ZW1wbGF0ZXMYAiABKAwSGQoRaXNfcXVlcnlfdGVtcGxhdGUYAyABKAgiugEKHlB1bGxSZW5kZXJEU0xUZW1wbGF0ZXNSZXNwb25zZRJJCgl0ZW1wbGF0ZXMYASADKAsyNi51c2VhcmNoLlB1bGxSZW5kZXJEU0xUZW1wbGF0ZXNSZXNwb25zZS5UZW1wbGF0ZXNFbnRyeRIbChNxdWVyeV90ZW1wbGF0ZV9pbmZvGAIgASgMGjAKDlRlbXBsYXRlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiugEKDlNlY3VyaXR5Q29uZmlnEhYKDmJhY2t1cF9zdXBwb3J0GAEgASgIEhkKEXNwb3RsaWdodF9zdXBwb3J0GAIgASgIEjgKFWJhY2t1cF9zdXBwb3J0X2VudGl0eRgDIAMoDjIZLnVzZWFyY2guU2VhcmNoRW50aXR5VHlwZRI7ChhzcG90bGlnaHRfc3VwcG9ydF9lbnRpdHkYBCADKA4yGS51c2VhcmNoLlNlYXJjaEVudGl0eVR5cGUi8AIKDVJlc3VsdEJ1aWxkZXISJwoEdHlwZRgBIAEoDjIZLnVzZWFyY2guU2VhcmNoRW50aXR5VHlwZRIQCgh0ZW1wbGF0ZRgCIAEoCRI6Cgpjb21wb25lbnRzGAMgAygLMiYudXNlYXJjaC5SZXN1bHRCdWlsZGVyLkNvbXBvbmVudHNFbnRyeRosCgVGaWVsZBILCgNrZXkYASABKAkSFgoObmVlZF9oaWdobGlnaHQYAiABKAgaZQoJQ29tcG9uZW50EjQKDm9yZGVyZWRfZmllbGRzGAEgAygLMhwudXNlYXJjaC5SZXN1bHRCdWlsZGVyLkZpZWxkEg4KBmZvcm1hdBgCIAEoCRISCgpzZGtfbWV0aG9kGAMgASgJGlMKD0NvbXBvbmVudHNFbnRyeRILCgNrZXkYASABKAkSLwoFdmFsdWUYAiABKAsyIC51c2VhcmNoLlJlc3VsdEJ1aWxkZXIuQ29tcG9uZW50OgI4ASI1CiNQdWxsTG9jYWxTZWFyY2hJbnN0YW50Q29uZmlnUmVxdWVzdBIOCgZsb2NhbGUYASABKAkiqgEKJFB1bGxMb2NhbFNlYXJjaEluc3RhbnRDb25maWdSZXNwb25zZRIwCg9zZWN1cml0eV9jb25maWcYASABKAsyFy51c2VhcmNoLlNlY3VyaXR5Q29uZmlnEigKCGJ1aWxkZXJzGAIgAygLMhYudXNlYXJjaC5SZXN1bHRCdWlsZGVyEiYKCnNsYV9jb25maWcYAyABKAsyEi51c2VhcmNoLlNsYUNvbmZpZyJACglTbGFDb25maWcSMwoQY29yZV9lbnRpdHlfdHlwZRgBIAMoDjIZLnVzZWFyY2guU2VhcmNoRW50aXR5VHlwZSJ8Cg1Vc2VyR3JvdXBNZXRhEgoKAmlkGAEgAigJEgwKBHR5cGUYAiABKAUSDAoEbmFtZRgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRIuCg11c2VyR3JvdXBUeXBlGAUgASgOMhcuZW50aXRpZXMuVXNlckdyb3VwVHlwZSIyCgdTdWdNZXRhEicKC3N1Z19yZXN1bHRzGAEgAygLMhIudXNlYXJjaC5TdWdSZXN1bHQigAEKCVN1Z1Jlc3VsdBIKCgJpZBgBIAEoCRIMCgRpY29uGAIgASgJEi8KCnJpY2hfdGV4dHMYAyADKAsyGy51c2VhcmNoLlN1Z1JpY2hUZXh0RWxlbWVudBIQCghhcHBfbGluaxgEIAEoCRIWCg50cmFja2luZ19ldmVudBgFIAEoCSKNAgoSU3VnUmljaFRleHRFbGVtZW50Ei0KBHR5cGUYASABKA4yHy51c2VhcmNoLlN1Z1JpY2hUZXh0RWxlbWVudFR5cGUSEAoIcmF3X3RleHQYAiABKAkSCwoDdXJsGAMgASgJEgwKBGljb24YBCABKAkSNQoFYXR0cnMYBSADKAsyJi51c2VhcmNoLlN1Z1JpY2hUZXh0RWxlbWVudC5BdHRyc0VudHJ5EjYKDmZpbHRlcl9yZXN1bHRzGAYgASgLMh4udXNlYXJjaC5SZWNvbW1lbmRGaWx0ZXJSZXN1bHQaLAoKQXR0cnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIu4CChBQQk1TZWFyY2hSZXF1ZXN0Eg8KB3F1ZXJpZXMYASADKAkSOQoOc2VhcmNoX2NvbnRleHQYAiABKAsyIS51c2VhcmNoLkJhc2VFbnRpdHkuU2VhcmNoQ29udGV4dBIOCgZsb2NhbGUYAyABKAkSPwoLZXh0cmFfcGFyYW0YBCABKAsyKi51c2VhcmNoLlBCTVNlYXJjaFJlcXVlc3QuU2VhcmNoRXh0cmFQYXJhbRIMCgRzaXplGAUgASgFEhAKCHRpbWV6b25lGAYgASgJGpwBChBTZWFyY2hFeHRyYVBhcmFtEiIKGmNoYXR0ZXJfcGVybWlzc2lvbl9yZXF1ZXN0GAEgASgMEhMKC3N0cmF0ZWd5X2lkGAIgASgJEhMKC3Nob3VsZF9yYW5rGAMgASgIEh4KFmV4cGxhbmF0aW9uX3RhZ19lbmFibGUYBCABKAgSGgoScmVuZGVyX2RhdGFfZW5hYmxlGAUgASgIIogBChRNU2VhcmNoUXVlcnlSZXNwb25zZRINCgVxdWVyeRgBIAEoCRIzCgZoZWFkZXIYAiABKAsyIy51c2VhcmNoLlNlYXJjaENvbW1vblJlc3BvbnNlSGVhZGVyEiwKB3Jlc3VsdHMYAyADKAsyFS51c2VhcmNoLlNlYXJjaFJlc3VsdEIEoIIZASL2AQoRUEJNU2VhcmNoUmVzcG9uc2USNAoNcXVlcnlfcmVzdWx0cxgBIAMoCzIdLnVzZWFyY2guTVNlYXJjaFF1ZXJ5UmVzcG9uc2USLQoKZXJyb3JfY29kZRgCIAEoDjIZLnVzZWFyY2guTVNlYXJjaEVycm9yQ29kZRJCCgxleHRyYV9maWVsZHMYBCABKAsyLC51c2VhcmNoLlBCTVNlYXJjaFJlc3BvbnNlLlNlYXJjaEV4dHJhRmllbGRzGjgKEVNlYXJjaEV4dHJhRmllbGRzEiMKG2NoYXR0ZXJfcGVybWlzc2lvbl9yZXNwb25zZRgBIAEoDCJiCgxUZW1wbGF0ZU1ldGESDwoHdmVyc2lvbhgBIAEoCRIrCgx0ZW1wbGF0ZVR5cGUYAiABKA4yFS51c2VhcmNoLlRlbXBsYXRlVHlwZRIUCgx0ZW1wbGF0ZU5hbWUYAyABKAkiTgoPVGVtcGxhdGVDb250ZW50EioKBHR5cGUYASABKA4yHC51c2VhcmNoLlRlbXBsYXRlQ29udGVudFR5cGUSDwoHY29udGVudBgCIAEoCSLnAQoUVGVtcGxhdGVDb21tb25QYXJhbXMSEAoIcGxhdGZvcm0YASABKAkSPwoJdGVtcGxhdGVzGAIgAygLMiwudXNlYXJjaC5UZW1wbGF0ZUNvbW1vblBhcmFtcy5UZW1wbGF0ZXNFbnRyeRIOCgZsb2NhbGUYAyABKAkSEwoLbGFya1ZlcnNpb24YBCABKAkSDgoGdXNlcklEGAUgASgJGkcKDlRlbXBsYXRlc0VudHJ5EgsKA2tleRgBIAEoBRIkCgV2YWx1ZRgCIAEoCzIVLnVzZWFyY2guVGVtcGxhdGVNZXRhOgI4ASJmCgxUZW1wbGF0ZUluZm8SIwoEbWV0YRgBIAEoCzIVLnVzZWFyY2guVGVtcGxhdGVNZXRhEjEKD3RlbXBsYXRlQ29udGVudBgCIAMoCzIYLnVzZWFyY2guVGVtcGxhdGVDb250ZW50IusBChlRdWVyeVRlbXBsYXRlSW5mb1Jlc3BvbnNlEicKCHRlbXBsYXRlGAEgAygLMhUudXNlYXJjaC5UZW1wbGF0ZUluZm8SVAoRdGVtcGxhdGVFbnRpdHlNYXAYAiADKAsyOS51c2VhcmNoLlF1ZXJ5VGVtcGxhdGVJbmZvUmVzcG9uc2UuVGVtcGxhdGVFbnRpdHlNYXBFbnRyeRpPChZUZW1wbGF0ZUVudGl0eU1hcEVudHJ5EgsKA2tleRgBIAEoBRIkCgV2YWx1ZRgCIAEoDjIVLnVzZWFyY2guVGVtcGxhdGVUeXBlOgI4ASJKCh5QdWxsUmVjb21tZW5kRmlsdGVyRGF0YVJlcXVlc3QSKAoIdGFiX2xpc3QYASADKA4yFi51c2VhcmNoLlNlYXJjaFRhYk5hbWUi2AIKH1B1bGxSZWNvbW1lbmRGaWx0ZXJEYXRhUmVzcG9uc2USRAoJZGF0YV9saXN0GAEgAygLMjEudXNlYXJjaC5QdWxsUmVjb21tZW5kRmlsdGVyRGF0YVJlc3BvbnNlLkRhdGFMaXN0Gn0KCERhdGFJdGVtEjIKDXNlYXJjaF9maWx0ZXIYASABKAsyGy51c2VhcmNoLlNlYXJjaEFjdGlvbkZpbHRlchINCgV0aXRsZRgCIAEoCRIuCg9maWx0ZXJfZW50aXRpZXMYAyADKAsyFS51c2VhcmNoLlNlYXJjaFJlc3VsdBpwCghEYXRhTGlzdBIjCgN0YWIYASABKA4yFi51c2VhcmNoLlNlYXJjaFRhYk5hbWUSPwoEZGF0YRgCIAMoCzIxLnVzZWFyY2guUHVsbFJlY29tbWVuZEZpbHRlckRhdGFSZXNwb25zZS5EYXRhSXRlbSLGAQogUmVzZXRSZWNvbW1lbmRGaWx0ZXJDb3VudFJlcXVlc3QSIwoDdGFiGAEgASgOMhYudXNlYXJjaC5TZWFyY2hUYWJOYW1lEjIKDXNlYXJjaF9maWx0ZXIYAiABKAsyGy51c2VhcmNoLlNlYXJjaEFjdGlvbkZpbHRlchINCgVxdWVyeRgDIAEoCRIOCgZhcHBfaWQYBCABKAkSKgoMY2Fwc3VsZV9pbmZvGAUgASgLMhQudXNlYXJjaC5DYXBzdWxlSW5mbyKuAQohUmVzZXRSZWNvbW1lbmRGaWx0ZXJDb3VudFJlc3BvbnNlEk8KC3Jlc2V0X3N0YXRlGAEgASgOMjoudXNlYXJjaC5SZXNldFJlY29tbWVuZEZpbHRlckNvdW50UmVzcG9uc2UuUmVzZXRDb3VudFN0YXRlIjgKD1Jlc2V0Q291bnRTdGF0ZRILCgdVbmtub3duEAASCwoHU3VjY2VzcxABEgsKB0ZhaWx1cmUQAiL1AQoLQ2Fwc3VsZUluZm8SNgoMY2Fwc3VsZV90eXBlGAEgASgOMiAudXNlYXJjaC5DYXBzdWxlSW5mby5DYXBzdWxlVHlwZRIsCg1zZWFyY2hfYWN0aW9uGAIgASgLMhUudXNlYXJjaC5TZWFyY2hBY3Rpb24SDQoFdGl0bGUYAyABKAkSLgoPZmlsdGVyX2VudGl0aWVzGAQgAygLMhUudXNlYXJjaC5TZWFyY2hSZXN1bHQiQQoLQ2Fwc3VsZVR5cGUSCwoHVU5LTk9XThAAEgcKA1RBQhABEgoKBkZJTFRFUhACEhAKDEZJTFRFUl9WQUxVRRADImYKH1B1bGxSZWNvbW1lbmRDYXBzdWxlRGF0YVJlcXVlc3QSLAoNc2VhcmNoX2FjdGlvbhgBIAMoCzIVLnVzZWFyY2guU2VhcmNoQWN0aW9uEhUKDWltcHJlc3Npb25faWQYAiABKAkiaAogUHVsbFJlY29tbWVuZENhcHN1bGVEYXRhUmVzcG9uc2USLQoPQ2Fwc3VsZUluZm9MaXN0GAEgAygLMhQudXNlYXJjaC5DYXBzdWxlSW5mbxIVCg1pbXByZXNzaW9uX2lkGAIgASgJIkQKFFB1dEZpbHRlckRhdGFSZXF1ZXN0EiwKDXNlYXJjaF9hY3Rpb24YASABKAsyFS51c2VhcmNoLlNlYXJjaEFjdGlvbiKSAQoVUHV0RmlsdGVyRGF0YVJlc3BvbnNlEkAKCXB1dF9zdGF0ZRgBIAEoDjItLnVzZWFyY2guUHV0RmlsdGVyRGF0YVJlc3BvbnNlLlB1dEZpbHRlclN0YXRlIjcKDlB1dEZpbHRlclN0YXRlEgsKB1Vua25vd24QABILCgdTdWNjZXNzEAESCwoHRmFpbHVyZRACIpQCChNTaG91bGRBbnN3ZXJSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEkIKDnNlYXJjaF9jb250ZXh0GAIgASgLMioudXNlYXJjaC5TaG91bGRBbnN3ZXJSZXF1ZXN0LlNlYXJjaENvbnRleHQSGgoSSXNBbnN3ZXJJblNlYXJjaFYyGAMgASgIEjcKBWV4dHJhGP8BIAMoCzInLnVzZWFyY2guU2hvdWxkQW5zd2VyUmVxdWVzdC5FeHRyYUVudHJ5GicKDVNlYXJjaENvbnRleHQSFgoOc2VhcmNoX3Nlc3Npb24YASABKAkaLAoKRXh0cmFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIosFChRTaG91bGRBbnN3ZXJSZXNwb25zZRIVCg1zaG91bGRfYW5zd2VyGAEgASgIEjYKB3Byb2ZpbGUYAiABKAsyJS51c2VhcmNoLlNob3VsZEFuc3dlclJlc3BvbnNlLlByb2ZpbGUSOwoKcmVmZXJlbmNlcxgDIAMoCzInLnVzZWFyY2guU2hvdWxkQW5zd2VyUmVzcG9uc2UuUmVmZXJlbmNlEhkKEWFuc3dlcl9zZXNzaW9uX2lkGAQgASgJEhcKD2Fuc3dlcl9jbGlja19pZBgFIAEoCRJJCg9xdWVyeV9pbnRlbnRpb24YBiABKA4yMC51c2VhcmNoLlNob3VsZEFuc3dlclJlc3BvbnNlLlF1ZXJ5SW50ZW50aW9uVHlwZRo3CgdQcm9maWxlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEgoKYXZhdGFyX2tleRgDIAEoCRrsAQoJUmVmZXJlbmNlEgoKAmlkGAEgASgJElAKC3NvdXJjZV90eXBlGAIgASgOMjsudXNlYXJjaC5TaG91bGRBbnN3ZXJSZXNwb25zZS5SZWZlcmVuY2UuUmVmZXJlbmNlU291cmNlVHlwZRINCgV0aXRsZRgDIAEoCRILCgN1cmwYBCABKAkiZQoTUmVmZXJlbmNlU291cmNlVHlwZRILCgdVTktOT1dOEAASDQoJSEVMUF9ERVNLEAESCAoEV0lLSRACEgcKA0RPQxADEgcKA1dFQhAEEgsKB01FU1NBR0UQBRIJCgVMSU5HTxAGIkAKElF1ZXJ5SW50ZW50aW9uVHlwZRILCgdVTktOT1dOEAASHQoZQU5TV0VSX0lOX1NFQVJDSF9RVUVTVElPThABImQKGENsaWNrU2hvdWxkQW5zd2VyUmVxdWVzdBINCgVxdWVyeRgBIAEoCRIXCg9hbnN3ZXJfY2xpY2tfaWQYAiABKAkSIAoYY2xpY2tfc2hvdWxkX2Fuc3dlcl90eXBlGAMgASgJIogBChlDbGlja1Nob3VsZEFuc3dlclJlc3BvbnNlEj0KBWV4dHJhGP8BIAMoCzItLnVzZWFyY2guQ2xpY2tTaG91bGRBbnN3ZXJSZXNwb25zZS5FeHRyYUVudHJ5GiwKCkV4dHJhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASLrAQoTU3RyZWFtQW5zd2VyTWVzc2FnZRIMCgRjb2RlGAEgASgFEg8KB21lc3NhZ2UYAiABKAkSGQoRYW5zd2VyX3Nlc3Npb25faWQYAyABKAkSFQoNYW5zd2VyX3NlcV9pZBgEIAEoBRI4CglwdXNoX3R5cGUYBSABKA4yJS51c2VhcmNoLlN0cmVhbUFuc3dlck1lc3NhZ2UuUHVzaFR5cGUSDAoEdGV4dBgGIAEoCRIUCgxpc19ub19hbnN3ZXIYByABKAgiJQoIUHVzaFR5cGUSDwoLSU5DUkVNRU5UQUwQABIICgRGVUxMEAEiagoSTmF2aWdhdGlvbkFwcFBvcHVwEg4KBmFwcF9pZBgBIAEoCRIPCgdhcHBfa2V5GAIgASgJEjMKDmRlZmF1bHRfZmlsdGVyGAMgAygLMhsudXNlYXJjaC5TZWFyY2hBY3Rpb25GaWx0ZXIizAcKCVNlYXJjaFRhYhINCgVsYWJlbBgBIAIoCRIlCgR0eXBlGAIgAigOMhcuc2VhcmNoZXMuU2VhcmNoVGFiTmFtZRIOCgZhcHBfaWQYAyABKAkSEAoIaWNvbl91cmwYBCABKAkSMgoLcmVzdWx0X3R5cGUYBSABKA4yHS51c2VhcmNoLlNlYXJjaFRhYi5SZXN1bHRUeXBlEiYKB2ZpbHRlcnMYBiADKA4yFS5zZWFyY2hlcy5GaWx0ZXJJblRhYhIVCg10b3Bfbl9maWx0ZXJzGAcgASgFEj8KDmN1c3RvbV9maWx0ZXJzGAggAygLMicuc2VhcmNoZXMuU2VhcmNoRmlsdGVyLkN1c3RvbUZpbHRlckluZm8SUAoXcGxhdGZvcm1fY3VzdG9tX2ZpbHRlcnMYCSADKAsyLy5zZWFyY2hlcy5QbGF0Zm9ybVNlYXJjaEZpbHRlci5DdXN0b21GaWx0ZXJJbmZvEioKB2Jpel9rZXkYCiABKA4yGS51c2VhcmNoLlNlYXJjaFRhYi5CaXpLZXkSMAoGcGFyYW1zGAsgASgLMiAudXNlYXJjaC5TZWFyY2hUYWIuUmVxdWVzdFBhcmFtcxI5ChtoaWdobGlnaHRfc2VsZWN0ZWRfY2Fwc3VsZXMYDCADKAsyFC51c2VhcmNoLkNhcHN1bGVJbmZvEi4KCWZyb21fYXBwcxgNIAMoCzIbLnVzZWFyY2guTmF2aWdhdGlvbkFwcFBvcHVwEhcKD2FwcF9kZXNjcmlwdGlvbhgOIAEoCRIaChJlbmFibGVfZW1wdHlfcXVlcnkYDyABKAgSGwoTZW5hYmxlX2hvdmVyX2NoYW5nZRgQIAEoCBIUCgxpc19pbnZpc2libGUYESABKAgSMgoRYWR2X2dyYW1tYXJfY29uZnMYEiADKAsyFy51c2VhcmNoLkFkdkdyYW1tYXJDb25mGoUBCg1SZXF1ZXN0UGFyYW1zEjMKBG1vZGUYASABKA4yJS51c2VhcmNoLlNlYXJjaFRhYi5SZXF1ZXN0UGFyYW1zLk1vZGUSEQoJcGFnZV9zaXplGAIgASgFIiwKBE1vZGUSCwoHVU5LTk9XThAAEgoKBk5PUk1BTBABEgsKB05PX1BBR0UQAiIyCgpSZXN1bHRUeXBlEhEKDVNMQVNIX0NPTU1BTkQQABIRCg1DVVNUT01JWkFUSU9OEAEiQAoGQml6S2V5EgsKB1VOS05PV04QABIJCgVFTUFJTBABEgwKCENBTEVOREFSEAISEAoMQUlfS05PV0xFREdFEAMiRwoRU21hcnRTZWFyY2hQYXJhbXMSMgoRYWR2X2dyYW1tYXJfY29uZnMYASADKAsyFy51c2VhcmNoLkFkdkdyYW1tYXJDb25mIt8CCg5BZHZHcmFtbWFyQ29uZhIQCghrZXlfbmFtZRgBIAIoCRI7Cg1zZWxlY3Rvcl90eXBlGAIgAigOMiQudXNlYXJjaC5BZHZHcmFtbWFyQ29uZi5TZWxlY3RvclR5cGUSNgoLZW51bV92YWx1ZXMYAyADKAsyIS51c2VhcmNoLkFkdkdyYW1tYXJDb25mLkVudW1WYWx1ZRISCgpyZWZfYXBwX2lkGAQgASgJGh8KCUVudW1WYWx1ZRISCgp2YWx1ZV9uYW1lGAEgASgJIpABCgxTZWxlY3RvclR5cGUSEQoNRU5VTV9TRUxFQ1RPUhABEhcKE1NFQVJDSEFCTEVfU0VMRUNUT1IQAhIRCg1VU0VSX1NFTEVDVE9SEAMSEQoNQ0hBVF9TRUxFQ1RPUhAEEhYKElVTRVJfQ0hBVF9TRUxFQ1RPUhAFEhYKEk1BSUxfVVNFUl9TRUxFQ1RPUhAGIjYKGVB1bGxVc2VyU2VhcmNoVGFic1JlcXVlc3QSGQoRaXNfcXVlcnlfdGVtcGxhdGUYASABKAgifgoaUHVsbFVzZXJTZWFyY2hUYWJzUmVzcG9uc2USJwoLc2VhcmNoX3RhYnMYASADKAsyEi51c2VhcmNoLlNlYXJjaFRhYhI3ChNzbWFydF9zZWFyY2hfcGFyYW1zGAIgASgLMhoudXNlYXJjaC5TbWFydFNlYXJjaFBhcmFtcyJeChhQdXRVc2VyU2VhcmNoVGFic1JlcXVlc3QSJwoLc2VhcmNoX3RhYnMYASADKAsyEi51c2VhcmNoLlNlYXJjaFRhYhIZChFpc19xdWVyeV90ZW1wbGF0ZRgCIAEoCCIbChlQdXRVc2VyU2VhcmNoVGFic1Jlc3BvbnNlIjsKHlB1bGxBdmFpbGFibGVTZWFyY2hUYWJzUmVxdWVzdBIZChFpc19xdWVyeV90ZW1wbGF0ZRgBIAEoCCKDAQofUHVsbEF2YWlsYWJsZVNlYXJjaFRhYnNSZXNwb25zZRInCgtzZWFyY2hfdGFicxgBIAMoCzISLnVzZWFyY2guU2VhcmNoVGFiEjcKE3NtYXJ0X3NlYXJjaF9wYXJhbXMYAiABKAsyGi51c2VhcmNoLlNtYXJ0U2VhcmNoUGFyYW1zIloKIVVwbG9hZFVzZXJTZWFyY2hUYWJWaXNpYmxlUmVxdWVzdBIlCgR0eXBlGAEgASgOMhcuc2VhcmNoZXMuU2VhcmNoVGFiTmFtZRIOCgZhcHBfaWQYAiABKAkiJAoiVXBsb2FkVXNlclNlYXJjaFRhYlZpc2libGVSZXNwb25zZSKDAgoVUHVzaE5MU1Jlc3VsdHNNZXNzYWdlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRIZChFzZWFyY2hfY29udGV4dF9pZBgDIAEoCRI6CglwdXNoX3R5cGUYBCABKA4yJy51c2VhcmNoLlB1c2hOTFNSZXN1bHRzTWVzc2FnZS5QdXNoVHlwZRImCgdyZXN1bHRzGAUgAygLMhUudXNlYXJjaC5TZWFyY2hSZXN1bHQSEAoIaGFzX21vcmUYBiABKAgSEwoLc2VxdWVuY2VfaWQYByABKAkiJQoIUHVzaFR5cGUSDwoLSU5DUkVNRU5UQUwQABIICgRGVUxMEAEiRwoVUHVsbE5MU1Jlc3VsdHNSZXF1ZXN0EhkKEXNlYXJjaF9jb250ZXh0X2lkGAEgASgJEhMKC3NlcXVlbmNlX2lkGAIgASgJImcKFlB1bGxOTFNSZXN1bHRzUmVzcG9uc2USJgoHcmVzdWx0cxgBIAMoCzIVLnVzZWFyY2guU2VhcmNoUmVzdWx0EhAKCGhhc19tb3JlGAIgASgIEhMKC3NlcXVlbmNlX2lkGAMgASgJIiIKEFB1dE5ld1RhYlJlcXVlc3QSDgoGYXBwX2lkGAEgASgJInQKEVB1dE5ld1RhYlJlc3BvbnNlEjEKBnN0YXR1cxgBIAEoDjIhLnVzZWFyY2guUHV0TmV3VGFiUmVzcG9uc2UuU3RhdHVzIiwKBlN0YXR1cxILCgdERUZBVUxUEAASCwoHU1VDQ0VTUxABEggKBEZBSUwQAiJ1ChBTZWFyY2hFbmdpbmVDb25mEgoKAmlkGAEgASgJEhAKCGljb25fdXJsGAIgASgJEgsKA3VybBgDIAEoCRIMCgRuYW1lGAQgASgJEhMKC3F1ZXJ5X3BhcmFtGAUgASgJEhMKC2lzX3NlbGVjdGVkGAYgASgIIs4BChdQdXRTZWFyY2hTZXR0aW5nc0FjdGlvbhI5ChRzZWFyY2hfc2V0dGluZ3NfdHlwZRgBIAEoDjIbLnVzZWFyY2guU2VhcmNoU2V0dGluZ3NUeXBlEgsKA2lkcxgCIAMoCRI3CgZhY3Rpb24YAyABKA4yJy51c2VhcmNoLlB1dFNlYXJjaFNldHRpbmdzQWN0aW9uLkFjdGlvbiIyCgZBY3Rpb24SCwoHVU5LTk9XThAAEg8KC1NFVF9ERUZBVUxUEAESCgoGREVMRVRFEAIiUAoZUHVsbFNlYXJjaFNldHRpbmdzUmVxdWVzdBIzCg5zZXR0aW5nc190eXBlcxgBIAMoDjIbLnVzZWFyY2guU2VhcmNoU2V0dGluZ3NUeXBlIlQKGlB1bGxTZWFyY2hTZXR0aW5nc1Jlc3BvbnNlEjYKE3NlYXJjaF9lbmdpbmVfY29uZnMYASADKAsyGS51c2VhcmNoLlNlYXJjaEVuZ2luZUNvbmYiTQoYUHV0U2VhcmNoU2V0dGluZ3NSZXF1ZXN0EjEKB2FjdGlvbnMYASADKAsyIC51c2VhcmNoLlB1dFNlYXJjaFNldHRpbmdzQWN0aW9uIoQBChlQdXRTZWFyY2hTZXR0aW5nc1Jlc3BvbnNlEjkKBnN0YXR1cxgBIAEoDjIpLnVzZWFyY2guUHV0U2VhcmNoU2V0dGluZ3NSZXNwb25zZS5TdGF0dXMiLAoGU3RhdHVzEgsKB0RFRkFVTFQQABILCgdTVUNDRVNTEAESCAoERkFJTBACIlAKGVB1c2hTZWFyY2hTZXR0aW5nc1JlcXVlc3QSMwoOc2V0dGluZ3NfdHlwZXMYASADKA4yGy51c2VhcmNoLlNlYXJjaFNldHRpbmdzVHlwZSIcChpQdXNoU2VhcmNoU2V0dGluZ3NSZXNwb25zZSKIAgoRQ3VzdG9taXplQUlCdXR0b24SDAoEdGV4dBgBIAEoCRIMCgRpY29uGAIgASgJEjoKC2FjdGlvbl90eXBlGAMgASgOMiUudXNlYXJjaC5DdXN0b21pemVBSUJ1dHRvbi5BY3Rpb25UeXBlEhcKD2NhbGxiYWNrX2Jpel9pZBgEIAEoCRIVCg1jYWxsYmFja19pbmZvGAUgASgJEhkKEXNlbmRfbWVzc2FnZV9pbmZvGAYgASgJEhQKDHN0cmF0ZWd5X2tleRgHIAEoCSI6CgpBY3Rpb25UeXBlEgsKB1VOS05PV04QABIQCgxTRU5EX01FU1NBR0UQARINCglDQUxMX0JBQ0sQAiJTChZDdXN0b21pemVBSUJ1dHRvbkdyb3VwEisKB2J1dHRvbnMYASADKAsyGi51c2VhcmNoLkN1c3RvbWl6ZUFJQnV0dG9uEgwKBHRleHQYAiABKAki1wEKFURvdWJhb1NlYXJjaFNjZW5lTWV0YRI/CgVzY2VuZRgBIAEoDjIwLnVzZWFyY2guRG91YmFvU2VhcmNoU2NlbmVNZXRhLkRvdWJhb1NlYXJjaFNjZW5lEg8KB2NoYXRfaWQYAiABKAkSFAoMcGlja2VyX3NjZW5lGAMgASgJIlYKEURvdWJhb1NlYXJjaFNjZW5lEgsKB1VOS05PV04QABIUChBVTklWRVJTQUxfU0VBUkNIEAESEgoOU0VBUkNIX0lOX0NIQVQQAhIKCgZQSUNLRVIQAyI2ChVEb3ViYW9TZWFyY2hRdWVyeU1ldGESDgoGZGlnZXN0GAEgASgJEg0KBXF1ZXJ5GAIgASgJIrYBCiJQdXREb3ViYW9TZWFyY2hRdWVyeUhpc3RvcnlSZXF1ZXN0EjIKCnNjZW5lX21ldGEYASABKAsyHi51c2VhcmNoLkRvdWJhb1NlYXJjaFNjZW5lTWV0YRIoCgtjbGllbnRfdHlwZRgCIAEoDjITLnVzZWFyY2guQ2xpZW50VHlwZRIyCgpxdWVyeV9tZXRhGAMgASgLMh4udXNlYXJjaC5Eb3ViYW9TZWFyY2hRdWVyeU1ldGEiJQojUHV0RG91YmFvU2VhcmNoUXVlcnlIaXN0b3J5UmVzcG9uc2UiuQEKJURlbGV0ZURvdWJhb1NlYXJjaFF1ZXJ5SGlzdG9yeVJlcXVlc3QSMgoKc2NlbmVfbWV0YRgBIAEoCzIeLnVzZWFyY2guRG91YmFvU2VhcmNoU2NlbmVNZXRhEigKC2NsaWVudF90eXBlGAIgASgOMhMudXNlYXJjaC5DbGllbnRUeXBlEjIKCnF1ZXJ5X21ldGEYAyABKAsyHi51c2VhcmNoLkRvdWJhb1NlYXJjaFF1ZXJ5TWV0YSIoCiZEZWxldGVEb3ViYW9TZWFyY2hRdWVyeUhpc3RvcnlSZXNwb25zZSKDAQojUHVsbERvdWJhb1NlYXJjaFF1ZXJ5SGlzdG9yeVJlcXVlc3QSMgoKc2NlbmVfbWV0YRgBIAEoCzIeLnVzZWFyY2guRG91YmFvU2VhcmNoU2NlbmVNZXRhEigKC2NsaWVudF90eXBlGAIgASgOMhMudXNlYXJjaC5DbGllbnRUeXBlIlsKJFB1bGxEb3ViYW9TZWFyY2hRdWVyeUhpc3RvcnlSZXNwb25zZRIzCgtxdWVyeV9tZXRhcxgBIAMoCzIeLnVzZWFyY2guRG91YmFvU2VhcmNoUXVlcnlNZXRhKlAKDkNsdXN0ZXJpbmdUeXBlEhAKDENPTU1PTl9JVEVNUxABEhEKDVNFQ1RJT05fSVRFTVMQAhIPCgtDT01NQU5EX0JBUhADEggKBFNFUlAQBCqXAQoOU3VnZ2VzdGlvblR5cGUSFgoSVU5LTk9XTl9TVUdHRVNUSU9OEAASDQoJU0lERV9DQVJEEAESEAoMUkVTT1VSQ0VfVEFHEAISDAoISlVNUF9UQUIQAxIQCgxTRVJWSUNFX0NBUkQQBBIWChJSRUNPTU1FTkRFRF9GSUxURVIQBRIUChBTQVZFX1NFQVJDSF9WSUVXEAYqiQQKEFNlYXJjaEVudGl0eVR5cGUSCwoHVU5LTk9XThAAEggKBFVTRVIQARIHCgNCT1QQAhIOCgpHUk9VUF9DSEFUEAMSEwoPQ1JZUFRPX1AyUF9DSEFUEAQSCwoHTUVTU0FHRRAFEgcKA0RPQxAHEggKBFdJS0kQCBIHCgNBUFAQCRIKCgZPTkNBTEwQChIKCgZUSFJFQUQQCxILCgdRQV9DQVJEEAwSBwoDVVJMEA0SDgoKREVQQVJUTUVOVBAOEggKBFBBTk8QDxIRCg1TTEFTSF9DT01NQU5EEBASCwoHU0VDVElPThAREgwKCFJFU09VUkNFEBISEQoNQ1VTVE9NSVpBVElPThATEgwKCEZBQ0lMSVRZEBQSEAoMTUFJTF9DT05UQUNUEBUSDQoJQ0hBTUVMRU9OEBYSEgoOQ0FMRU5EQVJfRVZFTlQQFxIKCgZCQU5ORVIQGBIOCgpXSUtJX1NQQUNFEBkSCwoHUEhPRU5JWBAaEhMKD1NISUVMRF9QMlBfQ0hBVBAbEg4KClVTRVJfR1JPVVAQHBIVChFVU0VSX0dST1VQX0FTU0lHThAdEhAKDE1FU1NBR0VfRklMRRAeEgkKBU1ZX0FJEB8SCwoHUEFTU0FHRRAgEgkKBUVNQUlMECESDQoJTUFJTF9VU0VSECISEgoOTkVXX1VTRVJfR1JPVVAQIypACg9TZWFyY2hRQUJpelR5cGUSCwoHVW5rbm93bhAAEg4KCkNvbnN1bWVkUUEQARIQCgxVbkNvbnN1bWVkUUEQAioxCgtQYXltZW50VHlwZRIICgRGcmVlEAASDgoKUmVkZW1wdGlvbhABEggKBFBhaWQQAionChFGaWx0ZXJQYXltZW50VHlwZRIICgRGUkVFEAESCAoEUEFJRBACKuYBCg1TZWFyY2hUYWJOYW1lEg8KC1VOS05PV05fVEFCEAASDwoLTUVTU0FHRV9UQUIQARIMCghET0NTX1RBQhACEgwKCFdJS0lfVEFCEAMSDAoIQ0hBVF9UQUIQBBIQCgxDQUxFTkRBUl9UQUIQBRILCgdBUFBfVEFCEAYSDQoJRU1BSUxfVEFCEAcSDwoLQ0hBVFRFUl9UQUIQCBIMCghQQU5PX1RBQhAJEhAKDEhFTFBERVNLX1RBQhAKEhQKD09QRU5fU0VBUkNIX1RBQhD/ARIUChBTTUFSVF9TRUFSQ0hfVEFCEAsqWgoXUmVjb21tZW5kRmlsdGVyU3RyYXRlZ3kSEwoPVW5rbm93blN0cmF0ZWd5EAASEAoMQmFzZWRPblF1ZXJ5EAESGAoUQmFzZWRPblNlYXJjaFJlc3VsdHMQAio2Cg9RdWVyeUlucHV0U3RhdGUSCgoGRVhQQU5EEAESCgoGU0hSSU5LEAISCwoHQ09NUE9TRRAEKjUKC1N1Z1RleHRUeXBlEhYKElN1Z1RleHRVbmtub3duVHlwZRAAEg4KClN1Z0ZhcVR5cGUQASpVCg9TdWdSaWNoVGV4dFR5cGUSDwoLVU5LTk9XTl9TVUcQABIMCghVU0VSX1NVRxABEgsKB1RBQl9TVUcQAhIWChJNRVNTQUdFX0ZJTFRFUl9TVUcQAyqQAQoNTWVzc2FnZUFjdGlvbhISCg5VTktOT1dOX0FDVElPThAAEg4KCkFMTF9BQ1RJT04QARIMCghUUkFOU01JVBAEEhEKDVNBVkVfVE9fTE9DQUwQERIRCg1TQVZFX1RPX1NQQUNFEBISDwoLQUREX1NUSUNLRVIQExIMCghET1dOTE9BRBAUEggKBENPUFkQFSpCChJNZXNzYWdlRGlzcGxheU1vZGUSEAoMVU5LTk9XTl9NT0RFEAASCwoHRElTQUJMRRABEg0KCUlOVklTSUJMRRACKjgKDkJhbm5lclRleHRUeXBlEg0KCUlNUE9SVEFOVBABEggKBElORk8QAhINCglDTElDS0FCTEUQAyqBAQoQQmFubmVyQWN0aW9uVHlwZRIMCghOb0FjdGlvbhABEhMKD0hpZ2hsaWdodEZpbHRlchACEhYKElNlbGVjdEZpbHRlck9wdGlvbhADEhcKE0Rpc2FibGVGaWx0ZXJPcHRpb24QBBIMCghSZVNlYXJjaBAFEgsKB1JvdXRlVG8QBioeCgxTaGVsbEFwaVR5cGUSDgoKT3BlbldpbmRvdxABKiwKCUFsaWdubWVudBIICgRMZWZ0EAASCQoFUmlnaHQQARIKCgZDZW50ZXIQAipOCgtCYW5uZXJTdHlsZRIMCghUT1BfSU5GTxABEgwKCFRPUF9XQVJOEAISEAoMSU5MSU5FX1NNQUxMEAsSEQoNSU5MSU5FX05PUk1BTBAMKqUBCg9QbGFjZUhvbGRlclR5cGUSFwoTVU5LTk9XTl9QTEFDRUhPTERFUhAAEgsKB01BUlFVRUUQARIWChJRVUVTVElPTl9BTlNXRVJJTkcQAhIlCiFRVUVTVElPTl9BTlNXRVJJTkdfUkVDT01NRU5EX1BVTEwQAxItCilRVUVTVElPTl9BTlNXRVJJTkdfUkVDT01NRU5EX0NMSUNLX0NIQU5HRRAEKjsKFVBsYWNlaG9sZGVyQWN0aW9uVHlwZRIXChNVTktOT1dOX0FDVElPTl9UWVBFEAASCQoFQ0xJQ0sQASpzChZTdWdSaWNoVGV4dEVsZW1lbnRUeXBlEggKBFRleHQQARILCgdBcHBMaW5rEAISDQoJTGluZUJyZWFrEAMSCwoHTWVudGlvbhAEEhAKDFRhYlJlY29tbWVuZBAFEhQKEE1lc3NhZ2VGaWx0ZXJTdWcQBirQAQoQTVNlYXJjaEVycm9yQ29kZRIeChpNU0VBUkNIX0VSUk9SX0NPREVfU1VDQ0VTUxAAEh8KG01TRUFSQ0hfRVJST1JfQ09ERV9OT19RVUVSWRABEisKJ01TRUFSQ0hfRVJST1JfQ09ERV9UT09fTVVDSF9CQVRDSF9RVUVSWRACEigKJE1TRUFSQ0hfRVJST1JfQ09ERV9OT19TRUFSQ0hfQ09OVEVYVBADEiQKIE1TRUFSQ0hfRVJST1JfQ09ERV9PVkVSU0laRV9TSVpFEAQq0QEKDFRlbXBsYXRlVHlwZRIUChBVTktOT1dOX1RFTVBMQVRFEAASEQoNVVNFUl9URU1QTEFURRABEhcKE0dST1VQX0NIQVRfVEVNUExBVEUQAhIUChBDSEFUVEVSX1RFTVBMQVRFEAMSEAoMQVBQX1RFTVBMQVRFEAQSEAoMRE9DX1RFTVBMQVRFEAUSGgoWU0xBU0hfQ09NTUFORF9URU1QTEFURRAGEhMKD0JBTk5FUl9URU1QTEFURRAHEhQKD0NPTU1PTl9URU1QTEFURRDoBypIChNUZW1wbGF0ZUNvbnRlbnRUeXBlEhgKFFVOS05PV05fQ09OVEVOVF9UWVBFEAASDgoKSkFWQVNDUklQVBABEgcKA0NTUxACKuMBChVDbGlja1Nob3VsZEFuc3dlclR5cGUSIQodQ2xpY2tTaG91bGRBbnN3ZXJUeXBlX1VOS05PV04QABIqCiZDbGlja1Nob3VsZEFuc3dlclR5cGVfQU5TV0VSX0lOX1NFQVJDSBABEiUKIUNsaWNrU2hvdWxkQW5zd2VyVHlwZV9QTEFDRUhPTERFUhACEioKJkNsaWNrU2hvdWxkQW5zd2VyVHlwZV9SRUNPTU1FTkRfUFJPTVBUEAMSKAokQ2xpY2tTaG91bGRBbnN3ZXJUeXBlX1NFQVJDSF9JTl9DSEFUEAQqPQoSU2VhcmNoU2V0dGluZ3NUeXBlEhQKEFVOS05PV05fU0VUVElOR1MQABIRCg1TRUFSQ0hfRU5HSU5FEAEqUQoKQ2xpZW50VHlwZRIXChNVTktOT1dOX0NMSUVOVF9UWVBFEAASBwoDV0VCEAESCwoHQU5EUk9JRBACEgcKA0lPUxADEgsKB0hBUk1PTlkQBEJLChZjb20uc3MuYW5kcm9pZC5sYXJrLnBiSANaL2NvZGUuYnl0ZWQub3JnL2xhcmsvaW0tcHJvdG9idWYvaW1wcm90by91c2VhcmNo",[J,Xl,Rt,ct,be,At,he]);var Gl=at(Ul,10),tV=at(Ul,11);import{enumDesc as ua,fileDesc as uo,messageDesc as oV,serviceDesc as ia,tsEnum as pa}from"@bufbuild/protobuf/codegenv2";var RV=uo("Cg9yZWFjdGlvbnMucHJvdG8SCXJlYWN0aW9ucyJ6ChRQdWxsUmVhY3Rpb25zUmVxdWVzdBInCgttZXNzYWdlX2lkcxgBIAMoCUISisMaDnNwbGl0LHR5cGU9bXNnEhoKC2ZldGNoX3VzZXJzGAIgASgIOgVmYWxzZRIdCg5mZXRjaF9jaGF0dGVycxgDIAEoCDoFZmFsc2UihgEKFVB1bGxSZWFjdGlvbnNSZXNwb25zZRI0ChFtZXNzYWdlX3JlYWN0aW9ucxgBIAMoCzIZLmVudGl0aWVzLk1lc3NhZ2VSZWFjdGlvbhI3ChRzZWxmX3JlYWN0aW9uX3N0YXR1cxgCIAMoCzIZLnJlYWN0aW9ucy5SZWFjdGlvblN0YXR1cyJ8Cg5SZWFjdGlvblN0YXR1cxIPCgd1c2VyX2lkGAEgASgJEhIKCm1lc3NhZ2VfaWQYAiABKAkSFQoNcmVhY3Rpb25fdHlwZRgDIAEoCRIUCgxpc19jYW5jZWxsZWQYBCABKAgSGAoQbmFub191cGRhdGVfdGltZRgFIAEoAyL4AQofUmVhY3Rpb25TdGF0dXNXaXRoUmVhY3Rpb25Vc2VycxIyCg9yZWFjdGlvbl9zdGF0dXMYASABKAsyGS5yZWFjdGlvbnMuUmVhY3Rpb25TdGF0dXMSWgoRbmFub191cGRhdGVfdGltZXMYAiADKAsyPy5yZWFjdGlvbnMuUmVhY3Rpb25TdGF0dXNXaXRoUmVhY3Rpb25Vc2Vycy5OYW5vVXBkYXRlVGltZXNFbnRyeRINCgVjb3VudBgDIAEoBRo2ChROYW5vVXBkYXRlVGltZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBIqEBChJQdXNoUmVhY3Rpb25TdGF0dXMSOwoUdXNlcl9yZWFjdGlvbl9zdGF0dXMYASADKAsyGS5yZWFjdGlvbnMuUmVhY3Rpb25TdGF0dXNCAhgBEk4KGnJlYWN0aW9uX3N0YXR1c193aXRoX3VzZXJzGAIgASgLMioucmVhY3Rpb25zLlJlYWN0aW9uU3RhdHVzV2l0aFJlYWN0aW9uVXNlcnMikQEKElB1dFJlYWN0aW9uUmVxdWVzdBImCgptZXNzYWdlX2lkGAEgASgJQhKKwxoOc3BsaXQsdHlwZT1tc2cSFQoNcmVhY3Rpb25fdHlwZRgCIAEoCRIhChlyZWFjdGlvbl9zdHJhdGVneV92ZXJzaW9uGAMgASgFEhkKEWlzX2Zyb21fbWlncmF0aW9uGAQgASgIIiQKE1B1dFJlYWN0aW9uUmVzcG9uc2USDQoFY291bnQYASABKAUieQoVRGVsZXRlUmVhY3Rpb25SZXF1ZXN0EiYKCm1lc3NhZ2VfaWQYASABKAlCEorDGg5zcGxpdCx0eXBlPW1zZxIVCg1yZWFjdGlvbl90eXBlGAIgASgJEiEKGXJlYWN0aW9uX3N0cmF0ZWd5X3ZlcnNpb24YAyABKAUiJwoWRGVsZXRlUmVhY3Rpb25SZXNwb25zZRINCgVjb3VudBgBIAEoBSLyAgoNUHVzaFJlYWN0aW9ucxI0ChFtZXNzYWdlX3JlYWN0aW9ucxgBIAMoCzIZLmVudGl0aWVzLk1lc3NhZ2VSZWFjdGlvbhJMChJyZWFjdGlvbkV4dHJhSW5mb3MYAiADKAsyMC5yZWFjdGlvbnMuUHVzaFJlYWN0aW9ucy5SZWFjdGlvbkV4dHJhSW5mb3NFbnRyeRp2ChFSZWFjdGlvbkV4dHJhSW5mbxIUCgxpc19jYW5jZWxsZWQYASABKAgSIAoGbm90aWNlGAIgASgLMhAuZW50aXRpZXMuTm90aWNlEhsKE3JlYWN0aW9uX2NoYXR0ZXJfaWQYAyABKAkSDAoEdHlwZRgEIAEoCRplChdSZWFjdGlvbkV4dHJhSW5mb3NFbnRyeRILCgNrZXkYASABKAkSOQoFdmFsdWUYAiABKAsyKi5yZWFjdGlvbnMuUHVzaFJlYWN0aW9ucy5SZWFjdGlvbkV4dHJhSW5mbzoCOAEiNgocUHVsbFJlYWN0aW9uc1Jlc291cmNlUmVxdWVzdBIWCg5yZWFjdGlvbnNfdHlwZRgBIAMoCSK1AQodUHVsbFJlYWN0aW9uc1Jlc291cmNlUmVzcG9uc2USWgoRcmVhY3Rpb25zUmVzb3VyY2UYASADKAsyPy5yZWFjdGlvbnMuUHVsbFJlYWN0aW9uc1Jlc291cmNlUmVzcG9uc2UuUmVhY3Rpb25zUmVzb3VyY2VFbnRyeRo4ChZSZWFjdGlvbnNSZXNvdXJjZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiaQoNVXNlclJlYWN0aW9ucxIhChlyZWFjdGlvbl9zdHJhdGVneV92ZXJzaW9uGAEgASgFEhYKDnJlYWN0aW9uc190eXBlGAIgAygJEh0KFWV4dGVuZF9yZWFjdGlvbl90eXBlcxgDIAMoCSKWAQoRUHVzaFVzZXJSZWFjdGlvbnMSMAoOdXNlcl9yZWFjdGlvbnMYASABKAsyGC5yZWFjdGlvbnMuVXNlclJlYWN0aW9ucxIKCgJ0cxgCIAEoAxJDCiF1c2VyX3JlYWN0aW9uc19maWx0ZXJfbGFya192YWx1ZXMYAyABKAsyGC5yZWFjdGlvbnMuVXNlclJlYWN0aW9ucyJcChhQdWxsVXNlclJlYWN0aW9uc1JlcXVlc3QSIQoZcmVhY3Rpb25fc3RyYXRlZ3lfdmVyc2lvbhgBIAEoBRIdChVpc19maWx0ZXJfbGFya192YWx1ZXMYAiABKAgingEKGVB1bGxVc2VyUmVhY3Rpb25zUmVzcG9uc2USMAoOdXNlcl9yZWFjdGlvbnMYASABKAsyGC5yZWFjdGlvbnMuVXNlclJlYWN0aW9ucxIKCgJ0cxgCIAEoAxJDCiF1c2VyX3JlYWN0aW9uc19maWx0ZXJfbGFya192YWx1ZXMYAyABKAsyGC5yZWFjdGlvbnMuVXNlclJlYWN0aW9ucyIdChtQdWxsVXNlck1SVVJlYWN0aW9uc1JlcXVlc3QiRgocUHVsbFVzZXJNUlVSZWFjdGlvbnNSZXNwb25zZRIaChJ1c2VyX21ydV9yZWFjdGlvbnMYASADKAkSCgoCdHMYAiABKAMiPgoUUHVzaFVzZXJNUlVSZWFjdGlvbnMSGgoSdXNlcl9tcnVfcmVhY3Rpb25zGAEgAygJEgoKAnRzGAIgASgDIk4KDFVzZWRSZWFjdGlvbhIUCgxyZWFjdGlvbl9rZXkYASACKAkSDQoFb3JkZXIYAiACKAUSGQoRc2VsZWN0ZWRfc2tpbl9rZXkYAyABKAkiZgoYUHVsbFVzZWRSZWFjdGlvbnNSZXF1ZXN0Eg8KB3ZlcnNpb24YASABKAUSHgoWdXNlZF9yZWFjdGlvbnNfdmVyc2lvbhgCIAEoBRIZChF1c2VyX3NraW5fdmVyc2lvbhgDIAEoAyKSAQoZUHVsbFVzZWRSZWFjdGlvbnNSZXNwb25zZRIuCg1Vc2VkUmVhY3Rpb25zGAEgAygLMhcucmVhY3Rpb25zLlVzZWRSZWFjdGlvbhIeChZ1c2VkX3JlYWN0aW9uc192ZXJzaW9uGAIgASgFEgoKAnRzGAMgASgDEhkKEXVzZXJfc2tpbl92ZXJzaW9uGAQgASgDIm8KEVB1c2hVc2VkUmVhY3Rpb25zEi4KDVVzZWRSZWFjdGlvbnMYASADKAsyFy5yZWFjdGlvbnMuVXNlZFJlYWN0aW9uEh4KFnVzZWRfcmVhY3Rpb25zX3ZlcnNpb24YAiABKAUSCgoCdHMYAyABKAMiPQolVXBkYXRlVXNlclJlY2VudGx5VXNlZFJlYWN0aW9uUmVxdWVzdBIUCgxyZWFjdGlvbl9rZXkYASABKAkiKAomVXBkYXRlVXNlclJlY2VudGx5VXNlZFJlYWN0aW9uUmVzcG9uc2UiuAEKHVVwZGF0ZVVzZXJSZWFjdGlvblNraW5SZXF1ZXN0El0KFHJlYWN0aW9uX3RvX3NraW5fa2V5GAEgAygLMj8ucmVhY3Rpb25zLlVwZGF0ZVVzZXJSZWFjdGlvblNraW5SZXF1ZXN0LlJlYWN0aW9uVG9Ta2luS2V5RW50cnkaOAoWUmVhY3Rpb25Ub1NraW5LZXlFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjsKHlVwZGF0ZVVzZXJSZWFjdGlvblNraW5SZXNwb25zZRIZChF1c2VyX3NraW5fdmVyc2lvbhgBIAEoAyLBAQoZVXNlclJlYWN0aW9uU2VsZWN0ZWRTa2lucxJZChRyZWFjdGlvbl90b19za2luX2tleRgBIAMoCzI7LnJlYWN0aW9ucy5Vc2VyUmVhY3Rpb25TZWxlY3RlZFNraW5zLlJlYWN0aW9uVG9Ta2luS2V5RW50cnkSDwoHdmVyc2lvbhgCIAEoAxo4ChZSZWFjdGlvblRvU2tpbktleUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwEKG1B1c2hVc2VyUmVhY3Rpb25Ta2luUmVxdWVzdBJbChRyZWFjdGlvbl90b19za2luX2tleRgBIAMoCzI9LnJlYWN0aW9ucy5QdXNoVXNlclJlYWN0aW9uU2tpblJlcXVlc3QuUmVhY3Rpb25Ub1NraW5LZXlFbnRyeRIZChF1c2VyX3NraW5fdmVyc2lvbhgCIAEoAxo4ChZSZWFjdGlvblRvU2tpbktleUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEinAEKBUltYWdlEgsKA2tleRgBIAEoCRIPCgN1cmwYAiABKAlCAhgBEg0KBXdpZHRoGAMgASgFEg4KBmhlaWdodBgEIAEoBRIsCglmaWxlX2luZm8YBSABKAsyGS5yZWFjdGlvbnMuSW1hZ2UuRmlsZUluZm8aKAoIRmlsZUluZm8SCwoDa2V5GAEgASgJEg8KB2ZzX3VuaXQYAiABKAki4wcKDUVtb2ppUmVzb3VyY2USCwoDa2V5GAEgAigJEjQKCWkxOG5fdGV4dBgCIAEoCzIhLnJlYWN0aW9ucy5FbW9qaVJlc291cmNlLkkxOG5UZXh0EhEKCWltYWdlX2tleRgDIAEoCRIZCgppc19kZWxldGVkGAQgASgIOgVmYWxzZRIRCglza2luX2tleXMYBSADKAkSNwoLaTE4bl9pbWFnZXMYBiABKAsyIi5yZWFjdGlvbnMuRW1vamlSZXNvdXJjZS5JMThuSW1hZ2USFAoMZW1vamlfc2V0X2lkGAcgASgJEjYKCmVhc3Rlcl9lZ2cYCCABKAsyIi5yZWFjdGlvbnMuRW1vamlSZXNvdXJjZS5FYXN0ZXJFZ2camAEKCEkxOG5UZXh0EhQKDGRlZmF1bHRfdGV4dBgBIAIoCRJECgppMThuX3RleHRzGAIgAygLMjAucmVhY3Rpb25zLkVtb2ppUmVzb3VyY2UuSTE4blRleHQuSTE4blRleHRzRW50cnkaMAoOSTE4blRleHRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARq/AQoJSTE4bkltYWdlEicKDWRlZmF1bHRfaW1hZ2UYASABKAsyEC5yZWFjdGlvbnMuSW1hZ2USRQoKaTE4bl9pbWFnZRgCIAMoCzIxLnJlYWN0aW9ucy5FbW9qaVJlc291cmNlLkkxOG5JbWFnZS5JMThuSW1hZ2VFbnRyeRpCCg5JMThuSW1hZ2VFbnRyeRILCgNrZXkYASABKAkSHwoFdmFsdWUYAiABKAsyEC5yZWFjdGlvbnMuSW1hZ2U6AjgBGukCCglFYXN0ZXJFZ2cSFQoNYW5pbWF0aW9uX2tleRgBIAEoCRIZChFhbmltYXRpb25fZnNfdW5pdBgCIAEoCRJhChllYXN0ZXJfZWdnX3BsYXlfdGhyZXNob2xkGAMgAygLMj4ucmVhY3Rpb25zLkVtb2ppUmVzb3VyY2UuRWFzdGVyRWdnLkVhc3RlckVnZ1BsYXlUaHJlc2hvbGRFbnRyeRJICg5hbmltYXRpb25fdHlwZRgEIAEoDjIwLnJlYWN0aW9ucy5FbW9qaVJlc291cmNlLkVhc3RlckVnZy5BbmltYXRpb25UeXBlGj0KG0Vhc3RlckVnZ1BsYXlUaHJlc2hvbGRFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIj4KDUFuaW1hdGlvblR5cGUSCwoHVU5LTk9XThAAEgsKB0RFRkFVTFQQARITCg9BVE1PU1BIRVJFTEFZRVIQAiI9CiZQdWxsUmVhY3Rpb25FYXN0ZXJFZ2dQbGF5U3RhdHVzUmVxdWVzdBITCgttZXNzYWdlX2lkcxgBIAMoAyLYAQonUHVsbFJlYWN0aW9uRWFzdGVyRWdnUGxheVN0YXR1c1Jlc3BvbnNlEm8KGG1lc3NhZ2VfaWQyaXNfY2FuX3BsYXllZBgBIAMoCzJNLnJlYWN0aW9ucy5QdWxsUmVhY3Rpb25FYXN0ZXJFZ2dQbGF5U3RhdHVzUmVzcG9uc2UuTWVzc2FnZUlkMmlzQ2FuUGxheWVkRW50cnkaPAoaTWVzc2FnZUlkMmlzQ2FuUGxheWVkRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgIOgI4ASI3ChlQdWxsRW1vamlSZXNvdXJjZXNSZXF1ZXN0EhoKD2N1cnJlbnRfdmVyc2lvbhgBIAEoBToBMCKHAQoaUHVsbEVtb2ppUmVzb3VyY2VzUmVzcG9uc2USGQoObGF0ZXN0X3ZlcnNpb24YASABKAU6ATASMQoPZW1vamlfcmVzb3VyY2VzGAIgAygLMhgucmVhY3Rpb25zLkVtb2ppUmVzb3VyY2USGwoTZXhwaXJlX3RpbWVfc2Vjb25kcxgDIAEoBSIqChtSZWNvbW1lbmRTdGF0dXNJY29uUmVzb3VyY2USCwoDa2V5GAEgAigJIikKJ1B1bGxSZWNvbW1lbmRTdGF0dXNJY29uUmVzb3VyY2VzUmVxdWVzdCJ7CihQdWxsUmVjb21tZW5kU3RhdHVzSWNvblJlc291cmNlc1Jlc3BvbnNlEk8KH3JlY29tbWVuZF9zdGF0dXNfaWNvbl9yZXNvdXJjZXMYASADKAsyJi5yZWFjdGlvbnMuUmVjb21tZW5kU3RhdHVzSWNvblJlc291cmNlIhcKFVB1bGxFbW9qaVBhbmVsUmVxdWVzdCKnAwoWUHVsbEVtb2ppUGFuZWxSZXNwb25zZRI+CgxlbW9qaXNfb3JkZXIYASADKAsyKC5yZWFjdGlvbnMuUHVsbEVtb2ppUGFuZWxSZXNwb25zZS5FbW9qaXMangIKBkVtb2ppcxI0CgR0eXBlGAEgASgOMiYucmVhY3Rpb25zLlB1bGxFbW9qaVBhbmVsUmVzcG9uc2UuVHlwZRIkCgppY29uX2ltYWdlGAIgASgLMhAucmVhY3Rpb25zLkltYWdlEiAKBXRpdGxlGAMgASgLMhEuZW50aXRpZXMuSTE4blZhbBIhCgZzb3VyY2UYBCABKAsyES5lbnRpdGllcy5JMThuVmFsEj8KBGtleXMYBSADKAsyMS5yZWFjdGlvbnMuUHVsbEVtb2ppUGFuZWxSZXNwb25zZS5FbW9qaXMuRW1vamlLZXkaMgoIRW1vamlLZXkSCwoDa2V5GAEgASgJEhkKEXNlbGVjdGVkX3NraW5fa2V5GAIgASgJIiwKBFR5cGUSCwoHVU5LTk9XThAAEgsKB0RFRkFVTFQQARIKCgZDVVNUT00QAiKJAgoQRW1vamlSZXNvdXJjZVNldBIOCgZzZXRfaWQYASABKAkSOQoKc2V0X3NvdXJjZRgCIAEoDjIlLnJlYWN0aW9ucy5FbW9qaVJlc291cmNlU2V0LlNldFNvdXJjZRIxCg9lbW9qaV9yZXNvdXJjZXMYAyADKAsyGC5yZWFjdGlvbnMuRW1vamlSZXNvdXJjZRIPCgd2ZXJzaW9uGAQgASgFEhsKE2V4cGlyZV90aW1lX3NlY29uZHMYBSABKAUiSQoJU2V0U291cmNlEgsKB0RFRkFVTFQQARIWChJVU0VSX1RFTkFOVF9DVVNUT00QAhIXChNPVEhFUl9URU5BTlRfQ1VTVE9NEAMimAIKG1B1bGxFbW9qaVJlc291cmNlc1YyUmVxdWVzdBJcChRlbW9qaV9zZXRfaWQydmVyc2lvbhgBIAMoCzI+LnJlYWN0aW9ucy5QdWxsRW1vamlSZXNvdXJjZXNWMlJlcXVlc3QuRW1vamlTZXRJZDJ2ZXJzaW9uRW50cnkSIgoabmVlZF91c2VyX3RlbmFudF9yZXNvdXJjZXMYAiABKAgSPAoLYWNjZXNzX3R5cGUYAyABKA4yJy5yZWFjdGlvbnMuUHVsbEVtb2ppUmVzb3VyY2VzQWNjZXNzVHlwZRo5ChdFbW9qaVNldElkMnZlcnNpb25FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBIlcKHFB1bGxFbW9qaVJlc291cmNlc1YyUmVzcG9uc2USNwoSZW1vamlfcmVzb3VyY2Vfc2V0GAEgAygLMhsucmVhY3Rpb25zLkVtb2ppUmVzb3VyY2VTZXQimgIKJFB1bGxFbW9qaVJlc291cmNlc0J5RW1vamlLZXlzUmVxdWVzdBISCgplbW9qaV9rZXlzGAEgAygJEmUKFGVtb2ppX3NldF9pZDJ2ZXJzaW9uGAIgAygLMkcucmVhY3Rpb25zLlB1bGxFbW9qaVJlc291cmNlc0J5RW1vamlLZXlzUmVxdWVzdC5FbW9qaVNldElkMnZlcnNpb25FbnRyeRI8CgthY2Nlc3NfdHlwZRgDIAEoDjInLnJlYWN0aW9ucy5QdWxsRW1vamlSZXNvdXJjZXNBY2Nlc3NUeXBlGjkKF0Vtb2ppU2V0SWQydmVyc2lvbkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBToCOAEiYAolUHVsbEVtb2ppUmVzb3VyY2VzQnlFbW9qaUtleXNSZXNwb25zZRI3ChJlbW9qaV9yZXNvdXJjZV9zZXQYASADKAsyGy5yZWFjdGlvbnMuRW1vamlSZXNvdXJjZVNldCIWChRQdXNoRW1vamlQYW5lbFVwZGF0ZSpBChxQdWxsRW1vamlSZXNvdXJjZXNBY2Nlc3NUeXBlEgsKB1VOS05PV04QABILCgdERUZBVUxUEAESBwoDQ0NNEAIygAIKD1JlYWN0aW9uR3JlZXRlchJHCgRzZW5kEh0ucmVhY3Rpb25zLlB1dFJlYWN0aW9uUmVxdWVzdBoeLnJlYWN0aW9ucy5QdXRSZWFjdGlvblJlc3BvbnNlIgASTwoGZGVsZXRlEiAucmVhY3Rpb25zLkRlbGV0ZVJlYWN0aW9uUmVxdWVzdBohLnJlYWN0aW9ucy5EZWxldGVSZWFjdGlvblJlc3BvbnNlIgASUwoMZ2V0UmVhY3Rpb25zEh8ucmVhY3Rpb25zLlB1bGxSZWFjdGlvbnNSZXF1ZXN0GiAucmVhY3Rpb25zLlB1bGxSZWFjdGlvbnNSZXNwb25zZSIAQk0KFmNvbS5zcy5hbmRyb2lkLmxhcmsucGJIA1oxY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL3JlYWN0aW9ucw",[J,y]);var cV=oV(RV,9);var AV=oV(RV,13);var aV=oV(RV,18);import{enumDesc as Ja,fileDesc as io,messageDesc as nt,tsEnum as Ta}from"@bufbuild/protobuf/codegenv2";var st=io("Cgx1cmdlbnQucHJvdG8SBnVyZ2VudCK9BQoQUHV0VXJnZW50UmVxdWVzdBImCgptZXNzYWdlX2lkGAEgAigJQhKKwxoOc3BsaXQsdHlwZT1tc2cSEwoLY2hhdHRlcl9pZHMYAiADKAkSKgoLdXJnZW50X3R5cGUYAyABKA4yFS5lbnRpdGllcy5VcmdlbnQuVHlwZRIZCgtzdHJpY3RfbW9kZRgEIAEoCDoEdHJ1ZRJKChV1cmdlbnRfY2hhdHRlcl9ncm91cHMYBSADKAsyKy51cmdlbnQuUHV0VXJnZW50UmVxdWVzdC5VcmdlbnRDaGF0dGVyR3JvdXASQQoQcHJlX3Byb2Nlc3NfaW5mbxgGIAEoCzInLnVyZ2VudC5QdXRVcmdlbnRSZXF1ZXN0LlByZVByb2Nlc3NJbmZvEhYKDnVyZ2VudF9tZXNzYWdlGAcgASgJEjgKC3NlbGVjdF90eXBlGAggASgOMiMudXJnZW50LlB1dFVyZ2VudFJlcXVlc3QuU2VsZWN0VHlwZRIUCgxkaXNhYmxlX2xpc3QYCSADKAkSFwoPYWRkaXRpb25hbF9saXN0GAogAygJEg8KB2NoYXRfaWQYCyABKAkSGQoRY2FuY2VsX3BvcF91cF9hY2sYDCABKAgaVQoSVXJnZW50Q2hhdHRlckdyb3VwEhMKC2NoYXR0ZXJfaWRzGAEgAygJEioKC3VyZ2VudF90eXBlGAIgASgOMhUuZW50aXRpZXMuVXJnZW50LlR5cGUaOAoOUHJlUHJvY2Vzc0luZm8SDwoHbWVzc2FnZRgBIAEoDBIVCg1xdW90YV9jaGVja2VkGAIgASgIIlgKClNlbGVjdFR5cGUSFwoTU0VMRUNUX1NPTUVfQ0hBVFRFUhABEhkKFVNFTEVDVF9VTlJFQURfQ0hBVFRFUhACEhYKElNFTEVDVF9BTExfQ0hBVFRFUhADIuMBChFQdXRVcmdlbnRSZXNwb25zZRIgCgZ1cmdlbnQYASABKAsyEC5lbnRpdGllcy5VcmdlbnQSEwoLY2hhdHRlcl9pZHMYAiADKAkSQwoOdXJnZW50X2Fja19pZHMYAyADKAsyKy51cmdlbnQuUHV0VXJnZW50UmVzcG9uc2UuVXJnZW50QWNrSWRzRW50cnkSHQoVaW52aXNpYmxlX2NoYXR0ZXJfaWRzGAQgAygJGjMKEVVyZ2VudEFja0lkc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQAoTUHV0VXJnZW50QWNrUmVxdWVzdBISCgptZXNzYWdlX2lkGAEgAigJEhUKDXVyZ2VudF9hY2tfaWQYAiABKAkiKgoUUHV0VXJnZW50QWNrUmVzcG9uc2USEgoKbWVzc2FnZV9pZBgBIAEoCSJmChtDb25maXJtVXJnZW50QWNrQnlJZFJlcXVlc3QSFQoNdXJnZW50X2Fja19pZBgBIAEoCRIfChFwdXNoX3RvX2Zyb21fdXNlchgCIAEoCDoEdHJ1ZRIPCgd2ZXJzaW9uGAMgASgDIh4KHENvbmZpcm1VcmdlbnRBY2tCeUlkUmVzcG9uc2Ui0QIKEVB1c2hVcmdlbnRSZXF1ZXN0EhIKCm1lc3NhZ2VfaWQYASACKAkSFwoPc2VuZF9jaGF0dGVyX2lkGAIgASgJEhEKCXNlbmRfdGltZRgDIAEoAxIPCgdjaGF0X2lkGAQgASgJEkMKDnVyZ2VudF9hY2tfaWRzGAUgAygLMisudXJnZW50LlB1c2hVcmdlbnRSZXF1ZXN0LlVyZ2VudEFja0lkc0VudHJ5EhUKDXVyZ2VudF9hY2tfaWQYBiABKAkSIAoGdXJnZW50GAcgASgLMhAuZW50aXRpZXMuVXJnZW50EicKCnVyZ2VudF9hY2sYCCABKAsyEy5lbnRpdGllcy5VcmdlbnRBY2sSDwoHdmVyc2lvbhgJIAEoAxozChFVcmdlbnRBY2tJZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBItoBChRQdXNoVXJnZW50QWNrUmVxdWVzdBISCgptZXNzYWdlX2lkGAEgAigJEhYKDmFja19jaGF0dGVyX2lkGAIgASgJEioKC3VyZ2VudF90eXBlGAMgASgOMhUuZW50aXRpZXMuVXJnZW50LlR5cGUSDwoHY2hhdF9pZBgEIAEoCRIVCg11cmdlbnRfYWNrX2lkGAUgASgJEicKCnVyZ2VudF9hY2sYBiABKAsyEy5lbnRpdGllcy5VcmdlbnRBY2sSGQoRY2FuY2VsX3BvcF91cF9hY2sYByABKAgiRAobUHVsbFVyZ2VudFdhaXRpbmdBY2tSZXF1ZXN0EhYKDmxhc3Rfc2VuZF90aW1lGAEgASgDEg0KBWxpbWl0GAIgASgDIn0KHFB1bGxVcmdlbnRXYWl0aW5nQWNrUmVzcG9uc2USIQoHdXJnZW50cxgBIAMoCzIQLmVudGl0aWVzLlVyZ2VudBIoCgt1cmdlbnRfYWNrcxgCIAMoCzITLmVudGl0aWVzLlVyZ2VudEFjaxIQCghoYXNfbW9yZRgDIAEoCCJGChtQdWxsVXJnZW50c0Fja1N0YXR1c1JlcXVlc3QSJwoLbWVzc2FnZV9pZHMYASADKAlCEorDGg5zcGxpdCx0eXBlPW1zZyL7BgocUHVsbFVyZ2VudHNBY2tTdGF0dXNSZXNwb25zZRJNCg11cmdlbnRfc3RhdHVzGAEgAygLMjYudXJnZW50LlB1bGxVcmdlbnRzQWNrU3RhdHVzUmVzcG9uc2UuVXJnZW50U3RhdHVzRW50cnkSSwoMcGhvbmVfc3RhdHVzGAIgAygLMjUudXJnZW50LlB1bGxVcmdlbnRzQWNrU3RhdHVzUmVzcG9uc2UuUGhvbmVTdGF0dXNFbnRyeRJJCgt1cmdlbnRfYWNrcxgDIAMoCzI0LnVyZ2VudC5QdWxsVXJnZW50c0Fja1N0YXR1c1Jlc3BvbnNlLlVyZ2VudEFja3NFbnRyeRq3AQoMVXJnZW50U3RhdHVzEkQKBHR5cGUYASABKA4yNi51cmdlbnQuUHVsbFVyZ2VudHNBY2tTdGF0dXNSZXNwb25zZS5VcmdlbnRTdGF0dXMuVHlwZRIYChBpbml0X2NoYXR0ZXJfaWRzGAIgAygJEhcKD2Fja19jaGF0dGVyX2lkcxgDIAMoCRIOCgZpc19hY2sYBCABKAgiHgoEVHlwZRILCgdGUk9NX01FEAESCQoFVE9fTUUQAhpGCgtQaG9uZVN0YXR1cxIbChNzdWNjZXNzX2NoYXR0ZXJfaWRzGAEgAygJEhoKEmZhaWxlZF9jaGF0dGVyX2lkcxgCIAMoCRpmChFVcmdlbnRTdGF0dXNFbnRyeRILCgNrZXkYASABKAkSQAoFdmFsdWUYAiABKAsyMS51cmdlbnQuUHVsbFVyZ2VudHNBY2tTdGF0dXNSZXNwb25zZS5VcmdlbnRTdGF0dXM6AjgBGmQKEFBob25lU3RhdHVzRW50cnkSCwoDa2V5GAEgASgJEj8KBXZhbHVlGAIgASgLMjAudXJnZW50LlB1bGxVcmdlbnRzQWNrU3RhdHVzUmVzcG9uc2UuUGhvbmVTdGF0dXM6AjgBGj0KDVVyZ2VudEFja0xpc3QSLAoPdXJnZW50X2Fja19saXN0GAEgAygLMhMuZW50aXRpZXMuVXJnZW50QWNrGmUKD1VyZ2VudEFja3NFbnRyeRILCgNrZXkYASABKAkSQQoFdmFsdWUYAiABKAsyMi51cmdlbnQuUHVsbFVyZ2VudHNBY2tTdGF0dXNSZXNwb25zZS5VcmdlbnRBY2tMaXN0OgI4ASIeChxQdWxsVXJnZW50UGhvbmVOdW1iZXJSZXF1ZXN0IjYKHVB1bGxVcmdlbnRQaG9uZU51bWJlclJlc3BvbnNlEhUKDXBob25lX251bWJlcnMYASADKAkiwwEKHFB1c2hGYWlsZWRVcmdlbnROb3RpZnlSZXN1bHQSEgoKbWVzc2FnZV9pZBgBIAIoCRIqCgt1cmdlbnRfdHlwZRgCIAEoDjIVLmVudGl0aWVzLlVyZ2VudC5UeXBlEhEKCXVyZ2VudF9pZBgDIAEoAxIaChJmYWlsZWRfY2hhdHRlcl9pZHMYBCADKAkSNAoSbm90aWZ5X3N0YXR1c19jb2RlGAUgASgOMhgudXJnZW50Lk5vdGlmeVN0YXR1c0NvZGUizAIKH1B1bGxTZWxlY3RVcmdlbnRDaGF0dGVyc1JlcXVlc3QSDwoHdXNlcl9pZBgBIAIoCRISCgptZXNzYWdlX2lkGAIgAigJEkcKC3NlbGVjdF90eXBlGAMgAigOMjIudXJnZW50LlB1bGxTZWxlY3RVcmdlbnRDaGF0dGVyc1JlcXVlc3QuU2VsZWN0VHlwZRInCgdjaGF0X2lkGAQgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhQKDGRpc2FibGVfbGlzdBgFIAMoCRIXCg9hZGRpdGlvbmFsX2xpc3QYBiADKAkSDgoGY3Vyc29yGAcgASgDEhIKCnBhZ2VfdG9rZW4YCCABKAkiPwoKU2VsZWN0VHlwZRIWChJTRUxFQ1RfQUxMX0NIQVRURVIQARIZChVTRUxFQ1RfVU5SRUFEX0NIQVRURVIQAiLkAwogUHVsbFNlbGVjdFVyZ2VudENoYXR0ZXJzUmVzcG9uc2USFQoNc3VjY2Vzc19jb3VudBgBIAEoAxIaChJjcm9zc19mYWlsZWRfY291bnQYAiABKAMSIQoZZXh0ZXJuYWxfbm90X2ZyaWVuZF9jb3VudBgDIAEoAxIYChBlbXB0eV9uYW1lX2NvdW50GAQgASgDEhkKEWVtcHR5X3Bob25lX2NvdW50GAUgASgDEhsKE3N1Y2Nlc3NfY2hhdHRlcl9pZHMYBiADKAMSGQoRY3Jvc3NfY2hhdHRlcl9pZHMYByADKAMSJwofZXh0ZXJuYWxfbm90X2ZyaWVuZF9jaGF0dGVyX2lkcxgIIAMoAxIfChdlbXB0eV9waG9uZV9jaGF0dGVyX2lkcxgJIAMoAxIeChZlbXB0eV9uYW1lX2NoYXR0ZXJfaWRzGAogAygDEhAKCGhhc19tb3JlGAsgASgIEhMKC25leHRfY3Vyc29yGAwgASgDEhIKCnBhZ2VfdG9rZW4YDSABKAkSKAogdXNlcl9zZXR0aW5nX25vdF9zbXNfcGhvbmVfY291bnQYDiABKAMSLgomdXNlcl9zZXR0aW5nX25vdF9zbXNfcGhvbmVfY2hhdHRlcl9pZHMYDyADKAMiTwoQVXJnZW50QXV0aFJlc3VsdBIQCghpc19hbGxvdxgBIAEoCBIpCg1kZW5pZWRfcmVhc29uGAIgASgOMhIubWlzYy5EZW5pZWRSZWFzb24ioQEKDVVyZ2VudENoYXR0ZXISEgoKY2hhdHRlcl9pZBgBIAIoCRImCgRjb2RlGAIgAigOMhgudXJnZW50LkluYWNjZXNzaWJsZUNvZGUSJQoKcmVhZF9zdGF0ZRgDIAEoDjIRLnVyZ2VudC5SZWFkU3RhdGUSLQoLYXV0aF9yZXN1bHQYBCABKAsyGC51cmdlbnQuVXJnZW50QXV0aFJlc3VsdCJfCh1QdWxsQ2hhdHRlcnNVcmdlbnRJbmZvUmVxdWVzdBITCgtjaGF0dGVyX2lkcxgBIAMoCRIVCg1pc19zdXBlcl9jaGF0GAIgAigIEhIKCm1lc3NhZ2VfaWQYAyACKAkiTgoeUHVsbENoYXR0ZXJzVXJnZW50SW5mb1Jlc3BvbnNlEiwKDWNoYXR0ZXJfaW5mb3MYASADKAsyFS51cmdlbnQuVXJnZW50Q2hhdHRlciKlAgoLVXJnZW50RXh0cmESGQoRY2FuY2VsX3BvcF91cF9hY2sYASABKAgSRQoSY2xvc2VkX2NoYXR0ZXJfaWRzGAIgAygLMikudXJnZW50LlVyZ2VudEV4dHJhLkNsb3NlZENoYXR0ZXJJZHNFbnRyeRJDChFtdXRlZF9jaGF0dGVyX2lkcxgDIAMoCzIoLnVyZ2VudC5VcmdlbnRFeHRyYS5NdXRlZENoYXR0ZXJJZHNFbnRyeRo3ChVDbG9zZWRDaGF0dGVySWRzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgIOgI4ARo2ChRNdXRlZENoYXR0ZXJJZHNFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAg6AjgBIkIKGENsb3NlVXJnZW50Tm90aWNlUmVxdWVzdBIVCg11cmdlbnRfYWNrX2lkGAEgAigJEg8KB3ZlcnNpb24YAiABKAMiGwoZQ2xvc2VVcmdlbnROb3RpY2VSZXNwb25zZSqqBAoQTm90aWZ5U3RhdHVzQ29kZRILCgdVbktub3duEAASEQoNTW9iaWxlSXNFbXB0eRABEhcKE0NoYXR0ZXJOYW1lTm90Rm91bmQQAhIQCgxUb29GcmVxdWVuY3kQAxIKCgZTeXNFcnIQBBILCgdUaW1lT3V0EAUSDwoLTXVsdGlGYWlsZWQQBhINCglOb3RBbnN3ZXIQBxIZChVCdXp6VGV4dEZhaWxPdmVyTGltaXQQCBIbChdCdXp6VGV4dEZhaWxTZXJ2ZXJFcnJvchAJEhsKF0J1enpUZXh0RmFpbFVuYXZhaWxhYmxlEAoSIgoeQnV6elRleHRGYWlsTnVtYmVyRG9lc05vdEV4aXN0EAsSGwoXQnV6ekNhbGxGYWlsU3dpdGNoZWRPZmYQDBIcChhCdXp6Q2FsbEZhaWxPdXRPZlNlcnZpY2UQDRIYChRCdXp6Q2FsbEZhaWxOb3RFeGlzdBAOEhsKF0J1enpDYWxsRmFpbFNlcnZlckVycm9yEA8SHgoaQnV6ekNhbGxGYWlsVW5hdmFpbGFibGVOb3cQEBIbChdCdXp6Q2FsbEZhaWxOb3RBbnN3ZXJlZBAREhQKEEJ1enpDYWxsRmFpbEJ1c3kQEhIYChRCdXp6Q2FsbEZhaWxSZWplY3RlZBATEiEKHUJ1enpDYWxsRmFpbE51bWJlclVuYXZhaWxhYmxlEBQSFwoTQnV6ekNhbGxGYWlsQmxvY2tlZBAVKoIBChBJbmFjY2Vzc2libGVDb2RlEgsKB0RFRkFVTFQQABIOCgpFTVBUWV9OQU1FEAESDwoLRU1QVFlfUEhPTkUQAhIQCgxDUk9TU19URU5BTlQQAxIOCgpOT1RfRlJJRU5EEAQSHgoaVVNFUl9TRVRUSU5HX05PVF9TTVNfUEhPTkUQBSorCglSZWFkU3RhdGUSCAoETk9ORRAAEggKBFJFQUQQARIKCgZVTlJFQUQQAkJKChZjb20uc3MuYW5kcm9pZC5sYXJrLnBiSANaLmNvZGUuYnl0ZWQub3JnL2xhcmsvaW0tcHJvdG9idWYvaW1wcm90by91cmdlbnQ",[J,y,he]);var nV=nt(st,6),sV=nt(st,7);import{enumDesc as ln,fileDesc as No,messageDesc as Qo,tsEnum as Vn}from"@bufbuild/protobuf/codegenv2";import{enumDesc as va,fileDesc as Io,messageDesc as Pa,tsEnum as ja}from"@bufbuild/protobuf/codegenv2";import{enumDesc as Ma,fileDesc as po,messageDesc as Da,tsEnum as Ha}from"@bufbuild/protobuf/codegenv2";var ht=po("ChxhaV90b3BpY19zdHJlYW1fc2VhcmNoLnByb3RvEhZhaV90b3BpY19zdHJlYW1fc2VhcmNoIr4BChBBcHBMaW5rQ2xpY2tJbmZvEhEKCWNhY2hlX2tleRgBIAEoCRIZChFzcGVjaWZpZWRfb2JqX2lkcxgCIAEoCRIYChBzdWdnZXN0X3F1ZXJ5X2lkGAMgASgJEg8KB2NoYXRfaWQYBCABKAkSEgoKY2xpY2tfdHlwZRgFIAEoCRIbChNzZWxlY3Rfd29yZF9jdHhfa2V5GAYgASgJEiAKGHN1cHBsZW1lbnRfcXVlcnlfY3R4X2tleRgHIAEoCSKIAwoSQUlUb3BpY1JlcXVlc3RJbmZvEiwKBXNjZW5lGAEgASgOMh0uYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5TY2VuZRJFChNhcHBfbGlua19jbGlja19pbmZvGAIgASgLMiguYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5BcHBMaW5rQ2xpY2tJbmZvEiIKGnN0cmF0ZWd5X2J1dHRvbl9jbGlja19pbmZvGAMgASgJEjwKEHNvdXJjZV90eXBlX2xpc3QYBCADKA4yIi5haV90b3BpY19zdHJlYW1fc2VhcmNoLlNvdXJjZVR5cGUSFgoObGxtX21vZGVsX3R5cGUYBSABKAUSPgoPaXRlbV9zY29wZV9pbmZvGAYgAygLMiUuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JdGVtU2NvcGVJbmZvEhEKCWFza19zY2VuZRgHIAEoBRIVCg1leHRyYV9wYXlsb2FkGAggASgMEhkKEXNlbGVjdGVkX3NraWxsX2lkGAkgASgJIoEBCgVWYWx1ZRIWCgxzdHJpbmdfdmFsdWUYASABKAlIABITCglpbnRfdmFsdWUYAiABKANIABIWCgxkb3VibGVfdmFsdWUYAyABKAFIABIUCgpib29sX3ZhbHVlGAQgASgISAASFQoLYnl0ZXNfdmFsdWUYBSABKAxIAEIGCgRraW5kIpsBCgxFeHRyYVBheWxvYWQSPgoFcGFpcnMYASADKAsyLy5haV90b3BpY19zdHJlYW1fc2VhcmNoLkV4dHJhUGF5bG9hZC5QYWlyc0VudHJ5GksKClBhaXJzRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgLMh0uYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5WYWx1ZToCOAEiuwEKD1JlYWRhYmlsaXR5SW5mbxJICghyZWFkYWJsZRgBIAEoDjI2LmFpX3RvcGljX3N0cmVhbV9zZWFyY2guUmVhZGFiaWxpdHlJbmZvLlJlYWRhYmxlU3RhdHVzEi4KBHRleHQYAiABKAsyIC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkkxOG5UZXh0Ii4KDlJlYWRhYmxlU3RhdHVzEgwKCFJlYWRhYmxlEAASDgoKVW5SZWFkYWJsZRABIqoFCglSZWZlcmVuY2USDQoFdGl0bGUYASABKAkSCwoDdXJsGAIgASgJEhQKDGRpc3BsYXlfdGltZRgDIAEoAxI9CgR0eXBlGAQgASgOMi8uYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5SZWZlcmVuY2UuUmVmZXJlbmNlVHlwZRIKCgJpZBgFIAEoCRJECghzdWJfdHlwZRgGIAEoDjIyLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guUmVmZXJlbmNlLlJlZmVyZW5jZVN1YlR5cGUSEQoJb3duZXJfdWlkGAcgASgDEkEKEHJlYWRhYmlsaXR5X2luZm8YCCABKAsyJy5haV90b3BpY19zdHJlYW1fc2VhcmNoLlJlYWRhYmlsaXR5SW5mbyLzAQoNUmVmZXJlbmNlVHlwZRILCgdVTktOT1dOEAASBwoDRE9DEAESCwoHTUVTU0FHRRACEgkKBUxJTkdPEAMSDAoISEVMUERFU0sQBBILCgdPVVRMSU5LEAUSCwoHTUlOVVRFUxAGEg4KClVQTE9BREZJTEUQBxIPCgtHT09HTEVEUklWRRAIEgwKCFNMQUNLTVNHEAkSDAoITUlOT1BBR0UQChILCgdDT01NRU5UEAsSCAoEQkFTRRAMEgkKBVNIRUVUEA0SCQoFRVhDRUwQDhIICgRNQUlMEA8SDAoIQVBQUk9WQUwQEBIKCgZQRU9QTEUQESKNAQoQUmVmZXJlbmNlU3ViVHlwZRIcChhSZWZlcmVuY2VTdWJUeXBlX1VOS05PV04QABIdChlSZWZlcmVuY2VTdWJUeXBlX0ZpbGVfRE9DEAESHQoZUmVmZXJlbmNlU3ViVHlwZV9GaWxlX1BQVBACEh0KGVJlZmVyZW5jZVN1YlR5cGVfRmlsZV9QREYQAyJ2CghSZXNvdXJjZRIzCgR0eXBlGAEgASgOMiUuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5SZXNvdXJjZS5UeXBlEgsKA2tleRgCIAEoCSIoCgRUeXBlEgsKB1VOS05PV04QABIJCgVJTUFHRRABEggKBFVTRVIQAiJJCghJMThuVGV4dBIQCghpMThuX2tleRgBIAEoCRIUCgxkZWZhdWx0X3RleHQYAiABKAkSFQoNZmFsbGJhY2tfdGV4dBgDIAEoCSKUAgoOU3RyYXRlZ3lCdXR0b24SLgoEdGV4dBgBIAEoCzIgLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guSTE4blRleHQSDwoHdWRfaWNvbhgCIAEoCRIUCgxzdHJhdGVneV9rZXkYAyABKAkSIgoac3RyYXRlZ3lfYnV0dG9uX2NsaWNrX2luZm8YBCABKAkSRgoLYWN0aW9uX3R5cGUYBSABKA4yMS5haV90b3BpY19zdHJlYW1fc2VhcmNoLlN0cmF0ZWd5QnV0dG9uLkFjdGlvblR5cGUiPwoKQWN0aW9uVHlwZRITCg9BQ1RJT05fQVBJX0NBTEwQABIcChhBQ1RJT05fRVhDTFVERV9SRUZFUkVOQ0UQASJ+ChNTdHJhdGVneUJ1dHRvbkdyb3VwEjcKB2J1dHRvbnMYASADKAsyJi5haV90b3BpY19zdHJlYW1fc2VhcmNoLlN0cmF0ZWd5QnV0dG9uEi4KBHRleHQYAiABKAsyIC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkkxOG5UZXh0IuQDCg5CdXR0b25Qcm9wZXJ0eRIMCgR0ZXh0GAEgASgJEg8KB3BheWxvYWQYAiABKAwSDwoHdWRfaWNvbhgDIAEoCRI5CgR0eXBlGAQgASgOMisuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5CdXR0b25Qcm9wZXJ0eS5UeXBlEkwKDmljb25fYW5pbWF0aW9uGAUgASgOMjQuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5CdXR0b25Qcm9wZXJ0eS5JY29uQW5pbWF0aW9uEhQKDHRyYWNrX3NvdXJjZRgGIAEoCRIyCghpMThuVGV4dBgHIAEoCzIgLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guSTE4blRleHQSRgoIZXh0cmFNYXAYCCADKAsyNC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkJ1dHRvblByb3BlcnR5LkV4dHJhTWFwRW50cnkaLwoNRXh0cmFNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIiwKBFR5cGUSCwoHVU5LTk9XThAAEhcKE1NUUk9OR19HVUlERV9CVVRUT04QASIoCg1JY29uQW5pbWF0aW9uEgoKBlVOS09XThAAEgsKB0pVTVBJTkcQASJ9CgxUZXh0UHJvcGVydHkSOQoFc3R5bGUYASABKA4yKi5haV90b3BpY19zdHJlYW1fc2VhcmNoLlRleHRQcm9wZXJ0eS5TdHlsZRIPCgdjb250ZW50GAIgASgJIiEKBVN0eWxlEgsKB1VOS05PV04QABILCgdMT0FESU5HEAEi1wEKD0NjbUNhcmRQcm9wZXJ0eRINCgV0aXRsZRgBIAEoCRIMCgRpY29uGAIgASgJEjoKBHR5cGUYAyABKA4yLC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkNjbUNhcmRQcm9wZXJ0eS5UeXBlEhUKDWlkZW50aWZpZXJfaWQYBCABKAkSNgoMZGVmYXVsdF90ZXh0GAUgASgLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JMThuVGV4dCIcCgRUeXBlEgsKB1VOS05PV04QABIHCgNET0MQASKuAQoURG9jeEVkaXRDYXJkUHJvcGVydHkSQwoGc3RhdHVzGAEgASgOMjMuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5Eb2N4RWRpdENhcmRQcm9wZXJ0eS5TdGF0dXMSEAoIZG9jeF9vcHMYAiADKAkSGwoTcHJvY2Vzc19zdGF0dXNfaW5mbxgDIAEoCSIiCgZTdGF0dXMSDgoKR0VORVJBVElORxABEggKBERPTkUQAiJoCgpCb2FyZEltYWdlEg0KBXRva2VuGAEgASgJEg0KBXdpZHRoGAIgASgDEg4KBmhlaWdodBgDIAEoAxIsCgVyYXRpbxgEIAEoCzIdLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guUmF0aW8iQgoFUmF0aW8SEAoIcGNfcmF0aW8YASABKAISFAoMbW9iaWxlX3JhdGlvGAIgASgCEhEKCXBhZF9yYXRpbxgDIAEoAiLMAQoTU3RyZWFtQm9hcmRQcm9wZXJ0eRIPCgdyYXdDb2RlGAEgASgJEjEKBWltYWdlGAIgASgLMiIuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5Cb2FyZEltYWdlEkIKBnN0YXR1cxgDIAEoDjIyLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guU3RyZWFtQm9hcmRQcm9wZXJ0eS5TdGF0dXMiLQoGU3RhdHVzEg4KCkdFTkVSQVRJTkcQARIICgRET05FEAISCQoFRVJST1IQAyKfAwoRQ2NtQ2FudmFzUHJvcGVydHkSDQoFdGl0bGUYASABKAkSDAoEaWNvbhgCIAEoCRI8CgR0eXBlGAMgASgOMi4uYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5DY21DYW52YXNQcm9wZXJ0eS5UeXBlEhUKDWlkZW50aWZpZXJfaWQYBCABKAkSEwoLY2FudmFzX3RleHQYBSABKAkSQAoGc3RhdHVzGAYgASgOMjAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5DY21DYW52YXNQcm9wZXJ0eS5TdGF0dXMSRwoKY29ubl9leGlzdBgHIAEoDjIzLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQ2NtQ2FudmFzUHJvcGVydHkuQ29ubkV4aXN0IhwKBFR5cGUSCwoHVU5LTk9XThAAEgcKA0RPQxABIjQKBlN0YXR1cxIKCgZVTktOT1cQABIKCgZDUkVBVEUQARIICgRFRElUEAISCAoEVklFVxADIiQKCUNvbm5FeGlzdBIMCghOT1RFWElTVBAAEgkKBUVYSVNUEAEiqwUKEERhdGFTbG90UHJvcGVydHkSCwoDa2V5GAEgASgJEj8KD2J1dHRvbl9wcm9wZXJ0eRgCIAEoCzImLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQnV0dG9uUHJvcGVydHkSCwoDYWx0GAMgASgJEjsKBHR5cGUYBCABKA4yLS5haV90b3BpY19zdHJlYW1fc2VhcmNoLkRhdGFTbG90UHJvcGVydHkuVHlwZRI7Cg10ZXh0X3Byb3BlcnR5GAUgASgLMiQuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5UZXh0UHJvcGVydHkSQgoRY2NtX2NhcmRfcHJvcGVydHkYBiABKAsyJy5haV90b3BpY19zdHJlYW1fc2VhcmNoLkNjbUNhcmRQcm9wZXJ0eRJNChdkb2N4X2VkaXRfY2FyZF9wcm9wZXJ0eRgHIAEoCzIsLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guRG9jeEVkaXRDYXJkUHJvcGVydHkSQwoOYm9hcmRfcHJvcGVydHkYCCABKAsyKy5haV90b3BpY19zdHJlYW1fc2VhcmNoLlN0cmVhbUJvYXJkUHJvcGVydHkSRgoTY2NtX2NhbnZhc19wcm9wZXJ0eRgJIAEoCzIpLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQ2NtQ2FudmFzUHJvcGVydHkioQEKBFR5cGUSCwoHVU5LTk9XThAAEhoKFlBVVF9VU0VSX0FDVElPTl9CVVRUT04QARIICgRURVhUEAISFAoQSk9JTl9XSUtJX0JVVFRPThADEgwKCENDTV9DQVJEEAQSEgoORE9DWF9FRElUX0NBUkQQBRIJCgVCT0FSRBAGEhMKD1BBWV9XSUtJX0JVVFRPThAHEg4KCkNDTV9DQU5WQVMQCCLvAQoLTm90aWNlQmxvY2sSOAoFYWxpZ24YASABKA4yKS5haV90b3BpY19zdHJlYW1fc2VhcmNoLk5vdGljZUJsb2NrLkFsaWduEhIKCmhpZGVfb3RoZXIYAiABKAgSEAoIbWFya2Rvd24YAyABKAkSRAoSZGF0YV9zbG90X3Byb3BlcnR5GAQgAygLMiguYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5EYXRhU2xvdFByb3BlcnR5IjoKBUFsaWduEgsKB1VOS05PV04QABIOCgpBTlNXRVJfVE9QEAESFAoQUkVGRVJFTkNFX0JPVFRPTRACIocBChJTY2hlZHVsZWRUYXNrQmxvY2sSGAoQdGFza19kZXNjcmlwdGlvbhgBIAEoCRIZChFpbnN0cnVjdGlvbl9xdWVyeRgCIAEoCRIXCg9yZWN1cnJlbmNlX3J1bGUYAyABKAkSEgoKc3RhcnRfdGltZRgEIAEoAxIPCgd0YXNrX2lkGAUgASgDIlMKDUJhbm5lZFVSTEluZm8SEgoKYmFubmVkX3VybBgBIAEoCRIuCgR0ZXh0GAIgASgLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JMThuVGV4dCKwEgoKQW5zd2VyQ2FyZBIRCgljb3RfYmxvY2sYASABKAkSXQoZcXVlcnlfdW5kZXJzdGFuZGluZ19ibG9jaxgCIAEoCzI6LmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQW5zd2VyQ2FyZC5RdWVyeVVuZGVyc3RhbmRpbmdCbG9jaxJIChByYWdfYW5zd2VyX2Jsb2NrGAMgASgLMi4uYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5BbnN3ZXJDYXJkLkFuc3dlckJsb2NrEksKE2RvdWJhb19hbnN3ZXJfYmxvY2sYBCABKAsyLi5haV90b3BpY19zdHJlYW1fc2VhcmNoLkFuc3dlckNhcmQuQW5zd2VyQmxvY2sSTAoTaGVscGRlc2tfbGlua19ibG9jaxgFIAMoCzIvLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQW5zd2VyQ2FyZC5IZWxwZGVza0xpbmsSOgoPcmVmZXJlbmNlX2Jsb2NrGAYgAygLMiEuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5SZWZlcmVuY2USMwoJcmVzb3VyY2VzGAcgAygLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5SZXNvdXJjZRJBChF1c2VyX2J1dHRvbl9ibG9jaxgIIAMoCzImLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guU3RyYXRlZ3lCdXR0b24STAoXcmVnZW5lcmF0ZV9idXR0b25fYmxvY2sYCSADKAsyKy5haV90b3BpY19zdHJlYW1fc2VhcmNoLlN0cmF0ZWd5QnV0dG9uR3JvdXASHwoXcmFnX2Fuc3dlcl9maWx0ZXJfYmxvY2sYCiABKAkSIAoYZG91YmFvX2Fuc3dlcl9oaW50X2Jsb2NrGAsgASgJEj8KD2d1aWRlZF9iZWhhdmlvchgMIAEoDjImLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guR3VpZGVkQmVoYXZpb3ISSAodZG91YmFvX2Fuc3dlcl9yZWZlcmVuY2VfYmxvY2sYDSADKAsyIS5haV90b3BpY19zdHJlYW1fc2VhcmNoLlJlZmVyZW5jZRJBChNib3R0b21fYnV0dG9uX2Jsb2NrGA4gAygLMiQuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5Cb3R0b21CdXR0b24SVAodcGVybV9leHBsYW5hdGlvbl9idXR0b25fYmxvY2sYDyADKAsyLS5haV90b3BpY19zdHJlYW1fc2VhcmNoLlBlcm1FeHBsYW5hdGlvbkJ1dHRvbhJCCgt1c2VyX3N0YXR1cxgQIAEoCzItLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQW5zd2VyQ2FyZC5Vc2VyU3RhdHVzEj8KD2tub3dsZWRnZV9zY29wZRgRIAEoCzImLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guS25vd2xlZGdlU2NvcGUSOQoMbm90aWNlX2Jsb2NrGBIgASgLMiMuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5Ob3RpY2VCbG9jaxJIChRzY2hlZHVsZWRfdGFza19ibG9jaxgTIAEoCzIqLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guU2NoZWR1bGVkVGFza0Jsb2NrEj4KD2Jhbm5lZF91cmxfaW5mbxgUIAMoCzIlLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQmFubmVkVVJMSW5mbxJGChNhbnN3ZXJfZGlzcGxheV9pbmZvGBUgASgLMikuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5BbnN3ZXJEaXNwbGF5SW5mbxr8BQoLQW5zd2VyQmxvY2sSEAoIbWFya2Rvd24YASABKAkSOQoGc3RhdHVzGAIgASgOMikuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5BbnN3ZXJDYXJkLlN0YXR1cxIRCglyZWFzb25pbmcYAyABKAkSUwoOd29ya2Zsb3dfdHJhY2UYBCADKAsyOy5haV90b3BpY19zdHJlYW1fc2VhcmNoLkFuc3dlckNhcmQuQW5zd2VyQmxvY2suV29ya2Zsb3dTdGVwEkQKEmRhdGFfc2xvdF9wcm9wZXJ0eRgFIAMoCzIoLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guRGF0YVNsb3RQcm9wZXJ0eRpSCg1TZWFyY2hTdWJTdGVwEgwKBGRlc2MYASABKAkSMwoIcGFzc2FnZXMYBSADKAsyIS5haV90b3BpY19zdHJlYW1fc2VhcmNoLlJlZmVyZW5jZRotCgxRdWVyeVN1YlN0ZXASDAoEZGVzYxgBIAEoCRIPCgdxdWVyaWVzGAIgAygJGjMKEVJlZmxlY3Rpb25TdWJTdGVwEgwKBGRlc2MYASABKAkSEAoIbWFya2Rvd24YAiABKAkauQIKDFdvcmtmbG93U3RlcBIPCgdzdGVwX2lkGAEgASgJEhMKC2lzX2ZpbmlzaGVkGAIgASgIElEKDHF1ZXJ5U3ViU3RlcBgDIAEoCzI7LmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQW5zd2VyQ2FyZC5BbnN3ZXJCbG9jay5RdWVyeVN1YlN0ZXASUwoNc2VhcmNoU3ViU3RlcBgEIAEoCzI8LmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQW5zd2VyQ2FyZC5BbnN3ZXJCbG9jay5TZWFyY2hTdWJTdGVwElsKEXJlZmxlY3Rpb25TdWJTdGVwGAUgASgLMkAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5BbnN3ZXJDYXJkLkFuc3dlckJsb2NrLlJlZmxlY3Rpb25TdWJTdGVwGjgKF1F1ZXJ5VW5kZXJzdGFuZGluZ0Jsb2NrEgwKBGhpbnQYASABKAkSDwoHY29udGVudBgCIAEoCRopCgxIZWxwZGVza0xpbmsSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkaHgoKVXNlclN0YXR1cxIQCghub19xdW90YRgBIAEoCCJMCgZTdGF0dXMSCwoHVU5LTk9XThAAEg0KCVNUUkVBTUlORxABEgwKCEZJTklTSEVEEAISCQoFRVJST1IQAxINCglSRUFTT05JTkcQBCK2AQoOSW5kZXhEb2NPYmplY3QSEQoJb2JqX3Rva2VuGAEgASgJEhAKCG9ial90eXBlGAIgASgFEkwKDmNvbnRhaW5lcl90eXBlGAMgASgOMjQuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JbmRleERvY09iamVjdC5Db250YWluZXJUeXBlIjEKDUNvbnRhaW5lclR5cGUSCwoHVU5LTk9XThAAEgkKBVNQQUNFEAESCAoEV0lLSRACIk4KE0luZGV4T2JqZWN0c1JlcXVlc3QSNwoHb2JqZWN0cxgBIAMoCzImLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guSW5kZXhEb2NPYmplY3QiNQoUSW5kZXhPYmplY3RzUmVzcG9uc2USDAoEY29kZRgBIAEoBRIPCgdtZXNzYWdlGAIgASgJIlcKHEdldE9iamVjdHNJbmRleFN0YXRlc1JlcXVlc3QSNwoHb2JqZWN0cxgBIAMoCzImLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guSW5kZXhEb2NPYmplY3QixwQKHUdldE9iamVjdHNJbmRleFN0YXRlc1Jlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCRJeCg1yZWluZGV4X3N0YXRlGAMgAygLMkcuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5HZXRPYmplY3RzSW5kZXhTdGF0ZXNSZXNwb25zZS5SZWluZGV4U3RhdGVFbnRyeRraAQoKSW5kZXhTdGF0ZRJeChBpbmRleF9zdGF0ZV9jb2RlGAEgASgOMkQuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5HZXRPYmplY3RzSW5kZXhTdGF0ZXNSZXNwb25zZS5JbmRleFN0YXRlQ29kZRIRCglmYWlsX2NvZGUYAiABKAUSFAoMZmFpbF9tZXNzYWdlGAMgASgJEi4KBHRleHQYBCABKAsyIC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkkxOG5UZXh0EhMKC3VwbG9hZF90aW1lGAUgASgFGnUKEVJlaW5kZXhTdGF0ZUVudHJ5EgsKA2tleRgBIAEoCRJPCgV2YWx1ZRgCIAEoCzJALmFpX3RvcGljX3N0cmVhbV9zZWFyY2guR2V0T2JqZWN0c0luZGV4U3RhdGVzUmVzcG9uc2UuSW5kZXhTdGF0ZToCOAEiUwoOSW5kZXhTdGF0ZUNvZGUSCwoHVU5LTk9XThAAEg0KCVVOSU5ERVhFRBABEgwKCElOREVYSU5HEAISCwoHSU5ERVhFRBADEgoKBkZBSUxFRBAEIh4KHEVuYWJsZVRlbmFudEtub3dsZWRnZVJlcXVlc3QiXgodRW5hYmxlVGVuYW50S25vd2xlZGdlUmVzcG9uc2USDAoEY29kZRgBIAEoBRIPCgdtZXNzYWdlGAIgASgJEh4KFmlzX25ld190ZW5hbnRfZnJvbV9hc2sYAyABKAgiGgoYUHVsbFVzZXJEYXRhU3RhdGVSZXF1ZXN0IosBCgxMTE1Nb2RlbEluZm8SLgoEdGV4dBgBIAEoCzIgLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guSTE4blRleHQSFgoObGxtX21vZGVsX3R5cGUYAiABKAUSMwoJc3ViX3RpdGxlGAMgASgLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JMThuVGV4dCJ1ChZVcGxvYWRTYW1wbGVEb2NPYmplY3RzEkUKE3VwbG9hZF9zYW1wbGVfZmlsZXMYASADKAsyKC5haV90b3BpY19zdHJlYW1fc2VhcmNoLlVwbG9hZFNhbXBsZUZpbGUSFAoMc2FtcGxlX3F1ZXJ5GAIgASgJIsoBChBJMThOVXBsb2FkU2FtcGxlElEKDXVwbG9hZF9zYW1wbGUYASADKAsyOi5haV90b3BpY19zdHJlYW1fc2VhcmNoLkkxOE5VcGxvYWRTYW1wbGUuVXBsb2FkU2FtcGxlRW50cnkaYwoRVXBsb2FkU2FtcGxlRW50cnkSCwoDa2V5GAEgASgJEj0KBXZhbHVlGAIgASgLMi4uYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5VcGxvYWRTYW1wbGVEb2NPYmplY3RzOgI4ASLQAQoQVXBsb2FkU2FtcGxlRmlsZRISCgpmaWxlX3Rva2VuGAEgASgJEhEKCWZpbGVfbmFtZRgCIAEoCRIRCglmaWxlX3NpemUYAyABKAUSEAoIZmlsZV91cmwYBCABKAkSRAoJZmlsZV90eXBlGAUgASgOMjEuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5VcGxvYWRTYW1wbGVGaWxlLkZpbGVUeXBlIioKCEZpbGVUeXBlEgsKB1VOS05PV04QABIHCgNQREYQARIICgRXT1JEEAIiSAoIQUJSZXN1bHQSDgoGYWJfa2V5GAEgASgJEhAKCGFiX3ZhbHVlGAIgASgJEhoKEmFjdGl2YXRlZF9saWJyYV9hYhgDIAEoCCLsAgoZUHVsbFVzZXJEYXRhU3RhdGVSZXNwb25zZRIVCg1oYXNfa25vd2xlZGdlGAEgASgIEhcKD2hhc190ZW5hbnRfZGF0YRgCIAEoCBImCh5lbnRlcnByaXNlX2tub3dsZWRnZV9mb3JtX2xpbmsYAyABKAkSPAoObGxtX21vZGVsX2xpc3QYBCADKAsyJC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkxMTU1vZGVsSW5mbxIeChZoYXNfdXBsb2FkX3NhbXBsZV9maWxlGAUgASgIEkQKEmkxOG5fdXBsb2FkX3NhbXBsZRgGIAEoCzIoLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guSTE4TlVwbG9hZFNhbXBsZRI0CgphYl9yZXN1bHRzGAcgAygLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5BQlJlc3VsdBIdChVtYWlsX2RhdGFfc291cmNlX2ljb24YCCADKAki5AMKDEJvdHRvbUJ1dHRvbhIuCgR0ZXh0GAEgASgLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JMThuVGV4dBIPCgd1ZF9pY29uGAIgASgJEkIKEHNhdmVfY2FyZF9idXR0b24YAyABKAsyJi5haV90b3BpY19zdHJlYW1fc2VhcmNoLlNhdmVDYXJkQnV0dG9uSAASUQoYZGlzbGlrZV9haV9hbnN3ZXJfYnV0dG9uGAQgASgLMi0uYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5EaXNsaWtlQUlBbnN3ZXJCdXR0b25IABI5Cgtjb3B5X2J1dHRvbhgFIAEoCzIiLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQ29weUJ1dHRvbkgAEjsKDHNoYXJlX2J1dHRvbhgGIAEoCzIjLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guU2hhcmVCdXR0b25IABI7CgxkZWJ1Z19idXR0b24YByABKAsyIy5haV90b3BpY19zdHJlYW1fc2VhcmNoLkRlYnVnQnV0dG9uSAASPQoNcmVwb3J0X2J1dHRvbhgIIAEoCzIkLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guUmVwb3J0QnV0dG9uSABCCAoGYnV0dG9uIhoKCkNvcHlCdXR0b24SDAoEaGlkZRgBIAEoCCIbCgtTaGFyZUJ1dHRvbhIMCgRoaWRlGAEgASgIIhsKC0RlYnVnQnV0dG9uEgwKBGhpZGUYASABKAgiMAoMUmVwb3J0QnV0dG9uEgwKBGhpZGUYASABKAgSEgoKZXh0cmFfaW5mbxgCIAEoCSL0AgoRQW5zd2VyRGlzcGxheUluZm8SHAoUcmVmZXJlbmNlX2Jsb2NrX21hc2sYASABKAgSHgoWcmVmZXJlbmNlX2Jsb2NrX2xlbmd0aBgCIAEoAxIdChVmb3JjZV9oaWRlX2JvdHRvbV90aXAYAyABKAgSJQodZm9yY2VfaGlkZV9rbm93bGVkZ2VfYXV0aF90aXAYBCABKAgSQQoXY3VzdG9tX2RhdGFfc2VjdXJlX3RleHQYBSABKAsyIC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkkxOG5UZXh0EhwKFGhpZGVfZGF0YV9zZWN1cmVfYnRuGAYgASgIEkMKGWN1c3RvbV9yZWZlcmVuY2Vfc3VtX3RleHQYByABKAsyIC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkkxOG5UZXh0EjUKCmRvY19pbnRlbnQYCCABKA4yIS5haV90b3BpY19zdHJlYW1fc2VhcmNoLkRvY0ludGVudCInCg5TYXZlQ2FyZEJ1dHRvbhIVCg1zYXZlX2NhcmRfa2V5GAEgASgJInYKFVBlcm1FeHBsYW5hdGlvbkJ1dHRvbhIuCgR0ZXh0GAEgASgLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JMThuVGV4dBIPCgd1ZF9pY29uGAIgASgJEhwKFHBlcm1fZXhwbGFuYXRpb25fa2V5GAMgASgJInIKHVVwbG9hZFNhbXBsZURvY09iamVjdHNSZXF1ZXN0ElEKGXVwbG9hZF9zYW1wbGVfZG9jX29iamVjdHMYASABKAsyLi5haV90b3BpY19zdHJlYW1fc2VhcmNoLlVwbG9hZFNhbXBsZURvY09iamVjdHMi9QEKHlVwbG9hZFNhbXBsZURvY09iamVjdHNSZXNwb25zZRIMCgRjb2RlGAEgASgFEmQKEGNvcHlfc2FtcGxlX2ZpbGUYAiADKAsySi5haV90b3BpY19zdHJlYW1fc2VhcmNoLlVwbG9hZFNhbXBsZURvY09iamVjdHNSZXNwb25zZS5Db3B5U2FtcGxlRmlsZUVudHJ5Gl8KE0NvcHlTYW1wbGVGaWxlRW50cnkSCwoDa2V5GAEgASgJEjcKBXZhbHVlGAIgASgLMiguYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5VcGxvYWRTYW1wbGVGaWxlOgI4ASIXChVEaXNsaWtlQUlBbnN3ZXJCdXR0b24iuQEKFlB1dFVzZXJTZXR0aW5nc1JlcXVlc3QSTgoLYWN0aW9uX3R5cGUYASABKA4yOS5haV90b3BpY19zdHJlYW1fc2VhcmNoLlB1dFVzZXJTZXR0aW5nc1JlcXVlc3QuQWN0aW9uVHlwZSJPCgpBY3Rpb25UeXBlEhIKDkFDVElPTl9VTktOT1dOEAASFQoRQUxMT1dfQUlfR0VORVJBVEUQARIWChJSRVZPS0VfQUlfR0VORVJBVEUQAiIZChdQdXRVc2VyU2V0dGluZ3NSZXNwb25zZSItCgxVc2VyU2V0dGluZ3MSHQoVYXV0aG9yaXplX2FpX2dlbmVyYXRlGAEgASgIIhkKF1B1bGxVc2VyU2V0dGluZ3NSZXF1ZXN0IlcKGFB1bGxVc2VyU2V0dGluZ3NSZXNwb25zZRI7Cg11c2VyX3NldHRpbmdzGAEgASgLMiQuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5Vc2VyU2V0dGluZ3MiTwoQUHVzaFVzZXJTZXR0aW5ncxI7Cg11c2VyX3NldHRpbmdzGAEgASgLMiQuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5Vc2VyU2V0dGluZ3MixgIKFFB1dFVzZXJBY3Rpb25SZXF1ZXN0EkwKC2FjdGlvbl90eXBlGAEgASgOMjcuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5QdXRVc2VyQWN0aW9uUmVxdWVzdC5BY3Rpb25UeXBlEhMKC2FpX3RvcGljX2lkGAIgASgDEhMKC2FpX3JvdW5kX2lkGAMgASgDEiMKG2lzX3NlYXJjaF9haV9jaGVja19jb250aW51ZRgEIAEoCBIbChN1c2VyX2FjdGlvbl9wYXlsb2FkGAUgASgMInQKCkFjdGlvblR5cGUSEgoOQUNUSU9OX1VOS05PV04QABIdChlDT05USU5VRV9DVVJSRU5UX0dFTkVSQVRFEAESGwoXQ0FOQ0VMX0NVUlJFTlRfR0VORVJBVEUQAhIWChJDVVNUT01fVVNFUl9BQ1RJT04QAyIXChVQdXRVc2VyQWN0aW9uUmVzcG9uc2UiuAMKG1N0cmVhbUFuc3dlckluU2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAEoCRJJChVhaV90b3BpY19yZXF1ZXN0X2luZm8YAiABKAsyKi5haV90b3BpY19zdHJlYW1fc2VhcmNoLkFJVG9waWNSZXF1ZXN0SW5mbxIVCg1pc19sb25nX3F1ZXJ5GAMgASgIEhYKDnNlYXJjaF9zZXNzaW9uGAQgASgJEhYKDnNlc3Npb25fc2VxX2lkGAUgASgFEh4KFmZvcmNlX2Fuc3dlcl9pbl9zZWFyY2gYBiABKAgSVQoMc2VhcmNoX3NjZW5lGAcgASgOMj8uYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5TdHJlYW1BbnN3ZXJJblNlYXJjaFJlcXVlc3QuU2VhcmNoU2NlbmUSOwoNcXVlcnlfY29udGV4dBgIIAEoCzIkLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guUXVlcnlDb250ZXh0Eh8KF2NhbmNlbF9hbnN3ZXJfaW5fc2VhcmNoGAkgASgIIiMKC1NlYXJjaFNjZW5lEgoKBkNPTU1PThAAEggKBENIQVQQASJLCgxRdWVyeUNvbnRleHQSFwoPcmV3cml0ZV9jb250ZW50GAEgASgJEg8KB2NoYXRfaWQYAiABKAkSEQoJY2hhdF9uYW1lGAMgASgJIrcEChxTdHJlYW1BbnN3ZXJJblNlYXJjaFJlc3BvbnNlEhMKC2FpX3RvcGljX2lkGAEgASgDEhMKC2FpX3JvdW5kX2lkGAIgASgDEksKBmJ1dHRvbhgDIAEoCzI7LmFpX3RvcGljX3N0cmVhbV9zZWFyY2guU3RyZWFtQW5zd2VySW5TZWFyY2hSZXNwb25zZS5CdXR0b24SXAoPcXVlcnlfaW50ZW50aW9uGAQgASgLMkMuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5TdHJlYW1BbnN3ZXJJblNlYXJjaFJlc3BvbnNlLlF1ZXJ5SW50ZW50aW9uEhQKDGFpX2Fuc3dlcl9pZBgFIAEoAxI7Cg1xdWVyeV9jb250ZXh0GAYgASgLMiQuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5RdWVyeUNvbnRleHQSIAoYZGlzYWJsZV9hbnN3ZXJfaW5fc2VhcmNoGAcgASgIGkAKBkJ1dHRvbhIMCgR0ZXh0GAEgASgJEhMKC2Rlc2NyaXB0aW9uGAIgASgJEhMKC2FwcGxpbmtfdXJsGAMgASgJGooBCg5RdWVyeUludGVudGlvbhIfChdzaG91bGRfYW5zd2VyX2luX3NlYXJjaBgBIAEoCBJDCg9xdWVyeV9pbnRlbnRpb24YAiABKA4yKi5haV90b3BpY19zdHJlYW1fc2VhcmNoLlF1ZXJ5SW50ZW50aW9uVHlwZRISCgpzZXNzaW9uX2lkGAMgASgJIsYBChlQdXNoU2VhcmNoU3RyZWFtaW5nQW5zd2VyEhMKC2FpX3JvdW5kX2lkGAEgASgDEjMKCWFpX2Fuc3dlchgCIAEoCzIgLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQUlBbnN3ZXISPgoPYWlfcm91bmRfc3RhdHVzGAMgASgOMiUuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5BSVJvdW5kU3RhdHVzEh8KF2FpX3JvdW5kX3VwZGF0ZV90aW1lX21zGAQgASgDIokCCghBSUFuc3dlchIKCgJpZBgBIAEoAxIPCgd1c2VyX2lkGAIgASgDEhMKC2FpX3RvcGljX2lkGAMgASgDEhMKC2FpX3JvdW5kX2lkGAQgASgDEg8KB2NvbnRlbnQYBSABKAwSEgoKZXJyb3JfY29kZRgGIAEoCRIRCgllcnJvcl9tc2cYByABKAkSDwoHZXJyY29kZRgIIAEoBRI/Cg9mZWVkYmFja19zdGF0dXMYCSABKA4yJi5haV90b3BpY19zdHJlYW1fc2VhcmNoLkZlZWRCYWNrU3RhdHVzEhcKDnVwZGF0ZV90aW1lX21zGPoBIAEoAxITCgppc19kZWxldGVkGP8BIAEoCCJfChREb2NTY29wZVNjZW5lUmVxdWVzdBI0CgVzY2VuZRgBIAEoDjIlLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guRG9jU2NvcGVTY2VuZRIRCglzY2VuZV9yZXEYAiABKAkiTgoVRG9jU2NvcGVTY2VuZVJlc3BvbnNlEhIKCnNjZW5lX3Jlc3AYASABKAkSEAoIZXJyX2NvZGUYAiABKAUSDwoHZXJyX21zZxgDIAEoCSJ+ChlQdWxsS25vd2xlZGdlU2NvcGVSZXF1ZXN0EhMKC2FpX3RvcGljX2lkGAEgASgDEhMKC2FpX3JvdW5kX2lkGAIgASgDEjcKC2VudGl0eV90eXBlGAMgASgOMiIuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5FbnRpdHlUeXBlIl0KGlB1bGxLbm93bGVkZ2VTY29wZVJlc3BvbnNlEj8KD2tub3dsZWRnZV9zY29wZRgBIAEoCzImLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guS25vd2xlZGdlU2NvcGUiagoOS25vd2xlZGdlU2NvcGUSPgoPaXRlbV9zY29wZV9pbmZvGAEgAygLMiUuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JdGVtU2NvcGVJbmZvEhgKEGlzX2RlZmF1bHRfc2NvcGUYAiABKAgi0QEKDUl0ZW1TY29wZUluZm8SCgoCaWQYASABKAkSDAoEaWNvbhgCIAEoCRIuCgR0ZXh0GAMgASgLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JMThuVGV4dBI3CgtlbnRpdHlfdHlwZRgEIAEoDjIiLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guRW50aXR5VHlwZRI9CgxlbnRpdHlfc2NvcGUYBSABKAsyJy5haV90b3BpY19zdHJlYW1fc2VhcmNoLkVudGl0eVNjb3BlSW5mbyLKAgoPRW50aXR5U2NvcGVJbmZvEjcKCWRvY19zY29wZRgBIAEoCzIkLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guRG9jU2NvcGVJbmZvEj8KDW1lc3NhZ2Vfc2NvcGUYAiABKAsyKC5haV90b3BpY19zdHJlYW1fc2VhcmNoLk1lc3NhZ2VTY29wZUluZm8SPwoNbWludXRlc19zY29wZRgDIAEoCzIoLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guTWludXRlc1Njb3BlSW5mbxI5CgptYWlsX3Njb3BlGAQgASgLMiUuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5NYWlsU2NvcGVJbmZvEkEKDmFwcHJvdmFsX3Njb3BlGAUgASgLMikuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5BcHByb3ZhbFNjb3BlSW5mbyLRAQoMRG9jU2NvcGVJbmZvEhEKCW9ial90b2tlbhgBIAEoCRIQCghvYmpfdHlwZRgCIAEoAxISCgpub2RlX3Rva2VuGAMgASgJEhAKCGRvY190eXBlGAQgASgDEhAKCHNwYWNlX2lkGAUgASgJEhEKCWhhc19jaGlsZBgGIAEoCBIXCg9pc19zaGFyZV9mb2xkZXIYByABKAgSOAoMZG9jX3N1Yl90eXBlGAggASgOMiIuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5Eb2NTdWJUeXBlIj8KEE1lc3NhZ2VTY29wZUluZm8SEAoIY2hhdF9pZHMYASADKAkSGQoRZXhjbHVkZWRfY2hhdF9pZHMYAiADKAkiPQoQTWludXRlc1Njb3BlSW5mbxISCgptaW51dGVzX2lkGAEgASgDEhUKDW1pbnV0ZXNfdG9rZW4YAiABKAkiNgoNTWFpbFNjb3BlSW5mbxIPCgdtYWlsX2lkGAEgASgJEhQKDG1haWxfYWRkcmVzcxgCIAEoCSJFChFBcHByb3ZhbFNjb3BlSW5mbxITCgtpbnN0YW5jZV9pZBgBIAEoAxIbChNleGNsdWRlX2luc3RhbmNlX2lkGAIgASgDIlUKHERlbGV0ZVNlYXJjaFFBSGlzdG9yeVJlcXVlc3QSNQoKdG9waWNfaW5mbxgBIAMoCzIhLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guVG9waWNJbmZvIi8KCVRvcGljSW5mbxIQCgh0b3BpY19pZBgBIAEoCRIQCghyb3VuZF9pZBgCIAEoCSJCCh1EZWxldGVTZWFyY2hRQUhpc3RvcnlSZXNwb25zZRIQCghlcnJfY29kZRgBIAEoBRIPCgdlcnJfbXNnGAIgASgJIkoKGlB1bGxTZWFyY2hRQUhpc3RvcnlSZXF1ZXN0EiwKBXNjZW5lGAEgASgOMh0uYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5TY2VuZSKRAQobUHVsbFNlYXJjaFFBSGlzdG9yeVJlc3BvbnNlEi4KBHRleHQYASABKAsyIC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkkxOG5UZXh0EkIKEXNlYXJjaF9xYV9oaXN0b3J5GAIgAygLMicuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5TZWFyY2hRQUhpc3RvcnkioQEKD1NlYXJjaFFBSGlzdG9yeRIQCghhcHBfbGluaxgBIAEoCRINCgVxdWVyeRgCIAEoCRIOCgZhbnN3ZXIYAyABKAkSEwoLZXhwaXJlX3RpbWUYBCABKAkSEQoJY2FjaGVfa2V5GAUgASgJEjUKCnRvcGljX2luZm8YBiABKAsyIS5haV90b3BpY19zdHJlYW1fc2VhcmNoLlRvcGljSW5mbyLUAQoVUmVwb3J0U2VhcmNoUUFSZXF1ZXN0EjQKBWV2ZW50GAEgASgOMiUuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5TZWFyY2hRQUV2ZW50EjUKCnRvcGljX2luZm8YAiABKAsyIS5haV90b3BpY19zdHJlYW1fc2VhcmNoLlRvcGljSW5mbxIRCgljYWNoZV9rZXkYAyABKAkSOwoNc2VhcmNoX3N0YXR1cxgEIAEoCzIkLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guU2VhcmNoU3RhdHVzIpICCgxTZWFyY2hTdGF0dXMSFQoNc2hvdWxkX2Fuc3dlchgBIAEoCBJDCg9xdWVyeV9pbnRlbnRpb24YAiABKA4yKi5haV90b3BpY19zdHJlYW1fc2VhcmNoLlF1ZXJ5SW50ZW50aW9uVHlwZRIaChJoYXNfY2xpY2tlZF9yZXN1bHQYAyABKAgSNQoSc2VhcmNoX2VudGl0eV90eXBlGAQgASgOMhkudXNlYXJjaC5TZWFyY2hFbnRpdHlUeXBlEhMKC2hhc19jb250ZW50GAUgASgIEj4KD2FpX3JvdW5kX3N0YXR1cxgGIAEoDjIlLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guQUlSb3VuZFN0YXR1cyI7ChZSZXBvcnRTZWFyY2hRQVJlc3BvbnNlEhAKCGVycl9jb2RlGAEgASgFEg8KB2Vycl9tc2cYAiABKAkijgIKGktub3dsZWRnZU1hcmtldFJlY29SZXF1ZXN0EkwKCHRhYl90eXBlGAEgASgOMjouYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5Lbm93bGVkZ2VNYXJrZXRSZWNvUmVxdWVzdC5UYWJUeXBlEgwKBHNpemUYAiABKAMSDgoGb2Zmc2V0GAMgASgDEjsKF3dpa2lfc3BhY2VfcGF5bWVudF90eXBlGAQgAygOMhoudXNlYXJjaC5GaWx0ZXJQYXltZW50VHlwZSJHCgdUYWJUeXBlEgsKB1VOS05PV04QABINCglSRUNPTU1FTkQQARIHCgNIT1QQAhIHCgNORVcQAxIOCgpPTkJPQVJESU5HEAQibAoOU3BhY2VDb3ZlckluZm8SDgoGb3JpZ2luGAEgASgJEhEKCXRodW1ibmFpbBgCIAEoCRILCgNrZXkYAyABKAkSFQoNaXNfZ3JhcGhfZGFyaxgEIAEoCBITCgtjb2xvcl92YWx1ZRgFIAEoCSJRCg1TcGFjZUljb25JbmZvEjMKCWljb25fdHlwZRgBIAEoDjIgLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guSWNvblR5cGUSCwoDS2V5GAIgASgJIiUKFFdpa2lTcGFjZVN1Z2dlc3RJbmZvEg0KBXF1ZXJ5GAEgASgJIusDCglTcGFjZUluZm8SCgoCaWQYASABKAMSDAoEbmFtZRgCIAEoCRIOCgZkZXRhaWwYAyABKAkSEgoKYXZhdGFyX3VybBgEIAEoCRJAChBzcGFjZV9jb3Zlcl9pbmZvGAUgASgLMiYuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5TcGFjZUNvdmVySW5mbxI+Cg9zcGFjZV9pY29uX2luZm8YBiABKAsyJS5haV90b3BpY19zdHJlYW1fc2VhcmNoLlNwYWNlSWNvbkluZm8SEgoKY3JlYXRlX3VpZBgHIAEoAxISCgpub2RlX2NvdW50GAggASgDEhQKDG1lbWJlcl9jb3VudBgJIAEoAxIYChBjcmVhdGVfdGVuYW50X2lkGAogASgDEjcKE2Rpc3BsYXlfY3JlYXRlX2luZm8YCyABKAsyGi51c2VhcmNoLkRpc3BsYXlDcmVhdGVJbmZvEkIKDHN1Z2dlc3RfaW5mbxgMIAMoCzIsLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guV2lraVNwYWNlU3VnZ2VzdEluZm8SNQoXd2lraV9zcGFjZV9wYXltZW50X3R5cGUYDSABKA4yFC51c2VhcmNoLlBheW1lbnRUeXBlEhIKCnBheV9hbW91bnQYDiABKAkiigEKG0tub3dsZWRnZU1hcmtldFJlY29SZXNwb25zZRI1CgpzcGFjZV9saXN0GAEgAygLMiEuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5TcGFjZUluZm8SEAoIaGFzX21vcmUYAiABKAgSDQoFdG90YWwYAyABKAMSEwoLbmV4dF9vZmZzZXQYBCABKAMiaAoTU2VsZWN0V29yZElNQ29udGV4dBIOCgZtc2dfaWQYASABKAkSFgoOc2VsZWN0ZWRfYmxvY2sYAiADKAkSFQoNc2VsZWN0ZWRfd29yZBgDIAEoCRISCgp1c2VyX3F1ZXJ5GAQgASgJIosBChtTZWxlY3RXb3JkQ2xpZW50V2Vic0NvbnRleHQSFAoMYmVmb3JlX2Jsb2NrGAEgASgJEhYKDnNlbGVjdGVkX2Jsb2NrGAIgASgJEhMKC2FmdGVyX2Jsb2NrGAMgASgJEhUKDXNlbGVjdGVkX3dvcmQYBCABKAkSEgoKdXNlcl9xdWVyeRgFIAEoCSJfChpTZWxlY3RXb3JkT3V0Q2xpZW50Q29udGV4dBIWCg5zZWxlY3RlZF9ibG9jaxgBIAEoCRIVCg1zZWxlY3RlZF93b3JkGAIgASgJEhIKCnVzZXJfcXVlcnkYAyABKAkiuQMKFFVwbG9hZENvbnRleHRSZXF1ZXN0EkEKBXNjZW5lGAEgAigOMjIuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5VcGxvYWRDb250ZXh0UmVxdWVzdC5TY2VuZRJLChZzZWxlY3Rfd29yZF9pbV9jb250ZXh0GAIgASgLMisuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5TZWxlY3RXb3JkSU1Db250ZXh0ElwKH3NlbGVjdF93b3JkX2NsaWVudF93ZWJzX2NvbnRleHQYAyABKAsyMy5haV90b3BpY19zdHJlYW1fc2VhcmNoLlNlbGVjdFdvcmRDbGllbnRXZWJzQ29udGV4dBJaCh5zZWxlY3Rfd29yZF9vdXRfY2xpZW50X2NvbnRleHQYBCABKAsyMi5haV90b3BpY19zdHJlYW1fc2VhcmNoLlNlbGVjdFdvcmRPdXRDbGllbnRDb250ZXh0IlcKBVNjZW5lEhMKD1NFTEVDVF9XT1JEU19JTRABEhwKGFNFTEVDVF9XT1JEU19DTElFTlRfV0VCUxACEhsKF1NFTEVDVF9XT1JEU19PVVRfQ0xJRU5UEAMiUQoVVXBsb2FkQ29udGV4dFJlc3BvbnNlEhUKDWNhY2hlX2N0eF9rZXkYASABKAkSEAoIZXJyX2NvZGUYAiABKAUSDwoHZXJyX21zZxgDIAEoCSIgCg5JTUlucHV0Q29udGV4dBIOCgZtc2dfaWQYASABKAkioQQKHlVwbG9hZFN1cHBsZW1lbnRDb250ZXh0UmVxdWVzdBJLCgVzY2VuZRgBIAIoDjI8LmFpX3RvcGljX3N0cmVhbV9zZWFyY2guVXBsb2FkU3VwcGxlbWVudENvbnRleHRSZXF1ZXN0LlNjZW5lEksKFnNlbGVjdF93b3JkX2ltX2NvbnRleHQYAiABKAsyKy5haV90b3BpY19zdHJlYW1fc2VhcmNoLlNlbGVjdFdvcmRJTUNvbnRleHQSXAofc2VsZWN0X3dvcmRfY2xpZW50X3dlYnNfY29udGV4dBgDIAEoCzIzLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guU2VsZWN0V29yZENsaWVudFdlYnNDb250ZXh0EloKHnNlbGVjdF93b3JkX291dF9jbGllbnRfY29udGV4dBgEIAEoCzIyLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guU2VsZWN0V29yZE91dENsaWVudENvbnRleHQSQAoQaW1faW5wdXRfY29udGV4dBgFIAEoCzImLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guSU1JbnB1dENvbnRleHQiaQoFU2NlbmUSEwoPU0VMRUNUX1dPUkRTX0lNEAESHAoYU0VMRUNUX1dPUkRTX0NMSUVOVF9XRUJTEAISGwoXU0VMRUNUX1dPUkRTX09VVF9DTElFTlQQAxIQCgxJTV9JTlBVVF9UQUIQBCJbCh9VcGxvYWRTdXBwbGVtZW50Q29udGV4dFJlc3BvbnNlEhUKDWNhY2hlX2N0eF9rZXkYASABKAkSEAoIZXJyX2NvZGUYAiABKAUSDwoHZXJyX21zZxgDIAEoCSKNAQoeS25vd2xlZGdlTWFya2V0SG90UXVlcnlSZXF1ZXN0EgwKBHNpemUYASABKAMSDQoFcXVlcnkYAiABKAkSEQoJc2hvd25faWRzGAMgAygJEjsKF3dpa2lfc3BhY2VfcGF5bWVudF90eXBlGAQgAygOMhoudXNlYXJjaC5GaWx0ZXJQYXltZW50VHlwZSKMAQofS25vd2xlZGdlTWFya2V0SG90UXVlcnlSZXNwb25zZRI1CgpzcGFjZV9saXN0GAEgAygLMiEuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5TcGFjZUluZm8SEAoIaGFzX21vcmUYAiABKAgSDQoFdG90YWwYAyABKAMSEQoJc2hvd25faWRzGAQgAygJIo4BChpQdXRFeGNsdWRlUmVmZXJlbmNlUmVxdWVzdBI5CgxleGNsdWRlX2l0ZW0YASADKAsyIy5haV90b3BpY19zdHJlYW1fc2VhcmNoLkV4Y2x1ZGVJdGVtEjUKCnRvcGljX2luZm8YAiABKAsyIS5haV90b3BpY19zdHJlYW1fc2VhcmNoLlRvcGljSW5mbyJwChtQdXRFeGNsdWRlUmVmZXJlbmNlUmVzcG9uc2USLgoEdGV4dBgBIAEoCzIgLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guSTE4blRleHQSEAoIZXJyX2NvZGUYAiABKAUSDwoHZXJyX21zZxgDIAEoCSIxCgtFeGNsdWRlSXRlbRIKCgJpZBgBIAEoCRIWCg5yZWZlcmVuY2VfdHlwZRgCIAEoBSIdChtQdWxsU2FtcGxlVXBsb2FkSW5mb1JlcXVlc3QimAIKHFB1bGxTYW1wbGVVcGxvYWRJbmZvUmVzcG9uc2USRAoSaTE4bl91cGxvYWRfc2FtcGxlGAEgASgLMiguYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JMThOVXBsb2FkU2FtcGxlEhAKCGlzX3Nob3duGAIgASgIEhMKC3VwZGF0ZV90aW1lGAMgASgDEg0KBWNvdW50GAQgASgFEksKBmNvbmZpZxgFIAEoCzI7LmFpX3RvcGljX3N0cmVhbV9zZWFyY2guUHVsbFNhbXBsZVVwbG9hZEluZm9SZXNwb25zZS5Db25maWcaLwoGQ29uZmlnEhMKC3RvdGFsX2NvdW50GAEgASgFEhAKCGR1cmF0aW9uGAIgASgDIjYKIlVwZGF0ZVNhbXBsZVVwbG9hZFVzZXJTdGF0ZVJlcXVlc3QSEAoIaXNfc2hvd24YASABKAgiJQojVXBkYXRlU2FtcGxlVXBsb2FkVXNlclN0YXRlUmVzcG9uc2UisgIKCVNraWxsSW5mbxIKCgJpZBgBIAEoCRIuCgRuYW1lGAIgASgLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JMThuVGV4dBI1CgtkZXNjcmlwdGlvbhgDIAEoCzIgLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guSTE4blRleHQSNQoLcGxhY2Vob2xkZXIYBCABKAsyIC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkkxOG5UZXh0EgwKBGljb24YBSABKAkSGwoTbWluX3N1cHBvcnRfdmVyc2lvbhgJIAEoCRI2CgxxdWVyeV9wcmVmaXgYCiABKAsyIC5haV90b3BpY19zdHJlYW1fc2VhcmNoLkkxOG5UZXh0EhgKEHRyaWdnZXJfa2V5d29yZHMYCyADKAkiFQoTR2V0U2tpbGxMaXN0UmVxdWVzdCJ/ChRHZXRTa2lsbExpc3RSZXNwb25zZRIxCgZza2lsbHMYASADKAsyIS5haV90b3BpY19zdHJlYW1fc2VhcmNoLlNraWxsSW5mbxIXCg9jdXJyZW50X3ZlcnNpb24YAiABKAkSGwoTc2hvdWxkX3Nob3dfcmVkX2RvdBgDIAEoCCJGChlVcGRhdGVWaWV3ZWRTa2lsbHNSZXF1ZXN0EhYKDnZpZXdlZF92ZXJzaW9uGAEgASgJEhEKCXNraWxsX2lkcxgCIAMoCSItChpVcGRhdGVWaWV3ZWRTa2lsbHNSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjIKG0dldFVzZXJTZWxlY3RlZFNraWxsUmVxdWVzdBITCgthaV90b3BpY19pZBgBIAEoAyJZChxHZXRVc2VyU2VsZWN0ZWRTa2lsbFJlc3BvbnNlEjkKDnNlbGVjdGVkX3NraWxsGAEgASgLMiEuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5Ta2lsbEluZm8iGwoZR2V0UGxhY2Vob2xkZXJQb29sUmVxdWVzdCKnAwoaR2V0UGxhY2Vob2xkZXJQb29sUmVzcG9uc2USWAoMcGxhY2Vob2xkZXJzGAEgAygLMkIuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5HZXRQbGFjZWhvbGRlclBvb2xSZXNwb25zZS5QbGFjZWhvbGRlckl0ZW0argIKD1BsYWNlaG9sZGVySXRlbRIKCgJpZBgBIAEoCRIuCgR0ZXh0GAIgASgLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5JMThuVGV4dBJgCgR0eXBlGAMgASgOMlIuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5HZXRQbGFjZWhvbGRlclBvb2xSZXNwb25zZS5QbGFjZWhvbGRlckl0ZW0uUGxhY2Vob2xkZXJUeXBlEhEKCXBsYXRmb3JtcxgEIAMoCSJqCg9QbGFjZWhvbGRlclR5cGUSHAoYUExBQ0VIT0xERVJfVFlQRV9VTktOT1dOEAASGQoVUExBQ0VIT0xERVJfVFlQRV9ISU5UEAESHgoaUExBQ0VIT0xERVJfVFlQRV9QUkVGSUxMRUQQAiKhAQoORGVwYXJ0bWVudE1ldGESRwoJaTE4bl9uYW1lGAEgAygLMjQuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5EZXBhcnRtZW50TWV0YS5JMThuTmFtZUVudHJ5EhUKDWRlcGFydG1lbnRfaWQYAiABKAMaLwoNSTE4bk5hbWVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjEKG1NlYXJjaERlcHRGb3JNZW50aW9uUmVxdWVzdBISCgp1c2VyX3F1ZXJ5GAEgASgJImAKHFNlYXJjaERlcHRGb3JNZW50aW9uUmVzcG9uc2USQAoQZGVwYXJ0bWVudF9tZXRhcxgBIAMoCzImLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guRGVwYXJ0bWVudE1ldGEqxgIKCEFza1NjZW5lEhUKEVVOS05PV05fQVBQX1NDRU5FEAASGAoUQVNLX1NDRU5FX01BSU5fVE9QSUMQARIYChRBU0tfU0NFTkVfV0lLSV9UT1BJQxACEhUKEUFTS19TQ0VORV9NSU5VVEVTEAMSEgoOQVNLX1NDRU5FX0FYT04QBBIaChZBU0tfU0NFTkVfU0VMRUNUX1dPUkRTEAUSEQoNQVNLX1NDRU5FX0RPQxAGEhAKDEFTS19TQ0VORV9JTRAHEhIKDkFTS19TQ0VORV9PQVBJEAgSFwoTQVNLX1NDRU5FX0lOX1NFQVJDSBAJEhIKDkFTS19TQ0VORV9BSUxZEAoSIQodQVNLX1NDRU5FX1dJS0lfQlVJTFRfSU5fVE9QSUMQCxIfChtBU0tfU0NFTkVfTUFJTl9UT1BJQ19JTl9UQUIQDCqlBwoFU2NlbmUSCwoHVU5LTk9XThAAEg4KCk9uQm9hcmRpbmcQARINCglNYWluVG9waWMQAhIXChNTdHJhdGVneUJ1dHRvbkNsaWNrEAMSEAoMQXBwTGlua0NsaWNrEAQSDAoIRm9sbG93VXAQBRIRCg1TdGFuZGFsb25lV2ViEAYSEQoNT25Cb2FyZGluZ1dlYhAHEhIKDkFuc3dlckluU2VhcmNoEAgSEgoOQW5zd2VySW5NYXJrZXQQCRIYChRBbnN3ZXJJblNjaGVkdWxlVGFzaxAKEhEKDUFuc3dlckluT2JyaWMQKBIaChZET0NBSVJlY29tbWVuZFF1ZXN0aW9uEAsSEgoORE9DQUlRQUV4cGxhaW4QDBIUChBET0NBSVF1aWNrQWN0aW9uEA0SDgoKRE9DQUlRQUFzaxAOEhIKDkRPQ0FJVHJhbnNsYXRlECMSFgoSRE9DQUlBZ2VudGljQ3JlYXRlECQSGQoVRE9DQ29tbWVudFJlcGx5U3RyZWFtEB8SEwoPRE9DQUlNSU5VVEVTQVNLECASFgoSU2VhcmNoSW5DaGF0U3RyZWFtEA8SFwoTU2VhcmNoSW5DaGF0RGVmYXVsdBAQEhgKFEFuc3dlckluU2VhcmNoU3RyZWFtEBESGQoVQW5zd2VySW5TZWFyY2hEZWZhdWx0EBISGwoXQW5zd2VySW5TZWFyY2hSZWNvbW1lbmQQExIbChdBbnN3ZXJJbkRvY1NlYXJjaFN0cmVhbRAlEh4KGkFuc3dlckluV2ViRG9jU2VhcmNoU3RyZWFtECYSHwobQW5zd2VySW5NZXNzYWdlU2VhcmNoU3RyZWFtECcSFwoTTWFpblRvcGljTmF2aWdhdGlvbhAUEhUKEU1haW5Ub3BpY1Nob3J0Y3V0EBUSEQoNTWFpblRvcGljRmVlZBAWEhQKEE1haW5Ub3BpY0Jyb3dzZXIQFxIVChFTZWxlY3RXb3Jkc05vcm1hbBAYEhkKFVNlbGVjdFdvcmRzUENMaXZlVGV4dBAZEg4KCklNSW5wdXRUYWIQGhIVChFJTVVuUmVhZFJlY29tbWVuZBAbEhgKFElNUmVsYXRlZFJlcGx5U3RyZWFtEBwSEwoPSU1BaVJlcGx5UmVsb2FkEB0SEwoPSU1BdFJlcGx5U3RyZWFtEB4SGwoXVXBsb2FkUmVjb21tZW5kUXVlc3Rpb24QIRIWChJBbnN3ZXJJblB1YmxpY1dpa2kQIir5AQoKU291cmNlVHlwZRIWChJTb3VyY2VUeXBlX1VOS05PV04QABIXChNTb3VyY2VUeXBlX0lOVEVSTkVUEAESGQoVU291cmNlVHlwZV9FTlRFUlBSSVNFEAISFgoSU291cmNlVHlwZV9PTkxZTExNEAMSIAocU291cmNlVHlwZV9JbXBvcnRfVXNlclVwbG9hZBAKEiEKHVNvdXJjZVR5cGVfSW1wb3J0X0dvb2dsZURyaXZlEAsSIgoeU291cmNlVHlwZV9JbXBvcnRfU2xhY2tNZXNzYWdlEAwSHgoaU291cmNlVHlwZV9JbXBvcnRfTWlub1BhZ2UQDSrsAgoMTExNTW9kZWxUeXBlEhgKFExMTU1vZGVsVHlwZV9VTktOT1dOEAASFwoTTExNTW9kZWxUeXBlX0RPVUJBTxABEhkKFUxMTU1vZGVsVHlwZV9ERUVQU0VFSxACEhgKFExMTU1vZGVsVHlwZV9TS1lMQVJLEAMSFwoTTExNTW9kZWxUeXBlX0dQVF80TxAEEh4KGkxMTU1vZGVsVHlwZV9DTEFVREVfU09OTkVUEAUSIAocTExNTW9kZWxUeXBlX0RPVUJBT19USElOS0lORxAGEiUKIUxMTU1vZGVsVHlwZV9ET1VCQU9fQVVUT19USElOS0lORxAHEhwKGExMTU1vZGVsVHlwZV9ET1VCQU9fU0VFRBAIEhcKE0xMTU1vZGVsVHlwZV9HRU1JTkkQCRIUChBMTE1Nb2RlbFR5cGVfR1BUEAoSJQohTExNTW9kZWxUeXBlX0RPVUJBT19TRUVEX1RISU5LSU5HEAsqgwwKEEFwcExpbmtDbGlja1R5cGUSHAoYQXBwTGlua0NsaWNrVHlwZV9VTktOT1dOEAASJQohQXBwTGlua0NsaWNrVHlwZV9BTlNXRVJfSU5fU0VBUkNIEAESIAocQXBwTGlua0NsaWNrVHlwZV9QTEFDRUhPTERFUhACEiUKIUFwcExpbmtDbGlja1R5cGVfUkVDT01NRU5EX1BST01QVBADEiMKH0FwcExpbmtDbGlja1R5cGVfU0VBUkNIX0lOX0NIQVQQBBIkCiBBcHBMaW5rQ2xpY2tUeXBlX1NFQVJDSF9IRUxQREVTSxAFEigKJEFwcExpbmtDbGlja1R5cGVfRE9DX1FVRVJZX1JFQ09NTUVORBAGEiIKHkFwcExpbmtDbGlja1R5cGVfUUFfT05CT0FSRElORxAHEi8KK0FwcExpbmtDbGlja1R5cGVfT0xEX1ZFUlNJT05fSU5URVJDRVBUX0pVTVAQCBIoCiRBcHBMaW5rQ2xpY2tUeXBlX1dFQl9DTElFTlRfRElBTE9HVUUQCRIdChlBcHBMaW5rQ2xpY2tUeXBlX1NBVkVfRE9DEAsSJQohQXBwTGlua0NsaWNrVHlwZV9XRUJfUUFfSU5fU0VBUkNIEAwSJQohQXBwTGlua0NsaWNrVHlwZV9QTFVHSU5fQUlfU0VBUkNIEA0SHwobQXBwTGlua0NsaWNrVHlwZV9QTFVHSU5fQVNLEA4SIwofQXBwTGlua0NsaWNrVHlwZV9QTFVHSU5fRVhQTEFJThAPEiUKIUFwcExpbmtDbGlja1R5cGVfUExVR0lOX1RSQU5TTEFURRAQEh8KG0FwcExpbmtDbGlja1R5cGVfRE9DX0JBTk5FUhAREh0KGUFwcExpbmtDbGlja1R5cGVfRE9DX0ZFRUQQEhIrCidBcHBMaW5rQ2xpY2tUeXBlX0FOU1dFUl9JTl9TRUFSQ0hfVElUTEUQExImCiJBcHBMaW5rQ2xpY2tUeXBlX1NFQVJDSF9RQV9ISVNUT1RZEBQSIgoeQXBwTGlua0NsaWNrVHlwZV9TRUFSQ0hfQ09NTU9OEBUSLQopQXBwTGlua0NsaWNrVHlwZV9BTlNXRVJfSU5fU0VBUkNIX0xPQURJTkcQFxIrCidBcHBMaW5rQ2xpY2tUeXBlX0FOU1dFUl9JTl9TRUFSQ0hfRU5URVIQGBIuCipBcHBMaW5rQ2xpY2tUeXBlX0FOU1dFUl9JTl9TRUFSQ0hfRkFMTEJBQ0sQGRIsCihBcHBMaW5rQ2xpY2tUeXBlX1JFR0lTVEVSX0pVTVBfS05PV0xFREdFEBoSJAogQXBwTGlua0NsaWNrVHlwZV9TRUxFQ1RfV09SRFNfSU0QGxItCilBcHBMaW5rQ2xpY2tUeXBlX1NFTEVDVF9XT1JEU19DTElFTlRfV0VCUxAcEiwKKEFwcExpbmtDbGlja1R5cGVfU0VMRUNUX1dPUkRTX09VVF9DTElFTlQQHRIhCh1BcHBMaW5rQ2xpY2tUeXBlX0lNX0lOUFVUX1RBQhAeEioKJkFwcExpbmtDbGlja1R5cGVfU0VBUkNIX0lOX0NIQVRfRVhQQU5EEB8SKQolQXBwTGlua0NsaWNrVHlwZV9TRUFSQ0hfSU5fQ0hBVF9USVRMRRAgEioKJkFwcExpbmtDbGlja1R5cGVfUENfTElWRVRFWFRfQUlfU0VBUkNIECESMQotQXBwTGlua0NsaWNrVHlwZV9QQ19MSVZFVEVYVF9FWFBMQUlOX0NPTlRJTlVFECISMwovQXBwTGlua0NsaWNrVHlwZV9QQ19MSVZFVEVYVF9UUkFOU0xBVEVfQ09OVElOVUUQIxIkCiBBcHBMaW5rQ2xpY2tUeXBlX0lNX0FUX0tOT1dMRURHRRAlEiMKH0FwcExpbmtDbGlja1R5cGVfTUVTU0FHRV9TRUFSQ0gQKBIfChtBcHBMaW5rQ2xpY2tUeXBlX0RPQ19TRUFSQ0gQKRIjCh9BcHBMaW5rQ2xpY2tUeXBlX1dFQl9ET0NfU0VBUkNIECoqmwEKD0V4dHJhUGF5bG9hZEtleRIPCgtVTktOT1dOX0tFWRAAEhkKFURPQ19BSV9FWFRFTkRfQ09OVEVYVBABEhYKEkRPQ19BSV9SRVBPUlRfREFUQRACEhYKEkRPWF9BSV9RVU9URV9CTE9DSxADEhcKE0RPQ19BSV9FRElUX0NPTlRFWFQQBBITCg9QUkVTRVRfUVVFUllfSUQQBSp/Cg5HdWlkZWRCZWhhdmlvchIaChZHdWlkZWRCZWhhdmlvcl9VTktOT1dOEAASGQoVR3VpZGVkQmVoYXZpb3JfVVBMT0FEEAESHQoZR3VpZGVkQmVoYXZpb3JfUkVHRU5FUkFURRACEhcKE0d1aWRlZEJlaGF2aW9yX0hJREUQAyplCglEb2NJbnRlbnQSFgoSRE9DX0lOVEVOVF9VTktOT1dOEAASEgoORE9DX0lOVEVOVF9BU0sQARIXChNET0NfSU5URU5UX0NSRUFUSU9OEAISEwoPRE9DX0lOVEVOVF9FRElUEAMqRQoSUXVlcnlJbnRlbnRpb25UeXBlEhAKDFVOS05PV05fVFlQRRAAEh0KGUFOU1dFUl9JTl9TRUFSQ0hfUVVFU1RJT04QASpLCg5GZWVkQmFja1N0YXR1cxIcChhGRUVEQkFDS19TVEFUVVNfTk9fU1RBVEUQABIbChdGRUVEQkFDS19TVEFUVVNfRElTTElLRRABKlwKDUFJUm91bmRTdGF0dXMSCwoHSU5JVElBTBABEg0KCVNUUkVBTUlORxACEgoKBkZJTklTSBADEgsKB1NUT1BQRUQQBBIJCgVFUlJPUhAFEgsKB1BFTkRJTkcQBiqoAQoNRG9jU2NvcGVTY2VuZRIZChVDTE9VRF9QRVJTT05BTF9GT0xERVIQARIWChJDTE9VRF9TSEFSRV9GT0xERVIQAhIZChVDTE9VRF9ESVJFQ1RPUllfTEVWRUwQAxIOCgpTUEFDRV9MSVNUEAQSEQoNR0VUX1RSRUVfSU5GTxAFEhIKDk1ZX0RPQ19MSUJSQVJZEAYSEgoOR0VUX05PREVfQ0hJTEQQByplCgpFbnRpdHlUeXBlEgwKCERPQ1VNRU5UEAESCwoHTUVTU0FHRRACEgkKBUxJTkdPEAMSDAoISEVMUERFU0sQBBILCgdNSU5VVEVTEAUSCAoETUFJTBAGEgwKCEFQUFJPVkFMEAcqhgEKCkRvY1N1YlR5cGUSBwoDRE9DEAESCAoEV0lLSRACEg4KCldJS0lfU1BBQ0UQAxITCg9XSUtJX1NQQUNFX0xJU1QQBBIPCgtDTE9VRF9EUklWRRAFEg0KCU1ZX0ZPTERFUhAGEhAKDFNIQVJFX0ZPTERFUhAHEg4KCk1ZX0xJQlJBUlkQCCo5Cg1TZWFyY2hRQUV2ZW50EhMKD0NyZWF0ZVVuQ29uc3VtZRAAEhMKD0RlbGV0ZVVuQ29uc3VtZRABKmEKCEljb25UeXBlEhMKD0lDT05fVFlQRV9VTlNFVBAAEhMKD0lDT05fVFlQRV9FTU9KSRABEhIKDklDT05fVFlQRV9JQ09OEAISFwoTSUNPTl9UWVBFX0NIQVJBQ1RFUhADQkJIA1o+Y29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL2FpX3RvcGljX3N0cmVhbV9zZWFyY2g",[Ul]);var dt=Io("ChJhaV9rbm93bGVkZ2UucHJvdG8SDGFpX2tub3dsZWRnZSLRAQoOSW5uZXJUb3BpY0luZm8SFwoPZXh0ZXJuX3RvcGljX2lkGAEgASgJEk4KEmxpbmtfcHJldmlld19pbmZvcxgCIAMoCzIyLmFpX2tub3dsZWRnZS5Jbm5lclRvcGljSW5mby5MaW5rUHJldmlld0luZm9zRW50cnkaVgoVTGlua1ByZXZpZXdJbmZvc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmFpX2tub3dsZWRnZS5MaW5rUHJldmlld0luZm86AjgBIikKDklubmVyUm91bmRJbmZvEhcKD2V4dGVybl9yb3VuZF9pZBgBIAEoCSKgBAoHQUlUb3BpYxIKCgJpZBgBIAEoAxIMCgRuYW1lGAIgASgJEg8KB3VzZXJfaWQYAyABKAMSGwoTbGFzdF9yb3VuZF9wb3NpdGlvbhgEIAEoBRIUCgx1bnJlYWRfY291bnQYBSABKAUSCwoDY2lkGAYgASgJEisKCnNjZW5lX2luZm8YByABKAsyFy5haV9rbm93bGVkZ2UuU2NlbmVJbmZvEhIKCmlzX2RlbGV0ZWQYCCABKAgSEQoJaW52aXNpYmxlGAkgASgIEhAKCHRhc2tfaWRzGAogAygDEhUKDWlzX3dpa2lfdHJpYWwYCyABKAgSKwoKYWdlbnRfdHlwZRgMIAEoDjIXLmFpX2tub3dsZWRnZS5BZ2VudFR5cGUSFwoPcGFyZW50X3RvcGljX2lkGA0gASgDEhUKDXN1Yl90b3BpY19pZHMYDiADKAMSFQoMaXNfYW5vbnltb3VzGMgBIAEoCBI3ChBpbm5lcl90b3BpY19pbmZvGMkBIAEoCzIcLmFpX2tub3dsZWRnZS5Jbm5lclRvcGljSW5mbxIXCg5jcmVhdGVfdGltZV9tcxj5ASABKAMSFwoOdXBkYXRlX3RpbWVfbXMY+gEgASgDEhUKDHJhbmtfdGltZV9tcxj7ASABKAMSNwoQYWlfdG9waWNfY29udGV4dBj8ASABKAsyHC5haV9rbm93bGVkZ2UuQUlUb3BpY0NvbnRleHQi4AMKB0FJUm91bmQSCgoCaWQYASABKAMSDwoHdXNlcl9pZBgCIAEoAxITCgthaV90b3BpY19pZBgDIAEoAxIQCghwb3NpdGlvbhgEIAEoBRImCgVxdWVyeRgFIAEoCzIXLmFpX2tub3dsZWRnZS5Vc2VyUXVlcnkSJgoGYW5zd2VyGAYgASgLMhYuYWlfa25vd2xlZGdlLkFJQW5zd2VyEisKBnN0YXR1cxgHIAEoDjIbLmFpX2tub3dsZWRnZS5BSVJvdW5kU3RhdHVzEgsKA2NpZBgIIAEoCRISCgppc19kZWxldGVkGAkgASgIEhEKCWludmlzaWJsZRgKIAEoCBIPCgd0YXNrX2lkGAsgASgDEisKCmFnZW50X3R5cGUYDCABKA4yFy5haV9rbm93bGVkZ2UuQWdlbnRUeXBlEjcKEGlubmVyX3JvdW5kX2luZm8YyQEgASgLMhwuYWlfa25vd2xlZGdlLklubmVyUm91bmRJbmZvEhcKDnVwZGF0ZV90aW1lX21zGPoBIAEoAxIXCg5jcmVhdGVfdGltZV9tcxj7ASABKAMSNwoQYWlfcm91bmRfY29udGV4dBj8ASABKAsyHC5haV9rbm93bGVkZ2UuQUlSb3VuZENvbnRleHQimAEKCVVzZXJRdWVyeRIKCgJpZBgBIAIoAxIPCgd1c2VyX2lkGAIgASgDEhMKC2FpX3RvcGljX2lkGAMgASgDEhMKC2FpX3JvdW5kX2lkGAQgASgDEisKB2NvbnRlbnQYBSABKAsyGi5haV9rbm93bGVkZ2UuUXVlcnlDb250ZW50EhcKDnVwZGF0ZV90aW1lX21zGPoBIAEoAyLsAwoMUXVlcnlDb250ZW50Eg8KB2NvbnRlbnQYASABKAkSMwoJcmVzb3VyY2VzGAIgAygLMiAuYWlfdG9waWNfc3RyZWFtX3NlYXJjaC5SZXNvdXJjZRJMChJsaW5rX3ByZXZpZXdfaW5mb3MYAyADKAsyMC5haV9rbm93bGVkZ2UuUXVlcnlDb250ZW50LkxpbmtQcmV2aWV3SW5mb3NFbnRyeRJXChhsaW5rX3ByZXZpZXdfaGFuZ19wb2ludHMYBCADKAsyNS5haV9rbm93bGVkZ2UuUXVlcnlDb250ZW50LkxpbmtQcmV2aWV3SGFuZ1BvaW50c0VudHJ5EiUKCXJpY2hfdGV4dBgFIAEoCzISLmVudGl0aWVzLlJpY2hUZXh0EhMKC3F1b3RlX2Jsb2NrGAYgASgJGlYKFUxpbmtQcmV2aWV3SW5mb3NFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5haV9rbm93bGVkZ2UuTGlua1ByZXZpZXdJbmZvOgI4ARpbChpMaW5rUHJldmlld0hhbmdQb2ludHNFbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5lbnRpdGllcy5VcmxQcmV2aWV3SGFuZ1BvaW50OgI4ASJWCg9MaW5rUHJldmlld0luZm8SDAoEbGluaxgBIAEoCRINCgV0aXRsZRgCIAEoCRIUCgxpY29uX2ltZ19rZXkYAyABKAkSEAoIaWNvbl91cmwYBCABKAki/wEKCEFJQW5zd2VyEgoKAmlkGAEgASgDEg8KB3VzZXJfaWQYAiABKAMSEwoLYWlfdG9waWNfaWQYAyABKAMSEwoLYWlfcm91bmRfaWQYBCABKAMSDwoHY29udGVudBgFIAEoDBISCgplcnJvcl9jb2RlGAYgASgJEhEKCWVycm9yX21zZxgHIAEoCRIPCgdlcnJjb2RlGAggASgFEjUKD2ZlZWRiYWNrX3N0YXR1cxgJIAEoDjIcLmFpX2tub3dsZWRnZS5GZWVkQmFja1N0YXR1cxIXCg51cGRhdGVfdGltZV9tcxj6ASABKAMSEwoKaXNfZGVsZXRlZBj/ASABKAgiiQIKDFNoYXJlQ29udGVudBITCgthaV9yb3VuZF9pZBgBIAEoAxIsCgR0eXBlGAIgASgOMh4uYWlfa25vd2xlZGdlLlNoYXJlQ29udGVudFR5cGUSEAoIcG9zaXRpb24YAyABKAUSJwoIYWlfcm91bmQYCyABKAsyFS5haV9rbm93bGVkZ2UuQUlSb3VuZBI2CgZpbWFnZXMYDCADKAsyJi5haV9rbm93bGVkZ2UuU2hhcmVDb250ZW50LkltYWdlc0VudHJ5GkMKC0ltYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmVudGl0aWVzLkltYWdlU2V0VjI6AjgBIjEKCVNjZW5lSW5mbxIRCglhc2tfc2NlbmUYASABKAUSEQoJb2JqZWN0X2lkGAIgASgJIogDChFQdXRBSVJvdW5kUmVxdWVzdBITCgthaV90b3BpY19pZBgBIAEoAxILCgNjaWQYAiABKAkSKQoFcXVlcnkYAyABKAsyGi5haV9rbm93bGVkZ2UuUXVlcnlDb250ZW50EiAKGHFhX2FpX3RvcGljX3JlcXVlc3RfaW5mbxgEIAEoDBI2ChBhaV9yb3VuZF9jb250ZXh0GAUgASgLMhwuYWlfa25vd2xlZGdlLkFJUm91bmRDb250ZXh0EhMKC2FpX3JvdW5kX2lkGAYgASgDEisKCnNjZW5lX2luZm8YByABKAsyFy5haV9rbm93bGVkZ2UuU2NlbmVJbmZvEhEKCWludmlzaWJsZRgIIAEoCBIxCg5haV9nZW5faWRfaW5mbxgJIAEoCzIZLmFpX2tub3dsZWRnZS5BSUdlbklESW5mbxIrCgphZ2VudF90eXBlGAogASgOMhcuYWlfa25vd2xlZGdlLkFnZW50VHlwZRIXCg9wYXJlbnRfdG9waWNfaWQYCyABKAMiTQoLQUlHZW5JREluZm8SEwoLYWlfdG9waWNfaWQYASABKAMSEwoLYWlfcm91bmRfaWQYAiABKAMSFAoMYWlfYW5zd2VyX2lkGAMgASgDImYKElB1dEFJUm91bmRSZXNwb25zZRInCghhaV90b3BpYxgBIAEoCzIVLmFpX2tub3dsZWRnZS5BSVRvcGljEicKCGFpX3JvdW5kGAIgASgLMhUuYWlfa25vd2xlZGdlLkFJUm91bmQigAEKDkFJUm91bmRDb250ZXh0Ej0KCWV4dHJhX21hcBgBIAMoCzIqLmFpX2tub3dsZWRnZS5BSVJvdW5kQ29udGV4dC5FeHRyYU1hcEVudHJ5Gi8KDUV4dHJhTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKAAQoOQUlUb3BpY0NvbnRleHQSPQoJZXh0cmFfbWFwGAEgAygLMiouYWlfa25vd2xlZGdlLkFJVG9waWNDb250ZXh0LkV4dHJhTWFwRW50cnkaLwoNRXh0cmFNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIoYBCgtQdXNoQUlSb3VuZBInCghhaV90b3BpYxgBIAEoCzIVLmFpX2tub3dsZWRnZS5BSVRvcGljEicKCGFpX3JvdW5kGAIgASgLMhUuYWlfa25vd2xlZGdlLkFJUm91bmQSJQoJZmVlZF9jYXJkGAMgASgLMhIuZW50aXRpZXMuRmVlZENhcmQiswEKGlB1c2hBSVJvdW5kU3RyZWFtaW5nQW5zd2VyEhMKC2FpX3JvdW5kX2lkGAEgASgDEikKCWFpX2Fuc3dlchgCIAEoCzIWLmFpX2tub3dsZWRnZS5BSUFuc3dlchI0Cg9haV9yb3VuZF9zdGF0dXMYAyABKA4yGy5haV9rbm93bGVkZ2UuQUlSb3VuZFN0YXR1cxIfChdhaV9yb3VuZF91cGRhdGVfdGltZV9tcxgEIAEoAyJRCiFQdWxsQUlSb3VuZFN0cmVhbWluZ0Fuc3dlclJlcXVlc3QSLAoLYWlfcm91bmRfaWQYASABKANCF4rDGhNzcGxpdCx0eXBlPWFpX3JvdW5kItoBCiJQdWxsQUlSb3VuZFN0cmVhbWluZ0Fuc3dlclJlc3BvbnNlEhMKC2FpX3JvdW5kX2lkGAEgASgDEisKCWFpX2Fuc3dlchgCIAEoCzIWLmFpX2tub3dsZWRnZS5BSUFuc3dlckgAEikKCGFpX3JvdW5kGAMgASgLMhUuYWlfa25vd2xlZGdlLkFJUm91bmRIABI0Cg9haV9yb3VuZF9zdGF0dXMYBCABKA4yGy5haV9rbm93bGVkZ2UuQUlSb3VuZFN0YXR1c0IRCg9haV9yb3VuZF9hbnN3ZXIiYAodUHVsbEFJUm91bmRzQnlQb3NpdGlvblJlcXVlc3QSLAoLYWlfdG9waWNfaWQYASABKANCF4rDGhNzcGxpdCx0eXBlPWFpX3RvcGljEhEKCXBvc2l0aW9ucxgCIAMoBSK3AQoeUHVsbEFJUm91bmRzQnlQb3NpdGlvblJlc3BvbnNlEk0KCWFpX3JvdW5kcxgBIAMoCzI6LmFpX2tub3dsZWRnZS5QdWxsQUlSb3VuZHNCeVBvc2l0aW9uUmVzcG9uc2UuQWlSb3VuZHNFbnRyeRpGCg1BaVJvdW5kc0VudHJ5EgsKA2tleRgBIAEoBRIkCgV2YWx1ZRgCIAEoCzIVLmFpX2tub3dsZWRnZS5BSVJvdW5kOgI4ASJIChdQdWxsQUlSb3VuZHNCeUlEUmVxdWVzdBItCgxhaV9yb3VuZF9pZHMYAiADKANCF4rDGhNzcGxpdCx0eXBlPWFpX3JvdW5kIqsBChhQdWxsQUlSb3VuZHNCeUlEUmVzcG9uc2USRwoJYWlfcm91bmRzGAEgAygLMjQuYWlfa25vd2xlZGdlLlB1bGxBSVJvdW5kc0J5SURSZXNwb25zZS5BaVJvdW5kc0VudHJ5GkYKDUFpUm91bmRzRW50cnkSCwoDa2V5GAEgASgDEiQKBXZhbHVlGAIgASgLMhUuYWlfa25vd2xlZGdlLkFJUm91bmQ6AjgBIlEKGlB1bGxBSVJvdW5kUmVzb3VyY2VSZXF1ZXN0EjMKCXJlc291cmNlcxgBIAMoCzIgLmFpX3RvcGljX3N0cmVhbV9zZWFyY2guUmVzb3VyY2UiqQEKG1B1bGxBSVJvdW5kUmVzb3VyY2VSZXNwb25zZRJFCgZpbWFnZXMYASADKAsyNS5haV9rbm93bGVkZ2UuUHVsbEFJUm91bmRSZXNvdXJjZVJlc3BvbnNlLkltYWdlc0VudHJ5GkMKC0ltYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmVudGl0aWVzLkltYWdlU2V0VjI6AjgBIogBChRQdXRBSUZlZWRiYWNrUmVxdWVzdBIsCgthaV9yb3VuZF9pZBgBIAIoA0IXisMaE3NwbGl0LHR5cGU9YWlfcm91bmQSFAoMYWlfYW5zd2VyX2lkGAIgAigDEiwKBnN0YXR1cxgDIAIoDjIcLmFpX2tub3dsZWRnZS5GZWVkQmFja1N0YXR1cyJAChVQdXRBSUZlZWRiYWNrUmVzcG9uc2USJwoIYWlfcm91bmQYASABKAsyFS5haV9rbm93bGVkZ2UuQUlSb3VuZCJgChVQdXRBSVRvcGljUmVhZFJlcXVlc3QSLAoLYWlfdG9waWNfaWQYASABKANCF4rDGhNzcGxpdCx0eXBlPWFpX3RvcGljEhkKEWFpX3JvdW5kX3Bvc2l0aW9uGAIgASgFIkEKFlB1dEFJVG9waWNSZWFkUmVzcG9uc2USJwoIYWlfdG9waWMYASABKAsyFS5haV9rbm93bGVkZ2UuQUlUb3BpYyJhCg9QdXNoQUlUb3BpY1JlYWQSJwoIYWlfdG9waWMYASABKAsyFS5haV9rbm93bGVkZ2UuQUlUb3BpYxIlCglmZWVkX2NhcmQYAiABKAsyEi5lbnRpdGllcy5GZWVkQ2FyZCJKChpBSVJvdW5kU3RvcEdlbmVyYXRlUmVxdWVzdBIsCgthaV9yb3VuZF9pZBgBIAIoA0IXisMaE3NwbGl0LHR5cGU9YWlfcm91bmQiHQobQUlSb3VuZFN0b3BHZW5lcmF0ZVJlc3BvbnNlIlwKFlB1bGxBSVJvdW5kQ29weVJlcXVlc3QSLAoLYWlfcm91bmRfaWQYASACKANCF4rDGhNzcGxpdCx0eXBlPWFpX3JvdW5kEhQKDHdpdGhvdXRfdGFpbBgLIAEoCCJAChdQdWxsQUlSb3VuZENvcHlSZXNwb25zZRITCgthaV9yb3VuZF9pZBgBIAEoAxIQCghtYXJrZG93bhgCIAEoCSK5AgoTUHV0U2hhcmVMaW5rUmVxdWVzdBIsCgthaV90b3BpY19pZBgBIAEoA0IXisMaE3NwbGl0LHR5cGU9YWlfdG9waWMSJwoFc2NlbmUYAiABKA4yGC5haV9rbm93bGVkZ2UuU2hhcmVTY2VuZRIyCg5zaGFyZV9jb250ZW50cxgDIAMoCzIaLmFpX2tub3dsZWRnZS5TaGFyZUNvbnRlbnQSGgoSYWlfcm91bmRfcG9zaXRpb25zGAQgAygFEhAKCHRpbWV6b25lGAUgASgJEjsKBWV4dHJhGGQgAygLMiwuYWlfa25vd2xlZGdlLlB1dFNoYXJlTGlua1JlcXVlc3QuRXh0cmFFbnRyeRosCgpFeHRyYUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiPwoUUHV0U2hhcmVMaW5rUmVzcG9uc2USEwoLc2hhcmVfdG9rZW4YASABKAkSEgoKc2hhcmVfbGluaxgCIAEoCSLHAwoQV2F0ZXJNYXJrQ29udGVudBIUCgxjbGVhcl9lbmFibGUYASABKAgSFQoNaGlkZGVuX2VuYWJsZRgCIAEoCBJFCgxpMThuX2NvbnRlbnQYAyADKAsyLy5haV9rbm93bGVkZ2UuV2F0ZXJNYXJrQ29udGVudC5JMThuQ29udGVudEVudHJ5EkMKC2NsZWFyX3N0eWxlGAQgAygLMi4uYWlfa25vd2xlZGdlLldhdGVyTWFya0NvbnRlbnQuQ2xlYXJTdHlsZUVudHJ5EkUKDGhpZGRlbl9zdHlsZRgFIAMoCzIvLmFpX2tub3dsZWRnZS5XYXRlck1hcmtDb250ZW50LkhpZGRlblN0eWxlRW50cnkSGAoQaGlkZGVuX2ltYWdlX3VybBgGIAEoCRoyChBJMThuQ29udGVudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaMQoPQ2xlYXJTdHlsZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaMgoQSGlkZGVuU3R5bGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIooBChtQdWxsU2hhcmVMaW5rQ29udGVudFJlcXVlc3QSEwoLc2hhcmVfdG9rZW4YASABKAkSNwoKc2NlbmVfdHlwZRgCIAEoDjIjLmFpX2tub3dsZWRnZS5TaGFyZUNvbnRlbnRTY2VuZVR5cGUSDgoGb2Zmc2V0GAogASgFEg0KBWxpbWl0GAsgASgFIs8CChxQdWxsU2hhcmVMaW5rQ29udGVudFJlc3BvbnNlEjIKDnNoYXJlX2NvbnRlbnRzGAEgAygLMhouYWlfa25vd2xlZGdlLlNoYXJlQ29udGVudBINCgV0aXRsZRgLIAEoCRIUCgxjcmVhdG9yX25hbWUYDCABKAkSLAoOY3JlYXRvcl9hdmF0YXIYDSABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYyEhQKDHFyX2NvZGVfbGluaxgOIAEoCRISCgpjcmVhdG9yX2lkGA8gASgDEjoKEndhdGVyX21hcmtfY29udGVudBgQIAEoCzIeLmFpX2tub3dsZWRnZS5XYXRlck1hcmtDb250ZW50EhEKCWp1bXBfbGluaxgRIAEoCRIXCg9qdW1wX2xpbmtfdGl0bGUYEiABKAkSFgoOY3JlYXRlX3RpbWVfbXMYMyABKAMi+gIKFVB1bGxTaGFyZUltYWdlUmVxdWVzdBIsCgthaV90b3BpY19pZBgBIAEoA0IXisMaE3NwbGl0LHR5cGU9YWlfdG9waWMSJwoFc2NlbmUYAiABKA4yGC5haV9rbm93bGVkZ2UuU2hhcmVTY2VuZRIyCg5zaGFyZV9jb250ZW50cxgDIAMoCzIaLmFpX2tub3dsZWRnZS5TaGFyZUNvbnRlbnQSGgoSYWlfcm91bmRfcG9zaXRpb25zGAQgAygFEg0KBXRoZW1lGAUgASgJEhMKC2ltYWdlX3dpZHRoGAYgASgFEhAKCHRpbWV6b25lGAcgASgJEhcKCXdhdGVybWFyaxgIIAEoCDoEdHJ1ZRI9CgVleHRyYRhkIAMoCzIuLmFpX2tub3dsZWRnZS5QdWxsU2hhcmVJbWFnZVJlcXVlc3QuRXh0cmFFbnRyeRosCgpFeHRyYUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiPwoWUHVsbFNoYXJlSW1hZ2VSZXNwb25zZRINCgVpbWFnZRgBIAEoCRIWCg5kb3dubG9hZF90aXRsZRgCIAEoCSK5AQoZVXBkYXRlQUlSb3VuZFF1ZXJ5UmVxdWVzdBIsCgthaV9yb3VuZF9pZBgBIAEoA0IXisMaE3NwbGl0LHR5cGU9YWlfcm91bmQSCwoDY2lkGAIgASgJEikKBXF1ZXJ5GAMgASgLMhouYWlfa25vd2xlZGdlLlF1ZXJ5Q29udGVudBI2ChBhaV9yb3VuZF9jb250ZXh0GAQgASgLMhwuYWlfa25vd2xlZGdlLkFJUm91bmRDb250ZXh0IhwKGlVwZGF0ZUFJUm91bmRRdWVyeVJlc3BvbnNlIvABChpQdWxsVXNlckFJVG9waWNMaXN0UmVxdWVzdBISCgpwYWdlX2NvdW50GAEgASgFEhgKEG9mZnNldF90aW1lc3RhbXAYAiABKAMSKwoKc2NlbmVfaW5mbxgDIAEoCzIXLmFpX2tub3dsZWRnZS5TY2VuZUluZm8SLAoLc2NlbmVfaW5mb3MYBCADKAsyFy5haV9rbm93bGVkZ2UuU2NlbmVJbmZvEjMKDnB1bGxfZGlyZWN0aW9uGAUgASgOMhsuYWlfa25vd2xlZGdlLlB1bGxEaXJlY3Rpb24SFAoMbmVlZF9kZWxldGVkGAYgASgIIokBChtQdWxsVXNlckFJVG9waWNMaXN0UmVzcG9uc2USKAoJYWlfdG9waWNzGAEgAygLMhUuYWlfa25vd2xlZGdlLkFJVG9waWMSEAoIaGFzX21vcmUYAiABKAgSGQoRbGltaXRlZF90aW1lc3RhbXAYAyABKAMSEwoLbGltaXRlZF9kYXkYBCABKAMiPgoWUHVsbEFJVG9waWNCeUlEUmVxdWVzdBIkCgNpZHMYASADKANCF4rDGhNzcGxpdCx0eXBlPWFpX3RvcGljIqkBChdQdWxsQUlUb3BpY0J5SURSZXNwb25zZRJGCglhaV90b3BpY3MYASADKAsyMy5haV9rbm93bGVkZ2UuUHVsbEFJVG9waWNCeUlEUmVzcG9uc2UuQWlUb3BpY3NFbnRyeRpGCg1BaVRvcGljc0VudHJ5EgsKA2tleRgBIAEoAxIkCgV2YWx1ZRgCIAEoCzIVLmFpX2tub3dsZWRnZS5BSVRvcGljOgI4ASIZChdQdWxsVXNlckZlYXR1cmVzUmVxdWVzdCJFChhQdWxsVXNlckZlYXR1cmVzUmVzcG9uc2USKQoFc2hhcmUYASABKAsyGi5haV9rbm93bGVkZ2UuU2hhcmVGZWF0dXJlInMKDFNoYXJlRmVhdHVyZRIOCgZlbmFibGUYASABKAgSGQoRZW5hYmxlX2xpbmtfc2hhcmUYAiABKAgSGgoSZW5hYmxlX2ltYWdlX3NoYXJlGAMgASgIEhwKFGVuYWJsZV9zaGFyZV90b19jaGF0GAQgASgIIh0KG1B1bGxPbmJvYXJkVGVtcGxhdGVzUmVxdWVzdCJUChxQdWxsT25ib2FyZFRlbXBsYXRlc1Jlc3BvbnNlEjQKD3F1ZXJ5X3RlbXBsYXRlcxgBIAMoCzIbLmFpX2tub3dsZWRnZS5RdWVyeVRlbXBsYXRlIoABCghJY29uSW5mbxI0Cg9pY29uX2ltYWdlX3R5cGUYASABKA4yGy5haV9rbm93bGVkZ2UuSWNvbkltYWdlVHlwZRIQCgh1ZF9pbWFnZRgCIAEoCRIsCgVpbWFnZRgDIAEoCzIdLmVudGl0aWVzLkltYWdlU2V0UGFzc1Rocm91Z2giOgoKSWNvbkNvbmZpZxIsCgxkaXNwbGF5X2ljb24YASABKAsyFi5haV9rbm93bGVkZ2UuSWNvbkluZm8iSAoFUGFyYW0SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIPCgdkZWZhdWx0GAMgASgJEhQKDHBsYWNlX2hvbGRlchgEIAEoCSKxAQoNUXVlcnlUZW1wbGF0ZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhYKDnF1ZXJ5X3RlbXBsYXRlGAQgASgJEi0KC2ljb25fY29uZmlnGAUgASgLMhguYWlfa25vd2xlZGdlLkljb25Db25maWcSKgoNcGFyYW1fZGV0YWlscxgGIAMoCzITLmFpX2tub3dsZWRnZS5QYXJhbSJBChdQdWxsSG9tZVBhZ2VJbmZvUmVxdWVzdBImCh53aXRoX2FpX2V4cGVyaWVuY2VfcGxhbl9kaWFsb2cYASABKAgitAMKGFB1bGxIb21lUGFnZUluZm9SZXNwb25zZRITCgtpc19zaG93X3RhZxgBIAEoCBIQCgh0YWdfdGV4dBgCIAEoCRIYChBhaV9yb3VuZF9jbnRfc3RyGAMgASgJEhAKCGNhbkFwcGx5GAsgASgIEi0KC2luZGV4X3N0YXRlGAwgASgOMhguYWlfa25vd2xlZGdlLkluZGV4U3RhdGUSIgoaaW5kZXhfZXhwZWN0X2NvbXBsZXRlX3RpbWUYDSABKAMSHAoUaXNfc21hbGxfZnJlZV90ZW5hbnQYDiABKAgSLQoLc2hvd19zdGF0dXMYFSABKA4yGC5haV9rbm93bGVkZ2UuU2hvd1N0YXR1cxI9Cg9zdGF0aXN0aWNzX2RhdGEYFiADKAsyJC5haV9rbm93bGVkZ2UuUmVzb3VyY2VTdGF0aXN0aWNzRGF0YRI7ChRkb2NfY29udHJpYnV0b3JfZGF0YRgXIAMoCzIdLmFpX2tub3dsZWRnZS5Db250cmlidXRvckRhdGESKQohaXNfc2hvd19haV9leHBlcmllbmNlX3BsYW5fZGlhbG9nGB8gASgIIuwCCghJZGVudGl0eRIKCgJpZBgBIAEoAxIMCgRuYW1lGAIgASgJEjcKCWkxOG5fbmFtZRgDIAMoCzIkLmFpX2tub3dsZWRnZS5JZGVudGl0eS5JMThuTmFtZUVudHJ5EhIKCmF2YXRhcl9rZXkYBCABKAkSFgoOdXBkYXRlX3RpbWVfbXMYBSABKAMSEwoLZGVzY3JpcHRpb24YBiABKAkSRQoQaTE4bl9kZXNjcmlwdGlvbhgHIAMoCzIrLmFpX2tub3dsZWRnZS5JZGVudGl0eS5JMThuRGVzY3JpcHRpb25FbnRyeRIcChRiYWNrZ3JvdW5kX2ltYWdlX2tleRgIIAEoCRovCg1JMThuTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNgoUSTE4bkRlc2NyaXB0aW9uRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKYAwoPSWRlbnRpdHlGb3JGZWVkEgoKAmlkGAEgASgDEgwKBG5hbWUYAiABKAkSPgoJaTE4bl9uYW1lGAMgAygLMisuYWlfa25vd2xlZGdlLklkZW50aXR5Rm9yRmVlZC5JMThuTmFtZUVudHJ5EhIKCmF2YXRhcl9rZXkYBCABKAkSFgoOdXBkYXRlX3RpbWVfbXMYBSABKAMSEwoLZGVzY3JpcHRpb24YBiABKAkSTAoQaTE4bl9kZXNjcmlwdGlvbhgHIAMoCzIyLmFpX2tub3dsZWRnZS5JZGVudGl0eUZvckZlZWQuSTE4bkRlc2NyaXB0aW9uRW50cnkSHAoUYmFja2dyb3VuZF9pbWFnZV9rZXkYCCABKAkSFQoNSWRlbnRpdHlCeXRlcxgJIAEoDBovCg1JMThuTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNgoUSTE4bkRlc2NyaXB0aW9uRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKTAQoQSWRlbnRpdHlSZXNvdXJjZRI6CgZpbWFnZXMYASADKAsyKi5haV9rbm93bGVkZ2UuSWRlbnRpdHlSZXNvdXJjZS5JbWFnZXNFbnRyeRpDCgtJbWFnZXNFbnRyeRILCgNrZXkYASABKAkSIwoFdmFsdWUYAiABKAsyFC5lbnRpdGllcy5JbWFnZVNldFYyOgI4ASIZChdBcHBseUZ1bGxGZWF0dXJlUmVxdWVzdCKXAQoYQXBwbHlGdWxsRmVhdHVyZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSLQoLaW5kZXhfc3RhdGUYAiABKA4yGC5haV9rbm93bGVkZ2UuSW5kZXhTdGF0ZRIiChppbmRleF9leHBlY3RfY29tcGxldGVfdGltZRgDIAEoAxIXCg9hcHBseV9hZG1pbl91aWQYBCABKAMidQogUHVzaEZ1bGxGZWF0dXJlQXBwbGljYXRpb25DaGFuZ2USLQoLaW5kZXhfc3RhdGUYASABKA4yGC5haV9rbm93bGVkZ2UuSW5kZXhTdGF0ZRIiChppbmRleF9leHBlY3RfY29tcGxldGVfdGltZRgCIAEoAyIcChpQdWxsSWRlbnRpdHlQcm9maWxlUmVxdWVzdCJ5ChtQdWxsSWRlbnRpdHlQcm9maWxlUmVzcG9uc2USKAoIaWRlbnRpdHkYASABKAsyFi5haV9rbm93bGVkZ2UuSWRlbnRpdHkSMAoIcmVzb3VyY2UYAiABKAsyHi5haV9rbm93bGVkZ2UuSWRlbnRpdHlSZXNvdXJjZSIsChJDaGVja1VzYWJsZVJlcXVlc3QSFgoOaXNfZnJvbV9uYXRpdmUYASABKAgiJQoTQ2hlY2tVc2FibGVSZXNwb25zZRIOCgZ1c2FibGUYASABKAgimAEKE1B1c2hJZGVudGl0eVByb2ZpbGUSKAoIaWRlbnRpdHkYASABKAsyFi5haV9rbm93bGVkZ2UuSWRlbnRpdHkSJQoJZmVlZF9jYXJkGAIgASgLMhIuZW50aXRpZXMuRmVlZENhcmQSMAoIcmVzb3VyY2UYAyABKAsyHi5haV9rbm93bGVkZ2UuSWRlbnRpdHlSZXNvdXJjZSI3CgpTaWRlYmFyVGFiEgwKBG5hbWUYASABKAkSCwoDdXJsGAIgASgJEg4KBmJpel9pZBgDIAEoCSIUChJQdWxsU2lkZWJhclJlcXVlc3QiSQoTUHVsbFNpZGViYXJSZXNwb25zZRIyChBzaWRlYmFyX3RhYl9saXN0GAEgAygLMhguYWlfa25vd2xlZGdlLlNpZGViYXJUYWIiFwoVQ3JlYXRlRG9jdW1lbnRSZXF1ZXN0IiYKFkNyZWF0ZURvY3VtZW50UmVzcG9uc2USDAoEZGF0YRgBIAEoCSJlChhHZXRVcGxvYWRXWFFSQ29kZVJlcXVlc3QSDQoFd2lkdGgYASABKAMSEgoKYXV0b19jb2xvchgCIAEoCBISCgppc19oeWFsaW5lGAMgASgIEhIKCmxpbmVfY29sb3IYBCABKAkiWgoZR2V0VXBsb2FkV1hRUkNvZGVSZXNwb25zZRIUCgxjb250ZW50X3R5cGUYASABKAkSEwoLYmFzZTY0X2RhdGEYAiABKAkSEgoKZHJpdmVfY29kZRgDIAEoCSKsAQoOSW5kZXhEb2NPYmplY3QSEQoJb2JqX3Rva2VuGAEgASgJEhAKCG9ial90eXBlGAIgASgFEkIKDmNvbnRhaW5lcl90eXBlGAMgASgOMiouYWlfa25vd2xlZGdlLkluZGV4RG9jT2JqZWN0LkNvbnRhaW5lclR5cGUiMQoNQ29udGFpbmVyVHlwZRILCgdVTktOT1dOEAASCQoFU1BBQ0UQARIICgRXSUtJEAIiTQocUHVsbE9iamVjdHNJbmRleFN0YXRlUmVxdWVzdBItCgdvYmplY3RzGAEgAygLMhwuYWlfa25vd2xlZGdlLkluZGV4RG9jT2JqZWN0IkkKCEkxOG5UZXh0EhAKCGkxOG5fa2V5GAEgASgJEhQKDGRlZmF1bHRfdGV4dBgCIAEoCRIVCg1mYWxsYmFja190ZXh0GAMgASgJIrYECh1QdWxsT2JqZWN0c0luZGV4U3RhdGVSZXNwb25zZRIMCgRjb2RlGAEgASgFEg8KB21lc3NhZ2UYAiABKAkSVAoNcmVpbmRleF9zdGF0ZRgDIAMoCzI9LmFpX2tub3dsZWRnZS5QdWxsT2JqZWN0c0luZGV4U3RhdGVSZXNwb25zZS5SZWluZGV4U3RhdGVFbnRyeRrdAQoKSW5kZXhTdGF0ZRJUChBpbmRleF9zdGF0ZV9jb2RlGAEgASgOMjouYWlfa25vd2xlZGdlLlB1bGxPYmplY3RzSW5kZXhTdGF0ZVJlc3BvbnNlLkluZGV4U3RhdGVDb2RlEhEKCWZhaWxfY29kZRgCIAEoBRIUCgxmYWlsX21lc3NhZ2UYAyABKAkSJAoEdGV4dBgEIAEoCzIWLmFpX2tub3dsZWRnZS5JMThuVGV4dBITCgt1cGxvYWRfdGltZRgFIAEoBRIVCg1taW51dGVzX3Rva2VuGGQgASgJGmsKEVJlaW5kZXhTdGF0ZUVudHJ5EgsKA2tleRgBIAEoCRJFCgV2YWx1ZRgCIAEoCzI2LmFpX2tub3dsZWRnZS5QdWxsT2JqZWN0c0luZGV4U3RhdGVSZXNwb25zZS5JbmRleFN0YXRlOgI4ASJTCg5JbmRleFN0YXRlQ29kZRILCgdVTktOT1dOEAASDQoJVU5JTkRFWEVEEAESDAoISU5ERVhJTkcQAhILCgdJTkRFWEVEEAMSCgoGRkFJTEVEEAQi0QEKBUFnZW50EisKCmFnZW50X3R5cGUYASABKA4yFy5haV9rbm93bGVkZ2UuQWdlbnRUeXBlEisKCmFnZW50X2luZm8YAiABKAsyFy5haV9rbm93bGVkZ2UuQWdlbnRJbmZvEjoKDGFnZW50X3N0YXR1cxgDIAMoCzIkLmFpX2tub3dsZWRnZS5BZ2VudC5BZ2VudFN0YXR1c0VudHJ5GjIKEEFnZW50U3RhdHVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKZAQoJQWdlbnRJbmZvEiQKBG5hbWUYASABKAsyFi5haV9rbm93bGVkZ2UuSTE4blRleHQSKwoLZGVzY3JpcHRpb24YAiABKAsyFi5haV9rbm93bGVkZ2UuSTE4blRleHQSKwoLcGxhY2Vob2xkZXIYAyABKAsyFi5haV9rbm93bGVkZ2UuSTE4blRleHQSDAoEaWNvbhgEIAEoCSIaChhQdWxsQWdlbnRJbmZvTGlzdFJlcXVlc3QiQAoZUHVsbEFnZW50SW5mb0xpc3RSZXNwb25zZRIjCgZhZ2VudHMYASADKAsyEy5haV9rbm93bGVkZ2UuQWdlbnQizAEKGVB1dFVzZXJBZ2VudFN0YXR1c1JlcXVlc3QSKwoKYWdlbnRfdHlwZRgBIAEoDjIXLmFpX2tub3dsZWRnZS5BZ2VudFR5cGUSTgoMYWdlbnRfc3RhdHVzGAIgAygLMjguYWlfa25vd2xlZGdlLlB1dFVzZXJBZ2VudFN0YXR1c1JlcXVlc3QuQWdlbnRTdGF0dXNFbnRyeRoyChBBZ2VudFN0YXR1c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiHAoaUHV0VXNlckFnZW50U3RhdHVzUmVzcG9uc2UiNgoQUHVzaEFnZW50UmVxdWVzdBIiCgVhZ2VudBgBIAEoCzITLmFpX2tub3dsZWRnZS5BZ2VudCJGChNBSUtub3dsZWRnZUZvbGxvd1VwEhgKEHN1Z2dlc3RfcXVlcnlfaWQYASABKAMSFQoNc3VnZ2VzdF9xdWVyeRgCIAEoCSKfAQokUHVzaEFJS25vd2xlZGdlRm9sbG93VXBEZXRhaWxSZXF1ZXN0EhMKC2FpX3RvcGljX2lkGAEgASgDEhMKC2FpX3JvdW5kX2lkGAIgASgDEjUKCmZvbGxvd191cHMYAyADKAsyIS5haV9rbm93bGVkZ2UuQUlLbm93bGVkZ2VGb2xsb3dVcBIWCg5jcmVhdGVfdGltZV9tcxgEIAEoAyI7CiRQdWxsQUlLbm93bGVkZ2VGb2xsb3dVcERldGFpbFJlcXVlc3QSEwoLYWlfcm91bmRfaWQYASABKAMidgolUHVsbEFJS25vd2xlZGdlRm9sbG93VXBEZXRhaWxSZXNwb25zZRI1Cgpmb2xsb3dfdXBzGAIgAygLMiEuYWlfa25vd2xlZGdlLkFJS25vd2xlZGdlRm9sbG93VXASFgoOY3JlYXRlX3RpbWVfbXMYAyABKAMiHgocQ2hlY2tVc2VySGFzU2VudFF1ZXJ5UmVxdWVzdCIxCh1DaGVja1VzZXJIYXNTZW50UXVlcnlSZXNwb25zZRIQCghoYXNfc2VudBgBIAEoCCInCiVQdWxsVXNlclJlc291cmNlU3RhdGlzdGljc0RhdGFSZXF1ZXN0IlEKFlJlc291cmNlU3RhdGlzdGljc0RhdGESDAoEbmFtZRgBIAEoCRIMCgRpY29uGAIgASgJEg0KBWNvdW50GAMgASgDEgwKBHVuaXQYBCABKAkiPwoPQ29udHJpYnV0b3JEYXRhEg8KB3VzZXJfaWQYASABKAMSDQoFY291bnQYAiABKAMSDAoEcmFuaxgDIAEoAyLTAQomUHVsbFVzZXJSZXNvdXJjZVN0YXRpc3RpY3NEYXRhUmVzcG9uc2USLQoLc2hvd19zdGF0dXMYASABKA4yGC5haV9rbm93bGVkZ2UuU2hvd1N0YXR1cxI9Cg9zdGF0aXN0aWNzX2RhdGEYAiADKAsyJC5haV9rbm93bGVkZ2UuUmVzb3VyY2VTdGF0aXN0aWNzRGF0YRI7ChRkb2NfY29udHJpYnV0b3JfZGF0YRgDIAMoCzIdLmFpX2tub3dsZWRnZS5Db250cmlidXRvckRhdGEiJAoiUHVsbEFJVG9waWNUb3RhbFVucmVhZENvdW50UmVxdWVzdCJlCiNQdWxsQUlUb3BpY1RvdGFsVW5yZWFkQ291bnRSZXNwb25zZRI+ChJ0b3RhbF91bnJlYWRfY291bnQYASABKAsyIi5haV9rbm93bGVkZ2UuVXNlclRvcGljVW5yZWFkQ291bnQiVAoUVXNlclRvcGljVW5yZWFkQ291bnQSDwoHdXNlcl9pZBgBIAEoAxITCgtiYWRnZV9jb3VudBgCIAEoAxIWCg51cGRhdGVfdGltZV9tcxgDIAEoAyJaChhQdXNoVXNlclRvcGljVW5yZWFkQ291bnQSPgoSdG90YWxfdW5yZWFkX2NvdW50GAEgASgLMiIuYWlfa25vd2xlZGdlLlVzZXJUb3BpY1VucmVhZENvdW50IqsCCiBQdWxsVXNlclJlY2VudEFJVG9waWNMaXN0UmVxdWVzdBISCgpwYWdlX2NvdW50GAEgASgFEiMKG3VwZGF0ZV90aW1lX3N0YXJ0X3RpbWVzdGFtcBgCIAEoAxIrCgpzY2VuZV9pbmZvGAMgASgLMhcuYWlfa25vd2xlZGdlLlNjZW5lSW5mbxIsCgtzY2VuZV9pbmZvcxgEIAMoCzIXLmFpX2tub3dsZWRnZS5TY2VuZUluZm8SOQoJZGlyZWN0aW9uGAUgASgOMiYuYWlfa25vd2xlZGdlLlB1bGxSZWNlbnRUb3BpY0RpcmVjdGlvbhIiChp1cGRhdGVfdGltZV9zdG9wX3RpbWVzdGFtcBgGIAEoAxIUCgxuZWVkX2RlbGV0ZWQYByABKAgizQEKIVB1bGxVc2VyUmVjZW50QUlUb3BpY0xpc3RSZXNwb25zZRIoCglhaV90b3BpY3MYASADKAsyFS5haV9rbm93bGVkZ2UuQUlUb3BpYxIQCghoYXNfbW9yZRgCIAEoCBIZChFsaW1pdGVkX3RpbWVzdGFtcBgDIAEoAxITCgtsaW1pdGVkX2RheRgEIAEoAxIiChpsYXN0X3VwZGF0ZV90aW1lX3RpbWVzdGFtcBgFIAEoAxIYChBsYXRlc3RfdGltZXN0YW1wGAYgASgDIkMKF1B1c2hCYXRjaEFJVG9waWNSZXF1ZXN0EigKCWFpX3RvcGljcxgBIAMoCzIVLmFpX2tub3dsZWRnZS5BSVRvcGljImwKDlNwYWNlQ292ZXJJbmZvEg4KBm9yaWdpbhgBIAEoCRIRCgl0aHVtYm5haWwYAiABKAkSCwoDa2V5GAMgASgJEhUKDWlzX2dyYXBoX2RhcmsYBCABKAgSEwoLY29sb3JfdmFsdWUYBSABKAkiRwoNU3BhY2VJY29uSW5mbxIpCglpY29uX3R5cGUYASABKA4yFi5haV9rbm93bGVkZ2UuSWNvblR5cGUSCwoDS2V5GAIgASgJIo8BChFEaXNwbGF5Q3JlYXRlSW5mbxJCChZ3aWtpX2NvbGxhYm9yYXRvcl9pbmZvGAEgASgLMiIuYWlfa25vd2xlZGdlLldpa2lDb2xsYWJvcmF0b3JJbmZvEjYKEHdpa2lfdGVuYW50X2luZm8YAiABKAsyHC5haV9rbm93bGVkZ2UuV2lraVRlbmFudEluZm8isAYKCVNwYWNlSW5mbxIKCgJpZBgBIAEoAxIMCgRuYW1lGAIgASgJEg4KBmRldGFpbBgDIAEoCRISCgphdmF0YXJfdXJsGAQgASgJEjYKEHNwYWNlX2NvdmVyX2luZm8YBSABKAsyHC5haV9rbm93bGVkZ2UuU3BhY2VDb3ZlckluZm8SNAoPc3BhY2VfaWNvbl9pbmZvGAYgASgLMhsuYWlfa25vd2xlZGdlLlNwYWNlSWNvbkluZm8SEgoKY3JlYXRlX3VpZBgHIAEoAxISCgpub2RlX2NvdW50GAggASgDEhgKEGNyZWF0ZV90ZW5hbnRfaWQYCSABKAMSCwoDdXJsGAogASgJEjwKE2Rpc3BsYXlfY3JlYXRlX2luZm8YCyABKAsyHy5haV9rbm93bGVkZ2UuRGlzcGxheUNyZWF0ZUluZm8SOwoTYWlfa25vX3BheW1lbnRfdHlwZRgMIAEoDjIeLmFpX2tub3dsZWRnZS5BSUtub1BheW1lbnRUeXBlEh0KFWFpX2tub19wYXltZW50X2Ftb3VudBgNIAEoAxIXCg9zdWJfbWVyY2hhbnRfaWQYDiABKAkSUwogYWlfa25vX3dpa2lfdmFsaWRpdHlfcGVyaW9kX3R5cGUYDyABKA4yKS5haV9rbm93bGVkZ2UuQUlLbm9XaWtpVmFsaWRpdHlQZXJpb2RUeXBlEhQKDG1lbWJlcl9jb3VudBhkIAEoAxI4CgxzdWdnZXN0X2luZm8YZSADKAsyIi5haV9rbm93bGVkZ2UuV2lraVNwYWNlU3VnZ2VzdEluZm8SPgoPcGVybWlzc2lvbl9pbmZvGGYgASgLMiUuYWlfa25vd2xlZGdlLldpa2lTcGFjZVBlcm1pc3Npb25JbmZvEj0KD3N1Z2dlc3RfaW5mb192MhhnIAEoCzIkLmFpX2tub3dsZWRnZS5XaWtpU3BhY2VTdWdnZXN0SW5mb1YyElEKHmFpX2tub3dsZWRnZV93aWtpX2J1aWx0aW5fY29uZhiWASABKA4yKC5haV9rbm93bGVkZ2UuQUlLbm93bGVkZ2VXaWtpQnVpbHRpbkNvbmYiZAoJVGh1bWJuYWlsEgsKA3VybBgBIAEoCRITCgtkZWNyeXB0X2tleRgCIAEoCRITCgtjaXBoZXJfdHlwZRgDIAEoAxINCgVub25jZRgEIAEoCRIRCglwZXJtaXR0ZWQYBSABKAgisAEKCE5vZGVJbmZvEhAKCHNwYWNlX2lkGAEgASgDEhIKCndpa2lfdG9rZW4YAiABKAkSEQoJb2JqX3Rva2VuGAMgASgJEhAKCG9ial90eXBlGAQgASgDEg0KBXRpdGxlGAUgASgJEgsKA3VybBgGIAEoCRIRCglpY29uX2luZm8YByABKAkSKgoJdGh1bWJuYWlsGBQgASgLMhcuYWlfa25vd2xlZGdlLlRodW1ibmFpbCIuChpQdWxsV2lraVNwYWNlRGV0YWlsUmVxdWVzdBIQCghzcGFjZV9pZBgBIAEoAyJ1ChtQdWxsV2lraVNwYWNlRGV0YWlsUmVzcG9uc2USKwoKc3BhY2VfaW5mbxgBIAEoCzIXLmFpX2tub3dsZWRnZS5TcGFjZUluZm8SKQoJbm9kZV9saXN0GAIgAygLMhYuYWlfa25vd2xlZGdlLk5vZGVJbmZvIvcDChVQdXNoT2JqZWN0c0luZGV4U3RhdGUSTAoNcmVpbmRleF9zdGF0ZRgBIAMoCzI1LmFpX2tub3dsZWRnZS5QdXNoT2JqZWN0c0luZGV4U3RhdGUuUmVpbmRleFN0YXRlRW50cnka1QEKCkluZGV4U3RhdGUSTAoQaW5kZXhfc3RhdGVfY29kZRgBIAEoDjIyLmFpX2tub3dsZWRnZS5QdXNoT2JqZWN0c0luZGV4U3RhdGUuSW5kZXhTdGF0ZUNvZGUSEQoJZmFpbF9jb2RlGAIgASgFEhQKDGZhaWxfbWVzc2FnZRgDIAEoCRIkCgR0ZXh0GAQgASgLMhYuYWlfa25vd2xlZGdlLkkxOG5UZXh0EhMKC3VwbG9hZF90aW1lGAUgASgFEhUKDW1pbnV0ZXNfdG9rZW4YZCABKAkaYwoRUmVpbmRleFN0YXRlRW50cnkSCwoDa2V5GAEgASgJEj0KBXZhbHVlGAIgASgLMi4uYWlfa25vd2xlZGdlLlB1c2hPYmplY3RzSW5kZXhTdGF0ZS5JbmRleFN0YXRlOgI4ASJTCg5JbmRleFN0YXRlQ29kZRILCgdVTktOT1dOEAASDQoJVU5JTkRFWEVEEAESDAoISU5ERVhJTkcQAhILCgdJTkRFWEVEEAMSCgoGRkFJTEVEEAQiRgoVRGVsZXRlQUlUb3BpY3NSZXF1ZXN0Ei0KDGFpX3RvcGljX2lkcxgBIAMoA0IXisMaE3NwbGl0LHR5cGU9YWlfdG9waWMipwEKFkRlbGV0ZUFJVG9waWNzUmVzcG9uc2USRQoJYWlfdG9waWNzGAEgAygLMjIuYWlfa25vd2xlZGdlLkRlbGV0ZUFJVG9waWNzUmVzcG9uc2UuQWlUb3BpY3NFbnRyeRpGCg1BaVRvcGljc0VudHJ5EgsKA2tleRgBIAEoAxIkCgV2YWx1ZRgCIAEoCzIVLmFpX2tub3dsZWRnZS5BSVRvcGljOgI4ASJ4ChtHZXRRdWVyeUJ5TWVzc2FnZUlEc1JlcXVlc3QSDwoHY2hhdF9pZBgBIAEoAxITCgttZXNzYWdlX2lkcxgCIAMoAxIfChdvcmlnaW5fbWVyZ2VfZm9yd2FyZF9pZBgDIAEoCRISCgpsZWF2ZV9ub3RlGAQgASgJImcKHEdldFF1ZXJ5QnlNZXNzYWdlSURzUmVzcG9uc2USKQoFcXVlcnkYASABKAsyGi5haV9rbm93bGVkZ2UuUXVlcnlDb250ZW50EhwKFGlzX2FsbG93X2FsbF9mb3J3YXJkGAIgASgIIiUKFFdpa2lTcGFjZVN1Z2dlc3RJbmZvEg0KBXF1ZXJ5GAEgASgJIrMBChZXaWtpU3BhY2VTdWdnZXN0SW5mb1YyEkYKDHN1Z2dlc3RfdHlwZRgBIAEoDjIwLmFpX2tub3dsZWRnZS5XaWtpU3BhY2VTdWdnZXN0SW5mb1YyLlN1Z2dlc3RUeXBlEhoKEnN1Z2dlc3RfcXVlcnlfbGlzdBgCIAMoCSI1CgtTdWdnZXN0VHlwZRILCgdVTktOT1dOEAASCgoGTUFOVUFMEAESDQoJQVVUT01BVElDEAIivQEKF1dpa2lTcGFjZVBlcm1pc3Npb25JbmZvEk0KD3Blcm1pc3Npb25fdHlwZRgBIAEoDjI0LmFpX2tub3dsZWRnZS5XaWtpU3BhY2VQZXJtaXNzaW9uSW5mby5QZXJtaXNzaW9uVHlwZRIYChBtZW1iZXJfcmVhZF9maWxlGAIgASgIIjkKDlBlcm1pc3Npb25UeXBlEg4KClVOX1JFTEVBU0UQABILCgdQUklWQVRFEAESCgoGUFVCTElDEAIirAQKF1JlbGVhc2VXaWtpU3BhY2VSZXF1ZXN0EgoKAmlkGAEgASgDEgwKBG5hbWUYAiABKAkSDgoGZGV0YWlsGAMgASgJEjYKEHNwYWNlX2NvdmVyX2luZm8YBCABKAsyHC5haV9rbm93bGVkZ2UuU3BhY2VDb3ZlckluZm8SEgoKY3JlYXRlX3VpZBgFIAEoAxIYChBjcmVhdGVfdGVuYW50X2lkGAYgASgDEjsKE2FpX2tub19wYXltZW50X3R5cGUYCiABKA4yHi5haV9rbm93bGVkZ2UuQUlLbm9QYXltZW50VHlwZRIdChVhaV9rbm9fcGF5bWVudF9hbW91bnQYCyABKAMSFwoPc3ViX21lcmNoYW50X2lkGAwgASgJElMKIGFpX2tub193aWtpX3ZhbGlkaXR5X3BlcmlvZF90eXBlGA0gASgOMikuYWlfa25vd2xlZGdlLkFJS25vV2lraVZhbGlkaXR5UGVyaW9kVHlwZRI4CgxzdWdnZXN0X2luZm8YMiADKAsyIi5haV9rbm93bGVkZ2UuV2lraVNwYWNlU3VnZ2VzdEluZm8SPQoPc3VnZ2VzdF9pbmZvX3YyGDMgASgLMiQuYWlfa25vd2xlZGdlLldpa2lTcGFjZVN1Z2dlc3RJbmZvVjISPgoPcGVybWlzc2lvbl9pbmZvGGQgASgLMiUuYWlfa25vd2xlZGdlLldpa2lTcGFjZVBlcm1pc3Npb25JbmZvIhoKGFJlbGVhc2VXaWtpU3BhY2VSZXNwb25zZSKfBAoWQ3JlYXRlV2lraVNwYWNlUmVxdWVzdBIMCgRuYW1lGAEgASgJEg4KBmRldGFpbBgCIAEoCRI2ChBzcGFjZV9jb3Zlcl9pbmZvGAMgASgLMhwuYWlfa25vd2xlZGdlLlNwYWNlQ292ZXJJbmZvEhIKCmNyZWF0ZV91aWQYBCABKAMSGAoQY3JlYXRlX3RlbmFudF9pZBgFIAEoAxI7ChNhaV9rbm9fcGF5bWVudF90eXBlGAogASgOMh4uYWlfa25vd2xlZGdlLkFJS25vUGF5bWVudFR5cGUSHQoVYWlfa25vX3BheW1lbnRfYW1vdW50GAsgASgDEhcKD3N1Yl9tZXJjaGFudF9pZBgMIAEoCRJTCiBhaV9rbm9fd2lraV92YWxpZGl0eV9wZXJpb2RfdHlwZRgNIAEoDjIpLmFpX2tub3dsZWRnZS5BSUtub1dpa2lWYWxpZGl0eVBlcmlvZFR5cGUSOAoMc3VnZ2VzdF9pbmZvGDIgAygLMiIuYWlfa25vd2xlZGdlLldpa2lTcGFjZVN1Z2dlc3RJbmZvEj0KD3N1Z2dlc3RfaW5mb192MhgzIAEoCzIkLmFpX2tub3dsZWRnZS5XaWtpU3BhY2VTdWdnZXN0SW5mb1YyEj4KD3Blcm1pc3Npb25faW5mbxhkIAEoCzIlLmFpX2tub3dsZWRnZS5XaWtpU3BhY2VQZXJtaXNzaW9uSW5mbyIlChdDcmVhdGVXaWtpU3BhY2VSZXNwb25zZRIKCgJpZBgBIAEoAyKzBQoWVXBkYXRlV2lraVNwYWNlUmVxdWVzdBIKCgJpZBgBIAEoAxIMCgRuYW1lGAIgASgJEg4KBmRldGFpbBgDIAEoCRI2ChBzcGFjZV9jb3Zlcl9pbmZvGAQgASgLMhwuYWlfa25vd2xlZGdlLlNwYWNlQ292ZXJJbmZvEhIKCmNyZWF0ZV91aWQYBSABKAMSGAoQY3JlYXRlX3RlbmFudF9pZBgGIAEoAxI7ChNhaV9rbm9fcGF5bWVudF90eXBlGAogASgOMh4uYWlfa25vd2xlZGdlLkFJS25vUGF5bWVudFR5cGUSHQoVYWlfa25vX3BheW1lbnRfYW1vdW50GAsgASgDEhcKD3N1Yl9tZXJjaGFudF9pZBgMIAEoCRJTCiBhaV9rbm9fd2lraV92YWxpZGl0eV9wZXJpb2RfdHlwZRgNIAEoDjIpLmFpX2tub3dsZWRnZS5BSUtub1dpa2lWYWxpZGl0eVBlcmlvZFR5cGUSOAoMc3VnZ2VzdF9pbmZvGDIgAygLMiIuYWlfa25vd2xlZGdlLldpa2lTcGFjZVN1Z2dlc3RJbmZvEj0KD3N1Z2dlc3RfaW5mb192MhgzIAEoCzIkLmFpX2tub3dsZWRnZS5XaWtpU3BhY2VTdWdnZXN0SW5mb1YyEkgKDXVwZGF0ZV9maWVsZHMYZCADKA4yMS5haV9rbm93bGVkZ2UuVXBkYXRlV2lraVNwYWNlUmVxdWVzdC5VcGRhdGVGaWVsZHMifAoMVXBkYXRlRmllbGRzEgsKB1VOS05PV04QABIICgROQU1FEAESCgoGREVUQUlMEAISFAoQU1BBQ0VfQ09WRVJfSU5GTxADEhAKDFNVR0dFU1RfSU5GTxAEEg8KC0NSRUFURV9JTkZPEAUSEAoMUEFZTUVOVF9UWVBFEAYiGQoXVXBkYXRlV2lraVNwYWNlUmVzcG9uc2UieQogVXBkYXRlV2lraVNwYWNlUGVybWlzc2lvblJlcXVlc3QSFQoNd2lraV9zcGFjZV9pZBgBIAEoAxI+Cg9wZXJtaXNzaW9uX2luZm8YAiABKAsyJS5haV9rbm93bGVkZ2UuV2lraVNwYWNlUGVybWlzc2lvbkluZm8iIwohVXBkYXRlV2lraVNwYWNlUGVybWlzc2lvblJlc3BvbnNlIsEBChxQdWxsV2lraVNwYWNlRGV0YWlsVjJSZXF1ZXN0EhUKDXdpa2lfc3BhY2VfaWQYASABKAMSSAoKc2NlbmVfdHlwZRgCIAEoDjI0LmFpX2tub3dsZWRnZS5QdWxsV2lraVNwYWNlRGV0YWlsVjJSZXF1ZXN0LlNjZW5lVHlwZSJACglTY2VuZVR5cGUSCwoHVU5LTk9XThAAEhMKD1BSRVBBUkVfUkVMRUFTRRABEhEKDVdJS0lfQlVJTFRfSU4QAiLIAgodUHVsbFdpa2lTcGFjZURldGFpbFYyUmVzcG9uc2USKwoKc3BhY2VfaW5mbxgBIAEoCzIXLmFpX2tub3dsZWRnZS5TcGFjZUluZm8SSwoLbWVtYmVyX3R5cGUYAiABKA4yNi5haV9rbm93bGVkZ2UuUHVsbFdpa2lTcGFjZURldGFpbFYyUmVzcG9uc2UuTWVtYmVyVHlwZRIrCgp1c2FnZV9pbmZvGAMgASgLMhcuYWlfa25vd2xlZGdlLlVzYWdlSW5mbxJBChZ1c2VyX3dpa2lfYmVuZWZpdF90eXBlGAQgASgOMiEuYWlfa25vd2xlZGdlLlVzZXJXaWtpQmVuZWZpdFR5cGUiPQoKTWVtYmVyVHlwZRILCgdVTktOT1dOEAASCQoFQURNSU4QARIKCgZNRU1CRVIQAhILCgdVTl9KT0lOEAMinAEKCVVzYWdlSW5mbxITCgt1c2FnZV9xdW90YRgBIAEoAxIcChR1c2FnZV9jb25zdW1lZF9jb3VudBgCIAEoAxIdChVyZW1haW5pbmdfdHJpYWxfY291bnQYAyABKAMSHwoXbmVlZF9pbnRlcmNlcHRfdHJpYWxfcWEYBCABKAgSHAoUdG90YWxfY29uc3VtZWRfY291bnQYBSABKAMiQAoPVGh1bWJuYWlsT3B0aW9uEg0KBXdpZHRoGAEgASgDEg4KBmhlaWdodBgCIAEoAxIOCgZwb2xpY3kYAyABKAMilQEKHFB1bGxXaWtpU3BhY2VGaWxlTGlzdFJlcXVlc3QSFQoNd2lraV9zcGFjZV9pZBgBIAEoAxIRCglwYWdlX3NpemUYAiABKAMSEgoKcGFnZV90b2tlbhgDIAEoCRI3ChB0aHVtYm5haWxfb3B0aW9uGAQgASgLMh0uYWlfa25vd2xlZGdlLlRodW1ibmFpbE9wdGlvbiJ1Ch1QdWxsV2lraVNwYWNlRmlsZUxpc3RSZXNwb25zZRIpCglub2RlX2xpc3QYASADKAsyFi5haV9rbm93bGVkZ2UuTm9kZUluZm8SEAoIaGFzX21vcmUYAiABKAgSFwoPbmV4dF9wYWdlX3Rva2VuGAMgASgJIiYKJFB1bGxXaWtpU3BhY2VDcmVhdGVQZXJtaXNzaW9uUmVxdWVzdCI/CiVQdWxsV2lraVNwYWNlQ3JlYXRlUGVybWlzc2lvblJlc3BvbnNlEhYKDmhhc19wZXJtaXNzaW9uGAEgASgIIkkKFEpvaW5XaWtpU3BhY2VSZXF1ZXN0EhUKDXdpa2lfc3BhY2VfaWQYASABKAMSGgoSd2lraV9kaXNjb3VudF9jb2RlGAIgASgJIhcKFUpvaW5XaWtpU3BhY2VSZXNwb25zZSItChRRdWl0V2lraVNwYWNlUmVxdWVzdBIVCg13aWtpX3NwYWNlX2lkGAEgASgDIhcKFVF1aXRXaWtpU3BhY2VSZXNwb25zZSIvChZEZWxldGVXaWtpU3BhY2VSZXF1ZXN0EhUKDXdpa2lfc3BhY2VfaWQYASABKAMiGQoXRGVsZXRlV2lraVNwYWNlUmVzcG9uc2UiTQoeUHVsbE1hbmFnZVdpa2lTcGFjZUxpc3RSZXF1ZXN0EhEKCXBhZ2Vfc2l6ZRgBIAEoAxIYChBvZmZzZXRfdGltZXN0YW1wGAIgASgDIqACCh9QdWxsTWFuYWdlV2lraVNwYWNlTGlzdFJlc3BvbnNlEisKCnNwYWNlX2xpc3QYASADKAsyFy5haV9rbm93bGVkZ2UuU3BhY2VJbmZvEhAKCGhhc19tb3JlGAIgASgIEh0KFW5leHRfb2Zmc2V0X3RpbWVzdGFtcBgDIAEoAxJkChVzcGFjZV91cGRhdGVfdGltZV9tYXAYBCADKAsyRS5haV9rbm93bGVkZ2UuUHVsbE1hbmFnZVdpa2lTcGFjZUxpc3RSZXNwb25zZS5TcGFjZVVwZGF0ZVRpbWVNYXBFbnRyeRo5ChdTcGFjZVVwZGF0ZVRpbWVNYXBFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAM6AjgBIk0KHlB1bGxKb2luZWRXaWtpU3BhY2VMaXN0UmVxdWVzdBIRCglwYWdlX3NpemUYASABKAMSGAoQb2Zmc2V0X3RpbWVzdGFtcBgCIAEoAyKgAgofUHVsbEpvaW5lZFdpa2lTcGFjZUxpc3RSZXNwb25zZRIrCgpzcGFjZV9saXN0GAEgAygLMhcuYWlfa25vd2xlZGdlLlNwYWNlSW5mbxIQCghoYXNfbW9yZRgCIAEoCBIdChVuZXh0X29mZnNldF90aW1lc3RhbXAYAyABKAMSZAoVc3BhY2VfdXBkYXRlX3RpbWVfbWFwGAQgAygLMkUuYWlfa25vd2xlZGdlLlB1bGxKb2luZWRXaWtpU3BhY2VMaXN0UmVzcG9uc2UuU3BhY2VVcGRhdGVUaW1lTWFwRW50cnkaOQoXU3BhY2VVcGRhdGVUaW1lTWFwRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgDOgI4ASKOAQoMSTE4Tk5hbWVUZXh0Eg0KBXZhbHVlGAEgASgJEj0KCmkxOG5fdmFsdWUYAiADKAsyKS5haV9rbm93bGVkZ2UuSTE4Tk5hbWVUZXh0LkkxOG5WYWx1ZUVudHJ5GjAKDkkxOG5WYWx1ZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEizwEKFFdpa2lDb2xsYWJvcmF0b3JJbmZvEhEKCW1lbWJlcl9pZBgBIAEoAxIvCgttZW1iZXJfbmFtZRgCIAEoCzIaLmFpX2tub3dsZWRnZS5JMThOTmFtZVRleHQSNwoTbWVtYmVyX2Rpc3BsYXlfbmFtZRgDIAEoCzIaLmFpX2tub3dsZWRnZS5JMThOTmFtZVRleHQSEgoKYXZhdGFyX3VybBgEIAEoCRITCgtkZXNjcmlwdGlvbhgFIAEoCRIRCgl0ZW5hbnRfaWQYBiABKAMiaAoOV2lraVRlbmFudEluZm8SEQoJdGVuYW50X2lkGAEgASgDEi8KC3RlbmFudF9uYW1lGAIgASgLMhouYWlfa25vd2xlZGdlLkkxOE5OYW1lVGV4dBISCgphdmF0YXJfa2V5GAMgASgJIjYKHVB1bGxNYW5hZ2VyQW5kVGVuYW50SURSZXF1ZXN0EhUKDXdpa2lfc3BhY2VfaWQYASABKAMinAEKHlB1bGxNYW5hZ2VyQW5kVGVuYW50SURSZXNwb25zZRJCChZ3aWtpX2NvbGxhYm9yYXRvcl9pbmZvGAEgAygLMiIuYWlfa25vd2xlZGdlLldpa2lDb2xsYWJvcmF0b3JJbmZvEjYKEHdpa2lfdGVuYW50X2luZm8YAiABKAsyHC5haV9rbm93bGVkZ2UuV2lraVRlbmFudEluZm8iswEKGEdlbldpa2lTaGFyZUltYWdlUmVxdWVzdBIVCg13aWtpX3NwYWNlX2lkGAEgASgDEg0KBXRpdGxlGAIgASgJEhMKC2NvdmVyX2ltYWdlGAMgASgJEgsKA3VybBgEIAEoCRILCgN0aXAYBSABKAkSFwoPbGFya19tYWluX3RpdGxlGAYgASgJEhUKDWxhcmtfc3VidGl0bGUYByABKAkSEgoKaW1hZ2Vfc2l6ZRgIIAEoCSIxChlHZW5XaWtpU2hhcmVJbWFnZVJlc3BvbnNlEhQKDGltYWdlX2Jhc2U2NBgBIAEoCSLQAwoRUHVzaFdpa2lTcGFjZUluZm8SKwoKc3BhY2VfaW5mbxgBIAEoCzIXLmFpX2tub3dsZWRnZS5TcGFjZUluZm8SPwoLbWVtYmVyX3R5cGUYAiABKA4yKi5haV9rbm93bGVkZ2UuUHVzaFdpa2lTcGFjZUluZm8uTWVtYmVyVHlwZRI/CgtjaGFuZ2VfdHlwZRgDIAEoDjIqLmFpX2tub3dsZWRnZS5QdXNoV2lraVNwYWNlSW5mby5DaGFuZ2VUeXBlEhMKC3VwZGF0ZV90aW1lGAQgASgDEjwKEXVzZXJfYmVuZWZpdF90eXBlGAUgASgOMiEuYWlfa25vd2xlZGdlLlVzZXJXaWtpQmVuZWZpdFR5cGUiPQoKTWVtYmVyVHlwZRILCgdVTktOT1dOEAASCQoFQURNSU4QARIKCgZNRU1CRVIQAhILCgdVTl9KT0lOEAMiegoKQ2hhbmdlVHlwZRIVChFVUERBVEVfV0lLSV9TUEFDRRAAEhMKD0pPSU5fV0lLSV9TUEFDRRABEhMKD1FVSVRfV0lLSV9TUEFDRRACEhQKEFVQREFURV9OT0RFX0lORk8QAxIVChFERUxFVEVfV0lLSV9TUEFDRRAEItUCCgxEaXNjb3VudENvZGUSCgoCaWQYASABKAMSDAoEY29kZRgCIAEoCRIvCgVzdGF0ZRgDIAEoDjIgLmFpX2tub3dsZWRnZS5EaXNjb3VudENvZGUuU3RhdGUSFgoOY3JlYXRlX3RpbWVfbXMYBCABKAMSFgoOdXBkYXRlX3RpbWVfbXMYBSABKAMSEgoKY3JlYXRvcl9pZBgGIAEoAxIVCg13aWtpX3NwYWNlX2lkGAcgASgDEhYKDndpa2lfdGVuYW50X2lkGAggASgDEg8KB3VzZXJfaWQYCSABKAMSFgoOdXNlcl90ZW5hbnRfaWQYCiABKAMSFQoNZGlzY291bnRfcmF0ZRgLIAEoBRIoCgR0eXBlGAwgASgOMhouYWlfa25vd2xlZGdlLkRpc2NvdW50VHlwZSIdCgVTdGF0ZRIKCgZVbnVzZWQQABIICgRVc2VkEAEikgEKGkNyZWF0ZURpc2NvdW50Q29kZXNSZXF1ZXN0Eg8KB2dlbl9jbnQYASABKAUSFQoNZGlzY291bnRfcmF0ZRgCIAEoBRIVCg13aWtpX3NwYWNlX2lkGAMgASgDEgsKA2NpZBgEIAEoCRIoCgR0eXBlGAUgASgOMhouYWlfa25vd2xlZGdlLkRpc2NvdW50VHlwZSIzChtDcmVhdGVEaXNjb3VudENvZGVzUmVzcG9uc2USFAoMbmV3X2NvZGVfY250GAEgASgFIm4KGENoZWNrRGlzY291bnRDb2RlUmVxdWVzdBIMCgRjb2RlGAEgASgJEhUKDXdpa2lfc3BhY2VfaWQYAiABKAMSLQoJY29kZV90eXBlGAMgASgOMhouYWlfa25vd2xlZGdlLkRpc2NvdW50VHlwZSJOChlDaGVja0Rpc2NvdW50Q29kZVJlc3BvbnNlEjEKDWRpc2NvdW50X2NvZGUYASABKAsyGi5haV9rbm93bGVkZ2UuRGlzY291bnRDb2RlIu0BChxQdWxsRGlzY291bnRDb2Rlc0luZm9SZXF1ZXN0EhUKDXdpa2lfc3BhY2VfaWQYASABKAMSEAoIcGFnZV9udW0YAiABKAUSEQoJcGFnZV9zaXplGAMgASgFEhEKCW9mZnNldF9pZBgEIAEoAxI4Cg5yZXF1aXJlX3N0YXRlcxgFIAMoDjIgLmFpX2tub3dsZWRnZS5EaXNjb3VudENvZGUuU3RhdGUSGgoSc2VsZWN0X2J5X3BhZ2VfbnVtGAYgASgIEigKBHR5cGUYByABKA4yGi5haV9rbm93bGVkZ2UuRGlzY291bnRUeXBlInoKHVB1bGxEaXNjb3VudENvZGVzSW5mb1Jlc3BvbnNlEhMKC3RvdGFsX2NvdW50GAEgASgDEhAKCGhhc19tb3JlGAIgASgIEjIKDmRpc2NvdW50X2NvZGVzGAMgAygLMhouYWlfa25vd2xlZGdlLkRpc2NvdW50Q29kZSIyChlQdWxsT25lV2lraU1hbmFnZXJSZXF1ZXN0EhUKDXdpa2lfc3BhY2VfaWQYASABKAMiYAoaUHVsbE9uZVdpa2lNYW5hZ2VyUmVzcG9uc2USQgoWd2lraV9jb2xsYWJvcmF0b3JfaW5mbxgBIAEoCzIiLmFpX2tub3dsZWRnZS5XaWtpQ29sbGFib3JhdG9ySW5mbyJPChpQdXNoRGlzY291bnRDb2RlQ2hhbmdlSW5mbxIxCg1kaXNjb3VudF9jb2RlGAEgASgLMhouYWlfa25vd2xlZGdlLkRpc2NvdW50Q29kZSJsChFQdXNoV2lraVVzYWdlSW5mbxIVCg13aWtpX3NwYWNlX2lkGAEgASgDEisKCnVzYWdlX2luZm8YAiABKAsyFy5haV9rbm93bGVkZ2UuVXNhZ2VJbmZvEhMKC3VwZGF0ZV90aW1lGAMgASgDImAKHUV4cG9ydFdpa2lEaXNjb3VudENvZGVSZXF1ZXN0EhUKDXdpa2lfc3BhY2VfaWQYASABKAMSKAoEdHlwZRgCIAEoDjIaLmFpX2tub3dsZWRnZS5EaXNjb3VudFR5cGUiMgoeRXhwb3J0V2lraURpc2NvdW50Q29kZVJlc3BvbnNlEhAKCGZpbGVfdXJsGAEgASgJItIBChZDcmVhdGVXaWtpT3JkZXJSZXF1ZXN0EhUKDXdpa2lfc3BhY2VfaWQYASABKAMSFgoOd2lraV90ZW5hbnRfaWQYAiABKAMSFQoNZGlzY291bnRfY29kZRgDIAEoCRIUCgx0b3RhbF9hbW91bnQYBCABKAMSEwoLYWlfdG9waWNfaWQYBSABKAMSRwoUdmFsaWRpdHlfcGVyaW9kX3R5cGUYBiABKA4yKS5haV9rbm93bGVkZ2UuQUlLbm9XaWtpVmFsaWRpdHlQZXJpb2RUeXBlIkMKF0NyZWF0ZVdpa2lPcmRlclJlc3BvbnNlEhAKCHBheV9kYXRhGAEgASgJEhYKDmlzX25vX25lZWRfcGF5GAIgASgIIioKFkFwcGx5V2lraVJlZnVuZFJlcXVlc3QSEAoIb3JkZXJfaWQYASABKAMiGQoXQXBwbHlXaWtpUmVmdW5kUmVzcG9uc2UiKwoXQ2FuY2VsV2lraVJlZnVuZFJlcXVlc3QSEAoIb3JkZXJfaWQYASABKAMiGgoYQ2FuY2VsV2lraVJlZnVuZFJlc3BvbnNlIiwKGEFwcHJvdmVXaWtpUmVmdW5kUmVxdWVzdBIQCghvcmRlcl9pZBgBIAEoAyIbChlBcHByb3ZlV2lraVJlZnVuZFJlc3BvbnNlIlAKJFF1ZXJ5QUlXaWtpUmVmdW5kT3JkZXJTdW1tYXJ5UmVxdWVzdBIVCg13aWtpX3NwYWNlX2lkGAEgASgDEhEKCXRlbmFudF9pZBgCIAEoAyJRCiVRdWVyeUFJV2lraVJlZnVuZE9yZGVyU3VtbWFyeVJlc3BvbnNlEhQKDHJlZnVuZF9jb3VudBgBIAEoBRISCgphbGxfYW1vdW50GAIgASgDIkUKGUFwcGx5V2lraUFsbFJlZnVuZFJlcXVlc3QSFQoNd2lraV9zcGFjZV9pZBgBIAEoAxIRCgl0ZW5hbnRfaWQYAiABKAMiHAoaQXBwbHlXaWtpQWxsUmVmdW5kUmVzcG9uc2UizgEKHlB1bGxXaWtpT3JkZXJMaXN0QnlQYWdlUmVxdWVzdBIxCgRyb2xlGAEgASgOMiMuYWlfa25vd2xlZGdlLlB1bGxXaWtpT3JkZXJMaXN0Um9sZRIWCg53aWtpX3NwYWNlX2lkcxgCIAMoAxIsCgZzdGF0ZXMYAyADKA4yHC5haV9rbm93bGVkZ2UuV2lraU9yZGVyU3RhdGUSDgoGaXNfYXNjGAQgASgIEhAKCHBhZ2VfbnVtGAUgASgFEhEKCXBhZ2Vfc2l6ZRgGIAEoBSKdAQofUHVsbFdpa2lPcmRlckxpc3RCeVBhZ2VSZXNwb25zZRIyCgZvcmRlcnMYASADKAsyIi5haV9rbm93bGVkZ2UuV2lraVBheW1lbnRPcmRlckluZm8SEwoLdG90YWxfY291bnQYAiABKAMSFgoOcmV2ZW51ZV9hbW91bnQYAyABKAMSGQoRcXVlcnlfb3JkZXJfY291bnQYBCABKAMi3QEKIFB1bGxXaWtpT3JkZXJMaXN0QnlPZmZzZXRSZXF1ZXN0EjEKBHJvbGUYASABKA4yIy5haV9rbm93bGVkZ2UuUHVsbFdpa2lPcmRlckxpc3RSb2xlEhYKDndpa2lfc3BhY2VfaWRzGAIgAygDEiwKBnN0YXRlcxgDIAMoDjIcLmFpX2tub3dsZWRnZS5XaWtpT3JkZXJTdGF0ZRIOCgZpc19hc2MYBCABKAgSDQoFbGltaXQYBiABKAUSFQoNY3JlYXRlZF9hdF9tcxgHIAEoAxIKCgJpZBgIIAEoAyLNAQohUHVsbFdpa2lPcmRlckxpc3RCeU9mZnNldFJlc3BvbnNlEjIKBm9yZGVycxgBIAMoCzIiLmFpX2tub3dsZWRnZS5XaWtpUGF5bWVudE9yZGVySW5mbxITCgt0b3RhbF9jb3VudBgCIAEoAxIWCg5yZXZlbnVlX2Ftb3VudBgDIAEoAxIQCghoYXNfbW9yZRgEIAEoCBIfChdlbmRfb3JkZXJfY3JlYXRlZF9hdF9tcxgFIAEoAxIUCgxlbmRfb3JkZXJfaWQYBiABKAMiWAoRV2lraU9yZGVyVXNlckluZm8SDwoHdXNlcl9pZBgBIAEoAxIRCgl0ZW5hbnRfaWQYAiABKAMSDAoEbmFtZRgDIAEoCRIRCglpbWFnZV9rZXkYBCABKAkikAMKFFdpa2lQYXltZW50T3JkZXJJbmZvEhAKCG9yZGVyX2lkGAEgASgJEhUKDXdpa2lfc3BhY2VfaWQYAiABKAMSFwoPd2lraV9zcGFjZV9uYW1lGAMgASgJEisKBXN0YXRlGAQgASgOMhwuYWlfa25vd2xlZGdlLldpa2lPcmRlclN0YXRlEhIKCnBheV9hbW91bnQYBSABKAMSFQoNY3JlYXRlZF9hdF9tcxgGIAEoAxISCgpwYWlkX2F0X21zGAcgASgDEhQKDHJlZnVuZF9hdF9tcxgIIAEoAxIRCglleHBpcmVfbXMYCSABKAMSNgoQc3BhY2VfY292ZXJfaW5mbxgKIAEoCzIcLmFpX2tub3dsZWRnZS5TcGFjZUNvdmVySW5mbxIzCgpidXllcl9pbmZvGGUgASgLMh8uYWlfa25vd2xlZGdlLldpa2lPcmRlclVzZXJJbmZvEjQKC3NlbGxlcl9pbmZvGGYgASgLMh8uYWlfa25vd2xlZGdlLldpa2lPcmRlclVzZXJJbmZvIksKEVB1c2hXaWtpT3JkZXJJbmZvEjYKCm9yZGVyX2luZm8YASABKAsyIi5haV9rbm93bGVkZ2UuV2lraVBheW1lbnRPcmRlckluZm8iIAoeUHVsbFN1Yk1lcmNoYW50SW5mb0xpc3RSZXF1ZXN0IkUKD1N1Yk1lcmNoYW50SW5mbxIXCg9zdWJfbWVyY2hhbnRfaWQYASABKAkSGQoRc3ViX21lcmNoYW50X25hbWUYAiABKAkiXAofUHVsbFN1Yk1lcmNoYW50SW5mb0xpc3RSZXNwb25zZRI5ChJzdWJfbWVyY2hhbnRfaW5mb3MYASADKAsyHS5haV9rbm93bGVkZ2UuU3ViTWVyY2hhbnRJbmZvIiMKIUFwcGx5U3ViTWVyY2hhbnRPbmJvYXJkaW5nUmVxdWVzdCI8CiJBcHBseVN1Yk1lcmNoYW50T25ib2FyZGluZ1Jlc3BvbnNlEhYKDm9uYm9hcmRpbmdfdXJsGAEgASgJIjUKGkZldGNoV2lraUFjY291bnRVUkxSZXF1ZXN0EhcKD3N1Yl9tZXJjaGFudF9pZBgBIAEoCSIqChtGZXRjaFdpa2lBY2NvdW50VVJMUmVzcG9uc2USCwoDdXJsGAEgASgJIloKJVB1bGxVc2VySG9uZ0Jhb0luY2VudGl2ZVN0YXR1c1JlcXVlc3QSMQoNdHJpZ2dlcl9zY2VuZRgBIAEoDjIaLmFpX2tub3dsZWRnZS5UcmlnZ2VyU2NlbmUiSwomUHVsbFVzZXJIb25nQmFvSW5jZW50aXZlU3RhdHVzUmVzcG9uc2USDAoEc2hvdxgBIAEoCBITCgtpc19uZXdfdXNlchgCIAEoCCIlCiNQdXNoVXNlckhvbmdCYW9JbmNlbnRpdmVRQUNvbXBsZXRlZCIhCh9SZWNvcmRBY3R1YWxFeHBvc3VyZURheXNSZXF1ZXN0IiIKIFJlY29yZEFjdHVhbEV4cG9zdXJlRGF5c1Jlc3BvbnNlInQKFVRyeVNlbmRIb25nYmFvUmVxdWVzdBITCgthaV90b3BpY19pZBgBIAEoAxITCgthaV9yb3VuZF9pZBgCIAEoAxIxCg10cmlnZ2VyX3NjZW5lGAMgASgOMhouYWlfa25vd2xlZGdlLlRyaWdnZXJTY2VuZSJnChZUcnlTZW5kSG9uZ2Jhb1Jlc3BvbnNlEjMKDmhvbmdiYW9fc3RhdHVzGAEgASgOMhsuYWlfa25vd2xlZGdlLkhvbmdiYW9TdGF0dXMSGAoQdG9hc3RfY29weXdyaXRlchgCIAEoCSI2CiBQdXRUZW5hbnRBSUV4cGVyaWVuY2VQbGFuUmVxdWVzdBISCgphdXRob3JpemVkGAEgASgIIiMKIVB1dFRlbmFudEFJRXhwZXJpZW5jZVBsYW5SZXNwb25zZSI0Ch5QdXRVc2VyQUlFeHBlcmllbmNlUGxhblJlcXVlc3QSEgoKYXV0aG9yaXplZBgBIAEoCCIhCh9QdXRVc2VyQUlFeHBlcmllbmNlUGxhblJlc3BvbnNlInAKGEFJRXhwZXJpZW5jZVBsYW5Vc2VySW5mbxI/ChRhdXRob3JpemF0aW9uX3N0YXR1cxgBIAEoDjIhLmFpX2tub3dsZWRnZS5BdXRob3JpemF0aW9uU3RhdHVzEhMKC3VwZGF0ZV90aW1lGAIgASgDInIKGkFJRXhwZXJpZW5jZVBsYW5UZW5hbnRJbmZvEj8KFGF1dGhvcml6YXRpb25fc3RhdHVzGAEgASgOMiEuYWlfa25vd2xlZGdlLkF1dGhvcml6YXRpb25TdGF0dXMSEwoLdXBkYXRlX3RpbWUYAiABKAMiIwohUHVsbEFJRXhwZXJpZW5jZVBsYW5TdGF0dXNSZXF1ZXN0IsQBCiJQdWxsQUlFeHBlcmllbmNlUGxhblN0YXR1c1Jlc3BvbnNlEkwKHGFpX2V4cGVyaWVuY2VfcGxhbl91c2VyX2luZm8YASABKAsyJi5haV9rbm93bGVkZ2UuQUlFeHBlcmllbmNlUGxhblVzZXJJbmZvElAKHmFpX2V4cGVyaWVuY2VfcGxhbl90ZW5hbnRfaW5mbxgCIAEoCzIoLmFpX2tub3dsZWRnZS5BSUV4cGVyaWVuY2VQbGFuVGVuYW50SW5mbyJqChpQdXNoQUlFeHBlcmllbmNlUGxhblN0YXR1cxJMChxhaV9leHBlcmllbmNlX3BsYW5fdXNlcl9pbmZvGAEgASgLMiYuYWlfa25vd2xlZGdlLkFJRXhwZXJpZW5jZVBsYW5Vc2VySW5mbyImCiRQdWxsQUlLbm93bGVkZ2VVc2FnZUNvdW50SW5mb1JlcXVlc3Qi5AEKJVB1bGxBSUtub3dsZWRnZVVzYWdlQ291bnRJbmZvUmVzcG9uc2USGAoQZGF0YV9jdXRvZmZfdGltZRgBIAEoCRITCgt1c2FnZV9jb3VudBgCIAEoBRIXCg9haV9wcm9kdWN0aXZpdHkYAyABKAISHQoVaG9yaXpvbnRhbF9jb21wYXJpc29uGAQgASgCEiYKHmFpX3Byb2R1Y3Rpdml0eV9oaWdoX3ByZWNpc2lvbhgFIAEoARIsCiRob3Jpem9udGFsX2NvbXBhcmlzb25faGlnaF9wcmVjaXNpb24YBiABKAEivgQKKlB1bGxBSVByb2R1Y3Rpdml0eVJlcG9ydFRlYW1EZXRhaWxzUmVxdWVzdBIMCgRkYXRlGAEgASgJEl8KDmRhdGFfZGltZW5zaW9uGAIgASgOMkcuYWlfa25vd2xlZGdlLlB1bGxBSVByb2R1Y3Rpdml0eVJlcG9ydFRlYW1EZXRhaWxzUmVxdWVzdC5EYXRhRGltZW5zaW9ucxJUCglzb3J0X3R5cGUYAyABKA4yQS5haV9rbm93bGVkZ2UuUHVsbEFJUHJvZHVjdGl2aXR5UmVwb3J0VGVhbURldGFpbHNSZXF1ZXN0LlNvcnRUeXBlEhMKC3N0YXJ0X2luZGV4GAQgASgFEhIKCnBhZ2VfY291bnQYBSABKAUiPAoORGF0YURpbWVuc2lvbnMSCwoHVU5LTk9XThAAEgwKCFNVQl9URUFNEAESDwoLRElSRUNUX1NVQlMQAiLjAQoIU29ydFR5cGUSFQoRU09SVF9UWVBFX1VOS05PV04QABIYChRBSV9QUk9EVUNUSVZJVFlfREVTQxABEhcKE0FJX1BST0RVQ1RJVklUWV9BU0MQAhIUChBVU0FHRV9DT1VOVF9ERVNDEAMSEwoPVVNBR0VfQ09VTlRfQVNDEAQSEwoPVElNRV9TQVZFRF9ERVNDEAUSEgoOVElNRV9TQVZFRF9BU0MQBhIcChhBSV9QRU5FVFJBVElPTl9SQVRFX0RFU0MQBxIbChdBSV9QRU5FVFJBVElPTl9SQVRFX0FTQxAIIoIECgtUZWFtRGV0YWlscxIPCgd1c2VyX2lkGAEgASgDEjoKCWkxOG5fbmFtZRgCIAMoCzInLmFpX2tub3dsZWRnZS5UZWFtRGV0YWlscy5JMThuTmFtZUVudHJ5EhEKCXVzZXJfbmFtZRgDIAEoCRISCgphdmF0YXJfa2V5GAQgASgJEiIKGmFpX3Byb2R1Y3Rpdml0eV9wZXJfY2FwaXRhGAUgASgBEjYKLmFpX3Byb2R1Y3Rpdml0eV9wZXJfY2FwaXRhX3ZlcnRpY2FsX2NvbXBhcmlzb24YBiABKAESHgoWdXNhZ2VfY291bnRfcGVyX2NhcGl0YRgHIAEoARIyCip1c2FnZV9jb3VudF9wZXJfY2FwaXRhX3ZlcnRpY2FsX2NvbXBhcmlzb24YCCABKAESHQoVcGVyX2NhcGl0YV90aW1lX3NhdmVkGAkgASgBEjEKKXBlcl9jYXBpdGFfdGltZV9zYXZlZF92ZXJ0aWNhbF9jb21wYXJpc29uGAogASgBEhsKE2FpX3BlbmV0cmF0aW9uX3JhdGUYCyABKAESLwonYWlfcGVuZXRyYXRpb25fcmF0ZV92ZXJ0aWNhbF9jb21wYXJpc29uGAwgASgBGi8KDUkxOG5OYW1lRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKFAQorUHVsbEFJUHJvZHVjdGl2aXR5UmVwb3J0VGVhbURldGFpbHNSZXNwb25zZRIvCgx0ZWFtX2RldGFpbHMYASADKAsyGS5haV9rbm93bGVkZ2UuVGVhbURldGFpbHMSEwoLdG90YWxfY291bnQYAiABKAUSEAoIaGFzX21vcmUYAyABKAgiLQorUHVsbEFJUHJvZHVjdGl2aXR5UmVwb3J0UGVyc29uYWxQYWdlUmVxdWVzdCK4AgoeUGVyc29uYWxDb3JlSW5kaWNhdG9yc092ZXJ2aWV3EhgKEGRhdGFfY3V0b2ZmX3RpbWUYASABKAkSFwoPYWlfcHJvZHVjdGl2aXR5GAIgASgBEh0KFWN1bXVsYXRpdmVfdGltZV9zYXZlZBgDIAEoARIeChZjdW11bGF0aXZlX3VzYWdlX2NvdW50GAQgASgFEmcKF2VhY2hfbW9kdWxlX3VzYWdlX2NvdW50GAUgAygLMkYuYWlfa25vd2xlZGdlLlBlcnNvbmFsQ29yZUluZGljYXRvcnNPdmVydmlldy5FYWNoTW9kdWxlVXNhZ2VDb3VudEVudHJ5GjsKGUVhY2hNb2R1bGVVc2FnZUNvdW50RW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ASKMAQoXWWVzdGVyZGF5VXNhZ2VQZXJNb2R1bGUSMgoOYWlfbW9kdWxlX3R5cGUYASABKA4yGi5haV9rbm93bGVkZ2UuQUlNb2R1bGVUeXBlEhMKC3VzYWdlX2NvdW50GAIgASgFEhIKCnRpbWVfc2F2ZWQYAyABKAESFAoMaXNfYWN0aXZhdGVkGAQgASgIIt8DChFZZXN0ZXJkYXlPdmVydmlldxITCgt1c2FnZV9jb3VudBgBIAEoBRIbChN2ZXJ0aWNhbF9jb21wYXJpc29uGAIgASgBEh0KFWhvcml6b250YWxfY29tcGFyaXNvbhgDIAEoARJLCg9yZWNvcmRfY250X2hvdXIYBCADKAsyMi5haV9rbm93bGVkZ2UuWWVzdGVyZGF5T3ZlcnZpZXcuUmVjb3JkQ250SG91ckVudHJ5ElYKFXRvdGFsX3JlY29yZF9jbnRfaG91chgFIAMoCzI3LmFpX2tub3dsZWRnZS5ZZXN0ZXJkYXlPdmVydmlldy5Ub3RhbFJlY29yZENudEhvdXJFbnRyeRJJChp5ZXN0ZXJkYXlfdXNhZ2VfcGVyX21vZHVsZRgGIAMoCzIlLmFpX2tub3dsZWRnZS5ZZXN0ZXJkYXlVc2FnZVBlck1vZHVsZRIYChBkYXRhX2N1dG9mZl90aW1lGAcgASgJGjQKElJlY29yZENudEhvdXJFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBGjkKF1RvdGFsUmVjb3JkQ250SG91ckVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoAjoCOAEiuwEKLFB1bGxBSVByb2R1Y3Rpdml0eVJlcG9ydFBlcnNvbmFsUGFnZVJlc3BvbnNlEk4KGGNvcmVfaW5kaWNhdG9yc19vdmVydmlldxgBIAEoCzIsLmFpX2tub3dsZWRnZS5QZXJzb25hbENvcmVJbmRpY2F0b3JzT3ZlcnZpZXcSOwoSeWVzdGVyZGF5X292ZXJ2aWV3GAIgASgLMh8uYWlfa25vd2xlZGdlLlllc3RlcmRheU92ZXJ2aWV3IkcKRVB1bGxBSVByb2R1Y3Rpdml0eVJlcG9ydENvbGxhYm9yYXRpb25FZmZpY2llbmN5SW1wcm92ZW1lbnRDYXNlUmVxdWVzdCK/AgomQ29sbGFib3JhdGlvbkVmZmljaWVuY3lJbXByb3ZlbWVudENhc2USCgoCaWQYASABKAkSMgoOYWlfbW9kdWxlX3R5cGUYAiABKA4yGi5haV9rbm93bGVkZ2UuQUlNb2R1bGVUeXBlEmAKD2kxOG5fdGl0bGVfdGV4dBgDIAMoCzJHLmFpX2tub3dsZWRnZS5Db2xsYWJvcmF0aW9uRWZmaWNpZW5jeUltcHJvdmVtZW50Q2FzZS5JMThuVGl0bGVUZXh0RW50cnkSFQoNcHJldmlld190aXRsZRgEIAEoCRIRCglqdW1wX2xpbmsYBSABKAkSEwoLYWlfdG9waWNfaWQYBiABKAkaNAoSSTE4blRpdGxlVGV4dEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiowEKRlB1bGxBSVByb2R1Y3Rpdml0eVJlcG9ydENvbGxhYm9yYXRpb25FZmZpY2llbmN5SW1wcm92ZW1lbnRDYXNlUmVzcG9uc2USWQobZWZmaWNpZW5jeV9pbXByb3ZlbWVudF9jYXNlGAEgAygLMjQuYWlfa25vd2xlZGdlLkNvbGxhYm9yYXRpb25FZmZpY2llbmN5SW1wcm92ZW1lbnRDYXNlIu8BCjtQdWxsQUlQcm9kdWN0aXZpdHlSZXBvcnRQZXJzb25hbFBhZ2VIaXN0b3JpY2FsUmV2aWV3UmVxdWVzdBJvCg52aWV3X2RpbWVuc2lvbhgBIAEoDjJXLmFpX2tub3dsZWRnZS5QdWxsQUlQcm9kdWN0aXZpdHlSZXBvcnRQZXJzb25hbFBhZ2VIaXN0b3JpY2FsUmV2aWV3UmVxdWVzdC5WaWV3RGltZW5zaW9uEgwKBGRhdGUYAiABKAkiMQoNVmlld0RpbWVuc2lvbhILCgdVTktOT1dOEAASCAoEV0VFSxABEgkKBU1PTlRIEAIi1wEKFUtleUluZGljYXRvcnNPdmVydmlldxIXCg9haV9wcm9kdWN0aXZpdHkYASABKAESKwojYWlfcHJvZHVjdGl2aXR5X3ZlcnRpY2FsX2NvbXBhcmlzb24YAiABKAESEwoLdXNhZ2VfY291bnQYAyABKAUSJwofdXNhZ2VfY291bnRfdmVydGljYWxfY29tcGFyaXNvbhgEIAEoARISCgp0aW1lX3NhdmVkGAUgASgBEiYKHnRpbWVfc2F2ZWRfdmVydGljYWxfY29tcGFyaXNvbhgGIAEoASLiBAoWRGFpbHlQZXJmb3JtYW5jZVJldmlldxIqCiJhaV9wcm9kdWN0aXZpdHlfZGVwYXJ0bWVudF9hdmVyYWdlGAEgASgBEioKImFpX3Byb2R1Y3Rpdml0eV9lbnRlcnByaXNlX2F2ZXJhZ2UYAiABKAESIwobYWlfcHJvZHVjdGl2aXR5X2FsbF9hdmVyYWdlGAMgASgBEm4KH2RhaWx5X2FpX3Byb2R1Y3Rpdml0eV9iYXJfY2hhcnQYBCADKAsyRS5haV9rbm93bGVkZ2UuRGFpbHlQZXJmb3JtYW5jZVJldmlldy5EYWlseUFpUHJvZHVjdGl2aXR5QmFyQ2hhcnRFbnRyeRImCh51c2FnZV9jb3VudF9kZXBhcnRtZW50X2F2ZXJhZ2UYBSABKAESJgoedXNhZ2VfY291bnRfZW50ZXJwcmlzZV9hdmVyYWdlGAYgASgBEh8KF3VzYWdlX2NvdW50X2FsbF9hdmVyYWdlGAcgASgBEmYKG2RhaWx5X3VzYWdlX2NvdW50X2Jhcl9jaGFydBgIIAMoCzJBLmFpX2tub3dsZWRnZS5EYWlseVBlcmZvcm1hbmNlUmV2aWV3LkRhaWx5VXNhZ2VDb3VudEJhckNoYXJ0RW50cnkaQgogRGFpbHlBaVByb2R1Y3Rpdml0eUJhckNoYXJ0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgCOgI4ARo+ChxEYWlseVVzYWdlQ291bnRCYXJDaGFydEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBToCOAEioAEKDE1vZHVsZVJldmlldxIyCg5haV9tb2R1bGVfdHlwZRgBIAEoDjIaLmFpX2tub3dsZWRnZS5BSU1vZHVsZVR5cGUSEwoLdXNhZ2VfY291bnQYAiABKAUSEgoKdGltZV9zYXZlZBgDIAEoARIdChVob3Jpem9udGFsX2NvbXBhcmlzb24YBCABKAESFAoMaXNfYWN0aXZhdGVkGAUgASgIIv8BCjxQdWxsQUlQcm9kdWN0aXZpdHlSZXBvcnRQZXJzb25hbFBhZ2VIaXN0b3JpY2FsUmV2aWV3UmVzcG9uc2USRAoXa2V5X2luZGljYXRvcnNfb3ZlcnZpZXcYASABKAsyIy5haV9rbm93bGVkZ2UuS2V5SW5kaWNhdG9yc092ZXJ2aWV3EkYKGGRhaWx5X3BlcmZvcm1hbmNlX3JldmlldxgCIAEoCzIkLmFpX2tub3dsZWRnZS5EYWlseVBlcmZvcm1hbmNlUmV2aWV3EjEKDW1vZHVsZV9yZXZpZXcYAyADKAsyGi5haV9rbm93bGVkZ2UuTW9kdWxlUmV2aWV3IjcKJ1B1bGxBSVByb2R1Y3Rpdml0eVJlcG9ydFRlYW1QYWdlUmVxdWVzdBIMCgRkYXRlGAEgASgJIrQEChpUZWFtQ29yZUluZGljYXRvcnNPdmVydmlldxIcChR0ZWFtX2FpX3Byb2R1Y3Rpdml0eRgBIAEoAhJbChVhaV9wcm9kdWN0aXZpdHlfbGV2ZWwYAiABKA4yPC5haV9rbm93bGVkZ2UuVGVhbUNvcmVJbmRpY2F0b3JzT3ZlcnZpZXcuQUlQcm9kdWN0aXZpdHlMZXZlbBInCh9haV9wcm9kdWN0aXZpdHlfcGVyX2NhcGl0YV9yYW5rGAMgASgJEioKImNvbXBhbnlfYWlfcHJvZHVjdGl2aXR5X3Blcl9jYXBpdGEYBCABKAESIgoaYWlfcHJvZHVjdGl2aXR5X3Blcl9jYXBpdGEYBSABKAESNgouYWlfcHJvZHVjdGl2aXR5X3Blcl9jYXBpdGFfdmVydGljYWxfY29tcGFyaXNvbhgGIAEoARIeChZ1c2FnZV9jb3VudF9wZXJfY2FwaXRhGAcgASgBEjIKKnVzYWdlX2NvdW50X3Blcl9jYXBpdGFfdmVydGljYWxfY29tcGFyaXNvbhgIIAEoARIbChNhaV9wZW5ldHJhdGlvbl9yYXRlGAkgASgBEi8KJ2FpX3BlbmV0cmF0aW9uX3JhdGVfdmVydGljYWxfY29tcGFyaXNvbhgKIAEoASJIChNBSVByb2R1Y3Rpdml0eUxldmVsEgsKB1VOS05PV04QABINCglFWENFTExFTlQQARIICgRHT09EEAISCwoHR0VORVJBTBADIosGCg5Nb2R1bGVPdmVydmlldxIyCg5haV9tb2R1bGVfdHlwZRgBIAEoDjIaLmFpX2tub3dsZWRnZS5BSU1vZHVsZVR5cGUSIgoacGVyX2NhcGl0YV91c2FnZV9mcmVxdWVuY3kYAiABKAESNgoucGVyX2NhcGl0YV91c2FnZV9mcmVxdWVuY3lfdmVydGljYWxfY29tcGFyaXNvbhgDIAEoARItCiVlbnRlcnByaXNlX3Blcl9jYXBpdGFfdXNhZ2VfZnJlcXVlbmN5GAQgASgBEiwKJHBlZXJfdGVhbV9wZXJfY2FwaXRhX3VzYWdlX2ZyZXF1ZW5jeRgFIAEoARIdChVwZXJfY2FwaXRhX3RpbWVfc2F2ZWQYBiABKAESMQopcGVyX2NhcGl0YV90aW1lX3NhdmVkX3ZlcnRpY2FsX2NvbXBhcmlzb24YByABKAESPAo0ZW50ZXJwcmlzZV9wZXJfY2FwaXRhX3RpbWVfc2F2ZWRfdmVydGljYWxfY29tcGFyaXNvbhgIIAEoARI7CjNwZWVyX3RlYW1fcGVyX2NhcGl0YV90aW1lX3NhdmVkX3ZlcnRpY2FsX2NvbXBhcmlzb24YCSABKAESSgoQZGFpbHlfdGltZV9zYXZlZBgKIAMoCzIwLmFpX2tub3dsZWRnZS5Nb2R1bGVPdmVydmlldy5EYWlseVRpbWVTYXZlZEVudHJ5EhsKE2FpX3BlbmV0cmF0aW9uX3JhdGUYCyABKAESLwonYWlfcGVuZXRyYXRpb25fcmF0ZV92ZXJ0aWNhbF9jb21wYXJpc29uGAwgASgBEjEKKWVudGVycHJpc2VfcGVyX2NhcGl0YV9haV9wZW5ldHJhdGlvbl9yYXRlGA0gASgBEiUKHXBlZXJfdGVhbV9haV9wZW5ldHJhdGlvbl9yYXRlGA4gASgBEhQKDGlzX2FjdGl2YXRlZBgPIAEoCBo1ChNEYWlseVRpbWVTYXZlZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAToCOAEizwEKEFRlYW1SYW5rTGlzdEluZm8SDwoHdXNlcl9pZBgBIAEoAxI/CglpMThuX25hbWUYAiADKAsyLC5haV9rbm93bGVkZ2UuVGVhbVJhbmtMaXN0SW5mby5JMThuTmFtZUVudHJ5EhEKCXVzZXJfbmFtZRgDIAEoCRISCgphdmF0YXJfa2V5GAQgASgJEhEKCW51bV92YWx1ZRgFIAEoARovCg1JMThuTmFtZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEihQEKDFRlYW1SYW5rTGlzdBI7ChNkaXJlY3Rfc3Vib3JkaW5hdGVzGAEgAygLMh4uYWlfa25vd2xlZGdlLlRlYW1SYW5rTGlzdEluZm8SOAoQc3Vib3JkaW5hdGVfdGVhbRgCIAMoCzIeLmFpX2tub3dsZWRnZS5UZWFtUmFua0xpc3RJbmZvIrECCihQdWxsQUlQcm9kdWN0aXZpdHlSZXBvcnRUZWFtUGFnZVJlc3BvbnNlEkoKGGNvcmVfaW5kaWNhdG9yc19vdmVydmlldxgBIAEoCzIoLmFpX2tub3dsZWRnZS5UZWFtQ29yZUluZGljYXRvcnNPdmVydmlldxI1Cg9tb2R1bGVfb3ZlcnZpZXcYAiADKAsyHC5haV9rbm93bGVkZ2UuTW9kdWxlT3ZlcnZpZXcSQgoedGVhbV9yYW5rX2xpc3RfYWlfcHJvZHVjdGl2aXR5GAMgASgLMhouYWlfa25vd2xlZGdlLlRlYW1SYW5rTGlzdBI+Chp0ZWFtX3JhbmtfbGlzdF90b3RhbF9jb3VudBgEIAEoCzIaLmFpX2tub3dsZWRnZS5UZWFtUmFua0xpc3QiQgoMVGFza0JpbmRJbmZvEhgKEGJpbmRfYWlfdG9waWNfaWQYASABKAMSGAoQYmluZF9haV9yb3VuZF9pZBgCIAEoAyKQAwoMU2NoZWR1bGVUYXNrEgoKAmlkGAEgASgDEg8KB3VzZXJfaWQYAiABKAMSEQoJdGFza19uYW1lGAMgASgJEhMKC2NyZWF0ZV90aW1lGAQgASgDEhMKC3VwZGF0ZV90aW1lGAUgASgDEjEKCXRhc2tfdHlwZRgGIAEoDjIeLmFpX2tub3dsZWRnZS5TY2hlZHVsZVRhc2tUeXBlEjAKBnN0YXR1cxgHIAEoDjIgLmFpX2tub3dsZWRnZS5TY2hlZHVsZVRhc2tTdGF0dXMSDQoFcnJ1bGUYCiABKAkSEgoKc3RhcnRfdGltZRgLIAEoAxIRCgl0aW1lX3pvbmUYDCABKAkSPQoHY29udGVudBgNIAEoCzIsLmFpX2tub3dsZWRnZS5Lbm93bGVkZ2VBSVNjaGVkdWxlVGFza0NvbnRlbnQSLQoJYmluZF9pbmZvGA4gASgLMhouYWlfa25vd2xlZGdlLlRhc2tCaW5kSW5mbxIdChVpc19ub19kaWZmX25vX3RyaWdnZXIYDyABKAginwEKHktub3dsZWRnZUFJU2NoZWR1bGVUYXNrQ29udGVudBIpCgVxdWVyeRgBIAEoCzIaLmFpX2tub3dsZWRnZS5RdWVyeUNvbnRlbnQSKAogcWFfYWlfdG9waWNfcmVxdWVzdF9pbmZvX2luaXRpYWwYAiABKAwSKAogcWFfYWlfdG9waWNfcmVxdWVzdF9pbmZvX3VwZGF0ZWQYAyABKAwi/QIKGUNyZWF0ZVNjaGVkdWxlVGFza1JlcXVlc3QSEQoJdGFza19uYW1lGAEgASgJEjEKCXRhc2tfdHlwZRgCIAEoDjIeLmFpX2tub3dsZWRnZS5TY2hlZHVsZVRhc2tUeXBlEg0KBXJydWxlGAQgASgJEhIKCnN0YXJ0X3RpbWUYBSABKAMSEQoJdGltZV96b25lGAYgASgJEj0KB2NvbnRlbnQYByABKAsyLC5haV9rbm93bGVkZ2UuS25vd2xlZGdlQUlTY2hlZHVsZVRhc2tDb250ZW50Eg8KB3Rhc2tfaWQYCCABKAMSLQoJYmluZF9pbmZvGAkgASgLMhouYWlfa25vd2xlZGdlLlRhc2tCaW5kSW5mbxIdChVpc19ub19kaWZmX25vX3RyaWdnZXIYCiABKAgSMAoGc3RhdHVzGAsgASgOMiAuYWlfa25vd2xlZGdlLlNjaGVkdWxlVGFza1N0YXR1cxIUCgxDcmVhdGVTb3VyY2UYDCABKAkilwEKGkNyZWF0ZVNjaGVkdWxlVGFza1Jlc3BvbnNlEigKBHRhc2sYASABKAsyGi5haV9rbm93bGVkZ2UuU2NoZWR1bGVUYXNrEjcKCmVycm9yX2luZm8YAiABKAsyIy5haV9rbm93bGVkZ2UuU2NoZWR1bGVUYXNrRXJyb3JJbmZvEhYKDm1heF90YXNrX2NvdW50GAMgASgFIkUKFVNjaGVkdWxlVGFza0Vycm9ySW5mbxISCgplcnJvcl9jb2RlGAEgASgDEhgKEHRhc2tfYWlfdG9waWNfaWQYAiABKAMi/wMKGVVwZGF0ZVNjaGVkdWxlVGFza1JlcXVlc3QSNQoCaWQYASABKANCKYrDGiVzcGxpdCx0eXBlPWFpX2tub3dsZWRnZV9zY2hlZHVsZV90YXNrEhEKCXRhc2tfbmFtZRgCIAEoCRIwCgZzdGF0dXMYAyABKA4yIC5haV9rbm93bGVkZ2UuU2NoZWR1bGVUYXNrU3RhdHVzEg0KBXJydWxlGAQgASgJEhIKCnN0YXJ0X3RpbWUYBSABKAMSEQoJdGltZV96b25lGAYgASgJEj0KB2NvbnRlbnQYByABKAsyLC5haV9rbm93bGVkZ2UuS25vd2xlZGdlQUlTY2hlZHVsZVRhc2tDb250ZW50Eh0KFWlzX25vX2RpZmZfbm9fdHJpZ2dlchgIIAEoCBJOCg11cGRhdGVfZmllbGRzGGQgAygOMjcuYWlfa25vd2xlZGdlLlVwZGF0ZVNjaGVkdWxlVGFza1JlcXVlc3QuVGFza1VwZGF0ZUZpZWxkIoEBCg9UYXNrVXBkYXRlRmllbGQSCwoHVU5LTk9XThAAEg0KCVRBU0tfTkFNRRABEgoKBlNUQVRVUxACEgkKBVJSVUxFEAMSDgoKU1RBUlRfVElNRRAEEg0KCVRJTUVfWk9ORRAFEgsKB0NPTlRFTlQQBhIPCgtESUZGX0NPTkZJRxAHIpcBChpVcGRhdGVTY2hlZHVsZVRhc2tSZXNwb25zZRIoCgR0YXNrGAEgASgLMhouYWlfa25vd2xlZGdlLlNjaGVkdWxlVGFzaxIWCg5tYXhfdGFza19jb3VudBgCIAEoBRI3CgplcnJvcl9pbmZvGAMgASgLMiMuYWlfa25vd2xlZGdlLlNjaGVkdWxlVGFza0Vycm9ySW5mbyJVChdTdG9wU2NoZWR1bGVUYXNrUmVxdWVzdBI6Cgd0YXNrX2lkGAEgASgDQimKwxolc3BsaXQsdHlwZT1haV9rbm93bGVkZ2Vfc2NoZWR1bGVfdGFzayIaChhTdG9wU2NoZWR1bGVUYXNrUmVzcG9uc2UiVgoXUHVsbFNjaGVkdWxlVGFza1JlcXVlc3QSOwoIdGFza19pZHMYASADKANCKYrDGiVzcGxpdCx0eXBlPWFpX2tub3dsZWRnZV9zY2hlZHVsZV90YXNrIkQKGFB1bGxTY2hlZHVsZVRhc2tSZXNwb25zZRIoCgR0YXNrGAEgAygLMhouYWlfa25vd2xlZGdlLlNjaGVkdWxlVGFzayJPCh9QdWxsU2NoZWR1bGVUYXNrVXNlckxpc3RSZXF1ZXN0EhIKCnBhZ2VfY291bnQYASABKAUSGAoQb2Zmc2V0X3RpbWVzdGFtcBgCIAEoAyJfCiBQdWxsU2NoZWR1bGVUYXNrVXNlckxpc3RSZXNwb25zZRIpCgV0YXNrcxgBIAMoCzIaLmFpX2tub3dsZWRnZS5TY2hlZHVsZVRhc2sSEAoIaGFzX21vcmUYAiABKAgiPAoQUHVzaFNjaGVkdWxlVGFzaxIoCgR0YXNrGAEgASgLMhouYWlfa25vd2xlZGdlLlNjaGVkdWxlVGFzayIeChxHZXRTY2hlZHVsZVRhc2tDb25maWdSZXF1ZXN0ImwKHUdldFNjaGVkdWxlVGFza0NvbmZpZ1Jlc3BvbnNlEhYKDm1heF90YXNrX2NvdW50GAEgASgFEhkKEWlzX2V4Y2VlZF9saW1pdGVkGAIgASgIEhgKEHRhc2tfYWlfdG9waWNfaWQYAyABKAMiVwoZRGVsZXRlU2NoZWR1bGVUYXNrUmVxdWVzdBI6Cgd0YXNrX2lkGAEgASgDQimKwxolc3BsaXQsdHlwZT1haV9rbm93bGVkZ2Vfc2NoZWR1bGVfdGFzayIcChpEZWxldGVTY2hlZHVsZVRhc2tSZXNwb25zZSIuCixQdWxsQUlQcm9kdWN0aXZpdHlSZXBvcnRUZWFtUGFnZVN0YXRlUmVxdWVzdCJGCi1QdWxsQUlQcm9kdWN0aXZpdHlSZXBvcnRUZWFtUGFnZVN0YXRlUmVzcG9uc2USFQoNdXNlcl9oYXNfdGVhbRgBIAEoCCLiFwoiQUlQcm9kdWN0aXZpdHlSZXBvcnRTdGF0aXN0aWNzRGF0YRINCgV1c2FnZRgBIAEoBRISCgpyZWNvcmRfY250GAIgASgFElwKD3JlY29yZF9jbnRfaG91chgDIAMoCzJDLmFpX2tub3dsZWRnZS5BSVByb2R1Y3Rpdml0eVJlcG9ydFN0YXRpc3RpY3NEYXRhLlJlY29yZENudEhvdXJFbnRyeRJnChV0b3RhbF9yZWNvcmRfY250X2hvdXIYBCADKAsySC5haV9rbm93bGVkZ2UuQUlQcm9kdWN0aXZpdHlSZXBvcnRTdGF0aXN0aWNzRGF0YS5Ub3RhbFJlY29yZENudEhvdXJFbnRyeRIWCg5hbGxfcmVjb3JkX2NudBgFIAEoAxIXCg9yZWNvcmRfY250X3JhbmsYBiABKAUSGgoSYWlfYWNpdHZlX3VzZXJfY250GAcgASgFEhcKD3RlYW1fcmVjb3JkX2NudBgIIAEoAxIcChR0ZWFtX2FjdGl2ZV91c2VyX2NudBgJIAEoBRIcChRwZWVyX3RlYW1fcmVjb3JkX2NudBgKIAEoAxIhChlwZWVyX3RlYW1fYWN0aXZlX3VzZXJfY250GAsgASgFEhYKDmVudF9yZWNvcmRfY250GAwgASgDEhsKE2VudF9hY3RpdmVfdXNlcl9jbnQYDSABKAUSGwoTdGVhbV91c2FnZV91c2VyX2NudBgOIAEoBRIgChhwZWVyX3RlYW1fdXNhZ2VfdXNlcl9jbnQYDyABKAUSGgoSZW50X3VzYWdlX3VzZXJfY250GBAgASgFEhUKDWFpX3RpbWVfc2F2ZWQYESABKAESGgoSdGVhbV9haV90aW1lX3NhdmVkGBIgASgBEh8KF3BlZXJfdGVhbV9haV90aW1lX3NhdmVkGBMgASgBEhkKEWVudF9haV90aW1lX3NhdmVkGBQgASgBEhkKEWFsbF9haV90aW1lX3NhdmVkGBUgASgBEhkKEWFsbF9sYXJrX2R1cmF0aW9uGBYgASgBEhUKDWxhcmtfZHVyYXRpb24YFyABKAESFwoPYWlfcHJvZHVjdGl2aXR5GBggASgBEhwKFGFpX3Byb2R1Y3Rpdml0eV9yYW5rGBkgASgFEhsKE3Byb2R1Y3RpdmVfdXNlcl9jbnQYGiABKAUSHAoUdGVhbV9haV9wcm9kdWN0aXZpdHkYGyABKAESHAoUdGVhbV9hY3RpdmVfZHVyYXRpb24YHCABKAESIQoZcGVlcl90ZWFtX2FpX3Byb2R1Y3Rpdml0eRgdIAEoARIhChlwZWVyX3RlYW1fYWN0aXZlX2R1cmF0aW9uGB4gASgBEhsKE2VudF9haV9wcm9kdWN0aXZpdHkYHyABKAESHgoWZW50X2FpX2FjdGl2ZV9kdXJhdGlvbhggIAEoARInCh90ZWFtX2F2Z19wcm9kdWN0aXZpdHlfcGVlcl9yYW5rGCEgASgFEhUKDXBlZXJfdGVhbV9jbnQYIiABKAUSHAoUZGVwdF9haV9wcm9kdWN0aXZpdHkYIyABKAESHAoUZGVwdF9hY3RpdmVfZHVyYXRpb24YJCABKAESFwoPZGVwdF9yZWNvcmRfY250GCUgASgBEhsKE2RlcHRfdXNhZ2VfdXNlcl9jbnQYJiABKAESGgoSZGVwdF9haV90aW1lX3NhdmVkGCcgASgBEhwKFGRlcHRfYWN0aXZlX3VzZXJfY250GCggASgFEhsKE2FsbF9hY3RpdmVfdXNlcl9jbnQYKSABKAUSGwoTYWxsX2FpX3Byb2R1Y3Rpdml0eRgqIAEoARJgChFyZWNvcmRfY250X3BlcmlvZBgrIAMoCzJFLmFpX2tub3dsZWRnZS5BSVByb2R1Y3Rpdml0eVJlcG9ydFN0YXRpc3RpY3NEYXRhLlJlY29yZENudFBlcmlvZEVudHJ5EmUKFGFpX3RpbWVfc2F2ZWRfcGVyaW9kGCwgAygLMkcuYWlfa25vd2xlZGdlLkFJUHJvZHVjdGl2aXR5UmVwb3J0U3RhdGlzdGljc0RhdGEuQWlUaW1lU2F2ZWRQZXJpb2RFbnRyeRJqChZhaV9wcm9kdWN0aXZpdHlfcGVyaW9kGC0gAygLMkouYWlfa25vd2xlZGdlLkFJUHJvZHVjdGl2aXR5UmVwb3J0U3RhdGlzdGljc0RhdGEuQWlQcm9kdWN0aXZpdHlQZXJpb2RFbnRyeRJpChZ0ZWFtX3JlY29yZF9jbnRfcGVyaW9kGC4gAygLMkkuYWlfa25vd2xlZGdlLkFJUHJvZHVjdGl2aXR5UmVwb3J0U3RhdGlzdGljc0RhdGEuVGVhbVJlY29yZENudFBlcmlvZEVudHJ5Em4KGXRlYW1fYWlfdGltZV9zYXZlZF9wZXJpb2QYLyADKAsySy5haV9rbm93bGVkZ2UuQUlQcm9kdWN0aXZpdHlSZXBvcnRTdGF0aXN0aWNzRGF0YS5UZWFtQWlUaW1lU2F2ZWRQZXJpb2RFbnRyeRJzCht0ZWFtX2FpX3Byb2R1Y3Rpdml0eV9wZXJpb2QYMCADKAsyTi5haV9rbm93bGVkZ2UuQUlQcm9kdWN0aXZpdHlSZXBvcnRTdGF0aXN0aWNzRGF0YS5UZWFtQWlQcm9kdWN0aXZpdHlQZXJpb2RFbnRyeRIRCglpc19sZWFkZXIYMSABKAgSYwoTc3ViX3RlYW1fYWlfbWV0cmljcxgyIAMoCzJGLmFpX2tub3dsZWRnZS5BSVByb2R1Y3Rpdml0eVJlcG9ydFN0YXRpc3RpY3NEYXRhLlN1YlRlYW1BaU1ldHJpY3NFbnRyeRJnChVkaXJlY3Rfc3ViX2FpX21ldHJpY3MYMyADKAsySC5haV9rbm93bGVkZ2UuQUlQcm9kdWN0aXZpdHlSZXBvcnRTdGF0aXN0aWNzRGF0YS5EaXJlY3RTdWJBaU1ldHJpY3NFbnRyeRIhChlkYXZnX3RlYW1fYWlfcHJvZHVjdGl2aXR5GDQgASgCGjQKElJlY29yZENudEhvdXJFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBGjkKF1RvdGFsUmVjb3JkQ250SG91ckVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoAjoCOAEaNgoUUmVjb3JkQ250UGVyaW9kRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgFOgI4ARo4ChZBaVRpbWVTYXZlZFBlcmlvZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAjoCOAEaOwoZQWlQcm9kdWN0aXZpdHlQZXJpb2RFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAI6AjgBGl0KGFRlYW1SZWNvcmRDbnRQZXJpb2RFbnRyeRILCgNrZXkYASABKAkSMAoFdmFsdWUYAiABKAsyIS5haV9rbm93bGVkZ2UuVGVhbVJlY29yZENudFBlcmlvZDoCOAEaYQoaVGVhbUFpVGltZVNhdmVkUGVyaW9kRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMuYWlfa25vd2xlZGdlLlRlYW1BaVRpbWVTYXZlZFBlcmlvZDoCOAEaZwodVGVhbUFpUHJvZHVjdGl2aXR5UGVyaW9kRW50cnkSCwoDa2V5GAEgASgJEjUKBXZhbHVlGAIgASgLMiYuYWlfa25vd2xlZGdlLlRlYW1BaVByb2R1Y3Rpdml0eVBlcmlvZDoCOAEaVwoVU3ViVGVhbUFpTWV0cmljc0VudHJ5EgsKA2tleRgBIAEoAxItCgV2YWx1ZRgCIAEoCzIeLmFpX2tub3dsZWRnZS5TdWJUZWFtQUlNZXRyaWNzOgI4ARpbChdEaXJlY3RTdWJBaU1ldHJpY3NFbnRyeRILCgNrZXkYASABKAMSLwoFdmFsdWUYAiABKAsyIC5haV9rbm93bGVkZ2UuRGlyZWN0U3ViQUlNZXRyaWNzOgI4ASJZChhUZWFtQWlQcm9kdWN0aXZpdHlQZXJpb2QSHAoUdGVhbV9haV9wcm9kdWN0aXZpdHkYASABKAESHwoXdGVhbV9haV9hY3RpdmVfdXNlcl9jbnQYAiABKAUiVAoVVGVhbUFpVGltZVNhdmVkUGVyaW9kEhoKEnRlYW1fYWlfdGltZV9zYXZlZBgBIAEoARIfChd0ZWFtX2FpX2FjdGl2ZV91c2VyX2NudBgCIAEoBSJPChNUZWFtUmVjb3JkQ250UGVyaW9kEhcKD3RlYW1fcmVjb3JkX2NudBgBIAEoAxIfChd0ZWFtX2FpX2FjdGl2ZV91c2VyX2NudBgCIAEoBSLCAQoQU3ViVGVhbUFJTWV0cmljcxIXCg90ZWFtX3JlY29yZF9jbnQYASABKAMSHwoXdGVhbV9haV9hY3RpdmVfdXNlcl9jbnQYAiABKAUSHAoUdGVhbV9hY3RpdmVfdXNlcl9jbnQYAyABKAUSGgoSdGVhbV9haV90aW1lX3NhdmVkGAQgASgBEhwKFHRlYW1fYWlfcHJvZHVjdGl2aXR5GAUgASgBEhwKFHRlYW1fYWN0aXZlX2R1cmF0aW9uGAYgASgBImQKEkRpcmVjdFN1YkFJTWV0cmljcxIWCg5zdWJfcmVjb3JkX2NudBgBIAEoBRIZChFzdWJfYWlfdGltZV9zYXZlZBgCIAEoARIbChNzdWJfYWlfcHJvZHVjdGl2aXR5GAMgASgBIvgBChJEb2NBSVFBRGF0YVBheWxvYWQSTQoTZG9jX2FpX3FhX2RhdGFfdHlwZRgBIAEoDjIwLmFpX2tub3dsZWRnZS5Eb2NBSVFBRGF0YVBheWxvYWQuRG9jQUlRQURhdGFUeXBlEg8KB3VzZXJfaWQYAiABKAMSEwoLYWlfdG9waWNfaWQYAyABKAMSEwoLYWlfcm91bmRfaWQYBCABKAMiWAoPRG9jQUlRQURhdGFUeXBlEg0KCVNlbmRRdWVyeRAAEg8KC0FJVG9waWNSZWFkEAESEgoOQUlUb3BpY0RlbGV0ZWQQAhIRCg1BSVRvcGljVW5yZWFkEAMiVgomUmVtb3ZlU3BhY2VNZW1iZXJCeURpc2NvdW50Q29kZVJlcXVlc3QSFQoNZGlzY291bnRfY29kZRgBIAEoCRIVCg13aWtpX3NwYWNlX2lkGAIgASgDIikKJ1JlbW92ZVNwYWNlTWVtYmVyQnlEaXNjb3VudENvZGVSZXNwb25zZSK1AgoXVHJpZ2dlck1lc3NhZ2VSZWNvbW1lbmQSLAoFc2NlbmUYASABKA4yHS5haV9rbm93bGVkZ2UuTWVzc2FnZVJlY1NjZW5lEhEKCXN0YXJ0X3BvcxgCIAEoBRIPCgdlbmRfcG9zGAMgASgFEg8KB2NoYXRfaWQYBCABKAMSEQoJY2hhdF9uYW1lGAUgASgJEhcKD2lzX2F1dG9fdHJpZ2dlchgGIAEoCBIcChRkaXNwbGF5X21lc3NhZ2VfZmxvdxgHIAEoCBI/CgVleHRyYRgJIAMoCzIwLmFpX2tub3dsZWRnZS5UcmlnZ2VyTWVzc2FnZVJlY29tbWVuZC5FeHRyYUVudHJ5GiwKCkV4dHJhRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJnCixCYXRjaFRyaWdnZXJNZXNzYWdlUmVjb21tZW5kUXVlc3Rpb25zUmVxdWVzdBI3Cgh0cmlnZ2VycxgBIAMoCzIlLmFpX2tub3dsZWRnZS5UcmlnZ2VyTWVzc2FnZVJlY29tbWVuZCIvCi1CYXRjaFRyaWdnZXJNZXNzYWdlUmVjb21tZW5kUXVlc3Rpb25zUmVzcG9uc2UqLAoJQWdlbnRUeXBlEhAKDEtOT1dMRURHRV9BSRAAEg0KCVBFT1BMRV9BSRABKlwKDUFJUm91bmRTdGF0dXMSCwoHSU5JVElBTBABEg0KCVNUUkVBTUlORxACEgoKBkZJTklTSBADEgsKB1NUT1BQRUQQBBIJCgVFUlJPUhAFEgsKB1BFTkRJTkcQBipLCg5GZWVkQmFja1N0YXR1cxIcChhGRUVEQkFDS19TVEFUVVNfTk9fU1RBVEUQABIbChdGRUVEQkFDS19TVEFUVVNfRElTTElLRRABKmEKClNoYXJlU2NlbmUSCwoHVU5LTk9XThAAEhAKDFNJTkdMRV9TSEFSRRABEg8KC01VTFRJX1NIQVJFEAISDwoLVE9QSUNfU0hBUkUQAxISCg5TRUxFQ1RFRF9TSEFSRRAEKjkKEFNoYXJlQ29udGVudFR5cGUSEgoOQ09NUExFVEVfU0hBUkUQARIRCg1QQVJUSUFMX1NIQVJFEAIqOAoVU2hhcmVDb250ZW50U2NlbmVUeXBlEg4KClNIQVJFX0xJTksQABIPCgtTSEFSRV9JTUFHRRABKkAKDVB1bGxEaXJlY3Rpb24SFwoTUFVMTF9ESVJFQ1RJT05fREVTQxAAEhYKElBVTExfRElSRUNUSU9OX0FTQxABKnwKGFB1bGxSZWNlbnRUb3BpY0RpcmVjdGlvbhIhCh1QVUxMX1JFQ0VOVF9ESVJFQ1RJT05fVU5LTk9XThAAEh4KGlBVTExfUkVDRU5UX0RJUkVDVElPTl9ERVNDEAESHQoZUFVMTF9SRUNFTlRfRElSRUNUSU9OX0FTQxACKj4KDUljb25JbWFnZVR5cGUSFAoQSWNvbkltYWdlVHlwZV9VRBABEhcKE0ljb25JbWFnZVR5cGVfSU1BR0UQAio+CgpJbmRleFN0YXRlEg0KCVVOSU5ERVhFRBAAEgwKCElOREVYSU5HEAESEwoPSU5ERVhfQ09NUExFVEVEEAIqJQoOQWdlbnRTdGF0dXNLZXkSEwoPQUdFTlRfVVNFRF9PTkNFEAEqXQoKU2hvd1N0YXR1cxIUChBTSE9XX1NUQVRVU19TSE9XEAASGQoVU0hPV19TVEFUVVNfVU5JTkRFWEVEEAESHgoaU0hPV19TVEFUVVNfREFUQV9OT1RfRk9VTkQQAiphCghJY29uVHlwZRITCg9JQ09OX1RZUEVfVU5TRVQQABITCg9JQ09OX1RZUEVfRU1PSkkQARISCg5JQ09OX1RZUEVfSUNPThACEhcKE0lDT05fVFlQRV9DSEFSQUNURVIQAypdChBBSUtub1BheW1lbnRUeXBlEhUKEVBBWU1FTlRfVFlQRV9GUkVFEAASGwoXUEFZTUVOVF9UWVBFX1JFREVNUFRJT04QARIVChFQQVlNRU5UX1RZUEVfUEFJRBACKp8BChpBSUtub3dsZWRnZVdpa2lCdWlsdGluQ29uZhIoCiRBSV9LTk9XTEVER0VfV0lLSV9CVUlMVElOX0NPTkZfVU5TRVQQABIqCiZBSV9LTk9XTEVER0VfV0lLSV9CVUlMVElOX0NPTkZfRU5BQkxFRBABEisKJ0FJX0tOT1dMRURHRV9XSUtJX0JVSUxUSU5fQ09ORl9ESVNBQkxFRBACKugBChtBSUtub1dpa2lWYWxpZGl0eVBlcmlvZFR5cGUSIAocVkFMSURJVFlfUEVSSU9EX1RZUEVfVU5LTk9XThAAEh4KGlZBTElESVRZX1BFUklPRF9UWVBFX01PTlRIEAESIAocVkFMSURJVFlfUEVSSU9EX1RZUEVfUVVBUlRFUhACEiIKHlZBTElESVRZX1BFUklPRF9UWVBFX0hBTEZfWUVBUhADEh0KGVZBTElESVRZX1BFUklPRF9UWVBFX1lFQVIQBBIiCh5WQUxJRElUWV9QRVJJT0RfVFlQRV9QRVJNQU5FTlQQBSqBAQoTVXNlcldpa2lCZW5lZml0VHlwZRIiCh5VU0VSX1dJS0lfQkVORUZJVF9UWVBFX1VOS05PV04QABIlCiFVU0VSX1dJS0lfQkVORUZJVF9UWVBFX1JFREVNUFRJT04QARIfChtVU0VSX1dJS0lfQkVORUZJVF9UWVBFX1BBSUQQAiooCgxEaXNjb3VudFR5cGUSCgoGUkVERUVNEAASDAoIRElTQ09VTlQQASpGCgxUcmlnZ2VyU2NlbmUSGQoVVFJJR0dFUl9TQ0VORV9VTktOT1dOEAASGwoXVFJJR0dFUl9TQ0VORV9IT01FX1BBR0UQASouChVQdWxsV2lraU9yZGVyTGlzdFJvbGUSCQoFQlVZRVIQABIKCgZTRUxMRVIQASpoCg5XaWtpT3JkZXJTdGF0ZRIKCgZQQVlJTkcQABIJCgVQQUlFRBABEhQKEFJFRlVORF9SRVZJRVdJTkcQAhINCglSRUZVTkRJTkcQAxIMCghSRUZVTkRFRBAEEgwKCENBTkNFTEVEEAUqiAEKDUhvbmdiYW9TdGF0dXMSGgoWSE9OR0JBT19TVEFUVVNfVU5LTk9XThAAEh8KG0hPTkdCQU9fU1RBVFVTX1NFTkRfU1VDQ0VTUxABEh4KGkhPTkdCQU9fU1RBVFVTX1NFTkRfRkFJTEVEEAISGgoWSE9OR0JBT19TVEFUVVNfU0VORElORxADKjgKE0F1dGhvcml6YXRpb25TdGF0dXMSCQoFVU5TRVQQABIKCgZSRUpFQ1QQARIKCgZBQ0NFUFQQAiplCgxBSU1vZHVsZVR5cGUSGgoWQUlfTU9EVUxFX1RZUEVfVU5LTk9XThAAEhAKDEFJX0tOT1dMRURHRRABEhQKEEFJX01FRVRJTkdfTk9URVMQAhIRCg1BSV9RVUlDS19WSUVXEAQqXAoSU2NoZWR1bGVUYXNrU3RhdHVzEhAKDFRBU0tfVU5LTk9XThAAEhAKDFRBU0tfUlVOTklORxABEhAKDFRBU0tfUEVORElORxACEhAKDFRBU0tfREVMRVRFRBADKlUKEFNjaGVkdWxlVGFza1R5cGUSFQoRVEFTS19UWVBFX1VOS05PV04QABIWChJUQVNLX1RZUEVfUkVQRUFURUQQARISCg5UQVNLX1RZUEVfT05DRRACKiMKE1Ruc1JlcG9ydEVudGl0eVR5cGUSDAoIQUlfUk9VTkQQASp6Cg9NZXNzYWdlUmVjU2NlbmUSCgoGVU5SRUFEEAESEQoNTk9UX1JFQ09NTUVORBACEg4KCkZJUlNUX0pPSU4QAxISCg5VTlJFQURfUFJFTE9BRBAEEhUKEUpPSU5fQ0hBVF9QUkVMT0FEEAUSDQoJRk9MTE9XX1VQEAZCUAoWY29tLnNzLmFuZHJvaWQubGFyay5wYkgDWjRjb2RlLmJ5dGVkLm9yZy9sYXJrL2ltLXByb3RvYnVmL2ltcHJvdG8vYWlfa25vd2xlZGdl",[y,J,ht]);var Yo=No("CgpmZWVkLnByb3RvEgRmZWVkIukEChRQdWxsRmVlZENhcmRzUmVxdWVzdBIrCgR0eXBlGAEgAigOMhIuZW50aXRpZXMuRmVlZFR5cGU6BUlOQk9YQgIYARIhCglwdWxsX3R5cGUYAiACKA4yDi5mZWVkLlB1bGxUeXBlEg4KBmN1cnNvchgDIAEoAxIRCgVjb3VudBgEIAEoBToCMjASFgoOcGFyZW50X2NhcmRfaWQYBSABKAMSSgoRZXhpc3RfbWVzc2FnZV9pZHMYBiADKAsyLy5mZWVkLlB1bGxGZWVkQ2FyZHNSZXF1ZXN0LkV4aXN0TWVzc2FnZUlkc0VudHJ5EhwKDXVzZV9tc19jdXJzb3IYByABKAg6BWZhbHNlEj8KDnB1bGxfZmVlZF90eXBlGAggASgOMicuZmVlZC5QdWxsRmVlZENhcmRzUmVxdWVzdC5QdWxsRmVlZFR5cGUSRAoNYnVzaW5lc3NfdHlwZRgJIAEoDjInLmZlZWQuUHVsbEZlZWRDYXJkc1JlcXVlc3QuQnVzaW5lc3NUeXBlOgRMQVJLEiEKE3dpdGhfbWVzc2FnZV9lbnRpdHkYCiABKAg6BHRydWUSFAoMY2VpbGluZ190aW1lGAsgASgDEhMKC3N0b3BfY3Vyc29yGAwgASgDGjYKFEV4aXN0TWVzc2FnZUlkc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEiLAoMUHVsbEZlZWRUeXBlEgcKA0FMTBABEgkKBUlOQk9YEAISCAoERE9ORRADIiEKDEJ1c2luZXNzVHlwZRIICgRMQVJLEAESBwoDQ0NNEAIivxIKFVB1bGxGZWVkQ2FyZHNSZXNwb25zZRIhCgVjYXJkcxgDIAMoCzISLmVudGl0aWVzLkZlZWRDYXJkEikKDWRlbGV0ZWRfY2FyZHMYECADKAsyEi5lbnRpdGllcy5GZWVkQ2FyZBI1CgVjaGF0cxgBIAMoCzImLmZlZWQuUHVsbEZlZWRDYXJkc1Jlc3BvbnNlLkNoYXRzRW50cnkSOwoIbWVzc2FnZXMYAiADKAsyKS5mZWVkLlB1bGxGZWVkQ2FyZHNSZXNwb25zZS5NZXNzYWdlc0VudHJ5EhYKC25leHRfY3Vyc29yGAQgASgDOgEwEjsKBmVtYWlscxgFIAMoCzInLmZlZWQuUHVsbEZlZWRDYXJkc1Jlc3BvbnNlLkVtYWlsc0VudHJ5QgIYARI8Cglkb2NfZmVlZHMYBiADKAsyKS5mZWVkLlB1bGxGZWVkQ2FyZHNSZXNwb25zZS5Eb2NGZWVkc0VudHJ5EkIKDGRvY19tZXNzYWdlcxgHIAMoCzIsLmZlZWQuUHVsbEZlZWRDYXJkc1Jlc3BvbnNlLkRvY01lc3NhZ2VzRW50cnkSOQoHdGhyZWFkcxgIIAMoCzIoLmZlZWQuUHVsbEZlZWRDYXJkc1Jlc3BvbnNlLlRocmVhZHNFbnRyeRJeChtjcnlwdG9fY2hhdF9maXJzdF9wb3NpdGlvbnMYCSADKAsyOS5mZWVkLlB1bGxGZWVkQ2FyZHNSZXNwb25zZS5DcnlwdG9DaGF0Rmlyc3RQb3NpdGlvbnNFbnRyeRJLChFjcnlwdG9fY2hhdF9pbmZvcxgKIAMoCzIwLmZlZWQuUHVsbEZlZWRDYXJkc1Jlc3BvbnNlLkNyeXB0b0NoYXRJbmZvc0VudHJ5EhwKEWZpcnN0X2NhcmRfY3Vyc29yGAsgASgDOgEwEkUKDm9wZW5fYXBwX2ZlZWRzGAwgAygLMi0uZmVlZC5QdWxsRmVlZENhcmRzUmVzcG9uc2UuT3BlbkFwcEZlZWRzRW50cnkSQgoMdG9waWNfZ3JvdXBzGA0gAygLMiwuZmVlZC5QdWxsRmVlZENhcmRzUmVzcG9uc2UuVG9waWNHcm91cHNFbnRyeRJNChJjaGF0X211dGFibGVfaW5mb3MYDiADKAsyMS5mZWVkLlB1bGxGZWVkQ2FyZHNSZXNwb25zZS5DaGF0TXV0YWJsZUluZm9zRW50cnkSTgoSc3Vic2NyaXB0aW9uX2ZlZWRzGA8gAygLMjIuZmVlZC5QdWxsRmVlZENhcmRzUmVzcG9uc2UuU3Vic2NyaXB0aW9uRmVlZHNFbnRyeRI8CglmZWVkc19hcHAYESADKAsyKS5mZWVkLlB1bGxGZWVkQ2FyZHNSZXNwb25zZS5GZWVkc0FwcEVudHJ5EjwKCWFwcF9mZWVkcxgSIAMoCzIpLmZlZWQuUHVsbEZlZWRDYXJkc1Jlc3BvbnNlLkFwcEZlZWRzRW50cnkSDwoHdXNlcl9pZBgUIAEoCRIzChNiaXpfZW50aXR5X2JpbmRfdGFnGBUgAygLMhYuZmVlZC5CaXpFbnRpdHlCaW5kVGFnElMKFWFpX2tub3dsZWRnZV9pZGVudGl0eRgWIAMoCzI0LmZlZWQuUHVsbEZlZWRDYXJkc1Jlc3BvbnNlLkFpS25vd2xlZGdlSWRlbnRpdHlFbnRyeRo8CgpDaGF0c0VudHJ5EgsKA2tleRgBIAEoCRIdCgV2YWx1ZRgCIAEoCzIOLmVudGl0aWVzLkNoYXQ6AjgBGkIKDU1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuTWVzc2FnZToCOAEaPgoLRW1haWxzRW50cnkSCwoDa2V5GAEgASgJEh4KBXZhbHVlGAIgASgLMg8uZW50aXRpZXMuRW1haWw6AjgBGkIKDURvY0ZlZWRzRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuRG9jRmVlZDoCOAEaSAoQRG9jTWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAkSIwoFdmFsdWUYAiABKAsyFC5lbnRpdGllcy5Eb2NNZXNzYWdlOgI4ARpACgxUaHJlYWRzRW50cnkSCwoDa2V5GAEgASgJEh8KBXZhbHVlGAIgASgLMhAuZW50aXRpZXMuVGhyZWFkOgI4ARo/Ch1DcnlwdG9DaGF0Rmlyc3RQb3NpdGlvbnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBGlAKFENyeXB0b0NoYXRJbmZvc0VudHJ5EgsKA2tleRgBIAEoCRInCgV2YWx1ZRgCIAEoCzIYLmVudGl0aWVzLkNyeXB0b0NoYXRJbmZvOgI4ARpKChFPcGVuQXBwRmVlZHNFbnRyeRILCgNrZXkYASABKAkSJAoFdmFsdWUYAiABKAsyFS5lbnRpdGllcy5PcGVuQXBwRmVlZDoCOAEaSAoQVG9waWNHcm91cHNFbnRyeRILCgNrZXkYASABKAkSIwoFdmFsdWUYAiABKAsyFC5lbnRpdGllcy5Ub3BpY0dyb3VwOgI4ARpSChVDaGF0TXV0YWJsZUluZm9zRW50cnkSCwoDa2V5GAEgASgJEigKBXZhbHVlGAIgASgLMhkuZW50aXRpZXMuQ2hhdE11dGFibGVJbmZvOgI4ARpUChZTdWJzY3JpcHRpb25GZWVkc0VudHJ5EgsKA2tleRgBIAEoCRIpCgV2YWx1ZRgCIAEoCzIaLmVudGl0aWVzLlN1YnNjcmlwdGlvbkZlZWQ6AjgBGkIKDUZlZWRzQXBwRW50cnkSCwoDa2V5GAEgASgDEiAKBXZhbHVlGAIgASgLMhEuZmVlZC5GZWVkQXBwRGF0YToCOAEaQgoNQXBwRmVlZHNFbnRyeRILCgNrZXkYASABKAMSIAoFdmFsdWUYAiABKAsyES5mZWVkLkFwcEZlZWRDYXJkOgI4ARpZChhBaUtub3dsZWRnZUlkZW50aXR5RW50cnkSCwoDa2V5GAEgASgDEiwKBXZhbHVlGAIgASgLMh0uYWlfa25vd2xlZGdlLklkZW50aXR5Rm9yRmVlZDoCOAEisQEKHVB1bGxGZWVkQ2FyZHNGZWVkVHlwZXNSZXF1ZXN0EkUKCWZlZWRDYXJkcxgBIAMoCzIyLmZlZWQuUHVsbEZlZWRDYXJkc0ZlZWRUeXBlc1JlcXVlc3QuRmVlZENhcmRzRW50cnkaSQoORmVlZENhcmRzRW50cnkSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgOMhcuZW50aXRpZXMuRmVlZENhcmQuVHlwZToCOAEirgEKHlB1bGxGZWVkQ2FyZHNGZWVkVHlwZXNSZXNwb25zZRJGCglmZWVkQ2FyZHMYASADKAsyMy5mZWVkLlB1bGxGZWVkQ2FyZHNGZWVkVHlwZXNSZXNwb25zZS5GZWVkQ2FyZHNFbnRyeRpECg5GZWVkQ2FyZHNFbnRyeRILCgNrZXkYASABKAkSIQoFdmFsdWUYAiABKA4yEi5lbnRpdGllcy5GZWVkVHlwZToCOAEiYQoUUHVzaEZlZWRDYXJkc1JlcXVlc3QSJgoEdHlwZRgBIAIoDjISLmVudGl0aWVzLkZlZWRUeXBlOgRET05FEiEKBWNhcmRzGAIgAygLMhIuZW50aXRpZXMuRmVlZENhcmQiQQodQ29uZmlybURlbGV0ZUZlZWRDYXJkc1JlcXVlc3QSIAoEY2FyZBgBIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkIkoKHkNvbmZpcm1EZWxldGVGZWVkQ2FyZHNSZXNwb25zZRIoCgxkZWxldGVkX2NhcmQYASABKAsyEi5lbnRpdGllcy5GZWVkQ2FyZCJ6ChtQdXNoRGVsZXRlZEZlZWRDYXJkc1JlcXVlc3QSKQoNZGVsZXRlZF9jYXJkcxgBIAMoCzISLmVudGl0aWVzLkZlZWRDYXJkEjAKFHBlbmRpbmdfZGVsZXRlX2NhcmRzGAIgAygLMhIuZW50aXRpZXMuRmVlZENhcmQicwoVUGF0Y2hGZWVkQ2FyZHNSZXF1ZXN0EiYKBHR5cGUYASACKA4yEi5lbnRpdGllcy5GZWVkVHlwZToERE9ORRIPCgNpZHMYAiADKAlCAhgBEiEKBWNhcmRzGAMgAygLMhIuZW50aXRpZXMuRmVlZENhcmQiGAoWUGF0Y2hGZWVkQ2FyZHNSZXNwb25zZSI3ChNQZWFrRmVlZENhcmRSZXF1ZXN0EiAKBGNhcmQYASACKAsyEi5lbnRpdGllcy5GZWVkQ2FyZCI4ChRQZWFrRmVlZENhcmRSZXNwb25zZRIgCgRjYXJkGAEgAigLMhIuZW50aXRpZXMuRmVlZENhcmQiZgoZUHV0RmVlZENhcmREZWxheWVkUmVxdWVzdBIgCgRjYXJkGAEgAigLMhIuZW50aXRpZXMuRmVlZENhcmQSJwoEdHlwZRgCIAIoDjISLmVudGl0aWVzLkZlZWRUeXBlOgVJTkJPWCI+ChpQdXRGZWVkQ2FyZERlbGF5ZWRSZXNwb25zZRIgCgRjYXJkGAEgAigLMhIuZW50aXRpZXMuRmVlZENhcmQiHQobUHVsbEZlZWRDYXJkc0RlbGF5ZWRSZXF1ZXN0Im8KHFB1bGxGZWVkQ2FyZHNEZWxheWVkUmVzcG9uc2USJwoLaW5ib3hfY2FyZHMYASADKAsyEi5lbnRpdGllcy5GZWVkQ2FyZBImCgpkb25lX2NhcmRzGAIgAygLMhIuZW50aXRpZXMuRmVlZENhcmQiZwoZUHVsbEZlZWRDYXJkc0J5SWRzUmVxdWVzdBIQCghjYXJkX2lkcxgBIAMoCRI4ChRmZWVkX2NhcmRfaWRlbnRpdGllcxgCIAMoCzIaLmVudGl0aWVzLkZlZWRDYXJkSWRlbnRpdHkivwIKGlB1bGxGZWVkQ2FyZHNCeUlkc1Jlc3BvbnNlEjoKBWNhcmRzGAEgAygLMisuZmVlZC5QdWxsRmVlZENhcmRzQnlJZHNSZXNwb25zZS5DYXJkc0VudHJ5EkkKDWRlbGV0ZWRfY2FyZHMYAiADKAsyMi5mZWVkLlB1bGxGZWVkQ2FyZHNCeUlkc1Jlc3BvbnNlLkRlbGV0ZWRDYXJkc0VudHJ5Eg8KB3VzZXJfaWQYBSABKAkaQAoKQ2FyZHNFbnRyeRILCgNrZXkYASABKAkSIQoFdmFsdWUYAiABKAsyEi5lbnRpdGllcy5GZWVkQ2FyZDoCOAEaRwoRRGVsZXRlZENhcmRzRW50cnkSCwoDa2V5GAEgASgJEiEKBXZhbHVlGAIgASgLMhIuZW50aXRpZXMuRmVlZENhcmQ6AjgBIuwBCghTaG9ydGN1dBIKCgJpZBgBIAIoCRIhCgR0eXBlGAIgAigOMhMuZmVlZC5TaG9ydGN1dC5UeXBlEhAKCHBvc2l0aW9uGAMgASgFIp4BCgRUeXBlEhAKDFVOS05PV05fVFlQRRAAEggKBENIQVQQARINCgVFTUFJTBACGgIIARIHCgNET0MQAxILCgdPUEVOQVBQEAQSDAoIQVBQX0NIQVQQBRIQCgxTVUJTQ1JJUFRJT04QChIJCgVNWV9BSRAMEgwKCEFQUF9GRUVEEA0SEAoMS05PV0xFREdFX0FJEA4iBAgGEAkiBAgLEAsiOAoTUHV0U2hvcnRjdXRzUmVxdWVzdBIhCglzaG9ydGN1dHMYASADKAsyDi5mZWVkLlNob3J0Y3V0IkkKFFB1dFNob3J0Y3V0c1Jlc3BvbnNlEhgKEG9yaWdpbmFsX3ZlcnNpb24YASABKAMSFwoPY3VycmVudF92ZXJzaW9uGAIgASgDIjsKFkRlbGV0ZVNob3J0Y3V0c1JlcXVlc3QSIQoJc2hvcnRjdXRzGAEgAygLMg4uZmVlZC5TaG9ydGN1dCJMChdEZWxldGVTaG9ydGN1dHNSZXNwb25zZRIYChBvcmlnaW5hbF92ZXJzaW9uGAEgASgDEhcKD2N1cnJlbnRfdmVyc2lvbhgCIAEoAyI6ChVQYXRjaFNob3J0Y3V0c1JlcXVlc3QSIQoJc2hvcnRjdXRzGAEgAygLMg4uZmVlZC5TaG9ydGN1dCJLChZQYXRjaFNob3J0Y3V0c1Jlc3BvbnNlEhgKEG9yaWdpbmFsX3ZlcnNpb24YASABKAMSFwoPY3VycmVudF92ZXJzaW9uGAIgASgDIk8KFFB1bGxTaG9ydGN1dHNSZXF1ZXN0EhMKCHBvc2l0aW9uGAEgASgFOgEwEhEKBWNvdW50GAIgASgFOgI1MBIPCgd2ZXJzaW9uGAMgASgDImUKFVB1bGxTaG9ydGN1dHNSZXNwb25zZRIhCglzaG9ydGN1dHMYASADKAsyDi5mZWVkLlNob3J0Y3V0EhAKCGhhc19tb3JlGAIgAigIEhcKD2N1cnJlbnRfdmVyc2lvbhgDIAEoAyLTAQoUUHVzaFNob3J0Y3V0c1JlcXVlc3QSNwoJb3BlcmF0aW9uGAEgASgOMiQuZmVlZC5QdXNoU2hvcnRjdXRzUmVxdWVzdC5PcGVyYXRpb24SIQoJc2hvcnRjdXRzGAIgAygLMg4uZmVlZC5TaG9ydGN1dBIYChBvcmlnaW5hbF92ZXJzaW9uGAMgASgDEhcKD2N1cnJlbnRfdmVyc2lvbhgEIAEoAyIsCglPcGVyYXRpb24SBwoDQUREEAESCgoGREVMRVRFEAISCgoGTU9ESUZZEAMiqwEKGlB1dEZlZWRDYXJkc0ludG9Cb3hSZXF1ZXN0EkIKCWZlZWRDYXJkcxgBIAMoCzIvLmZlZWQuUHV0RmVlZENhcmRzSW50b0JveFJlcXVlc3QuRmVlZENhcmRzRW50cnkaSQoORmVlZENhcmRzRW50cnkSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgOMhcuZW50aXRpZXMuRmVlZENhcmQuVHlwZToCOAEiLQobUHV0RmVlZENhcmRzSW50b0JveFJlc3BvbnNlEg4KBmJveF9pZBgBIAIoAyKxAQodRGVsZXRlRmVlZENhcmRzRnJvbUJveFJlcXVlc3QSRQoJZmVlZENhcmRzGAEgAygLMjIuZmVlZC5EZWxldGVGZWVkQ2FyZHNGcm9tQm94UmVxdWVzdC5GZWVkQ2FyZHNFbnRyeRpJCg5GZWVkQ2FyZHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKA4yFy5lbnRpdGllcy5GZWVkQ2FyZC5UeXBlOgI4ASIgCh5EZWxldGVGZWVkQ2FyZHNGcm9tQm94UmVzcG9uc2UiGAoWUHV0VXNlckNvbGRCb290UmVxdWVzdCIZChdQdXRVc2VyQ29sZEJvb3RSZXNwb25zZSI+ChtDbGVhbk5ld0JveEZlZWRDYXJkc1JlcXVlc3QSHwoQaXNfbm90aWNlX2hpZGRlbhgBIAEoCDoFZmFsc2UiHgocQ2xlYW5OZXdCb3hGZWVkQ2FyZHNSZXNwb25zZSIaChhQdXNoQ2xlYW5OZXdCb3hGZWVkQ2FyZHMiHAoaUHVsbE5ld0JveEZlZWRDYXJkc1JlcXVlc3QiQAobUHVsbE5ld0JveEZlZWRDYXJkc1Jlc3BvbnNlEiEKBWNhcmRzGAEgAygLMhIuZW50aXRpZXMuRmVlZENhcmQiRgoYUHVsbE11dGVQb3B1cEluZm9SZXF1ZXN0EioKCXNob3dfdHlwZRgBIAEoDjIXLmZlZWQuTXV0ZVBvcHVwU2hvd1R5cGUi0wEKGVB1bGxNdXRlUG9wdXBJbmZvUmVzcG9uc2USDAoEc2hvdxgBIAEoCBIyCgR0ZXh0GAIgASgLMiQuZmVlZC5QdWxsTXV0ZVBvcHVwSW5mb1Jlc3BvbnNlLlRleHQSKQoFY2FyZHMYAyADKAsyGi5lbnRpdGllcy5GZWVkQ2FyZElkZW50aXR5Eg8KB3ZlcnNpb24YBCABKAMaOAoEVGV4dBINCgV0aXRsZRgBIAEoCRIMCgRkZXNjGAIgASgJEhMKC2NvbmZpcm1fYnRuGAMgASgJIlYKF1B1dFNob3dNdXRlUG9wdXBSZXF1ZXN0EioKCXNob3dfdHlwZRgBIAEoDjIXLmZlZWQuTXV0ZVBvcHVwU2hvd1R5cGUSDwoHdmVyc2lvbhgCIAEoAyIaChhQdXRTaG93TXV0ZVBvcHVwUmVzcG9uc2UicwocUHV0QmF0Y2hNdXRlRmVlZENhcmRzUmVxdWVzdBIpCgVjYXJkcxgBIAMoCzIaLmVudGl0aWVzLkZlZWRDYXJkSWRlbnRpdHkSDwoHdmVyc2lvbhgCIAEoAxIXCg9uZWVkX2FkZF90b19ib3gYAyABKAgiNwodUHV0QmF0Y2hNdXRlRmVlZENhcmRzUmVzcG9uc2USFgoOc3VjY2Vzc19wcm9tcHQYASABKAki7wMKCVRGZWVkQ2FyZBIPCgd1c2VyX2lkGAEgASgDEg8KB2NhcmRfaWQYAiABKAMSKAoEdHlwZRgDIAEoDjIULmZlZWQuVEZlZWRDYXJkLlR5cGU6BENIQVQSEwoLdXBkYXRlX3RpbWUYBCABKAMSHwoXbGFzdF92aXNpYmxlX21lc3NhZ2VfaWQYBSABKAMSKAoHc3VidHlwZRgGIAEoDjIXLmZlZWQuVEZlZWRDYXJkLlN1YnR5cGUSLwoLY2FyZF9zdGF0dXMYByABKA4yGi5mZWVkLlRGZWVkQ2FyZC5DYXJkU3RhdHVzEhEKCXJhbmtfdGltZRgIIAEoAyJlCgRUeXBlEhAKDFVOS05PV05fVFlQRRAAEgcKA0RPQxABEgkKBVNIRUVUEAISCAoEQ0hBVBADEgkKBUVNQUlMEAQSCgoGVEhSRUFEEAUSCwoHT1BFTkFQUBAGEgkKBVRPUElDEAciaAoHU3VidHlwZRITCg9VTktOT1dOX1NVQlRZUEUQABIMCghQMlBfQ0hBVBABEg4KCkdST1VQX0NIQVQQAhITCg9DUllQVE9fUDJQX0NIQVQQAxIVChFDUllQVE9fR1JPVVBfQ0hBVBAEIiEKCkNhcmRTdGF0dXMSCQoFSU5CT1gQARIICgRET05FEAIifgoTQXN5bmNVcGRhdGVGZWVkQ2FyZBImCglmZWVkX2NhcmQYASACKAsyDy5mZWVkLlRGZWVkQ2FyZEICGAESEgoKcmVxdWVzdF9pZBgCIAEoCRISCgpzdGFydF90aW1lGAMgAigDEhcKD2ZlZWRfY2FyZF9ieXRlcxgEIAEoDCLTAQoQS2V5d29yZEdyb3VwRGF0YRIQCghrZXl3b3JkcxgBIAMoCRI6ChJleGNsdWRlX2ZlZWRfY2FyZHMYAiADKAsyGi5lbnRpdGllcy5GZWVkQ2FyZElkZW50aXR5QgIYARJBChljYW5jZWxfZXhjbHVkZV9mZWVkX2NhcmRzGAMgAygLMhouZW50aXRpZXMuRmVlZENhcmRJZGVudGl0eUICGAESLgoIb3JkZXJfYnkYBCABKA4yHC5mZWVkLkZlZWRHcm91cEl0ZW1PcmRlclJ1bGUi4QIKCUZlZWRHcm91cBIKCgJpZBgBIAEoAxIrCgR0eXBlGAIgASgOMh0uZmVlZC5GZWVkR3JvdXAuRmVlZEdyb3VwVHlwZRIWCgppc19kZWZhdWx0GAMgASgIQgIYARIMCgRuYW1lGAQgASgJEgsKA3BvcxgFIAEoAxIyChJrZXl3b3JkX2dyb3VwX2RhdGEYBiABKAsyFi5mZWVkLktleXdvcmRHcm91cERhdGESEwoLdXBkYXRlX3RpbWUYByABKAMSNAoRZGlzcGxheV9mZWVkX3J1bGUYCCABKAsyGS5lbnRpdGllcy5EaXNwbGF5RmVlZFJ1bGUSLgoQZ3JvdXBfcnVsZXNfZGF0YRgJIAEoCzIULmZlZWQuR3JvdXBSdWxlc0RhdGEiOQoNRmVlZEdyb3VwVHlwZRILCgdVTktOT1dOEAASCgoGTk9STUFMEAESDwoHS0VZV09SRBACGgIIASIwCg5Hcm91cFJ1bGVzRGF0YRIeCgVydWxlcxgBIAMoCzIPLmZlZWQuR3JvdXBSdWxlIsEICglHcm91cFJ1bGUSLAoJY29uZGl0aW9uGAEgASgLMhkuZmVlZC5Hcm91cFJ1bGUuQ29uZGl0aW9uEiYKBmFjdGlvbhgCIAEoCzIWLmZlZWQuR3JvdXBSdWxlLkFjdGlvbhqrBgoJQ29uZGl0aW9uEjcKCm1hdGNoX3R5cGUYASABKA4yIy5mZWVkLkdyb3VwUnVsZS5Db25kaXRpb24uTWF0Y2hUeXBlEi0KBWl0ZW1zGAIgAygLMh4uZmVlZC5Hcm91cFJ1bGUuQ29uZGl0aW9uLkl0ZW0a4QQKBEl0ZW0SMQoEdHlwZRgBIAEoDjIjLmZlZWQuR3JvdXBSdWxlLkNvbmRpdGlvbi5JdGVtLlR5cGUSOQoIb3BlcmF0b3IYAiABKA4yJy5mZWVkLkdyb3VwUnVsZS5Db25kaXRpb24uSXRlbS5PcGVyYXRvchIVCg1pbnB1dF9rZXl3b3JkGAogASgJEhgKEGlucHV0X2NoYXR0ZXJfaWQYFCABKAMSQAoPaW5wdXRfY2hhdF90eXBlGB4gASgOMicuZmVlZC5Hcm91cFJ1bGUuQ29uZGl0aW9uLkl0ZW0uQ2hhdFR5cGUiQQoEVHlwZRIQCgxVTktOT1dOX1RZUEUQABILCgdLRVlXT1JEEAESCwoHQ0hBVFRFUhACEg0KCUNIQVRfVFlQRRADIqQBCghPcGVyYXRvchIUChBVTktOT1dOX09QRVJBVE9SEAASEwoPS0VZV09SRF9DT05UQUlOEAoSFwoTS0VZV09SRF9OT1RfQ09OVEFJThALEhMKD0NIQVRURVJfQ09OVEFJThAUEhcKE0NIQVRURVJfTk9UX0NPTlRBSU4QFRIQCgxDSEFUX1RZUEVfSVMQHhIUChBDSEFUX1RZUEVfSVNfTk9UEB8ijQEKCENoYXRUeXBlEhUKEVVOS05PV05fQ0hBVF9UWVBFEAASBwoDUDJQEAESCQoFR1JPVVAQAhIQCgxUSFJFQURfR1JPVVAQAxIMCghIRUxQREVTSxAEEgcKA0JPVBAFEggKBE1VVEUQBhIICgRGTEFHEAcSEAoMQ1JPU1NfVEVOQU5UEAgSBwoDQU5ZEAkiUgoJTWF0Y2hUeXBlEhEKDVVOS05PV05fTUFUQ0gQABIYChRNQVRDSF9BTExfQ09ORElUSU9OUxABEhgKFE1BVENIX0FOWV9DT05ESVRJT05TEAIarwEKBkFjdGlvbhIqCgVpdGVtcxgBIAMoCzIbLmZlZWQuR3JvdXBSdWxlLkFjdGlvbi5JdGVtGnkKBEl0ZW0SLgoEdHlwZRgBIAEoDjIgLmZlZWQuR3JvdXBSdWxlLkFjdGlvbi5JdGVtLlR5cGUiQQoEVHlwZRIQCgxVTktOT1dOX1RZUEUQABIQCgxBRERfVE9fR1JPVVAQARIVChFSRU1PVkVfRlJPTV9HUk9VUBACIp8BCg1GZWVkR3JvdXBJdGVtEhQKDGZlZWRfY2FyZF9pZBgBIAEoAxIvCg5mZWVkX2NhcmRfdHlwZRgCIAEoDjIXLmVudGl0aWVzLkZlZWRDYXJkLlR5cGUSEAoIZ3JvdXBfaWQYAyABKAMSCwoDcG9zGAQgASgDEhMKB2V4Y2x1ZGUYBiABKAhCAhgBEhMKC3VwZGF0ZV90aW1lGAUgASgDImwKFkNyZWF0ZUZlZWRHcm91cFJlcXVlc3QSIwoKZmVlZF9ncm91cBgBIAEoCzIPLmZlZWQuRmVlZEdyb3VwEi0KEGZlZWRfZ3JvdXBfaXRlbXMYAiADKAsyEy5mZWVkLkZlZWRHcm91cEl0ZW0ibQoXQ3JlYXRlRmVlZEdyb3VwUmVzcG9uc2USIwoKZmVlZF9ncm91cBgBIAEoCzIPLmZlZWQuRmVlZEdyb3VwEi0KEGZlZWRfZ3JvdXBfaXRlbXMYAiADKAsyEy5mZWVkLkZlZWRHcm91cEl0ZW0iYQocUHVsbEtleXdvcmRzRmVlZENhcmRzUmVxdWVzdBIQCghrZXl3b3JkcxgBIAMoCRIOCgZjdXJzb3IYAiABKAkSDQoFY291bnQYAyABKAMSEAoIZ3JvdXBfaWQYBCABKAMirwIKHVB1bGxLZXl3b3Jkc0ZlZWRDYXJkc1Jlc3BvbnNlEi4KCmZlZWRfY2FyZHMYASADKAsyGi5lbnRpdGllcy5GZWVkQ2FyZElkZW50aXR5EhAKCGhhc19tb3JlGAIgASgIEhMKC25leHRfY3Vyc29yGAMgASgJEjoKEmV4Y2x1ZGVfZmVlZF9jYXJkcxgFIAMoCzIaLmVudGl0aWVzLkZlZWRDYXJkSWRlbnRpdHlCAhgBEj0KBWNoYXRzGAQgAygLMi4uZmVlZC5QdWxsS2V5d29yZHNGZWVkQ2FyZHNSZXNwb25zZS5DaGF0c0VudHJ5GjwKCkNoYXRzRW50cnkSCwoDa2V5GAEgASgJEh0KBXZhbHVlGAIgASgLMg4uZW50aXRpZXMuQ2hhdDoCOAEigwEKIFB1bGxGZWVkR3JvdXBSdWxlc1ByZXZpZXdSZXF1ZXN0Ei4KEGdyb3VwX3J1bGVzX2RhdGEYASABKAsyFC5mZWVkLkdyb3VwUnVsZXNEYXRhEg4KBmN1cnNvchgCIAEoCRINCgVjb3VudBgDIAEoAxIQCghncm91cF9pZBgEIAEoAyKlAwohUHVsbEZlZWRHcm91cFJ1bGVzUHJldmlld1Jlc3BvbnNlEi4KCmZlZWRfY2FyZHMYASADKAsyGi5lbnRpdGllcy5GZWVkQ2FyZElkZW50aXR5EhAKCGhhc19tb3JlGAIgASgIEhMKC25leHRfY3Vyc29yGAMgASgJEkEKBWNoYXRzGAQgAygLMjIuZmVlZC5QdWxsRmVlZEdyb3VwUnVsZXNQcmV2aWV3UmVzcG9uc2UuQ2hhdHNFbnRyeRJoChp1c2VyX2NvdW50X2ludmlzaWJsZV9jaGF0cxgFIAMoCzJELmZlZWQuUHVsbEZlZWRHcm91cFJ1bGVzUHJldmlld1Jlc3BvbnNlLlVzZXJDb3VudEludmlzaWJsZUNoYXRzRW50cnkaPAoKQ2hhdHNFbnRyeRILCgNrZXkYASABKAkSHQoFdmFsdWUYAiABKAsyDi5lbnRpdGllcy5DaGF0OgI4ARo+ChxVc2VyQ291bnRJbnZpc2libGVDaGF0c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEiuwEKFVB1bGxGZWVkR3JvdXBzUmVxdWVzdBIOCgZjdXJzb3IYASABKAkSDQoFY291bnQYAiABKAMSFQoNaXNfcmVidWlsZGluZxgDIAEoCBI4Cgd2ZXJzaW9uGAQgASgOMicuZmVlZC5QdWxsRmVlZEdyb3Vwc1JlcXVlc3QuUHVsbFZlcnNpb24iMgoLUHVsbFZlcnNpb24SCwoHREVGQVVMVBAAEhYKElJFQlVJTERJTkdfU1VQUE9SVBABIqcBChZQdWxsRmVlZEdyb3Vwc1Jlc3BvbnNlEiQKC2ZlZWRfZ3JvdXBzGAEgAygLMg8uZmVlZC5GZWVkR3JvdXASJwoOZGVsZXRlZF9ncm91cHMYAiADKAsyDy5mZWVkLkZlZWRHcm91cBIQCghoYXNfbW9yZRgDIAEoCBITCgtuZXh0X2N1cnNvchgEIAEoCRIXCg9uZWVkX3JlYnVpbGRpbmcYBSABKAgiPQocUHVsbEl0ZW1DaGFuZ2VkR3JvdXBzUmVxdWVzdBIOCgZjdXJzb3IYASABKAkSDQoFY291bnQYAiABKAMiWQodUHVsbEl0ZW1DaGFuZ2VkR3JvdXBzUmVzcG9uc2USEQoJZ3JvdXBfaWRzGAEgAygDEhAKCGhhc19tb3JlGAIgASgIEhMKC25leHRfY3Vyc29yGAMgASgJIucCChlQdWxsRmVlZEdyb3VwSXRlbXNSZXF1ZXN0EjcKBGFyZ3MYASADKAsyKS5mZWVkLlB1bGxGZWVkR3JvdXBJdGVtc1JlcXVlc3QuQXJnc0VudHJ5EjwKB3ZlcnNpb24YAiABKA4yKy5mZWVkLlB1bGxGZWVkR3JvdXBJdGVtc1JlcXVlc3QuUHVsbFZlcnNpb24aRAoMUHVsbEl0ZW1BcmdzEg4KBmN1cnNvchgBIAEoCRINCgVjb3VudBgCIAEoAxIVCg1pc19yZWJ1aWxkaW5nGAMgASgIGlkKCUFyZ3NFbnRyeRILCgNrZXkYASABKAMSOwoFdmFsdWUYAiABKAsyLC5mZWVkLlB1bGxGZWVkR3JvdXBJdGVtc1JlcXVlc3QuUHVsbEl0ZW1BcmdzOgI4ASIyCgtQdWxsVmVyc2lvbhILCgdERUZBVUxUEAASFgoSUkVCVUlMRElOR19TVVBQT1JUEAEi6wIKGlB1bGxGZWVkR3JvdXBJdGVtc1Jlc3BvbnNlEjgKBGRhdGEYASADKAsyKi5mZWVkLlB1bGxGZWVkR3JvdXBJdGVtc1Jlc3BvbnNlLkRhdGFFbnRyeRq1AQoNUHVsbEl0ZW1zRGF0YRItChBmZWVkX2dyb3VwX2l0ZW1zGAEgAygLMhMuZmVlZC5GZWVkR3JvdXBJdGVtEjUKGGRlbGV0ZWRfZmVlZF9ncm91cF9pdGVtcxgCIAMoCzITLmZlZWQuRmVlZEdyb3VwSXRlbRIQCghoYXNfbW9yZRgDIAEoCBITCgtuZXh0X2N1cnNvchgEIAEoCRIXCg9uZWVkX3JlYnVpbGRpbmcYBSABKAgaWwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoAxI9CgV2YWx1ZRgCIAEoCzIuLmZlZWQuUHVsbEZlZWRHcm91cEl0ZW1zUmVzcG9uc2UuUHVsbEl0ZW1zRGF0YToCOAEiuAQKF1VwZGF0ZUZlZWRHcm91cHNSZXF1ZXN0EiQKC2ZlZWRfZ3JvdXBzGAEgAygLMg8uZmVlZC5GZWVkR3JvdXASJwoOZGVsZXRlZF9ncm91cHMYAiADKAsyDy5mZWVkLkZlZWRHcm91cBItChBmZWVkX2dyb3VwX2l0ZW1zGAMgAygLMhMuZmVlZC5GZWVkR3JvdXBJdGVtEjUKGGRlbGV0ZWRfZmVlZF9ncm91cF9pdGVtcxgEIAMoCzITLmZlZWQuRmVlZEdyb3VwSXRlbRJcChlmZWVkX2dyb3Vwc191cGRhdGVfZmllbGRzGAUgAygLMjkuZmVlZC5VcGRhdGVGZWVkR3JvdXBzUmVxdWVzdC5GZWVkR3JvdXBzVXBkYXRlRmllbGRzRW50cnkaVgoVRmVlZEdyb3VwVXBkYXRlRmllbGRzEj0KBmZpZWxkcxgBIAMoDjItLmZlZWQuVXBkYXRlRmVlZEdyb3Vwc1JlcXVlc3QuVXBkYXRlRmllbGRUeXBlGnIKG0ZlZWRHcm91cHNVcGRhdGVGaWVsZHNFbnRyeRILCgNrZXkYASABKAMSQgoFdmFsdWUYAiABKAsyMy5mZWVkLlVwZGF0ZUZlZWRHcm91cHNSZXF1ZXN0LkZlZWRHcm91cFVwZGF0ZUZpZWxkczoCOAEiPgoPVXBkYXRlRmllbGRUeXBlEhEKDVVOS05PV05fRklFTEQQABIICgRCQVNFEAESDgoKR1JPVVBfUlVMRRACIhoKGFVwZGF0ZUZlZWRHcm91cHNSZXNwb25zZSLMAQoVUHVzaEZlZWRHcm91cHNSZXF1ZXN0EiQKC2ZlZWRfZ3JvdXBzGAEgAygLMg8uZmVlZC5GZWVkR3JvdXASJwoOZGVsZXRlZF9ncm91cHMYAiADKAsyDy5mZWVkLkZlZWRHcm91cBItChBmZWVkX2dyb3VwX2l0ZW1zGAMgAygLMhMuZmVlZC5GZWVkR3JvdXBJdGVtEjUKGGRlbGV0ZWRfZmVlZF9ncm91cF9pdGVtcxgEIAMoCzITLmZlZWQuRmVlZEdyb3VwSXRlbSKbAQoIRmxhZ0l0ZW0SDwoHaXRlbV9pZBgBIAEoAxIRCglpdGVtX3R5cGUYAiABKAUSEQoJZmxhZ190eXBlGAMgASgFEhMKC2NyZWF0ZV90aW1lGAQgASgDEhMKC3VwZGF0ZV90aW1lGAUgASgDIi4KCEZsYWdUeXBlEgsKB1VOS05PV04QABIICgRGRUVEEAESCwoHTUVTU0FHRRACIloKElVwZGF0ZUZsYWdzUmVxdWVzdBIdCgVpdGVtcxgBIAMoCzIOLmZlZWQuRmxhZ0l0ZW0SJQoNZGVsZXRlZF9pdGVtcxgCIAMoCzIOLmZlZWQuRmxhZ0l0ZW0iFQoTVXBkYXRlRmxhZ3NSZXNwb25zZSIxChBQdWxsRmxhZ3NSZXF1ZXN0Eg4KBmN1cnNvchgBIAEoCRINCgVjb3VudBgCIAEoAyL9AQoRUHVsbEZsYWdzUmVzcG9uc2USHQoFaXRlbXMYASADKAsyDi5mZWVkLkZsYWdJdGVtEiUKDWRlbGV0ZWRfaXRlbXMYAiADKAsyDi5mZWVkLkZsYWdJdGVtEhAKCGhhc19tb3JlGAMgASgIEhMKC25leHRfY3Vyc29yGAQgASgJEjcKCG1lc3NhZ2VzGAUgAygLMiUuZmVlZC5QdWxsRmxhZ3NSZXNwb25zZS5NZXNzYWdlc0VudHJ5GkIKDU1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuTWVzc2FnZToCOAEi1AEKEFB1c2hGbGFnc1JlcXVlc3QSHQoFaXRlbXMYASADKAsyDi5mZWVkLkZsYWdJdGVtEiUKDWRlbGV0ZWRfaXRlbXMYAiADKAsyDi5mZWVkLkZsYWdJdGVtEjYKCG1lc3NhZ2VzGAMgAygLMiQuZmVlZC5QdXNoRmxhZ3NSZXF1ZXN0Lk1lc3NhZ2VzRW50cnkaQgoNTWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAkSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5NZXNzYWdlOgI4ASJTChBEYWlseUluZm9FZmZEYXRhEhQKDHJlY3ZfbXNnX2NudBgBIAEoAxIUCgxyZWFkX21zZ19jbnQYAiABKAMSEwoLdXBkYXRlX3RpbWUYAyABKAMimAEKD0luZm9FZmZVc2VyQ29uZhI1CgtidXR0b25fY29uZhgBIAEoDjIgLmZlZWQuSW5mb0VmZlVzZXJDb25mLkJ1dHRvbkNvbmYSEwoLdXBkYXRlX3RpbWUYAiABKAMiOQoKQnV0dG9uQ29uZhILCgdVTktOT1dOEAASDwoLU0hPV19ERVRBSUwQARINCglPTkxZX0lDT04QAiIYChZQdWxsSW5mb0VmZkRhdGFSZXF1ZXN0IroCChdQdWxsSW5mb0VmZkRhdGFSZXNwb25zZRI1CgRkYXRhGAEgAygLMicuZmVlZC5QdWxsSW5mb0VmZkRhdGFSZXNwb25zZS5EYXRhRW50cnkSDAoEc2hvdxgCIAEoCBILCgN1cmwYAyABKAkSLgoHbG1faWNvbhgEIAEoCzIdLmVudGl0aWVzLkltYWdlU2V0UGFzc1Rocm91Z2gSLgoHZG1faWNvbhgFIAEoCzIdLmVudGl0aWVzLkltYWdlU2V0UGFzc1Rocm91Z2gSKAoJdXNlcl9jb25mGAogASgLMhUuZmVlZC5JbmZvRWZmVXNlckNvbmYaQwoJRGF0YUVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmZlZWQuRGFpbHlJbmZvRWZmRGF0YToCOAEirwEKD1B1c2hJbmZvRWZmRGF0YRItCgRkYXRhGAEgAygLMh8uZmVlZC5QdXNoSW5mb0VmZkRhdGEuRGF0YUVudHJ5EigKCXVzZXJfY29uZhgCIAEoCzIVLmZlZWQuSW5mb0VmZlVzZXJDb25mGkMKCURhdGFFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5mZWVkLkRhaWx5SW5mb0VmZkRhdGE6AjgBIkEKGUNvcnJlY3RJbmZvRWZmRGF0YVJlcXVlc3QSJAoEZGF0YRgBIAEoCzIWLmZlZWQuRGFpbHlJbmZvRWZmRGF0YSIcChpDb3JyZWN0SW5mb0VmZkRhdGFSZXNwb25zZSJ5ChpCYXRjaENsZWFyRmVlZEJhZGdlUmVxdWVzdBIPCgd0YXNrX2lkGAEgASgJEhAKCGJhdGNoX2lkGAIgASgJEjgKD25lZWRfY2xlYXJfZmVlZBgDIAMoCzIfLmVudGl0aWVzLkZlZWRDYXJkQmFkZ2VJZGVudGl0eSIdChtCYXRjaENsZWFyRmVlZEJhZGdlUmVzcG9uc2UiPAoXUHVzaEJhdGNoQ2xlYXJGZWVkQmFkZ2USDwoHdGFza19pZBgBIAEoCRIQCghiYXRjaF9pZBgCIAEoCSKMAgoZQmF0Y2hNdXRlRmVlZENhcmRzUmVxdWVzdBIPCgd0YXNrX2lkGAEgASgJEhAKCGJhdGNoX2lkGAIgASgJEi4KCmZlZWRfY2FyZHMYAyADKAsyGi5lbnRpdGllcy5GZWVkQ2FyZElkZW50aXR5Eg4KBnVubXV0ZRgEIAEoCBIWCg5pc19tdXRlX2F0X2FsbBgFIAEoCBI7CgltdXRlX3R5cGUYBiADKA4yKC5mZWVkLkJhdGNoTXV0ZUZlZWRDYXJkc1JlcXVlc3QuTXV0ZVR5cGUiNwoITXV0ZVR5cGUSCwoHVU5LTk9XThAAEg0KCU1VVEVfQ0hBVBABEg8KC01VVEVfQVRfQUxMEAIiHAoaQmF0Y2hNdXRlRmVlZENhcmRzUmVzcG9uc2UiQgodUHVzaEJhdGNoTXV0ZUZlZWRDYXJkc1JlcXVlc3QSDwoHdGFza19pZBgBIAEoCRIQCghiYXRjaF9pZBgCIAEoCSI8ChpQdXRTaG93SW5mb0VmZkd1aWRlUmVxdWVzdBIeChZzaG93X2JhdGNoX2NsZWFyX2JhZGdlGAEgASgIIh0KG1B1dFNob3dJbmZvRWZmR3VpZGVSZXNwb25zZSItChlQdWxsRmVlZFVucmVhZERhdGFSZXF1ZXN0EhAKCGNoYXRfaWRzGAEgAygDItcBChpQdWxsRmVlZFVucmVhZERhdGFSZXNwb25zZRJdChhjaGF0X2lkMmxhc3RfdW5yZWFkX3RpbWUYASADKAsyOy5mZWVkLlB1bGxGZWVkVW5yZWFkRGF0YVJlc3BvbnNlLkNoYXRJZDJsYXN0VW5yZWFkVGltZUVudHJ5GloKGkNoYXRJZDJsYXN0VW5yZWFkVGltZUVudHJ5EgsKA2tleRgBIAEoAxIrCgV2YWx1ZRgCIAEoCzIcLmVudGl0aWVzLkZlZWRMYXN0VW5yZWFkVGltZToCOAEi6AEKFlB1dEZlZWRBcHBEYXRhc1JlcXVlc3QSDwoHZmVlZF9pZBgBIAEoAxIqCglmZWVkX3R5cGUYAiABKA4yFy5lbnRpdGllcy5GZWVkQ2FyZC5UeXBlEjAKEGZlZWRBcHBCaXpFbnRpdHkYAyADKAsyFi5mZWVkLkZlZWRBcHBCaXpFbnRpdHkSMwoGYWN0aW9uGAQgASgOMiMuZmVlZC5QdXRGZWVkQXBwRGF0YXNSZXF1ZXN0LkFjdGlvbiIqCgZBY3Rpb24SCwoHVU5LTk9XThAAEhMKD0NBTkNFTF9URU1QX1RPUBABIkoKEEZlZWRBcHBCaXpFbnRpdHkSDgoGYml6X2lkGAEgAigDEiYKCGJpel90eXBlGAIgAigOMhQuZmVlZC5GZWVkQXBwQml6VHlwZSIZChdQdXRGZWVkQXBwRGF0YXNSZXNwb25zZSKNAQoPUHVzaEZlZWRBcHBEYXRhEjYKCWZlZWRzX2FwcBgBIAMoCzIjLmZlZWQuUHVzaEZlZWRBcHBEYXRhLkZlZWRzQXBwRW50cnkaQgoNRmVlZHNBcHBFbnRyeRILCgNrZXkYASABKAMSIAoFdmFsdWUYAiABKAsyES5mZWVkLkZlZWRBcHBEYXRhOgI4ASKeAQoSRmVlZEFwcERhdGFJdGVtc1BCEjIKBWl0ZW1zGAEgAygLMiMuZmVlZC5GZWVkQXBwRGF0YUl0ZW1zUEIuSXRlbXNFbnRyeRIPCgd2ZXJzaW9uGAIgAigDGkMKCkl0ZW1zRW50cnkSCwoDa2V5GAEgASgDEiQKBXZhbHVlGAIgASgLMhUuZmVlZC5GZWVkQXBwRGF0YUl0ZW06AjgBIkQKC0ZlZWRBcHBEYXRhEiQKBWl0ZW1zGAEgAygLMhUuZmVlZC5GZWVkQXBwRGF0YUl0ZW0SDwoHdmVyc2lvbhgCIAEoAyJ8Cg9GZWVkQXBwRGF0YUl0ZW0SDgoGYml6X2lkGAEgAigDEiYKCGJpel90eXBlGAIgAigOMhQuZmVlZC5GZWVkQXBwQml6VHlwZRITCgt1cGRhdGVfdGltZRgDIAIoAxIcChRjYW5jZWxfdGVtcF90b3BfdGltZRgEIAEoAyJTChdQdWxsRmVlZEFwcERhdGFzUmVxdWVzdBI4ChRmZWVkX2NhcmRfaWRlbnRpdGllcxgBIAMoCzIaLmVudGl0aWVzLkZlZWRDYXJkSWRlbnRpdHkinwEKGFB1bGxGZWVkQXBwRGF0YXNSZXNwb25zZRI/CglmZWVkc19hcHAYASADKAsyLC5mZWVkLlB1bGxGZWVkQXBwRGF0YXNSZXNwb25zZS5GZWVkc0FwcEVudHJ5GkIKDUZlZWRzQXBwRW50cnkSCwoDa2V5GAEgASgDEiAKBXZhbHVlGAIgASgLMhEuZmVlZC5GZWVkQXBwRGF0YToCOAEi0QIKEkZlZWRHcm91cEV4dHJhRGF0YRIQCghrZXl3b3JkcxgBIAMoCRI2ChJleGNsdWRlX2ZlZWRfY2FyZHMYAiADKAsyGi5lbnRpdGllcy5GZWVkQ2FyZElkZW50aXR5Ej0KGWNhbmNlbF9leGNsdWRlX2ZlZWRfY2FyZHMYAyADKAsyGi5lbnRpdGllcy5GZWVkQ2FyZElkZW50aXR5Ei4KCG9yZGVyX2J5GAQgASgOMhwuZmVlZC5GZWVkR3JvdXBJdGVtT3JkZXJSdWxlEi8KDGRpc3BsYXlfcnVsZRgFIAEoCzIZLmVudGl0aWVzLkRpc3BsYXlGZWVkUnVsZRIuChBncm91cF9ydWxlc19kYXRhGAYgASgLMhQuZmVlZC5Hcm91cFJ1bGVzRGF0YRIhChlpdGVtX2hhcmRfY2xlYW5fY3Vyc29yX25zGAcgASgDIqIBChpGZWVkUHJvY2Vzc011bHRpQ21kUGFja2V0cxJNCg9yZXF1ZXN0X3BhY2tldHMYASADKAsyNC5mZWVkLkZlZWRQcm9jZXNzTXVsdGlDbWRQYWNrZXRzLlJlcXVlc3RQYWNrZXRzRW50cnkaNQoTUmVxdWVzdFBhY2tldHNFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAw6AjgBIscBChtGZWVkUHJvY2Vzc011bHRpQ21kUmVzcG9uc2USUgoRcmVzcG9uc2VfcGF5bG9hZHMYASADKAsyNy5mZWVkLkZlZWRQcm9jZXNzTXVsdGlDbWRSZXNwb25zZS5SZXNwb25zZVBheWxvYWRzRW50cnkaVAoVUmVzcG9uc2VQYXlsb2Fkc0VudHJ5EgsKA2tleRgBIAEoBRIqCgV2YWx1ZRgCIAEoCzIbLmZlZWQuUGF5bG9hZFdpdGhTdGF0dXNDb2RlOgI4ASI9ChVQYXlsb2FkV2l0aFN0YXR1c0NvZGUSDwoHcGF5bG9hZBgBIAEoDBITCgtzdGF0dXNfY29kZRgCIAEoBSKQAgoPRmVlZFN0YXR1c0xhYmVsEgwKBHRleHQYASABKAkSLQoEdHlwZRgCIAEoDjIfLmZlZWQuRmVlZFN0YXR1c0xhYmVsLkxhYmVsVHlwZRI1CghpMThuVGV4dBgDIAMoCzIjLmZlZWQuRmVlZFN0YXR1c0xhYmVsLkkxOG5UZXh0RW50cnkaLwoNSTE4blRleHRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIlgKCUxhYmVsVHlwZRIWChJVTktOT1dOX0xBQkVMX1RZUEUQABILCgdQUklNQVJZEAESDQoJU0VDT05EQVJZEAISCwoHU1VDQ0VTUxADEgoKBkRBTkdFUhAEIrgOCgtBcHBGZWVkQ2FyZBIKCgJpZBgBIAEoAxIjCgR0eXBlGAIgASgOMhUuZmVlZC5BcHBGZWVkQ2FyZFR5cGUSDgoGYml6X2lkGAMgASgJEg4KBmFwcF9pZBgEIAEoAxIvCgp0aXRsZV9kYXRhGAsgASgLMhsuZmVlZC5BcHBGZWVkQ2FyZC5UaXRsZURhdGESMQoLYXZhdGFyX2RhdGEYDCABKAsyHC5mZWVkLkFwcEZlZWRDYXJkLkF2YXRhckRhdGESMwoMcHJldmlld19kYXRhGA0gASgLMh0uZmVlZC5BcHBGZWVkQ2FyZC5QcmV2aWV3RGF0YRIvCgpiYWRnZV9kYXRhGA4gASgLMhsuZmVlZC5BcHBGZWVkQ2FyZC5CYWRnZURhdGESPAoRZGlzcGxheV90aW1lX2RhdGEYDyABKAsyIS5mZWVkLkFwcEZlZWRDYXJkLkRpc3BsYXlUaW1lRGF0YRI8ChFzdGF0dXNfbGFiZWxfZGF0YRgQIAEoCzIhLmZlZWQuQXBwRmVlZENhcmQuU3RhdHVzTGFiZWxEYXRhEi0KC2J1dHRvbl9kYXRhGBEgASgLMhguZW50aXRpZXMuRmVlZEJ1dHRvbkRhdGESMwoMc2V0dGluZ19kYXRhGBUgASgLMh0uZmVlZC5BcHBGZWVkQ2FyZC5TZXR0aW5nRGF0YRIxCgtzdGF0dXNfZGF0YRgWIAEoCzIcLmZlZWQuQXBwRmVlZENhcmQuU3RhdHVzRGF0YRI2Cg5iaXpfZXh0cmFfZGF0YRgXIAEoCzIeLmZlZWQuQXBwRmVlZENhcmQuQml6RXh0cmFEYXRhEi8KCmJpel9maWVsZHMYGCABKAsyGy5mZWVkLkFwcEZlZWRDYXJkLkJpekZpZWxkcxItCglsaW5rX2RhdGEYGSABKAsyGi5mZWVkLkFwcEZlZWRDYXJkLkxpbmtEYXRhEigKBm5vdGlmeRgaIAEoCzIYLmZlZWQuQXBwRmVlZENhcmQuTm90aWZ5GpwBCglUaXRsZURhdGESDQoFdGl0bGUYASABKAkSPQoJaTE4blRpdGxlGAIgAygLMiouZmVlZC5BcHBGZWVkQ2FyZC5UaXRsZURhdGEuSTE4blRpdGxlRW50cnkSDwoHdmVyc2lvbhgKIAEoAxowCg5JMThuVGl0bGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGj4KCkF2YXRhckRhdGESHwoGYXZhdGFyGAEgASgLMg8uZW50aXRpZXMuSW1hZ2USDwoHdmVyc2lvbhgKIAEoAxqoAQoLUHJldmlld0RhdGESDwoHcHJldmlldxgBIAEoCRJDCgtpMThuUHJldmlldxgCIAMoCzIuLmZlZWQuQXBwRmVlZENhcmQuUHJldmlld0RhdGEuSTE4blByZXZpZXdFbnRyeRIPCgd2ZXJzaW9uGAogASgDGjIKEEkxOG5QcmV2aWV3RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARorCglCYWRnZURhdGESDQoFYmFkZ2UYASABKAMSDwoHdmVyc2lvbhgKIAEoAxo7Cg9EaXNwbGF5VGltZURhdGESFwoPZGlzcGxheV90aW1lX21zGAEgASgDEg8KB3ZlcnNpb24YCiABKAMaLAoLU2V0dGluZ0RhdGESDAoEbXV0ZRgBIAEoCBIPCgd2ZXJzaW9uGAogASgDGkcKClN0YXR1c0RhdGESKAoGc3RhdHVzGAEgASgOMhguZmVlZC5BcHBGZWVkQ2FyZC5TdGF0dXMSDwoHdmVyc2lvbhgKIAEoAxo3CgxCaXpFeHRyYURhdGESFgoOYml6X2V4dHJhX2RhdGEYASABKAwSDwoHdmVyc2lvbhgKIAEoAxo1CglCaXpGaWVsZHMSFwoPbWFpbF9hY2NvdW50X2lkGAEgASgDEg8KB3ZlcnNpb24YCiABKAMaSAoPU3RhdHVzTGFiZWxEYXRhEiQKBWxhYmVsGAEgASgLMhUuZmVlZC5GZWVkU3RhdHVzTGFiZWwSDwoHdmVyc2lvbhgKIAEoAxopCghMaW5rRGF0YRIMCgRsaW5rGAEgASgJEg8KB3ZlcnNpb24YCiABKAMaPAoNU291bmRGaWxlSW5mbxILCgNrZXkYASABKAkSDwoHZnNfdW5pdBgCIAEoCRINCgVzY2VuZRgDIAEoAxp7CgZOb3RpZnkSDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAEoCRI6ChFjdXN0b21fc291bmRfZmlsZRgDIAEoCzIfLmZlZWQuQXBwRmVlZENhcmQuU291bmRGaWxlSW5mbxIVCg1zaG91bGRfbm90aWZ5GA8gASgIIi4KBlN0YXR1cxILCgdVTktOT1dOEAASCgoGTk9STUFMEAESCwoHREVMRVRFRBACImwKF1B1c2hBcHBGZWVkQ2FyZHNSZXF1ZXN0EikKDmFwcF9mZWVkX2NhcmRzGAEgAygLMhEuZmVlZC5BcHBGZWVkQ2FyZBImCgpmZWVkX2NhcmRzGAIgAygLMhIuZW50aXRpZXMuRmVlZENhcmQi2AEKHlBhdGNoQXBwRmVlZENhcmRTZXR0aW5nUmVxdWVzdBIPCgdjYXJkX2lkGAEgASgDEjMKDHNldHRpbmdfZGF0YRgCIAEoCzIdLmZlZWQuQXBwRmVlZENhcmQuU2V0dGluZ0RhdGESRQoGZmllbGRzGAMgAygOMjUuZmVlZC5QYXRjaEFwcEZlZWRDYXJkU2V0dGluZ1JlcXVlc3QuU2V0dGluZ0RhdGFGaWVsZCIpChBTZXR0aW5nRGF0YUZpZWxkEgsKB1VOS05PV04QABIICgRNVVRFEAEiSwofUGF0Y2hBcHBGZWVkQ2FyZFNldHRpbmdSZXNwb25zZRIoCg1hcHBfZmVlZF9jYXJkGAEgASgLMhEuZmVlZC5BcHBGZWVkQ2FyZCIwChxQdWxsQXBwRmVlZENhcmRzQnlJRHNSZXF1ZXN0EhAKCGNhcmRfaWRzGAEgAygDIrYBCh1QdWxsQXBwRmVlZENhcmRzQnlJRHNSZXNwb25zZRJNCg5hcHBfZmVlZF9jYXJkcxgBIAMoCzI1LmZlZWQuUHVsbEFwcEZlZWRDYXJkc0J5SURzUmVzcG9uc2UuQXBwRmVlZENhcmRzRW50cnkaRgoRQXBwRmVlZENhcmRzRW50cnkSCwoDa2V5GAEgASgDEiAKBXZhbHVlGAIgASgLMhEuZmVlZC5BcHBGZWVkQ2FyZDoCOAEi5gEKFkFwcEZlZWRDYXJkVHlwZVNldHRpbmcSVAoWYWxsb3dfdGVtcF90b3BfYnlfdHlwZRgBIAMoCzI0LmZlZWQuQXBwRmVlZENhcmRUeXBlU2V0dGluZy5BbGxvd1RlbXBUb3BCeVR5cGVFbnRyeRIjCht1bnJlYWRfc3VtbWFyeV9kb25lX3RpbWVfbXMYAiABKAMSFgoOdXBkYXRlX3RpbWVfbXMYCiABKAMaOQoXQWxsb3dUZW1wVG9wQnlUeXBlRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgIOgI4ASLCAwoWRmVlZFNsaWRlQWN0aW9uU2V0dGluZxJLChFsZWZ0X3NsaWRlX2FjdGlvbhgBIAMoDjIwLmZlZWQuRmVlZFNsaWRlQWN0aW9uU2V0dGluZy5GZWVkU2xpZGVBY3Rpb25UeXBlEkwKEnJpZ2h0X3NsaWRlX2FjdGlvbhgCIAMoDjIwLmZlZWQuRmVlZFNsaWRlQWN0aW9uU2V0dGluZy5GZWVkU2xpZGVBY3Rpb25UeXBlEhwKFGxlZnRfc2xpZGVfYWN0aW9uX29uGAMgASgIEh0KFXJpZ2h0X3NsaWRlX2FjdGlvbl9vbhgEIAEoCBIWCg51cGRhdGVfdGltZV9tcxgKIAEoAxIxCilpbmplY3RlZF9tYXJrX2FzX3VucmVhZF9sZWZ0X3NsaWRlX2FjdGlvbhhlIAEoCCKEAQoTRmVlZFNsaWRlQWN0aW9uVHlwZRIXChNVTktOT1dOX0FDVElPTl9UWVBFEAASDAoIU0hPUlRDVVQQARIICgRGTEFHEAISDgoKRkVFRF9HUk9VUBADEggKBE1VVEUQBBIICgRET05FEAUSGAoUTUFSS19PUl9DTEVBUl9VTlJFQUQQBiKYAgoWRmVlZFF1aWNrQWN0aW9uU2V0dGluZxJGCgxxdWlja19hY3Rpb24YASABKA4yMC5mZWVkLkZlZWRRdWlja0FjdGlvblNldHRpbmcuRmVlZFF1aWNrQWN0aW9uVHlwZRIXCg9xdWlja19hY3Rpb25fb24YAiABKAgSFgoOdXBkYXRlX3RpbWVfbXMYCiABKAMihAEKE0ZlZWRRdWlja0FjdGlvblR5cGUSFwoTVU5LTk9XTl9BQ1RJT05fVFlQRRAAEgwKCFNIT1JUQ1VUEAESCAoERkxBRxACEg4KCkZFRURfR1JPVVAQAxIICgRNVVRFEAQSCAoERE9ORRAFEhgKFE1BUktfT1JfQ0xFQVJfVU5SRUFEEAYiTQoTRmVlZFByaW9yaXR5U2V0dGluZxIeChZldmVyX3JlYWNoZWRfdGhyZXNob2xkGAEgASgIEhYKDnVwZGF0ZV90aW1lX21zGAogASgDIk0KEUZlZWRDb21tb25TZXR0aW5nEiAKGGlzX2V4cGlyZWRfZm9sZGVyX2VuYWJsZRgBIAEoCBIWCg51cGRhdGVfdGltZV9tcxhkIAEoAyK8AQoWUHVsbEZlZWRTZXR0aW5nUmVxdWVzdBJOChNmZWVkX2ZvbGRlcl9zZXR0aW5nGAQgASgLMjEuZmVlZC5QdWxsRmVlZFNldHRpbmdSZXF1ZXN0LkZlZWRGb2xkZXJTZXR0aW5nUmVxGlIKFEZlZWRGb2xkZXJTZXR0aW5nUmVxEhgKEG5lZWRfYWxsX2ZvbGRlcnMYASABKAgSIAoYbmVlZF9mYWtlX2ZvbGRlcl9zZXR0aW5nGAIgASgIIoMDChdQdWxsRmVlZFNldHRpbmdSZXNwb25zZRJAChphcHBfZmVlZF9jYXJkX3R5cGVfc2V0dGluZxgBIAEoCzIcLmZlZWQuQXBwRmVlZENhcmRUeXBlU2V0dGluZxI/ChlmZWVkX3NsaWRlX2FjdGlvbl9zZXR0aW5nGAIgASgLMhwuZmVlZC5GZWVkU2xpZGVBY3Rpb25TZXR0aW5nEj8KGWZlZWRfcXVpY2tfYWN0aW9uX3NldHRpbmcYAyABKAsyHC5mZWVkLkZlZWRRdWlja0FjdGlvblNldHRpbmcSNAoTZmVlZF9mb2xkZXJfc2V0dGluZxgEIAEoCzIXLmZlZWQuRmVlZEZvbGRlclNldHRpbmcSOAoVZmVlZF9wcmlvcml0eV9zZXR0aW5nGAUgASgLMhkuZmVlZC5GZWVkUHJpb3JpdHlTZXR0aW5nEjQKE2ZlZWRfY29tbW9uX3NldHRpbmcYBiABKAsyFy5mZWVkLkZlZWRDb21tb25TZXR0aW5nIqMPChdQYXRjaEZlZWRTZXR0aW5nUmVxdWVzdBJYChphcHBfZmVlZF9jYXJkX3R5cGVfcGF0Y2hlchgBIAEoCzI0LmZlZWQuUGF0Y2hGZWVkU2V0dGluZ1JlcXVlc3QuQXBwRmVlZENhcmRUeXBlUGF0Y2hlchJmCiFmZWVkX3NsaWRlX2FjdGlvbl9zZXR0aW5nX3BhdGNoZXIYAiABKAsyOy5mZWVkLlBhdGNoRmVlZFNldHRpbmdSZXF1ZXN0LkZlZWRTbGlkZUFjdGlvblNldHRpbmdQYXRjaGVyEmYKIWZlZWRfcXVpY2tfYWN0aW9uX3NldHRpbmdfcGF0Y2hlchgDIAEoCzI7LmZlZWQuUGF0Y2hGZWVkU2V0dGluZ1JlcXVlc3QuRmVlZFF1aWNrQWN0aW9uU2V0dGluZ1BhdGNoZXISWwobZmVlZF9mb2xkZXJfc2V0dGluZ19wYXRjaGVyGAQgASgLMjYuZmVlZC5QYXRjaEZlZWRTZXR0aW5nUmVxdWVzdC5GZWVkRm9sZGVyU2V0dGluZ1BhdGNoZXISXwodZmVlZF9wcmlvcml0eV9zZXR0aW5nX3BhdGNoZXIYBSABKAsyOC5mZWVkLlBhdGNoRmVlZFNldHRpbmdSZXF1ZXN0LkZlZWRQcmlvcml0eVNldHRpbmdQYXRjaGVyElsKG2ZlZWRfY29tbW9uX3NldHRpbmdfcGF0Y2hlchgGIAEoCzI2LmZlZWQuUGF0Y2hGZWVkU2V0dGluZ1JlcXVlc3QuRmVlZENvbW1vblNldHRpbmdQYXRjaGVyGpcBChZBcHBGZWVkQ2FyZFR5cGVQYXRjaGVyEkAKGmFwcF9mZWVkX2NhcmRfdHlwZV9zZXR0aW5nGAEgASgLMhwuZmVlZC5BcHBGZWVkQ2FyZFR5cGVTZXR0aW5nIjsKDFVwZGF0ZUZpZWxkcxILCgdVTktOT1dOEAASHgoaQVBQX0ZFRURfQ0FSRF9UWVBFX1NFVFRJTkcQARpgCh1GZWVkU2xpZGVBY3Rpb25TZXR0aW5nUGF0Y2hlchI/ChlmZWVkX3NsaWRlX2FjdGlvbl9zZXR0aW5nGAEgASgLMhwuZmVlZC5GZWVkU2xpZGVBY3Rpb25TZXR0aW5nGmAKHUZlZWRRdWlja0FjdGlvblNldHRpbmdQYXRjaGVyEj8KGWZlZWRfcXVpY2tfYWN0aW9uX3NldHRpbmcYASABKAsyHC5mZWVkLkZlZWRRdWlja0FjdGlvblNldHRpbmcaugYKGEZlZWRGb2xkZXJTZXR0aW5nUGF0Y2hlchI0ChNmZWVkX2ZvbGRlcl9zZXR0aW5nGAEgASgLMhcuZmVlZC5GZWVkRm9sZGVyU2V0dGluZxJqCg11cGRhdGVfZmllbGRzGAogAygOMlMuZmVlZC5QYXRjaEZlZWRTZXR0aW5nUmVxdWVzdC5GZWVkRm9sZGVyU2V0dGluZ1BhdGNoZXIuRmVlZEZvbGRlclNldHRpbmdVcGRhdGVGaWVsZBJsChRmb2xkZXJfdXBkYXRlX2ZpZWxkcxgLIAMoCzJOLmZlZWQuUGF0Y2hGZWVkU2V0dGluZ1JlcXVlc3QuRmVlZEZvbGRlclNldHRpbmdQYXRjaGVyLkZvbGRlclVwZGF0ZUZpZWxkc0VudHJ5Gn0KFkZlZWRGb2xkZXJVcGRhdGVGaWVsZHMSYwoNdXBkYXRlX2ZpZWxkcxgBIAMoDjJMLmZlZWQuUGF0Y2hGZWVkU2V0dGluZ1JlcXVlc3QuRmVlZEZvbGRlclNldHRpbmdQYXRjaGVyLkZlZWRGb2xkZXJVcGRhdGVGaWVsZBqIAQoXRm9sZGVyVXBkYXRlRmllbGRzRW50cnkSCwoDa2V5GAEgASgDElwKBXZhbHVlGAIgASgLMk0uZmVlZC5QYXRjaEZlZWRTZXR0aW5nUmVxdWVzdC5GZWVkRm9sZGVyU2V0dGluZ1BhdGNoZXIuRmVlZEZvbGRlclVwZGF0ZUZpZWxkczoCOAEifwocRmVlZEZvbGRlclNldHRpbmdVcGRhdGVGaWVsZBIsCihVTktOT1dOX0ZFRURfRk9MREVSX1NFVFRJTkdfVVBEQVRFX0ZJRUxEEAASEwoPVVNFRF9GT0xERVJfSURTEAESHAoYQ09NTU9OTFlfVVNFRF9GT0xERVJfSURTEAMiggEKFUZlZWRGb2xkZXJVcGRhdGVGaWVsZBIkCiBVTktOT1dOX0ZFRURfRk9MREVSX1VQREFURV9GSUVMRBAAEg8KC0ZJTFRFUl9SVUxFEAESEQoNQURESVRJT05fUlVMRRACEh8KG0ZFRURfRk9MREVSX1NQRUNJQUxfU0VUVElORxADGlYKGkZlZWRQcmlvcml0eVNldHRpbmdQYXRjaGVyEjgKFWZlZWRfcHJpb3JpdHlfc2V0dGluZxgBIAEoCzIZLmZlZWQuRmVlZFByaW9yaXR5U2V0dGluZxpQChhGZWVkQ29tbW9uU2V0dGluZ1BhdGNoZXISNAoTZmVlZF9jb21tb25fc2V0dGluZxgBIAEoCzIXLmZlZWQuRmVlZENvbW1vblNldHRpbmcihAMKGFBhdGNoRmVlZFNldHRpbmdSZXNwb25zZRJAChphcHBfZmVlZF9jYXJkX3R5cGVfc2V0dGluZxgBIAEoCzIcLmZlZWQuQXBwRmVlZENhcmRUeXBlU2V0dGluZxI/ChlmZWVkX3NsaWRlX2FjdGlvbl9zZXR0aW5nGAIgASgLMhwuZmVlZC5GZWVkU2xpZGVBY3Rpb25TZXR0aW5nEj8KGWZlZWRfcXVpY2tfYWN0aW9uX3NldHRpbmcYAyABKAsyHC5mZWVkLkZlZWRRdWlja0FjdGlvblNldHRpbmcSNAoTZmVlZF9mb2xkZXJfc2V0dGluZxgEIAEoCzIXLmZlZWQuRmVlZEZvbGRlclNldHRpbmcSOAoVZmVlZF9wcmlvcml0eV9zZXR0aW5nGAUgASgLMhkuZmVlZC5GZWVkUHJpb3JpdHlTZXR0aW5nEjQKE2ZlZWRfY29tbW9uX3NldHRpbmcYBiABKAsyFy5mZWVkLkZlZWRDb21tb25TZXR0aW5nIvsCCg9QdXNoRmVlZFNldHRpbmcSQAoaYXBwX2ZlZWRfY2FyZF90eXBlX3NldHRpbmcYASABKAsyHC5mZWVkLkFwcEZlZWRDYXJkVHlwZVNldHRpbmcSPwoZZmVlZF9zbGlkZV9hY3Rpb25fc2V0dGluZxgCIAEoCzIcLmZlZWQuRmVlZFNsaWRlQWN0aW9uU2V0dGluZxI/ChlmZWVkX3F1aWNrX2FjdGlvbl9zZXR0aW5nGAMgASgLMhwuZmVlZC5GZWVkUXVpY2tBY3Rpb25TZXR0aW5nEjQKE2ZlZWRfZm9sZGVyX3NldHRpbmcYBCABKAsyFy5mZWVkLkZlZWRGb2xkZXJTZXR0aW5nEjgKFWZlZWRfcHJpb3JpdHlfc2V0dGluZxgFIAEoCzIZLmZlZWQuRmVlZFByaW9yaXR5U2V0dGluZxI0ChNmZWVkX2NvbW1vbl9zZXR0aW5nGAYgASgLMhcuZmVlZC5GZWVkQ29tbW9uU2V0dGluZyKeAgobUHV0Q2FsZW5kYXJGZWVkRXZlbnRSZXF1ZXN0Ej8KCmV2ZW50X3R5cGUYASABKA4yKy5mZWVkLlB1dENhbGVuZGFyRmVlZEV2ZW50UmVxdWVzdC5FdmVudFR5cGUSEAoIZXZlbnRfaWQYAiABKAkSDgoGdGltZV9zGAMgASgDEg8KB2NhbF92ZXIYBCABKAMiigEKCUV2ZW50VHlwZRILCgdVTktOT1dOEAASCQoFVE9EQVkQARITCg9XSUxMX1NUQVJUX0xPTkcQAhIUChBXSUxMX1NUQVJUX1NIT1JUEAMSCQoFU1RBUlQQBBIHCgNFTkQQBRIMCghWQ19TVEFSVBAGEgoKBlZDX0VORBAHEgwKCFRPTU9SUk9XEAgiHgocUHV0Q2FsZW5kYXJGZWVkRXZlbnRSZXNwb25zZSKCAgoQQXBwRmVlZENhcmRTdG9yZRIoCg1hcHBfZmVlZF9jYXJkGAEgASgLMhEuZmVlZC5BcHBGZWVkQ2FyZBIWCg5jcmVhdGVfdGltZV9tcxgCIAEoAxIWCg51cGRhdGVfdGltZV9tcxgDIAEoAxJBCg5idXR0b25zX2FjdGlvbhgEIAMoCzIpLmZlZWQuQXBwRmVlZENhcmRTdG9yZS5CdXR0b25zQWN0aW9uRW50cnkaUQoSQnV0dG9uc0FjdGlvbkVudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLmVudGl0aWVzLkZlZWRCdXR0b25BY3Rpb25zOgI4ASJMChtBcHBGZWVkQ2FyZFR5cGVTZXR0aW5nU3RvcmUSLQoHc2V0dGluZxgBIAEoCzIcLmZlZWQuQXBwRmVlZENhcmRUeXBlU2V0dGluZyKRAQobRmVlZFNsaWRlQWN0aW9uU2V0dGluZ1N0b3JlEi0KB3NldHRpbmcYASABKAsyHC5mZWVkLkZlZWRTbGlkZUFjdGlvblNldHRpbmcSFgoOY3JlYXRlX3RpbWVfbXMYAiABKAMSFgoOdXBkYXRlX3RpbWVfbXMYAyABKAMSEwoLZGVmYXVsdF9rZXkYBCABKAkikQEKG0ZlZWRRdWlja0FjdGlvblNldHRpbmdTdG9yZRItCgdzZXR0aW5nGAEgASgLMhwuZmVlZC5GZWVkUXVpY2tBY3Rpb25TZXR0aW5nEhYKDmNyZWF0ZV90aW1lX21zGAIgASgDEhYKDnVwZGF0ZV90aW1lX21zGAMgASgDEhMKC2RlZmF1bHRfa2V5GAQgASgJIosBChhGZWVkUHJpb3JpdHlTZXR0aW5nU3RvcmUSKgoHc2V0dGluZxgBIAEoCzIZLmZlZWQuRmVlZFByaW9yaXR5U2V0dGluZxIWCg5jcmVhdGVfdGltZV9tcxgCIAEoAxIWCg51cGRhdGVfdGltZV9tcxgDIAEoAxITCgtkZWZhdWx0X2tleRgEIAEoCSKHAQoWRmVlZENvbW1vblNldHRpbmdTdG9yZRIoCgdzZXR0aW5nGAEgASgLMhcuZmVlZC5GZWVkQ29tbW9uU2V0dGluZxIWCg5jcmVhdGVfdGltZV9tcxhkIAEoAxIWCg51cGRhdGVfdGltZV9tcxhlIAEoAxITCgtkZWZhdWx0X2tleRhmIAEoCSI1CiBBcHBGZWVkQ2FyZEJ1dHRvbkNhbGxiYWNrUmVxdWVzdBIRCglidXR0b25faWQYASACKAkimwEKIUFwcEZlZWRDYXJkQnV0dG9uQ2FsbGJhY2tSZXNwb25zZRJCCgZzdGF0dXMYASACKA4yMi5mZWVkLkFwcEZlZWRDYXJkQnV0dG9uQ2FsbGJhY2tSZXNwb25zZS5TdGF0dXNDb2RlEg0KBXRvYXN0GAIgASgJIiMKClN0YXR1c0NvZGUSCwoHU1VDQ0VTUxAAEggKBEZBSUwQASIoCghJMThuTmFtZRIOCgZsb2NhbGUYASACKAkSDAoEbmFtZRgCIAIoCSKGAQoHVGFnSW5mbxIKCgJpZBgBIAIoAxIMCgRuYW1lGAIgAigJEiAKCGkxOG5OYW1lGAMgAygLMg4uZmVlZC5JMThuTmFtZRIbCgR0eXBlGAQgAigOMg0uZmVlZC5UYWdUeXBlEhEKCXRlbmFudF9pZBgFIAIoAxIPCgd2ZXJzaW9uGAYgAigDIncKDUJpekVudGl0eUluZm8SLQoIYml6X3R5cGUYASACKA4yGy5mZWVkLkJpekVudGl0eUluZm8uQml6VHlwZRIVCg1iaXpfZW50aXR5X2lkGAIgAigDIiAKB0JpelR5cGUSCwoHVU5LTk9XThAAEggKBENIQVQQASI9ChRUYWdJRFdpdGhCaW5kVmVyc2lvbhIPCgd0YWdfaWRzGAEgAygDEhQKDGJpbmRfdmVyc2lvbhgCIAIoAyJ+ChBCaXpFbnRpdHlCaW5kVGFnEiwKD2Jpel9lbnRpdHlfaW5mbxgBIAIoCzITLmZlZWQuQml6RW50aXR5SW5mbxI8Chh0YWdfaWRfd2l0aF9iaW5kX3ZlcnNpb24YAiACKAsyGi5mZWVkLlRhZ0lEV2l0aEJpbmRWZXJzaW9uIlAKFlRhZ0luZm9XaXRoQmluZFZlcnNpb24SIAoJdGFnX2luZm9zGAEgAygLMg0uZmVlZC5UYWdJbmZvEhQKDGJpbmRfdmVyc2lvbhgCIAIoAyKKAQoYQml6RW50aXR5QmluZFRhZ1dpdGhJbmZvEiwKD2Jpel9lbnRpdHlfaW5mbxgBIAIoCzITLmZlZWQuQml6RW50aXR5SW5mbxJAChp0YWdfaW5mb193aXRoX2JpbmRfdmVyc2lvbhgCIAIoCzIcLmZlZWQuVGFnSW5mb1dpdGhCaW5kVmVyc2lvbiIzChJQdWxsVGFnSW5mb1JlcXVlc3QSDgoGY3Vyc29yGAEgAigDEg0KBWNvdW50GAIgAigDIl4KE1B1bGxUYWdJbmZvUmVzcG9uc2USIAoJdGFnX2luZm9zGAEgAygLMg0uZmVlZC5UYWdJbmZvEhMKC25leHRfY3Vyc29yGAIgAigDEhAKCGhhc19tb3JlGAMgAigIIiUKFlB1bGxUYWdJbmZvQnlJRFJlcXVlc3QSCwoDaWRzGAEgAygDIjsKF1B1bGxUYWdJbmZvQnlJRFJlc3BvbnNlEiAKCXRhZ19pbmZvcxgBIAMoCzINLmZlZWQuVGFnSW5mbyJUCiNQdWxsQml6RW50aXR5QmluZFRhZ1dpdGhJbmZvUmVxdWVzdBItChBiaXpfZW50aXR5X2luZm9zGAEgAygLMhMuZmVlZC5CaXpFbnRpdHlJbmZvIm4KJFB1bGxCaXpFbnRpdHlCaW5kVGFnV2l0aEluZm9SZXNwb25zZRJGCh5iaXpfZW50aXR5X2JpbmRfdGFnX3dpdGhfaW5mb3MYASADKAsyHi5mZWVkLkJpekVudGl0eUJpbmRUYWdXaXRoSW5mbyJ1ChtQdXNoQml6RW50aXR5QmluZFRhZ1JlcXVlc3QSNAoUYml6X2VudGl0eV9iaW5kX3RhZ3MYASADKAsyFi5mZWVkLkJpekVudGl0eUJpbmRUYWcSIAoJdGFnX2luZm9zGAIgAygLMg0uZmVlZC5UYWdJbmZvIjYKElB1c2hUYWdJbmZvUmVxdWVzdBIgCgl0YWdfaW5mb3MYASADKAsyDS5mZWVkLlRhZ0luZm8iTQoUUHV0VW5yZWFkRmVlZFJlcXVlc3QSNQoRdW5yZWFkX2ZlZWRfY2FyZHMYASADKAsyGi5lbnRpdGllcy5GZWVkVW5yZWFkRW50aXR5IhcKFVB1dFVucmVhZEZlZWRSZXNwb25zZSKfAQoYRmVlZEZvbGRlclNwZWNpYWxTZXR0aW5nEkkKEWZsYWdfc29ydGluZ19ydWxlGAEgASgOMi4uZmVlZC5GZWVkRm9sZGVyU3BlY2lhbFNldHRpbmcuRmxhZ1NvcnRpbmdSdWxlIjgKD0ZsYWdTb3J0aW5nUnVsZRILCgdVTktOT1dOEAASCwoHREVGQVVMVBABEgsKB01FU1NBR0UQAiLsCwoKRmVlZEZvbGRlchIKCgJpZBgBIAEoAxIxCgxmaWx0ZXJfcnVsZXMYAiADKAsyGy5mZWVkLkZlZWRGb2xkZXIuRmlsdGVyUnVsZRI1Cg5hZGRpdGlvbl9ydWxlcxgDIAMoCzIdLmZlZWQuRmVlZEZvbGRlci5BZGRpdGlvblJ1bGUSPQoSYWNjZXNzX2ZpbHRlcl9ydWxlGAQgASgLMiEuZmVlZC5GZWVkRm9sZGVyLkFjY2Vzc0ZpbHRlclJ1bGUSQQoUc3lzdGVtX3ByZXNldF9mb2xkZXIYCiABKA4yIy5mZWVkLkZlZWRGb2xkZXIuU3lzdGVtUHJlc2V0Rm9sZGVyEjcKD3NwZWNpYWxfc2V0dGluZxgLIAEoCzIeLmZlZWQuRmVlZEZvbGRlclNwZWNpYWxTZXR0aW5nEhYKDnVwZGF0ZV90aW1lX21zGGQgASgDEhcKD3N1cHBvcnRfZWRpdGlvbhhlIAEoAxpMCgpGaWx0ZXJSdWxlEi8KBHJ1bGUYASABKA4yIS5mZWVkLkZlZWRGb2xkZXIuRm9sZGVyRmlsdGVyUnVsZRINCgV2YWx1ZRgCIAEoCBpHChJBZGRpdGlvbkZpbHRlclJ1bGUSMQoEcnVsZRgBIAEoDjIjLmZlZWQuRmVlZEZvbGRlci5Gb2xkZXJBZGRpdGlvblJ1bGUaXAoMQWRkaXRpb25SdWxlEhEKCWZvbGRlcl9pZBgBIAEoAxI5CgxmaWx0ZXJfcnVsZXMYAiADKAsyIy5mZWVkLkZlZWRGb2xkZXIuQWRkaXRpb25GaWx0ZXJSdWxlGiwKEEFjY2Vzc0ZpbHRlclJ1bGUSGAoQYWNjZXNzX2ZvbGRlcl9pZBgBIAEoAyK4AgoSU3lzdGVtUHJlc2V0Rm9sZGVyEgsKB1VOS05PV04QABIJCgVBVF9NRRACEgoKBlVOUkVBRBADEgcKA0RPQxAFEgwKCFAyUF9DSEFUEAYSDgoKR1JPVVBfQ0hBVBAHEgcKA0JPVBAIEgoKBk9OQ0FMTBAJEhAKDFRIUkVBRF9HUk9VUBAKEggKBERPTkUQCxILCgdNRVNTQUdFEA0SCAoETVVURRAOEggKBFRFQU0QEBIOCgpGRUVEX0dST1VQEBISCAoERkxBRxATEgoKBlRIUkVBRBAUEhIKDkNBTEVOREFSX0dST1VQEBYSGQoVSU5TVEFOVF9NRUVUSU5HX0dST1VQEBcSDQoJQ09MTEFQU0VEEBgSDwoLQUxMX01FU1NBR0UQGRIQCgxFWFBJUkVEX0ZPTEQQGiLcAgoQRm9sZGVyRmlsdGVyUnVsZRIQCgxVTktOT1dOX1JVTEUQABIMCghJU19JTkJPWBABEgsKB0lTX0RPTkUQAhIQCgxJU19DT0xMQVBTRUQQAxIOCgpIQVNfVU5SRUFEEAoSCgoGSEFTX0FUEAsSDQoJSEFTX0FUX01FEAwSDgoKSEFTX0FUX0FMTBANEgwKCEhBU19TVEFSEA4SCwoHSVNfTVVURRAUEg0KCUlTX1RIUkVBRBAeEgoKBklTX0RPQxAfEhEKDUlTX0dST1VQX0NIQVQQIBIPCgtJU19QMlBfQ0hBVBAhEhMKD0lTX1RIUkVBRF9HUk9VUBAiEg0KCUlTX09OQ0FMTBAjEhYKEklTX0lOU1RBTlRfTUVFVElORxAkEhcKE0lTX0NBTEVOREFSX01FRVRJTkcQJRIKCgZJU19CT1QQJhITCg9JU19FWFBJUkVEX0ZPTEQQJyK+AQoSRm9sZGVyQWRkaXRpb25SdWxlEhkKFVVOS05PV05fQURESVRJT05fUlVMRRAAEhMKD0FERElUSU9OX0lTX0FMTBABEhcKE0FERElUSU9OX0lTX05PVEhJTkcQAhIXChNBRERJVElPTl9IQVNfVU5SRUFEEAoSFgoSQURESVRJT05fSEFTX0FUX01FEAwSFwoTQURESVRJT05fSEFTX0FUX0FMTBANEhUKEUFERElUSU9OX0hBU19TVEFSEA4i9wEKEUZlZWRGb2xkZXJTZXR0aW5nEhcKD3VzZWRfZm9sZGVyX2lkcxgBIAMoAxIgChhjb21tb25seV91c2VkX2ZvbGRlcl9pZHMYAiADKAMSNQoHZm9sZGVycxgDIAMoCzIkLmZlZWQuRmVlZEZvbGRlclNldHRpbmcuRm9sZGVyc0VudHJ5EhYKDmFsbF9mb2xkZXJfaWRzGAQgAygDEhYKDnVwZGF0ZV90aW1lX21zGGQgASgDGkAKDEZvbGRlcnNFbnRyeRILCgNrZXkYASABKAMSHwoFdmFsdWUYAiABKAsyEC5mZWVkLkZlZWRGb2xkZXI6AjgBIpMDChZGZWVkRm9sZGVyU2V0dGluZ1N0b3JlEigKB3NldHRpbmcYASABKAsyFy5mZWVkLkZlZWRGb2xkZXJTZXR0aW5nEhYKDmNyZWF0ZV90aW1lX21zGAIgASgDEhYKDnVwZGF0ZV90aW1lX21zGAMgASgDEkYKEG9uYm9hcmRpbmdfc3RhdGUYBCABKAsyLC5mZWVkLkZlZWRGb2xkZXJTZXR0aW5nU3RvcmUuT25ib2FyZGluZ1N0YXRlGtYBCg9PbmJvYXJkaW5nU3RhdGUSfAoib25ib2FyZGVkX2NvbW1vbmx5X3VzZWRfZm9sZGVyX2lkcxgBIAMoCzJQLmZlZWQuRmVlZEZvbGRlclNldHRpbmdTdG9yZS5PbmJvYXJkaW5nU3RhdGUuT25ib2FyZGVkQ29tbW9ubHlVc2VkRm9sZGVySWRzRW50cnkaRQojT25ib2FyZGVkQ29tbW9ubHlVc2VkRm9sZGVySWRzRW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgDOgI4ASKBBwoOVHJheUl0ZW1FbnRpdHkSCgoCaWQYASACKAMSJQoEdHlwZRgCIAIoDjIXLmVudGl0aWVzLkZlZWRDYXJkLlR5cGUSGAoKaXNfZGlzcGxheRgDIAIoCDoEdHJ1ZRITCgt1cGRhdGVfdGltZRgEIAIoAxIbChNmZWVkX3BhcmVudF9jYXJkX2lkGAUgASgDEj0KEGNoYXRfZW50aXR5X2luZm8YBiABKAsyIy5mZWVkLlRyYXlJdGVtRW50aXR5LkNoYXRFbnRpdHlJbmZvGrAFCg5DaGF0RW50aXR5SW5mbxIKCgJpZBgBIAIoAxImCgljaGF0X3R5cGUYAiABKA4yEy5lbnRpdGllcy5DaGF0LlR5cGUSKgoJY2hhdF9tb2RlGAMgASgOMhcuZW50aXRpZXMuQ2hhdC5DaGF0TW9kZRIMCgRuYW1lGAQgASgJEh8KBmF2YXRhchgFIAEoCzIPLmVudGl0aWVzLkltYWdlEhIKCmNoYXR0ZXJfaWQYBiABKAMSGAoKaXNfaW5fY2hhdBgHIAEoCDoEdHJ1ZRITCgt1cGRhdGVfdGltZRgIIAEoAxIXCglpc19yZW1pbmQYCSABKAg6BHRydWUSGwoMaXNfZGlzc29sdmVkGAogASgIOgVmYWxzZRIdCg5pc19tdXRlX2F0X2FsbBgLIAEoCDoFZmFsc2USGAoJaXNfY3J5cHRvGAwgASgIOgVmYWxzZRIVCg1yZWFkX3Bvc2l0aW9uGA0gASgFEh0KFWxhc3RfbWVzc2FnZV9wb3NpdGlvbhgOIAEoBRIpCiFsYXN0X21lc3NhZ2VfcG9zaXRpb25fYmFkZ2VfY291bnQYDyABKAUSIQoZcmVhZF9wb3NpdGlvbl9iYWRnZV9jb3VudBgQIAEoBRIcChRsYXN0X3RocmVhZF9wb3NpdGlvbhgRIAEoBRIcChRyZWFkX3RocmVhZF9wb3NpdGlvbhgSIAEoBRIoCiByZWFkX3RocmVhZF9wb3NpdGlvbl9iYWRnZV9jb3VudBgTIAEoBRIoCiBsYXN0X3RocmVhZF9wb3NpdGlvbl9iYWRnZV9jb3VudBgUIAEoBRIkChxsYXN0X3Zpc2libGVfdGhyZWFkX3Bvc2l0aW9uGBUgASgFEiMKG2ZpcnN0X2NoYXRfbWVzc2FnZV9wb3NpdGlvbhgWIAEoBSJoCh9QdWxsQ3Jvc3NUZW5hbnRUcmF5SXRlbXNSZXF1ZXN0Eg4KBmN1cnNvchgBIAEoCRIRCgVjb3VudBgCIAIoBToCMjASIgoaY29sZF9ib290X29yX2xvZ2luX3RpbWVfbXMYAyABKAMikwEKIFB1bGxDcm9zc1RlbmFudFRyYXlJdGVtc1Jlc3BvbnNlEigKCnRyYXlfaXRlbXMYASADKAsyFC5mZWVkLlRyYXlJdGVtRW50aXR5EhUKC25leHRfY3Vyc29yGAIgASgJOgASHAoUZGVhZGxpbmVfdXBkYXRlX3RpbWUYAyABKAMSEAoIaGFzX21vcmUYBCABKAgicgokUHVsbENyb3NzVGVuYW50VHJheUl0ZW1zQnlJZHNSZXF1ZXN0EhAKCHRyYXlfaWRzGAEgAygDEjgKFGZlZWRfY2FyZF9pZGVudGl0aWVzGAIgAygLMhouZW50aXRpZXMuRmVlZENhcmRJZGVudGl0eSK/AQolUHVsbENyb3NzVGVuYW50VHJheUl0ZW1zQnlJZHNSZXNwb25zZRJOCgp0cmF5X2l0ZW1zGAEgAygLMjouZmVlZC5QdWxsQ3Jvc3NUZW5hbnRUcmF5SXRlbXNCeUlkc1Jlc3BvbnNlLlRyYXlJdGVtc0VudHJ5GkYKDlRyYXlJdGVtc0VudHJ5EgsKA2tleRgBIAEoAxIjCgV2YWx1ZRgCIAEoCzIULmZlZWQuVHJheUl0ZW1FbnRpdHk6AjgBInAKGlBhdGNoRmVlZENhcmRVbnJlYWRSZXF1ZXN0EigKBGNhcmQYASABKAsyGi5lbnRpdGllcy5GZWVkQ2FyZElkZW50aXR5EhYKDm1hcmtfYXNfdW5yZWFkGAIgASgIEhAKCHJlYWRfcG9zGAMgASgDIj8KG1BhdGNoRmVlZENhcmRVbnJlYWRSZXNwb25zZRIgCgRjYXJkGAEgASgLMhIuZW50aXRpZXMuRmVlZENhcmQqJgoIUHVsbFR5cGUSCwoHUkVGUkVTSBABEg0KCUxPQURfTU9SRRACKjUKEU11dGVQb3B1cFNob3dUeXBlEgsKB1VOS05PV04QABIJCgVTVEFSVBABEggKBE1VVEUQAipQChZGZWVkR3JvdXBJdGVtT3JkZXJSdWxlEhYKElVOS05PV05fT1JERVJfUlVMRRAAEhAKDEFTX0ZFRURfQ0FSRBABEgwKCFBPU0lUSU9OEAIqNwoORmVlZEFwcEJpelR5cGUSFAoQVU5LTk9XTl9CSVpfVFlQRRAAEg8KC0ZFRURfQVBQX1ZDEAEqdwoPQXBwRmVlZENhcmRUeXBlEh4KGlVOS05PV05fQVBQX0ZFRURfQ0FSRF9UWVBFEAASCAoETUFJTBABEgwKCENBTEVOREFSEAISCAoET1BFThADEhUKEUFJX1VOUkVBRF9TVU1NQVJZEAQSCwoHTUlOVVRFUxAFKisKB1RhZ1R5cGUSFAoQVU5LTk9XTl9UQUdfVFlQRRAAEgoKBlRFTkFOVBABQkgKFmNvbS5zcy5hbmRyb2lkLmxhcmsucGJIA1osY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL2ZlZWQ",[J,dt]);var hV=Qo(Yo,4);import{enumDesc as An,fileDesc as Jo,messageDesc as To,tsEnum as an}from"@bufbuild/protobuf/codegenv2";var yo=Jo("CgxkZXZpY2UucHJvdG8SBmRldmljZSK9AQoSRGV2aWNlT25saW5lU3RhdHVzEhEKCWRldmljZV9pZBgBIAEoCRIrCg10ZXJtaW5hbF90eXBlGAIgASgOMhQuZGV2aWNlLlRlcm1pbmFsVHlwZRIrCg1vbmxpbmVfc3RhdHVzGAMgASgOMhQuZGV2aWNlLk9ubGluZVN0YXR1cxI6CgpleHRyYV90eXBlGAQgASgOMiYuZGV2aWNlLlRlcm1pbmFsRXh0cmFTcGVjaWZpY2F0aW9uVHlwZSLhAQodUHV0RGV2aWNlTm90aWZ5U2V0dGluZ1JlcXVlc3QSHQoVZGlzYWJsZV9tb2JpbGVfbm90aWZ5GAEgASgIEhcKD3N0aWxsX25vdGlmeV9hdBgCIAEoCBIbChNzaG93X21lc3NhZ2VfZGV0YWlsGAMgASgIEiUKHXNwZWNpYWxfbm90aWNlX3doZW5fcGNfb25saW5lGAQgASgIEkQKGm5vdGlmaWNhdGlvbl9zb3VuZF9zZXR0aW5nGAUgASgLMiAuZGV2aWNlLk5vdGlmaWNhdGlvblNvdW5kU2V0dGluZyI8CipQdXREZXZpY2VOb2ZpdHlTZXR0aW5nRGlzYWJsZU5vdGlmeVJlcXVlc3QSDgoGc3RhdHVzGAEgASgIIjwKKlB1dERldmljZU5vZml0eVNldHRpbmdTdGlsbE5vdGlmeUF0UmVxdWVzdBIOCgZzdGF0dXMYASABKAgiRgo0UHV0RGV2aWNlTm90aWZ5U2V0dGluZ1N0aWxsTm90aWZ5U3BlY2lhbEZvY3VzUmVxdWVzdBIOCgZzdGF0dXMYASABKAgiIAoeUHV0RGV2aWNlTm90aWZ5U2V0dGluZ1Jlc3BvbnNlIlIKFlB1c2hEZXZpY2VPbmxpbmVTdGF0dXMSOAoUZGV2aWNlX29ubGluZV9zdGF0dXMYASABKAsyGi5kZXZpY2UuRGV2aWNlT25saW5lU3RhdHVzIiAKHlB1bGxEZXZpY2VzT25saW5lU3RhdHVzUmVxdWVzdCJbCh9QdWxsRGV2aWNlc09ubGluZVN0YXR1c1Jlc3BvbnNlEjgKFGRldmljZV9vbmxpbmVfc3RhdHVzGAEgAygLMhouZGV2aWNlLkRldmljZU9ubGluZVN0YXR1cyI+ChNQdXNoVXNlckxvZ2luU3RhdHVzEhEKCWRldmljZV9pZBgBIAEoCRIUCgxpc19sb2dnZWRfaW4YAiABKAgiIAoeUHVsbERldmljZU5vdGlmeVNldHRpbmdSZXF1ZXN0IuMBCh9QdWxsRGV2aWNlTm90aWZ5U2V0dGluZ1Jlc3BvbnNlEh0KFWRpc2FibGVfbW9iaWxlX25vdGlmeRgBIAEoCBIXCg9zdGlsbF9ub3RpZnlfYXQYAiABKAgSGwoTc2hvd19tZXNzYWdlX2RldGFpbBgDIAEoCBIlCh1zcGVjaWFsX25vdGljZV93aGVuX3BjX29ubGluZRgEIAEoCBJEChpub3RpZmljYXRpb25fc291bmRfc2V0dGluZxgFIAEoCzIgLmRldmljZS5Ob3RpZmljYXRpb25Tb3VuZFNldHRpbmci5gEKGE5vdGlmaWNhdGlvblNvdW5kU2V0dGluZxJmCh9ub3RpZmljYXRpb25fc291bmRfc2V0dGluZ19pdGVtGAEgAygLMj0uZGV2aWNlLk5vdGlmaWNhdGlvblNvdW5kU2V0dGluZy5Ob3RpZmljYXRpb25Tb3VuZFNldHRpbmdJdGVtGmIKHE5vdGlmaWNhdGlvblNvdW5kU2V0dGluZ0l0ZW0SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJEiYKDWkxOG5fa2V5X25hbWUYAyABKAsyDy5kZXZpY2UuSTE4blZhbCKBAQoHSTE4blZhbBITCgtkZWZhdWx0X3ZhbBgBIAIoCRIwCglpMThuX3ZhbHMYAiADKAsyHS5kZXZpY2UuSTE4blZhbC5JMThuVmFsc0VudHJ5Gi8KDUkxOG5WYWxzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASK8AQoXUHV0RGV2aWNlU2V0dGluZ1JlcXVlc3QSQgoNdXBkYXRlX2ZpZWxkcxgBIAMoDjIrLmRldmljZS5QdXREZXZpY2VTZXR0aW5nUmVxdWVzdC5VcGRhdGVGaWVsZBIvCg5kZXZpY2Vfc2V0dGluZxgCIAEoCzIXLmVudGl0aWVzLkRldmljZVNldHRpbmciLAoLVXBkYXRlRmllbGQSEQoNVU5LTk9XTl9GSUVMRBAAEgoKBkxPQ0FMRRABIksKGFB1dERldmljZVNldHRpbmdSZXNwb25zZRIvCg5kZXZpY2Vfc2V0dGluZxgBIAEoCzIXLmVudGl0aWVzLkRldmljZVNldHRpbmciLQoYUHVsbERldmljZVNldHRpbmdSZXF1ZXN0EhEKCWRldmljZV9pZBgBIAEoCSJMChlQdWxsRGV2aWNlU2V0dGluZ1Jlc3BvbnNlEi8KDmRldmljZV9zZXR0aW5nGAEgASgLMhcuZW50aXRpZXMuRGV2aWNlU2V0dGluZyK6AQocUHVzaERldmljZU5ldHdvcmtBY2Nlc3NFdmVudBJCCgpldmVudF90eXBlGAEgASgOMi4uZGV2aWNlLlB1c2hEZXZpY2VOZXR3b3JrQWNjZXNzRXZlbnQuRXZlbnRUeXBlIlYKCUV2ZW50VHlwZRILCgdVTktOT1dOEAASEwoPQ09VTlRSWV9DSEFOR0VEEAESJwojSEFWRV9UT19TV0lUQ0hfQ09OTkVDVF9UT19VU0VSX1VOSVQQAiJQChVQdXREZXZpY2VUb2tlblJlcXVlc3QSEgoKdm9pcF90b2tlbhgBIAEoCRIPCgdjaGFubmVsGAIgASgJEhIKCmFwbnNfdG9rZW4YAyABKAkiGAoWUHV0RGV2aWNlVG9rZW5SZXNwb25zZSI9CiBQdXREZXZpY2VCYXNpY01vZGVTZXR0aW5nUmVxdWVzdBIZChFiYXNpY19tb2RlX3N0YXR1cxgBIAIoCCIjCiFQdXREZXZpY2VCYXNpY01vZGVTZXR0aW5nUmVzcG9uc2UiIwohUHVsbERldmljZUJhc2ljTW9kZVNldHRpbmdSZXF1ZXN0Ij8KIlB1bGxEZXZpY2VCYXNpY01vZGVTZXR0aW5nUmVzcG9uc2USGQoRYmFzaWNfbW9kZV9zdGF0dXMYASACKAgqQgoMT25saW5lU3RhdHVzEhkKFVVOS05PV05fT05MSU5FX1NUQVRVUxAAEgoKBk9OTElORRABEgsKB09GRkxJTkUQAipQCgxUZXJtaW5hbFR5cGUSGQoVVU5LTk9XTl9URVJNSU5BTF9UWVBFEAASBgoCUEMQARIHCgNXRUIQAhILCgdBTkRST0lEEAMSBwoDSU9TEAQqOwoeVGVybWluYWxFeHRyYVNwZWNpZmljYXRpb25UeXBlEg8KC1VOU1BFQ0lGSUVEEAASCAoESVBBRBABQkoKFmNvbS5zcy5hbmRyb2lkLmxhcmsucGJIA1ouY29kZS5ieXRlZC5vcmcvbGFyay9pbS1wcm90b2J1Zi9pbXByb3RvL2RldmljZQ",[J]);var dV=To(yo,6);import{enumDesc as dn,fileDesc as xo,messageDesc as Zt,tsEnum as Zn}from"@bufbuild/protobuf/codegenv2";var Et=xo("Cgx0aHJlYWQucHJvdG8SBnRocmVhZCJdChtQdXNoVGhyZWFkUmVwbHlDb3VudFJlcXVlc3QSEQoJdGhyZWFkX2lkGAEgAigJEhMKC3JlcGx5X2NvdW50GAIgAigFEhYKDm5vX3JlcGx5X2NvdW50GAMgASgFIlkKIFB1c2hNdWx0aVRocmVhZFJlcGx5Q291bnRSZXF1ZXN0EjUKCHJlcXVlc3RzGAEgAygLMiMudGhyZWFkLlB1c2hUaHJlYWRSZXBseUNvdW50UmVxdWVzdCIeChxQdXNoVGhyZWFkUmVwbHlDb3VudFJlc3BvbnNlIkIKGVB1bGxUaHJlYWRzU2V0dGluZ1JlcXVlc3QSJQoJdGhyZWFkX2lkGAMgAygJQhKKwxoOc3BsaXQsdHlwZT1tc2cipwEKGlB1bGxUaHJlYWRzU2V0dGluZ1Jlc3BvbnNlEkAKB3NldHRpbmcYASADKAsyLy50aHJlYWQuUHVsbFRocmVhZHNTZXR0aW5nUmVzcG9uc2UuU2V0dGluZ0VudHJ5GkcKDFNldHRpbmdFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5lbnRpdGllcy5UaHJlYWRTZXR0aW5nOgI4ASKNAgoZUGF0Y2hUaHJlYWRTZXR0aW5nUmVxdWVzdBIoCgdzZXR0aW5nGAEgASgLMhcuZW50aXRpZXMuVGhyZWFkU2V0dGluZxIfChFuZWVkX2NsZWFyX3VucmVhZBgCIAEoCDoEdHJ1ZRJECg11cGRhdGVfZmllbGRzGAMgAygOMi0udGhyZWFkLlBhdGNoVGhyZWFkU2V0dGluZ1JlcXVlc3QuVXBkYXRlRmllbGQiXwoLVXBkYXRlRmllbGQSGAoUVVBEQVRFX0ZJRUxEX1VOS05PV04QABIaChZVUERBVEVfRklFTERfSVNfRk9MTE9XEAESGgoWVVBEQVRFX0ZJRUxEX0lTX1JFTUlORBACIhwKGlBhdGNoVGhyZWFkU2V0dGluZ1Jlc3BvbnNlIpMBChdQdXNoVGhyZWFkU2V0dGluZ05vdGljZRIvCg50aHJlYWRfc2V0dGluZxgBIAEoCzIXLmVudGl0aWVzLlRocmVhZFNldHRpbmcSJQoJZmVlZF9jYXJkGAIgASgLMhIuZW50aXRpZXMuRmVlZENhcmQSIAoGdGhyZWFkGAMgASgLMhAuZW50aXRpZXMuVGhyZWFkInAKElBhdGNoVGhyZWFkUmVxdWVzdBIlCgl0aHJlYWRfaWQYASACKAlCEorDGg5zcGxpdCx0eXBlPW1zZxINCgV0b3BpYxgCIAEoCRIkCgVzdGF0ZRgDIAEoDjIVLmVudGl0aWVzLlRocmVhZFN0YXRlIioKE1BhdGNoVGhyZWFkUmVzcG9uc2USEwoLdXBkYXRlX3RpbWUYASABKAMibgoVUHV0UmVhZFRocmVhZHNSZXF1ZXN0EioKCmNoYW5uZWxfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSEgoKdGhyZWFkX2lkcxgCIAMoCRIVCg1yZWFkX3Bvc2l0aW9uGAMgASgFIqsBChZQdXRSZWFkVGhyZWFkc1Jlc3BvbnNlEhwKFGxhc3RfdGhyZWFkX3Bvc2l0aW9uGAEgASgFEhgKEG5ld190aHJlYWRfY291bnQYAiABKAUSHgoWbm9fYmFkZ2VkX3RocmVhZF9jb3VudBgDIAEoBRIVCg1yZWFkX3Bvc2l0aW9uGAQgASgFEiIKGnJlYWRfcG9zaXRpb25fYmFkZ2VkX2NvdW50GAUgASgFItAEChlQdXNoVGhyZWFkUmVhZFN0YXRlTm90aWNlEhIKCmNoYW5uZWxfaWQYASACKAkSHAoQbmV3X3RocmVhZF9jb3VudBgCIAEoBUICGAESJgoabm9fYmFkZ2VkX25ld190aHJlYWRfY291bnQYAyABKAVCAhgBEhwKFGxhc3RfdGhyZWFkX3Bvc2l0aW9uGAQgASgFEhYKDmxhc3RfdGhyZWFkX2lkGAUgASgJEhIKCnRocmVhZF9pZHMYBiADKAkSHAoUcmVhZF90aHJlYWRfcG9zaXRpb24YByABKAUSKAogbGFzdF90aHJlYWRfcG9zaXRpb25fYmFkZ2VfY291bnQYCCABKAUSKAogcmVhZF90aHJlYWRfcG9zaXRpb25fYmFkZ2VfY291bnQYCSABKAUSIgoWbGFzdF92aXNpYmxlX3RocmVhZF9pZBgKIAEoCUICGAESKAocbGFzdF92aXNpYmxlX3RocmVhZF9wb3NpdGlvbhgLIAEoBUICGAESHAoUc3RhcnRfcHVzaF90aW1lc3RhbXAYDCABKAUSFgoOaXNfYmF0Y2hfY2xlYXIYDSABKAgSMQopcmVhZF9wb3NpdGlvbl9maWx0ZXJfbXV0ZV9ib3RfYmFkZ2VfY291bnQYDiABKAUSOQoxbGFzdF9tZXNzYWdlX3Bvc2l0aW9uX2ZpbHRlcl9tdXRlX2JvdF9iYWRnZV9jb3VudBgPIAEoBRIrCiNmaWx0ZXJfbXV0ZV9ib3RfYmFkZ2VfY291bnRfdmVyc2lvbhgQIAEoAyL6AgodUHVsbFRocmVhZHNCeVBvc2l0aW9uc1JlcXVlc3QSKgoKY2hhbm5lbF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIxCgR0eXBlGAIgASgOMhUuZW50aXRpZXMuQ2hhbm5lbFR5cGU6DENIQVRfQ0hBTk5FTBIRCglwb3NpdGlvbnMYAyADKAUSIwoUb25seV92aXNpYmxlX3RocmVhZHMYBCABKAg6BWZhbHNlEjEKCWRpcmVjdGlvbhgFIAEoDjIeLmVudGl0aWVzLkNoYW5uZWxEYXRhRGlyZWN0aW9uEhQKDHVwX3Bvc2l0aW9ucxgGIAMoBRIWCg5kb3duX3Bvc2l0aW9ucxgHIAMoBRIfChd1cF9maWx0ZXJfb3V0X3Bvc2l0aW9ucxgIIAMoBRIhChlkb3duX2ZpbHRlcl9vdXRfcG9zaXRpb25zGAkgAygFEh0KEmxhc3RfbWVzc2FnZV9jb3VudBgKIAEoBToBMiKRCQoeUHVsbFRocmVhZHNCeVBvc2l0aW9uc1Jlc3BvbnNlEkQKB3RocmVhZHMYASADKAsyMy50aHJlYWQuUHVsbFRocmVhZHNCeVBvc2l0aW9uc1Jlc3BvbnNlLlRocmVhZHNFbnRyeRJPCg1yb290X21lc3NhZ2VzGAIgAygLMjgudGhyZWFkLlB1bGxUaHJlYWRzQnlQb3NpdGlvbnNSZXNwb25zZS5Sb290TWVzc2FnZXNFbnRyeRJaChNsYXN0X3JlcGx5X21lc3NhZ2VzGAMgAygLMj0udGhyZWFkLlB1bGxUaHJlYWRzQnlQb3NpdGlvbnNSZXNwb25zZS5MYXN0UmVwbHlNZXNzYWdlc0VudHJ5EhIKCmNoYW5uZWxfaWQYBCABKAkSOQoMY2hhbm5lbF90eXBlGAUgASgOMhUuZW50aXRpZXMuQ2hhbm5lbFR5cGU6DENIQVRfQ0hBTk5FTBJXChFpbnZpc2libGVfdGhyZWFkcxgGIAMoCzI8LnRocmVhZC5QdWxsVGhyZWFkc0J5UG9zaXRpb25zUmVzcG9uc2UuSW52aXNpYmxlVGhyZWFkc0VudHJ5ElMKD3RocmVhZF9tZXNzYWdlcxgHIAMoCzI6LnRocmVhZC5QdWxsVGhyZWFkc0J5UG9zaXRpb25zUmVzcG9uc2UuVGhyZWFkTWVzc2FnZXNFbnRyeRJGCghzZXR0aW5ncxgIIAMoCzI0LnRocmVhZC5QdWxsVGhyZWFkc0J5UG9zaXRpb25zUmVzcG9uc2UuU2V0dGluZ3NFbnRyeRIfChdkYXRhX3JldGVudGlvbl9wb3NpdGlvbhgJIAEoBRJNChxiYW5uZXJfZmlyc3RfcG9zaXRpb25fZGV0YWlsGAogASgLMicuZW50aXRpZXMuQ2hhdEJhbm5lckZpcnN0UG9zaXRpb25EZXRhaWwaQAoMVGhyZWFkc0VudHJ5EgsKA2tleRgBIAEoBRIfCgV2YWx1ZRgCIAEoCzIQLmVudGl0aWVzLlRocmVhZDoCOAEaRgoRUm9vdE1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgJEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuTWVzc2FnZToCOAEaSwoWTGFzdFJlcGx5TWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAkSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5NZXNzYWdlOgI4ARpSChVJbnZpc2libGVUaHJlYWRzRW50cnkSCwoDa2V5GAEgASgFEigKBXZhbHVlGAIgASgLMhkuZW50aXRpZXMuSW52aXNpYmxlVGhyZWFkOgI4ARpSChNUaHJlYWRNZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLmVudGl0aWVzLk1lc3NhZ2VXaXRoVGhyZWFkOgI4ARpICg1TZXR0aW5nc0VudHJ5EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLmVudGl0aWVzLlRocmVhZFNldHRpbmc6AjgBIpYDCiRQdWxsVGhyZWFkTWVzc2FnZXNCeVBvc2l0aW9uc1JlcXVlc3QSJQoJdGhyZWFkX2lkGAEgAigJQhKKwxoOc3BsaXQsdHlwZT1tc2cSEQoJcG9zaXRpb25zGAIgAygFEiQKFW9ubHlfdmlzaWJsZV9tZXNzYWdlcxgDIAEoCDoFZmFsc2USMQoJZGlyZWN0aW9uGAQgASgOMh4uZW50aXRpZXMuQ2hhbm5lbERhdGFEaXJlY3Rpb24SFAoMdXBfcG9zaXRpb25zGAUgAygFEhYKDmRvd25fcG9zaXRpb25zGAYgAygFEh8KF3VwX2ZpbHRlcl9vdXRfcG9zaXRpb25zGAcgAygFEiEKGWRvd25fZmlsdGVyX291dF9wb3NpdGlvbnMYCCADKAUSEgoKY2hhbm5lbF9pZBgJIAEoCRI5CgxjaGFubmVsX3R5cGUYCiABKA4yFS5lbnRpdGllcy5DaGFubmVsVHlwZToMQ0hBVF9DSEFOTkVMEhoKEm5lZWRfbmV4dF9wb3NpdGlvbhgLIAEoCCKfBAolUHVsbFRocmVhZE1lc3NhZ2VzQnlQb3NpdGlvbnNSZXNwb25zZRJNCghtZXNzYWdlcxgBIAMoCzI7LnRocmVhZC5QdWxsVGhyZWFkTWVzc2FnZXNCeVBvc2l0aW9uc1Jlc3BvbnNlLk1lc3NhZ2VzRW50cnkSEgoKY2hhbm5lbF9pZBgCIAEoCRI5CgxjaGFubmVsX3R5cGUYAyABKA4yFS5lbnRpdGllcy5DaGFubmVsVHlwZToMQ0hBVF9DSEFOTkVMEmAKEmludmlzaWJsZV9tZXNzYWdlcxgEIAMoCzJELnRocmVhZC5QdWxsVGhyZWFkTWVzc2FnZXNCeVBvc2l0aW9uc1Jlc3BvbnNlLkludmlzaWJsZU1lc3NhZ2VzRW50cnkSEAoIaGFzX21vcmUYBSABKAgSFQoNbmV4dF9wb3NpdGlvbhgGIAEoBRIRCgl0aHJlYWRfaWQYByABKAkSIAoYdW5yZW1vdmVkX21lc3NhZ2VzX2NvdW50GAggASgFGkIKDU1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgFEiAKBXZhbHVlGAIgASgLMhEuZW50aXRpZXMuTWVzc2FnZToCOAEaVAoWSW52aXNpYmxlTWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAUSKQoFdmFsdWUYAiABKAsyGi5lbnRpdGllcy5JbnZpc2libGVNZXNzYWdlOgI4ASKlAwoXUHVzaFRocmVhZFVwZGF0ZWROb3RpY2USEQoJdGhyZWFkX2lkGAEgASgJEh0KFWxhc3RfbWVzc2FnZV9wb3NpdGlvbhgCIAEoBRITCgtyZXBseV9jb3VudBgDIAEoBRIXCg9sYXN0X21lc3NhZ2VfaWQYBCABKAkSKQodbGFzdF92aXNpYmxlX21lc3NhZ2VfcG9zaXRpb24YBSABKAVCAhgBEiMKF2xhc3RfdmlzaWJsZV9tZXNzYWdlX2lkGAYgASgJQgIYARIZCg1yZWFkX3Bvc2l0aW9uGAcgASgFQgIYARIlChlyZWFkX3Bvc2l0aW9uX2JhZGdlX2NvdW50GAggASgFQgIYARItCiFsYXN0X21lc3NhZ2VfcG9zaXRpb25fYmFkZ2VfY291bnQYCSABKAVCAhgBEhYKDm5vX3JlcGx5X2NvdW50GAogASgFEhQKDHRvcF9yZXBsaWVycxgLIAMoAxIZChFsYXRlc3RfcmVwbHlfdGltZRgMIAEoAxIgCgZ0aHJlYWQYDSABKAsyEC5lbnRpdGllcy5UaHJlYWQihAEKI1B1c2hUaHJlYWROb1JlcGx5Q291bnRVcGRhdGVkTm90aWNlEhEKCXRocmVhZF9pZBgBIAEoCRIdChVsYXN0X21lc3NhZ2VfcG9zaXRpb24YAiABKAUSEwoLcmVwbHlfY291bnQYAyABKAUSFgoObm9fcmVwbHlfY291bnQYBCABKAUiYAoXUHVsbFRocmVhZHNCeUlEc1JlcXVlc3QSJgoKdGhyZWFkX2lkcxgBIAMoCUISisMaDnNwbGl0LHR5cGU9bXNnEh0KEmxhc3RfbWVzc2FnZV9jb3VudBgCIAEoBToBMiKBBgoYUHVsbFRocmVhZHNCeUlEc1Jlc3BvbnNlEj4KB3RocmVhZHMYASADKAsyLS50aHJlYWQuUHVsbFRocmVhZHNCeUlEc1Jlc3BvbnNlLlRocmVhZHNFbnRyeRJJCg1yb290X21lc3NhZ2VzGAIgAygLMjIudGhyZWFkLlB1bGxUaHJlYWRzQnlJRHNSZXNwb25zZS5Sb290TWVzc2FnZXNFbnRyeRJUChNsYXN0X3JlcGx5X21lc3NhZ2VzGAMgAygLMjcudGhyZWFkLlB1bGxUaHJlYWRzQnlJRHNSZXNwb25zZS5MYXN0UmVwbHlNZXNzYWdlc0VudHJ5Ek0KD3RocmVhZF9tZXNzYWdlcxgEIAMoCzI0LnRocmVhZC5QdWxsVGhyZWFkc0J5SURzUmVzcG9uc2UuVGhyZWFkTWVzc2FnZXNFbnRyeRJACghzZXR0aW5ncxgFIAMoCzIuLnRocmVhZC5QdWxsVGhyZWFkc0J5SURzUmVzcG9uc2UuU2V0dGluZ3NFbnRyeRpACgxUaHJlYWRzRW50cnkSCwoDa2V5GAEgASgJEh8KBXZhbHVlGAIgASgLMhAuZW50aXRpZXMuVGhyZWFkOgI4ARpGChFSb290TWVzc2FnZXNFbnRyeRILCgNrZXkYASABKAkSIAoFdmFsdWUYAiABKAsyES5lbnRpdGllcy5NZXNzYWdlOgI4ARpLChZMYXN0UmVwbHlNZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIgCgV2YWx1ZRgCIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2U6AjgBGlIKE1RocmVhZE1lc3NhZ2VzRW50cnkSCwoDa2V5GAEgASgJEioKBXZhbHVlGAIgASgLMhsuZW50aXRpZXMuTWVzc2FnZVdpdGhUaHJlYWQ6AjgBGkgKDVNldHRpbmdzRW50cnkSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgLMhcuZW50aXRpZXMuVGhyZWFkU2V0dGluZzoCOAEiVgoVUHVsbFRocmVhZENhcmRSZXF1ZXN0EioKCmNoYW5uZWxfaWQYASACKAlCForDGhJzcGxpdCx0eXBlPWNoYW5uZWwSEQoJdGhyZWFkX2lkGAIgAigJIkQKFlB1bGxUaHJlYWRDYXJkUmVzcG9uc2USKgoLdGhyZWFkX2NhcmQYASABKAsyFS5lbnRpdGllcy5DYXJkQ29udGVudCK8AQoLU2hhcmVUYXJnZXQSKwoHdG9fY2hhdBgBIAEoCzIYLnRocmVhZC5TaGFyZVRhcmdldC5DaGF0SAASLwoJdG9fdGhyZWFkGAIgASgLMhoudGhyZWFkLlNoYXJlVGFyZ2V0LlRocmVhZEgAGhcKBENoYXQSDwoHY2hhdF9pZBgBIAIoCRosCgZUaHJlYWQSEQoJdGhyZWFkX2lkGAEgAigJEg8KB2NoYXRfaWQYAiACKAlCCAoGdGFyZ2V0InwKFVB1dFRocmVhZFNoYXJlUmVxdWVzdBIqCgpjaGFubmVsX2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhEKCXRocmVhZF9pZBgCIAIoCRIkCgd0YXJnZXRzGAMgAygLMhMudGhyZWFkLlNoYXJlVGFyZ2V0IqUDChZQdXRUaHJlYWRTaGFyZVJlc3BvbnNlEj4KCG1lc3NhZ2VzGAEgAygLMiwudGhyZWFkLlB1dFRocmVhZFNoYXJlUmVzcG9uc2UuTWVzc2FnZXNFbnRyeRJBCgpmZWVkX2NhcmRzGAIgAygLMi0udGhyZWFkLlB1dFRocmVhZFNoYXJlUmVzcG9uc2UuRmVlZENhcmRzRW50cnkSPAoHdGhyZWFkcxgDIAMoCzIrLnRocmVhZC5QdXRUaHJlYWRTaGFyZVJlc3BvbnNlLlRocmVhZHNFbnRyeRpCCg1NZXNzYWdlc0VudHJ5EgsKA2tleRgBIAEoCRIgCgV2YWx1ZRgCIAEoCzIRLmVudGl0aWVzLk1lc3NhZ2U6AjgBGkQKDkZlZWRDYXJkc0VudHJ5EgsKA2tleRgBIAEoCRIhCgV2YWx1ZRgCIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkOgI4ARpACgxUaHJlYWRzRW50cnkSCwoDa2V5GAEgASgJEh8KBXZhbHVlGAIgASgLMhAuZW50aXRpZXMuVGhyZWFkOgI4ASKuAgoRUHVzaFRocmVhZFJlbW92ZWQSEgoKdGhyZWFkX2lkcxgBIAMoCRJGCg90aHJlYWRfcG9zaXRpb24YAiADKAsyLS50aHJlYWQuUHVzaFRocmVhZFJlbW92ZWQuVGhyZWFkUG9zaXRpb25FbnRyeRITCgt1cGRhdGVfdGltZRgDIAEoAxI+CgtjaGFubmVsX2lkcxgEIAMoCzIpLnRocmVhZC5QdXNoVGhyZWFkUmVtb3ZlZC5DaGFubmVsSWRzRW50cnkaNQoTVGhyZWFkUG9zaXRpb25FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBGjEKD0NoYW5uZWxJZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjUKEVRocmVhZE11dGFibGVJbmZvEhEKCXRocmVhZF9pZBgBIAIoCRINCgV0b3BpYxgCIAEoCSJhChVQdXNoVGhyZWFkTXV0YWJsZUluZm8SEwoLb3BlcmF0b3JfaWQYASABKAkSMwoQdGhyZWFkX211dGVfaW5mbxgCIAEoCzIZLnRocmVhZC5UaHJlYWRNdXRhYmxlSW5mbyJXChNQdXNoVGhyZWFkU3RhdGVJbmZvEhEKCXRocmVhZF9pZBgBIAIoCRItCgpzdGF0ZV9pbmZvGAIgASgLMhkuZW50aXRpZXMuVGhyZWFkU3RhdGVJbmZvItMCCiBQdWxsRmlsdGVyZWRUaHJlYWRzQnlDaGF0UmVxdWVzdBIqCgpjaGFubmVsX2lkGAEgAigJQhaKwxoSc3BsaXQsdHlwZT1jaGFubmVsEhgKEHB1bGxfYWxsX2ZpbHRlcnMYAiABKAgSRgoHb3B0aW9ucxgDIAMoCzI1LnRocmVhZC5QdWxsRmlsdGVyZWRUaHJlYWRzQnlDaGF0UmVxdWVzdC5PcHRpb25zRW50cnkaOQoNRmlsdGVyT3B0aW9ucxIOCgZjdXJzb3IYASABKAMSGAoMdGhyZWFkX2NvdW50GAIgASgFOgIyNRpmCgxPcHRpb25zRW50cnkSCwoDa2V5GAEgASgDEkUKBXZhbHVlGAIgASgLMjYudGhyZWFkLlB1bGxGaWx0ZXJlZFRocmVhZHNCeUNoYXRSZXF1ZXN0LkZpbHRlck9wdGlvbnM6AjgBIv8DCiFQdWxsRmlsdGVyZWRUaHJlYWRzQnlDaGF0UmVzcG9uc2USVgoPZmlsdGVyX291dGNvbWVzGAEgAygLMj0udGhyZWFkLlB1bGxGaWx0ZXJlZFRocmVhZHNCeUNoYXRSZXNwb25zZS5GaWx0ZXJPdXRjb21lc0VudHJ5GpECCg1GaWx0ZXJPdXRjb21lEiYKBmZpbHRlchgBIAIoCzIWLmVudGl0aWVzLlRocmVhZEZpbHRlchJnChF0aHJlYWRfaWRfY3Vyc29ycxgCIAMoCzJMLnRocmVhZC5QdWxsRmlsdGVyZWRUaHJlYWRzQnlDaGF0UmVzcG9uc2UuRmlsdGVyT3V0Y29tZS5UaHJlYWRJZEN1cnNvcnNFbnRyeRITCgtuZXh0X2N1cnNvchgDIAEoAxIQCghoYXNfbW9yZRgEIAEoCBIQCghwb3NpdGlvbhgFIAEoBRo2ChRUaHJlYWRJZEN1cnNvcnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBGm4KE0ZpbHRlck91dGNvbWVzRW50cnkSCwoDa2V5GAEgASgDEkYKBXZhbHVlGAIgASgLMjcudGhyZWFkLlB1bGxGaWx0ZXJlZFRocmVhZHNCeUNoYXRSZXNwb25zZS5GaWx0ZXJPdXRjb21lOgI4ASLlAwodUHVzaFRocmVhZEZpbHRlclVwZGF0ZWROb3RpY2USUgoPdXBkYXRlZF9maWx0ZXJzGAEgAygLMjkudGhyZWFkLlB1c2hUaHJlYWRGaWx0ZXJVcGRhdGVkTm90aWNlLlVwZGF0ZWRGaWx0ZXJzRW50cnkaHAoKVXBkYXRlSW5mbxIOCgZjdXJzb3IYASACKAMa5AEKDlVwZGF0ZWRGaWx0ZXJzElkKC3VwZGF0ZV9pbmZvGAEgAygLMkQudGhyZWFkLlB1c2hUaHJlYWRGaWx0ZXJVcGRhdGVkTm90aWNlLlVwZGF0ZWRGaWx0ZXJzLlVwZGF0ZUluZm9FbnRyeRISCgpjaGFubmVsX2lkGAIgASgJGmMKD1VwZGF0ZUluZm9FbnRyeRILCgNrZXkYASABKAMSPwoFdmFsdWUYAiABKAsyMC50aHJlYWQuUHVzaFRocmVhZEZpbHRlclVwZGF0ZWROb3RpY2UuVXBkYXRlSW5mbzoCOAEaawoTVXBkYXRlZEZpbHRlcnNFbnRyeRILCgNrZXkYASABKAkSQwoFdmFsdWUYAiABKAsyNC50aHJlYWQuUHVzaFRocmVhZEZpbHRlclVwZGF0ZWROb3RpY2UuVXBkYXRlZEZpbHRlcnM6AjgBIn0KC1JlbGF0ZWRVc2VyEg8KB3VzZXJfaWQYASACKAkSEgoKYXZhdGFyX3VybBgCIAEoCRIiCgZhdmF0YXIYAyABKAsyEi5lbnRpdGllcy5JbWFnZVNldBIlCgxhdmF0YXJfaW1hZ2UYBCABKAsyDy5lbnRpdGllcy5JbWFnZSKPBQoOUmVjb21tZW5kYXRpb24SEQoJdGhyZWFkX2lkGAEgASgJEgwKBHJhbmsYAiABKAMSNwoTcmVjb21tZW5kYXRpb25fdHlwZRgDIAEoDjIaLnRocmVhZC5SZWNvbW1lbmRhdGlvblR5cGUSOwoMdG9waWNfZ3JvdXBzGAQgAygLMiUudGhyZWFkLlJlY29tbWVuZGF0aW9uLlRvcGljR3JvdXBJdGVtEikKIWhhc19tb3JlX3JlY29tbWVuZGVkX3RvcGljX2dyb3VwcxgFIAEoCBIzChB0b3BpY19ncm91cF90eXBlGAYgASgOMhkuZW50aXRpZXMuVG9waWNHcm91cC5UeXBlGoUDCg5Ub3BpY0dyb3VwSXRlbRIWCg50b3BpY19ncm91cF9pZBgBIAIoCRIYChB0b3BpY19ncm91cF9uYW1lGAIgASgJEh8KBmF2YXRhchgDIAEoCzIPLmVudGl0aWVzLkltYWdlEiAKGHRvcGljX2dyb3VwX21lbWJlcl9jb3VudBgEIAEoBRJeChZpMThuX3RvcGljX2dyb3VwX25hbWVzGAUgAygLMj4udGhyZWFkLlJlY29tbWVuZGF0aW9uLlRvcGljR3JvdXBJdGVtLkkxOG5Ub3BpY0dyb3VwTmFtZXNFbnRyeRIqCg1yZWxhdGVkX3VzZXJzGAYgAygLMhMudGhyZWFkLlJlbGF0ZWRVc2VyEjYKC2pvaW5fc3RhdHVzGAcgASgOMiEudG9waWNfZ3JvdXAuVG9waWNHcm91cEpvaW5TdGF0dXMaOgoYSTE4blRvcGljR3JvdXBOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEilwEKIFB1bGxSZWNvbW1lbmRhdGlvbnNCeVVzZXJSZXF1ZXN0Eg4KBmN1cnNvchgBIAEoAxIYCgx0aHJlYWRfY291bnQYAiABKAU6AjIwEg8KB3JlZnJlc2gYAyABKAgSOAoUcmVjb21tZW5kYXRpb25fdHlwZXMYBCADKA4yGi50aHJlYWQuUmVjb21tZW5kYXRpb25UeXBlIqsBCiFQdWxsUmVjb21tZW5kYXRpb25zQnlVc2VyUmVzcG9uc2USLwoPcmVjb21tZW5kYXRpb25zGAEgAygLMhYudGhyZWFkLlJlY29tbWVuZGF0aW9uEhMKC25leHRfY3Vyc29yGAIgASgDEhAKCGhhc19tb3JlGAMgASgIEhUKDWltcHJlc3Npb25faWQYBCABKAMSFwoJcmVmcmVzaGVkGAUgASgIOgR0cnVlIqsFChNUaHJlYWRDaGF0dGVyQ2hhbmdlEhEKCWNoYW5uZWxJRBgBIAIoAxIQCgh0aHJlYWRJRBgCIAIoAxIPCgd1c2VySURzGAMgAygDEhQKDHVwZGF0ZVRpbWVOcxgEIAIoAxI7CgZhY3Rpb24YBSABKA4yIi50aHJlYWQuVGhyZWFkQ2hhdHRlckNoYW5nZS5BY3Rpb246B1VOS05PV04STwoSdXNlcnNUb0FjdGlvblR5cGVzGAYgAygLMjMudGhyZWFkLlRocmVhZENoYXR0ZXJDaGFuZ2UuVXNlcnNUb0FjdGlvblR5cGVzRW50cnkSFQoKcmV0cnlUaW1lcxgHIAEoBToBMBIbChNMYXN0TWVzc2FnZVBvc2l0aW9uGAggASgFEg4KBmxvY2FsZRgJIAEoCRIVCg1MYXN0TWVzc2FnZUlEGAogASgDEhEKCWlzTWVudGlvbhgLIAEoCBISCgpvcGVyYXRvcklEGAwgASgDEhEKCWF0VXNlcklEcxgNIAMoAxphChdVc2Vyc1RvQWN0aW9uVHlwZXNFbnRyeRILCgNrZXkYASABKAMSNQoFdmFsdWUYAiABKA4yJi50aHJlYWQuVGhyZWFkQ2hhdHRlckNoYW5nZS5BY3Rpb25UeXBlOgI4ASJnCgZBY3Rpb24SCwoHVU5LTk9XThAAEgoKBkZPTExPVxABEgwKCFVORk9MTE9XEAISCgoGQ1JFQVRFEAMSCgoGUkVQTEFZEAQSCwoHTUVOVElPThAFEhEKDVJFTU9WRV9USFJFQUQQBiJZCgpBY3Rpb25UeXBlEhEKDU1lc3NhZ2VBY3RpdmUQABISCg5NZXNzYWdlUGFzc2l2ZRABEg4KCkZsYWdBY3RpdmUQAhIUChBMZWF2ZVRocmVhZEdyb3VwEAMi7gEKFVVzZXJPcGVyYXRpb25JblRocmVhZBIOCgZ1c2VySUQYASACKAMSEAoIdGhyZWFkSUQYAiACKAMSEQoJY2hhbm5lbElEGAMgAigDEhcKD29wZXJhdGlvblRpbWVNcxgEIAIoAxJDCglvcGVyYXRpb24YBSABKA4yJy50aHJlYWQuVXNlck9wZXJhdGlvbkluVGhyZWFkLk9wZXJhdGlvbjoHVU5LTk9XTiJCCglPcGVyYXRpb24SCwoHVU5LTk9XThAAEgoKBkNSRUFURRABEgkKBVJFUExZEAISEQoNUkVNT1ZFX1RIUkVBRBADIokBCgxUaHJlYWRQYWNrZXQSMAoJVGhyZWFkU3ViGAEgASgLMhsudGhyZWFkLlRocmVhZENoYXR0ZXJDaGFuZ2VIABI+ChVVc2VyT3BlcmF0aW9uSW5UaHJlYWQYAiABKAsyHS50aHJlYWQuVXNlck9wZXJhdGlvbkluVGhyZWFkSABCBwoFZXZlbnQiNwoTVXNlclRvcGljSW1wcmVzc2lvbhIOCgZ1c2VySUQYASACKAMSEAoIdG9waWNJRHMYAiADKAMiXQoXUHV0UmVhZE15VGhyZWFkc1JlcXVlc3QSKgoKY2hhbm5lbF9pZBgBIAIoCUIWisMaEnNwbGl0LHR5cGU9Y2hhbm5lbBIWCg5yZWFkX3RpbWVzdGFtcBgDIAEoAyI9ChhQdXRSZWFkTXlUaHJlYWRzUmVzcG9uc2USIQoZbXlfdGhyZWFkc19sYXN0X3RpbWVzdGFtcBgBIAEoAyK6AQoWUHVzaE15VGhyZWFkc1JlYWRTdGF0ZRISCgpjaGFubmVsX2lkGAEgAigJEhYKDnJlYWRfdGltZXN0YW1wGAIgASgDEhYKDmxhc3RfdGltZXN0YW1wGAMgASgDEiUKCWZlZWRfY2FyZBgEIAEoCzISLmVudGl0aWVzLkZlZWRDYXJkEhQKDHVucmVhZF9jb3VudBgFIAEoBRIfChdsYXN0X2Rpc3BsYXlfbWVzc2FnZV9pZBgGIAEoAyIhCh9QdWxsVGhyZWFkQW5vbnltb3VzUXVvdGFSZXF1ZXN0ImAKIFB1bGxUaHJlYWRBbm9ueW1vdXNRdW90YVJlc3BvbnNlEhIKCmxlZnRfcXVvdGEYASACKAMSEwoLdG90YWxfcXVvdGEYAiABKAMSEwoLZXhwaXJlX3RpbWUYAyABKAMiXwofUHVzaFRocmVhZEFub255bW91c1F1b3RhUmVxdWVzdBISCgpsZWZ0X3F1b3RhGAEgAigDEhMKC3RvdGFsX3F1b3RhGAIgASgDEhMKC2V4cGlyZV90aW1lGAMgASgDIpkDCgxDaGF0VGVtcGxhdGUSEwoLdGVtcGxhdGVfaWQYASACKAkSNAoLYmFubmVyX3R5cGUYAiACKA4yHy50aHJlYWQuQ2hhdFRlbXBsYXRlLkJhbm5lclR5cGUSDAoEbmFtZRgDIAEoCRI1CgluYW1lX2kxOG4YBCADKAsyIi50aHJlYWQuQ2hhdFRlbXBsYXRlLk5hbWVJMThuRW50cnkSMQoFZXh0cmEYFCABKAsyIi50aHJlYWQuQ2hhdFRlbXBsYXRlLlRlbXBsYXRlRXh0cmEaWgoNVGVtcGxhdGVFeHRyYRIUCgxqb2luX2NoYXRfaWQYASABKAkSHwoGYXZhdGFyGAIgASgLMg8uZW50aXRpZXMuSW1hZ2USEgoKam9pbl90b2tlbhgDIAEoCRovCg1OYW1lSTE4bkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiOQoKQmFubmVyVHlwZRILCgdVTktOT1dOEAASDwoLQ1JFQVRFX0NIQVQQARINCglKT0lOX0NIQVQQAiIfCh1QdWxsQ2hhdFRlbXBsYXRlQmFubmVyUmVxdWVzdCKbAgoeUHVsbENoYXRUZW1wbGF0ZUJhbm5lclJlc3BvbnNlEg4KBmVuYWJsZRgBIAIoCBI0CgtiYW5uZXJfdHlwZRgCIAEoDjIfLnRocmVhZC5DaGF0VGVtcGxhdGUuQmFubmVyVHlwZRINCgV0aXRsZRgDIAEoCRJJCgp0aXRsZV9pMThuGAQgAygLMjUudGhyZWFkLlB1bGxDaGF0VGVtcGxhdGVCYW5uZXJSZXNwb25zZS5UaXRsZUkxOG5FbnRyeRInCgl0ZW1wbGF0ZXMYCiADKAsyFC50aHJlYWQuQ2hhdFRlbXBsYXRlGjAKDlRpdGxlSTE4bkVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiOQoiUHV0Q2hhdFRlbXBsYXRlQmFubmVyU3RhdHVzUmVxdWVzdBITCgtzaG93X2Jhbm5lchgBIAEoCCIlCiNQdXRDaGF0VGVtcGxhdGVCYW5uZXJTdGF0dXNSZXNwb25zZSLjAQoUUHVzaFRocmVhZFVwZGF0ZUluZm8SPgoHVGhyZWFkcxgBIAMoCzItLnRocmVhZC5QdXNoVGhyZWFkVXBkYXRlSW5mby5UaHJlYWRVcGRhdGVJbmZvGooBChBUaHJlYWRVcGRhdGVJbmZvEhEKCXRocmVhZF9pZBgBIAEoCRIdChVsYXN0X21lc3NhZ2VfcG9zaXRpb24YAiABKAUSEwoLcmVwbHlfY291bnQYAyABKAUSFwoPbGFzdF9tZXNzYWdlX2lkGAQgASgJEhYKDm5vX3JlcGx5X2NvdW50GAUgASgFKk0KElJlY29tbWVuZGF0aW9uVHlwZRIfChtVTktOT1dOX1JFQ09NTUVOREFUSU9OX1RZUEUQABIKCgZUSFJFQUQQARIKCgZHUk9VUFMQAkJKChZjb20uc3MuYW5kcm9pZC5sYXJrLnBiSANaLmNvZGUuYnl0ZWQub3JnL2xhcmsvaW0tcHJvdG9idWYvaW1wcm90by90aHJlYWQ",[J,Fl,y]),ZV=Zt(Et,0);var EV=Zt(Et,17);import{enumDesc as fo,fileDesc as Ko,messageDesc as ml,tsEnum as Mo}from"@bufbuild/protobuf/codegenv2";import{enumDesc as Un,fileDesc as ko,messageDesc as gt,tsEnum as Gn}from"@bufbuild/protobuf/codegenv2";var Wl=ko("ChdjYWxlbmRhcl9lbnRpdGllcy5wcm90bxIRY2FsZW5kYXJfZW50aXRpZXMiggEKGVJlc291cmNlQ3VzdG9taXphdGlvbkluZm8SEgoKc3RhcnRfdGltZRgBIAEoAxIRCglyb29tX25hbWUYAiABKAkSFwoPY3JlYXRlZF91c2VyX2lkGAMgASgDEg8KB2NvbW1lbnQYBCABKAkSFAoMY3JlYXRlZF90aW1lGAUgASgDIrgBChNTZWFyY2hFdmVudEluc3RhbmNlEhQKDGV2ZW50X3JlZl9pZBgBIAIoCRISCgpzdGFydF90aW1lGAIgAigDEhAKCGVuZF90aW1lGAMgAigDEhQKDGNyb3NzX2RheV9ubxgEIAEoBRIVCg1jcm9zc19kYXlfc3VtGAUgASgFEhwKFGNyb3NzX2RheV9zdGFydF90aW1lGAYgASgDEhoKEmNyb3NzX2RheV9lbmRfdGltZRgHIAEoAyLCAQoORXZlbnRIaWdoTGlnaHQSMgoDdGFnGAEgAigOMiUuY2FsZW5kYXJfZW50aXRpZXMuRXZlbnRIaWdoTGlnaHQuVGFnEhIKCmhpZ2hsaWdodHMYAiADKAkiaAoDVGFnEgsKB1VOS05PV04QABILCgdTVU1NQVJZEAESDwoLREVTQ1JJUFRJT04QAhIMCghMT0NBVElPThADEgwKCEFUVEVOREVFEAQSEAoMTUVFVElOR19ST09NEAUSCAoEQ0hBVBAGIsEEChJTZWFyY2hFdmVudENvbnRlbnQSEwoLY2FsZW5kYXJfaWQYASACKAkSCwoDdWlkGAIgAigJEhUKDW9yaWdpbmFsX3RpbWUYAyACKAMSDwoHc3VtbWFyeRgEIAIoCRIQCghhdHRlbmRlZRgFIAEoCRIRCglvcmdhbml6ZXIYBiABKAkSEAoIcmVzb3VyY2UYByABKAkSEAoIbG9jYXRpb24YCCABKAkSEwoLZGVzY3JpcHRpb24YCSABKAkSOwoQZXZlbnRfaGlnaGxpZ2h0cxgKIAMoCzIhLmNhbGVuZGFyX2VudGl0aWVzLkV2ZW50SGlnaExpZ2h0EhEKBW93bmVyGAsgASgJQgIYARJgChRzZWxmX2F0dGVuZGVlX3N0YXR1cxgMIAEoDjIqLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQuU2VsZkF0dGVuZGVlU3RhdHVzOhZBVFRFTkRFRV9TVEFUVVNfQUNDRVBUEhMKC2V2ZW50X2NvbG9yGA0gASgFEhIKCmlzX2FsbF9kYXkYDiABKAgSLgoNY2FsZW5kYXJfdHlwZRgPIAEoDjIXLmVudGl0aWVzLkNhbGVuZGFyLlR5cGUSFgoOc3RhcnRfdGltZXpvbmUYECABKAkSFwoPaXNfY3Jvc3NfdGVuYW50GBEgASgIEg8KB2NyZWF0b3IYEiABKAkSNgoPZW5jcnlwdGlvbl9pbmZvGBMgASgLMh0uZW50aXRpZXMuRXZlbnRFbmNyeXB0aW9uSW5mbyJ1ChxDYWxlbmRhckV2ZW50QXR0YWNobWVudEV4dHJhEhEKCWZpbGVfc2l6ZRgBIAEoCRIMCgRuYW1lGAIgASgJEhAKCHBvc2l0aW9uGAMgASgFEhAKCGRvY191cmxzGAQgAygJEhAKCHVybF9saW5rGAUgASgJIpUBChRQcmltYXJ5Q2FsZW5kYXJFeHRyYRI0ChF3b3JrX2hvdXJfc2V0dGluZxgBIAEoCzIZLmVudGl0aWVzLldvcmtIb3VyU2V0dGluZxISCgh0aW1lem9uZRgCIAEoCToAEjMKBW93bmVyGAMgASgLMiQuY2FsZW5kYXJfZW50aXRpZXMuV2ViQ2FsZW5kYXJNZW1iZXIiFAoST3RoZXJDYWxlbmRhckV4dHJhIk4KFVJlc291cmNlQ2FsZW5kYXJFeHRyYRI1Cg1yZXNvdXJjZV9pbmZvGAEgASgLMh4uZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZUluZm8iSgoTR29vZ2xlQ2FsZW5kYXJFeHRyYRIzChBleHRlcm5hbF9hY2NvdW50GAEgASgLMhkuZW50aXRpZXMuRXh0ZXJuYWxBY2NvdW50IkwKFUV4Y2hhbmdlQ2FsZW5kYXJFeHRyYRIzChBleHRlcm5hbF9hY2NvdW50GAEgASgLMhkuZW50aXRpZXMuRXh0ZXJuYWxBY2NvdW50ItIICgtXZWJDYWxlbmRhchINCgJpZBgBIAEoCToBMBIaCg9jcmVhdG9yX3VzZXJfaWQYAiABKAk6ATASGgoQZGVmYXVsdF90aW1lem9uZRgDIAEoCToAEkwKE2RlZmF1bHRfYWNjZXNzX3JvbGUYBCABKA4yHS5lbnRpdGllcy5DYWxlbmRhci5BY2Nlc3NSb2xlOhBGUkVFX0JVU1lfUkVBREVSEiwKBHR5cGUYBSABKA4yFy5lbnRpdGllcy5DYWxlbmRhci5UeXBlOgVPVEhFUhJJChBzZWxmX2FjY2Vzc19yb2xlGAYgASgOMh0uZW50aXRpZXMuQ2FsZW5kYXIuQWNjZXNzUm9sZToQRlJFRV9CVVNZX1JFQURFUhIbChBmb3JlZ3JvdW5kX2NvbG9yGAcgASgFOgEwEhsKEGJhY2tncm91bmRfY29sb3IYCCABKAU6ATASGQoKaXNfcHJpbWFyeRgKIAEoCDoFZmFsc2USGQoKaXNfZGVsZXRlZBgLIAEoCDoFZmFsc2USGAoJaXNfcHVibGljGAwgASgIOgVmYWxzZRIbCgxpc19hbGxfc3RhZmYYDSABKAg6BWZhbHNlEh4KE3Zpc2liaWxpdHlfcHJvcGVydHkYDiABKAU6ATASEQoHc3VtbWFyeRgPIAEoCToAEg4KBG5vdGUYECABKAk6ABIVCgtkZXNjcmlwdGlvbhgRIAEoCToAEjUKB21lbWJlcnMYEiADKAsyJC5jYWxlbmRhcl9lbnRpdGllcy5XZWJDYWxlbmRhck1lbWJlchIWCgtjcmVhdGVfdGltZRgTIAEoAzoBMBIWCgt1cGRhdGVfdGltZRgUIAEoAzoBMBIXCg9jYWxlbmRhcl9zY2hlbWEYFiABKAwSGQoRc2NoZW1hX2V4dHJhX2RhdGEYFyABKAwSIAoYY2FsZW5kYXJfZXZlbnRfc2NoZW1hX3YyGBggASgMEkgKFXByaW1hcnlfY2FsZW5kYXJfaW5mbxhlIAEoCzInLmNhbGVuZGFyX2VudGl0aWVzLlByaW1hcnlDYWxlbmRhckV4dHJhSAASRAoTb3RoZXJfY2FsZW5kYXJfaW5mbxhmIAEoCzIlLmNhbGVuZGFyX2VudGl0aWVzLk90aGVyQ2FsZW5kYXJFeHRyYUgAEkoKFnJlc291cmNlX2NhbGVuZGFyX2luZm8YZyABKAsyKC5jYWxlbmRhcl9lbnRpdGllcy5SZXNvdXJjZUNhbGVuZGFyRXh0cmFIABJGChRnb29nbGVfY2FsZW5kYXJfaW5mbxhoIAEoCzImLmNhbGVuZGFyX2VudGl0aWVzLkdvb2dsZUNhbGVuZGFyRXh0cmFIABJKChZleGNoYW5nZV9jYWxlbmRhcl9pbmZvGGkgASgLMiguY2FsZW5kYXJfZW50aXRpZXMuRXhjaGFuZ2VDYWxlbmRhckV4dHJhSABCBwoFZXh0cmEi4QMKEVdlYkNhbGVuZGFyTWVtYmVyEkMKBHR5cGUYASABKA4yKS5jYWxlbmRhcl9lbnRpdGllcy5XZWJDYWxlbmRhck1lbWJlci5UeXBlOgpJTkRJVklEVUFMEkQKC2FjY2Vzc19yb2xlGAIgASgOMh0uZW50aXRpZXMuQ2FsZW5kYXIuQWNjZXNzUm9sZToQRlJFRV9CVVNZX1JFQURFUhIZCgppc19kZWxldGVkGAMgASgIOgVmYWxzZRIOCgRuYW1lGAQgASgJOgASFAoKYXZhdGFyX2tleRgFIAEoCToAEhEKB2ZzX3VuaXQYBiABKAk6ABJFCgppbmRpdmlkdWFsGGUgASgLMi8uY2FsZW5kYXJfZW50aXRpZXMuV2ViQ2FsZW5kYXJNZW1iZXIuSW5kaXZpZHVhbEgAEjsKBWdyb3VwGGYgASgLMiouY2FsZW5kYXJfZW50aXRpZXMuV2ViQ2FsZW5kYXJNZW1iZXIuR3JvdXBIABogCgpJbmRpdmlkdWFsEhIKB3VzZXJfaWQYASABKAk6ATAaGwoFR3JvdXASEgoHY2hhdF9pZBgBIAEoCToBMCIhCgRUeXBlEg4KCklORElWSURVQUwQARIJCgVHUk9VUBACQgcKBWV4dHJhItoPChBXZWJDYWxlbmRhckV2ZW50Eg0KAmlkGAEgASgJOgEwEg0KA2tleRgCIAEoCToAEhgKDW9yaWdpbmFsX3RpbWUYAyABKAM6ATASFgoLY2FsZW5kYXJfaWQYBCABKAk6ATASIAoVb3JnYW5pemVyX2NhbGVuZGFyX2lkGAUgASgJOgEwEh4KE2NyZWF0b3JfY2FsZW5kYXJfaWQYBiABKAk6ATASIAoVc3VjY2Vzc29yX2NhbGVuZGFyX2lkGAcgASgJOgEwEhwKEm9yaWdpbmFsX2V2ZW50X2tleRgIIAEoCToAEiIKE29yaWdpbmFsX2lzX2FsbF9kYXkYCSABKAg6BWZhbHNlEhYKB2lzX2ZyZWUYCiABKAg6BWZhbHNlEhkKCmlzX2FsbF9kYXkYCyABKAg6BWZhbHNlEh4KD2lzX2Nyb3NzX3RlbmFudBgMIAEoCDoFZmFsc2USGQoKaXNfZGVsZXRlZBgNIAEoCDoFZmFsc2USFAoJbGFzdF9kYXRlGA4gASgDOgEwEjcKBnNvdXJjZRgPIAEoDjIeLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQuU291cmNlOgdVTktOT1dOEhEKBWNvbG9yGBAgASgFOgItMRI/Cgp2aXNpYmlsaXR5GBEgASgOMiIuZW50aXRpZXMuQ2FsZW5kYXJFdmVudC5WaXNpYmlsaXR5OgdERUZBVUxUEhIKB3ZlcnNpb24YEiABKAM6ATASOQoGc3RhdHVzGBMgASgOMh4uZW50aXRpZXMuQ2FsZW5kYXJFdmVudC5TdGF0dXM6CVRFTlRBVElWRRIPCgVycnVsZRgUIAEoCToAEh4KEGd1ZXN0X2Nhbl9pbnZpdGUYFSABKAg6BHRydWUSKAoaZ3Vlc3RfY2FuX3NlZV9vdGhlcl9ndWVzdHMYFiABKAg6BHRydWUSHwoQZ3Vlc3RfY2FuX21vZGlmeRgXIAEoCDoFZmFsc2USZgoUc2VsZl9hdHRlbmRlZV9zdGF0dXMYGCABKA4yKi5lbnRpdGllcy5DYWxlbmRhckV2ZW50LlNlbGZBdHRlbmRlZVN0YXR1czocQVRURU5ERUVfU1RBVFVTX05FRURTX0FDVElPThIVCgpzdGFydF90aW1lGBkgASgDOgEwEhgKDnN0YXJ0X3RpbWV6b25lGBogASgJOgASEwoIZW5kX3RpbWUYGyABKAM6ATASFgoMZW5kX3RpbWV6b25lGBwgASgJOgASEQoHc3VtbWFyeRgdIAEoCToAEhUKC2Rlc2NyaXB0aW9uGB4gASgJOgASGgoQZG9jc19kZXNjcmlwdGlvbhgfIAEoCToAEjIKCWxvY2F0aW9ucxggIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRMb2NhdGlvbhI+CglhdHRlbmRlZXMYISADKAsyKy5jYWxlbmRhcl9lbnRpdGllcy5XZWJDYWxlbmRhckV2ZW50QXR0ZW5kZWUSJQoJcmVtaW5kZXJzGCIgAygLMhIuZW50aXRpZXMuUmVtaW5kZXISFgoLY3JlYXRlX3RpbWUYIyABKAM6ATASFgoLdXBkYXRlX3RpbWUYJCABKAM6ATASPgoJb3JnYW5pemVyGCUgASgLMisuY2FsZW5kYXJfZW50aXRpZXMuV2ViQ2FsZW5kYXJFdmVudEF0dGVuZGVlEjwKB2NyZWF0b3IYJiABKAsyKy5jYWxlbmRhcl9lbnRpdGllcy5XZWJDYWxlbmRhckV2ZW50QXR0ZW5kZWUSPgoJc3VjY2Vzc29yGCcgASgLMisuY2FsZW5kYXJfZW50aXRpZXMuV2ViQ2FsZW5kYXJFdmVudEF0dGVuZGVlEioKBHR5cGUYKCABKA4yHC5lbnRpdGllcy5DYWxlbmRhckV2ZW50LlR5cGUSNgoLYXR0YWNobWVudHMYKSADKAsyIS5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0YWNobWVudBJGCg1hdHRlbmRlZV9pbmZvGCogASgLMi8uY2FsZW5kYXJfZW50aXRpZXMuV2ViQ2FsZW5kYXJFdmVudEF0dGVuZGVlSW5mbxIyCgZzY2hlbWEYKyABKAsyIi5lbnRpdGllcy5DYWxlbmRhclNjaGVtYUNvbGxlY3Rpb24SUQoPYXR0ZW5kZWVfc291cmNlGCwgASgOMjIuY2FsZW5kYXJfZW50aXRpZXMuV2ViQ2FsZW5kYXJFdmVudC5BdHRlbmRlZVNvdXJjZToETEFSSxIcChJtZWV0aW5nX21pbnV0ZV91cmwYLSABKAk6ABIcChJpbnZpdGVfb3BlcmF0b3JfaWQYLiABKAk6ABImCg12aWRlb19tZWV0aW5nGC8gASgLMg8uZW50aXRpZXMuVmNoYXQSEQoJc2NoZW1hX3YyGDAgASgMEjAKDHZpZGVvX2NvbmZpZxgxIAEoCzIaLmVudGl0aWVzLkV2ZW50VkNoYXRDb25maWcSNgoPZW5jcnlwdGlvbl9pbmZvGDIgASgLMh0uZW50aXRpZXMuRXZlbnRFbmNyeXB0aW9uSW5mbxISCgppc193ZWJpbmFyGDMgASgIIjcKDkF0dGVuZGVlU291cmNlEggKBExBUksQARIICgRNQUlMEAISEQoNRVhDSEFOR0VfU1lOQxADIr0KChhXZWJDYWxlbmRhckV2ZW50QXR0ZW5kZWUSDAoCaWQYASABKAk6ABINCgNrZXkYAiABKAk6ABIYCg1vcmlnaW5hbF90aW1lGAMgASgDOgEwEhYKDGRpc3BsYXlfbmFtZRgEIAEoCToAEh8KFGF0dGVuZGVlX2NhbGVuZGFyX2lkGAUgASgJOgEwEhsKDGlzX29yZ2FuaXplchgGIAEoCDoFZmFsc2USGgoLaXNfb3B0aW9uYWwYByABKAg6BWZhbHNlEkQKBnN0YXR1cxgIIAEoDjImLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRlbmRlZS5TdGF0dXM6DE5FRURTX0FDVElPThIdChNpbnZpdGVyX2NhbGVuZGFyX2lkGAkgASgJOgASFAoKYXZhdGFyX2tleRgKIAEoCToAEkwKCGNhdGVnb3J5GAsgASgOMjQuY2FsZW5kYXJfZW50aXRpZXMuV2ViQ2FsZW5kYXJFdmVudEF0dGVuZGVlLkNhdGVnb3J5OgRVU0VSEhEKB2ZzX3VuaXQYDCABKAk6ABIXCg9hdHRlbmRlZV9zY2hlbWEYDSABKAwSGQoRc2NoZW1hX2V4dHJhX2RhdGEYDiABKAwSQAoEdXNlchhkIAEoCzIwLmNhbGVuZGFyX2VudGl0aWVzLldlYkNhbGVuZGFyRXZlbnRBdHRlbmRlZS5Vc2VySAASQgoFZ3JvdXAYZSABKAsyMS5jYWxlbmRhcl9lbnRpdGllcy5XZWJDYWxlbmRhckV2ZW50QXR0ZW5kZWUuR3JvdXBIABJICghyZXNvdXJjZRhmIAEoCzI0LmNhbGVuZGFyX2VudGl0aWVzLldlYkNhbGVuZGFyRXZlbnRBdHRlbmRlZS5SZXNvdXJjZUgAElYKEHRoaXJkX3BhcnR5X3VzZXIYZyABKAsyOi5jYWxlbmRhcl9lbnRpdGllcy5XZWJDYWxlbmRhckV2ZW50QXR0ZW5kZWUuVGhpcmRQYXJ0eVVzZXJIABpiCgRVc2VyEhIKB3VzZXJfaWQYASABKAk6ATASFAoJdGVuYW50X2lkGAIgASgJOgEwEjAKBHRhZ3MYAyADKAsyIi5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWVUYWcaqgIKBUdyb3VwEhMKCGdyb3VwX2lkGAEgASgJOgEwEjwKB21lbWJlcnMYAiADKAsyKy5jYWxlbmRhcl9lbnRpdGllcy5XZWJDYWxlbmRhckV2ZW50QXR0ZW5kZWUSFAoJdGVuYW50X2lkGAMgASgJOgEwEh4KD2lzX2Nyb3NzX3RlbmFudBgEIAEoCDoFZmFsc2USHAoNb3Blbl9zZWN1cml0eRgFIAEoCDoFZmFsc2USHAoRc2hvd19tZW1iZXJfbGltaXQYBiABKAU6ATASFwoMbWVtYmVyX2NvdW50GAcgASgFOgEwEiIKE2hhc19yZW1vdmVkX21lbWJlcnMYCCABKAg6BWZhbHNlEh8KEGlzX3NlbGZfaW5fZ3JvdXAYCSABKAg6BWZhbHNlGjsKCFJlc291cmNlEhMKCXRlbmFudF9pZBgBIAEoCToAEhoKC2lzX2Rpc2FibGVkGAIgASgIOgVmYWxzZRofCg5UaGlyZFBhcnR5VXNlchINCgVlbWFpbBgBIAEoCSJDCghDYXRlZ29yeRIICgRVU0VSEAESCQoFR1JPVVAQAhIMCghSRVNPVVJDRRADEhQKEFRISVJEX1BBUlRZX1VTRVIQBEIMCgpkZXBlbmRlbmN5IqMBChxXZWJDYWxlbmRhckV2ZW50QXR0ZW5kZWVJbmZvEhYKC3RvdGFsX2NvdW50GAEgASgFOgEwEhcKDGFjY2VwdF9jb3VudBgCIAEoBToBMBIYCg1kZWNsaW5lX2NvdW50GAMgASgFOgEwEhoKD3RlbnRhdGl2ZV9jb3VudBgEIAEoBToBMBIcChFuZWVkX2FjdGlvbl9jb3VudBgFIAEoBToBMCJQChVSZXNvdXJjZUFwcHJvdmFsRXh0cmESGQoRYXBwcm92ZXJfdXNlcl9pZHMYASADKAMSDgoGcmVhc29uGAIgASgJEgwKBGZvcm0YAyABKAkikxIKD1NjaGVtYUV4dHJhRGF0YRI8CghiaXpfZGF0YRgBIAMoCzIqLmNhbGVuZGFyX2VudGl0aWVzLlNjaGVtYUV4dHJhRGF0YS5CaXpEYXRhGowBChRSZXNvdXJjZUFwcHJvdmFsSW5mbxIZChFhcHByb3Zlcl91c2VyX2lkcxgBIAMoCRJDCgd0cmlnZ2VyGAIgASgLMjIuY2FsZW5kYXJfZW50aXRpZXMuU2NoZW1hRXh0cmFEYXRhLkFwcHJvdmFsVHJpZ2dlchIUCgxhZG1pbl9vbl9vZmYYAyABKAgamAEKFVJlc291cmNlQ3VzdG9taXphdGlvbhJQChJjdXN0b21pemF0aW9uX2RhdGEYASADKAsyNC5jYWxlbmRhcl9lbnRpdGllcy5TY2hlbWFFeHRyYURhdGEuQ3VzdG9taXphdGlvbkRhdGESEwoLY29udGFjdF9pZHMYAiADKAkSGAoQcHJlcGFyYXRpb25fdGltZRgDIAEoAxraAgoRQ3VzdG9taXphdGlvbkRhdGESUAoSY3VzdG9taXphdGlvbl90eXBlGAEgASgOMjQuY2FsZW5kYXJfZW50aXRpZXMuU2NoZW1hRXh0cmFEYXRhLkN1c3RvbWl6YXRpb25UeXBlEhMKC2lzX3JlcXVpcmVkGAIgASgIEg0KBWxhYmVsGAMgASgJEhEKCWluZGV4X2tleRgEIAEoCRJHCgdvcHRpb25zGAUgAygLMjYuY2FsZW5kYXJfZW50aXRpZXMuU2NoZW1hRXh0cmFEYXRhLkN1c3RvbWl6YXRpb25PcHRpb24SRgoKY29uZGl0aW9ucxgGIAMoCzIyLmNhbGVuZGFyX2VudGl0aWVzLlNjaGVtYUV4dHJhRGF0YS5PcHRpb25Db25kaXRpb24SFQoNaW5wdXRfY29udGVudBgHIAEoCRIUCgxwbGFjZV9ob2xkZXIYCCABKAkamQEKE0N1c3RvbWl6YXRpb25PcHRpb24SEQoJaXNfb3RoZXJzGAEgASgIEhYKDm90aGVyc19jb250ZW50GAIgASgJEhQKDG9wdGlvbl9sYWJlbBgDIAEoCRIYChBvcHRpb25faW1hZ2VfdXJsGAQgASgJEhIKCm9wdGlvbl9rZXkYBSABKAkSEwoLaXNfc2VsZWN0ZWQYBiABKAgaOgoPT3B0aW9uQ29uZGl0aW9uEhIKCmN1c3RvbV9rZXkYASABKAkSEwoLb3B0aW9uX2tleXMYAiADKAka3QIKEFJlc291cmNlU3RyYXRlZ3kSGwoTc2luZ2xlX21heF9kdXJhdGlvbhgBIAEoBRIaChJ1bnRpbF9tYXhfZHVyYXRpb24YAiABKAUSGAoQZGFpbHlfc3RhcnRfdGltZRgDIAEoBRIWCg5kYWlseV9lbmRfdGltZRgEIAEoBRIQCgh0aW1lem9uZRgFIAEoCRIaChJlYXJsaWVzdF9ib29rX3RpbWUYByABKAUSEwoLbWF4X3dvcmtkYXkYCCABKAUSYgoTbWF4X3Jlc2VydmFibGVfdHlwZRgJIAEoDjJFLmNhbGVuZGFyX2VudGl0aWVzLlNjaGVtYUV4dHJhRGF0YS5SZXNvdXJjZVN0cmF0ZWd5Lk1heFJlc2VydmFibGVUeXBlIjcKEU1heFJlc2VydmFibGVUeXBlEgsKB1VOS05PV04QABIHCgNEQVkQARIMCghXT1JLX0RBWRACGpwBCg9BcHByb3ZhbFJlcXVlc3QSDgoGcmVhc29uGAEgASgJEhkKEWFwcHJvdmVyX3VzZXJfaWRzGAIgAygJEhkKEWNyZWF0ZV9jaGF0dGVyX2lkGAMgASgJEkMKB3RyaWdnZXIYBCABKAsyMi5jYWxlbmRhcl9lbnRpdGllcy5TY2hlbWFFeHRyYURhdGEuQXBwcm92YWxUcmlnZ2VyGisKD0FwcHJvdmFsVHJpZ2dlchIYChBkdXJhdGlvbl90cmlnZ2VyGAEgASgDGmAKE1Jlc291cmNlUmVxdWlzaXRpb24SEgoKc3RhcnRfdGltZRgBIAEoAxIQCghlbmRfdGltZRgCIAEoAxITCgtjb250YWN0X2lkcxgDIAMoCRIOCgZyZWFzb24YBCABKAka+QMKB0JpekRhdGESNQoEdHlwZRgBIAIoDjInLmNhbGVuZGFyX2VudGl0aWVzLlNjaGVtYUV4dHJhRGF0YS5UeXBlElkKFnJlc291cmNlX2FwcHJvdmFsX2luZm8YZCABKAsyNy5jYWxlbmRhcl9lbnRpdGllcy5TY2hlbWFFeHRyYURhdGEuUmVzb3VyY2VBcHByb3ZhbEluZm9IABJOChBhcHByb3ZhbF9yZXF1ZXN0GGUgASgLMjIuY2FsZW5kYXJfZW50aXRpZXMuU2NoZW1hRXh0cmFEYXRhLkFwcHJvdmFsUmVxdWVzdEgAElAKEXJlc291cmNlX3N0cmF0ZWd5GGYgASgLMjMuY2FsZW5kYXJfZW50aXRpZXMuU2NoZW1hRXh0cmFEYXRhLlJlc291cmNlU3RyYXRlZ3lIABJWChRyZXNvdXJjZV9yZXF1aXNpdGlvbhhnIAEoCzI2LmNhbGVuZGFyX2VudGl0aWVzLlNjaGVtYUV4dHJhRGF0YS5SZXNvdXJjZVJlcXVpc2l0aW9uSAASWgoWcmVzb3VyY2VfY3VzdG9taXphdGlvbhhoIAEoCzI4LmNhbGVuZGFyX2VudGl0aWVzLlNjaGVtYUV4dHJhRGF0YS5SZXNvdXJjZUN1c3RvbWl6YXRpb25IAEIGCgRkYXRhIpIBCgRUeXBlEgsKB1VOS05PV04QABIaChZSRVNPVVJDRV9BUFBST1ZBTF9JTkZPEAESFAoQQVBQUk9WQUxfUkVRVUVTVBACEhUKEVJFU09VUkNFX1NUUkFURUdZEAMSGAoUUkVTT1VSQ0VfUkVRVUlTSVRJT04QBBIaChZSRVNPVVJDRV9DVVNUT01JWkFUSU9OEAUiRAoRQ3VzdG9taXphdGlvblR5cGUSEAoMU2luZ2xlU2VsZWN0EAESEgoOTXVsdGlwbGVTZWxlY3QQAhIJCgVJbnB1dBADIjIKDFRpbWVvZmZFeHRyYRINCgV0aXRsZRgBIAEoCRITCgtkZXNjcmlwdGlvbhgCIAEoCSLgAwoWTWVldGluZ1Jvb21JbmZvcm1hdGlvbhITCghjYXBhY2l0eRgBIAIoAzoBMBInCgplcXVpcG1lbnRzGAIgAygLMhMuZW50aXRpZXMuRXF1aXBtZW50EjkKEXJlc291cmNlX3N0cmF0ZWd5GAMgASgLMhouZW50aXRpZXMuUmVzb3VyY2VTdHJhdGVneUICGAESEwoLaXNfYXBwcm92YWwYBCABKAgSDgoGcmVtYXJrGAUgASgJEg8KB3BpY3R1cmUYBiABKAkSWQoVcmVzb3VyY2VfcmVxdWlzaXRpb25zGAcgASgLMjYuY2FsZW5kYXJfZW50aXRpZXMuU2NoZW1hRXh0cmFEYXRhLlJlc291cmNlUmVxdWlzaXRpb25CAhgBEhsKE3Nob3VsZF9zaG93X3N1bW1hcnkYCCABKAgSEwoLbGV2ZWxfbmFtZXMYCSADKAkSFQoNYnVpbGRpbmdfbmFtZRgKIAEoCRIzCgxkaXNwbGF5X3R5cGUYCyABKA4yHS5lbnRpdGllcy5SZXNvdXJjZURpc3BsYXlUeXBlEj4KDHBpY3R1cmVfdXJscxgMIAMoCzIoLmNhbGVuZGFyX2VudGl0aWVzLk1lZXRpbmdSb29tUGljdHVyZVVSTCIzChVNZWV0aW5nUm9vbVBpY3R1cmVVUkwSCwoDdXJsGAEgASgJEg0KBW9yZGVyGAIgASgDIvcBChNJbnN0YW5jZUNoZWNrSW5JbmZvEhMKC2luc3RhbmNlX2lkGAEgASgJEiEKGWNoZWNrX2luX3RpbWVzdGFtcF9zZWNvbmQYAiABKAMSSwoPY2hlY2tfaW5fc3RhdHVzGAMgASgOMjIuY2FsZW5kYXJfZW50aXRpZXMuSW5zdGFuY2VDaGVja0luSW5mby5DaGVja0luVHlwZSJbCgtDaGVja0luVHlwZRILCgdVTktOT1dOEAASFAoQQUxSRUFEWV9DSEVDS19JThABEhAKDE5PVF9DSEVDS19JThACEhcKE1VTRVJfTk9UX0FVVEhPUklaRUQQAyKkAgoXUmVzb3VyY2VDaGVja0luU3RyYXRlZ3kSJgoeZHVyYXRpb25fYmVmb3JlX3N0YXJ0X2NoZWNrX2luGAEgASgDEiUKHWR1cmF0aW9uX2FmdGVyX3N0YXJ0X2NoZWNrX2luGAIgASgDEkoKCXFyX3N0YXR1cxgDIAEoDjI3LmNhbGVuZGFyX2VudGl0aWVzLlJlc291cmNlQ2hlY2tJblN0cmF0ZWd5LlFSQ29kZVN0YXR1cxIdChVpc19xcl9jaGVja19pbl9lbmFibGUYBCABKAgiTwoMUVJDb2RlU3RhdHVzEgsKB1VOS05PV04QABINCglBQ1RJVkFURUQQARIPCgtJTkFDVElWQVRFRBACEhIKDkZJUlNUQUNUSVZBVEVEEAMiTQoWUmVzb3VyY2VBcHByb3ZhbENvbmZpZxIOCgZvbl9vZmYYASABKAgSEAoIZHVyYXRpb24YAiABKAMSEQoJYXBwcm92ZXJzGAMgAygDIrsGChJDYWxlbmRhckJhc2ljRXZlbnQSEAoIZXZlbnRfaWQYAiABKAkSEgoKdW5pcXVlX2tleRgDIAEoCRIYCg5vcmlnaW5hbF9ldmVudBgEIAEoCToAEhUKDW9yaWdpbmFsX3RpbWUYBSABKAMSGwoTY3JlYXRvcl9jYWxlbmRhcl9pZBgGIAEoCRIdChVvcmdhbml6ZXJfY2FsZW5kYXJfaWQYByABKAkSEQoHc3VtbWFyeRgIIAEoCToAEg8KBXJydWxlGAogASgJOgASDQoFc3RhcnQYCyABKAMSGAoOc3RhcnRfdGltZXpvbmUYDCABKAk6ABILCgNlbmQYDSABKAMSFgoMZW5kX3RpbWV6b25lGA4gASgJOgASRwoGc3RhdHVzGA8gASgOMiwuY2FsZW5kYXJfZW50aXRpZXMuQ2FsZW5kYXJCYXNpY0V2ZW50LlN0YXR1czoJQ09ORklSTUVEEjkKBnNvdXJjZRgQIAEoDjIeLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQuU291cmNlOglQQ19DTElFTlQSGgoPYXR0ZW5kZWVfc291cmNlGBEgASgFOgExEh8KFXN1Y2Nlc3Nvcl9jYWxlbmRhcl9pZBgSIAEoCToAEhkKCmlzX2RlbGV0ZWQYHiABKAg6BWZhbHNlEhkKCmlzX2FsbF9kYXkYICABKAg6BWZhbHNlEh4KD2lzX2Nyb3NzX3RlbmFudBghIAEoCDoFZmFsc2USJgoYZ3Vlc3RzX2Nhbl9pbnZpdGVfb3RoZXJzGCggASgIOgR0cnVlEikKG2d1ZXN0c19jYW5fc2VlX290aGVyX2d1ZXN0cxgpIAEoCDoEdHJ1ZRIgChFndWVzdHNfY2FuX21vZGlmeRgqIAEoCDoFZmFsc2USNgoPZW5jcnlwdGlvbl9pbmZvGCsgASgLMh0uZW50aXRpZXMuRXZlbnRFbmNyeXB0aW9uSW5mbxIlCh1zZW5kX3Ntc19ub3RpZmljYXRpb25fc2V0dGluZxgsIAEoCCI1CgZTdGF0dXMSDQoJVEVOVEFUSVZFEAESDQoJQ09ORklSTUVEEAISDQoJQ0FOQ0VMTEVEEAMi6wMKEENhbGVuZGFyRXZlbnRSZWYSDAoCaWQYASABKAk6ABITCgtjYWxlbmRhcl9pZBgCIAEoCRJyChRzZWxmX2F0dGVuZGVlX3N0YXR1cxgDIAEoDjI2LmNhbGVuZGFyX2VudGl0aWVzLkNhbGVuZGFyRXZlbnRSZWYuU2VsZkF0dGVuZGVlU3RhdHVzOhxBVFRFTkRFRV9TVEFUVVNfTkVFRFNfQUNUSU9OEhEKBWNvbG9yGAQgASgFOgItMRISCgd2ZXJzaW9uGAUgASgDOgEwEj8KCnZpc2liaWxpdHkYBiABKA4yIi5lbnRpdGllcy5DYWxlbmRhckV2ZW50LlZpc2liaWxpdHk6B0RFRkFVTFQSFgoHaXNfZnJlZRgHIAEoCDoFZmFsc2USEgoKaXNfZGVsZXRlZBgIIAEoCCKrAQoSU2VsZkF0dGVuZGVlU3RhdHVzEiAKHEFUVEVOREVFX1NUQVRVU19ORUVEU19BQ1RJT04QARIaChZBVFRFTkRFRV9TVEFUVVNfQUNDRVBUEAISHQoZQVRURU5ERUVfU1RBVFVTX1RFTlRBVElWRRADEhsKF0FUVEVOREVFX1NUQVRVU19ERUNMSU5FEAQSGwoXQVRURU5ERUVfU1RBVFVTX1JFTU9WRUQQBSLZCgoJRXZlbnRJbmZvEhMKC2NhbGVuZGFyX2lkGAEgASgJEhIKCnVuaXF1ZV9rZXkYAiABKAkSFQoNb3JpZ2luYWxfdGltZRgDIAEoAxI6CgtiYXNpY19ldmVudBgEIAEoCzIlLmNhbGVuZGFyX2VudGl0aWVzLkNhbGVuZGFyQmFzaWNFdmVudBI/ChJjYWxlbmRhcl9ldmVudF9yZWYYBSABKAsyIy5jYWxlbmRhcl9lbnRpdGllcy5DYWxlbmRhckV2ZW50UmVmEiUKCXJlbWluZGVycxgGIAMoCzISLmVudGl0aWVzLlJlbWluZGVyEjIKCWxvY2F0aW9ucxgHIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRMb2NhdGlvbhIyCglhdHRlbmRlZXMYFCADKAsyHy5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWUSTAoeY2FsZW5kYXJfZXZlbnRfZ3JvdXBfYXR0ZW5kZWVzGBUgAygLMiQuZW50aXRpZXMuQ2FsZW5kYXJFdmVudEdyb3VwQXR0ZW5kZWUSMgoNYXR0ZW5kZWVfaW5mbxgWIAEoCzIbLmVudGl0aWVzLkV2ZW50QXR0ZW5kZWVJbmZvEjgKBHR5cGUYHiABKA4yHC5lbnRpdGllcy5DYWxlbmRhckV2ZW50LlR5cGU6DERFRkFVTFRfVFlQRRIUCgptZWV0aW5nX2lkGB8gASgJOgASGQoPdmNoYXRfdW5pcXVlX2lkGCEgASgJOgASNgoSZ29vZ2xlX2V2ZW50X2V4dHJhGCggASgLMhouZW50aXRpZXMuR29vZ2xlRXZlbnRFeHRyYRIwCgx2aWRlb19jb25maWcYMiABKAsyGi5lbnRpdGllcy5FdmVudFZDaGF0Q29uZmlnEkkKCGNhdGVnb3J5GDwgASgOMiUuY2FsZW5kYXJfZW50aXRpZXMuRXZlbnRJbmZvLkNhdGVnb3J5OhBERUZBVUxUX0NBVEVHT1JZEjUKD2NoZWNrX2luX2NvbmZpZxhGIAEoCzIcLmVudGl0aWVzLkV2ZW50Q2hlY2tJbkNvbmZpZxI4Cgx3ZWJpbmFyX2luZm8YRyABKAsyIi5lbnRpdGllcy5DYWxlbmRhckV2ZW50V2ViaW5hckluZm8SJwoMcmVsYXRpb25fdGFnGEggASgLMhEuZW50aXRpZXMuVGFnRGF0YRIRCgljb21taXRfaWQYSSABKAkSOgoUbWVldGluZ19ub3Rlc19jb25maWcYSiABKAsyHC5lbnRpdGllcy5NZWV0aW5nTm90ZXNDb25maWcSOAoTbWVldGluZ19jaGF0X2NvbmZpZxhLIAEoCzIbLmVudGl0aWVzLk1lZXRpbmdDaGF0Q29uZmlnEkMKGXJlc291cmNlX3dhaXRfbGlzdF9vcmRlcnMYTCABKAsyIC5lbnRpdGllcy5SZXNvdXJjZVdhaXRMaXN0T3JkZXJzEjoKFGV4dGVybmFsX2V2ZW50X2V4dHJhGE0gASgLMhwuZW50aXRpZXMuRXh0ZXJuYWxFdmVudEV4dHJhEkMKGWV2ZW50X2Nyb3NzX2xhbmd1YWdlX2RhdGEYTiABKAsyIC5lbnRpdGllcy5FdmVudENyb3NzTGFuZ3VhZ2VEYXRhInUKCENhdGVnb3J5EhQKEERFRkFVTFRfQ0FURUdPUlkQARIVChFTQU1FX1BBR0VfTUVFVElORxACEhUKEVJFU09VUkNFX1NUUkFURUdZEAMSGAoUUkVTT1VSQ0VfUkVRVUlTSVRJT04QBBILCgdXRUJJTkFSEAUiXQoMTGV2ZWxDb250ZW50EgwKBG5hbWUYASABKAkSEAoIbGV2ZWxfaWQYAiABKAkSEQoJaGFzX2NoaWxkGAMgASgIEhoKEm5vX3VzYWJsZV9yZXNvdXJjZRgEIAEoCCKhAwoQTGV2ZWxSZWxhdGVkSW5mbxI4Cg9zb25fbGV2ZWxfaW5mb3MYASADKAsyHy5jYWxlbmRhcl9lbnRpdGllcy5MZXZlbENvbnRlbnQSMQoNc29uX3Jlc291cmNlcxgCIAMoCzIaLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2USFwoPcGFyZW50X2xldmVsX2lkGAMgASgJElAKD3Jlc291cmNlX3dlaWdodBgEIAMoCzI3LmNhbGVuZGFyX2VudGl0aWVzLkxldmVsUmVsYXRlZEluZm8uUmVzb3VyY2VXZWlnaHRFbnRyeRJKCgxsZXZlbF93ZWlnaHQYBSADKAsyNC5jYWxlbmRhcl9lbnRpdGllcy5MZXZlbFJlbGF0ZWRJbmZvLkxldmVsV2VpZ2h0RW50cnkaNQoTUmVzb3VyY2VXZWlnaHRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBGjIKEExldmVsV2VpZ2h0RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASJGCg9BdXRvRGlzcGxheVBhdGgSMwoKbGV2ZWxfbm9kZRgBIAMoCzIfLmNhbGVuZGFyX2VudGl0aWVzLkxldmVsQ29udGVudCLGAwoPQ3JlYXRlRXZlbnRJbmZvEhMKC2NhbGVuZGFyX2lkGAEgASgJEhIKCnVuaXF1ZV9rZXkYAiABKAkSFQoNb3JpZ2luYWxfdGltZRgDIAEoAxI6CgtiYXNpY19ldmVudBgEIAEoCzIlLmNhbGVuZGFyX2VudGl0aWVzLkNhbGVuZGFyQmFzaWNFdmVudBI/ChJjYWxlbmRhcl9ldmVudF9yZWYYBSABKAsyIy5jYWxlbmRhcl9lbnRpdGllcy5DYWxlbmRhckV2ZW50UmVmEiUKCXJlbWluZGVycxgGIAMoCzISLmVudGl0aWVzLlJlbWluZGVyEjIKCWxvY2F0aW9ucxgHIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRMb2NhdGlvbhIxCgRkZXNjGAggASgLMiMuY2FsZW5kYXJfZW50aXRpZXMuRXZlbnREZXNjcmlwdGlvbhI2CgthdHRhY2htZW50cxgJIAMoCzIhLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRhY2htZW50EjAKDHZpZGVvX2NvbmZpZxgKIAEoCzIaLmVudGl0aWVzLkV2ZW50VkNoYXRDb25maWciYQoQRXZlbnREZXNjcmlwdGlvbhIVCgtkZXNjcmlwdGlvbhgBIAEoCToAEhoKEGRvY3NfZGVzY3JpcHRpb24YAiABKAk6ABIaChBodG1sX2Rlc2NyaXB0aW9uGAMgASgJOgAigAEKDkV4dHJhRXZlbnREYXRhEkIKCWRhdGFfdHlwZRgBIAEoDjIvLmNhbGVuZGFyX2VudGl0aWVzLkV4dHJhRXZlbnREYXRhLkV2ZW50RGF0YVR5cGUSDAoEZGF0YRgCIAEoCSIcCg1FdmVudERhdGFUeXBlEgsKB1dlYmluYXIQASLqBQoQV2ViaW5hckV2ZW50SW5mbxITCgtjYWxlbmRhcl9pZBgBIAEoCRISCgp1bmlxdWVfa2V5GAIgASgJEhUKDW9yaWdpbmFsX3RpbWUYAyABKAMSOgoLYmFzaWNfZXZlbnQYBCABKAsyJS5jYWxlbmRhcl9lbnRpdGllcy5DYWxlbmRhckJhc2ljRXZlbnQSPwoSY2FsZW5kYXJfZXZlbnRfcmVmGAUgASgLMiMuY2FsZW5kYXJfZW50aXRpZXMuQ2FsZW5kYXJFdmVudFJlZhIyCglsb2NhdGlvbnMYBiADKAsyHy5lbnRpdGllcy5DYWxlbmRhckV2ZW50TG9jYXRpb24SMQoEZGVzYxgHIAEoCzIjLmNhbGVuZGFyX2VudGl0aWVzLkV2ZW50RGVzY3JpcHRpb24SNgoLYXR0YWNobWVudHMYCCADKAsyIS5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0YWNobWVudBIZCg92Y2hhdF91bmlxdWVfaWQYCSABKAk6ABI1CgpleHRyYV9kYXRhGAogAygLMiEuY2FsZW5kYXJfZW50aXRpZXMuRXh0cmFFdmVudERhdGESOAoMd2ViaW5hcl9jb25mGAsgASgLMiIuZW50aXRpZXMuQ2FsZW5kYXJFdmVudFdlYmluYXJDb25mEi4KBnNvdXJjZRgMIAEoDjIeLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQuU291cmNlEjAKBm9yZGVycxgNIAEoCzIgLmVudGl0aWVzLlJlc291cmNlV2FpdExpc3RPcmRlcnMSRwobYXR0ZW5kZWVfYXBwcm92YWxfZm9ybV9kYXRhGA4gASgLMiIuZW50aXRpZXMuQXR0ZW5kZWVBcHByb3ZhbEZvcm1EYXRhEkMKGWV2ZW50X2Nyb3NzX2xhbmd1YWdlX2RhdGEYDyABKAsyIC5lbnRpdGllcy5FdmVudENyb3NzTGFuZ3VhZ2VEYXRhIpMBChVFdmVudEJhc2ljSW5mb1dpdGhLZXkSEwoLY2FsZW5kYXJfaWQYASABKAkSEgoKdW5pcXVlX2tleRgCIAEoCRIVCg1vcmlnaW5hbF90aW1lGAMgASgDEjoKC2Jhc2ljX2V2ZW50GAQgASgLMiUuY2FsZW5kYXJfZW50aXRpZXMuQ2FsZW5kYXJCYXNpY0V2ZW50IrURCglTY2hlZHVsZXISMQoMc2NoZWR1bGVyX2lkGAEgASgJQhuKwxoXc3BsaXQsdHlwZT1zY2hlZHVsZXJfaWQSEgoKc2hhcmVfbmFtZRgCIAEoCRISCgpzaGFyZV9saW5rGAMgASgJEhIKCmNyZWF0b3JfaWQYBCABKAkSOQoKaG9zdF91c2VycxgFIAMoCzIlLmNhbGVuZGFyX2VudGl0aWVzLlNjaGVkdWxlci5Ib3N0VXNlchI5Cg5zY2hlZHVsZXJfdHlwZRgGIAEoDjIhLmNhbGVuZGFyX2VudGl0aWVzLlNjaGVkdWxlci5UeXBlEgwKBG5hbWUYByABKAkSEwoLZGVzY3JpcHRpb24YCCABKAkSEAoIZHVyYXRpb24YCSABKAUSSgoXc2NoZWR1bGVyX2xvY2F0aW9uX3R5cGUYCiABKA4yKS5jYWxlbmRhcl9lbnRpdGllcy5TY2hlZHVsZXIuTG9jYXRpb25UeXBlEhsKE3VzZV9kZXZpY2VfdGltZXpvbmUYCyABKAgSEAoIdGltZXpvbmUYDCABKAkSVAoVYXZhaWxhYmxlX3RpbWVfd2Vla2x5GA0gAygLMjUuY2FsZW5kYXJfZW50aXRpZXMuU2NoZWR1bGVyLkF2YWlsYWJsZVRpbWVXZWVrbHlFbnRyeRJDCg90aW1lX3JhbmdlX3R5cGUYDiABKA4yKi5jYWxlbmRhcl9lbnRpdGllcy5TY2hlZHVsZXIuVGltZVJhbmdlVHlwZRIaChJzdGFydF9ib29raW5nX3RpbWUYDyABKAMSGAoQZW5kX2Jvb2tpbmdfdGltZRgQIAEoAxIYChBtaW5fYm9va2luZ190aW1lGBEgASgDEhgKEG1heF9ib29raW5nX3RpbWUYEiABKAMSGgoSYmVmb3JlX2J1ZmZlcl90aW1lGBMgASgDEhkKEWFmdGVyX2J1ZmZlcl90aW1lGBQgASgDEg8KB2NoYXRfaWQYFSABKAkSEwoLYml0YWJsZV91cmwYFiABKAkSRgoRcm91bmRfcm9iaW5fdXNlcnMYFyADKAsyKy5jYWxlbmRhcl9lbnRpdGllcy5TY2hlZHVsZXIuUm91bmRSb2JpblVzZXISIAoYZW5hYmxlX2FkZGl0aW9uYWxfZW1haWxzGBggASgIEjIKBmlucHV0cxgZIAMoCzIiLmNhbGVuZGFyX2VudGl0aWVzLlNjaGVkdWxlci5JbnB1dBIVCg1kaXNhYmxlX25vdGVzGBogASgIEjgKCWxvY2F0aW9ucxgbIAMoCzIlLmNhbGVuZGFyX2VudGl0aWVzLlNjaGVkdWxlci5Mb2NhdGlvbho0CgxUaW1lSW50ZXJ2YWwSEgoKc3RhcnRfdGltZRgBIAEoAxIQCghlbmRfdGltZRgCIAEoAxpNCg1UaW1lSW50ZXJ2YWxzEjwKCWludGVydmFscxgBIAMoCzIpLmNhbGVuZGFyX2VudGl0aWVzLlNjaGVkdWxlci5UaW1lSW50ZXJ2YWwaUAoISG9zdFVzZXISDwoHdXNlcl9pZBgBIAEoCRIzCgZwZXJtaXQYAiABKA4yIy5jYWxlbmRhcl9lbnRpdGllcy5TY2hlZHVsZXIuUGVybWl0GiEKDlJvdW5kUm9iaW5Vc2VyEg8KB3VzZXJfaWQYASABKAkahQEKBUlucHV0EhAKCGlucHV0X2lkGAEgASgJEjoKCmlucHV0X3R5cGUYAiABKA4yJi5jYWxlbmRhcl9lbnRpdGllcy5TY2hlZHVsZXIuSW5wdXRUeXBlEgwKBG5hbWUYAyABKAkSDwoHZGlzYWJsZRgEIAEoCBIPCgdyZXF1aXJlGAUgASgIGu0BCghMb2NhdGlvbhITCgtsb2NhdGlvbl9pZBgBIAEoCRJACg1sb2NhdGlvbl90eXBlGAIgASgOMikuY2FsZW5kYXJfZW50aXRpZXMuU2NoZWR1bGVyLkxvY2F0aW9uVHlwZRIQCghsb2NhdGlvbhgDIAEoCRIPCgdhZGRyZXNzGAQgASgJEhAKCGxhdGl0dWRlGAUgASgBEhEKCWxvbmdpdHVkZRgGIAEoARIUCgxwaG9uZV9udW1iZXIYByABKAkSFwoPYWRkaXRpb25hbF9pbmZvGAggASgJEhMKC3JlZ2lvbl9jb2RlGAkgASgJGmYKGEF2YWlsYWJsZVRpbWVXZWVrbHlFbnRyeRILCgNrZXkYASABKAUSOQoFdmFsdWUYAiABKAsyKi5jYWxlbmRhcl9lbnRpdGllcy5TY2hlZHVsZXIuVGltZUludGVydmFsczoCOAEiOQoEVHlwZRIQCgxVTktOT1dOX1RZUEUQABIOCgpPTkVfT05fT05FEAESDwoLUk9VTkRfUk9CSU4QAiJ+CgxMb2NhdGlvblR5cGUSFAoQVU5LTk9XTl9MT0NBVElPThAAEggKBExBUksQARIICgRaT09NEAISEAoMQUREUkVTU19IT1NUEAMSEQoNQUREUkVTU19HVUVTVBAEEg4KClBIT05FX0hPU1QQBRIPCgtQSE9ORV9HVUVTVBAGIjgKCUlucHV0VHlwZRIRCg1VTktOT1dOX0lOUFVUEAASCAoEVEVYVBABEg4KCk1VTFRJX1RFWFQQAiJyCg1UaW1lUmFuZ2VUeXBlEhYKElVOS05PV05fVElNRV9SQU5HRRAAEgsKB0FMTF9EQVkQARINCglSQU5HRV9EQVkQAhIWChJGVVRVUkVfV09SS0lOR19EQVkQAxIVChFGVVRVUkVfTkFUVVJFX0RBWRAEIkoKCURheU9mV2VlaxIHCgNTVU4QABIHCgNNT04QARIHCgNUVUUQAhIHCgNXRUQQAxIHCgNUVUgQBBIHCgNGUkkQBRIHCgNTQVQQBiIzCgZQZXJtaXQSEgoOVU5LTk9XTl9QZXJtaXQQABIJCgVPV05FUhABEgoKBk1FTUJFUhACIvIDCgtBcHBvaW50bWVudBIWCg5hcHBvaW50bWVudF9pZBgBIAEoCRIUCgxzY2hlZHVsZXJfaWQYAiABKAkSEgoKY3JlYXRvcl9pZBgDIAEoCRI7Cgpob3N0X3VzZXJzGAQgAygLMicuY2FsZW5kYXJfZW50aXRpZXMuQXBwb2ludG1lbnQuSG9zdFVzZXISPQoLZ3Vlc3RfdXNlcnMYBSADKAsyKC5jYWxlbmRhcl9lbnRpdGllcy5BcHBvaW50bWVudC5HdWVzdFVzZXISEAoIdGltZXpvbmUYBiABKAkSEgoKc3RhcnRfdGltZRgHIAEoAxIQCghlbmRfdGltZRgIIAEoAxI+CgtldmVudF9zdGF0ZRgJIAEoDjIpLmNhbGVuZGFyX2VudGl0aWVzLkFwcG9pbnRtZW50LkV2ZW50U3RhdGUSEAoIZXZlbnRfaWQYCiABKAkSEQoJZXZlbnRfdWlkGAsgASgJEhEKCWlzX2RlbGV0ZRgMIAEoCBobCghIb3N0VXNlchIPCgd1c2VyX2lkGAEgASgJGjcKCUd1ZXN0VXNlchINCgV0b2tlbhgBIAEoCRINCgVlbWFpbBgCIAEoCRIMCgRuYW1lGAMgASgJIh8KCkV2ZW50U3RhdGUSEQoNVU5LTk9XTl9TVEFURRAAIj4KFlNjaGVkdWxlckF2YWlsYWJsZVRpbWUSEgoKc3RhcnRfdGltZRgBIAEoAxIQCghlbmRfdGltZRgCIAEoAyJdChdTY2hlZHVsZXJBdmFpbGFibGVUaW1lcxJCCg9hdmFpbGFibGVfdGltZXMYASADKAsyKS5jYWxlbmRhcl9lbnRpdGllcy5TY2hlZHVsZXJBdmFpbGFibGVUaW1lIpQFChhBcHBvaW50bWVudE1lc3NhZ2VOb3RpZnkSOwoGc3RhdHVzGAEgASgOMisuY2FsZW5kYXJfZW50aXRpZXMuQXBwb2ludG1lbnRNZXNzYWdlU3RhdHVzEjQKBmFjdGlvbhgCIAEoDjIkLmNhbGVuZGFyX2VudGl0aWVzLkFwcG9pbnRtZW50QWN0aW9uEhMKC29wZXJhdG9yX2lkGAMgASgJEhQKDHNjaGVkdWxlcl9pZBgEIAEoCRI5Cg5zY2hlZHVsZXJfdHlwZRgFIAEoDjIhLmNhbGVuZGFyX2VudGl0aWVzLlNjaGVkdWxlci5UeXBlEhYKDnNjaGVkdWxlcl9uYW1lGAYgASgJEhYKDmFwcG9pbnRtZW50X2lkGAcgASgJEhIKCmNyZWF0b3JfaWQYCCABKAkSDwoHaG9zdF9pZBgJIAEoCRISCgpndWVzdF9uYW1lGAogASgJEhMKC2d1ZXN0X2VtYWlsGAsgASgJEhAKCHRpbWV6b25lGAwgASgJEhIKCnN0YXJ0X3RpbWUYDSABKAMSEAoIZW5kX3RpbWUYDiABKAMSDwoHbWVzc2FnZRgPIAEoCRJKCg5leHBpcmVkX3JlYXNvbhgQIAEoDjIyLmNhbGVuZGFyX2VudGl0aWVzLkFwcG9pbnRtZW50TWVzc2FnZUV4cGlyZWRSZWFzb24SEgoKZXZlbnRfbGluaxgRIAEoCRITCgtpc19leHRlcm5hbBgSIAEoCBIZChFvcmlnaW5fbWVzc2FnZV9pZBgTIAEoAxJICg1jYW5jZWxfcmVhc29uGBQgASgOMjEuY2FsZW5kYXJfZW50aXRpZXMuQXBwb2ludG1lbnRNZXNzYWdlQ2FuY2VsUmVhc29uIqUEChxBcHBvaW50bWVudE1lc3NhZ2VSb3VuZFJvYmluEjsKBnN0YXR1cxgBIAEoDjIrLmNhbGVuZGFyX2VudGl0aWVzLkFwcG9pbnRtZW50TWVzc2FnZVN0YXR1cxI0CgZhY3Rpb24YAiABKA4yJC5jYWxlbmRhcl9lbnRpdGllcy5BcHBvaW50bWVudEFjdGlvbhITCgtvcGVyYXRvcl9pZBgDIAEoCRIUCgxzY2hlZHVsZXJfaWQYBCABKAkSOQoOc2NoZWR1bGVyX3R5cGUYBSABKA4yIS5jYWxlbmRhcl9lbnRpdGllcy5TY2hlZHVsZXIuVHlwZRIWCg5zY2hlZHVsZXJfbmFtZRgGIAEoCRIWCg5hcHBvaW50bWVudF9pZBgHIAEoCRISCgpjcmVhdG9yX2lkGAggASgJEg8KB2hvc3RfaWQYCSABKAkSEgoKZ3Vlc3RfbmFtZRgKIAEoCRITCgtndWVzdF9lbWFpbBgLIAEoCRIQCgh0aW1lem9uZRgMIAEoCRISCgpzdGFydF90aW1lGA0gASgDEhAKCGVuZF90aW1lGA4gASgDEg8KB21lc3NhZ2UYDyABKAkSSgoOZXhwaXJlZF9yZWFzb24YECABKA4yMi5jYWxlbmRhcl9lbnRpdGllcy5BcHBvaW50bWVudE1lc3NhZ2VFeHBpcmVkUmVhc29uEhkKEW9yaWdpbl9tZXNzYWdlX2lkGBEgASgDIsIECglOb3Rlc0luZm8SLwoEbWV0YRgBIAEoCzIhLmNhbGVuZGFyX2VudGl0aWVzLk5vdGVzSW5mby5NZXRhEjkKCXRodW1ibmFpbBgCIAEoCzImLmNhbGVuZGFyX2VudGl0aWVzLk5vdGVzSW5mby5UaHVtYm5haWwSRQoPbm90ZV9wZXJtaXNzaW9uGAMgAygOMiwuY2FsZW5kYXJfZW50aXRpZXMuTm90ZXNJbmZvLk5vdGVzUGVybWlzc2lvbhIZChFzaG93X3Blcm1fc2V0dGluZxgEIAEoCBIVCg1zaG93X3Blcm1fdGlwGAUgASgIEkcKFm5vdGVzX2V2ZW50X3Blcm1pc3Npb24YBiABKA4yJy5jYWxlbmRhcl9lbnRpdGllcy5Ob3Rlc0V2ZW50UGVybWlzc2lvbhIdChVzaG93X2V2ZW50X3Blcm1pc3Npb24YByABKAgaWgoETWV0YRINCgV0aXRsZRgBIAIoCRILCgN1cmwYAiACKAkSEQoJZG9jX3Rva2VuGAMgAigJEiMKCGRvY190eXBlGAQgAigOMhEuZW50aXRpZXMuRG9jVHlwZRpZCglUaHVtYm5haWwSCwoDdXJsGAEgAigJEhUKDXRodW1ibmFpbF91cmwYAiACKAkSEwoLZGVjcnlwdF9rZXkYAyACKAkSEwoLY2lwaGVyX3R5cGUYBCACKAMiMQoPTm90ZXNQZXJtaXNzaW9uEggKBFZJRVcQABIICgRFRElUEAESCgoGREVMRVRFEAIi5gMKC0FJTm90ZXNJbmZvEg0KBXRpdGxlGAEgAigJEgsKA3VybBgCIAIoCRIRCglkb2NfdG9rZW4YAyACKAkSIwoIZG9jX3R5cGUYBCACKA4yES5lbnRpdGllcy5Eb2NUeXBlEkwKEmFpX25vdGVfcGVybWlzc2lvbhgFIAMoDjIwLmNhbGVuZGFyX2VudGl0aWVzLkFJTm90ZXNJbmZvLkFJTm90ZXNQZXJtaXNzaW9uEhYKDmlzX2RvY19kZWxldGVkGAYgAigIEg8KB3N1bW1hcnkYByACKAkSPwoScHJldmlld19oYW5nX3BvaW50GAkgASgLMiMuY2FsZW5kYXJfZW50aXRpZXMuUHJldmlld0hhbmdQb2ludBI7Cgl0aHVtYm5haWwYCiABKAsyKC5jYWxlbmRhcl9lbnRpdGllcy5BSU5vdGVzSW5mby5UaHVtYm5haWwaWQoJVGh1bWJuYWlsEgsKA3VybBgBIAIoCRIVCg10aHVtYm5haWxfdXJsGAIgAigJEhMKC2RlY3J5cHRfa2V5GAMgAigJEhMKC2NpcGhlcl90eXBlGAQgAigDIjMKEUFJTm90ZXNQZXJtaXNzaW9uEggKBFZJRVcQABIICgRFRElUEAESCgoGREVMRVRFEAIilgEKEFByZXZpZXdIYW5nUG9pbnQSEgoKcHJldmlld19pZBgBIAEoCRIhChJuZWVkX2xvY2FsX3ByZXZpZXcYAiABKAg6BWZhbHNlEiEKEmNsb3NlX2NhcmRfcHJldmlldxgDIAEoCDoFZmFsc2USCwoDdXJsGAQgASgJEhsKDGlzX2xhenlfbG9hZBgFIAEoCDoFZmFsc2Ui5AEKEEV2ZW50SW5mb0Zvck15QUkSCwoDdWlkGAEgASgJEhUKDW9yaWdpbmFsX3RpbWUYAiABKAMSDwoHc3VtbWFyeRgDIAEoCRISCgpzdGFydF90aW1lGAQgASgDEhYKDnN0YXJ0X3RpbWV6b25lGAUgASgJEhAKCGVuZF90aW1lGAYgASgDEhQKDGVuZF90aW1lem9uZRgHIAEoCRIZChFhdHRlbmRlZV91c2VyX2lkcxgIIAMoCRINCgVycnVsZRgJIAEoCRIdChVyZXNvdXJjZV9jYWxlbmRhcl9pZHMYCiADKAkiXwoQTXlBSVJlc291cmNlSW5mbxITCgtyZXNvdXJjZV9pZBgBIAEoAxI2Cg1yZXNvdXJjZV90eXBlGAIgASgOMh8uY2FsZW5kYXJfZW50aXRpZXMuUmVzb3VyY2VUeXBlKmQKC0V4dGVybmFsQXBwEhgKFFVOS05PV05fRVhURVJOQUxfQVBQEAASFwoTRXh0ZXJuYWxBcHBBcHByb3ZhbBABEiIKHkV4dGVybmFsQXBwQ29uZGl0aW9uYWxBcHByb3ZhbBACKnwKEUFwcG9pbnRtZW50QWN0aW9uEhIKDkFDVElPTl9VTktOT1dOEAASEQoNQUNUSU9OX0NSRUFURRABEhUKEUFDVElPTl9SRVNDSEVEVUxFEAISEQoNQUNUSU9OX0NBTkNFTBADEhYKEkFDVElPTl9DSEFOR0VfSE9TVBAEKlUKGEFwcG9pbnRtZW50TWVzc2FnZVN0YXR1cxISCg5TVEFUVVNfVU5LTk9XThAAEhEKDVNUQVRVU19BQ1RJVkUQARISCg5TVEFUVVNfRVhQSVJFRBACKpcBCh9BcHBvaW50bWVudE1lc3NhZ2VFeHBpcmVkUmVhc29uEhoKFkVYUElSRURfUkVBU09OX1VOS05PV04QABIdChlFWFBJUkVEX1JFQVNPTl9SRVNDSEVEVUxFEAESGQoVRVhQSVJFRF9SRUFTT05fQ0FOQ0VMEAISHgoaRVhQSVJFRF9SRUFTT05fQ0hBTkdFX0hPU1QQAyqbAQoeQXBwb2ludG1lbnRNZXNzYWdlQ2FuY2VsUmVhc29uEhkKFUNBTkNFTF9SRUFTT05fVU5LTk9XThAAEiEKHUNBTkNFTF9SRUFTT05fQUNUSVZFTFlfQ0FOQ0VMEAESHAoYQ0FOQ0VMX1JFQVNPTl9SRVNDSEVEVUxFEAISHQoZQ0FOQ0VMX1JFQVNPTl9DSEFOR0VfSE9TVBADKksKC0JpbGxpbmdUeXBlEhAKDFRZUEVfVU5LTk9XThAAEhQKEFRZUEVfQ1VTVE9NX0ZPUk0QARIUChBUWVBFX1JPVU5EX1JPQklOEAIqTgoNTm90ZXNJbmZvVHlwZRIICgRNRVRBEAASDQoJVEhVTUJOQUlMEAESDgoKUEVSTUlTU0lPThACEhQKEEVWRU5UX1BFUk1JU1NJT04QAypKChROb3Rlc0V2ZW50UGVybWlzc2lvbhIWChJFVkVOVF9QRVJNX1VOS05PV04QABIMCghDQU5fVklFVxABEgwKCENBTl9FRElUEAIqRQoJTm90ZXNUeXBlEhYKEk5PVEVTX1RZUEVfVU5LTk9XThAAEhAKDENSRUFURV9OT1RFUxABEg4KCkJJTkRfTk9URVMQAiqEAQoXQ2FsZW5kYXJNeUFJSW5saW5lU3RhZ2USCwoHU1RBR0VfMBAAEgsKB1NUQUdFXzEQARILCgdTVEFHRV8yEAISCwoHU1RBR0VfMxADEgsKB1NUQUdFXzQQBBILCgdTVEFHRV81EAUSCwoHU1RBR0VfNhAGEg4KCVNUQUdFX0VSUhDpByo0ChtDYWxlbmRhck15QUlJbmxpbmVJbnB1dFR5cGUSCgoGQ1JFQVRFEAESCQoFQUdBSU4QAiosCgxSZXNvdXJjZVR5cGUSCwoHRGVmYXVsdBABEg8KC0JsZVJlc291cmNlEAJCVAoWY29tLnNzLmFuZHJvaWQubGFyay5wYkgDWjhjb2RlLmJ5dGVkLm9yZy9sYXJrL2ltLXByb3RvYnVmL2ltcHJvdG8vY2FsZW5kYXJlbnRpdGllcw",[J,y]);var we=gt(Wl,12);var Le=gt(Wl,13);var ve=Ko("ChRjYWxlbmRhcmV2ZW50cy5wcm90bxIOY2FsZW5kYXJldmVudHMi1gIKGVN5bmNDYWxlbmRhckV2ZW50c1JlcXVlc3QSXwoUY2FsZW5kYXJfaWRfdmVyc2lvbnMYASADKAsyQS5jYWxlbmRhcmV2ZW50cy5TeW5jQ2FsZW5kYXJFdmVudHNSZXF1ZXN0LkNhbGVuZGFySWRWZXJzaW9uc0VudHJ5EjAKD2NhbGVuZGFyX2V2ZW50cxgCIAMoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQSGgoMbmVlZF9kZWxldGVkGAMgASgIOgR0cnVlEiAKEmV2ZW50c19jb3VudF9saW1pdBgEIAEoBToEMTAwMBItCh5zaG91bGRfcmV0dXJuX2xhdGVzdF9hdHRlbmRlZXMYBSABKAg6BWZhbHNlGjkKF0NhbGVuZGFySWRWZXJzaW9uc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoAzoCOAEinwUKGlN5bmNDYWxlbmRhckV2ZW50c1Jlc3BvbnNlEm4KHGNhbGVuZGFyX2lkX3JlcXVpcmVfbW9yZV9tYXAYASADKAsySC5jYWxlbmRhcmV2ZW50cy5TeW5jQ2FsZW5kYXJFdmVudHNSZXNwb25zZS5DYWxlbmRhcklkUmVxdWlyZU1vcmVNYXBFbnRyeRI5ChRjYWxlbmRhcl9ldmVudF9jb3JlcxgCIAMoCzIbLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRDb3JlEmAKFGNhbGVuZGFyX2NoYXR0ZXJfbWFwGAMgAygLMkIuY2FsZW5kYXJldmVudHMuU3luY0NhbGVuZGFyRXZlbnRzUmVzcG9uc2UuQ2FsZW5kYXJDaGF0dGVyTWFwRW50cnkSIwoIbWVldGluZ3MYBCADKAsyES5lbnRpdGllcy5NZWV0aW5nElwKEmNhbGVuZGFyX2JyaWVmX21hcBgFIAMoCzJALmNhbGVuZGFyZXZlbnRzLlN5bmNDYWxlbmRhckV2ZW50c1Jlc3BvbnNlLkNhbGVuZGFyQnJpZWZNYXBFbnRyeRIfCgZ2Y2hhdHMYBiADKAsyDy5lbnRpdGllcy5WY2hhdBo/Ch1DYWxlbmRhcklkUmVxdWlyZU1vcmVNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBGjkKF0NhbGVuZGFyQ2hhdHRlck1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaVAoVQ2FsZW5kYXJCcmllZk1hcEVudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLmVudGl0aWVzLkNhbGVuZGFyQnJpZWZJbmZvOgI4ASLSAgoeUXVlcnlFdmVudENyb3NzTGFuZ3VhZ2VSZXF1ZXN0EkUKBnNvdXJjZRgBIAEoDjI1LmNhbGVuZGFyZXZlbnRzLlF1ZXJ5RXZlbnRDcm9zc0xhbmd1YWdlUmVxdWVzdC5Tb3VyY2USEgoKdW5pcXVlX2tleRgCIAIoCRITCgtjYWxlbmRhcl9pZBgDIAIoCRIVCg1vcmlnaW5hbF90aW1lGAQgAigDEhsKE2NyZWF0b3JfY2FsZW5kYXJfaWQYBSABKAkSFwoPaXNfY3JlYXRlX2V2ZW50GAYgASgIEg8KB3N1bW1hcnkYCiABKAkSOQoWZXZlbnRfYXR0ZW5kZWVfY29tbWl0cxgLIAEoCzIZLmVudGl0aWVzLkF0dGVuZGVlQ29tbWl0cyInCgZTb3VyY2USCwoHVU5LTk9XThAAEhAKDEJPVF9NU0dfQ0FSRBABInUKH1F1ZXJ5RXZlbnRDcm9zc0xhbmd1YWdlUmVzcG9uc2USNwoNbGFuZ3VhZ2VfdHlwZRgBIAEoDjIgLmVudGl0aWVzLkV2ZW50Q3Jvc3NMYW5ndWFnZVR5cGUSGQoRcmVjb21tZW5kX3N1bW1hcnkYAiABKAki9QEKIUV2ZW50Q3Jvc3NMYW5ndWFnZUZlZWRiYWNrUmVxdWVzdBISCgp1bmlxdWVfa2V5GAEgAigJEhMKC2NhbGVuZGFyX2lkGAIgAigJEhUKDW9yaWdpbmFsX3RpbWUYAyACKAMSVQoNZmVlZGJhY2tfdHlwZRgKIAEoDjI+LmNhbGVuZGFyZXZlbnRzLkV2ZW50Q3Jvc3NMYW5ndWFnZUZlZWRiYWNrUmVxdWVzdC5GZWVkYmFja1R5cGUiOQoMRmVlZGJhY2tUeXBlEgsKB1VOS05PV04QABIRCg1PTkxZX0ZFRURCQUNLEAESCQoFQUdSRUUQAiIkCiJFdmVudENyb3NzTGFuZ3VhZ2VGZWVkYmFja1Jlc3BvbnNlIrgMCiJPcHRpbWl6ZWRTeW5jQ2FsZW5kYXJFdmVudHNSZXF1ZXN0EjYKFWRpcnR5X2NhbGVuZGFyX2V2ZW50cxgBIAMoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQSIAoSZXZlbnRzX2NvdW50X2xpbWl0GAIgASgFOgQxMDAwEmMKD2NhbGVuZGFyX3BhcmFtcxgDIAMoCzJKLmNhbGVuZGFyZXZlbnRzLk9wdGltaXplZFN5bmNDYWxlbmRhckV2ZW50c1JlcXVlc3QuRXZlbnRTeW5jQ2FsZW5kYXJQYXJhbXMSLgomZW5hYmxlX3JlY3VycmVuY2VfZXZlbnRzX3N5bmNfb3B0aW1pemUYBCABKAgSPgoWZXZlbnRfYXR0ZW5kZWVfY29tbWl0cxgFIAMoCzIeLmVudGl0aWVzLkV2ZW50QXR0ZW5kZWVDb21taXRzEiEKEm5lZWRzX2JyaWVmX2V2ZW50cxgGIAEoCDoFZmFsc2USaAoXZGlydHlfZXZlbnRfY29tbWl0X2luZm8YByADKAsyRy5jYWxlbmRhcmV2ZW50cy5PcHRpbWl6ZWRTeW5jQ2FsZW5kYXJFdmVudHNSZXF1ZXN0LkRpcnR5RXZlbnRDb21taXRJbmZvEiYKF3VzZV9hdHRlbmRlZV9wYWdlX3Rva2VuGAggASgIOgVmYWxzZRJKChpldmVudF9ncm91cF9yc3ZwX2NhcmRfaW5mbxgJIAMoCzImLmNhbGVuZGFyZXZlbnRzLkV2ZW50R3JvdXBSU1ZQQ2FyZEluZm8SUgohcmVzb3VyY2VfcmVuZXdhbF9yZW1pbmRlcl9jb21taXRzGAogAygLMicuZW50aXRpZXMuUmVzb3VyY2VSZW5ld2FsUmVtaW5kZXJDb21taXQSFwoPb25seV93cml0ZV9zeW5jGAsgASgIEkQKGG5lZWRfbm90X3NlbmRfc21zX2V2ZW50cxgMIAMoCzIiLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRVbmlxdWVGaWVsZBJfChJldmVudF9jaGFuZ2VfZGlmZnMYDSADKAsyQy5jYWxlbmRhcmV2ZW50cy5PcHRpbWl6ZWRTeW5jQ2FsZW5kYXJFdmVudHNSZXF1ZXN0LkV2ZW50Q2hhbmdlZERpZmYSSgoZZXZlbnRfb3BlcmF0ZV90cmFuc2FjdGlvbhgOIAMoCzInLmNhbGVuZGFyZXZlbnRzLkV2ZW50T3BlcmF0ZVRyYW5zYWN0aW9uEkQKFmF0dGVuZGVlX2FwcHJvdmFsX2RhdGEYDyADKAsyJC5jYWxlbmRhcmV2ZW50cy5BdHRlbmRlZUFwcHJvdmFsRGF0YRI6ChRldmVudF9jcm9zc19sYW5ndWFnZRgQIAMoCzIcLmVudGl0aWVzLkV2ZW50Q3Jvc3NMYW5ndWFnZRquAQoXRXZlbnRTeW5jQ2FsZW5kYXJQYXJhbXMSDgoGY2FsX2lkGAEgAigJEh0KFWNhbF9ldmVudF9tYXhfdmVyc2lvbhgCIAIoAxImChdmaXJzdF9zeW5jX29wdGltaXphdGlvbhgDIAEoCDoFZmFsc2USFgoLYW5jaG9yX3RpbWUYBCABKAM6ATASJAoYc2VydmVyX2V2ZW50X21heF92ZXJzaW9uGAUgASgDOgItMRqBAQoURGlydHlFdmVudENvbW1pdEluZm8SDgoGY2FsX2lkGAEgASgJEgsKA2tleRgCIAEoCRIVCg1vcmlnaW5hbF90aW1lGAMgASgDEh0KFWRpcnR5X2V2ZW50X2NvbW1pdF9pZBgEIAEoCRIWCg5sb2NhbF90aW1lem9uZRgFIAEoCRrKAQoQRXZlbnRDaGFuZ2VkRGlmZhIzCg9kaXJ0eV9ldmVudF9rZXkYASACKAsyGi5lbnRpdGllcy5DYWxlbmRhckV2ZW50S2V5EjcKE2RpZmZfYmFzZV9ldmVudF9rZXkYAiACKAsyGi5lbnRpdGllcy5DYWxlbmRhckV2ZW50S2V5EkgKDmNoYW5nZWRfZmllbGRzGAMgAygOMjAuZW50aXRpZXMuQ2FsZW5kYXJFdmVudERpZmZGaWVsZC5DaGFuZ2VhYmxlRmllbGQilAEKFEF0dGVuZGVlQXBwcm92YWxEYXRhEjMKD2RpcnR5X2V2ZW50X2tleRgBIAEoCzIaLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRLZXkSRwobYXR0ZW5kZWVfYXBwcm92YWxfZm9ybV9kYXRhGAIgASgLMiIuZW50aXRpZXMuQXR0ZW5kZWVBcHByb3ZhbEZvcm1EYXRhIo8BChdFdmVudE9wZXJhdGVUcmFuc2FjdGlvbhIzCg9kaXJ0eV9ldmVudF9rZXkYASACKAsyGi5lbnRpdGllcy5DYWxlbmRhckV2ZW50S2V5Ej8KE29wZXJhdGVfdHJhbnNhY3Rpb24YAiADKAsyIi5jYWxlbmRhcmV2ZW50cy5PcGVyYXRlVHJhbnNhY3Rpb24iqAMKEk9wZXJhdGVUcmFuc2FjdGlvbhI/CglzZW1hbnRpY3MYASACKA4yLC5jYWxlbmRhcmV2ZW50cy5PcGVyYXRlVHJhbnNhY3Rpb24uU2VtYW50aWNzEhUKDWNoYW5nZV9maWVsZHMYAiADKAkSFAoMb3BlcmF0ZV90aW1lGAMgASgDEhYKDnRyYW5zYWN0aW9uX2lkGAQgASgJEhwKFGZvbGxvd2luZ19zdGFydF90aW1lGAUgASgDEhoKEm9yaWdpbmFsX2V2ZW50X3VpZBgGIAEoCSLRAQoJU2VtYW50aWNzEgoKBkNyZWF0ZRABEgoKBlVwZGF0ZRACEgoKBkRlbGV0ZRADEhkKFVJlY3VycmVudFVwZGF0ZVNpbmdsZRAEEhwKGFJlY3VycmVudFVwZGF0ZUZvbGxvd2luZxAFEhYKElJlY3VycmVudFVwZGF0ZUFsbBAGEhkKFVJlY3VycmVudERlbGV0ZVNpbmdsZRAHEhwKGFJlY3VycmVudERlbGV0ZUZvbGxvd2luZxAIEhYKElJlY3VycmVudERlbGV0ZUFsbBAJInwKFkV2ZW50R3JvdXBSU1ZQQ2FyZEluZm8SEwoLY2FsZW5kYXJfaWQYASABKAkSCwoDa2V5GAIgASgJEhUKDW9yaWdpbmFsX3RpbWUYAyABKAMSGAoQY3JlYXRlX3JzdnBfY2FyZBgEIAEoCBIPCgdjaGF0X2lkGAUgASgDImUKHFB1bGxFdmVudFJTVlBDYXJkSW5mb1JlcXVlc3QSMQoFZXZlbnQYASABKAsyIi5lbnRpdGllcy5DYWxlbmRhckV2ZW50VW5pcXVlRmllbGQSEgoKbWVzc2FnZV9pZBgCIAEoAyLQAQodUHVsbEV2ZW50UlNWUENhcmRJbmZvUmVzcG9uc2USNgoSYXR0ZW5kZWVfcnN2cF9pbmZvGAEgAygLMhouZW50aXRpZXMuQXR0ZW5kZWVSU1ZQSW5mbxIVCg1zaG93X2F0dGVuZGVlGAIgASgIEhIKCm1lc3NhZ2VfaWQYAyABKAMSMQoFZXZlbnQYBCABKAsyIi5lbnRpdGllcy5DYWxlbmRhckV2ZW50VW5pcXVlRmllbGQSGQoRZXZlbnRfY2hhbmdlX3RpbWUYBSABKAMiwgYKI09wdGltaXplZFN5bmNDYWxlbmRhckV2ZW50c1Jlc3BvbnNlEjkKFGNhbGVuZGFyX2V2ZW50X2NvcmVzGAEgAygLMhsuZW50aXRpZXMuQ2FsZW5kYXJFdmVudENvcmUSaQoUY2FsZW5kYXJfY2hhdHRlcl9tYXAYAiADKAsySy5jYWxlbmRhcmV2ZW50cy5PcHRpbWl6ZWRTeW5jQ2FsZW5kYXJFdmVudHNSZXNwb25zZS5DYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRIjCghtZWV0aW5ncxgDIAMoCzIRLmVudGl0aWVzLk1lZXRpbmcSZQoSY2FsZW5kYXJfYnJpZWZfbWFwGAQgAygLMkkuY2FsZW5kYXJldmVudHMuT3B0aW1pemVkU3luY0NhbGVuZGFyRXZlbnRzUmVzcG9uc2UuQ2FsZW5kYXJCcmllZk1hcEVudHJ5EmEKDmNhbGVuZGFyX2luZm9zGAUgAygLMkkuY2FsZW5kYXJldmVudHMuT3B0aW1pemVkU3luY0NhbGVuZGFyRXZlbnRzUmVzcG9uc2UuRXZlbnRTeW5jQ2FsZW5kYXJJbmZvEh8KBnZjaGF0cxgGIAMoCzIPLmVudGl0aWVzLlZjaGF0Ej4KFmV2ZW50X2F0dGVuZGVlX2NvbW1pdHMYByADKAsyHi5lbnRpdGllcy5FdmVudEF0dGVuZGVlQ29tbWl0cxIvCgtyZWplY3Rfa2V5cxgIIAMoCzIaLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRLZXkaYwoVRXZlbnRTeW5jQ2FsZW5kYXJJbmZvEg4KBmNhbF9pZBgBIAIoCRIUCgxyZXF1aXJlX21vcmUYAiACKAgSJAoYc2VydmVyX2V2ZW50X21heF92ZXJzaW9uGAMgASgDOgItMRo5ChdDYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGlQKFUNhbGVuZGFyQnJpZWZNYXBFbnRyeRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKAsyGy5lbnRpdGllcy5DYWxlbmRhckJyaWVmSW5mbzoCOAEiuwIKGkNyZWF0ZUNhbGVuZGFyRXZlbnRSZXF1ZXN0Ej0KEWNyZWF0ZV9ldmVudF9pbmZvGAEgASgLMiIuY2FsZW5kYXJfZW50aXRpZXMuQ3JlYXRlRXZlbnRJbmZvEj4KFmV2ZW50X2F0dGVuZGVlX2NvbW1pdHMYAiABKAsyHi5lbnRpdGllcy5FdmVudEF0dGVuZGVlQ29tbWl0cxJeChFub3RpZmljYXRpb25fdHlwZRgDIAEoDjIoLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQuTm90aWZpY2F0aW9uVHlwZToZREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRRIZCgpzZW5kX2VtYWlsGAQgASgIOgVmYWxzZRIPCgdtYWlsX2lkGAUgASgJEhIKCmZyb21fZW1haWwYBiABKAkikgEKG0NyZWF0ZUNhbGVuZGFyRXZlbnRSZXNwb25zZRIvCg5jYWxlbmRhcl9ldmVudBgBIAEoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQSDgoGaWNzU3RyGAIgASgJEh4KBXZjaGF0GAMgASgLMg8uZW50aXRpZXMuVmNoYXQSEgoKc2VuZF9lbWFpbBgEIAEoCCKfAQoaU3dpdGNoRXZlbnRDYWxlbmRhclJlcXVlc3QSEwoLY2FsZW5kYXJfaWQYASABKAMSCwoDdWlkGAIgASgJEhUKDW9yaWdpbmFsX3RpbWUYAyABKAMSHwoXZGVzdGluYXRpb25fY2FsZW5kYXJfaWQYBCABKAMSJwofbmVlZHNfcmVtb3ZlX29yaWdpbmFsX29yZ2FuaXplchgFIAEoCCJPChtTd2l0Y2hFdmVudENhbGVuZGFyUmVzcG9uc2USMAoPY2FsZW5kYXJfZXZlbnRzGAEgAygLMhcuZW50aXRpZXMuQ2FsZW5kYXJFdmVudCLhAQocVHJhbnNmZXJDYWxlbmRhckV2ZW50UmVxdWVzdBI2ChJjYWxlbmRhcl9ldmVudF9rZXkYASACKAsyGi5lbnRpdGllcy5DYWxlbmRhckV2ZW50S2V5Eg8KB3VzZXJfaWQYAiACKAMSIQoSbmVlZHNfYnJpZWZfZXZlbnRzGAMgASgIOgVmYWxzZRItCh9uZWVkc19yZW1vdmVfb3JpZ2luYWxfb3JnYW5pemVyGAQgASgIOgR0cnVlEiYKF3VzZV9hdHRlbmRlZV9wYWdlX3Rva2VuGAUgASgIOgVmYWxzZSJvCh1UcmFuc2ZlckNhbGVuZGFyRXZlbnRSZXNwb25zZRIwCg9jYWxlbmRhcl9ldmVudHMYASADKAsyFy5lbnRpdGllcy5DYWxlbmRhckV2ZW50EhwKFHRyYW5zZmVyX2JpdGFibGVfdXJsGAIgASgJIokCChlNR2V0Q2FsZW5kYXJFdmVudHNSZXF1ZXN0EgsKA2lkcxgBIAMoCRIhChJuZWVkc19icmllZl9ldmVudHMYAiABKAg6BWZhbHNlEiYKF3VzZV9hdHRlbmRlZV9wYWdlX3Rva2VuGAMgASgIOgVmYWxzZRJbChJyZWZpZF9jYWxlbmRhcl9tYXAYBCADKAsyPy5jYWxlbmRhcmV2ZW50cy5NR2V0Q2FsZW5kYXJFdmVudHNSZXF1ZXN0LlJlZmlkQ2FsZW5kYXJNYXBFbnRyeRo3ChVSZWZpZENhbGVuZGFyTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKJCQoaTUdldENhbGVuZGFyRXZlbnRzUmVzcG9uc2USMAoPY2FsZW5kYXJfZXZlbnRzGAEgAygLMhcuZW50aXRpZXMuQ2FsZW5kYXJFdmVudBJgChRjYWxlbmRhcl9jaGF0dGVyX21hcBgCIAMoCzJCLmNhbGVuZGFyZXZlbnRzLk1HZXRDYWxlbmRhckV2ZW50c1Jlc3BvbnNlLkNhbGVuZGFyQ2hhdHRlck1hcEVudHJ5ElwKEmNhbGVuZGFyX2JyaWVmX21hcBgDIAMoCzJALmNhbGVuZGFyZXZlbnRzLk1HZXRDYWxlbmRhckV2ZW50c1Jlc3BvbnNlLkNhbGVuZGFyQnJpZWZNYXBFbnRyeRJeChNldmVudF9zdWNjZXNzb3JfbWFwGAQgAygLMkEuY2FsZW5kYXJldmVudHMuTUdldENhbGVuZGFyRXZlbnRzUmVzcG9uc2UuRXZlbnRTdWNjZXNzb3JNYXBFbnRyeRIjCghtZWV0aW5ncxgFIAMoCzIRLmVudGl0aWVzLk1lZXRpbmcSNQoSbWVldGluZ19ldmVudF9yZWZzGAYgAygLMhkuZW50aXRpZXMuTWVldGluZ0V2ZW50UmVmEi0KCXJlc291cmNlcxgHIAMoCzIaLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2USLQoJYnVpbGRpbmdzGAggAygLMhouZW50aXRpZXMuQ2FsZW5kYXJCdWlsZGluZxJdChNpbl9tZWV0aW5nX2NoYXRfbWFwGAkgAygLMkAuY2FsZW5kYXJldmVudHMuTUdldENhbGVuZGFyRXZlbnRzUmVzcG9uc2UuSW5NZWV0aW5nQ2hhdE1hcEVudHJ5Eh8KBnZjaGF0cxgKIAMoCzIPLmVudGl0aWVzLlZjaGF0EosBCitpc19ldmVudF9hdHRlbmRlZV9jb250cm9sX2FwcHJvdmFsX2FwcHJvdmVkGAsgAygLMlYuY2FsZW5kYXJldmVudHMuTUdldENhbGVuZGFyRXZlbnRzUmVzcG9uc2UuSXNFdmVudEF0dGVuZGVlQ29udHJvbEFwcHJvdmFsQXBwcm92ZWRFbnRyeRo5ChdDYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGlQKFUNhbGVuZGFyQnJpZWZNYXBFbnRyeRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKAsyGy5lbnRpdGllcy5DYWxlbmRhckJyaWVmSW5mbzoCOAEaOAoWRXZlbnRTdWNjZXNzb3JNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjcKFUluTWVldGluZ0NoYXRNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBGk0KK0lzRXZlbnRBdHRlbmRlZUNvbnRyb2xBcHByb3ZhbEFwcHJvdmVkRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ASKXAQogTUdldENhbGVuZGFyRXZlbnRzV2l0aEtleVJlcXVlc3QSKAoEa2V5cxgBIAMoCzIaLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRLZXkSIQoSbmVlZHNfYnJpZWZfZXZlbnRzGAIgASgIOgVmYWxzZRImChd1c2VfYXR0ZW5kZWVfcGFnZV90b2tlbhgDIAEoCDoFZmFsc2UiSgoeTUdldElzSm9pbmVkRXZlbnRTdGF0dXNSZXF1ZXN0EigKBGtleXMYASADKAsyGi5lbnRpdGllcy5DYWxlbmRhckV2ZW50S2V5Ik4KIkdldENhbGVuZGFyRXZlbnRGcm9tQXBwbGlua1JlcXVlc3QSKAoEa2V5cxgBIAMoCzIaLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRLZXki3AUKI0dldENhbGVuZGFyRXZlbnRGcm9tQXBwbGlua1Jlc3BvbnNlEjAKD2NhbGVuZGFyX2V2ZW50cxgBIAMoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQSaQoUY2FsZW5kYXJfY2hhdHRlcl9tYXAYAiADKAsySy5jYWxlbmRhcmV2ZW50cy5HZXRDYWxlbmRhckV2ZW50RnJvbUFwcGxpbmtSZXNwb25zZS5DYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRJlChJjYWxlbmRhcl9icmllZl9tYXAYAyADKAsySS5jYWxlbmRhcmV2ZW50cy5HZXRDYWxlbmRhckV2ZW50RnJvbUFwcGxpbmtSZXNwb25zZS5DYWxlbmRhckJyaWVmTWFwRW50cnkSZwoTZXZlbnRfc3VjY2Vzc29yX21hcBgEIAMoCzJKLmNhbGVuZGFyZXZlbnRzLkdldENhbGVuZGFyRXZlbnRGcm9tQXBwbGlua1Jlc3BvbnNlLkV2ZW50U3VjY2Vzc29yTWFwRW50cnkSLQoJcmVzb3VyY2VzGAUgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZRItCglidWlsZGluZ3MYBiADKAsyGi5lbnRpdGllcy5DYWxlbmRhckJ1aWxkaW5nEh8KBnZjaGF0cxgHIAMoCzIPLmVudGl0aWVzLlZjaGF0GjkKF0NhbGVuZGFyQ2hhdHRlck1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaVAoVQ2FsZW5kYXJCcmllZk1hcEVudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLmVudGl0aWVzLkNhbGVuZGFyQnJpZWZJbmZvOgI4ARo4ChZFdmVudFN1Y2Nlc3Nvck1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiXgofTUdldElzSm9pbmVkRXZlbnRTdGF0dXNSZXNwb25zZRIoCgRrZXlzGAEgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJFdmVudEtleRIRCglpc19qb2luZWQYAiADKAgisAYKIU1HZXRDYWxlbmRhckV2ZW50c1dpdGhLZXlSZXNwb25zZRIwCg9jYWxlbmRhcl9ldmVudHMYASADKAsyFy5lbnRpdGllcy5DYWxlbmRhckV2ZW50EmcKFGNhbGVuZGFyX2NoYXR0ZXJfbWFwGAIgAygLMkkuY2FsZW5kYXJldmVudHMuTUdldENhbGVuZGFyRXZlbnRzV2l0aEtleVJlc3BvbnNlLkNhbGVuZGFyQ2hhdHRlck1hcEVudHJ5EmMKEmNhbGVuZGFyX2JyaWVmX21hcBgDIAMoCzJHLmNhbGVuZGFyZXZlbnRzLk1HZXRDYWxlbmRhckV2ZW50c1dpdGhLZXlSZXNwb25zZS5DYWxlbmRhckJyaWVmTWFwRW50cnkSZQoTZXZlbnRfc3VjY2Vzc29yX21hcBgEIAMoCzJILmNhbGVuZGFyZXZlbnRzLk1HZXRDYWxlbmRhckV2ZW50c1dpdGhLZXlSZXNwb25zZS5FdmVudFN1Y2Nlc3Nvck1hcEVudHJ5EiMKCG1lZXRpbmdzGAUgAygLMhEuZW50aXRpZXMuTWVldGluZxI1ChJtZWV0aW5nX2V2ZW50X3JlZnMYBiADKAsyGS5lbnRpdGllcy5NZWV0aW5nRXZlbnRSZWYSLQoJcmVzb3VyY2VzGAcgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZRItCglidWlsZGluZ3MYCCADKAsyGi5lbnRpdGllcy5DYWxlbmRhckJ1aWxkaW5nEh8KBnZjaGF0cxgJIAMoCzIPLmVudGl0aWVzLlZjaGF0GjkKF0NhbGVuZGFyQ2hhdHRlck1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaVAoVQ2FsZW5kYXJCcmllZk1hcEVudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLmVudGl0aWVzLkNhbGVuZGFyQnJpZWZJbmZvOgI4ARo4ChZFdmVudFN1Y2Nlc3Nvck1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi8AMKGVB1c2hDYWxlbmRhckV2ZW50UmVtaW5kZXISDQoFdGl0bGUYASACKAkSEAoIZXZlbnRfaWQYAiACKAkSEgoKc3RhcnRfdGltZRgDIAIoAxISCghsb2NhdGlvbhgEIAEoCToAEhAKCGVuZF90aW1lGAUgASgDEhUKDW1lZXRpbmdfcm9vbXMYBiADKAkSGQoKaXNfYWxsX2RheRgHIAEoCDoFZmFsc2USFQoLY2FsZW5kYXJfaWQYCCABKAk6ABINCgN1aWQYCSABKAk6ABIYCg1vcmlnaW5hbF90aW1lGAogASgDOgEwEhIKB21pbnV0ZXMYCyABKAU6ATASPwoXY2FsZW5kYXJfcmVzb3VyY2VfaW5mb3MYDCADKAsyHi5lbnRpdGllcy5DYWxlbmRhclJlc291cmNlSW5mbxJWCg9yZXNvdXJjZV93ZWlnaHQYDSADKAsyPS5jYWxlbmRhcmV2ZW50cy5QdXNoQ2FsZW5kYXJFdmVudFJlbWluZGVyLlJlc291cmNlV2VpZ2h0RW50cnkSIgoacmVjb21tZW5kX21lZXRpbmdfcm9vbV9pZHMYDiADKAkaNQoTUmVzb3VyY2VXZWlnaHRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAU6AjgBIoUDCh1QdXNoQ2FsZW5kYXJFdmVudExpdmVBY3Rpdml0eRIPCgdzdW1tYXJ5GAEgASgJEhIKCnN0YXJ0X3RpbWUYAiABKAkSEAoIZW5kX3RpbWUYAyABKAkSFAoMbWVldGluZ19yb29tGAQgASgJEgsKA2tleRgFIAEoCRIVCg1vcmlnaW5hbF90aW1lGAYgASgJEhMKC2NhbGVuZGFyX2lkGAcgASgJEhMKC2V4cGlyZV90aW1lGAggASgJEgwKBHV1aWQYCSABKAkSSQoJcHVzaF90eXBlGAogASgOMjYuY2FsZW5kYXJldmVudHMuUHVzaENhbGVuZGFyRXZlbnRMaXZlQWN0aXZpdHkuUHVzaFR5cGUSDwoHdmVyc2lvbhgLIAEoAyJfCghQdXNoVHlwZRIVChFQVVNIX1RZUEVfVU5LTk9XThAAEhMKD1BVU0hfVFlQRV9TVEFSVBABEhQKEFBVU0hfVFlQRV9VUERBVEUQAhIRCg1QVVNIX1RZUEVfRU5EEAMiYgoYUHVzaENoYW5nZWRNZWV0aW5nQ2hhdElkEg8KB2NoYXRfaWQYASABKAkSNQoLc2Nyb2xsX3R5cGUYAiABKA4yFC5lbnRpdGllcy5TY3JvbGxUeXBlOgpFVkVOVF9JTkZPIi8KGU1hcmtNZWV0aW5nRW50ZXJlZFJlcXVlc3QSEgoKbWVldGluZ19pZBgBIAIoCSIcChpNYXJrTWVldGluZ0VudGVyZWRSZXNwb25zZSJlChhNYXJrU2Nyb2xsQ2xpY2tlZFJlcXVlc3QSEgoKbWVldGluZ19pZBgBIAIoCRI1CgtzY3JvbGxfdHlwZRgCIAEoDjIULmVudGl0aWVzLlNjcm9sbFR5cGU6CkVWRU5UX0lORk8iGwoZTWFya1Njcm9sbENsaWNrZWRSZXNwb25zZSI4CiVEaXNwbGF5VHJhbnNmZXJDaGF0U2Nyb2xsQ2hlY2tSZXF1ZXN0Eg8KB2NoYXRfaWQYASACKAkiRAomRGlzcGxheVRyYW5zZmVyQ2hhdFNjcm9sbENoZWNrUmVzcG9uc2USGgoSc2hvdWxkX3Nob3dfc2Nyb2xsGAEgAigIIloKHFB1c2hTY3JvbGxDbG9zZWROb3RpZmljYXRpb24SKQoLc2Nyb2xsX3R5cGUYASACKA4yFC5lbnRpdGllcy5TY3JvbGxUeXBlEg8KB2NoYXRfaWQYAiACKAkifQodQ2xvc2VFdmVudFJlbWluZGVyQ2FyZFJlcXVlc3QSEwoLY2FsZW5kYXJfaWQYASACKAkSCwoDdWlkGAIgAigJEhUKDW9yaWdpbmFsX3RpbWUYAyACKAMSEgoKc3RhcnRfdGltZRgEIAIoAxIPCgdtaW51dGVzGAUgAigFIiAKHkNsb3NlRXZlbnRSZW1pbmRlckNhcmRSZXNwb25zZSJ+Ch5QdXNoUmVtaW5kZXJDbG9zZWROb3RpZmljYXRpb24SEwoLY2FsZW5kYXJfaWQYASACKAkSCwoDdWlkGAIgAigJEhUKDW9yaWdpbmFsX3RpbWUYAyACKAMSEgoKc3RhcnRfdGltZRgEIAIoAxIPCgdtaW51dGVzGAUgAigFIsEBChdVcGdyYWRlVG9NZWV0aW5nUmVxdWVzdBIvCg5jYWxlbmRhcl9ldmVudBgBIAIoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQSKgobc2hvdWxkX2FkZF90b19hdHRlbmRlZV9saXN0GAIgASgIOgVmYWxzZRIhChJuZWVkc19icmllZl9ldmVudHMYAyABKAg6BWZhbHNlEiYKF3VzZV9hdHRlbmRlZV9wYWdlX3Rva2VuGAQgASgIOgVmYWxzZSK4AgoYVXBncmFkZVRvTWVldGluZ1Jlc3BvbnNlEiIKB21lZXRpbmcYASABKAsyES5lbnRpdGllcy5NZWV0aW5nElgKEWV2ZW50X21lZXRpbmdfbWFwGAIgAygLMj0uY2FsZW5kYXJldmVudHMuVXBncmFkZVRvTWVldGluZ1Jlc3BvbnNlLkV2ZW50TWVldGluZ01hcEVudHJ5Ei8KDmNhbGVuZGFyX2V2ZW50GAMgASgLMhcuZW50aXRpZXMuQ2FsZW5kYXJFdmVudBI1ChJtZWV0aW5nX2V2ZW50X3JlZnMYBCADKAsyGS5lbnRpdGllcy5NZWV0aW5nRXZlbnRSZWYaNgoURXZlbnRNZWV0aW5nTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIpChZKb2luTWVldGluZ0NoYXRSZXF1ZXN0Eg8KB2NoYXRfaWQYASACKAkiqQEKF0pvaW5NZWV0aW5nQ2hhdFJlc3BvbnNlEhIKCmlzX3N1Y2Nlc3MYASACKAgSTAoMam9pbkNoYXRUeXBlGAIgAigOMjYuY2FsZW5kYXJldmVudHMuSm9pbk1lZXRpbmdDaGF0UmVzcG9uc2UuSm9pbkNoYXRTdGF0dXMiLAoOSm9pbkNoYXRTdGF0dXMSCwoHU1VDQ0VTUxAAEg0KCU9QRU5fQVVUSBABIkAKFFVwZ3JhZGVUb0NoYXRSZXF1ZXN0Eg8KB2NoYXRfaWQYASACKAkSFwoPbmVlZF9iaW5kX2V2ZW50GAIgASgIIhcKFVVwZ3JhZGVUb0NoYXRSZXNwb25zZSJ1ChpQdXNoQ2FsZW5kYXJFdmVudFN5bmNFeHRyYRIUCgxoaXRfcHVzaF9vcHQYASABKAgSFgoOcGJfZ2F0ZXdheV9jbWQYAiABKAkSFQoNdHJpZ2dlcl9zY2VuZRgDIAEoCRISCgp0cmlnZ2VyX3RzGAQgASgDIs4BCiFQdXNoQ2FsZW5kYXJFdmVudFN5bmNOb3RpZmljYXRpb24SFAoMY2FsZW5kYXJfaWRzGAEgAygJEk0KBmV4dHJhcxgKIAMoCzI9LmNhbGVuZGFyZXZlbnRzLlB1c2hDYWxlbmRhckV2ZW50U3luY05vdGlmaWNhdGlvbi5FeHRyYXNFbnRyeRIVCg1kZWZhdWx0X2V4dHJhGAsgASgMGi0KC0V4dHJhc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDDoCOAEiqQMKI1JlcGx5Q2FsZW5kYXJFdmVudEludml0YXRpb25SZXF1ZXN0EjYKEmNhbGVuZGFyX2V2ZW50X2tleRgBIAIoCzIaLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRLZXkSWQoKcmVwbHlfdHlwZRgCIAEoDjI9LmNhbGVuZGFyZXZlbnRzLlJlcGx5Q2FsZW5kYXJFdmVudEludml0YXRpb25SZXF1ZXN0LlJlcGx5VHlwZToGQUNDRVBUEhsKDHF1aXRfbWVldGluZxgDIAEoCDoFZmFsc2USNAoRcnN2cF9jb21tZW50X2luZm8YBCABKAsyGS5lbnRpdGllcy5SU1ZQQ29tbWVudEluZm8SIQoSbmVlZHNfYnJpZWZfZXZlbnRzGAUgASgIOgVmYWxzZRImChd1c2VfYXR0ZW5kZWVfcGFnZV90b2tlbhgGIAEoCDoFZmFsc2UiUQoJUmVwbHlUeXBlEgoKBkFDQ0VQVBABEgsKB0RFQ0xJTkUQAhINCglURU5UQVRJVkUQAxIKCgZERUxFVEUQBBIQCgxORUVEU19BQ1RJT04QBSKSAwokUmVwbHlDYWxlbmRhckV2ZW50SW52aXRhdGlvblJlc3BvbnNlEi8KDmNhbGVuZGFyX2V2ZW50GAEgASgLMhcuZW50aXRpZXMuQ2FsZW5kYXJFdmVudBJjChNyc3ZwX2NvbW1lbnRfZmFpbGVkGAIgAygLMkYuY2FsZW5kYXJldmVudHMuUmVwbHlDYWxlbmRhckV2ZW50SW52aXRhdGlvblJlc3BvbnNlLlJTVlBDb21tZW50RmFpbGVkGtMBChFSU1ZQQ29tbWVudEZhaWxlZBIVCg1vcmlnaW5hbF90aW1lGAEgASgDEmQKCmVycm9yX2NvZGUYAiABKA4yUC5jYWxlbmRhcmV2ZW50cy5SZXBseUNhbGVuZGFyRXZlbnRJbnZpdGF0aW9uUmVzcG9uc2UuUlNWUENvbW1lbnRGYWlsZWQuRXJyb3JDb2RlIkEKCUVycm9yQ29kZRIWChFJbnRlcm5hbEVycm9yQ29kZRD0AxIcChZNZXNzYWdlRW5jcnlwdEZhaWxDb2RlELz+EiLiAQoiUmVwbHlNYWlsSW52aXRhdGlvbkJ5TWFpbElEUmVxdWVzdBIPCgdtYWlsX2lkGAEgAigJElgKCnJlcGx5X3R5cGUYAiABKA4yPC5jYWxlbmRhcmV2ZW50cy5SZXBseU1haWxJbnZpdGF0aW9uQnlNYWlsSURSZXF1ZXN0LlJlcGx5VHlwZToGQUNDRVBUIlEKCVJlcGx5VHlwZRIKCgZBQ0NFUFQQARILCgdERUNMSU5FEAISDQoJVEVOVEFUSVZFEAMSCgoGREVMRVRFEAQSEAoMTkVFRFNfQUNUSU9OEAUiJQojUmVwbHlNYWlsSW52aXRhdGlvbkJ5TWFpbElEUmVzcG9uc2UiXAoiUHVzaENhbGVuZGFyRXZlbnRJbnZpdGF0aW9uUmVxdWVzdBI2ChJjYWxlbmRhcl9ldmVudF9rZXkYASACKAsyGi5lbnRpdGllcy5DYWxlbmRhckV2ZW50S2V5ImgKEVB1c2hDYWxlbmRhckV2ZW50Ei8KDmNhbGVuZGFyX2V2ZW50GAEgAigLMhcuZW50aXRpZXMuQ2FsZW5kYXJFdmVudBIiCgdtZWV0aW5nGAIgASgLMhEuZW50aXRpZXMuTWVldGluZyJQChJQdXNoQ2FsZW5kYXJFdmVudHMSOgoPY2FsZW5kYXJfZXZlbnRzGAEgAygLMiEuY2FsZW5kYXJldmVudHMuUHVzaENhbGVuZGFyRXZlbnQihQEKGFB1c2hNZWV0aW5nTWludXRlRWRpdG9ycxIjCghjaGF0dGVycxgBIAMoCzIRLmVudGl0aWVzLkNoYXR0ZXISDwoHY2hhdF9pZBgCIAIoCRIaChJtZWV0aW5nX21pbnV0ZV91cmwYAyACKAkSFwoLZXhwaXJlX3RpbWUYBCABKAM6AjEwIl8KF1B1c2hTaGFyZWRDYWxlbmRhckV2ZW50Ei8KDmNhbGVuZGFyX2V2ZW50GAEgAigLMhcuZW50aXRpZXMuQ2FsZW5kYXJFdmVudBITCgttZXNzYWdlX2lkcxgCIAMoCSJUCh1QdXNoQ2FsZW5kYXJFdmVudFZDaGF0Q2hhbmdlcxIzCgdjaGFuZ2VzGAEgAygLMiIuZW50aXRpZXMuQ2FsZW5kYXJFdmVudFZDaGF0Q2hhbmdlIuIBChRRdWVyeUluc3RhbmNlUmVxdWVzdBIUCgxjYWxlbmRhcl9pZHMYASADKAkSEgoKc3RhcnRfdGltZRgCIAEoAxIQCghlbmRfdGltZRgDIAEoAxIeChZ3b3JrX2hvdXJfY2FsZW5kYXJfaWRzGAQgAygJEiMKG2RldmljZV9zZXR0aW5nX2NhbGVuZGFyX2lkcxgFIAMoCRIhChJuZWVkc19icmllZl9ldmVudHMYBiABKAg6BWZhbHNlEiYKF3VzZV9hdHRlbmRlZV9wYWdlX3Rva2VuGAcgASgIOgVmYWxzZSL8CQoVUXVlcnlJbnN0YW5jZVJlc3BvbnNlEj4KFWNhbGVuZGFyRXZlbnRJbnN0YW5jZRgBIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRJbnN0YW5jZRJBCgZldmVudHMYAiADKAsyMS5jYWxlbmRhcmV2ZW50cy5RdWVyeUluc3RhbmNlUmVzcG9uc2UuRXZlbnRzRW50cnkSTgoNZXZlbnRfY3JlYXRvchgDIAMoCzI3LmNhbGVuZGFyZXZlbnRzLlF1ZXJ5SW5zdGFuY2VSZXNwb25zZS5FdmVudENyZWF0b3JFbnRyeRJfChZvcmlnaW5hbF9ldmVudF9jcmVhdG9yGAQgAygLMj8uY2FsZW5kYXJldmVudHMuUXVlcnlJbnN0YW5jZVJlc3BvbnNlLk9yaWdpbmFsRXZlbnRDcmVhdG9yRW50cnkSWwoUcHJpdmF0ZV9jYWxlbmRhcl9pZHMYBSADKAsyPS5jYWxlbmRhcmV2ZW50cy5RdWVyeUluc3RhbmNlUmVzcG9uc2UuUHJpdmF0ZUNhbGVuZGFySWRzRW50cnkSVwoSd29ya19ob3VyX3NldHRpbmdzGAYgAygLMjsuY2FsZW5kYXJldmVudHMuUXVlcnlJbnN0YW5jZVJlc3BvbnNlLldvcmtIb3VyU2V0dGluZ3NFbnRyeRJoChtjYWxlbmRhcl9pZF9kZXZpY2Vfc2V0dGluZ3MYByADKAsyQy5jYWxlbmRhcmV2ZW50cy5RdWVyeUluc3RhbmNlUmVzcG9uc2UuQ2FsZW5kYXJJZERldmljZVNldHRpbmdzRW50cnkSVwoSdXNlcl9jYWxlbmRhcl9wZXJtGAggAygLMjsuY2FsZW5kYXJldmVudHMuUXVlcnlJbnN0YW5jZVJlc3BvbnNlLlVzZXJDYWxlbmRhclBlcm1FbnRyeRpGCgtFdmVudHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5lbnRpdGllcy5DYWxlbmRhckV2ZW50OgI4ARpLChFFdmVudENyZWF0b3JFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5lbnRpdGllcy5FdmVudENyZWF0b3I6AjgBGlMKGU9yaWdpbmFsRXZlbnRDcmVhdG9yRW50cnkSCwoDa2V5GAEgASgJEiUKBXZhbHVlGAIgASgLMhYuZW50aXRpZXMuRXZlbnRDcmVhdG9yOgI4ARo5ChdQcml2YXRlQ2FsZW5kYXJJZHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBGlIKFVdvcmtIb3VyU2V0dGluZ3NFbnRyeRILCgNrZXkYASABKAkSKAoFdmFsdWUYAiABKAsyGS5lbnRpdGllcy5Xb3JrSG91clNldHRpbmc6AjgBGmUKHUNhbGVuZGFySWREZXZpY2VTZXR0aW5nc0VudHJ5EgsKA2tleRgBIAEoCRIzCgV2YWx1ZRgCIAEoCzIkLmVudGl0aWVzLkNhbGVuZGFyVXNlckRldmljZVNldHRpbmdzOgI4ARpWChVVc2VyQ2FsZW5kYXJQZXJtRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgOMh0uZW50aXRpZXMuQ2FsZW5kYXIuQWNjZXNzUm9sZToCOAEiSQomR2V0UmVzb3VyY2VDaGVja0luSW5mb1dpdGhUb2tlblJlcXVlc3QSHwoXcmVzb3VyY2VfY2hlY2tfaW5fdG9rZW4YASABKAki9gkKJ0dldFJlc291cmNlQ2hlY2tJbkluZm9XaXRoVG9rZW5SZXNwb25zZRIsCghyZXNvdXJjZRgBIAEoCzIaLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2USIAoYY3VycmVudF90aW1lc3RhbXBfc2Vjb25kGAIgASgDEmIKEWF1dGhfY3JlYXRlX2V2ZW50GAMgASgOMkcuY2FsZW5kYXJldmVudHMuR2V0UmVzb3VyY2VDaGVja0luSW5mb1dpdGhUb2tlblJlc3BvbnNlLkNyZWF0ZUV2ZW50QXV0aBJAChdjYWxlbmRhcl9ldmVudF9pbnN0YW5jZRgEIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRJbnN0YW5jZRJTCgZldmVudHMYBSADKAsyQy5jYWxlbmRhcmV2ZW50cy5HZXRSZXNvdXJjZUNoZWNrSW5JbmZvV2l0aFRva2VuUmVzcG9uc2UuRXZlbnRzRW50cnkSYgoOZXZlbnRfY3JlYXRvcnMYBiADKAsySi5jYWxlbmRhcmV2ZW50cy5HZXRSZXNvdXJjZUNoZWNrSW5JbmZvV2l0aFRva2VuUmVzcG9uc2UuRXZlbnRDcmVhdG9yc0VudHJ5EnMKF29yaWdpbmFsX2V2ZW50X2NyZWF0b3JzGAcgAygLMlIuY2FsZW5kYXJldmVudHMuR2V0UmVzb3VyY2VDaGVja0luSW5mb1dpdGhUb2tlblJlc3BvbnNlLk9yaWdpbmFsRXZlbnRDcmVhdG9yc0VudHJ5EnAKFmluc3RhbmNlX2NoZWNrX2luX2luZm8YCCADKAsyUC5jYWxlbmRhcmV2ZW50cy5HZXRSZXNvdXJjZUNoZWNrSW5JbmZvV2l0aFRva2VuUmVzcG9uc2UuSW5zdGFuY2VDaGVja0luSW5mb0VudHJ5Ek4KGnJlc291cmNlX2NoZWNrX2luX3N0cmF0ZWd5GAkgASgLMiouY2FsZW5kYXJfZW50aXRpZXMuUmVzb3VyY2VDaGVja0luU3RyYXRlZ3kSLAoIYnVpbGRpbmcYCiABKAsyGi5lbnRpdGllcy5DYWxlbmRhckJ1aWxkaW5nEhkKEWV4dHJhX2NvbnRhY3RfaWRzGAsgAygJGkYKC0V2ZW50c0VudHJ5EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQ6AjgBGkwKEkV2ZW50Q3JlYXRvcnNFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5lbnRpdGllcy5FdmVudENyZWF0b3I6AjgBGlQKGk9yaWdpbmFsRXZlbnRDcmVhdG9yc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmVudGl0aWVzLkV2ZW50Q3JlYXRvcjoCOAEaYgoYSW5zdGFuY2VDaGVja0luSW5mb0VudHJ5EgsKA2tleRgBIAEoCRI1CgV2YWx1ZRgCIAEoCzImLmNhbGVuZGFyX2VudGl0aWVzLkluc3RhbmNlQ2hlY2tJbkluZm86AjgBIkwKD0NyZWF0ZUV2ZW50QXV0aBILCgdVTktOT1dOEAASDgoKQVVUSE9SSVpFRBABEhwKGExJTUlURURfQllfVVNFUl9TVFJBVEVHWRACIm8KFkNoZWNrSW5CeVFSQ29kZVJlcXVlc3QSEwoLcmVzb3VyY2VfaWQYASABKAkSDgoGcmVmX2lkGAIgASgJEhgKEGV2ZW50X3N0YXJ0X3RpbWUYAyABKAMSFgoOZXZlbnRfZW5kX3RpbWUYBCABKAMitQEKF0NoZWNrSW5CeVFSQ29kZVJlc3BvbnNlEkUKDWNoZWNrX2luX3Jlc3AYASABKA4yLi5jYWxlbmRhcmV2ZW50cy5DaGVja0luQnlRUkNvZGVSZXNwb25zZS5TdGF0dXMiUwoGU3RhdHVzEgsKB1VOS05PV04QABILCgdTVUNDRVNTEAESDAoIUkVMRUFTRUQQAhIQCgxVTkFVVEhPUklaRUQQAxIPCgtJTkFDVElWQVRFRBAEIqYBChtHZXRSZXNvdXJjZVdpdGhUb2tlblJlcXVlc3QSFgoOcmVzb3VyY2VfdG9rZW4YASACKAkSEgoKc3RhcnRfdGltZRgCIAIoAxIQCghlbmRfdGltZRgDIAIoAxIhChJuZWVkc19icmllZl9ldmVudHMYBCABKAg6BWZhbHNlEiYKF3VzZV9hdHRlbmRlZV9wYWdlX3Rva2VuGAUgASgIOgVmYWxzZSLjBQocR2V0UmVzb3VyY2VXaXRoVG9rZW5SZXNwb25zZRIsCghyZXNvdXJjZRgBIAEoCzIaLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2USLAoIYnVpbGRpbmcYAiABKAsyGi5lbnRpdGllcy5DYWxlbmRhckJ1aWxkaW5nEj4KFWNhbGVuZGFyRXZlbnRJbnN0YW5jZRgDIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRJbnN0YW5jZRJICgZldmVudHMYBCADKAsyOC5jYWxlbmRhcmV2ZW50cy5HZXRSZXNvdXJjZVdpdGhUb2tlblJlc3BvbnNlLkV2ZW50c0VudHJ5ElUKDWV2ZW50X2NyZWF0b3IYBSADKAsyPi5jYWxlbmRhcmV2ZW50cy5HZXRSZXNvdXJjZVdpdGhUb2tlblJlc3BvbnNlLkV2ZW50Q3JlYXRvckVudHJ5EmYKFm9yaWdpbmFsX2V2ZW50X2NyZWF0b3IYBiADKAsyRi5jYWxlbmRhcmV2ZW50cy5HZXRSZXNvdXJjZVdpdGhUb2tlblJlc3BvbnNlLk9yaWdpbmFsRXZlbnRDcmVhdG9yRW50cnkSGQoRY3VycmVudF90aW1lc3RhbXAYByABKAMSGQoLbmVlZF9wb3BfdXAYCCABKAg6BHRydWUaRgoLRXZlbnRzRW50cnkSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgLMhcuZW50aXRpZXMuQ2FsZW5kYXJFdmVudDoCOAEaSwoRRXZlbnRDcmVhdG9yRW50cnkSCwoDa2V5GAEgASgJEiUKBXZhbHVlGAIgASgLMhYuZW50aXRpZXMuRXZlbnRDcmVhdG9yOgI4ARpTChlPcmlnaW5hbEV2ZW50Q3JlYXRvckVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmVudGl0aWVzLkV2ZW50Q3JlYXRvcjoCOAEipQEKFFNlaXplUmVzb3VyY2VSZXF1ZXN0EhwKFHJlc291cmNlX2NhbGVuZGFyX2lkGAEgAigJEhIKCnN0YXJ0X3RpbWUYAiACKAMSEAoIZW5kX3RpbWUYAyACKAMSIQoSbmVlZHNfYnJpZWZfZXZlbnRzGAQgASgIOgVmYWxzZRImChd1c2VfYXR0ZW5kZWVfcGFnZV90b2tlbhgFIAEoCDoFZmFsc2UiSAoVU2VpemVSZXNvdXJjZVJlc3BvbnNlEi8KDmNhbGVuZGFyX2V2ZW50GAEgASgLMhcuZW50aXRpZXMuQ2FsZW5kYXJFdmVudCLIAQoSR2V0QnVzeVVzZXJSZXF1ZXN0EhQKDGNhbGVuZGFyX2lkcxgBIAMoCRISCgpzdGFydF90aW1lGAIgAigDEhAKCGVuZF90aW1lGAMgAigDEgsKA3VpZBgEIAEoCRIVCg1vcmlnaW5hbF90aW1lGAUgASgDEioKHmJpZGlyZWN0aW9uYWxfc3luY19vY2N1cHlfYnVzeRgGIAEoCEICGAESJgoeYmlkaXJlY3Rpb25hbF9zeW5jX29wdGltaXplX2ZnGAcgASgIIqIBChNHZXRCdXN5VXNlclJlc3BvbnNlElMKEWNhbGVuZGFyX2J1c3lfbWFwGAEgAygLMjguY2FsZW5kYXJldmVudHMuR2V0QnVzeVVzZXJSZXNwb25zZS5DYWxlbmRhckJ1c3lNYXBFbnRyeRo2ChRDYWxlbmRhckJ1c3lNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBIosCChlCYXRjaFF1ZXJ5SW5zdGFuY2VSZXF1ZXN0ElUKD2NhbGVuZGFyX2lkX21hcBgBIAMoCzI8LmNhbGVuZGFyZXZlbnRzLkJhdGNoUXVlcnlJbnN0YW5jZVJlcXVlc3QuQ2FsZW5kYXJJZE1hcEVudHJ5EiEKEm5lZWRzX2JyaWVmX2V2ZW50cxgCIAEoCDoFZmFsc2USJgoXdXNlX2F0dGVuZGVlX3BhZ2VfdG9rZW4YAyABKAg6BWZhbHNlGkwKEkNhbGVuZGFySWRNYXBFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5lbnRpdGllcy5TdGFydEVuZFRpbWU6AjgBIuwCChpCYXRjaFF1ZXJ5SW5zdGFuY2VSZXNwb25zZRJTCg1pbnN0YW5jZXNfbWFwGAEgAygLMjwuY2FsZW5kYXJldmVudHMuQmF0Y2hRdWVyeUluc3RhbmNlUmVzcG9uc2UuSW5zdGFuY2VzTWFwRW50cnkSZwoYY2FsZW5kYXJfbWF4X3ZlcnNpb25fbWFwGAIgAygLMkUuY2FsZW5kYXJldmVudHMuQmF0Y2hRdWVyeUluc3RhbmNlUmVzcG9uc2UuQ2FsZW5kYXJNYXhWZXJzaW9uTWFwRW50cnkaUgoRSW5zdGFuY2VzTWFwRW50cnkSCwoDa2V5GAEgASgJEiwKBXZhbHVlGAIgASgLMh0uZW50aXRpZXMuQ2FsZW5kYXJJbnN0YW5jZVNldDoCOAEaPAoaQ2FsZW5kYXJNYXhWZXJzaW9uTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASLeAQobQmF0Y2hRdWVyeUV2ZW50c0RpZmZSZXF1ZXN0EmEKFGNhbGVuZGFyX3ZlcnNpb25fbWFwGAEgAygLMkMuY2FsZW5kYXJldmVudHMuQmF0Y2hRdWVyeUV2ZW50c0RpZmZSZXF1ZXN0LkNhbGVuZGFyVmVyc2lvbk1hcEVudHJ5GlwKF0NhbGVuZGFyVmVyc2lvbk1hcEVudHJ5EgsKA2tleRgBIAEoCRIwCgV2YWx1ZRgCIAEoCzIhLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRWZXJzaW9uU2V0OgI4ASJQChxCYXRjaFF1ZXJ5RXZlbnRzRGlmZlJlc3BvbnNlEjAKD2NhbGVuZGFyX2V2ZW50cxgBIAMoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQiSQobUHVsbE1lZXRpbmdSb29tc0luZm9SZXF1ZXN0EhUKCnN0YXJ0X3RpbWUYASABKAM6ATASEwoIZW5kX3RpbWUYAiABKAM6ATAi2gIKHFB1bGxNZWV0aW5nUm9vbXNJbmZvUmVzcG9uc2USTgoJcmVzb3VyY2VzGAEgAygLMjsuY2FsZW5kYXJldmVudHMuUHVsbE1lZXRpbmdSb29tc0luZm9SZXNwb25zZS5SZXNvdXJjZXNFbnRyeRJOCglidWlsZGluZ3MYAiADKAsyOy5jYWxlbmRhcmV2ZW50cy5QdWxsTWVldGluZ1Jvb21zSW5mb1Jlc3BvbnNlLkJ1aWxkaW5nc0VudHJ5GkwKDlJlc291cmNlc0VudHJ5EgsKA2tleRgBIAEoCRIpCgV2YWx1ZRgCIAEoCzIaLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2U6AjgBGkwKDkJ1aWxkaW5nc0VudHJ5EgsKA2tleRgBIAEoCRIpCgV2YWx1ZRgCIAEoCzIaLmVudGl0aWVzLkNhbGVuZGFyQnVpbGRpbmc6AjgBIlQKGVB1bGxSZXNvdXJjZXNCeUlkc1JlcXVlc3QSCwoDaWRzGAEgAygJEhUKCnN0YXJ0X3RpbWUYAiABKAM6ATASEwoIZW5kX3RpbWUYAyABKAM6ATAiuAEKGlB1bGxSZXNvdXJjZXNCeUlkc1Jlc3BvbnNlEkwKCXJlc291cmNlcxgBIAMoCzI5LmNhbGVuZGFyZXZlbnRzLlB1bGxSZXNvdXJjZXNCeUlkc1Jlc3BvbnNlLlJlc291cmNlc0VudHJ5GkwKDlJlc291cmNlc0VudHJ5EgsKA2tleRgBIAEoCRIpCgV2YWx1ZRgCIAEoCzIaLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2U6AjgBItsBChRQdWxsQnVpbGRpbmdzUmVxdWVzdBIpCgtldmVudF9maWVsZBgBIAEoCzIULmVudGl0aWVzLkV2ZW50RmllbGQSOAoTbWVldGluZ19yb29tX2ZpbHRlchgCIAEoCzIbLmVudGl0aWVzLk1lZXRpbmdSb29tRmlsdGVyEh4KFmVuYWJsZV9yZWNvbW1lbmRhdGlvbnMYAyABKAgSPgoWb3BlcmF0ZV9pbnN0YW5jZV9maWVsZBgEIAEoCzIeLmVudGl0aWVzLk9wZXJhdGVJbnN0YW5jZUZpZWxkIq4BChVQdWxsQnVpbGRpbmdzUmVzcG9uc2USRwoJYnVpbGRpbmdzGAEgAygLMjQuY2FsZW5kYXJldmVudHMuUHVsbEJ1aWxkaW5nc1Jlc3BvbnNlLkJ1aWxkaW5nc0VudHJ5GkwKDkJ1aWxkaW5nc0VudHJ5EgsKA2tleRgBIAEoCRIpCgV2YWx1ZRgCIAEoCzIaLmVudGl0aWVzLkNhbGVuZGFyQnVpbGRpbmc6AjgBIsQDCiFQdWxsTWVldGluZ1Jvb21zSW5CdWlsZGluZ1JlcXVlc3QSFQoKc3RhcnRfdGltZRgBIAEoAzoBMBITCghlbmRfdGltZRgCIAEoAzoBMBIUCgxidWlsZGluZ19pZHMYAyADKAkSDwoFcnJ1bGUYBCABKAk6ABIlChZuZWVkX2Rpc2FibGVkX3Jlc291cmNlGAUgASgIOgVmYWxzZRIbCg5zdGFydF90aW1lem9uZRgGIAEoCToDVVRDEjgKE21lZXRpbmdfcm9vbV9maWx0ZXIYByABKAsyGy5lbnRpdGllcy5NZWV0aW5nUm9vbUZpbHRlchJDChltZWV0aW5nX3Jvb21fZmxvb3JfZmlsdGVyGAggAygLMiAuZW50aXRpZXMuTWVldGluZ1Jvb21GbG9vckZpbHRlchIpCgtldmVudF9maWVsZBgJIAEoCzIULmVudGl0aWVzLkV2ZW50RmllbGQSHgoWZW5hYmxlX3JlY29tbWVuZGF0aW9ucxgKIAEoCBI+ChZvcGVyYXRlX2luc3RhbmNlX2ZpZWxkGAsgASgLMh4uZW50aXRpZXMuT3BlcmF0ZUluc3RhbmNlRmllbGQilAUKIlB1bGxNZWV0aW5nUm9vbXNJbkJ1aWxkaW5nUmVzcG9uc2USVAoJcmVzb3VyY2VzGAEgAygLMkEuY2FsZW5kYXJldmVudHMuUHVsbE1lZXRpbmdSb29tc0luQnVpbGRpbmdSZXNwb25zZS5SZXNvdXJjZXNFbnRyeRJ7Ch9idWlsZGluZ19pZF90b19hZGp1c3RfdGltZV9pbmZvGAIgAygLMlIuY2FsZW5kYXJldmVudHMuUHVsbE1lZXRpbmdSb29tc0luQnVpbGRpbmdSZXNwb25zZS5CdWlsZGluZ0lkVG9BZGp1c3RUaW1lSW5mb0VudHJ5ElMKHGJ1aWxkaW5nX3JlY29tbWVuZF9yZXNvdXJjZXMYAyADKAsyLS5jYWxlbmRhcmV2ZW50cy5CdWlsZGluZ1JlY29tbWVuZFJlc291cmNlSW5mbxJfCg9yZXNvdXJjZV93ZWlnaHQYBCADKAsyRi5jYWxlbmRhcmV2ZW50cy5QdWxsTWVldGluZ1Jvb21zSW5CdWlsZGluZ1Jlc3BvbnNlLlJlc291cmNlV2VpZ2h0RW50cnkaTAoOUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgLMhouZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZToCOAEaYAofQnVpbGRpbmdJZFRvQWRqdXN0VGltZUluZm9FbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5lbnRpdGllcy5MZXZlbEFkanVzdFRpbWVJbmZvOgI4ARo1ChNSZXNvdXJjZVdlaWdodEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBToCOAEiSgodQnVpbGRpbmdSZWNvbW1lbmRSZXNvdXJjZUluZm8SEwoLYnVpbGRpbmdfaWQYASABKAkSFAoMcmVzb3VyY2VfaWRzGAIgAygJIpQBCiJQdWxsQWxsTWVldGluZ1Jvb21zSW5UZW5hbnRSZXF1ZXN0EhUKCnN0YXJ0X3RpbWUYASABKAM6ATASEwoIZW5kX3RpbWUYAiABKAM6ATASGwoOc3RhcnRfdGltZXpvbmUYAyABKAk6A1VUQxIWCg5yZXNvdXJjZV9pbmRleBgEIAEoCRINCgVsaW1pdBgFIAEoAyLiAQojUHVsbEFsbE1lZXRpbmdSb29tc0luVGVuYW50UmVzcG9uc2USVQoJcmVzb3VyY2VzGAEgAygLMkIuY2FsZW5kYXJldmVudHMuUHVsbEFsbE1lZXRpbmdSb29tc0luVGVuYW50UmVzcG9uc2UuUmVzb3VyY2VzRW50cnkSFgoOcmVzb3VyY2VfaW5kZXgYAiABKAkaTAoOUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgLMhouZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZToCOAEi5gIKIlB1bGxNZWV0aW5nUm9vbUFuZExldmVsSW5mb1JlcXVlc3QSFQoKc3RhcnRfdGltZRgBIAEoAzoBMBITCghlbmRfdGltZRgCIAEoAzoBMBIRCglsZXZlbF9pZHMYAyADKAkSDwoFcnJ1bGUYBCABKAk6ABIlChZuZWVkX2Rpc2FibGVkX3Jlc291cmNlGAUgASgIOgVmYWxzZRIbCg5zdGFydF90aW1lem9uZRgGIAEoCToDVVRDEiIKE25lZWRfdG9wX2xldmVsX2luZm8YByABKAg6BWZhbHNlElYKCWp1bXBfdHlwZRgIIAEoDjI7LmNhbGVuZGFyZXZlbnRzLlB1bGxNZWV0aW5nUm9vbUFuZExldmVsSW5mb1JlcXVlc3QuSnVtcFR5cGU6BkRpcmVjdCIwCghKdW1wVHlwZRIKCgZEaXJlY3QQARIKCgZFeHBhbmQQAhIMCghSZWRpcmVjdBADIrYFCiNQdWxsTWVldGluZ1Jvb21BbmRMZXZlbEluZm9SZXNwb25zZRJWCgpsZXZlbF9pbmZvGAEgAygLMkIuY2FsZW5kYXJldmVudHMuUHVsbE1lZXRpbmdSb29tQW5kTGV2ZWxJbmZvUmVzcG9uc2UuTGV2ZWxJbmZvRW50cnkSHQoVZGlzcGxheV9sZXZlbF9pZF9saXN0GAIgAygJEmoKFWF1dG9fZGlzcGxheV9wYXRoX21hcBgDIAMoCzJLLmNhbGVuZGFyZXZlbnRzLlB1bGxNZWV0aW5nUm9vbUFuZExldmVsSW5mb1Jlc3BvbnNlLkF1dG9EaXNwbGF5UGF0aE1hcEVudHJ5Eh8KF3JlY2VudGx5X3VzZWRfbm9kZV9saXN0GAQgAygJEnYKHGxldmVsX2lkX3RvX2FkanVzdF90aW1lX2luZm8YBSADKAsyUC5jYWxlbmRhcmV2ZW50cy5QdWxsTWVldGluZ1Jvb21BbmRMZXZlbEluZm9SZXNwb25zZS5MZXZlbElkVG9BZGp1c3RUaW1lSW5mb0VudHJ5GlUKDkxldmVsSW5mb0VudHJ5EgsKA2tleRgBIAEoCRIyCgV2YWx1ZRgCIAEoCzIjLmNhbGVuZGFyX2VudGl0aWVzLkxldmVsUmVsYXRlZEluZm86AjgBGl0KF0F1dG9EaXNwbGF5UGF0aE1hcEVudHJ5EgsKA2tleRgBIAEoCRIxCgV2YWx1ZRgCIAEoCzIiLmNhbGVuZGFyX2VudGl0aWVzLkF1dG9EaXNwbGF5UGF0aDoCOAEaXQocTGV2ZWxJZFRvQWRqdXN0VGltZUluZm9FbnRyeRILCgNrZXkYASABKAkSLAoFdmFsdWUYAiABKAsyHS5lbnRpdGllcy5MZXZlbEFkanVzdFRpbWVJbmZvOgI4ASK8AQolUHVsbEFsbE1lZXRpbmdSb29tQW5kTGV2ZWxJbmZvUmVxdWVzdBISCghsZXZlbF9pZBgBIAEoCToAEhIKBmN1cnNvchgCIAEoCToCLTESFQoKc3RhcnRfdGltZRgDIAEoAzoBMBITCghlbmRfdGltZRgEIAEoAzoBMBIbCg5zdGFydF90aW1lem9uZRgFIAEoCToDVVRDEiIKE25lZWRfdG9wX2xldmVsX2luZm8YBiABKAg6BWZhbHNlIpQECiZQdWxsQWxsTWVldGluZ1Jvb21BbmRMZXZlbEluZm9SZXNwb25zZRJbCgtsZXZlbF9pbmZvcxgBIAMoCzJGLmNhbGVuZGFyZXZlbnRzLlB1bGxBbGxNZWV0aW5nUm9vbUFuZExldmVsSW5mb1Jlc3BvbnNlLkxldmVsSW5mb3NFbnRyeRISCgZjdXJzb3IYAiABKAk6Ai0xEhMKC2lzX2ZpbmlzaGVkGAMgASgIEh0KFWRpc3BsYXlfbGV2ZWxfaWRfbGlzdBgEIAMoCRJtChVhdXRvX2Rpc3BsYXlfcGF0aF9tYXAYBSADKAsyTi5jYWxlbmRhcmV2ZW50cy5QdWxsQWxsTWVldGluZ1Jvb21BbmRMZXZlbEluZm9SZXNwb25zZS5BdXRvRGlzcGxheVBhdGhNYXBFbnRyeRIfChdyZWNlbnRseV91c2VkX25vZGVfbGlzdBgGIAMoCRpWCg9MZXZlbEluZm9zRW50cnkSCwoDa2V5GAEgASgJEjIKBXZhbHVlGAIgASgLMiMuY2FsZW5kYXJfZW50aXRpZXMuTGV2ZWxSZWxhdGVkSW5mbzoCOAEaXQoXQXV0b0Rpc3BsYXlQYXRoTWFwRW50cnkSCwoDa2V5GAEgASgJEjEKBXZhbHVlGAIgASgLMiIuY2FsZW5kYXJfZW50aXRpZXMuQXV0b0Rpc3BsYXlQYXRoOgI4ASJQChdQdWxsU3ViTGV2ZWxJbmZvUmVxdWVzdBIRCglsZXZlbF9pZHMYASADKAkSIgoTbmVlZF90b3BfbGV2ZWxfaW5mbxgCIAEoCDoFZmFsc2Ui3QEKGFB1bGxTdWJMZXZlbEluZm9SZXNwb25zZRJLCgpsZXZlbF9pbmZvGAEgAygLMjcuY2FsZW5kYXJldmVudHMuUHVsbFN1YkxldmVsSW5mb1Jlc3BvbnNlLkxldmVsSW5mb0VudHJ5Eh0KFWRpc3BsYXlfbGV2ZWxfaWRfbGlzdBgCIAMoCRpVCg5MZXZlbEluZm9FbnRyeRILCgNrZXkYASABKAkSMgoFdmFsdWUYAiABKAsyIy5jYWxlbmRhcl9lbnRpdGllcy5MZXZlbFJlbGF0ZWRJbmZvOgI4ASKBAQoqUHVsbEN1c3RvbUxldmVsQ29uZGl0aW9uYWxSZXNvdXJjZXNSZXF1ZXN0EhEKCWxldmVsX2lkcxgBIAMoCRIQCghjYXBhY2l0eRgCIAEoBRIPCgd0YWdfaWRzGAMgAygJEg4KBmN1cnNvchgEIAEoCRINCgVjb3VudBgFIAEoBSKBAQorUHVsbEN1c3RvbUxldmVsQ29uZGl0aW9uYWxSZXNvdXJjZXNSZXNwb25zZRItCglyZXNvdXJjZXMYASADKAsyGi5lbnRpdGllcy5DYWxlbmRhclJlc291cmNlEg4KBmN1cnNvchgCIAEoCRITCgtpc19maW5pc2hlZBgDIAEoCCIpChRQdWxsTGV2ZWxQYXRoUmVxdWVzdBIRCglsZXZlbF9pZHMYASADKAki7gEKFVB1bGxMZXZlbFBhdGhSZXNwb25zZRJPCg5sZXZlbF9wYXRoX21hcBgBIAMoCzI3LmNhbGVuZGFyZXZlbnRzLlB1bGxMZXZlbFBhdGhSZXNwb25zZS5MZXZlbFBhdGhNYXBFbnRyeRoeCglMZXZlbFBhdGgSEQoJbGV2ZWxfaWRzGAEgAygJGmQKEUxldmVsUGF0aE1hcEVudHJ5EgsKA2tleRgBIAEoCRI+CgV2YWx1ZRgCIAEoCzIvLmNhbGVuZGFyZXZlbnRzLlB1bGxMZXZlbFBhdGhSZXNwb25zZS5MZXZlbFBhdGg6AjgBIo4CChtTZWFyY2hNZWV0aW5nUm9vbXNWMlJlcXVlc3QSFQoKc3RhcnRfdGltZRgBIAEoAzoBMBITCghlbmRfdGltZRgCIAEoAzoBMBIRCgdrZXl3b3JkGAMgASgJOgASEQoFY291bnQYBCABKAU6AjUwEg8KBXJydWxlGAUgASgJOgASJQoWbmVlZF9kaXNhYmxlZF9yZXNvdXJjZRgGIAEoCDoFZmFsc2USGwoOc3RhcnRfdGltZXpvbmUYByABKAk6A1VUQxIOCgZjdXJzb3IYCCABKAUSOAoTbWVldGluZ19yb29tX2ZpbHRlchgJIAEoCzIbLmVudGl0aWVzLk1lZXRpbmdSb29tRmlsdGVyIm8KHFNlYXJjaE1lZXRpbmdSb29tc1YyUmVzcG9uc2USLQoJcmVzb3VyY2VzGAEgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZRIOCgZjdXJzb3IYAiABKAUSEAoIaGFzX21vcmUYAyABKAgihQMKGVNlYXJjaE1lZXRpbmdSb29tc1JlcXVlc3QSFQoKc3RhcnRfdGltZRgBIAEoAzoBMBITCghlbmRfdGltZRgCIAEoAzoBMBIRCgdrZXl3b3JkGAMgASgJOgASEQoFY291bnQYBCABKAU6AjUwEg8KBXJydWxlGAUgASgJOgASJQoWbmVlZF9kaXNhYmxlZF9yZXNvdXJjZRgGIAEoCDoFZmFsc2USGwoOc3RhcnRfdGltZXpvbmUYByABKAk6A1VUQxI4ChNtZWV0aW5nX3Jvb21fZmlsdGVyGAggASgLMhsuZW50aXRpZXMuTWVldGluZ1Jvb21GaWx0ZXISEQoGY3Vyc29yGAkgASgFOgEwEkUKBHR5cGUYCiABKA4yLi5jYWxlbmRhcmV2ZW50cy5TZWFyY2hNZWV0aW5nUm9vbXNSZXF1ZXN0LlR5cGU6B0RFRkFVTFQiLQoEVHlwZRILCgdVTktOT1dOEAASCwoHREVGQVVMVBABEgsKB0JZX1BBR0UQAiJ0ChpTZWFyY2hNZWV0aW5nUm9vbXNSZXNwb25zZRItCglidWlsZGluZ3MYASADKAsyGi5lbnRpdGllcy5DYWxlbmRhckJ1aWxkaW5nEhcKCGhhc19tb3JlGAIgASgIOgVmYWxzZRIOCgZjdXJzb3IYAyABKAUiewohUHVsbE1lZXRpbmdSb29tc1N1YnNjcmliZXJSZXF1ZXN0EhUKCnN0YXJ0X3RpbWUYASABKAM6ATASEwoIZW5kX3RpbWUYAiABKAM6ATASFAoMcmVzb3VyY2VfaWRzGAMgAygJEhQKDGNhbGVuZGFyX2lkcxgEIAMoCSLQAwoiUHVsbE1lZXRpbmdSb29tc1N1YnNjcmliZXJSZXNwb25zZRKLAQombWVldGluZ19yb29tc19zdWJzY3JpcHRpb25faW5mb3JtYXRpb24YASADKAsyWy5jYWxlbmRhcmV2ZW50cy5QdWxsTWVldGluZ1Jvb21zU3Vic2NyaWJlclJlc3BvbnNlLk1lZXRpbmdSb29tc1N1YnNjcmlwdGlvbkluZm9ybWF0aW9uRW50cnkSagoVY2FsZW5kYXJfcmVzb3VyY2VfbWFwGAIgAygLMksuY2FsZW5kYXJldmVudHMuUHVsbE1lZXRpbmdSb29tc1N1YnNjcmliZXJSZXNwb25zZS5DYWxlbmRhclJlc291cmNlTWFwRW50cnkadAooTWVldGluZ1Jvb21zU3Vic2NyaXB0aW9uSW5mb3JtYXRpb25FbnRyeRILCgNrZXkYASABKAkSNwoFdmFsdWUYAiABKAsyKC5lbnRpdGllcy5NZWV0aW5nU3Vic2NyaXB0aW9uSW5mb3JtYXRpb246AjgBGjoKGENhbGVuZGFyUmVzb3VyY2VNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpYCCidQdWxsTWVldGluZ1Jvb21TdGF0dXNJbmZvcm1hdGlvblJlcXVlc3QSFQoKc3RhcnRfdGltZRgBIAEoAzoBMBITCghlbmRfdGltZRgCIAEoAzoBMBIYCgxyZXNvdXJjZV9pZHMYAyADKAlCAhgBEhQKDGNhbGVuZGFyX2lkcxgEIAMoCRITCgtldmVudF9ycnVsZRgFIAEoCRIgChRuZWVkX3N1YnNjcmliZXJfaW5mbxgGIAEoCEICGAESFwoPc3RhcnRfdGltZV96b25lGAcgASgJEj8KE2V2ZW50X3VuaXF1ZV9maWVsZHMYCCABKAsyIi5lbnRpdGllcy5DYWxlbmRhckV2ZW50VW5pcXVlRmllbGQi4QgKKVB1bGxNZWV0aW5nUm9vbXNTdGF0dXNJbmZvcm1hdGlvblJlc3BvbnNlEnkKGW1lZXRpbmdfcm9vbXNfaW5mb3JtYXRpb24YASADKAsyVi5jYWxlbmRhcmV2ZW50cy5QdWxsTWVldGluZ1Jvb21zU3RhdHVzSW5mb3JtYXRpb25SZXNwb25zZS5NZWV0aW5nUm9vbXNJbmZvcm1hdGlvbkVudHJ5EpIBCiZtZWV0aW5nX3Jvb21zX3N1YnNjcmlwdGlvbl9pbmZvcm1hdGlvbhgCIAMoCzJiLmNhbGVuZGFyZXZlbnRzLlB1bGxNZWV0aW5nUm9vbXNTdGF0dXNJbmZvcm1hdGlvblJlc3BvbnNlLk1lZXRpbmdSb29tc1N1YnNjcmlwdGlvbkluZm9ybWF0aW9uRW50cnkSdQoVY2FsZW5kYXJfcmVzb3VyY2VfbWFwGAMgAygLMlIuY2FsZW5kYXJldmVudHMuUHVsbE1lZXRpbmdSb29tc1N0YXR1c0luZm9ybWF0aW9uUmVzcG9uc2UuQ2FsZW5kYXJSZXNvdXJjZU1hcEVudHJ5QgIYARJ8ChtjYWxlbmRhcl9yZXNvdXJjZV9leHRyYV9tYXAYBCADKAsyVy5jYWxlbmRhcmV2ZW50cy5QdWxsTWVldGluZ1Jvb21zU3RhdHVzSW5mb3JtYXRpb25SZXNwb25zZS5DYWxlbmRhclJlc291cmNlRXh0cmFNYXBFbnRyeRppChxNZWV0aW5nUm9vbXNJbmZvcm1hdGlvbkVudHJ5EgsKA2tleRgBIAEoCRI4CgV2YWx1ZRgCIAEoCzIpLmNhbGVuZGFyX2VudGl0aWVzLk1lZXRpbmdSb29tSW5mb3JtYXRpb246AjgBGnQKKE1lZXRpbmdSb29tc1N1YnNjcmlwdGlvbkluZm9ybWF0aW9uRW50cnkSCwoDa2V5GAEgASgJEjcKBXZhbHVlGAIgASgLMiguZW50aXRpZXMuTWVldGluZ1N1YnNjcmlwdGlvbkluZm9ybWF0aW9uOgI4ARo6ChhDYWxlbmRhclJlc291cmNlTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARqOAQoFZXh0cmESNQoGc3RhdHVzGAEgASgOMiEuZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZS5TdGF0dXNCAhgBEk4KHW1lZXRpbmdfcm9vbV91bnVzYWJsZV9yZWFzb25zGAIgAygOMicuZW50aXRpZXMuTWVldGluZ1Jvb21VbnVzYWJsZVJlYXNvblR5cGUagAEKHUNhbGVuZGFyUmVzb3VyY2VFeHRyYU1hcEVudHJ5EgsKA2tleRgBIAEoCRJOCgV2YWx1ZRgCIAEoCzI/LmNhbGVuZGFyZXZlbnRzLlB1bGxNZWV0aW5nUm9vbXNTdGF0dXNJbmZvcm1hdGlvblJlc3BvbnNlLmV4dHJhOgI4ASKDAgojR2V0TWVldGluZ1Jvb21zUmVzZXJ2ZVN0YXR1c1JlcXVlc3QSEgoKc3RhcnRfdGltZRgBIAEoCRIQCghlbmRfdGltZRgCIAEoCRITCgtldmVudF9ycnVsZRgDIAEoCRIWCg5zdGFydF90aW1lem9uZRgEIAEoCRIZChFyb29tX2NhbGVuZGFyX2lkcxgFIAMoCRI/ChNldmVudF91bmlxdWVfZmllbGRzGAYgASgLMiIuZW50aXRpZXMuQ2FsZW5kYXJFdmVudFVuaXF1ZUZpZWxkEhYKDmxvY2FsX3RpbWV6b25lGAcgASgJEhUKDW5lZWRfc3ViX3Blcm0YCCABKAgiigMKJEdldE1lZXRpbmdSb29tc1Jlc2VydmVTdGF0dXNSZXNwb25zZRJnChJzdGF0dXNfaW5mb3JtYXRpb24YASADKAsySy5jYWxlbmRhcmV2ZW50cy5HZXRNZWV0aW5nUm9vbXNSZXNlcnZlU3RhdHVzUmVzcG9uc2UuU3RhdHVzSW5mb3JtYXRpb25FbnRyeRp2ChFTdGF0dXNJbmZvcm1hdGlvbhIPCgdpc19mcmVlGAEgASgIEj4KEHVudXNhYmxlX3JlYXNvbnMYAiABKAsyJC5lbnRpdGllcy5NZWV0aW5nUm9vbVVudXNhYmxlUmVhc29ucxIQCghoYXNfcGVybRgDIAEoCBqAAQoWU3RhdHVzSW5mb3JtYXRpb25FbnRyeRILCgNrZXkYASABKAkSVQoFdmFsdWUYAiABKAsyRi5jYWxlbmRhcmV2ZW50cy5HZXRNZWV0aW5nUm9vbXNSZXNlcnZlU3RhdHVzUmVzcG9uc2UuU3RhdHVzSW5mb3JtYXRpb246AjgBIjAKHFB1bGxNZWV0aW5nc0J5Q2hhdElkc1JlcXVlc3QSEAoIY2hhdF9pZHMYASADKAkirAMKHVB1bGxNZWV0aW5nc0J5Q2hhdElkc1Jlc3BvbnNlEiMKCG1lZXRpbmdzGAEgAygLMhEuZW50aXRpZXMuTWVldGluZxJdChFldmVudF9tZWV0aW5nX21hcBgCIAMoCzJCLmNhbGVuZGFyZXZlbnRzLlB1bGxNZWV0aW5nc0J5Q2hhdElkc1Jlc3BvbnNlLkV2ZW50TWVldGluZ01hcEVudHJ5EjUKEm1lZXRpbmdfZXZlbnRfcmVmcxgDIAMoCzIZLmVudGl0aWVzLk1lZXRpbmdFdmVudFJlZhJfChJyZWZpZF9jYWxlbmRhcl9tYXAYBCADKAsyQy5jYWxlbmRhcmV2ZW50cy5QdWxsTWVldGluZ3NCeUNoYXRJZHNSZXNwb25zZS5SZWZpZENhbGVuZGFyTWFwRW50cnkaNgoURXZlbnRNZWV0aW5nTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo3ChVSZWZpZENhbGVuZGFyTWFwRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASKiAgosQWRkTWVldGluZ0NvbGxhYm9yYXRvclRvQ2hhdEFuZE1pbnV0ZVJlcXVlc3QSEgoKdW5pcXVlX2tleRgBIAIoCRIcChRvcGVyYXRvcl9jYWxlbmRhcl9pZBgCIAIoCRIVCg1vcmlnaW5hbF90aW1lGAMgAigDEhMKC2FkZF9jaGF0X2lkGAQgAygDEhcKD2FkZF9jYWxlbmRhcl9pZBgFIAMoAxInChhhZGRfbWVldGluZ19jaGF0X2NoYXR0ZXIYBiACKAg6BWZhbHNlEi4KH2FkZF9tZWV0aW5nX21pbnV0ZV9jb2xsYWJvcmF0b3IYByACKAg6BWZhbHNlEiIKGGFkZF9jaGF0dGVyX2FwcGx5X3JlYXNvbhgIIAIoCToAIpECCi1BZGRNZWV0aW5nQ29sbGFib3JhdG9yVG9DaGF0QW5kTWludXRlUmVzcG9uc2USYwoGc3RhdHVzGAEgAigOMlMuY2FsZW5kYXJldmVudHMuQWRkTWVldGluZ0NvbGxhYm9yYXRvclRvQ2hhdEFuZE1pbnV0ZVJlc3BvbnNlLkFkZENvbGxhYm9yYXRvclN0YXR1cyJ7ChVBZGRDb2xsYWJvcmF0b3JTdGF0dXMSCwoHU1VDQ0VTUxAAEiIKHkFERF9NRUVUSU5HX01JTlVURV9DT0xMX0ZBSUxFRBABEiAKHEFERF9NRUVUSU5HX0NIQVRfQ09MTF9GQUlMRUQQAhIPCgtCT1RIX0ZBSUxFRBADIjsKJ0dldENoYXRDYWxlbmRhckV2ZW50SW5zdGFuY2VWaWV3UmVxdWVzdBIQCghjaGF0X2lkcxgBIAMoCSLEAwooR2V0Q2hhdENhbGVuZGFyRXZlbnRJbnN0YW5jZVZpZXdSZXNwb25zZRJ8ChxjaGF0X2V2ZW50X2luc3RhbmNlX3RpbWVfbWFwGAEgAygLMlYuY2FsZW5kYXJldmVudHMuR2V0Q2hhdENhbGVuZGFyRXZlbnRJbnN0YW5jZVZpZXdSZXNwb25zZS5DaGF0RXZlbnRJbnN0YW5jZVRpbWVNYXBFbnRyeRJmChBjaGF0X21lZXRpbmdfbWFwGAIgAygLMkwuY2FsZW5kYXJldmVudHMuR2V0Q2hhdENhbGVuZGFyRXZlbnRJbnN0YW5jZVZpZXdSZXNwb25zZS5DaGF0TWVldGluZ01hcEVudHJ5GmgKHUNoYXRFdmVudEluc3RhbmNlVGltZU1hcEVudHJ5EgsKA2tleRgBIAEoCRI2CgV2YWx1ZRgCIAEoCzInLmVudGl0aWVzLkNoYXRDYWxlbmRhckV2ZW50SW5zdGFuY2VWaWV3OgI4ARpIChNDaGF0TWVldGluZ01hcEVudHJ5EgsKA2tleRgBIAEoCRIgCgV2YWx1ZRgCIAEoCzIRLmVudGl0aWVzLk1lZXRpbmc6AjgBIjAKG0F1dGhFdmVudHNCeUV2ZW50SURzUmVxdWVzdBIRCglldmVudF9pZHMYASADKAkiywIKHEF1dGhFdmVudHNCeUV2ZW50SURzUmVzcG9uc2USWgoQZ3JheWVkX2V2ZW50X21hcBgBIAMoCzJALmNhbGVuZGFyZXZlbnRzLkF1dGhFdmVudHNCeUV2ZW50SURzUmVzcG9uc2UuR3JheWVkRXZlbnRNYXBFbnRyeRJfChNncmF5ZWRfZXZlbnRfbWFwX3YyGAIgAygLMkIuY2FsZW5kYXJldmVudHMuQXV0aEV2ZW50c0J5RXZlbnRJRHNSZXNwb25zZS5HcmF5ZWRFdmVudE1hcFYyRW50cnkaNQoTR3JheWVkRXZlbnRNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBGjcKFUdyYXllZEV2ZW50TWFwVjJFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBIqwBChZEZWxldGVEcml2ZUZpbGVSZXF1ZXN0EjsKBXNjZW5lGAEgAigOMiwuY2FsZW5kYXJldmVudHMuRGVsZXRlRHJpdmVGaWxlUmVxdWVzdC5TY2VuZRITCgtmaWxlX3Rva2VucxgCIAMoCRIXCg9tb3VudF9wb2ludF9rZXkYAyACKAkiJwoFU2NlbmUSCwoHVU5LTk9XThAAEhEKDURPQ19ERVNDX0ZJTEUQASKqAQoXRGVsZXRlRHJpdmVGaWxlUmVzcG9uc2USVwoRdG9rZW5fc3VjY2Vzc19tYXAYASADKAsyPC5jYWxlbmRhcmV2ZW50cy5EZWxldGVEcml2ZUZpbGVSZXNwb25zZS5Ub2tlblN1Y2Nlc3NNYXBFbnRyeRo2ChRUb2tlblN1Y2Nlc3NNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBIiUKElF1aXRNZWV0aW5nUmVxdWVzdBIPCgdjaGF0X2lkGAEgAigJIhUKE1F1aXRNZWV0aW5nUmVzcG9uc2Ui2gEKGEpvaW5DYWxlbmRhckV2ZW50UmVxdWVzdBITCgtjYWxlbmRhcl9pZBgBIAIoCRILCgN1aWQYAiACKAkSFQoNb3JpZ2luYWxfdGltZRgDIAIoAxIhChJuZWVkc19icmllZl9ldmVudHMYBCABKAg6BWZhbHNlEhcKD3NoYXJpbmdfdXNlcl9pZBgFIAEoAxISCgptZXNzYWdlX2lkGAYgASgJEg0KBXRva2VuGAcgASgJEiYKF3VzZV9hdHRlbmRlZV9wYWdlX3Rva2VuGAggASgIOgVmYWxzZSKZBAoZSm9pbkNhbGVuZGFyRXZlbnRSZXNwb25zZRIvCg5jYWxlbmRhcl9ldmVudBgBIAEoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQSXwoUY2FsZW5kYXJfY2hhdHRlcl9tYXAYAiADKAsyQS5jYWxlbmRhcmV2ZW50cy5Kb2luQ2FsZW5kYXJFdmVudFJlc3BvbnNlLkNhbGVuZGFyQ2hhdHRlck1hcEVudHJ5ElsKEmNhbGVuZGFyX2JyaWVmX21hcBgDIAMoCzI/LmNhbGVuZGFyZXZlbnRzLkpvaW5DYWxlbmRhckV2ZW50UmVzcG9uc2UuQ2FsZW5kYXJCcmllZk1hcEVudHJ5Ei0KCXJlc291cmNlcxgEIAMoCzIaLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2USLQoJYnVpbGRpbmdzGAUgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJCdWlsZGluZxIeCgV2Y2hhdBgGIAEoCzIPLmVudGl0aWVzLlZjaGF0GjkKF0NhbGVuZGFyQ2hhdHRlck1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaVAoVQ2FsZW5kYXJCcmllZk1hcEVudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLmVudGl0aWVzLkNhbGVuZGFyQnJpZWZJbmZvOgI4ASKRAQoaSm9pbkNhbGVuZGFyRXZlbnRWMlJlcXVlc3QSEwoLY2FsZW5kYXJfaWQYASACKAkSCwoDdWlkGAIgAigJEhUKDW9yaWdpbmFsX3RpbWUYAyACKAMSFwoPc2hhcmluZ191c2VyX2lkGAQgASgDEhIKCm1lc3NhZ2VfaWQYBSABKAkSDQoFdG9rZW4YBiABKAkiHQobSm9pbkNhbGVuZGFyRXZlbnRWMlJlc3BvbnNlIosCChtHZXRDYWxlbmRhckV2ZW50SW5mb1JlcXVlc3QSEwoLY2FsZW5kYXJfaWQYASACKAkSCwoDdWlkGAIgAigJEhUKDW9yaWdpbmFsX3RpbWUYAyACKAMSIQoSbmVlZHNfYnJpZWZfZXZlbnRzGAQgASgIOgVmYWxzZRISCgptZXNzYWdlX2lkGAUgASgJEhcKD3NoYXJpbmdfdXNlcl9pZBgGIAEoAxIsCh1uZWVkX2Z1bGxfY2FsZW5kYXJfZXZlbnRfaW5mbxgHIAEoCDoFZmFsc2USDQoFdG9rZW4YCCABKAkSJgoXdXNlX2F0dGVuZGVlX3BhZ2VfdG9rZW4YCSABKAg6BWZhbHNlIr8EChxHZXRDYWxlbmRhckV2ZW50SW5mb1Jlc3BvbnNlEi8KDmNhbGVuZGFyX2V2ZW50GAEgASgLMhcuZW50aXRpZXMuQ2FsZW5kYXJFdmVudBJiChRjYWxlbmRhcl9jaGF0dGVyX21hcBgCIAMoCzJELmNhbGVuZGFyZXZlbnRzLkdldENhbGVuZGFyRXZlbnRJbmZvUmVzcG9uc2UuQ2FsZW5kYXJDaGF0dGVyTWFwRW50cnkSXgoSY2FsZW5kYXJfYnJpZWZfbWFwGAMgAygLMkIuY2FsZW5kYXJldmVudHMuR2V0Q2FsZW5kYXJFdmVudEluZm9SZXNwb25zZS5DYWxlbmRhckJyaWVmTWFwRW50cnkSLQoJcmVzb3VyY2VzGAQgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZRItCglidWlsZGluZ3MYBSADKAsyGi5lbnRpdGllcy5DYWxlbmRhckJ1aWxkaW5nEh4KBXZjaGF0GAYgASgLMg8uZW50aXRpZXMuVmNoYXQSGwoTdXNlcl9jYW5fam9pbl9ldmVudBgHIAEoCBo5ChdDYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGlQKFUNhbGVuZGFyQnJpZWZNYXBFbnRyeRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKAsyGy5lbnRpdGllcy5DYWxlbmRhckJyaWVmSW5mbzoCOAEiTgooR2V0QXV0aG9yaXplZENhbGVuZGFyRXZlbnRXaXRoS2V5UmVxdWVzdBILCgN1aWQYASACKAkSFQoNb3JpZ2luYWxfdGltZRgCIAIoAyLJBAopR2V0QXV0aG9yaXplZENhbGVuZGFyRXZlbnRXaXRoS2V5UmVzcG9uc2USLwoOY2FsZW5kYXJfZXZlbnQYASABKAsyFy5lbnRpdGllcy5DYWxlbmRhckV2ZW50Em8KFGNhbGVuZGFyX2NoYXR0ZXJfbWFwGAIgAygLMlEuY2FsZW5kYXJldmVudHMuR2V0QXV0aG9yaXplZENhbGVuZGFyRXZlbnRXaXRoS2V5UmVzcG9uc2UuQ2FsZW5kYXJDaGF0dGVyTWFwRW50cnkSawoSY2FsZW5kYXJfYnJpZWZfbWFwGAMgAygLMk8uY2FsZW5kYXJldmVudHMuR2V0QXV0aG9yaXplZENhbGVuZGFyRXZlbnRXaXRoS2V5UmVzcG9uc2UuQ2FsZW5kYXJCcmllZk1hcEVudHJ5Ei0KCXJlc291cmNlcxgEIAMoCzIaLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2USLQoJYnVpbGRpbmdzGAUgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJCdWlsZGluZxIeCgV2Y2hhdBgGIAEoCzIPLmVudGl0aWVzLlZjaGF0GjkKF0NhbGVuZGFyQ2hhdHRlck1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaVAoVQ2FsZW5kYXJCcmllZk1hcEVudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLmVudGl0aWVzLkNhbGVuZGFyQnJpZWZJbmZvOgI4ASJ5CiBHZXRSZXNvdXJjZXNCeUNhbGVuZGFySWRzUmVxdWVzdBIUCgxjYWxlbmRhcl9pZHMYASADKAkSPwoTZXZlbnRfdW5pcXVlX2ZpZWxkcxgCIAEoCzIiLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRVbmlxdWVGaWVsZCLpAgohR2V0UmVzb3VyY2VzQnlDYWxlbmRhcklkc1Jlc3BvbnNlElMKCXJlc291cmNlcxgBIAMoCzJALmNhbGVuZGFyZXZlbnRzLkdldFJlc291cmNlc0J5Q2FsZW5kYXJJZHNSZXNwb25zZS5SZXNvdXJjZXNFbnRyeRJTCglidWlsZGluZ3MYAiADKAsyQC5jYWxlbmRhcmV2ZW50cy5HZXRSZXNvdXJjZXNCeUNhbGVuZGFySWRzUmVzcG9uc2UuQnVpbGRpbmdzRW50cnkaTAoOUmVzb3VyY2VzRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgLMhouZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZToCOAEaTAoOQnVpbGRpbmdzRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgLMhouZW50aXRpZXMuQ2FsZW5kYXJCdWlsZGluZzoCOAEiVQoaQ3JlYXRlTWVldGluZ01pbnV0ZVJlcXVlc3QSEwoLY2FsZW5kYXJfaWQYASACKAkSCwoDdWlkGAIgAigJEhUKDW9yaWdpbmFsX3RpbWUYAyACKAMiOQobQ3JlYXRlTWVldGluZ01pbnV0ZVJlc3BvbnNlEhoKEm1lZXRpbmdfbWludXRlX3VybBgBIAIoCSJFCh9NZWV0aW5nTWludXRlVXBkYXRlQ2hlY2tSZXF1ZXN0EgsKA3VpZBgBIAIoCRIVCg1vcmlnaW5hbF90aW1lGAIgAigDIjUKIE1lZXRpbmdNaW51dGVVcGRhdGVDaGVja1Jlc3BvbnNlEhEKCWlzX3VwZGF0ZRgBIAIoCCK4AQoWR2V0VmNoYXRCeUV2ZW50UmVxdWVzdBITCgtjYWxlbmRhcl9pZBgBIAIoCRILCgN1aWQYAiACKAkSFQoNb3JpZ2luYWxfdGltZRgDIAIoAxIaCgtmb3JjZV9yZW5ldxgEIAEoCDoFZmFsc2USLgoLcmVuZXdfcGFyYW0YBSABKAsyGS5lbnRpdGllcy5SZW5ld1ZjaGF0UGFyYW0SGQoRYXBwbHlfY2FsZW5kYXJfaWQYBiABKAgiOQoXR2V0VmNoYXRCeUV2ZW50UmVzcG9uc2USHgoFdmNoYXQYASABKAsyDy5lbnRpdGllcy5WY2hhdCIxChVHZXRWY2hhdFN0YXR1c1JlcXVlc3QSGAoQdmNoYXRfdW5pcXVlX2lkcxgBIAMoCSLKAQoWR2V0VmNoYXRTdGF0dXNSZXNwb25zZRJbChR1bmlxdWVfaWRfc3RhdHVzX21hcBgBIAMoCzI9LmNhbGVuZGFyZXZlbnRzLkdldFZjaGF0U3RhdHVzUmVzcG9uc2UuVW5pcXVlSWRTdGF0dXNNYXBFbnRyeRpTChZVbmlxdWVJZFN0YXR1c01hcEVudHJ5EgsKA2tleRgBIAEoCRIoCgV2YWx1ZRgCIAEoCzIZLmVudGl0aWVzLlZjaGF0TGl2ZVN0YXR1czoCOAEimwIKHEdldEV2ZW50SW5mb0J5VmNoYXRJZFJlcXVlc3QSEwoLY2FsZW5kYXJfaWQYASACKAkSFwoPdmNoYXRfdW5pcXVlX2lkGAIgAigJEhUKCnN0YXJ0X3RpbWUYAyABKAM6ATASIQoSbmVlZHNfYnJpZWZfZXZlbnRzGAQgASgIOgVmYWxzZRImChd1c2VfYXR0ZW5kZWVfcGFnZV90b2tlbhgFIAEoCDoFZmFsc2USGAoQdmNoYXRfbWVldGluZ19pZBgGIAEoCRILCgN1aWQYByABKAkSFQoNb3JpZ2luYWxfdGltZRgIIAEoAxItCg1pbnN0YW5jZV90aW1lGAkgASgLMhYuZW50aXRpZXMuU3RhcnRFbmRUaW1lItQECh1HZXRFdmVudEluZm9CeVZjaGF0SWRSZXNwb25zZRIvCg5jYWxlbmRhcl9ldmVudBgBIAEoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQSYwoUY2FsZW5kYXJfY2hhdHRlcl9tYXAYAiADKAsyRS5jYWxlbmRhcmV2ZW50cy5HZXRFdmVudEluZm9CeVZjaGF0SWRSZXNwb25zZS5DYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRJfChJjYWxlbmRhcl9icmllZl9tYXAYAyADKAsyQy5jYWxlbmRhcmV2ZW50cy5HZXRFdmVudEluZm9CeVZjaGF0SWRSZXNwb25zZS5DYWxlbmRhckJyaWVmTWFwRW50cnkSLQoJcmVzb3VyY2VzGAQgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZRItCglidWlsZGluZ3MYBSADKAsyGi5lbnRpdGllcy5DYWxlbmRhckJ1aWxkaW5nEh4KBXZjaGF0GAYgASgLMg8uZW50aXRpZXMuVmNoYXQSLQoNaW5zdGFuY2VfdGltZRgHIAEoCzIWLmVudGl0aWVzLlN0YXJ0RW5kVGltZRo5ChdDYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGlQKFUNhbGVuZGFyQnJpZWZNYXBFbnRyeRILCgNrZXkYASABKAkSKgoFdmFsdWUYAiABKAsyGy5lbnRpdGllcy5DYWxlbmRhckJyaWVmSW5mbzoCOAEiiwEKIEdldENhbGVuZGFyRXZlbnRTaGFyZUxpbmtSZXF1ZXN0EhMKC2NhbGVuZGFyX2lkGAEgAigJEgsKA3VpZBgCIAIoCRIVCg1vcmlnaW5hbF90aW1lGAMgAigDEhcKCG5lZWRfaW1nGAQgASgIOgVmYWxzZRIVCg1uZWVkX2FwcF9pbmZvGAUgASgIItQBCiFHZXRDYWxlbmRhckV2ZW50U2hhcmVMaW5rUmVzcG9uc2USFAoMbGlua19hZGRyZXNzGAEgAigJEhIKCmltYWdlX2RhdGEYAiABKAwSEgoKc2hhcmVfY29weRgDIAEoCRIQCghhcHBfbmFtZRgEIAEoCRIQCghhcHBfbG9nbxgFIAEoDBI6ChFldmVudF9zaGFyZV9zdGF0ZRgGIAEoDjIfLmNhbGVuZGFyZXZlbnRzLkV2ZW50U2hhcmVTdGF0ZRIRCgl0aW1lX2luZm8YByABKAki0QMKGlNlYXJjaENhbGVuZGFyRXZlbnRSZXF1ZXN0Eg0KBXF1ZXJ5GAEgAigJElcKEmV2ZW50X3NlYXJjaF9zY2VuZRgCIAIoDjI7LmNhbGVuZGFyZXZlbnRzLlNlYXJjaENhbGVuZGFyRXZlbnRSZXF1ZXN0LkV2ZW50U2VhcmNoU2NlbmUSTAoMZXZlbnRfZmlsdGVyGAMgAigLMjYuY2FsZW5kYXJldmVudHMuU2VhcmNoQ2FsZW5kYXJFdmVudFJlcXVlc3QuRXZlbnRGaWx0ZXISGQoRbG9jYWxlX2lkZW50aWZpZXIYBCACKAkamQEKC0V2ZW50RmlsdGVyEhQKDGNhbGVuZGFyX2lkcxgBIAMoCRIdChVhdHRlbmRlZV9jYWxlbmRhcl9pZHMYAiADKAkSHQoVcmVzb3VyY2VfY2FsZW5kYXJfaWRzGAMgAygJEhAKCGNoYXRfaWRzGAQgAygJEhIKCnN0YXJ0X3RpbWUYBSABKAMSEAoIZW5kX3RpbWUYBiABKAMiRgoQRXZlbnRTZWFyY2hTY2VuZRILCgdVTktOT1dOEAASEAoMUVVJQ0tfU0VBUkNIEAESEwoPQURWQU5DRURfU0VBUkNIEAIimgIKG1NlYXJjaENhbGVuZGFyRXZlbnRSZXNwb25zZRI5CglpbnN0YW5jZXMYASADKAsyJi5jYWxlbmRhcl9lbnRpdGllcy5TZWFyY2hFdmVudEluc3RhbmNlEksKCGNvbnRlbnRzGAIgAygLMjkuY2FsZW5kYXJldmVudHMuU2VhcmNoQ2FsZW5kYXJFdmVudFJlc3BvbnNlLkNvbnRlbnRzRW50cnkSGwoTc2VhcmNoX3Jlc3VsdF9jb3VudBgDIAEoAxpWCg1Db250ZW50c0VudHJ5EgsKA2tleRgBIAEoCRI0CgV2YWx1ZRgCIAEoCzIlLmNhbGVuZGFyX2VudGl0aWVzLlNlYXJjaEV2ZW50Q29udGVudDoCOAEikgoKFkVtYWlsQ2FsZW5kYXJFdmVudEluZm8SCgoCaWQYASABKAkSDwoHbWFpbF9pZBgCIAIoCRJRCglpbmZvX3R5cGUYAyACKA4yPi5jYWxlbmRhcmV2ZW50cy5FbWFpbENhbGVuZGFyRXZlbnRJbmZvLkNhbGVuZGFyTWFpbE1lc3NhZ2VUeXBlEhQKDHNlbmRlcl9lbWFpbBgEIAIoCRITCgtjYWxlbmRhcl9pZBgFIAIoCRISCgp1bmlxdWVfa2V5GAYgAigJEhUKDW9yaWdpbmFsX3RpbWUYByACKAMSWQoKaW50ZXJfdHlwZRgIIAEoDjI7LmNhbGVuZGFyZXZlbnRzLkVtYWlsQ2FsZW5kYXJFdmVudEluZm8uSW50ZXJvcGVyYWJpbGl0eVR5cGU6CEVYVEVSTkFMEhIKCmlzX2FsbF9kYXkYCSABKAgSDwoHc3VtbWFyeRgKIAEoCRIQCghsb2NhdGlvbhgLIAEoCRISCgpzdGFydF90aW1lGAwgAigDEhYKDnN0YXJ0X3RpbWV6b25lGA0gAigJEhAKCGVuZF90aW1lGA4gAigDEhQKDGVuZF90aW1lem9uZRgPIAEoCRIPCgVycnVsZRgQIAEoCToAEicKGWlzX3NlbGZfYXR0ZW5kZWVfb3B0aW9uYWwYESABKAg6BHRydWUSFwoPb3JnYW5pemVyX2VtYWlsGBIgASgJEhcKD2F0dGVuZGVlX2VtYWlscxgTIAMoCRJXChRzZWxmX2F0dGVuZGVlX3N0YXR1cxgUIAEoDjI5LmNhbGVuZGFyZXZlbnRzLkVtYWlsQ2FsZW5kYXJFdmVudEluZm8uU2VsZkF0dGVuZGVlU3RhdHVzElIKDW91dGRhdGVkX3R5cGUYFSABKA4yMy5jYWxlbmRhcmV2ZW50cy5FbWFpbENhbGVuZGFyRXZlbnRJbmZvLk91dERhdGVkVHlwZToGT05USU1FEhoKDGxhdGVzdF9yZXBseRgWIAEoCDoEdHJ1ZRISCgp0aW1lX3N0YW1wGBcgASgDEjYKD2VuY3J5cHRpb25faW5mbxgYIAEoCzIdLmVudGl0aWVzLkV2ZW50RW5jcnlwdGlvbkluZm8iMgoUSW50ZXJvcGVyYWJpbGl0eVR5cGUSDAoIRVhURVJOQUwQARIMCghJTlRFUk5BTBACIrQBChdDYWxlbmRhck1haWxNZXNzYWdlVHlwZRIQCgxSRVBMWV9BQ0NFUFQQARIRCg1SRVBMWV9ERUNMSU5FEAISEwoPUkVQTFlfVEVOVEFUSVZFEAMSEAoMRVZFTlRfSU5WSVRFEAQSEAoMRVZFTlRfREVMRVRFEAUSFAoQRVZFTlRfUkVTQ0hFRFVMRRAHEhAKDEVWRU5UX1VQREFURRAJEhMKD0VWRU5UX05PVF9GT1VORBAKIjIKDE91dERhdGVkVHlwZRIKCgZPTlRJTUUQARIKCgZDQU5DRUwQAhIKCgZVUERBVEUQAyKrAQoSU2VsZkF0dGVuZGVlU3RhdHVzEiAKHEFUVEVOREVFX1NUQVRVU19ORUVEU19BQ1RJT04QARIaChZBVFRFTkRFRV9TVEFUVVNfQUNDRVBUEAISHQoZQVRURU5ERUVfU1RBVFVTX1RFTlRBVElWRRADEhsKF0FUVEVOREVFX1NUQVRVU19ERUNMSU5FEAQSGwoXQVRURU5ERUVfU1RBVFVTX1JFTU9WRUQQBSItChlNR2V0RW1haWxFdmVudEluZm9SZXF1ZXN0EhAKCG1haWxfaWRzGAEgAygJIrgBChpNR2V0RW1haWxFdmVudEluZm9SZXNwb25zZRJECgVpbmZvcxgBIAMoCzI1LmNhbGVuZGFyZXZlbnRzLk1HZXRFbWFpbEV2ZW50SW5mb1Jlc3BvbnNlLkluZm9zRW50cnkaVAoKSW5mb3NFbnRyeRILCgNrZXkYASABKAkSNQoFdmFsdWUYAiABKAsyJi5jYWxlbmRhcmV2ZW50cy5FbWFpbENhbGVuZGFyRXZlbnRJbmZvOgI4ASLWAQokUHVsbEV2ZW50R3JvdXBBdHRlbmRlZU1lbWJlcnNSZXF1ZXN0EhcKD2V2ZW50X3NlcnZlcl9pZBgBIAIoCRIPCgdjaGF0X2lkGAIgAigJEiAKEXB1bGxfYWxsX2F0dGVuZGVlGAMgASgIOgVmYWxzZRIkChVpc19uZXdfZ3JvdXBfYXR0ZW5kZWUYBCABKAg6BWZhbHNlEhMKC3BhZ2Vfb2Zmc2V0GAUgASgJEhIKCnBhZ2VfY291bnQYBiABKAUSEwoLY2FsZW5kYXJfaWQYByABKAkirQIKJVB1bGxFdmVudEdyb3VwQXR0ZW5kZWVNZW1iZXJzUmVzcG9uc2USMAoHbWVtYmVycxgBIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRlbmRlZRIVCg1oYXNfbW9yZV9wYWdlGAIgASgIEhMKC3BhZ2Vfb2Zmc2V0GAMgASgJEmsKFGNhbGVuZGFyX2NoYXR0ZXJfbWFwGAQgAygLMk0uY2FsZW5kYXJldmVudHMuUHVsbEV2ZW50R3JvdXBBdHRlbmRlZU1lbWJlcnNSZXNwb25zZS5DYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRo5ChdDYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRILCgNrZXkYASABKAMSDQoFdmFsdWUYAiABKAM6AjgBIoUBCiNQdWxsRXZlbnRHcm91cHNTaW1wbGVNZW1iZXJzUmVxdWVzdBIXCg9ldmVudF9zZXJ2ZXJfaWQYASACKAkSEAoIY2hhdF9pZHMYAiADKAkSHgoWbmV3X2dyb3VwX2F0dGVuZGVlX2lkcxgDIAMoCRITCgtjYWxlbmRhcl9pZBgEIAEoCSLTAQokUHVsbEV2ZW50R3JvdXBzU2ltcGxlTWVtYmVyc1Jlc3BvbnNlEl0KDWdyb3VwX21lbWJlcnMYASADKAsyRi5jYWxlbmRhcmV2ZW50cy5QdWxsRXZlbnRHcm91cHNTaW1wbGVNZW1iZXJzUmVzcG9uc2UuR3JvdXBNZW1iZXJzRW50cnkaTAoRR3JvdXBNZW1iZXJzRW50cnkSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgLMhcuZW50aXRpZXMuU2ltcGxlTWVtYmVyczoCOAEidworUHVsbFJlc291cmNlQ3VzdG9taXphdGlvbkJ5Q29udGFjdElEUmVxdWVzdBISCgpzdGFydF90aW1lGAEgASgDEhAKCGVuZF90aW1lGAIgASgDEg0KBWxpbWl0GAMgASgDEhMKC3BhZ2Vfb2Zmc2V0GAQgASgDIpcBCixQdWxsUmVzb3VyY2VDdXN0b21pemF0aW9uQnlDb250YWN0SURSZXNwb25zZRJSChxyZXNvdXJjZV9jdXN0b21pemF0aW9uX2luZm9zGAEgAygLMiwuY2FsZW5kYXJfZW50aXRpZXMuUmVzb3VyY2VDdXN0b21pemF0aW9uSW5mbxITCgt0b3RhbF9jb3VudBgCIAEoAyJiChtHZXRSb29tVmlld0luc3RhbmNlc1JlcXVlc3QSHQoVcmVzb3VyY2VfY2FsZW5kYXJfaWRzGAEgAygJEhIKCnN0YXJ0X3RpbWUYAiABKAMSEAoIZW5kX3RpbWUYAyABKAMiXQocR2V0Um9vbVZpZXdJbnN0YW5jZXNSZXNwb25zZRI9ChNyb29tX3ZpZXdfaW5zdGFuY2VzGAEgAygLMiAuY2FsZW5kYXJldmVudHMuUm9vbVZpZXdJbnN0YW5jZSKsBAoQUm9vbVZpZXdJbnN0YW5jZRIcChRyZXNvdXJjZV9jYWxlbmRhcl9pZBgBIAEoCRJGChdyZXNvdXJjZV9jb250YWN0X3BlcnNvbhgCIAEoCzIlLmNhbGVuZGFyZXZlbnRzLlJlc291cmNlQ29udGFjdFBlcnNvbhJWChpjdXJyZW50X3VzZXJfYWNjZXNzaWJpbGl0eRgDIAEoDjIyLmNhbGVuZGFyZXZlbnRzLlJvb21WaWV3SW5zdGFuY2UuVXNlckFjY2Vzc2liaWxpdHkSEQoJZXZlbnRfa2V5GAQgASgJEhUKDW9yaWdpbmFsX3RpbWUYBSABKAMSEgoKc3RhcnRfdGltZRgGIAEoAxIWCg5zdGFydF90aW1lem9uZRgHIAEoCRIQCghlbmRfdGltZRgIIAEoAxIUCgxlbmRfdGltZXpvbmUYCSABKAkSEQoHc3VtbWFyeRgKIAEoCToAEhIKCmlzX2FsbF9kYXkYCyABKAgSMgoIY2F0ZWdvcnkYDCABKA4yIC5lbnRpdGllcy5DYWxlbmRhckV2ZW50LkNhdGVnb3J5EisKI2N1cnJlbnRfdXNlcl9hY2Nlc3NpYmxlX2NhbGVuZGFyX2lkGA0gASgJIlQKEVVzZXJBY2Nlc3NpYmlsaXR5EgsKB0xJTUlURUQQABITCg9TVU1NQVJZX1ZJU0lCTEUQARIRCg1FVkVOVF9WSVNJQkxFEAISCgoGSk9JTkVEEAMilQIKFVJlc291cmNlQ29udGFjdFBlcnNvbhJUChNjb250YWN0X3BlcnNvbl90eXBlGAEgASgOMjcuY2FsZW5kYXJldmVudHMuUmVzb3VyY2VDb250YWN0UGVyc29uLkNvbnRhY3RQZXJzb25UeXBlEi0KDWV2ZW50X2NyZWF0b3IYAiABKAsyFi5lbnRpdGllcy5FdmVudENyZWF0b3IidwoRQ29udGFjdFBlcnNvblR5cGUSCwoHREVGQVVMVBAAEhEKDU5PX1NVQlNDUklCRVIQARIXChNSRVNPVVJDRV9TVUJTQ1JJQkVSEAISDQoJT1JHQU5JWkVSEAMSDQoJU1VDQ0VTU09SEAQSCwoHQ1JFQVRPUhAFIoECCiNHZXRJbmRpdmlkdWFsQXR0ZW5kZWVzQnlQYWdlUmVxdWVzdBIXCg9ldmVudF9zZXJ2ZXJfaWQYASACKAkSXQoLcGFnaW5nX21vZGUYAiABKA4yPi5jYWxlbmRhcmV2ZW50cy5HZXRJbmRpdmlkdWFsQXR0ZW5kZWVzQnlQYWdlUmVxdWVzdC5QYWdpbmdUeXBlOghTTkFQU0hPVBISCgpwYWdlX3Rva2VuGAMgASgJEhEKCXBhZ2Vfc2l6ZRgEIAEoBRIVCg1uZWVkc19yZW1vdmVkGAUgASgIIiQKClBhZ2luZ1R5cGUSDAoIU05BUFNIT1QQABIICgRTWU5DEAEirAIKJEdldEluZGl2aWR1YWxBdHRlbmRlZXNCeVBhZ2VSZXNwb25zZRIyCglhdHRlbmRlZXMYASADKAsyHy5lbnRpdGllcy5DYWxlbmRhckV2ZW50QXR0ZW5kZWUSagoUY2FsZW5kYXJfY2hhdHRlcl9tYXAYAiADKAsyTC5jYWxlbmRhcmV2ZW50cy5HZXRJbmRpdmlkdWFsQXR0ZW5kZWVzQnlQYWdlUmVzcG9uc2UuQ2FsZW5kYXJDaGF0dGVyTWFwRW50cnkSFwoPbmV4dF9wYWdlX3Rva2VuGAMgASgJEhAKCGhhc19tb3JlGAQgASgIGjkKF0NhbGVuZGFyQ2hhdHRlck1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEi2wcKGUxpc3RDYWxlbmRhckV2ZW50c1JlcXVlc3QSWgoPY2FsZW5kYXJfcGFyYW1zGAEgAygLMkEuY2FsZW5kYXJldmVudHMuTGlzdENhbGVuZGFyRXZlbnRzUmVxdWVzdC5FdmVudFN5bmNDYWxlbmRhclBhcmFtcxIgChJldmVudHNfY291bnRfbGltaXQYAiABKAU6BDEwMDAa5QIKF0V2ZW50U3luY0NhbGVuZGFyUGFyYW1zEg4KBmNhbF9pZBgBIAEoCRIgChhjbGllbnRfZXZlbnRfbWF4X3ZlcnNpb24YAiABKAMSIAoYc2VydmVyX2V2ZW50X21heF92ZXJzaW9uGAMgASgDEhYKC2FuY2hvcl90aW1lGAQgASgDOgEwEhsKDG5lZWRfZGVsZXRlZBgFIAEoCDoFZmFsc2USWwoLZmlsdGVyX3R5cGUYBiABKA4yNC5jYWxlbmRhcmV2ZW50cy5MaXN0Q2FsZW5kYXJFdmVudHNSZXF1ZXN0LkZpbHRlclR5cGU6EENBTEVOREFSX1ZFUlNJT04STwoOdHJpZ2dlcl9zb3VyY2UYByABKA4yNy5jYWxlbmRhcmV2ZW50cy5MaXN0Q2FsZW5kYXJFdmVudHNSZXF1ZXN0LlRyaWdnZXJTb3VyY2USEwoLcHVzaF9leHRyYXMYCCADKAwiRQoKRmlsdGVyVHlwZRIQCgxGSVJTVF9TQ1JFRU4QARIPCgtBTkNIT1JfVElNRRACEhQKEENBTEVOREFSX1ZFUlNJT04QAyKQAwoNVHJpZ2dlclNvdXJjZRIUChBPblNldEFjY2Vzc1Rva2VuEAESEAoMQ2xpZW50Q2FsbGVkEAISFQoRT25Tb2NrZXRDb25uZWN0ZWQQAxIcChhVcGRhdGVDYWxlbmRhclZpc2liaWxpdHkQBBIcChhSZWNlaXZlUHVzaFN5bmNDYWxlbmRhcnMQBRISCg5DYWNoZWRTeW5jUHVzaBAGEhMKD0RlbGF5ZWRTeW5jVGFzaxAHEg8KC09uU3dpdGNoVGFiEAgSFQoRU3Vic2NyaWJlQ2FsZW5kYXIQCRIXChNVbnN1YnNjcmliZUNhbGVuZGFyEAoSEAoMU2F2ZUNhbGVuZGFyEAsSFQoRUmVjZWl2ZVN5bmNFdmVudHMQDBINCglTYXZlRXZlbnQQDRITCg9DbGVhckNhbGVuZGFyREIQDhIhCh1SZWNlaXZlU3luY0V2ZW50c0Zyb21QaXBlbGluZRAPEhEKDU9uU3dpdGNoVkNUYWIQEBIXChNPblB1bGxUb2RheVJlbWluZGVyEBEivAQKGkxpc3RDYWxlbmRhckV2ZW50c1Jlc3BvbnNlElgKDmNhbGVuZGFyX2luZm9zGAEgAygLMkAuY2FsZW5kYXJldmVudHMuTGlzdENhbGVuZGFyRXZlbnRzUmVzcG9uc2UuRXZlbnRTeW5jQ2FsZW5kYXJJbmZvEjUKD2NhbGVuZGFyX2V2ZW50cxgCIAMoCzIcLmNhbGVuZGFyX2VudGl0aWVzLkV2ZW50SW5mbxIjCghtZWV0aW5ncxgDIAMoCzIRLmVudGl0aWVzLk1lZXRpbmcSHwoGdmNoYXRzGAQgAygLMg8uZW50aXRpZXMuVmNoYXQSXAoSY2FsZW5kYXJfYnJpZWZfbWFwGAUgAygLMkAuY2FsZW5kYXJldmVudHMuTGlzdENhbGVuZGFyRXZlbnRzUmVzcG9uc2UuQ2FsZW5kYXJCcmllZk1hcEVudHJ5GpIBChVFdmVudFN5bmNDYWxlbmRhckluZm8SDgoGY2FsX2lkGAEgASgJEhQKDHJlcXVpcmVfbW9yZRgCIAEoCBIkChhzZXJ2ZXJfZXZlbnRfbWF4X3ZlcnNpb24YAyABKAM6Ai0xEhEKCW5leHRfc3RlcBgEIAEoCBIaChJzeW5jX2V2ZW50X3ZlcnNpb24YBSABKAMaVAoVQ2FsZW5kYXJCcmllZk1hcEVudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLmVudGl0aWVzLkNhbGVuZGFyQnJpZWZJbmZvOgI4ASLqAQocUHVsbENhbGVuZGFySW5zdGFuY2VzUmVxdWVzdBITCgtjYWxlbmRhcl9pZBgBIAEoCRISCgpiZWdpbl90aW1lGAIgASgDEkUKBnR5cGVBMRgDIAEoDjI1LmNhbGVuZGFyZXZlbnRzLlB1bGxDYWxlbmRhckluc3RhbmNlc1JlcXVlc3QuUHVsbFR5cGUSGQoRbGFzdF9taW5fdGltZXNwYW4YBCABKAUSFQoNbGFzdF9ldmVudF9pZBgFIAEoCSIoCghQdWxsVHlwZRIMCghQYXN0VGltZRABEg4KCkZ1dHVyZVRpbWUQAiLnAgodUHVsbENhbGVuZGFySW5zdGFuY2VzUmVzcG9uc2USOAoSY2FsZW5kYXJfaW5zdGFuY2VzGAEgAygLMhwuZW50aXRpZXMuRXZlbnRJbmZvSW5zdGFuY2VzEmgKF2NhbGVuZGFyX2lkX3RvX3Jlc291cmNlGAIgAygLMkcuY2FsZW5kYXJldmVudHMuUHVsbENhbGVuZGFySW5zdGFuY2VzUmVzcG9uc2UuQ2FsZW5kYXJJZFRvUmVzb3VyY2VFbnRyeRIXCg9uZXh0X2JlZ2luX3RpbWUYAyABKAMSGQoRbmV4dF9taW5fdGltZXNwYW4YBCABKAUSFQoNbmV4dF9ldmVudF9pZBgFIAEoCRpXChlDYWxlbmRhcklkVG9SZXNvdXJjZUVudHJ5EgsKA2tleRgBIAEoCRIpCgV2YWx1ZRgCIAEoCzIaLmVudGl0aWVzLkNhbGVuZGFyUmVzb3VyY2U6AjgBIlUKKkdldEV2ZW50R3JvdXBBdHRlbmRlZUZvckNvcHlXaXRoS2V5UmVxdWVzdBInCgNrZXkYASACKAsyGi5lbnRpdGllcy5DYWxlbmRhckV2ZW50S2V5IpoBCitHZXRFdmVudEdyb3VwQXR0ZW5kZWVGb3JDb3B5V2l0aEtleVJlc3BvbnNlEkwKHmNhbGVuZGFyX2V2ZW50X2dyb3VwX2F0dGVuZGVlcxgBIAMoCzIkLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRHcm91cEF0dGVuZGVlEh0KFWhhc19hdHRlbmRlZV9maWx0ZXJlZBgCIAEoCCKNAQovR2V0RXZlbnRJbmRpdmlkdWFsQXR0ZW5kZWVGb3JDb3B5V2l0aEtleVJlcXVlc3QSJwoDa2V5GAEgAigLMhouZW50aXRpZXMuQ2FsZW5kYXJFdmVudEtleRITCgtwYWdlX29mZnNldBgCIAEoCRIcChR3aXRob3V0X2Rpc3BsYXlfbmFtZRgDIAEoCCLjAgowR2V0RXZlbnRJbmRpdmlkdWFsQXR0ZW5kZWVGb3JDb3B5V2l0aEtleVJlc3BvbnNlEjIKCWF0dGVuZGVlcxgBIAMoCzIfLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRlbmRlZRJ2ChRjYWxlbmRhcl9jaGF0dGVyX21hcBgCIAMoCzJYLmNhbGVuZGFyZXZlbnRzLkdldEV2ZW50SW5kaXZpZHVhbEF0dGVuZGVlRm9yQ29weVdpdGhLZXlSZXNwb25zZS5DYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRIXCg9uZXh0X3BhZ2VfdG9rZW4YAyABKAkSEAoIaGFzX21vcmUYBCABKAgSHQoVaGFzX2F0dGVuZGVlX2ZpbHRlcmVkGAUgASgIGjkKF0NhbGVuZGFyQ2hhdHRlck1hcEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEijgEKIVB1bGxSZXNvdXJjZVN1YnNjcmliZVVzYWdlUmVxdWVzdBISCgpzdGFydF90aW1lGAEgASgJEhAKCGVuZF90aW1lGAIgASgJEhAKCHRpbWV6b25lGAMgASgJEg0KBXJydWxlGAQgASgJEgsKA3VpZBgFIAEoCRIVCg1vcmlnaW5hbF90aW1lGAYgASgJIlQKIlB1bGxSZXNvdXJjZVN1YnNjcmliZVVzYWdlUmVzcG9uc2USEQoJbWF4X3VzYWdlGAEgASgFEhsKE2lzX292ZXJfdXNhZ2VfbGltaXQYAiABKAgiugQKDlNpbXBsZUF0dGVuZGVlEhwKFGF0dGVuZGVlX2NhbGVuZGFyX2lkGAEgASgJEhsKE2ludml0ZXJfY2FsZW5kYXJfaWQYAiABKAkSNgoGc3RhdHVzGAMgASgOMiYuZW50aXRpZXMuQ2FsZW5kYXJFdmVudEF0dGVuZGVlLlN0YXR1cxITCgtpc19vcHRpb25hbBgEIAEoCBJQCglsYXJrX3VzZXIYZSABKAsyOy5jYWxlbmRhcmV2ZW50cy5TaW1wbGVBdHRlbmRlZS5JbmRpdmlkdWFsU2ltcGxlTGFya0F0dGVuZGVlSAASUgoKZW1haWxfdXNlchhmIAEoCzI8LmNhbGVuZGFyZXZlbnRzLlNpbXBsZUF0dGVuZGVlLkluZGl2aWR1YWxTaW1wbGVFbWFpbEF0dGVuZGVlSAASUgoKcGhvbmVfdXNlchhnIAEoCzI8LmNhbGVuZGFyZXZlbnRzLlNpbXBsZUF0dGVuZGVlLkluZGl2aWR1YWxTaW1wbGVQaG9uZUF0dGVuZGVlSAAaMgocSW5kaXZpZHVhbFNpbXBsZUxhcmtBdHRlbmRlZRISCgpjaGF0dGVyX2lkGAEgASgJGi4KHUluZGl2aWR1YWxTaW1wbGVFbWFpbEF0dGVuZGVlEg0KBWVtYWlsGAEgASgJGi4KHUluZGl2aWR1YWxTaW1wbGVQaG9uZUF0dGVuZGVlEg0KBXBob25lGAEgASgJQhIKEEF0dGVuZGVlVXNlckluZm8ieAopTGlzdEV2ZW50SW5kaXZpZHVhbFNpbXBsZUF0dGVuZGVlc1JlcXVlc3QSEwoLY2FsZW5kYXJfaWQYASABKAkSCwoDa2V5GAIgASgJEhUKDW9yaWdpbmFsX3RpbWUYAyABKAMSEgoKcGFnZV90b2tlbhgEIAEoCSKXAQoqTGlzdEV2ZW50SW5kaXZpZHVhbFNpbXBsZUF0dGVuZGVlc1Jlc3BvbnNlEkMKG2luZGl2aWR1YWxfc2ltcGxlX2F0dGVuZGVlcxgBIAMoCzIeLmNhbGVuZGFyZXZlbnRzLlNpbXBsZUF0dGVuZGVlEhAKCGhhc19tb3JlGAIgASgIEhIKCnBhZ2VfdG9rZW4YAyABKAkiRAoPU2ltcGxlQXR0ZW5kZWVzEjEKCWF0dGVuZGVlcxgBIAMoCzIeLmNhbGVuZGFyZXZlbnRzLlNpbXBsZUF0dGVuZGVlInQKJUxpc3RFdmVudEdyb3Vwc1NpbXBsZUF0dGVuZGVlc1JlcXVlc3QSEwoLY2FsZW5kYXJfaWQYASABKAkSCwoDa2V5GAIgASgJEhUKDW9yaWdpbmFsX3RpbWUYAyABKAMSEgoKcGFnZV90b2tlbhgEIAEoCSLrAQoYRW5jcnlwdGVkU2ltcGxlQXR0ZW5kZWVzEl0KE2VuY3J5cHRlZF9hdHRlbmRlZXMYASADKAsyQC5jYWxlbmRhcmV2ZW50cy5FbmNyeXB0ZWRTaW1wbGVBdHRlbmRlZXMuRW5jcnlwdGVkU2ltcGxlQXR0ZW5kZWUacAoXRW5jcnlwdGVkU2ltcGxlQXR0ZW5kZWUSHQoVZW5jcnlwdGVkX2NhbGVuZGFyX2lkGAEgASgJEjYKBnN0YXR1cxgCIAEoDjImLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRBdHRlbmRlZS5TdGF0dXMi9AMKJkxpc3RFdmVudEdyb3Vwc1NpbXBsZUF0dGVuZGVlc1Jlc3BvbnNlEnAKFmdyb3VwX3NpbXBsZV9hdHRlbmRlZXMYASADKAsyUC5jYWxlbmRhcmV2ZW50cy5MaXN0RXZlbnRHcm91cHNTaW1wbGVBdHRlbmRlZXNSZXNwb25zZS5Hcm91cFNpbXBsZUF0dGVuZGVlc0VudHJ5EhAKCGhhc19tb3JlGAIgASgIEhIKCnBhZ2VfdG9rZW4YAyABKAkSbgoVZXh0cmFfZ3JvdXBfYXR0ZW5kZWVzGAQgAygLMk8uY2FsZW5kYXJldmVudHMuTGlzdEV2ZW50R3JvdXBzU2ltcGxlQXR0ZW5kZWVzUmVzcG9uc2UuRXh0cmFHcm91cEF0dGVuZGVlc0VudHJ5GlwKGUdyb3VwU2ltcGxlQXR0ZW5kZWVzRW50cnkSCwoDa2V5GAEgASgJEi4KBXZhbHVlGAIgASgLMh8uY2FsZW5kYXJldmVudHMuU2ltcGxlQXR0ZW5kZWVzOgI4ARpkChhFeHRyYUdyb3VwQXR0ZW5kZWVzRW50cnkSCwoDa2V5GAEgASgJEjcKBXZhbHVlGAIgASgLMiguY2FsZW5kYXJldmVudHMuRW5jcnlwdGVkU2ltcGxlQXR0ZW5kZWVzOgI4ASI7CiFDaGVja1VzZXJDb2xsYWJvcmF0aW9uUGVybVJlcXVlc3QSFgoOY2hlY2tfdXNlcl9pZHMYASADKAkiTwoiQ2hlY2tVc2VyQ29sbGFib3JhdGlvblBlcm1SZXNwb25zZRIpCiF1c2VyX2NvbGxhYm9yYXRpb25fZm9yYmlkZGVuX2xpc3QYASADKAkirgMKF1NhdmVXZWJpbmFyRXZlbnRSZXF1ZXN0Ej4KEWNyZWF0ZV9ldmVudF9pbmZvGAEgASgLMiMuY2FsZW5kYXJfZW50aXRpZXMuV2ViaW5hckV2ZW50SW5mbxI7ChhzcGVha2VyX2F0dGVuZGVlX2NvbW1pdHMYAiABKAsyGS5lbnRpdGllcy5BdHRlbmRlZUNvbW1pdHMSPAoZYXVkaWVuY2VfYXR0ZW5kZWVfY29tbWl0cxgDIAEoCzIZLmVudGl0aWVzLkF0dGVuZGVlQ29tbWl0cxI8ChlyZXNvdXJjZV9hdHRlbmRlZV9jb21taXRzGAQgASgLMhkuZW50aXRpZXMuQXR0ZW5kZWVDb21taXRzEl4KEW5vdGlmaWNhdGlvbl90eXBlGAUgASgOMiguZW50aXRpZXMuQ2FsZW5kYXJFdmVudC5Ob3RpZmljYXRpb25UeXBlOhlERUZBVUxUX05PVElGSUNBVElPTl9UWVBFEjoKFGV2ZW50X2Nyb3NzX2xhbmd1YWdlGAYgASgLMhwuZW50aXRpZXMuRXZlbnRDcm9zc0xhbmd1YWdlImsKGFNhdmVXZWJpbmFyRXZlbnRSZXNwb25zZRIvCg5jYWxlbmRhcl9ldmVudBgBIAEoCzIXLmVudGl0aWVzLkNhbGVuZGFyRXZlbnQSHgoFdmNoYXQYAiABKAsyDy5lbnRpdGllcy5WY2hhdCK7AQoZRGVsZXRlV2ViaW5hckV2ZW50UmVxdWVzdBITCgtjYWxlbmRhcl9pZBgBIAEoCRISCgp1bmlxdWVfa2V5GAIgASgJEhUKDW9yaWdpbmFsX3RpbWUYAyABKAMSXgoRbm90aWZpY2F0aW9uX3R5cGUYBCABKA4yKC5lbnRpdGllcy5DYWxlbmRhckV2ZW50Lk5vdGlmaWNhdGlvblR5cGU6GURFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEUiHAoaRGVsZXRlV2ViaW5hckV2ZW50UmVzcG9uc2UitAEKMExpc3RXZWJpbmFyRXZlbnRJbmRpdmlkdWFsU2ltcGxlQXR0ZW5kZWVzUmVxdWVzdBITCgtjYWxlbmRhcl9pZBgBIAEoCRILCgNrZXkYAiABKAkSFQoNb3JpZ2luYWxfdGltZRgDIAEoAxIzCgx3ZWJpbmFyX3R5cGUYBCABKA4yHS5lbnRpdGllcy5XZWJpbmFyQXR0ZW5kZWVUeXBlEhIKCnBhZ2VfdG9rZW4YBSABKAkiTgoVV2ViaW5hclNpbXBsZUF0dGVuZGVlEjUKDWF0dGVuZGVlX2luZm8YASABKAsyHi5jYWxlbmRhcmV2ZW50cy5TaW1wbGVBdHRlbmRlZSKlAQoxTGlzdFdlYmluYXJFdmVudEluZGl2aWR1YWxTaW1wbGVBdHRlbmRlZXNSZXNwb25zZRJKChtpbmRpdmlkdWFsX3NpbXBsZV9hdHRlbmRlZXMYASADKAsyJS5jYWxlbmRhcmV2ZW50cy5XZWJpbmFyU2ltcGxlQXR0ZW5kZWUSEAoIaGFzX21vcmUYAiABKAgSEgoKcGFnZV90b2tlbhgDIAEoCSKhAQoqR2V0V2ViaW5hckluZGl2aWR1YWxBdHRlbmRlZXNCeVBhZ2VSZXF1ZXN0EhcKD2V2ZW50X3NlcnZlcl9pZBgBIAIoCRIzCgx3ZWJpbmFyX3R5cGUYAiABKA4yHS5lbnRpdGllcy5XZWJpbmFyQXR0ZW5kZWVUeXBlEhIKCnBhZ2VfdG9rZW4YAyABKAkSEQoJcGFnZV9zaXplGAQgASgFIsECCitHZXRXZWJpbmFySW5kaXZpZHVhbEF0dGVuZGVlc0J5UGFnZVJlc3BvbnNlEjkKCWF0dGVuZGVlcxgBIAMoCzImLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRXZWJpbmFyQXR0ZW5kZWUScQoUY2FsZW5kYXJfY2hhdHRlcl9tYXAYAiADKAsyUy5jYWxlbmRhcmV2ZW50cy5HZXRXZWJpbmFySW5kaXZpZHVhbEF0dGVuZGVlc0J5UGFnZVJlc3BvbnNlLkNhbGVuZGFyQ2hhdHRlck1hcEVudHJ5EhcKD25leHRfcGFnZV90b2tlbhgDIAEoCRIQCghoYXNfbW9yZRgEIAEoCBo5ChdDYWxlbmRhckNoYXR0ZXJNYXBFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIpsCChpHZXRFdmVudENoZWNrSW5JbmZvUmVxdWVzdBITCgtjYWxlbmRhcl9pZBgBIAEoAxILCgN1aWQYAiABKAkSFQoNb3JpZ2luYWxfdGltZRgDIAEoAxISCgpzdGFydF90aW1lGAQgASgDEkcKCWNvbmRpdGlvbhgFIAEoCzI0LmNhbGVuZGFyZXZlbnRzLkdldEV2ZW50Q2hlY2tJbkluZm9SZXF1ZXN0LkNvbmRpdGlvbhpnCglDb25kaXRpb24SGQoRbmVlZF9jaGVja19pbl91cmwYASABKAgSEgoKbmVlZF9pbWFnZRgCIAEoCBISCgpuZWVkX3N0YXRzGAMgASgIEhcKD25lZWRfdmlzaWJpbGl0eRgEIAEoCCLmAwobR2V0RXZlbnRDaGVja0luSW5mb1Jlc3BvbnNlEhQKDGNoZWNrX2luX3VybBgBIAEoCRISCgppbWFnZV9kYXRhGAIgASgMElAKDmNoZWNrX2luX3N0YXRzGAMgASgLMjguY2FsZW5kYXJldmVudHMuR2V0RXZlbnRDaGVja0luSW5mb1Jlc3BvbnNlLkNoZWNrSW5TdGF0cxIYChBjaGVja19pbl92aXNpYmxlGAQgASgIEhgKEGNoZWNrX2luX2Rpc2FibGUYBSABKAgSFQoNZXZlbnRfc3VtbWFyeRgGIAEoCRISCgpldmVudF90aW1lGAcgASgJEhYKDm9yZ2FuaXplcl9uYW1lGAggASgJEg0KBXJydWxlGAkgASgJEhAKCGV2ZW50X2lkGAogASgDEhYKDmRpc2FibGVfcmVhc29uGAsgASgJEhUKDWlzX2dlbmVyYXRpbmcYDCABKAgSEAoIYXBwX25hbWUYDSABKAkSHAoUb3JnYW5pemVyX2F2YXRhcl91cmwYDiABKAkaVAoMQ2hlY2tJblN0YXRzEhcKD3NpZ25lZF9pbl9jb3VudBgBIAEoAxIWCg5hdHRlbmRlZV9jb3VudBgCIAEoAxITCgtiaXRhYmxlX3VybBgDIAEoCSI+CiNHZXRUZW5hbnRFbmNyeXB0aW9uS2V5U3RhdHVzUmVxdWVzdBIXCg9lbmNyeXB0aW9uX2tleXMYASADKAkijAUKJEdldFRlbmFudEVuY3J5cHRpb25LZXlTdGF0dXNSZXNwb25zZRJXCgprZXlfc3RhdHVzGAEgAygLMkMuY2FsZW5kYXJldmVudHMuR2V0VGVuYW50RW5jcnlwdGlvbktleVN0YXR1c1Jlc3BvbnNlLktleVN0YXR1c0VudHJ5EmwKFWtleV9lbmNyeXB0aW9uX3N0YXR1cxgCIAMoCzJNLmNhbGVuZGFyZXZlbnRzLkdldFRlbmFudEVuY3J5cHRpb25LZXlTdGF0dXNSZXNwb25zZS5LZXlFbmNyeXB0aW9uU3RhdHVzRW50cnkSNQoRZW5jcnlwdGlvbl9zdGF0dXMYAyABKA4yGi5lbnRpdGllcy5FbmNyeXB0aW9uU3RhdHVzEm4KFmtleV9lbmNyeXB0aW9uX3ZlcnNpb24YBCADKAsyTi5jYWxlbmRhcmV2ZW50cy5HZXRUZW5hbnRFbmNyeXB0aW9uS2V5U3RhdHVzUmVzcG9uc2UuS2V5RW5jcnlwdGlvblZlcnNpb25FbnRyeRIaChJlbmNyeXB0aW9uX3ZlcnNpb24YBSABKAMaRQoOS2V5U3RhdHVzRW50cnkSCwoDa2V5GAEgASgJEiIKBXZhbHVlGAIgASgOMhMuZW50aXRpZXMuS2V5U3RhdHVzOgI4ARpWChhLZXlFbmNyeXB0aW9uU3RhdHVzRW50cnkSCwoDa2V5GAEgASgJEikKBXZhbHVlGAIgASgOMhouZW50aXRpZXMuRW5jcnlwdGlvblN0YXR1czoCOAEaOwoZS2V5RW5jcnlwdGlvblZlcnNpb25FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAM6AjgBIk0KIU1HZXRCYXNpY0V2ZW50c0luZm9XaXRoS2V5UmVxdWVzdBIoCgRrZXlzGAEgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJFdmVudEtleSJiCiJNR2V0QmFzaWNFdmVudHNJbmZvV2l0aEtleVJlc3BvbnNlEjwKCmV2ZW50X2luZm8YASADKAsyKC5jYWxlbmRhcl9lbnRpdGllcy5FdmVudEJhc2ljSW5mb1dpdGhLZXkiUgoRQ2FsZW5kYXJFdmVudEZvcm0SEwoLY2FsZW5kYXJfaWQYASACKAMSEQoJZXZlbnRfdWlkGAIgAigJEhUKDW9yaWdpbmFsX3RpbWUYAyACKAMi6gIKGFNhdmVJbnN0YW5jZU5vdGVzUmVxdWVzdBI+ChNjYWxlbmRhcl9ldmVudF9mb3JtGAEgAigLMiEuY2FsZW5kYXJldmVudHMuQ2FsZW5kYXJFdmVudEZvcm0SGwoTaW5zdGFuY2Vfc3RhcnRfdGltZRgCIAIoAxIRCglkb2NfdG9rZW4YAyACKAkSGgoSb3JpZ2luYWxfZG9jX3Rva2VuGAQgASgJEiMKCGRvY190eXBlGAUgAigOMhEuZW50aXRpZXMuRG9jVHlwZRIUCgxkb2Nfb3duZXJfaWQYBiABKAMSEgoKZG9jX2JvdF9pZBgHIAEoAxJBChBldmVudF9wZXJtaXNzaW9uGAggASgOMicuY2FsZW5kYXJfZW50aXRpZXMuTm90ZXNFdmVudFBlcm1pc3Npb24SMAoKbm90ZXNfdHlwZRgJIAEoDjIcLmNhbGVuZGFyX2VudGl0aWVzLk5vdGVzVHlwZSIbChlTYXZlSW5zdGFuY2VOb3Rlc1Jlc3BvbnNlIuIBChdHZXRJbnN0YW5jZXNJbmZvUmVxdWVzdBITCgtjYWxlbmRhcl9pZBgBIAEoCRILCgNrZXkYAiABKAkSFQoNb3JpZ2luYWxfdGltZRgDIAEoAxIbChNpbnN0YW5jZV9zdGFydF90aW1lGAQgASgDEj4KFG5lZWRfbm90ZXNfaW5mb190eXBlGAUgAygOMiAuY2FsZW5kYXJfZW50aXRpZXMuTm90ZXNJbmZvVHlwZRIVCg1uZWVkX2FpX25vdGVzGAYgASgIEhoKEm5lZWRfdmNfbWVldGluZ19pZBgHIAEoCCKvAQoYR2V0SW5zdGFuY2VzSW5mb1Jlc3BvbnNlEjAKCm5vdGVzX2luZm8YASABKAsyHC5jYWxlbmRhcl9lbnRpdGllcy5Ob3Rlc0luZm8SEwoLaW5fbm90ZXNfZmcYAiABKAgSNQoNYWlfbm90ZXNfaW5mbxgDIAEoCzIeLmNhbGVuZGFyX2VudGl0aWVzLkFJTm90ZXNJbmZvEhUKDXZjX21lZXRpbmdfaWQYBCABKAkijQEKE0dldE5vdGVzSW5mb1JlcXVlc3QSEQoJZG9jX3Rva2VuGAEgASgJEiMKCGRvY190eXBlGAIgASgOMhEuZW50aXRpZXMuRG9jVHlwZRI+ChRuZWVkX25vdGVzX2luZm9fdHlwZRgDIAMoDjIgLmNhbGVuZGFyX2VudGl0aWVzLk5vdGVzSW5mb1R5cGUiSAoUR2V0Tm90ZXNJbmZvUmVzcG9uc2USMAoKbm90ZXNfaW5mbxgBIAEoCzIcLmNhbGVuZGFyX2VudGl0aWVzLk5vdGVzSW5mbyJTCg5Ob3Rlc1RpdGxlRm9ybRIVCg1ldmVudF9zdW1tYXJ5GAEgASgJEhIKCnN0YXJ0X3RpbWUYAiABKAMSFgoOc3RhcnRfdGltZXpvbmUYAyABKAki/QEKFUNyZWF0ZU5vdGVzRG9jUmVxdWVzdBI+ChNjYWxlbmRhcl9ldmVudF9mb3JtGAEgASgLMiEuY2FsZW5kYXJldmVudHMuQ2FsZW5kYXJFdmVudEZvcm0SFgoOdGVtcGxhdGVfdG9rZW4YAiABKAkSKAoNdGVtcGxhdGVfdHlwZRgDIAEoDjIRLmVudGl0aWVzLkRvY1R5cGUSEwoLdGVtcGxhdGVfaWQYBCABKAkSFQoJZG9jX3RpdGxlGAUgASgJQgIYARI2Cg5ub3Rlc1RpdGxlRm9ybRgGIAEoCzIeLmNhbGVuZGFyZXZlbnRzLk5vdGVzVGl0bGVGb3JtInoKFkNyZWF0ZU5vdGVzRG9jUmVzcG9uc2USEQoJZG9jX3Rva2VuGAEgASgJEiMKCGRvY190eXBlGAIgASgOMhEuZW50aXRpZXMuRG9jVHlwZRIUCgxkb2Nfb3duZXJfaWQYAyABKAMSEgoKZG9jX2JvdF9pZBgEIAEoAyKiAQoSRGVsTm90ZXNEb2NSZXF1ZXN0Ej4KE2NhbGVuZGFyX2V2ZW50X2Zvcm0YASABKAsyIS5jYWxlbmRhcmV2ZW50cy5DYWxlbmRhckV2ZW50Rm9ybRIUCgxkb2Nfb3duZXJfaWQYAiABKAMSEQoJZG9jX3Rva2VuGAMgAigJEiMKCGRvY190eXBlGAQgAigOMhEuZW50aXRpZXMuRG9jVHlwZSIVChNEZWxOb3Rlc0RvY1Jlc3BvbnNlIpwBCgxOb3Rlc0RvY0luZm8SPgoTY2FsZW5kYXJfZXZlbnRfZm9ybRgBIAEoCzIhLmNhbGVuZGFyZXZlbnRzLkNhbGVuZGFyRXZlbnRGb3JtEhQKDGRvY19vd25lcl9pZBgCIAEoAxIRCglkb2NfdG9rZW4YAyACKAkSIwoIZG9jX3R5cGUYBCACKA4yES5lbnRpdGllcy5Eb2NUeXBlIk8KF0JhdGNoRGVsTm90ZXNEb2NSZXF1ZXN0EjQKDm5vdGVzX2RvY19pbmZvGAEgAygLMhwuY2FsZW5kYXJldmVudHMuTm90ZXNEb2NJbmZvIhoKGEJhdGNoRGVsTm90ZXNEb2NSZXNwb25zZSI2ChpDaGVja0NhblJTVlBDb21tZW50UmVxdWVzdBIYChByZWNlaXZlcl91c2VyX2lkGAEgAigDIi8KG0NoZWNrQ2FuUlNWUENvbW1lbnRSZXNwb25zZRIQCghjYW5fc2VuZBgBIAEoCCJcCiRDaGVja1Ntc05vdGlmaWNhdGlvbkF2YWlsYWJsZVJlcXVlc3QSGwoTY3JlYXRvcl9jYWxlbmRhcl9pZBgBIAEoAxIXCg9uZWVkX3NlbmRfY291bnQYAiABKAUilgEKJUNoZWNrU21zTm90aWZpY2F0aW9uQXZhaWxhYmxlUmVzcG9uc2USFAoMaXNfYXZhaWxhYmxlGAEgASgIEhcKD2F2YWlsYWJsZV9jb3VudBgCIAEoBRI+ChZwaG9uZV9hdHRlbmRlZV9zZXR0aW5nGAMgASgLMh4uZW50aXRpZXMuUGhvbmVBdHRlbmRlZVNldHRpbmciMQogTG9hZEV2ZW50SW5mb0J5S2V5Rm9yTXlBSVJlcXVlc3QSDQoFdG9rZW4YASACKAkiXAohTG9hZEV2ZW50SW5mb0J5S2V5Rm9yTXlBSVJlc3BvbnNlEjcKCmV2ZW50X2luZm8YASABKAsyIy5jYWxlbmRhcl9lbnRpdGllcy5FdmVudEluZm9Gb3JNeUFJIicKJUdldENhbGVuZGFyRGV2aWNlUGVybWlzc2lvbkJsZVJlcXVlc3QiOgomR2V0Q2FsZW5kYXJEZXZpY2VQZXJtaXNzaW9uQmxlUmVzcG9uc2USEAoIbmVlZF9ibGUYASABKAginQEKIlVwbG9hZE5lYXJieU1lZXRpbmdSb29tSW5mb1JlcXVlc3QSHAoUYmxlX3NjYW5fcmVzdWx0X2xpc3QYASABKAkSEQoJdXNpbmdfdnBuGAIgASgIEkYKF25ldHdvcmtfY29ubmVjdGlvbl90eXBlGAMgASgOMiUuY2FsZW5kYXJldmVudHMuTmV0d29ya0Nvbm5lY3Rpb25UeXBlIiUKI1VwbG9hZE5lYXJieU1lZXRpbmdSb29tSW5mb1Jlc3BvbnNlIowCChVNeUFJQ2FsZW5kYXJFdmVudEluZm8SDwoHc3VtbWFyeRgBIAEoCRISCgpzdGFydF90aW1lGAIgASgDEhAKCGVuZF90aW1lGAMgASgDEhAKCHRpbWV6b25lGAQgASgJEhAKCHJlY19ydWxlGAUgASgJEhcKD3BhcnRpY2lwYW50X2lkcxgGIAMoAxIUCgxyZXNvdXJjZV9pZHMYByADKAMSMQoNbWVldGluZ19ub3RlcxgIIAEoCzIaLmVudGl0aWVzLk1lZXRpbmdOb3Rlc0luZm8SNgoJcmVzb3VyY2VzGAkgAygLMiMuY2FsZW5kYXJfZW50aXRpZXMuTXlBSVJlc291cmNlSW5mbyKNAQogRGV2aWNlRXZlbnRMaXZlQWN0aXZpdHlRdWVyeUluZm8SDwoHdXNlcl9pZBgBIAEoAxIRCglkZXZpY2VfaWQYAiABKAMSEQoJZXZlbnRfdWlkGAMgASgJEhUKDW9yaWdpbmFsX3RpbWUYBCABKAMSGwoTaW5zdGFuY2Vfc3RhcnRfdGltZRgFIAEoAyJsCiNDaGVja0RldmljZUV2ZW50TGl2ZUFjdGl2aXR5UmVxdWVzdBJFCgtxdWVyeV9pbmZvcxgBIAMoCzIwLmNhbGVuZGFyZXZlbnRzLkRldmljZUV2ZW50TGl2ZUFjdGl2aXR5UXVlcnlJbmZvIr4BCiJEZXZpY2VFdmVudExpdmVBY3Rpdml0eVF1ZXJ5UmVzdWx0Eg8KB3VzZXJfaWQYASABKAMSEQoJZGV2aWNlX2lkGAIgASgDEhEKCWV2ZW50X3VpZBgDIAEoCRIVCg1vcmlnaW5hbF90aW1lGAQgASgDEhsKE2luc3RhbmNlX3N0YXJ0X3RpbWUYBSABKAMSEQoJaXNfbGl2aW5nGAYgASgIEhoKEmxpdmVfYWN0aXZpdHlfdXVpZBgHIAEoCSJxCiRDaGVja0RldmljZUV2ZW50TGl2ZUFjdGl2aXR5UmVzcG9uc2USSQoNcXVlcnlfcmVzdWx0cxgBIAMoCzIyLmNhbGVuZGFyZXZlbnRzLkRldmljZUV2ZW50TGl2ZUFjdGl2aXR5UXVlcnlSZXN1bHQipwEKG1B1c2hDYWxlbmRhck15QUlJbmxpbmVTdGFnZRISCgphaV90YXNrX2lkGAEgASgJEjkKBXN0YWdlGAIgASgOMiouY2FsZW5kYXJfZW50aXRpZXMuQ2FsZW5kYXJNeUFJSW5saW5lU3RhZ2USOQoKZXZlbnRfaW5mbxgDIAEoCzIlLmNhbGVuZGFyZXZlbnRzLk15QUlDYWxlbmRhckV2ZW50SW5mbyJ5Ch9HZXRDYWxlbmRhck15QUlVc2VyUXVlcnlSZXF1ZXN0EkIKCmlucHV0X3R5cGUYASACKA4yLi5jYWxlbmRhcl9lbnRpdGllcy5DYWxlbmRhck15QUlJbmxpbmVJbnB1dFR5cGUSEgoKdXNlcl9pbnB1dBgCIAIoCSI6CiBHZXRDYWxlbmRhck15QUlVc2VyUXVlcnlSZXNwb25zZRIWCg5vdXRwdXRfY29udGVudBgBIAEoCSJMCiFHZXRDYWxlbmRhck15QUlJbmxpbmVFdmVudFJlcXVlc3QSEgoKYWlfdGFza19pZBgBIAIoCRITCgthaV90YXNrX2VuZBgCIAIoCCKuAQoiR2V0Q2FsZW5kYXJNeUFJSW5saW5lRXZlbnRSZXNwb25zZRISCgphaV90YXNrX2lkGAEgASgJEjkKBXN0YWdlGAIgASgOMiouY2FsZW5kYXJfZW50aXRpZXMuQ2FsZW5kYXJNeUFJSW5saW5lU3RhZ2USOQoKZXZlbnRfaW5mbxgDIAEoCzIlLmNhbGVuZGFyZXZlbnRzLk15QUlDYWxlbmRhckV2ZW50SW5mbyI6CgtCbGVSb29tSW5mbxIPCgdyb29tX2lkGAEgAigJEgwKBHJzc2kYAiADKAUSDAoEY29kZRgDIAEoCSJCCiJSZWRlZW1OZWFyYnlNZWV0aW5nUm9vbUluZm9SZXF1ZXN0EhwKFGJsZV9zY2FuX3Jlc3VsdF9saXN0GAEgASgJIlUKI1JlZGVlbU5lYXJieU1lZXRpbmdSb29tSW5mb1Jlc3BvbnNlEi4KCWJsZV9yb29tcxgBIAMoCzIbLmNhbGVuZGFyZXZlbnRzLkJsZVJvb21JbmZvIp8BChZHZXROZWFyYnlSb29tRXZlbnRJbmZvEi0KCWV2ZW50X2tleRgBIAEoCzIaLmVudGl0aWVzLkNhbGVuZGFyRXZlbnRLZXkSFgoOZ3JvdXBfY2hhdF9pZHMYAiADKAkSHwoXaW5kaXZpZHVhbF9jYWxlbmRhcl9pZHMYAyADKAkSHQoVcmVzb3VyY2VfY2FsZW5kYXJfaWRzGAQgAygJIoIDCi1HZXROZWFyYnlBdmFpbGFibGVNZWV0aW5nUm9vbVJlc291cmNlc1JlcXVlc3QSFQoKc3RhcnRfdGltZRgBIAEoAzoBMBITCghlbmRfdGltZRgCIAEoAzoBMBIPCgVycnVsZRgDIAEoCToAEhsKDnN0YXJ0X3RpbWV6b25lGAQgASgJOgNVVEMSOAoTbWVldGluZ19yb29tX2ZpbHRlchgFIAEoCzIbLmVudGl0aWVzLk1lZXRpbmdSb29tRmlsdGVyEi4KCWJsZV9yb29tcxgGIAMoCzIbLmNhbGVuZGFyZXZlbnRzLkJsZVJvb21JbmZvEjoKCmV2ZW50X2luZm8YByABKAsyJi5jYWxlbmRhcmV2ZW50cy5HZXROZWFyYnlSb29tRXZlbnRJbmZvEhEKCXVzaW5nX3ZwbhgIIAEoCBI+ChZvcGVyYXRlX2luc3RhbmNlX2ZpZWxkGAkgASgLMh4uZW50aXRpZXMuT3BlcmF0ZUluc3RhbmNlRmllbGQijgEKLkdldE5lYXJieUF2YWlsYWJsZU1lZXRpbmdSb29tUmVzb3VyY2VzUmVzcG9uc2USLQoJcmVzb3VyY2VzGAEgAygLMhouZW50aXRpZXMuQ2FsZW5kYXJSZXNvdXJjZRItCglidWlsZGluZ3MYAiADKAsyGi5lbnRpdGllcy5DYWxlbmRhckJ1aWxkaW5nIjsKIFNlYXJjaFVzZXJCeUVtYWlsQ2FsZW5kYXJSZXF1ZXN0EhcKD0NvbnRhY3RDb250ZW50cxgBIAMoCSKzBAohU2VhcmNoVXNlckJ5RW1haWxDYWxlbmRhclJlc3BvbnNlElwKDmVudGl0aWVzX2luZm9zGAEgAygLMkQuY2FsZW5kYXJldmVudHMuU2VhcmNoVXNlckJ5RW1haWxDYWxlbmRhclJlc3BvbnNlLkVudGl0aWVzSW5mb3NFbnRyeRqzAgoSU2VhcmNoUmVzdWx0RW50aXR5EmsKC2VudGl0eV9pbmZvGAEgAygLMlYuY2FsZW5kYXJldmVudHMuU2VhcmNoVXNlckJ5RW1haWxDYWxlbmRhclJlc3BvbnNlLlNlYXJjaFJlc3VsdEVudGl0eS5Db250YWN0RW50aXR5SW5mbxqvAQoRQ29udGFjdEVudGl0eUluZm8SEQoJZW50aXR5X2lkGAEgASgDEhEKCXRlbmFudF9pZBgCIAEoAxI2CgtlbnRpdHlfdHlwZRgDIAEoDjIhLmNhbGVuZGFyZXZlbnRzLkNvbnRhY3RFbnRpdHlUeXBlEhoKEmVtYWlsX2NvbnRhY3RfbmFtZRgEIAEoCRIgChhlbWFpbF9jb250YWN0X2F2YXRhcl9rZXkYBSABKAkaegoSRW50aXRpZXNJbmZvc0VudHJ5EgsKA2tleRgBIAEoCRJTCgV2YWx1ZRgCIAEoCzJELmNhbGVuZGFyZXZlbnRzLlNlYXJjaFVzZXJCeUVtYWlsQ2FsZW5kYXJSZXNwb25zZS5TZWFyY2hSZXN1bHRFbnRpdHk6AjgBIqABCiVHZXRFdmVudFJlc291cmNlV2FpdExpc3RPcmRlcnNSZXF1ZXN0EgsKA3VpZBgBIAEoCRIVCg1vcmlnaW5hbF90aW1lGAIgASgDEhAKCG9yZGVyX2lkGAMgASgJEkEKBXNjZW5lGAQgASgOMjIuY2FsZW5kYXJldmVudHMuR2V0RXZlbnRSZXNvdXJjZVdhaXRMaXN0T3JkZXJTY2VuZSJtCiZHZXRFdmVudFJlc291cmNlV2FpdExpc3RPcmRlcnNSZXNwb25zZRJDChlyZXNvdXJjZV93YWl0X2xpc3Rfb3JkZXJzGAEgASgLMiAuZW50aXRpZXMuUmVzb3VyY2VXYWl0TGlzdE9yZGVycyKjAQomU2F2ZUV2ZW50UmVzb3VyY2VXYWl0TGlzdE9yZGVyc1JlcXVlc3QSCwoDdWlkGAEgASgJEhUKDW9yaWdpbmFsX3RpbWUYAiABKAMSEAoIb3JkZXJfaWQYAyABKAkSQwoZcmVzb3VyY2Vfd2FpdF9saXN0X29yZGVycxgEIAEoCzIgLmVudGl0aWVzLlJlc291cmNlV2FpdExpc3RPcmRlcnMiKQonU2F2ZUV2ZW50UmVzb3VyY2VXYWl0TGlzdE9yZGVyc1Jlc3BvbnNlIqYBCipHZXRFdmVudFJlc291cmNlV2FpdExpc3RTdWNjZXNzUmF0ZVJlcXVlc3QSLgoFb3JkZXIYASABKAsyHy5lbnRpdGllcy5SZXNvdXJjZVdhaXRMaXN0T3JkZXISEgoKc3RhcnRfdGltZRgCIAEoAxIQCghlbmRfdGltZRgDIAEoAxILCgN1aWQYBCABKAkSFQoNb3JpZ2luYWxfdGltZRgFIAEoAyJICitHZXRFdmVudFJlc291cmNlV2FpdExpc3RTdWNjZXNzUmF0ZVJlc3BvbnNlEhkKEXN1Y2Nlc3NfcmF0ZV9kYXRhGAEgASgJIjQKMkV2ZW50UmVzb3VyY2VXYWl0TGlzdE9yZGVyU3VnZ2VzdENvbmRpdGlvbnNSZXF1ZXN0ImUKM0V2ZW50UmVzb3VyY2VXYWl0TGlzdE9yZGVyU3VnZ2VzdENvbmRpdGlvbnNSZXNwb25zZRIuCgVvcmRlchgBIAEoCzIfLmVudGl0aWVzLlJlc291cmNlV2FpdExpc3RPcmRlciJLCi1FdmVudFJlc291cmNlV2FpdExpc3RPcmRlckJ1aWxkaW5nWm9uZVJlcXVlc3QSGgoSYnVpbGRpbmdfbGV2ZWxfaWRzGAEgAygJIn8KLkV2ZW50UmVzb3VyY2VXYWl0TGlzdE9yZGVyQnVpbGRpbmdab25lUmVzcG9uc2USTQoOYnVpbGRpbmdfem9uZXMYASADKAsyNS5jYWxlbmRhcmV2ZW50cy5SZXNvdXJjZVdhaXRMaXN0T3JkZXJCdWlsZGluZ1pvbmVMaXN0IoQBCiVSZXNvdXJjZVdhaXRMaXN0T3JkZXJCdWlsZGluZ1pvbmVMaXN0EhkKEWJ1aWxkaW5nX2xldmVsX2lkGAEgAigJEkAKBXpvbmVzGAIgAygLMjEuY2FsZW5kYXJldmVudHMuUmVzb3VyY2VXYWl0TGlzdE9yZGVyQnVpbGRpbmdab25lIkAKIVJlc291cmNlV2FpdExpc3RPcmRlckJ1aWxkaW5nWm9uZRIMCgRjb2RlGAEgAigJEg0KBWxhYmVsGAIgAigJKm4KD0V2ZW50U2hhcmVTdGF0ZRILCgdVTktOT1dOEAASCgoGTk9STUFMEAESDQoJQ0FOQ0VMTEVEEAISCwoHRVhQSVJFRBADEgoKBkpPSU5FRBAEEgwKCEZJTklTSEVEEAUSDAoIRE9XTkxPQUQQBiqJAwoTQ2FsZW5kYXJNZXNzYWdlVHlwZRIQCgxSRVBMWV9BQ0NFUFQQARIRCg1SRVBMWV9ERUNMSU5FEAISEwoPUkVQTFlfVEVOVEFUSVZFEAMSEAoMRVZFTlRfSU5WSVRFEAQSEAoMRVZFTlRfREVMRVRFEAUSEAoMRVZFTlRfVVBEQVRFEAYSFAoQRVZFTlRfUkVTQ0hFRFVMRRAHEhMKD0NBTEVOREFSX1VQREFURRAIEhkKFUVWRU5UX1VQREFURV9MT0NBVElPThAJEh8KG1NFTEZfQVRURU5ERUVfU1RBVFVTX0NIQU5HRRAKEiAKHEFESlVTVF9TSEFSRV9DQUxFTkRBUl9NRU1CRVIQCxIgChxSRU1PVkVfU0hBUkVfQ0FMRU5EQVJfTUVNQkVSEAwSGQoVREVMRVRFX1NIQVJFX0NBTEVOREFSEA0SHAoYRVZFTlRfVVBEQVRFX0RFU0NSSVBUSU9OEA4SHgoaUkVQTFlfQUNDRVBUX0FGVEVSX0RFQ0xJTkUQDyrYAQoVTmV0d29ya0Nvbm5lY3Rpb25UeXBlEhYKEkNPTk5FQ1RJT05fVU5LTk9XThAAEhcKE0NPTk5FQ1RJT05fRVRIRVJORVQQARITCg9DT05ORUNUSU9OX1dJRkkQAhIRCg1DT05ORUNUSU9OXzJHEAMSEQoNQ09OTkVDVElPTl8zRxAEEhEKDUNPTk5FQ1RJT05fNEcQBRITCg9DT05ORUNUSU9OX05PTkUQBhIYChRDT05ORUNUSU9OX0JMVUVUT09USBAHEhEKDUNPTk5FQ1RJT05fNUcQCCptChFDb250YWN0RW50aXR5VHlwZRISCg5VTktOT1dOX0VOVElUWRAAEhAKDElOTkVSX0VOVElUWRABEg4KCkIyQl9FTlRJVFkQAhIQCgxPVVRFUl9FTlRJVFkQAxIQCgxFTUFJTF9FTlRJVFkQBCpzCiJHZXRFdmVudFJlc291cmNlV2FpdExpc3RPcmRlclNjZW5lEiUKIUdFVF9XQUlUX0xJU1RfT1JERVJfU0NFTkVfVU5LTk9XThAAEiYKIkdFVF9XQUlUX0xJU1RfT1JERVJfU0NFTkVfQk9UX0NBUkQQAUJSChZjb20uc3MuYW5kcm9pZC5sYXJrLnBiSANaNmNvZGUuYnl0ZWQub3JnL2xhcmsvaW0tcHJvdG9idWYvaW1wcm90by9jYWxlbmRhcmV2ZW50cw",[J,Wl]);var gV=ml(ve,48),FV=ml(ve,49),Do=fo(ve,49,0),Ie=Mo(Do),Ft=ml(ve,50);var SV=ml(ve,79);var Pe={default:1,default_notification_type:1,none:2,no_notification:2,send:3,send_notification:3,no_notification_for_delete_attendee:4},je={default:1,public:2,private:3},Oe={tentative:1,confirmed:2,cancelled:3,canceled:3},_e={default:1,email:2,popup:3,sms:4},qe={meeting_room:1,room:1,ordinary:2,normal:2},j={user:1,group:2,resource:3,third_party_user:4,thirdpartyuser:4,email:4},$e={needs_action:1,"needs-action":1,need_action:1,accept:2,accepted:2,tentative:3,decline:4,declined:4,removed:5},XV={needs_action:1,"needs-action":1,accept:2,accepted:2,tentative:3,decline:4,declined:4,removed:5};function q(s){return typeof s=="string"&&s.trim()!==""}function St(s){return Object.keys(s)}function Xt(s){return[...new Set(Object.values(s))].sort((V,e)=>V-e)}import{create as B,protoInt64 as WV,toBinary as C,fromBinary as b}from"@bufbuild/protobuf";import{create as zo,toBinary as wo}from"@bufbuild/protobuf";function Ho(s){let V=[];if(s<128)return V.push(s),V;for(;s>127;)V.push(s&127|128),s>>>=7;return V.push(s),V}function F(s,V){s.push(...Ho(V))}var L={TEXT:1,P:3,A:6,DOCS:22,UL:26,OL:27,LI:28,QUOTE:29,CODE_BLOCK:31},oe={ITALIC:{fontStyle:"italic"},BOLD:{fontWeight:"bold"},STRIKETHROUGH:{"-lark-textDecoration":"lineThrough"},UNDERLINE:{"-lark-textDecoration":"underline"}},Ut=0;function v(){return String(++Ut)}function Lo(){Ut=0}function $(s,V=null,e=[]){let l=[];l.push(8),l.push(s),l.push(26),V&&V.length>0?(F(l,V.length),l.push(...V)):l.push(0);for(let t of e){l.push(34);let o=new TextEncoder().encode(t);F(l,o.length),l.push(...o)}return new Uint8Array(l)}function vo(s,V){let e=new TextEncoder().encode(s),l=[];return l.push(10),F(l,e.length),l.push(...e),l.push(18),F(l,V.length),l.push(...V),new Uint8Array(l)}function UV(s){let V=[];for(let[e,l]of Object.entries(s)){let t=vo(e,l);V.push(10),F(V,t.length),V.push(...t)}return new Uint8Array(V)}function rl(s,V={}){let e=zo(te,{content:s}),l=wo(te,e);return Object.keys(V).length>0?Gt(L.TEXT,l,[],V):$(L.TEXT,l,[])}function Gt(s,V,e,l){let t=[];t.push(8),t.push(s);for(let[o,R]of Object.entries(l)){let A=new TextEncoder().encode(o),c=new TextEncoder().encode(R),a=[];a.push(10),F(a,A.length),a.push(...A),a.push(18),F(a,c.length),a.push(...c),t.push(18),F(t,a.length),t.push(...a)}t.push(26),V&&V.length>0?(F(t,V.length),t.push(...V)):t.push(0);for(let o of e){t.push(34);let R=new TextEncoder().encode(o);F(t,R.length),t.push(...R)}return new Uint8Array(t)}function Po(s,V){let e=new TextEncoder().encode(s),l=new TextEncoder().encode(V),t=[];return t.push(10),F(t,e.length),t.push(...e),t.push(18),F(t,l.length),t.push(...l),t.push(72,1),t.push(80,3),new Uint8Array(t)}function jo(){return new Uint8Array([8,0])}function Oo(s=1){let V=Math.max(1,s);if(V<=127)return new Uint8Array([8,0,16,V]);let e=[8,0,16],l=V;for(;l>127;)e.push(l&127|128),l>>=7;return e.push(l),new Uint8Array(e)}function _o(s){let V=s,e={},l=!0;for(;l&&V;){l=!1;let t;if(t=V.match(/^\*\*(.+)\*\*$/),t){e={...e,...oe.BOLD},V=t[1],l=!0;continue}if(t=V.match(/^__(.+)__$/),t){e={...e,...oe.UNDERLINE},V=t[1],l=!0;continue}if(t=V.match(/^~~(.+)~~$/),t){e={...e,...oe.STRIKETHROUGH},V=t[1],l=!0;continue}t=V.match(/^\*(.+)\*$/)||V.match(/^_(.+)_$/),t&&(e={...e,...oe.ITALIC},V=t[1],l=!0)}return{content:V,style:e}}function el(s){let V=[],e={},l="",t=/(\*\*\[([^\]]+)\]\(([^)]+)\)\*\*)|(\[\*\*([^\]]+)\*\*\]\(([^)]+)\))|(\*\*(.+?)\*\*)|(~~(.+?)~~)|(__(.+?)__)|(\*(.+?)\*)|(_([^_]+)_)|(\[([^\]]+)\]\(([^)]+)\))/g,o,R=[];for(;(o=t.exec(s))!==null;){let c="unknown",a="",n=null,h={};o[1]?(c="link",a=o[2],n=o[3],h={...oe.BOLD}):o[4]?(c="link",a=o[5],n=o[6],h={...oe.BOLD}):o[7]?(c="bold",a=o[8]):o[9]?(c="strikethrough",a=o[10]):o[11]?(c="underline",a=o[12]):o[13]?(c="italic",a=o[14]):o[15]?(c="italic",a=o[16]):o[17]&&(c="link",a=o[18],n=o[19]),R.push({index:o.index,length:o[0].length,type:c,content:a,url:n,style:h})}R.sort((c,a)=>c.index-a.index);let A=0;for(let c of R){if(c.index>A){let n=s.substring(A,c.index);if(n){let h=v();V.push(h),e[h]=rl(n),l+=n}}let a=v();if(V.push(a),c.type==="link"){let n=_o(c.content),h=n.content,d={...c.style,...n.style},E=Po(c.url,h);Object.keys(d).length>0?e[a]=Gt(L.A,E,[],d):e[a]=$(L.A,E,[]),l+=h}else{let n={};switch(c.type){case"bold":n=oe.BOLD;break;case"italic":n=oe.ITALIC;break;case"strikethrough":n=oe.STRIKETHROUGH;break;case"underline":n=oe.UNDERLINE;break}e[a]=rl(c.content,n),l+=c.content}A=c.index+c.length}if(A<s.length){let c=s.substring(A);if(c){let a=v();V.push(a),e[a]=rl(c),l+=c}}if(V.length===0){let c=v();V.push(c),e[c]=rl(s),l=s}return{elementIds:V,elementBytes:e,innerText:l}}function qo(s){let V={},e="";if(s.startsWith("> ")){let R=s.substring(2),A=el(R);Object.assign(V,A.elementBytes),e=A.innerText;let c=v(),a=v();return V[a]=$(L.P,null,A.elementIds),V[c]=$(L.QUOTE,null,[a]),{blockChildId:c,elementBytes:V,innerText:e}}if(/^[-*] /.test(s)){let R=s.substring(2),A=el(R);Object.assign(V,A.elementBytes),e=A.innerText;let c=v(),a=v();return V[a]=$(L.LI,null,A.elementIds),V[c]=$(L.UL,jo(),[a]),{blockChildId:c,elementBytes:V,innerText:e}}let l=s.match(/^(\d+)\. /);if(l){let R=parseInt(l[1],10),A=s.replace(/^\d+\. /,""),c=el(A);Object.assign(V,c.elementBytes),e=c.innerText;let a=v(),n=v();return V[n]=$(L.LI,null,c.elementIds),V[a]=$(L.OL,Oo(R),[n]),{blockChildId:a,elementBytes:V,innerText:e}}let t=el(s);Object.assign(V,t.elementBytes),e=t.innerText;let o=v();return V[o]=$(L.P,null,t.elementIds),{blockChildId:o,elementBytes:V,innerText:e}}function ll(s){Lo();let V={},e="",l=s.match(/^```(\w*)\n?([\s\S]*?)```$/);if(l){let n=l[1]||"java",h=l[2].trim();e="[\u4EE3\u7801\u5757]";let d=v(),E=v(),g=v(),X=new TextEncoder().encode(n),G=new Uint8Array([8,31,18,X.length+2,18,X.length,...X]);return V[g]=$(L.CODE_BLOCK,G,[]),V[E]=$(L.P,null,[g]),V[d]=$(L.DOCS,null,[E]),{elementIds:[d],innerText:e,dictionaryBytes:UV(V),isBlockLevel:!0}}let t=s.split(`
3
3
  `).filter(n=>n.trim()),o=t.length>1,R=t.some(n=>n.startsWith("> ")||/^[-*] /.test(n)||/^\d+\. /.test(n));if(!o&&!R){let n=el(s);return Object.assign(V,n.elementBytes),e=n.innerText,{elementIds:n.elementIds,innerText:e,dictionaryBytes:UV(V),isBlockLevel:!1}}let A=v(),c=[],a=[];for(let n of t){let h=qo(n);c.push(h.blockChildId),Object.assign(V,h.elementBytes),a.push(h.innerText)}return V[A]=$(L.DOCS,null,c),e=a.join(""),{elementIds:[A],innerText:e,dictionaryBytes:UV(V),isBlockLevel:!0}}function bl(s){return s.includes(`
4
4
  `)?!0:[/\*\*.+?\*\*/,/\*.+?\*/,/_.+?_/,/~~.+?~~/,/__.+?__/,/\[.+?\]\(.+?\)/,/^> /m,/^[-*] /m,/^\d+\. /m,/^```/m].some(e=>e.test(s))}var $o={2:"POST",3:"FILE",4:"TEXT",5:"IMAGE",6:"SYSTEM",7:"AUDIO",8:"EMAIL",9:"SHARE_GROUP_CHAT",10:"STICKER",11:"MERGE_FORWARD",12:"CALENDAR",13:"CLOUD_FILE",14:"CARD",15:"MEDIA",16:"SHARE_CALENDAR_EVENT",17:"HONGBAO",18:"GENERAL_CALENDAR",19:"VIDEO_CHAT",20:"LOCATION",22:"COMMERCIALIZED_HONGBAO",23:"SHARE_USER_CARD",24:"TODO",25:"FOLDER"},eR={0:"UNKNOWN",1:"USER",2:"BOT"},lR={0:"UNKNOWN",1:"P2P",2:"GROUP",3:"TOPIC_GROUP"},CV={6:"PUSH_MESSAGE",27:"PUSH_REACTIONS",41:"PUSH_MESSAGE_READ_COUNT",48:"PUSH_CHAT_CHATTERS",49:"PUSH_CHAT_MUTABLE_INFO",74:"PUSH_GROUP_READ_STATE",77:"MULTI_PACKETS",92:"PUSH_THREAD_REPLY_COUNT",130:"PUSH_USER_REACTIONS",146:"PUSH_USER_MRU_REACTIONS",200:"PONG",1002:"PUSH_FEED_CARDS",1311:"PUSH_MESSAGE_PREVIEWS",5916:"PUSH_CHAT_TABS",6e3:"PUSH_SID",7001:"PUSH_DEVICE_ONLINE_STATUS",7017:"PUSH_DEVICE_NETWORK_EVENT",7032:"PUSH_THREE_COLUMNS_SETTING",8106:"PUSH_THREAD_READ_STATE",8110:"PUSH_THREAD_UPDATED",30002:"PUSH_URGENT",30003:"PUSH_URGENT_ACK",1020003:"PUSH_CALENDAR_EVENT_SYNC",1103704:"PUSH_CHAT_TOP_NOTICE"};function uV(s){return eR[s]||`UNKNOWN(${s})`}function rt(s){return lR[s]||`UNKNOWN(${s})`}function iV(s){return $o[s]||`UNKNOWN(${s})`}var bV=new Map,VR=1440*60*1e3;function bt(s){let V=bV.get(s);return V&&Date.now()-V.timestamp<VR?V.cryptoInfo:(V&&bV.delete(s),null)}function Bl(s,V){bV.set(s,{cryptoInfo:V,timestamp:Date.now()})}function Bt(s,V){return[...new Set([...Object.values(s).filter(e=>typeof e=="number"),...typeof V=="number"?[V]:[]])].sort((e,l)=>e-l)}function mV(s,V){let e=[...new Set(Object.keys(s))].sort().join(", "),l=Bt(s,V).join(", ");return`aliases: ${e}; numeric values: ${l}`}function ae(s,V,e,l="enum"){if(s==null||s==="")return e;let t=new Set(Bt(V,e));if(typeof s=="number"){if(!Number.isInteger(s))throw new TypeError(`${l} must be an integer enum value`);if(!t.has(s))throw new TypeError(`${l} must be one of ${mV(V,e)}`);return s}if(typeof s=="string"){let o=s.trim().toLowerCase();if(o in V)return V[o];if(/^-?\d+$/.test(o)){let R=Number(o);if(t.has(R))return R;throw new TypeError(`${l} must be one of ${mV(V,e)}`)}throw new TypeError(`${l} must be one of ${mV(V,e)}`)}throw new TypeError(`${l} must be a string or integer enum value`)}var tR={unknown_forward_target_type:Fe.UNKNOWN_FORWARD_TARGET_TYPE,unknown:Fe.UNKNOWN_FORWARD_TARGET_TYPE,chat_only:Fe.CHAT_ONLY,topic_only:Fe.TOPIC_ONLY,chat_and_topic:Fe.CHAT_AND_TOPIC};function oR(s){return ae(s,tR,Fe.CHAT_ONLY,"targetType")}function RR(s,V){if(typeof s=="bigint")return s;if(typeof s=="number"){if(!Number.isInteger(s))throw new TypeError(`${V} must be an integer`);return BigInt(s)}if(typeof s=="string"){let e=s.trim();if(/^-?\d+$/.test(e))return BigInt(e);throw new TypeError(`${V} must be an integer or numeric string`)}throw new TypeError(`${V} must be an integer or numeric string`)}function BV(s,V){if(s==null||s==="")throw new TypeError(`${V} is required`);return RR(s,V)}function Ct(s,V){if(s==null)return;if(typeof s!="string")throw new TypeError(`${V} must be a non-empty string`);let e=s.trim();return e===""?void 0:e}function Vl(s,V){let e=Ct(s,V);if(e===void 0)throw new TypeError(`${V} is required`);return e}function Wt(s,V){if(!(s==null||s==="")){if(typeof s=="number"){if(Number.isFinite(s))return s;throw new TypeError(`${V} must be a number`)}if(typeof s=="string"){let e=s.trim();if(e==="")throw new TypeError(`${V} must be a number`);let l=Number(e);if(Number.isFinite(l))return l;throw new TypeError(`${V} must be a number`)}throw new TypeError(`${V} must be a number`)}}function Cl(s,V){if(typeof s=="number"){if(Number.isInteger(s))return s;throw new TypeError(`${V} must be an integer`)}if(typeof s=="string"){let e=s.trim();if(/^-?\d+$/.test(e))return Number(e);throw new TypeError(`${V} must be an integer`)}throw new TypeError(`${V} must be an integer`)}function cR(s,V){if(!(s==null||s===""))return Cl(s,V)}function AR(s,V){let e=cR(s,V);if(e===void 0)throw new TypeError(`${V} is required`);return e}function rV(s,V){return`locations[${s}].${V}`}function mt(s,V){return`reminders[${s}].${V}`}function Ne(s,V){return`attendees[${s}].${V}`}function aR(s){return ul(s).map((V,e)=>{let l=ae(V.category,j,sR(V),Ne(e,"category")),t=Ne(e,"attendeeCalendarId"),o=Ct(V.attendeeCalendarId??V.attendee_calendar_id,t),R={category:l,attendeeCalendarId:l===j.resource?Vl(V.attendeeCalendarId??V.attendee_calendar_id,t):o??"0",attendeeSchema:V.attendeeSchema??V.attendee_schema??new Uint8Array(0),schemaExtraData:V.schemaExtraData??V.schema_extra_data??new Uint8Array(0),status:ae(V.status,$e,$e.needs_action,Ne(e,"status")),isOptional:V.isOptional??V.is_optional??!1};return l===j.group?B(Le,{...R,dependency:{case:"group",value:{groupId:Vl(V.groupId??V.group_id,Ne(e,"groupId"))}}}):l===j.resource?B(Le,{...R,dependency:{case:"resource",value:{}}}):l===j.third_party_user?B(Le,{...R,dependency:{case:"thirdPartyUser",value:{email:Vl(V.email,Ne(e,"email"))}}}):B(Le,{...R,dependency:{case:"user",value:{userId:Vl(V.userId??V.user_id,Ne(e,"userId"))}}})})}function ul(s){return s==null?[]:Array.isArray(s)?s:[s]}function ut(s){return typeof s=="string"?s.trim()!=="":s!=null}function Xe(...s){let V=s.find(ut);return typeof V=="string"?V.trim():V}function nR(s,V,e,l){let t=BV(s,e),o=BV(V,l);if(o<=t)throw new TypeError(`${l} must be greater than ${e}`);return{start:t,end:o}}function sR(s){return!s||typeof s!="object"?j.user:q(s.groupId)||q(s.group_id)?j.group:q(s.email)?j.third_party_user:q(s.userId)||q(s.user_id)?j.user:q(s.attendeeCalendarId)||q(s.attendee_calendar_id)?j.resource:j.user}var x=class{static buildSendMessageRequest(V,e,l){let t=_(),o=_(),R=B(te,{content:V}),A=B(ue,{text:V,richText:{elementIds:[o],innerText:V,elements:{dictionary:{[o]:{tag:1,property:C(te,R)}}}}}),c=B(Ce,{type:4,chatId:l,cid:t,isNotified:!0,version:1,content:A}),a=B(S,{payloadType:1,cmd:5,cid:e,payload:C(Ce,c)});return Buffer.from(C(S,a))}static buildRichMessageRequest(V,e,l,t={}){let{parseMarkdown:o=!0}=t,R=_(),A,c,a=!1;o&&bl(V)?(A=ll(V),c=A.innerText,a=A.isBlockLevel||!1):(A=ll(V),c=A.innerText);let n=this.buildContentBytes(a?"":c,A.elementIds,c,A.dictionaryBytes),h=this.buildPutMessageRequestBytes(a?2:4,l,R,n),d=B(S,{payloadType:1,cmd:5,cid:e,payload:h});return Buffer.from(C(S,d))}static buildContentBytes(V,e,l,t){let o=[];if(V){let c=new TextEncoder().encode(V);o.push(10),F(o,c.length),o.push(...c)}else o.push(10,0);let R=this.buildRichTextBytes(e,l,t);o.push(114);let A=R.length;return F(o,A),o.push(...R),new Uint8Array(o)}static buildRichTextBytes(V,e,l){let t=[];for(let c of V){let a=new TextEncoder().encode(c);t.push(10),F(t,a.length),t.push(...a)}let o=new TextEncoder().encode(e);t.push(18),F(t,o.length),t.push(...o);let R=this.buildRichTextElementsBytes(l);t.push(26);let A=R.length;return F(t,A),t.push(...R),new Uint8Array(t)}static buildRichTextElementsBytes(V){return V}static buildPutMessageRequestBytes(V,e,l,t){let o=[];o.push(8),o.push(V),o.push(18);let R=t.length;F(o,R),o.push(...t);let A=new TextEncoder().encode(e);o.push(26),F(o,A.length),o.push(...A),o.push(34,0),o.push(42,0);let c=new TextEncoder().encode(l);return o.push(50),F(o,c.length),o.push(...c),o.push(56),o.push(1),new Uint8Array(o)}static buildFileContentBytes(V){let e=[],l=new TextEncoder().encode(V);return e.push(10),F(e,l.length),e.push(...l),new Uint8Array(e)}static buildSendFileMessageRequest(V,e,l){let t=_(),o=this.buildFileContentBytes(V),R=this.buildPutMessageRequestBytes(3,l,t,o),A=B(S,{payloadType:1,cmd:5,cid:e,payload:R});return Buffer.from(C(S,A))}static buildImageContentBytes(V){let e=[],l=new TextEncoder().encode(V);return e.push(82),F(e,l.length),e.push(...l),new Uint8Array(e)}static buildSendImageMessageRequest(V,e,l){let t=_(),o=this.buildImageContentBytes(V),R=this.buildPutMessageRequestBytes(5,l,t,o),A=B(S,{payloadType:1,cmd:5,cid:e,payload:R});return Buffer.from(C(S,A))}static buildAtProperty(V,e){let l=Buffer.from(V,"utf-8"),t=Buffer.from(e,"utf-8"),o=[];o.push(10),F(o,l.length),o.push(...l),o.push(18),F(o,t.length),o.push(...t);let R=[];return R.push(66),F(R,o.length),R.push(...o),new Uint8Array(R)}static buildMentionMessageRequest(V,e,l,t){let o=_(),R=this._parseMentionSegments(V,t),A=1,c=[],a={},n="",h=null;for(let r of R){let i=String(A++);if(c.push(i),r.type==="mention"){let Q="@"+r.displayName,Y=this.buildAtProperty(r.userId,Q),T=[];T.push(8,5),T.push(26),F(T,Y.length),T.push(...Y),a[i]=new Uint8Array(T),n+=Q,h||(h=i)}else{let Q=[],Y=Buffer.from(r.text,"utf-8");Q.push(10),F(Q,Y.length),Q.push(...Y);let T=new Uint8Array(Q),f=[];f.push(8,1),f.push(26),F(f,T.length),f.push(...T),a[i]=new Uint8Array(f),n+=r.text}}let d=[];for(let[r,i]of Object.entries(a)){let Q=Buffer.from(r,"utf-8"),Y=[];Y.push(10),F(Y,Q.length),Y.push(...Q),Y.push(18),F(Y,i.length),Y.push(...i),d.push(10),F(d,Y.length),d.push(...Y)}let E=[];for(let r of c){let i=Buffer.from(r,"utf-8");E.push(10),F(E,i.length),E.push(...i)}let g=Buffer.from(n,"utf-8");if(E.push(18),F(E,g.length),E.push(...g),E.push(26),F(E,d.length),E.push(...d),h){let r=Buffer.from(h,"utf-8");E.push(50),F(E,r.length),E.push(...r)}let X=[];X.push(10,0),X.push(114),F(X,E.length),X.push(...E);let G=new Uint8Array(X),W=this.buildPutMessageRequestBytes(4,l,o,G),m=B(S,{payloadType:1,cmd:5,cid:e,payload:W});return Buffer.from(C(S,m))}static _parseMentionSegments(V,e){if(!e||e.length===0)return[{type:"text",text:V}];let l=e.map(c=>c.displayName.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).sort((c,a)=>a.length-c.length),t=new RegExp(`@(${l.join("|")})`,"g"),o=[],R=0,A;for(;(A=t.exec(V))!==null;){A.index>R&&o.push({type:"text",text:V.substring(R,A.index)});let c=A[1],a=e.find(n=>n.displayName===c);a&&o.push({type:"mention",userId:a.userId,displayName:a.displayName}),R=A.index+A[0].length}return R<V.length&&o.push({type:"text",text:V.substring(R)}),o.length===0?[{type:"text",text:V}]:o}static buildSearchRequest(V,e){let l=_(),t=B(Gl,{header:{searchSession:l,sessionSeqId:1,query:e,searchContext:{tagName:"SMART_SEARCH",entityItems:[{type:1},{type:3},{type:2}]},commonFilter:{includeOuterTenant:!0},sourceKey:"messenger",locale:"zh_CN"}}),o=B(S,{payloadType:1,cmd:11021,cid:V,payload:C(Gl,t)});return Buffer.from(C(S,o))}static buildCreateChatRequest(V,e){let l=B(pe,{type:1,chatterIds:[e]}),t=B(S,{payloadType:1,cmd:13,cid:V,payload:C(pe,l)});return Buffer.from(C(S,t))}static buildCreateGroupRequest(V,{name:e,description:l,memberIds:t,chatMode:o,iconKey:R}){let A=B(pe,{type:2,groupName:e,groupDesc:l||"",chatterIds:t||[],chatMode:o||1,iconKey:R||""}),c=B(S,{payloadType:1,cmd:13,cid:V,payload:C(pe,A)});return Buffer.from(C(S,c))}static decodeSearchResponse(V){let e=b(S,V);return e.payload?(b(tV,e.payload).results||[]).map(t=>({type:t.type===1?"user":t.type===3?"group":"unknown",id:t.id,rawType:t.type,titleHighlighted:t.titleHighlighted,avatarKey:t.avatarKey})):[]}static decodeCreateChatResponse(V){let e=b(S,V);return e.payload&&b($l,e.payload).chat?.id||null}static buildPatchGroupChatRequest(V,e,l={}){let t=[],o={chatId:WV.parse(e)};l.name!==void 0&&(o.name=l.name,t.push(ze.NAME)),l.description!==void 0&&(o.description=l.description,t.push(ze.DESCRIPTION)),l.iconKey!==void 0&&(o.iconKey=l.iconKey,t.push(ze.ICON_KEY)),o.updateFields=t;let R=B(Sl,o),A=B(S,{payloadType:1,cmd:72,cid:V,payload:C(Sl,R)});return Buffer.from(C(S,A))}static decodePatchGroupChatResponse(V){let e=b(S,V);if(this._isPacketError(e))return{success:!1,error:`Packet status: ${e.status}`};if(!e.payload||e.payload.length===0)return{success:!1,error:"Empty response payload"};let t=b(eV,e.payload).chat;return{success:!0,data:{chatId:t?.id||"",name:t?.name||"",description:t?.description||"",iconKey:t?.avatar?.key||""}}}static decodeReceiveMessage(V){let e=b(He,V);if(!e.payload)return{fromId:null,chatId:null,content:"",sid:null,type:null};let l=b(S,e.payload);if(!l.payload)return{fromId:null,chatId:null,content:"",sid:l.sid,type:null,command:l.cmd};if(l.cmd===77){let a=this.cacheImageCryptoFromCmd77Payload(l.payload);return a>0&&N.log("[Proto] \u2705 \u4ECE cmd=77 \u7F13\u5B58\u4E86 "+a+" \u6761\u56FE\u7247\u52A0\u5BC6\u4FE1\u606F"),{fromId:null,chatId:null,content:"",sid:l.sid,type:null,command:l.cmd}}let t=this.CMD_DECODERS[l.cmd];if(t)return t.call(this,l);if(l.cmd===200||l.cmd===6e3)return{command:l.cmd,event:l.cmd===200?"pong":"pushSid",sid:l.sid,fromId:null,chatId:null,content:"",type:null};if(l.cmd!==6)return{fromId:null,chatId:null,content:"",sid:l.sid,command:l.cmd,event:CV[l.cmd]||"unknown",payloadLength:l.payload?.length||0,type:null};let o;try{o=b(wl,l.payload)}catch(a){N.error("[Proto] Failed to decode PushMessagesRequest with schema, trying manual parse:",a.message);try{let n=l.payload,h={},d=0;for(;d<n.length;){let g=n[d];if(g===void 0)break;let X=g&7,G=g>>3;if(d++,G===1){if(X===2){let W=this.readVarint(n,d);d+=this.varintLength(n,d);let m=n.subarray(d,d+W);d+=W;let r=0,i=null,Q=null;for(;r<m.length;){let Y=m[r];if(Y===void 0)break;let T=Y&7,f=Y>>3;if(r++,f===1){let O=this.readVarint(m,r);r+=this.varintLength(m,r),i=m.subarray(r,r+O).toString("utf8"),r+=O}else if(f===2){let O=this.readVarint(m,r);r+=this.varintLength(m,r),Q=m.subarray(r,r+O),r+=O}else if(T===2){let O=this.readVarint(m,r);r+=this.varintLength(m,r)+O}else T===0?r+=this.varintLength(m,r):r++}i&&Q&&(h[i]=Q)}}else if(X===2){let W=this.readVarint(n,d);d+=this.varintLength(n,d)+W}else X===0?d+=this.varintLength(n,d):d++}let E=Object.keys(h)[0];if(!E)return{fromId:null,chatId:null,content:"",sid:l.sid,type:null,command:l.cmd};try{let g=b(Kl,h[E]);return{...this.parseMessageContent(g,l.sid),command:l.cmd}}catch(g){return N.error("[Proto] Failed to decode individual message:",g.message),{fromId:null,chatId:null,content:"",sid:l.sid,type:null,command:l.cmd}}}catch(n){return N.error("[Proto] Manual parse also failed:",n.message),{fromId:null,chatId:null,content:"",sid:l.sid,parseError:a.message,type:null,command:l.cmd}}}let R=o.messages||{},A=Object.keys(R)[0];if(!A)return{fromId:null,chatId:null,content:"",sid:l.sid,type:null,command:l.cmd};let c=R[A];return{...this.parseMessageContent(c,l.sid),command:l.cmd}}static parseMessageContent(V,e){let l={fromId:String(V.fromId||""),chatId:String(V.chatId||""),messageId:String(V.id||""),type:V.type,fromType:V.fromType,chatType:V.chatType,threadId:String(V.threadId||""),sid:e,content:"",imageKey:null,imageKeys:[],cryptoInfo:null,cryptoInfos:[]};if(V.type===2&&V.content)try{let t=b(ue,V.content),o=this.parsePostContent(t);for(let R of o.images)R.imageKey&&R.cryptoInfo&&Bl(R.imageKey,R.cryptoInfo);return{...l,content:o.text,imageKey:o.images[0]?.imageKey||null,imageKeys:o.images.map(R=>R.imageKey).filter(Boolean),cryptoInfo:o.images[0]?.cryptoInfo||null,cryptoInfos:o.images.map(R=>R.cryptoInfo).filter(Boolean)}}catch(t){return N.error("[Proto] Failed to decode POST content:",t.message),l}if(V.type===4&&V.content)try{let t=this.parseTextMessageContent(V.content);return{...l,content:t}}catch(t){return N.error("[Proto] Failed to decode TEXT content:",t.message),l}if((V.type===14||V.type===13)&&V.content)try{let t=this.parseCardContent(V.content),o=!!(t?.json||t?.rawJson);return V.type!==14&&!o?l:{...l,content:t.summary||"[\u5361\u7247\u6D88\u606F]",card:t}}catch(t){return N.error("[Proto] Failed to decode CARD content:",t.message),{...l,content:"[\u5361\u7247\u6D88\u606F]"}}if(V.type===5&&V.content)try{let t=b(El,V.content),o=this.extractImageInfo(t);return o.imageKey&&o.cryptoInfo&&Bl(o.imageKey,o.cryptoInfo),{...l,content:"[\u56FE\u7247]",imageKey:o.imageKey,cryptoInfo:o.cryptoInfo,fsUnit:o.fsUnit}}catch(t){return N.error("[Proto] Failed to decode IMAGE content:",t.message),{...l,content:"[\u56FE\u7247\u89E3\u6790\u5931\u8D25]"}}return l}static decodeGroupReadState(V){try{let e=b(vl,V.payload),l={};if(e.readTimes)for(let[t,o]of Object.entries(e.readTimes))l[t]=Number(o);return{command:74,event:"readState",sid:V.sid,groupId:e.groupId,readPosition:e.readPosition,lastMessagePosition:e.lastMessagePosition,readTimes:l,readPositionBadgeCount:e.readPositionBadgeCount,lastMessageId:e.lastMessageId,messageIds:e.messageIds||[],fromId:null,chatId:e.groupId,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=74 PushGroupMessageReadStateNotice:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:74,type:null}}}static decodeDeviceOnlineStatus(V){try{let l=b(dV,V.payload).deviceOnlineStatus;return{command:7001,event:"deviceStatus",sid:V.sid,deviceId:l?.deviceId||"",terminalType:l?.terminalType??0,onlineStatus:l?.onlineStatus??0,fromId:null,chatId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=7001 PushDeviceOnlineStatus:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:7001,type:null}}}static decodeThreadReadState(V){try{let e=this.roughProtobufParse(V.payload);return{command:8106,event:"readState",sid:V.sid,chatId:e[1]||null,readPosition:e[8]!=null?Number(e[8]):void 0,lastMessagePosition:e[4]!=null?Number(e[4]):void 0,updateTime:e[12]!=null?Number(e[12]):void 0,fromId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=8106 thread read state:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:8106,type:null}}}static decodeReactions(V){try{let e=b(cV,V.payload),l=(e.messageReactions||[]).map(o=>({messageId:o.messageId,reactions:(o.reactions||[]).map(R=>({type:R.type,count:R.count,userIds:R.userIds||[],chatterIds:R.chatterIds||[]})),updateTime:Number(o.updateTime)})),t={};if(e.reactionExtraInfos)for(let[o,R]of Object.entries(e.reactionExtraInfos))t[o]={isCancelled:R.isCancelled,reactionChatterId:R.reactionChatterId,type:R.type};return{command:27,event:"reactions",sid:V.sid,messageReactions:l,reactionExtraInfos:t,fromId:null,chatId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=27 PushReactions:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:27,type:null}}}static parseUserReactions(V){return V?{reactionStrategyVersion:V.reactionStrategyVersion,reactionsType:V.reactionsType||[],extendReactionTypes:V.extendReactionTypes||[]}:null}static decodeUserReactions(V){try{let e=b(AV,V.payload);return{command:130,event:"userReactions",sid:V.sid,ts:e.ts!=null?Number(e.ts):void 0,userReactions:this.parseUserReactions(e.userReactions),userReactionsFilterLarkValues:this.parseUserReactions(e.userReactionsFilterLarkValues),fromId:null,chatId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=130 PushUserReactions:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:130,type:null}}}static decodeUserMRUReactions(V){try{let e=b(aV,V.payload);return{command:146,event:"userMruReactions",sid:V.sid,ts:e.ts!=null?Number(e.ts):void 0,userMruReactions:e.userMruReactions||[],fromId:null,chatId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=146 PushUserMRUReactions:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:146,type:null}}}static decodeMessageReadCount(V){try{let l=(b(zl,V.payload).pairs||[]).map(t=>({chatId:t.chatId,messageId:t.messageId,count:t.count,chatterIds:t.chatterIds||[],unreadCount:t.unreadCount,readCount:t.readCount,type:t.type,lastUserReadInfo:t.lastUserReadInfo?{userId:t.lastUserReadInfo.userId,readTime:Number(t.lastUserReadInfo.readTime)}:null}));return{command:41,event:"messageReadCount",sid:V.sid,pairs:l,fromId:null,chatId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=41 PushMessageReadCountNotice:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:41,type:null}}}static decodeThreadReplyCount(V){try{let e=b(ZV,V.payload);return{command:92,event:"threadReplyCount",sid:V.sid,chatId:e.chatId,threadId:e.threadId,replyCount:e.replyCount,updateTime:Number(e.updateTime),fromId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=92 PushThreadReplyCountRequest:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:92,type:null}}}static decodeFeedCards(V){try{let e=b(hV,V.payload),l=(e.cards||[]).map(t=>({id:t.id,type:t.type,updateTime:Number(t.updateTime),feedType:t.feedType}));return{command:1002,event:"feedCards",sid:V.sid,feedType:e.type,cards:l,fromId:null,chatId:null,content:""}}catch(e){return N.error("[Proto] Failed to decode cmd=1002 PushFeedCardsRequest:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:1002,type:null}}}static decodeUrgent(V){try{let e=b(nV,V.payload);return{command:30002,event:"urgent",sid:V.sid,messageId:e.messageId,sendChatterId:e.sendChatterId,sendTime:Number(e.sendTime),chatId:e.chatId,urgentAckId:e.urgentAckId,urgentType:e.urgent?.type??null,version:Number(e.version),fromId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=30002 PushUrgentRequest:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:30002,type:null}}}static decodeUrgentAck(V){try{let e=b(sV,V.payload);return{command:30003,event:"urgentAck",sid:V.sid,messageId:e.messageId,ackChatterId:e.ackChatterId,urgentType:e.urgentType,chatId:e.chatId,urgentAckId:e.urgentAckId,cancelPopUpAck:e.cancelPopUpAck,fromId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=30003 PushUrgentAckRequest:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:30003,type:null}}}static decodeChatTopNotice(V){try{let e=b(VV,V.payload);return{command:1103704,event:"chatTopNotice",sid:V.sid,chatId:e.chatId,topNotice:e.topNotice?{noticeVersion:e.topNotice.noticeVersion,closed:e.topNotice.closed,operatorId:e.topNotice.operatorId,content:e.topNotice.content?{type:e.topNotice.content.type,messageId:e.topNotice.content.messageId,senderId:e.topNotice.content.senderId}:null}:null,fromId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=1103704 PushChatTopNotice:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:1103704,type:null}}}static decodeChatTabs(V){try{let e=b(lV,V.payload),l=(e.chatTabs||[]).map(t=>({id:t.id,name:t.name,tabType:t.tabType,chatId:t.chatId,sequence:t.sequence,payloadJson:t.payloadJson}));return{command:5916,event:"chatTabs",sid:V.sid,chatId:e.chatId,version:Number(e.version),tabs:l,fromId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=5916 PushChatTabs:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:5916,type:null}}}static decodeCalendarSync(V){try{let e=b(gV,V.payload);return{command:1020003,event:"calendarSync",sid:V.sid,calendarIds:e.calendarIds||[],fromId:null,chatId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=1020003 PushCalendarEventSyncNotification:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:1020003,type:null}}}static decodeMessagePreviews(V){try{let e=b(Pl,V.payload),l={};if(e.previewEntities)for(let[t,o]of Object.entries(e.previewEntities)){let R={};if(o.previewEntity)for(let[A,c]of Object.entries(o.previewEntity))R[A]={url:c.url,title:c.title,description:c.description,imageKey:c.imageKey};l[t]=R}return{command:1311,event:"messagePreviews",sid:V.sid,previewEntities:l,needLazyLoadPreviewIds:e.needLazyLoadPreviewIds||[],fromId:null,chatId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=1311 PushMessagePreviews:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:1311,type:null}}}static decodeThreadUpdated(V){try{let e=b(EV,V.payload);return{command:8110,event:"threadUpdated",sid:V.sid,chatId:e.chatId,threadId:e.threadId,updateTime:Number(e.updateTime),updateType:e.updateType,fromId:null,content:"",type:null}}catch(e){return N.error("[Proto] Failed to decode cmd=8110 PushThreadUpdatedNotice:",e.message),{fromId:null,chatId:null,content:"",sid:V.sid,command:8110,type:null}}}static roughProtobufParse(V){let e=V instanceof Buffer?V:Buffer.from(V),l={},t=0;for(;t<e.length;){let{value:o,bytesRead:R}=this.readVarintWithLength(e,t);if(!R)break;t+=R;let A=o&7,c=o>>3;if(A===0){let{value:a,bytesRead:n}=this.readVarintWithLength(e,t);t+=n,l[c]=a}else if(A===2){let{value:a,bytesRead:n}=this.readVarintWithLength(e,t);if(t+=n,t+a>e.length)break;let h=e.subarray(t,t+a);t+=a;try{let d=h.toString("utf8");/[\x00-\x08\x0B\x0C\x0E-\x1F]/.test(d)?l[c]=h:l[c]=d}catch{l[c]=h}}else if(A===1)t+=8;else if(A===5)t+=4;else break}return l}static extractImageInfo(V){let e=null,l=null,t=null;if(V.imageV2){let o=V.imageV2;e=o.imageKey,t=o.fsUnit,o.crypto&&(l=this.extractCryptoInfo(o.crypto))}if(!e&&V.image){let o=V.image,R=[o.origin,o.middle,o.thumbnail];for(let A of R)if(A?.key){e=A.key,t=A.fsUnit,A.crypto&&(l=this.extractCryptoInfo(A.crypto));break}}return{imageKey:e,cryptoInfo:l,fsUnit:t}}static extractCryptoInfo(V){if(!V.cipher)return null;let e=V.cipher;return{secret:e.secret?Buffer.from(e.secret):null,nonce:e.nonce?Buffer.from(e.nonce):null,additionalData:e.additionalData?Buffer.from(e.additionalData):Buffer.alloc(0),type:V.type}}static parsePostContent(V){let e={text:"",images:[]};if(!V.richText)return e.text=V.text||"",e;let l=V.richText,t=[];if(l.elements?.dictionary){for(let[o,R]of Object.entries(l.elements.dictionary))if(R.tag===1&&R.property){let A=this.parseTextProperty(R.property);A&&t.push(A)}else if(R.tag===2&&R.property){let A=this.parseImageProperty(R.property);A.imageKey&&e.images.push(A)}}return e.text=t.join("")||l.innerText||"",e}static parseCardContent(V){if(!V||V.length===0)return{summary:"[\u7A7A\u5361\u7247]"};let e=this.extractCardJson(V);if(e)try{let o=JSON.parse(e);return this.parseCardJson(o,e)}catch{}try{let o=Buffer.from(V).toString("utf8");if(o.startsWith("{")){let R=JSON.parse(o);return this.parseCardJson(R,o)}}catch{}let l=Buffer.from(V),t=l.indexOf("{");if(t>=0){let o=0,R=-1;for(let A=t;A<l.length;A++)if(l[A]===123&&o++,l[A]===125&&o--,o===0){R=A;break}if(R>t)try{let A=l.slice(t,R+1).toString("utf8"),c=JSON.parse(A);return this.parseCardJson(c,A)}catch{}}return{summary:"[\u5361\u7247\u6D88\u606F]",rawContentBase64:Buffer.from(V).toString("base64")}}static extractCardJson(V){let e=Buffer.from(V),l=0;for(;l<e.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(e,l);if(o===0)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(e,l);if(l+=a,l+c>e.length)break;let n=e.subarray(l,l+c);if(l+=c,c>2&&n[0]===123)try{let h=n.toString("utf8");return JSON.parse(h),h}catch{}if(c>10){let h=this.extractCardJson(n);if(h)return h}}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(e,l);l+=c}else if(R===5)l+=4;else if(R===1)l+=8;else break}return null}static parseCardJson(V,e){let l={json:V,rawJson:e,title:null,summary:null};if(l.title=this.pickFirstText([V.header?.title?.content,V.header?.property?.title?.content,V.header?.property?.title?.property?.content,V.header?.property?.mainTitle?.content,V.header?.property?.mainTitle?.property?.content,V.header?.property?.subtitle?.content,V.header?.property?.subtitle?.property?.content]),l.summary=this.pickFirstText([V.config?.summary?.content,V.config?.summary,V.summary?.content,V.summary]),!l.summary)if(l.title)l.summary=`[\u5361\u7247] ${l.title}`;else{let t=this.extractCardBodyText(V);l.summary=t?`[\u5361\u7247] ${t.substring(0,50)}`:"[\u5361\u7247\u6D88\u606F]"}return l}static extractCardBodyText(V){let e=[],l=new Set,t=R=>{if(typeof R!="string")return;let A=R.replace(/\s+/g," ").trim();A&&(/^https?:\/\//.test(A)||/^#[0-9a-fA-F]{6,8}$/.test(A)||/^(default|normal|small|medium|large)$/i.test(A)||l.has(A)||(l.add(A),e.push(A)))},o=(R,A=0)=>{if(!(!R||A>10||e.length>=8)){if(typeof R=="string"){t(R);return}if(Array.isArray(R)){for(let c of R)if(o(c,A+1),e.length>=8)break;return}typeof R=="object"&&(t(R.content),t(R.text),t(R.title),t(R.subtitle),R.text&&typeof R.text=="object"&&(t(R.text.content),t(R.text.text)),R.property&&typeof R.property=="object"&&(t(R.property.content),t(R.property.text),t(R.property.title),t(R.property.subtitle)),o(R.newBody,A+1),o(R.body,A+1),o(R.elements,A+1),o(R.fields,A+1),o(R.columns,A+1),o(R.actions,A+1),o(R.header,A+1),o(R.property,A+1),o(R.text,A+1),o(R.title,A+1),o(R.subtitle,A+1))}};return o(V),e.slice(0,3).join(" ")}static pickFirstText(V){for(let e of V){if(typeof e!="string")continue;let l=e.trim();if(l)return l}return null}static parseTextProperty(V){if(!V||V.length===0)return"";try{return b(te,V).content||""}catch{let l=Buffer.from(V),t=0;for(;t<l.length;){let o=l[t];if(o===void 0)break;let R=o&7,A=o>>3;if(t++,R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(l,t);if(t+=a,A===1)return l.subarray(t,t+c).toString("utf8");t+=c}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(l,t);t+=c}else break}return""}}static parseImageProperty(V){let e={imageKey:null,cryptoInfo:null};if(!V||V.length===0)return e;let l=Buffer.from(V),t=0;for(;t<l.length&&!(t>=l.length);){let{value:o,bytesRead:R}=this.readVarintWithLength(l,t);if(R===0)break;t+=R;let A=o&7,c=o>>3;if(A===2){let{value:a,bytesRead:n}=this.readVarintWithLength(l,t);t+=n;let h=l.subarray(t,t+a);if(t+=a,c===2)e.imageKey=h.toString("utf8");else if(c===17)try{let d=b(Be,h);d.crypto&&(e.cryptoInfo=this.extractCryptoInfo(d.crypto))}catch{let E=this.extractCryptoFromBytes(h);E&&(e.cryptoInfo=E)}if(a>10&&c!==17)try{let d=b(Be,h);d.crypto&&(e.cryptoInfo=this.extractCryptoInfo(d.crypto))}catch{let E=this.extractCryptoFromBytes(h);E&&(e.cryptoInfo=E)}}else if(A===0){let{bytesRead:a}=this.readVarintWithLength(l,t);t+=a}else break}if(!e.imageKey){let o=l.toString("utf8"),R=this.extractImageKeysFromString(o);R.length>0&&(e.imageKey=R[0])}return e.cryptoInfo||(e.cryptoInfo=this.extractCryptoFromBytes(l)),e}static parseTextMessageContent(V){let e=Buffer.from(V),l=0,t="",o=null;for(;l<e.length&&!(l>=e.length);){let{value:R,bytesRead:A}=this.readVarintWithLength(e,l);if(A===0)break;l+=A;let c=R&7,a=R>>3;if(c===2){let{value:n,bytesRead:h}=this.readVarintWithLength(e,l);if(l+=h,l+n>e.length)break;let d=e.subarray(l,l+n);l+=n,a===1&&n>0?t=d.toString("utf8"):a===3&&(o=d)}else if(c===0){let{bytesRead:n}=this.readVarintWithLength(e,l);l+=n}else break}return t||(o?this.parseRichTextFromBytes(o):"")}static parseRichTextFromBytes(V){let e=0,l="",t=null;for(;e<V.length&&!(e>=V.length);){let{value:o,bytesRead:R}=this.readVarintWithLength(V,e);if(R===0)break;e+=R;let A=o&7,c=o>>3;if(A===2){let{value:a,bytesRead:n}=this.readVarintWithLength(V,e);if(e+=n,e+a>V.length)break;let h=V.subarray(e,e+a);e+=a,c===2&&a>0?l=h.toString("utf8"):c===3&&(t=h)}else if(A===0){let{bytesRead:a}=this.readVarintWithLength(V,e);e+=a}else break}return l||(t?this.extractTextFromElementsBytes(t):"")}static extractTextFromElementsBytes(V){let e=[],l=0;for(;l<V.length&&!(l>=V.length);){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(o===0)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;let n=V.subarray(l,l+c);if(l+=c,A===1){let h=this.extractTextFromMapEntry(n);h&&e.push(h)}}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(V,l);l+=c}else break}return e.join("")}static extractTextFromMapEntry(V){let e=0,l=null;for(;e<V.length&&!(e>=V.length);){let{value:t,bytesRead:o}=this.readVarintWithLength(V,e);if(o===0)break;e+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,e);if(e+=a,e+c>V.length)break;let n=V.subarray(e,e+c);e+=c,A===2&&(l=n)}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(V,e);e+=c}else break}return l?this.extractTextFromRichTextElement(l):""}static extractTextFromRichTextElement(V){let e=0,l=0,t=null;for(;e<V.length&&!(e>=V.length);){let{value:o,bytesRead:R}=this.readVarintWithLength(V,e);if(R===0)break;e+=R;let A=o&7,c=o>>3;if(A===0){let{value:a,bytesRead:n}=this.readVarintWithLength(V,e);e+=n,c===1&&(l=a)}else if(A===2){let{value:a,bytesRead:n}=this.readVarintWithLength(V,e);if(e+=n,e+a>V.length)break;let h=V.subarray(e,e+a);e+=a,c===3&&(t=h)}else break}return l===1&&t?this.parseTextPropertyBytes(t):""}static parseTextPropertyBytes(V){let e=0;for(;e<V.length&&!(e>=V.length);){let{value:l,bytesRead:t}=this.readVarintWithLength(V,e);if(t===0)break;e+=t;let o=l&7,R=l>>3;if(o===2){let{value:A,bytesRead:c}=this.readVarintWithLength(V,e);if(e+=c,e+A>V.length)break;let a=V.subarray(e,e+A);if(e+=A,R===1)return a.toString("utf8")}else if(o===0){let{bytesRead:A}=this.readVarintWithLength(V,e);e+=A}else break}return""}static tryDecodeTextFromBytes(V){if(!V||V.length===0)return"";let e=Buffer.from(V),l=0;for(;l<e.length&&!(l>=e.length);){let{value:t,bytesRead:o}=this.readVarintWithLength(e,l);if(o===0)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(e,l);if(l+=a,l+c>e.length)break;let n=e.subarray(l,l+c);if(l+=c,A===1&&c>0)try{let h=n.toString("utf8");if(h&&!/[\x00-\x08\x0B\x0C\x0E-\x1F]/.test(h))return h}catch{}if(A===14&&c>0){let h=this.tryExtractInnerText(n);if(h)return h}}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(e,l);l+=c}else break}return""}static tryExtractInnerText(V){let e=0;for(;e<V.length&&!(e>=V.length);){let{value:l,bytesRead:t}=this.readVarintWithLength(V,e);if(t===0)break;e+=t;let o=l&7,R=l>>3;if(o===2){let{value:A,bytesRead:c}=this.readVarintWithLength(V,e);if(e+=c,e+A>V.length)break;let a=V.subarray(e,e+A);if(e+=A,R===2&&A>0)try{let n=a.toString("utf8");if(n&&!/[\x00-\x08\x0B\x0C\x0E-\x1F]/.test(n))return n}catch{}}else if(o===0){let{bytesRead:A}=this.readVarintWithLength(V,e);e+=A}else break}return""}static readVarintWithLength(V,e){let l=0,t=0,o=0,R;do R=V[e+o],t<28?l|=(R&127)<<t:l+=(R&127)*2**t,o++,t+=7;while(R&128);return{value:l,bytesRead:o}}static extractCryptoFromBytes(V,e=0){if(!V||V.length===0||e>6)return null;let l=Buffer.from(V);try{let o=b(Zl,l),R=this.extractCryptoInfo(o);if(R?.secret&&R?.nonce)return R}catch{}try{let o=b(Be,l);if(o?.crypto){let R=this.extractCryptoInfo(o.crypto);if(R?.secret&&R?.nonce)return R}}catch{}try{let o=b(fl,l);if(o?.crypto){let R=this.extractCryptoInfo(o.crypto);if(R?.secret&&R?.nonce)return R}}catch{}let t=0;for(;t<l.length;){let{value:o,bytesRead:R}=this.readVarintWithLength(l,t);if(!R)break;t+=R;let A=o&7;if(A===2){let{value:c,bytesRead:a}=this.readVarintWithLength(l,t);if(t+=a,c<0||t+c>l.length)break;let n=l.subarray(t,t+c);t+=c;let h=this.extractCryptoFromBytes(n,e+1);if(h?.secret&&h?.nonce)return h}else if(A===0){let{bytesRead:c}=this.readVarintWithLength(l,t);t+=c}else if(A===1)t+=8;else if(A===5)t+=4;else break}return null}static isValidImageCryptoInfo(V){if(!V?.secret||!V?.nonce)return!1;let e=Buffer.from(V.secret).length,l=Buffer.from(V.nonce).length;return e===32&&l===12}static getCryptoFingerprint(V){if(!this.isValidImageCryptoInfo(V))return"";let e=Buffer.from(V.secret).toString("hex"),l=Buffer.from(V.nonce).toString("hex");return e.slice(0,16)+":"+l.slice(0,8)}static extractDirectCryptoInfo(V){if(!V||V.length===0)return null;try{let e=b(Zl,V),l=this.extractCryptoInfo(e);if(this.isValidImageCryptoInfo(l))return l}catch{}return null}static collectCryptoBlocksFromPayload(V,e=0,l=0,t=10,o=[]){if(!V||l>t)return o;let R=V instanceof Buffer?V:Buffer.from(V);if(R.length===0)return o;let A=0;for(;A<R.length;){let{value:c,bytesRead:a}=this.readVarintWithLength(R,A);if(!a)break;A+=a;let n=c&7;if(n===2){let{value:h,bytesRead:d}=this.readVarintWithLength(R,A);if(A+=d,h<0||A+h>R.length)break;let E=A,g=A+h,X=R.subarray(E,g),G=this.extractDirectCryptoInfo(X);G&&o.push({offset:e+E,end:e+g,cryptoInfo:G,fingerprint:this.getCryptoFingerprint(G)}),this.collectCryptoBlocksFromPayload(X,e+E,l+1,t,o),A=g}else if(n===0){let{bytesRead:h}=this.readVarintWithLength(R,A);if(!h)break;A+=h}else if(n===1)A+=8;else if(n===5)A+=4;else break}return o}static findImageKeyOccurrencesInBuffer(V,e){let l=[];for(let t of e){let o=0;for(;o<V.length;){let R=V.indexOf(t,o,"utf8");if(R===-1)break;l.push({imageKey:t,offset:R,end:R+Buffer.byteLength(t,"utf8")}),o=R+1}}return l.sort((t,o)=>t.offset-o.offset)}static cacheImageCryptoFromCmd77Payload(V){if(!V||V.length===0)return 0;let e=V instanceof Buffer?V:Buffer.from(V),l=this.extractImageKeysFromString(e.toString("utf8"));if(l.length===0)return 0;let t=this.findImageKeyOccurrencesInBuffer(e,l);if(t.length===0)return 0;let o=this.collectCryptoBlocksFromPayload(e);if(o.length===0)return 0;let R=new Map;for(let n of o){let h=n.offset+":"+n.fingerprint;R.has(h)||R.set(h,n)}let A=Array.from(R.values()),c=new Map;for(let n of t){let h=A.filter(W=>{let m=W.offset-n.end;return m>=0&&m<=2048}),d=h.length>0?h:A.filter(W=>Math.abs(W.offset-n.end)<=512);if(d.length===0)continue;let E=null;for(let W of d){let m=Math.abs(W.offset-n.end),r=W.offset>=n.end?0:256,i=m+r;(!E||i<E.score)&&(E={block:W,score:i})}if(!E)continue;let g=E.block.fingerprint;if(!g)continue;let X=c.get(n.imageKey);X||(X=new Map,c.set(n.imageKey,X));let G=X.get(g)||{count:0,bestScore:Number.MAX_SAFE_INTEGER,cryptoInfo:E.block.cryptoInfo};G.count+=1,G.bestScore=Math.min(G.bestScore,E.score),X.set(g,G)}let a=0;for(let[n,h]of c.entries()){let d=Array.from(h.entries());if(d.length===0)continue;d.sort((g,X)=>{let[,G]=g,[,W]=X;return W.count!==G.count?W.count-G.count:G.bestScore-W.bestScore});let[,E]=d[0];this.isValidImageCryptoInfo(E.cryptoInfo)&&(Bl(n,E.cryptoInfo),a+=1)}return a}static cacheImageCryptoFromGatewayResponseBuffer(V){if(!V||V.length===0)return 0;try{let e=V instanceof Uint8Array?V:new Uint8Array(V),l=b(S,e);return!l.payload||l.payload.length===0?0:this.cacheImageCryptoFromCmd77Payload(l.payload)}catch{return 0}}static cacheImageCryptoFromCmd77ResponseBuffer(V){return this.cacheImageCryptoFromGatewayResponseBuffer(V)}static readVarint(V,e){let l=0,t=0,o;do o=V[e],l|=(o&127)<<t,e++,t+=7;while(o&128);return l}static varintLength(V,e){let l=0;for(;V[e+l]&128;)l++;return l+1}static buildReplyRequest(V,e,l,t={}){let{rootId:o,parentId:R}=t,A=_(),c=_(),a=B(te,{content:V}),n=B(ue,{text:V,richText:{elementIds:[c],innerText:V,elements:{dictionary:{[c]:{tag:1,property:C(te,a)}}}}}),h=B(Ce,{type:4,chatId:l,rootId:o||"",parentId:R||"",cid:A,isNotified:!0,sendToChat:!1,version:1,isThreadGroupTopic:!1,content:n}),d=B(S,{payloadType:1,cmd:5,cid:e,payload:C(Ce,h)});return Buffer.from(C(S,d))}static buildAckPacket(V){let e=Date.now(),l=B(S,{payloadType:1,cmd:1,sid:V}),t=B(He,{seqid:WV.parse(e),logid:WV.parse(e),service:1,method:1,headers:[{key:"x-request-time",value:`${e}000`}],payloadType:"pb",payload:C(S,l)});return Buffer.from(C(He,t))}static buildGetUserProfileRequest(V,e){let l=[];l.push(8,1);let t=new TextEncoder().encode(e);l.push(18),F(l,t.length),l.push(...t),l.push(40,2),l.push(88,1),l.push(96,1),l.push(112,1);let o=new Uint8Array(l),R=B(S,{payloadType:1,cmd:5031,cid:V,payload:o});return Buffer.from(C(S,R))}static decodeGetUserProfileResponse(V){let e=b(S,V);if(!e.payload)return null;let l=Buffer.from(e.payload);return this.parseUserProfilePayload(l)}static parseUserProfilePayload(V){let e={userId:null,name:null,enName:null,avatarUrl:null,avatarKey:null,tenantId:null},l=V.toString("utf8"),t=l.match(/\d{19}/g);if(t&&(e.userId=t[0]),e.userId){let A=Buffer.from(e.userId),c=0,a=0;for(;(c=V.indexOf(A,a))!==-1;){if(c>=2&&V[c-2]===10&&V[c-1]===19){let n=c+A.length;if(n<V.length&&V[n]===18){let h=V[n+1];if(h>0&&h<=30&&n+2+h<=V.length){let d=V.subarray(n+2,n+2+h);try{let E=d.toString("utf8");(/^[\u4e00-\u9fa5]{2,10}$/.test(E)||/^[a-zA-Z\s]+$/.test(E))&&(e.name=E)}catch{}}}break}a=c+1}}if(e.userId){let A=Buffer.from(e.userId),c=V.lastIndexOf(A);if(c>0){let a=Math.min(V.length,c+2e3),d=V.subarray(c,a).toString("utf8").match(/([a-z]+(?: [a-z]+)+)/);d&&d[0].length<30&&(e.enName=d[0])}}let o=l.match(/https:\/\/s\d-imfile\.feishucdn\.com\/static-resource\/v\d\/[^\s~?]+/);o&&(e.avatarUrl=o[0]);let R=l.match(/v3_[a-z0-9]{4}_[a-f0-9-]+/i);return R&&(e.avatarKey=R[0]),e}static buildGetUserInfoByIdRequest(V,e){let l=[],t=Buffer.from(e,"utf-8");l.push(10,t.length,...t),l.push(16,1);let o=new Uint8Array(l),R=B(S,{payloadType:1,cmd:46,cid:V,payload:o});return Buffer.from(C(S,R))}static decodeGetUserInfoByIdResponse(V){let e=b(S,V);if(!e.payload)return{success:!1,error:"No payload in response"};let l=Buffer.from(e.payload);return this.parseUserInfoPayload(l)}static buildGetUserProfileCardRequest(V,e){let l=BigInt(e),t=[8];this.pushVarintBigInt(t,l);let o=new Uint8Array(t),R=B(S,{payloadType:1,cmd:5017,cid:V,payload:o});return Buffer.from(C(S,R))}static decodeGetUserProfileCardResponse(V){let e=b(S,V);if(!e.payload)return{success:!1,error:"No payload in response"};if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l=Buffer.from(e.payload);return this.parseUserProfileCardPayload(l)}static parseUserProfileCardPayload(V){let e={success:!0,orgName:null,description:null,email:null,displayName:null,displayNameLocalized:null,avatarKey:null,profileUserId:null,alias:null,profileFieldPolicies:[],raw:V},l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(!o)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;let n=V.subarray(l,l+c);if(l+=c,A===2)e.orgName=n.toString("utf8");else if(A===3)e.description=n.toString("utf8");else if(A===5)e.email=n.toString("utf8");else if(A===7)e.displayName=n.toString("utf8");else if(A===11)e.displayNameLocalized=n.toString("utf8");else if(A===19)e.avatarKey=n.toString("utf8");else if(A===22)e.profileUserId=n.toString("utf8");else if(A===24)e.alias=n.toString("utf8");else if(A===50){let h=this.parseUserProfileFieldPolicy(n);h&&e.profileFieldPolicies.push(h)}}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(V,l);l+=c}else if(R===1)l+=8;else if(R===5)l+=4;else break}return e}static parseUserProfileFieldPolicy(V){let e={key:null,locale:null,visible:null,editable:null,mode:null},l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(!o)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;let n=V.subarray(l,l+c);l+=c,A===1?e.key=n.toString("utf8"):A===5&&(e.locale=n.toString("utf8"))}else if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a,A===3?e.visible=c:A===4?e.editable=c:A===6&&(e.mode=c)}else if(R===1)l+=8;else if(R===5)l+=4;else break}return e.key?e:null}static parseUserInfoPayload(V){let e={userId:null,name:null,isBot:!1,userType:1,avatarKey:null};try{let l=V.toString("utf8"),t=l.match(/\d{19}/);t&&(e.userId=t[0]);let o=Buffer.from([10,3,98,111,116]);if(V.includes(o)&&(e.isBot=!0,e.userType=2),e.userId){let A=Buffer.from(e.userId),c=V.indexOf(A);for(;c!==-1;){let a=c+A.length;if(a<V.length&&V[a]===18){let n=V[a+1];if(n>0&&n<=50&&a+2+n<=V.length){let h=V.subarray(a+2,a+2+n);try{let d=h.toString("utf8");if(d.length>0&&d.length<=30){e.name=d;break}}catch{}}}c=V.indexOf(A,c+1)}}let R=l.match(/v3_[a-z0-9]{4}_[a-f0-9-]+/i);if(R)e.avatarKey=R[0];else{let A=l.match(/[a-f0-9]{20,}/);A&&(e.avatarKey=A[0])}}catch(l){return{success:!1,error:l.message}}return{success:!0,...e}}static RSVP_STATUS={ACCEPT:1,DECLINE:2,TENTATIVE:3};static REPLY_CALENDAR_EVENT_INVITATION_REPLY_TYPES={ACCEPT:Ie.ACCEPT,DECLINE:Ie.DECLINE,TENTATIVE:Ie.TENTATIVE,DELETE:Ie.DELETE,NEEDS_ACTION:Ie.NEEDS_ACTION};static buildReplyCalendarEventInvitationRequest(V,e,l,t={}){let o=B(FV,{calendarEventKey:B(lt,{uniqueKey:e.uniqueKey,calendarId:e.calendarId,originalTime:BigInt(e.originalTime)}),replyType:l,quitMeeting:t.quitMeeting??!1,needsBriefEvents:t.needsBriefEvents??!1,useAttendeePageToken:t.useAttendeePageToken??!1,...t.rsvpCommentInfo?{rsvpCommentInfo:B($V,{replyCommentId:t.rsvpCommentInfo.replyCommentId??"",comment:t.rsvpCommentInfo.comment??"",inviteOperatorId:t.rsvpCommentInfo.inviteOperatorId??""})}:{}}),R=B(S,{payloadType:1,cmd:1020002,cid:V,payload:C(FV,o)});return Buffer.from(C(S,R))}static buildCalendarRsvpRequest(V,e,l,t){let o=[],R=[],A=new TextEncoder().encode(e);R.push(10),F(R,A.length),R.push(...A);let c=new TextEncoder().encode(l);R.push(18),F(R,c.length),R.push(...c),R.push(24,0);let a=new Uint8Array(R);o.push(10),F(o,a.length),o.push(...a),o.push(16),o.push(t),o.push(40,1),o.push(48,1);let n=new Uint8Array(o),h=B(S,{payloadType:1,cmd:1020002,cid:V,payload:n});return Buffer.from(C(S,h))}static buildCalendarEventDetailRequest(V,e,l=0){let t=[],o=[],R=new TextEncoder().encode(e);if(o.push(10),F(o,R.length),o.push(...R),l!==0){o.push(16);let n=l<<1^l>>31;this.pushVarint(o,n)}o.push(32,0),o.push(40,1),o.push(48,3);let A=new Uint8Array(o);t.push(10),F(t,A.length),t.push(...A);let c=new Uint8Array(t),a=B(S,{payloadType:1,cmd:1010048,cid:V,payload:c});return Buffer.from(C(S,a))}static buildGetBusyUserRequest(V,e,l,t,o={}){let R=[];for(let c of e||[]){let a=new TextEncoder().encode(String(c));R.push(10),F(R,a.length),R.push(...a)}if(R.push(16),this.pushVarintBigInt(R,BigInt(l)),R.push(24),this.pushVarintBigInt(R,BigInt(t)),o.uid){let c=new TextEncoder().encode(String(o.uid));R.push(34),F(R,c.length),R.push(...c)}o.originalTime!==void 0&&o.originalTime!==null&&(R.push(40),this.pushVarintBigInt(R,BigInt(o.originalTime))),o.bidirectionalSyncOccupyBusy!==void 0&&R.push(48,o.bidirectionalSyncOccupyBusy?1:0),o.bidirectionalSyncOptimizeFg!==void 0&&R.push(56,o.bidirectionalSyncOptimizeFg?1:0);let A=B(S,{payloadType:1,cmd:1010020,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,A))}static buildCreateCalendarEventRequest(V,e,l={},t={}){let o=Vl(e,"calendarId"),{start:R,end:A}=nR(l.startTime,l.endTime,"startTime","endTime"),c=Xe(l.timezone,l.startTimezone,l.endTimezone),a=l.uniqueKey||GV.randomUUID(),n=l.originalTime===void 0||l.originalTime===null||l.originalTime===""?R:BV(l.originalTime,"originalTime"),h=String(Xe(l.eventId,"0")),d=String(Xe(l.creatorCalendarId,o)),E=String(Xe(l.organizerCalendarId,o)),g=ul(l.reminders).map((Q,Y)=>({calendarEventId:String(Xe(Q.calendarEventId,Q.calendar_event_id,"0")),minutes:AR(Q.minutes,mt(Y,"minutes")),method:ae(Q.method,_e,_e.default,mt(Y,"method"))})),X=[...ul(l.locations),...ul(l.location)].map((Q,Y)=>({name:Q.name??"",address:Q.address??"",type:ae(Q.type,qe,qe.ordinary,rV(Y,"type")),...Q.latitude!==void 0?{latitude:Wt(Q.latitude,rV(Y,"latitude"))}:{},...Q.longitude!==void 0?{longitude:Wt(Q.longitude,rV(Y,"longitude"))}:{}})),G=aR(l.attendees),W=B(we,{id:h,key:a,originalTime:n,calendarId:o,organizerCalendarId:E,creatorCalendarId:d,successorCalendarId:l.successorCalendarId??"0",summary:l.summary??"",rrule:l.rrule??"",startTime:R,endTime:A,status:ae(l.status,Oe,Oe.confirmed,"status"),source:l.source??et.PC_CLIENT,attendeeSource:Cl(l.attendeeSource??1,"attendeeSource"),isDeleted:!1,isAllDay:l.isAllDay??!1,isCrossTenant:l.isCrossTenant??!1,guestCanInvite:l.guestCanInvite??!0,guestCanSeeOtherGuests:l.guestCanSeeOtherGuests??!0,guestCanModify:l.guestCanModify??!1,selfAttendeeStatus:ae(l.selfAttendeeStatus,XV,XV.accept,"selfAttendeeStatus"),color:Cl(l.color??-1,"color"),version:BigInt(Cl(l.version??0,"version")),visibility:ae(l.visibility,je,je.default,"visibility"),isFree:l.isFree??!1,locations:X,reminders:g,...G.length>0?{attendees:G}:{},...l.description!==void 0||l.docsDescription!==void 0||l.docs_description!==void 0?{description:l.description??"",...l.docsDescription!==void 0||l.docs_description!==void 0?{docsDescription:l.docsDescription??l.docs_description}:{}}:{},...l.attachments?{attachments:l.attachments}:{},...l.videoConfig?{videoConfig:l.videoConfig}:{},...l.encryptionInfo?{encryptionInfo:l.encryptionInfo}:{},...ut(c)?{startTimezone:Xe(l.startTimezone,c),endTimezone:Xe(l.endTimezone,c)}:{}}),m=C(we,W),r=[];r.push(10),F(r,m.length),r.push(...m),t.notificationType!==void 0&&t.notificationType!==null&&t.notificationType!==""&&(r.push(16),this.pushVarint(r,ae(t.notificationType,Pe,Pe.default,"notificationType")));let i=B(S,{payloadType:1,cmd:1002003,cid:V,payload:new Uint8Array(r)});return Buffer.from(C(S,i))}static buildDeleteCalendarEventRequest(V,e,l,t={}){let o=[],R=t.deleteType??0,A=t.needNotification??!0,c=new TextEncoder().encode(String(e));o.push(10),F(o,c.length),o.push(...c);let a=new TextEncoder().encode(String(l));o.push(18),F(o,a.length),o.push(...a),o.push(24),this.pushVarint(o,Number(R)),o.push(32),this.pushVarint(o,A?1:0);let n=B(S,{payloadType:1,cmd:1002005,cid:V,payload:new Uint8Array(o)});return Buffer.from(C(S,n))}static buildUpdateCalendarEventRequest(V,e,l={}){let t=[],o=B(we,e),R=C(we,o);t.push(10),F(t,R.length),t.push(...R),l.span!==void 0&&(t.push(16),this.pushVarint(t,Number(l.span))),l.instanceStartTime!==void 0&&l.instanceStartTime!==null&&(t.push(24),this.pushVarintBigInt(t,BigInt(l.instanceStartTime))),l.notificationType!==void 0&&(t.push(32),this.pushVarint(t,Number(l.notificationType)));let A=B(S,{payloadType:1,cmd:1002004,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,A))}static buildWebListCalendarEventsRequest(V,e,l,t,o={}){let R=o.limit??100,A=[],c=new TextEncoder().encode(String(e));A.push(10),F(A,c.length),A.push(...c),A.push(16),this.pushVarintBigInt(A,BigInt(l)),A.push(24),this.pushVarintBigInt(A,BigInt(t)),A.push(40),this.pushVarintBigInt(A,BigInt(R));let a=[10];F(a,A.length),a.push(...A);let n=B(S,{payloadType:1,cmd:1002001,cid:V,payload:new Uint8Array(a)});return Buffer.from(C(S,n))}static buildCreateMeetingMinuteRequest(V,e,l,t={}){let o=[],R=t.originalTime??0,A=new TextEncoder().encode(String(e));o.push(10),F(o,A.length),o.push(...A);let c=new TextEncoder().encode(String(l));o.push(18),F(o,c.length),o.push(...c),o.push(24),this.pushVarintBigInt(o,BigInt(R));let a=B(S,{payloadType:1,cmd:1010028,cid:V,payload:new Uint8Array(o)});return Buffer.from(C(S,a))}static buildTransferCalendarEventRequest(V,e,l,t,o={}){let R=[],A=[],c=o.originalTime??0,a=o.transferFlag??1,n=new TextEncoder().encode(String(e));A.push(10),F(A,n.length),A.push(...n);let h=new TextEncoder().encode(String(l));A.push(18),F(A,h.length),A.push(...h),A.push(24),this.pushVarintBigInt(A,BigInt(c)),R.push(10),F(R,A.length),R.push(...A),R.push(16),this.pushVarintBigInt(R,BigInt.asUintN(32,BigInt(t))),R.push(24),this.pushVarintBigInt(R,BigInt(a));let d=B(S,{payloadType:1,cmd:1010022,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,d))}static buildWebShareCalendarEventRequest(V,e,l,t,o={}){let R=[],A=o.originalTime??0;for(let h of e)R.push(8),this.pushVarintBigInt(R,BigInt(h));let c=new TextEncoder().encode(String(l));R.push(18),F(R,c.length),R.push(...c);let a=new TextEncoder().encode(String(t));R.push(26),F(R,a.length),R.push(...a),R.push(32),this.pushVarintBigInt(R,BigInt(A));let n=B(S,{payloadType:1,cmd:1002012,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,n))}static buildUpgradeToMeetingRequest(V,e,l={}){let t=l.originalTime??0,o=[],R=new TextEncoder().encode(String(e.eventId));o.push(10),F(o,R.length),o.push(...R);let A=new TextEncoder().encode(String(e.uid));o.push(18),F(o,A.length),o.push(...A);let c=new TextEncoder().encode(String(e.calendarId));if(o.push(26),F(o,c.length),o.push(...c),o.push(32),this.pushVarintBigInt(o,BigInt(t)),e.creatorId!==void 0&&e.creatorId!==null){let E=new TextEncoder().encode(String(e.creatorId));o.push(42),F(o,E.length),o.push(...E)}if(e.organizerId!==void 0&&e.organizerId!==null){let E=new TextEncoder().encode(String(e.organizerId));o.push(50),F(o,E.length),o.push(...E)}o.push(64),this.pushVarintBigInt(o,BigInt(e.startTime));let a=new TextEncoder().encode(String(e.startTimezone));if(o.push(74),F(o,a.length),o.push(...a),o.push(80),this.pushVarintBigInt(o,BigInt(e.endTime)),e.endTimezone!==void 0&&e.endTimezone!==null){let E=new TextEncoder().encode(String(e.endTimezone));o.push(90),F(o,E.length),o.push(...E)}if(l.rrule){let E=new TextEncoder().encode(String(l.rrule));o.push(114),F(o,E.length),o.push(...E)}o.push(200,1),this.pushVarint(o,0);let n=new TextEncoder().encode(String(e.summary));o.push(234,1),F(o,n.length),o.push(...n);let h=[];h.push(10),F(h,o.length),h.push(...o),h.push(16),this.pushVarint(h,1),h.push(24),this.pushVarint(h,1);let d=B(S,{payloadType:1,cmd:1010014,cid:V,payload:new Uint8Array(h)});return Buffer.from(C(S,d))}static decodeUpgradeToMeetingResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let E=this.extractErrorMessage(e.payload);if(E)return{success:!1,error:E}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!1,error:"Empty response payload"};let l=this.parseProtobufFields(Buffer.from(e.payload)),t=null,o=null,R=null,A=l.find(E=>E.fieldNo===1&&E.wireType===2);if(A){let E=this.parseProtobufFields(A.data);t=this.getStringField(E,1),o=this.getStringField(E,2);let g=this.getVarintField(E,3,null);R=g!==null?g!==0:null}let c={},a=l.filter(E=>E.fieldNo===2&&E.wireType===2);for(let E of a){let g=this.parseProtobufFields(E.data),X=this.getStringField(g,1),G=this.getStringField(g,2);X&&(c[X]=G)}let n=[],h=null,d=l.find(E=>E.fieldNo===3&&E.wireType===2);if(d){let E=this.parseProtobufFields(d.data);h=this.getStringField(E,29);let g=E.filter(X=>X.fieldNo===26&&X.wireType===2);for(let X of g){let G=this.parseProtobufFields(X.data),W=this.getStringField(G,1),m=this.getStringField(G,2),r=this.getVarintField(G,6,null),i=this.getVarintField(G,23,null);m&&n.push({attendeeCalendarId:m,displayName:W,status:r,individualAttendeeType:i})}}return t?o?{success:!0,meetingId:t,meetingChatId:o,isFirstEntrance:R,eventMeetingMap:c,attendees:n,summary:h}:{success:!1,error:"Missing meetingChatId in response"}:{success:!1,error:"Missing meetingId in response"}}catch(e){let l=this.extractErrorMessage(V);return l?{success:!1,error:l}:{success:!1,error:e.message}}}static pushVarint(V,e){for(;e>127;)V.push(e&127|128),e>>>=7;V.push(e)}static pushVarintBigInt(V,e){let l=BigInt(e);for(;l>127n;)V.push(Number(l&0x7fn|0x80n)),l>>=7n;V.push(Number(l))}static decodeCalendarRsvpResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0){if(e.payload&&e.payload.length>0){let l=this.extractErrorMessage(e.payload);if(l)return{success:!1,error:l}}return{success:!1,error:`Status: ${e.status}`}}return{success:!0}}catch(e){let l=this.extractErrorMessage(V);return l?{success:!1,error:l}:{success:!1,error:e.message}}}static decodeReplyCalendarEventInvitationResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,data:{},rsvpCommentFailed:[]};let l=b(Ft,e.payload),t=this._normalizeProtoValue(l);return{success:!0,data:t,calendarEvent:t.calendarEvent,rsvpCommentFailed:t.rsvpCommentFailed||[]}}catch(e){return{success:!1,error:e.message}}}static extractErrorMessage(V){try{if(V[0]===10&&V.length>2){let e=V[1];if(e>0&&e<V.length-2){let l=Buffer.from(V.slice(2,2+e)).toString("utf8");if(/^[A-Za-z][A-Za-z0-9_]+$/.test(l))return l}}}catch{}return null}static decodeCalendarEventDetailResponse(V){try{let e=b(S,V);return!e.payload||e.payload.length<10?{success:!1,error:"Empty payload",events:[]}:{success:!0,events:this.parseCalendarEventPayload(Buffer.from(e.payload))}}catch(e){return{success:!1,error:e.message,events:[]}}}static decodeGetBusyUserResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,calendarBusyMap:{}};let l=this.parseProtobufFields(Buffer.from(e.payload)),t={};for(let o of l){if(o.fieldNo!==1||o.wireType!==2)continue;let R=this.parseProtobufFields(o.data),A=this.getStringField(R,1)||"",c=R.find(a=>a.fieldNo===2&&a.wireType===0);!A||!c||(t[A]=!!c.val)}return{success:!0,calendarBusyMap:t}}catch(e){return{success:!1,error:e.message}}}static decodeCreateCalendarEventResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let l=this.extractErrorMessage(e.payload);if(l)return{success:!1,error:l}}return{success:!1,error:`Packet status: ${e.status}`}}return{success:!0,data:{}}}catch(e){let l=this.extractErrorMessage(V);return l?{success:!1,error:l}:{success:!1,error:e.message}}}static decodeDeleteCalendarEventResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let R=this.extractErrorMessage(e.payload);if(R)return{success:!1,error:R}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,data:{}};let l=this.parseProtobufFields(Buffer.from(e.payload)),t=this.getBytesField(l,5);if(!t)return{success:!0,data:{}};let o=Buffer.from(t).toString("utf8");try{return{success:!0,data:JSON.parse(o)}}catch{return{success:!0,data:{raw:o}}}}catch(e){let l=this.extractErrorMessage(V);return l?{success:!1,error:l}:{success:!1,error:e.message}}}static decodeUpdateCalendarEventResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let l=this.extractErrorMessage(e.payload);if(l)return{success:!1,error:l}}return{success:!1,error:`Packet status: ${e.status}`}}return{success:!0,data:{}}}catch(e){return{success:!1,error:e.message}}}static decodeWebListCalendarEventsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let c=this.extractErrorMessage(e.payload);if(c)return{success:!1,error:c}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,calendarId:"",events:[]};let l=this.parseProtobufFields(Buffer.from(e.payload)),t=this.getBytesField(l,1);if(!t)return{success:!0,calendarId:"",events:[]};let o=this.parseProtobufFields(Buffer.from(t)),R=this.getStringField(o,1)||"",A=[];for(let c of o){if(c.fieldNo!==2||c.wireType!==2)continue;let a=this.parseProtobufFields(Buffer.from(c.data));A.push({eventKey:this.getStringField(a,1)||"",uid:this.getStringField(a,2)||"",startTime:this.getVarintField(a,25,0),startTimezone:this.getStringField(a,26)||"",endTime:this.getVarintField(a,27,0),endTimezone:this.getStringField(a,28)||"",summary:this.getStringField(a,29)||""})}return{success:!0,calendarId:R,events:A}}catch(e){let l=this.extractErrorMessage(V);return l?{success:!1,error:l}:{success:!1,error:e.message}}}static decodeCreateMeetingMinuteResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!1,error:"Empty response payload"};let l=this.parseProtobufFields(Buffer.from(e.payload)),t=this.getStringField(l,1);return t?{success:!0,meetingMinuteUrl:t}:{success:!1,error:"Missing meeting minute URL in response"}}catch(e){let l=this.extractErrorMessage(V);return l?{success:!1,error:l}:{success:!1,error:e.message}}}static decodeTransferCalendarEventResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}return!e.payload||e.payload.length===0?{success:!0,events:[]}:{success:!0,events:this.parseProtobufFields(Buffer.from(e.payload)).filter(o=>o.fieldNo===1&&o.wireType===2).map(o=>this.parseTransferredCalendarEvent(o.data))}}catch(e){let l=this.extractErrorMessage(V);return l?{success:!1,error:l}:{success:!1,error:e.message}}}static decodeWebShareCalendarEventResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}return!e.payload||e.payload.length===0?{success:!0,sharedFailedChats:[]}:{success:!0,sharedFailedChats:this.parseProtobufFields(Buffer.from(e.payload)).filter(o=>o.fieldNo===1&&o.wireType===0).map(o=>Number(o.val))}}catch(e){let l=this.extractErrorMessage(V);return l?{success:!1,error:l}:{success:!1,error:e.message}}}static parseCalendarEventPayload(V){let e=[],l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(o===0)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;let n=V.subarray(l,l+c);if(l+=c,A===2){let h=this.parseCalendarEvent(n);h&&e.push(h)}}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(V,l);l+=c}else break}return e}static parseCalendarEvent(V){let e={userId:null,eventId:null,title:null,startTime:null,endTime:null,timezone:null,organizer:null,attendees:[],meetingUrl:null,rsvpStatus:null},l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(o===0)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;let n=V.subarray(l,l+c);if(l+=c,A===1)e.userId=n.toString("utf8");else if(A===2)e.eventId=n.toString("utf8");else if(A===4)this.parseEventDetails(n,e);else if(A===5){let h=this.parseRsvpInfo(n);h&&(e.rsvpStatus=h.status)}else if(A===20){let h=this.parseAttendeeInfo(n);h&&e.attendees.push(h)}}else if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a}else break}return e.eventId||e.title?e:null}static parseTransferredCalendarEvent(V){let e=this.parseProtobufFields(V);return{eventKey:this.getStringField(e,1)||"",summary:this.getStringField(e,29)||"",description:this.getStringField(e,30)||"",startTime:this.getVarintField(e,8,null),timezone:this.getStringField(e,9)||"",endTime:this.getVarintField(e,10,null),meetingMinuteUrl:this.getStringField(e,51)||""}}static parseEventDetails(V,e){let l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(o===0)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;let n=V.subarray(l,l+c);l+=c,A===8?e.title=n.toString("utf8"):A===12&&(e.timezone=n.toString("utf8"))}else if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a,A===11?e.startTime=c:A===13&&(e.endTime=c)}else break}}static parseRsvpInfo(V){let e={userId:null,status:null},l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(o===0)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;let n=V.subarray(l,l+c);l+=c,A===2&&(e.userId=n.toString("utf8"))}else if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a,A===3&&(e.status=c)}else break}return e}static parseAttendeeInfo(V){let e={name:null,userId:null,rsvpStatus:null,type:null},l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(o===0)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;let n=V.subarray(l,l+c);if(l+=c,A===1)e.name=n.toString("utf8");else if(A===2)e.userId=n.toString("utf8");else if(A===11){let h=this.extractTypeFromNested(n);h&&(e.type=h)}}else if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a,A===3&&(e.rsvpStatus=c)}else break}return e.name||e.userId?e:null}static extractTypeFromNested(V){let e=0;for(;e<V.length;){let{value:l,bytesRead:t}=this.readVarintWithLength(V,e);if(t===0)break;e+=t;let o=l&7,R=l>>3;if(o===2){let{value:A,bytesRead:c}=this.readVarintWithLength(V,e);if(e+=c,e+A>V.length)break;let a=V.subarray(e,e+A);if(e+=A,R===2)return a.toString("utf8")}else if(o===0){let{bytesRead:A}=this.readVarintWithLength(V,e);e+=A}else break}return null}static buildPullSmartReplyResourceRequestPayload(V){let e=[...new Set((V||[]).map(t=>String(t||"").trim()).filter(t=>/^img_v[23]_/.test(t)))],l=[];for(let t of e){let o=Buffer.from(t,"utf8");l.push(10),F(l,o.length),l.push(...o)}return new Uint8Array(l)}static buildCmd77PullSmartReplyResourceRequest(V,e,l={}){let t=this.buildPullSmartReplyResourceRequestPayload(e),o=typeof l.subRequestId=="string"&&l.subRequestId.trim()?l.subRequestId.trim():(globalThis.crypto?.randomUUID?.()||_()).toUpperCase(),R=[];R.push(16,1),R.push(24),F(R,1105047),R.push(42),F(R,t.length),R.push(...t);let A=Buffer.from(o,"utf8");R.push(50),F(R,A.length),R.push(...A);let c=[10];F(c,R.length),c.push(...R);let a=B(S,{payloadType:1,cmd:77,cid:V,payload:new Uint8Array(c)});return Buffer.from(C(S,a))}static buildPullSmartReplyResourceRequest(V,e){let l=this.buildPullSmartReplyResourceRequestPayload(e),t=B(S,{payloadType:1,cmd:1105047,cid:V,payload:l});return Buffer.from(C(S,t))}static buildGetChatHistoryRequest(V,e,l){let t=B(gl,{chatId:e,positions:l,flag1:1,flag2:1,flag3:2,flag4:1}),o=B(S,{payloadType:1,cmd:43,cid:V,payload:C(gl,t)});return Buffer.from(C(S,o))}static buildEmojiReactionRequest(V,e,l){let t=Buffer.from(e,"utf-8"),o=Buffer.from(l,"utf-8"),R=[];R.push(10),F(R,t.length),R.push(...t),R.push(18),F(R,o.length),R.push(...o),R.push(24,1);let A=B(S,{payloadType:1,cmd:25,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,A))}static decodeEmojiReactionResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildRemoveEmojiReactionRequest(V,e,l){let t=Buffer.from(e,"utf-8"),o=Buffer.from(l,"utf-8"),R=[];R.push(10),F(R,t.length),R.push(...t),R.push(18),F(R,o.length),R.push(...o),R.push(24,1);let A=B(S,{payloadType:1,cmd:26,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,A))}static decodeRemoveEmojiReactionResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildGetChatMetaRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[10];F(t,l.length),t.push(...l);let o=B(S,{payloadType:1,cmd:64,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,o))}static decodeGetChatMetaResponse(V){try{let e=b(S,V);if(!e.payload||e.payload.length===0)return{success:!1,error:"Empty payload"};let l=Buffer.from(e.payload),t=this.extractLengthDelimitedField(l,1);if(!t)return{success:!1,error:"No chat meta entry in payload"};let o=Buffer.from(t),R=this.extractLengthDelimitedField(o,1),A=this.extractLengthDelimitedField(o,2);if(!A)return{success:!1,error:"No chat bytes in chat meta entry"};let c=b(Hl,A);return{success:!0,chat:{id:c.id||(R?Buffer.from(R).toString("utf8"):""),type:c.type,name:c.name||"",ownerId:c.ownerId||"",lastMessageId:c.lastMessageId||"",lastVisibleMessageId:c.lastVisibleMessageId||"",lastMessagePosition:c.lastMessagePosition||0,lastVisibleMessagePosition:c.lastVisibleMessagePosition||0,readPosition:c.readPosition||0,readPositionBadgeCount:c.readPositionBadgeCount||0,lastMessagePositionBadgeCount:c.lastMessagePositionBadgeCount||0,newMessageCount:c.newMessageCount||0,noBadgedNewMessageCount:c.noBadgedNewMessageCount||0,firstChatMessagePosition:c.firstChatMessagePosition||0,updateTime:Number(c.updateTime||0n),updateTimeMs:Number(c.updateTimeMs||0n),createTime:Number(c.createTime||0n),memberCount:c.memberCount||0,userCount:c.userCount||0,role:c.role,status:c.status,chatMode:c.chatMode,allowPost:c.allowPost}}}catch(e){return{success:!1,error:e.message}}}static extractLengthDelimitedField(V,e){let l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(!o)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;let n=V.subarray(l,l+c);if(l+=c,A===e)return n}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(V,l);l+=c}else if(R===1)l+=8;else if(R===5)l+=4;else break}return null}static tryDecodeAsUtf8(V){if(!V||V.length===0)return"";try{let e=Buffer.from(V).toString("utf8");return e.includes("\uFFFD")?"":e}catch{return""}}static extractImageKeysFromString(V){let e=String(V||""),l=e.match(/img_v3_[a-z0-9]{4}_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}/gi)||[],t=e.match(/img_v2_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}/gi)||[],o=[...l,...t];if(o.length>0)return[...new Set(o)];let R=e.split(/(?=img_v[23]_)/g).filter(c=>/^img_v[23]_/.test(c)),A=[];for(let c of R){let a=c.match(/^(img_v3_[a-z0-9]{4}_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}|img_v2_[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})/i);if(a){A.push(a[1]);continue}let n=c.match(/^img_v[23]_[a-zA-Z0-9_-]+/);if(!n)continue;let h=n[0];h.length<20||h.length>80||A.push(h)}return[...new Set(A)]}static tryDecodeChatHistoryImagePayload(V,e){if(!V||V.length===0)return;let l=V instanceof Uint8Array?V:new Uint8Array(V);try{let t=b(Be,l);if(t.imageKey){let o={imageKey:t.imageKey,cryptoInfo:t.crypto?this.extractCryptoInfo(t.crypto):null,fsUnit:t.fsUnit||null};e(o)}}catch{}try{let t=b(El,l),o=this.extractImageInfo(t);o?.imageKey&&e(o)}catch{}try{let t=b(ue,l);if(t.imageKey&&e({imageKey:t.imageKey,cryptoInfo:null}),t.richText){let o=this.parsePostContent(t);for(let R of o.images||[])R?.imageKey&&e(R)}}catch{}try{let t=b(Dl,l),o=this.parsePostContent({richText:t,text:t.innerText||""});for(let R of o.images||[])R?.imageKey&&e(R)}catch{}try{let t=b(Ml,l);if(t?.dictionary){for(let o of Object.values(t.dictionary))if(o?.tag===2&&o.property){let R=this.parseImageProperty(o.property);R?.imageKey&&e(R)}}}catch{}}static collectImageInfosFromChatHistoryContent(V={}){let e=[],l=new Set,t=A=>{let c=A?.imageKey?String(A.imageKey).trim():"";!c||l.has(c)||(l.add(c),e.push({imageKey:c,cryptoInfo:A?.cryptoInfo||null}))};this.tryDecodeChatHistoryImagePayload(V?.richTextOrImageBytes,t),this.tryDecodeChatHistoryImagePayload(V?.richTextBytes,t),this.tryDecodeChatHistoryImagePayload(V?.richTextData,t);let o=V?.htmlText||this.tryDecodeAsUtf8(V?.richTextOrImageBytes)||"",R=this.extractImageKeysFromString(`${V?.text||""}
5
- ${o}`);for(let A of R)t({imageKey:A,cryptoInfo:null});return e}static decodeGetChatHistoryResponse(V){try{let e=b(S,V);return!e.payload||e.payload.length===0?{success:!1,error:"Empty payload",messages:[]}:this.manualDecodeGetChatHistoryResponse(e.payload)}catch(e){return{success:!1,error:e.message,messages:[]}}}static manualDecodeGetChatHistoryResponse(V){let e=[],l=Buffer.from(V),t=0;for(;t<l.length;){let{value:o,bytesRead:R}=this.readVarintWithLength(l,t);if(R===0)break;t+=R;let A=o&7,c=o>>3;if(A===2){let{value:a,bytesRead:n}=this.readVarintWithLength(l,t);if(t+=n,t+a>l.length)break;let h=l.subarray(t,t+a);if(t+=a,c===1){let d=this.parseMessageEntry(h);d&&e.push(d)}}else if(A===0){let{bytesRead:a}=this.readVarintWithLength(l,t);t+=a}else if(A===5)t+=4;else if(A===1)t+=8;else break}return{success:!0,messages:e}}static parseMessageEntry(V){let e=0,l=0,t=null;for(;e<V.length;){let{value:R,bytesRead:A}=this.readVarintWithLength(V,e);if(A===0)break;e+=A;let c=R&7,a=R>>3;if(c===0){let{value:n,bytesRead:h}=this.readVarintWithLength(V,e);e+=h,a===1&&(l=n)}else if(c===2){let{value:n,bytesRead:h}=this.readVarintWithLength(V,e);if(e+=h,e+n>V.length)break;let d=V.subarray(e,e+n);e+=n,a===2&&(t=d)}else if(c===5)e+=4;else if(c===1)e+=8;else break}if(!t)return null;let o=this.parseChatMessage(t);return{...o,position:l||o.position}}static parseChatMessage(V){let e=0,l={position:0,messageId:"",type:0,typeName:"UNKNOWN",fromId:"",fromType:0,fromTypeName:"UNKNOWN",chatId:"",cid:"",createTime:0,text:"",htmlText:"",imageKey:"",imageKeys:[],language:"",replyCount:"0",parentMsgId:"",baikeAnnotations:[]};for(;e<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,e);if(o===0)break;e+=o;let R=t&7,A=t>>3;if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,e);switch(e+=a,A){case 2:l.type=c,l.typeName=iV(c);break;case 4:l.createTime=c;break;case 6:break;case 7:l.fromType=c,l.fromTypeName=uV(c);break;case 13:l.position=c;break}}else if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,e);if(e+=a,e+c>V.length)break;let n=V.subarray(e,e+c);switch(e+=c,A){case 1:l.messageId=n.toString("utf8");break;case 3:l.fromId=n.toString("utf8");break;case 5:let h=this.parseChatMessageContent(n);l.text=h.text,l.htmlText=h.htmlText,l.baikeAnnotations=h.baikeAnnotations||[];let d=h.imageInfos||[],E=d.map(g=>g.imageKey).filter(Boolean);l.imageKey=E[0]||"",l.imageKeys=E;for(let g of d)g.imageKey&&g.cryptoInfo&&Bl(g.imageKey,g.cryptoInfo);break;case 10:l.chatId=n.toString("utf8");break;case 12:l.cid=n.toString("utf8");break;case 16:l.replyCount=n.toString("utf8");break;case 18:l.parentMsgId=n.toString("utf8");break;case 39:l.language=n.toString("utf8");break}}else if(R===5)e+=4;else if(R===1)e+=8;else break}return l}static parseChatMessageContent(V){let e=0,l={text:"",htmlText:"",richTextOrImageBytes:new Uint8Array,richTextBytes:new Uint8Array,richTextData:new Uint8Array,imageInfos:[],baikeAnnotations:[]};for(;e<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,e);if(o===0)break;e+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,e);if(e+=a,e+c>V.length)break;let n=V.subarray(e,e+c);switch(e+=c,A){case 1:l.text=n.toString("utf8");break;case 2:l.richTextOrImageBytes=n,l.htmlText=this.tryDecodeAsUtf8(n)||"";break;case 3:l.richTextBytes=n;break;case 6:{l.richTextData=n;let h=this.parseBaikeAnnotation(n);h&&l.baikeAnnotations.push(h);break}}}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(V,e);e+=c}else if(R===5)e+=4;else if(R===1)e+=8;else break}return l.imageInfos=this.collectImageInfosFromChatHistoryContent(l),l}static parseBaikeAnnotation(V){let e=this.parseProtobufFields(V);if(this.getStringField(e,1)!=="baike")return null;let t=this.getBytesField(e,2);if(!t)return null;let o=this.parseProtobufFields(t),R=this.getBytesField(o,1);if(!R)return null;let A=this.parseProtobufFields(R),c=this.getBytesField(A,2);if(!c)return null;let a=this.parseProtobufFields(c),n=this.getBytesField(a,1);if(!n)return null;let h=this.parseProtobufFields(n),d=this.getBytesField(h,1),E=0,g=0;if(d){let r=this.parseProtobufFields(d);E=this.getVarintField(r,1,0),g=this.getVarintField(r,2,0)}let X=this.getStringField(h,2)||"",G=this.getBytesField(h,4),W="",m=0;if(G){let r=this.parseProtobufFields(G);W=this.getStringField(r,1)||"",m=this.getVarintField(r,2,0)}return W?{type:"baike",entityId:W,entityType:m,entityTypeName:m===1?"enterprise":"public",text:X,offset:E,length:g}:null}static parseProtobufFields(V){let e=[],l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(o===0)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;e.push({fieldNo:A,wireType:R,data:V.subarray(l,l+c)}),l+=c}else if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a,e.push({fieldNo:A,wireType:R,val:c})}else if(R===5)l+=4;else if(R===1)l+=8;else break}return e}static getStringField(V,e){let l=V.find(t=>t.fieldNo===e&&t.wireType===2);return l?l.data.toString("utf8"):null}static getBytesField(V,e){let l=V.find(t=>t.fieldNo===e&&t.wireType===2);return l?l.data:null}static getVarintField(V,e,l){let t=V.find(o=>o.fieldNo===e&&o.wireType===0);return t?t.val:l}static buildMarkChatReadRequest(V,e,l){let t=Buffer.from(e,"utf-8"),o=[];o.push(10),F(o,t.length),o.push(...t),o.push(16),this.pushVarintBigInt(o,BigInt(l));let R=B(S,{payloadType:1,cmd:201,cid:V,payload:new Uint8Array(o)});return Buffer.from(C(S,R))}static decodeMarkChatReadResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l="";if(e.payload&&e.payload.length>0){let t=this.extractLengthDelimitedField(Buffer.from(e.payload),3);t&&(l=Buffer.from(t).toString("utf-8"))}return{success:!0,chatId:l}}catch(e){return{success:!1,error:e.message}}}static buildPinSessionRequest(V,e,l=1){let t=Buffer.from(e,"utf-8"),o=[];o.push(10),F(o,t.length),o.push(...t),o.push(16),this.pushVarintBigInt(o,BigInt(l));let R=[];R.push(10),F(R,o.length),R.push(...o);let A=B(S,{payloadType:1,cmd:1100,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,A))}static decodePinSessionResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l={success:!0,status:0,version:0};if(e.payload&&e.payload.length>0){let t=Buffer.from(e.payload),o=0;for(;o<t.length;){let{value:R,bytesRead:A}=this.readVarintWithLength(t,o);if(!A)break;o+=A;let c=R&7,a=R>>3;if(c===0){let{value:n,bytesRead:h}=this.readVarintWithLength(t,o);o+=h,a===1?l.status=n:a===2&&(l.version=n)}else if(c===2){let{value:n,bytesRead:h}=this.readVarintWithLength(t,o);o+=h+n}else if(c===1)o+=8;else if(c===5)o+=4;else break}}return l}catch(e){return{success:!1,error:e.message}}}static buildUnpinSessionRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[];t.push(10),F(t,l.length),t.push(...l),t.push(16,1);let o=[];o.push(10),F(o,t.length),o.push(...t);let R=B(S,{payloadType:1,cmd:1101,cid:V,payload:new Uint8Array(o)});return Buffer.from(C(S,R))}static decodeUnpinSessionResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildMarkSessionRequest(V,e,l=!0){let t=[];t.push(8),this.pushVarintBigInt(t,BigInt(e)),t.push(16,1),t.push(24,1);let o=l?10:18,R=[];R.push(o),F(R,t.length),R.push(...t);let A=B(S,{payloadType:1,cmd:1027,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,A))}static decodeMarkSessionResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildGetUserRelationRequest(V,e){let l=[];l.push(8),this.pushVarintBigInt(l,BigInt(e)),l.push(16,1);let t=B(S,{payloadType:1,cmd:406,cid:V,payload:new Uint8Array(l)});return Buffer.from(C(S,t))}static decodeGetUserRelationResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l={success:!0,relationType:0,status:0};if(e.payload&&e.payload.length>0){let t=Buffer.from(e.payload),o=this.extractLengthDelimitedField(t,1);if(o){let R=Buffer.from(o),A=0;for(;A<R.length;){let{value:c,bytesRead:a}=this.readVarintWithLength(R,A);if(!a)break;A+=a;let n=c&7,h=c>>3;if(n===0){let{value:d,bytesRead:E}=this.readVarintWithLength(R,A);A+=E,h===1&&(l.relationType=d)}else if(n===2){let{value:d,bytesRead:E}=this.readVarintWithLength(R,A);if(A+=E,h===2){let g=R.subarray(A,A+d),X=0;for(;X<g.length;){let{value:G,bytesRead:W}=this.readVarintWithLength(g,X);if(!W)break;X+=W;let m=G&7,r=G>>3;if(m===0){let{value:i,bytesRead:Q}=this.readVarintWithLength(g,X);X+=Q,r===1&&(l.status=i)}else break}}A+=d}else if(n===1)A+=8;else if(n===5)A+=4;else break}}}return l}catch(e){return{success:!1,error:e.message}}}static buildGetUserPresenceRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[];t.push(10),F(t,l.length),t.push(...l);let o=B(S,{payloadType:1,cmd:5093,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,o))}static decodeGetUserPresenceResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l={success:!0,userId:"",presenceData:""};if(e.payload&&e.payload.length>0){let t=Buffer.from(e.payload),o=this.extractLengthDelimitedField(t,1);if(o){let R=Buffer.from(o),A=this.extractLengthDelimitedField(R,1),c=this.extractLengthDelimitedField(R,2);A&&(l.userId=Buffer.from(A).toString("utf-8")),c&&c.length>0&&(l.presenceData=Buffer.from(c).toString("hex"))}}return l}catch(e){return{success:!1,error:e.message}}}static buildGetConfigRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[];t.push(10),F(t,l.length),t.push(...l);let o=B(S,{payloadType:1,cmd:7026,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,o))}static decodeGetConfigResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l={success:!0,configName:"",value:0,defaultValue:0};if(e.payload&&e.payload.length>0){let t=Buffer.from(e.payload),o=this.extractLengthDelimitedField(t,1);if(o){let R=Buffer.from(o),A=this.extractLengthDelimitedField(R,1);A&&(l.configName=Buffer.from(A).toString("utf-8"));let c=this.extractLengthDelimitedField(R,2);if(c){let a=Buffer.from(c),n=0;for(;n<a.length;){let{value:h,bytesRead:d}=this.readVarintWithLength(a,n);if(!d)break;n+=d;let E=h&7,g=h>>3;if(E===0){let{value:X,bytesRead:G}=this.readVarintWithLength(a,n);n+=G,g===2?l.value=X:g===3&&(l.defaultValue=X)}else if(E===2){let{value:X,bytesRead:G}=this.readVarintWithLength(a,n);n+=G+X}else if(E===1)n+=8;else if(E===5)n+=4;else break}}}}return l}catch(e){return{success:!1,error:e.message}}}static buildGetFeatureFlagsRequest(V,e={}){let{version:l=1,clientId:t="1-0",syncToken:o=""}=e,R=Buffer.from(t,"utf-8"),A=[];if(A.push(8),this.pushVarintBigInt(A,BigInt(l)),A.push(18),F(A,R.length),A.push(...R),o){let a=Buffer.from(o,"utf-8");A.push(26),F(A,a.length),A.push(...a)}let c=B(S,{payloadType:1,cmd:1011741,cid:V,payload:new Uint8Array(A)});return Buffer.from(C(S,c))}static decodeGetFeatureFlagsResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l={success:!0,syncToken:"",flags:{group1:[],group2:[]}};if(e.payload&&e.payload.length>0){let t=Buffer.from(e.payload),o=0;for(;o<t.length;){let{value:R,bytesRead:A}=this.readVarintWithLength(t,o);if(!A)break;o+=A;let c=R&7,a=R>>3;if(c===2){let{value:n,bytesRead:h}=this.readVarintWithLength(t,o);if(o+=h,a===3)l.syncToken=t.subarray(o,o+n).toString("utf-8");else if(a===4){let d=t.subarray(o,o+n);l.flags=this._parseFeatureFlags(d)}o+=n}else if(c===0){let{bytesRead:n}=this.readVarintWithLength(t,o);o+=n}else if(c===1)o+=8;else if(c===5)o+=4;else break}}return l}catch(e){return{success:!1,error:e.message}}}static _parseFeatureFlags(V){let e={group1:[],group2:[]},l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(!o)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,A===1||A===2){let n=V.subarray(l,l+c),h=this._parseFlagEntry(n);h&&(A===1?e.group1:e.group2).push(h)}l+=c}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(V,l);l+=c}else if(R===1)l+=8;else if(R===5)l+=4;else break}return e}static _parseFlagEntry(V){let e={id:0,value:0},l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(!o)break;l+=o;let R=t&7,A=t>>3;if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a,A===1?e.id=c:A===2&&(e.value=c)}else if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a+c}else break}return e}static generateUploadKey(V="image"){let e=GV.randomUUID().slice(0,35);return`${V==="file"?"file_v3_00ve_":"img_v3_00ve_"}${e}g`}static generateImageKey(){return this.generateUploadKey("image")}static buildUploadCreateRequest(V,e={}){let l=Buffer.from(V,"utf-8"),t=[];if(t.push(10),F(t,l.length),t.push(...l),e.fileType===void 0&&(t.push(16),F(t,e.type??0)),e.fileType!==void 0&&(t.push(24),F(t,e.fileType)),e.secondaryId&&(t.push(34),F(t,e.secondaryId.length),t.push(...e.secondaryId)),e.filename){let o=Buffer.from(e.filename,"utf-8");t.push(42),F(t,o.length),t.push(...o)}if(e.fileSize!==void 0&&(t.push(48),F(t,e.fileSize)),e.blake3Hash){let o=Buffer.from("blake3:"),R=Buffer.concat([o,e.blake3Hash]);t.push(74),F(t,R.length),t.push(...R)}return Buffer.from(t)}static decodeUploadCreateResponse(V){try{let e=this._decodeSimpleProto(V);return e[1]!==1?{success:!1,error:e[3]||`Unexpected status: ${e[1]}`}:{success:!0,version:e[2]}}catch(e){return{success:!1,error:e.message}}}static decodeUploadPartResponse(V){try{let e=this._decodeSimpleProto(V),l=e[1],t=e[2];return l===void 0||t===void 0?{success:!1,error:e[3]||"Missing id or version in part response"}:{success:!0,id:l,version:t}}catch(e){return{success:!1,error:e.message}}}static buildUploadCompleteRequest(V,e,l={}){let t=Buffer.from(V,"utf-8"),o=[];o.push(10),F(o,t.length),o.push(...t),o.push(16),F(o,e.length);for(let c of e){let a=[];a.push(8),F(a,c.id??1),a.push(16),F(a,c.version??0),o.push(26),F(o,a.length),o.push(...a)}let R=Buffer.from(l.filename||"","utf-8");o.push(34),F(o,R.length),R.length&&o.push(...R);let A=Buffer.from(l.mimeType||"","utf-8");return o.push(42),F(o,A.length),A.length&&o.push(...A),Buffer.from(o)}static decodeUploadCompleteResponse(V){try{let e=this._decodeSimpleProto(V);return e[1]!==0?{success:!1,error:e[4]||`Upload failed with status: ${e[1]}`}:{success:!0,key:e[2]}}catch(e){return{success:!1,error:e.message}}}static _decodeSimpleProto(V){let e=0,l={};for(;e<V.length;){let t=V[e++],o=t>>3,R=t&7;if(R===0){let A=0,c=1;for(;e<V.length;){let a=V[e++];if(A+=(a&127)*c,c*=128,(a&128)===0)break}l[o]=A}else if(R===2){let A=0,c=1;for(;e<V.length;){let a=V[e++];if(A+=(a&127)*c,c*=128,(a&128)===0)break}l[o]=V.slice(e,e+A).toString("utf-8"),e+=A}else if(R===1)e+=8;else if(R===5)e+=4;else throw new Error(`Unknown wire type ${R} at offset ${e-1}`)}return l}static buildSaveContactAliasRequest(V,e,l={}){let{alias:t="",memo:o="",memoImageKey:R=""}=l,A=Buffer.from(e,"utf-8"),c=[];c.push(10),F(c,A.length),c.push(...A);let a=Buffer.from(t,"utf-8");c.push(18),F(c,a.length),c.push(...a);let n=Buffer.from(o,"utf-8");c.push(26),F(c,n.length),c.push(...n);let h=Buffer.from(R,"utf-8");c.push(34),F(c,h.length),c.push(...h);let d=B(S,{payloadType:1,cmd:5036,cid:V,payload:new Uint8Array(c)});return Buffer.from(C(S,d))}static decodeSaveContactAliasResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildContactInfoSyncRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[];t.push(10),F(t,l.length),t.push(...l);let o=B(S,{payloadType:1,cmd:1100319,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,o))}static decodeContactInfoSyncResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};if(!e.payload||e.payload.length===0)return{success:!1,error:"Empty payload in sync response",syncStatus:{}};let l=Buffer.from(e.payload),t={},o=0;for(;o<l.length;){let{value:R,bytesRead:A}=this.readVarintWithLength(l,o);if(!A)break;o+=A;let c=R>>3,a=R&7;if(a===0){let{value:n,bytesRead:h}=this.readVarintWithLength(l,o);o+=h,c===1?t.statusCode=Number(n):c===2?t.syncFlag2=Number(n):c===3?t.syncFlag3=Number(n):c===4?t.syncFlag4=Number(n):c===7?t.syncFlag7=Number(n):c===8?t.syncFlag8=Number(n):c===9&&(t.syncFlag9=Number(n))}else if(a===2){let{value:n,bytesRead:h}=this.readVarintWithLength(l,o);o+=h;let d=l.subarray(o,o+Number(n));o+=Number(n),c===5?t.syncToken=Buffer.from(d).toString("utf-8"):c===6&&(t.extraData=Buffer.from(d).toString("hex")||null)}else if(a===1)o+=8;else if(a===5)o+=4;else break}return t.statusCode!==void 0&&t.statusCode!==1?{success:!1,error:`Sync failed with status code: ${t.statusCode}`,syncStatus:t}:t.statusCode===void 0?{success:!1,error:"Missing status code in sync response",syncStatus:t}:{success:!0,syncStatus:t}}catch(e){return{success:!1,error:e.message}}}static buildCreateThreadRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[];t.push(10),F(t,l.length),t.push(...l),t.push(16,5);let o=B(S,{payloadType:1,cmd:8111,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,o))}static decodeCreateThreadResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildPutTransmitMessageRequest(V,e={}){let{messageId:l,chatIds:t=[],cids:o={},targets:R={},version:A=1,originMergeForwardId:c=""}=e,a=[...new Set(t.map(g=>String(g??"").trim()).filter(Boolean))],n={},h={};for(let g of a){n[g]=String(o[g]??GV.randomUUID().toUpperCase());let X=R[g]??{},G=oR(X.targetType??X.target_type),W=X.threadIdsCidsMap??X.thread_ids_cids_map??{};h[g]=B(Vt,{targetType:G,threadIdsCidsMap:W})}let d=B(Ll,{chatIds:a,messageId:String(l??""),cids:n,version:A,targets:h,originMergeForwardId:String(c??"")}),E=B(S,{payloadType:1,cmd:51,cid:V,payload:C(Ll,d)});return Buffer.from(C(S,E))}static decodePutTransmitMessageResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,data:{messages:{},feedCards:{},threadMessages:{},threads:{}},messages:{},feedCards:{},threadMessages:{},threads:{}};let l=b(tt,e.payload),t=this._normalizeProtoValue(l);return{success:!0,data:t,messages:t.messages||{},feedCards:t.feedCards||{},threadMessages:t.threadMessages||{},filePermCheck:t.filePermCheck,threads:t.threads||{}}}catch(e){return{success:!1,error:e.message}}}static buildSearchInChatRequest(V,e,l,t={}){let{pageSize:o=5,locale:R="zh_CN"}=t,A=_(),c=Buffer.from(e,"utf-8"),a=Buffer.from(l,"utf-8"),n=Buffer.from(A,"utf-8"),h=Buffer.from(R,"utf-8"),d=Buffer.from("SEARCH_MESSAGES","utf-8"),E=[];E.push(8,1),E.push(18),F(E,a.length),E.push(...a);let g=[];g.push(8),this.pushVarintBigInt(g,BigInt(o)),g.push(18,4,26,2,10,0),g.push(26,4,42,2,40,1);let X=[];X.push(10),F(X,d.length),X.push(...d),X.push(18),F(X,g.length),X.push(...g),X.push(26),F(X,E.length),X.push(...E);let G=[];G.push(10),F(G,n.length),G.push(...n),G.push(16,1),G.push(26),F(G,c.length),G.push(...c),G.push(42),F(G,X.length),G.push(...X),G.push(50),F(G,h.length),G.push(...h);let W=[];W.push(10),F(W,G.length),W.push(...G);let m=B(S,{payloadType:1,cmd:11021,cid:V,payload:new Uint8Array(W)});return Buffer.from(C(S,m))}static decodeSearchInChatResponse(V){return this.decodeSearchResponse(V)}static extractVarintField(V,e){let l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(!o)break;l+=o;let R=t&7,A=t>>3;if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,A===e)return c}else if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a+c}else if(R===1)l+=8;else if(R===5)l+=4;else break}return null}static buildPutUrgentRequest(V,e,l,t,o,R={}){let A=R.urgentType||1,c=Math.floor(Date.now()/1e3),a=Buffer.from(e,"utf-8"),n=Buffer.from(o,"utf-8"),h=Buffer.from(t,"utf-8"),d=Buffer.from(l,"utf-8"),E=[];E.push(10),F(E,a.length),E.push(...a),E.push(16),this.pushVarintBigInt(E,BigInt(A)),E.push(24),this.pushVarintBigInt(E,BigInt(c)),E.push(34),F(E,n.length),E.push(...n);let g=[];g.push(10),F(g,h.length),g.push(...h),g.push(18),F(g,d.length),g.push(...d);let X=[];X.push(10),F(X,E.length),X.push(...E),X.push(18),F(X,h.length),X.push(...h),X.push(26),F(X,g.length),X.push(...g);let G=B(S,{payloadType:1,cmd:1,cid:V,payload:new Uint8Array(X)});return Buffer.from(C(S,G))}static decodePutUrgentResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildPullUrgentAckStatusRequest(V,e,l){let t=Buffer.from(e,"utf-8"),o=Buffer.from(l.messageId,"utf-8"),R=Buffer.from(l.targetUserId,"utf-8"),A=l.urgentAckId?Buffer.from(l.urgentAckId,"utf-8"):null,c=l.urgentType||1,a=Math.floor(Date.now()/1e3),n=[];n.push(10),F(n,o.length),n.push(...o),n.push(18),F(n,t.length),n.push(...t),n.push(26),F(n,R.length),n.push(...R),A&&(n.push(34),F(n,A.length),n.push(...A)),n.push(40),this.pushVarintBigInt(n,BigInt(a)),n.push(48),this.pushVarintBigInt(n,BigInt(c));let h=[];h.push(10),F(h,n.length),h.push(...n);let d=[];d.push(10),F(d,t.length),d.push(...t),d.push(18),F(d,h.length),d.push(...h);let E=[];E.push(26),F(E,d.length),E.push(...d);let g=B(S,{payloadType:1,cmd:1,cid:V,payload:new Uint8Array(E)});return Buffer.from(C(S,g))}static decodePullUrgentAckStatusResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};if(!e.payload||e.payload.length===0)return{success:!0,ackEntries:[]};let l=Buffer.from(e.payload),t=[],o=this.extractLengthDelimitedField(l,3);if(o){let R=0;for(;R<o.length;){let A=o[R],c=A>>3,a=A&7;if(c===2&&a===2){R++;let{value:n,bytesRead:h}=this.readVarintWithLength(o,R);R+=h;let d=o.subarray(R,R+Number(n));R+=Number(n);let E={},g=this.extractLengthDelimitedField(d,1);g&&(E.messageId=Buffer.from(g).toString("utf-8"));let X=this.extractLengthDelimitedField(d,2);X&&(E.chatId=Buffer.from(X).toString("utf-8"));let G=this.extractLengthDelimitedField(d,3);G&&(E.targetUserId=Buffer.from(G).toString("utf-8"));let W=this.extractLengthDelimitedField(d,4);W&&(E.urgentAckId=Buffer.from(W).toString("utf-8"));let m=0;for(;m<d.length;){let r=d[m],i=r>>3,Q=r&7;if(Q===0){m++;let{value:Y,bytesRead:T}=this.readVarintWithLength(d,m);m+=T,i===5?E.timestamp=Number(Y):i===6?E.urgentType=Number(Y):i===7&&(E.ackStatus=Number(Y))}else if(Q===2){m++;let{value:Y,bytesRead:T}=this.readVarintWithLength(d,m);m+=T+Number(Y)}else m++}t.push(E)}else if(a===2){R++;let{value:n,bytesRead:h}=this.readVarintWithLength(o,R);R+=h+Number(n)}else if(a===0){R++;let{bytesRead:n}=this.readVarintWithLength(o,R);R+=n}else R++}}return{success:!0,ackEntries:t}}catch(e){return{success:!1,error:e.message}}}static buildPutScheduleMessageRequest(V,e,l,t,o={}){let{entityId:R,parseMarkdown:A=!0}=o,c=_(),a=ll(e),n=a.innerText,h=A&&bl(e)&&a.isBlockLevel||!1,d=this.buildContentBytes(h?"":n,a.elementIds,n,a.dictionaryBytes),E=this.buildPutMessageRequestBytes(h?2:4,l,c,d),g=[],X=Buffer.from(l,"utf-8"),G=Buffer.from(R||l,"utf-8");g.push(10),F(g,E.length),g.push(...E);let W=Number(t)>=1e12?Math.floor(Number(t)/1e3):Number(t);g.push(16),this.pushVarintBigInt(g,BigInt(W)),g.push(26),F(g,X.length),g.push(...X),g.push(34),F(g,G.length),g.push(...G);let m=B(S,{payloadType:1,cmd:900030,cid:V,payload:new Uint8Array(g)});return Buffer.from(C(S,m))}static decodePutScheduleMessageResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let t=this.extractErrorMessage(e.payload);if(t)return{success:!1,error:t}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0};let l=b(jl,e.payload);return l.message?{success:!0,scheduleMessage:this._normalizeScheduleMessage(l.message)}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildPatchScheduleMessageRequest(V,e,l,t,o={}){let{scheduleTime:R,content:A,sendImmediately:c,parseMarkdown:a=!0}=o,n=Buffer.from(e,"utf-8"),h=Buffer.from(l,"utf-8"),d=[];if(d.push(8),this.pushVarint(d,t),d.push(18),F(d,h.length),d.push(...h),d.push(26),F(d,n.length),d.push(...n),R!==void 0){let g=Number(R)>=1e12?Math.floor(Number(R)/1e3):Number(R);this.pushVarint(d,160),this.pushVarintBigInt(d,BigInt(g))}if(A!==void 0){let g=ll(A),X=a&&bl(A)&&g.isBlockLevel||!1,G=this.buildContentBytes(X?"":g.innerText,g.elementIds,g.innerText,g.dictionaryBytes);this.pushVarint(d,168),this.pushVarint(d,X?2:4),this.pushVarint(d,178),F(d,G.length),d.push(...G)}c&&(this.pushVarint(d,184),d.push(1));let E=B(S,{payloadType:1,cmd:900034,cid:V,payload:new Uint8Array(d)});return Buffer.from(C(S,E))}static decodePatchScheduleMessageResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let t=this.extractErrorMessage(e.payload);if(t)return{success:!1,error:t}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0};let l=b(ql,e.payload);return l.message?{success:!0,scheduleMessage:this._normalizeScheduleMessage(l.message)}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildPullScheduleMessageByIdsRequest(V,e,l){let t=[],o=Buffer.from(e,"utf-8");t.push(10),F(t,o.length),t.push(...o);for(let A of l){let c=Buffer.from(A,"utf-8");t.push(18),F(t,c.length),t.push(...c)}let R=B(S,{payloadType:1,cmd:900032,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,R))}static decodePullScheduleMessageByIdsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,scheduleMessages:{}};let l=b(_l,e.payload),t={};for(let[o,R]of Object.entries(l.messages||{}))t[o]=this._normalizeScheduleMessage(R);return{success:!0,scheduleMessages:t}}catch(e){return{success:!1,error:e.message}}}static buildPullChatScheduleMessagesRequest(V,e,l={}){let{entityType:t=1,entityId:o=e,status:R=[1,2]}=l,A=[],c=Buffer.from(e,"utf-8"),a=Buffer.from(o,"utf-8");A.push(10),F(A,c.length),A.push(...c),A.push(16),this.pushVarintBigInt(A,BigInt(t)),A.push(26),F(A,a.length),A.push(...a);for(let h of R)A.push(32),this.pushVarintBigInt(A,BigInt(h));let n=B(S,{payloadType:1,cmd:900031,cid:V,payload:new Uint8Array(A)});return Buffer.from(C(S,n))}static decodePullChatScheduleMessagesResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}return!e.payload||e.payload.length===0?{success:!0,scheduleMessages:[]}:{success:!0,scheduleMessages:(b(Ol,e.payload).messages||[]).map(o=>this._normalizeScheduleMessage(o))}}catch(e){return{success:!1,error:e.message}}}static _isPacketError(V){return V.status!==0&&V.status!==200}static _normalizeProtoValue(V){if(typeof V=="bigint")return V>BigInt(Number.MAX_SAFE_INTEGER)||V<BigInt(Number.MIN_SAFE_INTEGER)?V.toString():Number(V);if(Array.isArray(V))return V.map(e=>this._normalizeProtoValue(e));if(V&&typeof V=="object"){let e={};for(let[l,t]of Object.entries(V))l.startsWith("$")||(e[l]=this._normalizeProtoValue(t));return e}return V}static _normalizeScheduleMessage(V){let e={0:"UNKNOWN",1:"PENDING",2:"SUSPEND",3:"SUCCESS",4:"FAIL",5:"DELETE"};return{messageId:V.messageId||"",scheduleTime:String(V.scheduleTime||0n),status:V.status,statusName:e[V.status]||"UNKNOWN"}}static buildGetBaikeCardRequest(V,e,l,t={}){let o=t.entityType??1,R=t.chatId||"",A=t.messageId||"",c=[],a=Buffer.from(e,"utf-8");c.push(10),F(c,a.length),c.push(...a);let n=Buffer.from(l,"utf-8");if(c.push(18),F(c,n.length),c.push(...n),c.push(24),F(c,o),c.push(32,0),c.push(40,2),R){let X=Buffer.from(R,"utf-8");c.push(50),F(c,X.length),c.push(...X)}if(A){let X=Buffer.from(A,"utf-8");c.push(58),F(c,X.length),c.push(...X)}c.push(64,0,72,0,80,0);let h=Buffer.from("im","utf-8");c.push(162,1),F(c,h.length),c.push(...h);let d=Buffer.from("click","utf-8");c.push(170,1),F(c,d.length),c.push(...d);let E=Buffer.from("{}","utf-8");c.push(178,1),F(c,E.length),c.push(...E);let g=B(S,{payloadType:1,cmd:4303,cid:V,payload:new Uint8Array(c)});return Buffer.from(C(S,g))}static decodeGetBaikeCardResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let c=this.extractErrorMessage(e.payload);if(c)return{success:!1,error:c}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!1,error:"Empty payload"};let l=this.parseProtobufFields(Buffer.from(e.payload)),t=this.getBytesField(l,1);if(!t)return{success:!1,error:"No content in response"};let o=this.parseProtobufFields(t),R=this.getBytesField(o,1);return!R||R.length===0?{success:!1,error:"No HTML content"}:{success:!0,html:R.toString("utf-8")}}catch(e){return{success:!1,error:e.message}}}static extractBaikeCardInfo(V){let e={term:"",fullName:"",definition:"",detailUrl:"",contributors:[]},l=V.match(/font-size:\s*18px[^"]*"[^>]*text="([^"]+)"/);l&&(e.term=l[1]);let t=V.match(/aslCard-baikeCard-alias"[^>]*text="([^"]+)"/);t&&(e.fullName=t[1]);let o=V.match(/white-space:\s*pre-wrap;word-break:\s*break-word;[^"]*"\s*\n?\s*text="([^"]+)"/);o&&(e.definition=o[1]);let R=V.match(/https:\/\/ai\.feishu\.cn\/lingo\/detail\/\d+/);R&&(e.detailUrl=R[0]);let A=/title="([^"]+)">\s*<\/tooltip>\s*<text[^>]*>([^<]*)<\/text>/g,c;for(;(c=A.exec(V))!==null;)c[1]&&!e.contributors.includes(c[1])&&e.contributors.push(c[1]);return e}static buildGetBaikeRecommendDocsRequest(V,e,l=1){let t=[],o=Buffer.from(e,"utf-8");t.push(10),F(t,o.length),t.push(...o),t.push(16),F(t,l);let R=Buffer.from("recommend_docs","utf-8");t.push(26),F(t,R.length),t.push(...R),t.push(32,0),t.push(162,1,0);let A=B(S,{payloadType:1,cmd:4306,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,A))}static decodeGetBaikeRecommendDocsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let a=this.extractErrorMessage(e.payload);if(a)return{success:!1,error:a}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!1,error:"Empty payload"};let l=this.parseProtobufFields(Buffer.from(e.payload)),t=this.getBytesField(l,1);if(!t)return{success:!1,error:"No entry data in response",entityId:"",docs:[]};let o=this.parseProtobufFields(t),R=this.getStringField(o,1)||"",A=this.getBytesField(o,2),c=[];if(A&&A.length>0){let a=this.parseProtobufFields(A);for(let n of a)n.wireType===2&&c.push(n.data.toString("utf-8"))}return{success:!0,entityId:R,docs:c}}catch(e){return{success:!1,error:e.message}}}static buildSearchMeetingRoomsRequest(V,e,l,t={}){let o=[];if(o.push(8),this.pushVarintBigInt(o,BigInt(e)),o.push(16),this.pushVarintBigInt(o,BigInt(l)),t.keyword!=null&&t.keyword!==""){let a=Buffer.from(t.keyword,"utf-8");o.push(26),F(o,a.length),o.push(...a)}if(t.count!=null&&(o.push(32),F(o,t.count)),t.timezone!=null&&t.timezone!==""){let a=Buffer.from(t.timezone,"utf-8");o.push(58),F(o,a.length),o.push(...a)}let R=[];if(t.minCapacity!=null&&t.minCapacity>0&&(R.push(8),F(R,t.minCapacity)),t.needEquipments&&t.needEquipments.length>0)for(let a of t.needEquipments){let n=Buffer.from(a,"utf-8");R.push(18),F(R,n.length),R.push(...n)}R.length>0&&(o.push(66),F(o,R.length),o.push(...R)),t.cursor!=null&&(o.push(72),F(o,t.cursor));let A=t.type??(t.cursor!=null?2:1);o.push(80),F(o,A);let c=B(S,{payloadType:1,cmd:1000016,cid:V,payload:new Uint8Array(o)});return Buffer.from(C(S,c))}static buildSearchGuestsRequest(V,e,l={}){let t=l.offset??0,o=l.limit??50,R=l.locale??"zh_CN",A=l.guestType??2,c=[],a=Buffer.from(e,"utf-8");c.push(10),F(c,a.length),c.push(...a),c.push(16),F(c,t),c.push(24),F(c,o),c.push(32,1);let n=Buffer.from(R,"utf-8");c.push(42),F(c,n.length),c.push(...n),c.push(48,0),c.push(56,0),c.push(64,0),c.push(72,1),c.push(88,0),c.push(104,1);let h=[8];F(h,A);let d=[10];F(d,h.length),d.push(...h),c.push(114),F(c,d.length),c.push(...d);let E=B(S,{payloadType:1,cmd:1000014,cid:V,payload:new Uint8Array(c)});return Buffer.from(C(S,E))}static decodeSearchGuestsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}return!e.payload||e.payload.length===0?{success:!0,guests:[]}:{success:!0,guests:this.parseProtobufFields(Buffer.from(e.payload)).filter(o=>o.fieldNo===1&&o.wireType===2).map(o=>this._parseSearchGuest(o.data))}}catch(e){return{success:!1,error:e.message}}}static _parseSearchGuest(V){let e=this.parseProtobufFields(V),l=this.getStringField(e,3)||"",t=null;if(l)try{t=JSON.parse(l)}catch{t=null}let o=this.getVarintField(e,5,0);return{guestId:this.getStringField(e,1)||"",displayName:this.getStringField(e,2)||"",description:l,descriptionData:t,avatarUrl:this.getStringField(e,4)||"",type:o,typeName:o===1?"USER":o===2?"GROUP":`UNKNOWN(${o})`,tenantId:this.getStringField(e,6)||""}}static decodeSearchMeetingRoomsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let c=this.extractErrorMessage(e.payload);if(c)return{success:!1,error:c}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,buildings:[],hasMore:!1,cursor:0};let l=Buffer.from(e.payload),t=this.parseProtobufFields(l),o=t.filter(c=>c.fieldNo===1&&c.wireType===2).map(c=>this._parseCalendarBuilding(c.data)),R=this.getVarintField(t,2,0)!==0,A=this.getVarintField(t,3,0);return{success:!0,buildings:o,hasMore:R,cursor:A}}catch(e){return{success:!1,error:e.message}}}static buildPullBuildingsRequest(V,e={}){let l={...e.meetingRoomFilter||{}};e.minCapacity!=null&&l.minCapacity==null&&(l.minCapacity=e.minCapacity),e.needEquipments!=null&&l.needEquipments==null&&(l.needEquipments=e.needEquipments);let t=B(SV,{...e.eventField?{eventField:e.eventField}:{},...Object.keys(l).length>0?{meetingRoomFilter:l}:{},...e.enableRecommendations!=null?{enableRecommendations:e.enableRecommendations}:{},...e.operateInstanceField?{operateInstanceField:e.operateInstanceField}:{}}),o=B(S,{payloadType:1,cmd:1010009,cid:V,payload:C(SV,t)});return Buffer.from(C(S,o))}static decodePullBuildingsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,buildings:{}};let l=this.parseProtobufFields(Buffer.from(e.payload)),t={};for(let o of l.filter(R=>R.fieldNo===1&&R.wireType===2)){let R=this.parseProtobufFields(o.data),A=this.getStringField(R,1),c=this.getBytesField(R,2);!A||!c||(t[A]=this._parseCalendarBuilding(c))}return{success:!0,buildings:t}}catch(e){return{success:!1,error:e.message}}}static _parseCalendarBuilding(V){let e=this.parseProtobufFields(V),l=e.filter(A=>A.fieldNo===6&&A.wireType===2),t={};for(let A of e.filter(c=>c.fieldNo===11&&c.wireType===2)){let c=this.parseProtobufFields(A.data),a=this.getStringField(c,1),n=this.getStringField(c,2);a!=null&&n!=null&&(t[a]=n)}let o={id:this.getStringField(e,1)||"",name:this.getStringField(e,2)||"",description:this.getStringField(e,3)||"",floors:l.map(A=>A.data.toString("utf8")),meetingRooms:[],isDeleted:this.getVarintField(e,8,0)!==0,weight:this.getVarintField(e,9,0),seizeTime:this.getVarintField(e,10,0),floorLevelIds:t},R=e.filter(A=>A.fieldNo===7&&A.wireType===2);return o.meetingRooms=R.map(A=>this._parseCalendarResource(A.data)),o}static _parseCalendarResource(V){let e=this.parseProtobufFields(V),l=this.getVarintField(e,5,0),t=this.getVarintField(e,4,0);return{id:this.getStringField(e,1)||"",calendarId:this.getStringField(e,2)||"",name:this.getStringField(e,3)||"",type:t===1?"MEETING_ROOM":t===2?"OTHER":t,status:l===1?"FREE":l===2?"BUSY":l,buildingId:this.getStringField(e,6)||"",description:this.getStringField(e,7)||"",capacity:this.getVarintField(e,8,0),floorName:this.getStringField(e,9)||""}}static buildMgetEventsWithIdsRequest(V,e){let l=[];for(let o of e||[]){let R=Buffer.from(o,"utf-8");l.push(10),F(l,R.length),l.push(...R)}let t=B(S,{payloadType:1,cmd:1002006,cid:V,payload:new Uint8Array(l)});return Buffer.from(C(S,t))}static decodeMgetEventsWithIdsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let R=this.extractErrorMessage(e.payload);if(R)return{success:!1,error:R}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,events:{}};let l=Buffer.from(e.payload),t=this.parseProtobufFields(l),o={};for(let R of t){if(R.fieldNo!==1||R.wireType!==2)continue;let A=this.parseProtobufFields(R.data),c=this.getStringField(A,1);if(!c)continue;let a=this.getBytesField(A,2);if(!a){o[c]={eventKey:c};continue}o[c]=this._parseMgetEventDetail(a)}return{success:!0,events:o}}catch(e){return{success:!1,error:e.message}}}static _parseMgetEventDetail(V){let e=this.parseProtobufFields(V),l={eventKey:this.getStringField(e,1)||"",uid:this.getStringField(e,2)||"",rrule:this.getStringField(e,20)||"",startTime:this.getVarintField(e,25,0),startTimezone:this.getStringField(e,26)||"",endTime:this.getVarintField(e,27,0),endTimezone:this.getStringField(e,28)||"",summary:this.getStringField(e,29)||"",description:this.getStringField(e,30)||"",location:null,attendees:[]},t=this.getBytesField(e,32);if(t){let o=this.parseProtobufFields(t);l.location={name:this.getStringField(o,1)||"",address:this.getStringField(o,2)||""}}for(let o of e){if(o.fieldNo!==33||o.wireType!==2)continue;let R=this.parseProtobufFields(o.data);l.attendees.push({displayName:this.getStringField(R,4)||"",isOrganizer:this.getVarintField(R,6,0)!==0})}return l}static buildGetPlaceTipsRequest(V,e,l={}){let t=[],o=Buffer.from(e,"utf-8"),R=Buffer.from(l.locale||"zh_CN","utf-8");t.push(10),F(t,o.length),t.push(...o),t.push(18),F(t,R.length),t.push(...R);let A=B(S,{payloadType:1,cmd:1000037,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,A))}static decodeGetPlaceTipsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let R=this.extractErrorMessage(e.payload);if(R)return{success:!1,error:R}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,places:[]};let l=Buffer.from(e.payload);return{success:!0,places:this.parseProtobufFields(l).filter(R=>R.fieldNo===1&&R.wireType===2).map(R=>this._parsePlaceTip(R.data))}}catch(e){return{success:!1,error:e.message}}}static _parsePlaceTip(V){let e=this.parseProtobufFields(V),l=this.getStringField(e,3)||"",t=null,o=null;if(l){let[R,A]=l.split(","),c=Number.parseFloat(R),a=Number.parseFloat(A);t=Number.isFinite(c)?c:null,o=Number.isFinite(a)?a:null}return{placeId:this.getStringField(e,1)||"",name:this.getStringField(e,2)||"",coordinates:l,longitude:t,latitude:o,address:this.getStringField(e,4)||"",description:this.getStringField(e,5)||""}}static buildPullMeetingRoomsInBuildingRequest(V,e,l,t,o={}){let R=[];R.push(8),this.pushVarintBigInt(R,BigInt(l)),R.push(16),this.pushVarintBigInt(R,BigInt(t));for(let a of e){if(!a)continue;let n=Buffer.from(a,"utf-8");R.push(26),F(R,n.length),R.push(...n)}if(o.rrule!=null&&o.rrule!==""){let a=Buffer.from(o.rrule,"utf-8");R.push(34),F(R,a.length),R.push(...a)}if(o.needDisabledResource!=null&&(R.push(40),R.push(o.needDisabledResource?1:0)),o.timezone!=null&&o.timezone!==""){let a=Buffer.from(o.timezone,"utf-8");R.push(50),F(R,a.length),R.push(...a)}let A=[];if(o.minCapacity!=null&&o.minCapacity>0&&(A.push(8),F(A,o.minCapacity)),o.needEquipments&&o.needEquipments.length>0)for(let a of o.needEquipments){let n=Buffer.from(a,"utf-8");A.push(18),F(A,n.length),A.push(...n)}A.length>0&&(R.push(58),F(R,A.length),R.push(...A));let c=B(S,{payloadType:1,cmd:1010010,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,c))}static decodePullMeetingRoomsInBuildingResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let A=this.extractErrorMessage(e.payload);if(A)return{success:!1,error:A}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,resources:{},resourceWeights:{}};let l=Buffer.from(e.payload),t=this.parseProtobufFields(l),o={};for(let A of t){if(A.fieldNo!==1||A.wireType!==2)continue;let c=this.parseProtobufFields(A.data),a=this.getStringField(c,1)||"",n=this.getBytesField(c,2);!a||!n||(o[a]=this._parseCalendarResource(n))}let R={};for(let A of t){if(A.fieldNo!==4||A.wireType!==2)continue;let c=this.parseProtobufFields(A.data),a=this.getStringField(c,1)||"",n=this.getVarintField(c,2,0);a&&(R[a]=n)}return{success:!0,resources:o,resourceWeights:R}}catch(e){return{success:!1,error:e.message}}}static buildMultiCalendarSearchRequest(V,e,l={}){let t=[],o=Buffer.from(e,"utf-8");t.push(10),F(t,o.length),t.push(...o),l.offset!=null&&(t.push(16),F(t,l.offset));let R=l.count??50;t.push(24),F(t,R),l.needSearchMeetingRoom!=null&&(t.push(32),t.push(l.needSearchMeetingRoom?1:0)),l.needSearchSharedCalendar!=null&&(t.push(40),t.push(l.needSearchSharedCalendar?1:0)),l.needSearchPrimaryCalendar!=null&&(t.push(48),t.push(l.needSearchPrimaryCalendar?1:0)),l.needSearchExternalPrimaryCalendar!=null&&(t.push(56),t.push(l.needSearchExternalPrimaryCalendar?1:0));let A=B(S,{payloadType:1,cmd:1000017,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,A))}static buildPullTenantsByIdsBody(V=[]){let e=[];for(let l of V){if(!l)continue;let t=Buffer.from(l,"utf-8");e.push(18),F(e,t.length),e.push(...t)}return Buffer.from(e)}static buildPullTenantsByIdsRequest(V,e=[]){let l=this.buildPullTenantsByIdsBody(e),t=B(S,{payloadType:1,cmd:300,cid:V,payload:new Uint8Array(l)});return Buffer.from(C(S,t))}static decodeMultiCalendarSearchResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let a=this.extractErrorMessage(e.payload);if(a)return{success:!1,error:a}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,contents:[],calendarChatterMap:{},chatterMap:{},calendarBriefMap:{}};let l=Buffer.from(e.payload),t=this.parseProtobufFields(l),o=t.filter(a=>a.fieldNo===1&&a.wireType===2).map(a=>this._parseMultiCalendarSearchContent(a.data)),R={},A={},c={};for(let a of t)if(a.wireType===2&&(a.fieldNo===2||a.fieldNo===3||a.fieldNo===4)){let n=this.parseProtobufFields(a.data),h=this.getStringField(n,1)||"";if(!h)continue;let d=this.getBytesField(n,2);if(!d)continue;let E=a.fieldNo===2?R:a.fieldNo===3?A:c;E[h]=d}return{success:!0,contents:o,calendarChatterMap:R,chatterMap:A,calendarBriefMap:c}}catch(e){return{success:!1,error:e.message}}}static decodePullTenantsByIdsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let R=this.extractErrorMessage(e.payload);if(R)return{success:!1,error:R}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,tenants:{}};let l=Buffer.from(e.payload),t=this.parseProtobufFields(l),o={};for(let R of t){if(R.fieldNo!==1||R.wireType!==2)continue;let A=this.parseProtobufFields(R.data),c=this.getStringField(A,1)||"",a=this.getBytesField(A,2);!c||!a||(o[c]=this._parseTenant(a))}return{success:!0,tenants:o}}catch(e){return{success:!1,error:e.message}}}static _parseTenant(V){let e=this.parseProtobufFields(V);return{id:this.getStringField(e,1)||"",name:this.getStringField(e,2)||"",contactName:this.getStringField(e,3)||"",contactMobile:this.getStringField(e,4)||"",contactEmail:this.getStringField(e,5)||"",address:this.getStringField(e,6)||"",domain:this.getStringField(e,7)||"",postCode:this.getStringField(e,8)||"",remark:this.getStringField(e,9)||"",telephone:this.getStringField(e,10)||"",iconUrl:this.getStringField(e,11)||"",avatar:this._parseImage(this.getBytesField(e,12)),unitLeague:this.getStringField(e,13)||"",i18nName:this._parseStringMap(e,14)}}static _parseImage(V){if(!V)return null;let e=this.parseProtobufFields(V);return{key:this.getStringField(e,1)||"",width:this.getVarintField(e,3,0),height:this.getVarintField(e,4,0),secureKey:this.getStringField(e,5)||"",secureWidth:this.getVarintField(e,7,0),secureHeight:this.getVarintField(e,8,0),size:this.getVarintField(e,10,0),fsUnit:this.getStringField(e,11)||"",params:this._parseStringMap(e,12),etag:this.getStringField(e,13)||""}}static _parseStringMap(V,e){let l=V.filter(o=>o.fieldNo===e&&o.wireType===2),t={};for(let o of l){let R=this.parseProtobufFields(o.data),A=this.getStringField(R,1)||"";A&&(t[A]=this.getStringField(R,2)||"")}return t}static _parseMultiCalendarSearchContent(V){let e=this.parseProtobufFields(V),l=this.getVarintField(e,2,0),t={1:"CHATTER",2:"MEETING_ROOM",3:"SHARED_CALENDAR"};return{calendarId:this.getStringField(e,1)||"",type:t[l]||l,title:this.getStringField(e,3)||"",subtitle:this.getStringField(e,4)||"",avatarUrl:this.getStringField(e,5)||"",isPrivate:this.getVarintField(e,6,0)!==0,isMember:this.getVarintField(e,7,0)!==0,isDisabled:this.getVarintField(e,8,0)!==0,isDismiss:this.getVarintField(e,9,0)!==0,isCrossTenant:this.getVarintField(e,10,0)!==0,calendarTenantId:this.getStringField(e,11)||"",subscriberNum:this.getVarintField(e,15,0)}}};x.CMD_DECODERS={27:x.decodeReactions,41:x.decodeMessageReadCount,74:x.decodeGroupReadState,92:x.decodeThreadReplyCount,130:x.decodeUserReactions,146:x.decodeUserMRUReactions,1002:x.decodeFeedCards,1311:x.decodeMessagePreviews,5916:x.decodeChatTabs,7001:x.decodeDeviceOnlineStatus,8106:x.decodeThreadReadState,8110:x.decodeThreadUpdated,30002:x.decodeUrgent,30003:x.decodeUrgentAck,1020003:x.decodeCalendarSync,1103704:x.decodeChatTopNotice};var U=x;import il from"crypto";var u=new hR({connect:{rejectUnauthorized:!1}}),dR=new Set(["originalTime","lastDate","version","startTime","endTime","createTime","updateTime"]);function tl(s,V){return s==null||s===""?V:typeof s=="bigint"?s:BigInt(s)}function ZR(s){return!s||typeof s!="object"?s:{...s,...s.originalTime!==void 0?{originalTime:tl(s.originalTime)}:{}}}function ER(s,V={}){let e=BigInt(Date.now()),l=e*1000n,t={id:String(s),version:tl(V.version,l),createTime:tl(V.createTime,e),updateTime:tl(V.updateTime,e)};for(let[o,R]of Object.entries(V))if(R!==void 0){if(dR.has(o)){t[o]=tl(R);continue}if(o==="attendees"&&Array.isArray(R)){t.attendees=R.map(ZR);continue}t[o]=R}return t}function it(s,V){if(typeof s=="bigint")return s;if(typeof s=="number"){if(!Number.isInteger(s))throw new TypeError(`${V} must be an integer`);return BigInt(s)}if(typeof s=="string"){let e=s.trim();if(/^-?\d+$/.test(e))return BigInt(e);throw new TypeError(`${V} must be an integer or numeric string`)}throw new TypeError(`${V} must be an integer or numeric string`)}function gR(s,V){let e=it(s,"startTime");if(it(V,"endTime")<=e)throw new TypeError("endTime must be greater than startTime")}var pV=class s{constructor(){this.baseUrl="https://internal-api-lark-api.feishu.cn/im/gateway/",this.getCsrfTokenUrl="https://internal-api-lark-api.feishu.cn/accounts/csrf",this.getUserInfoUrl="https://internal-api-lark-api.feishu.cn/accounts/web/user",this.setUserSignatureUrl="https://internal-api-lark-api.feishu.cn/passport/users/details/",this.imageBaseUrl="https://s1-imfile.feishucdn.com/static-resource/image/",this.chatbotBaseUrl="https://open.feishu.cn/open-apis/chatbot/api/",this.botSearchBaseUrl="https://internal-api.feishu.cn/lark/bot/api/"}async getCsrfToken(V){let e=I.buildGetCsrfTokenHeader();e.Cookie=p(V.cookies);let l=De.buildGetCsrfTokenParam(),t=new URL(this.getCsrfTokenUrl);t.search=new URLSearchParams(l).toString();let o=await fetch(t,{method:"POST",headers:e,dispatcher:u}),R=o.headers.getSetCookie(),A="";if(R){for(let a of R)if(a.includes("swp_csrf_token=")){let n=a.match(/swp_csrf_token=([^;]+)/);n&&(A=n[1],V.cookies.swp_csrf_token=n[1])}}return{data:await o.json(),xCsrfToken:A}}async getUserInfo(V,e){let l=I.buildGetUserInfoHeader(e);l.Cookie=p(V.cookies);let t=De.buildGetUserInfoParam(),o=new URL(this.getUserInfoUrl);o.search=new URLSearchParams(t).toString();let A=await(await fetch(o,{headers:l,dispatcher:u})).json(),c=A?.data?.user?.id;return{data:A,userId:c}}async setUserSignature(V,e,l={}){if(!V||!V.cookies||typeof V.cookies!="object")return{success:!1,status:0,error:"auth with cookies is required"};if(typeof e!="string")return{success:!1,status:0,error:"description must be a string"};let{descriptionFlag:t=0}=l;if(!Number.isInteger(t)||t<0)return{success:!1,status:0,error:"descriptionFlag must be a non-negative integer"};let o=I.buildSetUserSignatureHeader();o.Cookie=p(V.cookies);let R={description:e,description_flag:t};try{let A=await fetch(this.setUserSignatureUrl,{method:"PUT",headers:o,body:JSON.stringify(R),signal:AbortSignal.timeout(1e4),dispatcher:u}),c=await A.text(),a;try{a=JSON.parse(c)}catch{a={raw:c}}if(A.status!==200){let n=a?.msg||a?.message||`HTTP ${A.status}`;return{success:!1,status:A.status,error:n,data:a}}return typeof a?.code=="number"&&a.code!==0?{success:!1,status:A.status,error:a.msg||a.message||`API code ${a.code}`,data:a}:{success:!0,status:A.status,data:a}}catch(A){return{success:!1,status:0,error:A.message}}}async getUserProfileCard(V,e){if(!V||!V.cookies||typeof V.cookies!="object")return{success:!1,error:"auth with cookies is required"};if(typeof e!="string"||!/^\d{15,20}$/.test(e))return{success:!1,error:"userId must be a 15-20 digit string"};let l=I.buildGetUserProfileCardHeader();l.Cookie=p(V.cookies);let t=U.buildGetUserProfileCardRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetUserProfileCardResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async searchSome(V,e){let l=I.buildSearchHeader();l.Cookie=p(V.cookies);let t=U.buildSearchRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u}),R=U.decodeSearchResponse(Buffer.from(await o.arrayBuffer()));return{data:R,userAndGroupIds:R}}async createChat(V,e){let l=I.buildCreateChatHeader();l.Cookie=p(V.cookies);let t=U.buildCreateChatRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,dispatcher:u}),R=U.decodeCreateChatResponse(Buffer.from(await o.arrayBuffer()));return{data:{chatId:R},chatId:R}}async createGroup(V,{name:e,description:l,memberIds:t,chatMode:o,iconKey:R}){let A=I.buildCreateGroupHeader();A.Cookie=p(V.cookies);let c=U.buildCreateGroupRequest(A["x-request-id"],{name:e,description:l,memberIds:t,chatMode:o,iconKey:R}),a=await fetch(this.baseUrl,{method:"POST",headers:A,body:c,dispatcher:u}),n=U.decodeCreateChatResponse(Buffer.from(await a.arrayBuffer()));return{success:!!n,data:{chatId:n},chatId:n}}async patchGroupChat(V,e,l={}){let t=I.buildPatchGroupChatHeader();t.Cookie=p(V.cookies);try{let o=U.buildPatchGroupChatRequest(t["x-request-id"],e,l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodePatchGroupChatResponse(Buffer.from(await R.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async sendMessage(V,e,l){let t=I.buildSendMsgHeader();t.Cookie=p(V.cookies);let o=U.buildRichMessageRequest(e,t["x-request-id"],l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,dispatcher:u});return{data:Buffer.from(await R.arrayBuffer()),status:R.status}}async sendFileMessage(V,e,l){let t=I.buildSendMsgHeader();t.Cookie=p(V.cookies);let o=U.buildSendFileMessageRequest(e,t["x-request-id"],l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,dispatcher:u});return{data:Buffer.from(await R.arrayBuffer()),status:R.status}}async sendImageMessage(V,e,l){let t=I.buildSendMsgHeader();t.Cookie=p(V.cookies);let o=U.buildSendImageMessageRequest(e,t["x-request-id"],l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,dispatcher:u});return{data:Buffer.from(await R.arrayBuffer()),status:R.status}}async sendMentionMessage(V,e,l,t){let o=I.buildSendMsgHeader();o.Cookie=p(V.cookies);let R=U.buildMentionMessageRequest(e,o["x-request-id"],l,t),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,dispatcher:u});return{data:Buffer.from(await A.arrayBuffer()),status:A.status}}async sendReply(V,e,l,t={}){let{rootId:o,parentId:R}=t;if(!o||!R)throw new Error("rootId and parentId are required for thread comments");let A=I.buildSendMsgHeader();A.Cookie=p(V.cookies);let c=U.buildReplyRequest(e,A["x-request-id"],l,{rootId:o,parentId:R}),a=await fetch(this.baseUrl,{method:"POST",headers:A,body:c,dispatcher:u});return{data:Buffer.from(await a.arrayBuffer()),status:a.status}}async getUserById(V,e){let l=I.buildGetUserProfileHeader();l.Cookie=p(V.cookies);let t=U.buildGetUserProfileRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`,data:null}:{success:!0,data:U.decodeGetUserProfileResponse(Buffer.from(await o.arrayBuffer()))}}async getUserInfoById(V,e){let l=I.buildGetUserInfoByIdHeader();l.Cookie=p(V.cookies);let t=U.buildGetUserInfoByIdRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetUserInfoByIdResponse(Buffer.from(await o.arrayBuffer()))}async downloadImage(V,e={}){let{size:l="ORIGIN",cryptoInfo:t}=e,o=l==="ORIGIN",R=l==="ORIGIN"?"_ORIGIN":`_${l}`,A=`${this.imageBaseUrl}${V}${R}`;try{let c=await fetch(A,{headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",Referer:""},signal:AbortSignal.timeout(3e4),dispatcher:u});if(c.status!==200)return o?this.downloadImage(V,{size:"MIDDLE_WEBP"}):{success:!1,error:`HTTP ${c.status}`};let a=Buffer.from(await c.arrayBuffer());if(t&&t.secret&&t.nonce)try{a=this.decryptImage(a,t)}catch(d){return o?this.downloadImage(V,{size:"MIDDLE_WEBP"}):{success:!1,error:`Decryption failed: ${d.message}`}}let n=null,h=a.subarray(0,12).toString("hex");if(h.startsWith("89504e47"))n="image/png";else if(h.startsWith("ffd8ff"))n="image/jpeg";else if(h.startsWith("47494638"))n="image/gif";else{let d=a.subarray(0,4).toString("ascii"),E=a.subarray(8,12).toString("ascii");d==="RIFF"&&E==="WEBP"&&(n="image/webp")}return n?{success:!0,data:a,base64:a.toString("base64"),mimeType:n}:o?this.downloadImage(V,{size:"MIDDLE_WEBP"}):{success:!1,error:"Invalid image bytes (unknown magic header)"}}catch(c){return o?this.downloadImage(V,{size:"MIDDLE_WEBP"}):{success:!1,error:c.message}}}decryptImage(V,e){let{secret:l,nonce:t,additionalData:o}=e,R=Buffer.isBuffer(l)?l:Buffer.from(l),A=Buffer.isBuffer(t)?t:Buffer.from(t),c=o?Buffer.isBuffer(o)?o:Buffer.from(o):Buffer.alloc(0),a=16,n=V.subarray(0,V.length-a),h=V.subarray(V.length-a),d=il.createDecipheriv("aes-256-gcm",R,A);return d.setAuthTag(h),c.length>0&&d.setAAD(c),Buffer.concat([d.update(n),d.final()])}async addEmojiReaction(V,e,l){let t=I.buildEmojiReactionHeader();t.Cookie=p(V.cookies);let o=U.buildEmojiReactionRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeEmojiReactionResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async removeEmojiReaction(V,e,l){let t=I.buildRemoveEmojiReactionHeader();t.Cookie=p(V.cookies);let o=U.buildRemoveEmojiReactionRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeRemoveEmojiReactionResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async calendarRsvp(V,e,l,t){let R=typeof t=="string"?{accept:1,decline:2,tentative:3}[t.toLowerCase()]||1:t,A=I.buildCalendarRsvpHeader();A.Cookie=p(V.cookies);let c=U.buildCalendarRsvpRequest(A["x-request-id"],e,l,R),a=await fetch(this.baseUrl,{method:"POST",headers:A,body:c,signal:AbortSignal.timeout(1e4),dispatcher:u}),n=Buffer.from(await a.arrayBuffer());return a.status!==200&&n.length>0?{success:!1,error:U.extractErrorMessage(n)||`HTTP ${a.status}`}:a.status!==200?{success:!1,error:`HTTP ${a.status}`}:U.decodeCalendarRsvpResponse(n)}async replyCalendarEventInvitation(V,e,l,t={}){try{let R=typeof l=="string"?{accept:1,decline:2,tentative:3,delete:4,needs_action:5,"needs-action":5}[l.toLowerCase()]??1:l,A=I.buildCalendarRsvpHeader();A.Cookie=p(V.cookies);let c=U.buildReplyCalendarEventInvitationRequest(A["x-request-id"],e,R,t),a=await fetch(this.baseUrl,{method:"POST",headers:A,body:c,signal:AbortSignal.timeout(1e4),dispatcher:u}),n=Buffer.from(await a.arrayBuffer());if(a.status!==200&&n.length>0){let h=U.decodeReplyCalendarEventInvitationResponse(n);return h.success?{success:!1,error:`HTTP ${a.status}`}:h}return a.status!==200?{success:!1,error:`HTTP ${a.status}`}:U.decodeReplyCalendarEventInvitationResponse(n)}catch(o){return{success:!1,error:o.message}}}async getCalendarEvents(V,e){let l=I.buildCalendarEventDetailHeader();l.Cookie=p(V.cookies);let t=U.buildCalendarEventDetailRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`,events:[]}:U.decodeCalendarEventDetailResponse(Buffer.from(await o.arrayBuffer()))}async createCalendarEvent(V,e,l={},t={}){try{if(typeof e!="string"||e.trim()==="")return{success:!1,error:"calendarId is required"};let o=e.trim();if(!l||typeof l!="object")return{success:!1,error:"params object is required"};if(typeof l.summary!="string"||l.summary.trim()==="")return{success:!1,error:"summary is required"};if(l.startTime===void 0||l.endTime===void 0)return{success:!1,error:"startTime and endTime are required"};gR(l.startTime,l.endTime);let R=I.buildCreateCalendarEventHeader();R.Cookie=p(V.cookies);let A=U.buildCreateCalendarEventRequest(R["x-request-id"],o,l,t),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeCreateCalendarEventResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeCreateCalendarEventResponse(a)}catch(o){return{success:!1,error:o.message}}}async deleteCalendarEvent(V,e,l,t={}){try{let o=I.buildDeleteCalendarEventHeader();o.Cookie=p(V.cookies);let R=U.buildDeleteCalendarEventRequest(o["x-request-id"],e,l,t),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(1e4),dispatcher:u}),c=Buffer.from(await A.arrayBuffer());if(A.status!==200&&c.length>0){let a=U.decodeDeleteCalendarEventResponse(c);return a.success?{success:!1,error:`HTTP ${A.status}`}:a}return A.status!==200?{success:!1,error:`HTTP ${A.status}`}:U.decodeDeleteCalendarEventResponse(c)}catch(o){return{success:!1,error:o.message}}}async updateCalendarEvent(V,e,l={},t={}){try{let o=I.buildUpdateCalendarEventHeader();o.Cookie=p(V.cookies);let R=ER(e,l),A=U.buildUpdateCalendarEventRequest(o["x-request-id"],R,t),c=await fetch(this.baseUrl,{method:"POST",headers:o,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeUpdateCalendarEventResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeUpdateCalendarEventResponse(a)}catch(o){return{success:!1,error:o.message}}}async webListCalendarEvents(V,e,l,t,o={}){try{let R=I.buildWebListCalendarEventsHeader();R.Cookie=p(V.cookies);let A=U.buildWebListCalendarEventsRequest(R["x-request-id"],e,l,t,o),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeWebListCalendarEventsResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeWebListCalendarEventsResponse(a)}catch(R){return{success:!1,error:R.message}}}async createMeetingMinute(V,e,l,t={}){try{let o=I.buildCreateMeetingMinuteHeader();o.Cookie=p(V.cookies);let R=U.buildCreateMeetingMinuteRequest(o["x-request-id"],e,l,t),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(1e4),dispatcher:u}),c=Buffer.from(await A.arrayBuffer());if(A.status!==200&&c.length>0){let a=U.decodeCreateMeetingMinuteResponse(c);return a.success?{success:!1,error:`HTTP ${A.status}`}:a}return A.status!==200?{success:!1,error:`HTTP ${A.status}`}:U.decodeCreateMeetingMinuteResponse(c)}catch(o){return{success:!1,error:o.message}}}async transferCalendarEvent(V,e,l,t,o={}){try{let R=I.buildTransferCalendarEventHeader();R.Cookie=p(V.cookies);let A=U.buildTransferCalendarEventRequest(R["x-request-id"],e,l,t,o),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeTransferCalendarEventResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeTransferCalendarEventResponse(a)}catch(R){return{success:!1,error:R.message}}}async webMgetEventsWithIds(V,e){try{let l=I.buildMgetEventsWithIdsHeader();l.Cookie=p(V.cookies);let t=U.buildMgetEventsWithIdsRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u}),R=Buffer.from(await o.arrayBuffer());if(o.status!==200&&R.length>0){let A=U.decodeMgetEventsWithIdsResponse(R);return A.success?{success:!1,error:`HTTP ${o.status}`}:A}return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeMgetEventsWithIdsResponse(R)}catch(l){return{success:!1,error:l.message}}}async webShareCalendarEvent(V,e,l,t,o={}){try{let R=I.buildWebShareCalendarEventHeader();R.Cookie=p(V.cookies);let A=U.buildWebShareCalendarEventRequest(R["x-request-id"],e,l,t,o),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeWebShareCalendarEventResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeWebShareCalendarEventResponse(a)}catch(R){return{success:!1,error:R.message}}}async upgradeToMeeting(V,e,l={}){try{let t=I.buildUpgradeToMeetingHeader();t.Cookie=p(V.cookies);let o=U.buildUpgradeToMeetingRequest(t["x-request-id"],e,l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u}),A=Buffer.from(await R.arrayBuffer());if(R.status!==200&&A.length>0){let c=U.decodeUpgradeToMeetingResponse(A);return c.success?{success:!1,error:`HTTP ${R.status}`}:c}return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeUpgradeToMeetingResponse(A)}catch(t){return{success:!1,error:t.message}}}async getBusyUser(V,e,l,t,o={}){try{let R=I.buildGetBusyUserHeader();R.Cookie=p(V.cookies);let A=U.buildGetBusyUserRequest(R["x-request-id"],e,l,t,o),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeGetBusyUserResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeGetBusyUserResponse(a)}catch(R){return{success:!1,error:R.message}}}async pullSmartReplyResourcesViaCmd77(V,e=[]){let l=[...new Set((e||[]).map(R=>String(R||"").trim()).filter(R=>/^img_v[23]_/.test(R)))];if(l.length===0)return{success:!0,requested:0,cachedCount:0,mode:"skip"};let t=l.filter(R=>!bt(R));if(t.length===0)return{success:!0,requested:0,cachedCount:0,mode:"skip"};let o="";try{let R=I.buildCmd77Header();R.Cookie=p(V.cookies);let A=U.buildCmd77PullSmartReplyResourceRequest(R["x-request-id"],t),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(15e3),dispatcher:u});if(c.status===200){let a=U.cacheImageCryptoFromGatewayResponseBuffer(Buffer.from(await c.arrayBuffer()));if(a>0)return{success:!0,requested:t.length,cachedCount:a,mode:"cmd77"};o="cmd=77 returned no crypto info"}else o="cmd=77 HTTP "+c.status}catch(R){o="cmd=77 error: "+R.message}try{let R=I.buildPullSmartReplyResourceHeader();R.Cookie=p(V.cookies);let A=U.buildPullSmartReplyResourceRequest(R["x-request-id"],t),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(15e3),dispatcher:u});if(c.status===200){let a=U.cacheImageCryptoFromGatewayResponseBuffer(Buffer.from(await c.arrayBuffer()));return a>0?{success:!0,requested:t.length,cachedCount:a,mode:"cmd1105047"}:{success:!1,requested:t.length,cachedCount:0,mode:"cmd1105047",error:(o?o+"; ":"")+"cmd=1105047 returned no crypto info"}}return{success:!1,requested:t.length,cachedCount:0,mode:"cmd1105047",error:(o?o+"; ":"")+"cmd=1105047 HTTP "+c.status}}catch(R){return{success:!1,requested:t.length,cachedCount:0,mode:"cmd1105047",error:(o?o+"; ":"")+"cmd=1105047 error: "+R.message}}}async getChatMeta(V,e){let l=I.buildGetChatMetaHeader();l.Cookie=p(V.cookies);let t=U.buildGetChatMetaRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(15e3),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`,chat:null}:U.decodeGetChatMetaResponse(Buffer.from(await o.arrayBuffer()))}async getChatHistory(V,e,l={}){let t=l.positions;if(!t||t.length===0){let a=l.startPosition,n=l.count||20;if(!Number.isInteger(a)||a<=0){let h=await this.getChatMeta(V,e);h.success&&h.chat?.lastMessagePosition>0&&(a=h.chat.lastMessagePosition)}(!Number.isInteger(a)||a<=0)&&(a=100),t=[];for(let h=0;h<n;h++)t.push(a-h)}if(t=t.filter(a=>Number.isInteger(a)&&a>0),t.length===0)return{success:!1,error:"No valid positions provided",messages:[]};let o=I.buildGetChatHistoryHeader();o.Cookie=p(V.cookies);let R=U.buildGetChatHistoryRequest(o["x-request-id"],e,t),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(15e3),dispatcher:u});if(A.status!==200)return{success:!1,error:`HTTP ${A.status}`,messages:[]};let c=U.decodeGetChatHistoryResponse(Buffer.from(await A.arrayBuffer()));if(c.success){let a=[...new Set((c.messages||[]).flatMap(n=>Array.isArray(n?.imageKeys)&&n.imageKeys.length>0?n.imageKeys:n?.imageKey?[n.imageKey]:[]).map(n=>String(n||"").trim()).filter(n=>/^img_v[23]_/.test(n)))];if(a.length>0)try{let n=await this.pullSmartReplyResourcesViaCmd77(V,a);n.success?n.cachedCount>0?N.log("[FeishuApi] \u2705 \u5DF2\u7F13\u5B58\u56FE\u7247\u52A0\u5BC6\u4FE1\u606F: "+n.cachedCount+"/"+n.requested+" ("+n.mode+")"):n.requested>0&&N.warn("[FeishuApi] \u26A0\uFE0F \u56FE\u7247\u52A0\u5BC6\u4FE1\u606F\u672A\u547D\u4E2D: requested="+n.requested+" mode="+n.mode):N.warn("[FeishuApi] \u26A0\uFE0F \u56FE\u7247\u52A0\u5BC6\u4FE1\u606F\u62C9\u53D6\u5931\u8D25:",n.error||"unknown error")}catch(n){N.warn("[FeishuApi] \u26A0\uFE0F cmd=77 \u62C9\u53D6\u56FE\u7247\u52A0\u5BC6\u4FE1\u606F\u5F02\u5E38:",n.message)}}return c}async markChatRead(V,e,l){let t=I.buildMarkChatReadHeader();t.Cookie=p(V.cookies);let o=U.buildMarkChatReadRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeMarkChatReadResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async pinSession(V,e){let l=I.buildPinSessionHeader();l.Cookie=p(V.cookies);let t=U.buildPinSessionRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodePinSessionResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async unpinSession(V,e){let l=I.buildUnpinSessionHeader();l.Cookie=p(V.cookies);let t=U.buildUnpinSessionRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeUnpinSessionResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async markSession(V,e){let l=I.buildMarkSessionHeader();l.Cookie=p(V.cookies);let t=U.buildMarkSessionRequest(l["x-request-id"],e,!0);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeMarkSessionResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async unmarkSession(V,e){let l=I.buildMarkSessionHeader();l.Cookie=p(V.cookies);let t=U.buildMarkSessionRequest(l["x-request-id"],e,!1);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeMarkSessionResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async getUserRelation(V,e){let l=I.buildGetUserRelationHeader();l.Cookie=p(V.cookies);let t=U.buildGetUserRelationRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetUserRelationResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async getUserPresence(V,e){let l=I.buildGetUserPresenceHeader();l.Cookie=p(V.cookies);let t=U.buildGetUserPresenceRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetUserPresenceResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async getConfig(V,e){let l=I.buildGetConfigHeader();l.Cookie=p(V.cookies);let t=U.buildGetConfigRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetConfigResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async getFeatureFlags(V,e={}){let l=I.buildGetFeatureFlagsHeader();l.Cookie=p(V.cookies);let t=U.buildGetFeatureFlagsRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetFeatureFlagsResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async saveContactAlias(V,e,l={}){let t=I.buildSaveContactAliasHeader();t.Cookie=p(V.cookies);let o=U.buildSaveContactAliasRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeSaveContactAliasResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async syncContactInfo(V,e){let l=I.buildContactInfoSyncHeader();l.Cookie=p(V.cookies);let t=U.buildContactInfoSyncRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeContactInfoSyncResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async createThread(V,e){let l=I.buildCreateThreadHeader();l.Cookie=p(V.cookies);let t=U.buildCreateThreadRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeCreateThreadResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async forwardMessage(V,e){let l=I.buildPutTransmitMessageHeader();l.Cookie=p(V.cookies);let t=U.buildPutTransmitMessageRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodePutTransmitMessageResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async searchInChat(V,e,l,t={}){let o=I.buildSearchHeader();o.Cookie=p(V.cookies);let R=U.buildSearchInChatRequest(o["x-request-id"],e,l,t);try{let A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(1e4),dispatcher:u});if(A.status!==200)return{success:!1,error:`HTTP ${A.status}`};let c=U.decodeSearchInChatResponse(Buffer.from(await A.arrayBuffer()));return{success:!0,data:c,results:c}}catch(A){return{success:!1,error:A.message}}}async putUrgent(V,e,l,t,o,R={}){let A=I.buildPutUrgentHeader();A.Cookie=p(V.cookies);let c=U.buildPutUrgentRequest(A["x-request-id"],e,l,t,o,R);try{let a=await fetch(this.baseUrl,{method:"POST",headers:A,body:c,signal:AbortSignal.timeout(1e4),dispatcher:u});return a.status!==200?{success:!1,error:`HTTP ${a.status}`}:U.decodePutUrgentResponse(Buffer.from(await a.arrayBuffer()))}catch(a){return{success:!1,error:a.message}}}async pullUrgentAckStatus(V,e,l){let t=I.buildPullUrgentAckStatusHeader();t.Cookie=p(V.cookies);let o=U.buildPullUrgentAckStatusRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodePullUrgentAckStatusResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async putScheduleMessage(V,e,l,t,o={}){let R=I.buildPutScheduleMessageHeader();R.Cookie=p(V.cookies);let A=U.buildPutScheduleMessageRequest(R["x-request-id"],e,l,t,o);try{let c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u});return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodePutScheduleMessageResponse(Buffer.from(await c.arrayBuffer()))}catch(c){return{success:!1,error:c.message}}}async patchScheduleMessage(V,e,l,t,o={}){let R=I.buildPatchScheduleMessageHeader();R.Cookie=p(V.cookies);let A=U.buildPatchScheduleMessageRequest(R["x-request-id"],e,l,t,o);try{let c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u});return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodePatchScheduleMessageResponse(Buffer.from(await c.arrayBuffer()))}catch(c){return{success:!1,error:c.message}}}async pullScheduleMessageByIds(V,e,l){let t=I.buildPullScheduleMessageByIdsHeader();t.Cookie=p(V.cookies);let o=U.buildPullScheduleMessageByIdsRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodePullScheduleMessageByIdsResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async pullChatScheduleMessages(V,e,l={}){let t=I.buildPullChatScheduleMessagesHeader();t.Cookie=p(V.cookies);let o=U.buildPullChatScheduleMessagesRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodePullChatScheduleMessagesResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async _upload(V,e,l){let{uploadKey:t,createOptions:o={},completeOptions:R={},chunkSize:A=4194304}=l;if(!Number.isInteger(A)||A<=0)return{success:!1,error:`Invalid chunkSize: ${A}`};let c="https://internal-api-lark-file.feishu.cn",a=p(V.cookies),n=U.buildUploadCreateRequest(t,o),h=I.buildUploadCreateHeader();h.Cookie=a;let d=[];try{let W=await fetch(`${c}/upload/create`,{method:"POST",headers:h,body:n,signal:AbortSignal.timeout(1e4),dispatcher:u});if(W.status!==200)return{success:!1,error:`Upload create failed: HTTP ${W.status}`};let m=U.decodeUploadCreateResponse(Buffer.from(await W.arrayBuffer()));if(!m.success)return m}catch(W){return{success:!1,error:`Upload create error: ${W.message}`}}let E=Math.ceil(e.length/A),g=I.buildUploadPartHeader();g.Cookie=a;for(let W=0;W<E;W++){let m=W*A,r=e.slice(m,m+A),i=W+1,Q=`${c}/upload/part?upload_id=${encodeURIComponent(t)}&part_id=${i}&offset=${m}`;try{let Y=await fetch(Q,{method:"POST",headers:g,body:r,signal:AbortSignal.timeout(3e4),dispatcher:u});if(Y.status!==200)return{success:!1,error:`Upload part ${i} failed: HTTP ${Y.status}`};let T=U.decodeUploadPartResponse(Buffer.from(await Y.arrayBuffer()));if(!T.success)return{success:!1,error:`Upload part ${i} decode failed: ${T.error}`};if(T.id===void 0||T.version===void 0)return{success:!1,error:`Upload part ${i} missing id or version`};d.push({id:T.id,version:T.version})}catch(Y){return{success:!1,error:`Upload part ${i} error: ${Y.message}`}}}let X=U.buildUploadCompleteRequest(t,d,R),G=I.buildUploadCreateHeader();G.Cookie=a;try{let W=await fetch(`${c}/upload/complete`,{method:"POST",headers:G,body:X,signal:AbortSignal.timeout(1e4),dispatcher:u});return W.status!==200?{success:!1,error:`Upload complete failed: HTTP ${W.status}`}:U.decodeUploadCompleteResponse(Buffer.from(await W.arrayBuffer()))}catch(W){return{success:!1,error:`Upload complete error: ${W.message}`}}}async uploadImage(V,e,l={}){return this._upload(V,e,{uploadKey:U.generateUploadKey("image"),createOptions:{type:0},completeOptions:{},chunkSize:l.chunkSize})}async uploadFile(V,e,l,t={}){let{mimeType:o="application/octet-stream"}=t,R=Buffer.from(vV(e)),A=il.randomBytes(16);return this._upload(V,e,{uploadKey:U.generateUploadKey("file"),createOptions:{fileType:1,filename:l,fileSize:e.length,blake3Hash:R,secondaryId:A},completeOptions:{filename:l,mimeType:o},chunkSize:t.chunkSize})}async _jsonPost(V,e,l){let t={"content-type":"application/json",Cookie:p(e.cookies)};try{let o=await fetch(V,{method:"POST",headers:t,body:JSON.stringify(l),signal:AbortSignal.timeout(1e4),dispatcher:u});if(o.status!==200)return{success:!1,error:`HTTP ${o.status}`};let R=await o.json();return R.code!==0?{success:!1,error:R.msg||`code ${R.code}`,code:R.code}:{success:!0,data:R.data}}catch(o){return{success:!1,error:o.message}}}async _docsJsonPost(V,e,l){let t=il.randomBytes(6).toString("base64url"),o=new URL(V),R={"content-type":"application/json;charset=UTF-8",Cookie:p(e.cookies),"x-csrftoken":e.cookies._csrf_token||e.cookies.swp_csrf_token||"","ccm-scene":"web","x-lgw-app-id":"1161","x-lgw-os-type":"3","x-lgw-terminal-type":"2","x-lsc-bizid":"2","x-lsc-terminal":"web","x-lsc-version":"1","request-id":t,"x-request-id":t,Referer:`${o.origin}/`,Origin:o.origin};try{let A=await fetch(V,{method:"POST",headers:R,body:JSON.stringify(l),signal:AbortSignal.timeout(1e4),dispatcher:u});if(A.status!==200)return{success:!1,error:`HTTP ${A.status}`};let c=await A.json();return c.code!==0?{success:!1,error:c.msg||`code ${c.code}`,code:c.code}:{success:!0,data:c.data}}catch(A){return{success:!1,error:A.message}}}async createWebhookBot(V,e,l,t,o={}){let R={name:l,description:t,bot_type_id:"444",chat_id:e,i18n:o.i18n||"zh_CN"};return o.userId&&(R.user_id=o.userId),o.avatarKey&&(R.avatar_key=o.avatarKey),o.avatarType!==void 0&&(R.avatar_type=o.avatarType),this._jsonPost(this.chatbotBaseUrl+"CreateWebhookBot",V,R)}async getWebhookBotInfo(V,e,l={}){return this._jsonPost(this.chatbotBaseUrl+"GetWebhookBotInfo",V,{bot_id:e,i18n:l.i18n||"zh_CN"})}async updateWebhookBot(V,e,l={}){let t={bot_id:e,i18n:l.i18n||"zh_CN"};return l.name&&(t.name=l.name),l.description&&(t.description=l.description),l.avatarKey&&(t.avatar_key=l.avatarKey),l.avatarType!==void 0&&(t.avatar_type=l.avatarType),this._jsonPost(this.chatbotBaseUrl+"UpdateWebhookBotInfo",V,t)}async getSignature(V,e){return this._jsonPost(this.chatbotBaseUrl+"GetSignature",V,{bot_id:e})}async deleteBot(V,e,l,t={}){return this._jsonPost(this.chatbotBaseUrl+"DeleteBotResource",V,{chat_id:e,bot_id:l,i18n:t.i18n||"zh_CN"})}async addBotToChat(V,e,l,t={}){return this._jsonPost(this.chatbotBaseUrl+"SetBotAddConf",V,{chat_id:e,bot_id:l,check_mender:t.checkMender||!1,i18n:t.i18n||"zh_CN"})}async updateAppBotInfo(V,e,l,t={}){return this._jsonPost(this.chatbotBaseUrl+"UpdateAppBotInfo",V,{chat_id:e,bot_id:l,check_mender:t.checkMender!==void 0?t.checkMender:!0,i18n:t.i18n||"zh_CN"})}async fetchBotAddConf(V,e,l={}){return this._jsonPost(this.chatbotBaseUrl+"fetch_bot_add_conf",V,{bot_id:e,i18n:l.i18n||"zh_CN"})}async fetchBotConfResource(V,e,l,t={}){return this._jsonPost(this.chatbotBaseUrl+"fetch_bot_conf_resource",V,{bot_id:e,chat_id:l,i18n:t.i18n||"zh_CN"})}async listCandidateBots(V,e,l={}){return this._jsonPost(this.botSearchBaseUrl+"pull_chat_candidate_bots",V,{chat_id:e,locale:l.locale||"zh_CN"})}async searchBots(V,e,l,t={}){return this._jsonPost(this.botSearchBaseUrl+"search_v2",V,{query:l,chat_id:e,locale:t.locale||"zh_CN"})}async getBaikeCard(V,e,l,t={}){let o=I.buildGetBaikeCardHeader();o.Cookie=p(V.cookies);let R=U.buildGetBaikeCardRequest(o["x-request-id"],e,l,{entityType:t.entityType,chatId:t.chatId,messageId:t.messageId}),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(15e3),dispatcher:u});if(A.status!==200)return{success:!1,error:`HTTP ${A.status}`};let c=Buffer.from(await A.arrayBuffer()),a=U.decodeGetBaikeCardResponse(c);return a.success&&a.html&&(a.info=U.extractBaikeCardInfo(a.html)),a}async getBaikeRecommendDocs(V,e,l={}){let t=I.buildGetBaikeRecommendDocsHeader();t.Cookie=p(V.cookies);let o=U.buildGetBaikeRecommendDocsRequest(t["x-request-id"],e,l.entityType??1),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(15e3),dispatcher:u});if(R.status!==200)return{success:!1,error:`HTTP ${R.status}`};let A=Buffer.from(await R.arrayBuffer());return U.decodeGetBaikeRecommendDocsResponse(A)}async searchGuests(V,e,l={}){try{let t=I.buildSearchGuestsHeader();t.Cookie=p(V.cookies);let o=U.buildSearchGuestsRequest(t["x-request-id"],e,l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u}),A=Buffer.from(await R.arrayBuffer());if(R.status!==200&&A.length>0){let c=U.decodeSearchGuestsResponse(A);return c.success?{success:!1,error:`HTTP ${R.status}`}:c}return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeSearchGuestsResponse(A)}catch(t){return{success:!1,error:t.message}}}async searchMeetingRooms(V,e,l,t={}){try{let o=I.buildSearchMeetingRoomsHeader();o.Cookie=p(V.cookies);let R=U.buildSearchMeetingRoomsRequest(o["x-request-id"],e,l,t),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(1e4),dispatcher:u}),c=Buffer.from(await A.arrayBuffer());if(A.status!==200&&c.length>0){let a=U.decodeSearchMeetingRoomsResponse(c);return a.success?{success:!1,error:`HTTP ${A.status}`}:a}return A.status!==200?{success:!1,error:`HTTP ${A.status}`}:U.decodeSearchMeetingRoomsResponse(c)}catch(o){return{success:!1,error:o.message}}}async pullBuildings(V,e={}){try{let l=I.buildPullBuildingsHeader();l.Cookie=p(V.cookies);let t=U.buildPullBuildingsRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u}),R=Buffer.from(await o.arrayBuffer());if(o.status!==200&&R.length>0){let A=U.decodePullBuildingsResponse(R);return A.success?{success:!1,error:`HTTP ${o.status}`}:A}return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodePullBuildingsResponse(R)}catch(l){return{success:!1,error:l.message}}}async pullMeetingRoomsInBuilding(V,e,l,t,o={}){try{let R=I.buildPullMeetingRoomsInBuildingHeader();R.Cookie=p(V.cookies);let A=U.buildPullMeetingRoomsInBuildingRequest(R["x-request-id"],e,l,t,o),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodePullMeetingRoomsInBuildingResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodePullMeetingRoomsInBuildingResponse(a)}catch(R){return{success:!1,error:R.message}}}async getPlaceTips(V,e,l={}){try{let t=I.buildGetPlaceTipsHeader();t.Cookie=p(V.cookies);let o=U.buildGetPlaceTipsRequest(t["x-request-id"],e,l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u}),A=Buffer.from(await R.arrayBuffer());if(R.status!==200&&A.length>0){let c=U.decodeGetPlaceTipsResponse(A);return c.success?{success:!1,error:`HTTP ${R.status}`}:c}return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeGetPlaceTipsResponse(A)}catch(t){return{success:!1,error:t.message}}}async multiCalendarSearch(V,e,l={}){try{let t=I.buildMultiCalendarSearchHeader();t.Cookie=p(V.cookies);let o=U.buildMultiCalendarSearchRequest(t["x-request-id"],e,l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u}),A=Buffer.from(await R.arrayBuffer());if(R.status!==200&&A.length>0){let c=U.decodeMultiCalendarSearchResponse(A);return c.success?{success:!1,error:`HTTP ${R.status}`}:c}return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeMultiCalendarSearchResponse(A)}catch(t){return{success:!1,error:t.message}}}async pullTenantsByIds(V,e){try{let l=I.buildPullTenantsByIdsHeader();l.Cookie=p(V.cookies);let t=U.buildPullTenantsByIdsRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u}),R=Buffer.from(await o.arrayBuffer());if(o.status!==200&&R.length>0){let c=U.decodePullTenantsByIdsResponse(R);return c.success?{success:!1,error:`HTTP ${o.status}`}:c}if(o.status!==200)return{success:!1,error:`HTTP ${o.status}`};let A=U.decodePullTenantsByIdsResponse(R);return A.success?{success:!0,data:{tenants:A.tenants}}:A}catch(l){return{success:!1,error:l.message}}}static _validateFeishuOrigin(V){try{let{hostname:e,protocol:l}=new URL(V);return l!=="https:"?{valid:!1,error:`Origin must use HTTPS, got: ${l}`}:/\.(feishu\.cn|larksuite\.com)$/.test(e)?{valid:!0}:{valid:!1,error:`Origin must be a *.feishu.cn or *.larksuite.com domain, got: ${e}`}}catch{return{valid:!1,error:`Invalid origin URL: ${V}`}}}async _jsonGet(V,e,l={}){let t=new URL(V);for(let[R,A]of Object.entries(l))A!=null&&t.searchParams.set(R,String(A));let o={accept:"application/json, text/plain, */*",Cookie:p(e.cookies),"x-csrf-token":e.cookies.swp_csrf_token||e.cookies._csrf_token||""};try{let R=await fetch(t.href,{method:"GET",headers:o,signal:AbortSignal.timeout(15e3),dispatcher:u});if(R.status!==200)return{success:!1,error:`HTTP ${R.status}`};let A=await R.json();return A.code!==0?{success:!1,error:A.msg||`code ${A.code}`,code:A.code}:{success:!0,data:A.data}}catch(R){return{success:!1,error:R.message}}}async resolveWikiToken(V,e,l){let o=`${new URL(e).origin}/wiki/${encodeURIComponent(l)}`,R={accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",Cookie:p(V.cookies)};try{let A=o,c=5;for(let a=0;a<=c;a++){let n=await fetch(A,{method:"GET",headers:R,signal:AbortSignal.timeout(15e3),redirect:"manual",dispatcher:u});if(n.status>=300&&n.status<400){let d=n.headers.get("location");if(!d)return{success:!1,error:`Redirect with no Location header (HTTP ${n.status})`};if(a===c)return{success:!1,error:`Too many redirects (>${c})`};A=new URL(d,A).href;continue}if(n.status!==200)return{success:!1,error:`HTTP ${n.status}`};let h=await n.text();return s._parseWikiHtml(h)}return{success:!1,error:`Too many redirects (>${c})`}}catch(A){return{success:!1,error:A.message}}}static _parseWikiHtml(V){let e=/window\.current_space_wiki\s*=\s*Object\s*\(\s*\{/,l=V.match(e);if(!l)return{success:!1,error:"Cannot find window.current_space_wiki in SSR HTML"};let t=V.indexOf("{",l.index+l[0].length-1),o=s._findBalancedObject(V,t);if(!o)return{success:!1,error:"Cannot parse window.current_space_wiki object"};let R;try{R=JSON.parse(o)}catch{if(R=s._parseJsObjectLiteral(o),!R)return{success:!1,error:"Cannot parse current_space_wiki object literal"}}return!R.obj_token||R.obj_type===void 0?{success:!1,error:"current_space_wiki missing required fields (obj_token, obj_type)"}:{success:!0,data:{objToken:R.obj_token,objType:R.obj_type,spaceId:R.space_id,wikiToken:R.wiki_token,wikiVersion:R.wiki_version}}}static _findBalancedObject(V,e){let l=0,t=null,o=!1;for(let R=e;R<V.length;R++){let A=V[R];if(t){o?o=!1:A==="\\"?o=!0:A===t&&(t=null);continue}if(A==='"'||A==="'"){t=A;continue}if(A==="{"){l++;continue}if(A==="}"&&(l--,l===0))return V.slice(e,R+1)}return null}static _parseJsObjectLiteral(V){let e={},l=1,t=V.length-1;for(;l<t;){for(;l<t&&/[\s,]/.test(V[l]);)l++;if(l>=t)break;let o;if(V[l]==='"'||V[l]==="'"){let R=V[l++],A=l;for(;l<t;){if(V[l]==="\\"){l+=2;continue}if(V[l]===R)break;l++}o=V.slice(A,l),l++}else{let R=l;for(;l<t&&/\w/.test(V[l]);)l++;o=V.slice(R,l)}if(!o)return null;for(;l<t&&V[l]===" ";)l++;if(V[l]!==":")return null;for(l++;l<t&&V[l]===" ";)l++;if(V[l]==='"'||V[l]==="'"){let R=V[l++],A=l;for(;l<t;){if(V[l]==="\\"){l+=2;continue}if(V[l]===R)break;l++}e[o]=V.slice(A,l),l++}else if(V[l]==="{"){let R=1;for(l++;l<t&&R>0;){if(V[l]==='"'||V[l]==="'"){let A=V[l++];for(;l<t&&V[l]!==A;)V[l]==="\\"&&l++,l++}else V[l]==="{"?R++:V[l]==="}"&&R--;l++}}else if(V[l]==="["){let R=1;for(l++;l<t&&R>0;){if(V[l]==='"'||V[l]==="'"){let A=V[l++];for(;l<t&&V[l]!==A;)V[l]==="\\"&&l++,l++}else V[l]==="["?R++:V[l]==="]"&&R--;l++}}else{let R=l;for(;l<t&&/[^\s,}]/.test(V[l]);)l++;let A=V.slice(R,l);e[o]=/^-?\d+(\.\d+)?$/.test(A)?Number(A):A}}return Object.keys(e).length>0?e:null}async getDocxBlockTree(V,e,l,t={}){let o=t.mode??0,R=t.limit??200,A=t.maxPages??100,a=`${new URL(e).origin}/space/api/docx/pages/client_vars`,n={},h=[],d=null,E=[],g=null,X=new Set,G=!1;try{for(let m=0;m<A;m++){let r={id:l,mode:o,limit:R};g&&(r.cursor=g);let i=await this._jsonGet(a,V,r);if(!i.success)return i;let Q=i.data||{},Y=Q.block_map||{};if(Object.assign(n,Y),Q.block_sequence&&(h=h.concat(Q.block_sequence)),Q.structure_version!==void 0&&(d=Q.structure_version),Q.skip_blocks&&(E=E.concat(Q.skip_blocks)),!Q.has_more){G=!1;break}if(!Q.cursor)return{success:!1,error:"API returned has_more=true but no cursor"};if(G=!0,X.has(Q.cursor))return{success:!1,error:`Pagination loop detected: cursor ${Q.cursor} repeated`};X.add(Q.cursor),g=Q.cursor}if(G)return{success:!1,error:`Exceeded maxPages (${A}) while paginating docx blocks`};let W=s._buildBlockTree(l,n);return W.missing?{success:!1,error:`Root block ${l} not found in API response`}:{success:!0,data:{token:l,structureVersion:d,totalBlocks:Object.keys(n).length,skipBlocks:E,blockSequence:h,tree:W,rawBlockMap:n}}}catch(W){return{success:!1,error:W.message}}}async submitDocxChange(V,e,l,t,o){let A=`${new URL(e).origin}/space/api/docx/blocks/user_change`,c={member_id:t,uuid:il.randomUUID(),page_id:l,change_map:o};return this._docsJsonPost(A,V,c)}static _extractPlainText(V){let e=V?.data?.text?.initialAttributedTexts?.text;return e?typeof e=="string"?e:Object.entries(e).sort(([l],[t])=>Number(l)-Number(t)).map(([,l])=>l).join(""):""}static _buildBlockTree(V,e){function l(t,o=new Set){let R=e[t];if(!R)return{id:t,missing:!0};if(o.has(t))return{id:t,cycle:!0,children:[]};let A=R.data||{},c=Array.isArray(A.children)?A.children:[],a=new Set(o);return a.add(t),{id:R.id,type:A.type||null,version:R.version,parentId:A.parent_id||null,text:s._extractPlainText(R),children:c.map(n=>l(n,a))}}return l(V)}},de=pV;import FR from"ws";import{ungzip as SR}from"pako";var IV=class{constructor(V,e={}){this.baseUrl="wss://msg-frontier.feishu.cn/ws/v2",this.auth=V,this.meId=null,this.ws=null,this.messageHandlers=[],this.eventHandlers=[],this.processedMessages=new Map,this.MESSAGE_CACHE_EXPIRY_MS=300*1e3,this.MAX_CACHE_SIZE=1e4,this.autoReconnect=e.autoReconnect!==!1,this.reconnectBaseDelay=e.reconnectBaseDelay||1e3,this.reconnectMaxDelay=e.reconnectMaxDelay||3e4,this.reconnectAttempts=0,this.reconnectTimer=null,this.shouldReconnect=!1}setMeId(V){this.meId=String(V)}sendAck(V,e){let l=U.buildAckPacket(e);V.send(l)}onMessage(V){this.messageHandlers.push(V)}onEvent(V){this.eventHandlers.push(V)}isDuplicateMessage(V){let{messageId:e,sid:l}=V,t=e||l;if(!t)return!1;let o=Date.now();return this.processedMessages.has(t)?!0:(this.processedMessages.set(t,o),this.processedMessages.size>this.MAX_CACHE_SIZE&&this.cleanupMessageCache(),!1)}cleanupMessageCache(){let V=Date.now(),e=0;for(let[l,t]of this.processedMessages)V-t>this.MESSAGE_CACHE_EXPIRY_MS&&(this.processedMessages.delete(l),e++);if(this.processedMessages.size>this.MAX_CACHE_SIZE){let l=Array.from(this.processedMessages.entries());l.sort((o,R)=>o[1]-R[1]);let t=Math.floor(l.length/2);for(let o=0;o<t;o++)this.processedMessages.delete(l[o][0]),e++}e>0&&N.log(`[WS] Cleaned ${e} expired message cache entries, current cache size: ${this.processedMessages.size}`)}scheduleReconnect(){if(!this.autoReconnect||!this.shouldReconnect)return;let V=Math.min(this.reconnectBaseDelay*Math.pow(2,this.reconnectAttempts),this.reconnectMaxDelay);this.reconnectAttempts++,N.log(`[WS] Reconnecting in ${V/1e3}s (attempt ${this.reconnectAttempts})...`),this.reconnectTimer=setTimeout(async()=>{if(this.shouldReconnect)try{await this.connect()}catch(e){N.error("[WS] Reconnect failed:",e.message),this.scheduleReconnect()}},V)}async connect(){let V=await De.buildReceiveMsgParam(this.auth),e=Object.entries(V).map(([t,o])=>`${encodeURIComponent(t)}=${encodeURIComponent(o)}`).join("&"),l=`${this.baseUrl}?${e}`;return N.log("[WS] Connecting..."),new Promise((t,o)=>{this.ws=new FR(l,{headers:{Origin:"https://open-dev.feishu.cn","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}}),this.ws.on("open",()=>{N.log("[WS] Connected"),this.reconnectAttempts=0,t()}),this.ws.on("message",async R=>{try{let A;R[0]===31&&R[1]===139?A=SR(R):A=R;let c=U.decodeReceiveMessage(A);c.sid&&this.sendAck(this.ws,c.sid),await this.handleMessage(c)}catch(A){N.error("[WS] Error processing message:",A)}}),this.ws.on("close",(R,A)=>{N.log(`[WS] Disconnected: code=${R}`),this.ws=null,this.shouldReconnect&&this.scheduleReconnect()}),this.ws.on("error",R=>{N.error("[WS] Error:",R.message),o(R)})})}async handleMessage(V){let{command:e}=V;if(e&&e!==6){let G=CV[e]||"UNKNOWN",W=V.event||G;e!==200&&e!==6e3&&N.log(`[WS] Event | cmd=${e} | ${G} | ${W}`);for(let m of this.eventHandlers)try{await m(V,this)}catch(r){N.error("[WS] Event handler error:",r)}return}let{fromId:l,chatId:t,type:o,fromType:R,chatType:A,threadId:c,messageId:a}=V;if(this.isDuplicateMessage(V)){N.log(`[WS] Skipping duplicate message messageId=${a||"N/A"}`);return}let n=rt(A),h=uV(R),d=iV(o),E=c?` thread=${c}`:"",{content:g}=V,X=g&&g.length>50?g.substring(0,50)+"...":g||"";if(t&&N.log(`[WS] Message | ${n} | ${h} | ${d} | chat=${t} | from=${l}${E}: ${X}`),t)for(let G of this.messageHandlers)try{await G(V,this)}catch(W){N.error("[WS] Error in message handler:",W)}}async start(){this.shouldReconnect=!0,await this.connect()}stop(){this.shouldReconnect=!1,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnectAttempts=0,this.ws&&(this.ws.close(),this.ws=null),this.processedMessages.clear()}},pt=IV;import XR from"crypto";function Qe(s){return s.toString(36)}function QV(s,V){if(!s)return{changeset:"Z:0>0$",apool:NV(V)};let e=Qe(s.length);return{changeset:`Z:0>${e}*0+${e}$${s}`,apool:NV(V)}}function It(s,V,e){if(s===0)return QV(V,e);let l=V.length,t=l-s,o=Qe(s),R=t>=0?`>${Qe(t)}`:`<${Qe(-t)}`,A=`-${o}`,c=l>0?`*0+${Qe(l)}`:"",a=l>0?`$${V}`:"$";return{changeset:`Z:${o}${R}${A}${c}${a}`,apool:NV(e)}}function Nt(s,V){if(!s)return{initialAttributedTexts:{text:{0:""},attribs:{0:""}},apool:{numToAttrib:{},nextNum:0}};let e=Qe(s.length);return{initialAttributedTexts:{text:{0:s},attribs:{0:`*0+${e}`}},apool:{numToAttrib:{0:["author",V]},nextNum:1}}}function NV(s){return{numToAttrib:{0:["author",s]},nextNum:1,attribToNum:{[`author,${s}`]:0}}}var YV=class s{constructor(V,e,l,t){this.api=V,this.auth=e,this.origin=l,this.pageId=t,this.blockMap=null,this.structureVersion=null,this.memberId=null,this.authorId=null,this._opened=!1}async open(){let V=await this.api.getDocxBlockTree(this.auth,this.origin,this.pageId);if(!V.success)return{success:!1,error:V.error};this.blockMap=V.data.rawBlockMap,this.structureVersion=V.data.structureVersion,this.memberId=s._generateMemberId(),this.authorId="";for(let e of Object.values(this.blockMap))if(e.data?.author){this.authorId=e.data.author;break}return this._opened=!0,{success:!0,data:{blockCount:Object.keys(this.blockMap).length,structureVersion:this.structureVersion}}}getBlockTree(){return this._assertOpen(),de._buildBlockTree(this.pageId,this.blockMap)}getBlock(V){return this._assertOpen(),this.blockMap[V]||null}async insertBlock(V,e,l,t={}){this._assertOpen();let o=this.blockMap[V];if(!o)return{success:!1,error:`Parent block ${V} not found`};let R=o.data?.children||[];if(e<0||e>R.length)return{success:!1,error:`Position ${e} out of bounds (0-${R.length})`};let A=s._generateBlockId(),{text:c,...a}=t,n={parent_id:V,type:l,children:[],comments:[],revisions:[],author:this.authorId,text:Nt(c||"",this.authorId),folded:!1};for(let[g,X]of Object.entries(a))X!==void 0&&(n[g]=X);let h={[A]:{id:A,version:0,payload:{ops:[{p:[],action:{oi:n}}]}},[V]:{id:V,version:o.version,payload:{ops:[{p:["children",e],action:{li:A}}]}}},d=await this._submitChange(h);if(!d.success)return d;let E=d.data?.block_map?.[A]?.version??0;return this.blockMap[A]={id:A,version:E,data:n},o.data.children||(o.data.children=[]),o.data.children.splice(e,0,A),{success:!0,data:{blockId:A}}}async editText(V,e){this._assertOpen();let l=this.blockMap[V];if(!l)return{success:!1,error:`Block ${V} not found`};let t=l.data?.text?.initialAttributedTexts?.text||{},R=Object.entries(t).sort(([E],[g])=>Number(E)-Number(g)).map(([,E])=>E).join("").length,A,c;R===0?{changeset:A,apool:c}=QV(e,this.authorId):{changeset:A,apool:c}=It(R,e,this.authorId);let a={[V]:{id:V,version:l.version,payload:{ops:[{p:["text"],subType:{t:"easysync",o:{zone_changesets:{0:A},apool:c}}}]}}},n=await this._submitChange(a);if(!n.success)return n;l.data.text||(l.data.text={initialAttributedTexts:{text:{},attribs:{}},apool:{}});let h=l.data.text.initialAttributedTexts;h.text={0:e};let d=e.length.toString(36);return h.attribs={0:e?`*0+${d}`:""},l.data.text.apool=e?{numToAttrib:{0:["author",this.authorId]},nextNum:1}:{numToAttrib:{},nextNum:0},{success:!0}}async deleteBlocks(V){this._assertOpen();let e=new Map;for(let o of V){let R=this.blockMap[o];if(!R)return{success:!1,error:`Block ${o} not found`};let A=R.data?.parent_id;if(!A||!this.blockMap[A])return{success:!1,error:`Parent of block ${o} not found`};e.has(A)||e.set(A,[]),e.get(A).push(o)}let l={};for(let[o,R]of e){let A=this.blockMap[o],c=[...A.data?.children||[]],n=R.map(h=>({id:h,idx:c.indexOf(h)})).filter(h=>h.idx>=0).sort((h,d)=>d.idx-h.idx).map(({id:h,idx:d})=>({p:["children",d],action:{ld:h}}));l[o]={id:o,version:A.version,payload:{ops:n}}}let t=await this._submitChange(l);if(!t.success)return t;for(let[o,R]of e){let A=this.blockMap[o];A.data?.children&&(A.data.children=A.data.children.filter(c=>!R.includes(c)))}for(let o of V)this._removeSubtree(o);return{success:!0}}async changeBlockType(V,e){this._assertOpen();let l=this.blockMap[V];if(!l)return{success:!1,error:`Block ${V} not found`};let t=l.data?.type;if(!t)return{success:!1,error:`Block ${V} has no type`};let o={[V]:{id:V,version:l.version,payload:{ops:[{p:["type"],action:{od:t,oi:e}}]}}},R=await this._submitChange(o);return R.success?(l.data.type=e,{success:!0}):R}async setBlockProperties(V,e){this._assertOpen();let l=this.blockMap[V];if(!l)return{success:!1,error:`Block ${V} not found`};let t=[];for(let[A,c]of Object.entries(e)){let a=l.data?.[A];a!==void 0?t.push({p:[A],action:{od:a,oi:c}}):t.push({p:[A],action:{oi:c}})}if(t.length===0)return{success:!0};let o={[V]:{id:V,version:l.version,payload:{ops:t}}},R=await this._submitChange(o);return R.success?(Object.assign(l.data,e),{success:!0}):R}async moveBlock(V,e,l){this._assertOpen();let t=this.blockMap[V];if(!t)return{success:!1,error:`Block ${V} not found`};let o=this.blockMap[e];if(!o)return{success:!1,error:`New parent ${e} not found`};let R=t.data?.parent_id;if(!R||!this.blockMap[R])return{success:!1,error:`Current parent of block ${V} not found`};let A=this.blockMap[R],a=(A.data?.children||[]).indexOf(V);if(a<0)return{success:!1,error:`Block ${V} not in parent's children`};let n={};if(R===e){let d=[{p:["children",a],action:{ld:V}},{p:["children",l],action:{li:V}}];n[R]={id:R,version:A.version,payload:{ops:d}}}else n[R]={id:R,version:A.version,payload:{ops:[{p:["children",a],action:{ld:V}}]}},n[e]={id:e,version:o.version,payload:{ops:[{p:["children",l],action:{li:V}}]}},n[V]={id:V,version:t.version,payload:{ops:[{p:["parent_id"],action:{od:R,oi:e}}]}};let h=await this._submitChange(n);return h.success?(A.data.children.splice(a,1),R===e?A.data.children.splice(l,0,V):(o.data.children||(o.data.children=[]),o.data.children.splice(l,0,V),t.data.parent_id=e),{success:!0}):h}_removeSubtree(V){let e=this.blockMap[V];if(!e)return;let l=e.data?.children||[];for(let t of l)this._removeSubtree(t);delete this.blockMap[V]}async _submitChange(V){let e=await this.api.submitDocxChange(this.auth,this.origin,this.pageId,this.memberId,V);return e.success&&this._updateState(e.data),e}_updateState(V){if(!V)return;let e=V.block_map||{};for(let[l,t]of Object.entries(e))this.blockMap[l]&&(this.blockMap[l].version=t.version);V.structure_version!==void 0&&(this.structureVersion=V.structure_version)}_assertOpen(){if(!this._opened)throw new Error("DocxEditor not opened. Call open() first.")}static _generateBlockId(){let V="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e=XR.randomBytes(27),l="";for(let t=0;t<27;t++)l+=V[e[t]%V.length];return l}static _generateMemberId(){let V=Date.now(),e=Math.floor(Math.random()*1e3);return String(V)+String(e).padStart(3,"0")}},JV=YV;import{McpServer as UR}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as GR}from"@modelcontextprotocol/sdk/server/stdio.js";import{z as Z}from"zod";function Ye(...s){return s.some(q)}function ol(s){if(typeof s!="string")return s;let V=s.trim();return V===""?void 0:V}var Rl=Z.number().int(),Ze=Z.string().trim().min(1),WR=Z.union([Rl,Ze.regex(/^-?\d+$/)]),mR=Z.string().trim().length(0);function Ue(s){return Z.union([s,mR]).optional()}function rR(s,V){return`aliases: ${[...s].sort().join(", ")}; numeric values: ${[...V].sort((e,l)=>e-l).join(", ")}`}function Ge(s,V){let e=St(s),l=Xt(s),t=new Set(e),o=new Set(l),R=`${V} must be one of ${rR(t,o)}`;return Z.union([Rl.refine(A=>o.has(A),{message:R}),Ze.transform(A=>A.toLowerCase()).refine(A=>t.has(A)?!0:/^-?\d+$/.test(A)?o.has(Number(A)):!1,{message:R})])}var bR=Ue(Ge(je,"visibility")),BR=Ue(Ge(Oe,"status")),CR=Ue(Ge(Pe,"notification_type")),uR=Ue(Ge(qe,"locations[].type")),iR=Ge(_e,"reminders[].method"),pR=Ue(Ge(j,"attendees[].category")),IR=Ue(Ge($e,"attendees[].status")),NR=Ue(WR);function Qt(s){if(typeof s=="number")return{1:"user",2:"group",3:"resource",4:"third_party_user"}[s];if(!q(s))return;let V=s.trim().toLowerCase();return/^-?\d+$/.test(V)?Qt(Number(V)):V}function QR(s){if(!s||typeof s!="object")return"user";let V=Qt(s.category);return V||(Ye(s.group_id,s.groupId)?"group":q(s.email)?"email":Ye(s.user_id,s.userId)?"user":Ye(s.attendee_calendar_id,s.attendeeCalendarId)?"resource":"user")}var YR=Z.object({category:pR,attendee_calendar_id:Z.string().optional(),attendeeCalendarId:Z.string().optional(),status:IR,is_optional:Z.boolean().optional(),isOptional:Z.boolean().optional(),user_id:Z.string().optional(),userId:Z.string().optional(),group_id:Z.string().optional(),groupId:Z.string().optional(),email:Z.string().optional()}).passthrough().superRefine((s,V)=>{let e=QR(s);(e==="user"||e==="")&&!Ye(s.user_id,s.userId)&&V.addIssue({code:Z.ZodIssueCode.custom,message:"attendees[].user_id or attendees[].userId is required for user attendees",path:["user_id"]}),e==="group"&&!Ye(s.group_id,s.groupId)&&V.addIssue({code:Z.ZodIssueCode.custom,message:"attendees[].group_id or attendees[].groupId is required for group attendees",path:["group_id"]}),(e==="email"||e==="third_party_user"||e==="thirdpartyuser")&&!q(s.email)&&V.addIssue({code:Z.ZodIssueCode.custom,message:"attendees[].email is required for email attendees",path:["email"]}),e==="resource"&&!Ye(s.attendee_calendar_id,s.attendeeCalendarId)&&V.addIssue({code:Z.ZodIssueCode.custom,message:"attendees[].attendee_calendar_id or attendees[].attendeeCalendarId is required for resource attendees",path:["attendee_calendar_id"]})});async function Yt(s,V,e){let l=new UR({name:"openbird",version:"1.0.0"});l.tool("send_message","Send a message to a Feishu chat (supports Markdown)",{chat_id:Z.string().describe("Chat ID to send the message to"),text:Z.string().describe("Message text (plain or Markdown)")},async({chat_id:c,text:a})=>{let n=await s.sendMessage(V,a,c);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("send_mention_message","Send a message with @mentions to a Feishu chat",{chat_id:Z.string().describe("Chat ID to send the message to"),text:Z.string().describe('Message text with @displayName patterns (e.g., "Hello @\u8D75\u5929\u96C4")'),mentions:Z.array(Z.object({user_id:Z.string().describe("User ID to mention"),display_name:Z.string().describe("Display name matching @pattern in text")})).describe("List of mention targets")},async({chat_id:c,text:a,mentions:n})=>{let h=n.map(E=>({userId:E.user_id,displayName:E.display_name})),d=await s.sendMentionMessage(V,a,c,h);return{content:[{type:"text",text:JSON.stringify(d)}]}}),l.tool("send_reply","Reply to a specific message in a Feishu chat",{chat_id:Z.string().describe("Chat ID"),text:Z.string().describe("Reply text (plain or Markdown)"),root_id:Z.string().describe("Root message ID of the thread"),parent_id:Z.string().describe("Message ID being replied to")},async({chat_id:c,text:a,root_id:n,parent_id:h})=>{let d=await s.sendReply(V,a,c,{rootId:n,parentId:h});return{content:[{type:"text",text:JSON.stringify(d)}]}}),l.tool("add_reaction","Add an emoji reaction to a message",{message_id:Z.string().describe("Message ID to react to"),emoji_type:Z.string().describe("Emoji type (e.g., THUMBSUP, SMILE, HEART)")},async({message_id:c,emoji_type:a})=>{let n=await s.addEmojiReaction(V,c,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("remove_reaction","Remove an emoji reaction from a message",{message_id:Z.string().describe("Message ID to remove reaction from"),emoji_type:Z.string().describe("Emoji type to remove")},async({message_id:c,emoji_type:a})=>{let n=await s.removeEmojiReaction(V,c,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("get_chat_history","Get chat message history",{chat_id:Z.string().describe("Chat ID"),start_position:Z.number().optional().describe("Start position (message sequence number)"),count:Z.number().optional().describe("Number of messages to fetch (default: 20)")},async({chat_id:c,start_position:a,count:n})=>{let h={};a!==void 0&&(h.startPosition=a),n!==void 0&&(h.count=n);let d=await s.getChatHistory(V,c,h);if(d.success&&d.messages?.length>0){let E=new Map;for(let g of d.messages)for(let X of g.baikeAnnotations||[])X.entityId&&!E.has(X.entityId)&&E.set(X.entityId,X);E.size>0&&(d.glossaryTerms=[...E.values()])}return{content:[{type:"text",text:JSON.stringify(d)}]}}),l.tool("get_chat_meta","Get chat metadata (last message position, read position, etc.)",{chat_id:Z.string().describe("Chat ID")},async({chat_id:c})=>{let a=await s.getChatMeta(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("create_chat","Create a P2P chat with a user",{user_id:Z.string().describe("User ID to create chat with")},async({user_id:c})=>{let a=await s.createChat(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("create_group","Create a group chat",{name:Z.string().describe("Group name"),description:Z.string().optional().describe("Group description"),member_ids:Z.array(Z.string()).optional().describe("Member user IDs to add"),chat_mode:Z.number().optional().describe("Chat mode: 1=DEFAULT, 2=THREAD, 3=THREAD_V2"),icon_key:Z.string().optional().describe("Group icon key")},async({name:c,description:a,member_ids:n,chat_mode:h,icon_key:d})=>{let E=await s.createGroup(V,{name:c,description:a,memberIds:n,chatMode:h,iconKey:d});return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("patch_group_chat","Update group chat info (name, description, or icon)",{chat_id:Z.string().describe("Chat ID of the group to update"),name:Z.string().optional().describe("New group name"),description:Z.string().optional().describe("New group description"),icon_key:Z.string().optional().describe("New group icon key")},async({chat_id:c,name:a,description:n,icon_key:h})=>{let d={};a!==void 0&&(d.name=a),n!==void 0&&(d.description=n),h!==void 0&&(d.iconKey=h);let E=await s.patchGroupChat(V,c,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("search","Search for users and groups in Feishu",{query:Z.string().describe("Search query")},async({query:c})=>{let a=await s.searchSome(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_user_info","Get user info by user ID (works for both users and bots)",{user_id:Z.string().describe("User ID to look up")},async({user_id:c})=>{let a=await s.getUserInfoById(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("create_webhook_bot","Create a webhook bot in a Feishu chat",{chat_id:Ze.describe("Chat ID to create the webhook bot in"),name:Ze.describe("Webhook bot name"),description:Ze.describe("Webhook bot description"),i18n:Z.string().default("zh_CN").describe("Locale string (default: zh_CN)"),avatar_key:Z.string().optional().describe("Optional avatar key"),avatar_type:Z.number().int().optional().describe("Optional avatar type"),user_id:Z.string().optional().describe("Creator user ID (defaults to current MCP session user)")},async({chat_id:c,name:a,description:n,i18n:h,avatar_key:d,avatar_type:E,user_id:g})=>{let X={userId:g||e,i18n:h};d!==void 0&&(X.avatarKey=d),E!==void 0&&(X.avatarType=E);let G=await s.createWebhookBot(V,c,a,n,X);return{content:[{type:"text",text:JSON.stringify(G)}]}}),l.tool("get_webhook_bot_info","Get webhook bot details including its webhook URL and signature settings",{bot_id:Ze.describe("Webhook bot ID"),i18n:Z.string().default("zh_CN").describe("Locale string (default: zh_CN)")},async({bot_id:c,i18n:a})=>{let n=await s.getWebhookBotInfo(V,c,{i18n:a});return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("get_user_profile_card","Get user profile card (description, display name, avatar)",{user_id:Z.string().describe("User ID to get profile card for")},async({user_id:c})=>{let a=await s.getUserProfileCard(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("set_user_signature","Set the current user profile signature",{description:Z.string().describe("Signature text"),description_flag:Z.number().optional().describe("Signature flag (default: 0)")},async({description:c,description_flag:a})=>{let n={};a!==void 0&&(n.descriptionFlag=a);let h=await s.setUserSignature(V,c,n);return{content:[{type:"text",text:JSON.stringify(h)}]}}),l.tool("get_calendar_events","Get calendar events for a user",{user_id:Z.string().optional().describe("User ID (defaults to current user)")},async({user_id:c})=>{let a=c||e,n=await s.getCalendarEvents(V,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("mget_events_with_ids","Batch-fetch calendar events by their event keys. Returns full event details including title, time, location, attendees, recurrence rules.",{event_keys:Z.array(Z.string()).min(1).describe("Event keys to fetch")},async({event_keys:c})=>{let a=await s.webMgetEventsWithIds(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_place_tips","Search place and location autocomplete tips for calendar event locations",{keyword:Z.string().describe("Place search keyword"),locale:Z.string().optional().describe("Locale code (default: zh_CN)")},async({keyword:c,locale:a})=>{let n={};a!==void 0&&(n.locale=a);let h=await s.getPlaceTips(V,c,n);return{content:[{type:"text",text:JSON.stringify(h)}]}}),l.tool("create_calendar_event","Create a calendar event with title, time, location, reminders, and optional attendees",{calendar_id:Ze.describe("Target calendar ID"),summary:Ze.describe("Event title"),start_time:Rl.describe("Start time as Unix timestamp"),end_time:Rl.describe("End time as Unix timestamp"),timezone:Z.string().optional().describe("Shared timezone for start/end, e.g. Asia/Shanghai"),start_timezone:Z.string().optional().describe("Start timezone override"),end_timezone:Z.string().optional().describe("End timezone override"),description:Z.string().optional().describe("Plain-text description"),docs_description:Z.string().optional().describe("Docs description"),rrule:Z.string().optional().describe("Recurrence rule"),is_all_day:Z.boolean().optional().describe("Whether the event lasts all day"),is_free:Z.boolean().optional().describe("Whether the event should not block busy status"),visibility:bR.describe("Visibility enum or alias (default/public/private)"),status:BR.describe("Status enum or alias (confirmed/tentative/cancelled)"),notification_type:CR.describe("Notification type enum or alias"),unique_key:Z.string().optional().describe("Optional unique event key"),original_time:NR.describe("Original event timestamp"),locations:Z.array(Z.object({name:Z.string().optional(),address:Z.string().optional(),type:uR,latitude:Z.number().optional(),longitude:Z.number().optional()})).optional().describe("Event locations"),reminders:Z.array(Z.object({minutes:Rl,method:iR,calendar_event_id:Z.string().optional(),calendarEventId:Z.string().optional()})).optional().describe("Event reminders"),attendees:Z.array(YR).optional().describe("Attendees to add on create")},async({calendar_id:c,summary:a,start_time:n,end_time:h,timezone:d,start_timezone:E,end_timezone:g,description:X,docs_description:G,rrule:W,is_all_day:m,is_free:r,visibility:i,status:Q,notification_type:Y,unique_key:T,original_time:f,locations:O,reminders:Je,attendees:Te})=>{let k={summary:a,startTime:n,endTime:h},ye={},xe=ol(d);xe!==void 0&&(k.timezone=xe);let ke=ol(E);ke!==void 0&&(k.startTimezone=ke);let Ee=ol(g);Ee!==void 0&&(k.endTimezone=Ee),X!==void 0&&(k.description=X),G!==void 0&&(k.docsDescription=G),W!==void 0&&(k.rrule=W),m!==void 0&&(k.isAllDay=m),r!==void 0&&(k.isFree=r),i!==void 0&&(k.visibility=i),Q!==void 0&&(k.status=Q);let Al=ol(T);Al!==void 0&&(k.uniqueKey=Al),f!==void 0&&(k.originalTime=f),O!==void 0&&(k.locations=O),Je!==void 0&&(k.reminders=Je.map(ne=>{let xV=ol(ne.calendar_event_id??ne.calendarEventId);return{minutes:ne.minutes,method:ne.method,...xV!==void 0?{calendarEventId:xV}:{}}})),Te!==void 0&&(k.attendees=Te),Y!==void 0&&(ye.notificationType=Y);let Il=await s.createCalendarEvent(V,c,k,ye);return{content:[{type:"text",text:JSON.stringify(Il)}]}}),l.tool("calendar_rsvp","RSVP to a calendar event (accept/decline/tentative)",{event_id:Z.string().describe("Calendar event ID"),rsvp_status:Z.string().describe("RSVP status: accept, decline, or tentative")},async({event_id:c,rsvp_status:a})=>{let n=await s.calendarRsvp(V,c,e,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("reply_calendar_event_invitation","Reply to a calendar event invitation with protobuf fields and optional RSVP comment",{unique_key:Z.string().describe("Calendar event unique key"),calendar_id:Z.string().describe("Calendar ID"),original_time:Z.number().describe("Original event timestamp"),reply_type:Z.string().describe("Reply type: accept, decline, tentative, delete, or needs_action"),quit_meeting:Z.boolean().optional().describe("Leave linked meeting after replying"),needs_brief_events:Z.boolean().optional().describe("Request brief event data in the response"),use_attendee_page_token:Z.boolean().optional().describe("Use attendee page token"),reply_comment_id:Z.string().optional().describe("Reply comment ID"),comment:Z.string().optional().describe("RSVP comment text"),invite_operator_id:Z.string().optional().describe("Invite operator ID")},async({unique_key:c,calendar_id:a,original_time:n,reply_type:h,quit_meeting:d,needs_brief_events:E,use_attendee_page_token:g,reply_comment_id:X,comment:G,invite_operator_id:W})=>{let m={};d!==void 0&&(m.quitMeeting=d),E!==void 0&&(m.needsBriefEvents=E),g!==void 0&&(m.useAttendeePageToken=g),(X!==void 0||G!==void 0||W!==void 0)&&(m.rsvpCommentInfo={...X!==void 0?{replyCommentId:X}:{},...G!==void 0?{comment:G}:{},...W!==void 0?{inviteOperatorId:W}:{}});let r=await s.replyCalendarEventInvitation(V,{uniqueKey:c,calendarId:a,originalTime:n},h,m);return{content:[{type:"text",text:JSON.stringify(r)}]}}),l.tool("delete_calendar_event","Delete a calendar event",{calendar_id:Z.string().describe("Calendar ID"),event_id:Z.string().describe("Calendar event ID"),delete_type:Z.number().optional().describe("Delete mode (default: 0 = this event only)"),need_notification:Z.boolean().optional().describe("Notify attendees (default: true)")},async({calendar_id:c,event_id:a,delete_type:n,need_notification:h})=>{let d={};n!==void 0&&(d.deleteType=n),h!==void 0&&(d.needNotification=h);let E=await s.deleteCalendarEvent(V,c,a,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("update_calendar_event","Update an existing calendar event",{event_id:Z.string().describe("Calendar event ID"),calendar_id:Z.string().optional().describe("Calendar ID"),key:Z.string().optional().describe("Event key, if known"),summary:Z.string().optional().describe("Updated event title"),description:Z.string().optional().describe("Updated plain-text description"),docs_description:Z.string().optional().describe("Updated docs description"),start_time:Z.number().optional().describe("Updated start time as Unix timestamp"),end_time:Z.number().optional().describe("Updated end time as Unix timestamp"),start_timezone:Z.string().optional().describe("Start timezone, e.g. Asia/Shanghai"),end_timezone:Z.string().optional().describe("End timezone, e.g. Asia/Shanghai"),is_all_day:Z.boolean().optional().describe("Whether the event is all-day"),is_free:Z.boolean().optional().describe("Whether the event blocks busy time"),visibility:Z.number().optional().describe("Visibility enum value"),status:Z.number().optional().describe("Status enum value"),rrule:Z.string().optional().describe("Recurrence rule"),version:Z.union([Z.number(),Z.string()]).optional().describe("Event version; defaults to current microsecond timestamp"),create_time:Z.union([Z.number(),Z.string()]).optional().describe("Original create timestamp"),update_time:Z.union([Z.number(),Z.string()]).optional().describe("Updated modify timestamp"),locations:Z.array(Z.object({name:Z.string().optional(),address:Z.string().optional(),type:Z.number().optional(),latitude:Z.number().optional(),longitude:Z.number().optional()})).optional().describe("Updated event locations"),reminders:Z.array(Z.object({calendar_event_id:Z.string().optional(),minutes:Z.number(),method:Z.number()})).optional().describe("Updated reminders"),attendees:Z.array(Z.object({}).passthrough()).optional().describe("Updated attendee objects in raw WebCalendarEventAttendee shape"),span:Z.number().min(0).max(1).optional().describe("Recurring update scope: 0=NONE_SPAN, 1=THIS_EVENT"),instance_start_time:Z.union([Z.number(),Z.string()]).optional().describe("Specific recurring instance timestamp"),notification_type:Z.number().optional().describe("Notification type enum value")},async({event_id:c,calendar_id:a,key:n,summary:h,description:d,docs_description:E,start_time:g,end_time:X,start_timezone:G,end_timezone:W,is_all_day:m,is_free:r,visibility:i,status:Q,rrule:Y,version:T,create_time:f,update_time:O,locations:Je,reminders:Te,attendees:k,span:ye,instance_start_time:xe,notification_type:ke})=>{let Ee={};ye!==void 0&&(Ee.span=ye),xe!==void 0&&(Ee.instanceStartTime=xe),ke!==void 0&&(Ee.notificationType=ke);let Al={...a!==void 0?{calendarId:a}:{},...n!==void 0?{key:n}:{},...h!==void 0?{summary:h}:{},...d!==void 0?{description:d}:{},...E!==void 0?{docsDescription:E}:{},...g!==void 0?{startTime:g}:{},...X!==void 0?{endTime:X}:{},...G!==void 0?{startTimezone:G}:{},...W!==void 0?{endTimezone:W}:{},...m!==void 0?{isAllDay:m}:{},...r!==void 0?{isFree:r}:{},...i!==void 0?{visibility:i}:{},...Q!==void 0?{status:Q}:{},...Y!==void 0?{rrule:Y}:{},...T!==void 0?{version:T}:{},...f!==void 0?{createTime:f}:{},...O!==void 0?{updateTime:O}:{},...Je!==void 0?{locations:Je}:{},...Te!==void 0?{reminders:Te.map(ne=>({...ne,...ne.calendar_event_id!==void 0?{calendarEventId:ne.calendar_event_id}:{}}))}:{},...k!==void 0?{attendees:k}:{}},Il=await s.updateCalendarEvent(V,c,Al,Ee);return{content:[{type:"text",text:JSON.stringify(Il)}]}}),l.tool("web_list_calendar_events","List calendar events within a time range for a calendar",{calendar_id:Z.string().describe("Calendar ID"),start_time:Z.number().describe("Start time as Unix timestamp in seconds"),end_time:Z.number().describe("End time as Unix timestamp in seconds"),limit:Z.number().optional().describe("Maximum number of events to return (default: 100)")},async({calendar_id:c,start_time:a,end_time:n,limit:h})=>{let d={};h!==void 0&&(d.limit=h);let E=await s.webListCalendarEvents(V,c,a,n,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("create_meeting_minute","Create a meeting minute (notes document) for a calendar event, returns a Feishu doc URL",{calendar_id:Z.string().describe("Calendar ID"),event_key:Z.string().describe("Calendar event key (from CalendarEvent.key, distinct from event ID)"),original_time:Z.number().optional().describe("Original event timestamp (default: 0)")},async({calendar_id:c,event_key:a,original_time:n})=>{let h={};n!==void 0&&(h.originalTime=n);let d=await s.createMeetingMinute(V,c,a,h);return{content:[{type:"text",text:JSON.stringify(d)}]}}),l.tool("transfer_calendar_event","Transfer ownership of a calendar event to another user",{calendar_id:Z.string().describe("Calendar ID / owner UID"),event_key:Z.string().describe("Calendar event key (from CalendarEvent.key, distinct from event ID)"),target_user_hash:Z.number().int().describe("Target user hash captured from the transfer flow"),original_time:Z.number().optional().describe("Original event timestamp (default: 0)"),transfer_flag:Z.number().int().optional().describe("Captured transfer flag (default: 1)")},async({calendar_id:c,event_key:a,target_user_hash:n,original_time:h,transfer_flag:d})=>{let E={};h!==void 0&&(E.originalTime=h),d!==void 0&&(E.transferFlag=d);let g=await s.transferCalendarEvent(V,c,a,n,E);return{content:[{type:"text",text:JSON.stringify(g)}]}}),l.tool("web_share_calendar_event","Share a calendar event to one or more chats",{chat_ids:Z.array(Z.number().safe().int().nonnegative()).nonempty().describe("Chat IDs to share the event with"),calendar_id:Z.string().describe("Calendar ID"),event_key:Z.string().describe("Calendar event key"),original_time:Z.number().safe().int().nonnegative().optional().describe("Original event timestamp (default: 0, non-recurring)")},async({chat_ids:c,calendar_id:a,event_key:n,original_time:h})=>{let d={};h!==void 0&&(d.originalTime=h);let E=await s.webShareCalendarEvent(V,c,a,n,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("upgrade_to_meeting","Upgrade a calendar event into a video meeting (creates a meeting chat group)",{event_id:Z.string().describe("Calendar event ID (CalendarEvent.id)"),uid:Z.string().describe("Event UID"),calendar_id:Z.string().describe("Calendar ID"),creator_id:Z.string().optional().describe("Creator calendar ID"),organizer_id:Z.string().optional().describe("Organizer calendar ID"),start_time:Z.number().describe("Start time (Unix timestamp in seconds)"),start_timezone:Z.string().describe('Start timezone (e.g. "Asia/Shanghai")'),end_time:Z.number().describe("End time (Unix timestamp in seconds)"),end_timezone:Z.string().optional().describe('End timezone (e.g. "Asia/Shanghai")'),summary:Z.string().describe("Event summary/title"),original_time:Z.number().optional().describe("Original event timestamp (default: 0)"),rrule:Z.string().optional().describe('Recurrence rule (e.g. "FREQ=DAILY;UNTIL=20280305T155959Z;INTERVAL=3")')},async({event_id:c,uid:a,calendar_id:n,creator_id:h,organizer_id:d,start_time:E,start_timezone:g,end_time:X,end_timezone:G,summary:W,original_time:m,rrule:r})=>{let i={eventId:c,uid:a,calendarId:n,startTime:E,startTimezone:g,endTime:X,summary:W};h!==void 0&&(i.creatorId=h),d!==void 0&&(i.organizerId=d),G!==void 0&&(i.endTimezone=G);let Q={};m!==void 0&&(Q.originalTime=m),r!==void 0&&(Q.rrule=r);let Y=await s.upgradeToMeeting(V,i,Q);return{content:[{type:"text",text:JSON.stringify(Y)}]}}),l.tool("download_image","Download an image by its image key, returns base64-encoded data",{image_key:Z.string().describe("Image key (e.g., img_v3_02uc_...)"),size:Z.string().optional().describe("Image size: ORIGIN, MIDDLE_WEBP, or SMALL_WEBP (default: ORIGIN)")},async({image_key:c,size:a})=>{let n={};a&&(n.size=a);let h=await s.downloadImage(c,n);return h.success?{content:[{type:"text",text:JSON.stringify({success:!0,mimeType:h.mimeType,size:h.data.length})},{type:"image",data:h.base64,mimeType:h.mimeType}]}:{content:[{type:"text",text:JSON.stringify(h)}]}}),l.tool("mark_chat_read","Mark a chat as read up to a specific position",{encrypted_chat_id:Z.string().describe("Encrypted chat ID string"),read_position:Z.number().describe("Read position timestamp")},async({encrypted_chat_id:c,read_position:a})=>{let n=await s.markChatRead(V,c,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("pin_session","Pin a chat session (stick to top of feed)",{chat_id:Z.string().describe("Chat ID to pin")},async({chat_id:c})=>{let a=await s.pinSession(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("unpin_session","Unpin a chat session",{chat_id:Z.string().describe("Chat ID to unpin")},async({chat_id:c})=>{let a=await s.unpinSession(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("mark_session","Mark a session as important (flag)",{user_hash_id:Z.number().describe("User hash ID (numeric)")},async({user_hash_id:c})=>{let a=await s.markSession(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("unmark_session","Remove mark/flag from a session",{user_hash_id:Z.number().describe("User hash ID (numeric)")},async({user_hash_id:c})=>{let a=await s.unmarkSession(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_user_relation","Query relationship between current user and target user",{user_hash_id:Z.number().describe("Target user hash ID")},async({user_hash_id:c})=>{let a=await s.getUserRelation(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_user_presence","Get user online/presence status",{user_id:Z.string().describe("User ID to check presence for")},async({user_id:c})=>{let a=await s.getUserPresence(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_config","Get a Feishu configuration item value",{config_name:Z.string().describe("Config item name (e.g., PROFILE_NAME_DISPLAY_TYPE)")},async({config_name:c})=>{let a=await s.getConfig(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_feature_flags","Get feature flags / capabilities list",{sync_token:Z.string().optional().describe("Sync token from previous response for incremental updates")},async({sync_token:c})=>{let a={};c&&(a.syncToken=c);let n=await s.getFeatureFlags(V,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("save_contact_alias","Save contact alias name and/or memo for a user",{user_id:Z.string().describe("Target user ID"),alias:Z.string().optional().describe("Alias name for the contact"),memo:Z.string().optional().describe("Memo/note text"),memo_image_key:Z.string().optional().describe("Image key for memo image")},async({user_id:c,alias:a,memo:n,memo_image_key:h})=>{let d={};a!==void 0&&(d.alias=a),n!==void 0&&(d.memo=n),h!==void 0&&(d.memoImageKey=h);let E=await s.saveContactAlias(V,c,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("sync_contact_info","Sync contact info after updating contact aliases (cmd=1100319)",{user_id:Z.string().describe("Target user ID to sync contact info for")},async({user_id:c})=>{let a=await s.syncContactInfo(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("create_thread","Create a thread from a message",{message_id:Z.string().describe("Message ID to create thread from")},async({message_id:c})=>{let a=await s.createThread(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("search_in_chat","Search for messages within a specific chat",{query:Z.string().describe("Search query"),chat_id:Z.string().describe("Chat ID to search within"),page_size:Z.number().optional().describe("Results per page (default: 5)")},async({query:c,chat_id:a,page_size:n})=>{let h={};n!==void 0&&(h.pageSize=n);let d=await s.searchInChat(V,c,a,h);return{content:[{type:"text",text:JSON.stringify(d)}]}}),l.tool("send_urgent","Send an urgent notification (\u52A0\u6025) for a message to a user",{chat_id:Z.string().describe("Chat ID containing the message"),message_id:Z.string().describe("Message ID to mark urgent"),target_user_id:Z.string().describe("User ID to send urgent to"),urgent_type:Z.number().min(1).max(3).optional().describe("Urgent type: 1=APP (default), 2=SMS, 3=PHONE")},async({chat_id:c,message_id:a,target_user_id:n,urgent_type:h})=>{let d={};h!==void 0&&(d.urgentType=h);let E=await s.putUrgent(V,c,a,n,e,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("get_urgent_ack_status","Query urgent notification acknowledgment status",{chat_id:Z.string().describe("Chat ID"),message_id:Z.string().describe("Message ID that was marked urgent"),target_user_id:Z.string().describe("User ID the urgent was sent to"),urgent_ack_id:Z.string().optional().describe("Urgent ack ID (if known)"),urgent_type:Z.number().min(1).max(3).optional().describe("Urgent type: 1=APP (default), 2=SMS, 3=PHONE")},async({chat_id:c,message_id:a,target_user_id:n,urgent_ack_id:h,urgent_type:d})=>{let E={messageId:a,targetUserId:n};h&&(E.urgentAckId=h),d!==void 0&&(E.urgentType=d);let g=await s.pullUrgentAckStatus(V,c,E);return{content:[{type:"text",text:JSON.stringify(g)}]}}),l.tool("put_schedule_message","Create a scheduled message to be sent at a future time",{text:Z.string().describe("Message content (supports Markdown)"),chat_id:Z.string().describe("Chat ID to send the message to"),schedule_time:Z.number().describe("Scheduled send time as Unix timestamp in milliseconds"),entity_id:Z.string().optional().describe("Thread ID or chat ID (defaults to chat_id)")},async({text:c,chat_id:a,schedule_time:n,entity_id:h})=>{let d={};h!==void 0&&(d.entityId=h);let E=await s.putScheduleMessage(V,c,a,n,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("patch_schedule_message","Update, suspend, delete, or immediately send a scheduled message",{chat_id:Z.string().describe("Chat ID"),message_id:Z.string().describe("Schedule message ID"),patch_type:Z.number().min(1).max(3).describe("Operation type: 1=UPDATE, 2=SUSPEND, 3=DELETE"),schedule_time:Z.number().optional().describe("New scheduled time in milliseconds (for UPDATE)"),content:Z.string().optional().describe("New message content text (for UPDATE)"),send_immediately:Z.boolean().optional().describe("Send the message immediately (for UPDATE)")},async({chat_id:c,message_id:a,patch_type:n,schedule_time:h,content:d,send_immediately:E})=>{let g={};h!==void 0&&(g.scheduleTime=h),d!==void 0&&(g.content=d),E!==void 0&&(g.sendImmediately=E);let X=await s.patchScheduleMessage(V,c,a,n,g);return{content:[{type:"text",text:JSON.stringify(X)}]}}),l.tool("pull_schedule_message_by_ids","Pull specific scheduled messages by their IDs",{chat_id:Z.string().describe("Chat ID"),message_ids:Z.array(Z.string()).describe("Schedule message IDs to retrieve")},async({chat_id:c,message_ids:a})=>{let n=await s.pullScheduleMessageByIds(V,c,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("get_baike_card","Get a Feishu Lingo (\u98DE\u4E66\u8BCD\u5178) glossary card for a term, including its definition, full name, contributors, and detail URL",{entity_id:Z.string().describe('Baike entity ID (e.g. "enterprise_7613780366768819403")'),text:Z.string().describe('Term text (e.g. "\u8868\u60C5\u56DE\u590D")'),entity_type:Z.number().optional().describe("Entity type: 1=enterprise (default), 0=public"),chat_id:Z.string().optional().describe("Chat ID where term was found (for context)"),message_id:Z.string().optional().describe("Message ID where term was found (for context)")},async({entity_id:c,text:a,entity_type:n,chat_id:h,message_id:d})=>{let E={};n!==void 0&&(E.entityType=n),h!==void 0&&(E.chatId=h),d!==void 0&&(E.messageId=d);let g=await s.getBaikeCard(V,c,a,E);if(g.success&&g.info){let X={success:!0,info:g.info};return{content:[{type:"text",text:JSON.stringify(X)}]}}return{content:[{type:"text",text:JSON.stringify(g)}]}}),l.tool("get_baike_recommend_docs","Get recommended documents for a Feishu Lingo (\u98DE\u4E66\u8BCD\u5178) glossary term",{entity_id:Z.string().describe('Baike entity ID (e.g. "enterprise_7613780366768819403")'),entity_type:Z.number().optional().describe("Entity type: 1=enterprise (default), 0=public")},async({entity_id:c,entity_type:a})=>{let n={};a!==void 0&&(n.entityType=a);let h=await s.getBaikeRecommendDocs(V,c,n);return{content:[{type:"text",text:JSON.stringify(h)}]}}),l.tool("search_guests","Search users and groups that can be added as calendar event attendees",{query:Z.string().min(1).describe("Search keyword for users or groups"),offset:Z.number().int().nonnegative().optional().describe("Pagination offset (default 0)"),limit:Z.number().int().min(1).max(100).optional().describe("Page size (default 50)"),locale:Z.string().optional().describe("Locale string such as zh_CN"),guest_type:Z.number().int().nonnegative().optional().describe("Guest type filter (default 2 = all)")},async({query:c,offset:a,limit:n,locale:h,guest_type:d})=>{let E={};a!==void 0&&(E.offset=a),n!==void 0&&(E.limit=n),h!==void 0&&(E.locale=h),d!==void 0&&(E.guestType=d);let g=await s.searchGuests(V,c,E);return{content:[{type:"text",text:JSON.stringify(g)}]}}),l.tool("search_meeting_rooms","Search for available meeting rooms within a time window",{start_time:Z.number().int().nonnegative().describe("Search window start time (Unix timestamp in seconds)"),end_time:Z.number().int().nonnegative().describe("Search window end time (Unix timestamp in seconds)"),keyword:Z.string().optional().describe("Search keyword (room name, building name, etc.)"),timezone:Z.string().optional().describe("IANA timezone for the search window (server defaults to UTC if omitted)"),min_capacity:Z.number().int().nonnegative().optional().describe("Minimum room capacity (number of people)"),cursor:Z.number().int().nonnegative().optional().describe("Pagination cursor from previous response")},async({start_time:c,end_time:a,keyword:n,timezone:h,min_capacity:d,cursor:E})=>{let g={};n!==void 0&&(g.keyword=n),h!==void 0&&(g.timezone=h),d!==void 0&&(g.minCapacity=d),E!==void 0&&(g.cursor=E);let X=await s.searchMeetingRooms(V,c,a,g);return{content:[{type:"text",text:JSON.stringify(X)}]}}),l.tool("pull_buildings","List buildings that contain meeting rooms",{min_capacity:Z.number().int().nonnegative().optional().describe("Minimum room capacity filter"),need_equipments:Z.array(Z.string()).optional().describe("Required equipment types"),enable_recommendations:Z.boolean().optional().describe("Whether to enable recommendation-based sorting"),event_start_timestamp:Z.string().optional().describe("Event start timestamp string for event context"),event_end_timestamp:Z.string().optional().describe("Event end timestamp string for event context"),start_timezone:Z.string().optional().describe("IANA start timezone for event context"),end_timezone:Z.string().optional().describe("IANA end timezone for event context"),instance_start_time:Z.string().optional().describe("Operate-instance start time string"),instance_end_time:Z.string().optional().describe("Operate-instance end time string")},async({min_capacity:c,need_equipments:a,enable_recommendations:n,event_start_timestamp:h,event_end_timestamp:d,start_timezone:E,end_timezone:g,instance_start_time:X,instance_end_time:G})=>{let W={};c!==void 0&&(W.minCapacity=c),a!==void 0&&(W.needEquipments=a),n!==void 0&&(W.enableRecommendations=n),(h!==void 0||d!==void 0||E!==void 0||g!==void 0)&&(W.eventField={},h!==void 0&&(W.eventField.eventStartTimestamp=h),d!==void 0&&(W.eventField.eventEndTimestamp=d),E!==void 0&&(W.eventField.startTimezone=E),g!==void 0&&(W.eventField.endTimezone=g)),(X!==void 0||G!==void 0)&&(W.operateInstanceField={},X!==void 0&&(W.operateInstanceField.instanceStartTime=X),G!==void 0&&(W.operateInstanceField.instanceEndTime=G));let m=await s.pullBuildings(V,W);return{content:[{type:"text",text:JSON.stringify(m)}]}}),l.tool("pull_meeting_rooms_in_building","List meeting rooms within specific buildings, filtered by time range and recurrence",{building_ids:Z.array(Z.string()).min(1).describe("Building IDs to query"),start_time:Z.number().int().nonnegative().describe("Window start time (Unix timestamp in seconds)"),end_time:Z.number().int().nonnegative().describe("Window end time (Unix timestamp in seconds)"),rrule:Z.string().optional().describe('Recurrence rule (e.g. "FREQ=DAILY;UNTIL=20280305T155959Z;INTERVAL=3")'),need_disabled_resource:Z.boolean().optional().describe("Include disabled rooms"),timezone:Z.string().optional().describe("IANA timezone (server defaults to UTC if omitted)"),min_capacity:Z.number().int().nonnegative().optional().describe("Minimum room capacity (number of people)")},async({building_ids:c,start_time:a,end_time:n,rrule:h,need_disabled_resource:d,timezone:E,min_capacity:g})=>{let X={};h!==void 0&&(X.rrule=h),d!==void 0&&(X.needDisabledResource=d),E!==void 0&&(X.timezone=E),g!==void 0&&(X.minCapacity=g);let G=await s.pullMeetingRoomsInBuilding(V,c,a,n,X);return{content:[{type:"text",text:JSON.stringify(G)}]}}),l.tool("pull_tenants_by_ids","Fetch tenant or organization information by tenant IDs",{tenantIds:Z.array(Z.string()).min(1).describe("Tenant IDs to fetch")},async({tenantIds:c})=>{let a=s.baseUrl||"https://internal-api-lark-api.feishu.cn";try{a=new URL(a).origin}catch{}let n=de._validateFeishuOrigin(a);if(!n.valid)return{content:[{type:"text",text:JSON.stringify({success:!1,error:n.error})}]};let h=await s.pullTenantsByIds(V,c);return{content:[{type:"text",text:JSON.stringify(h)}]}}),l.tool("get_docx_block_tree","Get the block tree of a Feishu document (wiki or docx). Returns structured blocks with text, type, version, and children.",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),mode:Z.union([Z.literal(0),Z.literal(1),Z.literal(7)]).optional().describe("Fetch mode: 0=ALL (default), 1=TOP_BOTTOM, 7=AroundV2"),limit:Z.number().int().min(1).max(500).optional().describe("Blocks per page (1-500, default 200)")},async({url:c,mode:a,limit:n})=>{let h;try{h=new URL(c)}catch{return{content:[{type:"text",text:JSON.stringify({success:!1,error:"Invalid URL"})}]}}let d=h.origin,E=de._validateFeishuOrigin(d);if(!E.valid)return{content:[{type:"text",text:JSON.stringify({success:!1,error:E.error})}]};let g=h.pathname.match(/\/wiki\/([^/?#]+)/),X=h.pathname.match(/\/docx\/([^/?#]+)/);if(!g&&!X)return{content:[{type:"text",text:JSON.stringify({success:!1,error:"URL must contain /wiki/ or /docx/ path"})}]};let G;if(g){let r=await s.resolveWikiToken(V,d,g[1]);if(!r.success)return{content:[{type:"text",text:JSON.stringify(r)}]};if(r.data.objType!==22)return{content:[{type:"text",text:JSON.stringify({success:!1,error:`Unsupported wiki object type: ${r.data.objType} (only docx type 22 is supported)`})}]};G=r.data.objToken}else G=X[1];let W={};a!==void 0&&(W.mode=a),n!==void 0&&(W.limit=n);let m=await s.getDocxBlockTree(V,d,G,W);return{content:[{type:"text",text:JSON.stringify(m)}]}});let t=new Map;async function o(c,{refresh:a=!1}={}){let n;try{n=new URL(c)}catch{return{success:!1,error:"Invalid URL"}}let h=n.origin,d=de._validateFeishuOrigin(h);if(!d.valid)return{success:!1,error:d.error};let E=n.pathname.match(/\/wiki\/([^/?#]+)/),g=n.pathname.match(/\/docx\/([^/?#]+)/);if(!E&&!g)return{success:!1,error:"URL must contain /wiki/ or /docx/ path"};let X;if(E){let m=await s.resolveWikiToken(V,h,E[1]);if(!m.success)return{success:!1,error:m.error};if(m.data.objType!==22)return{success:!1,error:`Unsupported wiki object type: ${m.data.objType} (only docx type 22 is supported)`};X=m.data.objToken}else X=g[1];let G=`${h}|${X}`,W=t.get(G);if(a||!W){W=new JV(s,V,h,X);let m=await W.open();if(!m.success)return{success:!1,error:m.error};t.set(G,W)}return{success:!0,editor:W,origin:h,pageId:X,cacheKey:G}}async function R(c,a){let n=await o(c);if(!n.success)return{content:[{type:"text",text:JSON.stringify({success:!1,error:n.error})}]};let h=await a(n.editor,n);return h.success||t.delete(n.cacheKey),{content:[{type:"text",text:JSON.stringify(h)}]}}l.tool("docx_open_document","Open a Feishu document for editing. Returns the block tree. The document stays cached for subsequent edit operations. Use refresh=true to re-fetch the latest state.",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),refresh:Z.boolean().optional().describe("Force re-fetch the document from server (default: false)")},async({url:c,refresh:a})=>{let n=await o(c,{refresh:!!a});if(!n.success)return{content:[{type:"text",text:JSON.stringify({success:!1,error:n.error})}]};let h=n.editor.getBlockTree();return{content:[{type:"text",text:JSON.stringify({success:!0,data:{pageId:n.pageId,structureVersion:n.editor.structureVersion,blockCount:Object.keys(n.editor.blockMap).length,tree:h}})}]}}),l.tool("docx_insert_block","Insert a new block into a Feishu document",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),parent_id:Z.string().optional().describe("Parent block ID (defaults to page root)"),position:Z.number().int().min(0).optional().describe("Index in parent children (defaults to end)"),type:Z.string().optional().describe("Block type: text (default), heading1-9, todo, bullet, ordered, code, quote, divider, equation"),text:Z.string().optional().describe("Initial text content")},async({url:c,parent_id:a,position:n,type:h,text:d})=>R(c,(E,g)=>{let X=a||g.pageId,G=E.getBlock(X);if(!G)return{success:!1,error:`Parent block ${X} not found`};let W=n??(G.data?.children?.length||0),m=h||"text",r={};return d!==void 0&&(r.text=d),E.insertBlock(X,W,m,r)})),l.tool("docx_edit_text","Edit the text content of a block in a Feishu document",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),block_id:Z.string().describe("Block ID to edit"),text:Z.string().describe("New text content")},async({url:c,block_id:a,text:n})=>R(c,h=>h.editText(a,n))),l.tool("docx_delete_blocks","Delete one or more blocks from a Feishu document",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),block_ids:Z.array(Z.string()).min(1).describe("Block IDs to delete")},async({url:c,block_ids:a})=>R(c,n=>n.deleteBlocks(a))),l.tool("docx_change_block_type","Change the type of a block in a Feishu document (e.g. text to heading1, bullet to todo)",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),block_id:Z.string().describe("Block ID to change"),new_type:Z.string().describe("New block type: text, heading1-9, todo, bullet, ordered, code, quote, divider, equation")},async({url:c,block_id:a,new_type:n})=>R(c,h=>h.changeBlockType(a,n))),l.tool("docx_set_block_properties","Set properties on a block. Common properties: done (bool, todo), folded (bool), align (left/center/right), language (string, code), emoji_id (string, callout), text_indent (number)",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),block_id:Z.string().describe("Block ID to modify"),properties:Z.record(Z.string(),Z.any()).describe('Key-value pairs to set (e.g. {"done": true, "align": "center"})')},async({url:c,block_id:a,properties:n})=>R(c,h=>h.setBlockProperties(a,n))),l.tool("docx_move_block","Move a block to a new parent and/or position within a Feishu document",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),block_id:Z.string().describe("Block ID to move"),new_parent_id:Z.string().describe("Target parent block ID"),new_position:Z.number().int().min(0).describe("Target index in new parent children")},async({url:c,block_id:a,new_parent_id:n,new_position:h})=>R(c,d=>d.moveBlock(a,n,h)));let A=new GR;await l.connect(A),N.log("[MCP] Server started on stdio")}var JR={1:"p2p",2:"group",3:"topic_group"},TR={1:"user",2:"bot"},yR={2:"rich",3:"file",4:"text",5:"image",6:"system",7:"audio",9:"share_group_chat",10:"sticker",11:"merge_forward",12:"calendar",14:"card",15:"media",23:"share_user_card",24:"todo"},xR={0:"unknown",1:"pc",2:"web",3:"android",4:"ios"},kR={0:"unknown",1:"online",2:"offline"},Jt={0:"unknown",1:"inbox",2:"done"},fR={0:"unknown",1:"chat",2:"mail",3:"doc",4:"thread",5:"box",6:"openapp",7:"topic",8:"app_chat",10:"subscription",11:"msg_thread",12:"my_ai",13:"app_feed",14:"knowledge_ai"},KR={0:"unknown",1:"app",2:"sms",3:"phone"},MR={0:"unknown",1:"message",2:"doc_list",3:"doc",4:"pin",5:"meeting_minute",6:"chat_announcement",7:"url",8:"file",9:"task",10:"doc_file_url_merge",11:"image_video_merge"},DR={0:"unknown",1:"message",2:"announcement"},HR={1:"chat",2:"email"},zR={27:"im.message.reaction_v1",41:"im.message.read_count_v1",74:"im.chat.read_state_v1",92:"im.thread.reply_count_v1",130:"im.reaction.user_v1",146:"im.reaction.user_mru_v1",1002:"feed.cards_v1",1311:"im.message.preview_v1",5916:"im.chat.tabs_v1",7001:"system.device.status_v1",8106:"im.thread.read_state_v1",8110:"im.thread.updated_v1",30002:"im.message.urgent_v1",30003:"im.message.urgent_ack_v1",1020003:"calendar.event.sync_v1",1103704:"im.chat.top_notice_v1"},wR=new Set([200,6e3]);function TV(s){let{command:V}=s;if(wR.has(V))return null;if(V===6)return LR(s);let e=zR[V];return e?vR(e,s):{type:"system.event.unknown",event_id:null,timestamp:Date.now(),data:{command:V,raw:s}}}function LR(s){let{messageId:V,chatId:e,chatType:l,fromId:t,fromType:o,type:R,content:A,threadId:c}=s;return{type:"im.message.receive_v1",event_id:V?`evt_${V}`:null,timestamp:Date.now(),data:{id:V||null,conversation:{id:e||null,type:JR[l]||"unknown"},sender:{id:t||null,type:TR[o]||"unknown"},content:{type:yR[R]||"unknown",text:A||""},thread_id:c||null}}}function vR(s,V){let{command:e,event:l,sid:t,fromId:o,content:R,type:A,chatId:c,...a}=V;return c&&(a.chatId=c),PR(e,a),{type:s,event_id:t?`evt_${t}`:null,timestamp:Date.now(),data:a}}function PR(s,V){switch(s){case 7001:V.terminalType=xR[V.terminalType]??V.terminalType,V.onlineStatus=kR[V.onlineStatus]??V.onlineStatus;break;case 1002:V.feedType=Jt[V.feedType]??V.feedType,V.cards&&(V.cards=V.cards.map(e=>({...e,type:fR[e.type]??e.type,feedType:Jt[e.feedType]??e.feedType})));break;case 30002:case 30003:V.urgentType=KR[V.urgentType]??V.urgentType;break;case 5916:V.tabs&&(V.tabs=V.tabs.map(e=>({...e,tabType:MR[e.tabType]??e.tabType})));break;case 1103704:V.topNotice?.content&&(V.topNotice={...V.topNotice,content:{...V.topNotice.content,type:DR[V.topNotice.content.type]??V.topNotice.content.type}});break;case 41:V.pairs&&(V.pairs=V.pairs.map(e=>({...e,type:HR[e.type]??e.type})));break}}var cl=5,jR=500;async function yV(s,V){for(let e=1;e<=cl;e++){try{let l=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(V),signal:AbortSignal.timeout(1e4)});if(l.status>=200&&l.status<300){N.debug(`[Webhook] Delivered event ${V.event_id||"N/A"} (${l.status})`);return}N.warn(`[Webhook] Non-2xx response ${l.status} for event ${V.event_id||"N/A"} (attempt ${e}/${cl})`)}catch(l){N.warn(`[Webhook] Request failed for event ${V.event_id||"N/A"} (attempt ${e}/${cl}): ${l.message}`)}if(e<cl){let l=jR*Math.pow(2,e-1);await new Promise(t=>setTimeout(t,l))}}N.error(`[Webhook] Failed to deliver event ${V.event_id||"N/A"} after ${cl} attempts`)}var OR=300*1e3,pl=class s{constructor(V,e){this.api=V,this.auth=e,this.chatCache=new Map,this.userCache=new Map,this.chatInflight=new Map,this.userInflight=new Map}static extractIds(V){let e=new Set,l=new Set,t=V?.data;if(!t)return{chatIds:e,userIds:l};let o=V.type;if(o==="im.message.receive_v1")t.conversation?.id&&e.add(t.conversation.id),t.sender?.id&&l.add(t.sender.id);else if(o==="im.message.urgent_v1")t.chatId&&e.add(t.chatId),t.sendChatterId&&l.add(t.sendChatterId);else if(o==="im.message.urgent_ack_v1")t.chatId&&e.add(t.chatId),t.ackChatterId&&l.add(t.ackChatterId);else if(o==="im.chat.top_notice_v1")t.chatId&&e.add(t.chatId),t.topNotice?.operatorId&&l.add(t.topNotice.operatorId),t.topNotice?.content?.senderId&&l.add(t.topNotice.content.senderId);else if(o==="im.message.read_count_v1"){if(Array.isArray(t.pairs))for(let R of t.pairs)R.chatId&&e.add(R.chatId)}else t.chatId&&e.add(t.chatId);return{chatIds:e,userIds:l}}_getCached(V,e){let l=V.get(e);if(l){if(Date.now()>l.expiresAt){V.delete(e);return}return l.data}}_setCache(V,e,l){V.set(e,{data:l,expiresAt:Date.now()+OR})}async _resolveChat(V){let e=this._getCached(this.chatCache,V);if(e)return e;let l=this.chatInflight.get(V);if(l)return l;let t=this._fetchChat(V);this.chatInflight.set(V,t);try{return await t}finally{this.chatInflight.delete(V)}}async _fetchChat(V){try{let e=await this.api.getChatMeta(this.auth,V);if(!e.success||!e.chat)return null;let l={name:e.chat.name,type:e.chat.type,memberCount:e.chat.memberCount};return this._setCache(this.chatCache,V,l),l}catch(e){return N.error(`Enricher: failed to resolve chat ${V}:`,e.message),null}}async _resolveUser(V){let e=this._getCached(this.userCache,V);if(e)return e;let l=this.userInflight.get(V);if(l)return l;let t=this._fetchUser(V);this.userInflight.set(V,t);try{return await t}finally{this.userInflight.delete(V)}}async _fetchUser(V){try{let e=await this.api.getUserInfoById(this.auth,V);if(!e.success)return null;let l={name:e.name,isBot:e.isBot};return this._setCache(this.userCache,V,l),l}catch(e){return N.error(`Enricher: failed to resolve user ${V}:`,e.message),null}}async enrich(V){let{chatIds:e,userIds:l}=s.extractIds(V);if(e.size===0&&l.size===0)return V;let[t,o]=await Promise.all([Promise.all([...e].map(async h=>[h,await this._resolveChat(h)])),Promise.all([...l].map(async h=>[h,await this._resolveUser(h)]))]),R={};for(let[h,d]of t)d&&(R[h]=d);let A={};for(let[h,d]of o)d&&(A[h]=d);let c=Object.keys(R).length>0,a=Object.keys(A).length>0;if(!c&&!a)return V;let n={};return c&&(n.chats=R),a&&(n.users=A),{...V,_enriched:n}}};async function nd(){let s=process.env.OPENBIRD_COOKIE,V=process.env.OPENBIRD_WEBHOOK_URL;s||(N.error("OPENBIRD_COOKIE is required. Set it in .env or environment."),process.exit(1));let e=new fV;e.prepareAuth(s);let l=new de;N.log("Authenticating...");let{xCsrfToken:t}=await l.getCsrfToken(e),{userId:o}=await l.getUserInfo(e,t);if(o||(N.error("Failed to get user ID. Check your OPENBIRD_COOKIE."),process.exit(1)),N.log(`Authenticated as user ${o}`),await Yt(l,e,String(o)),V){N.log(`Webhook mode: forwarding events to ${V}`);let A=process.env.OPENBIRD_ENRICH!=="false"?new pl(l,e):null,c=new pt(e);c.setMeId(o),c.onMessage(async a=>{let n=TV(a);n&&(A&&(n=await A.enrich(n)),await yV(V,n))}),c.onEvent(async a=>{let n=TV(a);n&&(A&&(n=await A.enrich(n)),await yV(V,n))}),await c.start(),N.log("WebSocket connected \u2014 forwarding events")}else N.log("MCP-only mode (no OPENBIRD_WEBHOOK_URL set)")}export{JV as DocxEditor,de as FeishuApi,fV as FeishuAuth,pt as FeishuWebSocket,nd as main};
5
+ ${o}`);for(let A of R)t({imageKey:A,cryptoInfo:null});return e}static decodeGetChatHistoryResponse(V){try{let e=b(S,V);return!e.payload||e.payload.length===0?{success:!1,error:"Empty payload",messages:[]}:this.manualDecodeGetChatHistoryResponse(e.payload)}catch(e){return{success:!1,error:e.message,messages:[]}}}static manualDecodeGetChatHistoryResponse(V){let e=[],l=Buffer.from(V),t=0;for(;t<l.length;){let{value:o,bytesRead:R}=this.readVarintWithLength(l,t);if(R===0)break;t+=R;let A=o&7,c=o>>3;if(A===2){let{value:a,bytesRead:n}=this.readVarintWithLength(l,t);if(t+=n,t+a>l.length)break;let h=l.subarray(t,t+a);if(t+=a,c===1){let d=this.parseMessageEntry(h);d&&e.push(d)}}else if(A===0){let{bytesRead:a}=this.readVarintWithLength(l,t);t+=a}else if(A===5)t+=4;else if(A===1)t+=8;else break}return{success:!0,messages:e}}static parseMessageEntry(V){let e=0,l=0,t=null;for(;e<V.length;){let{value:R,bytesRead:A}=this.readVarintWithLength(V,e);if(A===0)break;e+=A;let c=R&7,a=R>>3;if(c===0){let{value:n,bytesRead:h}=this.readVarintWithLength(V,e);e+=h,a===1&&(l=n)}else if(c===2){let{value:n,bytesRead:h}=this.readVarintWithLength(V,e);if(e+=h,e+n>V.length)break;let d=V.subarray(e,e+n);e+=n,a===2&&(t=d)}else if(c===5)e+=4;else if(c===1)e+=8;else break}if(!t)return null;let o=this.parseChatMessage(t);return{...o,position:l||o.position}}static parseChatMessage(V){let e=0,l={position:0,messageId:"",type:0,typeName:"UNKNOWN",fromId:"",fromType:0,fromTypeName:"UNKNOWN",chatId:"",cid:"",createTime:0,text:"",htmlText:"",imageKey:"",imageKeys:[],language:"",replyCount:"0",parentMsgId:"",baikeAnnotations:[]};for(;e<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,e);if(o===0)break;e+=o;let R=t&7,A=t>>3;if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,e);switch(e+=a,A){case 2:l.type=c,l.typeName=iV(c);break;case 4:l.createTime=c;break;case 6:break;case 7:l.fromType=c,l.fromTypeName=uV(c);break;case 13:l.position=c;break}}else if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,e);if(e+=a,e+c>V.length)break;let n=V.subarray(e,e+c);switch(e+=c,A){case 1:l.messageId=n.toString("utf8");break;case 3:l.fromId=n.toString("utf8");break;case 5:let h=this.parseChatMessageContent(n);l.text=h.text,l.htmlText=h.htmlText,l.baikeAnnotations=h.baikeAnnotations||[];let d=h.imageInfos||[],E=d.map(g=>g.imageKey).filter(Boolean);l.imageKey=E[0]||"",l.imageKeys=E;for(let g of d)g.imageKey&&g.cryptoInfo&&Bl(g.imageKey,g.cryptoInfo);break;case 10:l.chatId=n.toString("utf8");break;case 12:l.cid=n.toString("utf8");break;case 16:l.replyCount=n.toString("utf8");break;case 18:l.parentMsgId=n.toString("utf8");break;case 39:l.language=n.toString("utf8");break}}else if(R===5)e+=4;else if(R===1)e+=8;else break}return l}static parseChatMessageContent(V){let e=0,l={text:"",htmlText:"",richTextOrImageBytes:new Uint8Array,richTextBytes:new Uint8Array,richTextData:new Uint8Array,imageInfos:[],baikeAnnotations:[]};for(;e<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,e);if(o===0)break;e+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,e);if(e+=a,e+c>V.length)break;let n=V.subarray(e,e+c);switch(e+=c,A){case 1:l.text=n.toString("utf8");break;case 2:l.richTextOrImageBytes=n,l.htmlText=this.tryDecodeAsUtf8(n)||"";break;case 3:l.richTextBytes=n;break;case 6:{l.richTextData=n;let h=this.parseBaikeAnnotation(n);h&&l.baikeAnnotations.push(h);break}}}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(V,e);e+=c}else if(R===5)e+=4;else if(R===1)e+=8;else break}return l.imageInfos=this.collectImageInfosFromChatHistoryContent(l),l}static parseBaikeAnnotation(V){let e=this.parseProtobufFields(V);if(this.getStringField(e,1)!=="baike")return null;let t=this.getBytesField(e,2);if(!t)return null;let o=this.parseProtobufFields(t),R=this.getBytesField(o,1);if(!R)return null;let A=this.parseProtobufFields(R),c=this.getBytesField(A,2);if(!c)return null;let a=this.parseProtobufFields(c),n=this.getBytesField(a,1);if(!n)return null;let h=this.parseProtobufFields(n),d=this.getBytesField(h,1),E=0,g=0;if(d){let r=this.parseProtobufFields(d);E=this.getVarintField(r,1,0),g=this.getVarintField(r,2,0)}let X=this.getStringField(h,2)||"",G=this.getBytesField(h,4),W="",m=0;if(G){let r=this.parseProtobufFields(G);W=this.getStringField(r,1)||"",m=this.getVarintField(r,2,0)}return W?{type:"baike",entityId:W,entityType:m,entityTypeName:m===1?"enterprise":"public",text:X,offset:E,length:g}:null}static parseProtobufFields(V){let e=[],l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(o===0)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,l+c>V.length)break;e.push({fieldNo:A,wireType:R,data:V.subarray(l,l+c)}),l+=c}else if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a,e.push({fieldNo:A,wireType:R,val:c})}else if(R===5)l+=4;else if(R===1)l+=8;else break}return e}static getStringField(V,e){let l=V.find(t=>t.fieldNo===e&&t.wireType===2);return l?l.data.toString("utf8"):null}static getBytesField(V,e){let l=V.find(t=>t.fieldNo===e&&t.wireType===2);return l?l.data:null}static getVarintField(V,e,l){let t=V.find(o=>o.fieldNo===e&&o.wireType===0);return t?t.val:l}static buildMarkChatReadRequest(V,e,l){let t=Buffer.from(e,"utf-8"),o=[];o.push(10),F(o,t.length),o.push(...t),o.push(16),this.pushVarintBigInt(o,BigInt(l));let R=B(S,{payloadType:1,cmd:201,cid:V,payload:new Uint8Array(o)});return Buffer.from(C(S,R))}static decodeMarkChatReadResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l="";if(e.payload&&e.payload.length>0){let t=this.extractLengthDelimitedField(Buffer.from(e.payload),3);t&&(l=Buffer.from(t).toString("utf-8"))}return{success:!0,chatId:l}}catch(e){return{success:!1,error:e.message}}}static buildPinSessionRequest(V,e,l=1){let t=Buffer.from(e,"utf-8"),o=[];o.push(10),F(o,t.length),o.push(...t),o.push(16),this.pushVarintBigInt(o,BigInt(l));let R=[];R.push(10),F(R,o.length),R.push(...o);let A=B(S,{payloadType:1,cmd:1100,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,A))}static decodePinSessionResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l={success:!0,status:0,version:0};if(e.payload&&e.payload.length>0){let t=Buffer.from(e.payload),o=0;for(;o<t.length;){let{value:R,bytesRead:A}=this.readVarintWithLength(t,o);if(!A)break;o+=A;let c=R&7,a=R>>3;if(c===0){let{value:n,bytesRead:h}=this.readVarintWithLength(t,o);o+=h,a===1?l.status=n:a===2&&(l.version=n)}else if(c===2){let{value:n,bytesRead:h}=this.readVarintWithLength(t,o);o+=h+n}else if(c===1)o+=8;else if(c===5)o+=4;else break}}return l}catch(e){return{success:!1,error:e.message}}}static buildUnpinSessionRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[];t.push(10),F(t,l.length),t.push(...l),t.push(16,1);let o=[];o.push(10),F(o,t.length),o.push(...t);let R=B(S,{payloadType:1,cmd:1101,cid:V,payload:new Uint8Array(o)});return Buffer.from(C(S,R))}static decodeUnpinSessionResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildMarkSessionRequest(V,e,l=!0){let t=[];t.push(8),this.pushVarintBigInt(t,BigInt(e)),t.push(16,1),t.push(24,1);let o=l?10:18,R=[];R.push(o),F(R,t.length),R.push(...t);let A=B(S,{payloadType:1,cmd:1027,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,A))}static decodeMarkSessionResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildGetUserRelationRequest(V,e){let l=[];l.push(8),this.pushVarintBigInt(l,BigInt(e)),l.push(16,1);let t=B(S,{payloadType:1,cmd:406,cid:V,payload:new Uint8Array(l)});return Buffer.from(C(S,t))}static decodeGetUserRelationResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l={success:!0,relationType:0,status:0};if(e.payload&&e.payload.length>0){let t=Buffer.from(e.payload),o=this.extractLengthDelimitedField(t,1);if(o){let R=Buffer.from(o),A=0;for(;A<R.length;){let{value:c,bytesRead:a}=this.readVarintWithLength(R,A);if(!a)break;A+=a;let n=c&7,h=c>>3;if(n===0){let{value:d,bytesRead:E}=this.readVarintWithLength(R,A);A+=E,h===1&&(l.relationType=d)}else if(n===2){let{value:d,bytesRead:E}=this.readVarintWithLength(R,A);if(A+=E,h===2){let g=R.subarray(A,A+d),X=0;for(;X<g.length;){let{value:G,bytesRead:W}=this.readVarintWithLength(g,X);if(!W)break;X+=W;let m=G&7,r=G>>3;if(m===0){let{value:i,bytesRead:Q}=this.readVarintWithLength(g,X);X+=Q,r===1&&(l.status=i)}else break}}A+=d}else if(n===1)A+=8;else if(n===5)A+=4;else break}}}return l}catch(e){return{success:!1,error:e.message}}}static buildGetUserPresenceRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[];t.push(10),F(t,l.length),t.push(...l);let o=B(S,{payloadType:1,cmd:5093,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,o))}static decodeGetUserPresenceResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l={success:!0,userId:"",presenceData:""};if(e.payload&&e.payload.length>0){let t=Buffer.from(e.payload),o=this.extractLengthDelimitedField(t,1);if(o){let R=Buffer.from(o),A=this.extractLengthDelimitedField(R,1),c=this.extractLengthDelimitedField(R,2);A&&(l.userId=Buffer.from(A).toString("utf-8")),c&&c.length>0&&(l.presenceData=Buffer.from(c).toString("hex"))}}return l}catch(e){return{success:!1,error:e.message}}}static buildGetConfigRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[];t.push(10),F(t,l.length),t.push(...l);let o=B(S,{payloadType:1,cmd:7026,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,o))}static decodeGetConfigResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l={success:!0,configName:"",value:0,defaultValue:0};if(e.payload&&e.payload.length>0){let t=Buffer.from(e.payload),o=this.extractLengthDelimitedField(t,1);if(o){let R=Buffer.from(o),A=this.extractLengthDelimitedField(R,1);A&&(l.configName=Buffer.from(A).toString("utf-8"));let c=this.extractLengthDelimitedField(R,2);if(c){let a=Buffer.from(c),n=0;for(;n<a.length;){let{value:h,bytesRead:d}=this.readVarintWithLength(a,n);if(!d)break;n+=d;let E=h&7,g=h>>3;if(E===0){let{value:X,bytesRead:G}=this.readVarintWithLength(a,n);n+=G,g===2?l.value=X:g===3&&(l.defaultValue=X)}else if(E===2){let{value:X,bytesRead:G}=this.readVarintWithLength(a,n);n+=G+X}else if(E===1)n+=8;else if(E===5)n+=4;else break}}}}return l}catch(e){return{success:!1,error:e.message}}}static buildGetFeatureFlagsRequest(V,e={}){let{version:l=1,clientId:t="1-0",syncToken:o=""}=e,R=Buffer.from(t,"utf-8"),A=[];if(A.push(8),this.pushVarintBigInt(A,BigInt(l)),A.push(18),F(A,R.length),A.push(...R),o){let a=Buffer.from(o,"utf-8");A.push(26),F(A,a.length),A.push(...a)}let c=B(S,{payloadType:1,cmd:1011741,cid:V,payload:new Uint8Array(A)});return Buffer.from(C(S,c))}static decodeGetFeatureFlagsResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};let l={success:!0,syncToken:"",flags:{group1:[],group2:[]}};if(e.payload&&e.payload.length>0){let t=Buffer.from(e.payload),o=0;for(;o<t.length;){let{value:R,bytesRead:A}=this.readVarintWithLength(t,o);if(!A)break;o+=A;let c=R&7,a=R>>3;if(c===2){let{value:n,bytesRead:h}=this.readVarintWithLength(t,o);if(o+=h,a===3)l.syncToken=t.subarray(o,o+n).toString("utf-8");else if(a===4){let d=t.subarray(o,o+n);l.flags=this._parseFeatureFlags(d)}o+=n}else if(c===0){let{bytesRead:n}=this.readVarintWithLength(t,o);o+=n}else if(c===1)o+=8;else if(c===5)o+=4;else break}}return l}catch(e){return{success:!1,error:e.message}}}static _parseFeatureFlags(V){let e={group1:[],group2:[]},l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(!o)break;l+=o;let R=t&7,A=t>>3;if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,A===1||A===2){let n=V.subarray(l,l+c),h=this._parseFlagEntry(n);h&&(A===1?e.group1:e.group2).push(h)}l+=c}else if(R===0){let{bytesRead:c}=this.readVarintWithLength(V,l);l+=c}else if(R===1)l+=8;else if(R===5)l+=4;else break}return e}static _parseFlagEntry(V){let e={id:0,value:0},l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(!o)break;l+=o;let R=t&7,A=t>>3;if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a,A===1?e.id=c:A===2&&(e.value=c)}else if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a+c}else break}return e}static generateUploadKey(V="image"){let e=GV.randomUUID().slice(0,35);return`${V==="file"?"file_v3_00ve_":"img_v3_00ve_"}${e}g`}static generateImageKey(){return this.generateUploadKey("image")}static buildUploadCreateRequest(V,e={}){let l=Buffer.from(V,"utf-8"),t=[];if(t.push(10),F(t,l.length),t.push(...l),e.fileType===void 0&&(t.push(16),F(t,e.type??0)),e.fileType!==void 0&&(t.push(24),F(t,e.fileType)),e.secondaryId&&(t.push(34),F(t,e.secondaryId.length),t.push(...e.secondaryId)),e.filename){let o=Buffer.from(e.filename,"utf-8");t.push(42),F(t,o.length),t.push(...o)}if(e.fileSize!==void 0&&(t.push(48),F(t,e.fileSize)),e.blake3Hash){let o=Buffer.from("blake3:"),R=Buffer.concat([o,e.blake3Hash]);t.push(74),F(t,R.length),t.push(...R)}return Buffer.from(t)}static decodeUploadCreateResponse(V){try{let e=this._decodeSimpleProto(V);return e[1]!==1?{success:!1,error:e[3]||`Unexpected status: ${e[1]}`}:{success:!0,version:e[2]}}catch(e){return{success:!1,error:e.message}}}static decodeUploadPartResponse(V){try{let e=this._decodeSimpleProto(V),l=e[1],t=e[2];return l===void 0||t===void 0?{success:!1,error:e[3]||"Missing id or version in part response"}:{success:!0,id:l,version:t}}catch(e){return{success:!1,error:e.message}}}static buildUploadCompleteRequest(V,e,l={}){let t=Buffer.from(V,"utf-8"),o=[];o.push(10),F(o,t.length),o.push(...t),o.push(16),F(o,e.length);for(let c of e){let a=[];a.push(8),F(a,c.id??1),a.push(16),F(a,c.version??0),o.push(26),F(o,a.length),o.push(...a)}let R=Buffer.from(l.filename||"","utf-8");o.push(34),F(o,R.length),R.length&&o.push(...R);let A=Buffer.from(l.mimeType||"","utf-8");return o.push(42),F(o,A.length),A.length&&o.push(...A),Buffer.from(o)}static decodeUploadCompleteResponse(V){try{let e=this._decodeSimpleProto(V);return e[1]!==0?{success:!1,error:e[4]||`Upload failed with status: ${e[1]}`}:{success:!0,key:e[2]}}catch(e){return{success:!1,error:e.message}}}static _decodeSimpleProto(V){let e=0,l={};for(;e<V.length;){let t=V[e++],o=t>>3,R=t&7;if(R===0){let A=0,c=1;for(;e<V.length;){let a=V[e++];if(A+=(a&127)*c,c*=128,(a&128)===0)break}l[o]=A}else if(R===2){let A=0,c=1;for(;e<V.length;){let a=V[e++];if(A+=(a&127)*c,c*=128,(a&128)===0)break}l[o]=V.slice(e,e+A).toString("utf-8"),e+=A}else if(R===1)e+=8;else if(R===5)e+=4;else throw new Error(`Unknown wire type ${R} at offset ${e-1}`)}return l}static buildSaveContactAliasRequest(V,e,l={}){let{alias:t="",memo:o="",memoImageKey:R=""}=l,A=Buffer.from(e,"utf-8"),c=[];c.push(10),F(c,A.length),c.push(...A);let a=Buffer.from(t,"utf-8");c.push(18),F(c,a.length),c.push(...a);let n=Buffer.from(o,"utf-8");c.push(26),F(c,n.length),c.push(...n);let h=Buffer.from(R,"utf-8");c.push(34),F(c,h.length),c.push(...h);let d=B(S,{payloadType:1,cmd:5036,cid:V,payload:new Uint8Array(c)});return Buffer.from(C(S,d))}static decodeSaveContactAliasResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildContactInfoSyncRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[];t.push(10),F(t,l.length),t.push(...l);let o=B(S,{payloadType:1,cmd:1100319,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,o))}static decodeContactInfoSyncResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};if(!e.payload||e.payload.length===0)return{success:!1,error:"Empty payload in sync response",syncStatus:{}};let l=Buffer.from(e.payload),t={},o=0;for(;o<l.length;){let{value:R,bytesRead:A}=this.readVarintWithLength(l,o);if(!A)break;o+=A;let c=R>>3,a=R&7;if(a===0){let{value:n,bytesRead:h}=this.readVarintWithLength(l,o);o+=h,c===1?t.statusCode=Number(n):c===2?t.syncFlag2=Number(n):c===3?t.syncFlag3=Number(n):c===4?t.syncFlag4=Number(n):c===7?t.syncFlag7=Number(n):c===8?t.syncFlag8=Number(n):c===9&&(t.syncFlag9=Number(n))}else if(a===2){let{value:n,bytesRead:h}=this.readVarintWithLength(l,o);o+=h;let d=l.subarray(o,o+Number(n));o+=Number(n),c===5?t.syncToken=Buffer.from(d).toString("utf-8"):c===6&&(t.extraData=Buffer.from(d).toString("hex")||null)}else if(a===1)o+=8;else if(a===5)o+=4;else break}return t.statusCode!==void 0&&t.statusCode!==1?{success:!1,error:`Sync failed with status code: ${t.statusCode}`,syncStatus:t}:t.statusCode===void 0?{success:!1,error:"Missing status code in sync response",syncStatus:t}:{success:!0,syncStatus:t}}catch(e){return{success:!1,error:e.message}}}static buildCreateThreadRequest(V,e){let l=Buffer.from(e,"utf-8"),t=[];t.push(10),F(t,l.length),t.push(...l),t.push(16,5);let o=B(S,{payloadType:1,cmd:8111,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,o))}static decodeCreateThreadResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildPutTransmitMessageRequest(V,e={}){let{messageId:l,chatIds:t=[],cids:o={},targets:R={},version:A=1,originMergeForwardId:c=""}=e,a=[...new Set(t.map(g=>String(g??"").trim()).filter(Boolean))],n={},h={};for(let g of a){n[g]=String(o[g]??GV.randomUUID().toUpperCase());let X=R[g]??{},G=oR(X.targetType??X.target_type),W=X.threadIdsCidsMap??X.thread_ids_cids_map??{};h[g]=B(Vt,{targetType:G,threadIdsCidsMap:W})}let d=B(Ll,{chatIds:a,messageId:String(l??""),cids:n,version:A,targets:h,originMergeForwardId:String(c??"")}),E=B(S,{payloadType:1,cmd:51,cid:V,payload:C(Ll,d)});return Buffer.from(C(S,E))}static decodePutTransmitMessageResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,data:{messages:{},feedCards:{},threadMessages:{},threads:{}},messages:{},feedCards:{},threadMessages:{},threads:{}};let l=b(tt,e.payload),t=this._normalizeProtoValue(l);return{success:!0,data:t,messages:t.messages||{},feedCards:t.feedCards||{},threadMessages:t.threadMessages||{},filePermCheck:t.filePermCheck,threads:t.threads||{}}}catch(e){return{success:!1,error:e.message}}}static buildSearchInChatRequest(V,e,l,t={}){let{pageSize:o=5,locale:R="zh_CN"}=t,A=_(),c=Buffer.from(e,"utf-8"),a=Buffer.from(l,"utf-8"),n=Buffer.from(A,"utf-8"),h=Buffer.from(R,"utf-8"),d=Buffer.from("SEARCH_MESSAGES","utf-8"),E=[];E.push(8,1),E.push(18),F(E,a.length),E.push(...a);let g=[];g.push(8),this.pushVarintBigInt(g,BigInt(o)),g.push(18,4,26,2,10,0),g.push(26,4,42,2,40,1);let X=[];X.push(10),F(X,d.length),X.push(...d),X.push(18),F(X,g.length),X.push(...g),X.push(26),F(X,E.length),X.push(...E);let G=[];G.push(10),F(G,n.length),G.push(...n),G.push(16,1),G.push(26),F(G,c.length),G.push(...c),G.push(42),F(G,X.length),G.push(...X),G.push(50),F(G,h.length),G.push(...h);let W=[];W.push(10),F(W,G.length),W.push(...G);let m=B(S,{payloadType:1,cmd:11021,cid:V,payload:new Uint8Array(W)});return Buffer.from(C(S,m))}static decodeSearchInChatResponse(V){return this.decodeSearchResponse(V)}static extractVarintField(V,e){let l=0;for(;l<V.length;){let{value:t,bytesRead:o}=this.readVarintWithLength(V,l);if(!o)break;l+=o;let R=t&7,A=t>>3;if(R===0){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);if(l+=a,A===e)return c}else if(R===2){let{value:c,bytesRead:a}=this.readVarintWithLength(V,l);l+=a+c}else if(R===1)l+=8;else if(R===5)l+=4;else break}return null}static buildPutUrgentRequest(V,e,l,t,o,R={}){let A=R.urgentType||1,c=Math.floor(Date.now()/1e3),a=Buffer.from(e,"utf-8"),n=Buffer.from(o,"utf-8"),h=Buffer.from(t,"utf-8"),d=Buffer.from(l,"utf-8"),E=[];E.push(10),F(E,a.length),E.push(...a),E.push(16),this.pushVarintBigInt(E,BigInt(A)),E.push(24),this.pushVarintBigInt(E,BigInt(c)),E.push(34),F(E,n.length),E.push(...n);let g=[];g.push(10),F(g,h.length),g.push(...h),g.push(18),F(g,d.length),g.push(...d);let X=[];X.push(10),F(X,E.length),X.push(...E),X.push(18),F(X,h.length),X.push(...h),X.push(26),F(X,g.length),X.push(...g);let G=B(S,{payloadType:1,cmd:1,cid:V,payload:new Uint8Array(X)});return Buffer.from(C(S,G))}static decodePutUrgentResponse(V){try{let e=b(S,V);return e.status&&e.status!==0?{success:!1,error:`Packet status: ${e.status}`}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildPullUrgentAckStatusRequest(V,e,l){let t=Buffer.from(e,"utf-8"),o=Buffer.from(l.messageId,"utf-8"),R=Buffer.from(l.targetUserId,"utf-8"),A=l.urgentAckId?Buffer.from(l.urgentAckId,"utf-8"):null,c=l.urgentType||1,a=Math.floor(Date.now()/1e3),n=[];n.push(10),F(n,o.length),n.push(...o),n.push(18),F(n,t.length),n.push(...t),n.push(26),F(n,R.length),n.push(...R),A&&(n.push(34),F(n,A.length),n.push(...A)),n.push(40),this.pushVarintBigInt(n,BigInt(a)),n.push(48),this.pushVarintBigInt(n,BigInt(c));let h=[];h.push(10),F(h,n.length),h.push(...n);let d=[];d.push(10),F(d,t.length),d.push(...t),d.push(18),F(d,h.length),d.push(...h);let E=[];E.push(26),F(E,d.length),E.push(...d);let g=B(S,{payloadType:1,cmd:1,cid:V,payload:new Uint8Array(E)});return Buffer.from(C(S,g))}static decodePullUrgentAckStatusResponse(V){try{let e=b(S,V);if(e.status&&e.status!==0)return{success:!1,error:`Packet status: ${e.status}`};if(!e.payload||e.payload.length===0)return{success:!0,ackEntries:[]};let l=Buffer.from(e.payload),t=[],o=this.extractLengthDelimitedField(l,3);if(o){let R=0;for(;R<o.length;){let A=o[R],c=A>>3,a=A&7;if(c===2&&a===2){R++;let{value:n,bytesRead:h}=this.readVarintWithLength(o,R);R+=h;let d=o.subarray(R,R+Number(n));R+=Number(n);let E={},g=this.extractLengthDelimitedField(d,1);g&&(E.messageId=Buffer.from(g).toString("utf-8"));let X=this.extractLengthDelimitedField(d,2);X&&(E.chatId=Buffer.from(X).toString("utf-8"));let G=this.extractLengthDelimitedField(d,3);G&&(E.targetUserId=Buffer.from(G).toString("utf-8"));let W=this.extractLengthDelimitedField(d,4);W&&(E.urgentAckId=Buffer.from(W).toString("utf-8"));let m=0;for(;m<d.length;){let r=d[m],i=r>>3,Q=r&7;if(Q===0){m++;let{value:Y,bytesRead:T}=this.readVarintWithLength(d,m);m+=T,i===5?E.timestamp=Number(Y):i===6?E.urgentType=Number(Y):i===7&&(E.ackStatus=Number(Y))}else if(Q===2){m++;let{value:Y,bytesRead:T}=this.readVarintWithLength(d,m);m+=T+Number(Y)}else m++}t.push(E)}else if(a===2){R++;let{value:n,bytesRead:h}=this.readVarintWithLength(o,R);R+=h+Number(n)}else if(a===0){R++;let{bytesRead:n}=this.readVarintWithLength(o,R);R+=n}else R++}}return{success:!0,ackEntries:t}}catch(e){return{success:!1,error:e.message}}}static buildPutScheduleMessageRequest(V,e,l,t,o={}){let{entityId:R,parseMarkdown:A=!0}=o,c=_(),a=ll(e),n=a.innerText,h=A&&bl(e)&&a.isBlockLevel||!1,d=this.buildContentBytes(h?"":n,a.elementIds,n,a.dictionaryBytes),E=this.buildPutMessageRequestBytes(h?2:4,l,c,d),g=[],X=Buffer.from(l,"utf-8"),G=Buffer.from(R||l,"utf-8");g.push(10),F(g,E.length),g.push(...E);let W=Number(t)>=1e12?Math.floor(Number(t)/1e3):Number(t);g.push(16),this.pushVarintBigInt(g,BigInt(W)),g.push(26),F(g,X.length),g.push(...X),g.push(34),F(g,G.length),g.push(...G);let m=B(S,{payloadType:1,cmd:900030,cid:V,payload:new Uint8Array(g)});return Buffer.from(C(S,m))}static decodePutScheduleMessageResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let t=this.extractErrorMessage(e.payload);if(t)return{success:!1,error:t}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0};let l=b(jl,e.payload);return l.message?{success:!0,scheduleMessage:this._normalizeScheduleMessage(l.message)}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildPatchScheduleMessageRequest(V,e,l,t,o={}){let{scheduleTime:R,content:A,sendImmediately:c,parseMarkdown:a=!0}=o,n=Buffer.from(e,"utf-8"),h=Buffer.from(l,"utf-8"),d=[];if(d.push(8),this.pushVarint(d,t),d.push(18),F(d,h.length),d.push(...h),d.push(26),F(d,n.length),d.push(...n),R!==void 0){let g=Number(R)>=1e12?Math.floor(Number(R)/1e3):Number(R);this.pushVarint(d,160),this.pushVarintBigInt(d,BigInt(g))}if(A!==void 0){let g=ll(A),X=a&&bl(A)&&g.isBlockLevel||!1,G=this.buildContentBytes(X?"":g.innerText,g.elementIds,g.innerText,g.dictionaryBytes);this.pushVarint(d,168),this.pushVarint(d,X?2:4),this.pushVarint(d,178),F(d,G.length),d.push(...G)}c&&(this.pushVarint(d,184),d.push(1));let E=B(S,{payloadType:1,cmd:900034,cid:V,payload:new Uint8Array(d)});return Buffer.from(C(S,E))}static decodePatchScheduleMessageResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let t=this.extractErrorMessage(e.payload);if(t)return{success:!1,error:t}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0};let l=b(ql,e.payload);return l.message?{success:!0,scheduleMessage:this._normalizeScheduleMessage(l.message)}:{success:!0}}catch(e){return{success:!1,error:e.message}}}static buildPullScheduleMessageByIdsRequest(V,e,l){let t=[],o=Buffer.from(e,"utf-8");t.push(10),F(t,o.length),t.push(...o);for(let A of l){let c=Buffer.from(A,"utf-8");t.push(18),F(t,c.length),t.push(...c)}let R=B(S,{payloadType:1,cmd:900032,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,R))}static decodePullScheduleMessageByIdsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,scheduleMessages:{}};let l=b(_l,e.payload),t={};for(let[o,R]of Object.entries(l.messages||{}))t[o]=this._normalizeScheduleMessage(R);return{success:!0,scheduleMessages:t}}catch(e){return{success:!1,error:e.message}}}static buildPullChatScheduleMessagesRequest(V,e,l={}){let{entityType:t=1,entityId:o=e,status:R=[1,2]}=l,A=[],c=Buffer.from(e,"utf-8"),a=Buffer.from(o,"utf-8");A.push(10),F(A,c.length),A.push(...c),A.push(16),this.pushVarintBigInt(A,BigInt(t)),A.push(26),F(A,a.length),A.push(...a);for(let h of R)A.push(32),this.pushVarintBigInt(A,BigInt(h));let n=B(S,{payloadType:1,cmd:900031,cid:V,payload:new Uint8Array(A)});return Buffer.from(C(S,n))}static decodePullChatScheduleMessagesResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}return!e.payload||e.payload.length===0?{success:!0,scheduleMessages:[]}:{success:!0,scheduleMessages:(b(Ol,e.payload).messages||[]).map(o=>this._normalizeScheduleMessage(o))}}catch(e){return{success:!1,error:e.message}}}static _isPacketError(V){return V.status!==0&&V.status!==200}static _normalizeProtoValue(V){if(typeof V=="bigint")return V>BigInt(Number.MAX_SAFE_INTEGER)||V<BigInt(Number.MIN_SAFE_INTEGER)?V.toString():Number(V);if(Array.isArray(V))return V.map(e=>this._normalizeProtoValue(e));if(V&&typeof V=="object"){let e={};for(let[l,t]of Object.entries(V))l.startsWith("$")||(e[l]=this._normalizeProtoValue(t));return e}return V}static _normalizeScheduleMessage(V){let e={0:"UNKNOWN",1:"PENDING",2:"SUSPEND",3:"SUCCESS",4:"FAIL",5:"DELETE"};return{messageId:V.messageId||"",scheduleTime:String(V.scheduleTime||0n),status:V.status,statusName:e[V.status]||"UNKNOWN"}}static buildGetBaikeCardRequest(V,e,l,t={}){let o=t.entityType??1,R=t.chatId||"",A=t.messageId||"",c=[],a=Buffer.from(e,"utf-8");c.push(10),F(c,a.length),c.push(...a);let n=Buffer.from(l,"utf-8");if(c.push(18),F(c,n.length),c.push(...n),c.push(24),F(c,o),c.push(32,0),c.push(40,2),R){let X=Buffer.from(R,"utf-8");c.push(50),F(c,X.length),c.push(...X)}if(A){let X=Buffer.from(A,"utf-8");c.push(58),F(c,X.length),c.push(...X)}c.push(64,0,72,0,80,0);let h=Buffer.from("im","utf-8");c.push(162,1),F(c,h.length),c.push(...h);let d=Buffer.from("click","utf-8");c.push(170,1),F(c,d.length),c.push(...d);let E=Buffer.from("{}","utf-8");c.push(178,1),F(c,E.length),c.push(...E);let g=B(S,{payloadType:1,cmd:4303,cid:V,payload:new Uint8Array(c)});return Buffer.from(C(S,g))}static decodeGetBaikeCardResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let c=this.extractErrorMessage(e.payload);if(c)return{success:!1,error:c}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!1,error:"Empty payload"};let l=this.parseProtobufFields(Buffer.from(e.payload)),t=this.getBytesField(l,1);if(!t)return{success:!1,error:"No content in response"};let o=this.parseProtobufFields(t),R=this.getBytesField(o,1);return!R||R.length===0?{success:!1,error:"No HTML content"}:{success:!0,html:R.toString("utf-8")}}catch(e){return{success:!1,error:e.message}}}static extractBaikeCardInfo(V){let e={term:"",fullName:"",definition:"",detailUrl:"",contributors:[]},l=V.match(/font-size:\s*18px[^"]*"[^>]*text="([^"]+)"/);l&&(e.term=l[1]);let t=V.match(/aslCard-baikeCard-alias"[^>]*text="([^"]+)"/);t&&(e.fullName=t[1]);let o=V.match(/white-space:\s*pre-wrap;word-break:\s*break-word;[^"]*"\s*\n?\s*text="([^"]+)"/);o&&(e.definition=o[1]);let R=V.match(/https:\/\/ai\.feishu\.cn\/lingo\/detail\/\d+/);R&&(e.detailUrl=R[0]);let A=/title="([^"]+)">\s*<\/tooltip>\s*<text[^>]*>([^<]*)<\/text>/g,c;for(;(c=A.exec(V))!==null;)c[1]&&!e.contributors.includes(c[1])&&e.contributors.push(c[1]);return e}static buildGetBaikeRecommendDocsRequest(V,e,l=1){let t=[],o=Buffer.from(e,"utf-8");t.push(10),F(t,o.length),t.push(...o),t.push(16),F(t,l);let R=Buffer.from("recommend_docs","utf-8");t.push(26),F(t,R.length),t.push(...R),t.push(32,0),t.push(162,1,0);let A=B(S,{payloadType:1,cmd:4306,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,A))}static decodeGetBaikeRecommendDocsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let a=this.extractErrorMessage(e.payload);if(a)return{success:!1,error:a}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!1,error:"Empty payload"};let l=this.parseProtobufFields(Buffer.from(e.payload)),t=this.getBytesField(l,1);if(!t)return{success:!1,error:"No entry data in response",entityId:"",docs:[]};let o=this.parseProtobufFields(t),R=this.getStringField(o,1)||"",A=this.getBytesField(o,2),c=[];if(A&&A.length>0){let a=this.parseProtobufFields(A);for(let n of a)n.wireType===2&&c.push(n.data.toString("utf-8"))}return{success:!0,entityId:R,docs:c}}catch(e){return{success:!1,error:e.message}}}static buildSearchMeetingRoomsRequest(V,e,l,t={}){let o=[];if(o.push(8),this.pushVarintBigInt(o,BigInt(e)),o.push(16),this.pushVarintBigInt(o,BigInt(l)),t.keyword!=null&&t.keyword!==""){let a=Buffer.from(t.keyword,"utf-8");o.push(26),F(o,a.length),o.push(...a)}if(t.count!=null&&(o.push(32),F(o,t.count)),t.timezone!=null&&t.timezone!==""){let a=Buffer.from(t.timezone,"utf-8");o.push(58),F(o,a.length),o.push(...a)}let R=[];if(t.minCapacity!=null&&t.minCapacity>0&&(R.push(8),F(R,t.minCapacity)),t.needEquipments&&t.needEquipments.length>0)for(let a of t.needEquipments){let n=Buffer.from(a,"utf-8");R.push(18),F(R,n.length),R.push(...n)}R.length>0&&(o.push(66),F(o,R.length),o.push(...R)),t.cursor!=null&&(o.push(72),F(o,t.cursor));let A=t.type??(t.cursor!=null?2:1);o.push(80),F(o,A);let c=B(S,{payloadType:1,cmd:1000016,cid:V,payload:new Uint8Array(o)});return Buffer.from(C(S,c))}static buildSearchGuestsRequest(V,e,l={}){let t=l.offset??0,o=l.limit??50,R=l.locale??"zh_CN",A=l.guestType??2,c=[],a=Buffer.from(e,"utf-8");c.push(10),F(c,a.length),c.push(...a),c.push(16),F(c,t),c.push(24),F(c,o),c.push(32,1);let n=Buffer.from(R,"utf-8");c.push(42),F(c,n.length),c.push(...n),c.push(48,0),c.push(56,0),c.push(64,0),c.push(72,1),c.push(88,0),c.push(104,1);let h=[8];F(h,A);let d=[10];F(d,h.length),d.push(...h),c.push(114),F(c,d.length),c.push(...d);let E=B(S,{payloadType:1,cmd:1000014,cid:V,payload:new Uint8Array(c)});return Buffer.from(C(S,E))}static decodeSearchGuestsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}return!e.payload||e.payload.length===0?{success:!0,guests:[]}:{success:!0,guests:this.parseProtobufFields(Buffer.from(e.payload)).filter(o=>o.fieldNo===1&&o.wireType===2).map(o=>this._parseSearchGuest(o.data))}}catch(e){return{success:!1,error:e.message}}}static _parseSearchGuest(V){let e=this.parseProtobufFields(V),l=this.getStringField(e,3)||"",t=null;if(l)try{t=JSON.parse(l)}catch{t=null}let o=this.getVarintField(e,5,0);return{guestId:this.getStringField(e,1)||"",displayName:this.getStringField(e,2)||"",description:l,descriptionData:t,avatarUrl:this.getStringField(e,4)||"",type:o,typeName:o===1?"USER":o===2?"GROUP":`UNKNOWN(${o})`,tenantId:this.getStringField(e,6)||""}}static decodeSearchMeetingRoomsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let c=this.extractErrorMessage(e.payload);if(c)return{success:!1,error:c}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,buildings:[],hasMore:!1,cursor:0};let l=Buffer.from(e.payload),t=this.parseProtobufFields(l),o=t.filter(c=>c.fieldNo===1&&c.wireType===2).map(c=>this._parseCalendarBuilding(c.data)),R=this.getVarintField(t,2,0)!==0,A=this.getVarintField(t,3,0);return{success:!0,buildings:o,hasMore:R,cursor:A}}catch(e){return{success:!1,error:e.message}}}static buildPullBuildingsRequest(V,e={}){let l={...e.meetingRoomFilter||{}};e.minCapacity!=null&&l.minCapacity==null&&(l.minCapacity=e.minCapacity),e.needEquipments!=null&&l.needEquipments==null&&(l.needEquipments=e.needEquipments);let t=B(SV,{...e.eventField?{eventField:e.eventField}:{},...Object.keys(l).length>0?{meetingRoomFilter:l}:{},...e.enableRecommendations!=null?{enableRecommendations:e.enableRecommendations}:{},...e.operateInstanceField?{operateInstanceField:e.operateInstanceField}:{}}),o=B(S,{payloadType:1,cmd:1010009,cid:V,payload:C(SV,t)});return Buffer.from(C(S,o))}static decodePullBuildingsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let o=this.extractErrorMessage(e.payload);if(o)return{success:!1,error:o}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,buildings:{}};let l=this.parseProtobufFields(Buffer.from(e.payload)),t={};for(let o of l.filter(R=>R.fieldNo===1&&R.wireType===2)){let R=this.parseProtobufFields(o.data),A=this.getStringField(R,1),c=this.getBytesField(R,2);!A||!c||(t[A]=this._parseCalendarBuilding(c))}return{success:!0,buildings:t}}catch(e){return{success:!1,error:e.message}}}static _parseCalendarBuilding(V){let e=this.parseProtobufFields(V),l=e.filter(A=>A.fieldNo===6&&A.wireType===2),t={};for(let A of e.filter(c=>c.fieldNo===11&&c.wireType===2)){let c=this.parseProtobufFields(A.data),a=this.getStringField(c,1),n=this.getStringField(c,2);a!=null&&n!=null&&(t[a]=n)}let o={id:this.getStringField(e,1)||"",name:this.getStringField(e,2)||"",description:this.getStringField(e,3)||"",floors:l.map(A=>A.data.toString("utf8")),meetingRooms:[],isDeleted:this.getVarintField(e,8,0)!==0,weight:this.getVarintField(e,9,0),seizeTime:this.getVarintField(e,10,0),floorLevelIds:t},R=e.filter(A=>A.fieldNo===7&&A.wireType===2);return o.meetingRooms=R.map(A=>this._parseCalendarResource(A.data)),o}static _parseCalendarResource(V){let e=this.parseProtobufFields(V),l=this.getVarintField(e,5,0),t=this.getVarintField(e,4,0);return{id:this.getStringField(e,1)||"",calendarId:this.getStringField(e,2)||"",name:this.getStringField(e,3)||"",type:t===1?"MEETING_ROOM":t===2?"OTHER":t,status:l===1?"FREE":l===2?"BUSY":l,buildingId:this.getStringField(e,6)||"",description:this.getStringField(e,7)||"",capacity:this.getVarintField(e,8,0),floorName:this.getStringField(e,9)||""}}static buildMgetEventsWithIdsRequest(V,e){let l=[];for(let o of e||[]){let R=Buffer.from(o,"utf-8");l.push(10),F(l,R.length),l.push(...R)}let t=B(S,{payloadType:1,cmd:1002006,cid:V,payload:new Uint8Array(l)});return Buffer.from(C(S,t))}static decodeMgetEventsWithIdsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let R=this.extractErrorMessage(e.payload);if(R)return{success:!1,error:R}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,events:{}};let l=Buffer.from(e.payload),t=this.parseProtobufFields(l),o={};for(let R of t){if(R.fieldNo!==1||R.wireType!==2)continue;let A=this.parseProtobufFields(R.data),c=this.getStringField(A,1);if(!c)continue;let a=this.getBytesField(A,2);if(!a){o[c]={eventKey:c};continue}o[c]=this._parseMgetEventDetail(a)}return{success:!0,events:o}}catch(e){return{success:!1,error:e.message}}}static _parseMgetEventDetail(V){let e=this.parseProtobufFields(V),l={eventKey:this.getStringField(e,1)||"",uid:this.getStringField(e,2)||"",rrule:this.getStringField(e,20)||"",startTime:this.getVarintField(e,25,0),startTimezone:this.getStringField(e,26)||"",endTime:this.getVarintField(e,27,0),endTimezone:this.getStringField(e,28)||"",summary:this.getStringField(e,29)||"",description:this.getStringField(e,30)||"",location:null,attendees:[]},t=this.getBytesField(e,32);if(t){let o=this.parseProtobufFields(t);l.location={name:this.getStringField(o,1)||"",address:this.getStringField(o,2)||""}}for(let o of e){if(o.fieldNo!==33||o.wireType!==2)continue;let R=this.parseProtobufFields(o.data);l.attendees.push({displayName:this.getStringField(R,4)||"",isOrganizer:this.getVarintField(R,6,0)!==0})}return l}static buildGetPlaceTipsRequest(V,e,l={}){let t=[],o=Buffer.from(e,"utf-8"),R=Buffer.from(l.locale||"zh_CN","utf-8");t.push(10),F(t,o.length),t.push(...o),t.push(18),F(t,R.length),t.push(...R);let A=B(S,{payloadType:1,cmd:1000037,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,A))}static decodeGetPlaceTipsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let R=this.extractErrorMessage(e.payload);if(R)return{success:!1,error:R}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,places:[]};let l=Buffer.from(e.payload);return{success:!0,places:this.parseProtobufFields(l).filter(R=>R.fieldNo===1&&R.wireType===2).map(R=>this._parsePlaceTip(R.data))}}catch(e){return{success:!1,error:e.message}}}static _parsePlaceTip(V){let e=this.parseProtobufFields(V),l=this.getStringField(e,3)||"",t=null,o=null;if(l){let[R,A]=l.split(","),c=Number.parseFloat(R),a=Number.parseFloat(A);t=Number.isFinite(c)?c:null,o=Number.isFinite(a)?a:null}return{placeId:this.getStringField(e,1)||"",name:this.getStringField(e,2)||"",coordinates:l,longitude:t,latitude:o,address:this.getStringField(e,4)||"",description:this.getStringField(e,5)||""}}static buildPullMeetingRoomsInBuildingRequest(V,e,l,t,o={}){let R=[];R.push(8),this.pushVarintBigInt(R,BigInt(l)),R.push(16),this.pushVarintBigInt(R,BigInt(t));for(let a of e){if(!a)continue;let n=Buffer.from(a,"utf-8");R.push(26),F(R,n.length),R.push(...n)}if(o.rrule!=null&&o.rrule!==""){let a=Buffer.from(o.rrule,"utf-8");R.push(34),F(R,a.length),R.push(...a)}if(o.needDisabledResource!=null&&(R.push(40),R.push(o.needDisabledResource?1:0)),o.timezone!=null&&o.timezone!==""){let a=Buffer.from(o.timezone,"utf-8");R.push(50),F(R,a.length),R.push(...a)}let A=[];if(o.minCapacity!=null&&o.minCapacity>0&&(A.push(8),F(A,o.minCapacity)),o.needEquipments&&o.needEquipments.length>0)for(let a of o.needEquipments){let n=Buffer.from(a,"utf-8");A.push(18),F(A,n.length),A.push(...n)}A.length>0&&(R.push(58),F(R,A.length),R.push(...A));let c=B(S,{payloadType:1,cmd:1010010,cid:V,payload:new Uint8Array(R)});return Buffer.from(C(S,c))}static decodePullMeetingRoomsInBuildingResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let A=this.extractErrorMessage(e.payload);if(A)return{success:!1,error:A}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,resources:{},resourceWeights:{}};let l=Buffer.from(e.payload),t=this.parseProtobufFields(l),o={};for(let A of t){if(A.fieldNo!==1||A.wireType!==2)continue;let c=this.parseProtobufFields(A.data),a=this.getStringField(c,1)||"",n=this.getBytesField(c,2);!a||!n||(o[a]=this._parseCalendarResource(n))}let R={};for(let A of t){if(A.fieldNo!==4||A.wireType!==2)continue;let c=this.parseProtobufFields(A.data),a=this.getStringField(c,1)||"",n=this.getVarintField(c,2,0);a&&(R[a]=n)}return{success:!0,resources:o,resourceWeights:R}}catch(e){return{success:!1,error:e.message}}}static buildMultiCalendarSearchRequest(V,e,l={}){let t=[],o=Buffer.from(e,"utf-8");t.push(10),F(t,o.length),t.push(...o),l.offset!=null&&(t.push(16),F(t,l.offset));let R=l.count??50;t.push(24),F(t,R),l.needSearchMeetingRoom!=null&&(t.push(32),t.push(l.needSearchMeetingRoom?1:0)),l.needSearchSharedCalendar!=null&&(t.push(40),t.push(l.needSearchSharedCalendar?1:0)),l.needSearchPrimaryCalendar!=null&&(t.push(48),t.push(l.needSearchPrimaryCalendar?1:0)),l.needSearchExternalPrimaryCalendar!=null&&(t.push(56),t.push(l.needSearchExternalPrimaryCalendar?1:0));let A=B(S,{payloadType:1,cmd:1000017,cid:V,payload:new Uint8Array(t)});return Buffer.from(C(S,A))}static buildPullTenantsByIdsBody(V=[]){let e=[];for(let l of V){if(!l)continue;let t=Buffer.from(l,"utf-8");e.push(18),F(e,t.length),e.push(...t)}return Buffer.from(e)}static buildPullTenantsByIdsRequest(V,e=[]){let l=this.buildPullTenantsByIdsBody(e),t=B(S,{payloadType:1,cmd:300,cid:V,payload:new Uint8Array(l)});return Buffer.from(C(S,t))}static decodeMultiCalendarSearchResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let a=this.extractErrorMessage(e.payload);if(a)return{success:!1,error:a}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,contents:[],calendarChatterMap:{},chatterMap:{},calendarBriefMap:{}};let l=Buffer.from(e.payload),t=this.parseProtobufFields(l),o=t.filter(a=>a.fieldNo===1&&a.wireType===2).map(a=>this._parseMultiCalendarSearchContent(a.data)),R={},A={},c={};for(let a of t)if(a.wireType===2&&(a.fieldNo===2||a.fieldNo===3||a.fieldNo===4)){let n=this.parseProtobufFields(a.data),h=this.getStringField(n,1)||"";if(!h)continue;let d=this.getBytesField(n,2);if(!d)continue;let E=a.fieldNo===2?R:a.fieldNo===3?A:c;E[h]=d}return{success:!0,contents:o,calendarChatterMap:R,chatterMap:A,calendarBriefMap:c}}catch(e){return{success:!1,error:e.message}}}static decodePullTenantsByIdsResponse(V){try{let e=b(S,V);if(this._isPacketError(e)){if(e.payload&&e.payload.length>0){let R=this.extractErrorMessage(e.payload);if(R)return{success:!1,error:R}}return{success:!1,error:`Packet status: ${e.status}`}}if(!e.payload||e.payload.length===0)return{success:!0,tenants:{}};let l=Buffer.from(e.payload),t=this.parseProtobufFields(l),o={};for(let R of t){if(R.fieldNo!==1||R.wireType!==2)continue;let A=this.parseProtobufFields(R.data),c=this.getStringField(A,1)||"",a=this.getBytesField(A,2);!c||!a||(o[c]=this._parseTenant(a))}return{success:!0,tenants:o}}catch(e){return{success:!1,error:e.message}}}static _parseTenant(V){let e=this.parseProtobufFields(V);return{id:this.getStringField(e,1)||"",name:this.getStringField(e,2)||"",contactName:this.getStringField(e,3)||"",contactMobile:this.getStringField(e,4)||"",contactEmail:this.getStringField(e,5)||"",address:this.getStringField(e,6)||"",domain:this.getStringField(e,7)||"",postCode:this.getStringField(e,8)||"",remark:this.getStringField(e,9)||"",telephone:this.getStringField(e,10)||"",iconUrl:this.getStringField(e,11)||"",avatar:this._parseImage(this.getBytesField(e,12)),unitLeague:this.getStringField(e,13)||"",i18nName:this._parseStringMap(e,14)}}static _parseImage(V){if(!V)return null;let e=this.parseProtobufFields(V);return{key:this.getStringField(e,1)||"",width:this.getVarintField(e,3,0),height:this.getVarintField(e,4,0),secureKey:this.getStringField(e,5)||"",secureWidth:this.getVarintField(e,7,0),secureHeight:this.getVarintField(e,8,0),size:this.getVarintField(e,10,0),fsUnit:this.getStringField(e,11)||"",params:this._parseStringMap(e,12),etag:this.getStringField(e,13)||""}}static _parseStringMap(V,e){let l=V.filter(o=>o.fieldNo===e&&o.wireType===2),t={};for(let o of l){let R=this.parseProtobufFields(o.data),A=this.getStringField(R,1)||"";A&&(t[A]=this.getStringField(R,2)||"")}return t}static _parseMultiCalendarSearchContent(V){let e=this.parseProtobufFields(V),l=this.getVarintField(e,2,0),t={1:"CHATTER",2:"MEETING_ROOM",3:"SHARED_CALENDAR"};return{calendarId:this.getStringField(e,1)||"",type:t[l]||l,title:this.getStringField(e,3)||"",subtitle:this.getStringField(e,4)||"",avatarUrl:this.getStringField(e,5)||"",isPrivate:this.getVarintField(e,6,0)!==0,isMember:this.getVarintField(e,7,0)!==0,isDisabled:this.getVarintField(e,8,0)!==0,isDismiss:this.getVarintField(e,9,0)!==0,isCrossTenant:this.getVarintField(e,10,0)!==0,calendarTenantId:this.getStringField(e,11)||"",subscriberNum:this.getVarintField(e,15,0)}}};x.CMD_DECODERS={27:x.decodeReactions,41:x.decodeMessageReadCount,74:x.decodeGroupReadState,92:x.decodeThreadReplyCount,130:x.decodeUserReactions,146:x.decodeUserMRUReactions,1002:x.decodeFeedCards,1311:x.decodeMessagePreviews,5916:x.decodeChatTabs,7001:x.decodeDeviceOnlineStatus,8106:x.decodeThreadReadState,8110:x.decodeThreadUpdated,30002:x.decodeUrgent,30003:x.decodeUrgentAck,1020003:x.decodeCalendarSync,1103704:x.decodeChatTopNotice};var U=x;import il from"crypto";var u=new hR({connect:{rejectUnauthorized:!1}}),dR=new Set(["originalTime","lastDate","version","startTime","endTime","createTime","updateTime"]);function tl(s,V){return s==null||s===""?V:typeof s=="bigint"?s:BigInt(s)}function ZR(s){return!s||typeof s!="object"?s:{...s,...s.originalTime!==void 0?{originalTime:tl(s.originalTime)}:{}}}function ER(s,V={}){let e=BigInt(Date.now()),l=e*1000n,t={id:String(s),version:tl(V.version,l),createTime:tl(V.createTime,e),updateTime:tl(V.updateTime,e)};for(let[o,R]of Object.entries(V))if(R!==void 0){if(dR.has(o)){t[o]=tl(R);continue}if(o==="attendees"&&Array.isArray(R)){t.attendees=R.map(ZR);continue}t[o]=R}return t}function it(s,V){if(typeof s=="bigint")return s;if(typeof s=="number"){if(!Number.isInteger(s))throw new TypeError(`${V} must be an integer`);return BigInt(s)}if(typeof s=="string"){let e=s.trim();if(/^-?\d+$/.test(e))return BigInt(e);throw new TypeError(`${V} must be an integer or numeric string`)}throw new TypeError(`${V} must be an integer or numeric string`)}function gR(s,V){let e=it(s,"startTime");if(it(V,"endTime")<=e)throw new TypeError("endTime must be greater than startTime")}var pV=class s{constructor(){this.baseUrl="https://internal-api-lark-api.feishu.cn/im/gateway/",this.getCsrfTokenUrl="https://internal-api-lark-api.feishu.cn/accounts/csrf",this.getUserInfoUrl="https://internal-api-lark-api.feishu.cn/accounts/web/user",this.setUserSignatureUrl="https://internal-api-lark-api.feishu.cn/passport/users/details/",this.imageBaseUrl="https://s1-imfile.feishucdn.com/static-resource/image/",this.chatbotBaseUrl="https://open.feishu.cn/open-apis/chatbot/api/",this.botSearchBaseUrl="https://internal-api.feishu.cn/lark/bot/api/"}async getCsrfToken(V){let e=I.buildGetCsrfTokenHeader();e.Cookie=p(V.cookies);let l=De.buildGetCsrfTokenParam(),t=new URL(this.getCsrfTokenUrl);t.search=new URLSearchParams(l).toString();let o=await fetch(t,{method:"POST",headers:e,dispatcher:u}),R=o.headers.getSetCookie(),A="";if(R){for(let a of R)if(a.includes("swp_csrf_token=")){let n=a.match(/swp_csrf_token=([^;]+)/);n&&(A=n[1],V.cookies.swp_csrf_token=n[1])}}return{data:await o.json(),xCsrfToken:A}}async getUserInfo(V,e){let l=I.buildGetUserInfoHeader(e);l.Cookie=p(V.cookies);let t=De.buildGetUserInfoParam(),o=new URL(this.getUserInfoUrl);o.search=new URLSearchParams(t).toString();let A=await(await fetch(o,{headers:l,dispatcher:u})).json(),c=A?.data?.user?.id;return{data:A,userId:c}}async setUserSignature(V,e,l={}){if(!V||!V.cookies||typeof V.cookies!="object")return{success:!1,status:0,error:"auth with cookies is required"};if(typeof e!="string")return{success:!1,status:0,error:"description must be a string"};let{descriptionFlag:t=0}=l;if(!Number.isInteger(t)||t<0)return{success:!1,status:0,error:"descriptionFlag must be a non-negative integer"};let o=I.buildSetUserSignatureHeader();o.Cookie=p(V.cookies);let R={description:e,description_flag:t};try{let A=await fetch(this.setUserSignatureUrl,{method:"PUT",headers:o,body:JSON.stringify(R),signal:AbortSignal.timeout(1e4),dispatcher:u}),c=await A.text(),a;try{a=JSON.parse(c)}catch{a={raw:c}}if(A.status!==200){let n=a?.msg||a?.message||`HTTP ${A.status}`;return{success:!1,status:A.status,error:n,data:a}}return typeof a?.code=="number"&&a.code!==0?{success:!1,status:A.status,error:a.msg||a.message||`API code ${a.code}`,data:a}:{success:!0,status:A.status,data:a}}catch(A){return{success:!1,status:0,error:A.message}}}async getUserProfileCard(V,e){if(!V||!V.cookies||typeof V.cookies!="object")return{success:!1,error:"auth with cookies is required"};if(typeof e!="string"||!/^\d{15,20}$/.test(e))return{success:!1,error:"userId must be a 15-20 digit string"};let l=I.buildGetUserProfileCardHeader();l.Cookie=p(V.cookies);let t=U.buildGetUserProfileCardRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetUserProfileCardResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async searchSome(V,e){let l=I.buildSearchHeader();l.Cookie=p(V.cookies);let t=U.buildSearchRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u}),R=U.decodeSearchResponse(Buffer.from(await o.arrayBuffer()));return{data:R,userAndGroupIds:R}}async createChat(V,e){let l=I.buildCreateChatHeader();l.Cookie=p(V.cookies);let t=U.buildCreateChatRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,dispatcher:u}),R=U.decodeCreateChatResponse(Buffer.from(await o.arrayBuffer()));return{data:{chatId:R},chatId:R}}async createGroup(V,{name:e,description:l,memberIds:t,chatMode:o,iconKey:R}){let A=I.buildCreateGroupHeader();A.Cookie=p(V.cookies);let c=U.buildCreateGroupRequest(A["x-request-id"],{name:e,description:l,memberIds:t,chatMode:o,iconKey:R}),a=await fetch(this.baseUrl,{method:"POST",headers:A,body:c,dispatcher:u}),n=U.decodeCreateChatResponse(Buffer.from(await a.arrayBuffer()));return{success:!!n,data:{chatId:n},chatId:n}}async patchGroupChat(V,e,l={}){let t=I.buildPatchGroupChatHeader();t.Cookie=p(V.cookies);try{let o=U.buildPatchGroupChatRequest(t["x-request-id"],e,l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodePatchGroupChatResponse(Buffer.from(await R.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async sendMessage(V,e,l){let t=I.buildSendMsgHeader();t.Cookie=p(V.cookies);let o=U.buildRichMessageRequest(e,t["x-request-id"],l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,dispatcher:u});return{data:Buffer.from(await R.arrayBuffer()),status:R.status}}async sendFileMessage(V,e,l){let t=I.buildSendMsgHeader();t.Cookie=p(V.cookies);let o=U.buildSendFileMessageRequest(e,t["x-request-id"],l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,dispatcher:u});return{data:Buffer.from(await R.arrayBuffer()),status:R.status}}async sendImageMessage(V,e,l){let t=I.buildSendMsgHeader();t.Cookie=p(V.cookies);let o=U.buildSendImageMessageRequest(e,t["x-request-id"],l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,dispatcher:u});return{data:Buffer.from(await R.arrayBuffer()),status:R.status}}async sendMentionMessage(V,e,l,t){let o=I.buildSendMsgHeader();o.Cookie=p(V.cookies);let R=U.buildMentionMessageRequest(e,o["x-request-id"],l,t),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,dispatcher:u});return{data:Buffer.from(await A.arrayBuffer()),status:A.status}}async sendReply(V,e,l,t={}){let{rootId:o,parentId:R}=t;if(!o||!R)throw new Error("rootId and parentId are required for thread comments");let A=I.buildSendMsgHeader();A.Cookie=p(V.cookies);let c=U.buildReplyRequest(e,A["x-request-id"],l,{rootId:o,parentId:R}),a=await fetch(this.baseUrl,{method:"POST",headers:A,body:c,dispatcher:u});return{data:Buffer.from(await a.arrayBuffer()),status:a.status}}async getUserById(V,e){let l=I.buildGetUserProfileHeader();l.Cookie=p(V.cookies);let t=U.buildGetUserProfileRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`,data:null}:{success:!0,data:U.decodeGetUserProfileResponse(Buffer.from(await o.arrayBuffer()))}}async getUserInfoById(V,e){let l=I.buildGetUserInfoByIdHeader();l.Cookie=p(V.cookies);let t=U.buildGetUserInfoByIdRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetUserInfoByIdResponse(Buffer.from(await o.arrayBuffer()))}async downloadImage(V,e={}){let{size:l="ORIGIN",cryptoInfo:t}=e,o=l==="ORIGIN",R=l==="ORIGIN"?"_ORIGIN":`_${l}`,A=`${this.imageBaseUrl}${V}${R}`;try{let c=await fetch(A,{headers:{"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",Referer:""},signal:AbortSignal.timeout(3e4),dispatcher:u});if(c.status!==200)return o?this.downloadImage(V,{size:"MIDDLE_WEBP"}):{success:!1,error:`HTTP ${c.status}`};let a=Buffer.from(await c.arrayBuffer());if(t&&t.secret&&t.nonce)try{a=this.decryptImage(a,t)}catch(d){return o?this.downloadImage(V,{size:"MIDDLE_WEBP"}):{success:!1,error:`Decryption failed: ${d.message}`}}let n=null,h=a.subarray(0,12).toString("hex");if(h.startsWith("89504e47"))n="image/png";else if(h.startsWith("ffd8ff"))n="image/jpeg";else if(h.startsWith("47494638"))n="image/gif";else{let d=a.subarray(0,4).toString("ascii"),E=a.subarray(8,12).toString("ascii");d==="RIFF"&&E==="WEBP"&&(n="image/webp")}return n?{success:!0,data:a,base64:a.toString("base64"),mimeType:n}:o?this.downloadImage(V,{size:"MIDDLE_WEBP"}):{success:!1,error:"Invalid image bytes (unknown magic header)"}}catch(c){return o?this.downloadImage(V,{size:"MIDDLE_WEBP"}):{success:!1,error:c.message}}}decryptImage(V,e){let{secret:l,nonce:t,additionalData:o}=e,R=Buffer.isBuffer(l)?l:Buffer.from(l),A=Buffer.isBuffer(t)?t:Buffer.from(t),c=o?Buffer.isBuffer(o)?o:Buffer.from(o):Buffer.alloc(0),a=16,n=V.subarray(0,V.length-a),h=V.subarray(V.length-a),d=il.createDecipheriv("aes-256-gcm",R,A);return d.setAuthTag(h),c.length>0&&d.setAAD(c),Buffer.concat([d.update(n),d.final()])}async addEmojiReaction(V,e,l){let t=I.buildEmojiReactionHeader();t.Cookie=p(V.cookies);let o=U.buildEmojiReactionRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeEmojiReactionResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async removeEmojiReaction(V,e,l){let t=I.buildRemoveEmojiReactionHeader();t.Cookie=p(V.cookies);let o=U.buildRemoveEmojiReactionRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeRemoveEmojiReactionResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async calendarRsvp(V,e,l,t){let R=typeof t=="string"?{accept:1,decline:2,tentative:3}[t.toLowerCase()]||1:t,A=I.buildCalendarRsvpHeader();A.Cookie=p(V.cookies);let c=U.buildCalendarRsvpRequest(A["x-request-id"],e,l,R),a=await fetch(this.baseUrl,{method:"POST",headers:A,body:c,signal:AbortSignal.timeout(1e4),dispatcher:u}),n=Buffer.from(await a.arrayBuffer());return a.status!==200&&n.length>0?{success:!1,error:U.extractErrorMessage(n)||`HTTP ${a.status}`}:a.status!==200?{success:!1,error:`HTTP ${a.status}`}:U.decodeCalendarRsvpResponse(n)}async replyCalendarEventInvitation(V,e,l,t={}){try{let R=typeof l=="string"?{accept:1,decline:2,tentative:3,delete:4,needs_action:5,"needs-action":5}[l.toLowerCase()]??1:l,A=I.buildCalendarRsvpHeader();A.Cookie=p(V.cookies);let c=U.buildReplyCalendarEventInvitationRequest(A["x-request-id"],e,R,t),a=await fetch(this.baseUrl,{method:"POST",headers:A,body:c,signal:AbortSignal.timeout(1e4),dispatcher:u}),n=Buffer.from(await a.arrayBuffer());if(a.status!==200&&n.length>0){let h=U.decodeReplyCalendarEventInvitationResponse(n);return h.success?{success:!1,error:`HTTP ${a.status}`}:h}return a.status!==200?{success:!1,error:`HTTP ${a.status}`}:U.decodeReplyCalendarEventInvitationResponse(n)}catch(o){return{success:!1,error:o.message}}}async getCalendarEvents(V,e){let l=I.buildCalendarEventDetailHeader();l.Cookie=p(V.cookies);let t=U.buildCalendarEventDetailRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`,events:[]}:U.decodeCalendarEventDetailResponse(Buffer.from(await o.arrayBuffer()))}async createCalendarEvent(V,e,l={},t={}){try{if(typeof e!="string"||e.trim()==="")return{success:!1,error:"calendarId is required"};let o=e.trim();if(!l||typeof l!="object")return{success:!1,error:"params object is required"};if(typeof l.summary!="string"||l.summary.trim()==="")return{success:!1,error:"summary is required"};if(l.startTime===void 0||l.endTime===void 0)return{success:!1,error:"startTime and endTime are required"};gR(l.startTime,l.endTime);let R=I.buildCreateCalendarEventHeader();R.Cookie=p(V.cookies);let A=U.buildCreateCalendarEventRequest(R["x-request-id"],o,l,t),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeCreateCalendarEventResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeCreateCalendarEventResponse(a)}catch(o){return{success:!1,error:o.message}}}async deleteCalendarEvent(V,e,l,t={}){try{let o=I.buildDeleteCalendarEventHeader();o.Cookie=p(V.cookies);let R=U.buildDeleteCalendarEventRequest(o["x-request-id"],e,l,t),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(1e4),dispatcher:u}),c=Buffer.from(await A.arrayBuffer());if(A.status!==200&&c.length>0){let a=U.decodeDeleteCalendarEventResponse(c);return a.success?{success:!1,error:`HTTP ${A.status}`}:a}return A.status!==200?{success:!1,error:`HTTP ${A.status}`}:U.decodeDeleteCalendarEventResponse(c)}catch(o){return{success:!1,error:o.message}}}async updateCalendarEvent(V,e,l={},t={}){try{let o=I.buildUpdateCalendarEventHeader();o.Cookie=p(V.cookies);let R=ER(e,l),A=U.buildUpdateCalendarEventRequest(o["x-request-id"],R,t),c=await fetch(this.baseUrl,{method:"POST",headers:o,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeUpdateCalendarEventResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeUpdateCalendarEventResponse(a)}catch(o){return{success:!1,error:o.message}}}async webListCalendarEvents(V,e,l,t,o={}){try{let R=I.buildWebListCalendarEventsHeader();R.Cookie=p(V.cookies);let A=U.buildWebListCalendarEventsRequest(R["x-request-id"],e,l,t,o),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeWebListCalendarEventsResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeWebListCalendarEventsResponse(a)}catch(R){return{success:!1,error:R.message}}}async createMeetingMinute(V,e,l,t={}){try{let o=I.buildCreateMeetingMinuteHeader();o.Cookie=p(V.cookies);let R=U.buildCreateMeetingMinuteRequest(o["x-request-id"],e,l,t),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(1e4),dispatcher:u}),c=Buffer.from(await A.arrayBuffer());if(A.status!==200&&c.length>0){let a=U.decodeCreateMeetingMinuteResponse(c);return a.success?{success:!1,error:`HTTP ${A.status}`}:a}return A.status!==200?{success:!1,error:`HTTP ${A.status}`}:U.decodeCreateMeetingMinuteResponse(c)}catch(o){return{success:!1,error:o.message}}}async transferCalendarEvent(V,e,l,t,o={}){try{let R=I.buildTransferCalendarEventHeader();R.Cookie=p(V.cookies);let A=U.buildTransferCalendarEventRequest(R["x-request-id"],e,l,t,o),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeTransferCalendarEventResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeTransferCalendarEventResponse(a)}catch(R){return{success:!1,error:R.message}}}async webMgetEventsWithIds(V,e){try{let l=I.buildMgetEventsWithIdsHeader();l.Cookie=p(V.cookies);let t=U.buildMgetEventsWithIdsRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u}),R=Buffer.from(await o.arrayBuffer());if(o.status!==200&&R.length>0){let A=U.decodeMgetEventsWithIdsResponse(R);return A.success?{success:!1,error:`HTTP ${o.status}`}:A}return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeMgetEventsWithIdsResponse(R)}catch(l){return{success:!1,error:l.message}}}async webShareCalendarEvent(V,e,l,t,o={}){try{let R=I.buildWebShareCalendarEventHeader();R.Cookie=p(V.cookies);let A=U.buildWebShareCalendarEventRequest(R["x-request-id"],e,l,t,o),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeWebShareCalendarEventResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeWebShareCalendarEventResponse(a)}catch(R){return{success:!1,error:R.message}}}async upgradeToMeeting(V,e,l={}){try{let t=I.buildUpgradeToMeetingHeader();t.Cookie=p(V.cookies);let o=U.buildUpgradeToMeetingRequest(t["x-request-id"],e,l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u}),A=Buffer.from(await R.arrayBuffer());if(R.status!==200&&A.length>0){let c=U.decodeUpgradeToMeetingResponse(A);return c.success?{success:!1,error:`HTTP ${R.status}`}:c}return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeUpgradeToMeetingResponse(A)}catch(t){return{success:!1,error:t.message}}}async getBusyUser(V,e,l,t,o={}){try{let R=I.buildGetBusyUserHeader();R.Cookie=p(V.cookies);let A=U.buildGetBusyUserRequest(R["x-request-id"],e,l,t,o),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodeGetBusyUserResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodeGetBusyUserResponse(a)}catch(R){return{success:!1,error:R.message}}}async pullSmartReplyResourcesViaCmd77(V,e=[]){let l=[...new Set((e||[]).map(R=>String(R||"").trim()).filter(R=>/^img_v[23]_/.test(R)))];if(l.length===0)return{success:!0,requested:0,cachedCount:0,mode:"skip"};let t=l.filter(R=>!bt(R));if(t.length===0)return{success:!0,requested:0,cachedCount:0,mode:"skip"};let o="";try{let R=I.buildCmd77Header();R.Cookie=p(V.cookies);let A=U.buildCmd77PullSmartReplyResourceRequest(R["x-request-id"],t),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(15e3),dispatcher:u});if(c.status===200){let a=U.cacheImageCryptoFromGatewayResponseBuffer(Buffer.from(await c.arrayBuffer()));if(a>0)return{success:!0,requested:t.length,cachedCount:a,mode:"cmd77"};o="cmd=77 returned no crypto info"}else o="cmd=77 HTTP "+c.status}catch(R){o="cmd=77 error: "+R.message}try{let R=I.buildPullSmartReplyResourceHeader();R.Cookie=p(V.cookies);let A=U.buildPullSmartReplyResourceRequest(R["x-request-id"],t),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(15e3),dispatcher:u});if(c.status===200){let a=U.cacheImageCryptoFromGatewayResponseBuffer(Buffer.from(await c.arrayBuffer()));return a>0?{success:!0,requested:t.length,cachedCount:a,mode:"cmd1105047"}:{success:!1,requested:t.length,cachedCount:0,mode:"cmd1105047",error:(o?o+"; ":"")+"cmd=1105047 returned no crypto info"}}return{success:!1,requested:t.length,cachedCount:0,mode:"cmd1105047",error:(o?o+"; ":"")+"cmd=1105047 HTTP "+c.status}}catch(R){return{success:!1,requested:t.length,cachedCount:0,mode:"cmd1105047",error:(o?o+"; ":"")+"cmd=1105047 error: "+R.message}}}async getChatMeta(V,e){let l=I.buildGetChatMetaHeader();l.Cookie=p(V.cookies);let t=U.buildGetChatMetaRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(15e3),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`,chat:null}:U.decodeGetChatMetaResponse(Buffer.from(await o.arrayBuffer()))}async getChatHistory(V,e,l={}){let t=l.positions;if(!t||t.length===0){let a=l.startPosition,n=l.count||20;if(!Number.isInteger(a)||a<=0){let h=await this.getChatMeta(V,e);h.success&&h.chat?.lastMessagePosition>0&&(a=h.chat.lastMessagePosition)}(!Number.isInteger(a)||a<=0)&&(a=100),t=[];for(let h=0;h<n;h++)t.push(a-h)}if(t=t.filter(a=>Number.isInteger(a)&&a>0),t.length===0)return{success:!1,error:"No valid positions provided",messages:[]};let o=I.buildGetChatHistoryHeader();o.Cookie=p(V.cookies);let R=U.buildGetChatHistoryRequest(o["x-request-id"],e,t),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(15e3),dispatcher:u});if(A.status!==200)return{success:!1,error:`HTTP ${A.status}`,messages:[]};let c=U.decodeGetChatHistoryResponse(Buffer.from(await A.arrayBuffer()));if(c.success){let a=[...new Set((c.messages||[]).flatMap(n=>Array.isArray(n?.imageKeys)&&n.imageKeys.length>0?n.imageKeys:n?.imageKey?[n.imageKey]:[]).map(n=>String(n||"").trim()).filter(n=>/^img_v[23]_/.test(n)))];if(a.length>0)try{let n=await this.pullSmartReplyResourcesViaCmd77(V,a);n.success?n.cachedCount>0?N.log("[FeishuApi] \u2705 \u5DF2\u7F13\u5B58\u56FE\u7247\u52A0\u5BC6\u4FE1\u606F: "+n.cachedCount+"/"+n.requested+" ("+n.mode+")"):n.requested>0&&N.warn("[FeishuApi] \u26A0\uFE0F \u56FE\u7247\u52A0\u5BC6\u4FE1\u606F\u672A\u547D\u4E2D: requested="+n.requested+" mode="+n.mode):N.warn("[FeishuApi] \u26A0\uFE0F \u56FE\u7247\u52A0\u5BC6\u4FE1\u606F\u62C9\u53D6\u5931\u8D25:",n.error||"unknown error")}catch(n){N.warn("[FeishuApi] \u26A0\uFE0F cmd=77 \u62C9\u53D6\u56FE\u7247\u52A0\u5BC6\u4FE1\u606F\u5F02\u5E38:",n.message)}}return c}async markChatRead(V,e,l){let t=I.buildMarkChatReadHeader();t.Cookie=p(V.cookies);let o=U.buildMarkChatReadRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeMarkChatReadResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async pinSession(V,e){let l=I.buildPinSessionHeader();l.Cookie=p(V.cookies);let t=U.buildPinSessionRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodePinSessionResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async unpinSession(V,e){let l=I.buildUnpinSessionHeader();l.Cookie=p(V.cookies);let t=U.buildUnpinSessionRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeUnpinSessionResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async markSession(V,e){let l=I.buildMarkSessionHeader();l.Cookie=p(V.cookies);let t=U.buildMarkSessionRequest(l["x-request-id"],e,!0);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeMarkSessionResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async unmarkSession(V,e){let l=I.buildMarkSessionHeader();l.Cookie=p(V.cookies);let t=U.buildMarkSessionRequest(l["x-request-id"],e,!1);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeMarkSessionResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async getUserRelation(V,e){let l=I.buildGetUserRelationHeader();l.Cookie=p(V.cookies);let t=U.buildGetUserRelationRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetUserRelationResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async getUserPresence(V,e){let l=I.buildGetUserPresenceHeader();l.Cookie=p(V.cookies);let t=U.buildGetUserPresenceRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetUserPresenceResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async getConfig(V,e){let l=I.buildGetConfigHeader();l.Cookie=p(V.cookies);let t=U.buildGetConfigRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetConfigResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async getFeatureFlags(V,e={}){let l=I.buildGetFeatureFlagsHeader();l.Cookie=p(V.cookies);let t=U.buildGetFeatureFlagsRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeGetFeatureFlagsResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async saveContactAlias(V,e,l={}){let t=I.buildSaveContactAliasHeader();t.Cookie=p(V.cookies);let o=U.buildSaveContactAliasRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeSaveContactAliasResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async syncContactInfo(V,e){let l=I.buildContactInfoSyncHeader();l.Cookie=p(V.cookies);let t=U.buildContactInfoSyncRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeContactInfoSyncResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async createThread(V,e){let l=I.buildCreateThreadHeader();l.Cookie=p(V.cookies);let t=U.buildCreateThreadRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodeCreateThreadResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async forwardMessage(V,e){let l=I.buildPutTransmitMessageHeader();l.Cookie=p(V.cookies);let t=U.buildPutTransmitMessageRequest(l["x-request-id"],e);try{let o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u});return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodePutTransmitMessageResponse(Buffer.from(await o.arrayBuffer()))}catch(o){return{success:!1,error:o.message}}}async searchInChat(V,e,l,t={}){let o=I.buildSearchHeader();o.Cookie=p(V.cookies);let R=U.buildSearchInChatRequest(o["x-request-id"],e,l,t);try{let A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(1e4),dispatcher:u});if(A.status!==200)return{success:!1,error:`HTTP ${A.status}`};let c=U.decodeSearchInChatResponse(Buffer.from(await A.arrayBuffer()));return{success:!0,data:c,results:c}}catch(A){return{success:!1,error:A.message}}}async putUrgent(V,e,l,t,o,R={}){let A=I.buildPutUrgentHeader();A.Cookie=p(V.cookies);let c=U.buildPutUrgentRequest(A["x-request-id"],e,l,t,o,R);try{let a=await fetch(this.baseUrl,{method:"POST",headers:A,body:c,signal:AbortSignal.timeout(1e4),dispatcher:u});return a.status!==200?{success:!1,error:`HTTP ${a.status}`}:U.decodePutUrgentResponse(Buffer.from(await a.arrayBuffer()))}catch(a){return{success:!1,error:a.message}}}async pullUrgentAckStatus(V,e,l){let t=I.buildPullUrgentAckStatusHeader();t.Cookie=p(V.cookies);let o=U.buildPullUrgentAckStatusRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodePullUrgentAckStatusResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async putScheduleMessage(V,e,l,t,o={}){let R=I.buildPutScheduleMessageHeader();R.Cookie=p(V.cookies);let A=U.buildPutScheduleMessageRequest(R["x-request-id"],e,l,t,o);try{let c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u});return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodePutScheduleMessageResponse(Buffer.from(await c.arrayBuffer()))}catch(c){return{success:!1,error:c.message}}}async patchScheduleMessage(V,e,l,t,o={}){let R=I.buildPatchScheduleMessageHeader();R.Cookie=p(V.cookies);let A=U.buildPatchScheduleMessageRequest(R["x-request-id"],e,l,t,o);try{let c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u});return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodePatchScheduleMessageResponse(Buffer.from(await c.arrayBuffer()))}catch(c){return{success:!1,error:c.message}}}async pullScheduleMessageByIds(V,e,l){let t=I.buildPullScheduleMessageByIdsHeader();t.Cookie=p(V.cookies);let o=U.buildPullScheduleMessageByIdsRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodePullScheduleMessageByIdsResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async pullChatScheduleMessages(V,e,l={}){let t=I.buildPullChatScheduleMessagesHeader();t.Cookie=p(V.cookies);let o=U.buildPullChatScheduleMessagesRequest(t["x-request-id"],e,l);try{let R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u});return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodePullChatScheduleMessagesResponse(Buffer.from(await R.arrayBuffer()))}catch(R){return{success:!1,error:R.message}}}async _upload(V,e,l){let{uploadKey:t,createOptions:o={},completeOptions:R={},chunkSize:A=4194304}=l;if(!Number.isInteger(A)||A<=0)return{success:!1,error:`Invalid chunkSize: ${A}`};let c="https://internal-api-lark-file.feishu.cn",a=p(V.cookies),n=U.buildUploadCreateRequest(t,o),h=I.buildUploadCreateHeader();h.Cookie=a;let d=[];try{let W=await fetch(`${c}/upload/create`,{method:"POST",headers:h,body:n,signal:AbortSignal.timeout(1e4),dispatcher:u});if(W.status!==200)return{success:!1,error:`Upload create failed: HTTP ${W.status}`};let m=U.decodeUploadCreateResponse(Buffer.from(await W.arrayBuffer()));if(!m.success)return m}catch(W){return{success:!1,error:`Upload create error: ${W.message}`}}let E=Math.ceil(e.length/A),g=I.buildUploadPartHeader();g.Cookie=a;for(let W=0;W<E;W++){let m=W*A,r=e.slice(m,m+A),i=W+1,Q=`${c}/upload/part?upload_id=${encodeURIComponent(t)}&part_id=${i}&offset=${m}`;try{let Y=await fetch(Q,{method:"POST",headers:g,body:r,signal:AbortSignal.timeout(3e4),dispatcher:u});if(Y.status!==200)return{success:!1,error:`Upload part ${i} failed: HTTP ${Y.status}`};let T=U.decodeUploadPartResponse(Buffer.from(await Y.arrayBuffer()));if(!T.success)return{success:!1,error:`Upload part ${i} decode failed: ${T.error}`};if(T.id===void 0||T.version===void 0)return{success:!1,error:`Upload part ${i} missing id or version`};d.push({id:T.id,version:T.version})}catch(Y){return{success:!1,error:`Upload part ${i} error: ${Y.message}`}}}let X=U.buildUploadCompleteRequest(t,d,R),G=I.buildUploadCreateHeader();G.Cookie=a;try{let W=await fetch(`${c}/upload/complete`,{method:"POST",headers:G,body:X,signal:AbortSignal.timeout(1e4),dispatcher:u});return W.status!==200?{success:!1,error:`Upload complete failed: HTTP ${W.status}`}:U.decodeUploadCompleteResponse(Buffer.from(await W.arrayBuffer()))}catch(W){return{success:!1,error:`Upload complete error: ${W.message}`}}}async uploadImage(V,e,l={}){return this._upload(V,e,{uploadKey:U.generateUploadKey("image"),createOptions:{type:0},completeOptions:{},chunkSize:l.chunkSize})}async uploadFile(V,e,l,t={}){let{mimeType:o="application/octet-stream"}=t,R=Buffer.from(vV(e)),A=il.randomBytes(16);return this._upload(V,e,{uploadKey:U.generateUploadKey("file"),createOptions:{fileType:1,filename:l,fileSize:e.length,blake3Hash:R,secondaryId:A},completeOptions:{filename:l,mimeType:o},chunkSize:t.chunkSize})}async _jsonPost(V,e,l){let t={"content-type":"application/json",Cookie:p(e.cookies)};try{let o=await fetch(V,{method:"POST",headers:t,body:JSON.stringify(l),signal:AbortSignal.timeout(1e4),dispatcher:u});if(o.status!==200)return{success:!1,error:`HTTP ${o.status}`};let R=await o.json();return R.code!==0?{success:!1,error:R.msg||`code ${R.code}`,code:R.code}:{success:!0,data:R.data}}catch(o){return{success:!1,error:o.message}}}async _docsJsonPost(V,e,l){let t=il.randomBytes(6).toString("base64url"),o=new URL(V),R={"content-type":"application/json;charset=UTF-8",Cookie:p(e.cookies),"x-csrftoken":e.cookies._csrf_token||e.cookies.swp_csrf_token||"","ccm-scene":"web","x-lgw-app-id":"1161","x-lgw-os-type":"3","x-lgw-terminal-type":"2","x-lsc-bizid":"2","x-lsc-terminal":"web","x-lsc-version":"1","request-id":t,"x-request-id":t,Referer:`${o.origin}/`,Origin:o.origin};try{let A=await fetch(V,{method:"POST",headers:R,body:JSON.stringify(l),signal:AbortSignal.timeout(1e4),dispatcher:u});if(A.status!==200)return{success:!1,error:`HTTP ${A.status}`};let c=await A.json();return c.code!==0?{success:!1,error:c.msg||`code ${c.code}`,code:c.code}:{success:!0,data:c.data}}catch(A){return{success:!1,error:A.message}}}async createWebhookBot(V,e,l,t,o={}){let R={name:l,description:t,bot_type_id:"444",chat_id:e,i18n:o.i18n||"zh_CN"};return o.userId&&(R.user_id=o.userId),o.avatarKey&&(R.avatar_key=o.avatarKey),o.avatarType!==void 0&&(R.avatar_type=o.avatarType),this._jsonPost(this.chatbotBaseUrl+"CreateWebhookBot",V,R)}async getWebhookBotInfo(V,e,l={}){return this._jsonPost(this.chatbotBaseUrl+"GetWebhookBotInfo",V,{bot_id:e,i18n:l.i18n||"zh_CN"})}async updateWebhookBot(V,e,l={}){let t={bot_id:e,i18n:l.i18n||"zh_CN"};return l.name&&(t.name=l.name),l.description&&(t.description=l.description),l.avatarKey&&(t.avatar_key=l.avatarKey),l.avatarType!==void 0&&(t.avatar_type=l.avatarType),this._jsonPost(this.chatbotBaseUrl+"UpdateWebhookBotInfo",V,t)}async getSignature(V,e){return this._jsonPost(this.chatbotBaseUrl+"GetSignature",V,{bot_id:e})}async deleteBot(V,e,l,t={}){return this._jsonPost(this.chatbotBaseUrl+"DeleteBotResource",V,{chat_id:e,bot_id:l,i18n:t.i18n||"zh_CN"})}async addBotToChat(V,e,l,t={}){return this._jsonPost(this.chatbotBaseUrl+"SetBotAddConf",V,{chat_id:e,bot_id:l,check_mender:t.checkMender||!1,i18n:t.i18n||"zh_CN"})}async updateAppBotInfo(V,e,l,t={}){return this._jsonPost(this.chatbotBaseUrl+"UpdateAppBotInfo",V,{chat_id:e,bot_id:l,check_mender:t.checkMender!==void 0?t.checkMender:!0,i18n:t.i18n||"zh_CN"})}async fetchBotAddConf(V,e,l={}){return this._jsonPost(this.chatbotBaseUrl+"fetch_bot_add_conf",V,{bot_id:e,i18n:l.i18n||"zh_CN"})}async fetchBotConfResource(V,e,l,t={}){return this._jsonPost(this.chatbotBaseUrl+"fetch_bot_conf_resource",V,{bot_id:e,chat_id:l,i18n:t.i18n||"zh_CN"})}async listCandidateBots(V,e,l={}){return this._jsonPost(this.botSearchBaseUrl+"pull_chat_candidate_bots",V,{chat_id:e,locale:l.locale||"zh_CN"})}async searchBots(V,e,l,t={}){return this._jsonPost(this.botSearchBaseUrl+"search_v2",V,{query:l,chat_id:e,locale:t.locale||"zh_CN"})}async getBaikeCard(V,e,l,t={}){let o=I.buildGetBaikeCardHeader();o.Cookie=p(V.cookies);let R=U.buildGetBaikeCardRequest(o["x-request-id"],e,l,{entityType:t.entityType,chatId:t.chatId,messageId:t.messageId}),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(15e3),dispatcher:u});if(A.status!==200)return{success:!1,error:`HTTP ${A.status}`};let c=Buffer.from(await A.arrayBuffer()),a=U.decodeGetBaikeCardResponse(c);return a.success&&a.html&&(a.info=U.extractBaikeCardInfo(a.html)),a}async getBaikeRecommendDocs(V,e,l={}){let t=I.buildGetBaikeRecommendDocsHeader();t.Cookie=p(V.cookies);let o=U.buildGetBaikeRecommendDocsRequest(t["x-request-id"],e,l.entityType??1),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(15e3),dispatcher:u});if(R.status!==200)return{success:!1,error:`HTTP ${R.status}`};let A=Buffer.from(await R.arrayBuffer());return U.decodeGetBaikeRecommendDocsResponse(A)}async searchGuests(V,e,l={}){try{let t=I.buildSearchGuestsHeader();t.Cookie=p(V.cookies);let o=U.buildSearchGuestsRequest(t["x-request-id"],e,l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u}),A=Buffer.from(await R.arrayBuffer());if(R.status!==200&&A.length>0){let c=U.decodeSearchGuestsResponse(A);return c.success?{success:!1,error:`HTTP ${R.status}`}:c}return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeSearchGuestsResponse(A)}catch(t){return{success:!1,error:t.message}}}async searchMeetingRooms(V,e,l,t={}){try{let o=I.buildSearchMeetingRoomsHeader();o.Cookie=p(V.cookies);let R=U.buildSearchMeetingRoomsRequest(o["x-request-id"],e,l,t),A=await fetch(this.baseUrl,{method:"POST",headers:o,body:R,signal:AbortSignal.timeout(1e4),dispatcher:u}),c=Buffer.from(await A.arrayBuffer());if(A.status!==200&&c.length>0){let a=U.decodeSearchMeetingRoomsResponse(c);return a.success?{success:!1,error:`HTTP ${A.status}`}:a}return A.status!==200?{success:!1,error:`HTTP ${A.status}`}:U.decodeSearchMeetingRoomsResponse(c)}catch(o){return{success:!1,error:o.message}}}async pullBuildings(V,e={}){try{let l=I.buildPullBuildingsHeader();l.Cookie=p(V.cookies);let t=U.buildPullBuildingsRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u}),R=Buffer.from(await o.arrayBuffer());if(o.status!==200&&R.length>0){let A=U.decodePullBuildingsResponse(R);return A.success?{success:!1,error:`HTTP ${o.status}`}:A}return o.status!==200?{success:!1,error:`HTTP ${o.status}`}:U.decodePullBuildingsResponse(R)}catch(l){return{success:!1,error:l.message}}}async pullMeetingRoomsInBuilding(V,e,l,t,o={}){try{let R=I.buildPullMeetingRoomsInBuildingHeader();R.Cookie=p(V.cookies);let A=U.buildPullMeetingRoomsInBuildingRequest(R["x-request-id"],e,l,t,o),c=await fetch(this.baseUrl,{method:"POST",headers:R,body:A,signal:AbortSignal.timeout(1e4),dispatcher:u}),a=Buffer.from(await c.arrayBuffer());if(c.status!==200&&a.length>0){let n=U.decodePullMeetingRoomsInBuildingResponse(a);return n.success?{success:!1,error:`HTTP ${c.status}`}:n}return c.status!==200?{success:!1,error:`HTTP ${c.status}`}:U.decodePullMeetingRoomsInBuildingResponse(a)}catch(R){return{success:!1,error:R.message}}}async getPlaceTips(V,e,l={}){try{let t=I.buildGetPlaceTipsHeader();t.Cookie=p(V.cookies);let o=U.buildGetPlaceTipsRequest(t["x-request-id"],e,l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u}),A=Buffer.from(await R.arrayBuffer());if(R.status!==200&&A.length>0){let c=U.decodeGetPlaceTipsResponse(A);return c.success?{success:!1,error:`HTTP ${R.status}`}:c}return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeGetPlaceTipsResponse(A)}catch(t){return{success:!1,error:t.message}}}async multiCalendarSearch(V,e,l={}){try{let t=I.buildMultiCalendarSearchHeader();t.Cookie=p(V.cookies);let o=U.buildMultiCalendarSearchRequest(t["x-request-id"],e,l),R=await fetch(this.baseUrl,{method:"POST",headers:t,body:o,signal:AbortSignal.timeout(1e4),dispatcher:u}),A=Buffer.from(await R.arrayBuffer());if(R.status!==200&&A.length>0){let c=U.decodeMultiCalendarSearchResponse(A);return c.success?{success:!1,error:`HTTP ${R.status}`}:c}return R.status!==200?{success:!1,error:`HTTP ${R.status}`}:U.decodeMultiCalendarSearchResponse(A)}catch(t){return{success:!1,error:t.message}}}async pullTenantsByIds(V,e){try{let l=I.buildPullTenantsByIdsHeader();l.Cookie=p(V.cookies);let t=U.buildPullTenantsByIdsRequest(l["x-request-id"],e),o=await fetch(this.baseUrl,{method:"POST",headers:l,body:t,signal:AbortSignal.timeout(1e4),dispatcher:u}),R=Buffer.from(await o.arrayBuffer());if(o.status!==200&&R.length>0){let c=U.decodePullTenantsByIdsResponse(R);return c.success?{success:!1,error:`HTTP ${o.status}`}:c}if(o.status!==200)return{success:!1,error:`HTTP ${o.status}`};let A=U.decodePullTenantsByIdsResponse(R);return A.success?{success:!0,data:{tenants:A.tenants}}:A}catch(l){return{success:!1,error:l.message}}}static _validateFeishuOrigin(V){try{let{hostname:e,protocol:l}=new URL(V);return l!=="https:"?{valid:!1,error:`Origin must use HTTPS, got: ${l}`}:/\.(feishu\.cn|larksuite\.com)$/.test(e)?{valid:!0}:{valid:!1,error:`Origin must be a *.feishu.cn or *.larksuite.com domain, got: ${e}`}}catch{return{valid:!1,error:`Invalid origin URL: ${V}`}}}async _jsonGet(V,e,l={}){let t=new URL(V);for(let[R,A]of Object.entries(l))A!=null&&t.searchParams.set(R,String(A));let o={accept:"application/json, text/plain, */*",Cookie:p(e.cookies),"x-csrf-token":e.cookies.swp_csrf_token||e.cookies._csrf_token||""};try{let R=await fetch(t.href,{method:"GET",headers:o,signal:AbortSignal.timeout(15e3),dispatcher:u});if(R.status!==200)return{success:!1,error:`HTTP ${R.status}`};let A=await R.json();return A.code!==0?{success:!1,error:A.msg||`code ${A.code}`,code:A.code}:{success:!0,data:A.data}}catch(R){return{success:!1,error:R.message}}}async resolveWikiToken(V,e,l){let o=`${new URL(e).origin}/wiki/${encodeURIComponent(l)}`,R={accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",Cookie:p(V.cookies)};try{let A=o,c=5;for(let a=0;a<=c;a++){let n=await fetch(A,{method:"GET",headers:R,signal:AbortSignal.timeout(15e3),redirect:"manual",dispatcher:u});if(n.status>=300&&n.status<400){let d=n.headers.get("location");if(!d)return{success:!1,error:`Redirect with no Location header (HTTP ${n.status})`};if(a===c)return{success:!1,error:`Too many redirects (>${c})`};A=new URL(d,A).href;continue}if(n.status!==200)return{success:!1,error:`HTTP ${n.status}`};let h=await n.text();return s._parseWikiHtml(h)}return{success:!1,error:`Too many redirects (>${c})`}}catch(A){return{success:!1,error:A.message}}}static _parseWikiHtml(V){let e=/window\.current_space_wiki\s*=\s*Object\s*\(\s*\{/,l=V.match(e);if(!l)return{success:!1,error:"Cannot find window.current_space_wiki in SSR HTML"};let t=V.indexOf("{",l.index+l[0].length-1),o=s._findBalancedObject(V,t);if(!o)return{success:!1,error:"Cannot parse window.current_space_wiki object"};let R;try{R=JSON.parse(o)}catch{if(R=s._parseJsObjectLiteral(o),!R)return{success:!1,error:"Cannot parse current_space_wiki object literal"}}return!R.obj_token||R.obj_type===void 0?{success:!1,error:"current_space_wiki missing required fields (obj_token, obj_type)"}:{success:!0,data:{objToken:R.obj_token,objType:R.obj_type,spaceId:R.space_id,wikiToken:R.wiki_token,wikiVersion:R.wiki_version}}}static _findBalancedObject(V,e){let l=0,t=null,o=!1;for(let R=e;R<V.length;R++){let A=V[R];if(t){o?o=!1:A==="\\"?o=!0:A===t&&(t=null);continue}if(A==='"'||A==="'"){t=A;continue}if(A==="{"){l++;continue}if(A==="}"&&(l--,l===0))return V.slice(e,R+1)}return null}static _parseJsObjectLiteral(V){let e={},l=1,t=V.length-1;for(;l<t;){for(;l<t&&/[\s,]/.test(V[l]);)l++;if(l>=t)break;let o;if(V[l]==='"'||V[l]==="'"){let R=V[l++],A=l;for(;l<t;){if(V[l]==="\\"){l+=2;continue}if(V[l]===R)break;l++}o=V.slice(A,l),l++}else{let R=l;for(;l<t&&/\w/.test(V[l]);)l++;o=V.slice(R,l)}if(!o)return null;for(;l<t&&V[l]===" ";)l++;if(V[l]!==":")return null;for(l++;l<t&&V[l]===" ";)l++;if(V[l]==='"'||V[l]==="'"){let R=V[l++],A=l;for(;l<t;){if(V[l]==="\\"){l+=2;continue}if(V[l]===R)break;l++}e[o]=V.slice(A,l),l++}else if(V[l]==="{"){let R=1;for(l++;l<t&&R>0;){if(V[l]==='"'||V[l]==="'"){let A=V[l++];for(;l<t&&V[l]!==A;)V[l]==="\\"&&l++,l++}else V[l]==="{"?R++:V[l]==="}"&&R--;l++}}else if(V[l]==="["){let R=1;for(l++;l<t&&R>0;){if(V[l]==='"'||V[l]==="'"){let A=V[l++];for(;l<t&&V[l]!==A;)V[l]==="\\"&&l++,l++}else V[l]==="["?R++:V[l]==="]"&&R--;l++}}else{let R=l;for(;l<t&&/[^\s,}]/.test(V[l]);)l++;let A=V.slice(R,l);e[o]=/^-?\d+(\.\d+)?$/.test(A)?Number(A):A}}return Object.keys(e).length>0?e:null}async getDocxBlockTree(V,e,l,t={}){let o=t.mode??0,R=t.limit??200,A=t.maxPages??100,a=`${new URL(e).origin}/space/api/docx/pages/client_vars`,n={},h=[],d=null,E=[],g=null,X=new Set,G=!1;try{for(let m=0;m<A;m++){let r={id:l,mode:o,limit:R};g&&(r.cursor=g);let i=await this._jsonGet(a,V,r);if(!i.success)return i;let Q=i.data||{},Y=Q.block_map||{};if(Object.assign(n,Y),Q.block_sequence&&(h=h.concat(Q.block_sequence)),Q.structure_version!==void 0&&(d=Q.structure_version),Q.skip_blocks&&(E=E.concat(Q.skip_blocks)),!Q.has_more){G=!1;break}if(!Q.cursor)return{success:!1,error:"API returned has_more=true but no cursor"};if(G=!0,X.has(Q.cursor))return{success:!1,error:`Pagination loop detected: cursor ${Q.cursor} repeated`};X.add(Q.cursor),g=Q.cursor}if(G)return{success:!1,error:`Exceeded maxPages (${A}) while paginating docx blocks`};let W=s._buildBlockTree(l,n);return W.missing?{success:!1,error:`Root block ${l} not found in API response`}:{success:!0,data:{token:l,structureVersion:d,totalBlocks:Object.keys(n).length,skipBlocks:E,blockSequence:h,tree:W,rawBlockMap:n}}}catch(W){return{success:!1,error:W.message}}}async submitDocxChange(V,e,l,t,o){let A=`${new URL(e).origin}/space/api/docx/blocks/user_change`,c={member_id:t,uuid:il.randomUUID(),page_id:l,change_map:o};return this._docsJsonPost(A,V,c)}static _extractPlainText(V){let e=V?.data?.text?.initialAttributedTexts?.text;return e?typeof e=="string"?e:Object.entries(e).sort(([l],[t])=>Number(l)-Number(t)).map(([,l])=>l).join(""):""}static _buildBlockTree(V,e){function l(t,o=new Set){let R=e[t];if(!R)return{id:t,missing:!0};if(o.has(t))return{id:t,cycle:!0,children:[]};let A=R.data||{},c=Array.isArray(A.children)?A.children:[],a=new Set(o);return a.add(t),{id:R.id,type:A.type||null,version:R.version,parentId:A.parent_id||null,text:s._extractPlainText(R),children:c.map(n=>l(n,a))}}return l(V)}},de=pV;import FR from"ws";import{ungzip as SR}from"pako";var IV=class{constructor(V,e={}){this.baseUrl="wss://msg-frontier.feishu.cn/ws/v2",this.auth=V,this.meId=null,this.ws=null,this.messageHandlers=[],this.eventHandlers=[],this.processedMessages=new Map,this.MESSAGE_CACHE_EXPIRY_MS=300*1e3,this.MAX_CACHE_SIZE=1e4,this.autoReconnect=e.autoReconnect!==!1,this.reconnectBaseDelay=e.reconnectBaseDelay||1e3,this.reconnectMaxDelay=e.reconnectMaxDelay||3e4,this.reconnectAttempts=0,this.reconnectTimer=null,this.shouldReconnect=!1}setMeId(V){this.meId=String(V)}sendAck(V,e){let l=U.buildAckPacket(e);V.send(l)}onMessage(V){this.messageHandlers.push(V)}onEvent(V){this.eventHandlers.push(V)}isDuplicateMessage(V){let{messageId:e,sid:l}=V,t=e||l;if(!t)return!1;let o=Date.now();return this.processedMessages.has(t)?!0:(this.processedMessages.set(t,o),this.processedMessages.size>this.MAX_CACHE_SIZE&&this.cleanupMessageCache(),!1)}cleanupMessageCache(){let V=Date.now(),e=0;for(let[l,t]of this.processedMessages)V-t>this.MESSAGE_CACHE_EXPIRY_MS&&(this.processedMessages.delete(l),e++);if(this.processedMessages.size>this.MAX_CACHE_SIZE){let l=Array.from(this.processedMessages.entries());l.sort((o,R)=>o[1]-R[1]);let t=Math.floor(l.length/2);for(let o=0;o<t;o++)this.processedMessages.delete(l[o][0]),e++}e>0&&N.log(`[WS] Cleaned ${e} expired message cache entries, current cache size: ${this.processedMessages.size}`)}scheduleReconnect(){if(!this.autoReconnect||!this.shouldReconnect)return;let V=Math.min(this.reconnectBaseDelay*Math.pow(2,this.reconnectAttempts),this.reconnectMaxDelay);this.reconnectAttempts++,N.log(`[WS] Reconnecting in ${V/1e3}s (attempt ${this.reconnectAttempts})...`),this.reconnectTimer=setTimeout(async()=>{if(this.shouldReconnect)try{await this.connect()}catch(e){N.error("[WS] Reconnect failed:",e.message),this.scheduleReconnect()}},V)}async connect(){let V=await De.buildReceiveMsgParam(this.auth),e=Object.entries(V).map(([t,o])=>`${encodeURIComponent(t)}=${encodeURIComponent(o)}`).join("&"),l=`${this.baseUrl}?${e}`;return N.log("[WS] Connecting..."),new Promise((t,o)=>{this.ws=new FR(l,{headers:{Origin:"https://open-dev.feishu.cn","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}}),this.ws.on("open",()=>{N.log("[WS] Connected"),this.reconnectAttempts=0,t()}),this.ws.on("message",async R=>{try{let A;R[0]===31&&R[1]===139?A=SR(R):A=R;let c=U.decodeReceiveMessage(A);c.sid&&this.sendAck(this.ws,c.sid),await this.handleMessage(c)}catch(A){N.error("[WS] Error processing message:",A)}}),this.ws.on("close",(R,A)=>{N.log(`[WS] Disconnected: code=${R}`),this.ws=null,this.shouldReconnect&&this.scheduleReconnect()}),this.ws.on("error",R=>{N.error("[WS] Error:",R.message),o(R)})})}async handleMessage(V){let{command:e}=V;if(e&&e!==6){let G=CV[e]||"UNKNOWN",W=V.event||G;e!==200&&e!==6e3&&N.log(`[WS] Event | cmd=${e} | ${G} | ${W}`);for(let m of this.eventHandlers)try{await m(V,this)}catch(r){N.error("[WS] Event handler error:",r)}return}let{fromId:l,chatId:t,type:o,fromType:R,chatType:A,threadId:c,messageId:a}=V;if(this.isDuplicateMessage(V)){N.log(`[WS] Skipping duplicate message messageId=${a||"N/A"}`);return}let n=rt(A),h=uV(R),d=iV(o),E=c?` thread=${c}`:"",{content:g}=V,X=g&&g.length>50?g.substring(0,50)+"...":g||"";if(t&&N.log(`[WS] Message | ${n} | ${h} | ${d} | chat=${t} | from=${l}${E}: ${X}`),t)for(let G of this.messageHandlers)try{await G(V,this)}catch(W){N.error("[WS] Error in message handler:",W)}}async start(){this.shouldReconnect=!0,await this.connect()}stop(){this.shouldReconnect=!1,this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnectAttempts=0,this.ws&&(this.ws.close(),this.ws=null),this.processedMessages.clear()}},pt=IV;import XR from"crypto";function Qe(s){return s.toString(36)}function QV(s,V){if(!s)return{changeset:"Z:0>0$",apool:NV(V)};let e=Qe(s.length);return{changeset:`Z:0>${e}*0+${e}$${s}`,apool:NV(V)}}function It(s,V,e){if(s===0)return QV(V,e);let l=V.length,t=l-s,o=Qe(s),R=t>=0?`>${Qe(t)}`:`<${Qe(-t)}`,A=`-${o}`,c=l>0?`*0+${Qe(l)}`:"",a=l>0?`$${V}`:"$";return{changeset:`Z:${o}${R}${A}${c}${a}`,apool:NV(e)}}function Nt(s,V){if(!s)return{initialAttributedTexts:{text:{0:""},attribs:{0:""}},apool:{numToAttrib:{},nextNum:0}};let e=Qe(s.length);return{initialAttributedTexts:{text:{0:s},attribs:{0:`*0+${e}`}},apool:{numToAttrib:{0:["author",V]},nextNum:1}}}function NV(s){return{numToAttrib:{0:["author",s]},nextNum:1,attribToNum:{[`author,${s}`]:0}}}var YV=class s{constructor(V,e,l,t){this.api=V,this.auth=e,this.origin=l,this.pageId=t,this.blockMap=null,this.structureVersion=null,this.memberId=null,this.authorId=null,this._opened=!1}async open(){let V=await this.api.getDocxBlockTree(this.auth,this.origin,this.pageId);if(!V.success)return{success:!1,error:V.error};this.blockMap=V.data.rawBlockMap,this.structureVersion=V.data.structureVersion,this.memberId=s._generateMemberId(),this.authorId="";for(let e of Object.values(this.blockMap))if(e.data?.author){this.authorId=e.data.author;break}return this._opened=!0,{success:!0,data:{blockCount:Object.keys(this.blockMap).length,structureVersion:this.structureVersion}}}getBlockTree(){return this._assertOpen(),de._buildBlockTree(this.pageId,this.blockMap)}getBlock(V){return this._assertOpen(),this.blockMap[V]||null}async insertBlock(V,e,l,t={}){this._assertOpen();let o=this.blockMap[V];if(!o)return{success:!1,error:`Parent block ${V} not found`};let R=o.data?.children||[];if(e<0||e>R.length)return{success:!1,error:`Position ${e} out of bounds (0-${R.length})`};let A=s._generateBlockId(),{text:c,...a}=t,n={parent_id:V,type:l,children:[],comments:[],revisions:[],author:this.authorId,text:Nt(c||"",this.authorId),folded:!1};for(let[g,X]of Object.entries(a))X!==void 0&&(n[g]=X);let h={[A]:{id:A,version:0,payload:{ops:[{p:[],action:{oi:n}}]}},[V]:{id:V,version:o.version,payload:{ops:[{p:["children",e],action:{li:A}}]}}},d=await this._submitChange(h);if(!d.success)return d;let E=d.data?.block_map?.[A]?.version??0;return this.blockMap[A]={id:A,version:E,data:n},o.data.children||(o.data.children=[]),o.data.children.splice(e,0,A),{success:!0,data:{blockId:A}}}async editText(V,e){this._assertOpen();let l=this.blockMap[V];if(!l)return{success:!1,error:`Block ${V} not found`};let t=l.data?.text?.initialAttributedTexts?.text||{},R=Object.entries(t).sort(([E],[g])=>Number(E)-Number(g)).map(([,E])=>E).join("").length,A,c;R===0?{changeset:A,apool:c}=QV(e,this.authorId):{changeset:A,apool:c}=It(R,e,this.authorId);let a={[V]:{id:V,version:l.version,payload:{ops:[{p:["text"],subType:{t:"easysync",o:{zone_changesets:{0:A},apool:c}}}]}}},n=await this._submitChange(a);if(!n.success)return n;l.data.text||(l.data.text={initialAttributedTexts:{text:{},attribs:{}},apool:{}});let h=l.data.text.initialAttributedTexts;h.text={0:e};let d=e.length.toString(36);return h.attribs={0:e?`*0+${d}`:""},l.data.text.apool=e?{numToAttrib:{0:["author",this.authorId]},nextNum:1}:{numToAttrib:{},nextNum:0},{success:!0}}async deleteBlocks(V){this._assertOpen();let e=new Map;for(let o of V){let R=this.blockMap[o];if(!R)return{success:!1,error:`Block ${o} not found`};let A=R.data?.parent_id;if(!A||!this.blockMap[A])return{success:!1,error:`Parent of block ${o} not found`};e.has(A)||e.set(A,[]),e.get(A).push(o)}let l={};for(let[o,R]of e){let A=this.blockMap[o],c=[...A.data?.children||[]],n=R.map(h=>({id:h,idx:c.indexOf(h)})).filter(h=>h.idx>=0).sort((h,d)=>d.idx-h.idx).map(({id:h,idx:d})=>({p:["children",d],action:{ld:h}}));l[o]={id:o,version:A.version,payload:{ops:n}}}let t=await this._submitChange(l);if(!t.success)return t;for(let[o,R]of e){let A=this.blockMap[o];A.data?.children&&(A.data.children=A.data.children.filter(c=>!R.includes(c)))}for(let o of V)this._removeSubtree(o);return{success:!0}}async changeBlockType(V,e){this._assertOpen();let l=this.blockMap[V];if(!l)return{success:!1,error:`Block ${V} not found`};let t=l.data?.type;if(!t)return{success:!1,error:`Block ${V} has no type`};let o={[V]:{id:V,version:l.version,payload:{ops:[{p:["type"],action:{od:t,oi:e}}]}}},R=await this._submitChange(o);return R.success?(l.data.type=e,{success:!0}):R}async setBlockProperties(V,e){this._assertOpen();let l=this.blockMap[V];if(!l)return{success:!1,error:`Block ${V} not found`};let t=[];for(let[A,c]of Object.entries(e)){let a=l.data?.[A];a!==void 0?t.push({p:[A],action:{od:a,oi:c}}):t.push({p:[A],action:{oi:c}})}if(t.length===0)return{success:!0};let o={[V]:{id:V,version:l.version,payload:{ops:t}}},R=await this._submitChange(o);return R.success?(Object.assign(l.data,e),{success:!0}):R}async moveBlock(V,e,l){this._assertOpen();let t=this.blockMap[V];if(!t)return{success:!1,error:`Block ${V} not found`};let o=this.blockMap[e];if(!o)return{success:!1,error:`New parent ${e} not found`};let R=t.data?.parent_id;if(!R||!this.blockMap[R])return{success:!1,error:`Current parent of block ${V} not found`};let A=this.blockMap[R],a=(A.data?.children||[]).indexOf(V);if(a<0)return{success:!1,error:`Block ${V} not in parent's children`};let n={};if(R===e){let d=[{p:["children",a],action:{ld:V}},{p:["children",l],action:{li:V}}];n[R]={id:R,version:A.version,payload:{ops:d}}}else n[R]={id:R,version:A.version,payload:{ops:[{p:["children",a],action:{ld:V}}]}},n[e]={id:e,version:o.version,payload:{ops:[{p:["children",l],action:{li:V}}]}},n[V]={id:V,version:t.version,payload:{ops:[{p:["parent_id"],action:{od:R,oi:e}}]}};let h=await this._submitChange(n);return h.success?(A.data.children.splice(a,1),R===e?A.data.children.splice(l,0,V):(o.data.children||(o.data.children=[]),o.data.children.splice(l,0,V),t.data.parent_id=e),{success:!0}):h}_removeSubtree(V){let e=this.blockMap[V];if(!e)return;let l=e.data?.children||[];for(let t of l)this._removeSubtree(t);delete this.blockMap[V]}async _submitChange(V){let e=await this.api.submitDocxChange(this.auth,this.origin,this.pageId,this.memberId,V);return e.success&&this._updateState(e.data),e}_updateState(V){if(!V)return;let e=V.block_map||{};for(let[l,t]of Object.entries(e))this.blockMap[l]&&(this.blockMap[l].version=t.version);V.structure_version!==void 0&&(this.structureVersion=V.structure_version)}_assertOpen(){if(!this._opened)throw new Error("DocxEditor not opened. Call open() first.")}static _generateBlockId(){let V="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e=XR.randomBytes(27),l="";for(let t=0;t<27;t++)l+=V[e[t]%V.length];return l}static _generateMemberId(){let V=Date.now(),e=Math.floor(Math.random()*1e3);return String(V)+String(e).padStart(3,"0")}},JV=YV;import{McpServer as UR}from"@modelcontextprotocol/sdk/server/mcp.js";import{StdioServerTransport as GR}from"@modelcontextprotocol/sdk/server/stdio.js";import{z as Z}from"zod";function Ye(...s){return s.some(q)}function ol(s){if(typeof s!="string")return s;let V=s.trim();return V===""?void 0:V}var Rl=Z.number().int(),Ze=Z.string().trim().min(1),WR=Z.union([Rl,Ze.regex(/^-?\d+$/)]),mR=Z.string().trim().length(0);function Ue(s){return Z.union([s,mR]).optional()}function rR(s,V){return`aliases: ${[...s].sort().join(", ")}; numeric values: ${[...V].sort((e,l)=>e-l).join(", ")}`}function Ge(s,V){let e=St(s),l=Xt(s),t=new Set(e),o=new Set(l),R=`${V} must be one of ${rR(t,o)}`;return Z.union([Rl.refine(A=>o.has(A),{message:R}),Ze.transform(A=>A.toLowerCase()).refine(A=>t.has(A)?!0:/^-?\d+$/.test(A)?o.has(Number(A)):!1,{message:R})])}var bR=Ue(Ge(je,"visibility")),BR=Ue(Ge(Oe,"status")),CR=Ue(Ge(Pe,"notification_type")),uR=Ue(Ge(qe,"locations[].type")),iR=Ge(_e,"reminders[].method"),pR=Ue(Ge(j,"attendees[].category")),IR=Ue(Ge($e,"attendees[].status")),NR=Ue(WR);function Qt(s){if(typeof s=="number")return{1:"user",2:"group",3:"resource",4:"third_party_user"}[s];if(!q(s))return;let V=s.trim().toLowerCase();return/^-?\d+$/.test(V)?Qt(Number(V)):V}function QR(s){if(!s||typeof s!="object")return"user";let V=Qt(s.category);return V||(Ye(s.group_id,s.groupId)?"group":q(s.email)?"email":Ye(s.user_id,s.userId)?"user":Ye(s.attendee_calendar_id,s.attendeeCalendarId)?"resource":"user")}var YR=Z.object({category:pR,attendee_calendar_id:Z.string().optional(),attendeeCalendarId:Z.string().optional(),status:IR,is_optional:Z.boolean().optional(),isOptional:Z.boolean().optional(),user_id:Z.string().optional(),userId:Z.string().optional(),group_id:Z.string().optional(),groupId:Z.string().optional(),email:Z.string().optional()}).passthrough().superRefine((s,V)=>{let e=QR(s);(e==="user"||e==="")&&!Ye(s.user_id,s.userId)&&V.addIssue({code:Z.ZodIssueCode.custom,message:"attendees[].user_id or attendees[].userId is required for user attendees",path:["user_id"]}),e==="group"&&!Ye(s.group_id,s.groupId)&&V.addIssue({code:Z.ZodIssueCode.custom,message:"attendees[].group_id or attendees[].groupId is required for group attendees",path:["group_id"]}),(e==="email"||e==="third_party_user"||e==="thirdpartyuser")&&!q(s.email)&&V.addIssue({code:Z.ZodIssueCode.custom,message:"attendees[].email is required for email attendees",path:["email"]}),e==="resource"&&!Ye(s.attendee_calendar_id,s.attendeeCalendarId)&&V.addIssue({code:Z.ZodIssueCode.custom,message:"attendees[].attendee_calendar_id or attendees[].attendeeCalendarId is required for resource attendees",path:["attendee_calendar_id"]})});async function Yt(s,V,e){let l=new UR({name:"openbird",version:"1.0.0"});l.tool("send_message","Send a message to a Feishu chat (supports Markdown)",{chat_id:Z.string().describe("Chat ID to send the message to"),text:Z.string().describe("Message text (plain or Markdown)")},async({chat_id:c,text:a})=>{let n=await s.sendMessage(V,a,c);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("send_mention_message","Send a message with @mentions to a Feishu chat",{chat_id:Z.string().describe("Chat ID to send the message to"),text:Z.string().describe('Message text with @displayName patterns (e.g., "Hello @\u8D75\u5929\u96C4")'),mentions:Z.array(Z.object({user_id:Z.string().describe("User ID to mention"),display_name:Z.string().describe("Display name matching @pattern in text")})).describe("List of mention targets")},async({chat_id:c,text:a,mentions:n})=>{let h=n.map(E=>({userId:E.user_id,displayName:E.display_name})),d=await s.sendMentionMessage(V,a,c,h);return{content:[{type:"text",text:JSON.stringify(d)}]}}),l.tool("send_reply","Reply to a specific message in a Feishu chat",{chat_id:Z.string().describe("Chat ID"),text:Z.string().describe("Reply text (plain or Markdown)"),root_id:Z.string().describe("Root message ID of the thread"),parent_id:Z.string().describe("Message ID being replied to")},async({chat_id:c,text:a,root_id:n,parent_id:h})=>{let d=await s.sendReply(V,a,c,{rootId:n,parentId:h});return{content:[{type:"text",text:JSON.stringify(d)}]}}),l.tool("add_reaction","Add an emoji reaction to a message",{message_id:Z.string().describe("Message ID to react to"),emoji_type:Z.string().describe("Emoji type (e.g., THUMBSUP, SMILE, HEART)")},async({message_id:c,emoji_type:a})=>{let n=await s.addEmojiReaction(V,c,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("remove_reaction","Remove an emoji reaction from a message",{message_id:Z.string().describe("Message ID to remove reaction from"),emoji_type:Z.string().describe("Emoji type to remove")},async({message_id:c,emoji_type:a})=>{let n=await s.removeEmojiReaction(V,c,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("get_chat_history","Get chat message history",{chat_id:Z.string().describe("Chat ID"),start_position:Z.number().optional().describe("Start position (message sequence number)"),count:Z.number().optional().describe("Number of messages to fetch (default: 20)")},async({chat_id:c,start_position:a,count:n})=>{let h={};a!==void 0&&(h.startPosition=a),n!==void 0&&(h.count=n);let d=await s.getChatHistory(V,c,h);if(d.success&&d.messages?.length>0){let E=new Map;for(let g of d.messages)for(let X of g.baikeAnnotations||[])X.entityId&&!E.has(X.entityId)&&E.set(X.entityId,X);E.size>0&&(d.glossaryTerms=[...E.values()])}return{content:[{type:"text",text:JSON.stringify(d)}]}}),l.tool("get_chat_meta","Get chat metadata (last message position, read position, etc.)",{chat_id:Z.string().describe("Chat ID")},async({chat_id:c})=>{let a=await s.getChatMeta(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("create_chat","Create a P2P chat with a user",{user_id:Z.string().describe("User ID to create chat with")},async({user_id:c})=>{let a=await s.createChat(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("create_group","Create a group chat",{name:Z.string().describe("Group name"),description:Z.string().optional().describe("Group description"),member_ids:Z.array(Z.string()).optional().describe("Member user IDs to add"),chat_mode:Z.number().optional().describe("Chat mode: 1=DEFAULT, 2=THREAD, 3=THREAD_V2"),icon_key:Z.string().optional().describe("Group icon key")},async({name:c,description:a,member_ids:n,chat_mode:h,icon_key:d})=>{let E=await s.createGroup(V,{name:c,description:a,memberIds:n,chatMode:h,iconKey:d});return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("patch_group_chat","Update group chat info (name, description, or icon)",{chat_id:Z.string().describe("Chat ID of the group to update"),name:Z.string().optional().describe("New group name"),description:Z.string().optional().describe("New group description"),icon_key:Z.string().optional().describe("New group icon key")},async({chat_id:c,name:a,description:n,icon_key:h})=>{let d={};a!==void 0&&(d.name=a),n!==void 0&&(d.description=n),h!==void 0&&(d.iconKey=h);let E=await s.patchGroupChat(V,c,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("search","Search for users and groups in Feishu",{query:Z.string().describe("Search query")},async({query:c})=>{let a=await s.searchSome(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_user_info","Get user info by user ID (works for both users and bots)",{user_id:Z.string().describe("User ID to look up")},async({user_id:c})=>{let a=await s.getUserInfoById(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("create_webhook_bot","Create a webhook bot in a Feishu chat",{chat_id:Ze.describe("Chat ID to create the webhook bot in"),name:Ze.describe("Webhook bot name"),description:Ze.describe("Webhook bot description"),i18n:Z.string().default("zh_CN").describe("Locale string (default: zh_CN)"),avatar_key:Z.string().optional().describe("Optional avatar key"),avatar_type:Z.number().int().optional().describe("Optional avatar type"),user_id:Z.string().optional().describe("Creator user ID (defaults to current MCP session user)")},async({chat_id:c,name:a,description:n,i18n:h,avatar_key:d,avatar_type:E,user_id:g})=>{let X={userId:g||e,i18n:h};d!==void 0&&(X.avatarKey=d),E!==void 0&&(X.avatarType=E);let G=await s.createWebhookBot(V,c,a,n,X);return{content:[{type:"text",text:JSON.stringify(G)}]}}),l.tool("get_webhook_bot_info","Get webhook bot details including its webhook URL and signature settings",{bot_id:Ze.describe("Webhook bot ID"),i18n:Z.string().default("zh_CN").describe("Locale string (default: zh_CN)")},async({bot_id:c,i18n:a})=>{let n=await s.getWebhookBotInfo(V,c,{i18n:a});return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("get_user_profile_card","Get user profile card (description, display name, avatar)",{user_id:Z.string().describe("User ID to get profile card for")},async({user_id:c})=>{let a=await s.getUserProfileCard(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("set_user_signature","Set the current user profile signature",{description:Z.string().describe("Signature text"),description_flag:Z.number().optional().describe("Signature flag (default: 0)")},async({description:c,description_flag:a})=>{let n={};a!==void 0&&(n.descriptionFlag=a);let h=await s.setUserSignature(V,c,n);return{content:[{type:"text",text:JSON.stringify(h)}]}}),l.tool("get_calendar_events","Get calendar events for a user",{user_id:Z.string().optional().describe("User ID (defaults to current user)")},async({user_id:c})=>{let a=c||e,n=await s.getCalendarEvents(V,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("mget_events_with_ids","Batch-fetch calendar events by their event keys. Returns full event details including title, time, location, attendees, recurrence rules.",{event_keys:Z.array(Z.string()).min(1).describe("Event keys to fetch")},async({event_keys:c})=>{let a=await s.webMgetEventsWithIds(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_place_tips","Search place and location autocomplete tips for calendar event locations",{keyword:Z.string().describe("Place search keyword"),locale:Z.string().optional().describe("Locale code (default: zh_CN)")},async({keyword:c,locale:a})=>{let n={};a!==void 0&&(n.locale=a);let h=await s.getPlaceTips(V,c,n);return{content:[{type:"text",text:JSON.stringify(h)}]}}),l.tool("create_calendar_event","Create a calendar event with title, time, location, reminders, and optional attendees",{calendar_id:Ze.describe("Target calendar ID"),summary:Ze.describe("Event title"),start_time:Rl.describe("Start time as Unix timestamp"),end_time:Rl.describe("End time as Unix timestamp"),timezone:Z.string().optional().describe("Shared timezone for start/end, e.g. Asia/Shanghai"),start_timezone:Z.string().optional().describe("Start timezone override"),end_timezone:Z.string().optional().describe("End timezone override"),description:Z.string().optional().describe("Plain-text description"),docs_description:Z.string().optional().describe("Docs description"),rrule:Z.string().optional().describe("Recurrence rule"),is_all_day:Z.boolean().optional().describe("Whether the event lasts all day"),is_free:Z.boolean().optional().describe("Whether the event should not block busy status"),visibility:bR.describe("Visibility enum or alias (default/public/private)"),status:BR.describe("Status enum or alias (confirmed/tentative/cancelled)"),notification_type:CR.describe("Notification type enum or alias"),unique_key:Z.string().optional().describe("Optional unique event key"),original_time:NR.describe("Original event timestamp"),locations:Z.array(Z.object({name:Z.string().optional(),address:Z.string().optional(),type:uR,latitude:Z.number().optional(),longitude:Z.number().optional()})).optional().describe("Event locations"),reminders:Z.array(Z.object({minutes:Rl,method:iR,calendar_event_id:Z.string().optional(),calendarEventId:Z.string().optional()})).optional().describe("Event reminders"),attendees:Z.array(YR).optional().describe("Attendees to add on create")},async({calendar_id:c,summary:a,start_time:n,end_time:h,timezone:d,start_timezone:E,end_timezone:g,description:X,docs_description:G,rrule:W,is_all_day:m,is_free:r,visibility:i,status:Q,notification_type:Y,unique_key:T,original_time:f,locations:O,reminders:Je,attendees:Te})=>{let k={summary:a,startTime:n,endTime:h},ye={},xe=ol(d);xe!==void 0&&(k.timezone=xe);let ke=ol(E);ke!==void 0&&(k.startTimezone=ke);let Ee=ol(g);Ee!==void 0&&(k.endTimezone=Ee),X!==void 0&&(k.description=X),G!==void 0&&(k.docsDescription=G),W!==void 0&&(k.rrule=W),m!==void 0&&(k.isAllDay=m),r!==void 0&&(k.isFree=r),i!==void 0&&(k.visibility=i),Q!==void 0&&(k.status=Q);let Al=ol(T);Al!==void 0&&(k.uniqueKey=Al),f!==void 0&&(k.originalTime=f),O!==void 0&&(k.locations=O),Je!==void 0&&(k.reminders=Je.map(ne=>{let xV=ol(ne.calendar_event_id??ne.calendarEventId);return{minutes:ne.minutes,method:ne.method,...xV!==void 0?{calendarEventId:xV}:{}}})),Te!==void 0&&(k.attendees=Te),Y!==void 0&&(ye.notificationType=Y);let Il=await s.createCalendarEvent(V,c,k,ye);return{content:[{type:"text",text:JSON.stringify(Il)}]}}),l.tool("calendar_rsvp","RSVP to a calendar event (accept/decline/tentative)",{event_id:Z.string().describe("Calendar event ID"),rsvp_status:Z.string().describe("RSVP status: accept, decline, or tentative")},async({event_id:c,rsvp_status:a})=>{let n=await s.calendarRsvp(V,c,e,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("reply_calendar_event_invitation","Reply to a calendar event invitation with protobuf fields and optional RSVP comment",{unique_key:Z.string().describe("Calendar event unique key"),calendar_id:Z.string().describe("Calendar ID"),original_time:Z.number().describe("Original event timestamp"),reply_type:Z.string().describe("Reply type: accept, decline, tentative, delete, or needs_action"),quit_meeting:Z.boolean().optional().describe("Leave linked meeting after replying"),needs_brief_events:Z.boolean().optional().describe("Request brief event data in the response"),use_attendee_page_token:Z.boolean().optional().describe("Use attendee page token"),reply_comment_id:Z.string().optional().describe("Reply comment ID"),comment:Z.string().optional().describe("RSVP comment text"),invite_operator_id:Z.string().optional().describe("Invite operator ID")},async({unique_key:c,calendar_id:a,original_time:n,reply_type:h,quit_meeting:d,needs_brief_events:E,use_attendee_page_token:g,reply_comment_id:X,comment:G,invite_operator_id:W})=>{let m={};d!==void 0&&(m.quitMeeting=d),E!==void 0&&(m.needsBriefEvents=E),g!==void 0&&(m.useAttendeePageToken=g),(X!==void 0||G!==void 0||W!==void 0)&&(m.rsvpCommentInfo={...X!==void 0?{replyCommentId:X}:{},...G!==void 0?{comment:G}:{},...W!==void 0?{inviteOperatorId:W}:{}});let r=await s.replyCalendarEventInvitation(V,{uniqueKey:c,calendarId:a,originalTime:n},h,m);return{content:[{type:"text",text:JSON.stringify(r)}]}}),l.tool("delete_calendar_event","Delete a calendar event",{calendar_id:Z.string().describe("Calendar ID"),event_id:Z.string().describe("Calendar event ID"),delete_type:Z.number().optional().describe("Delete mode (default: 0 = this event only)"),need_notification:Z.boolean().optional().describe("Notify attendees (default: true)")},async({calendar_id:c,event_id:a,delete_type:n,need_notification:h})=>{let d={};n!==void 0&&(d.deleteType=n),h!==void 0&&(d.needNotification=h);let E=await s.deleteCalendarEvent(V,c,a,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("update_calendar_event","Update an existing calendar event",{event_id:Z.string().describe("Calendar event ID"),calendar_id:Z.string().optional().describe("Calendar ID"),key:Z.string().optional().describe("Event key, if known"),summary:Z.string().optional().describe("Updated event title"),description:Z.string().optional().describe("Updated plain-text description"),docs_description:Z.string().optional().describe("Updated docs description"),start_time:Z.number().optional().describe("Updated start time as Unix timestamp"),end_time:Z.number().optional().describe("Updated end time as Unix timestamp"),start_timezone:Z.string().optional().describe("Start timezone, e.g. Asia/Shanghai"),end_timezone:Z.string().optional().describe("End timezone, e.g. Asia/Shanghai"),is_all_day:Z.boolean().optional().describe("Whether the event is all-day"),is_free:Z.boolean().optional().describe("Whether the event blocks busy time"),visibility:Z.number().optional().describe("Visibility enum value"),status:Z.number().optional().describe("Status enum value"),rrule:Z.string().optional().describe("Recurrence rule"),version:Z.union([Z.number(),Z.string()]).optional().describe("Event version; defaults to current microsecond timestamp"),create_time:Z.union([Z.number(),Z.string()]).optional().describe("Original create timestamp"),update_time:Z.union([Z.number(),Z.string()]).optional().describe("Updated modify timestamp"),locations:Z.array(Z.object({name:Z.string().optional(),address:Z.string().optional(),type:Z.number().optional(),latitude:Z.number().optional(),longitude:Z.number().optional()})).optional().describe("Updated event locations"),reminders:Z.array(Z.object({calendar_event_id:Z.string().optional(),minutes:Z.number(),method:Z.number()})).optional().describe("Updated reminders"),attendees:Z.array(Z.object({}).passthrough()).optional().describe("Updated attendee objects in raw WebCalendarEventAttendee shape"),span:Z.number().min(0).max(1).optional().describe("Recurring update scope: 0=NONE_SPAN, 1=THIS_EVENT"),instance_start_time:Z.union([Z.number(),Z.string()]).optional().describe("Specific recurring instance timestamp"),notification_type:Z.number().optional().describe("Notification type enum value")},async({event_id:c,calendar_id:a,key:n,summary:h,description:d,docs_description:E,start_time:g,end_time:X,start_timezone:G,end_timezone:W,is_all_day:m,is_free:r,visibility:i,status:Q,rrule:Y,version:T,create_time:f,update_time:O,locations:Je,reminders:Te,attendees:k,span:ye,instance_start_time:xe,notification_type:ke})=>{let Ee={};ye!==void 0&&(Ee.span=ye),xe!==void 0&&(Ee.instanceStartTime=xe),ke!==void 0&&(Ee.notificationType=ke);let Al={...a!==void 0?{calendarId:a}:{},...n!==void 0?{key:n}:{},...h!==void 0?{summary:h}:{},...d!==void 0?{description:d}:{},...E!==void 0?{docsDescription:E}:{},...g!==void 0?{startTime:g}:{},...X!==void 0?{endTime:X}:{},...G!==void 0?{startTimezone:G}:{},...W!==void 0?{endTimezone:W}:{},...m!==void 0?{isAllDay:m}:{},...r!==void 0?{isFree:r}:{},...i!==void 0?{visibility:i}:{},...Q!==void 0?{status:Q}:{},...Y!==void 0?{rrule:Y}:{},...T!==void 0?{version:T}:{},...f!==void 0?{createTime:f}:{},...O!==void 0?{updateTime:O}:{},...Je!==void 0?{locations:Je}:{},...Te!==void 0?{reminders:Te.map(ne=>({...ne,...ne.calendar_event_id!==void 0?{calendarEventId:ne.calendar_event_id}:{}}))}:{},...k!==void 0?{attendees:k}:{}},Il=await s.updateCalendarEvent(V,c,Al,Ee);return{content:[{type:"text",text:JSON.stringify(Il)}]}}),l.tool("web_list_calendar_events","List calendar events within a time range for a calendar",{calendar_id:Z.string().describe("Calendar ID"),start_time:Z.number().describe("Start time as Unix timestamp in seconds"),end_time:Z.number().describe("End time as Unix timestamp in seconds"),limit:Z.number().optional().describe("Maximum number of events to return (default: 100)")},async({calendar_id:c,start_time:a,end_time:n,limit:h})=>{let d={};h!==void 0&&(d.limit=h);let E=await s.webListCalendarEvents(V,c,a,n,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("create_meeting_minute","Create a meeting minute (notes document) for a calendar event, returns a Feishu doc URL",{calendar_id:Z.string().describe("Calendar ID"),event_key:Z.string().describe("Calendar event key (from CalendarEvent.key, distinct from event ID)"),original_time:Z.number().optional().describe("Original event timestamp (default: 0)")},async({calendar_id:c,event_key:a,original_time:n})=>{let h={};n!==void 0&&(h.originalTime=n);let d=await s.createMeetingMinute(V,c,a,h);return{content:[{type:"text",text:JSON.stringify(d)}]}}),l.tool("transfer_calendar_event","Transfer ownership of a calendar event to another user",{calendar_id:Z.string().describe("Calendar ID / owner UID"),event_key:Z.string().describe("Calendar event key (from CalendarEvent.key, distinct from event ID)"),target_user_hash:Z.number().int().describe("Target user hash captured from the transfer flow"),original_time:Z.number().optional().describe("Original event timestamp (default: 0)"),transfer_flag:Z.number().int().optional().describe("Captured transfer flag (default: 1)")},async({calendar_id:c,event_key:a,target_user_hash:n,original_time:h,transfer_flag:d})=>{let E={};h!==void 0&&(E.originalTime=h),d!==void 0&&(E.transferFlag=d);let g=await s.transferCalendarEvent(V,c,a,n,E);return{content:[{type:"text",text:JSON.stringify(g)}]}}),l.tool("web_share_calendar_event","Share a calendar event to one or more chats",{chat_ids:Z.array(Z.number().safe().int().nonnegative()).nonempty().describe("Chat IDs to share the event with"),calendar_id:Z.string().describe("Calendar ID"),event_key:Z.string().describe("Calendar event key"),original_time:Z.number().safe().int().nonnegative().optional().describe("Original event timestamp (default: 0, non-recurring)")},async({chat_ids:c,calendar_id:a,event_key:n,original_time:h})=>{let d={};h!==void 0&&(d.originalTime=h);let E=await s.webShareCalendarEvent(V,c,a,n,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("upgrade_to_meeting","Upgrade a calendar event into a video meeting (creates a meeting chat group)",{event_id:Z.string().describe("Calendar event ID (CalendarEvent.id)"),uid:Z.string().describe("Event UID"),calendar_id:Z.string().describe("Calendar ID"),creator_id:Z.string().optional().describe("Creator calendar ID"),organizer_id:Z.string().optional().describe("Organizer calendar ID"),start_time:Z.number().describe("Start time (Unix timestamp in seconds)"),start_timezone:Z.string().describe('Start timezone (e.g. "Asia/Shanghai")'),end_time:Z.number().describe("End time (Unix timestamp in seconds)"),end_timezone:Z.string().optional().describe('End timezone (e.g. "Asia/Shanghai")'),summary:Z.string().describe("Event summary/title"),original_time:Z.number().optional().describe("Original event timestamp (default: 0)"),rrule:Z.string().optional().describe('Recurrence rule (e.g. "FREQ=DAILY;UNTIL=20280305T155959Z;INTERVAL=3")')},async({event_id:c,uid:a,calendar_id:n,creator_id:h,organizer_id:d,start_time:E,start_timezone:g,end_time:X,end_timezone:G,summary:W,original_time:m,rrule:r})=>{let i={eventId:c,uid:a,calendarId:n,startTime:E,startTimezone:g,endTime:X,summary:W};h!==void 0&&(i.creatorId=h),d!==void 0&&(i.organizerId=d),G!==void 0&&(i.endTimezone=G);let Q={};m!==void 0&&(Q.originalTime=m),r!==void 0&&(Q.rrule=r);let Y=await s.upgradeToMeeting(V,i,Q);return{content:[{type:"text",text:JSON.stringify(Y)}]}}),l.tool("download_image","Download an image by its image key, returns base64-encoded data",{image_key:Z.string().describe("Image key (e.g., img_v3_02uc_...)"),size:Z.string().optional().describe("Image size: ORIGIN, MIDDLE_WEBP, or SMALL_WEBP (default: ORIGIN)")},async({image_key:c,size:a})=>{let n={};a&&(n.size=a);let h=await s.downloadImage(c,n);return h.success?{content:[{type:"text",text:JSON.stringify({success:!0,mimeType:h.mimeType,size:h.data.length})},{type:"image",data:h.base64,mimeType:h.mimeType}]}:{content:[{type:"text",text:JSON.stringify(h)}]}}),l.tool("mark_chat_read","Mark a chat as read up to a specific position",{encrypted_chat_id:Z.string().describe("Encrypted chat ID string"),read_position:Z.number().describe("Read position timestamp")},async({encrypted_chat_id:c,read_position:a})=>{let n=await s.markChatRead(V,c,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("pin_session","Pin a chat session (stick to top of feed)",{chat_id:Z.string().describe("Chat ID to pin")},async({chat_id:c})=>{let a=await s.pinSession(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("unpin_session","Unpin a chat session",{chat_id:Z.string().describe("Chat ID to unpin")},async({chat_id:c})=>{let a=await s.unpinSession(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("mark_session","Mark a session as important (flag)",{user_hash_id:Z.number().describe("User hash ID (numeric)")},async({user_hash_id:c})=>{let a=await s.markSession(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("unmark_session","Remove mark/flag from a session",{user_hash_id:Z.number().describe("User hash ID (numeric)")},async({user_hash_id:c})=>{let a=await s.unmarkSession(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_user_relation","Query relationship between current user and target user",{user_hash_id:Z.number().describe("Target user hash ID")},async({user_hash_id:c})=>{let a=await s.getUserRelation(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_user_presence","Get user online/presence status",{user_id:Z.string().describe("User ID to check presence for")},async({user_id:c})=>{let a=await s.getUserPresence(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_config","Get a Feishu configuration item value",{config_name:Z.string().describe("Config item name (e.g., PROFILE_NAME_DISPLAY_TYPE)")},async({config_name:c})=>{let a=await s.getConfig(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("get_feature_flags","Get feature flags / capabilities list",{sync_token:Z.string().optional().describe("Sync token from previous response for incremental updates")},async({sync_token:c})=>{let a={};c&&(a.syncToken=c);let n=await s.getFeatureFlags(V,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("save_contact_alias","Save contact alias name and/or memo for a user",{user_id:Z.string().describe("Target user ID"),alias:Z.string().optional().describe("Alias name for the contact"),memo:Z.string().optional().describe("Memo/note text"),memo_image_key:Z.string().optional().describe("Image key for memo image")},async({user_id:c,alias:a,memo:n,memo_image_key:h})=>{let d={};a!==void 0&&(d.alias=a),n!==void 0&&(d.memo=n),h!==void 0&&(d.memoImageKey=h);let E=await s.saveContactAlias(V,c,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("sync_contact_info","Sync contact info after updating contact aliases (cmd=1100319)",{user_id:Z.string().describe("Target user ID to sync contact info for")},async({user_id:c})=>{let a=await s.syncContactInfo(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("create_thread","Create a thread from a message",{message_id:Z.string().describe("Message ID to create thread from")},async({message_id:c})=>{let a=await s.createThread(V,c);return{content:[{type:"text",text:JSON.stringify(a)}]}}),l.tool("search_in_chat","Search for messages within a specific chat",{query:Z.string().describe("Search query"),chat_id:Z.string().describe("Chat ID to search within"),page_size:Z.number().optional().describe("Results per page (default: 5)")},async({query:c,chat_id:a,page_size:n})=>{let h={};n!==void 0&&(h.pageSize=n);let d=await s.searchInChat(V,c,a,h);return{content:[{type:"text",text:JSON.stringify(d)}]}}),l.tool("send_urgent","Send an urgent notification (\u52A0\u6025) for a message to a user",{chat_id:Z.string().describe("Chat ID containing the message"),message_id:Z.string().describe("Message ID to mark urgent"),target_user_id:Z.string().describe("User ID to send urgent to"),urgent_type:Z.number().min(1).max(3).optional().describe("Urgent type: 1=APP (default), 2=SMS, 3=PHONE")},async({chat_id:c,message_id:a,target_user_id:n,urgent_type:h})=>{let d={};h!==void 0&&(d.urgentType=h);let E=await s.putUrgent(V,c,a,n,e,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("get_urgent_ack_status","Query urgent notification acknowledgment status",{chat_id:Z.string().describe("Chat ID"),message_id:Z.string().describe("Message ID that was marked urgent"),target_user_id:Z.string().describe("User ID the urgent was sent to"),urgent_ack_id:Z.string().optional().describe("Urgent ack ID (if known)"),urgent_type:Z.number().min(1).max(3).optional().describe("Urgent type: 1=APP (default), 2=SMS, 3=PHONE")},async({chat_id:c,message_id:a,target_user_id:n,urgent_ack_id:h,urgent_type:d})=>{let E={messageId:a,targetUserId:n};h&&(E.urgentAckId=h),d!==void 0&&(E.urgentType=d);let g=await s.pullUrgentAckStatus(V,c,E);return{content:[{type:"text",text:JSON.stringify(g)}]}}),l.tool("put_schedule_message","Create a scheduled message to be sent at a future time",{text:Z.string().describe("Message content (supports Markdown)"),chat_id:Z.string().describe("Chat ID to send the message to"),schedule_time:Z.number().describe("Scheduled send time as Unix timestamp in milliseconds"),entity_id:Z.string().optional().describe("Thread ID or chat ID (defaults to chat_id)")},async({text:c,chat_id:a,schedule_time:n,entity_id:h})=>{let d={};h!==void 0&&(d.entityId=h);let E=await s.putScheduleMessage(V,c,a,n,d);return{content:[{type:"text",text:JSON.stringify(E)}]}}),l.tool("patch_schedule_message","Update, suspend, delete, or immediately send a scheduled message",{chat_id:Z.string().describe("Chat ID"),message_id:Z.string().describe("Schedule message ID"),patch_type:Z.number().min(1).max(3).describe("Operation type: 1=UPDATE, 2=SUSPEND, 3=DELETE"),schedule_time:Z.number().optional().describe("New scheduled time in milliseconds (for UPDATE)"),content:Z.string().optional().describe("New message content text (for UPDATE)"),send_immediately:Z.boolean().optional().describe("Send the message immediately (for UPDATE)")},async({chat_id:c,message_id:a,patch_type:n,schedule_time:h,content:d,send_immediately:E})=>{let g={};h!==void 0&&(g.scheduleTime=h),d!==void 0&&(g.content=d),E!==void 0&&(g.sendImmediately=E);let X=await s.patchScheduleMessage(V,c,a,n,g);return{content:[{type:"text",text:JSON.stringify(X)}]}}),l.tool("pull_schedule_message_by_ids","Pull specific scheduled messages by their IDs",{chat_id:Z.string().describe("Chat ID"),message_ids:Z.array(Z.string()).describe("Schedule message IDs to retrieve")},async({chat_id:c,message_ids:a})=>{let n=await s.pullScheduleMessageByIds(V,c,a);return{content:[{type:"text",text:JSON.stringify(n)}]}}),l.tool("get_baike_card","Get a Feishu Lingo (\u98DE\u4E66\u8BCD\u5178) glossary card for a term, including its definition, full name, contributors, and detail URL",{entity_id:Z.string().describe('Baike entity ID (e.g. "enterprise_7613780366768819403")'),text:Z.string().describe('Term text (e.g. "\u8868\u60C5\u56DE\u590D")'),entity_type:Z.number().optional().describe("Entity type: 1=enterprise (default), 0=public"),chat_id:Z.string().optional().describe("Chat ID where term was found (for context)"),message_id:Z.string().optional().describe("Message ID where term was found (for context)")},async({entity_id:c,text:a,entity_type:n,chat_id:h,message_id:d})=>{let E={};n!==void 0&&(E.entityType=n),h!==void 0&&(E.chatId=h),d!==void 0&&(E.messageId=d);let g=await s.getBaikeCard(V,c,a,E);if(g.success&&g.info){let X={success:!0,info:g.info};return{content:[{type:"text",text:JSON.stringify(X)}]}}return{content:[{type:"text",text:JSON.stringify(g)}]}}),l.tool("get_baike_recommend_docs","Get recommended documents for a Feishu Lingo (\u98DE\u4E66\u8BCD\u5178) glossary term",{entity_id:Z.string().describe('Baike entity ID (e.g. "enterprise_7613780366768819403")'),entity_type:Z.number().optional().describe("Entity type: 1=enterprise (default), 0=public")},async({entity_id:c,entity_type:a})=>{let n={};a!==void 0&&(n.entityType=a);let h=await s.getBaikeRecommendDocs(V,c,n);return{content:[{type:"text",text:JSON.stringify(h)}]}}),l.tool("search_guests","Search users and groups that can be added as calendar event attendees",{query:Z.string().min(1).describe("Search keyword for users or groups"),offset:Z.number().int().nonnegative().optional().describe("Pagination offset (default 0)"),limit:Z.number().int().min(1).max(100).optional().describe("Page size (default 50)"),locale:Z.string().optional().describe("Locale string such as zh_CN"),guest_type:Z.number().int().nonnegative().optional().describe("Guest type filter (default 2 = all)")},async({query:c,offset:a,limit:n,locale:h,guest_type:d})=>{let E={};a!==void 0&&(E.offset=a),n!==void 0&&(E.limit=n),h!==void 0&&(E.locale=h),d!==void 0&&(E.guestType=d);let g=await s.searchGuests(V,c,E);return{content:[{type:"text",text:JSON.stringify(g)}]}}),l.tool("search_meeting_rooms","Search for available meeting rooms within a time window",{start_time:Z.number().int().nonnegative().describe("Search window start time (Unix timestamp in seconds)"),end_time:Z.number().int().nonnegative().describe("Search window end time (Unix timestamp in seconds)"),keyword:Z.string().optional().describe("Search keyword (room name, building name, etc.)"),timezone:Z.string().optional().describe("IANA timezone for the search window (server defaults to UTC if omitted)"),min_capacity:Z.number().int().nonnegative().optional().describe("Minimum room capacity (number of people)"),cursor:Z.number().int().nonnegative().optional().describe("Pagination cursor from previous response")},async({start_time:c,end_time:a,keyword:n,timezone:h,min_capacity:d,cursor:E})=>{let g={};n!==void 0&&(g.keyword=n),h!==void 0&&(g.timezone=h),d!==void 0&&(g.minCapacity=d),E!==void 0&&(g.cursor=E);let X=await s.searchMeetingRooms(V,c,a,g);return{content:[{type:"text",text:JSON.stringify(X)}]}}),l.tool("pull_buildings","List buildings that contain meeting rooms",{min_capacity:Z.number().int().nonnegative().optional().describe("Minimum room capacity filter"),need_equipments:Z.array(Z.string()).optional().describe("Required equipment types"),enable_recommendations:Z.boolean().optional().describe("Whether to enable recommendation-based sorting"),event_start_timestamp:Z.string().optional().describe("Event start timestamp string for event context"),event_end_timestamp:Z.string().optional().describe("Event end timestamp string for event context"),start_timezone:Z.string().optional().describe("IANA start timezone for event context"),end_timezone:Z.string().optional().describe("IANA end timezone for event context"),instance_start_time:Z.string().optional().describe("Operate-instance start time string"),instance_end_time:Z.string().optional().describe("Operate-instance end time string")},async({min_capacity:c,need_equipments:a,enable_recommendations:n,event_start_timestamp:h,event_end_timestamp:d,start_timezone:E,end_timezone:g,instance_start_time:X,instance_end_time:G})=>{let W={};c!==void 0&&(W.minCapacity=c),a!==void 0&&(W.needEquipments=a),n!==void 0&&(W.enableRecommendations=n),(h!==void 0||d!==void 0||E!==void 0||g!==void 0)&&(W.eventField={},h!==void 0&&(W.eventField.eventStartTimestamp=h),d!==void 0&&(W.eventField.eventEndTimestamp=d),E!==void 0&&(W.eventField.startTimezone=E),g!==void 0&&(W.eventField.endTimezone=g)),(X!==void 0||G!==void 0)&&(W.operateInstanceField={},X!==void 0&&(W.operateInstanceField.instanceStartTime=X),G!==void 0&&(W.operateInstanceField.instanceEndTime=G));let m=await s.pullBuildings(V,W);return{content:[{type:"text",text:JSON.stringify(m)}]}}),l.tool("pull_meeting_rooms_in_building","List meeting rooms within specific buildings, filtered by time range and recurrence",{building_ids:Z.array(Z.string()).min(1).describe("Building IDs to query"),start_time:Z.number().int().nonnegative().describe("Window start time (Unix timestamp in seconds)"),end_time:Z.number().int().nonnegative().describe("Window end time (Unix timestamp in seconds)"),rrule:Z.string().optional().describe('Recurrence rule (e.g. "FREQ=DAILY;UNTIL=20280305T155959Z;INTERVAL=3")'),need_disabled_resource:Z.boolean().optional().describe("Include disabled rooms"),timezone:Z.string().optional().describe("IANA timezone (server defaults to UTC if omitted)"),min_capacity:Z.number().int().nonnegative().optional().describe("Minimum room capacity (number of people)")},async({building_ids:c,start_time:a,end_time:n,rrule:h,need_disabled_resource:d,timezone:E,min_capacity:g})=>{let X={};h!==void 0&&(X.rrule=h),d!==void 0&&(X.needDisabledResource=d),E!==void 0&&(X.timezone=E),g!==void 0&&(X.minCapacity=g);let G=await s.pullMeetingRoomsInBuilding(V,c,a,n,X);return{content:[{type:"text",text:JSON.stringify(G)}]}}),l.tool("pull_tenants_by_ids","Fetch tenant or organization information by tenant IDs",{tenantIds:Z.array(Z.string()).min(1).describe("Tenant IDs to fetch")},async({tenantIds:c})=>{let a=s.baseUrl||"https://internal-api-lark-api.feishu.cn";try{a=new URL(a).origin}catch{}let n=de._validateFeishuOrigin(a);if(!n.valid)return{content:[{type:"text",text:JSON.stringify({success:!1,error:n.error})}]};let h=await s.pullTenantsByIds(V,c);return{content:[{type:"text",text:JSON.stringify(h)}]}}),l.tool("get_docx_block_tree","Get the block tree of a Feishu document (wiki or docx). Returns structured blocks with text, type, version, and children.",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),mode:Z.union([Z.literal(0),Z.literal(1),Z.literal(7)]).optional().describe("Fetch mode: 0=ALL (default), 1=TOP_BOTTOM, 7=AroundV2"),limit:Z.number().int().min(1).max(500).optional().describe("Blocks per page (1-500, default 200)")},async({url:c,mode:a,limit:n})=>{let h;try{h=new URL(c)}catch{return{content:[{type:"text",text:JSON.stringify({success:!1,error:"Invalid URL"})}]}}let d=h.origin,E=de._validateFeishuOrigin(d);if(!E.valid)return{content:[{type:"text",text:JSON.stringify({success:!1,error:E.error})}]};let g=h.pathname.match(/\/wiki\/([^/?#]+)/),X=h.pathname.match(/\/docx\/([^/?#]+)/);if(!g&&!X)return{content:[{type:"text",text:JSON.stringify({success:!1,error:"URL must contain /wiki/ or /docx/ path"})}]};let G;if(g){let r=await s.resolveWikiToken(V,d,g[1]);if(!r.success)return{content:[{type:"text",text:JSON.stringify(r)}]};if(r.data.objType!==22)return{content:[{type:"text",text:JSON.stringify({success:!1,error:`Unsupported wiki object type: ${r.data.objType} (only docx type 22 is supported)`})}]};G=r.data.objToken}else G=X[1];let W={};a!==void 0&&(W.mode=a),n!==void 0&&(W.limit=n);let m=await s.getDocxBlockTree(V,d,G,W);return{content:[{type:"text",text:JSON.stringify(m)}]}});let t=new Map;async function o(c,{refresh:a=!1}={}){let n;try{n=new URL(c)}catch{return{success:!1,error:"Invalid URL"}}let h=n.origin,d=de._validateFeishuOrigin(h);if(!d.valid)return{success:!1,error:d.error};let E=n.pathname.match(/\/wiki\/([^/?#]+)/),g=n.pathname.match(/\/docx\/([^/?#]+)/);if(!E&&!g)return{success:!1,error:"URL must contain /wiki/ or /docx/ path"};let X;if(E){let m=await s.resolveWikiToken(V,h,E[1]);if(!m.success)return{success:!1,error:m.error};if(m.data.objType!==22)return{success:!1,error:`Unsupported wiki object type: ${m.data.objType} (only docx type 22 is supported)`};X=m.data.objToken}else X=g[1];let G=`${h}|${X}`,W=t.get(G);if(a||!W){W=new JV(s,V,h,X);let m=await W.open();if(!m.success)return{success:!1,error:m.error};t.set(G,W)}return{success:!0,editor:W,origin:h,pageId:X,cacheKey:G}}async function R(c,a){let n=await o(c);if(!n.success)return{content:[{type:"text",text:JSON.stringify({success:!1,error:n.error})}]};let h=await a(n.editor,n);return h.success||t.delete(n.cacheKey),{content:[{type:"text",text:JSON.stringify(h)}]}}l.tool("docx_open_document","Open a Feishu document for editing. Returns the block tree. The document stays cached for subsequent edit operations. Use refresh=true to re-fetch the latest state.",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),refresh:Z.boolean().optional().describe("Force re-fetch the document from server (default: false)")},async({url:c,refresh:a})=>{let n=await o(c,{refresh:!!a});if(!n.success)return{content:[{type:"text",text:JSON.stringify({success:!1,error:n.error})}]};let h=n.editor.getBlockTree();return{content:[{type:"text",text:JSON.stringify({success:!0,data:{pageId:n.pageId,structureVersion:n.editor.structureVersion,blockCount:Object.keys(n.editor.blockMap).length,tree:h}})}]}}),l.tool("docx_insert_block","Insert a new block into a Feishu document",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),parent_id:Z.string().optional().describe("Parent block ID (defaults to page root)"),position:Z.number().int().min(0).optional().describe("Index in parent children (defaults to end)"),type:Z.string().optional().describe("Block type: text (default), heading1-9, todo, bullet, ordered, code, quote, divider, equation"),text:Z.string().optional().describe("Initial text content")},async({url:c,parent_id:a,position:n,type:h,text:d})=>R(c,(E,g)=>{let X=a||g.pageId,G=E.getBlock(X);if(!G)return{success:!1,error:`Parent block ${X} not found`};let W=n??(G.data?.children?.length||0),m=h||"text",r={};return d!==void 0&&(r.text=d),E.insertBlock(X,W,m,r)})),l.tool("docx_edit_text","Edit the text content of a block in a Feishu document",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),block_id:Z.string().describe("Block ID to edit"),text:Z.string().describe("New text content")},async({url:c,block_id:a,text:n})=>R(c,h=>h.editText(a,n))),l.tool("docx_delete_blocks","Delete one or more blocks from a Feishu document",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),block_ids:Z.array(Z.string()).min(1).describe("Block IDs to delete")},async({url:c,block_ids:a})=>R(c,n=>n.deleteBlocks(a))),l.tool("docx_change_block_type","Change the type of a block in a Feishu document (e.g. text to heading1, bullet to todo)",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),block_id:Z.string().describe("Block ID to change"),new_type:Z.string().describe("New block type: text, heading1-9, todo, bullet, ordered, code, quote, divider, equation")},async({url:c,block_id:a,new_type:n})=>R(c,h=>h.changeBlockType(a,n))),l.tool("docx_set_block_properties","Set properties on a block. Common properties: done (bool, todo), folded (bool), align (left/center/right), language (string, code), emoji_id (string, callout), text_indent (number)",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),block_id:Z.string().describe("Block ID to modify"),properties:Z.record(Z.string(),Z.any()).describe('Key-value pairs to set (e.g. {"done": true, "align": "center"})')},async({url:c,block_id:a,properties:n})=>R(c,h=>h.setBlockProperties(a,n))),l.tool("docx_move_block","Move a block to a new parent and/or position within a Feishu document",{url:Z.string().describe("Document URL: https://xxx.feishu.cn/wiki/xxx or /docx/xxx"),block_id:Z.string().describe("Block ID to move"),new_parent_id:Z.string().describe("Target parent block ID"),new_position:Z.number().int().min(0).describe("Target index in new parent children")},async({url:c,block_id:a,new_parent_id:n,new_position:h})=>R(c,d=>d.moveBlock(a,n,h)));let A=new GR;await l.connect(A),N.log("[MCP] Server started on stdio")}var JR={1:"p2p",2:"group",3:"topic_group"},TR={1:"user",2:"bot"},yR={2:"rich",3:"file",4:"text",5:"image",6:"system",7:"audio",9:"share_group_chat",10:"sticker",11:"merge_forward",12:"calendar",14:"card",15:"media",23:"share_user_card",24:"todo"},xR={0:"unknown",1:"pc",2:"web",3:"android",4:"ios"},kR={0:"unknown",1:"online",2:"offline"},Jt={0:"unknown",1:"inbox",2:"done"},fR={0:"unknown",1:"chat",2:"mail",3:"doc",4:"thread",5:"box",6:"openapp",7:"topic",8:"app_chat",10:"subscription",11:"msg_thread",12:"my_ai",13:"app_feed",14:"knowledge_ai"},KR={0:"unknown",1:"app",2:"sms",3:"phone"},MR={0:"unknown",1:"message",2:"doc_list",3:"doc",4:"pin",5:"meeting_minute",6:"chat_announcement",7:"url",8:"file",9:"task",10:"doc_file_url_merge",11:"image_video_merge"},DR={0:"unknown",1:"message",2:"announcement"},HR={1:"chat",2:"email"},zR={27:"im.message.reaction_v1",41:"im.message.read_count_v1",74:"im.chat.read_state_v1",92:"im.thread.reply_count_v1",130:"im.reaction.user_v1",146:"im.reaction.user_mru_v1",1002:"feed.cards_v1",1311:"im.message.preview_v1",5916:"im.chat.tabs_v1",7001:"system.device.status_v1",8106:"im.thread.read_state_v1",8110:"im.thread.updated_v1",30002:"im.message.urgent_v1",30003:"im.message.urgent_ack_v1",1020003:"calendar.event.sync_v1",1103704:"im.chat.top_notice_v1"},wR=new Set([200,6e3]);function TV(s){let{command:V}=s;if(wR.has(V))return null;if(V===6)return LR(s);let e=zR[V];return e?vR(e,s):{type:"system.event.unknown",event_id:null,timestamp:Date.now(),data:{command:V,raw:s}}}function LR(s){let{messageId:V,chatId:e,chatType:l,fromId:t,fromType:o,type:R,content:A,threadId:c}=s;return{type:"im.message.receive_v1",event_id:V?`evt_${V}`:null,timestamp:Date.now(),data:{id:V||null,chat:{id:e||null,type:JR[l]||"unknown"},sender:{id:t||null,type:TR[o]||"unknown"},content:{type:yR[R]||"unknown",text:A||""},thread_id:c||null}}}function vR(s,V){let{command:e,event:l,sid:t,fromId:o,content:R,type:A,chatId:c,...a}=V;return c&&(a.chatId=c),PR(e,a),{type:s,event_id:t?`evt_${t}`:null,timestamp:Date.now(),data:a}}function PR(s,V){switch(s){case 7001:V.terminalType=xR[V.terminalType]??V.terminalType,V.onlineStatus=kR[V.onlineStatus]??V.onlineStatus;break;case 1002:V.feedType=Jt[V.feedType]??V.feedType,V.cards&&(V.cards=V.cards.map(e=>({...e,type:fR[e.type]??e.type,feedType:Jt[e.feedType]??e.feedType})));break;case 30002:case 30003:V.urgentType=KR[V.urgentType]??V.urgentType;break;case 5916:V.tabs&&(V.tabs=V.tabs.map(e=>({...e,tabType:MR[e.tabType]??e.tabType})));break;case 1103704:V.topNotice?.content&&(V.topNotice={...V.topNotice,content:{...V.topNotice.content,type:DR[V.topNotice.content.type]??V.topNotice.content.type}});break;case 41:V.pairs&&(V.pairs=V.pairs.map(e=>({...e,type:HR[e.type]??e.type})));break}}var cl=5,jR=500;async function yV(s,V){for(let e=1;e<=cl;e++){try{let l=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(V),signal:AbortSignal.timeout(1e4)});if(l.status>=200&&l.status<300){N.debug(`[Webhook] Delivered event ${V.event_id||"N/A"} (${l.status})`);return}N.warn(`[Webhook] Non-2xx response ${l.status} for event ${V.event_id||"N/A"} (attempt ${e}/${cl})`)}catch(l){N.warn(`[Webhook] Request failed for event ${V.event_id||"N/A"} (attempt ${e}/${cl}): ${l.message}`)}if(e<cl){let l=jR*Math.pow(2,e-1);await new Promise(t=>setTimeout(t,l))}}N.error(`[Webhook] Failed to deliver event ${V.event_id||"N/A"} after ${cl} attempts`)}var OR=300*1e3,pl=class s{constructor(V,e){this.api=V,this.auth=e,this.chatCache=new Map,this.userCache=new Map,this.chatInflight=new Map,this.userInflight=new Map}static extractIds(V){let e=new Set,l=new Set,t=V?.data;if(!t)return{chatIds:e,userIds:l};let o=V.type;if(o==="im.message.receive_v1")t.chat?.id&&e.add(t.chat.id),t.sender?.id&&l.add(t.sender.id);else if(o==="im.message.urgent_v1")t.chatId&&e.add(t.chatId),t.sendChatterId&&l.add(t.sendChatterId);else if(o==="im.message.urgent_ack_v1")t.chatId&&e.add(t.chatId),t.ackChatterId&&l.add(t.ackChatterId);else if(o==="im.chat.top_notice_v1")t.chatId&&e.add(t.chatId),t.topNotice?.operatorId&&l.add(t.topNotice.operatorId),t.topNotice?.content?.senderId&&l.add(t.topNotice.content.senderId);else if(o==="im.message.read_count_v1"){if(Array.isArray(t.pairs))for(let R of t.pairs)R.chatId&&e.add(R.chatId)}else t.chatId&&e.add(t.chatId);return{chatIds:e,userIds:l}}_getCached(V,e){let l=V.get(e);if(l){if(Date.now()>l.expiresAt){V.delete(e);return}return l.data}}_setCache(V,e,l){V.set(e,{data:l,expiresAt:Date.now()+OR})}async _resolveChat(V){let e=this._getCached(this.chatCache,V);if(e)return e;let l=this.chatInflight.get(V);if(l)return l;let t=this._fetchChat(V);this.chatInflight.set(V,t);try{return await t}finally{this.chatInflight.delete(V)}}async _fetchChat(V){try{let e=await this.api.getChatMeta(this.auth,V);if(!e.success||!e.chat)return null;let l={name:e.chat.name,type:e.chat.type,memberCount:e.chat.memberCount};return this._setCache(this.chatCache,V,l),l}catch(e){return N.error(`Enricher: failed to resolve chat ${V}:`,e.message),null}}async _resolveUser(V){let e=this._getCached(this.userCache,V);if(e)return e;let l=this.userInflight.get(V);if(l)return l;let t=this._fetchUser(V);this.userInflight.set(V,t);try{return await t}finally{this.userInflight.delete(V)}}async _fetchUser(V){try{let e=await this.api.getUserInfoById(this.auth,V);if(!e.success)return null;let l={name:e.name,isBot:e.isBot};return this._setCache(this.userCache,V,l),l}catch(e){return N.error(`Enricher: failed to resolve user ${V}:`,e.message),null}}async enrich(V){let{chatIds:e,userIds:l}=s.extractIds(V);if(e.size===0&&l.size===0)return V;let[t,o]=await Promise.all([Promise.all([...e].map(async h=>[h,await this._resolveChat(h)])),Promise.all([...l].map(async h=>[h,await this._resolveUser(h)]))]),R={};for(let[h,d]of t)d&&(R[h]=d);let A={};for(let[h,d]of o)d&&(A[h]=d);let c=Object.keys(R).length>0,a=Object.keys(A).length>0;if(!c&&!a)return V;let n={};return c&&(n.chats=R),a&&(n.users=A),{...V,_enriched:n}}};async function nd(){let s=process.env.OPENBIRD_COOKIE,V=process.env.OPENBIRD_WEBHOOK_URL;s||(N.error("OPENBIRD_COOKIE is required. Set it in .env or environment."),process.exit(1));let e=new fV;e.prepareAuth(s);let l=new de;N.log("Authenticating...");let{xCsrfToken:t}=await l.getCsrfToken(e),{userId:o}=await l.getUserInfo(e,t);if(o||(N.error("Failed to get user ID. Check your OPENBIRD_COOKIE."),process.exit(1)),N.log(`Authenticated as user ${o}`),await Yt(l,e,String(o)),V){N.log(`Webhook mode: forwarding events to ${V}`);let A=process.env.OPENBIRD_ENRICH!=="false"?new pl(l,e):null,c=new pt(e);c.setMeId(o),c.onMessage(async a=>{let n=TV(a);n&&(A&&(n=await A.enrich(n)),await yV(V,n))}),c.onEvent(async a=>{let n=TV(a);n&&(A&&(n=await A.enrich(n)),await yV(V,n))}),await c.start(),N.log("WebSocket connected \u2014 forwarding events")}else N.log("MCP-only mode (no OPENBIRD_WEBHOOK_URL set)")}export{JV as DocxEditor,de as FeishuApi,fV as FeishuAuth,pt as FeishuWebSocket,nd as main};
6
6
  /*! Bundled license information:
7
7
 
8
8
  @noble/hashes/utils.js: