serve-sim 0.1.22 → 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,18 @@
1
- var z0=Object.defineProperty;var W0=(J)=>J;function H0(J,Z){this[J]=W0.bind(null,Z)}var K0=(J,Z)=>{for(var $ in Z)z0(J,$,{get:Z[$],enumerable:!0,configurable:!0,set:H0.bind(Z,$)})};var F0=(J,Z)=>()=>(J&&(Z=J(J=0)),Z);var dZ={};K0(dZ,{startCdpServer:()=>m2,startBunCdpServer:()=>e2,listTargets:()=>J4,listDevices:()=>iZ});import{createRequire as E0}from"node:module";import*as EZ from"node:net";import*as xZ from"node:net";import{spawnSync as a0}from"node:child_process";import*as yZ from"node:tls";import*as bZ from"node:http";function w0(J){return this[J]}function NZ(J){return J.replace(/[&<>'"]/g,(Z)=>Z==="&"?"&amp;":Z==="<"?"&lt;":Z===">"?"&gt;":Z==="'"?"&apos;":"&quot;")}function u0(J){let Z="";for(let $=0;$<J.length;$++)Z+=String.fromCharCode(J[$]);return btoa(Z)}function l0(J){let Z=atob(J.replace(/\s+/g,"")),$=new Uint8Array(Z.length);for(let Q=0;Q<Z.length;Q++)$[Q]=Z.charCodeAt(Q);return $}function uJ(J,Z){if(J===null||J===void 0)return`${Z}<string></string>`;if(typeof J==="boolean")return`${Z}<${J?"true":"false"}/>`;if(typeof J==="string")return`${Z}<string>${NZ(J)}</string>`;if(typeof J==="number"){if(Number.isInteger(J))return`${Z}<integer>${J}</integer>`;return`${Z}<real>${J}</real>`}if(typeof J==="bigint")return`${Z}<integer>${J.toString()}</integer>`;if(J instanceof Uint8Array)return`${Z}<data>${u0(J)}</data>`;if(J instanceof Date)return`${Z}<date>${J.toISOString().replace(/\.\d+Z$/,"Z")}</date>`;if(Array.isArray(J)){if(J.length===0)return`${Z}<array/>`;let G=J.map((Y)=>uJ(Y,Z+"\t")).join(`
2
- `);return`${Z}<array>
1
+ var zZ=Object.defineProperty;var WZ=(J)=>J;function HZ(J,Q){this[J]=WZ.bind(null,Q)}var KZ=(J,Q)=>{for(var Z in Q)zZ(J,Z,{get:Q[Z],enumerable:!0,configurable:!0,set:HZ.bind(Q,Z)})};var FZ=(J,Q)=>()=>(J&&(Q=J(J=0)),Q);var gQ={};KZ(gQ,{startCdpServer:()=>m0,startBunCdpServer:()=>e0,listTargets:()=>J2,listDevices:()=>iQ});import{createRequire as EZ}from"node:module";import*as EQ from"node:net";import*as xQ from"node:net";import{spawnSync as aZ}from"node:child_process";import*as yQ from"node:tls";import*as bQ from"node:http";function wZ(J){return this[J]}function OQ(J){return J.replace(/[&<>'"]/g,(Q)=>Q==="&"?"&amp;":Q==="<"?"&lt;":Q===">"?"&gt;":Q==="'"?"&apos;":"&quot;")}function uZ(J){let Q="";for(let Z=0;Z<J.length;Z++)Q+=String.fromCharCode(J[Z]);return btoa(Q)}function lZ(J){let Q=atob(J.replace(/\s+/g,"")),Z=new Uint8Array(Q.length);for(let $=0;$<Q.length;$++)Z[$]=Q.charCodeAt($);return Z}function uJ(J,Q){if(J===null||J===void 0)return`${Q}<string></string>`;if(typeof J==="boolean")return`${Q}<${J?"true":"false"}/>`;if(typeof J==="string")return`${Q}<string>${OQ(J)}</string>`;if(typeof J==="number"){if(Number.isInteger(J))return`${Q}<integer>${J}</integer>`;return`${Q}<real>${J}</real>`}if(typeof J==="bigint")return`${Q}<integer>${J.toString()}</integer>`;if(J instanceof Uint8Array)return`${Q}<data>${uZ(J)}</data>`;if(J instanceof Date)return`${Q}<date>${J.toISOString().replace(/\.\d+Z$/,"Z")}</date>`;if(Array.isArray(J)){if(J.length===0)return`${Q}<array/>`;let G=J.map((Y)=>uJ(Y,Q+"\t")).join(`
2
+ `);return`${Q}<array>
3
3
  ${G}
4
- ${Z}</array>`}let $=Object.keys(J);if($.length===0)return`${Z}<dict/>`;let Q=$.map((G)=>`${Z} <key>${NZ(G)}</key>
5
- `+uJ(J[G],Z+"\t")).join(`
6
- `);return`${Z}<dict>
7
- ${Q}
8
- ${Z}</dict>`}function nJ(J){let Z=uJ(J,"");return new TextEncoder().encode(b0+Z+h0)}class TZ{src;pos=0;constructor(J){this.src=J}skip(){while(this.pos<this.src.length){let J=this.src[this.pos];if(J===" "||J==="\t"||J===`
9
- `||J==="\r")this.pos++;else if(this.src.startsWith("<!--",this.pos)){let Z=this.src.indexOf("-->",this.pos+4);if(Z<0)throw Error("unterminated comment");this.pos=Z+3}else if(this.src.startsWith("<?",this.pos)){let Z=this.src.indexOf("?>",this.pos+2);if(Z<0)throw Error("unterminated processing instruction");this.pos=Z+2}else if(this.src.startsWith("<!DOCTYPE",this.pos)){let Z=0;while(this.pos<this.src.length){let $=this.src[this.pos++];if($==="[")Z++;else if($==="]")Z--;else if($===">"&&Z===0)break}}else break}}nextTag(){if(this.skip(),this.pos>=this.src.length)return null;if(this.src[this.pos]!=="<")throw Error(`expected '<' at ${this.pos}`);let J=this.src.indexOf(">",this.pos);if(J<0)throw Error("unterminated tag");let Z=this.src.slice(this.pos+1,J);this.pos=J+1;let $=Z.startsWith("/"),Q=Z.endsWith("/");return{name:Z.replace(/^\/?/,"").replace(/\/$/,"").trim().split(/\s+/)[0],selfClose:Q,isClose:$}}readText(){let J=this.src.indexOf("<",this.pos),Z=J<0?this.src.slice(this.pos):this.src.slice(this.pos,J);return this.pos=J<0?this.src.length:J,Z.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&apos;/g,"'").replace(/&amp;/g,"&")}}function lJ(J,Z){let $=(Q)=>{let G=J.nextTag();if(!G||!G.isClose||G.name!==Q)throw Error(`expected </${Q}>`)};switch(Z){case"true":case"false":throw Error(`<${Z}> must be self-closing`);case"string":case"key":{let Q=J.readText();return $(Z),Q}case"integer":{let Q=J.readText().trim();if($("integer"),/^-?\d+$/.test(Q)&&Math.abs(Number(Q))<=Number.MAX_SAFE_INTEGER)return Number(Q);return BigInt(Q)}case"real":{let Q=Number(J.readText().trim());return $("real"),Q}case"data":{let Q=l0(J.readText());return $("data"),Q}case"date":{let Q=new Date(J.readText().trim());return $("date"),Q}case"array":{let Q=[];while(!0){let G=J.nextTag();if(!G)throw Error("unterminated <array>");if(G.isClose&&G.name==="array")return Q;Q.push(G.selfClose?pJ(G.name):lJ(J,G.name))}}case"dict":{let Q={};while(!0){let G=J.nextTag();if(!G)throw Error("unterminated <dict>");if(G.isClose&&G.name==="dict")return Q;if(G.name!=="key")throw Error(`expected <key>, got <${G.name}>`);let Y=J.readText();$("key");let X=J.nextTag();if(!X)throw Error("unterminated <dict>");Q[Y]=X.selfClose?pJ(X.name):lJ(J,X.name)}}default:throw Error(`unknown plist tag <${Z}>`)}}function pJ(J){if(J==="true")return!0;if(J==="false")return!1;if(J==="string")return"";if(J==="data")return new Uint8Array(0);if(J==="array")return[];if(J==="dict")return{};throw Error(`self-closing <${J}/> not supported`)}function jJ(J){let Z=typeof J==="string"?J:new TextDecoder().decode(J),$=new TZ(Z);while(!0){let G=$.nextTag();if(!G)throw Error("no <plist> root");if(G.name==="plist"&&!G.isClose)break}let Q=$.nextTag();if(!Q)throw Error("empty plist");return Q.selfClose?pJ(Q.name):lJ($,Q.name)}function e(J,Z,$){let Q=0;for(let G=0;G<$;G++)Q=Q*256+J[Z+G];return Q}function p0(J){if(J.length<41)throw Error("bplist too short");let Z=new TextDecoder().decode(J.slice(0,8));if(Z!=="bplist00")throw Error(`bad magic: ${Z}`);let $=J.length-32,Q=J[$+6],G=J[$+7],Y=e(J,$+8,8),X=e(J,$+16,8),W=e(J,$+24,8),z=Array(Y);for(let H=0;H<Y;H++)z[H]=e(J,W+H*Q,Q);function R(H){return e(J,H,G)}function _(H){let A=z[H],E=J[A],M=E>>4,B=E&15;function P(C){if(B!==15)return{len:B,next:C};let j=J[C];if((j&240)!==16)throw Error("expected int marker for length");let U=1<<(j&15);return{len:e(J,C+1,U),next:C+1+U}}switch(M){case 0:if(B===0)return null;if(B===8)return!1;if(B===9)return!0;if(B===15)return null;throw Error(`unknown singleton ${B}`);case 1:{let C=1<<B,j=e(J,A+1,C);if(C===8&&j>Number.MAX_SAFE_INTEGER)return BigInt(j);return j}case 2:{let C=1<<B,j=new DataView(J.buffer,J.byteOffset+A+1,C);return C===4?j.getFloat32(0,!1):j.getFloat64(0,!1)}case 3:{let j=new DataView(J.buffer,J.byteOffset+A+1,8).getFloat64(0,!1);return new Date(Date.UTC(2001,0,1)+j*1000)}case 4:{let{len:C,next:j}=P(A+1);return J.slice(j,j+C)}case 5:{let{len:C,next:j}=P(A+1);return new TextDecoder("ascii").decode(J.slice(j,j+C))}case 6:{let{len:C,next:j}=P(A+1),U=J.slice(j,j+C*2),O=new Uint8Array(U.length);for(let N=0;N<U.length;N+=2)O[N]=U[N+1],O[N+1]=U[N];return new TextDecoder("utf-16le").decode(O)}case 10:{let{len:C,next:j}=P(A+1),U=[];for(let O=0;O<C;O++)U.push(_(R(j+O*G)));return U}case 13:{let{len:C,next:j}=P(A+1),U={};for(let O=0;O<C;O++){let N=_(R(j+O*G)),K=_(R(j+(C+O)*G));if(typeof N!=="string")throw Error(`non-string dict key: ${typeof N}`);U[N]=K}return U}default:throw Error(`unknown bplist marker 0x${E.toString(16)} at ${A}`)}}return _(X)}function c0(J){if(J.length>=8){if(new TextDecoder().decode(J.slice(0,8))==="bplist00")return p0(J)}return jJ(J)}class AJ{chunks=[];size=0;waiters=[];closed=!1;closeErr=null;push(J){if(J.length===0)return;this.chunks.push(J),this.size+=J.length,this.drain()}close(J){this.closed=!0,this.closeErr=J??null;for(let Z of this.waiters)Z.reject(J??Error("stream closed"));this.waiters=[]}read(J){return new Promise((Z,$)=>{if(this.closed&&this.size<J){$(this.closeErr??Error("stream closed"));return}this.waiters.push({n:J,resolve:Z,reject:$}),this.drain()})}drain(){while(this.waiters.length>0&&this.waiters[0].n<=this.size){let J=this.waiters.shift(),Z=new Uint8Array(J.n),$=0;while($<J.n){let Q=this.chunks[0],G=J.n-$;if(Q.length<=G)Z.set(Q,$),$+=Q.length,this.chunks.shift();else Z.set(Q.subarray(0,G),$),this.chunks[0]=Q.subarray(G),$+=G}this.size-=J.n,J.resolve(Z)}}}function mJ(J,Z){let $=(Y)=>{Z.push(new Uint8Array(Y.buffer,Y.byteOffset,Y.byteLength))},Q=()=>Z.close(),G=(Y)=>Z.close(Y);return J.on("data",$),J.on("close",Q),J.on("error",G),()=>{J.off("data",$),J.off("close",Q),J.off("error",G)}}async function aJ(){let J=new AJ;return new Promise((Z,$)=>{let Q=EZ.createConnection({path:d0}),G=(Y)=>{J.close(Y),$(Y)};Q.once("error",G),Q.once("connect",()=>{Q.off("error",G);let Y=mJ(Q,J);Z({socket:Q,stream:J,detach:Y})})})}async function n0(J){let Z=await J.read(4),$=new DataView(Z.buffer,Z.byteOffset,4).getUint32(0,!0);return(await J.read($-4)).slice(12)}function m0(J,Z,$){let Q=16+$.length,G=new Uint8Array(16),Y=new DataView(G.buffer);Y.setUint32(0,Q,!0),Y.setUint32(4,i0,!0),Y.setUint32(8,g0,!0),Y.setUint32(12,Z,!0),J.write(G),J.write($)}async function oJ(J,Z,$,Q){let G=nJ({ClientVersionString:"inspect-webkit-1.0",ProgName:"inspect-webkit",kLibUSBMuxVersion:3,...Q});m0(J,$,G);let Y=await n0(Z);return jJ(Y)}async function BZ(){let{socket:J,stream:Z}=await aJ();try{return(await oJ(J,Z,1,{MessageType:"ListDevices"})).DeviceList??[]}finally{J.end()}}async function qZ(J){let{socket:Z,stream:$}=await aJ();try{let G=(await oJ(Z,$,1,{MessageType:"ReadPairRecord",PairRecordID:J})).PairRecordData;if(!G)throw Error(`no pair record for ${J} — pair the device first (open Finder/iTunes, tap "Trust")`);return jJ(G)}finally{Z.end()}}async function PZ(J,Z){let{socket:$,stream:Q,detach:G}=await aJ(),Y=(Z&255)<<8|Z>>8&255,X=await oJ($,Q,1,{MessageType:"Connect",DeviceID:J,PortNumber:Y});if(X.MessageType!=="Result"||X.Number!==0){$.end();let W=X.Number??"?";throw Error(`Connect to device ${J} port ${Z} failed (code ${W})`)}return{socket:$,stream:Q,detach:G}}async function wZ(){let J=a0("lsof",["-U"],{stdio:["ignore","pipe","ignore"]});if(J.status!==0||!J.stdout)return[];let Z=J.stdout.toString("utf8"),$=new Map;for(let Q of Z.split(`
10
- `)){if(!/com\.apple\.webinspectord_sim\.socket\b/.test(Q))continue;if(!Q.startsWith("webinspec"))continue;let G=Q.split(/\s+/),Y=Number(G[1]),X=G[G.length-1];if(X)$.set(X,Y)}return Array.from($,([Q,G])=>({socketPath:Q,pid:G}))}async function SZ(J){let Z=new AJ;return new Promise(($,Q)=>{let G=xZ.createConnection({path:J}),Y=(X)=>{Z.close(X),Q(X)};G.once("error",Y),G.once("connect",()=>{G.off("error",Y),mJ(G,Z),$({socket:G,stream:Z})})})}async function fJ(J){let Z=await J.read(4),$=new DataView(Z.buffer,Z.byteOffset,4).getUint32(0,!1),Q=await J.read($);return jJ(Q)}function kJ(J,Z){let $=nJ({Label:"inspect-webkit",...Z}),Q=new Uint8Array(4);new DataView(Q.buffer).setUint32(0,$.length,!1),J.write(Q),J.write($)}function vJ(J,Z){if(J.Error)throw Error(`lockdown ${Z} error: ${String(J.Error)}`);if(J.Request!==Z)throw Error(`lockdown expected Request=${Z}, got ${String(J.Request)}`)}function RZ(J,Z,$,Q){return new Promise((G,Y)=>{Z();let X=new AJ,W=yZ.connect({socket:J,cert:Buffer.from($.HostCertificate),key:Buffer.from($.HostPrivateKey),ca:Buffer.from($.RootCertificate),rejectUnauthorized:!1}),z=(R)=>{m(`${Q} tls error:`,R),X.close(R),Y(R)};W.once("error",z),W.once("secureConnect",()=>{m(`${Q} tls handshake complete`),W.off("error",z);let R=mJ(W,X);G({socket:W,stream:X,detach:R})})})}class MJ{socket;stream;pair;udid;deviceID;detach;constructor(J,Z,$,Q,G,Y){this.socket=J,this.stream=Z,this.pair=$,this.udid=Q,this.deviceID=G,this.detach=Y}static async open(J,Z){m("connecting usbmux tunnel to lockdown port",LZ);let{socket:$,stream:Q,detach:G}=await PZ(J.DeviceID,LZ),Y=new MJ($,Q,Z,J.Properties.SerialNumber,J.DeviceID,G);m("sending QueryType"),kJ($,{Request:"QueryType"});let X=await fJ(Q);if(m("QueryType reply:",X),vJ(X,"QueryType"),X.Type!=="com.apple.mobile.lockdown")throw Error(`unexpected lockdown Type: ${String(X.Type)}`);return Y}async startSession(){m("StartSession with HostID",this.pair.HostID),kJ(this.socket,{Request:"StartSession",HostID:this.pair.HostID,SystemBUID:this.pair.SystemBUID});let J=await fJ(this.stream);if(m("StartSession reply:",J),vJ(J,"StartSession"),J.EnableSessionSSL){m("upgrading to TLS");let Z=await RZ(this.socket,this.detach,this.pair,"lockdown");this.socket=Z.socket,this.stream=Z.stream,this.detach=Z.detach,m("TLS upgrade complete")}}async startService(J){m("StartService",J),kJ(this.socket,{Request:"StartService",Service:J});let Z=await fJ(this.stream);return m("StartService reply:",Z),vJ(Z,"StartService"),{port:Z.Port,enableServiceSSL:Boolean(Z.EnableServiceSSL),service:J}}async connectService(J){m("connecting service tunnel to port",J.port,"ssl=",J.enableServiceSSL);let{socket:Z,stream:$,detach:Q}=await PZ(this.deviceID,J.port);if(!J.enableServiceSSL)return{socket:Z,stream:$};let G=await RZ(Z,Q,this.pair,"service");return{socket:G.socket,stream:G.stream}}close(){this.socket.end()}}async function o0(J){let Z=await J.read(4),$=new DataView(Z.buffer,Z.byteOffset,4).getUint32(0,!1),Q=await J.read($);return c0(Q)}function r0(J,Z){let $=nJ(Z),Q=new Uint8Array(4);new DataView(Q.buffer).setUint32(0,$.length,!1),J.write(Q),J.write($)}function t0(){let J=crypto.getRandomValues(new Uint8Array(16));J[6]=J[6]&15|64,J[8]=J[8]&63|128;let Z=Array.from(J,($)=>$.toString(16).padStart(2,"0")).join("");return`${Z.slice(0,8)}-${Z.slice(8,12)}-${Z.slice(12,16)}-${Z.slice(16,20)}-${Z.slice(20)}`}class PJ{socket;stream;connectionId=t0();subscribers=new Set;reading;constructor(J,Z){this.socket=J,this.stream=Z,this.reading=(async()=>{try{while(!Z.closed){let $=await o0(Z);for(let Q of[...this.subscribers])try{Q($)}catch{}}}catch{}})()}subscribe(J){return this.subscribers.add(J),()=>this.subscribers.delete(J)}waitFor(J,Z=5000){return new Promise(($,Q)=>{let G=setTimeout(()=>{Y(),Q(Error(`timeout waiting for ${J} after ${Z}ms`))},Z),Y=this.subscribe((X)=>{if(X.__selector===J)clearTimeout(G),Y(),$(X)})})}send(J,Z){r0(this.socket,{__selector:J,__argument:{WIRConnectionIdentifierKey:this.connectionId,...Z}})}async reportIdentifier(){this.send("_rpc_reportIdentifier:",{})}async listApplications(){this.send("_rpc_getConnectedApplications:",{});let J=await this.waitFor("_rpc_reportConnectedApplicationList:",3000).catch(()=>null);if(!J)return[];let $=J.__argument.WIRApplicationDictionaryKey??{},Q=[];for(let[G,Y]of Object.entries($)){let X=Y;Q.push({appId:G,bundleId:X.WIRApplicationBundleIdentifierKey,name:X.WIRApplicationNameKey,isProxy:Boolean(X.WIRIsApplicationProxyKey),isActive:Boolean(X.WIRIsApplicationActiveKey),hostAppId:X.WIRHostApplicationIdentifierKey})}return Q}async getListing(J){this.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:J});let Z=await this.waitFor("_rpc_applicationSentListing:",3000).catch(()=>null);if(!Z)return[];let Q=Z.__argument.WIRListingKey??{},G=[];for(let Y of Object.values(Q)){let X=Y;G.push({pageId:Number(X.WIRPageIdentifierKey??0),title:X.WIRTitleKey??"",url:X.WIRURLKey??"",type:X.WIRTypeKey??""})}return G}get connection(){return this.connectionId}forwardSocketSetup(J,Z,$){this.send("_rpc_forwardSocketSetup:",{WIRApplicationIdentifierKey:J,WIRPageIdentifierKey:Z,WIRSenderKey:$,WIRAutomaticallyPause:!1})}forwardSocketData(J,Z,$,Q){this.send("_rpc_forwardSocketData:",{WIRApplicationIdentifierKey:J,WIRPageIdentifierKey:Z,WIRSenderKey:$,WIRSocketDataKey:Q})}forwardDidClose(J,Z,$){this.send("_rpc_forwardDidClose:",{WIRApplicationIdentifierKey:J,WIRPageIdentifierKey:Z,WIRSenderKey:$})}onMessage(J){return this.subscribe(J)}close(){this.socket.end()}}class rJ{ws;wi;appId;pageId;senderKey;filters=new Map;toolRequestMap=new Map;adapterRequestMap=new Map;requestId=0;innerTargetId=null;wrappedAckIds=new Set;outgoingQueue=[];sawAnyTargetCreated=!1;constructor(J,Z,$,Q,G){this.ws=J,this.wi=Z,this.appId=$,this.pageId=Q,this.senderKey=G}addMessageFilter(J,Z){let $=this.filters.get(J);if(!$)this.filters.set(J,$=[]);$.push(Z)}callTarget(J,Z={}){return new Promise(($,Q)=>{let G=--this.requestId;this.adapterRequestMap.set(G,{resolve:$,reject:Q}),this.sendRaw(JSON.stringify({id:G,method:J,params:Z}))})}fireEventToTools(J,Z){this.sendToTools(JSON.stringify({method:J,params:Z}))}fireResultToTools(J,Z){this.sendToTools(JSON.stringify({id:J,result:Z}))}fireErrorToTools(J,Z){this.sendToTools(JSON.stringify({id:J,error:{code:Z.code??-32000,message:Z.message}}))}replyEmpty(J){if(typeof J.id==="number")this.fireResultToTools(J.id,{});return Promise.resolve(null)}async onMessageFromTools(J){let Z;try{Z=JSON.parse(J)}catch{return}if(typeof Z.method==="string"&&typeof Z.id==="number")this.toolRequestMap.set(Z.id,Z.method);let $=`tools::${Z.method}`,Q=this.filters.get($),G=Z;if(Q)for(let Y of Q){if(!G)break;G=await Y(G)}if(G)this.sendRaw(JSON.stringify(G))}async onMessageFromTarget(J){let Z;try{Z=JSON.parse(J)}catch{return}if(Z.method==="Target.targetCreated"){this.sawAnyTargetCreated=!0;let Y=Z.params?.targetInfo;if(Y?.type==="page"&&!this.innerTargetId)this.innerTargetId=Y.targetId,this.flushQueue();return}if(Z.method==="Target.didCommitProvisionalTarget"){let Y=Z.params?.newTargetId;if(typeof Y==="string")this.innerTargetId=Y;return}if(Z.method==="Target.targetDestroyed")return;if(Z.method==="Target.dispatchMessageFromTarget"){let Y=Z.params?.message;if(typeof Y==="string")return this.onMessageFromTarget(Y);return}if(typeof Z.id==="number"&&this.wrappedAckIds.has(Z.id)){this.wrappedAckIds.delete(Z.id);return}if(typeof Z.id==="number"){let Y=this.adapterRequestMap.get(Z.id);if(Y){if(this.adapterRequestMap.delete(Z.id),"error"in Z&&Z.error)Y.reject(Z.error);else Y.resolve(Z.result??{});return}let X=this.toolRequestMap.get(Z.id);if(X){this.toolRequestMap.delete(Z.id);let W=`target::${X}`;if("error"in Z&&this.filters.has("target::error"))W="target::error";let z=this.filters.get(W);if(!z)return this.sendToTools(J);let R=Z;for(let _ of z){if(!R)break;R=await _(R)}if(R)this.sendToTools(JSON.stringify(R));return}return this.sendToTools(J)}let $=`target::${Z.method}`,Q=this.filters.get($);if(!Q)return this.sendToTools(J);let G=Z;for(let Y of Q){if(!G)break;G=await Y(G)}if(G)this.sendToTools(JSON.stringify(G))}sendRaw(J){let Z=null;try{Z=JSON.parse(J)}catch{}let $=Z&&typeof Z.method==="string"&&Z.method.startsWith("Target.");if(this.innerTargetId&&Z&&!$){if(typeof Z.id==="number")this.wrappedAckIds.add(Z.id);let Q={id:Z.id,method:"Target.sendMessageToTarget",params:{id:Z.id,message:J,targetId:this.innerTargetId}};this.writeFrame(JSON.stringify(Q));return}if(!this.innerTargetId&&Z&&!$){if(this.outgoingQueue.push(J),this.outgoingQueue.length===1)setTimeout(()=>{if(!this.innerTargetId&&!this.sawAnyTargetCreated&&this.outgoingQueue.length>0){let Q=this.outgoingQueue;this.outgoingQueue=[];for(let G of Q)this.writeFrame(G)}},250);return}this.writeFrame(J)}flushQueue(){if(this.outgoingQueue.length===0)return;let J=this.outgoingQueue;this.outgoingQueue=[];for(let Z of J)this.sendRaw(Z)}writeFrame(J){this.wi.forwardSocketData(this.appId,this.pageId,this.senderKey,new TextEncoder().encode(J))}sendToTools(J){if(this.ws.readyState===1)this.ws.send(J)}}function e0(){return{lastScriptEval:{value:""},pageExecCtx:{id:0,isPage:!1},lastConsoleApiCalled:{value:null}}}function I(J,Z,$){return J.fireResultToTools(Z.id,$),Promise.resolve(null)}function J2(J,Z){J.addMessageFilter("tools::Debugger.canSetScriptSource",($)=>I(J,$,{result:!1})),J.addMessageFilter("tools::Debugger.setBlackboxPatterns",($)=>I(J,$,{})),J.addMessageFilter("tools::Debugger.setAsyncCallStackDepth",($)=>I(J,$,{})),J.addMessageFilter("target::Debugger.enable",($)=>{return J.callTarget("Debugger.setBreakpointsActive",{active:!0}).catch(()=>{}),J.callTarget("Debugger.setPauseOnDebuggerStatements",{enabled:!0}).catch(()=>{}),Promise.resolve($)}),J.addMessageFilter("target::Debugger.scriptParsed",($)=>{if($.params?.scriptId)Z.lastScriptEval.value=String($.params.scriptId);return Promise.resolve($)}),J.addMessageFilter("tools::Debugger.setBreakpoint",($)=>{let Q=$.params??{};return $.params={location:Q.location,options:Q.condition?{condition:Q.condition}:{}},Promise.resolve($)}),J.addMessageFilter("tools::Debugger.setBreakpointByUrl",($)=>{let Q=$.params??{};return $.params={lineNumber:Q.lineNumber,url:Q.url,urlRegex:Q.urlRegex,columnNumber:Q.columnNumber,options:Q.condition?{condition:Q.condition}:{}},Promise.resolve($)});for(let $ of["removeBreakpoint","continueToLocation","stepInto","stepOver","stepOut","resume","pause","getScriptSource","evaluateOnCallFrame"])J.addMessageFilter(`tools::Debugger.${$}`,(Q)=>Promise.resolve(Q));J.addMessageFilter("target::Debugger.paused",($)=>{let Q=$.params?.callFrames;if(Array.isArray(Q))for(let G of Q){if(G.functionName==null&&typeof G.name==="string")G.functionName=G.name;if(!G.location&&G.sourceCodeLocation)G.location={scriptId:String(G.sourceCodeLocation.scriptId??""),lineNumber:G.sourceCodeLocation.lineNumber??0,columnNumber:G.sourceCodeLocation.columnNumber??0};if(Array.isArray(G.scopeChain)){for(let Y of G.scopeChain)if(!Y.object&&Y.value)Y.object=Y.value}}return Promise.resolve($)}),J.addMessageFilter("tools::Debugger.setBlackboxedRanges",($)=>I(J,$,{})),J.addMessageFilter("tools::Debugger.setSkipAllPauses",($)=>I(J,$,{})),J.addMessageFilter("tools::Debugger.setPauseOnExceptions",($)=>{return Promise.resolve($)})}function Z2(J,Z){J.addMessageFilter("target::Runtime.executionContextCreated",($)=>{let Q=$.params?.context;if(Q){if(!Q.origin)Q.origin=Q.name??"";let G=Number(Q.id),Y=!!(Q.isPageContext||Q.type==="normal");if(Number.isFinite(G)&&G>0){if(!Z.pageExecCtx.id||Y&&!Z.pageExecCtx.isPage)Z.pageExecCtx.id=G,Z.pageExecCtx.isPage=Y}if(Q.frameId)Q.auxData={frameId:Q.frameId,isDefault:!0},delete Q.frameId}return Promise.resolve($)}),J.addMessageFilter("tools::Runtime.evaluate",($)=>{let Q=$.params;if(!Q)return Promise.resolve($);if("silent"in Q)Q.doNotPauseOnExceptionsAndMuteConsole=!!Q.silent,delete Q.silent;if("userGesture"in Q)Q.emulateUserGesture=!!Q.userGesture,delete Q.userGesture;return Promise.resolve($)}),J.addMessageFilter("target::Runtime.evaluate",($)=>{let Q=$.result;if(Q?.wasThrown){if(Q.result)Q.result.subtype="error";Q.exceptionDetails={exceptionId:0,text:Q.result?.description??"Uncaught",url:"",scriptId:Z.lastScriptEval.value,lineNumber:0,columnNumber:0,stackTrace:{callFrames:[{functionName:"",scriptId:Z.lastScriptEval.value,url:"",lineNumber:0,columnNumber:0}]},exception:Q.result}}return Promise.resolve($)}),J.addMessageFilter("target::Runtime.getProperties",($)=>{let Q=$.result;if(!Q)return Promise.resolve($);let G=Array.isArray(Q.result)?Q.result:Array.isArray(Q.properties)?Q.properties:null;if(G)Q.result=G.filter((Y)=>Y.isOwn||Y.nativeGetter).map((Y)=>({...Y,isOwn:!0})),delete Q.properties;if(Array.isArray(Q.internalProperties))Q.internalProperties=Q.internalProperties.map((Y)=>({name:Y.name,value:Y.value}));return Promise.resolve($)}),J.addMessageFilter("tools::Runtime.compileScript",($)=>I(J,$,{scriptId:null,exceptionDetails:null})),J.addMessageFilter("tools::Runtime.globalLexicalScopeNames",($)=>I(J,$,{names:[]})),J.addMessageFilter("tools::Runtime.terminateExecution",($)=>I(J,$,{})),J.addMessageFilter("tools::Runtime.getIsolateId",($)=>I(J,$,{id:"inspect-webkit"})),J.addMessageFilter("tools::Runtime.getHeapUsage",($)=>I(J,$,{usedSize:0,totalSize:0})),J.addMessageFilter("tools::Runtime.discardConsoleEntries",($)=>{return $.method="Console.clearMessages",Promise.resolve($)}),J.addMessageFilter("tools::Runtime.runIfWaitingForDebugger",($)=>I(J,$,{})),J.addMessageFilter("tools::Runtime.setAsyncCallStackDepth",($)=>I(J,$,{})),J.addMessageFilter("tools::Runtime.releaseObject",($)=>Promise.resolve($)),J.addMessageFilter("tools::Runtime.releaseObjectGroup",($)=>Promise.resolve($)),J.addMessageFilter("tools::Runtime.callFunctionOn",($)=>Promise.resolve($)),J.addMessageFilter("tools::Runtime.queryObjects",($)=>Promise.resolve($)),J.addMessageFilter("target::Debugger.globalObjectCleared",($)=>{return J.fireEventToTools("Runtime.executionContextsCleared",{}),Promise.resolve(null)})}function $2(J,Z){J.addMessageFilter("tools::Log.startViolationsReport",($)=>I(J,$,{})),J.addMessageFilter("tools::Log.stopViolationsReport",($)=>I(J,$,{})),J.addMessageFilter("tools::Log.clear",($)=>{return $.method="Console.clearMessages",Promise.resolve($)}),J.addMessageFilter("tools::Log.disable",($)=>{return $.method="Console.disable",Promise.resolve($)}),J.addMessageFilter("tools::Log.enable",($)=>{return $.method="Console.enable",Promise.resolve($)}),J.addMessageFilter("tools::Runtime.enable",($)=>{return J.callTarget("Console.enable",{}).catch(()=>{}),Promise.resolve($)}),J.addMessageFilter("target::Console.messageAdded",($)=>{let Q=$.params?.message??{},Y=(Array.isArray(Q.stackTrace)?Q.stackTrace:Array.isArray(Q.stackTrace?.callFrames)?Q.stackTrace.callFrames:[]).map((z)=>({functionName:z.functionName??"",scriptId:z.scriptId??"",url:z.url??"",lineNumber:Number(z.lineNumber??0),columnNumber:Number(z.columnNumber??0)})),X=Y.length?{callFrames:Y}:void 0,W=Date.now();if(Q.source==="console-api"){let z=Q.type==="log"?Q.level??"log":Q.type??"log",R=Q2(z),_=Array.isArray(Q.parameters)&&Q.parameters.length>0?Q.parameters:[{type:"string",value:String(Q.text??"")}],H={type:R,args:_,executionContextId:Z.pageExecCtx.id||1,timestamp:W,stackTrace:X};return Z.lastConsoleApiCalled.value=H,J.fireEventToTools("Runtime.consoleAPICalled",H),Promise.resolve(null)}if(Q.source==="javascript"&&Q.level==="error")return J.fireEventToTools("Runtime.exceptionThrown",{timestamp:W,exceptionDetails:{exceptionId:0,text:String(Q.text??"Uncaught"),lineNumber:Number(Q.line??0),columnNumber:Number(Q.column??0),scriptId:Z.lastScriptEval.value,url:Q.url,stackTrace:X,exception:{type:"string",value:String(Q.text??"")}}}),Promise.resolve(null);return J.fireEventToTools("Log.entryAdded",{entry:{source:Q.source??"other",level:Y2(Q.level??Q.type??"log"),text:String(Q.text??""),timestamp:W,url:Q.url,lineNumber:Q.line,stackTrace:X,networkRequestId:Q.networkRequestId}}),Promise.resolve(null)}),J.addMessageFilter("target::Console.messagesCleared",()=>{return J.fireEventToTools("Log.entriesCleared",{}),J.fireEventToTools("Runtime.consoleAPICalled",{type:"clear",args:[],executionContextId:Z.pageExecCtx.id||1,timestamp:Date.now()}),Z.lastConsoleApiCalled.value=null,Promise.resolve(null)}),J.addMessageFilter("target::Console.messageRepeatCountUpdated",()=>{let $=Z.lastConsoleApiCalled.value;if($)J.fireEventToTools("Runtime.consoleAPICalled",{...$,timestamp:Date.now()});return Promise.resolve(null)}),J.addMessageFilter("target::Console.heapSnapshot",()=>Promise.resolve(null))}function Q2(J){switch(J){case"warn":case"warning":return"warning";case"log":case"info":case"error":case"debug":case"dir":case"dirxml":case"table":case"trace":case"clear":case"assert":case"profile":case"profileEnd":case"count":case"timeEnd":case"startGroup":case"startGroupCollapsed":case"endGroup":return J;default:return"log"}}function Y2(J){switch(J){case"log":case"debug":return"verbose";case"info":return"info";case"warn":case"warning":return"warning";case"error":return"error";default:return"info"}}function G2(J){let Z=new Set;J.addMessageFilter("tools::DOM.enable",($)=>I(J,$,{})),J.addMessageFilter("tools::DOM.setInspectMode",($)=>{if($.method="DOM.setInspectModeEnabled",$.params)$.params.enabled=$.params.mode==="searchForNode",delete $.params.mode,delete $.params.highlightConfig;return Promise.resolve($)}),J.addMessageFilter("tools::DOM.setInspectedNode",($)=>{return $.method="Console.addInspectedNode",Promise.resolve($)}),J.addMessageFilter("tools::DOM.performSearch",($)=>{if($.params)$.params={query:$.params.query,caseSensitive:!!$.params.caseSensitive};return Promise.resolve($)}),J.addMessageFilter("target::DOM.performSearch",($)=>{let Q=$.result?.searchId;if(typeof Q==="string")Z.add(Q);return Promise.resolve($)}),J.addMessageFilter("tools::DOM.discardSearchResults",($)=>{let Q=$.params?.searchId;if(typeof Q==="string")Z.delete(Q);return Promise.resolve($)}),J.addMessageFilter("tools::DOM.pushNodesByBackendIdsToFrontend",async($)=>{let Q=$.params?.backendNodeIds??[],G=await Promise.all(Q.map((Y)=>J.callTarget("DOM.pushNodeByBackendIdToFrontend",{backendNodeId:Y}).then((X)=>X.nodeId).catch(()=>Y)));return J.fireResultToTools($.id,{nodeIds:G}),null}),J.addMessageFilter("tools::DOM.getBoxModel",($)=>{return J.callTarget("DOM.highlightNode",{highlightConfig:{showInfo:!0,contentColor:{r:111,g:168,b:220,a:0.66},paddingColor:{r:147,g:196,b:125,a:0.55},borderColor:{r:255,g:229,b:153,a:0.66},marginColor:{r:246,g:178,b:107,a:0.66}},nodeId:$.params?.nodeId}).catch(()=>{}),Promise.resolve(null)}),J.addMessageFilter("tools::DOM.getNodeForLocation",async($)=>{try{let G=(await J.callTarget("Runtime.evaluate",{expression:`document.elementFromPoint(${$.params?.x},${$.params?.y})`})).result?.objectId;if(!G)return J.fireResultToTools($.id,{nodeId:0}),null;let Y=await J.callTarget("DOM.requestNode",{objectId:G});J.fireResultToTools($.id,{nodeId:Y.nodeId,backendNodeId:Y.nodeId})}catch(Q){J.fireErrorToTools($.id,{message:Q?.message??String(Q)})}return null}),J.addMessageFilter("tools::DOM.resolveNode",($)=>{if($.params&&$.params.objectGroup===void 0)delete $.params.objectGroup;return Promise.resolve($)})}function X2(J){J.addMessageFilter("tools::DOMDebugger.getEventListeners",async(Z)=>{try{let $=await J.callTarget("DOM.requestNode",{objectId:Z.params?.objectId}),G=((await J.callTarget("DOM.getEventListenersForNode",{nodeId:$.nodeId,objectGroup:"event-listeners-panel"})).listeners??[]).map((Y)=>({type:Y.type,useCapture:!!Y.useCapture,passive:!!Y.passive,once:!!Y.once,location:Y.location,handler:Y.handler}));J.fireResultToTools(Z.id,{listeners:G})}catch($){J.fireErrorToTools(Z.id,{message:$?.message??String($)})}return null}),J.addMessageFilter("tools::DOMDebugger.setXHRBreakpoint",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::DOMDebugger.removeXHRBreakpoint",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::DOMDebugger.setEventListenerBreakpoint",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::DOMDebugger.removeEventListenerBreakpoint",(Z)=>I(J,Z,{}))}function V2(J,Z){J.addMessageFilter("tools::Page.setOverlayMessage",(Y)=>{return Y.method="Debugger.setOverlayMessage",Promise.resolve(Y)}),J.addMessageFilter("tools::Page.configureOverlay",(Y)=>{return Y.method="Debugger.setOverlayMessage",Promise.resolve(Y)}),J.addMessageFilter("tools::Page.getNavigationHistory",async(Y)=>{try{let X=await J.callTarget("Runtime.evaluate",{expression:"window.location.href"}),W=await J.callTarget("Runtime.evaluate",{expression:"document.title"});J.fireResultToTools(Y.id,{currentIndex:0,entries:[{id:0,url:X.result?.value??"",userTypedURL:X.result?.value??"",title:W.result?.value??"",transitionType:"link"}]})}catch(X){J.fireErrorToTools(Y.id,{message:X?.message??String(X)})}return null}),J.addMessageFilter("target::Page.frameNavigated",(Y)=>{return fZ(Y.params?.frame),Promise.resolve(Y)}),J.addMessageFilter("target::Page.getResourceTree",(Y)=>{return cJ(Y.result?.frameTree),Promise.resolve(Y)}),J.addMessageFilter("tools::Page.getFrameTree",async(Y)=>{if(typeof Y.id!=="number")return null;try{let X=await J.callTarget("Page.getResourceTree",{}),W=kZ(X?.frameTree);cJ(W),J.fireResultToTools(Y.id,{frameTree:W})}catch(X){J.fireErrorToTools(Y.id,{message:X?.message??String(X)})}return null}),J.addMessageFilter("tools::Page.createIsolatedWorld",(Y)=>{if(typeof Y.id!=="number")return Promise.resolve(null);return I(J,Y,{executionContextId:Z.pageExecCtx.id||1})});let $=1;J.addMessageFilter("tools::Page.addScriptToEvaluateOnNewDocument",(Y)=>I(J,Y,{identifier:`pptr-${$++}`})),J.addMessageFilter("tools::WebMCP.enable",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::WebMCP.disable",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Page.captureScreenshot",(Y)=>{return J.fireErrorToTools(Y.id,{message:"Page.captureScreenshot not supported by Safari"}),Promise.resolve(null)}),J.addMessageFilter("tools::Page.startScreencast",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Page.stopScreencast",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Page.screencastFrameAck",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Page.setLifecycleEventsEnabled",(Y)=>I(J,Y,{}));let Q="",G="0.1";J.addMessageFilter("target::Page.frameNavigated",(Y)=>{let X=Y.params?.frame;if(X)G=X.id??G,Q=X.loaderId??Q,J.fireEventToTools("Page.frameStartedLoading",{frameId:G}),J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:Q,name:"init",timestamp:0}),J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:Q,name:"commit",timestamp:0});return Promise.resolve(Y)}),J.addMessageFilter("target::Page.domContentEventFired",(Y)=>{return J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:Q,name:"DOMContentLoaded",timestamp:Y.params?.timestamp??0}),Promise.resolve(Y)}),J.addMessageFilter("target::Page.loadEventFired",(Y)=>{return J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:Q,name:"load",timestamp:Y.params?.timestamp??0}),J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:Q,name:"networkAlmostIdle",timestamp:Y.params?.timestamp??0}),J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:Q,name:"networkIdle",timestamp:Y.params?.timestamp??0}),J.fireEventToTools("Page.frameStoppedLoading",{frameId:G}),Promise.resolve(Y)})}function fZ(J){if(!J)return;if(!J.securityOrigin)try{J.securityOrigin=new URL(J.url??"").origin}catch{J.securityOrigin="://"}if(!J.mimeType)J.mimeType="text/html"}function cJ(J){if(!J)return;if(fZ(J.frame),Array.isArray(J.childFrames))J.childFrames.forEach(cJ)}function kZ(J){if(!J)return J;let Z={frame:J.frame};if(Array.isArray(J.childFrames))Z.childFrames=J.childFrames.map(kZ);return Z}function z2(J){J.addMessageFilter("tools::Overlay.enable",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Overlay.disable",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Overlay.highlightNode",(Z)=>{let $=Z.params??{};return Z.method="DOM.highlightNode",Z.params={highlightConfig:$.highlightConfig,nodeId:$.nodeId,objectId:$.objectId},Promise.resolve(Z)}),J.addMessageFilter("tools::Overlay.highlightFrame",(Z)=>{return Z.method="DOM.highlightFrame",Promise.resolve(Z)}),J.addMessageFilter("tools::Overlay.highlightQuad",(Z)=>{return Z.method="DOM.highlightQuad",Promise.resolve(Z)}),J.addMessageFilter("tools::Overlay.highlightRect",(Z)=>{return Z.method="DOM.highlightRect",Promise.resolve(Z)}),J.addMessageFilter("tools::Overlay.hideHighlight",(Z)=>{return Z.method="DOM.hideHighlight",Promise.resolve(Z)}),J.addMessageFilter("tools::Overlay.setShowPaintRects",(Z)=>{return Z.method="Page.setShowPaintRects",Promise.resolve(Z)}),J.addMessageFilter("tools::Overlay.setInspectMode",(Z)=>{let $=Z.params??{};return Z.method="DOM.setInspectModeEnabled",Z.params={enabled:typeof $.mode==="string"&&$.mode!=="none",highlightConfig:$.highlightConfig},Promise.resolve(Z)})}function W2(J){J.addMessageFilter("tools::Emulation.canEmulate",(Z)=>I(J,Z,{result:!0})),J.addMessageFilter("tools::Emulation.setTouchEmulationEnabled",(Z)=>{return Z.method="Page.setTouchEmulationEnabled",Promise.resolve(Z)}),J.addMessageFilter("tools::Emulation.setScriptExecutionDisabled",(Z)=>{return Z.method="Page.setScriptExecutionDisabled",Promise.resolve(Z)}),J.addMessageFilter("tools::Emulation.setEmulatedMedia",(Z)=>{return Z.method="Page.setEmulatedMedia",Promise.resolve(Z)}),J.addMessageFilter("tools::Rendering.setShowPaintRects",(Z)=>{return Z.method="Page.setShowPaintRects",Promise.resolve(Z)}),J.addMessageFilter("tools::Emulation.setDeviceMetricsOverride",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Emulation.clearDeviceMetricsOverride",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Emulation.setUserAgentOverride",(Z)=>{let $=Z.params?.userAgent??"";return Z.method="Page.overrideUserAgent",Z.params={value:$},Promise.resolve(Z)}),J.addMessageFilter("tools::Emulation.setFocusEmulationEnabled",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Emulation.setDefaultBackgroundColorOverride",(Z)=>I(J,Z,{}))}function bJ(J){switch(J){case"Document":case"Image":case"Font":case"Script":case"XHR":case"Fetch":case"Ping":case"WebSocket":return J;case"StyleSheet":return"Stylesheet";default:return"Other"}}function P2(J){if(!J)return J;return{...U2,...J,hasPostData:J.postData!=null}}function L2(J){if(!J)return J;let Z=0,$=J.headers??{},Q=$["Content-Length"]??$["content-length"];if(Q!=null)Z=Number(Q)||0;return{...N2,...J,fromDiskCache:J.source==="disk-cache",fromServiceWorker:J.source==="service-worker",encodedDataLength:Z}}function R2(J,Z){if(!J)return;for(let[$,Q]of Object.entries(Z))if($ in J&&!(Q in J))J[Q]=J[$],delete J[$]}function _2(J){let Z=typeof J.size==="number"?J.size:(J.name?.length??0)+(J.value?.length??0);return{name:J.name,value:J.value,domain:J.domain,path:J.path,expires:J.expires??-1,size:Z,httpOnly:!!J.httpOnly,secure:!!J.secure,session:!!J.session,...J.sameSite?{sameSite:J.sameSite}:{}}}function C2(J,Z){let $=new Map,Q=1024;for(let[Y,X]of Object.entries(H2))J.addMessageFilter(`tools::${Y}`,(W)=>{return W.method=X,Promise.resolve(W)});J.addMessageFilter("tools::Network.setCacheDisabled",(Y)=>{if(Y.params&&"cacheDisabled"in Y.params)Y.params={disabled:!!Y.params.cacheDisabled};return Promise.resolve(Y)});let G=async(Y)=>{try{let X=await J.callTarget("Page.getCookies",{}),W=Array.isArray(X?.cookies)?X.cookies.map(_2):[];J.fireResultToTools(Y.id,{cookies:W})}catch(X){J.fireErrorToTools(Y.id,{message:X?.message??String(X)})}return null};J.addMessageFilter("tools::Network.getCookies",G),J.addMessageFilter("tools::Network.getAllCookies",G),J.addMessageFilter("tools::Network.setCookie",(Y)=>{let X=Y.params??{};return Y.method="Page.setCookie",Y.params={cookie:{name:X.name,value:X.value,domain:X.domain??"",path:X.path??"/",expires:X.expires??-1,session:!1,httpOnly:!!X.httpOnly,secure:!!X.secure,sameSite:X.sameSite??"None"}},Promise.resolve(Y)}),J.addMessageFilter("tools::Network.setCookies",async(Y)=>{let X=Array.isArray(Y.params?.cookies)?Y.params.cookies:[];try{await Promise.all(X.map((W)=>J.callTarget("Page.setCookie",{cookie:W}))),J.fireResultToTools(Y.id,{})}catch(W){J.fireErrorToTools(Y.id,{message:W?.message??String(W)})}return null}),J.addMessageFilter("tools::Network.deleteCookies",(Y)=>{let X=Y.params??{},W=X.url??`https://${(X.domain??"").replace(/^\./,"")}${X.path??"/"}`;return Y.method="Page.deleteCookie",Y.params={cookieName:X.name,url:W},Promise.resolve(Y)}),J.addMessageFilter("tools::Network.deleteCookie",(Y)=>{return Y.method="Page.deleteCookie",Promise.resolve(Y)}),J.addMessageFilter("tools::Network.clearBrowserCookies",async(Y)=>{try{let X=await J.callTarget("Page.getCookies",{}),W=Array.isArray(X?.cookies)?X.cookies:[];await Promise.all(W.map((z)=>J.callTarget("Page.deleteCookie",{cookieName:z.name,url:`${z.secure?"https":"http"}://${(z.domain??"").replace(/^\./,"")}${z.path??"/"}`}).catch(()=>{}))),J.fireResultToTools(Y.id,{})}catch(X){J.fireErrorToTools(Y.id,{message:X?.message??String(X)})}return null}),J.addMessageFilter("tools::Network.canEmulateNetworkConditions",(Y)=>I(J,Y,{result:!1})),J.addMessageFilter("tools::Network.setExtraHTTPHeaders",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Network.setBlockedURLs",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Network.emulateNetworkConditions",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Network.setMonitoringXHREnabled",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Network.getResponseBody",async(Y)=>{let X=Y.params?.requestId,W=typeof X==="string"?$.get(X):void 0;if(!W)return J.fireErrorToTools(Y.id,{message:"Network.getResponseBody: requestId not tracked (only requests observed via requestWillBeSent are recoverable)"}),null;try{let z=await J.callTarget("Network.loadResource",{frameId:W.frameId,url:W.url}),R=String(z?.content??""),_=String(z?.mimeType??""),H=/^(text\/|application\/(json|xml|javascript|ecmascript|x-www-form-urlencoded))/.test(_),A=H?R:Buffer.from(R,"binary").toString("base64");J.fireResultToTools(Y.id,{body:A,base64Encoded:!H})}catch(z){J.fireErrorToTools(Y.id,{message:`Network.getResponseBody fallback (loadResource) failed: ${z?.message??String(z)}`})}return null});for(let[Y,X]of Object.entries(K2))J.addMessageFilter(`target::${Y}`,(W)=>{return R2(W.params,X),Promise.resolve(W)});J.addMessageFilter("target::Network.requestWillBeSent",(Y)=>{let X=Y.params;if(X){if(Object.assign(X,{...F2,...X}),X.request=P2(X.request),X.type=bJ(X.type),typeof X.requestId==="string"&&typeof X.request?.url==="string"){if($.size>=1024){let W=$.keys().next().value;if(W!==void 0)$.delete(W)}$.set(X.requestId,{url:X.request.url,frameId:X.frameId})}}return Promise.resolve(Y)}),J.addMessageFilter("target::Network.responseReceived",(Y)=>{let X=Y.params;if(X)Object.assign(X,{...D2,...X}),X.response=L2(X.response),X.type=bJ(X.type);return Promise.resolve(Y)}),J.addMessageFilter("target::Network.loadingFinished",(Y)=>{let X=Y.params;if(X){let W=X.metrics?.responseBodyBytesReceived;if(typeof W==="number"&&X.encodedDataLength==null)X.encodedDataLength=W;Object.assign(X,{...O2,...X})}return Promise.resolve(Y)}),J.addMessageFilter("target::Network.loadingFailed",(Y)=>{let X=Y.params;if(X){if(X.type=bJ(X.type),!("canceled"in X))X.canceled=!1}return Promise.resolve(Y)}),J.addMessageFilter("target::Network.requestServedFromMemoryCache",(Y)=>{if(Y.method="Network.requestServedFromCache",Y.params)Y.params={requestId:Y.params.requestId};return Promise.resolve(Y)}),J.addMessageFilter("tools::Network.loadNetworkResource",async(Y)=>{let X=Y.params??{};if(!Z)return J.fireResultToTools(Y.id,{resource:{success:!1,netError:1,netErrorName:"ERR_NOT_IMPLEMENTED"}}),null;try{let W=await J.callTarget("Network.loadResource",{frameId:X.frameId,url:X.url}),z=!!W?.content&&(W?.status??0)>=200&&(W?.status??0)<300,R;if(z)R=`network-resource:${X.frameId??""}:${X.url}`,Z.set(R,String(W.content));J.fireResultToTools(Y.id,{resource:{success:z,stream:R,httpStatusCode:W?.status,headers:W?.headers,mimeType:W?.mimeType}})}catch(W){J.fireResultToTools(Y.id,{resource:{success:!1,netError:2,netErrorName:W?.message??"ERR_FAILED"}})}return null})}function j2(J){for(let Z of["Target.setAutoAttach","Target.setDiscoverTargets","Target.setRemoteLocations"])J.addMessageFilter(`tools::${Z}`,($)=>I(J,$,{}))}function A2(J){J.addMessageFilter("target::Inspector.inspect",(Z)=>{if(Z.method="DOM.inspectNodeRequested",Z.params)Z.params.backendNodeId=Z.params.object?.objectId,delete Z.params.object,delete Z.params.hints;return Promise.resolve(Z)})}function E2(J){if(!J)return J;let Z=J.origin==="inspector";return{styleSheetId:J.styleSheetId,frameId:J.frameId,sourceURL:J.sourceURL??"",origin:J.origin==="author"?"regular":J.origin,title:J.title??"",disabled:!!J.disabled,isInline:!!J.isInline,startLine:J.startLine??0,startColumn:J.startColumn??0,isMutable:Z,isConstructed:Z,length:J.length??0,endLine:J.endLine??0,endColumn:J.endColumn??0,hasSourceURL:!!J.sourceURL}}function iJ(J){if(!J)return J;let Z={origin:J.origin==="author"?"regular":J.origin,style:JJ(J.style),selectorList:q2(J.selectorList)};if(J.ruleId?.styleSheetId)Z.styleSheetId=J.ruleId.styleSheetId;if(Array.isArray(J.groupings))Z.media=J.groupings.map(($)=>({text:$.text,sourceURL:$.sourceURL,source:B2[$.type]}));return Z}function S2(J){let Z={lastNodeId:0},$=new Map;async function Q(G,Y){let X=$.get(G);if(!X)try{if(X=(await J.callTarget("CSS.getStyleSheet",{styleSheetId:G}))?.styleSheet,X)$.set(G,X)}catch{}let W=X?.rules??[];for(let z=0;z<W.length;z++)if(M2(W[z]?.style?.range,Y))return{styleSheetId:G,ordinal:z};return{styleSheetId:G,ordinal:0}}J.addMessageFilter("tools::CSS.enable",(G)=>{return J.fireResultToTools(G.id,{}),Promise.resolve(null)}),J.addMessageFilter("target::CSS.styleSheetAdded",(G)=>{if(G.params?.header)G.params.header=E2(G.params.header);return Promise.resolve(G)}),J.addMessageFilter("target::CSS.getInlineStylesForNode",(G)=>{let Y=G.result;if(Y)G.result={inlineStyle:JJ(Y.inlineStyle),attributesStyle:JJ(Y.attributesStyle)};return Promise.resolve(G)}),J.addMessageFilter("tools::CSS.getMatchedStylesForNode",async(G)=>{if(typeof G.params?.nodeId==="number")Z.lastNodeId=G.params.nodeId;try{let[Y,X]=await Promise.all([J.callTarget("CSS.getInlineStylesForNode",{nodeId:G.params.nodeId}),J.callTarget("CSS.getMatchedStylesForNode",{nodeId:G.params.nodeId,includePseudo:!0,includeInherited:!0})]);J.fireResultToTools(G.id,{inlineStyle:JJ(Y?.inlineStyle),attributesStyle:JJ(Y?.attributesStyle),matchedCSSRules:tJ(X?.matchedCSSRules),pseudoElements:x2(X?.pseudoElements),inherited:w2(X?.inherited),cssKeyframesRules:[]})}catch(Y){J.fireErrorToTools(G.id,{message:Y?.message??String(Y)})}return null}),J.addMessageFilter("tools::CSS.setStyleTexts",async(G)=>{let Y=G.params?.edits??[],X=[];for(let W of Y)try{let z=await Q(W.styleSheetId,W.range),R=await J.callTarget("CSS.setStyleText",{styleId:z,text:W.text});X.push(JJ(R?.style)),$.delete(W.styleSheetId),J.fireEventToTools("CSS.styleSheetChanged",{styleSheetId:W.styleSheetId})}catch{X.push(null)}return J.fireResultToTools(G.id,{styles:X}),null}),J.addMessageFilter("tools::CSS.setRuleSelector",async(G)=>{let{styleSheetId:Y,range:X,selector:W}=G.params??{};try{let z=await Q(Y,X);G.params={ruleId:z,selector:W}}catch(z){return J.fireErrorToTools(G.id,{message:z?.message??String(z)}),null}return G}),J.addMessageFilter("target::CSS.setRuleSelector",(G)=>{if(G.result?.rule)G.result={rule:iJ(G.result.rule)};return Promise.resolve(G)}),J.addMessageFilter("tools::CSS.addRule",async(G)=>{let Y=G.params??{},X=String(Y.ruleText??"").trim().replace(/\{\s*\}\s*$/,"").trim();try{let W=await J.callTarget("CSS.addRule",{contextNodeId:Z.lastNodeId,styleSheetId:Y.styleSheetId,selector:X});J.fireResultToTools(G.id,{rule:iJ(W?.rule)})}catch(W){J.fireErrorToTools(G.id,{message:W?.message??String(W)})}return null})}function I2(J){J.addMessageFilter("tools::Browser.getVersion",(Z)=>I(J,Z,y2)),J.addMessageFilter("tools::Browser.getWindowForTarget",(Z)=>I(J,Z,{windowId:1,bounds:{}})),J.addMessageFilter("tools::Browser.setWindowBounds",(Z)=>I(J,Z,{}))}function k2(J){switch(J){case"mousePressed":return"mousedown";case"mouseReleased":return"click";case"mouseMoved":return"mousemove";default:return null}}function v2(J){let Z=async($)=>{let Q=$.params??{},G=k2(Q.type);if(!G)return J.fireResultToTools($.id,{}),null;let Y=G==="click"?["mousedown","click","mouseup"]:[G];try{for(let X of Y){let W={x:Number(Q.x)||0,y:Number(Q.y)||0,modifiers:Number(Q.modifiers)||0,button:Q.button??"none",type:X},z=`(${f2}, __sd_simulate(${JSON.stringify(W)}))`;await J.callTarget("Runtime.evaluate",{expression:z})}J.fireResultToTools($.id,{})}catch(X){J.fireErrorToTools($.id,{message:X?.message??String(X)})}return null};J.addMessageFilter("tools::Input.dispatchMouseEvent",Z),J.addMessageFilter("tools::Input.emulateTouchFromMouseEvent",Z),J.addMessageFilter("tools::Input.setIgnoreInputEvents",($)=>{return J.fireResultToTools($.id,{}),Promise.resolve(null)})}function h2(J){let Z=new Map;return J.addMessageFilter("tools::IO.read",($)=>{let Q=String($.params?.handle??""),G=Number($.params?.size)||b2,Y=Number($.params?.offset)||0,X=Z.get(Q);if(X===void 0)return J.fireResultToTools($.id,{data:"",eof:!0,base64Encoded:!1}),Promise.resolve(null);let W=X.slice(Y,Y+G),z=Y+G>=X.length;return J.fireResultToTools($.id,{data:W,eof:z,base64Encoded:!1}),Promise.resolve(null)}),J.addMessageFilter("tools::IO.close",($)=>{return Z.delete(String($.params?.handle??"")),J.fireResultToTools($.id,{}),Promise.resolve(null)}),Z}function u2(J){J.addMessageFilter("tools::Accessibility.enable",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Accessibility.disable",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Accessibility.getPartialAXTree",async(Z)=>{let $=Z.params??{},Q=$.nodeId??$.backendNodeId;if(typeof Q!=="number")return J.fireResultToTools(Z.id,{nodes:[]}),null;try{let Y=(await J.callTarget("DOM.getAccessibilityPropertiesForNode",{nodeId:Q}))?.properties??{},X={nodeId:String(Q),ignored:Boolean(Y.ignored),role:Y.role?{type:"role",value:String(Y.role)}:void 0,name:Y.label?{type:"computedString",value:String(Y.label)}:void 0,backendDOMNodeId:Q,childIds:[],properties:[]};J.fireResultToTools(Z.id,{nodes:[X]})}catch(G){J.fireResultToTools(Z.id,{nodes:[]})}return null})}function c2(J){for(let[$,Q]of Object.entries(p2))J.addMessageFilter(`tools::${$}`,(G)=>I(J,G,Q));for(let $ of l2)for(let Q of["enable","disable"])J.addMessageFilter(`tools::${$}.${Q}`,(G)=>I(J,G,{}));let Z=[["Autofill.setAddresses",{}],["Storage.getStorageKey",{storageKey:""}],["Storage.trackCacheStorageForOrigin",{}],["Storage.trackIndexedDBForOrigin",{}],["Storage.untrackCacheStorageForOrigin",{}],["Storage.untrackIndexedDBForOrigin",{}],["Storage.getCookies",{cookies:[]}],["ServiceWorker.unregister",{}]];for(let[$,Q]of Z)J.addMessageFilter(`tools::${$}`,(G)=>I(J,G,Q))}function vZ(J){let Z=e0();c2(J);let $=h2(J);J2(J,Z),Z2(J,Z),$2(J,Z),G2(J),X2(J),V2(J,Z),z2(J),W2(J),C2(J,$),j2(J),A2(J),S2(J),I2(J),v2(J),u2(J)}function hZ(J){let Z=`${J.reqHost}/devtools/page/${J.id}`;return{description:J.description,devtoolsFrontendUrl:`devtools://devtools/bundled/inspector.html?ws=${Z}`,devtoolsFrontendUrlCompat:`devtools://devtools/bundled/inspector.html?ws=${Z}`,id:J.id,title:J.title,type:J.type,url:J.url,webSocketDebuggerUrl:`ws://${Z}`,faviconUrl:""}}function zJ(J){return J.replace(/[&<>"']/g,(Z)=>i2[Z])}function uZ(J){return bZ.createServer((Z,$)=>{let Q=new URL(Z.url??"/","http://placeholder"),G=Z.headers.host??"";if(Q.pathname==="/json/version"){let Y=typeof J.version==="function"?J.version(G):J.version;return hJ($,Y)}if(Q.pathname==="/json"||Q.pathname==="/json/list")return hJ($,J.listTargets(G));if(Q.pathname==="/json/protocol")return hJ($,{});if(Q.pathname==="/")return g2($,J,G);$.writeHead(404,{"content-type":"text/plain"}),$.end("not found")})}function hJ(J,Z,$=200){J.writeHead($,{"content-type":"application/json; charset=utf-8"}),J.end(JSON.stringify(Z))}function g2(J,Z,$){let Q=Z.listTargets($),G=Q.map((z)=>`<li><strong>${zJ(z.title||z.url||z.id)}</strong><br><small>${zJ(z.url)}</small><br><small>copy &amp; paste into Chrome's address bar:</small><br><code style="user-select:all">${zJ(z.devtoolsFrontendUrl)}</code></li>`).join(""),Y=`inspect-webkit${Z.brand?` (${Z.brand})`:""}`,X=Z.indexNote??'<p>Open <code style="display:inline;padding:1px 4px">chrome://inspect</code> → <em>Configure…</em> → add '+`<code style="display:inline;padding:1px 4px">${zJ($)}</code>.</p>`,W=`<!doctype html><meta charset=utf-8><title>${zJ(Y)}</title><style>body{font:14px -apple-system,sans-serif;max-width:760px;margin:2em auto;padding:0 1em}code{display:block;background:#f4f4f4;padding:.5em;border-radius:4px;word-break:break-all;margin:.4em 0 1em}li{margin-bottom:1.5em;list-style:none}</style><h1>${zJ(Y)} — ${Q.length} target${Q.length===1?"":"s"}</h1>`+X+`<ul>${G}</ul>`+'<hr><p>JSON: <a href="/json/list">/json/list</a> · <a href="/json/version">/json/version</a></p>';J.writeHead(200,{"content-type":"text/html; charset=utf-8"}),J.end(W)}function lZ(J,Z,$){return new Promise((Q,G)=>{J.once("error",G);let Y=Z==="localhost"||Z==="::1"||Z==="127.0.0.1"?"::":Z;J.listen({port:$,host:Y,ipv6Only:!1},()=>{J.off("error",G),Q()})})}function pZ(J){let Z=!process.env.NO_COLOR&&process.stderr.isTTY===!0,$=(z,R)=>Z?`\x1B[${z}m${R}\x1B[0m`:R,Q=(z)=>$("1",z),G=(z)=>$("2",z),Y=(z)=>$("36",z),X=(z)=>$("32",z),W=`http://${J.host}:${J.port}`;console.error(`${X("●")} ${Q(`${J.brand} CDP`)} ${Y(W)}`),console.error(` ${G("chrome")} chrome://inspect → ${J.host}:${J.port}`),console.error(` ${G("vscode")} "type": "chrome", "port": ${J.port}`)}function d2(J,Z){let $=!!process.env.INSPECT_WEBKIT_DEBUG,Q=new Map,G=!1,Y=!1,X=!1,W=new Map,z=null;function R(U){if(J.readyState!==1)return;let O=JSON.stringify(U);if($)console.error(`[browser] tools<< ${O.slice(0,240)}`);J.send(O)}function _(U,O){let N={method:U,params:O};if(z)N.sessionId=z;R(N)}function H(U,O){return{targetId:U.targetId,type:U.type==="page"?"page":U.type||"other",title:U.title||"",url:U.url||"",attached:O,canAccessOpener:!1,browserContextId:"default"}}function A(U){for(let O of Q.values())if(O.targetId===U)return!0;return!1}function E(U,O){let N=Z.listEntries().find((L)=>L.targetId===U);if(!N)return null;let K=crypto.randomUUID(),V=(L)=>{let q;try{q=JSON.parse(L)}catch{return}q.sessionId=K,R(q)},D=Z.createPageSession(U,V);if(!D)return null;return Q.set(K,{handle:D,targetId:U}),_("Target.attachedToTarget",{sessionId:K,targetInfo:H(N,!0),waitingForDebugger:O}),{sessionId:K,entry:N}}function M(U){let O=Q.get(U);if(!O)return!1;try{O.handle.close()}catch{}return Q.delete(U),_("Target.detachedFromTarget",{sessionId:U,targetId:O.targetId}),!0}function B(){let U=Z.listEntries(),O=new Set;for(let N of U){O.add(N.targetId);let K=W.get(N.targetId);if(!K){if(W.set(N.targetId,N),G)_("Target.targetCreated",{targetInfo:H(N,A(N.targetId))});if(Y&&!A(N.targetId))E(N.targetId,X)}else if(K.title!==N.title||K.url!==N.url){if(W.set(N.targetId,N),G)_("Target.targetInfoChanged",{targetInfo:H(N,A(N.targetId))})}}for(let N of[...W.keys()]){if(O.has(N))continue;W.delete(N);for(let[K,V]of Q)if(V.targetId===N)M(K);if(G)_("Target.targetDestroyed",{targetId:N})}}let P=setInterval(B,Z.refreshMs??1000);function C(U,O){if(U)O.sessionId=U;R(O)}function j(U,O){let{id:N,method:K}=U,V=U.params??{};switch(K){case"Browser.getVersion":return C(O,{id:N,result:{protocolVersion:"1.3",product:"Safari/inspect-webkit",revision:"@",userAgent:"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit",jsVersion:""}});case"Target.attachToBrowserTarget":{if(!z)z=crypto.randomUUID();return C(O,{id:N,result:{sessionId:z}})}case"Target.setDiscoverTargets":{if(G=!!V.discover,G)for(let D of Z.listEntries())W.set(D.targetId,D),_("Target.targetCreated",{targetInfo:H(D,A(D.targetId))});if(typeof N==="number")C(O,{id:N,result:{}});return}case"Target.getTargets":{let D=Z.listEntries().map((L)=>H(L,A(L.targetId)));return C(O,{id:N,result:{targetInfos:D}})}case"Target.setAutoAttach":{if(Y=!!V.autoAttach,X=!!V.waitForDebuggerOnStart,Y){for(let D of Z.listEntries())if(!A(D.targetId))E(D.targetId,X)}if(typeof N==="number")C(O,{id:N,result:{}});return}case"Target.attachToTarget":{for(let[L,q]of Q)if(q.targetId===V.targetId){if(typeof N==="number")C(O,{id:N,result:{sessionId:L}});return}let D=E(V.targetId,!1);if(!D){if(typeof N==="number")C(O,{id:N,error:{code:-32000,message:"No target with given id found"}});return}if(typeof N==="number")C(O,{id:N,result:{sessionId:D.sessionId}});return}case"Target.detachFromTarget":{if(M(V.sessionId),typeof N==="number")C(O,{id:N,result:{}});return}case"Target.sendMessageToTarget":{let D=Q.get(V.sessionId);if(D)D.handle.onMessageFromTools(V.message);if(typeof N==="number")C(O,{id:N,result:{}});return}case"Target.setRemoteLocations":case"Target.exposeDevToolsProtocol":case"Target.activateTarget":case"Target.closeTarget":if(typeof N==="number")C(O,{id:N,result:{}});return;case"Target.getBrowserContexts":{if(typeof N==="number")C(O,{id:N,result:{browserContextIds:["default"]}});return}}if(typeof N==="number")C(O,{id:N,error:{code:-32601,message:`Browser-level method '${K??"?"}' not implemented`}})}J.on("message",(U,O)=>{let N=O?new TextDecoder().decode(U):U.toString();if($)console.error(`[browser] tools>> ${N.slice(0,240)}`);let K;try{K=JSON.parse(N)}catch{return}if(typeof K.sessionId==="string"){if(K.sessionId===z){let L={...K};return delete L.sessionId,j(L,K.sessionId)}let V=Q.get(K.sessionId);if(!V){if(typeof K.id==="number")R({id:K.id,sessionId:K.sessionId,error:{code:-32000,message:`Session ${K.sessionId} not found`}});return}let D={...K};delete D.sessionId,V.handle.onMessageFromTools(JSON.stringify(D));return}j(K,void 0)}),J.on("close",()=>{clearInterval(P);for(let[,U]of Q)try{U.handle.close()}catch{}Q.clear()})}async function m2(J={}){let Z=J.port??9222,$=J.host??"localhost",Q=await a2();if(Q.length===0)console.error("warn: no inspectable sources found (no devices, no simulators)."),console.error(" The server will still run; new targets will appear if you start one.");let G=new Map,Y=new WeakMap,X=new Map;for(let P of Q)X.set(P,[]),Y.set(P,new Set),P.wi.subscribe((C)=>{let{__selector:j,__argument:U}=C;if(!j||!U)return;if(j==="_rpc_reportConnectedApplicationList:"){let O=U.WIRApplicationDictionaryKey??{},N=Object.entries(O).map(([V,D])=>({appId:V,bundleId:D.WIRApplicationBundleIdentifierKey,name:D.WIRApplicationNameKey??D.WIRApplicationBundleIdentifierKey??V,isProxy:Boolean(D.WIRIsApplicationProxyKey)}));X.set(P,N);let K=Y.get(P);for(let V of N){if(V.isProxy||K.has(V.appId))continue;K.add(V.appId),P.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:V.appId})}}else if(j==="_rpc_applicationConnected:"){let O=U,N=X.get(P)??[];if(!N.find((K)=>K.appId===O.WIRApplicationIdentifierKey))N.push({appId:O.WIRApplicationIdentifierKey,bundleId:O.WIRApplicationBundleIdentifierKey,name:O.WIRApplicationNameKey??O.WIRApplicationBundleIdentifierKey,isProxy:Boolean(O.WIRIsApplicationProxyKey)}),X.set(P,N);if(!O.WIRIsApplicationProxyKey){let K=Y.get(P);if(!K.has(O.WIRApplicationIdentifierKey))K.add(O.WIRApplicationIdentifierKey),P.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:O.WIRApplicationIdentifierKey})}}else if(j==="_rpc_applicationDisconnected:"){let O=X.get(P)??[];X.set(P,O.filter((N)=>N.appId!==U.WIRApplicationIdentifierKey)),G.delete(`${P.id}:${U.WIRApplicationIdentifierKey}`)}else if(j==="_rpc_applicationSentListing:"){let O=U.WIRApplicationIdentifierKey,N=U.WIRListingKey??{},K=new Map;for(let[V,D]of Object.entries(N))K.set(V,{pageId:Number(D.WIRPageIdentifierKey??0),title:D.WIRTitleKey??"",url:D.WIRURLKey??"",type:D.WIRTypeKey??""});G.set(`${P.id}:${O}`,K)}}),P.wi.send("_rpc_reportIdentifier:",{}),P.wi.send("_rpc_getConnectedApplications:",{});let W=setInterval(()=>{for(let P of Q){let C=X.get(P)??[];for(let j of C){if(j.isProxy)continue;P.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:j.appId})}}},n2),z=new Map;function R(){let P=[];for(let C of Q){let j=X.get(C)??[];for(let U of j){if(U.isProxy)continue;let O=G.get(`${C.id}:${U.appId}`);if(!O)continue;for(let N of O.values())P.push({targetId:`${C.id}:${U.appId}:${N.pageId}`,source:C,appId:U.appId,appName:U.name,bundleId:U.bundleId,pageId:N.pageId,title:N.title,url:N.url,type:N.type})}}return P}let _=crypto.randomUUID(),H=uZ({brand:"",version:(P)=>({Browser:"Safari/inspect-webkit","Protocol-Version":"1.3","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit","WebKit-Version":"605.1.15",webSocketDebuggerUrl:`ws://${P}/devtools/browser/${_}`}),listTargets:(P)=>R().map((C)=>hZ({reqHost:P,id:C.targetId,description:`${C.source.label}${C.bundleId?` (${C.bundleId})`:""}`,title:C.title||C.appName,url:/^https?:/i.test(C.url)?C.url:"about:blank",type:CZ(C.type)}))}),A=new IZ.default({noServer:!0}),E=`/devtools/browser/${_}`;H.on("upgrade",(P,C,j)=>{let U=new URL(P.url??"/","http://placeholder");if(console.error(`# ws upgrade: ${U.pathname}`),U.pathname===E){A.handleUpgrade(P,C,j,(N)=>{d2(N,{listEntries:()=>R().map((K)=>({targetId:K.targetId,type:CZ(K.type),title:K.title||K.appName,url:K.url})),createPageSession:(K,V)=>{let D=R().find((L)=>L.targetId===K);if(!D)return null;return M(D,V)}})});return}if(!U.pathname.startsWith("/devtools/page/")){console.error(`# ws upgrade rejected: unknown path ${U.pathname}`),C.destroy();return}let O=decodeURIComponent(U.pathname.slice(15));A.handleUpgrade(P,C,j,(N)=>{B(N,O)})});function M(P,C){let j=crypto.randomUUID(),O=new rJ({readyState:1,send:(V)=>C(V)},P.source.wi,P.appId,P.pageId,j);vZ(O),z.set(j,O);let N=!!process.env.INSPECT_WEBKIT_DEBUG,K=P.source.wi.subscribe((V)=>{if(V.__selector!=="_rpc_applicationSentData:")return;let D=V.__argument;if(!D)return;if(D.WIRDestinationKey&&D.WIRDestinationKey!==j)return;if(D.WIRApplicationIdentifierKey!==P.appId)return;if(D.WIRPageIdentifierKey!==void 0&&Number(D.WIRPageIdentifierKey)!==P.pageId)return;let L=D.WIRMessageDataKey??D.WIRSocketDataKey;if(!L)return;let q=typeof L==="string"?L:new TextDecoder().decode(L);if(N)console.error(`[cdp] target>> ${q.slice(0,240)}`);O.onMessageFromTarget(q)});return P.source.wi.forwardSocketSetup(P.appId,P.pageId,j),console.error(`# devtools attached: ${P.source.label} :: ${P.appName} :: ${P.title||P.url}`),{onMessageFromTools(V){if(N)console.error(`[cdp] tools>> ${V.slice(0,300)}`);O.onMessageFromTools(V)},close(){K();try{O.wi.forwardDidClose(O.appId,O.pageId,O.senderKey)}catch{}z.delete(O.senderKey)}}}function B(P,C){let j=R().find((O)=>O.targetId===C);if(!j){console.error(`# ws closed: unknown target ${C} (known: ${R().map((O)=>O.targetId).join(", ")||"none"})`),P.close(1011,`unknown target ${C}`);return}let U=M(j,(O)=>{if(P.readyState===1)P.send(O)});P.on("message",(O,N)=>{let K=N?new TextDecoder().decode(O):O.toString();U.onMessageFromTools(K)}),P.on("close",()=>U.close())}return await lZ(H,$,Z),pZ({brand:"safari",host:$,port:Z}),{stop(){clearInterval(W),A.close(),H.close();for(let P of Q)try{P.wi.close(),P.lockdown?.close()}catch{}},getTargets(){return R()}}}async function a2(){let[J,Z]=await Promise.all([o2(),t2()]);return[...J,...Z]}async function o2(){let J=[];try{J=await BZ()}catch($){return console.error(`warn: usbmux: ${$.message}`),[]}return(await Promise.all(J.map(r2))).filter(($)=>$!==null)}async function r2(J){try{let Z=await qZ(J.Properties.SerialNumber),$=await MJ.open(J,Z);await $.startSession();let Q=await $.startService("com.apple.webinspector"),{socket:G,stream:Y}=await $.connectService(Q),X=new PJ(G,Y);return await X.reportIdentifier(),{kind:"device",id:`device:${J.Properties.SerialNumber}`,label:`device:${J.Properties.SerialNumber.slice(0,8)}`,wi:X,lockdown:$}}catch(Z){return console.error(`warn: device ${J.Properties.SerialNumber}: ${Z.message}`),null}}async function t2(){let J=[];try{J=await wZ()}catch($){return console.error(`warn: simulator discovery: ${$.message}`),[]}return(await Promise.all(J.map(s2))).filter(($)=>$!==null)}async function s2(J){try{let{socket:Z,stream:$}=await SZ(J.socketPath),Q=new PJ(Z,$);return await Q.reportIdentifier(),{kind:"simulator",id:`sim:${J.pid}`,label:`sim:${J.pid}`,wi:Q}}catch(Z){return console.error(`warn: simulator ${J.socketPath}: ${Z.message}`),null}}function CZ(J){switch(J){case"WIRTypeServiceWorker":return"service_worker";case"WIRTypeWorker":case"WIRTypeJavaScript":return"worker";default:return"page"}}class cZ{url;ws;handlers=new Set;openPromise;constructor(J){this.url=J,this.ws=new _Z(J),this.ws.binaryType="nodebuffer",this.openPromise=new Promise((Z,$)=>{this.ws.once("open",()=>Z()),this.ws.once("error",(Q)=>$(Q))}),this.ws.on("message",(Z,$)=>{let Q=$?new TextDecoder().decode(Z):Z.toString();for(let G of this.handlers)G(Q)})}ready(){return this.openPromise}onFrame(J){return this.handlers.add(J),()=>this.handlers.delete(J)}forwardSocketData(J,Z,$,Q){if(this.ws.readyState!==_Z.OPEN)return;this.ws.send(new TextDecoder().decode(Q))}forwardDidClose(J,Z,$){}close(){try{this.ws.close()}catch{}}}async function e2(J){let Z=J.port??9223,$=J.host??"localhost",{upstreams:Q}=J,G=uZ({brand:"bun",version:{Browser:"Bun/inspect-webkit","Protocol-Version":"1.3","User-Agent":"Bun (via inspect-webkit)","WebKit-Version":"605.1.15"},listTargets:(W)=>Q.map((z)=>hZ({reqHost:W,id:encodeURIComponent(z.url),description:z.label??"bun",title:z.label??z.url,url:z.url,type:"node"}))}),Y=new IZ.default({noServer:!0});G.on("upgrade",(W,z,R)=>{let _=new URL(W.url??"/","http://placeholder");if(!_.pathname.startsWith("/devtools/page/")){z.destroy();return}let H=decodeURIComponent(_.pathname.slice(15)),A=Q.find((E)=>E.url===H);if(!A){z.destroy();return}Y.handleUpgrade(W,z,R,(E)=>{X(E,A).catch((M)=>{console.error(`# bun attach failed: ${M.message}`);try{E.close(1011,M.message)}catch{}})})});async function X(W,z){let R=!!process.env.INSPECT_WEBKIT_DEBUG,_=new cZ(z.url);await _.ready();let H=crypto.randomUUID(),A=new rJ(W,_,"bun",0,H);vZ(A);let E=_.onFrame((M)=>{if(R)console.error(`[bun] target>> ${M.slice(0,240)}`);A.onMessageFromTarget(M)});W.on("message",(M,B)=>{let P=B?new TextDecoder().decode(M):M.toString();if(R)console.error(`[bun] tools>> ${P.slice(0,300)}`);A.onMessageFromTools(P)}),W.on("close",()=>{E(),_.close()}),console.error(`# devtools attached: ${z.label??z.url}`)}return await lZ(G,$,Z),pZ({brand:"bun",host:$,port:Z}),{stop(){Y.close(),G.close()},getTargets(){return Q.slice()}}}async function iZ(){return BZ()}async function J4(){let[J,Z]=await Promise.all([Z4(),$4()]);return[...J.flat(),...Z.flat()]}async function Z4(){let J=await iZ();return Promise.all(J.map(Q4))}async function $4(){let J=await wZ();return Promise.all(J.map(Y4))}async function Q4(J){let Z=null;try{return Z=await G4(J),await gZ(Z.client,{source:"device",udid:J.Properties.SerialNumber,deviceID:J.DeviceID})}catch($){return console.error(`warn: ${J.Properties.SerialNumber}: ${$.message}`),[]}finally{Z?.client.close(),Z?.lockdown.close()}}async function Y4(J){let Z=null;try{let{socket:$,stream:Q}=await SZ(J.socketPath);return Z=new PJ($,Q),await Z.reportIdentifier(),await gZ(Z,{source:"simulator",udid:`sim:${J.pid}`})}catch($){return console.error(`warn: simulator (${J.socketPath}): ${$.message}`),[]}finally{Z?.close()}}async function G4(J){let Z=await qZ(J.Properties.SerialNumber),$=await MJ.open(J,Z);await $.startSession();let Q=await $.startService("com.apple.webinspector"),{socket:G,stream:Y}=await $.connectService(Q),X=new PJ(G,Y);return await X.reportIdentifier(),{client:X,lockdown:$}}async function gZ(J,Z){let $=(await J.listApplications()).filter((Y)=>!Y.isProxy),Q=await Promise.all($.map((Y)=>J.getListing(Y.appId))),G=[];for(let Y=0;Y<$.length;Y++){let X=$[Y];for(let W of Q[Y])G.push({...Z,appId:X.appId,appName:X.name??X.bundleId??X.appId,bundleId:X.bundleId,pageId:W.pageId,title:W.title,url:W.url,type:W.type})}return G}var T0,B0,UZ,q0,x0,S0,y0,r=(J,Z,$)=>{var Q=J!=null&&typeof J==="object";if(Q){var G=Z?S0??=new WeakMap:y0??=new WeakMap,Y=G.get(J);if(Y)return Y}$=J!=null?T0(B0(J)):{};let X=Z||!J||!J.__esModule?UZ($,"default",{value:J,enumerable:!0}):$;for(let W of q0(J))if(!x0.call(X,W))UZ(X,W,{get:w0.bind(J,W),enumerable:!0});if(Q)G.set(J,X);return X},n=(J,Z)=>()=>(Z||J((Z={exports:{}}).exports,Z),Z.exports),i,t,CJ,I0,UJ,NJ,jZ,AZ,f0,gJ,dJ,k0,MZ,v0,b0=`<?xml version="1.0" encoding="UTF-8"?>
4
+ ${Q}</array>`}let Z=Object.keys(J);if(Z.length===0)return`${Q}<dict/>`;let $=Z.map((G)=>`${Q} <key>${OQ(G)}</key>
5
+ `+uJ(J[G],Q+"\t")).join(`
6
+ `);return`${Q}<dict>
7
+ ${$}
8
+ ${Q}</dict>`}function nJ(J){let Q=uJ(J,"");return new TextEncoder().encode(bZ+Q+hZ)}class BQ{src;pos=0;constructor(J){this.src=J}skip(){while(this.pos<this.src.length){let J=this.src[this.pos];if(J===" "||J==="\t"||J===`
9
+ `||J==="\r")this.pos++;else if(this.src.startsWith("<!--",this.pos)){let Q=this.src.indexOf("-->",this.pos+4);if(Q<0)throw Error("unterminated comment");this.pos=Q+3}else if(this.src.startsWith("<?",this.pos)){let Q=this.src.indexOf("?>",this.pos+2);if(Q<0)throw Error("unterminated processing instruction");this.pos=Q+2}else if(this.src.startsWith("<!DOCTYPE",this.pos)){let Q=0;while(this.pos<this.src.length){let Z=this.src[this.pos++];if(Z==="[")Q++;else if(Z==="]")Q--;else if(Z===">"&&Q===0)break}}else break}}nextTag(){if(this.skip(),this.pos>=this.src.length)return null;if(this.src[this.pos]!=="<")throw Error(`expected '<' at ${this.pos}`);let J=this.src.indexOf(">",this.pos);if(J<0)throw Error("unterminated tag");let Q=this.src.slice(this.pos+1,J);this.pos=J+1;let Z=Q.startsWith("/"),$=Q.endsWith("/");return{name:Q.replace(/^\/?/,"").replace(/\/$/,"").trim().split(/\s+/)[0],selfClose:$,isClose:Z}}readText(){let J=this.src.indexOf("<",this.pos),Q=J<0?this.src.slice(this.pos):this.src.slice(this.pos,J);return this.pos=J<0?this.src.length:J,Q.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&apos;/g,"'").replace(/&amp;/g,"&")}}function lJ(J,Q){let Z=($)=>{let G=J.nextTag();if(!G||!G.isClose||G.name!==$)throw Error(`expected </${$}>`)};switch(Q){case"true":case"false":throw Error(`<${Q}> must be self-closing`);case"string":case"key":{let $=J.readText();return Z(Q),$}case"integer":{let $=J.readText().trim();if(Z("integer"),/^-?\d+$/.test($)&&Math.abs(Number($))<=Number.MAX_SAFE_INTEGER)return Number($);return BigInt($)}case"real":{let $=Number(J.readText().trim());return Z("real"),$}case"data":{let $=lZ(J.readText());return Z("data"),$}case"date":{let $=new Date(J.readText().trim());return Z("date"),$}case"array":{let $=[];while(!0){let G=J.nextTag();if(!G)throw Error("unterminated <array>");if(G.isClose&&G.name==="array")return $;$.push(G.selfClose?pJ(G.name):lJ(J,G.name))}}case"dict":{let $={};while(!0){let G=J.nextTag();if(!G)throw Error("unterminated <dict>");if(G.isClose&&G.name==="dict")return $;if(G.name!=="key")throw Error(`expected <key>, got <${G.name}>`);let Y=J.readText();Z("key");let X=J.nextTag();if(!X)throw Error("unterminated <dict>");$[Y]=X.selfClose?pJ(X.name):lJ(J,X.name)}}default:throw Error(`unknown plist tag <${Q}>`)}}function pJ(J){if(J==="true")return!0;if(J==="false")return!1;if(J==="string")return"";if(J==="data")return new Uint8Array(0);if(J==="array")return[];if(J==="dict")return{};throw Error(`self-closing <${J}/> not supported`)}function jJ(J){let Q=typeof J==="string"?J:new TextDecoder().decode(J),Z=new BQ(Q);while(!0){let G=Z.nextTag();if(!G)throw Error("no <plist> root");if(G.name==="plist"&&!G.isClose)break}let $=Z.nextTag();if(!$)throw Error("empty plist");return $.selfClose?pJ($.name):lJ(Z,$.name)}function e(J,Q,Z){let $=0;for(let G=0;G<Z;G++)$=$*256+J[Q+G];return $}function pZ(J){if(J.length<41)throw Error("bplist too short");let Q=new TextDecoder().decode(J.slice(0,8));if(Q!=="bplist00")throw Error(`bad magic: ${Q}`);let Z=J.length-32,$=J[Z+6],G=J[Z+7],Y=e(J,Z+8,8),X=e(J,Z+16,8),W=e(J,Z+24,8),z=Array(Y);for(let H=0;H<Y;H++)z[H]=e(J,W+H*$,$);function R(H){return e(J,H,G)}function _(H){let A=z[H],E=J[A],M=E>>4,T=E&15;function P(C){if(T!==15)return{len:T,next:C};let j=J[C];if((j&240)!==16)throw Error("expected int marker for length");let N=1<<(j&15);return{len:e(J,C+1,N),next:C+1+N}}switch(M){case 0:if(T===0)return null;if(T===8)return!1;if(T===9)return!0;if(T===15)return null;throw Error(`unknown singleton ${T}`);case 1:{let C=1<<T,j=e(J,A+1,C);if(C===8&&j>Number.MAX_SAFE_INTEGER)return BigInt(j);return j}case 2:{let C=1<<T,j=new DataView(J.buffer,J.byteOffset+A+1,C);return C===4?j.getFloat32(0,!1):j.getFloat64(0,!1)}case 3:{let j=new DataView(J.buffer,J.byteOffset+A+1,8).getFloat64(0,!1);return new Date(Date.UTC(2001,0,1)+j*1000)}case 4:{let{len:C,next:j}=P(A+1);return J.slice(j,j+C)}case 5:{let{len:C,next:j}=P(A+1);return new TextDecoder("ascii").decode(J.slice(j,j+C))}case 6:{let{len:C,next:j}=P(A+1),N=J.slice(j,j+C*2),U=new Uint8Array(N.length);for(let O=0;O<N.length;O+=2)U[O]=N[O+1],U[O+1]=N[O];return new TextDecoder("utf-16le").decode(U)}case 10:{let{len:C,next:j}=P(A+1),N=[];for(let U=0;U<C;U++)N.push(_(R(j+U*G)));return N}case 13:{let{len:C,next:j}=P(A+1),N={};for(let U=0;U<C;U++){let O=_(R(j+U*G)),K=_(R(j+(C+U)*G));if(typeof O!=="string")throw Error(`non-string dict key: ${typeof O}`);N[O]=K}return N}default:throw Error(`unknown bplist marker 0x${E.toString(16)} at ${A}`)}}return _(X)}function cZ(J){if(J.length>=8){if(new TextDecoder().decode(J.slice(0,8))==="bplist00")return pZ(J)}return jJ(J)}class AJ{chunks=[];size=0;waiters=[];closed=!1;closeErr=null;push(J){if(J.length===0)return;this.chunks.push(J),this.size+=J.length,this.drain()}close(J){this.closed=!0,this.closeErr=J??null;for(let Q of this.waiters)Q.reject(J??Error("stream closed"));this.waiters=[]}read(J){return new Promise((Q,Z)=>{if(this.closed&&this.size<J){Z(this.closeErr??Error("stream closed"));return}this.waiters.push({n:J,resolve:Q,reject:Z}),this.drain()})}drain(){while(this.waiters.length>0&&this.waiters[0].n<=this.size){let J=this.waiters.shift(),Q=new Uint8Array(J.n),Z=0;while(Z<J.n){let $=this.chunks[0],G=J.n-Z;if($.length<=G)Q.set($,Z),Z+=$.length,this.chunks.shift();else Q.set($.subarray(0,G),Z),this.chunks[0]=$.subarray(G),Z+=G}this.size-=J.n,J.resolve(Q)}}}function mJ(J,Q){let Z=(Y)=>{Q.push(new Uint8Array(Y.buffer,Y.byteOffset,Y.byteLength))},$=()=>Q.close(),G=(Y)=>Q.close(Y);return J.on("data",Z),J.on("close",$),J.on("error",G),()=>{J.off("data",Z),J.off("close",$),J.off("error",G)}}async function aJ(){let J=new AJ;return new Promise((Q,Z)=>{let $=EQ.createConnection({path:gZ}),G=(Y)=>{J.close(Y),Z(Y)};$.once("error",G),$.once("connect",()=>{$.off("error",G);let Y=mJ($,J);Q({socket:$,stream:J,detach:Y})})})}async function nZ(J){let Q=await J.read(4),Z=new DataView(Q.buffer,Q.byteOffset,4).getUint32(0,!0);return(await J.read(Z-4)).slice(12)}function mZ(J,Q,Z){let $=16+Z.length,G=new Uint8Array(16),Y=new DataView(G.buffer);Y.setUint32(0,$,!0),Y.setUint32(4,iZ,!0),Y.setUint32(8,dZ,!0),Y.setUint32(12,Q,!0),J.write(G),J.write(Z)}async function oJ(J,Q,Z,$){let G=nJ({ClientVersionString:"inspect-webkit-1.0",ProgName:"inspect-webkit",kLibUSBMuxVersion:3,...$});mZ(J,Z,G);let Y=await nZ(Q);return jJ(Y)}async function TQ(){let{socket:J,stream:Q}=await aJ();try{return(await oJ(J,Q,1,{MessageType:"ListDevices"})).DeviceList??[]}finally{J.end()}}async function qQ(J){let{socket:Q,stream:Z}=await aJ();try{let G=(await oJ(Q,Z,1,{MessageType:"ReadPairRecord",PairRecordID:J})).PairRecordData;if(!G)throw Error(`no pair record for ${J} — pair the device first (open Finder/iTunes, tap "Trust")`);return jJ(G)}finally{Q.end()}}async function PQ(J,Q){let{socket:Z,stream:$,detach:G}=await aJ(),Y=(Q&255)<<8|Q>>8&255,X=await oJ(Z,$,1,{MessageType:"Connect",DeviceID:J,PortNumber:Y});if(X.MessageType!=="Result"||X.Number!==0){Z.end();let W=X.Number??"?";throw Error(`Connect to device ${J} port ${Q} failed (code ${W})`)}return{socket:Z,stream:$,detach:G}}async function wQ(){let J=aZ("lsof",["-U"],{stdio:["ignore","pipe","ignore"]});if(J.status!==0||!J.stdout)return[];let Q=J.stdout.toString("utf8"),Z=new Map;for(let $ of Q.split(`
10
+ `)){if(!/com\.apple\.webinspectord_sim\.socket\b/.test($))continue;if(!$.startsWith("webinspec"))continue;let G=$.split(/\s+/),Y=Number(G[1]),X=G[G.length-1];if(X)Z.set(X,Y)}return Array.from(Z,([$,G])=>({socketPath:$,pid:G}))}async function SQ(J){let Q=new AJ;return new Promise((Z,$)=>{let G=xQ.createConnection({path:J}),Y=(X)=>{Q.close(X),$(X)};G.once("error",Y),G.once("connect",()=>{G.off("error",Y),mJ(G,Q),Z({socket:G,stream:Q})})})}async function fJ(J){let Q=await J.read(4),Z=new DataView(Q.buffer,Q.byteOffset,4).getUint32(0,!1),$=await J.read(Z);return jJ($)}function kJ(J,Q){let Z=nJ({Label:"inspect-webkit",...Q}),$=new Uint8Array(4);new DataView($.buffer).setUint32(0,Z.length,!1),J.write($),J.write(Z)}function vJ(J,Q){if(J.Error)throw Error(`lockdown ${Q} error: ${String(J.Error)}`);if(J.Request!==Q)throw Error(`lockdown expected Request=${Q}, got ${String(J.Request)}`)}function RQ(J,Q,Z,$){return new Promise((G,Y)=>{Q();let X=new AJ,W=yQ.connect({socket:J,cert:Buffer.from(Z.HostCertificate),key:Buffer.from(Z.HostPrivateKey),ca:Buffer.from(Z.RootCertificate),rejectUnauthorized:!1}),z=(R)=>{m(`${$} tls error:`,R),X.close(R),Y(R)};W.once("error",z),W.once("secureConnect",()=>{m(`${$} tls handshake complete`),W.off("error",z);let R=mJ(W,X);G({socket:W,stream:X,detach:R})})})}class MJ{socket;stream;pair;udid;deviceID;detach;constructor(J,Q,Z,$,G,Y){this.socket=J,this.stream=Q,this.pair=Z,this.udid=$,this.deviceID=G,this.detach=Y}static async open(J,Q){m("connecting usbmux tunnel to lockdown port",LQ);let{socket:Z,stream:$,detach:G}=await PQ(J.DeviceID,LQ),Y=new MJ(Z,$,Q,J.Properties.SerialNumber,J.DeviceID,G);m("sending QueryType"),kJ(Z,{Request:"QueryType"});let X=await fJ($);if(m("QueryType reply:",X),vJ(X,"QueryType"),X.Type!=="com.apple.mobile.lockdown")throw Error(`unexpected lockdown Type: ${String(X.Type)}`);return Y}async startSession(){m("StartSession with HostID",this.pair.HostID),kJ(this.socket,{Request:"StartSession",HostID:this.pair.HostID,SystemBUID:this.pair.SystemBUID});let J=await fJ(this.stream);if(m("StartSession reply:",J),vJ(J,"StartSession"),J.EnableSessionSSL){m("upgrading to TLS");let Q=await RQ(this.socket,this.detach,this.pair,"lockdown");this.socket=Q.socket,this.stream=Q.stream,this.detach=Q.detach,m("TLS upgrade complete")}}async startService(J){m("StartService",J),kJ(this.socket,{Request:"StartService",Service:J});let Q=await fJ(this.stream);return m("StartService reply:",Q),vJ(Q,"StartService"),{port:Q.Port,enableServiceSSL:Boolean(Q.EnableServiceSSL),service:J}}async connectService(J){m("connecting service tunnel to port",J.port,"ssl=",J.enableServiceSSL);let{socket:Q,stream:Z,detach:$}=await PQ(this.deviceID,J.port);if(!J.enableServiceSSL)return{socket:Q,stream:Z};let G=await RQ(Q,$,this.pair,"service");return{socket:G.socket,stream:G.stream}}close(){this.socket.end()}}async function oZ(J){let Q=await J.read(4),Z=new DataView(Q.buffer,Q.byteOffset,4).getUint32(0,!1),$=await J.read(Z);return cZ($)}function rZ(J,Q){let Z=nJ(Q),$=new Uint8Array(4);new DataView($.buffer).setUint32(0,Z.length,!1),J.write($),J.write(Z)}function tZ(){let J=crypto.getRandomValues(new Uint8Array(16));J[6]=J[6]&15|64,J[8]=J[8]&63|128;let Q=Array.from(J,(Z)=>Z.toString(16).padStart(2,"0")).join("");return`${Q.slice(0,8)}-${Q.slice(8,12)}-${Q.slice(12,16)}-${Q.slice(16,20)}-${Q.slice(20)}`}class PJ{socket;stream;connectionId=tZ();subscribers=new Set;reading;constructor(J,Q){this.socket=J,this.stream=Q,this.reading=(async()=>{try{while(!Q.closed){let Z=await oZ(Q);for(let $ of[...this.subscribers])try{$(Z)}catch{}}}catch{}})()}subscribe(J){return this.subscribers.add(J),()=>this.subscribers.delete(J)}waitFor(J,Q=5000){return new Promise((Z,$)=>{let G=setTimeout(()=>{Y(),$(Error(`timeout waiting for ${J} after ${Q}ms`))},Q),Y=this.subscribe((X)=>{if(X.__selector===J)clearTimeout(G),Y(),Z(X)})})}send(J,Q){rZ(this.socket,{__selector:J,__argument:{WIRConnectionIdentifierKey:this.connectionId,...Q}})}async reportIdentifier(){this.send("_rpc_reportIdentifier:",{})}async listApplications(){this.send("_rpc_getConnectedApplications:",{});let J=await this.waitFor("_rpc_reportConnectedApplicationList:",3000).catch(()=>null);if(!J)return[];let Z=J.__argument.WIRApplicationDictionaryKey??{},$=[];for(let[G,Y]of Object.entries(Z)){let X=Y;$.push({appId:G,bundleId:X.WIRApplicationBundleIdentifierKey,name:X.WIRApplicationNameKey,isProxy:Boolean(X.WIRIsApplicationProxyKey),isActive:Boolean(X.WIRIsApplicationActiveKey),hostAppId:X.WIRHostApplicationIdentifierKey})}return $}async getListing(J){this.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:J});let Q=await this.waitFor("_rpc_applicationSentListing:",3000).catch(()=>null);if(!Q)return[];let $=Q.__argument.WIRListingKey??{},G=[];for(let Y of Object.values($)){let X=Y;G.push({pageId:Number(X.WIRPageIdentifierKey??0),title:X.WIRTitleKey??"",url:X.WIRURLKey??"",type:X.WIRTypeKey??""})}return G}get connection(){return this.connectionId}forwardSocketSetup(J,Q,Z){this.send("_rpc_forwardSocketSetup:",{WIRApplicationIdentifierKey:J,WIRPageIdentifierKey:Q,WIRSenderKey:Z,WIRAutomaticallyPause:!1})}forwardSocketData(J,Q,Z,$){this.send("_rpc_forwardSocketData:",{WIRApplicationIdentifierKey:J,WIRPageIdentifierKey:Q,WIRSenderKey:Z,WIRSocketDataKey:$})}forwardDidClose(J,Q,Z){this.send("_rpc_forwardDidClose:",{WIRApplicationIdentifierKey:J,WIRPageIdentifierKey:Q,WIRSenderKey:Z})}onMessage(J){return this.subscribe(J)}close(){this.socket.end()}}class rJ{ws;wi;appId;pageId;senderKey;filters=new Map;toolRequestMap=new Map;adapterRequestMap=new Map;requestId=0;innerTargetId=null;wrappedAckIds=new Set;outgoingQueue=[];sawAnyTargetCreated=!1;constructor(J,Q,Z,$,G){this.ws=J,this.wi=Q,this.appId=Z,this.pageId=$,this.senderKey=G}addMessageFilter(J,Q){let Z=this.filters.get(J);if(!Z)this.filters.set(J,Z=[]);Z.push(Q)}callTarget(J,Q={}){return new Promise((Z,$)=>{let G=--this.requestId;this.adapterRequestMap.set(G,{resolve:Z,reject:$}),this.sendRaw(JSON.stringify({id:G,method:J,params:Q}))})}fireEventToTools(J,Q){this.sendToTools(JSON.stringify({method:J,params:Q}))}fireResultToTools(J,Q){this.sendToTools(JSON.stringify({id:J,result:Q}))}fireErrorToTools(J,Q){this.sendToTools(JSON.stringify({id:J,error:{code:Q.code??-32000,message:Q.message}}))}replyEmpty(J){if(typeof J.id==="number")this.fireResultToTools(J.id,{});return Promise.resolve(null)}async onMessageFromTools(J){let Q;try{Q=JSON.parse(J)}catch{return}if(typeof Q.method==="string"&&typeof Q.id==="number")this.toolRequestMap.set(Q.id,Q.method);let Z=`tools::${Q.method}`,$=this.filters.get(Z),G=Q;if($)for(let Y of $){if(!G)break;G=await Y(G)}if(G)this.sendRaw(JSON.stringify(G))}async onMessageFromTarget(J){let Q;try{Q=JSON.parse(J)}catch{return}if(Q.method==="Target.targetCreated"){this.sawAnyTargetCreated=!0;let Y=Q.params?.targetInfo;if(Y?.type==="page"&&!this.innerTargetId)this.innerTargetId=Y.targetId,this.flushQueue();return}if(Q.method==="Target.didCommitProvisionalTarget"){let Y=Q.params?.newTargetId;if(typeof Y==="string")this.innerTargetId=Y;return}if(Q.method==="Target.targetDestroyed")return;if(Q.method==="Target.dispatchMessageFromTarget"){let Y=Q.params?.message;if(typeof Y==="string")return this.onMessageFromTarget(Y);return}if(typeof Q.id==="number"&&this.wrappedAckIds.has(Q.id)){this.wrappedAckIds.delete(Q.id);return}if(typeof Q.id==="number"){let Y=this.adapterRequestMap.get(Q.id);if(Y){if(this.adapterRequestMap.delete(Q.id),"error"in Q&&Q.error)Y.reject(Q.error);else Y.resolve(Q.result??{});return}let X=this.toolRequestMap.get(Q.id);if(X){this.toolRequestMap.delete(Q.id);let W=`target::${X}`;if("error"in Q&&this.filters.has("target::error"))W="target::error";let z=this.filters.get(W);if(!z)return this.sendToTools(J);let R=Q;for(let _ of z){if(!R)break;R=await _(R)}if(R)this.sendToTools(JSON.stringify(R));return}return this.sendToTools(J)}let Z=`target::${Q.method}`,$=this.filters.get(Z);if(!$)return this.sendToTools(J);let G=Q;for(let Y of $){if(!G)break;G=await Y(G)}if(G)this.sendToTools(JSON.stringify(G))}sendRaw(J){let Q=null;try{Q=JSON.parse(J)}catch{}let Z=Q&&typeof Q.method==="string"&&Q.method.startsWith("Target.");if(this.innerTargetId&&Q&&!Z){if(typeof Q.id==="number")this.wrappedAckIds.add(Q.id);let $={id:Q.id,method:"Target.sendMessageToTarget",params:{id:Q.id,message:J,targetId:this.innerTargetId}};this.writeFrame(JSON.stringify($));return}if(!this.innerTargetId&&Q&&!Z){if(this.outgoingQueue.push(J),this.outgoingQueue.length===1)setTimeout(()=>{if(!this.innerTargetId&&!this.sawAnyTargetCreated&&this.outgoingQueue.length>0){let $=this.outgoingQueue;this.outgoingQueue=[];for(let G of $)this.writeFrame(G)}},250);return}this.writeFrame(J)}flushQueue(){if(this.outgoingQueue.length===0)return;let J=this.outgoingQueue;this.outgoingQueue=[];for(let Q of J)this.sendRaw(Q)}writeFrame(J){this.wi.forwardSocketData(this.appId,this.pageId,this.senderKey,new TextEncoder().encode(J))}sendToTools(J){if(this.ws.readyState===1)this.ws.send(J)}}function eZ(){return{lastScriptEval:{value:""},pageExecCtx:{id:0,isPage:!1},lastConsoleApiCalled:{value:null}}}function I(J,Q,Z){return J.fireResultToTools(Q.id,Z),Promise.resolve(null)}function J0(J,Q){J.addMessageFilter("tools::Debugger.canSetScriptSource",(Z)=>I(J,Z,{result:!1})),J.addMessageFilter("tools::Debugger.setBlackboxPatterns",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Debugger.setAsyncCallStackDepth",(Z)=>I(J,Z,{})),J.addMessageFilter("target::Debugger.enable",(Z)=>{return J.callTarget("Debugger.setBreakpointsActive",{active:!0}).catch(()=>{}),J.callTarget("Debugger.setPauseOnDebuggerStatements",{enabled:!0}).catch(()=>{}),Promise.resolve(Z)}),J.addMessageFilter("target::Debugger.scriptParsed",(Z)=>{if(Z.params?.scriptId)Q.lastScriptEval.value=String(Z.params.scriptId);return Promise.resolve(Z)}),J.addMessageFilter("tools::Debugger.setBreakpoint",(Z)=>{let $=Z.params??{};return Z.params={location:$.location,options:$.condition?{condition:$.condition}:{}},Promise.resolve(Z)}),J.addMessageFilter("tools::Debugger.setBreakpointByUrl",(Z)=>{let $=Z.params??{};return Z.params={lineNumber:$.lineNumber,url:$.url,urlRegex:$.urlRegex,columnNumber:$.columnNumber,options:$.condition?{condition:$.condition}:{}},Promise.resolve(Z)});for(let Z of["removeBreakpoint","continueToLocation","stepInto","stepOver","stepOut","resume","pause","getScriptSource","evaluateOnCallFrame"])J.addMessageFilter(`tools::Debugger.${Z}`,($)=>Promise.resolve($));J.addMessageFilter("target::Debugger.paused",(Z)=>{let $=Z.params?.callFrames;if(Array.isArray($))for(let G of $){if(G.functionName==null&&typeof G.name==="string")G.functionName=G.name;if(!G.location&&G.sourceCodeLocation)G.location={scriptId:String(G.sourceCodeLocation.scriptId??""),lineNumber:G.sourceCodeLocation.lineNumber??0,columnNumber:G.sourceCodeLocation.columnNumber??0};if(Array.isArray(G.scopeChain)){for(let Y of G.scopeChain)if(!Y.object&&Y.value)Y.object=Y.value}}return Promise.resolve(Z)}),J.addMessageFilter("tools::Debugger.setBlackboxedRanges",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Debugger.setSkipAllPauses",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Debugger.setPauseOnExceptions",(Z)=>{return Promise.resolve(Z)})}function Q0(J,Q){J.addMessageFilter("target::Runtime.executionContextCreated",(Z)=>{let $=Z.params?.context;if($){if(!$.origin)$.origin=$.name??"";let G=Number($.id),Y=!!($.isPageContext||$.type==="normal");if(Number.isFinite(G)&&G>0){if(!Q.pageExecCtx.id||Y&&!Q.pageExecCtx.isPage)Q.pageExecCtx.id=G,Q.pageExecCtx.isPage=Y}if($.frameId)$.auxData={frameId:$.frameId,isDefault:!0},delete $.frameId}return Promise.resolve(Z)}),J.addMessageFilter("tools::Runtime.evaluate",(Z)=>{let $=Z.params;if(!$)return Promise.resolve(Z);if("silent"in $)$.doNotPauseOnExceptionsAndMuteConsole=!!$.silent,delete $.silent;if("userGesture"in $)$.emulateUserGesture=!!$.userGesture,delete $.userGesture;return Promise.resolve(Z)}),J.addMessageFilter("target::Runtime.evaluate",(Z)=>{let $=Z.result;if($?.wasThrown){if($.result)$.result.subtype="error";$.exceptionDetails={exceptionId:0,text:$.result?.description??"Uncaught",url:"",scriptId:Q.lastScriptEval.value,lineNumber:0,columnNumber:0,stackTrace:{callFrames:[{functionName:"",scriptId:Q.lastScriptEval.value,url:"",lineNumber:0,columnNumber:0}]},exception:$.result}}return Promise.resolve(Z)}),J.addMessageFilter("target::Runtime.getProperties",(Z)=>{let $=Z.result;if(!$)return Promise.resolve(Z);let G=Array.isArray($.result)?$.result:Array.isArray($.properties)?$.properties:null;if(G)$.result=G.filter((Y)=>Y.isOwn||Y.nativeGetter).map((Y)=>({...Y,isOwn:!0})),delete $.properties;if(Array.isArray($.internalProperties))$.internalProperties=$.internalProperties.map((Y)=>({name:Y.name,value:Y.value}));return Promise.resolve(Z)}),J.addMessageFilter("tools::Runtime.compileScript",(Z)=>I(J,Z,{scriptId:null,exceptionDetails:null})),J.addMessageFilter("tools::Runtime.globalLexicalScopeNames",(Z)=>I(J,Z,{names:[]})),J.addMessageFilter("tools::Runtime.terminateExecution",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Runtime.getIsolateId",(Z)=>I(J,Z,{id:"inspect-webkit"})),J.addMessageFilter("tools::Runtime.getHeapUsage",(Z)=>I(J,Z,{usedSize:0,totalSize:0})),J.addMessageFilter("tools::Runtime.discardConsoleEntries",(Z)=>{return Z.method="Console.clearMessages",Promise.resolve(Z)}),J.addMessageFilter("tools::Runtime.runIfWaitingForDebugger",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Runtime.setAsyncCallStackDepth",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Runtime.releaseObject",(Z)=>Promise.resolve(Z)),J.addMessageFilter("tools::Runtime.releaseObjectGroup",(Z)=>Promise.resolve(Z)),J.addMessageFilter("tools::Runtime.callFunctionOn",(Z)=>Promise.resolve(Z)),J.addMessageFilter("tools::Runtime.queryObjects",(Z)=>Promise.resolve(Z)),J.addMessageFilter("target::Debugger.globalObjectCleared",(Z)=>{return J.fireEventToTools("Runtime.executionContextsCleared",{}),Promise.resolve(null)})}function Z0(J,Q){J.addMessageFilter("tools::Log.startViolationsReport",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Log.stopViolationsReport",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::Log.clear",(Z)=>{return Z.method="Console.clearMessages",Promise.resolve(Z)}),J.addMessageFilter("tools::Log.disable",(Z)=>{return Z.method="Console.disable",Promise.resolve(Z)}),J.addMessageFilter("tools::Log.enable",(Z)=>{return Z.method="Console.enable",Promise.resolve(Z)}),J.addMessageFilter("tools::Runtime.enable",(Z)=>{return J.callTarget("Console.enable",{}).catch(()=>{}),Promise.resolve(Z)}),J.addMessageFilter("target::Console.messageAdded",(Z)=>{let $=Z.params?.message??{},Y=(Array.isArray($.stackTrace)?$.stackTrace:Array.isArray($.stackTrace?.callFrames)?$.stackTrace.callFrames:[]).map((z)=>({functionName:z.functionName??"",scriptId:z.scriptId??"",url:z.url??"",lineNumber:Number(z.lineNumber??0),columnNumber:Number(z.columnNumber??0)})),X=Y.length?{callFrames:Y}:void 0,W=Date.now();if($.source==="console-api"){let z=$.type==="log"?$.level??"log":$.type??"log",R=$0(z),_=Array.isArray($.parameters)&&$.parameters.length>0?$.parameters:[{type:"string",value:String($.text??"")}],H={type:R,args:_,executionContextId:Q.pageExecCtx.id||1,timestamp:W,stackTrace:X};return Q.lastConsoleApiCalled.value=H,J.fireEventToTools("Runtime.consoleAPICalled",H),Promise.resolve(null)}if($.source==="javascript"&&$.level==="error")return J.fireEventToTools("Runtime.exceptionThrown",{timestamp:W,exceptionDetails:{exceptionId:0,text:String($.text??"Uncaught"),lineNumber:Number($.line??0),columnNumber:Number($.column??0),scriptId:Q.lastScriptEval.value,url:$.url,stackTrace:X,exception:{type:"string",value:String($.text??"")}}}),Promise.resolve(null);return J.fireEventToTools("Log.entryAdded",{entry:{source:$.source??"other",level:Y0($.level??$.type??"log"),text:String($.text??""),timestamp:W,url:$.url,lineNumber:$.line,stackTrace:X,networkRequestId:$.networkRequestId}}),Promise.resolve(null)}),J.addMessageFilter("target::Console.messagesCleared",()=>{return J.fireEventToTools("Log.entriesCleared",{}),J.fireEventToTools("Runtime.consoleAPICalled",{type:"clear",args:[],executionContextId:Q.pageExecCtx.id||1,timestamp:Date.now()}),Q.lastConsoleApiCalled.value=null,Promise.resolve(null)}),J.addMessageFilter("target::Console.messageRepeatCountUpdated",()=>{let Z=Q.lastConsoleApiCalled.value;if(Z)J.fireEventToTools("Runtime.consoleAPICalled",{...Z,timestamp:Date.now()});return Promise.resolve(null)}),J.addMessageFilter("target::Console.heapSnapshot",()=>Promise.resolve(null))}function $0(J){switch(J){case"warn":case"warning":return"warning";case"log":case"info":case"error":case"debug":case"dir":case"dirxml":case"table":case"trace":case"clear":case"assert":case"profile":case"profileEnd":case"count":case"timeEnd":case"startGroup":case"startGroupCollapsed":case"endGroup":return J;default:return"log"}}function Y0(J){switch(J){case"log":case"debug":return"verbose";case"info":return"info";case"warn":case"warning":return"warning";case"error":return"error";default:return"info"}}function G0(J){let Q=new Set;J.addMessageFilter("tools::DOM.enable",(Z)=>I(J,Z,{})),J.addMessageFilter("tools::DOM.setInspectMode",(Z)=>{if(Z.method="DOM.setInspectModeEnabled",Z.params)Z.params.enabled=Z.params.mode==="searchForNode",delete Z.params.mode,delete Z.params.highlightConfig;return Promise.resolve(Z)}),J.addMessageFilter("tools::DOM.setInspectedNode",(Z)=>{return Z.method="Console.addInspectedNode",Promise.resolve(Z)}),J.addMessageFilter("tools::DOM.performSearch",(Z)=>{if(Z.params)Z.params={query:Z.params.query,caseSensitive:!!Z.params.caseSensitive};return Promise.resolve(Z)}),J.addMessageFilter("target::DOM.performSearch",(Z)=>{let $=Z.result?.searchId;if(typeof $==="string")Q.add($);return Promise.resolve(Z)}),J.addMessageFilter("tools::DOM.discardSearchResults",(Z)=>{let $=Z.params?.searchId;if(typeof $==="string")Q.delete($);return Promise.resolve(Z)}),J.addMessageFilter("tools::DOM.pushNodesByBackendIdsToFrontend",async(Z)=>{let $=Z.params?.backendNodeIds??[],G=await Promise.all($.map((Y)=>J.callTarget("DOM.pushNodeByBackendIdToFrontend",{backendNodeId:Y}).then((X)=>X.nodeId).catch(()=>Y)));return J.fireResultToTools(Z.id,{nodeIds:G}),null}),J.addMessageFilter("tools::DOM.getBoxModel",(Z)=>{return J.callTarget("DOM.highlightNode",{highlightConfig:{showInfo:!0,contentColor:{r:111,g:168,b:220,a:0.66},paddingColor:{r:147,g:196,b:125,a:0.55},borderColor:{r:255,g:229,b:153,a:0.66},marginColor:{r:246,g:178,b:107,a:0.66}},nodeId:Z.params?.nodeId}).catch(()=>{}),Promise.resolve(null)}),J.addMessageFilter("tools::DOM.getNodeForLocation",async(Z)=>{try{let G=(await J.callTarget("Runtime.evaluate",{expression:`document.elementFromPoint(${Z.params?.x},${Z.params?.y})`})).result?.objectId;if(!G)return J.fireResultToTools(Z.id,{nodeId:0}),null;let Y=await J.callTarget("DOM.requestNode",{objectId:G});J.fireResultToTools(Z.id,{nodeId:Y.nodeId,backendNodeId:Y.nodeId})}catch($){J.fireErrorToTools(Z.id,{message:$?.message??String($)})}return null}),J.addMessageFilter("tools::DOM.resolveNode",(Z)=>{if(Z.params&&Z.params.objectGroup===void 0)delete Z.params.objectGroup;return Promise.resolve(Z)})}function X0(J){J.addMessageFilter("tools::DOMDebugger.getEventListeners",async(Q)=>{try{let Z=await J.callTarget("DOM.requestNode",{objectId:Q.params?.objectId}),G=((await J.callTarget("DOM.getEventListenersForNode",{nodeId:Z.nodeId,objectGroup:"event-listeners-panel"})).listeners??[]).map((Y)=>({type:Y.type,useCapture:!!Y.useCapture,passive:!!Y.passive,once:!!Y.once,location:Y.location,handler:Y.handler}));J.fireResultToTools(Q.id,{listeners:G})}catch(Z){J.fireErrorToTools(Q.id,{message:Z?.message??String(Z)})}return null}),J.addMessageFilter("tools::DOMDebugger.setXHRBreakpoint",(Q)=>I(J,Q,{})),J.addMessageFilter("tools::DOMDebugger.removeXHRBreakpoint",(Q)=>I(J,Q,{})),J.addMessageFilter("tools::DOMDebugger.setEventListenerBreakpoint",(Q)=>I(J,Q,{})),J.addMessageFilter("tools::DOMDebugger.removeEventListenerBreakpoint",(Q)=>I(J,Q,{}))}function V0(J,Q){J.addMessageFilter("tools::Page.setOverlayMessage",(Y)=>{return Y.method="Debugger.setOverlayMessage",Promise.resolve(Y)}),J.addMessageFilter("tools::Page.configureOverlay",(Y)=>{return Y.method="Debugger.setOverlayMessage",Promise.resolve(Y)}),J.addMessageFilter("tools::Page.getNavigationHistory",async(Y)=>{try{let X=await J.callTarget("Runtime.evaluate",{expression:"window.location.href"}),W=await J.callTarget("Runtime.evaluate",{expression:"document.title"});J.fireResultToTools(Y.id,{currentIndex:0,entries:[{id:0,url:X.result?.value??"",userTypedURL:X.result?.value??"",title:W.result?.value??"",transitionType:"link"}]})}catch(X){J.fireErrorToTools(Y.id,{message:X?.message??String(X)})}return null}),J.addMessageFilter("target::Page.frameNavigated",(Y)=>{return fQ(Y.params?.frame),Promise.resolve(Y)}),J.addMessageFilter("target::Page.getResourceTree",(Y)=>{return cJ(Y.result?.frameTree),Promise.resolve(Y)}),J.addMessageFilter("tools::Page.getFrameTree",async(Y)=>{if(typeof Y.id!=="number")return null;try{let X=await J.callTarget("Page.getResourceTree",{}),W=kQ(X?.frameTree);cJ(W),J.fireResultToTools(Y.id,{frameTree:W})}catch(X){J.fireErrorToTools(Y.id,{message:X?.message??String(X)})}return null}),J.addMessageFilter("tools::Page.createIsolatedWorld",(Y)=>{if(typeof Y.id!=="number")return Promise.resolve(null);return I(J,Y,{executionContextId:Q.pageExecCtx.id||1})});let Z=1;J.addMessageFilter("tools::Page.addScriptToEvaluateOnNewDocument",(Y)=>I(J,Y,{identifier:`pptr-${Z++}`})),J.addMessageFilter("tools::WebMCP.enable",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::WebMCP.disable",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Page.captureScreenshot",(Y)=>{return J.fireErrorToTools(Y.id,{message:"Page.captureScreenshot not supported by Safari"}),Promise.resolve(null)}),J.addMessageFilter("tools::Page.startScreencast",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Page.stopScreencast",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Page.screencastFrameAck",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Page.setLifecycleEventsEnabled",(Y)=>I(J,Y,{}));let $="",G="0.1";J.addMessageFilter("target::Page.frameNavigated",(Y)=>{let X=Y.params?.frame;if(X)G=X.id??G,$=X.loaderId??$,J.fireEventToTools("Page.frameStartedLoading",{frameId:G}),J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:$,name:"init",timestamp:0}),J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:$,name:"commit",timestamp:0});return Promise.resolve(Y)}),J.addMessageFilter("target::Page.domContentEventFired",(Y)=>{return J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:$,name:"DOMContentLoaded",timestamp:Y.params?.timestamp??0}),Promise.resolve(Y)}),J.addMessageFilter("target::Page.loadEventFired",(Y)=>{return J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:$,name:"load",timestamp:Y.params?.timestamp??0}),J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:$,name:"networkAlmostIdle",timestamp:Y.params?.timestamp??0}),J.fireEventToTools("Page.lifecycleEvent",{frameId:G,loaderId:$,name:"networkIdle",timestamp:Y.params?.timestamp??0}),J.fireEventToTools("Page.frameStoppedLoading",{frameId:G}),Promise.resolve(Y)})}function fQ(J){if(!J)return;if(!J.securityOrigin)try{J.securityOrigin=new URL(J.url??"").origin}catch{J.securityOrigin="://"}if(!J.mimeType)J.mimeType="text/html"}function cJ(J){if(!J)return;if(fQ(J.frame),Array.isArray(J.childFrames))J.childFrames.forEach(cJ)}function kQ(J){if(!J)return J;let Q={frame:J.frame};if(Array.isArray(J.childFrames))Q.childFrames=J.childFrames.map(kQ);return Q}function z0(J){J.addMessageFilter("tools::Overlay.enable",(Q)=>I(J,Q,{})),J.addMessageFilter("tools::Overlay.disable",(Q)=>I(J,Q,{})),J.addMessageFilter("tools::Overlay.highlightNode",(Q)=>{let Z=Q.params??{};return Q.method="DOM.highlightNode",Q.params={highlightConfig:Z.highlightConfig,nodeId:Z.nodeId,objectId:Z.objectId},Promise.resolve(Q)}),J.addMessageFilter("tools::Overlay.highlightFrame",(Q)=>{return Q.method="DOM.highlightFrame",Promise.resolve(Q)}),J.addMessageFilter("tools::Overlay.highlightQuad",(Q)=>{return Q.method="DOM.highlightQuad",Promise.resolve(Q)}),J.addMessageFilter("tools::Overlay.highlightRect",(Q)=>{return Q.method="DOM.highlightRect",Promise.resolve(Q)}),J.addMessageFilter("tools::Overlay.hideHighlight",(Q)=>{return Q.method="DOM.hideHighlight",Promise.resolve(Q)}),J.addMessageFilter("tools::Overlay.setShowPaintRects",(Q)=>{return Q.method="Page.setShowPaintRects",Promise.resolve(Q)}),J.addMessageFilter("tools::Overlay.setInspectMode",(Q)=>{let Z=Q.params??{};return Q.method="DOM.setInspectModeEnabled",Q.params={enabled:typeof Z.mode==="string"&&Z.mode!=="none",highlightConfig:Z.highlightConfig},Promise.resolve(Q)})}function W0(J){J.addMessageFilter("tools::Emulation.canEmulate",(Q)=>I(J,Q,{result:!0})),J.addMessageFilter("tools::Emulation.setTouchEmulationEnabled",(Q)=>{return Q.method="Page.setTouchEmulationEnabled",Promise.resolve(Q)}),J.addMessageFilter("tools::Emulation.setScriptExecutionDisabled",(Q)=>{return Q.method="Page.setScriptExecutionDisabled",Promise.resolve(Q)}),J.addMessageFilter("tools::Emulation.setEmulatedMedia",(Q)=>{return Q.method="Page.setEmulatedMedia",Promise.resolve(Q)}),J.addMessageFilter("tools::Rendering.setShowPaintRects",(Q)=>{return Q.method="Page.setShowPaintRects",Promise.resolve(Q)}),J.addMessageFilter("tools::Emulation.setDeviceMetricsOverride",(Q)=>I(J,Q,{})),J.addMessageFilter("tools::Emulation.clearDeviceMetricsOverride",(Q)=>I(J,Q,{})),J.addMessageFilter("tools::Emulation.setUserAgentOverride",(Q)=>{let Z=Q.params?.userAgent??"";return Q.method="Page.overrideUserAgent",Q.params={value:Z},Promise.resolve(Q)}),J.addMessageFilter("tools::Emulation.setFocusEmulationEnabled",(Q)=>I(J,Q,{})),J.addMessageFilter("tools::Emulation.setDefaultBackgroundColorOverride",(Q)=>I(J,Q,{}))}function bJ(J){switch(J){case"Document":case"Image":case"Font":case"Script":case"XHR":case"Fetch":case"Ping":case"WebSocket":return J;case"StyleSheet":return"Stylesheet";default:return"Other"}}function P0(J){if(!J)return J;return{...N0,...J,hasPostData:J.postData!=null}}function L0(J){if(!J)return J;let Q=0,Z=J.headers??{},$=Z["Content-Length"]??Z["content-length"];if($!=null)Q=Number($)||0;return{...O0,...J,fromDiskCache:J.source==="disk-cache",fromServiceWorker:J.source==="service-worker",encodedDataLength:Q}}function R0(J,Q){if(!J)return;for(let[Z,$]of Object.entries(Q))if(Z in J&&!($ in J))J[$]=J[Z],delete J[Z]}function _0(J){let Q=typeof J.size==="number"?J.size:(J.name?.length??0)+(J.value?.length??0);return{name:J.name,value:J.value,domain:J.domain,path:J.path,expires:J.expires??-1,size:Q,httpOnly:!!J.httpOnly,secure:!!J.secure,session:!!J.session,...J.sameSite?{sameSite:J.sameSite}:{}}}function C0(J,Q){let Z=new Map,$=1024;for(let[Y,X]of Object.entries(H0))J.addMessageFilter(`tools::${Y}`,(W)=>{return W.method=X,Promise.resolve(W)});J.addMessageFilter("tools::Network.setCacheDisabled",(Y)=>{if(Y.params&&"cacheDisabled"in Y.params)Y.params={disabled:!!Y.params.cacheDisabled};return Promise.resolve(Y)});let G=async(Y)=>{try{let X=await J.callTarget("Page.getCookies",{}),W=Array.isArray(X?.cookies)?X.cookies.map(_0):[];J.fireResultToTools(Y.id,{cookies:W})}catch(X){J.fireErrorToTools(Y.id,{message:X?.message??String(X)})}return null};J.addMessageFilter("tools::Network.getCookies",G),J.addMessageFilter("tools::Network.getAllCookies",G),J.addMessageFilter("tools::Network.setCookie",(Y)=>{let X=Y.params??{};return Y.method="Page.setCookie",Y.params={cookie:{name:X.name,value:X.value,domain:X.domain??"",path:X.path??"/",expires:X.expires??-1,session:!1,httpOnly:!!X.httpOnly,secure:!!X.secure,sameSite:X.sameSite??"None"}},Promise.resolve(Y)}),J.addMessageFilter("tools::Network.setCookies",async(Y)=>{let X=Array.isArray(Y.params?.cookies)?Y.params.cookies:[];try{await Promise.all(X.map((W)=>J.callTarget("Page.setCookie",{cookie:W}))),J.fireResultToTools(Y.id,{})}catch(W){J.fireErrorToTools(Y.id,{message:W?.message??String(W)})}return null}),J.addMessageFilter("tools::Network.deleteCookies",(Y)=>{let X=Y.params??{},W=X.url??`https://${(X.domain??"").replace(/^\./,"")}${X.path??"/"}`;return Y.method="Page.deleteCookie",Y.params={cookieName:X.name,url:W},Promise.resolve(Y)}),J.addMessageFilter("tools::Network.deleteCookie",(Y)=>{return Y.method="Page.deleteCookie",Promise.resolve(Y)}),J.addMessageFilter("tools::Network.clearBrowserCookies",async(Y)=>{try{let X=await J.callTarget("Page.getCookies",{}),W=Array.isArray(X?.cookies)?X.cookies:[];await Promise.all(W.map((z)=>J.callTarget("Page.deleteCookie",{cookieName:z.name,url:`${z.secure?"https":"http"}://${(z.domain??"").replace(/^\./,"")}${z.path??"/"}`}).catch(()=>{}))),J.fireResultToTools(Y.id,{})}catch(X){J.fireErrorToTools(Y.id,{message:X?.message??String(X)})}return null}),J.addMessageFilter("tools::Network.canEmulateNetworkConditions",(Y)=>I(J,Y,{result:!1})),J.addMessageFilter("tools::Network.setExtraHTTPHeaders",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Network.setBlockedURLs",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Network.emulateNetworkConditions",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Network.setMonitoringXHREnabled",(Y)=>I(J,Y,{})),J.addMessageFilter("tools::Network.getResponseBody",async(Y)=>{let X=Y.params?.requestId,W=typeof X==="string"?Z.get(X):void 0;if(!W)return J.fireErrorToTools(Y.id,{message:"Network.getResponseBody: requestId not tracked (only requests observed via requestWillBeSent are recoverable)"}),null;try{let z=await J.callTarget("Network.loadResource",{frameId:W.frameId,url:W.url}),R=String(z?.content??""),_=String(z?.mimeType??""),H=/^(text\/|application\/(json|xml|javascript|ecmascript|x-www-form-urlencoded))/.test(_),A=H?R:Buffer.from(R,"binary").toString("base64");J.fireResultToTools(Y.id,{body:A,base64Encoded:!H})}catch(z){J.fireErrorToTools(Y.id,{message:`Network.getResponseBody fallback (loadResource) failed: ${z?.message??String(z)}`})}return null});for(let[Y,X]of Object.entries(K0))J.addMessageFilter(`target::${Y}`,(W)=>{return R0(W.params,X),Promise.resolve(W)});J.addMessageFilter("target::Network.requestWillBeSent",(Y)=>{let X=Y.params;if(X){if(Object.assign(X,{...F0,...X}),X.request=P0(X.request),X.type=bJ(X.type),typeof X.requestId==="string"&&typeof X.request?.url==="string"){if(Z.size>=1024){let W=Z.keys().next().value;if(W!==void 0)Z.delete(W)}Z.set(X.requestId,{url:X.request.url,frameId:X.frameId})}}return Promise.resolve(Y)}),J.addMessageFilter("target::Network.responseReceived",(Y)=>{let X=Y.params;if(X)Object.assign(X,{...D0,...X}),X.response=L0(X.response),X.type=bJ(X.type);return Promise.resolve(Y)}),J.addMessageFilter("target::Network.loadingFinished",(Y)=>{let X=Y.params;if(X){let W=X.metrics?.responseBodyBytesReceived;if(typeof W==="number"&&X.encodedDataLength==null)X.encodedDataLength=W;Object.assign(X,{...U0,...X})}return Promise.resolve(Y)}),J.addMessageFilter("target::Network.loadingFailed",(Y)=>{let X=Y.params;if(X){if(X.type=bJ(X.type),!("canceled"in X))X.canceled=!1}return Promise.resolve(Y)}),J.addMessageFilter("target::Network.requestServedFromMemoryCache",(Y)=>{if(Y.method="Network.requestServedFromCache",Y.params)Y.params={requestId:Y.params.requestId};return Promise.resolve(Y)}),J.addMessageFilter("tools::Network.loadNetworkResource",async(Y)=>{let X=Y.params??{};if(!Q)return J.fireResultToTools(Y.id,{resource:{success:!1,netError:1,netErrorName:"ERR_NOT_IMPLEMENTED"}}),null;try{let W=await J.callTarget("Network.loadResource",{frameId:X.frameId,url:X.url}),z=!!W?.content&&(W?.status??0)>=200&&(W?.status??0)<300,R;if(z)R=`network-resource:${X.frameId??""}:${X.url}`,Q.set(R,String(W.content));J.fireResultToTools(Y.id,{resource:{success:z,stream:R,httpStatusCode:W?.status,headers:W?.headers,mimeType:W?.mimeType}})}catch(W){J.fireResultToTools(Y.id,{resource:{success:!1,netError:2,netErrorName:W?.message??"ERR_FAILED"}})}return null})}function j0(J){for(let Q of["Target.setAutoAttach","Target.setDiscoverTargets","Target.setRemoteLocations"])J.addMessageFilter(`tools::${Q}`,(Z)=>I(J,Z,{}))}function A0(J){J.addMessageFilter("target::Inspector.inspect",(Q)=>{if(Q.method="DOM.inspectNodeRequested",Q.params)Q.params.backendNodeId=Q.params.object?.objectId,delete Q.params.object,delete Q.params.hints;return Promise.resolve(Q)})}function E0(J){if(!J)return J;let Q=J.origin==="inspector";return{styleSheetId:J.styleSheetId,frameId:J.frameId,sourceURL:J.sourceURL??"",origin:J.origin==="author"?"regular":J.origin,title:J.title??"",disabled:!!J.disabled,isInline:!!J.isInline,startLine:J.startLine??0,startColumn:J.startColumn??0,isMutable:Q,isConstructed:Q,length:J.length??0,endLine:J.endLine??0,endColumn:J.endColumn??0,hasSourceURL:!!J.sourceURL}}function iJ(J){if(!J)return J;let Q={origin:J.origin==="author"?"regular":J.origin,style:JJ(J.style),selectorList:q0(J.selectorList)};if(J.ruleId?.styleSheetId)Q.styleSheetId=J.ruleId.styleSheetId;if(Array.isArray(J.groupings))Q.media=J.groupings.map((Z)=>({text:Z.text,sourceURL:Z.sourceURL,source:T0[Z.type]}));return Q}function S0(J){let Q={lastNodeId:0},Z=new Map;async function $(G,Y){let X=Z.get(G);if(!X)try{if(X=(await J.callTarget("CSS.getStyleSheet",{styleSheetId:G}))?.styleSheet,X)Z.set(G,X)}catch{}let W=X?.rules??[];for(let z=0;z<W.length;z++)if(M0(W[z]?.style?.range,Y))return{styleSheetId:G,ordinal:z};return{styleSheetId:G,ordinal:0}}J.addMessageFilter("tools::CSS.enable",(G)=>{return J.fireResultToTools(G.id,{}),Promise.resolve(null)}),J.addMessageFilter("target::CSS.styleSheetAdded",(G)=>{if(G.params?.header)G.params.header=E0(G.params.header);return Promise.resolve(G)}),J.addMessageFilter("target::CSS.getInlineStylesForNode",(G)=>{let Y=G.result;if(Y)G.result={inlineStyle:JJ(Y.inlineStyle),attributesStyle:JJ(Y.attributesStyle)};return Promise.resolve(G)}),J.addMessageFilter("tools::CSS.getMatchedStylesForNode",async(G)=>{if(typeof G.params?.nodeId==="number")Q.lastNodeId=G.params.nodeId;try{let[Y,X]=await Promise.all([J.callTarget("CSS.getInlineStylesForNode",{nodeId:G.params.nodeId}),J.callTarget("CSS.getMatchedStylesForNode",{nodeId:G.params.nodeId,includePseudo:!0,includeInherited:!0})]);J.fireResultToTools(G.id,{inlineStyle:JJ(Y?.inlineStyle),attributesStyle:JJ(Y?.attributesStyle),matchedCSSRules:tJ(X?.matchedCSSRules),pseudoElements:x0(X?.pseudoElements),inherited:w0(X?.inherited),cssKeyframesRules:[]})}catch(Y){J.fireErrorToTools(G.id,{message:Y?.message??String(Y)})}return null}),J.addMessageFilter("tools::CSS.setStyleTexts",async(G)=>{let Y=G.params?.edits??[],X=[];for(let W of Y)try{let z=await $(W.styleSheetId,W.range),R=await J.callTarget("CSS.setStyleText",{styleId:z,text:W.text});X.push(JJ(R?.style)),Z.delete(W.styleSheetId),J.fireEventToTools("CSS.styleSheetChanged",{styleSheetId:W.styleSheetId})}catch{X.push(null)}return J.fireResultToTools(G.id,{styles:X}),null}),J.addMessageFilter("tools::CSS.setRuleSelector",async(G)=>{let{styleSheetId:Y,range:X,selector:W}=G.params??{};try{let z=await $(Y,X);G.params={ruleId:z,selector:W}}catch(z){return J.fireErrorToTools(G.id,{message:z?.message??String(z)}),null}return G}),J.addMessageFilter("target::CSS.setRuleSelector",(G)=>{if(G.result?.rule)G.result={rule:iJ(G.result.rule)};return Promise.resolve(G)}),J.addMessageFilter("tools::CSS.addRule",async(G)=>{let Y=G.params??{},X=String(Y.ruleText??"").trim().replace(/\{\s*\}\s*$/,"").trim();try{let W=await J.callTarget("CSS.addRule",{contextNodeId:Q.lastNodeId,styleSheetId:Y.styleSheetId,selector:X});J.fireResultToTools(G.id,{rule:iJ(W?.rule)})}catch(W){J.fireErrorToTools(G.id,{message:W?.message??String(W)})}return null})}function I0(J){J.addMessageFilter("tools::Browser.getVersion",(Q)=>I(J,Q,y0)),J.addMessageFilter("tools::Browser.getWindowForTarget",(Q)=>I(J,Q,{windowId:1,bounds:{}})),J.addMessageFilter("tools::Browser.setWindowBounds",(Q)=>I(J,Q,{}))}function k0(J){switch(J){case"mousePressed":return"mousedown";case"mouseReleased":return"click";case"mouseMoved":return"mousemove";default:return null}}function v0(J){let Q=async(Z)=>{let $=Z.params??{},G=k0($.type);if(!G)return J.fireResultToTools(Z.id,{}),null;let Y=G==="click"?["mousedown","click","mouseup"]:[G];try{for(let X of Y){let W={x:Number($.x)||0,y:Number($.y)||0,modifiers:Number($.modifiers)||0,button:$.button??"none",type:X},z=`(${f0}, __sd_simulate(${JSON.stringify(W)}))`;await J.callTarget("Runtime.evaluate",{expression:z})}J.fireResultToTools(Z.id,{})}catch(X){J.fireErrorToTools(Z.id,{message:X?.message??String(X)})}return null};J.addMessageFilter("tools::Input.dispatchMouseEvent",Q),J.addMessageFilter("tools::Input.emulateTouchFromMouseEvent",Q),J.addMessageFilter("tools::Input.setIgnoreInputEvents",(Z)=>{return J.fireResultToTools(Z.id,{}),Promise.resolve(null)})}function h0(J){let Q=new Map;return J.addMessageFilter("tools::IO.read",(Z)=>{let $=String(Z.params?.handle??""),G=Number(Z.params?.size)||b0,Y=Number(Z.params?.offset)||0,X=Q.get($);if(X===void 0)return J.fireResultToTools(Z.id,{data:"",eof:!0,base64Encoded:!1}),Promise.resolve(null);let W=X.slice(Y,Y+G),z=Y+G>=X.length;return J.fireResultToTools(Z.id,{data:W,eof:z,base64Encoded:!1}),Promise.resolve(null)}),J.addMessageFilter("tools::IO.close",(Z)=>{return Q.delete(String(Z.params?.handle??"")),J.fireResultToTools(Z.id,{}),Promise.resolve(null)}),Q}function u0(J){J.addMessageFilter("tools::Accessibility.enable",(Q)=>I(J,Q,{})),J.addMessageFilter("tools::Accessibility.disable",(Q)=>I(J,Q,{})),J.addMessageFilter("tools::Accessibility.getPartialAXTree",async(Q)=>{let Z=Q.params??{},$=Z.nodeId??Z.backendNodeId;if(typeof $!=="number")return J.fireResultToTools(Q.id,{nodes:[]}),null;try{let Y=(await J.callTarget("DOM.getAccessibilityPropertiesForNode",{nodeId:$}))?.properties??{},X={nodeId:String($),ignored:Boolean(Y.ignored),role:Y.role?{type:"role",value:String(Y.role)}:void 0,name:Y.label?{type:"computedString",value:String(Y.label)}:void 0,backendDOMNodeId:$,childIds:[],properties:[]};J.fireResultToTools(Q.id,{nodes:[X]})}catch(G){J.fireResultToTools(Q.id,{nodes:[]})}return null})}function c0(J){for(let[Z,$]of Object.entries(p0))J.addMessageFilter(`tools::${Z}`,(G)=>I(J,G,$));for(let Z of l0)for(let $ of["enable","disable"])J.addMessageFilter(`tools::${Z}.${$}`,(G)=>I(J,G,{}));let Q=[["Autofill.setAddresses",{}],["Storage.getStorageKey",{storageKey:""}],["Storage.trackCacheStorageForOrigin",{}],["Storage.trackIndexedDBForOrigin",{}],["Storage.untrackCacheStorageForOrigin",{}],["Storage.untrackIndexedDBForOrigin",{}],["Storage.getCookies",{cookies:[]}],["ServiceWorker.unregister",{}]];for(let[Z,$]of Q)J.addMessageFilter(`tools::${Z}`,(G)=>I(J,G,$))}function vQ(J){let Q=eZ();c0(J);let Z=h0(J);J0(J,Q),Q0(J,Q),Z0(J,Q),G0(J),X0(J),V0(J,Q),z0(J),W0(J),C0(J,Z),j0(J),A0(J),S0(J),I0(J),v0(J),u0(J)}function hQ(J){let Q=`${J.reqHost}/devtools/page/${J.id}`;return{description:J.description,devtoolsFrontendUrl:`devtools://devtools/bundled/inspector.html?ws=${Q}`,devtoolsFrontendUrlCompat:`devtools://devtools/bundled/inspector.html?ws=${Q}`,id:J.id,title:J.title,type:J.type,url:J.url,webSocketDebuggerUrl:`ws://${Q}`,faviconUrl:""}}function zJ(J){return J.replace(/[&<>"']/g,(Q)=>i0[Q])}function uQ(J){return bQ.createServer((Q,Z)=>{let $=new URL(Q.url??"/","http://placeholder"),G=Q.headers.host??"";if($.pathname==="/json/version"){let Y=typeof J.version==="function"?J.version(G):J.version;return hJ(Z,Y)}if($.pathname==="/json"||$.pathname==="/json/list")return hJ(Z,J.listTargets(G));if($.pathname==="/json/protocol")return hJ(Z,{});if($.pathname==="/")return d0(Z,J,G);Z.writeHead(404,{"content-type":"text/plain"}),Z.end("not found")})}function hJ(J,Q,Z=200){J.writeHead(Z,{"content-type":"application/json; charset=utf-8"}),J.end(JSON.stringify(Q))}function d0(J,Q,Z){let $=Q.listTargets(Z),G=$.map((z)=>`<li><strong>${zJ(z.title||z.url||z.id)}</strong><br><small>${zJ(z.url)}</small><br><small>copy &amp; paste into Chrome's address bar:</small><br><code style="user-select:all">${zJ(z.devtoolsFrontendUrl)}</code></li>`).join(""),Y=`inspect-webkit${Q.brand?` (${Q.brand})`:""}`,X=Q.indexNote??'<p>Open <code style="display:inline;padding:1px 4px">chrome://inspect</code> → <em>Configure…</em> → add '+`<code style="display:inline;padding:1px 4px">${zJ(Z)}</code>.</p>`,W=`<!doctype html><meta charset=utf-8><title>${zJ(Y)}</title><style>body{font:14px -apple-system,sans-serif;max-width:760px;margin:2em auto;padding:0 1em}code{display:block;background:#f4f4f4;padding:.5em;border-radius:4px;word-break:break-all;margin:.4em 0 1em}li{margin-bottom:1.5em;list-style:none}</style><h1>${zJ(Y)} — ${$.length} target${$.length===1?"":"s"}</h1>`+X+`<ul>${G}</ul>`+'<hr><p>JSON: <a href="/json/list">/json/list</a> · <a href="/json/version">/json/version</a></p>';J.writeHead(200,{"content-type":"text/html; charset=utf-8"}),J.end(W)}function lQ(J,Q,Z){return new Promise(($,G)=>{J.once("error",G);let Y=Q==="localhost"||Q==="::1"||Q==="127.0.0.1"?"::":Q;J.listen({port:Z,host:Y,ipv6Only:!1},()=>{J.off("error",G),$()})})}function pQ(J){let Q=!process.env.NO_COLOR&&process.stderr.isTTY===!0,Z=(z,R)=>Q?`\x1B[${z}m${R}\x1B[0m`:R,$=(z)=>Z("1",z),G=(z)=>Z("2",z),Y=(z)=>Z("36",z),X=(z)=>Z("32",z),W=`http://${J.host}:${J.port}`;console.error(`${X("●")} ${$(`${J.brand} CDP`)} ${Y(W)}`),console.error(` ${G("chrome")} chrome://inspect → ${J.host}:${J.port}`),console.error(` ${G("vscode")} "type": "chrome", "port": ${J.port}`)}function g0(J,Q){let Z=!!process.env.INSPECT_WEBKIT_DEBUG,$=new Map,G=!1,Y=!1,X=!1,W=new Map,z=null;function R(N){if(J.readyState!==1)return;let U=JSON.stringify(N);if(Z)console.error(`[browser] tools<< ${U.slice(0,240)}`);J.send(U)}function _(N,U){let O={method:N,params:U};if(z)O.sessionId=z;R(O)}function H(N,U){return{targetId:N.targetId,type:N.type==="page"?"page":N.type||"other",title:N.title||"",url:N.url||"",attached:U,canAccessOpener:!1,browserContextId:"default"}}function A(N){for(let U of $.values())if(U.targetId===N)return!0;return!1}function E(N,U){let O=Q.listEntries().find((L)=>L.targetId===N);if(!O)return null;let K=crypto.randomUUID(),V=(L)=>{let q;try{q=JSON.parse(L)}catch{return}q.sessionId=K,R(q)},D=Q.createPageSession(N,V);if(!D)return null;return $.set(K,{handle:D,targetId:N}),_("Target.attachedToTarget",{sessionId:K,targetInfo:H(O,!0),waitingForDebugger:U}),{sessionId:K,entry:O}}function M(N){let U=$.get(N);if(!U)return!1;try{U.handle.close()}catch{}return $.delete(N),_("Target.detachedFromTarget",{sessionId:N,targetId:U.targetId}),!0}function T(){let N=Q.listEntries(),U=new Set;for(let O of N){U.add(O.targetId);let K=W.get(O.targetId);if(!K){if(W.set(O.targetId,O),G)_("Target.targetCreated",{targetInfo:H(O,A(O.targetId))});if(Y&&!A(O.targetId))E(O.targetId,X)}else if(K.title!==O.title||K.url!==O.url){if(W.set(O.targetId,O),G)_("Target.targetInfoChanged",{targetInfo:H(O,A(O.targetId))})}}for(let O of[...W.keys()]){if(U.has(O))continue;W.delete(O);for(let[K,V]of $)if(V.targetId===O)M(K);if(G)_("Target.targetDestroyed",{targetId:O})}}let P=setInterval(T,Q.refreshMs??1000);function C(N,U){if(N)U.sessionId=N;R(U)}function j(N,U){let{id:O,method:K}=N,V=N.params??{};switch(K){case"Browser.getVersion":return C(U,{id:O,result:{protocolVersion:"1.3",product:"Safari/inspect-webkit",revision:"@",userAgent:"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit",jsVersion:""}});case"Target.attachToBrowserTarget":{if(!z)z=crypto.randomUUID();return C(U,{id:O,result:{sessionId:z}})}case"Target.setDiscoverTargets":{if(G=!!V.discover,G)for(let D of Q.listEntries())W.set(D.targetId,D),_("Target.targetCreated",{targetInfo:H(D,A(D.targetId))});if(typeof O==="number")C(U,{id:O,result:{}});return}case"Target.getTargets":{let D=Q.listEntries().map((L)=>H(L,A(L.targetId)));return C(U,{id:O,result:{targetInfos:D}})}case"Target.setAutoAttach":{if(Y=!!V.autoAttach,X=!!V.waitForDebuggerOnStart,Y){for(let D of Q.listEntries())if(!A(D.targetId))E(D.targetId,X)}if(typeof O==="number")C(U,{id:O,result:{}});return}case"Target.attachToTarget":{for(let[L,q]of $)if(q.targetId===V.targetId){if(typeof O==="number")C(U,{id:O,result:{sessionId:L}});return}let D=E(V.targetId,!1);if(!D){if(typeof O==="number")C(U,{id:O,error:{code:-32000,message:"No target with given id found"}});return}if(typeof O==="number")C(U,{id:O,result:{sessionId:D.sessionId}});return}case"Target.detachFromTarget":{if(M(V.sessionId),typeof O==="number")C(U,{id:O,result:{}});return}case"Target.sendMessageToTarget":{let D=$.get(V.sessionId);if(D)D.handle.onMessageFromTools(V.message);if(typeof O==="number")C(U,{id:O,result:{}});return}case"Target.setRemoteLocations":case"Target.exposeDevToolsProtocol":case"Target.activateTarget":case"Target.closeTarget":if(typeof O==="number")C(U,{id:O,result:{}});return;case"Target.getBrowserContexts":{if(typeof O==="number")C(U,{id:O,result:{browserContextIds:["default"]}});return}}if(typeof O==="number")C(U,{id:O,error:{code:-32601,message:`Browser-level method '${K??"?"}' not implemented`}})}J.on("message",(N,U)=>{let O=U?new TextDecoder().decode(N):N.toString();if(Z)console.error(`[browser] tools>> ${O.slice(0,240)}`);let K;try{K=JSON.parse(O)}catch{return}if(typeof K.sessionId==="string"){if(K.sessionId===z){let L={...K};return delete L.sessionId,j(L,K.sessionId)}let V=$.get(K.sessionId);if(!V){if(typeof K.id==="number")R({id:K.id,sessionId:K.sessionId,error:{code:-32000,message:`Session ${K.sessionId} not found`}});return}let D={...K};delete D.sessionId,V.handle.onMessageFromTools(JSON.stringify(D));return}j(K,void 0)}),J.on("close",()=>{clearInterval(P);for(let[,N]of $)try{N.handle.close()}catch{}$.clear()})}async function m0(J={}){let Q=J.port??9222,Z=J.host??"localhost",$=await a0();if($.length===0)console.error("warn: no inspectable sources found (no devices, no simulators)."),console.error(" The server will still run; new targets will appear if you start one.");let G=new Map,Y=new WeakMap,X=new Map;for(let P of $)X.set(P,[]),Y.set(P,new Set),P.wi.subscribe((C)=>{let{__selector:j,__argument:N}=C;if(!j||!N)return;if(j==="_rpc_reportConnectedApplicationList:"){let U=N.WIRApplicationDictionaryKey??{},O=Object.entries(U).map(([V,D])=>({appId:V,bundleId:D.WIRApplicationBundleIdentifierKey,name:D.WIRApplicationNameKey??D.WIRApplicationBundleIdentifierKey??V,isProxy:Boolean(D.WIRIsApplicationProxyKey)}));X.set(P,O);let K=Y.get(P);for(let V of O){if(V.isProxy||K.has(V.appId))continue;K.add(V.appId),P.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:V.appId})}}else if(j==="_rpc_applicationConnected:"){let U=N,O=X.get(P)??[];if(!O.find((K)=>K.appId===U.WIRApplicationIdentifierKey))O.push({appId:U.WIRApplicationIdentifierKey,bundleId:U.WIRApplicationBundleIdentifierKey,name:U.WIRApplicationNameKey??U.WIRApplicationBundleIdentifierKey,isProxy:Boolean(U.WIRIsApplicationProxyKey)}),X.set(P,O);if(!U.WIRIsApplicationProxyKey){let K=Y.get(P);if(!K.has(U.WIRApplicationIdentifierKey))K.add(U.WIRApplicationIdentifierKey),P.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:U.WIRApplicationIdentifierKey})}}else if(j==="_rpc_applicationDisconnected:"){let U=X.get(P)??[];X.set(P,U.filter((O)=>O.appId!==N.WIRApplicationIdentifierKey)),G.delete(`${P.id}:${N.WIRApplicationIdentifierKey}`)}else if(j==="_rpc_applicationSentListing:"){let U=N.WIRApplicationIdentifierKey,O=N.WIRListingKey??{},K=new Map;for(let[V,D]of Object.entries(O))K.set(V,{pageId:Number(D.WIRPageIdentifierKey??0),title:D.WIRTitleKey??"",url:D.WIRURLKey??"",type:D.WIRTypeKey??""});G.set(`${P.id}:${U}`,K)}}),P.wi.send("_rpc_reportIdentifier:",{}),P.wi.send("_rpc_getConnectedApplications:",{});let W=setInterval(()=>{for(let P of $){let C=X.get(P)??[];for(let j of C){if(j.isProxy)continue;P.wi.send("_rpc_forwardGetListing:",{WIRApplicationIdentifierKey:j.appId})}}},n0),z=new Map;function R(){let P=[];for(let C of $){let j=X.get(C)??[];for(let N of j){if(N.isProxy)continue;let U=G.get(`${C.id}:${N.appId}`);if(!U)continue;for(let O of U.values())P.push({targetId:`${C.id}:${N.appId}:${O.pageId}`,source:C,appId:N.appId,appName:N.name,bundleId:N.bundleId,pageId:O.pageId,title:O.title,url:O.url,type:O.type})}}return P}let _=crypto.randomUUID(),H=uQ({brand:"",version:(P)=>({Browser:"Safari/inspect-webkit","Protocol-Version":"1.3","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit","WebKit-Version":"605.1.15",webSocketDebuggerUrl:`ws://${P}/devtools/browser/${_}`}),listTargets:(P)=>R().map((C)=>hQ({reqHost:P,id:C.targetId,description:`${C.source.label}${C.bundleId?` (${C.bundleId})`:""}`,title:C.title||C.appName,url:/^https?:/i.test(C.url)?C.url:"about:blank",type:CQ(C.type)}))}),A=new IQ.default({noServer:!0}),E=`/devtools/browser/${_}`;H.on("upgrade",(P,C,j)=>{let N=new URL(P.url??"/","http://placeholder");if(console.error(`# ws upgrade: ${N.pathname}`),N.pathname===E){A.handleUpgrade(P,C,j,(O)=>{g0(O,{listEntries:()=>R().map((K)=>({targetId:K.targetId,type:CQ(K.type),title:K.title||K.appName,url:K.url})),createPageSession:(K,V)=>{let D=R().find((L)=>L.targetId===K);if(!D)return null;return M(D,V)}})});return}if(!N.pathname.startsWith("/devtools/page/")){console.error(`# ws upgrade rejected: unknown path ${N.pathname}`),C.destroy();return}let U=decodeURIComponent(N.pathname.slice(15));A.handleUpgrade(P,C,j,(O)=>{T(O,U)})});function M(P,C){let j=crypto.randomUUID(),U=new rJ({readyState:1,send:(V)=>C(V)},P.source.wi,P.appId,P.pageId,j);vQ(U),z.set(j,U);let O=!!process.env.INSPECT_WEBKIT_DEBUG,K=P.source.wi.subscribe((V)=>{if(V.__selector!=="_rpc_applicationSentData:")return;let D=V.__argument;if(!D)return;if(D.WIRDestinationKey&&D.WIRDestinationKey!==j)return;if(D.WIRApplicationIdentifierKey!==P.appId)return;if(D.WIRPageIdentifierKey!==void 0&&Number(D.WIRPageIdentifierKey)!==P.pageId)return;let L=D.WIRMessageDataKey??D.WIRSocketDataKey;if(!L)return;let q=typeof L==="string"?L:new TextDecoder().decode(L);if(O)console.error(`[cdp] target>> ${q.slice(0,240)}`);U.onMessageFromTarget(q)});return P.source.wi.forwardSocketSetup(P.appId,P.pageId,j),console.error(`# devtools attached: ${P.source.label} :: ${P.appName} :: ${P.title||P.url}`),{onMessageFromTools(V){if(O)console.error(`[cdp] tools>> ${V.slice(0,300)}`);U.onMessageFromTools(V)},close(){K();try{U.wi.forwardDidClose(U.appId,U.pageId,U.senderKey)}catch{}z.delete(U.senderKey)}}}function T(P,C){let j=R().find((U)=>U.targetId===C);if(!j){console.error(`# ws closed: unknown target ${C} (known: ${R().map((U)=>U.targetId).join(", ")||"none"})`),P.close(1011,`unknown target ${C}`);return}let N=M(j,(U)=>{if(P.readyState===1)P.send(U)});P.on("message",(U,O)=>{let K=O?new TextDecoder().decode(U):U.toString();N.onMessageFromTools(K)}),P.on("close",()=>N.close())}return await lQ(H,Z,Q),pQ({brand:"safari",host:Z,port:Q}),{stop(){clearInterval(W),A.close(),H.close();for(let P of $)try{P.wi.close(),P.lockdown?.close()}catch{}},getTargets(){return R()}}}async function a0(){let[J,Q]=await Promise.all([o0(),t0()]);return[...J,...Q]}async function o0(){let J=[];try{J=await TQ()}catch(Z){return console.error(`warn: usbmux: ${Z.message}`),[]}return(await Promise.all(J.map(r0))).filter((Z)=>Z!==null)}async function r0(J){try{let Q=await qQ(J.Properties.SerialNumber),Z=await MJ.open(J,Q);await Z.startSession();let $=await Z.startService("com.apple.webinspector"),{socket:G,stream:Y}=await Z.connectService($),X=new PJ(G,Y);return await X.reportIdentifier(),{kind:"device",id:`device:${J.Properties.SerialNumber}`,label:`device:${J.Properties.SerialNumber.slice(0,8)}`,wi:X,lockdown:Z}}catch(Q){return console.error(`warn: device ${J.Properties.SerialNumber}: ${Q.message}`),null}}async function t0(){let J=[];try{J=await wQ()}catch(Z){return console.error(`warn: simulator discovery: ${Z.message}`),[]}return(await Promise.all(J.map(s0))).filter((Z)=>Z!==null)}async function s0(J){try{let{socket:Q,stream:Z}=await SQ(J.socketPath),$=new PJ(Q,Z);return await $.reportIdentifier(),{kind:"simulator",id:`sim:${J.pid}`,label:`sim:${J.pid}`,wi:$}}catch(Q){return console.error(`warn: simulator ${J.socketPath}: ${Q.message}`),null}}function CQ(J){switch(J){case"WIRTypeServiceWorker":return"service_worker";case"WIRTypeWorker":case"WIRTypeJavaScript":return"worker";default:return"page"}}class cQ{url;ws;handlers=new Set;openPromise;constructor(J){this.url=J,this.ws=new _Q(J),this.ws.binaryType="nodebuffer",this.openPromise=new Promise((Q,Z)=>{this.ws.once("open",()=>Q()),this.ws.once("error",($)=>Z($))}),this.ws.on("message",(Q,Z)=>{let $=Z?new TextDecoder().decode(Q):Q.toString();for(let G of this.handlers)G($)})}ready(){return this.openPromise}onFrame(J){return this.handlers.add(J),()=>this.handlers.delete(J)}forwardSocketData(J,Q,Z,$){if(this.ws.readyState!==_Q.OPEN)return;this.ws.send(new TextDecoder().decode($))}forwardDidClose(J,Q,Z){}close(){try{this.ws.close()}catch{}}}async function e0(J){let Q=J.port??9223,Z=J.host??"localhost",{upstreams:$}=J,G=uQ({brand:"bun",version:{Browser:"Bun/inspect-webkit","Protocol-Version":"1.3","User-Agent":"Bun (via inspect-webkit)","WebKit-Version":"605.1.15"},listTargets:(W)=>$.map((z)=>hQ({reqHost:W,id:encodeURIComponent(z.url),description:z.label??"bun",title:z.label??z.url,url:z.url,type:"node"}))}),Y=new IQ.default({noServer:!0});G.on("upgrade",(W,z,R)=>{let _=new URL(W.url??"/","http://placeholder");if(!_.pathname.startsWith("/devtools/page/")){z.destroy();return}let H=decodeURIComponent(_.pathname.slice(15)),A=$.find((E)=>E.url===H);if(!A){z.destroy();return}Y.handleUpgrade(W,z,R,(E)=>{X(E,A).catch((M)=>{console.error(`# bun attach failed: ${M.message}`);try{E.close(1011,M.message)}catch{}})})});async function X(W,z){let R=!!process.env.INSPECT_WEBKIT_DEBUG,_=new cQ(z.url);await _.ready();let H=crypto.randomUUID(),A=new rJ(W,_,"bun",0,H);vQ(A);let E=_.onFrame((M)=>{if(R)console.error(`[bun] target>> ${M.slice(0,240)}`);A.onMessageFromTarget(M)});W.on("message",(M,T)=>{let P=T?new TextDecoder().decode(M):M.toString();if(R)console.error(`[bun] tools>> ${P.slice(0,300)}`);A.onMessageFromTools(P)}),W.on("close",()=>{E(),_.close()}),console.error(`# devtools attached: ${z.label??z.url}`)}return await lQ(G,Z,Q),pQ({brand:"bun",host:Z,port:Q}),{stop(){Y.close(),G.close()},getTargets(){return $.slice()}}}async function iQ(){return TQ()}async function J2(){let[J,Q]=await Promise.all([Q2(),Z2()]);return[...J.flat(),...Q.flat()]}async function Q2(){let J=await iQ();return Promise.all(J.map($2))}async function Z2(){let J=await wQ();return Promise.all(J.map(Y2))}async function $2(J){let Q=null;try{return Q=await G2(J),await dQ(Q.client,{source:"device",udid:J.Properties.SerialNumber,deviceID:J.DeviceID})}catch(Z){return console.error(`warn: ${J.Properties.SerialNumber}: ${Z.message}`),[]}finally{Q?.client.close(),Q?.lockdown.close()}}async function Y2(J){let Q=null;try{let{socket:Z,stream:$}=await SQ(J.socketPath);return Q=new PJ(Z,$),await Q.reportIdentifier(),await dQ(Q,{source:"simulator",udid:`sim:${J.pid}`})}catch(Z){return console.error(`warn: simulator (${J.socketPath}): ${Z.message}`),[]}finally{Q?.close()}}async function G2(J){let Q=await qQ(J.Properties.SerialNumber),Z=await MJ.open(J,Q);await Z.startSession();let $=await Z.startService("com.apple.webinspector"),{socket:G,stream:Y}=await Z.connectService($),X=new PJ(G,Y);return await X.reportIdentifier(),{client:X,lockdown:Z}}async function dQ(J,Q){let Z=(await J.listApplications()).filter((Y)=>!Y.isProxy),$=await Promise.all(Z.map((Y)=>J.getListing(Y.appId))),G=[];for(let Y=0;Y<Z.length;Y++){let X=Z[Y];for(let W of $[Y])G.push({...Q,appId:X.appId,appName:X.name??X.bundleId??X.appId,bundleId:X.bundleId,pageId:W.pageId,title:W.title,url:W.url,type:W.type})}return G}var BZ,TZ,NQ,qZ,xZ,SZ,yZ,r=(J,Q,Z)=>{var $=J!=null&&typeof J==="object";if($){var G=Q?SZ??=new WeakMap:yZ??=new WeakMap,Y=G.get(J);if(Y)return Y}Z=J!=null?BZ(TZ(J)):{};let X=Q||!J||!J.__esModule?NQ(Z,"default",{value:J,enumerable:!0}):Z;for(let W of qZ(J))if(!xZ.call(X,W))NQ(X,W,{get:wZ.bind(J,W),enumerable:!0});if($)G.set(J,X);return X},n=(J,Q)=>()=>(Q||J((Q={exports:{}}).exports,Q),Q.exports),i,t,CJ,IZ,NJ,OJ,jQ,AQ,fZ,dJ,gJ,kZ,MQ,vZ,bZ=`<?xml version="1.0" encoding="UTF-8"?>
11
11
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
12
12
  <plist version="1.0">
13
- `,h0=`
13
+ `,hZ=`
14
14
  </plist>
15
- `,i0=1,g0=8,d0="/var/run/usbmuxd",LZ=62078,m=(...J)=>{if(process.env.INSPECT_WEBKIT_DEBUG)console.error("[lockdown]",...J)},v4,b4,h4,u4,l4,p4,s0,IZ,_Z,H2,K2,F2,D2,O2,U2,N2,M2=(J,Z)=>!!J&&!!Z&&J.startLine===Z.startLine&&J.endLine===Z.endLine&&J.startColumn===Z.startColumn&&J.endColumn===Z.endColumn,T2=(J)=>J&&{name:J.name,value:J.value,text:J.text,implicit:J.implicit,parsedOk:J.parsedOk!==!1,important:!!J.priority,disabled:J.status==="disabled",range:J.range},JJ=(J)=>J&&{styleSheetId:J.styleId?.styleSheetId,cssText:J.cssText,range:J.range,shorthandEntries:J.shorthandEntries??[],cssProperties:Array.isArray(J.cssProperties)?J.cssProperties.map(T2):[]},B2,q2=(J)=>J&&{text:J.text,selectors:Array.isArray(J.selectors)?J.selectors.map((Z)=>({text:Z.text,range:Z.range??J.range})):[]},tJ=(J)=>Array.isArray(J)?J.map((Z)=>({matchingSelectors:Z.matchingSelectors,rule:iJ(Z.rule)})):[],x2=(J)=>Array.isArray(J)?J.map((Z)=>({pseudoType:Z.pseudoId,matches:tJ(Z.matches)})):[],w2=(J)=>Array.isArray(J)?J.map((Z)=>({inlineStyle:JJ(Z.inlineStyle),matchedCSSRules:tJ(Z.matchedCSSRules)})):[],y2,f2=`
15
+ `,iZ=1,dZ=8,gZ="/var/run/usbmuxd",LQ=62078,m=(...J)=>{if(process.env.INSPECT_WEBKIT_DEBUG)console.error("[lockdown]",...J)},v2,b2,h2,u2,l2,p2,sZ,IQ,_Q,H0,K0,F0,D0,U0,N0,O0,M0=(J,Q)=>!!J&&!!Q&&J.startLine===Q.startLine&&J.endLine===Q.endLine&&J.startColumn===Q.startColumn&&J.endColumn===Q.endColumn,B0=(J)=>J&&{name:J.name,value:J.value,text:J.text,implicit:J.implicit,parsedOk:J.parsedOk!==!1,important:!!J.priority,disabled:J.status==="disabled",range:J.range},JJ=(J)=>J&&{styleSheetId:J.styleId?.styleSheetId,cssText:J.cssText,range:J.range,shorthandEntries:J.shorthandEntries??[],cssProperties:Array.isArray(J.cssProperties)?J.cssProperties.map(B0):[]},T0,q0=(J)=>J&&{text:J.text,selectors:Array.isArray(J.selectors)?J.selectors.map((Q)=>({text:Q.text,range:Q.range??J.range})):[]},tJ=(J)=>Array.isArray(J)?J.map((Q)=>({matchingSelectors:Q.matchingSelectors,rule:iJ(Q.rule)})):[],x0=(J)=>Array.isArray(J)?J.map((Q)=>({pseudoType:Q.pseudoId,matches:tJ(Q.matches)})):[],w0=(J)=>Array.isArray(J)?J.map((Q)=>({inlineStyle:JJ(Q.inlineStyle),matchedCSSRules:tJ(Q.matchedCSSRules)})):[],y0,f0=`
16
16
  function __sd_simulate(p){
17
17
  var el = document.elementFromPoint(p.x, p.y);
18
18
  if (!el) return false;
@@ -27,27 +27,27 @@ function __sd_simulate(p){
27
27
  });
28
28
  el.dispatchEvent(ev);
29
29
  return true;
30
- }`,b2=65536,l2,p2,i2,n2=1500;var nZ=F0(()=>{T0=Object.create,B0=Object.getPrototypeOf,UZ=Object.defineProperty,q0=Object.getOwnPropertyNames,x0=Object.prototype.hasOwnProperty;i=E0(import.meta.url),t=n((J,Z)=>{var $=["nodebuffer","arraybuffer","fragments"],Q=typeof Blob<"u";if(Q)$.push("blob");Z.exports={BINARY_TYPES:$,CLOSE_TIMEOUT:30000,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Q,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}}),CJ=n((J,Z)=>{var{EMPTY_BUFFER:$}=t(),Q=Buffer[Symbol.species];function G(R,_){if(R.length===0)return $;if(R.length===1)return R[0];let H=Buffer.allocUnsafe(_),A=0;for(let E=0;E<R.length;E++){let M=R[E];H.set(M,A),A+=M.length}if(A<_)return new Q(H.buffer,H.byteOffset,A);return H}function Y(R,_,H,A,E){for(let M=0;M<E;M++)H[A+M]=R[M]^_[M&3]}function X(R,_){for(let H=0;H<R.length;H++)R[H]^=_[H&3]}function W(R){if(R.length===R.buffer.byteLength)return R.buffer;return R.buffer.slice(R.byteOffset,R.byteOffset+R.length)}function z(R){if(z.readOnly=!0,Buffer.isBuffer(R))return R;let _;if(R instanceof ArrayBuffer)_=new Q(R);else if(ArrayBuffer.isView(R))_=new Q(R.buffer,R.byteOffset,R.byteLength);else _=Buffer.from(R),z.readOnly=!1;return _}if(Z.exports={concat:G,mask:Y,toArrayBuffer:W,toBuffer:z,unmask:X},!process.env.WS_NO_BUFFER_UTIL)try{let R=(()=>{throw Error("Cannot require module bufferutil")})();Z.exports.mask=function(_,H,A,E,M){if(M<48)Y(_,H,A,E,M);else R.mask(_,H,A,E,M)},Z.exports.unmask=function(_,H){if(_.length<32)X(_,H);else R.unmask(_,H)}}catch(R){}}),I0=n((J,Z)=>{var $=Symbol("kDone"),Q=Symbol("kRun");class G{constructor(Y){this[$]=()=>{this.pending--,this[Q]()},this.concurrency=Y||1/0,this.jobs=[],this.pending=0}add(Y){this.jobs.push(Y),this[Q]()}[Q](){if(this.pending===this.concurrency)return;if(this.jobs.length){let Y=this.jobs.shift();this.pending++,Y(this[$])}}}Z.exports=G}),UJ=n((J,Z)=>{var $=i("zlib"),Q=CJ(),G=I0(),{kStatusCode:Y}=t(),X=Buffer[Symbol.species],W=Buffer.from([0,0,255,255]),z=Symbol("permessage-deflate"),R=Symbol("total-length"),_=Symbol("callback"),H=Symbol("buffers"),A=Symbol("error"),E;class M{constructor(j){if(this._options=j||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!E){let U=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;E=new G(U)}}static get extensionName(){return"permessage-deflate"}offer(){let j={};if(this._options.serverNoContextTakeover)j.server_no_context_takeover=!0;if(this._options.clientNoContextTakeover)j.client_no_context_takeover=!0;if(this._options.serverMaxWindowBits)j.server_max_window_bits=this._options.serverMaxWindowBits;if(this._options.clientMaxWindowBits)j.client_max_window_bits=this._options.clientMaxWindowBits;else if(this._options.clientMaxWindowBits==null)j.client_max_window_bits=!0;return j}accept(j){return j=this.normalizeParams(j),this.params=this._isServer?this.acceptAsServer(j):this.acceptAsClient(j),this.params}cleanup(){if(this._inflate)this._inflate.close(),this._inflate=null;if(this._deflate){let j=this._deflate[_];if(this._deflate.close(),this._deflate=null,j)j(Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(j){let U=this._options,O=j.find((N)=>{if(U.serverNoContextTakeover===!1&&N.server_no_context_takeover||N.server_max_window_bits&&(U.serverMaxWindowBits===!1||typeof U.serverMaxWindowBits==="number"&&U.serverMaxWindowBits>N.server_max_window_bits)||typeof U.clientMaxWindowBits==="number"&&!N.client_max_window_bits)return!1;return!0});if(!O)throw Error("None of the extension offers can be accepted");if(U.serverNoContextTakeover)O.server_no_context_takeover=!0;if(U.clientNoContextTakeover)O.client_no_context_takeover=!0;if(typeof U.serverMaxWindowBits==="number")O.server_max_window_bits=U.serverMaxWindowBits;if(typeof U.clientMaxWindowBits==="number")O.client_max_window_bits=U.clientMaxWindowBits;else if(O.client_max_window_bits===!0||U.clientMaxWindowBits===!1)delete O.client_max_window_bits;return O}acceptAsClient(j){let U=j[0];if(this._options.clientNoContextTakeover===!1&&U.client_no_context_takeover)throw Error('Unexpected parameter "client_no_context_takeover"');if(!U.client_max_window_bits){if(typeof this._options.clientMaxWindowBits==="number")U.client_max_window_bits=this._options.clientMaxWindowBits}else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==="number"&&U.client_max_window_bits>this._options.clientMaxWindowBits)throw Error('Unexpected or invalid parameter "client_max_window_bits"');return U}normalizeParams(j){return j.forEach((U)=>{Object.keys(U).forEach((O)=>{let N=U[O];if(N.length>1)throw Error(`Parameter "${O}" must have only a single value`);if(N=N[0],O==="client_max_window_bits"){if(N!==!0){let K=+N;if(!Number.isInteger(K)||K<8||K>15)throw TypeError(`Invalid value for parameter "${O}": ${N}`);N=K}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${O}": ${N}`)}else if(O==="server_max_window_bits"){let K=+N;if(!Number.isInteger(K)||K<8||K>15)throw TypeError(`Invalid value for parameter "${O}": ${N}`);N=K}else if(O==="client_no_context_takeover"||O==="server_no_context_takeover"){if(N!==!0)throw TypeError(`Invalid value for parameter "${O}": ${N}`)}else throw Error(`Unknown parameter "${O}"`);U[O]=N})}),j}decompress(j,U,O){E.add((N)=>{this._decompress(j,U,(K,V)=>{N(),O(K,V)})})}compress(j,U,O){E.add((N)=>{this._compress(j,U,(K,V)=>{N(),O(K,V)})})}_decompress(j,U,O){let N=this._isServer?"client":"server";if(!this._inflate){let K=`${N}_max_window_bits`,V=typeof this.params[K]!=="number"?$.Z_DEFAULT_WINDOWBITS:this.params[K];this._inflate=$.createInflateRaw({...this._options.zlibInflateOptions,windowBits:V}),this._inflate[z]=this,this._inflate[R]=0,this._inflate[H]=[],this._inflate.on("error",C),this._inflate.on("data",P)}if(this._inflate[_]=O,this._inflate.write(j),U)this._inflate.write(W);this._inflate.flush(()=>{let K=this._inflate[A];if(K){this._inflate.close(),this._inflate=null,O(K);return}let V=Q.concat(this._inflate[H],this._inflate[R]);if(this._inflate._readableState.endEmitted)this._inflate.close(),this._inflate=null;else if(this._inflate[R]=0,this._inflate[H]=[],U&&this.params[`${N}_no_context_takeover`])this._inflate.reset();O(null,V)})}_compress(j,U,O){let N=this._isServer?"server":"client";if(!this._deflate){let K=`${N}_max_window_bits`,V=typeof this.params[K]!=="number"?$.Z_DEFAULT_WINDOWBITS:this.params[K];this._deflate=$.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:V}),this._deflate[R]=0,this._deflate[H]=[],this._deflate.on("data",B)}this._deflate[_]=O,this._deflate.write(j),this._deflate.flush($.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let K=Q.concat(this._deflate[H],this._deflate[R]);if(U)K=new X(K.buffer,K.byteOffset,K.length-4);if(this._deflate[_]=null,this._deflate[R]=0,this._deflate[H]=[],U&&this.params[`${N}_no_context_takeover`])this._deflate.reset();O(null,K)})}}Z.exports=M;function B(j){this[H].push(j),this[R]+=j.length}function P(j){if(this[R]+=j.length,this[z]._maxPayload<1||this[R]<=this[z]._maxPayload){this[H].push(j);return}this[A]=RangeError("Max payload size exceeded"),this[A].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[A][Y]=1009,this.removeListener("data",P),this.reset()}function C(j){if(this[z]._inflate=null,this[A]){this[_](this[A]);return}j[Y]=1007,this[_](j)}}),NJ=n((J,Z)=>{var{isUtf8:$}=i("buffer"),{hasBlob:Q}=t(),G=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function Y(z){return z>=1000&&z<=1014&&z!==1004&&z!==1005&&z!==1006||z>=3000&&z<=4999}function X(z){let R=z.length,_=0;while(_<R)if((z[_]&128)===0)_++;else if((z[_]&224)===192){if(_+1===R||(z[_+1]&192)!==128||(z[_]&254)===192)return!1;_+=2}else if((z[_]&240)===224){if(_+2>=R||(z[_+1]&192)!==128||(z[_+2]&192)!==128||z[_]===224&&(z[_+1]&224)===128||z[_]===237&&(z[_+1]&224)===160)return!1;_+=3}else if((z[_]&248)===240){if(_+3>=R||(z[_+1]&192)!==128||(z[_+2]&192)!==128||(z[_+3]&192)!==128||z[_]===240&&(z[_+1]&240)===128||z[_]===244&&z[_+1]>143||z[_]>244)return!1;_+=4}else return!1;return!0}function W(z){return Q&&typeof z==="object"&&typeof z.arrayBuffer==="function"&&typeof z.type==="string"&&typeof z.stream==="function"&&(z[Symbol.toStringTag]==="Blob"||z[Symbol.toStringTag]==="File")}if(Z.exports={isBlob:W,isValidStatusCode:Y,isValidUTF8:X,tokenChars:G},$)Z.exports.isValidUTF8=function(z){return z.length<24?X(z):$(z)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let z=(()=>{throw Error("Cannot require module utf-8-validate")})();Z.exports.isValidUTF8=function(R){return R.length<32?X(R):z(R)}}catch(z){}}),jZ=n((J,Z)=>{var{Writable:$}=i("stream"),Q=UJ(),{BINARY_TYPES:G,EMPTY_BUFFER:Y,kStatusCode:X,kWebSocket:W}=t(),{concat:z,toArrayBuffer:R,unmask:_}=CJ(),{isValidStatusCode:H,isValidUTF8:A}=NJ(),E=Buffer[Symbol.species],M=0,B=1,P=2,C=3,j=4,U=5,O=6;class N extends ${constructor(K={}){super();this._allowSynchronousEvents=K.allowSynchronousEvents!==void 0?K.allowSynchronousEvents:!0,this._binaryType=K.binaryType||G[0],this._extensions=K.extensions||{},this._isServer=!!K.isServer,this._maxPayload=K.maxPayload|0,this._skipUTF8Validation=!!K.skipUTF8Validation,this[W]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=M}_write(K,V,D){if(this._opcode===8&&this._state==M)return D();this._bufferedBytes+=K.length,this._buffers.push(K),this.startLoop(D)}consume(K){if(this._bufferedBytes-=K,K===this._buffers[0].length)return this._buffers.shift();if(K<this._buffers[0].length){let D=this._buffers[0];return this._buffers[0]=new E(D.buffer,D.byteOffset+K,D.length-K),new E(D.buffer,D.byteOffset,K)}let V=Buffer.allocUnsafe(K);do{let D=this._buffers[0],L=V.length-K;if(K>=D.length)V.set(this._buffers.shift(),L);else V.set(new Uint8Array(D.buffer,D.byteOffset,K),L),this._buffers[0]=new E(D.buffer,D.byteOffset+K,D.length-K);K-=D.length}while(K>0);return V}startLoop(K){this._loop=!0;do switch(this._state){case M:this.getInfo(K);break;case B:this.getPayloadLength16(K);break;case P:this.getPayloadLength64(K);break;case C:this.getMask();break;case j:this.getData(K);break;case U:case O:this._loop=!1;return}while(this._loop);if(!this._errored)K()}getInfo(K){if(this._bufferedBytes<2){this._loop=!1;return}let V=this.consume(2);if((V[0]&48)!==0){let L=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");K(L);return}let D=(V[0]&64)===64;if(D&&!this._extensions[Q.extensionName]){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");K(L);return}if(this._fin=(V[0]&128)===128,this._opcode=V[0]&15,this._payloadLength=V[1]&127,this._opcode===0){if(D){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");K(L);return}if(!this._fragmented){let L=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");K(L);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let L=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");K(L);return}this._compressed=D}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let L=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");K(L);return}if(D){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");K(L);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let L=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");K(L);return}}else{let L=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");K(L);return}if(!this._fin&&!this._fragmented)this._fragmented=this._opcode;if(this._masked=(V[1]&128)===128,this._isServer){if(!this._masked){let L=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");K(L);return}}else if(this._masked){let L=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");K(L);return}if(this._payloadLength===126)this._state=B;else if(this._payloadLength===127)this._state=P;else this.haveLength(K)}getPayloadLength16(K){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(K)}getPayloadLength64(K){if(this._bufferedBytes<8){this._loop=!1;return}let V=this.consume(8),D=V.readUInt32BE(0);if(D>Math.pow(2,21)-1){let L=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");K(L);return}this._payloadLength=D*Math.pow(2,32)+V.readUInt32BE(4),this.haveLength(K)}haveLength(K){if(this._payloadLength&&this._opcode<8){if(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0){let V=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");K(V);return}}if(this._masked)this._state=C;else this._state=j}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=j}getData(K){let V=Y;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}if(V=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0)_(V,this._mask)}if(this._opcode>7){this.controlMessage(V,K);return}if(this._compressed){this._state=U,this.decompress(V,K);return}if(V.length)this._messageLength=this._totalPayloadLength,this._fragments.push(V);this.dataMessage(K)}decompress(K,V){this._extensions[Q.extensionName].decompress(K,this._fin,(L,q)=>{if(L)return V(L);if(q.length){if(this._messageLength+=q.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let x=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");V(x);return}this._fragments.push(q)}if(this.dataMessage(V),this._state===M)this.startLoop(V)})}dataMessage(K){if(!this._fin){this._state=M;return}let V=this._messageLength,D=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let L;if(this._binaryType==="nodebuffer")L=z(D,V);else if(this._binaryType==="arraybuffer")L=R(z(D,V));else if(this._binaryType==="blob")L=new Blob(D);else L=D;if(this._allowSynchronousEvents)this.emit("message",L,!0),this._state=M;else this._state=O,setImmediate(()=>{this.emit("message",L,!0),this._state=M,this.startLoop(K)})}else{let L=z(D,V);if(!this._skipUTF8Validation&&!A(L)){let q=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");K(q);return}if(this._state===U||this._allowSynchronousEvents)this.emit("message",L,!1),this._state=M;else this._state=O,setImmediate(()=>{this.emit("message",L,!1),this._state=M,this.startLoop(K)})}}controlMessage(K,V){if(this._opcode===8){if(K.length===0)this._loop=!1,this.emit("conclude",1005,Y),this.end();else{let D=K.readUInt16BE(0);if(!H(D)){let q=this.createError(RangeError,`invalid status code ${D}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");V(q);return}let L=new E(K.buffer,K.byteOffset+2,K.length-2);if(!this._skipUTF8Validation&&!A(L)){let q=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");V(q);return}this._loop=!1,this.emit("conclude",D,L),this.end()}this._state=M;return}if(this._allowSynchronousEvents)this.emit(this._opcode===9?"ping":"pong",K),this._state=M;else this._state=O,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",K),this._state=M,this.startLoop(V)})}createError(K,V,D,L,q){this._loop=!1,this._errored=!0;let x=new K(D?`Invalid WebSocket frame: ${V}`:V);return Error.captureStackTrace(x,this.createError),x.code=q,x[X]=L,x}}Z.exports=N}),AZ=n((J,Z)=>{var{Duplex:$}=i("stream"),{randomFillSync:Q}=i("crypto"),G=UJ(),{EMPTY_BUFFER:Y,kWebSocket:X,NOOP:W}=t(),{isBlob:z,isValidStatusCode:R}=NJ(),{mask:_,toBuffer:H}=CJ(),A=Symbol("kByteLength"),E=Buffer.alloc(4),M=8192,B,P=M,C=0,j=1,U=2;class O{constructor(V,D,L){if(this._extensions=D||{},L)this._generateMask=L,this._maskBuffer=Buffer.alloc(4);this._socket=V,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=C,this.onerror=W,this[X]=void 0}static frame(V,D){let L,q=!1,x=2,f=!1;if(D.mask){if(L=D.maskBuffer||E,D.generateMask)D.generateMask(L);else{if(P===M){if(B===void 0)B=Buffer.alloc(M);Q(B,0,M),P=0}L[0]=B[P++],L[1]=B[P++],L[2]=B[P++],L[3]=B[P++]}f=(L[0]|L[1]|L[2]|L[3])===0,x=6}let k;if(typeof V==="string")if((!D.mask||f)&&D[A]!==void 0)k=D[A];else V=Buffer.from(V),k=V.length;else k=V.length,q=D.mask&&D.readOnly&&!f;let p=k;if(k>=65536)x+=8,p=127;else if(k>125)x+=2,p=126;let v=Buffer.allocUnsafe(q?k+x:x);if(v[0]=D.fin?D.opcode|128:D.opcode,D.rsv1)v[0]|=64;if(v[1]=p,p===126)v.writeUInt16BE(k,2);else if(p===127)v[2]=v[3]=0,v.writeUIntBE(k,4,6);if(!D.mask)return[v,V];if(v[1]|=128,v[x-4]=L[0],v[x-3]=L[1],v[x-2]=L[2],v[x-1]=L[3],f)return[v,V];if(q)return _(V,L,v,x,k),[v];return _(V,L,V,0,k),[v,V]}close(V,D,L,q){let x;if(V===void 0)x=Y;else if(typeof V!=="number"||!R(V))throw TypeError("First argument must be a valid error code number");else if(D===void 0||!D.length)x=Buffer.allocUnsafe(2),x.writeUInt16BE(V,0);else{let k=Buffer.byteLength(D);if(k>123)throw RangeError("The message must not be greater than 123 bytes");if(x=Buffer.allocUnsafe(2+k),x.writeUInt16BE(V,0),typeof D==="string")x.write(D,2);else x.set(D,2)}let f={[A]:x.length,fin:!0,generateMask:this._generateMask,mask:L,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};if(this._state!==C)this.enqueue([this.dispatch,x,!1,f,q]);else this.sendFrame(O.frame(x,f),q)}ping(V,D,L){let q,x;if(typeof V==="string")q=Buffer.byteLength(V),x=!1;else if(z(V))q=V.size,x=!1;else V=H(V),q=V.length,x=H.readOnly;if(q>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[A]:q,fin:!0,generateMask:this._generateMask,mask:D,maskBuffer:this._maskBuffer,opcode:9,readOnly:x,rsv1:!1};if(z(V))if(this._state!==C)this.enqueue([this.getBlobData,V,!1,f,L]);else this.getBlobData(V,!1,f,L);else if(this._state!==C)this.enqueue([this.dispatch,V,!1,f,L]);else this.sendFrame(O.frame(V,f),L)}pong(V,D,L){let q,x;if(typeof V==="string")q=Buffer.byteLength(V),x=!1;else if(z(V))q=V.size,x=!1;else V=H(V),q=V.length,x=H.readOnly;if(q>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[A]:q,fin:!0,generateMask:this._generateMask,mask:D,maskBuffer:this._maskBuffer,opcode:10,readOnly:x,rsv1:!1};if(z(V))if(this._state!==C)this.enqueue([this.getBlobData,V,!1,f,L]);else this.getBlobData(V,!1,f,L);else if(this._state!==C)this.enqueue([this.dispatch,V,!1,f,L]);else this.sendFrame(O.frame(V,f),L)}send(V,D,L){let q=this._extensions[G.extensionName],x=D.binary?2:1,f=D.compress,k,p;if(typeof V==="string")k=Buffer.byteLength(V),p=!1;else if(z(V))k=V.size,p=!1;else V=H(V),k=V.length,p=H.readOnly;if(this._firstFragment){if(this._firstFragment=!1,f&&q&&q.params[q._isServer?"server_no_context_takeover":"client_no_context_takeover"])f=k>=q._threshold;this._compress=f}else f=!1,x=0;if(D.fin)this._firstFragment=!0;let v={[A]:k,fin:D.fin,generateMask:this._generateMask,mask:D.mask,maskBuffer:this._maskBuffer,opcode:x,readOnly:p,rsv1:f};if(z(V))if(this._state!==C)this.enqueue([this.getBlobData,V,this._compress,v,L]);else this.getBlobData(V,this._compress,v,L);else if(this._state!==C)this.enqueue([this.dispatch,V,this._compress,v,L]);else this.dispatch(V,this._compress,v,L)}getBlobData(V,D,L,q){this._bufferedBytes+=L[A],this._state=U,V.arrayBuffer().then((x)=>{if(this._socket.destroyed){let k=Error("The socket was closed while the blob was being read");process.nextTick(N,this,k,q);return}this._bufferedBytes-=L[A];let f=H(x);if(!D)this._state=C,this.sendFrame(O.frame(f,L),q),this.dequeue();else this.dispatch(f,D,L,q)}).catch((x)=>{process.nextTick(K,this,x,q)})}dispatch(V,D,L,q){if(!D){this.sendFrame(O.frame(V,L),q);return}let x=this._extensions[G.extensionName];this._bufferedBytes+=L[A],this._state=j,x.compress(V,L.fin,(f,k)=>{if(this._socket.destroyed){let p=Error("The socket was closed while data was being compressed");N(this,p,q);return}this._bufferedBytes-=L[A],this._state=C,L.readOnly=!1,this.sendFrame(O.frame(k,L),q),this.dequeue()})}dequeue(){while(this._state===C&&this._queue.length){let V=this._queue.shift();this._bufferedBytes-=V[3][A],Reflect.apply(V[0],this,V.slice(1))}}enqueue(V){this._bufferedBytes+=V[3][A],this._queue.push(V)}sendFrame(V,D){if(V.length===2)this._socket.cork(),this._socket.write(V[0]),this._socket.write(V[1],D),this._socket.uncork();else this._socket.write(V[0],D)}}Z.exports=O;function N(V,D,L){if(typeof L==="function")L(D);for(let q=0;q<V._queue.length;q++){let x=V._queue[q],f=x[x.length-1];if(typeof f==="function")f(D)}}function K(V,D,L){N(V,D,L),V.onerror(D)}}),f0=n((J,Z)=>{var{kForOnEventAttribute:$,kListener:Q}=t(),G=Symbol("kCode"),Y=Symbol("kData"),X=Symbol("kError"),W=Symbol("kMessage"),z=Symbol("kReason"),R=Symbol("kTarget"),_=Symbol("kType"),H=Symbol("kWasClean");class A{constructor(j){this[R]=null,this[_]=j}get target(){return this[R]}get type(){return this[_]}}Object.defineProperty(A.prototype,"target",{enumerable:!0}),Object.defineProperty(A.prototype,"type",{enumerable:!0});class E extends A{constructor(j,U={}){super(j);this[G]=U.code===void 0?0:U.code,this[z]=U.reason===void 0?"":U.reason,this[H]=U.wasClean===void 0?!1:U.wasClean}get code(){return this[G]}get reason(){return this[z]}get wasClean(){return this[H]}}Object.defineProperty(E.prototype,"code",{enumerable:!0}),Object.defineProperty(E.prototype,"reason",{enumerable:!0}),Object.defineProperty(E.prototype,"wasClean",{enumerable:!0});class M extends A{constructor(j,U={}){super(j);this[X]=U.error===void 0?null:U.error,this[W]=U.message===void 0?"":U.message}get error(){return this[X]}get message(){return this[W]}}Object.defineProperty(M.prototype,"error",{enumerable:!0}),Object.defineProperty(M.prototype,"message",{enumerable:!0});class B extends A{constructor(j,U={}){super(j);this[Y]=U.data===void 0?null:U.data}get data(){return this[Y]}}Object.defineProperty(B.prototype,"data",{enumerable:!0});var P={addEventListener(j,U,O={}){for(let K of this.listeners(j))if(!O[$]&&K[Q]===U&&!K[$])return;let N;if(j==="message")N=function(V,D){let L=new B("message",{data:D?V:V.toString()});L[R]=this,C(U,this,L)};else if(j==="close")N=function(V,D){let L=new E("close",{code:V,reason:D.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});L[R]=this,C(U,this,L)};else if(j==="error")N=function(V){let D=new M("error",{error:V,message:V.message});D[R]=this,C(U,this,D)};else if(j==="open")N=function(){let V=new A("open");V[R]=this,C(U,this,V)};else return;if(N[$]=!!O[$],N[Q]=U,O.once)this.once(j,N);else this.on(j,N)},removeEventListener(j,U){for(let O of this.listeners(j))if(O[Q]===U&&!O[$]){this.removeListener(j,O);break}}};Z.exports={CloseEvent:E,ErrorEvent:M,Event:A,EventTarget:P,MessageEvent:B};function C(j,U,O){if(typeof j==="object"&&j.handleEvent)j.handleEvent.call(j,O);else j.call(U,O)}}),gJ=n((J,Z)=>{var{tokenChars:$}=NJ();function Q(X,W,z){if(X[W]===void 0)X[W]=[z];else X[W].push(z)}function G(X){let W=Object.create(null),z=Object.create(null),R=!1,_=!1,H=!1,A,E,M=-1,B=-1,P=-1,C=0;for(;C<X.length;C++)if(B=X.charCodeAt(C),A===void 0)if(P===-1&&$[B]===1){if(M===-1)M=C}else if(C!==0&&(B===32||B===9)){if(P===-1&&M!==-1)P=C}else if(B===59||B===44){if(M===-1)throw SyntaxError(`Unexpected character at index ${C}`);if(P===-1)P=C;let U=X.slice(M,P);if(B===44)Q(W,U,z),z=Object.create(null);else A=U;M=P=-1}else throw SyntaxError(`Unexpected character at index ${C}`);else if(E===void 0)if(P===-1&&$[B]===1){if(M===-1)M=C}else if(B===32||B===9){if(P===-1&&M!==-1)P=C}else if(B===59||B===44){if(M===-1)throw SyntaxError(`Unexpected character at index ${C}`);if(P===-1)P=C;if(Q(z,X.slice(M,P),!0),B===44)Q(W,A,z),z=Object.create(null),A=void 0;M=P=-1}else if(B===61&&M!==-1&&P===-1)E=X.slice(M,C),M=P=-1;else throw SyntaxError(`Unexpected character at index ${C}`);else if(_){if($[B]!==1)throw SyntaxError(`Unexpected character at index ${C}`);if(M===-1)M=C;else if(!R)R=!0;_=!1}else if(H)if($[B]===1){if(M===-1)M=C}else if(B===34&&M!==-1)H=!1,P=C;else if(B===92)_=!0;else throw SyntaxError(`Unexpected character at index ${C}`);else if(B===34&&X.charCodeAt(C-1)===61)H=!0;else if(P===-1&&$[B]===1){if(M===-1)M=C}else if(M!==-1&&(B===32||B===9)){if(P===-1)P=C}else if(B===59||B===44){if(M===-1)throw SyntaxError(`Unexpected character at index ${C}`);if(P===-1)P=C;let U=X.slice(M,P);if(R)U=U.replace(/\\/g,""),R=!1;if(Q(z,E,U),B===44)Q(W,A,z),z=Object.create(null),A=void 0;E=void 0,M=P=-1}else throw SyntaxError(`Unexpected character at index ${C}`);if(M===-1||H||B===32||B===9)throw SyntaxError("Unexpected end of input");if(P===-1)P=C;let j=X.slice(M,P);if(A===void 0)Q(W,j,z);else{if(E===void 0)Q(z,j,!0);else if(R)Q(z,E,j.replace(/\\/g,""));else Q(z,E,j);Q(W,A,z)}return W}function Y(X){return Object.keys(X).map((W)=>{let z=X[W];if(!Array.isArray(z))z=[z];return z.map((R)=>{return[W].concat(Object.keys(R).map((_)=>{let H=R[_];if(!Array.isArray(H))H=[H];return H.map((A)=>A===!0?_:`${_}=${A}`).join("; ")})).join("; ")}).join(", ")}).join(", ")}Z.exports={format:Y,parse:G}}),dJ=n((J,Z)=>{var $=i("events"),Q=i("https"),G=i("http"),Y=i("net"),X=i("tls"),{randomBytes:W,createHash:z}=i("crypto"),{Duplex:R,Readable:_}=i("stream"),{URL:H}=i("url"),A=UJ(),E=jZ(),M=AZ(),{isBlob:B}=NJ(),{BINARY_TYPES:P,CLOSE_TIMEOUT:C,EMPTY_BUFFER:j,GUID:U,kForOnEventAttribute:O,kListener:N,kStatusCode:K,kWebSocket:V,NOOP:D}=t(),{EventTarget:{addEventListener:L,removeEventListener:q}}=f0(),{format:x,parse:f}=gJ(),{toBuffer:k}=CJ(),p=Symbol("kAborted"),v=[8,13],l=["CONNECTING","OPEN","CLOSING","CLOSED"],a=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class w extends ${constructor(F,T,y){super();if(this._binaryType=P[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=j,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=w.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,F!==null){if(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,T===void 0)T=[];else if(!Array.isArray(T))if(typeof T==="object"&&T!==null)y=T,T=[];else T=[T];o(this,F,T,y)}else this._autoPong=y.autoPong,this._closeTimeout=y.closeTimeout,this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(F){if(!P.includes(F))return;if(this._binaryType=F,this._receiver)this._receiver._binaryType=F}get bufferedAmount(){if(!this._socket)return this._bufferedAmount;return this._socket._writableState.length+this._sender._bufferedBytes}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(F,T,y){let b=new E({allowSynchronousEvents:y.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:y.maxPayload,skipUTF8Validation:y.skipUTF8Validation}),S=new M(F,this._extensions,y.generateMask);if(this._receiver=b,this._sender=S,this._socket=F,b[V]=this,S[V]=this,F[V]=this,b.on("conclude",J0),b.on("drain",Z0),b.on("error",$0),b.on("message",Q0),b.on("ping",Y0),b.on("pong",G0),S.onerror=X0,F.setTimeout)F.setTimeout(0);if(F.setNoDelay)F.setNoDelay();if(T.length>0)F.unshift(T);F.on("close",GZ),F.on("data",RJ),F.on("end",XZ),F.on("error",VZ),this._readyState=w.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=w.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}if(this._extensions[A.extensionName])this._extensions[A.extensionName].cleanup();this._receiver.removeAllListeners(),this._readyState=w.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(F,T){if(this.readyState===w.CLOSED)return;if(this.readyState===w.CONNECTING){d(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===w.CLOSING){if(this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted))this._socket.end();return}this._readyState=w.CLOSING,this._sender.close(F,T,!this._isServer,(y)=>{if(y)return;if(this._closeFrameSent=!0,this._closeFrameReceived||this._receiver._writableState.errorEmitted)this._socket.end()}),YZ(this)}pause(){if(this.readyState===w.CONNECTING||this.readyState===w.CLOSED)return;this._paused=!0,this._socket.pause()}ping(F,T,y){if(this.readyState===w.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof F==="function")y=F,F=T=void 0;else if(typeof T==="function")y=T,T=void 0;if(typeof F==="number")F=F.toString();if(this.readyState!==w.OPEN){xJ(this,F,y);return}if(T===void 0)T=!this._isServer;this._sender.ping(F||j,T,y)}pong(F,T,y){if(this.readyState===w.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof F==="function")y=F,F=T=void 0;else if(typeof T==="function")y=T,T=void 0;if(typeof F==="number")F=F.toString();if(this.readyState!==w.OPEN){xJ(this,F,y);return}if(T===void 0)T=!this._isServer;this._sender.pong(F||j,T,y)}resume(){if(this.readyState===w.CONNECTING||this.readyState===w.CLOSED)return;if(this._paused=!1,!this._receiver._writableState.needDrain)this._socket.resume()}send(F,T,y){if(this.readyState===w.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof T==="function")y=T,T={};if(typeof F==="number")F=F.toString();if(this.readyState!==w.OPEN){xJ(this,F,y);return}let b={binary:typeof F!=="string",mask:!this._isServer,compress:!0,fin:!0,...T};if(!this._extensions[A.extensionName])b.compress=!1;this._sender.send(F||j,b,y)}terminate(){if(this.readyState===w.CLOSED)return;if(this.readyState===w.CONNECTING){d(this,this._req,"WebSocket was closed before the connection was established");return}if(this._socket)this._readyState=w.CLOSING,this._socket.destroy()}}Object.defineProperty(w,"CONNECTING",{enumerable:!0,value:l.indexOf("CONNECTING")}),Object.defineProperty(w.prototype,"CONNECTING",{enumerable:!0,value:l.indexOf("CONNECTING")}),Object.defineProperty(w,"OPEN",{enumerable:!0,value:l.indexOf("OPEN")}),Object.defineProperty(w.prototype,"OPEN",{enumerable:!0,value:l.indexOf("OPEN")}),Object.defineProperty(w,"CLOSING",{enumerable:!0,value:l.indexOf("CLOSING")}),Object.defineProperty(w.prototype,"CLOSING",{enumerable:!0,value:l.indexOf("CLOSING")}),Object.defineProperty(w,"CLOSED",{enumerable:!0,value:l.indexOf("CLOSED")}),Object.defineProperty(w.prototype,"CLOSED",{enumerable:!0,value:l.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((F)=>{Object.defineProperty(w.prototype,F,{enumerable:!0})}),["open","error","close","message"].forEach((F)=>{Object.defineProperty(w.prototype,`on${F}`,{enumerable:!0,get(){for(let T of this.listeners(F))if(T[O])return T[N];return null},set(T){for(let y of this.listeners(F))if(y[O]){this.removeListener(F,y);break}if(typeof T!=="function")return;this.addEventListener(F,T,{[O]:!0})}})}),w.prototype.addEventListener=L,w.prototype.removeEventListener=q,Z.exports=w;function o(F,T,y,b){let S={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:C,protocolVersion:v[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...b,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(F._autoPong=S.autoPong,F._closeTimeout=S.closeTimeout,!v.includes(S.protocolVersion))throw RangeError(`Unsupported protocol version: ${S.protocolVersion} (supported versions: ${v.join(", ")})`);let u;if(T instanceof H)u=T;else try{u=new H(T)}catch{throw SyntaxError(`Invalid URL: ${T}`)}if(u.protocol==="http:")u.protocol="ws:";else if(u.protocol==="https:")u.protocol="wss:";F._url=u.href;let YJ=u.protocol==="wss:",GJ=u.protocol==="ws+unix:",HJ;if(u.protocol!=="ws:"&&!YJ&&!GJ)HJ=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`;else if(GJ&&!u.pathname)HJ="The URL's pathname is empty";else if(u.hash)HJ="The URL contains a fragment identifier";if(HJ){let h=SyntaxError(HJ);if(F._redirects===0)throw h;else{s(F,h);return}}let zZ=YJ?443:80,WZ=W(16).toString("base64"),HZ=YJ?Q.request:G.request,KJ=new Set,FJ;if(S.createConnection=S.createConnection||(YJ?qJ:BJ),S.defaultPort=S.defaultPort||zZ,S.port=u.port||zZ,S.host=u.hostname.startsWith("[")?u.hostname.slice(1,-1):u.hostname,S.headers={...S.headers,"Sec-WebSocket-Version":S.protocolVersion,"Sec-WebSocket-Key":WZ,Connection:"Upgrade",Upgrade:"websocket"},S.path=u.pathname+u.search,S.timeout=S.handshakeTimeout,S.perMessageDeflate)FJ=new A({...S.perMessageDeflate,isServer:!1,maxPayload:S.maxPayload}),S.headers["Sec-WebSocket-Extensions"]=x({[A.extensionName]:FJ.offer()});if(y.length){for(let h of y){if(typeof h!=="string"||!a.test(h)||KJ.has(h))throw SyntaxError("An invalid or duplicated subprotocol was specified");KJ.add(h)}S.headers["Sec-WebSocket-Protocol"]=y.join(",")}if(S.origin)if(S.protocolVersion<13)S.headers["Sec-WebSocket-Origin"]=S.origin;else S.headers.Origin=S.origin;if(u.username||u.password)S.auth=`${u.username}:${u.password}`;if(GJ){let h=S.path.split(":");S.socketPath=h[0],S.path=h[1]}let c;if(S.followRedirects){if(F._redirects===0){F._originalIpc=GJ,F._originalSecure=YJ,F._originalHostOrSocketPath=GJ?S.socketPath:u.host;let h=b&&b.headers;if(b={...b,headers:{}},h)for(let[g,XJ]of Object.entries(h))b.headers[g.toLowerCase()]=XJ}else if(F.listenerCount("redirect")===0){let h=GJ?F._originalIpc?S.socketPath===F._originalHostOrSocketPath:!1:F._originalIpc?!1:u.host===F._originalHostOrSocketPath;if(!h||F._originalSecure&&!YJ){if(delete S.headers.authorization,delete S.headers.cookie,!h)delete S.headers.host;S.auth=void 0}}if(S.auth&&!b.headers.authorization)b.headers.authorization="Basic "+Buffer.from(S.auth).toString("base64");if(c=F._req=HZ(S),F._redirects)F.emit("redirect",F.url,c)}else c=F._req=HZ(S);if(S.timeout)c.on("timeout",()=>{d(F,c,"Opening handshake has timed out")});if(c.on("error",(h)=>{if(c===null||c[p])return;c=F._req=null,s(F,h)}),c.on("response",(h)=>{let g=h.headers.location,XJ=h.statusCode;if(g&&S.followRedirects&&XJ>=300&&XJ<400){if(++F._redirects>S.maxRedirects){d(F,c,"Maximum redirects exceeded");return}c.abort();let DJ;try{DJ=new H(g,T)}catch(KZ){let VJ=SyntaxError(`Invalid URL: ${g}`);s(F,VJ);return}o(F,DJ,y,b)}else if(!F.emit("unexpected-response",c,h))d(F,c,`Unexpected server response: ${h.statusCode}`)}),c.on("upgrade",(h,g,XJ)=>{if(F.emit("upgrade",h),F.readyState!==w.CONNECTING)return;c=F._req=null;let DJ=h.headers.upgrade;if(DJ===void 0||DJ.toLowerCase()!=="websocket"){d(F,g,"Invalid Upgrade header");return}let KZ=z("sha1").update(WZ+U).digest("base64");if(h.headers["sec-websocket-accept"]!==KZ){d(F,g,"Invalid Sec-WebSocket-Accept header");return}let VJ=h.headers["sec-websocket-protocol"],OJ;if(VJ!==void 0){if(!KJ.size)OJ="Server sent a subprotocol but none was requested";else if(!KJ.has(VJ))OJ="Server sent an invalid subprotocol"}else if(KJ.size)OJ="Server sent no subprotocol";if(OJ){d(F,g,OJ);return}if(VJ)F._protocol=VJ;let FZ=h.headers["sec-websocket-extensions"];if(FZ!==void 0){if(!FJ){d(F,g,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let wJ;try{wJ=f(FZ)}catch(SJ){d(F,g,"Invalid Sec-WebSocket-Extensions header");return}let DZ=Object.keys(wJ);if(DZ.length!==1||DZ[0]!==A.extensionName){d(F,g,"Server indicated an extension that was not requested");return}try{FJ.accept(wJ[A.extensionName])}catch(SJ){d(F,g,"Invalid Sec-WebSocket-Extensions header");return}F._extensions[A.extensionName]=FJ}F.setSocket(g,XJ,{allowSynchronousEvents:S.allowSynchronousEvents,generateMask:S.generateMask,maxPayload:S.maxPayload,skipUTF8Validation:S.skipUTF8Validation})}),S.finishRequest)S.finishRequest(c,F);else c.end()}function s(F,T){F._readyState=w.CLOSING,F._errorEmitted=!0,F.emit("error",T),F.emitClose()}function BJ(F){return F.path=F.socketPath,Y.connect(F)}function qJ(F){if(F.path=void 0,!F.servername&&F.servername!=="")F.servername=Y.isIP(F.host)?"":F.host;return X.connect(F)}function d(F,T,y){F._readyState=w.CLOSING;let b=Error(y);if(Error.captureStackTrace(b,d),T.setHeader){if(T[p]=!0,T.abort(),T.socket&&!T.socket.destroyed)T.socket.destroy();process.nextTick(s,F,b)}else T.destroy(b),T.once("error",F.emit.bind(F,"error")),T.once("close",F.emitClose.bind(F))}function xJ(F,T,y){if(T){let b=B(T)?T.size:k(T).length;if(F._socket)F._sender._bufferedBytes+=b;else F._bufferedAmount+=b}if(y){let b=Error(`WebSocket is not open: readyState ${F.readyState} (${l[F.readyState]})`);process.nextTick(y,b)}}function J0(F,T){let y=this[V];if(y._closeFrameReceived=!0,y._closeMessage=T,y._closeCode=F,y._socket[V]===void 0)return;if(y._socket.removeListener("data",RJ),process.nextTick(QZ,y._socket),F===1005)y.close();else y.close(F,T)}function Z0(){let F=this[V];if(!F.isPaused)F._socket.resume()}function $0(F){let T=this[V];if(T._socket[V]!==void 0)T._socket.removeListener("data",RJ),process.nextTick(QZ,T._socket),T.close(F[K]);if(!T._errorEmitted)T._errorEmitted=!0,T.emit("error",F)}function $Z(){this[V].emitClose()}function Q0(F,T){this[V].emit("message",F,T)}function Y0(F){let T=this[V];if(T._autoPong)T.pong(F,!this._isServer,D);T.emit("ping",F)}function G0(F){this[V].emit("pong",F)}function QZ(F){F.resume()}function X0(F){let T=this[V];if(T.readyState===w.CLOSED)return;if(T.readyState===w.OPEN)T._readyState=w.CLOSING,YZ(T);if(this._socket.end(),!T._errorEmitted)T._errorEmitted=!0,T.emit("error",F)}function YZ(F){F._closeTimer=setTimeout(F._socket.destroy.bind(F._socket),F._closeTimeout)}function GZ(){let F=this[V];if(this.removeListener("close",GZ),this.removeListener("data",RJ),this.removeListener("end",XZ),F._readyState=w.CLOSING,!this._readableState.endEmitted&&!F._closeFrameReceived&&!F._receiver._writableState.errorEmitted&&this._readableState.length!==0){let T=this.read(this._readableState.length);F._receiver.write(T)}if(F._receiver.end(),this[V]=void 0,clearTimeout(F._closeTimer),F._receiver._writableState.finished||F._receiver._writableState.errorEmitted)F.emitClose();else F._receiver.on("error",$Z),F._receiver.on("finish",$Z)}function RJ(F){if(!this[V]._receiver.write(F))this.pause()}function XZ(){let F=this[V];F._readyState=w.CLOSING,F._receiver.end(),this.end()}function VZ(){let F=this[V];if(this.removeListener("error",VZ),this.on("error",D),F)F._readyState=w.CLOSING,this.destroy()}}),k0=n((J,Z)=>{var $=dJ(),{Duplex:Q}=i("stream");function G(z){z.emit("close")}function Y(){if(!this.destroyed&&this._writableState.finished)this.destroy()}function X(z){if(this.removeListener("error",X),this.destroy(),this.listenerCount("error")===0)this.emit("error",z)}function W(z,R){let _=!0,H=new Q({...R,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return z.on("message",function(E,M){let B=!M&&H._readableState.objectMode?E.toString():E;if(!H.push(B))z.pause()}),z.once("error",function(E){if(H.destroyed)return;_=!1,H.destroy(E)}),z.once("close",function(){if(H.destroyed)return;H.push(null)}),H._destroy=function(A,E){if(z.readyState===z.CLOSED){E(A),process.nextTick(G,H);return}let M=!1;if(z.once("error",function(P){M=!0,E(P)}),z.once("close",function(){if(!M)E(A);process.nextTick(G,H)}),_)z.terminate()},H._final=function(A){if(z.readyState===z.CONNECTING){z.once("open",function(){H._final(A)});return}if(z._socket===null)return;if(z._socket._writableState.finished){if(A(),H._readableState.endEmitted)H.destroy()}else z._socket.once("finish",function(){A()}),z.close()},H._read=function(){if(z.isPaused)z.resume()},H._write=function(A,E,M){if(z.readyState===z.CONNECTING){z.once("open",function(){H._write(A,E,M)});return}z.send(A,M)},H.on("end",Y),H.on("error",X),H}Z.exports=W}),MZ=n((J,Z)=>{var{tokenChars:$}=NJ();function Q(G){let Y=new Set,X=-1,W=-1,z=0;for(z;z<G.length;z++){let _=G.charCodeAt(z);if(W===-1&&$[_]===1){if(X===-1)X=z}else if(z!==0&&(_===32||_===9)){if(W===-1&&X!==-1)W=z}else if(_===44){if(X===-1)throw SyntaxError(`Unexpected character at index ${z}`);if(W===-1)W=z;let H=G.slice(X,W);if(Y.has(H))throw SyntaxError(`The "${H}" subprotocol is duplicated`);Y.add(H),X=W=-1}else throw SyntaxError(`Unexpected character at index ${z}`)}if(X===-1||W!==-1)throw SyntaxError("Unexpected end of input");let R=G.slice(X,z);if(Y.has(R))throw SyntaxError(`The "${R}" subprotocol is duplicated`);return Y.add(R),Y}Z.exports={parse:Q}}),v0=n((J,Z)=>{var $=i("events"),Q=i("http"),{Duplex:G}=i("stream"),{createHash:Y}=i("crypto"),X=gJ(),W=UJ(),z=MZ(),R=dJ(),{CLOSE_TIMEOUT:_,GUID:H,kWebSocket:A}=t(),E=/^[+/0-9A-Za-z]{22}==$/,M=0,B=1,P=2;class C extends ${constructor(V,D){super();if(V={allowSynchronousEvents:!0,autoPong:!0,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:_,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:R,...V},V.port==null&&!V.server&&!V.noServer||V.port!=null&&(V.server||V.noServer)||V.server&&V.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(V.port!=null)this._server=Q.createServer((L,q)=>{let x=Q.STATUS_CODES[426];q.writeHead(426,{"Content-Length":x.length,"Content-Type":"text/plain"}),q.end(x)}),this._server.listen(V.port,V.host,V.backlog,D);else if(V.server)this._server=V.server;if(this._server){let L=this.emit.bind(this,"connection");this._removeListeners=j(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(q,x,f)=>{this.handleUpgrade(q,x,f,L)}})}if(V.perMessageDeflate===!0)V.perMessageDeflate={};if(V.clientTracking)this.clients=new Set,this._shouldEmitClose=!1;this.options=V,this._state=M}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');if(!this._server)return null;return this._server.address()}close(V){if(this._state===P){if(V)this.once("close",()=>{V(Error("The server is not running"))});process.nextTick(U,this);return}if(V)this.once("close",V);if(this._state===B)return;if(this._state=B,this.options.noServer||this.options.server){if(this._server)this._removeListeners(),this._removeListeners=this._server=null;if(this.clients)if(!this.clients.size)process.nextTick(U,this);else this._shouldEmitClose=!0;else process.nextTick(U,this)}else{let D=this._server;this._removeListeners(),this._removeListeners=this._server=null,D.close(()=>{U(this)})}}shouldHandle(V){if(this.options.path){let D=V.url.indexOf("?");if((D!==-1?V.url.slice(0,D):V.url)!==this.options.path)return!1}return!0}handleUpgrade(V,D,L,q){D.on("error",O);let x=V.headers["sec-websocket-key"],f=V.headers.upgrade,k=+V.headers["sec-websocket-version"];if(V.method!=="GET"){K(this,V,D,405,"Invalid HTTP method");return}if(f===void 0||f.toLowerCase()!=="websocket"){K(this,V,D,400,"Invalid Upgrade header");return}if(x===void 0||!E.test(x)){K(this,V,D,400,"Missing or invalid Sec-WebSocket-Key header");return}if(k!==13&&k!==8){K(this,V,D,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(V)){N(D,400);return}let p=V.headers["sec-websocket-protocol"],v=new Set;if(p!==void 0)try{v=z.parse(p)}catch(w){K(this,V,D,400,"Invalid Sec-WebSocket-Protocol header");return}let l=V.headers["sec-websocket-extensions"],a={};if(this.options.perMessageDeflate&&l!==void 0){let w=new W({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let o=X.parse(l);if(o[W.extensionName])w.accept(o[W.extensionName]),a[W.extensionName]=w}catch(o){K(this,V,D,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let w={origin:V.headers[`${k===8?"sec-websocket-origin":"origin"}`],secure:!!(V.socket.authorized||V.socket.encrypted),req:V};if(this.options.verifyClient.length===2){this.options.verifyClient(w,(o,s,BJ,qJ)=>{if(!o)return N(D,s||401,BJ,qJ);this.completeUpgrade(a,x,v,V,D,L,q)});return}if(!this.options.verifyClient(w))return N(D,401)}this.completeUpgrade(a,x,v,V,D,L,q)}completeUpgrade(V,D,L,q,x,f,k){if(!x.readable||!x.writable)return x.destroy();if(x[A])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>M)return N(x,503);let v=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Y("sha1").update(D+H).digest("base64")}`],l=new this.options.WebSocket(null,void 0,this.options);if(L.size){let a=this.options.handleProtocols?this.options.handleProtocols(L,q):L.values().next().value;if(a)v.push(`Sec-WebSocket-Protocol: ${a}`),l._protocol=a}if(V[W.extensionName]){let a=V[W.extensionName].params,w=X.format({[W.extensionName]:[a]});v.push(`Sec-WebSocket-Extensions: ${w}`),l._extensions=V}if(this.emit("headers",v,q),x.write(v.concat(`\r
30
+ }`,b0=65536,l0,p0,i0,n0=1500;var nQ=FZ(()=>{BZ=Object.create,TZ=Object.getPrototypeOf,NQ=Object.defineProperty,qZ=Object.getOwnPropertyNames,xZ=Object.prototype.hasOwnProperty;i=EZ(import.meta.url),t=n((J,Q)=>{var Z=["nodebuffer","arraybuffer","fragments"],$=typeof Blob<"u";if($)Z.push("blob");Q.exports={BINARY_TYPES:Z,CLOSE_TIMEOUT:30000,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:$,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}}),CJ=n((J,Q)=>{var{EMPTY_BUFFER:Z}=t(),$=Buffer[Symbol.species];function G(R,_){if(R.length===0)return Z;if(R.length===1)return R[0];let H=Buffer.allocUnsafe(_),A=0;for(let E=0;E<R.length;E++){let M=R[E];H.set(M,A),A+=M.length}if(A<_)return new $(H.buffer,H.byteOffset,A);return H}function Y(R,_,H,A,E){for(let M=0;M<E;M++)H[A+M]=R[M]^_[M&3]}function X(R,_){for(let H=0;H<R.length;H++)R[H]^=_[H&3]}function W(R){if(R.length===R.buffer.byteLength)return R.buffer;return R.buffer.slice(R.byteOffset,R.byteOffset+R.length)}function z(R){if(z.readOnly=!0,Buffer.isBuffer(R))return R;let _;if(R instanceof ArrayBuffer)_=new $(R);else if(ArrayBuffer.isView(R))_=new $(R.buffer,R.byteOffset,R.byteLength);else _=Buffer.from(R),z.readOnly=!1;return _}if(Q.exports={concat:G,mask:Y,toArrayBuffer:W,toBuffer:z,unmask:X},!process.env.WS_NO_BUFFER_UTIL)try{let R=(()=>{throw Error("Cannot require module bufferutil")})();Q.exports.mask=function(_,H,A,E,M){if(M<48)Y(_,H,A,E,M);else R.mask(_,H,A,E,M)},Q.exports.unmask=function(_,H){if(_.length<32)X(_,H);else R.unmask(_,H)}}catch(R){}}),IZ=n((J,Q)=>{var Z=Symbol("kDone"),$=Symbol("kRun");class G{constructor(Y){this[Z]=()=>{this.pending--,this[$]()},this.concurrency=Y||1/0,this.jobs=[],this.pending=0}add(Y){this.jobs.push(Y),this[$]()}[$](){if(this.pending===this.concurrency)return;if(this.jobs.length){let Y=this.jobs.shift();this.pending++,Y(this[Z])}}}Q.exports=G}),NJ=n((J,Q)=>{var Z=i("zlib"),$=CJ(),G=IZ(),{kStatusCode:Y}=t(),X=Buffer[Symbol.species],W=Buffer.from([0,0,255,255]),z=Symbol("permessage-deflate"),R=Symbol("total-length"),_=Symbol("callback"),H=Symbol("buffers"),A=Symbol("error"),E;class M{constructor(j){if(this._options=j||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!E){let N=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;E=new G(N)}}static get extensionName(){return"permessage-deflate"}offer(){let j={};if(this._options.serverNoContextTakeover)j.server_no_context_takeover=!0;if(this._options.clientNoContextTakeover)j.client_no_context_takeover=!0;if(this._options.serverMaxWindowBits)j.server_max_window_bits=this._options.serverMaxWindowBits;if(this._options.clientMaxWindowBits)j.client_max_window_bits=this._options.clientMaxWindowBits;else if(this._options.clientMaxWindowBits==null)j.client_max_window_bits=!0;return j}accept(j){return j=this.normalizeParams(j),this.params=this._isServer?this.acceptAsServer(j):this.acceptAsClient(j),this.params}cleanup(){if(this._inflate)this._inflate.close(),this._inflate=null;if(this._deflate){let j=this._deflate[_];if(this._deflate.close(),this._deflate=null,j)j(Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(j){let N=this._options,U=j.find((O)=>{if(N.serverNoContextTakeover===!1&&O.server_no_context_takeover||O.server_max_window_bits&&(N.serverMaxWindowBits===!1||typeof N.serverMaxWindowBits==="number"&&N.serverMaxWindowBits>O.server_max_window_bits)||typeof N.clientMaxWindowBits==="number"&&!O.client_max_window_bits)return!1;return!0});if(!U)throw Error("None of the extension offers can be accepted");if(N.serverNoContextTakeover)U.server_no_context_takeover=!0;if(N.clientNoContextTakeover)U.client_no_context_takeover=!0;if(typeof N.serverMaxWindowBits==="number")U.server_max_window_bits=N.serverMaxWindowBits;if(typeof N.clientMaxWindowBits==="number")U.client_max_window_bits=N.clientMaxWindowBits;else if(U.client_max_window_bits===!0||N.clientMaxWindowBits===!1)delete U.client_max_window_bits;return U}acceptAsClient(j){let N=j[0];if(this._options.clientNoContextTakeover===!1&&N.client_no_context_takeover)throw Error('Unexpected parameter "client_no_context_takeover"');if(!N.client_max_window_bits){if(typeof this._options.clientMaxWindowBits==="number")N.client_max_window_bits=this._options.clientMaxWindowBits}else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits==="number"&&N.client_max_window_bits>this._options.clientMaxWindowBits)throw Error('Unexpected or invalid parameter "client_max_window_bits"');return N}normalizeParams(j){return j.forEach((N)=>{Object.keys(N).forEach((U)=>{let O=N[U];if(O.length>1)throw Error(`Parameter "${U}" must have only a single value`);if(O=O[0],U==="client_max_window_bits"){if(O!==!0){let K=+O;if(!Number.isInteger(K)||K<8||K>15)throw TypeError(`Invalid value for parameter "${U}": ${O}`);O=K}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${U}": ${O}`)}else if(U==="server_max_window_bits"){let K=+O;if(!Number.isInteger(K)||K<8||K>15)throw TypeError(`Invalid value for parameter "${U}": ${O}`);O=K}else if(U==="client_no_context_takeover"||U==="server_no_context_takeover"){if(O!==!0)throw TypeError(`Invalid value for parameter "${U}": ${O}`)}else throw Error(`Unknown parameter "${U}"`);N[U]=O})}),j}decompress(j,N,U){E.add((O)=>{this._decompress(j,N,(K,V)=>{O(),U(K,V)})})}compress(j,N,U){E.add((O)=>{this._compress(j,N,(K,V)=>{O(),U(K,V)})})}_decompress(j,N,U){let O=this._isServer?"client":"server";if(!this._inflate){let K=`${O}_max_window_bits`,V=typeof this.params[K]!=="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[K];this._inflate=Z.createInflateRaw({...this._options.zlibInflateOptions,windowBits:V}),this._inflate[z]=this,this._inflate[R]=0,this._inflate[H]=[],this._inflate.on("error",C),this._inflate.on("data",P)}if(this._inflate[_]=U,this._inflate.write(j),N)this._inflate.write(W);this._inflate.flush(()=>{let K=this._inflate[A];if(K){this._inflate.close(),this._inflate=null,U(K);return}let V=$.concat(this._inflate[H],this._inflate[R]);if(this._inflate._readableState.endEmitted)this._inflate.close(),this._inflate=null;else if(this._inflate[R]=0,this._inflate[H]=[],N&&this.params[`${O}_no_context_takeover`])this._inflate.reset();U(null,V)})}_compress(j,N,U){let O=this._isServer?"server":"client";if(!this._deflate){let K=`${O}_max_window_bits`,V=typeof this.params[K]!=="number"?Z.Z_DEFAULT_WINDOWBITS:this.params[K];this._deflate=Z.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:V}),this._deflate[R]=0,this._deflate[H]=[],this._deflate.on("data",T)}this._deflate[_]=U,this._deflate.write(j),this._deflate.flush(Z.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let K=$.concat(this._deflate[H],this._deflate[R]);if(N)K=new X(K.buffer,K.byteOffset,K.length-4);if(this._deflate[_]=null,this._deflate[R]=0,this._deflate[H]=[],N&&this.params[`${O}_no_context_takeover`])this._deflate.reset();U(null,K)})}}Q.exports=M;function T(j){this[H].push(j),this[R]+=j.length}function P(j){if(this[R]+=j.length,this[z]._maxPayload<1||this[R]<=this[z]._maxPayload){this[H].push(j);return}this[A]=RangeError("Max payload size exceeded"),this[A].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[A][Y]=1009,this.removeListener("data",P),this.reset()}function C(j){if(this[z]._inflate=null,this[A]){this[_](this[A]);return}j[Y]=1007,this[_](j)}}),OJ=n((J,Q)=>{var{isUtf8:Z}=i("buffer"),{hasBlob:$}=t(),G=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function Y(z){return z>=1000&&z<=1014&&z!==1004&&z!==1005&&z!==1006||z>=3000&&z<=4999}function X(z){let R=z.length,_=0;while(_<R)if((z[_]&128)===0)_++;else if((z[_]&224)===192){if(_+1===R||(z[_+1]&192)!==128||(z[_]&254)===192)return!1;_+=2}else if((z[_]&240)===224){if(_+2>=R||(z[_+1]&192)!==128||(z[_+2]&192)!==128||z[_]===224&&(z[_+1]&224)===128||z[_]===237&&(z[_+1]&224)===160)return!1;_+=3}else if((z[_]&248)===240){if(_+3>=R||(z[_+1]&192)!==128||(z[_+2]&192)!==128||(z[_+3]&192)!==128||z[_]===240&&(z[_+1]&240)===128||z[_]===244&&z[_+1]>143||z[_]>244)return!1;_+=4}else return!1;return!0}function W(z){return $&&typeof z==="object"&&typeof z.arrayBuffer==="function"&&typeof z.type==="string"&&typeof z.stream==="function"&&(z[Symbol.toStringTag]==="Blob"||z[Symbol.toStringTag]==="File")}if(Q.exports={isBlob:W,isValidStatusCode:Y,isValidUTF8:X,tokenChars:G},Z)Q.exports.isValidUTF8=function(z){return z.length<24?X(z):Z(z)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let z=(()=>{throw Error("Cannot require module utf-8-validate")})();Q.exports.isValidUTF8=function(R){return R.length<32?X(R):z(R)}}catch(z){}}),jQ=n((J,Q)=>{var{Writable:Z}=i("stream"),$=NJ(),{BINARY_TYPES:G,EMPTY_BUFFER:Y,kStatusCode:X,kWebSocket:W}=t(),{concat:z,toArrayBuffer:R,unmask:_}=CJ(),{isValidStatusCode:H,isValidUTF8:A}=OJ(),E=Buffer[Symbol.species],M=0,T=1,P=2,C=3,j=4,N=5,U=6;class O extends Z{constructor(K={}){super();this._allowSynchronousEvents=K.allowSynchronousEvents!==void 0?K.allowSynchronousEvents:!0,this._binaryType=K.binaryType||G[0],this._extensions=K.extensions||{},this._isServer=!!K.isServer,this._maxPayload=K.maxPayload|0,this._skipUTF8Validation=!!K.skipUTF8Validation,this[W]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=M}_write(K,V,D){if(this._opcode===8&&this._state==M)return D();this._bufferedBytes+=K.length,this._buffers.push(K),this.startLoop(D)}consume(K){if(this._bufferedBytes-=K,K===this._buffers[0].length)return this._buffers.shift();if(K<this._buffers[0].length){let D=this._buffers[0];return this._buffers[0]=new E(D.buffer,D.byteOffset+K,D.length-K),new E(D.buffer,D.byteOffset,K)}let V=Buffer.allocUnsafe(K);do{let D=this._buffers[0],L=V.length-K;if(K>=D.length)V.set(this._buffers.shift(),L);else V.set(new Uint8Array(D.buffer,D.byteOffset,K),L),this._buffers[0]=new E(D.buffer,D.byteOffset+K,D.length-K);K-=D.length}while(K>0);return V}startLoop(K){this._loop=!0;do switch(this._state){case M:this.getInfo(K);break;case T:this.getPayloadLength16(K);break;case P:this.getPayloadLength64(K);break;case C:this.getMask();break;case j:this.getData(K);break;case N:case U:this._loop=!1;return}while(this._loop);if(!this._errored)K()}getInfo(K){if(this._bufferedBytes<2){this._loop=!1;return}let V=this.consume(2);if((V[0]&48)!==0){let L=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");K(L);return}let D=(V[0]&64)===64;if(D&&!this._extensions[$.extensionName]){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");K(L);return}if(this._fin=(V[0]&128)===128,this._opcode=V[0]&15,this._payloadLength=V[1]&127,this._opcode===0){if(D){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");K(L);return}if(!this._fragmented){let L=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");K(L);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let L=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");K(L);return}this._compressed=D}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let L=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");K(L);return}if(D){let L=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");K(L);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let L=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");K(L);return}}else{let L=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");K(L);return}if(!this._fin&&!this._fragmented)this._fragmented=this._opcode;if(this._masked=(V[1]&128)===128,this._isServer){if(!this._masked){let L=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");K(L);return}}else if(this._masked){let L=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");K(L);return}if(this._payloadLength===126)this._state=T;else if(this._payloadLength===127)this._state=P;else this.haveLength(K)}getPayloadLength16(K){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(K)}getPayloadLength64(K){if(this._bufferedBytes<8){this._loop=!1;return}let V=this.consume(8),D=V.readUInt32BE(0);if(D>Math.pow(2,21)-1){let L=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");K(L);return}this._payloadLength=D*Math.pow(2,32)+V.readUInt32BE(4),this.haveLength(K)}haveLength(K){if(this._payloadLength&&this._opcode<8){if(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0){let V=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");K(V);return}}if(this._masked)this._state=C;else this._state=j}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=j}getData(K){let V=Y;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}if(V=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0)_(V,this._mask)}if(this._opcode>7){this.controlMessage(V,K);return}if(this._compressed){this._state=N,this.decompress(V,K);return}if(V.length)this._messageLength=this._totalPayloadLength,this._fragments.push(V);this.dataMessage(K)}decompress(K,V){this._extensions[$.extensionName].decompress(K,this._fin,(L,q)=>{if(L)return V(L);if(q.length){if(this._messageLength+=q.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let x=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");V(x);return}this._fragments.push(q)}if(this.dataMessage(V),this._state===M)this.startLoop(V)})}dataMessage(K){if(!this._fin){this._state=M;return}let V=this._messageLength,D=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let L;if(this._binaryType==="nodebuffer")L=z(D,V);else if(this._binaryType==="arraybuffer")L=R(z(D,V));else if(this._binaryType==="blob")L=new Blob(D);else L=D;if(this._allowSynchronousEvents)this.emit("message",L,!0),this._state=M;else this._state=U,setImmediate(()=>{this.emit("message",L,!0),this._state=M,this.startLoop(K)})}else{let L=z(D,V);if(!this._skipUTF8Validation&&!A(L)){let q=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");K(q);return}if(this._state===N||this._allowSynchronousEvents)this.emit("message",L,!1),this._state=M;else this._state=U,setImmediate(()=>{this.emit("message",L,!1),this._state=M,this.startLoop(K)})}}controlMessage(K,V){if(this._opcode===8){if(K.length===0)this._loop=!1,this.emit("conclude",1005,Y),this.end();else{let D=K.readUInt16BE(0);if(!H(D)){let q=this.createError(RangeError,`invalid status code ${D}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");V(q);return}let L=new E(K.buffer,K.byteOffset+2,K.length-2);if(!this._skipUTF8Validation&&!A(L)){let q=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");V(q);return}this._loop=!1,this.emit("conclude",D,L),this.end()}this._state=M;return}if(this._allowSynchronousEvents)this.emit(this._opcode===9?"ping":"pong",K),this._state=M;else this._state=U,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",K),this._state=M,this.startLoop(V)})}createError(K,V,D,L,q){this._loop=!1,this._errored=!0;let x=new K(D?`Invalid WebSocket frame: ${V}`:V);return Error.captureStackTrace(x,this.createError),x.code=q,x[X]=L,x}}Q.exports=O}),AQ=n((J,Q)=>{var{Duplex:Z}=i("stream"),{randomFillSync:$}=i("crypto"),G=NJ(),{EMPTY_BUFFER:Y,kWebSocket:X,NOOP:W}=t(),{isBlob:z,isValidStatusCode:R}=OJ(),{mask:_,toBuffer:H}=CJ(),A=Symbol("kByteLength"),E=Buffer.alloc(4),M=8192,T,P=M,C=0,j=1,N=2;class U{constructor(V,D,L){if(this._extensions=D||{},L)this._generateMask=L,this._maskBuffer=Buffer.alloc(4);this._socket=V,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=C,this.onerror=W,this[X]=void 0}static frame(V,D){let L,q=!1,x=2,f=!1;if(D.mask){if(L=D.maskBuffer||E,D.generateMask)D.generateMask(L);else{if(P===M){if(T===void 0)T=Buffer.alloc(M);$(T,0,M),P=0}L[0]=T[P++],L[1]=T[P++],L[2]=T[P++],L[3]=T[P++]}f=(L[0]|L[1]|L[2]|L[3])===0,x=6}let k;if(typeof V==="string")if((!D.mask||f)&&D[A]!==void 0)k=D[A];else V=Buffer.from(V),k=V.length;else k=V.length,q=D.mask&&D.readOnly&&!f;let p=k;if(k>=65536)x+=8,p=127;else if(k>125)x+=2,p=126;let v=Buffer.allocUnsafe(q?k+x:x);if(v[0]=D.fin?D.opcode|128:D.opcode,D.rsv1)v[0]|=64;if(v[1]=p,p===126)v.writeUInt16BE(k,2);else if(p===127)v[2]=v[3]=0,v.writeUIntBE(k,4,6);if(!D.mask)return[v,V];if(v[1]|=128,v[x-4]=L[0],v[x-3]=L[1],v[x-2]=L[2],v[x-1]=L[3],f)return[v,V];if(q)return _(V,L,v,x,k),[v];return _(V,L,V,0,k),[v,V]}close(V,D,L,q){let x;if(V===void 0)x=Y;else if(typeof V!=="number"||!R(V))throw TypeError("First argument must be a valid error code number");else if(D===void 0||!D.length)x=Buffer.allocUnsafe(2),x.writeUInt16BE(V,0);else{let k=Buffer.byteLength(D);if(k>123)throw RangeError("The message must not be greater than 123 bytes");if(x=Buffer.allocUnsafe(2+k),x.writeUInt16BE(V,0),typeof D==="string")x.write(D,2);else x.set(D,2)}let f={[A]:x.length,fin:!0,generateMask:this._generateMask,mask:L,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};if(this._state!==C)this.enqueue([this.dispatch,x,!1,f,q]);else this.sendFrame(U.frame(x,f),q)}ping(V,D,L){let q,x;if(typeof V==="string")q=Buffer.byteLength(V),x=!1;else if(z(V))q=V.size,x=!1;else V=H(V),q=V.length,x=H.readOnly;if(q>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[A]:q,fin:!0,generateMask:this._generateMask,mask:D,maskBuffer:this._maskBuffer,opcode:9,readOnly:x,rsv1:!1};if(z(V))if(this._state!==C)this.enqueue([this.getBlobData,V,!1,f,L]);else this.getBlobData(V,!1,f,L);else if(this._state!==C)this.enqueue([this.dispatch,V,!1,f,L]);else this.sendFrame(U.frame(V,f),L)}pong(V,D,L){let q,x;if(typeof V==="string")q=Buffer.byteLength(V),x=!1;else if(z(V))q=V.size,x=!1;else V=H(V),q=V.length,x=H.readOnly;if(q>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[A]:q,fin:!0,generateMask:this._generateMask,mask:D,maskBuffer:this._maskBuffer,opcode:10,readOnly:x,rsv1:!1};if(z(V))if(this._state!==C)this.enqueue([this.getBlobData,V,!1,f,L]);else this.getBlobData(V,!1,f,L);else if(this._state!==C)this.enqueue([this.dispatch,V,!1,f,L]);else this.sendFrame(U.frame(V,f),L)}send(V,D,L){let q=this._extensions[G.extensionName],x=D.binary?2:1,f=D.compress,k,p;if(typeof V==="string")k=Buffer.byteLength(V),p=!1;else if(z(V))k=V.size,p=!1;else V=H(V),k=V.length,p=H.readOnly;if(this._firstFragment){if(this._firstFragment=!1,f&&q&&q.params[q._isServer?"server_no_context_takeover":"client_no_context_takeover"])f=k>=q._threshold;this._compress=f}else f=!1,x=0;if(D.fin)this._firstFragment=!0;let v={[A]:k,fin:D.fin,generateMask:this._generateMask,mask:D.mask,maskBuffer:this._maskBuffer,opcode:x,readOnly:p,rsv1:f};if(z(V))if(this._state!==C)this.enqueue([this.getBlobData,V,this._compress,v,L]);else this.getBlobData(V,this._compress,v,L);else if(this._state!==C)this.enqueue([this.dispatch,V,this._compress,v,L]);else this.dispatch(V,this._compress,v,L)}getBlobData(V,D,L,q){this._bufferedBytes+=L[A],this._state=N,V.arrayBuffer().then((x)=>{if(this._socket.destroyed){let k=Error("The socket was closed while the blob was being read");process.nextTick(O,this,k,q);return}this._bufferedBytes-=L[A];let f=H(x);if(!D)this._state=C,this.sendFrame(U.frame(f,L),q),this.dequeue();else this.dispatch(f,D,L,q)}).catch((x)=>{process.nextTick(K,this,x,q)})}dispatch(V,D,L,q){if(!D){this.sendFrame(U.frame(V,L),q);return}let x=this._extensions[G.extensionName];this._bufferedBytes+=L[A],this._state=j,x.compress(V,L.fin,(f,k)=>{if(this._socket.destroyed){let p=Error("The socket was closed while data was being compressed");O(this,p,q);return}this._bufferedBytes-=L[A],this._state=C,L.readOnly=!1,this.sendFrame(U.frame(k,L),q),this.dequeue()})}dequeue(){while(this._state===C&&this._queue.length){let V=this._queue.shift();this._bufferedBytes-=V[3][A],Reflect.apply(V[0],this,V.slice(1))}}enqueue(V){this._bufferedBytes+=V[3][A],this._queue.push(V)}sendFrame(V,D){if(V.length===2)this._socket.cork(),this._socket.write(V[0]),this._socket.write(V[1],D),this._socket.uncork();else this._socket.write(V[0],D)}}Q.exports=U;function O(V,D,L){if(typeof L==="function")L(D);for(let q=0;q<V._queue.length;q++){let x=V._queue[q],f=x[x.length-1];if(typeof f==="function")f(D)}}function K(V,D,L){O(V,D,L),V.onerror(D)}}),fZ=n((J,Q)=>{var{kForOnEventAttribute:Z,kListener:$}=t(),G=Symbol("kCode"),Y=Symbol("kData"),X=Symbol("kError"),W=Symbol("kMessage"),z=Symbol("kReason"),R=Symbol("kTarget"),_=Symbol("kType"),H=Symbol("kWasClean");class A{constructor(j){this[R]=null,this[_]=j}get target(){return this[R]}get type(){return this[_]}}Object.defineProperty(A.prototype,"target",{enumerable:!0}),Object.defineProperty(A.prototype,"type",{enumerable:!0});class E extends A{constructor(j,N={}){super(j);this[G]=N.code===void 0?0:N.code,this[z]=N.reason===void 0?"":N.reason,this[H]=N.wasClean===void 0?!1:N.wasClean}get code(){return this[G]}get reason(){return this[z]}get wasClean(){return this[H]}}Object.defineProperty(E.prototype,"code",{enumerable:!0}),Object.defineProperty(E.prototype,"reason",{enumerable:!0}),Object.defineProperty(E.prototype,"wasClean",{enumerable:!0});class M extends A{constructor(j,N={}){super(j);this[X]=N.error===void 0?null:N.error,this[W]=N.message===void 0?"":N.message}get error(){return this[X]}get message(){return this[W]}}Object.defineProperty(M.prototype,"error",{enumerable:!0}),Object.defineProperty(M.prototype,"message",{enumerable:!0});class T extends A{constructor(j,N={}){super(j);this[Y]=N.data===void 0?null:N.data}get data(){return this[Y]}}Object.defineProperty(T.prototype,"data",{enumerable:!0});var P={addEventListener(j,N,U={}){for(let K of this.listeners(j))if(!U[Z]&&K[$]===N&&!K[Z])return;let O;if(j==="message")O=function(V,D){let L=new T("message",{data:D?V:V.toString()});L[R]=this,C(N,this,L)};else if(j==="close")O=function(V,D){let L=new E("close",{code:V,reason:D.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});L[R]=this,C(N,this,L)};else if(j==="error")O=function(V){let D=new M("error",{error:V,message:V.message});D[R]=this,C(N,this,D)};else if(j==="open")O=function(){let V=new A("open");V[R]=this,C(N,this,V)};else return;if(O[Z]=!!U[Z],O[$]=N,U.once)this.once(j,O);else this.on(j,O)},removeEventListener(j,N){for(let U of this.listeners(j))if(U[$]===N&&!U[Z]){this.removeListener(j,U);break}}};Q.exports={CloseEvent:E,ErrorEvent:M,Event:A,EventTarget:P,MessageEvent:T};function C(j,N,U){if(typeof j==="object"&&j.handleEvent)j.handleEvent.call(j,U);else j.call(N,U)}}),dJ=n((J,Q)=>{var{tokenChars:Z}=OJ();function $(X,W,z){if(X[W]===void 0)X[W]=[z];else X[W].push(z)}function G(X){let W=Object.create(null),z=Object.create(null),R=!1,_=!1,H=!1,A,E,M=-1,T=-1,P=-1,C=0;for(;C<X.length;C++)if(T=X.charCodeAt(C),A===void 0)if(P===-1&&Z[T]===1){if(M===-1)M=C}else if(C!==0&&(T===32||T===9)){if(P===-1&&M!==-1)P=C}else if(T===59||T===44){if(M===-1)throw SyntaxError(`Unexpected character at index ${C}`);if(P===-1)P=C;let N=X.slice(M,P);if(T===44)$(W,N,z),z=Object.create(null);else A=N;M=P=-1}else throw SyntaxError(`Unexpected character at index ${C}`);else if(E===void 0)if(P===-1&&Z[T]===1){if(M===-1)M=C}else if(T===32||T===9){if(P===-1&&M!==-1)P=C}else if(T===59||T===44){if(M===-1)throw SyntaxError(`Unexpected character at index ${C}`);if(P===-1)P=C;if($(z,X.slice(M,P),!0),T===44)$(W,A,z),z=Object.create(null),A=void 0;M=P=-1}else if(T===61&&M!==-1&&P===-1)E=X.slice(M,C),M=P=-1;else throw SyntaxError(`Unexpected character at index ${C}`);else if(_){if(Z[T]!==1)throw SyntaxError(`Unexpected character at index ${C}`);if(M===-1)M=C;else if(!R)R=!0;_=!1}else if(H)if(Z[T]===1){if(M===-1)M=C}else if(T===34&&M!==-1)H=!1,P=C;else if(T===92)_=!0;else throw SyntaxError(`Unexpected character at index ${C}`);else if(T===34&&X.charCodeAt(C-1)===61)H=!0;else if(P===-1&&Z[T]===1){if(M===-1)M=C}else if(M!==-1&&(T===32||T===9)){if(P===-1)P=C}else if(T===59||T===44){if(M===-1)throw SyntaxError(`Unexpected character at index ${C}`);if(P===-1)P=C;let N=X.slice(M,P);if(R)N=N.replace(/\\/g,""),R=!1;if($(z,E,N),T===44)$(W,A,z),z=Object.create(null),A=void 0;E=void 0,M=P=-1}else throw SyntaxError(`Unexpected character at index ${C}`);if(M===-1||H||T===32||T===9)throw SyntaxError("Unexpected end of input");if(P===-1)P=C;let j=X.slice(M,P);if(A===void 0)$(W,j,z);else{if(E===void 0)$(z,j,!0);else if(R)$(z,E,j.replace(/\\/g,""));else $(z,E,j);$(W,A,z)}return W}function Y(X){return Object.keys(X).map((W)=>{let z=X[W];if(!Array.isArray(z))z=[z];return z.map((R)=>{return[W].concat(Object.keys(R).map((_)=>{let H=R[_];if(!Array.isArray(H))H=[H];return H.map((A)=>A===!0?_:`${_}=${A}`).join("; ")})).join("; ")}).join(", ")}).join(", ")}Q.exports={format:Y,parse:G}}),gJ=n((J,Q)=>{var Z=i("events"),$=i("https"),G=i("http"),Y=i("net"),X=i("tls"),{randomBytes:W,createHash:z}=i("crypto"),{Duplex:R,Readable:_}=i("stream"),{URL:H}=i("url"),A=NJ(),E=jQ(),M=AQ(),{isBlob:T}=OJ(),{BINARY_TYPES:P,CLOSE_TIMEOUT:C,EMPTY_BUFFER:j,GUID:N,kForOnEventAttribute:U,kListener:O,kStatusCode:K,kWebSocket:V,NOOP:D}=t(),{EventTarget:{addEventListener:L,removeEventListener:q}}=fZ(),{format:x,parse:f}=dJ(),{toBuffer:k}=CJ(),p=Symbol("kAborted"),v=[8,13],l=["CONNECTING","OPEN","CLOSING","CLOSED"],a=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class w extends Z{constructor(F,B,y){super();if(this._binaryType=P[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=j,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=w.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,F!==null){if(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,B===void 0)B=[];else if(!Array.isArray(B))if(typeof B==="object"&&B!==null)y=B,B=[];else B=[B];o(this,F,B,y)}else this._autoPong=y.autoPong,this._closeTimeout=y.closeTimeout,this._isServer=!0}get binaryType(){return this._binaryType}set binaryType(F){if(!P.includes(F))return;if(this._binaryType=F,this._receiver)this._receiver._binaryType=F}get bufferedAmount(){if(!this._socket)return this._bufferedAmount;return this._socket._writableState.length+this._sender._bufferedBytes}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(F,B,y){let b=new E({allowSynchronousEvents:y.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:y.maxPayload,skipUTF8Validation:y.skipUTF8Validation}),S=new M(F,this._extensions,y.generateMask);if(this._receiver=b,this._sender=S,this._socket=F,b[V]=this,S[V]=this,F[V]=this,b.on("conclude",JZ),b.on("drain",QZ),b.on("error",ZZ),b.on("message",$Z),b.on("ping",YZ),b.on("pong",GZ),S.onerror=XZ,F.setTimeout)F.setTimeout(0);if(F.setNoDelay)F.setNoDelay();if(B.length>0)F.unshift(B);F.on("close",GQ),F.on("data",RJ),F.on("end",XQ),F.on("error",VQ),this._readyState=w.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=w.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}if(this._extensions[A.extensionName])this._extensions[A.extensionName].cleanup();this._receiver.removeAllListeners(),this._readyState=w.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(F,B){if(this.readyState===w.CLOSED)return;if(this.readyState===w.CONNECTING){g(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===w.CLOSING){if(this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted))this._socket.end();return}this._readyState=w.CLOSING,this._sender.close(F,B,!this._isServer,(y)=>{if(y)return;if(this._closeFrameSent=!0,this._closeFrameReceived||this._receiver._writableState.errorEmitted)this._socket.end()}),YQ(this)}pause(){if(this.readyState===w.CONNECTING||this.readyState===w.CLOSED)return;this._paused=!0,this._socket.pause()}ping(F,B,y){if(this.readyState===w.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof F==="function")y=F,F=B=void 0;else if(typeof B==="function")y=B,B=void 0;if(typeof F==="number")F=F.toString();if(this.readyState!==w.OPEN){xJ(this,F,y);return}if(B===void 0)B=!this._isServer;this._sender.ping(F||j,B,y)}pong(F,B,y){if(this.readyState===w.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof F==="function")y=F,F=B=void 0;else if(typeof B==="function")y=B,B=void 0;if(typeof F==="number")F=F.toString();if(this.readyState!==w.OPEN){xJ(this,F,y);return}if(B===void 0)B=!this._isServer;this._sender.pong(F||j,B,y)}resume(){if(this.readyState===w.CONNECTING||this.readyState===w.CLOSED)return;if(this._paused=!1,!this._receiver._writableState.needDrain)this._socket.resume()}send(F,B,y){if(this.readyState===w.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof B==="function")y=B,B={};if(typeof F==="number")F=F.toString();if(this.readyState!==w.OPEN){xJ(this,F,y);return}let b={binary:typeof F!=="string",mask:!this._isServer,compress:!0,fin:!0,...B};if(!this._extensions[A.extensionName])b.compress=!1;this._sender.send(F||j,b,y)}terminate(){if(this.readyState===w.CLOSED)return;if(this.readyState===w.CONNECTING){g(this,this._req,"WebSocket was closed before the connection was established");return}if(this._socket)this._readyState=w.CLOSING,this._socket.destroy()}}Object.defineProperty(w,"CONNECTING",{enumerable:!0,value:l.indexOf("CONNECTING")}),Object.defineProperty(w.prototype,"CONNECTING",{enumerable:!0,value:l.indexOf("CONNECTING")}),Object.defineProperty(w,"OPEN",{enumerable:!0,value:l.indexOf("OPEN")}),Object.defineProperty(w.prototype,"OPEN",{enumerable:!0,value:l.indexOf("OPEN")}),Object.defineProperty(w,"CLOSING",{enumerable:!0,value:l.indexOf("CLOSING")}),Object.defineProperty(w.prototype,"CLOSING",{enumerable:!0,value:l.indexOf("CLOSING")}),Object.defineProperty(w,"CLOSED",{enumerable:!0,value:l.indexOf("CLOSED")}),Object.defineProperty(w.prototype,"CLOSED",{enumerable:!0,value:l.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((F)=>{Object.defineProperty(w.prototype,F,{enumerable:!0})}),["open","error","close","message"].forEach((F)=>{Object.defineProperty(w.prototype,`on${F}`,{enumerable:!0,get(){for(let B of this.listeners(F))if(B[U])return B[O];return null},set(B){for(let y of this.listeners(F))if(y[U]){this.removeListener(F,y);break}if(typeof B!=="function")return;this.addEventListener(F,B,{[U]:!0})}})}),w.prototype.addEventListener=L,w.prototype.removeEventListener=q,Q.exports=w;function o(F,B,y,b){let S={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:C,protocolVersion:v[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...b,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(F._autoPong=S.autoPong,F._closeTimeout=S.closeTimeout,!v.includes(S.protocolVersion))throw RangeError(`Unsupported protocol version: ${S.protocolVersion} (supported versions: ${v.join(", ")})`);let u;if(B instanceof H)u=B;else try{u=new H(B)}catch{throw SyntaxError(`Invalid URL: ${B}`)}if(u.protocol==="http:")u.protocol="ws:";else if(u.protocol==="https:")u.protocol="wss:";F._url=u.href;let YJ=u.protocol==="wss:",GJ=u.protocol==="ws+unix:",HJ;if(u.protocol!=="ws:"&&!YJ&&!GJ)HJ=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`;else if(GJ&&!u.pathname)HJ="The URL's pathname is empty";else if(u.hash)HJ="The URL contains a fragment identifier";if(HJ){let h=SyntaxError(HJ);if(F._redirects===0)throw h;else{s(F,h);return}}let zQ=YJ?443:80,WQ=W(16).toString("base64"),HQ=YJ?$.request:G.request,KJ=new Set,FJ;if(S.createConnection=S.createConnection||(YJ?qJ:TJ),S.defaultPort=S.defaultPort||zQ,S.port=u.port||zQ,S.host=u.hostname.startsWith("[")?u.hostname.slice(1,-1):u.hostname,S.headers={...S.headers,"Sec-WebSocket-Version":S.protocolVersion,"Sec-WebSocket-Key":WQ,Connection:"Upgrade",Upgrade:"websocket"},S.path=u.pathname+u.search,S.timeout=S.handshakeTimeout,S.perMessageDeflate)FJ=new A({...S.perMessageDeflate,isServer:!1,maxPayload:S.maxPayload}),S.headers["Sec-WebSocket-Extensions"]=x({[A.extensionName]:FJ.offer()});if(y.length){for(let h of y){if(typeof h!=="string"||!a.test(h)||KJ.has(h))throw SyntaxError("An invalid or duplicated subprotocol was specified");KJ.add(h)}S.headers["Sec-WebSocket-Protocol"]=y.join(",")}if(S.origin)if(S.protocolVersion<13)S.headers["Sec-WebSocket-Origin"]=S.origin;else S.headers.Origin=S.origin;if(u.username||u.password)S.auth=`${u.username}:${u.password}`;if(GJ){let h=S.path.split(":");S.socketPath=h[0],S.path=h[1]}let c;if(S.followRedirects){if(F._redirects===0){F._originalIpc=GJ,F._originalSecure=YJ,F._originalHostOrSocketPath=GJ?S.socketPath:u.host;let h=b&&b.headers;if(b={...b,headers:{}},h)for(let[d,XJ]of Object.entries(h))b.headers[d.toLowerCase()]=XJ}else if(F.listenerCount("redirect")===0){let h=GJ?F._originalIpc?S.socketPath===F._originalHostOrSocketPath:!1:F._originalIpc?!1:u.host===F._originalHostOrSocketPath;if(!h||F._originalSecure&&!YJ){if(delete S.headers.authorization,delete S.headers.cookie,!h)delete S.headers.host;S.auth=void 0}}if(S.auth&&!b.headers.authorization)b.headers.authorization="Basic "+Buffer.from(S.auth).toString("base64");if(c=F._req=HQ(S),F._redirects)F.emit("redirect",F.url,c)}else c=F._req=HQ(S);if(S.timeout)c.on("timeout",()=>{g(F,c,"Opening handshake has timed out")});if(c.on("error",(h)=>{if(c===null||c[p])return;c=F._req=null,s(F,h)}),c.on("response",(h)=>{let d=h.headers.location,XJ=h.statusCode;if(d&&S.followRedirects&&XJ>=300&&XJ<400){if(++F._redirects>S.maxRedirects){g(F,c,"Maximum redirects exceeded");return}c.abort();let DJ;try{DJ=new H(d,B)}catch(KQ){let VJ=SyntaxError(`Invalid URL: ${d}`);s(F,VJ);return}o(F,DJ,y,b)}else if(!F.emit("unexpected-response",c,h))g(F,c,`Unexpected server response: ${h.statusCode}`)}),c.on("upgrade",(h,d,XJ)=>{if(F.emit("upgrade",h),F.readyState!==w.CONNECTING)return;c=F._req=null;let DJ=h.headers.upgrade;if(DJ===void 0||DJ.toLowerCase()!=="websocket"){g(F,d,"Invalid Upgrade header");return}let KQ=z("sha1").update(WQ+N).digest("base64");if(h.headers["sec-websocket-accept"]!==KQ){g(F,d,"Invalid Sec-WebSocket-Accept header");return}let VJ=h.headers["sec-websocket-protocol"],UJ;if(VJ!==void 0){if(!KJ.size)UJ="Server sent a subprotocol but none was requested";else if(!KJ.has(VJ))UJ="Server sent an invalid subprotocol"}else if(KJ.size)UJ="Server sent no subprotocol";if(UJ){g(F,d,UJ);return}if(VJ)F._protocol=VJ;let FQ=h.headers["sec-websocket-extensions"];if(FQ!==void 0){if(!FJ){g(F,d,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let wJ;try{wJ=f(FQ)}catch(SJ){g(F,d,"Invalid Sec-WebSocket-Extensions header");return}let DQ=Object.keys(wJ);if(DQ.length!==1||DQ[0]!==A.extensionName){g(F,d,"Server indicated an extension that was not requested");return}try{FJ.accept(wJ[A.extensionName])}catch(SJ){g(F,d,"Invalid Sec-WebSocket-Extensions header");return}F._extensions[A.extensionName]=FJ}F.setSocket(d,XJ,{allowSynchronousEvents:S.allowSynchronousEvents,generateMask:S.generateMask,maxPayload:S.maxPayload,skipUTF8Validation:S.skipUTF8Validation})}),S.finishRequest)S.finishRequest(c,F);else c.end()}function s(F,B){F._readyState=w.CLOSING,F._errorEmitted=!0,F.emit("error",B),F.emitClose()}function TJ(F){return F.path=F.socketPath,Y.connect(F)}function qJ(F){if(F.path=void 0,!F.servername&&F.servername!=="")F.servername=Y.isIP(F.host)?"":F.host;return X.connect(F)}function g(F,B,y){F._readyState=w.CLOSING;let b=Error(y);if(Error.captureStackTrace(b,g),B.setHeader){if(B[p]=!0,B.abort(),B.socket&&!B.socket.destroyed)B.socket.destroy();process.nextTick(s,F,b)}else B.destroy(b),B.once("error",F.emit.bind(F,"error")),B.once("close",F.emitClose.bind(F))}function xJ(F,B,y){if(B){let b=T(B)?B.size:k(B).length;if(F._socket)F._sender._bufferedBytes+=b;else F._bufferedAmount+=b}if(y){let b=Error(`WebSocket is not open: readyState ${F.readyState} (${l[F.readyState]})`);process.nextTick(y,b)}}function JZ(F,B){let y=this[V];if(y._closeFrameReceived=!0,y._closeMessage=B,y._closeCode=F,y._socket[V]===void 0)return;if(y._socket.removeListener("data",RJ),process.nextTick($Q,y._socket),F===1005)y.close();else y.close(F,B)}function QZ(){let F=this[V];if(!F.isPaused)F._socket.resume()}function ZZ(F){let B=this[V];if(B._socket[V]!==void 0)B._socket.removeListener("data",RJ),process.nextTick($Q,B._socket),B.close(F[K]);if(!B._errorEmitted)B._errorEmitted=!0,B.emit("error",F)}function ZQ(){this[V].emitClose()}function $Z(F,B){this[V].emit("message",F,B)}function YZ(F){let B=this[V];if(B._autoPong)B.pong(F,!this._isServer,D);B.emit("ping",F)}function GZ(F){this[V].emit("pong",F)}function $Q(F){F.resume()}function XZ(F){let B=this[V];if(B.readyState===w.CLOSED)return;if(B.readyState===w.OPEN)B._readyState=w.CLOSING,YQ(B);if(this._socket.end(),!B._errorEmitted)B._errorEmitted=!0,B.emit("error",F)}function YQ(F){F._closeTimer=setTimeout(F._socket.destroy.bind(F._socket),F._closeTimeout)}function GQ(){let F=this[V];if(this.removeListener("close",GQ),this.removeListener("data",RJ),this.removeListener("end",XQ),F._readyState=w.CLOSING,!this._readableState.endEmitted&&!F._closeFrameReceived&&!F._receiver._writableState.errorEmitted&&this._readableState.length!==0){let B=this.read(this._readableState.length);F._receiver.write(B)}if(F._receiver.end(),this[V]=void 0,clearTimeout(F._closeTimer),F._receiver._writableState.finished||F._receiver._writableState.errorEmitted)F.emitClose();else F._receiver.on("error",ZQ),F._receiver.on("finish",ZQ)}function RJ(F){if(!this[V]._receiver.write(F))this.pause()}function XQ(){let F=this[V];F._readyState=w.CLOSING,F._receiver.end(),this.end()}function VQ(){let F=this[V];if(this.removeListener("error",VQ),this.on("error",D),F)F._readyState=w.CLOSING,this.destroy()}}),kZ=n((J,Q)=>{var Z=gJ(),{Duplex:$}=i("stream");function G(z){z.emit("close")}function Y(){if(!this.destroyed&&this._writableState.finished)this.destroy()}function X(z){if(this.removeListener("error",X),this.destroy(),this.listenerCount("error")===0)this.emit("error",z)}function W(z,R){let _=!0,H=new $({...R,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return z.on("message",function(E,M){let T=!M&&H._readableState.objectMode?E.toString():E;if(!H.push(T))z.pause()}),z.once("error",function(E){if(H.destroyed)return;_=!1,H.destroy(E)}),z.once("close",function(){if(H.destroyed)return;H.push(null)}),H._destroy=function(A,E){if(z.readyState===z.CLOSED){E(A),process.nextTick(G,H);return}let M=!1;if(z.once("error",function(P){M=!0,E(P)}),z.once("close",function(){if(!M)E(A);process.nextTick(G,H)}),_)z.terminate()},H._final=function(A){if(z.readyState===z.CONNECTING){z.once("open",function(){H._final(A)});return}if(z._socket===null)return;if(z._socket._writableState.finished){if(A(),H._readableState.endEmitted)H.destroy()}else z._socket.once("finish",function(){A()}),z.close()},H._read=function(){if(z.isPaused)z.resume()},H._write=function(A,E,M){if(z.readyState===z.CONNECTING){z.once("open",function(){H._write(A,E,M)});return}z.send(A,M)},H.on("end",Y),H.on("error",X),H}Q.exports=W}),MQ=n((J,Q)=>{var{tokenChars:Z}=OJ();function $(G){let Y=new Set,X=-1,W=-1,z=0;for(z;z<G.length;z++){let _=G.charCodeAt(z);if(W===-1&&Z[_]===1){if(X===-1)X=z}else if(z!==0&&(_===32||_===9)){if(W===-1&&X!==-1)W=z}else if(_===44){if(X===-1)throw SyntaxError(`Unexpected character at index ${z}`);if(W===-1)W=z;let H=G.slice(X,W);if(Y.has(H))throw SyntaxError(`The "${H}" subprotocol is duplicated`);Y.add(H),X=W=-1}else throw SyntaxError(`Unexpected character at index ${z}`)}if(X===-1||W!==-1)throw SyntaxError("Unexpected end of input");let R=G.slice(X,z);if(Y.has(R))throw SyntaxError(`The "${R}" subprotocol is duplicated`);return Y.add(R),Y}Q.exports={parse:$}}),vZ=n((J,Q)=>{var Z=i("events"),$=i("http"),{Duplex:G}=i("stream"),{createHash:Y}=i("crypto"),X=dJ(),W=NJ(),z=MQ(),R=gJ(),{CLOSE_TIMEOUT:_,GUID:H,kWebSocket:A}=t(),E=/^[+/0-9A-Za-z]{22}==$/,M=0,T=1,P=2;class C extends Z{constructor(V,D){super();if(V={allowSynchronousEvents:!0,autoPong:!0,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:_,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:R,...V},V.port==null&&!V.server&&!V.noServer||V.port!=null&&(V.server||V.noServer)||V.server&&V.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(V.port!=null)this._server=$.createServer((L,q)=>{let x=$.STATUS_CODES[426];q.writeHead(426,{"Content-Length":x.length,"Content-Type":"text/plain"}),q.end(x)}),this._server.listen(V.port,V.host,V.backlog,D);else if(V.server)this._server=V.server;if(this._server){let L=this.emit.bind(this,"connection");this._removeListeners=j(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(q,x,f)=>{this.handleUpgrade(q,x,f,L)}})}if(V.perMessageDeflate===!0)V.perMessageDeflate={};if(V.clientTracking)this.clients=new Set,this._shouldEmitClose=!1;this.options=V,this._state=M}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');if(!this._server)return null;return this._server.address()}close(V){if(this._state===P){if(V)this.once("close",()=>{V(Error("The server is not running"))});process.nextTick(N,this);return}if(V)this.once("close",V);if(this._state===T)return;if(this._state=T,this.options.noServer||this.options.server){if(this._server)this._removeListeners(),this._removeListeners=this._server=null;if(this.clients)if(!this.clients.size)process.nextTick(N,this);else this._shouldEmitClose=!0;else process.nextTick(N,this)}else{let D=this._server;this._removeListeners(),this._removeListeners=this._server=null,D.close(()=>{N(this)})}}shouldHandle(V){if(this.options.path){let D=V.url.indexOf("?");if((D!==-1?V.url.slice(0,D):V.url)!==this.options.path)return!1}return!0}handleUpgrade(V,D,L,q){D.on("error",U);let x=V.headers["sec-websocket-key"],f=V.headers.upgrade,k=+V.headers["sec-websocket-version"];if(V.method!=="GET"){K(this,V,D,405,"Invalid HTTP method");return}if(f===void 0||f.toLowerCase()!=="websocket"){K(this,V,D,400,"Invalid Upgrade header");return}if(x===void 0||!E.test(x)){K(this,V,D,400,"Missing or invalid Sec-WebSocket-Key header");return}if(k!==13&&k!==8){K(this,V,D,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(V)){O(D,400);return}let p=V.headers["sec-websocket-protocol"],v=new Set;if(p!==void 0)try{v=z.parse(p)}catch(w){K(this,V,D,400,"Invalid Sec-WebSocket-Protocol header");return}let l=V.headers["sec-websocket-extensions"],a={};if(this.options.perMessageDeflate&&l!==void 0){let w=new W({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let o=X.parse(l);if(o[W.extensionName])w.accept(o[W.extensionName]),a[W.extensionName]=w}catch(o){K(this,V,D,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let w={origin:V.headers[`${k===8?"sec-websocket-origin":"origin"}`],secure:!!(V.socket.authorized||V.socket.encrypted),req:V};if(this.options.verifyClient.length===2){this.options.verifyClient(w,(o,s,TJ,qJ)=>{if(!o)return O(D,s||401,TJ,qJ);this.completeUpgrade(a,x,v,V,D,L,q)});return}if(!this.options.verifyClient(w))return O(D,401)}this.completeUpgrade(a,x,v,V,D,L,q)}completeUpgrade(V,D,L,q,x,f,k){if(!x.readable||!x.writable)return x.destroy();if(x[A])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>M)return O(x,503);let v=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Y("sha1").update(D+H).digest("base64")}`],l=new this.options.WebSocket(null,void 0,this.options);if(L.size){let a=this.options.handleProtocols?this.options.handleProtocols(L,q):L.values().next().value;if(a)v.push(`Sec-WebSocket-Protocol: ${a}`),l._protocol=a}if(V[W.extensionName]){let a=V[W.extensionName].params,w=X.format({[W.extensionName]:[a]});v.push(`Sec-WebSocket-Extensions: ${w}`),l._extensions=V}if(this.emit("headers",v,q),x.write(v.concat(`\r
31
31
  `).join(`\r
32
- `)),x.removeListener("error",O),l.setSocket(x,f,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients)this.clients.add(l),l.on("close",()=>{if(this.clients.delete(l),this._shouldEmitClose&&!this.clients.size)process.nextTick(U,this)});k(l,q)}}Z.exports=C;function j(V,D){for(let L of Object.keys(D))V.on(L,D[L]);return function(){for(let q of Object.keys(D))V.removeListener(q,D[q])}}function U(V){V._state=P,V.emit("close")}function O(){this.destroy()}function N(V,D,L,q){L=L||Q.STATUS_CODES[D],q={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(L),...q},V.once("finish",V.destroy),V.end(`HTTP/1.1 ${D} ${Q.STATUS_CODES[D]}\r
32
+ `)),x.removeListener("error",U),l.setSocket(x,f,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients)this.clients.add(l),l.on("close",()=>{if(this.clients.delete(l),this._shouldEmitClose&&!this.clients.size)process.nextTick(N,this)});k(l,q)}}Q.exports=C;function j(V,D){for(let L of Object.keys(D))V.on(L,D[L]);return function(){for(let q of Object.keys(D))V.removeListener(q,D[q])}}function N(V){V._state=P,V.emit("close")}function U(){this.destroy()}function O(V,D,L,q){L=L||$.STATUS_CODES[D],q={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(L),...q},V.once("finish",V.destroy),V.end(`HTTP/1.1 ${D} ${$.STATUS_CODES[D]}\r
33
33
  `+Object.keys(q).map((x)=>`${x}: ${q[x]}`).join(`\r
34
34
  `)+`\r
35
35
  \r
36
- `+L)}function K(V,D,L,q,x,f){if(V.listenerCount("wsClientError")){let k=Error(x);Error.captureStackTrace(k,K),V.emit("wsClientError",k,L,D)}else N(L,q,x,f)}});v4=r(k0(),1),b4=r(gJ(),1),h4=r(UJ(),1),u4=r(jZ(),1),l4=r(AZ(),1),p4=r(MZ(),1),s0=r(dJ(),1),IZ=r(v0(),1),_Z=s0.default;H2={"Network.setUserAgentOverride":"Page.overrideUserAgent","Network.setCacheDisabled":"Network.setResourceCachingDisabled"},K2={"Network.requestWillBeSent":{walltime:"wallTime"}},F2={hasUserGesture:!1,redirectHasExtraInfo:!1},D2={hasExtraInfo:!1},O2={encodedDataLength:0,shouldReportCorbBlocking:!1},U2={initialPriority:"Medium",referrerPolicy:"origin"},N2={connectionReused:!1,connectionId:0,fromDiskCache:!1,fromServiceWorker:!1,encodedDataLength:0};B2={"media-rule":"mediaRule","media-import-rule":"importRule","media-style-node":"inlineSheet","media-link-node":"linkedSheet"};y2={protocolVersion:"1.3",product:"Safari/inspect-webkit",revision:"605.1.15",userAgent:"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit",jsVersion:""};l2=["Animation","Autofill","Audits","ServiceWorker","Profiler","HeapProfiler","Storage","Tethering","Tracing","BackgroundService","FedCm","DeviceAccess","WebAuthn","Cast","Database","ApplicationCache","BackgroundFetch","DeviceOrientation","EventBreakpoints","FileSystem","HeadlessExperimental","IndexedDB","Memory","PerformanceTimeline","Performance","Preload","Schema","Security","SystemInfo","WebAudio"],p2={"Inspector.enable":{},"Inspector.disable":{},"Network.setAttachDebugStack":{},"Network.emulateNetworkConditionsByRule":{ruleIds:[]},"Network.overrideNetworkState":{},"Network.clearAcceptedEncodingsOverride":{},"Network.setAcceptedEncodings":{},"Network.enableReportingApi":{},"Overlay.setShowHinge":{},"Overlay.setShowViewportSizeOnResize":{},"Overlay.setShowGridOverlays":{},"Overlay.setShowFlexOverlays":{},"Overlay.setShowScrollSnapOverlays":{},"Overlay.setShowContainerQueryOverlays":{},"Overlay.setShowIsolatedElements":{},"Overlay.setPausedInDebuggerMessage":{},"Overlay.setShowAdHighlights":{},"Overlay.setShowDebugBorders":{},"Overlay.setShowFPSCounter":{},"Overlay.setShowLayoutShiftRegions":{},"Overlay.setShowScrollBottleneckRects":{},"Overlay.setShowHitTestBorders":{},"Overlay.setShowWebVitals":{},"CSS.trackComputedStyleUpdates":{},"CSS.takeComputedStyleUpdates":{nodeIds:[]},"CSS.startRuleUsageTracking":{},"CSS.stopRuleUsageTracking":{ruleUsage:[]},"CSS.takeCoverageDelta":{coverage:[],timestamp:0},"Page.setAdBlockingEnabled":{},"Page.removeScriptToEvaluateOnNewDocument":{},"Page.setBypassCSP":{},"Page.setInterceptFileChooserDialog":{},"Page.setPrerenderingAllowed":{},"Page.setRPHRegistrationMode":{},"Page.setSPCTransactionMode":{},"Emulation.setEmulatedVisionDeficiency":{},"Emulation.setFocusEmulationEnabled":{},"Emulation.setAutoDarkModeOverride":{},"Emulation.setAutomationOverride":{},"Emulation.setLocaleOverride":{},"Emulation.setTimezoneOverride":{},"Emulation.setVisibleSize":{},"Emulation.setIdleOverride":{},"Emulation.clearIdleOverride":{},"Emulation.setGeolocationOverride":{},"Emulation.clearGeolocationOverride":{},"Emulation.setSensorOverrideEnabled":{},"Emulation.setSensorOverrideReadings":{},"Emulation.setHardwareConcurrencyOverride":{},"Emulation.setNavigatorOverrides":{},"Emulation.setPageScaleFactor":{},"Emulation.setScrollbarsHidden":{},"Emulation.setDocumentCookieDisabled":{},"DOMDebugger.setBreakOnCSPViolation":{},"Runtime.addBinding":{},"Runtime.removeBinding":{},"Debugger.setReturnValue":{},"Debugger.setBlackboxExecutionContexts":{},"Debugger.setInstrumentationBreakpoint":{},"DOM.markUndoableState":{},"DOM.undo":{},"DOM.redo":{},"DOM.copyTo":{nodeId:0},"DOM.collectClassNamesFromSubtree":{classNames:[]},"Accessibility.enable":{},"Accessibility.disable":{},"Accessibility.getFullAXTree":{nodes:[]},"Accessibility.getRootAXNode":{node:null},"Accessibility.getPartialAXTree":{nodes:[]},"Accessibility.queryAXTree":{nodes:[]},"Accessibility.getAXNodeAndAncestors":{nodes:[]},"Accessibility.getChildAXNodes":{nodes:[]}};i2={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}});import{readdirSync as X4,readFileSync as V4,existsSync as z4,unlinkSync as mZ}from"fs";import{execSync as QJ,spawn as sJ,exec as W4,execFile as eZ}from"child_process";import{tmpdir as H4}from"os";import{join as ZZ}from"path";import{createServer as K4}from"net";var _J="Accessibility unavailable on this simulator.";var D0=3500,yJ=500,IJ=500,O0=2000,U0=15000;function N0(J){return J[0]?.frame??{x:0,y:0,width:1,height:1}}function P0(J,Z){return Math.abs(J.x-Z.x)<0.5&&Math.abs(J.y-Z.y)<0.5&&Math.abs(J.width-Z.width)<0.5&&Math.abs(J.height-Z.height)<0.5}function L0(J){let Z=N0(J),$=[],Q=(G,Y)=>{if($.length>=yJ)return;let X=G.frame;if(!P0(X,Z))$.push({id:G.AXUniqueId??Y,path:Y,label:G.AXLabel??"",value:G.AXValue??"",role:G.role_description,type:G.type,enabled:G.enabled!==!1,frame:X});for(let z=0;z<G.children.length&&$.length<yJ;z++)Q(G.children[z],`${Y}.${z}`)};for(let G=0;G<J.length&&$.length<yJ;G++)Q(J[G],String(G));return{screen:{width:Z.width,height:Z.height},elements:$}}async function R0(J){let Z=new AbortController,$=setTimeout(()=>Z.abort(),D0);try{let Q=await fetch(`http://127.0.0.1:${J}/ax`,{signal:Z.signal});if(Q.status===503)return{screen:{width:1,height:1},elements:[],errors:[_J]};if(!Q.ok)throw Error(`HTTP ${Q.status} ${Q.statusText}`);return L0(await Q.json())}finally{clearTimeout($)}}function _0(J){return J?.errors?.includes(_J)??!1}function C0(J){return J.elements.length>0&&J.screen.width>1&&J.screen.height>1}async function j0(J){let Z=[];try{let $=await R0(J);if($.errors?.length)return $;if(!C0($))throw Error(`helper returned ${$.elements.length} elements in ${$.screen.width}x${$.screen.height} AX space`);return{...$,errors:Z}}catch($){let Q=$,G=Q.cause?.code??Q.code,Y=Q.message||String($),X=G==="ECONNREFUSED"||G==="ECONNRESET"||/unable to connect|fetch failed|ECONNREFUSED/i.test(Y);Z.push(X?_J:Y)}return{screen:{width:1,height:1},elements:[],errors:Z}}function A0(J){return`data: ${JSON.stringify(J)}
36
+ `+L)}function K(V,D,L,q,x,f){if(V.listenerCount("wsClientError")){let k=Error(x);Error.captureStackTrace(k,K),V.emit("wsClientError",k,L,D)}else O(L,q,x,f)}});v2=r(kZ(),1),b2=r(dJ(),1),h2=r(NJ(),1),u2=r(jQ(),1),l2=r(AQ(),1),p2=r(MQ(),1),sZ=r(gJ(),1),IQ=r(vZ(),1),_Q=sZ.default;H0={"Network.setUserAgentOverride":"Page.overrideUserAgent","Network.setCacheDisabled":"Network.setResourceCachingDisabled"},K0={"Network.requestWillBeSent":{walltime:"wallTime"}},F0={hasUserGesture:!1,redirectHasExtraInfo:!1},D0={hasExtraInfo:!1},U0={encodedDataLength:0,shouldReportCorbBlocking:!1},N0={initialPriority:"Medium",referrerPolicy:"origin"},O0={connectionReused:!1,connectionId:0,fromDiskCache:!1,fromServiceWorker:!1,encodedDataLength:0};T0={"media-rule":"mediaRule","media-import-rule":"importRule","media-style-node":"inlineSheet","media-link-node":"linkedSheet"};y0={protocolVersion:"1.3",product:"Safari/inspect-webkit",revision:"605.1.15",userAgent:"Mozilla/5.0 (iPhone; CPU iPhone OS like Mac OS X) AppleWebKit/605.1.15 Safari/inspect-webkit",jsVersion:""};l0=["Animation","Autofill","Audits","ServiceWorker","Profiler","HeapProfiler","Storage","Tethering","Tracing","BackgroundService","FedCm","DeviceAccess","WebAuthn","Cast","Database","ApplicationCache","BackgroundFetch","DeviceOrientation","EventBreakpoints","FileSystem","HeadlessExperimental","IndexedDB","Memory","PerformanceTimeline","Performance","Preload","Schema","Security","SystemInfo","WebAudio"],p0={"Inspector.enable":{},"Inspector.disable":{},"Network.setAttachDebugStack":{},"Network.emulateNetworkConditionsByRule":{ruleIds:[]},"Network.overrideNetworkState":{},"Network.clearAcceptedEncodingsOverride":{},"Network.setAcceptedEncodings":{},"Network.enableReportingApi":{},"Overlay.setShowHinge":{},"Overlay.setShowViewportSizeOnResize":{},"Overlay.setShowGridOverlays":{},"Overlay.setShowFlexOverlays":{},"Overlay.setShowScrollSnapOverlays":{},"Overlay.setShowContainerQueryOverlays":{},"Overlay.setShowIsolatedElements":{},"Overlay.setPausedInDebuggerMessage":{},"Overlay.setShowAdHighlights":{},"Overlay.setShowDebugBorders":{},"Overlay.setShowFPSCounter":{},"Overlay.setShowLayoutShiftRegions":{},"Overlay.setShowScrollBottleneckRects":{},"Overlay.setShowHitTestBorders":{},"Overlay.setShowWebVitals":{},"CSS.trackComputedStyleUpdates":{},"CSS.takeComputedStyleUpdates":{nodeIds:[]},"CSS.startRuleUsageTracking":{},"CSS.stopRuleUsageTracking":{ruleUsage:[]},"CSS.takeCoverageDelta":{coverage:[],timestamp:0},"Page.setAdBlockingEnabled":{},"Page.removeScriptToEvaluateOnNewDocument":{},"Page.setBypassCSP":{},"Page.setInterceptFileChooserDialog":{},"Page.setPrerenderingAllowed":{},"Page.setRPHRegistrationMode":{},"Page.setSPCTransactionMode":{},"Emulation.setEmulatedVisionDeficiency":{},"Emulation.setFocusEmulationEnabled":{},"Emulation.setAutoDarkModeOverride":{},"Emulation.setAutomationOverride":{},"Emulation.setLocaleOverride":{},"Emulation.setTimezoneOverride":{},"Emulation.setVisibleSize":{},"Emulation.setIdleOverride":{},"Emulation.clearIdleOverride":{},"Emulation.setGeolocationOverride":{},"Emulation.clearGeolocationOverride":{},"Emulation.setSensorOverrideEnabled":{},"Emulation.setSensorOverrideReadings":{},"Emulation.setHardwareConcurrencyOverride":{},"Emulation.setNavigatorOverrides":{},"Emulation.setPageScaleFactor":{},"Emulation.setScrollbarsHidden":{},"Emulation.setDocumentCookieDisabled":{},"DOMDebugger.setBreakOnCSPViolation":{},"Runtime.addBinding":{},"Runtime.removeBinding":{},"Debugger.setReturnValue":{},"Debugger.setBlackboxExecutionContexts":{},"Debugger.setInstrumentationBreakpoint":{},"DOM.markUndoableState":{},"DOM.undo":{},"DOM.redo":{},"DOM.copyTo":{nodeId:0},"DOM.collectClassNamesFromSubtree":{classNames:[]},"Accessibility.enable":{},"Accessibility.disable":{},"Accessibility.getFullAXTree":{nodes:[]},"Accessibility.getRootAXNode":{node:null},"Accessibility.getPartialAXTree":{nodes:[]},"Accessibility.queryAXTree":{nodes:[]},"Accessibility.getAXNodeAndAncestors":{nodes:[]},"Accessibility.getChildAXNodes":{nodes:[]}};i0={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}});import{readdirSync as X2,readFileSync as V2,existsSync as z2,unlinkSync as mQ}from"fs";import{execSync as $J,spawn as sJ,exec as W2,execFile as eQ}from"child_process";import{tmpdir as H2}from"os";import{join as QQ}from"path";import{createServer as K2}from"net";var _J="Accessibility unavailable on this simulator.";var DZ=3500,yJ=500,IJ=500,UZ=2000,NZ=15000;function OZ(J){return J[0]?.frame??{x:0,y:0,width:1,height:1}}function PZ(J,Q){return Math.abs(J.x-Q.x)<0.5&&Math.abs(J.y-Q.y)<0.5&&Math.abs(J.width-Q.width)<0.5&&Math.abs(J.height-Q.height)<0.5}function LZ(J){let Q=OZ(J),Z=[],$=(G,Y)=>{if(Z.length>=yJ)return;let X=G.frame;if(!PZ(X,Q))Z.push({id:G.AXUniqueId??Y,path:Y,label:G.AXLabel??"",value:G.AXValue??"",role:G.role_description,type:G.type,enabled:G.enabled!==!1,frame:X});for(let z=0;z<G.children.length&&Z.length<yJ;z++)$(G.children[z],`${Y}.${z}`)};for(let G=0;G<J.length&&Z.length<yJ;G++)$(J[G],String(G));return{screen:{width:Q.width,height:Q.height},elements:Z}}async function RZ(J){let Q=new AbortController,Z=setTimeout(()=>Q.abort(),DZ);try{let $=await fetch(`http://127.0.0.1:${J}/ax`,{signal:Q.signal});if($.status===503)return{screen:{width:1,height:1},elements:[],errors:[_J]};if(!$.ok)throw Error(`HTTP ${$.status} ${$.statusText}`);return LZ(await $.json())}finally{clearTimeout(Z)}}function _Z(J){return J?.errors?.includes(_J)??!1}function CZ(J){return J.elements.length>0&&J.screen.width>1&&J.screen.height>1}async function jZ(J){let Q=[];try{let Z=await RZ(J);if(Z.errors?.length)return Z;if(!CZ(Z))throw Error(`helper returned ${Z.elements.length} elements in ${Z.screen.width}x${Z.screen.height} AX space`);return{...Z,errors:Q}}catch(Z){let $=Z,G=$.cause?.code??$.code,Y=$.message||String(Z),X=G==="ECONNREFUSED"||G==="ECONNRESET"||/unable to connect|fetch failed|ECONNREFUSED/i.test(Y);Q.push(X?_J:Y)}return{screen:{width:1,height:1},elements:[],errors:Q}}function AZ(J){return`data: ${JSON.stringify(J)}
37
37
 
38
- `}function M0({port:J}){let Z=new Set,$=null,Q=null,G=IJ,Y=!1,X=J,W=()=>{if(Z.size===0||$)return;$=setTimeout(z,G)},z=async()=>{if($=null,Y||Z.size===0){W();return}Y=!0;try{let R=await j0(X),_=A0(R);if(_!==Q){for(let H of Z)H.write(_);G=IJ}else G=Math.min(G*2,O0);if(Q=_,_0(R))G=U0}finally{Y=!1,W()}};return{setPort(R){if(R===X)return;if(X=R,Q=null,G=IJ,$)clearTimeout($),$=null;z()},addClient(R){if(Z.add(R),Q)R.write(Q);return z(),()=>{if(Z.delete(R),Z.size===0&&$)clearTimeout($),$=null}}}}function OZ(){let J=new Map;return{get(Z,$){let Q=J.get(Z);if(Q)return Q.setPort($),Q;let G=M0({port:$});return J.set(Z,G),G}}}var aZ=ZZ(H4(),"serve-sim"),F4="854a02be78c7ffea104cb523636efa991bef5c5b",EJ=9222,D4=OZ(),ZJ=null,O4=new Set(["host.exp.Exponent","dev.expo.Exponent"]),U4=["Frameworks/React.framework","Frameworks/hermes.framework","Frameworks/Hermes.framework","Frameworks/ExpoModulesCore.framework","main.jsbundle"],N4=/(WidgetRenderer|ExtensionHost|\.extension(\.|$)|Service|PlaceholderApp|InCallService|CallUI|InCallUI|com\.apple\.Preferences\.Cellular|com\.apple\.purplebuddy|com\.apple\.chrono|com\.apple\.shuttle|com\.apple\.usernotificationsui)/i;function oZ(J){return!N4.test(J)}function P4(J){let Z=/\[app<([^>]+)>:(\d+)\] Setting process visibility to: Foreground/.exec(J);if(!Z)return null;return{bundleId:Z[1],pid:parseInt(Z[2],10)}}function rZ(J,Z){if(O4.has(Z))return Promise.resolve(!0);return new Promise(($)=>{eZ("xcrun",["simctl","get_app_container",J,Z,"app"],{timeout:2000},(Q,G)=>{if(Q)return $(!1);let Y=G.trim();if(!Y)return $(!1);for(let X of U4)if(z4(ZZ(Y,X)))return $(!0);$(!1)})})}function tZ(J){return J.trim().replace(/\s+/g," ").toLowerCase()}function a4(J,Z){let $=tZ(Z);if(!$)return null;for(let[Q,G]of Object.entries(J))if([G.CFBundleDisplayName,G.CFBundleName,G.CFBundleExecutable].filter((X)=>typeof X==="string").some((X)=>tZ(X)===$))return G.CFBundleIdentifier||Q;return null}var LJ={at:0,booted:null};function L4(){let J=Date.now();if(LJ.booted&&J-LJ.at<1500)return LJ.booted;try{let Z=QJ("xcrun simctl list devices booted -j",{encoding:"utf-8",stdio:["ignore","pipe","pipe"],timeout:3000}),$=JSON.parse(Z),Q=new Set;for(let G of Object.values($.devices))for(let Y of G)if(Y.state==="Booted")Q.add(Y.udid);return LJ={at:J,booted:Q},Q}catch{return null}}function $J(){let J;try{J=X4(aZ).filter((Q)=>Q.startsWith("server-")&&Q.endsWith(".json"))}catch{return[]}let Z=L4(),$=[];for(let Q of J){let G=ZZ(aZ,Q);try{let Y=JSON.parse(V4(G,"utf-8"));try{process.kill(Y.pid,0)}catch{try{mZ(G)}catch{}continue}if(Z&&!Z.has(Y.device)){try{process.kill(Y.pid,"SIGTERM")}catch{}try{mZ(G)}catch{}continue}$.push(Y)}catch{}}return $}function WJ(J,Z){if(Z)return J.find(($)=>$.device===Z)??null;return J[0]??null}function R4(J){let Z=J.indexOf("?");if(Z===-1)return null;return new URLSearchParams(J.slice(Z+1)).get("device")}function TJ(J,Z,$){return`${`${J}${Z}`}?device=${encodeURIComponent($)}`}async function _4(J){return new Promise((Z)=>{let $=K4();$.once("error",()=>Z(!1)),$.once("listening",()=>$.close(()=>Z(!0))),$.listen(J,"127.0.0.1")})}async function sZ(J){let Z=`http://127.0.0.1:${J}`;try{let $=await fetch(`${Z}/json/version`);if(!$.ok)return null;if((await $.json()).Browser!=="Safari/inspect-webkit")return null;return{port:J,cdpUrl:Z,async listTargets(){return(await(await fetch(`${Z}/json/list`)).json()).filter((X)=>X.id.startsWith("sim:")).map((X)=>{let z=X.id.split(":")[1],R=X.description?.match(/\(([^)]+)\)/)?.[1];return{id:X.id,title:X.title||X.url||"Untitled",url:/^https?:/i.test(X.url)?X.url:"about:blank",type:X.type||"page",udid:z,bundleId:R}})}}}catch{return null}}async function eJ(){if(ZJ)try{return await(await ZJ).listTargets(),ZJ}catch{ZJ=null}return ZJ=(async()=>{let{startCdpServer:J}=await Promise.resolve().then(() => (nZ(),dZ));for(let Z=EJ;Z<EJ+50;Z++){if(!await _4(Z)){let $=await sZ(Z);if($)return $;continue}try{let $=await J({host:"127.0.0.1",port:Z});return{port:Z,cdpUrl:`http://127.0.0.1:${Z}`,async listTargets(){return $.getTargets().filter((Q)=>Q.source?.kind==="simulator").map((Q)=>({id:Q.targetId,title:Q.title||Q.appName||Q.url||"Untitled",url:/^https?:/i.test(Q.url)?Q.url:"about:blank",type:Q.type||"page",appName:Q.appName,bundleId:Q.bundleId,udid:Q.source?.id,inUseByOtherInspector:!!Q.inUseByOtherInspector}))},highlightTarget:$.highlightTarget?.bind($),releaseHighlight:$.releaseHighlight?.bind($)}}catch($){if($?.code==="EADDRINUSE"){let Q=await sZ(Z);if(Q)return Q;continue}throw $}}throw Error(`No available inspect-webkit port found in ${EJ}-${EJ+49}`)})().catch((J)=>{throw ZJ=null,J}),ZJ}function C4(J,Z,$){let Q=new URL(`${J}/inspector.html`,"http://serve-sim.local");return Q.searchParams.set("ws",`${Z}/devtools/page/${$}`),`${Q.pathname}${Q.search}`}function j4(J,Z){return`127.0.0.1:${Z}`}var JZ=null;function A4(){if(!JZ)JZ=Buffer.from("PCFkb2N0eXBlIGh0bWw+CjxodG1sPjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj4KPHRpdGxlPlNpbXVsYXRvciBQcmV2aWV3PC90aXRsZT4KPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImRhdGE6aW1hZ2UveC1pY29uO2Jhc2U2NCxBQUFCQUFVQUVCQUFBQUVBSUFBNEJnQUFWZ0FBQUNBZ0FBQUJBQ0FBUEFvQUFJNEdBQUF3TUFBQUFRQWdBS0VQQUFES0VBQUFnSUFBQUFFQUlBQ2NPQUFBYXlBQUFBQUFBQUFCQUNBQS9wb0FBQWRaQUFDSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUFRb0FNQUJBQUFBQUVBQUFBUUFBQUFBT2JZeVZNQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUFvSkpSRUZVT0JHbFVzOXJFMEVVL21abWs5MU5paVd4MHRvcVZSRHhvQ0NtSUhnVVdpaWV2UFRrU2NHVENJSUhFUS8xRC9BaWluK0NKdzhxZUZERVMrMUZnZ0VWV3l5MDBDYllObW1iNXNkbXM3c3pmck90cGZjK2RuYmY3SHZ2ZTkvN1pvQWptamhjYndEMWJIZTNVRzA2N2tZdkVBR0RXMTB1T2x1ZWIzUWNoN1dKWS9YRE5RY0FkNVo2NTc1MW5PZk5VSlFTcmQxWUE0WlJUZFNFdnJhWlVvWUNwdXlZK1A3bU5XL0pBcVVBNXN1c2M4bC85R0ZGdUpNNk1QeHBZRmdvNUY1QzZqUFRScVRIMVEwL05UZmZUV05tSm5Fc3l0UGlyV0tyTGt2OVVHT2lZSEJqUkNLeDg2UkZUS0NmSWRqbkRZMjVob0FqWkduWXVYSjhIZGhJQVdvdDRTVmRPQ01zbUM0S1hQVU5hcDBFemI2QXNCeEp3WFVraGpnS3V1U2g0S2kyOExoREN0Q2pTSjFkNE1GRmdTZm5iUVV3VjR2d2FqbUJiMXNUd0ZFSzFSYjlEdU1xVFVsZktVRFE0Nnc5ZHJFZGFGYkFJVTlpY2xTZzZOdHNnNGdxanUwQXl3Mmd6WHpFTm5PZndmWTJ2YTVBMUdlRHlLVEtEeWlEVTVrRWl0MnRpRW9LVEExTHhLSEV5N0pCUWZ1b0hRYXc2b2NjcGRIUkZFeGd2YVh4ZlMyQ2w3RWtMU2hucHlBNnpNTHRhM2dwOS84YWtBSGxRa0lHOVRibmxScTFIWU9mVmY1WDdNcVI4bVJqcmRyV2tJSEE2QW1nekgySzArMTNRektPRjFZTnlqbnlaY2NmYXhxVkZRZDFKc2QyL2tGN2ZCcXJUWWxjRnZGQTBBZ3RZQW93UHYrbThhZjBzUEoxTVg5OS9oYzdFU05Lc2xEc3pnZVMreW9QM2ZCcUtsY2luM1FxTjBkLzExOFRZTy9NNkp5NXUzZ2g5c2RlUUdRdUcyTmNLNXk5QTVRai9UcEVVWTRNZlJWVnhnYzI3NzEvZkhiQk1qZ0FzQnVhT0gzNzQwa0Izek1KYnhITmRZRkJya0krYTNKZTBIczdPL1dYZ2YwRHR4bEh0SDg0aWhRSmZTYXpqUUFBQUFCSlJVNUVya0pnZ29sUVRrY05DaG9LQUFBQURVbElSRklBQUFBZ0FBQUFJQWdHQUFBQWMzcDY5QUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFnWTBoU1RRQUFlaVlBQUlDRUFBRDZBQUFBZ09nQUFIVXdBQURxWUFBQU9wZ0FBQmR3bkxwUlBBQUFBSGhsV0VsbVRVMEFLZ0FBQUFnQUJBRWFBQVVBQUFBQkFBQUFQZ0ViQUFVQUFBQUJBQUFBUmdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFBQUFUZ0FBQUFBQUFBQ1FBQUFBQVFBQUFKQUFBQUFCQUFPZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBQ0NnQXdBRUFBQUFBUUFBQUNBQUFBQUFmZ3ZhVWdBQUFBbHdTRmx6QUFBV0pRQUFGaVVCU1ZJazhBQUFBcHhwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNldGSmxjMjlzZFhScGIyNCtNVFEwUEM5MGFXWm1PbGhTWlhOdmJIVjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0eE5EUThMM1JwWm1ZNldWSmxjMjlzZFhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGpJOEwzUnBabVk2VW1WemIyeDFkR2x2YmxWdWFYUStDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0eU5UWThMMlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtNalUyUEM5bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlEyOXNiM0pUY0dGalpUNHhQQzlsZUdsbU9rTnZiRzl5VTNCaFkyVStDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dmVEcDRiWEJ0WlhSaFBncnAvc2x4QUFBR2hrbEVRVlJZQ2UxV3pZOFVSUlIvVlYwOTNiUExmbVVYa0JESTdvVUVSU1ZySUFvbTNreU1GeEtQbmpRbXhJTlhUTlNMQ1RHR2kvNEZHaE1UalViQ3djQkJFMDFBQ0pKZEVrRUlBbUVGQVlGZGxtVm1kcVkvcXN2ZnIyYUc2VmtXcm5yd0pkWFZYZjNxdmQvN3JCTDVuLzVsRDZoSDZYZUgzNGtPN056LzdKKzE0TWtrTUJPdFhFVlpManJIaHJ3UVNUQUtMWkppWGs0eFk3MkZueTE4NXdxL2pFdXlMSjgzeXA1YlAvdjE2Wm05ZTdQVmRLMEs0T1ByQzd1T0xvOGN1RnhUTDlSRmF4ZEFxSVZDMXhiaE9yUEdPbDh0RkhQdURnV3BBZmRBcGJKRllZdzdVY21XOXQzWU5YNThKWWlIQU95ZnU3WHJjR1BpK3pNMVBXWmJWclJ5WW93U2E1MTBGVk1JTndhQjhrb0wvQ3RURzRDU1BPZTZFaFVGWXFSWXJOcDdyMTdmUFg2aXpBc245dWo0OFcrcXgycWpuL3kycE1lS0p2eE5qWEFwaDFzeENueHpjTDM3WHA1Ny9FNG9LeTMwV0t0WTgrbms1ei9GUFkwQ1lDVTZNanc5UFZjek8yemRDb3p6NURFQVIwQXNaUmZncjBlUGRkZU5UVWVXeGw0UERLSGh1eWZFMElabVI3cDJhaHJmRDBMUkIrQjJNdkpVM1dxbEVUenVnM0V5Q0k0M3BnSlpXMEdzb2F4TWREVnBCUzRQL2o1eTVvdUx1ZHhwQWJ6blF3aE5xS3dNYnNPVzFRRWtFa3dnNUZLQlpPNWh0bThjVURLOVJvbEdtaGY4U2VMa2hmS0JqODdFWDN6bnA0NlVURldWTERTZGhCMDNjREk2bVBCOG5VZWZCNUxNUlRrUUYwazc0UnJJNGlZc24yOWlEUW1KaFBiV2hqQ0pTbFRIQlc2RkN6UTBtVEFRQ3psRkM2T3JCVEd6cVlzZUNjQW15RHRhbWlvWlFORGYzNmJsdVhFbG13ZGhwNFZLcCtWR3M1Q2pONEVNTmFpN0FPaUZMZ2lzYWEwbFJQd3RLeC9ERllTTEdhVXAyWU9zOEd0ZGJQNGp4eVp1eU9DRkZ6Y3AyYmVWTzdyVUxwZ3RJNEdjdXRHU0t6V1J5TFQvdHozUUNRL1kwVGtrcXNCeXlGSWNUQ2FRZ2piZnlkcWYvdGtQQU5ZckQ4SUp3dTZKWWt2R2VkZmZiMXE1ZGs5SlhFRWY4TVo3cnZZR2NMQUpEY1RPTnlqS1V4MEJCQ09VWDZLSEFEZ3dPVEFWSFVZbVlqZkdqQzB6T29TYnA0WUQyWXhSRGZrTkpSZ1d2QWxLcFo0cHVZY21WRUY1SnVqTkJvM0kyME9aandVQUFheDM0eEJIV2daKzlucGZqNUJBaDdQOXZyWWxGcVZEcVJpRUJkYVJyMHhNVHFiTUs1TmF2anlYeTZHTERsN1JYbVpBZVNYcTgwREtFTUFEUGs2bzR4U1NVeUNtQjJrNXJTUTFtNW5VWUtHQjBCNkJpVWpBUkFBQnZEV0VaSHo3NlJCblFpYUhMcUFER0NQbWNRQmFLTGNjSUh6NUFFZ0NFQzBvWWd4cExFUEFwcmVFSEZoTTRQcE9FaEtFMTkxQlF3RGtSZW5BWTRIc1hxL2x5TytaV0NSMzNER2l3OXJmaXJNVkh1RHgyc3djV2k3aUNkZnpZS0psTmRUMjNXV3NoVlJib2c0S2YwUUJSQUcwRG51Y0NtVVFNVjJHVVRINlNwbjZRd0NFTklWaEFIaHBZVjVHSENqUUFvQkRnMWRJZ29WNklUZFJobkVGYnVsYTVMSDA1d09UVXBFRmZpOGdCMmtqbGNjQmFBRUFlbzNQVkFMZ1JhTU9hMkdMWklCcWVRT0JSYmRyVHY1YUxDU09BQWdhWXJpSDNiR1pXa2t6NnpGMW9SakVqaTI4VmtkcGpnQkEyWHk4OTNrQTVWY3d5d01vWi9Ob0FuVUQ3WlE1a0VCQmhud2d3SVdHa3IrWGxBd1BCakkrRk1yY2dwVmJPSDIyYlF4eFlBV3lXSWNndUI5UmtBMWpSazVmemFTQUM1bUFsUlZIWng4QVpWM0taQXRRaGdWQXBMaGJKYWhwRnFCR2ZjTTRDYkREd0pjREZXUTAwSjY4bE1rZmQranFRSzdNRjdKOW84akVtb3Evd0xCSXpsN0w1ZHgxSllNUitCR21XTEhaOTZnUFFOWklGM0ljRlJxSk4zT3BrRk9iUkVaeGZTZ0FpRVJ3cDY4bTh0MnZLZTk5MGtTWHltQnhCZVdtd0pQZzVEdDJvWkNoS0lkQ1ZFc2psM3JLRUJsVUZnV3d4TzI4RjlaNTlBR1F4dng1SmVza3dPRnhGeTcrOEdDS294U1hFNWhpa1ZIc2lHZ0JLSzBCOUFERVBkU0MyNXEzbG9IbkdSbXBRTmhQVVBwWUQzQ280UWRjWDBCbWpNUWFjcmZPbHdIQXBoNDF6aHljTVhsckZvZXBCMkVrUkNoaW5HWVJSZ3doVmFtYUt0eklob0phNzdaV3psRFlIVnpuL3dEdHNIMjJJSFRZc3pacXpZN09INXp0YVdSd1M3UTg5M002dm5YUFpSMnQyNFBhalhnRkFuNWYrN1FDeWV5SDd6cDQ1M0hNTlY2L3V2ODRrOWlNZUo0NHRuVVR5dWJSN1A1a2NPYXR6ejU0L1VLYm8vMmsvSWRvNnMxZlhpNUduL2tJaFRhTkM3NEtFU2hleTltU3k4UlRqd0o4dldObTF2T2J0YzhtU1dDeHp0MjY0V1RtQ1RuNzNsZnZQdjlEZVQvZlZ3WEFINk9UMjBlSFhqcXdVOFVidG9hVjZnVEtDeFZFMFQzU0FNYkVSQ3BJekZNUjMreE5KblFGY2ljMXJqay9ZRytmVjhmMm5mejJ4NW1sM3M3LzMvNURIdmdIYWtRU1dLMGpJVXdBQUFBQVNVVk9SSzVDWUlLSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQU1BQUFBREFJQmdBQUFGY0MrWWNBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUF3b0FNQUJBQUFBQUVBQUFBd0FBQUFBQW02MUswQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUMrdEpSRUZVYUFYdFdWMklIV2NaZnIvNVBidG5mMDIyS1UzU2xqYjlTUk1DcFdCU1c5QkFiU0V0MUp2Y0ZoUzhLSUpDUVJTdDRJVUI5Y0tmNG9XVW9ONUpJc1ZDSU1YRzJpYUlwaWxwU2tvYTA2aHBaZFBkVFRiWjdPNDVlMmJtekkvUDg4NlozZGt6czBrS3hSdnpuWjJaYjc2ZjkzdWY5L2Y3WmtWdWxWc1MrUCtXZ1BtMDhETVJJd2YzdWxPUFArY3NMSXpiMTJ6SExNNHZtcmtTSWRhWDMxRXAzb3MyZmNmTkdSck9yblhqYk1pYVMrVFFvZTdKbDEvdWxzamNWUFdtQUV4UC82bDV3SC8waVU5Q2IvZHNhTGEyWXVzMnNhMkJvQ3RPa29vRlVCTGp5bEJKV2NjelJzWFllUjNqSkVFYnIyN3Z3anl0NHpYMVBZbURJTzJJbFY2eVRIYld5YUkzbzdOLy8vUE1jMCsxYjRUaWhnQitkZW5xbmxQUjZJL2VYN0Flbm81RVdpR1lTa1JjVHlRTXJrL2VjZkwrbU9oUTFsck1iNEFXYUJzckIyMWpvR1BTVTE1My9zWEpYWjg3bk0rdXY2OUZVMGYvZE9yYTgyKzJSMzV4L0lyeGdrNHNvQzhHTXpqSjk0MkVJZVIzbmVJNE9mbVlLcmxPcWFObGZFZGNxS0tSdEw5MWNlZndyOWVhVHA1cXk4OC9tbnI2TDYyUlh4NmRFcThMNXNtTDFXTytkc0puM0ppRnNVUWQ4UUtyK2RLbW81ZjJyRVcrRnNEQkl3ZEhUeWZyZm54ODFyaUc5Z0lCWnJEWlQzT2xuM0o4TFcyc0hYV05HN2xqUDlueTB1R1JPaEMxQVA2MStRdFBubGx5dHdldFdBd1lVYy9zZnhMWFozalZya0VoTE1VU0czZDc1NzRkVDlVQjZMblo2cTdMMXZEdTZTVVJHd1JNamZreXdsaVk2VU0xakR5MUJlYm05UG9zVldIdEtQVXBOelhTUVhpaTh4bzZXVjlKS0NodmVEZWEvOURYSlJVQWU4SDN0Y2g5c0EwQUt2MitHVEU0M2psaHlkTjMyc0pmdWhZQXpDdDRXUk5rYWN6eHkwWmUrMDlNcUJVUUdTSlVJdDRENkVKZ1JyVlVLZ0MyN2QwMmNMWnJKbUxFYnF1UE94Skh4Sk05bXl4NWdER2VraWtSNjY4V3NyelJHQWFINWpwTFRrNkpUSGN5Y2NobXVUQzlHVE94WWNlT3hzenAwNnR5UXdXQWJOdmxHY2RxZVBRT1o3V0xLQUJ0TXJJRXFTQ0pxZ25oWGw1TzY0YkJ0b1RnZW1NY0lHQ1NhMkk5RHh5NXRLVnlBU0RmTmdPeS9URlBiZ1RBODI2emc0NDRJVTJJNmJKVXVuaE5RQ3pvV3RMS2pBSkllbU80SkNXNVV2QlN2Q3UrS2tpT05aYWxERE9sUkFHaUR0Yk43TldDRTl1bXp6bjIwSVorM1ZSOUlISjlrekJuTVh2Q3VZclNoVGx0SEJDWjhETVpSYk9IZHd1eGo3OE1SdDdHK0NXWWxLdkpndk95WlZ0bWYxNktKOTlVUndDUUFVQW1BZDlwM1dyaEsrdm04ekNhM1pibTBxSkpueFVUaXFMSU1DYlRnZFdKc1NhWi8rNTJTNzV4dndVMW0xSkM2MDNIbUVXRXBsY3ZoUExoUWlZK2paZ3I5a0tZOHI4TW9yZSs5b0VXQUhCNFFKNFQzR0JMeW40WmcvWXQ2L1A2QU9naEthV2dHZ0E5TUg5WFUrU0ZyYlkwS3dyczBjSUM0M0NheHpZNGNtSnFTUm8rUkFVcktFSWlOZERQUDJjU0lNYzUwRUFNdTFlaDZiNkptaW9oS0N1dXQyVHhxR2lBSFJtSVVKMGt5SXc2aWdXOEVyMWljdi9UaC9rc0JyRUVxWXQ5RE5IbUs2c0RvMXJtZytRSWtDYWtDblBSZ0xWNHFTbWhXaTRNeWVYNVJWOHRBQ1lPRFF1UVBqV3RhYjQzZzJ1VXBaa3pna1hSemh3eDMwbkZCV29MRXFVeGNHeXVnZFhMa3lFTE54dmo2QU1OZEd2WVZoL2dZcVh4Sk5MbjF4ekJVZ0hRaGczQmlaZWx3ZTBDSFVzWlp4VzBGSURlY2luU2J5bHZadWlyN1V6R0lOVjFycEVSN0ZnYjZHQlk3RzFNbFMwR3JnaUVPcURiUmdadVJTbk9CcGJ1Ym5WdFNxT3ZHUEswS2dQa0F5b0EyTXdFcGRHQVhHczlVd0Nrd2NWWG9nb0FLQkJJRWhJYWdlMC8vOGlRM0x1dUllTURDSTlvQSs5YXlqeFJ0cndvRFBBdWkxRW1NemhickljZi9mRmNMUFB3YUI4NWdWclNRcUVWOVY1VDhhZ0FJRWhLazR2RFFuVWxGNTRHYTFJSmE5aFhhbVFoai8xcVpxZ1BRZW9QalhKdUpsMHd4ZE1YaTVwUVhsVlR5Mjg1ZlI1aVJvQnlmRmprL29jOWVmSWVSMTQ2RWN2SkdaaVZabE5NeEJnUFROV2RueW9BcUNhZW9Bb256aldRUzR2Q0xqUkFnYWhRUUJ4L0t0RVVuWE90U1B5R0JZMVFER3d2VU9DbGtDS2JVS2VBMUpFaGFndDJTSi9aQkthL3M4dVRIeDRMNWV4c0lnMFhkUERIYURXRWFUTzR5cVVDZ0JxSUFEVU9RUnpxamFIbkJLSWs0MVE1UXl5QmNMazhaeG5WRG5taWxoYVpUV0Z3bWt6Sk1EdldLajBRWko1QTFPbEJtWG5rMlh0c09UTVp3RmNBem5iUVdsOXFBWlExb0NHdHh6eWpVMG9VWkI1M01rbVFCTUxtR0FoYUFSeVNBQXF2TGRaVklHVTB5bjB1Q0FMUUdvVkFoa1UyRDl0eUczYU9sMEdQOUhFRUZ3LzVxTDlVQU5DRUdBa014WWxMa3dzMWdhdXJBRWdpQjdDODN5Y0FiRHM0cG8xTlhnd2ZzT244MXkwRVE4bm4yaVJOMWJBQ1FEdWNlQnhSYkhvUk9RaGhsb3pTaFBwTEJVQUxJN2lWTGlTdlR6QkRFNG9BakptWlRtdmpscHNTR2NBRk1VVVl0d2lKUmVpd25WU2xtaSs0N0FsOTY5Tm9PSnV5eWdHd2hTYmxJekh3UUpYeGd3RG9Ncy9kRkFENmdNWmlTaEFFaW5CSzZlS2NyU2FVSWJQWldJVCt0YnhOQUIvc24yc2prV0d3bzJFUWkwUEVPWXVnMVN1cm8xSU9qc0tnMGptWSs2TWhQRHNRaGtteENOYUdFbXBMUlFNYWhYaUFLQUdnR1hFckhkS1pxV2Y4V1doTUVQNHkyRG9YWm1URkxrS3VJSkY1a0pwRERaQjVjcC9mOUVGR1dUSms2Nkt1N3lTS1loQlhzWHVXRENCbUZ5QU1HQSt0Z09iYXJGRkJCVURIOGJJTU1aeE1FM24reEdZTFJDaGhQWjlpWlRxeFJpaHd6NlNUd2FRSVlCNzdlWmNMZ2pKTkFiYUZmWkVsNjRZY0RZVUVlM1V4aGpCQVFCSGtwb2czQlVxOFk4T1dmRHdiSXlTTERBNWlKZENqckhSTTM2MEN3QVFoTE1Ud3B3QUtFQVFRUUFPTVFqUUJMa1F6b21uUkx5QlBaV294dE1UQlhBZVowRUk0V1Qvc3lOaWdrYitkRCtRQ21OcXl3Wk5kOS9weXRXWExwWGtnNWdJS0JCeUN4UUY4MEJxRWJiNzZiZ3NIUW9DR2FnMHVLRFJ6YXI2a1ZRQjBybDVNUnh6a01tb0FKd2h1ZVQzRVpmVUJTRTIzMmoycnBvQUpyQXRRdEt3WWpGUHBTZVlpSzd0eSs1Z0RqY1J5NEoydXpDNVp5S3dEOHU1RmtjbHJzWHp4UGx2dVd1L0p6SHdxN1pBT2oxMHZwRDB4Yk9USW1Vam1PcDZNREZCcjRBRW0xWEFsSG5FdVliWFZwUUlnbkh3N0NscHBFSElvUWcrbE8zT0Y1dUZBUXBRNHFCWDJtZzlCRzA1VjhJVzVWaXJETGlUWWRLU0RrSFQwZzY1OE9FTTdSRlJCT3o3d2FEaThkQzJWQThkRHVYZEM1SUhiSFprWXNtR2FxVnhaN01vYjcwY3kyN1prY01DVmJrQk5BeHdFbUlacHNIRHFPSUwwNmxJQk1IdnVYRENjSnJQd0lmMXd4Uno0eVpWVTlyOFZ5ak03T0J5eW9zZFNaTFJLNk4zR3k4ZFhZdm5aNFFVNVBZazlESTZlQ2NZMGZGY0djYVVBQ0RsQ2ZaeUVoQVNSOHR6N2J3ajAvRlFNczhIT05JZ29MM0dodVNHWUVXTVh6WmhMTUNjMjdHVDI4bHRuS3R1aENnQ003MXBSNTd6bE5ML0U1RVF1dVpsNzVVUWlyNTFxaTJmbFoyQVAzOFJEZkZMT1J6RCtjNHZzeXVpUXE3YlBEcGR4bGdVQXRHZzA2bFhSNVBIckdIelVBNGNaTm9MOFpSakRQS1A1aCtOUjU1YThhY0lQRDBHSCtleVZleDBBU1Jlbmo5bWo2Nyt1SVJOalNiaUJzQkxESnlMZFltS25DU21HRVdOUlhoeUVDUjlNTU9vUUZCY0dWcFVnL1RRdmFDd1ZqdU5GUjdWd0htQWg4eXNGd1FGengzMUVvMmo2MkVyN1NtMkZnNVUyYWIrei80Z2RkLzVoR2VRLzlZV2NHYmdVdEdIamNpQTlXeVZJS2ZKeUFJaE1rT2xpenMwK2kyeGZOOTUzWE5uWURNN092Zi9iSXlVV2w2czlIUysvYTZWOThlMzIyTlpuWnAzbUhWOUpFa1J6bWdBbGcwdlZpeWNsbmlCaEZlOHF1YjR4UERLeW5hZTY4cmh5blRUWG9wVmx0ank0TVl2dlNOLzc1dS8zZmZYRWFpN3p0MW9Oc091ai9ZKytZaGJPdnRqd3M5aEFDdityd2x4UU9QTzJPN1A0YnYvYzkzL3p3dWRmV1d0OU5kZTFPdEh1M2ZPMW8zdk51a2UrRjV2bVE0ejFtZ2Z3aEE5TGdIODM5YXk4bGtUbFB6U1lWeTU4cFgveFgwd1JBaVMzRUEzWSs5aWd5TWFSOWdkandYdjdmdmZ0eC9sRm1ubTd0dHdJQUNlWjhXMVBiQjdiK1lNdm0rRzdIeGQ3YUV0bTNQVytiemZDeU5qSXl0QmlQUmxFUk4zLzBHUVlrUGo1aEV3eUxQSXNrWC9VTW1uRHk1SzBtd1MrMjUxdG1QWS8zZkRDWHlmZjJQZjZzZGRmbjhUNmZiQlg0NmhmZWZXWThodHRhYkE1TVRIZ3JyL1B6NXh4QkhRWDUvcGVnQytQUkIzQzFKcytXVVdGWDdmWndUWjhGODBzcTV2RlMzTkpOSDgrUEhQbWNnZk4yRTJ0TFhIMDNTcTNKSEJMQWlVSi9CY1lHc1pyMjk1WnJRQUFBQUJKUlU1RXJrSmdnb2xRVGtjTkNob0tBQUFBRFVsSVJGSUFBQUNBQUFBQWdBZ0dBQUFBd3o1aHl3QUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQWdZMGhTVFFBQWVpWUFBSUNFQUFENkFBQUFnT2dBQUhVd0FBRHFZQUFBT3BnQUFCZHduTHBSUEFBQUFIaGxXRWxtVFUwQUtnQUFBQWdBQkFFYUFBVUFBQUFCQUFBQVBnRWJBQVVBQUFBQkFBQUFSZ0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVRnQUFBQUFBQUFDUUFBQUFBUUFBQUpBQUFBQUJBQU9nQVFBREFBQUFBUUFCQUFDZ0FnQUVBQUFBQVFBQUFJQ2dBd0FFQUFBQUFRQUFBSUFBQUFBQW1nTzgxZ0FBQUFsd1NGbHpBQUFXSlFBQUZpVUJTVklrOEFBQUFweHBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEWXVNQzR3SWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21WNGFXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2WlhocFppOHhMakF2SWo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V0ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9saFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajR4TkRROEwzUnBabVk2V1ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQakk4TDNScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0eFBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdycC9zbHhBQUEwNWtsRVFWUjRBZTJkYVpBa3gzWGZzKytlYzYvWjJRT0xhNEVsUUFJbUtkQ0VMRktrUk5BMmd3ckxsTU1mek1PbUltelJKaDBNaDBnNS9FRmhpYklWVmppc2d3aUhlSVJOU3FBc0tpZ0xFbmpia0hpSUpnaVFPQWlBd3BKWVhBdnNpY1VlTTdPN2MvWDA0Zi92WldaMWRVLzNUTmRzTHdTU2t6TlZlYjE4NytWN0wxOW1WV1ZWTzdjWk5pV3dLWUZOQ1d4S1lGTUNteExZbE1DbUJEWWxzQ21CVFFsc1NtQlRBcHNTMkpUQXBnUTJKYkFwZ1I5OUNlUmVZbDE4cWZGenVjVFR1bHlJcytMOTJ4SjRwQnZqTk44STV5VWpvRFJqUTBqVDMzNTlCdjJMM3U5ZXpBeWhuNnRRUkRveDdsWnk0YWYydWZMUC9PcEhxN3R1dnJsYTNUbFJHUzFQbGk4MG02VjhvVnFvNXh1RlZqMlhiK1J5dVh6ZDVlcEY1eHIxdXVGYWdWVGQwd3VSWmF4Y3FYUmNqNWxRWGlyNStvV0ZCRVViWHJBUlgyeEd2S0xDWHVYMVpyRkZmYTdsV3ZWV3E1VnJ0SnFOU3FGUnFDODF4c2J5SzNQbnp0ZGFaeTRzdHc0K3RuVGt2LzdiSllIV2REUjBwRU0rWktJaHhEZ05NOVIwVk1oUWthYVFSZngwTEhhMi9JbnZmbmRQYzhldUEvbXg4UnR6b3lQWExkZGIxOVNhK1YzMWh0dldMT1NxdVVLdVhDeTYwbnpORlpvdWwyKzJYTDZKYkZ2K1VOcUdpc283WXFTVmxJVTBlUWdUMnhIU0RlV3JJMUtvS2hlbERtQW9pL0F4SGZNV2kzQWRtSWdqM1VibDFrWXNLV2tIWUxsOHE3bGx3alZtNTl4S3M5R3FpY0NTbUo1eHVlYXBWajczYkc1eDhlbld3c1hIQytkT1BYbjRuOTV5UW0yaXZSVm9yMFBvTGwrSUNobzJoWWdYeGRNSjl6K2ZlT0xHMHM3ZFA3ZGNxdno5UlZlOCtXSTl2MmNoN3dybk5ad3VhaXdzcU51TE9wYlJoRnFWcTg1SmFDYlVLTTBZZ3crcGtDZFkyaWU5dEZRUXFoSzRKQi9xWUdwc1RBckZBQlo5WTJEc0NEQ1IzcXJ5QUlkUlVFZEl3L29TblNXRmd2b3lPZW5jM0FVUGswTWlPdktvbHhqZ2htdmtjODJUdVdiOU1iZXkvSlhDMmJOZmV2WXQxeDVTRGVndnF5RkVSY0hHc0FJNDZaZko3Uk5QUHZucXd0NTk3NXR0bGYvSjJWWis2dmk4Yzg5ZmRPNnMzTzVjcmVVV05LUnFVb0xjcGgraDBreEJybmwwTE8vbVpodUpnSWZGWElKSDNJMVA1TDBCTE1qUEJFa01XeUI1U1dKeVM4R2RuMnU2cGcwRnp3SDBOS01aM1p5c3BLQnByVkRSb1RqZmJKN0pOMWYrb243cTZNZFAvSU1ERDZ1RjJZbGlrMm5TaHlFa2h0MWY4TUZzNDdmdnZudDYrcWRlLzRHWi9NaDdqOVh6Vzc5L3hybm41bHJ1N0ZMTExjcFhOcVJ3UmswTVVRR1VsVXM1TnpidURTRFdEejN1WXdERHB0TTJnRWFIQWF5bWd6SGs1Qmx5cmxET3ViSzhVNkhSbk0zWGx6NjIvRGYzM0g3cTNXOTVRVzJHN2cyR2FRRGdnc0g2SGM4OTkvcjY3ajIvZDdSZXV2WGg1NTE3L0Z6TG5WNXF1bHJ3bVdiOXF5VmdKUmhBNmNmU0FOSUNrUkhJY29yVm5LdU00eEZXN3MrZE92bkJJN2RkL1MxQkRkVUlvbXRKVTk5SU9pcS8rWWZQUC8vTytlbDluLzN1aGRLdFgzckt1WHRQTnR6eGhZWldRRnJKQ1hOZWtNTzB1bzB3KzlKdkl3L1piTGpseFlaYm1OSGxRck4wYTNQWHZzL3V1K2Y1ZDRwM0poS01ZQ2hpSElZQndJaG1MdGU2NDlUcFg1cWJuUDdrZldmeVUzOTF1T1VPemRiZGt0dzlSSWJDcmZEOFdBVzV3N3F1TzVjMGRkWnErU20zYmZxVCsrNDkvUjdKWUdoR2NLa0dnRjZ4eHNZbmp4NTkrK3pranR2dk81MnJmdk40MDUzUXFHZUszMVM4aEhDSm9kbVFON2pRZE10THVhcmJ1dVAyZlY4LytnNmg1SHJwa2ozQnBSZ0F1cVY5ODZNSEQ3MSthV3J2N1ErZXpZMTgrMlRUbmRGOHZ6bnFKWmtoaG1aTGE2aDVIVXU1RVRlOTkvWXJ2M2pvcDRYK2tqM0JSZzBBNVpzQi9QS0hQN3lyY1BVMXR4K2N6MC9kZjdMbHppeEwrWnZEZm9pcWI2UENDSmJuVzFwUGFUcllkODN0TzMvakk5T2hkc01TMzZnQlFCZjM0Mjc2NTcvNGdaTzU4aTMzSDJ1NTUrWDI0OGlQRnZKU2plR2Q4Rkxscng5ZnVzSHNhbG9UTkN2bFd5ci84QjBmOUwzWStGVEE0aTFyZ0RmMDNQcXRyMzN6TmZQVkxlL2hVdThaelZFMU9hUkxIZjFjQnVaMUVIUGI5WElGOEhOd1pRb2RPblU1UWlGRkExckRDSTE2MHhVdUZGeDFiTXQ3ZG4vNi85MzUvTHZlK0pEdzBvWE1GRFppQVBTQjBaK2ZldVVyMy91RWJ2SThmcmJsbGxkYXJpZ1c5RERra2tJMGdKeU1DZUZkcnRCTjUzSVpBTWJNZ3d6NmNxbXlhY3RDMDREV1dhV1IvTmJTZ1ZlL1YrWHYwOEY2QUlsbGt0cEdwZ0N6dE4rNDY2NGI1NHZqLy9nSHVqOTFTb3VUOUlqQzBpLzFpS1B6VXZHczFYN1lQUGVpZGJsbzFPVzJWblJidlZVY2U5c1YvLzBMTndiRlo3YmpyQjRBQW96KzF2UXRQL25XazduODl1ZG14WWl1OVhVSE02UHRDYjVIUUdDTUdrS01mVzY0Witnd1ZtQWJPcGtsTnlBN2NkUmJYMEsvQm15NkRwanVFU3pxZHZwb2ZudnU3N3ptclFJK3FNT21ac1VEVThwcUFEQ1YzNzU5ZTZVMU92bm1FM3FvYzBiMzloRW0vbWNZSVk0WUVGcDZHRWg3NFJEUFpnU2l3OGk5bkFhZ3hYdmlFU09kZ1RYVWkvZFlwcWRMalZwQlQwNjN2TmxOVFgzRW5UbXpyQ3J1RHd3Y3NrNEJ4dis3Zi9NM3Ixak9WMTV4OGp5UGNNT2RQb1E0aE1OR0k5TGhrR2JZQk9BM0JQZzRSOW5RRHVnTUUxOHZYRUV1TWdMNHRqNHBwcCt4cnh1Vkc0T2tvYjBNclVMNXBoM3YveTlYQksxSEd3dlp0YU1zSGdERTVtS21iNzdsd0tJcjdEeWpPYWhCWjlhbXNXNHR1aVlRYXpPTlBUWGowYWtXdTc2d3k2TkZlTnBzT0FnSitEbVl3dUxUeUEzajY5TVFMOU13T3ZLVWlwT3JKQ29JSWh3MUZtTmZzZjVaR0YxRGV5aWFsY0xPeXY2Zk9LQVdUNE54L1padGlDd0dRQ3REUHJwcjF3Mm5XN25pZWJsL2U4YWRpV1NiZUV6bG9vSWxFK1F5cVFYRmJ1MEptTllqNFo0aHlJNjZWSElWNkNxMlVnVzBxMVp5eG4rdFVPaVVXaGZTcm13SG5SUktYOTVWZ01JcjZzdWtudXp4S1B5Q0ZtOEZGVVl3UEp6UGlKY096SU5sbWxoWFBsOHNiSisrUVMzK3J3NkVCcXExMkZhMUQxa05BT1Q1OHVUay9ndTJneWU0c29odGd6R2NhaEM2cXJELzVNNkN1M1U2NzdielBMeFlzRjVZVDFMZFNTVUhwb2pBYVJjRmJ3bERwSkpZbWNJMkxCcTRkN1N4cEkyTUp5KzAzUDI2VmY2OW1icks5T3hmbzU4Nm13SjB5cmU1UzNHeVRsSUl6TE9NVCs0WEpBdDBVQTRjc2hnQVl1SW8xMTM1U3JaeExjbWFtOUdWRFV5eUI2Q0VCQ052bWk2Nlg3ZytwOUdpcldIQzMySTVvN3FleXVoWDNvVWVoaTBraVpCUEkwMm5RM1VrMnFzcWdzUTRRWjBrdW1pb3ZGRjJibXBYem0wZktiaUNIUFVEWjdXN1ZRWnZ1NElFamhoYldFTFdvQ200cFcxMWNzaFhxYWw4alcwMkhSaExGZ013cE5Oalk5VjZvN0JyUWV2TnBvZ1h4WE4zdndlbFRuYzVtSWV2MGhhd04xeVJjeFBhRnJVd0t5dEx5UUw4MGM1U3hZT1M2WUNMdkRMblIxeklQYVpqM05Fb1F5YmlwMGxjVjRDekZHaG9GNXA3MVZUQlBUVlhkN05hUUxObnNIc2RrTVlCbmpXREJLTzd3NUpQY2RxTmoxZmRSWWFtcVdTZ3JrQiswR0I4M2Z5V242azJjb1V0Yk9CRWNReFMyY0dHRHBUS0hUOVd3MWVONXR5MkNlZm10YkFzcTR3QVhtQ1k1a2d6VGNReXlyTWMzVHlDRTlmSkVmSEcrRkpvcEhGQUkvSXVkcDBjbTZ0S2J1TXk4bDJhNzFoQXMraWxJellOd0Uvb1l6ZS8vZkxXSENWSUp5T3Zlek1rTXRuUG9CNGdJczN0dmY2V2Fpdm5xalYxQk8zYkxVNGxOeG9RREVJWWsvTnFpa29UZDZZeUZwZldPUkJUa0FxVzdTcExWYTlPQ20vc3dPckszaVhEcElFbmlJZGQvb25rS0hmT3NCWlYwRzhXd3F3SnFNOGFiS29zdW1ycDJyOWJYWFNmby9uQTNSM1VBQktlSnZidXJlU0toWktNd09XNStiOEJoaE5rSk5RZUl5cHBaU3lkbStLanRkc0lWVjFDSWlSOGxKUjJvT3VYU2RiZGE0a21oWkpMckt5aEh3MnVCS0lCMkFoWFI0c3FMQlh6cmlSRGlMdUQ1UWN5cU01ekIwMmgwVDdLZkhsa3g1NkticzFrQ3BrTm9McDl2RndxdTFKWmJteDhWSlN6eXlsaE1EWkZLRVVKQXNYak1uazZaNk5mTVdYbUptbWxOQ2VMU0dZSS9sSXphTCtmRVNTSUw1RkdDai9LeGJBcFlyNk5VMDlaV2h1WDIwTjV0aHNZZ05BdTFWeUY2NGV5WG5BWkhja1Y2OXRIcEpVa2dDYnBVVkxhbGNoaUFJYXcxYXFXNWhkeitWa3QxTTdOTVBtc1M2T0xaR2NXbDRlQzZ4TkZZZEs4cUh6aUFVaExldDRZSXAwWWQrSVpMRWZiSGxMdVFObVJHUXh0QjFTYlJoelowUU8wcEd6NlI2Z3RhUkY0YmtXR3I0cy9BUlJ3RWVLTjZTQkxBTHl5Vk5KMk1WZFlybzFsMGFlUnlkb2dWeWdWQ3kyOThJUmllTXc1akdBM2s0UUlSYWM5Z0JtQ1RoaEkyd3RzVUVFREN6Ymczd2dabzhGSmpSWFp3azV4WGdxbWxBVXZDMmY2U2Qvc2hBZFFHWXJIVUpnT3Fjb1NtQ3AxSGFpWGpYSlo5V21YMzFsb3lXSUw2SjNiODhZb0hkdG9RQkJnTWVFb0RVNEV4QlJnK0JYVE9STVdhUXdoSWRaT21iUjdsQ2R6Y3F3elptblhXZFBHcEJTTG14UVYzN1FORVZHMTR5NEpTT3VHWFNQYTVuMEJZdUNrVWJCTkFVSVhMejJKRVFCWXJIKzBheU1mS0dVNHVDZUhPL0ZoWUJTWkxVYTdsQXZTZzUvWU9oU3lOcStSSSt0dklrK2ZhRW5ER0FQdWtYZjFkSGxzZWNxNDF4QTlBSGxUanNXQm5oQmpGaEYvd29VS1lobmdNVzMxcGlSU2xLYU1LdUszMHE0MmdLOFIwalJRTmhxT1U0QVpnc3FpQVdEUUtNMHJUZ2taSGUyajlraG5DU1lYa1pNTlJCUUROODlzQUxwVWlXL3ArazRNU01vNnBST3lRUUM4S01KZFJKU0xrdGxSeER1Q1M3cThwRU8rVGh0TlZOZVNHL0I1aUtsUy96RWdWQzZmd0d2RHJCMUZFRTgwNUF3T2FFdWtFRmt5WlF6dDF1dWtVamdFNlVkL1VENTVTT0htaVhYZ0FZeC9tcEdtQTByVGppTGxFa05RY3FCZ2hzUzk1VmJ6OGh1QTAzdmI2b1E5dzlCYjhHbGQ5R1NXRGxsQTBlcmhzb2I1Tmwzejc5TWJzOXYwTUthRVZGVHh5aTA1dDFmczE2b3RWeFpXREFOTE1BUEJMU01keWhGUlNMTUhjVjR2bU00cWdTeTVsUFFLME5ra2JvQkczdmlneklJdjc4eWxxOXJ0MnFsUTN5T0tlRXpEY0NnNkpobFZvRjhiN2ZDbXRLMEJoTU9QZmhWQVFQMVR5Zzc2UjE4eUJYQklKNFhzTTNyMkZucEp3V3RkWExLQ2gvRitJUW9QSldMNUpmWDZYOTFRY1A5aWY5NWRPNVp6dWkzdWR4SUZCTURueGhHR3g3b1dicHFZUWVsMDlHTFRmZk5relQycmQ4M0xyS28xNUZoWm14R0FzMXZ4U1I0czdXQkcxODV1SU9XVmoxYk5DTlFCU05tQnJKUzJTMXpEckV3d2JCYUJYQ0hRZjRadzFtRnN4Z1RPWnRackNQOE1ocWFaQW9KbmdCS3ZGZFJGQXdTdXBPNTkrTmFpKzhWcnNuYXZQd1Z1cG5FajVlVjYvZnJxaWFxNzg2a2w5K2pabXF2bzhXNWUwNkZORFF4QkJUc25pbWVjaVRWZlphTXgzUlh6TStrQ3c3REdTWGdBOTZhcmxPaVkwcVVaSDRlOFlHd1JLQkY0RDZBQ2dkUFdycWdDbnF3ZWdPY3hoa1JSMXBCNURiQlNhK1NxY0NpaU1CMWsySk11Z3VSZlh3Qnh2L1NLdkh2M0VKWGZUWEJVaXY3NWE2dnU4RnpOemVvckV5VjVGek1DN0Mwb0pKRVMrUzRFeU5Dc3VxdmNpbnVVeGFKT1BNSml1THNVYjRiZ2pjQ21BQnBCa0FNWmlrZVM1bEU3RWFwMC9aQVkwL3FncXlBeUd3QVlqSGVkYkpwZWhUSlZJQmhHLzNiTitlL2EzN1hwSWdVMnJPUTJ2VmIrcXFteSsvSXppMjVFNzlnWHVNMnFZWjZYWkUzbEVxNlhMejFJTXI1RDZoV2xGcEpFMzRKWW9UaG9MQjBGZzZNb2VlUUxPUjNSQU1JaXl2aERqdGdwWkZlUlZ0bDZnVXRsTTRMMUFIdlViOGdBN01iTk9rUlpLTkN4dWhaOVYybkJkN1hlYzM4eHdyN3hnbWpxRlNwNW5hSVl5T3ZPU2g1ZjcvL0ZnaCtKcTNrUnh5WjlyNEpPUmFqeE9pRkNvR1FDc1IxQ3BPc21IWjZ1M1FrTUl6NXFIT1ZCejV3VmNvdEdaWmpXUDcyb0hrQVA2K3ptREJ3anNOanhiamJqK2dEcjNLYk5FTlV3RjNmRERUcy9KaS9BWTlibEZlMllGWGVGNkFFa1hlOEZFRFhCY3BieUphRzhJNHF3QnJiR0tlQXlZUVQzRC81b0JOREdDUFNIL0ZBMGgya2RFaGlxWmYzNnVwOU1hZEl6R0E3VmdEeGp5TzRCZEsyTzRrMzVpdnN4RzYyYTYzZ3U5YXpER1puYkNEZ0x2eFg4ckJZb3VtT3RhUUFQd0lFUzJrcjMwby9jSTBFZjRycUZrbGdiNi9ySG9YM0VyNGFvVWxsL05XSzBQVDVkUTltdDM3YnlsVmQ5cERjNHpSUTNOT2JZUU1oc0FCZ1pLMWtJMmgyaEhrU05uOGhRekt6UnN3aWFSclVHZUJwc1ZSclBVK05hUzRwdlNlczhZbUpuSVdzQkpPM3grdEdabGhvR1RaNEltSkNsY1AwQWFrRjU1dzF1bE84TE1UNUxrdFZSMXdtaEErOUhrby9pQVBIMEk1OEFEUkJvWkF3UEFOc0ZrdGtBYUcvQ0VrSGlmblRwSU5mVkVkWUFyZGVkSE5DK0Y0NWVaYkVsYUhxZ3NtcG9zczNic01vQXNGVWVzT2g3ZmFZVWxPQXBwakVFYW9wOEtuVU9WYlRxR1lTbWpTa29ueEwrZFREekVjY0REOUFoRStHUEhpQnRCT3VSN2VBbDRPZ29HekN6WVFPZ0V6Q3UvdlFNQ042a0tSaGc5YjkrR0FTb0g4R0FIVnIrWTFSS1NLSzZtYXkxZ0Y4SWV1VjdaWGlPUU9hSm1sSlNYSGJtMXlFcUxCNDN1S0lIOEdWeDhXZFhBL0FvbnNCdHNnTmNCM21VVHhaSzBSQ1VIQ2lBSzhYNlFHMGlVR1lEWUFlQUxmQ2tZUmlIZHE5Z29nMk1wY1ZIVWN5SGFrT0N3Y1R5WHZoaW1ZMldBTmdMSHB4OC9kT1FLYWFEWEFYWVl4STFTTnFrRTE3YnZpOGdTSWVRajhWSk0yQTZNcjZSR1lMS3UwYytkL3VpQVVJb1VScUlBM0xRcGJJZTRTRG5EVFh5aURNYkFDdE5MZ1BOYWtXNGh3d01Nd28xdVFvbXh1bSt3RE13aE1oLzBJTndVdElPUHFlUnBhSXdsU2VFSTMxZ3JGNkpGVnRwcVVCckFZeVYrd0FZUUU1YThMaEE1T2thRDViMkJiNCtuUmJzR2lIU2p5UGRLNTViMGQ0STh0STBpcmVMSUdKeGFaZlJFSW9IOGd6RG5pamlYSU5zVW1YOFJqd1lmc2FRMlFCWUJISnBoN0tZYXZzeEMwL2V5cFZDYTdRTEIya0UzeGEraDQzMTFnNmdkTEJDNFRIRTZZclZQTEFHaUs0L3B3OHNtZkoxS3JBb2xDYTRmVnpSblVMaXNvNlNwSzZyUjl1V3hqWkhGZGwyN1dURVFnNjZDanlWcE44c2hMblk0S21tUDd6bllmcFprWWJySzdvY2xYUllHTElocENDTDRNNGt0OFMxb1VieUl4WWk4V1E5aVBpTlNzWlRhSnV4bFlGbk5nRHpBQkJVNTlHSlpOVXpVSTZSR0l4aW1oQlFPblhFRkFKREhiRVBpR3gxQUE4MStJR2tQaEEzV21vU3NtNUJUd2Naa1ZWdHh0ODVWbkM3dFBkdWwyNFFUU3U5UTY5b2JkRXhxcnVUVldtN0xFTmdYNTRwWFFpSTQzemRZUURDRDkyRVgzVUFRK0NDQTJQUWJRZWJlbmhaWmw2UHRQVmRjRGVqNDdSZTRlWTRxKzhSejRrdmRsUFg2Z1h0NVplUjZ1QktoUVVxQW1HYzJFMHJ1aDg3UTNxOUFHTnF2NUdRMlFEd0FIRUtzRUhaaHlvOGVZbUZlSFcyWFczQW9VR1NKdDhPRktNUWk5dkZxK1JVbGpKZnF4Y0xiOWhadGVPS0xTVzNiU1R2UnFSd3ZXbG1nWUZuaDNMRTRMUTRwTTBZU1ZQUkk1aGhDQmZvRUdEYVlIRHhOZzNBbWY3WjRLTHRmKzY4WHFSNVFkOUhQbkpleHFEMGpQWlV0bVE1ZWwzUVZZVEVOdlBRUHgwMDlBYnYrMHpKbWtFNDF0TEZXbTB6R3dESW9yQk1jbjJ3TTVkRlFVWVE1QmxsYWlOSm1TamtHRWZZN2hpNUFNTTFOdnNRd0U5QVlBbE81YmVQRnR6NzM3RERUZXBac3cwc0FUQkM1eVQwU05Oa0hCcFpXdTFpREU1Q3hPbHpnNTJUTmhHWm1NUVkrREw0TnIzck9LVVhYMTYrTytjdWlwZlg3cW5vS0xpN24xNXhqN3pRc084blYyU2hmcTNpNmVIdHpCQWl2bjVzUURnaDNnK29kM2xtQTZpbkZvRVE3Y2ViOFVPOWpyUnk4VlN4TENyRVdBT3VBNXRoc0Nwb1dDNGswcDZnRFdXZzl1YnQwcElFT2wvWE40dllkNjl0RXZaNFdQV0IyWFNiam5RNjQ5RUZ5djE2bVFDWmQ0bzUra2V3ZmlwR1p1WTVsY1pnMmJxNWI2dHpWMnd2dWpkZVYzVGZmcTdoN3Z6K2ludjBkRVA4Nnh2QmJPMkRwSkhWU2ZpNnB5UFZKc0hvSVZpSVpBeVpEUUQ4akNoYkNCTDNJV2k4cXhLNE9EOEJHK0U3MHFIUW91UVVDaU4rSWN5eFZJN1NEYmlNVG9BaGpWdXR6Uys1TXY2K1dKSzMwcFp6elZsYWdrVk1YWEdiZUNmRmRDNmRwbm1hcWtmWFZwQ3ZpL2xWc1ZDMTVBRnErckFEdjNreXFwMzh0OTFZY0RmdExyalBQcmJpN255OHBvOXU2QU5RdHJGRkFFTEFYek1pNnVLZXJNbTRtOFVlY0wyS01odUFkb1RwdlhxOUZDS1hOcW5QazZ3V1Jac01VMFZSZS8xRzljYWFqWFpWc1g2Z1RUTDZFVWlhK1NUVHhteWp4c29CYkpkSG1hU2JVOHNlUTFiaUdBTmVoYW1BbzNjSUZVa1VBZHQweEdHcUtlWGsyMlVHQ1RPZVVWRlVuVEVuMWFrWUJmS2ZoSkRXejZHNHV0NkZyQ25QRlBITzE1YmNYcjA5K3FtRFRUZXZLd1Y3YTBoekNEak1mTk00RW1TNmdwRStSa2UxUFM3OVdraXFmcTFrWmdQQW5hMW9KYnVpZDFEcmJOL3RFK0FWblRVRW95c3hDK1F4Q2pwRE91WWpyQWZTT2RWUlN3cldDcnZLRFVlb0lvcWhycFdYN1pIVU9ScUFmWjdGbEJLaEFobjRTQ21UV2lQWFZkWnU1V3RqdnMyU244QmFva0ZaTkFLcnR6S2xBakFSME5nTG9TUkRxT2tYUlhpNSt3MHYwemQvNUwwKzh0Q3liWkExVDJCRzRBMEIrRTRPL0JxRGR5bzNFakliQUQvcFVwVDc0bWRXbHZpbGpUNVVZWkpyM1VWdDlWMWVSdVU4bHZFRzRPdW85MGU3UjlRQWxNaXFuZkJTOC9VNjIyQUx1ZEFxeVhFZklJL3lkZU1IRHUxWmdDM1Z2WklTSk9EcGJKemc4SWxldllzTmV0V0pYWnVpZkIzMjFqWUV5d1I1V2FtUndHQUlTQ2pQMUNCRnZucWZjLy9vYk03ZDhjaVMzdm5UOXdTMExyQjlqaGlTb2ZGdHJLRk9yYWFNUmtWMXRjOGFNaHNBSG9BMUFQMjBKMng5S1VyWTBwTDlDUmF4Y1VRUFFHekNqM0hiQ3F3aXlNWFRNUnJXY3k5UXhFZzdjSGJLd25DdWlFR2I4OFVrUnRqa2tYQlVUQUpQNnhoQ1licklxbFlWeEFhSzAzV2h2YUsyYWxHV2g3R25nOENqUUhoWDJuc2RvUFZuV3ZVMUJYbFd6YXp1dHV2TDdwR1RkZmZ3ODNWWGxYWU5SOGM4RUdnS0c4WGN2K0RkOEt3aHN3RkFnSG1jUTd6M0RKRzFxT0FJQnpoSFZINnNOelJkdUtnelBCR1oyaUZQd0NqcTlnQUptQURzbzArQzVJc2JkREN2TkpkamhrRFI2Z0RXWGlFUTdGV1ZFRFJ1T2lEOHFQZEZxTldNejVSUFdac1dFMVRvcGVkTlhzcjRsQkZ3YitDdEJ5cnU0S2tWM1RDU0g1T1c5WUZZWFNZbWhEMEJuYU1CYk9CT3NNa25RVFJJZ3FrRzVVZmw5V3BEdDZ5YlNjSVhwQldmYm0rM1JhMEIyRHJkTk1WMEdTWEcrVFdXQVEwaDhoZ0VOMlpJK3lsQWVHUUEzQlRXVFdBSlZrS01ia1V3Z3dianN4ZHcwRU43eEhjQ1JWTFVHMTN4MG9adHArRFh1RFl2QUkrNkRGUUpMOGdjMEpkRURtd3J1SU5uR3JxcmlTblJIN1V3WTZLbFo0SUhUZlNkQlhyV2tMMUptQUxTQ3V4RkZOYUFpZE1FN0hKdys5UkdjaWhJQkV6ZUlQeloycXZFdXFnVGNLRUpnRDZ2Y2h5UmVVWXJ4YnY0L1FDMkNVUkxmLzRZZ2V3VUFvUGhDN0JyUmNiT1dnQmRkUjE0RXdXSi81Z1dnTEZnN2NTVkxOYjNoek9WSGlFUHJIaW5nV3ZFc2hhRnI5WmR6Yi9STk5DU2hnMFM0VVZnWDJJNXBnQmtrVFZrTmdEY2pIa0FVVE5lK2xBME5qbHhCTTVRSW0zcHF5bFVlVWEveHdOZ093QVRkR2FGakhDdlRtdnRCUWhlYWQrbUEzQUJvNWlITk9aZXpXMEtoRVVoUkV3WmJScURwRHhYL3B6dUw3VG9pVVhkaUFUb3kvMm9wUjllK1I3ZStpR1VZRzNqVjUwQmFocnduYlZuQzlmdDBLYy9wUHdHNnhxYkI0VE1ybW5idEJrQUtGSk9JM1BJYkFEY2JXSVJDT2NvYjgxZ1dnNndpbWlHQjRCL1d0ck5KTVdtTlFwTWFsSVdSU0ZMa1JVbm9xWStqQjRxd0FVd1NlV1pacmovRGcwZXNsQmxVd05JMFNBRkVaZEhITW9vdDBvU0E0WmU4Q2pTTnpjdWxZNVRqK2ZhVTdGcEwxQ0prME0wRkM1WnZhejBWVEY5aEdPclhxSGpnVkxST2lXYXVrY0FyS2Z1QjVCTkFRTnluUWJMYkFDc0FiaHVSWG53MHk5UVpZcXhoSWNpMldzZEVCVklBMlFISEIwRVAwcU5Cb0ZRQ0I1R1FsS2wxY0dQQ28yVVRoaUFEWGpjSnVWQ1pxT1gyS1BvYzE2N3RyT1JjZGxabE1yQlA2RlQrUlJpbERJRitrYk9ZcDFVUlJ0YjdZZTIzQ21zNklubDFrcmVuZExyYnkzMk9RSkRweFVDbU1VOFE4aXNUT0hJM0FiaHhrVmdvamhqcDhmSmV0Z3VSL2tjTUc1Vm9aN0lsN1E3RlkwcmdiVVdmZ3laZTVlMHpFRFVNaG9HTWZodFU3RFM4SXJBZ0xlUE5FU0pxVzZ3NERrejByMGFtRldsSzlvRUxLV1RMd2w0aENqMnRkTUFBUFExOFhJUFUyVmZDNzhrT3E0RklIYzNyYkVKRUZpUEdlcllnNVlMdXR3bGx5MWtOZ0RRRDdJR0FNNE1CTDdoVjBkVUVLeWIrdy9sUkhRSTlmcng0V0ZSWHZKOFhCQjJKU0FvVTdodlpDMVpNMEVqNHVmRkVKNGI2SFZaM1E3MlUwcmNuV3NOa2xOYmlNWmdVcjUrSXBKUFkwampzSEp6QXhIUzQ3UWVxcWpEQUFRYzRURUEvNTZnbm1Hb1BRYkFKV0hiZFpKV2UyazlPQUlqdXdIZEcwT1pEU0JlQnBvMWR2Yk45ekNjcWNLbzQwR2VvM3NSU0tFWmlCSmVtREtFSUJBLzNtbEY4TFZnWVEzQWF0OEhsWU5ER1F5QVl2WUUyb0NTOHYyWGg0UWJqMkdGdEFxNHlOTndvREF3b0xDMWVVMlMwQWprNHZ3ZmpjQ1RWeHZ4UTkrOXQ5SXRkR21ZQVkraURaWU9nbHBsYk1sSFltU3A1OGlzekkyMGFjZ0M3TXVVV09FYU1qRSs2VEF3NFNCaUFkbXU4d0J4TVVrNXdORUFiR1FyWS9Vb2kxNEdDZVI0RTVvR0tvczBFQmFMVEQ0MFllL2VLWVA3dDB0Q2hHdk52YWNoYVlGQ3RSa2s5QWFqMURDblVBUmFIU1UrQTYrZEJxQzIvdC9IU2pPMUlRUDZZNlBkTEZ0cDh2RkFqb0loeTZuSC9TRnExZzNaalVZR3dCeExSK0k4M1lzS1BNT1lEVExGTmhjcnRpbU1Lc3JBRTlLazFCOS9xREIyRHJkdkFqTEFBS3plQW11dHFjWVl5Q2tOZmw0TXNTc0FGZlBxTkI4MEFwOEp5WU1hUEdVV0JHTkJlWklVeDloWCtEUDRMeVZZbjRYQTQwbjd0MkF3TW1aN3BkMzRWUjgxc1FQTDExT1FvekVWNDhBSXZISzhhQjZBS1lDbmU4a2NIaGhKUjRtY0FyT1JlWlREWVFJMkk1SWJVdys5UUR3R3hHTHVHcmpZdXhoalZmUlVzZTJqQTVPbGZWdHdtd2VBU2NFMVJWaXN5cVhxVUJxOHZoM3dJRjA3cENHRXVrZndwZEdEUlFCcmwycHNVRG9SMnhFS0xMSkc0a3Z3eU1rdkFqRnd2VktuNGNtVWVUSDhFR2NiZ2FjVTI5UHVSVE1BMnhTS0ltQTJjdUQ1U2M2eDd5akRhOWRiTzgyU0tVRGFRdkYyZ014d2haRWd4SFRJVHdHcWtuVHdJQ3g4ZUliT1BmNjhSajJ4TFJRaEk1R1pnYW1lTjROeFQ5NEFCSXNCbUY4VnoxZ0V3clkyUGxZeUJLK0ltSU9sMkpkWVJwendIQXZURmh6TGlLMnhUcUZ2UkJIVWlneFc5ZW9Ib0dZRTZyVDNXTG9UcU1JVmpmNFpQWFZsM1NPdzVLRGZQT1VFRDIyUjEwWkM1aW1Bd2NWOUFDelRkNnczV2Fvand4R096bmNzQWdVVTU4TkVNZ0pHRUlqRWxFN3ZRRVFQdzd3Znk4MmxxeHh2Uk1EZ1dCeXlNeGNEQUs2dVBDK0lldUY2WWRuWmhBNXloU1JTdTVpeEN1VkNIVFd4SDBreUZIYlhoYVloRWgrcGdrNXZJZVNCRCtPUHJQcUN3WkpuQy92c2ZNTU1vS0I5Wk1ZS3lIUmd6eVpqWlUwOHF1U0tJV3ZJM0lScmE5dmdJUWFpTmZjaWF2b0t6TUl3eWVpaTZRaHQyMGNBQ0tJeVlTaU5BdGtLUmN4bGpvMTRDUVZjaGs4aTRaTEpEQ0dGMzE0T3RSRXY1WXVJL2VZUVFQcVBzS1QxNzBOSTRIZ0owRy9YSmxBcTg1U05iMkJKS0RZVms3UjY0aGg4VzZzS2RUd0Q4TUhqNHVFUHdmb3M1b3hOOVVuZi90VzJkZWNlTzdPaVBSWE84UkhZNVBFNkRkUThZb3JqZytLc0liTUI1SEw2VUtnWVpOUkJ1RitneXVwOVA0MWhNd0RhcVE3WkdSNEp4T1JvQXZJcVlBV1BJSUJuN2tabW9PRnpxZ2piVHduQlV3aVFPcERHS2FDbVcyZ3R5bFhHOXdIc0oxb1lWUndlVkltZzd1N1ljQ1dtWUVaSGtTRlRSSTNSRTQvdzdkTWhOcmhVbW53U29FeWR0VEE4c2NxVXIycEdQenl5RUJ6UlZuWmVWbm5zUk0xZ29XdC9hbzRoZ0NYMmhSZ3p5cXpNamJScGFIZUZ1WCtNd1BkRmFEcERaTXpxQXd3UitmUVU0QTFBaGFyd1lQNU1lK1p2T3VWN1NZbkFWSVpDZVprQ0k4QlYybVZTSUdnR0lCUmNCa2IveUZVQTE5TmVzSW9qY3dLSmdvZUlVVkNCcCtRck1VTGU1cUVlRGpGNmFIZzNya3JTL0dGcDFnZGFXNkZpSDVSTGhYU090T2lwVDdZNFZWUGpSelJLdXYzTGJ3eWR1OUJ3UDNoK3haVzFyNXdiWW1DM29LYko4eEFWQ0lYSkttY0xuUUF6WUpUZGFMUWxTUGNCVExkNDJYNkJLZ095aEluRmoxRGw2VWhVUGpEeGlMaW9SeWlTaFhrQ3ZBQUNRQmUyQUJRR0huK2E4QlhieUJhZWh0WUlLSWhkUytnRVFuWWZRQVJNZ0ZZbVBCQUthUk0rR2ZKVzdEMUdWYThNamZOQ2lkNDBZWmMyWHgxWjFKcytGeGVidHMydHFRNndUakY5Qzc5L3ZDdmlWa2JjRGgyNW1JbkdScHdjdnI4VGVyZGhtNzRBL21WdENUdXZoMENqZWhnVS82eGo4Q284OUFOMFpDVVAzVHBraFpZdFpEYUF1bFpaZXVQS0hsZWh1SDdCR09NVUR5VnRoS0pWQmQ2TEk1OG9IeUg2S3V1UVpHSXg2ejV6L1lxTm5uck5Rczl1aFFhalFCQUl3UzhDOVlVUWVRQXpBQTFoM1JTMmUrU01Fc05wZUNWTzFkbWZDVi93YW0rdVY0cmZNVmwwZS9UaFNyNXJlTzVpM1MxSUNSTXlodDA3Q25xQlF3OW16aGZjV2Yza0Mvc2Q2UU9OazM0bzB6blBlOXlDVWdJdVF6QStsRmFNcDRFMzBpT2lQejJaZCtjdk50dzNubHdPM3owVXAvQ3A5Z1lIdllDR21LYVNRVXZ2SHdicGhzb0Jvc3dHa05OZWE2TVA1Y2hGRDBJb3hRc0hhSm1uSXZMSlpTQjVzV3RYQVNZOTBLbFF3V1NoazFlUU5RK2VBQmd2TU9DUUozbmZ5dU9EQm04SE0wV1lWQlN6a1BRZUlBaFNlUzlNbjRjU1c3QzM2TjNCSzdVTFo3czIxeDA4dXVUKzh1Q2lPM3l1WVFiRlY4Y083Q3k1dDl3MDRnN3MwZXRtNHlWMzVIVGV6Y2hOODk2Qjc0ZG5LdmFEYm5XR2RBRzlGR1Y0Q1FlL0lUQzFwZWgyYW92M0gzMXJ3WjI5eU9objZ6MS93Y3d4Z2hSUzB0U1lBWmhFVTVVREpMTWFRSzZoSFpkYXJEQXdiZTdwUllOdUpxWklKdlNiTWtZcGJSUGxteEY0a0k2T0FhZUNPSEpSTmtRUnFrMEZJYmJPQTZzRXl1ZW82NU81K25xNkZsVXFsREhrNVM2WXk2T2d1ZGVPZ1VDUEJlS0loTHhIVzYrdTNaSFRieFkxM0NlL2ZkRjkrOWxsNGNwcmk3YW1BTUd5UmV2aFl3MzMvWk1YM1J1dUs3bTMvY1NvdS9uS2dqc3NJemloWHdCYldKWlFSQnorOE1aZStjb290Tk5RYkFmNHNVNnFSVm56L283SmtydE9QRHp3OUpMN3hoTkx1Z29JeWxkZjZDZXRPZkF3NUFtZWdwVTNtendGeXhpeUdvQkdZcjJoaFV2VDNCYW5IaUVwRlhjSUQ5Y0tveWlkQTdiYkM2b2dJT3RKMHJKRCtSZ0J5b2NjaG1EWHdJcTVFV0kzUXlRTmd3bjRXUXZZSXBGRzBKZllPTXdBUUtJcEFwNHF1dFRhcnJlR3I5cVpkM3YwR2J0SG5xdTV6OXcvNzA3UHQ3UUhyeHkyWS90Mm5pSFJsNUsvL25UVFBYVm13YjNqdFNQdTVWY1U5QjVpeVQxN3FtbUx0cHAwWUYxSitoT05RWFFUZFpIeUJzaFVoS0ozYlMyNEczZm4zYkhUZGZjbjl5OXFmMS9KakMrbmkzdTJoZHNESXNGYUsvRWVBeW5lYnRabUVkMHQ0aUk5Vzhoc0FGV05oUzBUcnFIWDdiUm5iZTJIa0ZoK2VhVm9iNjBnRDBabm5BSzhCNGdHc1pwcEZLcmVlZzlBVW1uekFrcWpReGE4MkpKdENoRXNYZ0hjMEZnSkJzRG94LzJiRWFvT0E4QVFHTlVUZW5tVVViOS9TdkI2YmZ2T2g1cnVPMGRVVzVwd3U2ZTgwZHJpVW5neGxpU29VN0Myb1BYV0hRODY5OU5uVys2MkEzcXo1K3E4ZStaTTNwMDgxM1FYRnYyMEFDOSs5Q2V0MjNuaDVPUFdFL0krKzlqOE9aMXp4ODgyM1I4Slo2RTY0YVprblBRcHI2bkpYaFZVR2paU25CaFM4bHYxMHVuRW1Hdk0xZlZDNUdxUU52RWVxY3dHTURzN3UrSm1tbzJGSlMySUZ2b2JIR0pDaVV0YWtaM2ZwaEhaOHU4dGVRK2d2S1NEOHBDbXJhWlhNZWZiVTJ3ZFIvQUlRQWVDeFF0d2NFbG84N3ZTZmhFb281TjExcE54ai92VVRsdEpzNklGRm91NW5Wdnk3a3J4cEduY1Bmak1rdnVMaHpUcTlVdm9yUHlaS3BaMStCRW5neEJCT3dKL0tKUyt3WDlEbmZtc0RPZUJwNXo3aFZkWE5DV1UzVjR0NEk3TjV0Mlo4eGdDM3dPZ244RFRFZkVxcGFQNEVWM203WmdvdUd2azhuZG94WC92b1VYM3B3OHU2aTRtbTBIenJpWWVDdlpTcTNnUVBIMmcvK2pYb3NBUG1lMGpSVGQvc1ZWZm1iSGZES1JHWEE0V3NoaUFJVjJhT2JuY3FqZHI1c0pOLy8xb0lTWnhvbzZmWDlDSEcyV2I2cE1wandvRWlTSkRyNHhiV3JRNzU2Y044b0RSYmRxWU1VaVFwZ2psaWUwVE1LRytvR3ZtbTY2YWtDRDlPa0EvY0dMWDFhUGFWclZWaTZ2dE9pRDgrUEVsZDk5ekJmZlk4YnFyNlkwYTNEQ2JMdm1EbG0wb2tTZXhxd1hvV0NsOFdNYjRWZ3ZickhGeXR1aysrdGVMN3FZOU5mZm1sNWZkeTNacExwL1NBbkV4NytiMFRZQkZmZExlREYrZFlhN254ekg1YVZ4KzRlZllHVTA3OXl5Nmg0K3VtS3N2cXQ2clcveEw0Mlk0aXJrdkVrTTdoVHlBbGd5YWpaVUxGMDVrZmpjb2l3RVkvZnFwN3k3cmQrcVdVQXlFK3dWVGtDcHh2eWNrb0JmbVdtNUsxbzRWZS9ldlJKQ2xhVmluS09SdW5QUWR4Uk44T3VCUm5nc2ZWdlFhTkJLdWM4K2QwdnlwZDZTdTJWcDFaYTNjY1o4WVhrM1RJNWR1MzNtODdoNDl1dXlPempUZDVNUzQ1bm90dExTWEtzL05GZ0dhUUVWTU4xV2tDS09ZT3Z1ODl3amV3RTFadG1VcnA3dDJUWGZ3eEtLOHk1SjcxYjZpdTM1WDBVM3J4N0RLOGdwNERBSmVneW5pMGFmMTFzK1JtdnVCM3Y3aHhsVkZmRURmNW5zV3NDbGpOS3JXWEh3Rk9WQkdFWk13TTdFVzVrc3p6enlZTmdCUEVNQTFRbVlEbUh2NjNxVTlqY1ljaktEa3ZrRjE4Q3FEZHFmMW84bDNINnk3ZjMxYlNVTFhyNDJkbzYzdmlhR3dFM2t2MUY0NDR3Q0FMdW13dnZNME5FK082NWRIZVhMMk8xK1ljOTg3V25QYnRpekp6UlpOcUEydDV2bWwwd1hWczA3Z0lRc2p2aXFyNFlaTzNaUXZRMER4T3BqeitiTmd2UFhrU0lYQXc3Tk1GNXhoNzk1UnJRTU9uNjVKbWN0dVFudTZkMjRiZHd2ekYwUmJENnIwNnJmZVhyY0hWdERodHdOSGRiUEozRHhLTnlQMGhwaHdrY2pIS3oxeVE3R2EyR2R1dElOdzd2Z0QzeFRtYkdGUUE0Q1dGOFhDd25LdXVYSTZyNWFpM2Q4SUJHME5kRUxnZjNqUGlrWkYzcjN5V3UzUGtjVmYxTXVsOGJjbkFtWmhDMEx2MlFkUEhnakp6U0NGMXR3N1B6bXJBZTkrNzB2bjNhTzZWTXRYeXZvZVQwRS8xZTZWeWJ6TDVSNGV3b1JxQ0h3Wkk3aWd6WVB4NVV2ckUxQ2VYT0FrRUNRWE82VWtzSHdJS3JhQk1hYWpBb1lnMThQY3Z5d2U1cVNXbVFzcWt3RUFqZUpIOWYza2FIQVdpejhiOWFvajd6blZPYzBIeGVtODBnV05zS3JXTWtWWGYrSDAvTHdlRzFsSVE0V2kzdEdnQmhCYmcxanovL0pSZUVTWW5ZODNJNWppaEFWOUdsWEE1M1JwOWNIUExMcjN2Nm5zM25pamJxUm9FY1pUMjdRWFNaclFYQm1UUTRJU2F1MUEybGJIaWwrWXJidmYvZnk4KzlQdnpMdWlsRi9rMnQxR05RcVJhelZtUTJ0Rk9IY3VFekVLNWlUdmJzSHZZUkE2dkZnK05HdjNCeDVvSnkra1UyaGh2TnFpVkhqdHp4YW5ZZEVuS2ZQNWwyYjZKMzNVME9DQUQveVpJVVM2TUpBRUEvWk1KV1ZLQ0lZSFJoaEF2clYwVENXOEc5TFJNZzNlSzcwUkEyZzF6NTk3TmpjMUxYd1lnQmRCTjNLRXFOcFFyTkVuTjMxR28rRFg3bHAwMTA0dHVldW44MjZiRm1SY3cxcVF4aU0wcTk5eXVheFgwT1VtVWlGTmlVVTFpNnNUK3ZIS3g0NnZDSGRUcTN4K2lWTUtsMlg0YTJjaFoyVHhoNUJEaUdrTUEvWnRWRklYR1RDNHNPcnVLQXNJUXVSSFp4c0FPdkJGOERSa0lLTEJPZ2lEYk11akRXTmNKYnpCaVVLQ0V2NEMzMG1aYjJ0Z0ttTlJ5UWV3YWhkbUQ2dU1aVG1RUGFCcHNUcGtNUUNRV3Y5V3poNTVzclQ5WlEzZGU5Ymo5dGpsMWNqVHhzRUtHeGZjbENBT24ybTZKL1MrR3dzaUhpMmFGeEYyNDFxR1VDcVYzUGhFeWMzTWRCcEFKd1hFTFVHYmF5KzRNVjBLMlNxZWVWVEd4bHhxcjFKSmdBWVo1QWdPa294ZGowR3BZTVFKU0VoMHVGOGFyZ29BNmdodURQNHBpWDRCLzQyM3dkRjRYcXlIQ1JaZ2FSSGhJejFmVHBVNDdHeGlMZUtKS3RZUGxWeXpjZkhja1NkRGVYK0Z4SWFwT0lzQjBNeVExNDdkOTFSbC84K2VMaFRLdTJzMjYvVG0wdHk0R3BtZ0JlTG5PRndXSDJyMGN5U3JZeHY3aGtJcERFQ1dNajZpS1dKSkUyVlhTSVJqNWNyWnZ5aG82TVE1bERtZkFrYWYwVTRhSlFtek5vUnJBbFpNeCtKZ0UwTUtkaklxZzU3YS9ZMHRSRDBnWld4M2U0QUVLa1dxazQ5VVJRUU9NVFY0bGtsNTBYS3VmdnI0RS9mcGJnVFN5TVo0VmdNd2pvNy8xVzgvZjhQcmZ2bnhRckdzbTVmcVZoZ0JnYmNrTW5FbmZUQlZtSklZRjF5LzhiS0dGdWhpR2NYVHpNZDgxY3QvMFhNOTloQ3dtdW5rSTUxSiswS1ZkYnJVaEJWUHlrUmxSZ0NLV0VhOHdXQTRZdHRBTEJwWmpHTjF6eGoycWVoZ3RDZWt3WENacXdzTVYyd3UvK0N2UC8zZlRnYklRVm9uU05lVGNBS29CSWc1WktUemk2MExwNzVSM0xIbFo3RkNMcTM2aHNDT1diWjFENlhveG9pdHZGVkp2WG90MVJzS0RJRzdkaXpRQ2dOdGN2UEtwN0VmOGVBS3F2QW9EUzlGb2RUeXBDMHZtR2dFSG5ENDU0Zy9UYjhubFRTL1BRRlNoWUtkckdvZEpRTlltVC8xallzWHVhNHlSd2FXZ1RIWm1pT0ZkcjBraUcyaGNlSFE1NzZhYnpSbVdISGJIU3ZWb0x6dUE4WFR5QVN1aEJlR2xLc1N2RWY4MDR5ZCtsT2REQ3RkMGovdE1YajRnQzJoNDJrYkQxMjgyWDBaR09zcTcrWi9HUGxoMDRCM0J0NU83VmtZTHpabWpqend4YStvSjRTNENQUzVBYzVaRFNBU2NTZS85QjhPTlJmUC9KK0tyci90STBaaUtycTVkTXlsVVRwUDJpekN5cjBScEEwQkZXSXU4UnhVbWhoS2Q1NjIxcDZGWE1EZFRhOFhENUdQYnRnZmlyd3Nlb3QyRGUzVGhWaGgrZXlYUC8vN0h6Z1VwSXF0WndwWkRRQVJRNFRyelpVTGozM3VVOW9nTXNmREMxYlM2NDRXTlVycHZ5T3RxblpsT3QydkFlVUthMVd2eHcrTjE0TzUxUHFoMDVEMHVhUytRazhzZDFRYmM4Y2UvTklkRWdQNjBOT1daQXBRY3JDUTFRREFpc3doMWpqeGhYL3pTSFB1eUIrYkY5RENiVzF0aEpacmFVd2doRGdLZlc2TjgxcTRma1RyOEl3N0ovVVllNDhTRjQ3OXIvLzlPLy95RWFXaVRvZ3poWTBhQUhPTldkM3ByL3pLeDNPMStlOVZkUysreU1KT0xBempvQmZEd0xNV0RzUm1VODJRZU81RmE1ZzB3TFZOanhCZmRwV2VLQmJtdi9lMU8zN2w0eEpUMUFXZVdSRFp3a1lNQUFvUXNtbGc1bnQzblZ3ODlNVmZMK1hyNXlyNm5BazNZRGJEOENYQVZNUVgwQTljS2ZlL3RYN3V4S05mL1BWSHYvN25YUHFaSGhSblZqNWNibFJiRU1QaXVBM1VmUGJPdDkrM2VPeWVENVhMamVVS24ybmZOQUtKWlhnQllVOXEwWGZneXJ5N2ZrOXo2ZnpoZXo3MEovLzU3ZmVxT05HQjBpK3FBZEE3Q0xJVzRCRms0L0FuMy9Ubnl5Y2YrbENsMGx5dWlsbnU1MitHUzVOQTFDajdGbDkrVGQ3ZHNMZTV2SGo4dXgvNkh4OTgwNTNJWElmSlhuRUV6VXh3R0ZxQ09FZGg1cUZQSE55eS83WmpsZTFYL0wxOHFUaWlyYU5hWldmbmpSOTlMdXNlOTVKZWk3NmNvYUpkUXJESFBnSzdlWGdaaUhGenFxb2JOc3Q2cVdSUVVaakVkT0xxYXMrMm9udkYvcHk3WmtvYnZwNzcxcTkrL04rOS9qTmlFN2VQOHMwREs4NHVaRFVpRE5NQTBGWis1dUU3RG8xT0hYaTR1dk82RzR2VnltNW1tZlJESWFPNnp1bkgxUUNpZ2JBdGJLdEcvYlY3dGIxdHYzUFRvL09QSEhuZ3ovNzlwLzdqMis2VzZGQStkLzB1V2Ztb1lSZ0dBQjRza01PTVlPNzdkNTJvblQ3MHRkRjlyMm1XeHladktGVUxlcm1KNVVaNDhyV092ZjZvRzRCMVB5MERYWXB3NjdzaXI3ZE5pcjk2Rnk0LzU2N2FYajlmbkgvbUQ3NzZzZmQvNkt1Zi9xM3ZTNEJSK2NTWjcvcXB6YXJBVmRDd0FyZ3dLSjR2NlA2Z0hhVXJmdTUzWHpWeDh6OTdWNjQ2L1pabXZyU05id3cxeEQ2dm1QTVJaS1lJTzlTQXl5aHVjL0tKMURFSllsWWJQUzVYWUxSTmFGZHVRMXVKRi9qcy9RWWxrZFpqbWxlUFRtWXZ1OSt5cGVET2E1ZXc3UWhTQlE4clViajJpTmk3Q2FQYUlUeWhwM3BiSjdWWlZQZjJ4MHYxYzduRlUzLzU5TDEvOXNlZi85Z0hIaFZlRk01K1A5dythUVphUDlLcUdqeHNzTnQ5Q1lDUG9ZNFI4Q3lYdmVDa0s5TnYvazh2bTd6aDUyOHJUbDc5dWx4cDdJWm1yaklsU0Y3ZmwyRFVtM0NRNXFQSC9DSUp2NnpWM2MyaDlCcTBRc1QrUkF4eVVXSkZLUndZQXAyd3g4dkVNWitPQWFDT0k1U1RpZWtrbGlSUThxUVVPNjl0NXhnREd6Z3hjRzFjc2w5ZVlUT0hkcU0zS3JtbE0vbkd3cUhsMlNQZmV1YkJMMzd0N2ovNHRTZUVIcVhIeFI0dW54R0JDSVlsQnV1RDhBMDFtRnlFc2RzUThBNlVqZTI4OVgyN1I2NTgvZjdTanV1dkswenN1aXBmSEwyaTVUQ0kwcVMwVU5FQ3NEUTJrUy9PenVCUndvTjlQVGptT1lBOEJQZ3ZQV0FBVWd5ZWlHM2hLSW90WnNraEtpZ3M1akVPMGhZcmpZR1FqdVZLMnErRGFmMnFUVHhpVXA4bjEzY09Xc1ZpcXprKzZocUxDL3BOajJaVFB5ZlpXczQzVjg3bjNQS1pYSFBoK09Mc3FTTnpKNTk2K3RTVDl6NTl6MTBmUFNVMCtoRVpVenFLeHdBWThTZytqdnFoS1Y4NGh5Uk1NSzBPeUlRRHhYUEkxczBiRUV0OEZ0SjFsZEc5cjZsV2QreXY1TWVueXFPVE8wcTFsVktwVlJ6UjFuNkpucGZmc1FFZWd4SDQrYzFMRENNYWhValpuOFFrUnFCc3ZJS05lUW9qb3pGTnN3Uk9hVzFHc1I4bktHb25xTDc0clgwdWN2aThTTnRZYkpSMG5URi80ZXpLeFhObmF1ZFBIMTQ2K2RTRHk5cElnM0xqUWc0MlVDeEtSdGxSNlpkTjhhSmg0WktGR0JHdEVVT0RBNlhISThxVE9KWkZ1RFJQNmJSQWYyZ0N5a3p6bmg2MXBPT0J3cVBTaVRHRVdFWWM0WlM4UENITjVPV2gwTVlhYVJHbkR3d2c1b0dPZWRLRTJNN25mdmpPM2NxUGlxVW5NUjBWSFdQcTB1M0lYNWJ3dHlYY2JycnBmRHBOcDd2emwwVVFseEZwdHlMVCtYUWFGcnJ6bDVFdGovcWxLdHlYS2wrWHFwQVhYY0dYeXZCbSswMEpiRXBnVXdLYkV0aVV3S1lFTmlXd0tZRk5DV3hLWUZNQ214TFlsTUNtQkg1MEpQRC9BYVVjdVE1N1EyS0lBQUFBQUVsRlRrU3VRbUNDaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBRUFDQVlBQUFCY2NxaG1BQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFlR1ZZU1daTlRRQXFBQUFBQ0FBRUFSb0FCUUFBQUFFQUFBQStBUnNBQlFBQUFBRUFBQUJHQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQk9BQUFBQUFBQUFKQUFBQUFCQUFBQWtBQUFBQUVBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUJBS0FEQUFRQUFBQUJBQUFCQUFBQUFBQzFaNkxvQUFBQUNYQklXWE1BQUJZbEFBQVdKUUZKVWlUd0FBQUJuV2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOaTR3TGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDJWNGFXWXZNUzR3THlJK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2w2d0hoc0FBRUFBU1VSQlZIZ0I3TDE3dEc5TFZ0ZTNmdnQ5bnZmOTZOdjMzbjdjaGdhYTdzWldCSU5nVkh3Z3daWVlEUWl0S01NWGYraUl3YUFSa1dIVWtXaFFFOGVBa0JBRDBhQXlJc0pBVVFNa21nd0lBU0tTRmtUZ2RqZmR0Mi9mUjkvWGVaLzl6UGZ6blRWcjFWcjd0OC9aZTUvOSs1MTltbC90dlZiTm1uUFdyRGxuVmMycXRYN3J0MzVkdDBnTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhjRGM4TUxrYmpkNGpiUzU4YzQ5MDFCSFUzRHNDNzY4STFsK3Bnenp0WmtBa2ZKUU9QMDZkbzhoZjhCN1BBOGVaNE8wWU9FNzk0Mmw2U21yOVNocklCOWs2eG8vTGJWZmRpdGJ5TGVDNzY0R0RKdkkwL0RRYzJoK0V2N3VXblhEckt5Y3M3elNJWTVMU2VkTW1hNHRMT0hOMFB3Z2UweWhuYXVza2JwSFB6d01IVGRScCtNUmxqcFlId2EwRjhORFBMVzlMdjJmaFQ2WEJPODJXeEpHM01CM1dsaE1HVHlkblIrODJjT0xneVpUMU1oL2pzN3pJVDhZRDR6N0ljdVp0SzlrbjVPTUR2cXpUNWkwOGpRZGNwdVROOGoyWnA1UHVTZVVicFZzN0VoNTNlb3VuODVqY09jR1hCSysrKzkzdjN2aThyLzdxY3crKzVkTXVuSC8wa1lzWDdyL3ZRbmRtNCtMeSt0bnp5MHZMNTFmWFY4NnVyNjJjMmR5YmJHeHVkZXRMeTh1cjNXUnBWWFZYOWlaN0t4SzYzSFZMUzhxWDl2WjJrVG5aNjVZbTNkN2VaSmRzZDg4NlpPT2l4eWdVQWtWSSsyZ2lwSkxRQjdDWWs5KzVpRm0yTEJXUzN6a25wUjBkeTlMMHpKbXUyMUxoeXJWU3I2bS9ONlZ1eXJvVnpUeXFTeHVHZGNwNnU4THJmejllT0dTNmpwajNsaVp5MzU3NGxBc1FYbzViMmhYUDd1N2U3dTVrMHUzSXBkdVN0TDIzMjIxMXV6dGI5OTNYM1Z5ZTdOMTQvZFh0NjV1YjI5ZjJkbmV1VEc1ZXU3SjM4OGFsM1V0dlhONTU1ZVZMTnovMGk1ZDMvc1hmdmZyR0J6OTRRMDF1RlZYb0UvcksvYVVjRmZNUVdHRndwTXpIc0luMzJpa254YjJtTi9xMnVpZE1QdTJnMHpSZ25OYS83bHYrMGtPZjl1dC95NU5uSG4vaW1kV3o1NTlaV2xsN1c3ZXkrcVFHM0dPN1M4c1BhT3hkRUh4R2xWWTdYU1F4YlRsV05kV1o3ZGQxM05Ud1FTaURHaUFIT2JEeFFpZGNXTUI0b0dlWmZCK1BrQzE5R2crVHBmSUl5TGFuNGJQTmxnZVlBSEQrZkFTQVM1ZDd2UWFUdExTVE9OcE1PSFByMGVpUStKcGo0a2pPbUdiZGtxZnc3OE1KZjJCUzM5ei9RTmowK3F2cWFQVTBiZG94UkpXOWJtdXYyN3V1L1BKa2IrYzFSWklYSjl0YnorMXViWDU0OStxVlovZGVmZjdaNnovK1E4KzkrdGUvOFJWeDN5enR5RU1PQ2tnNjZDaXNwaWQ4VCtWTWxuc3R0VG9ubk5HYmNoNTBQY2ZaYi82KzczdjZ6ZTk5MzN2WEgzencxKzR0cmIxUGsvd2QyOTNTbzN0cjNjcTJ1RGMxMmpZMWFHN3FZRVhrMkJadWgwTmR6N0VyZUhXajY5YldGUUFVQWE2emhpZ0pIYjB2bm5hVVFQTWdCRkJLV3NJZ3dOV3lBUE1VNUQ1YWc2ODBBY0NITHNOYjZpd3JzRjI0SUZzVnlCd0FVbzdvMkVSSzNuSFpiUlk1aHMzYytFSmxKam5KZFFXM01pb3NlcmFSY2dabElZdVltbHZvbEZNR2dOZGVpMzZEeFFOQko4dlFDTkhPd1ZONm9xazlLU05tSW1WMk43dnR5ZDd1UzVOdTl4ZjN0bS8rOU43cnIvN0UxaS8rcTU5NTRZLzlybytxaHZaSERnVGNMMHMxTVNGaGdRUDFVbVh3cHo3aGtuc2x0Ym9tbkJNL2Myelplc2M3SGp6M0o3NzNYL3lxQjU5Nnl4ZnZyWjM1amR0TEs1Kzlzeks1YjFPMXJtNnFSM1ZjMThDL29RbnZ5YS91Wk1KdmthdjdPQWFUWDBJcHJ5c0FiR2piZkZWRDRocmJaclFRTHowdWNwOEtEbnlic3N3Z0wxVXJHVnJTS3pKeGhkRFNCM0JEYi9ISXlRbVZNcUZ6ckdnNDMzY3hBc0FibC9xMnN6NzFTRmxPdUpWWGFRWEFCeFVIWEFwa0EzeWhKUzV6b1FkMVhBYW5ZK3d2YUNUd0hHMEFvQy9CWmZMRXI0VkNLeFVaT0V4dmdzS1NmRExod0pDdHZUZDBoZkZ2OW01ZS96LzJYdmpsSDM3dWEvNzluKzVlZmZXS0tHd0NxWjNtWmo0d1EvUjdJclYrT3MwS3QzcVdycXZYYkd6VmNQNzJuL3oyYjMvaWZWLyt1OSsvZk9HKzM3ZlpMWC91MXRwaytaSTJkSmUxV2pQeHIydGx2OUVjVFA2YktwTXphSnhMa2xkLzVUdGF4a1QyYWtZQU9IT1dZOUpkdnJLbkFDQUdORkVtVXA5VTFyK1BIcmtmZ3VlNEtaM1J5OUFHdHk4VXNja1Z4UUZaaFJVTjQvc2ZXUElPNEkzWHNmTGdsSFVuTWpoZ25SMzlwdGVSTm9VUU9neEx2Vzk2dm1BUHZxSGViUXN0SldVbS9RSFpzcUtSOE5wcjZqTnQyU1psMXNNSEdIVURxR1dLUWVCT2pabE1FN3hFUUZpTG9MQjNjMjluYVcvbkovZXV2dkhkbC8vNVAveisxNzc1ajM1YzNPd0lxRVgzMDB6bXJXb3RMSmJUbDRyNXAwK3hScVBVa1R3UEFuZXUrcHQvNXU5OHo5cysrei80Ylg5Zzc4ejUzNys1dXZUMDY1cjByMnFGdnF4SmYxV3IvRldONyt2S0NRQ1pFd2h1YXFDdzZtOHFaOVhuTHBPMys4cmRjenBsRDdLbFBYZCtxVHQzYnFtN2NtVzN1M1pWZHdsU3MwYlpld0tVTFN1ckV3V0E1VzVUVjhlWGJoTUE3Z1V6c1dWNWVkSzkvdHFPQTBEMkEvM1g2eThvL3BVVHppQXFCMWR6b3dwT2c0emRnWTVsWGZwNWg3QzUrOUhkYTFmKzU1cy8vcjkvNTB0LzRzcy9JZ25zQ0VnRWdEWUk1TkRKM0V5bjdXUWZuRGFsR24xU1AvS2M4T1NzK2x0Zi9aZi84c08vOVk5KzNkY3VuYi80eDIrc0xUM3hzalpvcjJqaXY4RjFyWTdMT3E1d2FQSmYwd3lQSFlBbXZXYTViaVBYRzFwTmV3YXowUmJQQ3Zzck5RQzBmaml0OEVFQjRORDZFZ1dVSWhEb013Y0NBcE5mYUlJQU93UUhBdTBLQ0FiYUxqNC91WHpwMjY1OTcvL3dIUy8vdGYvc2s4SVFDRElJdElGQTZMcU9BSitxTkcyc254WUZVemNtUEFmbDNPNVB2dVBESDMzLzJUZTk2UnR2cksyODYwVk4vSmMxOFYvWGl2K2FqamQwQUYvYTNOTU9ZRS9iZmsxNExlSDBTcVlVbnVYYjVZc0FjRHNQM1YzNkhRZUFzZm9FQVA0MDh6TVlPQkFRREhRczEwQ3cvYk43TDN6aUwzM3NpNS8rdmlLQ29jVTFWUWFCZHRpZHV0MEFFK3UwSlJ5WUIvcmx3VFhYOXAvNW51OTU4bis1Zk8wN1ZwNTQ2dSs5c0x2eXJwOS91ZXQrNmZXdSs3Q0N3TFA2T091WGRFUHJGeS90ZGgrNXZOTzlxQ1gvc3ZiNFc1cjhlRDZGa2kvU3dnTzM5QUNYZ1hySVlIZG5wOXZtMEkyaGJTMG1mTVRJc2FYN1Nwc2FiN3VUbFhkTjN2VFUzM3ZMVDEvN2prZi8yMy8wWnNrVTFmY0hXS3h5N09hUXkveVdUYytUZU5vVVNuM0kwM21aYjMvYnYvdWxMNzN2clcvOXI2K3NMTC85T1UzNlQ2b1RQcW5yZmVlQ1g3dTUyMTJtazdoZ1YwcGhMdHpoYWJFRHVFTUh6cmo2aWU4QUR0QjNvdVYvU2NleVJxVjNCSnJtUEZPeGNrN2piWFBuUXpzZis4alhQL2NsNy9qSHFwNlhCTzF1SUhjQW1SL1F5dnpRVEs3VGtuSyt0cE9mS0RwNVdENytyaGRmK2M4dnZQMlp2Ly9penZMYmYwR3Iva2UwNHJQcWYwaFIrTmxMZTkzSGRLZnZOZDNHWjZ1UGdCUjJXb3hiNlBHcDRRRTlpTmp0Yk85MFcrd0lOTFYzMkJIb1BoTzdnWjNKOHR1WDMvck0zMy82UjEvNWM3S1d1Y1V3Wk9lYXU0RWNscG1MZEhmVGFRa0E2UkJ5ZE9MQWNkMVgvc2svZWZHL2VmM0tmOWM5OHVCZitPV3IzZHF6V3ZtVk93Qjg2UEtldC9xdjZMTTh0dmtwaEhxTHRQREE3RHlneXdNRmdtMEhBdTA0U3lEWTBnTmkyNXZkR21QMUxUOTE1ZHZQZitEcjlhaVZyejR6QUdSUVFMVlRNVnhSN0c2bmRNUjQ4dS85c2IveE54NzdMWC82ejM3WHpmTm4zdjloUGVMNW5DYit4M1d6aitOalYvZTZWL1JaSGgvalVUR0Z6TktZdGJWSng3R3BtNHRiK3ZpczNEaWVaWk16azcya2o4dzJ6aXo1QWFlYk4wN05qdlRZOW1MTGttN1kzWkF0WEs3TksrbkxDcVU5alVDMVM5dDhlV0hwNHRxN3o3enZON3h2OHZEalAzTGovL3BCN1ZXOXFJM1Ztc2V3SGJjNUtOL3RBSkFPSUNjNm9nOHIvOTZmL3ZidmZPTFgvYUUvOU4zWE50YS82RmxOL284cnVqTHhueU1BNkRQNFM4eDhwUlRnd294UGl3QXdZd2ZmZ2ZpN0ZRQ3NzbVk5ejVDMFM5R2VMZ3VXejYrOGZlUFRQK2Z6Tjk3eW1UOTA5VWUrVnhjSlU0UEFIVmg5NTFWUFF3REl5ViszL2F6OHYrNFBmdTEzWDlsWSsveG45UWxydStwLzR0cXVQOWFiNThSUE55OENRSHJpOU9WM05RQVVkM2oxMXhPUy9Ia1RvaUN3ZEg3NXlkVzNmc2JuVFI1NjdKOXBKNkE5N09rS0FuY3pBRENIeDVOLzhudSs3dXN1L3JaditIUGZkZTNzK2hjK3ErOW01Y3IvVVczNVg3d1JIK25kamNsUEh5OENBRjQ0bmVrMEJBQTg0MHNDaDRBK0NFd1VCRGJlOFo3M2JMLzYyai9aK3JtZjFCTXFIdmRtcDBwVEJqZlh4S3A3TjFMTzRRd0FCS0tsQng1NFlPWEwvb3YvNm0vY1BMZnhtejZrbGYvNWNyMy9VVDE3LzVJKzArZmp2YXg0TjVSZXRMbnd3R0U4NEdjSDlISDBydTRGY0lOd216c0FGelorMDhOZi8xZi9ldmZnZzF6aU11L2FBN0YzWldqZmpRQ1FocllPSUFEcy9QVVAvdngvMmoxdy9pcytvbXYrVCtoei9lZDEzYy9OdnBkMXM0OW45TE1pM2xxa2hRZE9zd2QyTmZ1M2VRS1ZUd2gwYkNrSTdEMXc3aXVmK3Q1LysvWFNXNWpUOGZIZ3ZBTkF6bUh5REFCRXhPMi8rYTkrNW5lc1B2Ym9OM3hNVC9KOVFoUC9FNzdacDBkOEY1TmY3bG1rZTlFRDdBVDRacUtEZ0o0WDJORzRYbnIwMFc5NDB6LzZtUytWUFR3eDZKMnZjdVpDT3pkVW5FK2Fad0JvRFV5RGZRL2lqLy9OYjMzTHc1LzVybTk1YWF0YlkrSy9JRWV4L1g5Ums1K3Y1bWJGK2JoazBjckNBeWZuZ1YwZUhOSjY3OHNCM1JSVVBGaGJlL3U3dnVYaGIvN3ZueTZ0NUVLWWMrTGtHaitFcEhrR2dGU0grY3pCNU9lWWZONVhmZFZmdkw2Ky9KYm50ZnEvcU1sUEFIangrcTYvcHJ1WS9QTFFJdDI3SHRCSEF6dmVDWlFnb0V2YjNUUExiem43MjcveUw4cW9uQWM1K1hPNFp6NXp1K2NWQU5JZ2NnN2FaZkp2LzgxLy9jSDNUKzYvK0h1ZTA2dWNYdFp6L1JFQTlIMTdMZjFaU1h5bklxWHlldFBucDBUS2p2aFVNQ2I3NWxUYVFoQm9kZ0k3ZkJoNDhmenZmZFAzLyt6N0JiV1hBbk0zdzQvYnpzbHBhVnhPL3NtWC9aRS84c2hENzNqbk43NjgxVTFlMXFyUDhkSjF2YmxSWCtyaDFicW5LZms1RDNRcWVxRWZCdDJUU2JyYnY4V2UwK2JyWS9tMHNjVjlkU3doczZ1MHAxZEs3V2pFOE5YaUhRMGN2VXQ2c3ZyMHAvMzVCNy9pNi83UFYvLyt0MnI1ODZKWXJLZ2ZEVktlYVpwSEFHam5DWk0vQThET2wvM1p2L0MxVzJkWDMvbkNTL0d0dnBlMFBYcFpuL1VyQnB5NnlVVlA4QjRJbmova0V3bHRWazZkamxMcFVLbTFCWHV3NVY1T0RERHNJT2REZGwxcW44cStXZEV1WUdsbjJZK1E3MmlzTDExWWZlZlpQL3pudmxZQjRMK1V5c3hGdWlaTkFaNTU4azI0R2JkQ3YrVEI1TWZRcFQvNHpYL2w2VS83cmIvOWI3MXdZM0tlWi95NTZmZWNQdko3UTkvb2d5a3JuSnBjM2JHdTd3R3M2MVZhL2k2QXZnOXdLdlU4ak85a3k2cWVteit6c2VTYlV6dy9mMnI4ZkJqOVJ6ejB3MW5ad3VwNlU2dUh2c1ovS3UycHUwZGVOaUtINC9PVk0rYytjMlhqM1BkZi8vRWYxaDB3SnlaK0hyRE1OT0c3ZVNYYXlodC9PMS93dFYvNyt6YzNsaDU3V1pQL1ZTMUJyeWdpTXZteEdNYlRlSER0bjhkcDFPOG9PdUZuMzh1UVRVZXBkeHA1MDVhOE4zTWFkVVFuOVBTbkFucWdUWnVCYmxmamZrOXo0TXo3ditZUGlNU3pBY3lQWklXZGxIbVVUdmc4NjBzQTk0MTBUcVBJdXkvL1UzL3F6YXYzUC9TQjUvWDFDRjdoOVpvYzhhcFdvVjN0cldldDBISDl4M1ZsYThReXdlQzR3dTUyUFd3cCttTVR0dHpyS1FlYWJUbkY5cUFhNDV5Zk45cVYwbHdLTE4vMzBBY3VmczJmL2g4dmZlZGZlMEZrdW9RanJjaGNxSk5QODVwdjlFOGF0dlBGZi9qcmZ1Zk9tZVVuWHRHMVArL3VlMVZPdUtUVm4ydTMwNXJvaFEyZEZMeDlENkI5b1B1MDZudzd2YkNGQTF2dTVjVGd3ZzUyQUl3aGJxdWY1clRFdlFETmZnNzlLSW0rTmJqOHhJWGYrOGQvcHdMQXQwbHY1a25HTTFrMDJ6VExBSUFScERUR0FlQnRiM3ZiMlhPUFAva1ZiUGt2eVhoZTRmM2FUVjdQSGRmVVVlWDBuZlBPY3ZaSXJxQ25UOVBiYTRRdFRCWnM0YmpYUHdWZ2dMVzIzQXYydEx1QVhVV3M1WWVlK01yenp6enpkNjQ4KzZ4bWhvUEFYRzRHTWlsbm1YTHlrOVBXN2dmKzFyZCt6dTc2K250ZjFiVS9yKzUrUXdIZ3FyN2IzektlVmhoSFdUZU50dE9xNDJIMXFyYWtUZmR3ZmkvYTRoOC8xUlRuaGlYM0Fqck5pYk4vNnRzK1J4QVQzNHVsOHJZN1ZUejVOTXNkUUdxTEVXblE3cHMvKzNOKzg3Witjdk9LVm45K3VJTlhkL084OUR3VVNZV09rL3NlQUJPL1RQNTcvUjZBOVMvMmZFcmNBeWkyc1ByZkcvWndJMUJ2SGRhUFNPOXh6WEsyVzFuNzlIZDlzYUFmMWNITlFHNEtNbmRtbW1ZMTcxTHhqR0FPQU9mT25UdXpkdUgrTDJMNzcxL3MwUTdnaWw2dHhYVmJWcGlwdFhjZ1hPTXFYdjBrZ0dCd0wraDhrTG5ZZ3IreEkyMDVpUGRld0xlMk1KZkc5d0J5RUdJTHRwK1dwQjg4angwQS9hQUJ0WHord1MvU1R6YWYxVTlQYVdtY3oyWEFyQUlBUGs2L1o5Nzl4OS8wVFUvdHJhNS8xbVU5OFVjQTRGZDcrTkVPQnVGcFQ1NHNVcEw5R2VybVRxRFgreDR3SXBWbHdIRlVXKzRoM2RPR1VkN2FNdkdBWXRqMUtTM012S2ZjUFVnajN6Y3ZmUm1nS2IrMHN2NVpELy9SYjM3Nms5L3k5YjhrclhMZXBDSGtKNjcrTEFNQW5rWHB1djEvMTIvNExlL1pYWnRjdUtwSEh2aDEzcXM2K000MERLY3hwZWZSRGM5NzBnc2dYOUlnTTcwd2didG5rblJsbTh4MitkN1pNdC9hdTJsTDJyTkhoK2gvblBaNEFtZVVwckNOT0daVVJFWHZBdlJwQUJ2K3M1TUxhNS83eGU4UjlBczZtQmFwTFBsTTFKeGxBRURwUERCbTcrTGpiLzQxbXZQeEE1M2FBVnpYVzFQb3Axa3FvZVpPSlBHcUo0eHhyNVN1WURkQXQ5eXFkMmJTYTNkb0VUbzU2QXBnc1dUczNhc0ozN2VKUHNsK1NkL2JWdUU5R0ROd3U5VFd2RHV3QXdDL3RDeWw5NlRvOGtOditseHA4ci9xOEZCVDNwb0luR1lKdlBNMGk3bVhDcFBuZ1RHcksrZlB2NWZmN2RQWC9CMEUrSFhlMDVEUW90VmtBRE5Eb0N2ajRQTm1CaGlxcDNFQzc2bmszWXFVcm5wWDRKNHl3OHFpT3YyUS9ZTlJwY3VxZmVNQUIzOWFuejhqRGlid1FIM2ZSbWwyWjc5RFVBT0tjY1Y5Z0tVekY5Z0JuTkdSOXdIYVlYYmlQVFdMQUlDM1dsODZBSC94Qno3d1lMZXkvdlpyK3NqamhsWi9EZ0tBTmdFRFppcmZyY1ExV2F0NHE0Znh1TDhjYkRXZE1oZWhnb1dVMlVINHBNODlsMEs3UElUQ3dQTng2alE4bEV2YXZ1STYycDJuMlUvZlFFdXJEQ2RDT2Zpa01RRXpKWjYzK3M0cjZUTUFCU3kxclA3d3B3RXJhODljK0xLdmVmRHlEM3puaTlJQlJkcWpWL2FFRkp4VkFFQzlnZUx2L2ExZjh1VDJaUG5oNjRwcitpRWZCNERUOUxZZjN1R2EzWjdYODJrQVl3dGQ2U2Q5RjZnN3E1QzJvbDkrNDdmaGZLa0pJOXU0ZXlUWkRobHluejVzMG9jdzNVUmZjcnFYRTlwZmtDMFRIVmZWSjllMHNPUVB4dmhudmQwL0RFZzlmU2Q3V1pFS3ltYm5yS0lMd1pNU0Y2WFpuZWtMZ3BkamdCYkZwWlhsaDgvK2UxL3lwQUlBandXalRxcUVFc0FucXRwSkI0QlcyVlRZU2ovMnpEdmZwcDlMWExucGxUOVcvNG4yUFNldEFJMmVWR0xpNndubDdyd215enN2VHJvbnowKzY4MUo0YVcxSlBjRXdHaVU2YzRSeWNTcnlBTjVwOVVlNHNaTkg1T0dRS1VUWEdWVjB4ekQ1ei9JN2xpVWQwWWFtV29KSHprZHFEZXRQSVJvMXdsTmtBbTgvdHVxZDVldDZ2dVNqK2dHWjUvVTdFbHl1RVFqd2VGd09SR1hPNEd0UDFuNENDQjVxelRMUmtvTUFnTWFhM2hPd3N2clVwNzlOcFovUWtVcGtMdFRKcGxuTlB4VE9BLy91bm52bzRiZnhJZ1FtMUpaNllYTjhZWGF5ZGgxUld2UzhvN0JxbHI2d0FlKytmNm43TEMyVlRQd3ptaWZuOVZLQWRlWDhJaXdHdWdNUGFBMTU4SkNpaFlCbmRSNjBwVUtXNzdROWRNOWQwVHpzUU4vVTNlM2R4aFo0NFdPaWIybUJ1YjQ1NmE3cGVNZjVwZTRGZmNuc3AxN1o3bDdTZXliV05OdERyaGdGc09lakRrTVJQSWQzQjJaQ29nSGxzMHUwRVBjQnRBZFZrOTZGUFBEUTIwcUxWcWZBWmoxcFRVNDZBT0MxR2xBRm96VEg4c3FaODIvbDVoOFRQNFBBYWJqKzU4b2RwUWRKQ0xiNlgvREljdmMyRGFJSGRFdm1NeC9xdXZ2UCtsTE5BNGJkQWNlK3VrWFFRZmhCTzNNbzRQempwdE5pQS9vZnhnNzA1V0JDWDFjZ2VFRWZONis5T3VrZVdsdnRmbFN2bmZyd2xkMU9QNG1vRlBzM3JyK0JYVS80N05QczFMZ3NQRXpMeUR4K1d0Yk05K1NYSXVSTGErZmVLbWs1K1ZHZ1ZRSVlsVThrblhRQVNFVlQ2Y3hYbGxmWG45aFVwM0J0UmhEZ3l6KzdzaU1ybklnMXh4Q1NDckxDSmN3ZDJjOS9lTGw3KzRXbDd1MzNkOTE3SHRIV1VrU05uMjVMOXpENDhvWnZPcFZ1b05NT2xaTC9VTXlIWTJyOTExN0RVcHZtV3ZyaEpCNkNxN0czQVE5UjhkWXNyYTVqVzI1ZFUxUXE2NkRlbm5ablN6cmVwTDQ3cDZEOXk4OTMzUmMrb2tzRC9ZNzNDM3JaN0xJNm01SEhoR2VTOHlLUnZLbUxQVDZLTW96UldhY2xLMTBhMXR6UXczSnZWbWxOQjUrYUYwMEV6U0NkZEFCb1ZVUnhLLy80NDQrZjBaWE5JNXN5aDV0cC9GcktMdGYvOHUxTXJXdTFPU1NNZnF6NnoyanlQNmtmZDM3Zm8vcStndXBlMGRPTHUzcHIwWkowMTlpeTNsTjFsMDJ6SHpLSE5LYXdWVDByY0p2NnA5Q0cxTmdtSEdBSGZpZDRxNHY4bWZxMlJ2ZXFwdEZqMnIxOTRxV3UrOXlIVjdvZmZHN1QyLzVsSmo1OG12dzdpdUJjSExBN1FMVEZ6N1VUbXgyQWxGOWFYbjJrZStLSmplNzU1N1hVVkpVT3NGb2NkNUJtR1FCUXkvNzh6Qy80Z25ON1M4djNiMnIxZEFEUUpPUFhWS3V6NzhDQUU2bGFCanplNXFiUVordTZuK3Q5Vm41KzB2V1N2cms0MFMrNzZLMVQzVXE1d0duSFIvYU1jUTJoQVU5RXphTUtTYjFxUFNGYVhPcTNENWVFVW5GVXJPTG1CYlQ2dWMyUkhlQmFIWUVaWjN6a3ZLVkZoL3MxWjNVWjk0aTJjYzhvdVAvOEczbzlaOXdWZERCbkV1eHFWN0N0bFppMk1zQVBuQ1g4ekJJS3M0MVUrL3kwdUNMQS9lYy82d3ZQWFhuK0gvQ2pZcTM1d0sycEt0NVptbFVBUU5FOHVzYys2NzNuTmQzUGMvT3ZEd0RpT0ZGVGp1WUkrMXhWTkU2c2hqMHI1T01iays1KzNSbC9RcXYva3J6RCt3cjIxQTM2K1hrSEIvZlRxS2swQTlwcFN2dlVFV0xLazdCOU40aStyODRwTUdpZlR0aUJYajVOVnpBL3JtVzNlVTNIdXZyeXFtYjIyODR2ZC85T0FZQUp4ME5BclA1OHBzT2s1NTRBWDB6bmNvL0VaU0h4bnVJdG1vTDFqcFBIbGRyajBsSjZuVjkveDdzdlhQbmhmOEN6QUtTWk5UK0xBREJXZHUrUk56MTVZVyt5dEpHVDM3bU1WVGZjdFpSSzBza1o4ZEhyTVFXQUZSRWZQcStCSSswMnRmWG5iY0FzR0RuQk14OHJmeEIrekhkWHk3TDN3T0hFQUx5cnloMis4VnVaWVNucUw3YjBYRWl2cWw5NVpvUDdBZzhvdUNzR2RGYzArSmp3VEg2K044RHFEejlqZ2U5SklKL0ZRYy9uT00zU0w5YURCckxSbGFXTmxVZTVBSFZDZ3p3SzZ1U3lXUVNBMUs0cWZlN2hSeTdvMm14VnIwYVBhelRsK1dXVVpMN2JPY3B5YStnOEgvRnBzS3dxMXlkSDhUVk5FYm0ycElQSWFnNmN5WVFzRkw2K2VOY2c3R3BUNnQvaURvSkhKaDNFTmpmOFBsdGFCUnNpSUNSeWdya0R2QkFUK2xXUi9LeG1PaStoSWFycmJEcjM0ZmhVYWtVMXVTbElvbDUwT01Ec2t4ZVFzR2wxNytLakJJQTBZMmFObjJRQUNLK0ZxZ21UNzIyY1AzZUJKMzU0N0pRZ3dMYXJmUVJ6WnRiZFFuQXFpSXZ4TXJkYkdRd2JHaFIrd2srOXp5VUwxMlFNbk9UTFRvcCtFajVUZzJqQXBONjFQSFdwOWg1U2s2eDNTUGE1c0tWT1UyMkJtQVRsN095WTFDUmdRT1kxK1lZQ0FKLy9yNWtuVm44bXZ0N1k3KzAvbndnNGFKVDZ5QkJxdGtrRGE0TENOS1RHbDgrZHpSMUEyeTRhbmFncUp4a0FXa1dCcS92V3psODhoMjA0blpXVVFKQ2RNcTQwanpJZXpJTkp6OEhYZTdYb2U4Vmd1NC8yNkFrams5NTlVMkJoKzhzQkZ6amRPdEdlVXdVU2NVSzU5RVh0ZzlKSk5WdmxWT0NnRnU4QWYweGJCdlpUU0IyVkp3aWErd084TTREeHlLUm42MjlZT1o5TThkSGZscUpGKzlndzlUaG1sVHpHSkp5Y2hwWTJMcDZqR0tYWk5UM0xBQ0RkUTNHOTZPQWNsbmoxMTZRaTE1T2FweUpsdExjeTBvbjd3S3dVVEhoL1VhYm82UTRTVE5HZFZPQTZzc0JQczJpQUhCU21jUjhmWjMyYUlkcUFZNkhUU0xmVmJNQXdLSXpGMzNtNXRXV2FzcVdGQVlrQ2FwVzhncFlWTkhEWmQ0ekJmdUwzTndTWG1maUlLZlh5aHFCUU0wMXIwaWUvRTRDZTNlbzZBWUNVWm1ZZTJCTTZuM1FBbUtya3h0bTFzMnU2RzdQR1k3UWJmQ1F6NlM3cWpzeFU1aE15N0RCaUdBem9nTU41SUlUeWlrWUZPVGdmT3JGcllWZVFaUThpNkVZRVhrVXdrUld3S2ZYNG1VSk5pd0x0MzMxT3h0S0Qwb2hTaWlQc1FaVlBHRDlzZkw4dFF6c3FuV29VU3U2K0ZFd3grKzNNaGg3dDNsbnlUc0M4bXZScytibmhSOVhvNi9oSTBHSXNYSVFacGlVMXluMm5GYzNJZGQyQTNyNndxa2VZRGt4cDRZRU1oeVdjZEFBb2JnKzNTZ203YnUzTTJzYUtBc0M2amcwRmdETXk3Wnp1dE0zQnJ3ZjZJUld0REVLQVcyRWtGSmdCbzhEc2daTjVTK3RoYXZhSkVpdElwQUJxTWRFenlzT25jWGFibkFhT1Bwd21ycmFQbGR1azgwdGpXNnhUYlQ0MUtUczJGZUhuTUY4QmZNa3BCRHM2Q1BUTCt2cHlkMEc1UHhrQUxab3Yrd1FqZ0IzQTBHY2dacHZRaFFEQXdkcS9kV0ZOTTZXYWhQWXpTU2NkQUZCeW43SmJ1NU9OaVY0RWVvMTNBZXFobWl0WDlycXIraTJBZll3ek1YRy9VUFc5QndrNUFCL0RKTHpEMHo3U3JQSUlZUEo3UWdzMnZoREhjRkRqbkZ0SW1waC9RclBvaURyd2o2Z0VFaktJaGJRakNqZ3g5c2FXSXJNZk4weCtkbTVORUlDb0ttUUZkQUJQRzhEZHVMN1RYZEp6M2F2dTZxZ0xONWQrcnNkSnlTK3JUNXpLQlczYVNaOTRNR2xWSDFud05YTjlqNm5idnI1RUFKaDVPdWtBTU5WSE96dEw2emYwUU0xMWdvQStYTCtpSHdHOXBKY0NUR1dldWNsOUE3UWZnN3dFSTQyU25RZU1OVk91SHI0RUVJWkIxRzc3V3hpaUI1bFBCUTZNWlJXMDRWbWR4djYwVlFOOTFQS1lxVlZtcEdSZm5BYTFGVThlSHF1NXp4WXh3SU5tQitZaXVBOExYM2JIcHQ1R2MxVnZwZVhiZ1o3MWtnREl6M1d0SUUzL1liRVdnZ3FmdkkydHhGVnRBVmEwL1dRSHNLM0F0SHR6d3VNbk0wOG5IUURHQ3N0OWVpeGJEemYzUXdpTVArbHd4NDByekx2c3FDOTkwSSt2SzZOd3J0NU04SG93RUpveWVycE1UZU4xQWxmS0xzejVGQnEwamU3SHRGUjNUb3NBdm5XVk1mZk15dnZWYUREMGsyWW12dGE2clVtcW5KbWFCbVV1N1FnQTBVL0ZOSlVoYzZWSFloT1ExLzdnR0FPYWcwNkpMOFhaWnlpbVJEYVpMS09HUVhDelNyTU9BT2c5bVN3dHIvQXhTMDZnV1JseldMbkZ6NTdvd0F3dGZ3OEFCWnRFS1hjQm9FMHVkbkJaUUVYWEtMaktBK0JrYWhiNi9BQjB6M0JFS0EzYVYyMUlvTm5ZOGV4anJBanoxRklDUTRVcnp4Q2R6SGVXRDFVdXN2WWpFK05jZWhESVNXUXRqVDV6RUlCWTlHMmZRQVhGSjBGTWRnSUFNSGYrbVJqNVJDQ3hoVlNxUitHa3p4TGU5czFraWR1QjFSUmFTN05PdE9WWkJvQkc0UWtmcjhZRVFuMFZjRzdEY0tKR0hWWVlPbTJqalA1WkNlaDhyLzZCc3I3akFOQUdNYi9Jd2J4Um9WLzlEWVVhSXMwOFpSdjdIT3FOODZENS9aZ0JXWVZHZDVkRzlHeHJoRDZ4WXNvZjJCTElRTFhuTW9hRXl0OEN5R3JrSE5sL0tSWTl3Yk1nc1MwbGtMUDlkNzlDOHdEUUEwR0MrWmpRdHduYXlzTFBKS0VVN2Vnb3VyUnpFeXFKUERtTnVOTlQyOGlkeW1ycnA4TGdlTFNPZHg3VUNaWE9iaXZNRTY0clFtblVYcFYrdnROdmhYdGRjd0RCbWpiMHNHb0t5YVNLSnh2N1BIam9VVU1sbjBYbVRiQUVvMHVSYisvN1ZGR0hiem5xN2VQSCtKckM1aWkyK01wd1RDRGE5am5GdWhCNG93VEc5bDlOYU5tUFZSTWYyQU45dTBLZ3N2dGF1YS9sbGNNZmRjSmRCSDM5bDQvK1loR3dNT0g0eGlvM0FuMnJvSmM4RXloMVFobkRtak16YVdna2RGWUJJSnR4ejJseThQWHJHSXpPNHlrc0U1Tnp6cmtIVERPbzR6dmh4ZmxGMXh4QURDSVNaVmRwNkdHWEpvUjVnaENnejJGempxaVE0dlB3ZERSUGpMbjNyZW8wWFVjVUxmVTFlbWlvQWFYUXVNVVh6RDVDSzZXRjI3ckhod2ZOVWJBdE1jbVJhcFRGSnhTNXo2Z2pnSXdqQTNqMkc5V1k5QnpRK0s2QWR3R0NTZHdEWUx0SzBVRkRlZlkvOUZrbGRodHRCMmdwSVFDTXNDZmYrcXdEQUJyckU0NGxmZ2F0TjdBNCsrVE5DWStONWJaelFZNDFPVlhJYTNtMmVwREFlNklyOStBUmczNi84UllUUHlxeEp1NExBdGxXTmtZYlUxUFBRSTg3VlNBUjQzdy9RNHRCRjVkOTZ1WDNVZ2JjUFhvTXFTcTFiODg5clkyeHNJUEtyZlRnMlk4SkxRSlB5QXNvK2FibDRPaEQ5eWM1b25WcUp6d3dsdzk4QXNBWTRDTkZnb0JuWDZrenIzc0FxR2NsVVZTM3psMmU4V2tlQVFDSDg2aDkzeEdDNTMwUEFKL2kzVjMxWnNBTWFtL2U3WFFHUWlnSVlGUjlGSmpIUm5PQVZUdVFvb0xMQlhiR2lmck9zcVVvcHd3ejVBa2tiR05pcmRvVDhrWlhWSzBNS1dtVWwzckpwbUl2Q2RZa2pLb2xaVUFlRlBaWHVHUE1yZVJMYTVIRGRnSHF2d3JMb3VoRExFT0d5c2xiY2dkeHFrSG1LSWtiZ2VzcTArLytDQkM4eW5FL0lMNGx1Q1JoU0c0WEVOaG1rV3hUMGMrNlJqeWFSVk1EbVhNSkFHclJZOC8yNldTbkpuS2d6cDBYb28yYzVLekxPVFNRYlRVYzhYTTBtQjZ6VlNpVitDOUg3Z0JZRWVxTm91UVJvNi83WFNVcTZPektrYnZnOW9HY1RCQVVhZ3h4aGRhVEJMa1FCTUJVMDRTZU1lVHNPL2Yxeks5aXJtVDdXRnRFMFVQY3h0Wml5ek5IT0hveSt6TmNram94TWJFcFhXRWZTYmUyUEFnQVJXL1RFYUlqNnNSczh5Y0I0SVVrWTdIZ2owQXc4MVNhb0NuYnRjY1BoUlgxWnRqNFhBS0FKb3AzQUhqVmRzcXg0ZHlUczZ6NHp3S0JjOGpZb2FVWndrRzBIOXd4b1pqSU1PZ2tJSDZzTVZZR3ZnekVTMElJQUZrM0puM0lxVEJWczM2MjFjOVdpeTRjaFJvOTJ4YzhKUHNpVUl4TTQwd2RMUDlhbWNLRVdxY3NpMzE1QU1WS2hvcVdHNmNCUnhSc2lNRjk0b1VkNDNvQkIxTjZubHRCUS92SG5ObVhLSjhCQVo2RS9RbUEvSk5TMm54d0NTQTE4ZHRTMmRHeCtyTVRaZUw3eFNDTVM4SDU4Ujh3bG5GWlFJcXp3Uk0vc2NCNENCWEowbk9XelZYOTV4UUE5T0dLUElrejAwaWNmeElXdGpKaVVzVExIa3RUcFUyMi9ucStXaWUyODB4YzVwUHJlcUpxK2hZRnQvVDVFTytLNE9VUWZvVzV5cHVGSHg3ellVYkM1S1hzTmxWMkt2Z282R3gwMEFxSFVibkNNQUFHdjFOWERIT0dza1Z1eTFObEF5UWRlQkFzUUlTdHZRcEFTRTVONElnMEhSdTB0RDE1VHk2Zm9zZllCckZVbEd4TlA5Zy9Vc1Q1Rkh6ZEFUVEtldXd4RG55VnJacWE0R2hRZDNsQ0lTOERRWm4vdmx4b3hKd29XQU02aXZod1NLQU5tM2FpalRYQzVoUUFpb2N4VEFsalozTVBJQnF3L3d6R2hPYzNDQi9RRjVIZTkrQlM5eG4zVGJxbnp1bGQ4WHJROHB5ZXRlTHVLeDVPTHordWwvOXRDSzhmQWVxMjlWcnBYYjFNY2tVakx3WmZXV1dLYkJ0VFRtWCtxUlNoT3pScE9aSXhQb1BlMU1pOHF0L2xlazJ2SFhwUnI2citwSTR0YlRsNFkwME03aGprMXFzb1p4MGt1TWNWUWhGTktWUkxKZ2hEbmg2elg4TURNZnNKaUhHNkJTbFpEcDIzbWtaWXBXcGd3elphaXo3SWRzRUhiWHBlQXdBVlNpVjZDSkRYY1h2MVYrZUJ5M2hBSGQrVkw3THI1RlI1Vm9tK3BSMXNjWnFnMmV6VFBBSUFwcFdCS1lOYUkrL1F2dFpEckU1RTlwcFU1Z2RJSDlNRS9xcG5WcnJmOVpZbHZSQnkwcDNSN2QzOGZJWDZLU056QmtZZUUzMGRRMTlqcWp6SVRyNGhGc3IrbEx6N0tYVXN1aTE5TDZwN1VUOWg5YS8xNHhVZmZHVkxyMDNYdStzSkJQeVZrVkZoMVloQWdQUndKclI5Q1NPY0N2ODBubVNaa25zQ1ZobGhkMU9jVXVQa1VMWXNHOU9zcVBZSjV3ZDF3QkJ4UzBTMGIrekp3dG1UdlBOREZPekZYZmFFTDBHRjg1aFJnMHkrM1A2VDg2Q1F4MG5qV2tUTUt0VWdReU54TkMzUHF0VjQ0bkYyMGh2SmRFQzFUWUNmdW12b1J3V1JSYUlEYzdYSUNNb0RIRGUwaC8vU3A1YTZiL3ljbGU3VDlidCtlSk5veHdFOGw4OVkxTTZ0VXZwRHIwZm8zbkp1cVh2NjNIcjNub2RYdXgvOHlQWHVlYjIxY3MzYmt4amVqZ00yVUdYMnBJSnRGVUlNMHhLV2pSSW9PU2tuem9nNnBSaWU5VG5BS1R3dDZsQk1iWVZid0ZQMEYzZGU2MU94NVVqWXVkUndQTkJvQ0k4RjgyQUhnQUR4NWRoalRESU9HRU80bW5zK1hCYjRHUUdWK2FRQWw4TkRHN01jTTNTcGc1VGFtV2VheHc1Z01QRXA2UDlFZnZLRVRrR2E1MFdBaXR5NlpsZjQvaU9mdnR6OStmZXRlTVhuYTFYNUJRL1lUa3RDLzdBaE5HTEE4YU1rSC9pTXM5MzMvTUwxN3BkZTMrcFdOVExaQmRTRE9xb1VnNzNrakI3ajhXejQxOEVoQ3lXUElFQWhlQUtLYzZ2SHRJRllnMnhiNmNUaGJBVy9GSTFrVWs3c0J1dVdIUmhrZXdhM3RLSG1xc3RLVGhEUXY0K2srZWFmY0V3QTAzU2lIYitXdXdRQjQ0V0xSY1pOenV4VWZ5UW5GWjFaUzBQQjh3a0E3WWZ2eGNDTXdrTjFEbGZLVHFUckRFdW1PMGtqOTZaVy92L3dyY3ZkTi8zcWxVNjc5MDR2VjhtaGREamhkNUdMTFNmdXVhakgwLzZqVHp2VC9lMS9zOU85b0pmYTgxWFJuUFI5THVOWStjdHV3Sk9EeXFUZVFWRXVad0tsMHdGME55NkdaQ3ZjK3pIN0dYcldPNEVHZXNWS1RsUFd1OUFDTnJhYW1kVUlDTzIzQXZHVlYzV3h0MEVOR0FsZTZjbDE0RVlIaFZMSDl3QUUrMUtqdEVTZG1TVzFOWEE4QTNvT2FaWUJBSk9jN1BDbUV5RGtVVmlPbEZtd2hKSjdpMGR0bGZuSTdxMjZ6di96djJxNVd4ZVJHM25tUFpMMHU4dU12Z1NDKy9YbXlpOTkrOW51YjMvd2t0NU92S3V2VTdEU1JTRGcvbkFFQW9BYzlBelBzbTU2cE9wVWpRK2dGazJmYnVlUVZFcEQ1TlNLaDJDWldnL2tnWG8xRVdzdzhXbXMybTNRUW9JSDBBeVdPNzRFb0MybzROa1ZlcDZCVUNJSTVQWWZPZ0VCSVNaWEpjMTY0cWRxS28zcG1IRnpWZjlaQm9EYWlGZm5VaUlZWU9DeWtNY3hrdW9rY3JiTTVEaVBuSS81L3ZBN1Y3b25kWmQvUTRqanlKZVl1NTdRbStNZCtsbnlkejI4MXYzVUoyN3FsMjAwK2ZVQk5rR0FtMVFFZ0FnRUZFb1F3QXNpVU5jSnB5UmdaRU5MMGlpUEtxVmlyVDlpVW5FL2FUOW1mNjJETUtGeDFUdlpVcVFJcGxIR1ZrcUd3UWZnMVQrNHhCSVZxTU5FcmdzUUNKVTlzV2xEc044R1ZYd0duLzFLSGZIR1Y4UmpoeEM4VkpwTjhrZVN0Ri9FQzV4TG1rc0FzQ1ZZVkt6QzBUZzNqVDJLcGRVeEJmRDJUUUpaL1o4K08rbCt4OVBDQ0Y2RGNBOG5kZ0VFenM5OWZGMEI0SVoyQVhxK1FUYnJXeFVPQWt6K1BaOFl0Sm9TeFpuOTNmRXd2dm9ZZjNtWnVaVmp4RVRubE5SRGljbThVQTVtU01aRDVrVlFHdEhVc3Y2ZW1hRjNhMThFQWdVRTZrbUVjOVZObXpHM3ZRZUEyS0RwTndCRXc3L2sramVlU1U5VHVEWEhLano1Z1Z6S0ZlckVFOWJaOVdyZjNZUlNjMGh6Q1FBWWhqMXBvTzA2cG9IWmdjakFhVVI0T21sYlBmMXJIbG5TeDM2VFRyLys5Q21STU9QTjUxZTZCL1VXMjVldTd2aVZVUkVFWWxCNjFXUHlpOCtEcHNBeEdYREJ5QkgyT1JNRzJ2N2svaG5YcVd5cUhQL0NIQ0NnOGg0VGtIeEw3azlWVUQveHcxNElpVXR0bkNNRG9PUWVIK2l0SXhQamhTSStLNXVGbVBqQzhkUW5lSTh0WUNvMWRTbk9KS21Ob25ib05wTkc5Z3VkU3dDZzJYYnllN0R1MStWUUdBLzYwaUh1U0FtT1FMRFh2VWZ2OCtQbXpkeU1PcFRHeDJmQ3JqTXk1dEd6eTkxemw3YTh3dkVsTWU2Vk04aVpDdjdDQ2lPSHlZK1R5K3dPSDBjWjhpQVYvdzF3bzBKbE1WQkxNNThMMXJWdEU3c2EzWUl1aG9MUGN1d0N5bTVBL0ZtbnZRUm94SGpoZ0FlWDVXU0g3cDJCQ05CeWQ4QXJ4MGlTN253V0p6ZUJXVFFWemMyaW1YMHk1ekpYNnAxWW1zZElaVGozdU83RVB6SDUrMTBBMyt0K1NoK2hrYnlGTTNSdm4vQVBGajJvTnhWekNiQ3M1ZDgvSkNrbjhtVlJ2bVB0RlV5d0I4NDRDR0IrRXhRb2txYjVmZCtZVXoxd0xlOCtIa3ViemFtMjIraWZBYzYwb2x6eWtWZTQxTUVuakpNTUFza0EzcmJvVk9LbEw2L0FNWGI0NGdvdkFzRzMrSjlkMTh5VDJrcjkzUmFLenlITkpRQlVPK1JJK3NaSFJSNGVZRWpTRis1ZjVYUk95TnZ6aXgwZTRBTi9NWHlxQkFCWjQzUmU3Ni9lMWlqZVljTFhQeDVqSlJCb2hkUmc4VUNXN1pIM0s2RUY0Q1NuR0dXRGdWWW9aT2JxVHcwbHdKVFNNTzdqdVRQRUFmcTV3OHRPUUhCYzY3TWVpei9MSlUvYk1tL3ZBVER4d1hNd3FabGp2dGNpMkE4Q1laaG1mUVlGbXZYRFFLcVE5ZTdNdm9OckQ0SVNhaHpNZXFLVXVRUUFqTUdabVFDSnlqajFPTWtkcUlyeGhSekprU3c2a01kOFA1VlMrb2NuQW5mM0JZQ1kvSHg3a1FuQnd6QU0zREpOWWtlQU0xSklPdVlXZnFkZnBnNjlJQlFKRVlSTDRZUXoyYUMybU5wT3JlN29uV2owQVM0NDZsQTJPZmxLUUdDY01mWTRYRis1NnltcnM2eklZa0hoSGtBK2xKTTMvK0FyMWFnMWsrUkZpMFpLc2kxWm1HRStsd0JnQitMRTlLSnlERHlPa1hRMjlSQkY1OUpwZkhQUDEvN2VFZ2p4S1pTd0U5dFkvZGtGOEc2MTlvOGZsTWlQd096VE12RERRNkloZ0dSblp5RlFmUStNOGFJWFZHVDc2V0FzTWtXZFFON0xMSkF5dDZFVE52cjUvV0xINEFHbzByYkhCcWR5Wnc5V3hnaUgwVVdlc2dnSTBIWGtkVC9yQnpzRGdnQndmdzlBaFJtbjJrOVdUbzJSenlITkpRRGs1VXdHQUl6RjBlN0xZeGlKYjl5cHlpMFRiekh3S1RmeWdJL2JSaVBtN29NeWhBQ1Fsd0RldGtvcjRwM3ZDWGdISUZ1THNaa3o2bk5Ia0k0WitNaXo0bGJtTmF0OTQ5Z0VUOXEzZy80cU04TDZsd2I5eUMrVFd5bFhjL0tLeDk2Yy9FVVk0d09RSXplSTZZTnFmakVFM3BUTG1HVlZobFJVRVRURFJGc29PZWMwbHdDUXYzcUtiV0VqQXpNbTdHSHRUZC9RU1JsUUhLMlJDRkVPVEo3RHlreStvOVJqUU13em9SdjI4aDREdjh1QXhqVlN1RkhsU3lEdFUvM0RHSW9HSHF3K3c2U2t5dm1jZkNDQ0oyRVArQ3lVdlBlRm9QZzNwYlc3NXhsVlBvRml0b051cE5UZmVIQUNrc2QwVU1MbnhJMWNZNnNnMkRWNE1qZEtVNThiaWlGT2RBRU9xaUw0L2ZYS29lVWk0KzA1alJrN2JOL29remdSdUdnMGo1T1FlUWdaY3drQTZPRU9UZU9VcDNNUG9hTlpzbXJ5eDUxYUJCZU1janAyMWltYk8ybzd4OVpORFRMUjJ4MEFocUlIT3dCR1B3OEU4WlliVHc0YUVuOU1BR0FkeFVrVkIrb1dpZlp1bThSekNLN2JpbWtaUEdmSHZWajBiM1hIeFBxSkFMcXFvbGRQRVV3clFzSGhGcnNHT2JDNmJ1UlV4WWQ1clE5LzNnTUFWNnI0WVNLeFZjMlFjZElKbVRZRndkbndTVGN5UmQ1Y0FrRGFnNEdaeW5qTjRxRnlkNTQ0NlNqTDFNbWRrWEl6UDVTMGtKR3NSNnlhMVE2VnUzTUxwL1U5VksxZ1FpLzh4dDFzRGh1dTZGbi91QWNnUENRU0U4T1R4YU9wWGdBRXNlQ2lNT1VNZlpRcXhrQXQxZlpHN0hkVXhJNXFTVVNET3VscVVCdlpsV09DZW5HNUVQWmJsb2lJOUtHVHhXY0xLbVMvMUU4RWhHQmg4ajJBd3B3TGM2TlpsUVB1cEZKZW50ZzhDVTFkVDByK1FYTG1FZ0NpQjBJRmp6RlpkeWZQQVNBcEEwaktvemR4bXN2UmxNdDA4cEhUU1hyL0dBcU1tOGRXdHY4OFQrR0VUQnNiOXNiekFCcit3bnZlUUFNdWVWUXE1K3FnREE0SHJPUkZpY2hLSWNTNjZTcXpKMVhVa1lDUmY5STBUM2dMd3BDUW1QYjB1Um92cTMvYTNlZWlhZlppWGI3eUc4VmRGNUpFNXNSbmkyL1hDbWxZT1RzQWRnZndsK1pEaVJtZDBkdTZJUi9sNXBUbUVnQndMdU91VHRZN05NNHJvV1RFUFlBaWJJNU91MFAxajE1ZHR2R2VBOThFWkpUSW9aakx3U0JsbFpySUdRelV2RHVlZVF5bW5PeGl5RlJIbXhBSWFsSVVDM0pFZzYxSDlWQlQvV2pnUU1RQmVzcEFUMEowTnF5Y2lhK1dQT0dGbi9CdEd2eGdaMlJPQUloVTR4NTFRQlVDTURUOG1OdC9aSUpqM0JJUTVwSlNIK1VGbkV1emN3a0E5U1lnbHJYSEVVMTBJQ2wxTW5wWGVWTTY2aUJISmo1emkxUmhVRDZpYmdleGU4eENsSDZvbUcxTVVmY2dFYTdqbTRCVXhnbkNNTTRacER3SE1IZ1lpSFk4Q1RSQnNqSFY4RVNKb1krQVhwRW8xYlAzQTY0WEd2WWlnSFJJTmxCUTQxd3JIeEhvWlVmRktxMEIwZ2JybjVPYjFsVTU3d3Rrc0t1VHYrb1htbkllQkFEcUNzZDJ2d1pRVkZDWkp2SmpRZXF4Mk1DYkIyd3pTVFJBZzVuY3oxbVlYVDZYQUpBVHQ3WFBUMWdkd3k1M1JPbVVjYWNlUTl6dHE2QTBqYzQ1alp0bHNISjRrRElKeXdEaEJpQitZRDMwbWdqc3dSUkFWWjI2Z3hHbVlrUUZvVTJFb1VrS0JmdlFWWnI0UkJ6UWd6WkFGV2x0cld5Z3pPVXNEdk1xUklBcVY3dG9VRG83QkpIYmNPVTBFQ1RiUW1CSW5BVnJsdHVXRUdlMU03QkFUNWc2K0ppY0JVYi9FV2pKWVp4aEl1ZzRLVWVmTE02d1NZdWVTd0RBR2pvZ0Q4bzRtSDQ3U21yNVBSbW9MRGsrQ3BFaUtkRlJpbk5MU3p6ektBZEExc2x5OGxoWUxSd2VRQ1VHdWhQQ0MyeDhRU2U1RkNzclFOVlhBTmYvN0FKcUtrSThXSVQzajFjSWx6Y0FNNi84TkI3L1BjcXpvclNUamRWV2d5MVlLckd2MjBJbTM0YW41UWRHLzl1bU1wRlRKeWEyRkVyYlBORnBWazVvY2JEejhhRnhGUGlvVkJtc21YQWx2dzRNam0wK094L2VFa3gvc2VxdlVKKy9wbElEcHBpVHkvR0hHckMvYVdpbWpmVnF6eVVBMko0MGpyWUZZeS9IVVJOMXZCb3FwM09RN1pUeUs2S2hKYzhkNVkzZ0ErVWN4NklEaFEwSXZnUW9BWURQL2YwREpySStYMmpCVFN0V0xnOThQT3VSMityRGdJNDBXSDN4MjZBbENvRUVUNTJnRjY2U3dYV2NsRElQckdzbFExT3Y5REFtVGpZeEtUM2hnV3lqaWdRR3RDU0hYT0ZvVGU5UUNSc282dkRpbzl6VXpFWENoL3lNTlRjTkNRTGNtVWNlZkNTQk0wdkZsSm0yTVUzNXVRUUFKcXdqR3hvVWJ4NW5CMEJWTGgyWUIra3d5ME40UllnNFNxWEpiRHFxSkkrSVpWNVpCSjJjNVdSQjZWdUlyMno1dFZGa2xDRVo5Z29Cem1vS1NIMk1NMjhWWWFDbGc2RE1nUFN1UjdudnFSUTh0Rmp0eURuNnlkQzNGTzJMZFdwQ1JwdmE1d0JNSzUzWDh0WCtiQ3ZlQnNaZXB3cE1MY3BYYWdsalNrclFtSUt1T0pXQlFSdG5tSlA2ekFnRlNlVytaRUtzK0hMOFpIL2dKOTgvRUkzZzZPMi9jbDVhazU5V1VZOWpWc2xCR1FjWEozTnZZaDVwTGdIQWR1bUV3L000emh1QkxFZGVvWU5JZzBGWWNFR0pjL0tQY1cyNWhhZUlxT1JiMFdBYUQ0NldIMXFXRXg3ejE0WkdnTWV3Y08yRFFMNVJaNWxBREhBVmRDSkl4YW9vQkJPZ3lNcTI3WHZxRlVUaWc2M25weDd0a2lPN3pST2ZlZFRkZjdac25jaDVUVHM1N2VaaWtIbmdDNzJLb2NYUXgrM29SRkR3elU1UkFoZk13Q2pvakx6QXhvRTBFTjhqc1AxRmtSM0p5NThCNTJmQi9MR2ZhSkF0UXdEVndXZHF3RVNkV0o1ajJnSlJZazVwTGdHQWtJdE5PZkN3cllVUGF5c2RrSjNBWUVlbUI3MkIvVkxjWnFrRFRCcmtwZUFzQ2NGbXhrQ05DY213UDBlWFBtbFFlM1NHamlaSmVROUM1ZGdCcnMzN3VqMEVIVVoyQUZ3R1VDY090djlNaTlpeXhnMHhsYlNVN0pwRHNsVjVXU2QrYldoTis5bDF2VFJoUTk4czJpRFhzUzU0WFhpK2JRZ2RQZzY5ZnRBSGRRa0FjUVNNUHNqTkhQWDJKUlJVcXJvS0FDWVFNUEU1SE5DVTh5bzN2dVRFK3h5M3RMM2pGNVA0SlNkK2xvMDNQTjhRekc4OGtOOFVqdmNpYk9JSER5QUZCam1kd01BcXp6c1NVaS9yV1BXVW4xQ0FnMVJnOUdDYlQ1RjZmcVRhL3BQTjREeklvRVRLNmxrKzBWeHRvV01kUTdKeEhta3VBUUJIdXdPd3FCanBqanFHaGE0bkdWd0sxQTVObUhaR01yTTh6bUUwcmhDU1BoUlFzU09wcWlzU2d5elRWRTU0eE1EMkRucHVMZDIyY0tZSjMrYklneGNjUjZiNEdGQ0RSTTdrajhua080TzZ3T1U5Z1d2TFM5MVp2UWp4NHZwUzk0QmVJWGEvWGlKeW4xNk5mRUc0czNyRE1KT2RpZTdKTGNGaTk0UmhBakJ4UlBLZzk0dEdKTnAwK0FxZDYyaFBDdEU4MFlweTZFcWltTEFSNVpScVF1UGEybVYxSHYzSHVNQXV4anB3SHByakFZc0FYd1NKbVB3RWd1djZTYlhMT2k1dDduVnY2R2VWWHRkeFJmQjEwUWdtN0IzNFpTVUNGM1l3a1hlMWxOTzJrNVZRUVhUYXhpNUkzbWNJNSs5WkZGMmh3YWQvODZRSTBDZWFpbURyS0JpOTVwSG1FZ0N3RGNQcW9US1RBYWNlSldVbnNIM2ozK3VmOHRKNyswUkJ5dFRDaVR2cGZOeEcydGZpZ2RPT3BOOUtqK1RaMGVDK3FZRTgwZHMvK0xHUUMvclpza2YwcXJESEw2eDJqNTliNlI0NnUrTEpmMFl2RDFsWHIvSlNWRloxOGcyVk9XS1ZaNldQZzhuaGlhL2M3ZWlVN1kxMVNoc3loOTdDWS81cDVXbXlVd2E1eDRkeVB2RWdHTlNKcnpJLzJMcXBKM1UydDNVb0tyQUxBTWZCenVDNnJpbXY4RnVMK28zRmw2L3ZkUy9wZU8zR1huZE51d2UrRUxRcW52WlNoQjBFN1pGNCs0OWNvQ1QvQ3NmT2piR0ZOOWhOb1RkbmN2alNqbEpkbUR0UExDWjE5WmZnd1NYQm5Zcy9VTUo4QW9BNktTYy9tbFJERDFSclB3Rm5TMHgwUzNxZXZJV2JhaWJwbEt0dnNzR1NIWjk1aSt0RlVMa3ZUWVBhK2dNNm5TbEVyTldDSkljT1J2L0FSMDQ1QnQ2ZzlxQUFQNG1QK1o0NnY5eTk5WUhWN3FtTGE5MGplbG5vUmUzZnoycFdNK25QNjAyb0YzU2MxNCtnS2hZNENMRGFzd3BpQmdmdGNiQ3Frbk1mWmxPSGFUcGxIemtIRDY3UURSU2NNcWNEN1UrR29uemFnQStjbEZjUXVKUXpYMUxnZ281dmVNbVRmdDZ4VHJ5c1oxc0lCR1h5WDVNeDF6WW4yZ1VzNjlKQkFVSDRxekx1VlFXQkY2OHBGMDd4UVR1TzNXNWJrV1ZYQVpXeDRZYmtXOThES0FwNFlTazk1WnVxOW9ONGl0YlZEbFVucFpnb0hmT01vNVU4TndvY21ObWU1eElBTUlHSTNvK21LR2RuSHNYRWREYU9ZaUE3SWZzQVlhMHZEZXVVT1hWYjJHVWpnSTZmMEsyS1VjSHJpUkFNSENiTklDL05vRDUxeG1iZ3Q4Zk82dWZDM25WT3EvMUtkMTdMKzBVdDV3K2VXKzRlMEN1UTd0ZlBINjFyaTg5S1RuMG1OY2QxY2lHOHhkWnNRUTRycXlkMTVsUWdrZXNnYy91Smh6WktZLzFHNUFPTFk1SGpzaXVtY09XZVpDVUg5bEVDbWk5VGhGdFdvT0M0b0tDbkgzSzI3dGhKVUdEeVg5Rng2ZVpFdXdBRmg2MnV1NndBY1hWcnFmdkk2OHZkczY5dkM4ZHVha2t5WWc4UU9uR08xWjZjSUo3bHVNR0tEOVY0aytDSXVnM3lpQ0NCK282RkhMRk4yT2NTQU9pVXVwb1UrQmk2eHVCVVJiWkhUUDdCUkp2U0ExTlF0MnoycVB5M0ZIWUN4QndUOStsNi9yMVBiSFJ2MW0rY1A2d2djRWI3ZW1oTWRGWncvYkN3WG9zdW4ranc5bGxsbG5pdjBESUtQM25JNnVSY1pQSThBQkl2OUtoZ3pGeE85ajhuQTVGbEVaTkloZVRWTzRPQzcwOG9FUGhlaG9MRWlrYTFOa2pkZldmMVduWFY0UkxoOGczdEFoUVZYNzh4Nlg3ZnV6YTYzL2lXdGU0bm50L3FmdXpqVzNyak1yKzhGSmRXUkJybXR5ZWsvWUpuV1AxeFMxNEdvRVY0TEdOQjZpWENzVklkeXhJRVBLODBsd0F3K0M1QXNleW85d0RDM1ZHWnp2QktTaEZuY1lnaFFkQ2s5R1BOQytDSlVSaVNsc3hScmxnSmFWdTIyT1lFMzVET0t0SFVqaURWc0FDMnRWb1l3VmszcTZEci9ick8vNXdIVnowSWI4ajR5emMxNGJtMlZRVHc1OXZDTVRRWnRIbDRjcUFkZ2xJWURZeFRhYkQ2WkV3ZmxWTy9FZnBZeFZ1cGhjQzB3WERUUXVxQXpudjRRRFIyTzNRVkJ3SEJRVUdqTzNjSjU4OHBJT2pnbnNIckNnUVA2ZGVZMzNMZmV2ZWIzN3JlL2ZRTFc5MFBmMlJUdXdKK2xsMEJSTUdFTWVhSmlKSldsQk45RzNjSElKcWtCazBXTlZQcWwrVkQ1UkpTSno0Q1VHQU9hUzRCQUZ0c0U1MmtBMFB0dkdNWWFGbFpIM2twQXlDUGdtdUxPY0FQeWxOTUNDeWRYSkV0VUZ1c3JmUURRUFV5WUpRQkFyYzdGaVlWUEVDTkRIVUwycko2T1VVMGRZVmtkWC94bXI0TnFLVnNWOWV2RTIycCtJaHVXZnYrRlMxNzVId001Z25UQ0tHWnRMZEtCRGxPVTNDSmF2VWJWK3VkdjQ4U2lOU2xGWFlBSytoc0s2c041QXRaOFVYR3dONUNwS2xkK1l2QXNLM3RFVHNrYmlCTU5OS1hDQWc2TGlnUVhOUnhYY1NYTG5lNmxGcnRmdlhqcTkxUGZHS3IrNmNmMnV3K2Zqa3VEZGhST0RISjFZbmxZazU2UkdPMGxaY0kzakdvREdXc3AyWGM1dVF4QWsvNjZqYjhKMFdlU3dCZ0VIb2doc2NNYzFsd0hFZWxmOWhCMUNnTmNpVE1mRHA1d3AyVXQ5dzdsanhGSWdva2JhVE1GTzdEb2hqazI3cXI5Y1pMMStJdXZwYW9GUzFyeXhxZE1lazFCR1ZrM0szT29kbW9jdGlHcGxWSmMyNHI0d0RHTVpyT3VFM0NYdmZybUM5bGlWNmxGQngxTWdIbTlsMExlWXcxQ2R6UnJtbExsd0dibXRUWENRYjZaZEFWSFU4ODFIVVAzNmNBKzdvdUc5Wlh1L2MrdXRMOTBFZTBJL2p3cHA4LzRCNEJFUndmdTUxQld5cTRyTjJZZFFsaXc1SnEzVGEzem1ramVjSzNyWGxuREhNSkFMbHF0emExOEZGTXdMblRvbVhGTmNKYVA3bzluY1k1N0lscnFob2M0aWtaNHo0SHlvNE9yTTRGNFV3RHhqd01IdjB4TmNkMXJITUtHVFhlb3FtNU91Rm53cGRqY0NOUkVkWFBBakF3TFQrYUQ1bHQ3U0k0bEt3NkdydHZleEM4eVRwU3FTa2V4REdsM2FaVytxK2lXb2NrVWppa3VBV0xHOHJFdnA0V2xjWiszRmVXQ0g0NGhzZDZkZk0vZ29FQ3dxWWl4SVJBb0k4YUhuOVlsMW9YOVhIcEs1UHVkNit0ZGU5NVpLWDdlejkzbzN2MnRWMC9RSlZCeGpzOE5SQmVSNVA0Q0RHMFZMK0kwZnFsUFlmTnMxTG1oNjEzaDN4ekNRQjR4UGNCRkFseU4wQW5EYnYyMXBZTWVGV1hvR0s1T0F6NVdTWXZLZHVpbUdOOW5MYzBWN01nUXdlZWtpWHp5aWdFZXVaQ1p4aWNBTnIxSUZJT2ZUeElxNHdSZ0F4V0IxWHpoUGNUY01Vd0xnV2dJTGM5d2hralFWbWtTazJEUXNWUy93Qkt6ek1WT2thdFVSWHNUZjhGTUdTd0QybTdNRlgrd2pZdWo5VmtWKyt3ZFFJWUFBQkFBRWxFUVZUN0ErTGYxbVhDbGo0ZFlHY3cwU2NKSzNxMjRzbkhkWS9nQ3BjS1M5MS84cmxudTMvNDcyNTIvL0tYTitQQkluVUVmempiZllnc0ZYbVJTS0dvWCtrUHRPalQwSUllUDRhbTNTc2I4NXgwZVM0QmdHc3Bic1p3ZDVaalRlR1lEMTZHYmpxOGFjUmZUeWdOVStZQWQ3NTV1TVdPTDk0bXl3UEpSdXMwemxzYThMNUVRelhkUW1NUEF0WjZKUVlCbVFZQ2Y3RURLRzBMMzBwSjZTME9FWU1rZWZ3d2lEK3JsclQ2cUsrdmc5UVd0cXVDanhwZEJoTDJGN0xoL1JSaGVtSVBUV1U4VVNUNnU3MCtBZ3ljWmJvWkJEbUNGbktaalgxOUNhTFFaNDFGUGQ3UFNVaWVIeWpTc3dJM3RDdFlVaEE0cHdjUG5ucENZL1dscnZ2cWQ2MTNENTlaNnY3eHMvdzJJMDlkU3JUN05YSVZhb0NtdjBYT3BxT2hRNTZSdVZvdVM4ajN1SDZaUTVwTEFOaVFRL2ZPNithTEl1MTFkY3hOZWZIR2RueVVkU3diMVdrZUkrUTZIQUFrbHlBelRpS0xLYkFseTJMTnN3NzBNbTRTTmRQOE1PMmxQdjVsSUgxVXRhZFhYL2twTmhtdDRhZ1Jxd0NnQUtqeDR3T0ZnWSthMGpkRHAxVHNVY1hkQVQrR05NdkRGQlZzWDRQMzUvTWxhTmgwR0JxNmxabmlFMWc0OG9FcG5oL1kwdXJQemNObEJZSTNhVGZ3MGllNzdrdWVXZTBlT0xmYS9jQXZoMjhqQ0FSc3YwdUdtMVFiTkZPYnFvQ1F0MGtFOFZVV1NPMUVOalJYZUFweUhta3VBWUN0MWk1YkxSMmJjdTZXamsxZGpCM0JQL1pGQ2ZxRzNiODZaUUJnSW5oeUZLKzVjMzBxWXdGZWFGUHlVc1YwNUkzVDdmUTAzWElGK1Q5MkF1anJ4VW1uL0tMSlFVWm5zK08yc3V3ZFFOeHBrbnJpWnZWSFdSMjA0NEhJOGlOYWZyVTEycElFMGNzSklGSUtOcTJuZ2k2b3dqZ3N4ZkFlNHdycnRBeFdsQnVrVzlmSG5ud0V0MVpyUk5SeElKeDNXQmFuVXluYkwxU3NkY1JWbWl4WnRiSEVEVGZEWTlNRTA1dmNIOUNZbmVqZXdFTVBoSnpQVjBWMkN0Ly83STQvS3ZRTldQZ2h5ejc3WHdYa0c3YkU0YWx0YTBpSnk3enNOK1lISC9IT0k4MGxBRnpWOW1wYnEvT2xTenIwc2N2cmwzZTBBeURLSHkzMS9FeDJuTzJUSCs5YzFZVFkyVkhZOWlZczVOSVpISmx5Y285ejAwTlVzcFo4S3JMeVdKL1M2WWxrb09XejVJUTRlTkFob01KbG5oZzhoWmpWRDh6OVRUcXZDaUVOUnV6bmozc0Uxa1YwMnFuUElzQmEwNkJRSjBRbEZ5QzVNcGY0bWdKc0VKVnlHeUFkUG9YTmVpZmVoWDVoeUphY2EvYVlyQk1YVlU2ZVVlSlBJVUpYV0F5ZTlFWjRwRVFWbjZ1RU9rQ3lMVzc2OC9neGp4UHo3VVFlcnJydmduS1ZmNzEyQk0vcm1lSi85dXhOM1JqTVQySHdkMytra3FqVTZ4SUtaaHRXWVhUaUc0MnIyZ0tzYWZ1L3JvVnk3NDBSdzR5S2N3a0FmanBOMXJjT3NJT09ZUlQxR0UvTUJSWkIzd2xIVGl1OEZPR3JZdys0OEkxejBKbUMzeHlKR29zMlBycFVZTU5LaDFQc2cwQzBYOGFnQ0QxN3JWOWJPUmhneTgvWFozbnpyN2YvS3BQN0ZWYkN4d3R4TlFoUkhzRmtkZlExQ3JaTjdFTUhZaCs2clROcmVOUjQrRWhuQTRXb3pNWHFWSlVoQlZJK0taUGQxWFJTR1ZJdk91N0pWRk1rcDZjRkkveDhjWXBWZUVzUERmRTQ5WDM2aEdCTDVkLzF6blU5T2JqZC9lekxPdzRDeUtHK04xL0tDVk51QWJraWdFZFZlSkI3dXdRUEFYMWVhUzRCQUVlMEJ4M0c1RDJPblV4OEJXWFhyMDRxM3FXTk5sRTBxdUNUbmpuRVFtcUFBUmppQ2hQNjlqcHpVeTVLMmZuSXJaMk5iQm5LY0NCbE8zMzlnaXdJNklESko5QXArWGt0T08vL2h5T0dlT1Jjais3cDdtQzhFekNEZ0dxSlArc1dVVk96Y1h0VG1TcFMzRWVyVUd0T0JZci9wdElLMHRPemJiUFVjYkNEcHhnWjIrZTRVV3BVMlIxQVR6OE1RMEhCeWsvN1BGWHFjRW5BUTBXYnVuZUY2eStXbmNCWGZ2YVo3cS8rNkJWL2wyQlpXd1lrdFNyU29sL1ZwcHdidC81a3dMaGkxTFJNQXBnWHlNcnhOSTN0cEhGekNRQk1XaVlIUjNvSzhDZ3BxNUxuRzFUcEZFZC80VEp2NWJzTm4wcjdOTmlVWFN4bFlDY3JtWVZodnA5VmsxSXNjVzBYVTUzcWJSQ2dSeE1YOG5YT0VRT3ROQUhxb0VSOWRsRTdNaEorRHhEQkVSRFVMbmdoOFlGWGZ0c2dpVVhvVUhhMkdIcjFiU1lYZE9DZXIrYzVZY2g2VHBPWnVvZ21vNkxFV1VkUnl6aE9LanZEZUpMTHdvekxoWmpTUXBDbHFJcisybUNFakNENTY5UnMvLzFSb2E0Tnp1cjdCVS91TG5WZitta2IzWGQvOEhvSnZCSU9QMHUzYktJdUY3aStOSk1zTk9PZVJyWUJLMGViR0QySk4yMU9VV0F1QVlEUE44dmlWUU1CRDFUZ21LT2tjRkNwRmJNdXFqT1Fpa2NITWxYSWhjQjR5dFJvOGxJc2hCQlh6MmJPVWhUYVpta1NMTTNueXptTlV6a0hVSEEweWpVZ2trc1IwTExhc3BFRjc1dUFqallTVHFORVZjcksvVEVndVNwNzNLY1ErSlFvRnJDVXdCNlVzbkxtQi9HQjc2WGVpdXR3dEFQYWs4TXJKU2UxTU1iUmZDRTJKS0ZFS0IyRlQxb3RtZXlScU5pWGFpd3FIZGY2a1krWWVSeDdTemNIbDNXWG5zZUt2L0RwdGU3LytkaG05K0hYZC9TeGRwbXRYcEg0aUR1N2huQ2pIWUtFaGI2aExCcWtGcUZMTEdwUU9aQVduRW1kWFQ2WEFJQzFPTGc2dWN6SzR4ckpkZzhuMDBrT0xGUDhnNE45Y0FKV1RudXBRK2JJS0N6bUd4WUNOZUFvekttN3QzakkxUkhYNEVrcHRVVHdtRktPMmRZQjNoUk43c28xMjZjQzEvdDhMTVNEUDdCeVprZ1oxclhVUkVwNDhpUGZCakZCUkIwMDBqWjRTSmdHU21yQVJKMXdIaTFVbFN1UXpRaFJsQmpZSnB6RGdjaXVranhaMytXQ1RGSDJUdmdTdGdFMTZ5RXQvcjJTTTFHNEI2RC9ibDFCZ1BzRFgvS085ZTViZi9LcW45SGdVaXdscFV3K3BzMVdJa1NvcEk2cVRWQ2xKSEFjbnZ3Q2dqK3BzOHZuRWdCd01CTXVEeHpGT0ozbWlGdWJHbDNGNUVkV3JRODZqMFpBb3BLUHNsTUZvbHFpYTNTb2lGc0RqWmpCSUhKN0VMUGhSb3pSQjlCZ2EyWFdha0p5czVQSFdQTW1JTG9hNXZxZklDRG1hSzVNZmtvcERBSndNRlN4RlVpK2lyZ1ZjQ1RtV3dscWFGTVVhNXNST2NKZFU2VkUwNmhaeHBNTGdhazNSR3VWd0VjeHBtWGZCTFJTU21SQnhTVlZQQ3VnMXdaMDI3cEQzeWtBOE5LU2R6KzIyajN6Z040dDhLcStQS1NaeEUzYVByRkk2VEpORTU2eG1ndEZ2WGN4Nm95Y0R6VHJJTkFMbWlrMGx3REFLbzBUT0p5VXQ5MXhGQXVaL1BTVjY2ZThLUUlndWMxQ002dE9XYVhxQXIzQkYvYWVzU0lDOEdvZVZZeklIUVQ0YkNPTmEyMkVWblVlRWJ3aEt2U3FYL0lyQjhlZDZMd0ptTXF4dm5BM2xKdUF0QjlIdE9TZGdPbzV0VUlUZDFKNXlqNkt2TmIrZ1lJSENLbHRsTlV6SFNsOGlBcjdzd095ai9JeUFLa0VrQ3BHNVI1dUtUaXhVSkR0VGxWd0tRTDVQZ0VQQyswb0NQQkVLNjllKzRLbjE3dGYrT1JWdldGWXZjRkE5OUtOVmdUbENGdmNvSTB2YkNFVFhUaG9CeWlTUzdTcFloV1J4Qm5tY3drQStZd3pSc2JFay9tREdYaDdDNm5iSm9JdDJ6SDNsd1VITmNVbUt1dFZmQkxFYmxwaDhQQkk1dHJRRUVIbnBCeFlQRDdJQ3o3R0NaS2lZeDBjVEF4ZTZyVEpza1EzTjAxRnRkQ3JNSUtHcjM4T29QQ0JKSElvTU1RUGc4WndpeW5DaXBpQ2k2RGpaRFIraUhSSXRsN1NxRUl4dTZjbnRJOFFrNm82cUpvWUFzTjJWYVpvMnFnaHk0MnBsMDNBSFAxQVkrSjNGU3JqUXhVRGRCQmdZbkw0Y2t3N0FHNjh2dWZSMWU1QlBTcDhTUzhtbmVqdWRINGFFWjBaN2Z1R0lBMDJUUVFsVUpDaTNTZzdBQmc1KzlOY0FnQ0JNWGNCTnBTeWJNTWZSMDNVb1dOY3YzZ3g1SXlraWVhT0ZUOXNGUzUxUUNhWVFDMmpWRllBVmtLNjZhVVpsNFZ3cmxPV0FkQ1B2R1NsSmtHdkNGSUdzU3dzaG5NWEFBbGFXeVpZZWdkQTFFTUl4bWNTenZjQXlQa1QyVHFNaFNUL3NYTUV6eVlOSmVQSmtvYUUzcTZHN2tsdjUwTldoYXd1QnlhWTdKRTcxRmRVTkNIT3RyOHREMm55YWVrazM4Z1R6S3ZYK0J4NlI3T1V5NEQ3ejB5NnozaDRwZnV4ai9LRklkWFFRSjlNK1NCL1Z4MnpMSjNjSHMwVkRUSlBoUkJQay9NS0FuTUpBQmhwL3dwSVB6T1dNZlk0S2VWUlArUUtFbUI4RVpod08xZXliWExxRXBSSTdwWUNSMVlLcHBtbGRoaUEyNDJLUFZGSTQ2bXF6bVlsWUJJekljbGRqNXhrbmdJVzJLUUNrN1dKY3Q0RDhBVEhnSG93MEtNOVpNUVE2eHNDS21KYmtiZUZiMVVIMnV5U2JKa3F2TWYyME5CZTQ0dmkrT0VnUGJPRnBQZWNSYklKT21rbTVyMEVoeFA1bkp3KzRQa0FQZzFnc3I1YnU0QWYrK1dibXZ6eU5VR0FxbTVmUlAzemNCSUE5d0U4c1UzSHlNQURJVk5rMCtIaGs1MTVwTGtFQUQ3RHp2RnFvNm9Eam1kaU9GaDE4VjlKT0s4dHUxam96blJxYyt0VDZvQjNmY3JpcXZKZE1qSk9Zb0xQY3BUbjVEYXVDRWs1THVya0lPRGF3WURzMnBoZ0JsQ1NNMkJRaG8xa1BWWHcwNVNLV0JwM2xwbDRCbDE4REtqQktWbDUzVW9qVmJZbHplYVVlbzZsTzFDTmtTbzdHSTd3NllJUmVsUlVTL3IzUkN3VmFqMDVJMjAxSGFYd3hVZ0NSZXNyZm5MRGhTZUNRbyt4UElvQ0NBSXU5OGh1ajQ3Z2FVRTE4dGI3VjdwemVqRXJQMnJpajdjdEgwMVVUeks0ODgrQ2h6Z1dwQ2tiQkdGRFgzUjJBREJtOXFlNUJBRDVvdzVrWU5KQkF5U28wOC9wd0t4UDJYSUFpdHlzbVNnY25yUnNPM1B3TVJSQ1AxaHowSXpFUVlyT05DUllqUEM0ZzhtcGlMeVNRNGdoVUhnSzNuekljT1hJS0pLeWF0SUNLeDd4K2tsQTZsRElyUXNNR2xuc05xanJvOGl0c3VDNTA0VE0yNlloMDdEVVZCNFEwSExvQXlNQ2JiQTloVTBTa0RMa3pNb3FYUGdXdnl1WnA2ZEhsZXh0R0dLdkJGL1N3TnFMN3RUU2V3aWpIZm5kOGt1Ylh1MFpYS0kvb0hzQWorZ3R6Ui9WTXdGK0ZvaEFRTCtJbCs1aVFoTW8rT0ZSZ2dIZFo3SENrNEJKTkF0OFVJQXcwd21mNWhNQXBEUkc0d3g3V3dBLzdwR0czODRtcW1XeTR3ckM4cEtRZWRKVWhsN3JKa3hla1VNWTdwYVdJc2s5WElyQ1pQQjVpS2lRWlFBNk1SRGlJUWhvY2hJVUtoNWg2RUFsSmVNTkZKbkNJMko4NEQ4UG5KS0hjU293K1RVUTQzTm82dUZYdEEwYW9sTWZ3M2txN1djUjlvUFRMWWtIVjdzdDVRQzVBM1E2S3N4b1JUSXA4K2s2OEswdm85WkFVRytpMFBaUEVSWmM3dUh3bkR0SFdDWTdSQW1MblpYS0NLYnp4Y05sQUxPYjd3MDhlV0c1Ky9Dck8vbzBJUHp2eHVDelJJdUlTd0JRSk1ueDRsUzA0bnNkaU01alRsY0FjM290dUN6TlR3S3czVzVKUjRDNFRVcW50R3oxVXdUazVGRkErQkxsUHFCYzJuTXVPSW9CdERCMSt4U1U3SXpvc09na2VIeGpLRVNVZ1NGTlVSWWNvSEo0Nk56QUl5OWhKQ2dsUDJEQ1JhYnBPcUd6TDZPa2dIVW9mR21raDI3NUtORGlTek5wcFpWSllabkRjOHQwVzRaYjFqNDVZaGlETDYwUnRwZGtFT2NJQ0pjVVlxQ1N6Ym5yRm94aG5ZYTRDSjFaS1NhOFNzaUdVU2Y2SjRLcjZpb2E4M05qRHJ6Q1AzR2hmQXdvZmVodVA2UGhTUjJoUmlnTGN5c0lrc3pBOVhwUVpxeHhlQ3dvbjNXYXp3NEFaM1BJR3ZkWFkveFJEY1JKS1l1T3lVbHBPVFJRVXJaRlo5QXdkVWpKa21YakVtbU9saXM2Q2JKWmRMSTRuVklQZ0I0V1E1bnNNV2lpb2xHRjVDYVFReVVsNjFGa1dNK0NOdzE2NFdIMTV6TEFDSXgybzhvRjUxM25ySnE1cUU2eHRtVXBjdVMyYVZ3SDJwaW41WjhuWFBZejBXVHhMNFdxc3hRMWJLY0hXNnlud0RFQkErdGl0UXY3V0s5akxCUnBLVlRJZWo5Rk9GOW1JVDhhY2gyQ2NySS9xbDl0OHZZZmx1eFVHbEFxOHozdUExaFdqek1kbnNLYi9Mbm9VSjVsbWtzQThBMHNHV2kvWUtpTzF1RERHSmlPcHJySFB3Q3B5SXBPREZSQnU2TVRYd05CSWJwNmtlRWhrdko2RVJWS1V1bjdhQk9xRUNuZkV4cEdtSlJuZXpGQ0hQY0xLTGpPZnJFWHd5d242NFlJblFOQWJGd0MwR0Jwa3dhMEF2RlpkTjVnb25vZCtLS25iTVRNTGFIc1lSTEtIaU81R20wVTR3WmloSGZaZzJ1b2lGL21XZHFEa3YzV2M1VkFVVHF1VG40OEtxSHhZSlZnS3Fqc0ZSNy9hekFpNno3OUtDdmZHWWhCRncyWlI1VnpyQ09hdmxJMTU4cXNiK3BBbVNEaUhjQ2NJc0JjQWdBRzJ1RUMwdkhob3NPZm1mVHBLSnhJWWxKa3dubmpSRnZ1VHhHeTNab2pqVXAwWUszWVE2QWdtNzhSVHBrQmtVR29qTU9lcnpEa1FFRU9xREt1TEhRZ3R6U0puSlJ0L2xJSGNreitZcThReU9iTFFZd2lMaThBa2VsRE1BQXc0TnhTTm5iYmhndGpkc3cwQlpGeFFLb2tuRVJpZ2dYVW53K1FuWUUrVlhYdUUzdU1USUt5TXlUWkU5OG90Y0kvenVlL0hEa0d6K2wzR2ZscGRUNEpnSmozZnd5cllzWUdaR1RBVGpYUm40TkVEdStjNXYrYzdnRTBEc05JbkplT28zellsRTR5djJTUTNCL0F0QkVaNk9pZ0xCZGE4Z1JkMHFpZ0U5dkFVZ0F4VEcyajhMZXNDU3RQTm91MDRJSVJJc1pUQVpBdUIrUTFaZzRDcXVTNFF3WkhUU3JFeDREQzBGWXlsTHg5SjJCZHFaQlFoVmRKQWFTeUkvU3cwVEZ4WEtieEtla0E5SDdPV3pCVzBraFJiQjhMd3BjdHJpMFVPVldjK0JoN3BNUkZ1YXorS2NrT1JwQzRDREFDdmEwbnB5d0s0NWMrTVl1eStQbjFlSk1RYm05RndNU3V6emN0VmJ2ZTVXOTBRUThtUGJKcDcxTXFBR0JjSHVsNUREMU9zb01ranh1d0thdUNPSlNqWkc0eml0SHg2RUdaVlgra0FMemhmdkpNSUUxd3AyVEhCcXNFQUNBbldGeUp6Z3U4T3QwVnN0endWUjVWVjkyUTEvT2wzc2JyeERqemdCT0J5VTQ1MjJVTEdsOEdpb0dKYU1zRWFCVnpGU1BIYUJpZGFLOXcxUEtCekZGbHhtZDd3RzJFT2MxSzNTcGF0QWllb1VwVmdvQ0V2VFV2Yk9EcTVZRm5MUWdrOVVHYW9Kb0JPK0RvRDhJRzM4TkFNS3MvbHdBZVJ4WnF3VWp4MklHQWpHZ3ZKampOVUxiZXlpa0FaeUFBTmVzMGwwc0FJcVVIdFF4TUI2V3ZEMnRnZFpJcU1BR1FBeTdsMlpPTk1CenJOZ3ZPZk1tdmlsRkdvV0FvV1MxWElCdXVET0xQaHAzcmxEeUlnczk0WlRrVFZYWjdOcHBDendPdjJSdGM2ZzNLaHhEY0FQU0xVSlF6Z0NNS3FLNzNrMHgraHByS0pVcEZMc1FnSWExTjFDQ0JiMkVqVC9aVW1qNUlBemRtUnpUTnBrb1ZGYldOOWlTdGhGNzlSQTNhaXdKdUsralMvMWxPZWpUb2FVb2tGenI3a0tKaCtZbHVkRUNtTGNGTVdENE5XR0dDRTVGSmJveEt3RFZ6a1poQm91c0syVHpnS1Bzb1BPQm1tZVlTQUdTbkhZWlAwaG5IdGErZC9NZ2lrWTNsbGFhQ1JRV1hPWkVvSit3eXNieE5NWm1NYXdkYVJxMWtEb2Ftb3JSQUVmQTFWMEV5UEo2eW5ta3FsRUZtQVpVL3F1ZjRjUzVXZ2lqZkIwZ1JqRUlDd1JJM29taE85Zk1Ba1FQWHNnODh3YWgvQ3gzNzRNQktzeU5ZajBiOHVGeEl1S3A2SWdxMVdGaGNicXNYRTZ2LzJ2N3YrWUNLUUdjcXk2bUE5aWV3Q3BRZEFMVHFaekF3VHphT2NERmFXaEZac3NiWC9hUEJiVjFnQjVTVU5lTjhQZ0ZBMWpzd2ttTVF1WUdqV1ZkaXF5dmhlRVI0OEFJVWVTVUx3U3BVRW5BaHRqa09KeVd1Q2dwMGY0WXhnMEhNbUo2R1hOTUxZRGh4NURSZWdvQ05GMFBMZzZRcVF5RHNCV1dTQ3J3VWRKbFJWK3I1N2pNOEdpMThUWmlQQWlGUnVXNVhMVVU0UnUxQmlZWk9PdlhPUEpSa1ZMaUZoaUhEREZPNGJxTi9yd29CTTBTUkdkU3BvSG9OM0xkcUIyWW12SFAwQXdiRmlRQ2dDUzYvYy9uZ0tpbUlYQWZWV09Hejd3WFpSb1lRL09Ud2NDa3IwTHM3OHZaUWNlWnBMZ0dndlFTd2MyUldPNW1QWXFVZGhHT1ZjT0FnVVU2YVFPWUw3UmlsVS9LVEU1OWpQa0hJYWdKS29wMUk3QWJFclVwNURWZWY3aE1EQTZLTUNjYUxPaDBaZlcxa2dJbDN3eUNwVDZ5NVlCSkg1Q2Nod2dld0RteGc5ZmNMUVJoMFlLbGtva3BNZnVHVm9aQXJXMm9LdGs2dFZpSWtUVldja0RWSSt4QnVEcGFzdXA5aklPQmtDMjRNZjQzVGZvejlrMnlxbDNxU0YxZjB1Q1I2Rmt1V3l6clZ5UzlQUnRHRzB4cGxKaTZzMldjQys0WmNLR1dZU0tsbWtZVU1Cd0dSWU9GSUZycHdYbWt1QVFDbk05azhxSXUxOXZjUnJCejdwSFpra1ljSEFVbEdsVUxMWjVSTzFnTStZT1hJYm04TXFWZzYxaldnSmhNa3c5R0Jxa2t2UWkrc1RGYS9xTU5vbmZnWGpldSthbk5VenJtS1JNTU9TT0pEVk9ybVhBZ0hBQWszelJVaUVQanVzckFFSjdjaDJSRlN4Q2xaNVJRZ1JTZWtOTWw4S28vUURjZXh3TU9MUzg1V2tZU0hUZS9IWnQyZUx6SE9kYXBsbkttVVpZQStwRWl5T3dqdkFjTXBxRFJJSGtjQUhzK2EvWWlFaFRLN05BdFhadG13QXNOUVNNaHduVUlycEdoT1BQQ0RHd1FXbFdlVjVoSUF4anVBTlBJNFJ0bGg2VXpsVERodzR5UlNUS0xpNFN4blIwUWVna3hEQUlDVGRnZktVMjdkdG9GcjVQa3F6NGdCMHUxYURJYTZzdW9aTE9YU2hsdUFRRXNsczE2d0NjdEJ5c0hGQUl1L29MSEY1T1lUZzhVN0VTczhITFM5RkJNdHI3QVpkaU5KeWdhekxJNUVCZk1SemxNclRrVTJRbHQ2Q3ljTGlvRnZGRXpTS1BjdW9JaElTVEgvbzI3aXFCYXd6ZzdtUlRwc09ySjdYQlJMdlFRUTBiVFM3cmI2WnF2NXRTdTNnbUNBekNtV1pzak40MVBoS2V6dVQ4SHpTSE1KQURqZXdSSGppMVcrUGpxaWhkVGw4T1FzZ3V6UUpCUTZZczJuVTBaU2RJZ0JRRTRoZU9DRm9HSkpQYzF6RzZ4UUtTZTVhc2U2cG5veG1TV0xsYmkzRDhuUVE4NGdSMWpmTUNVbnF4ZHFtRXg1dkFPZ1dudXdBL0MxUDAxQlVBcVZhSGhLYXREQjN5UHNuMUlGTE9MTW8wSVJEVVovZmFtd0J5OTE5cE5jSi9tT24vZDYza3FHVi9haVE2b3l5S1ZnZlNLekNvSWo3Y0xZMkZtRjdjQkJoZDJYaEw3bWlyN2UzTjZMbnhNekVRWWRxTnJtMEpBaG5NY0lSY0U1NFdIUEk3L2NSWlZacHJrRUFFOSt0cTg0UXdjNWsvZ29xVlIxRlp5R281Q2JpWEltOCtxVU9YamFwSnp0SjQ2Y1pOMkNJeEFGbDNLdHJ3cE1iT1FZenltRlVxc0dnZExCeVdqaFRGRGFFZElBRlpxVXN1QVIydm9LQU1aT1hrTzFwQXRQQnN1MEkzY0FERjlHbFlPQjZubkZLcnVRcHJVUWZHdkVnT29DeXRUa0tWWkxMVEJnYXdsakdFYnNEaWVXYzJHcXRGSldadFp5N3JFOU5HaFhoUXpyeHJzODRvMU9MOGlRYnQvUmh2amRuYzZSWU05Nnd1SlRYdlBGeDdMVTRyaTJ1YWVmRThNblJRNVNvMXFmZ3hMT2NVTTVRWUJFWmxtTnZFYUtlV1oxbWtzQXdBOTFRRk1vNVlBT2Z4NnN3cEpqVVJhT3dPWklFSjdpeWVTMUhqUXBJSENaZzFReU1rQ2ZpVFpLOFNTWE9rMXdEZ3dUT05FR2JBalBuaE9vMzQrSUNGL29KbU1Fdk1ZVmdEYktKTFYrRkJ1UjRQcWJnTkNHZi9WSEtOeDJtZncwa2JwWXZoQk9pZXhWVGNxaDhyNzZvZGh0aURpekg3SWNGa0pveExSd2d4NkFwVDhHdUZFQmY3V0o0alJjeTJORlNtQzJpV3FuUGxPaHpuS3pJc0FTN2xRQWtBREtUTjVMTjNiMTJ2QTl2UjI0OEFxWC9yYzh5dWpoVTlEU0ZQUnJFeXlEc2Q0U1R4aWVUd0RRck1tQjdRNHZ6amlPTGVsTWYzd2lPV1BucFV6d3RPbVZHNzdDV1BVb2RQTkRIMGdxekNKbUp5SEFuVjl3TVJEVTJWSUluWHdBcTJyRnFYRmdFdHRscjhxT0lMUVdhNFhwK0llNndWcDlsVnJFRG9EUC9IV29Kb09Ed1ljb1lIQnhBNUQyUWk0VzhlOVVjWlFTR2FTcVlDbU9zOVNwNGtmVksvNDJRUHEvZGtUeUkwK043Qk5iSzZDQnFHbkRQc1lRTkVDWFF1TGN0eU5jMUJwWlY0cDViOGRGbmVnakgraGttRlBvVFgrem9yOThaY2RCZXJWMEpHU1N4MDloenpKOTVZZTZsS2VPTmxFTTlLZmJnbmtPYVM0QmdBR003OXlueW5GT25WaEhNSko2SkNaL09zeDlvcE5sZzFmQ3FmVUFLR1dRYk1HTkFqYWl6NFB6OW1mM3NlcXpGWXhyL2RTc3Fac284WG5PcTh4bnl2bWUrQnhrS0o3UGlZZG54STlzNnVuQUxuSmZBa2hRVG5pK2JFSkE4THZuNWRFNlNOMXVCS3VVaDRYUSszS2paM2pEZlFKV1RWWFlVTnJSVmprdWpIQ2xra1VoRWRrdlBiWkF5WjE1UVEvMEtnV3o5SHdWS2tBdDF6WVNVK3A3VURhQldlVjhvaklucGYwb2RxN1JnYU0vOUt2QmIrdzBmb3NHUXB5WXNobWhxVU9STVpHWEVKU0ZyZ200TFZmQ0RJQzVCQUEvdENJckdjd1l5K2s0QmxJWHh5R0gralVYbkRla0xGOWwycWp0RlY3alJuRGlxQUpjVGdCT29LeXJHd3hxcTdzbnR5b3lFTXhaK0N3TDJHV2RpckxtVHg3WEthY0dsM3FuTFFRdEFzQ3lJaCs0aW1jUXVzd0VMMEVBcWtkcHpXb3J2aDhRMWxTY0FZU1UxSUNCeWNhU0lmUFVWL200anF0TXJSZkkvZlNEOE5uWTdmTDlqUTB3cFREQU5TTHJqN2pDd0tRdkZqR0JjV1hreGNmVUU1NmY4L2FOT3NGY25qM24xNEdWNE1FSzBXN3BFRXU5a3BDbi85aTFLVGNOUklFZFZOb0tRWnJKZVM0QmdCWE1GbU40T1l3N29rbkZSM1pZT2pIbE9rZGVZU0tqclppZ2ZidUIxem4rZzFCNGpVVEdJREVnbE1RZjgwcWRYT0NhQjFsQklIZ1pCblhnaU1iRU00NTY4R2h3bUc1K0tPeEZJb2NEbmZOVEJGWHhEb0NQQVBtb2lSK1pvQjN3c2Zwb0Y0QThWUWlaeUlZcXJkMnVRT0NhMFZJdEdEcTRXT1QwWEFFaEFCSkplWkdlUmVlRFUvS0tNelNQZWkxUFphbEFTejBjUEsycTI1dEdhTFcyQWRFRG9GMHNmZVp5Z2RPdHZva25aNi9vT294Vi9QTE4zZTRGL1dTNFh4aytVdFYxd0NHMDZFRS9rVExRbDJLTUsrRXBKdzYrV2FhNUJBRHN6bDFBT21GcW54ekNVanRIbFpra0tTdXJwVVBkSG1RQkxld3E0SXdzUXhGWWlhMTA3U3hqQ3NGd2V4SWVKU0NySjVGRmtjbm9pYXZjZ25JRmdJL0RNMXFjQmU5SFNHbFRLTnBGaGhNc0tuTms0QVQyRGtBTkNQVEJtYis0QVlqdVRIekpRUkM1dVF5NEJ1SEZxV1FocFdJYkJZSXR6NVc5QXFLZ1JFMk5qSXBMbGdHamtRT01Db015OVFzaXNuM1Vwb1ZXb1FhZEFoSWxFZE9sSkZaeWlpaG5wVmo5S0RiZnUwazh1eTRSZWZTYTN3UmRFZjNqcjI5M2IxelhEVUIrS3J6MHIyV05ZR1RTYWgwS1JVZVA1ZFIzenZsY0FvQmZuaWpMTWQ0bkFjUEpkbnVyN2RDV0RSbUlRNmdGdDhUQWV5S1pxVFJiZUkybnRzcTVRbFF4QW1MeURPV1ozYlRBd3c5ZkRuODZNWFdNRGc0T2MwTXdnMXBqOENESGVtV05NbDJOYTNSMzVRZ0U4U21BNnF1dVgwa3RtbHZRaVU4YldKV1FhYmxGckRQYU0yZHBsRXBLUVJQZ1FTcGt3WnNJM1lLeUJGK3BZMVEyMU5DbmdyU0M3QkFlWisxZlhJNlNwYXFjcFY2TU1QdVJQYmtRWWJFdGhUS3RDcjAwVEQyWEtmaUFwS3hPWVB0RnZqTk9lUHpJb1g1YzF0N2ZxNytxOEhOaFAvZkNwaThEZURsb3BKREh1WWNLUlUybnk0Tld6QlErK1ZsTU9PYVI1aElBTk9oam5zbDVaU3pzNjVLakdCc0RpTTdxNVhrODlQMWFpM1VWVlFQUmRwa09SUkYvbnh2MTZCWFhMejNSYU1qei9iU1ZQZFRhNENCQUZWV1BEdTNQcG9HWDdEcVFrS1BleFFZUHFGS1h0cE9QV01FQks0bjJIQUIyaXU3VUY0TUhpazc4TWhEcW80RGI0VVJ5Mndtb2FJR0ZCamxCOUlPTmxJQUZCaXJ4RFZldlhGc24yVlB4ckZpRXhpQm9Lb2d2V0xHRVBrZ0JrYnM0d2cwNURsZmFMeUtON00ydHZoSXArN3JtNE5RVTVXVkZXbGIvOVZYNVgrVXREYkNmL2NTV2RnUG1zRUxCV3lyaFJ4Qks5QzlGN0RRcThVRU9IdmpLMGFCbkJzNG5BSlNKWHpzWUIrZzRTa3AySmdhSitnd28reENpanVKUHdEZ0FTbkxiS2pQeFRDOG5zNkNmK2VKY245QW9kWGZMVEtGTmZ6dE1lS05nejk3S3FwS0VWZ3hwazZpamlrd2V5djZoU0UzWU92bEFwcHdDVXZSQlhSMEVNUWNBOUJRL1BsaVdOUE1JUnBiSEdiSjA1RDJBYUFPdWFOc0txRVNxK2tjeFNOU0h2VEJTckhWb0lJc0JacW5VTVhsMHNqRFRBeW9OcUJBOVp5Q2FwR1lVaHpLaW9uRU5PT1M1YldsY3N4cFFhMlovREhLeHVjL0p5N0VzWUVVWCsydWFPVXllajcyMjNUMzNtbDRITGp4U09aT1RFcktNUU1TNEZRTjk2SjBpZUpKVVREN2FXaHIrMUhEd3pPQTh5d0JRdmM3UFdybVh5UXh5N1hyMGhFQTdHVURKa3pyQUtCY1lzdHNwZktETnEzTFErdFdteWlpMElxTEpncGQyUGJVQmxHS2JyMExUUmxBNHg3VTVyQVNDbW9SZ010UEJVWS9LckFxYURwN0JnUWZiNmc4Y2x3Q3FMOGZGVGpNQ2pTV2doZzdMTFRsTjFKRUlDQUptcFo1bXlBaERaWkticDVBc3VGUktWT0pjcmtpWWhzbVR2TFJKNHdiZHhoQ21WcnlWSjVpalR4QmN5b0tZSE9NMEJUVmk2ZXUzaEFpZGplS04vOTJPU0RVdk1QN1RKYjd1L0M5MTYvcDVjQ2FPM2dQYS9ZUitFb3duQU0rc3RUMmRVNy80dW1uY3JVb3QzSkJ6QUp6eEpRODRxVTNsR1lDekRBQ3BybDZTSW5mS0huZXNqTGR6Yjk5N1dkOTU2eVFRTVVoNm1jbWMrTXFqaXVBU1grR0NLMFBSREZVbEE3WGt6b201b1k2VkFBWUQzY05BQ3IyaXcxUEh5Sm5VTUNWTmQrOVY5ajBBMXd1OGg0M3hLYStzN09DS1VlaE1BUENOd01RcGg4N0I3cFAzQXRBdUNFOTJnWU1jUnBLWWttOEFsNEpwOE1GZkJGVCtoaWRsNjdaWFljdWE4cWpxVXQyN3JRSzdWUWpna1ZOZzhIbEoxK0xOV1lLRks5M2lGRkl0dU9HcTJBYTNIN1Fkc0VxbE91bWJzdW1pMFUrczhpdUtBbWZYRlF6RWMwVlAvLzJrQXNCYXVmMVBqOFlmNHZnYnBaUUxEYmdrZ3pyQnowRmJud283Z0dLZUI0TG5tZnU4R0w3UE9aWDcxZ0QxY29CNWxDVjc0MUJRbFlmQVkwU1BDejF5Rldyb0tXc2dPT2g5aC9YckJ6aHY3eVdRZ1pMWDhJWWxLMjBrYjJFM0EwTDFIVWdLREQ3TllLZkF3VUFEUndCZzlTZFJSbUQvVWhDMVh5NHJRbytnNTRDbWd0dUhPSVpOUUtCNFJNdEFad1M4cmhKTW5DbnpNTk95SnNLS1ZzTmxEWDQrRXdkUHdyZThzWmlQTFhlazlMYU9zSVhBVUppa1JJVlZ3UlBmT0NTSXh6aGdFblVrbElSK0FSM3RYT3E1OVZRaEpZam1HNTdPbzQyMm5OT1lJTHVzbndNK284blBZcThmQmU3KzVVZHZkaTlkMnUwMjlETEE1QXV4MlFoNUhPbGJqeG1hU1phbzRIT2k4T1dFdDQzTUljMWpCMEJuOHltYk84OVc0ZXc3TUM5bDJEOFVrTmM0cTZBWVI1R1V0N2pFai9QVXNSRzFINlNoSXBkT2pFa2ZxM3N6ZzJvOWY3eFloZ2ZWaU82SWlNL3lHVFlNZi8wMUk0VEo0ZDFDMFRzbVVBU0Vhb2lDQVEraVlBT0J3SU5HZ3JuSFFNSCt0YTdJRG5VcURoMVFwdENoQm84UUJWK3FxQnoxbVFCTTlGWGQvbDdUNTE5cm1nWGNDRnZWQ0dKcjNDWitNV2RMRHkzZDNGenVibTdwYTdJcWJHbjdzaTFsdVJ5TXlVOUQ2RzhsYXQ3aUF1WWNQRUNERkNLTWFzQ0R1S09xR2NNNm40dG8yKzhPRGQ4NENLZ0dmdkpEUC9vRlZtdyt2eUY3NWU4dE9lcEhmdjY2YndxaUgySjhVemZobW90QW02VVREQmE1eW1vS2paQVVCMTFiaVRNRTVoTUFtQVdZbzhNRDc1Z0dGUkVoQjNHdGl5b3hoSHRpQ0djVzhoYW1yanF4MG9CY0lDc0FZZ3BJM3lVMko0NDdURWhvZVhlWFNSczMvQUlIamJrUmQveWhVVXNUWGdQTlk0MjZ3bmlRQ1RCT01uQVhuKy9UWnRyQkRvRERPRXZSU1luNktPRmZDQmJJaEhJenlJYVpCQnduQzhqQm5aUGJQRm1QZ3V1RkhHUng0MnRWazM1OWRiazd1NkZKY0VZcm9DYi9paHF3N2pUUnRDVTFkUjkxMHUyYzdicnJteE50bFZlNjZ6ZjN1aHMzQ1FRN0pSRElQdGZoQkp5NWlsWWdjWlNWY0E2Wi9nSXFhaG83NVZUNFc2NVFzZmducTZUZEl0cHZveHdjazRUQXgrVGYwQTJZcytyVUgzMzJadmVoVCs3SUo2eitKRHpNWDBCR1JZTWduUEFSYXVHZjRBczhaOHlIbm5oSmdtM21hVDRCZ1BHQU16aEl5dTkwZzJOblN0UkFib2gyTXpSRkc1NkFpUyt6Q1JvSFhvKzhMeHZOcVUxbWFoRUZwcmNhV25Rc2c0QkJtZ00xQmtYV05vL3FEVHBiWlE4QU1hWElvcXJGTTZsWlZmTVNJSmlvcEoyQ0JNWjdBYU15QTlZdFNxK2M2TWdrMlZkaXFMbHd0T01BMHNBQ1BSblk2cTlxaXg4VGY3bTdUeFA2Z2lZQmcwYjN3Znd1L0UyOUJPUDE2enZkVlUxdzBubmRHYnRmdjViTHp1Q0dkZ0hyMmpJemNhN2VuSFJ2WEYzcHJ0NVlpa0RBNVFIK1owYUVFckpWTXZ6ZjRpVFVkSk5VU0d0NnZDQ24wQ0JMbVRmOGlSSmp4UXFvL2dBdm00czY5cU92K3pYNUNYd1hGZmhXNU8rYnN2a0gvcjlyWHYzeE5YWDRjektNL1A0UFBHMWdxdHRTR1YwNVNPU3BEN25oZUNBMFdXQ2JTWnBQQU5pTG9XdHJUc0FrVmxvbVV2VmdDeGY1WkQ1MHlod2c0VEttY216VlBIa1FHWWthVFZJSFcwaURvc2VRbDUxSDF4TjRZUFNFRnhRMEh1TUZRdWIrM0ZpaGtaV0hHTTBkbHdFTVRqRW9HR1RpZllDK1hCQUNyQ25vSXFCeXFVNlVBNVA0TEpGbnVFSXUyMzArMTE1anhWOWY3aTZlblhUM240dTczbXVTdmFGUjg3SFh0clFLM3VnKytQRk5mUk51VjNmQ3FTbmE2cVI3VkQrVStkNDNyM1ZmOE14Rzk4UjlXdjBWQ0ZZVkJNN3BlUDNxVXZmNmxhWHVtcEEzZEduQVBRSi9qUWJqbGFKZlNtQ1FWa1pqTTdRb0dRWnNkYVowVUlJU0VzWWM5RlFrOGp5QURPdkVUYjhOUGVHRC9mcnhuKzZjYlAvZW43N1dmVXkvQkx5aFM0S29nMytwRTM5dGE5RFp6WkVpQ0FSc3hPaVVGSExkQS9BUUYzaXdZYVA2eHluT0l3RG9VNjRKdndaZW94K2hNRDlQUDRyUzZTQThraE91ZnNUWUNFbzZQTHhJaytTQkpaaWNnVlRMS0ZadzVIM3FDd25SZmc1Q3VocCtUeXdZVklUdVEyWEdMRnQ5SmxOT3hsd0ZCampxRkRrSXBBN0plaUtud0R2Q1l3dVRQWkNSVzZZQ2dtL0VxZlVjZ2t3T3k2SjlzNGJjaXJPQ3RrTHlnb21neGZVOHEvNlo5UlZ0OVplNkJ5OW9CZGR5djZwMnoybjcrL0xsN2U3di9zeTE3c2MrZEVQYmUvR1htNERZUkxxNVBlays4c3B1OSt6TE43ci83ZC9lN0w3d0hldmRsMzcybWU0aFZiNnFRUERveFFnRW43eTAzRjBpRUNoeTdIRi9RTVBkRTFxRzkzbkl4Tjd3ZTJrRUh6aGxiMUFvTk1DR1RwRlVVY2xYMklmK29DOUVVSWZ4VVNzM09UZjBnZi85NXlmYTJlaXlSN2lQZkhLcit5Y2Z2S2I3SU1YWGRHNlJtYjR2bEI2UC9tTER2L1FYcWRjbnloNERBaHRwOHRiczB6d0NnSzYzZDNkaVJaUkJzcnczOG5nR01qbVFNZkRpMktPUUU2ZmNFeXFyTkdWa21DMXo4VXdMVHRtQmd6WlJvdFN6UGlxU2tKYzJBcnZqaFVrZnhLN0FVMVRZekl0TjFGZGw2dm5RaVR4M0FFR0VJUTdmL1dmMktRaDRGZEtBZEU0OUJxZHl5cGtqaTVhRXFUaEExckpsalFhdWFWbjFHZlFQbnRlS0xrYnVlTVA4VC8vTnRlNzdOZmw1N3AwSnNLN1YzckpGZFp1d0tTM3pmS3dTay9xZi85eE5mVlMyMWIzL1BSdmRiL3owalc1WEFXS2lkalllN3JwUGFrbDk5ZEpxZCtXYWRnUGFCL0JPUGI5dW04cFdGTzlnQ0Foa3FoUUdnRkFLSE5BUUQ0WVVlZ1E4T2t0T3VDVjhFYjFBQzlGUEs3S0J5WC9mT2ZtQjFaOEFwVm42UC8zZlY3cnJXL0tUNkZ3aSthL2tDQXhwMFZhMjdoeTlFekVFQjRyQmdsN3EwRStkQUtBSW9EQXZtN0x6Y0g3QzJIcUlsT3hNSGhJK010ektLa3hrT2VHenpjUlJqdnNQWlRDcERJMlQ4d0RCREJMNjFyYXpJN01DNVFLVEpUa0ZVSStnd29UTVlNRFF6b0FRZkZHVGVZMHNkTXhCemJZL0QzL3pyNVFOcTdXNEpDcURrYlo4cEJZNUpQdWM5b0lhT0cvM05hRFBhT0t6Nmora1ZmOCtMWGVyVXZ5Q2J2WTkrL0pXOTNkKy9ITDNieit4cld0N0pyN0NSUm5zREZaTGFYTGtPd25IemNJcnVqL3dYVDkrdmZ0L0ZRaSs2dGVlN1o1NlVQY0NkTW53K0gyaWEzZng4dXZMdWo4dzBZM0NIYjFYTDE2dTZVc2RPL1gvYis5c2dDdzdydnArNTgzMzU4NStTR3ZKdHJCazdFaE9RRFlRd0NUQlpRcENnZ1BZVUU1VmtncEpwWkpLa1pTTFZFd3FUaWpLVUs3WUlWUkNnWTBEd1NZQ2JGbUlzdVVQWkRuSXNtVFpzaTFMU0VMU3JsYUxySlYycFYzdGgzWjNkcjduemN6TC8zZTZ6NzM5N3J6NTNQZG1aK3piTTMxUDkrbnUwNmRQOXpuZHQyL2YrMmc3MUlKOEFCYU5WMjlKZ2ZlOHhzRWFGNWNIV1dKWWN2VVZVRkQrV25hVlZpd29QNnVnVzZUOFQ3OVUxMjJPem1GYSsxV3lEQ08xSUYrbDAxY3hRbitsZmU1NUFnZWhKZURNYTFHa1lHZ3FHVHJrdG1zRm9HNk5MbmFnSzVPajE0SjVXYy9rQ0VHRVpWRmRnTG5TZUJpOGU4cDdHT2p4Q0FIQjVWUXRTc3o1dGFGQ1daQnlCaFFQaWxEZ2JFbW5SRE4wZ3Jic1Y0ME1iQjdWTVhDZ1liT0lEeUtLV3dONFlTWUVnVGI3c3dsSVdTQ1ZVVmhlMXh3U0JoT3hxMElycDh3TTlqNWRiTmJYSnRjNHM1MlVmMGpyWDVhNzNUcUU4TG5IWnJKUHljL3FjUjdQdTJrbzFWc3RGallPckQyd1lva0FlYkd1UUVOdnpLRllEYjAwczVUOXQ3dW1zcDk3VTMvMkV6Y05aZ3VhU2NlMXRCNjRTbDczMCtjbnU3THBXVWw2UVovWDBtcUFweDQ0ZjBJUXduYlZKZFJMelByVUF3YVROSXUzdnZqeW4vTDBCK2Y4T2RTRElSd2Y2YzRPeWtDSnZXeE15di9GcDJheUx6dzVxNW0vTUg2Qmh5RHY1aXYxRlR3d0J1Z3VuSStqRUF1NVRFNFJRVGJrcTZWUzNGWHhuSjJCblRZQW9XM0w5WG9oamxRMEcydFVXcFlTSnA4SVcxR2dVbGNnSHh4U1BVTTYzaGhUcEJtbTFJcGFMUS8xQ1VVNGxBbDgwTEdXMHpNNUNmSUtSeGtHQUIwUGRCck1CRll1UXNJTVNPdDhoU21icmdMWVNMS1ZpeE5RT293dzhCejZsaFJKNE11UThneDBqQkd6UG9ONVVMdjJJM3F1dFYvTGZYYjUyZVFiMWFnNG8zdjlXeDZZeWg0OVViZFozNVFmcWlydk5HQ1dQNE0wZ0hBWkdCTVlQbTR2Tkx1TGlZODlPSjg5SldQd3o3VWEyRHNzU1VnNDErNlYwZW52eXM1TmFHOUFHNFV6V2czTTF6VU54dHVDUUJoaWNwSlREQkV4RklEbGUrR0tIQVhPUXlHZlh4RXB1LzNJWTBqUCtmYU4xVXo1dFJqSzlrajVIMzV1UHZ2amIwemJoaUJIZ1RIYXdYQkhZeUJja0VSeHBYYVRUYXd5RFRzWEtTVGR4b1I0QWFybE1vL1d1TUJtbXJtTjRVNFpnQ2JwajQ1azgvM2pzdktxYlVFYlJ3djFibGwzbXJsRlo1MnRza0I1QmphVEV4dFNDcG9Ea29iSGVkamk0Qk9jWmRqQXhXbDVqMENqVlJnY3lrNmlLMzBPWXhsTVQ0MkJUQjRsaGdGVjNJa3kyeHZQeWcrMHg0QmtWdGlXbFFxRFkvUFBsNWJjTklhNk5ad0lHUEdRbndUcVlLQnovODdPOWpDenZoU2ZlLzBoOVkwMjZhV2tPdDkrdkpIZDhVU21lLzNoN0JWWE1jZ0RZUU9LRUUrOVVrTWVhekN4a2xNREVBY1hiOU8zTGpXeTMvbGFscjM5YjJYWm02N1ZJMFBOZC92RXdKQVU3cHdNd1lYSm5teFNxNEU1clFZVzRpYWhHVUFqQkNrUHdKVzdpRk0wTndZRkttUktzcU4wR2pJMjY3T3NIeG5zenZhUGRkbXluNzJQY2NuaThPa3N1L1V4UFFrWjIyc3ZBVm03SlhPTWFBajdLcTZRaVlraDFoT0JFcDNIMW5CSSt5RjdkTHV4Unl1d01mbUZtV3krZGM3MllqdGxBSnE0bExyUGQydFp5WkxUb0N3K3d0K3E4OW1Vdm1WQWhYZTBDMnFPdDhFV0I0Q0hIWkk3RFJlbDF3N0J0WkYwOWhVaGJuaGRUUEVoa1dja1V1UUo3eEpFQlNXL0RkVmd1TndrVXBUQlRqdWRSek1JY2ZsdlMxY3BOd3BOUGd3Sks0UWcwMERMNVF2a3hDQXpQb2Q1bU1tWjlYbTBoK0tQU2VsWTVqTHJuNXZSN1B5WGpleXhGNVZmSFRVa1JXU2dpMFN6d2h2ZkRQeVFadWtFaWJkeTRnOFowUllja1BmcFp6VEgvY2tqV1hib3BTejdSemRKNFhUZndhZlByOUhTbTBlRzV5N1ZiRFV3cXkvdXpHazFZS2NKSlJTT0dydUNCNXFSTUl5VW5aSTh0NVZSSEQ3aFBaeHhrRHhrRE1lMENqcWdldmRxRmRTdlBNejhmL2xDSS92NEk3b1YwVE9Cc09HcHNwS2xsWSt3S2F5NlRRYWlEU2ZSL3JiaXFzeWx5UU9ab0IvQWhlV2wxQUI0QXltWGhsZlEyU3lpa3dZZ1ovVEMrWVc1UG5YdS9KUzhPcjJ1emx6Mkc3eE5jQXpCY0xSV2dVaWQrMFBPbmZmcUhuTnhzVS9DRG1wRXNubGRBdFFnakFqYlVDT2R1RGwxbDRWemhDZXNnSlpEV3U2SzdpWG9jSnpEd0VXSU93Nlllc3FTejNCaXhsNFVVb1JCaEdKN0czbjhCODRITURNL2hleWJBQnJKRG9VeVdyYWFVQWlEeTNQc3NHUGZyVm0vS3h2VmxqNnpQb3F2QllEZDczTXMrUXVIWnJOUFB6YW56MXVGR1JFYVZPcEwvaEJ0amxzNk5lcWZSVEFEdnFXTFFySlptM1lxVHI4Rm4yWDNuRzlrRHovVHlINzI1cjdzTGEvcjArTk85YUptMzhGOVdvVm8zSEJ1WUdxMnBzZU9PbStnc2NQaEk3czFrREdBcHZkblhyZlZGeXJsbWh0RHRkY1YzL1krdE84d3JDVS96L2paK0dRVkpMdG9LOVU3SHAzTzduZ01IUXl2Lzdvc1RMWVNCcmNDaFd5UVFUU1dsRUJZY2k0UDZnY1RzSmEwNHJLZ3poalFpUzQxTjV2aUJPWGt3dHlLVERTM3phNlRCZ0JXVGY3MStiblpiaW0rVG9GbVMxcnFMY1dkM3EyMUpkcCtVYWJ6R1UxTDhzdWlpWEhCV2FYQWtHeHhEMXNSWFloYlFnRVVXcXVMbEJ3TDJCS2NxT1VYUHlvR3VVQTBvRkZncU5rc0VNTmt3WkVYQTJMbi8xV1k4dWJCUjIvOEtvekRWZzVybHVJOTlFYWNncm9FYlRCcVJQT0JDc0pzWW5GTHdHeVA0dnVPUFJ0c0hOL2xKQnNuK1ZCOFBEdjB6NXhaeWo3MjlVdlpZWDNVZ2hrUkdoaVlZSXpnTFhweGx2TVptWFNlWVpyYkR4VTEvbzNwZUtHdGVKZU5LejFZd3VBNVVzeWp4VDk4WURaNzhOaEM5czd2Rzh4ZWQzVlBOcU94d2dHaVVTMVJNRXlYWm1wMmtwQmp4ZmEwUUgyT0lXQUNDTzhZZUYwQk9uKzB3WXloR0tTTmZYRVZOQ3A1N0pVeFpJZGZpeDNiN0x1Z3d3cS85N1dwN0J2UHp0dUtDWGtzNlVNc0xnZUVnT3oxaW11Tzh6Ujc3S3FtSWg0WGhMV2QrRHB1UUFMazZJOTV0UnVkaVVXY2hNTjFLRzB1dWQwR29DV1RqZnI4dEN1Y0NVZlNDWEJ6ekhwdWxDZXRpRGpQbkhuY1pQVW9JM3FDSTE4Y1p4WnBpdWRjUkdyTndNbzM4eGxpYnRuSlFFdnlPalU0aklUVEVXUHdoa3NOUVVwVGJCc1g0SUlQcHdXZERuQlpTOUFEZXdaTXlURXNZYUNoOUpxRjJKVFNJQ1hNSGdodjZUSEllL1dNZmtBS3psSWFwVWZaR2VUTWN0cmt0bzlZM1B0c0xYdncyYVhzbkQ1cVlXKzBNYmo1czBIZUdzSmtrVWZNQllTdEFPQy83QnpIb2dYaFFCdkRUYnVnRTBJeUFsckJZUWdPbjF6TzNuOTZLbnZ6RGIzWjI3NW5JSHZsZUhjMks0WGdubnlQREFGR1lXcXVLNXVSbjVQQlgxQjhVWVlnR0FGVkFXRmtwRDlWWlRLeld5QmtJajhnWlVjbUhFOGVqaklCc2dxNi8rbTU3UGFIcDdOelV3MTdNZ0t2WVNVVVpudkNablFoTEorbkI0bFkwMDAyZ1lVOGJvRjFMZ3hYdkZnMHVMdzRQNjJvWXJTbWM2N2RCZ0JPbldHSFhZMjVTOVBjME5JYWQ2NFlIdDhLaEFZZERsMVdGM1FjbFM0cHJOdGRNd0k2Z1dET2pZQXhKVzBNT1pWa2lJSXppK1pOS0JwVDVQQXlrYTZBcGVuaXZKQUNuVERBWTdvdzVHdnBsVG1PS1lNYVpaQXd4NHlBU1hqTjFVTjJuNzhvVGVLV3dLajdJRlJibWVHNGYrUkxOWGlVWDRmNTdLTVZmTGhpU0hHWSt0YVpoZXp1dzdQWlk3cS9IUmdaVjMxNkRDaGhtZExEc1RGWURHN0RSK1pDSHFvT2l1QnRMTGdOZkxtQkxQbzRHalZsWk5ZM09pb2M3MlJNSnRCQ1FnUDZ5aVlydXZ1ZXJtZmZQRmJQZnZBMXZkbVAzZGlmWFgrZ0IvWXpMUUpzdjJKQnkyUTlLTEFqeUp3K1hOUXN6UmlnRDFKbk0zK1VDL0pnSTFvTElqT0dLRDRqNFlrWEZyTFA2RkhuSVoxellQWFV5aGk2NHVmeVFGYjZzMzZJb1dEbFErMUYyMU51Vmc4SHVoZ3NVVlFiRnVlbWRNUGNlU2R4ZE1SNU54aGNuSnVleEFDNGF4NHdqdDA0TktKZWczV0NPbDVUNDdOblF5VjFLVDFLd01tMmVUMTFjRWNSUDJCaTZwZ1Fjbkx3RmxUVlM2MFBLUnM2UEZMeEJqWVJqVWdCTXhTQ2xBRmI5Z3dDWmkzd0dJQ2U1Ym5zbWtHZG1kY1JPbFlEeTEzZFlheDVQc0d3eE1Yd2FZbXJzcnBqc01FT3JmTmExajcwekh6MlZmbWpweGQxRDYwWlVDZHdVQWllTnZ2Z1JySHRMeW80ZzlKd0FuQVQwcGlod3FhanFnbE1LcDY2bFlNL3BLTnMwS0NYSU0yM0RxekhJbjBrajJNV0hOUXluYytnMzNlMG5uM3RXL1hzOVZkM1p6L3kzYjNaOTc2cU45dXZnd3FzaE13QXFDMnMvclFJTU1Qb1cwdE9FbHA2NkdHZWxROXRabktZME9uREI1NWJ5TzQ3TXBjZGtVd1lGd05tQ09FdHROWGw0Zkp4NVRlNXFCM0lJYlFJcnEzRzBJUVl6SEVrcitISWJuMnVBSkE5bllXWlNRd0FTWWdvQ0VhQmRqdUpvK091YTNucXBTa05ldTdRdFRDVlUzTU1iclpxbFd1U1JCS2hVeDg3d1hGU3ZYbW03Wk1oUFZMaFRiU1ptU0JReStvenYwMVJ2Z2FJbklRTVJ0L0pwanc2cmhYTDVMTjBEUnlnSzRDRlk1cm5jWnFtL0lxRU9JTXBoRzNvS2RMSDdDUUM1L1NUVS9jZW1zNWV0VSszQVdNTjdjd3Y2LzUrT1c1Q2FRaHlDOENBWmVTSUdrdmhHVzJXOFVNVno1NWR6QTY5V00vKytreGRiK3lGUjQxOHVwcmJBVjd4RFlNT3FBcWhnZWNQdnNJbHg4RW9PUGkwL1lISTcrYU1KZFF4SUx3a0JhM0FFOHBzMVVGYkh1dG1yMVZMQURXZEhXRFZjUGpVVXZia2k0dlorTkNjOWdlNnM1dXU3Y2x1MEtyZ3FsRzlwYWpOVFc1L3pCbUJFUFFyOU5sQVBIdHBLVHNtbVR5cEY1aU9hTFovZVRyY3gvTjBCR1htSDFuQ2pQMEI1UzNOTUdTaEhtUVdvRiticWxVazVJc2NrR2tOUnpKOVljdC9RZjNYRnk2ZW1WeWpTRk4xYStSYk42bVRCZ0FtOFYzekYxL1FDbUI1VHN2TjN0RERVcFF0TkNFdGduSVljYUE4RzJTSGRQOTRWQWRNYnJwV1gyNlJJUmpUN3U2MDdxVG1aQkRJaXl2cURjcWFJSlJLVnhUT3l4U1kxaUh5R2JWWUlNU0ZFemxEUmJ5Uno4TkJCdFNJRDQveFFqdnNtM1BTTk83WjczNWlPcnZsTHlhem1tYTlNYjFRczNla1I1NW4rT0hESEJnQWxKQlZEM3NnRi9Ycy9LSWU1L0Y2THJ2bHRpa28yZkNXbnYxUm1VSmhWZ3M4Y2hzQXI0VUJzRWpBS1M4S2orS25nem9vaFhCcWo5bFR5SzdqeUl1RERsejc3TW5nZHlOQWF0RmJHQXNreTdzSEZGYTc5Q3U4RHorL2FMY0hQQzRia1pERzlRanYxVmVQYXEramxpM016YWhMMWZseVRBWXplb1NJOGJzZ1paK1FiSGhya1JvWUwrRmRmbkZEYzhFcTRISWdRTjBtazRDMHNHV3ozTmJqRnFLdVZBNjB5N3ZaMDRDck9lcFFVNElSa0tCcmplVzVpYlBIZlFYZ3BCeXVSbVpMK0U0YUFCZ3lwdXNubjVpU0FkQnA3OW9vd3Nmak50dWlGUy9weEprY1dneFFYdEw0K0lQMTdBTS9wN1Bsc3A4Y3FKalNMaS8zaG5YZENnVGxqNTJUVzRMbXpncE1iWll6MmhKYXhWakJRYUVZOERIdStCUXFZNWhsMUFZR3BWWXRROXFnWWx2OW9nYnZIMzFaRGRIYWRWbEtlbkcyeXhUODJEa0thV1dJNXFoQ0g2UW9OYmNPQVdxbTE2Z3lkc2dqa2pqeUJzaktJWkFJeGlEUXlmUEVNcm55eDNKUVJOYXA4M2FtdVBYQ0JVZkJES0FBckhYaGpxcENENUFyck5TSWs1UE53bTVWYUhIMUlUL0x6YmY1SmxXWWhjejU4M1gxdDdROE91aDVPekYwN0kyQU03bFpIdHBkeEUwK1FnVGxqM2d5eUR2UHlBdFhZQ3lhOTNmUjJ3b3BhMmhMeU5QcUNyV3drWXRoRXQzRzh2VHA1eDVQRGNCNkpGcVIzUkN1MHdiQW1KZzUvdlVaUGZpL3FKdnlWNENnd1NiTVhBa3QyNll1Wm5FcElkRkFEd254aHRiZGh4ZXpINzhKMzVOcE1zajI2bGFBKzF6V1V4eXVaS1loYzFCWUl0RWx3VUF4NEIxTkhlczdEVXd2NEpsVkVKU1Y5elJubUVHbE1NdDNOdkJRL0RGdGJ1bmxhVnVtLzlhZGw3Sm45WGl1aXh0WHk2djgrWkpmUTFRNEc0d3hqVXJ5UVdrVm1wUkJHaDVvRVYzTlNJQTNHdEtjUEUva1NRZ0dMNHFBd2dmV0F6M3BvRzNnUVcybHMwcEthRzk0Z1NZWG5wV1A5WWFBSFdoU3g5cEJwNERPK1hJelFMOFJEbi9LcFB3OHFrTkVHRC9iTzlDMys1eGpCUklYNVFHR291RmlFWWtoeG92MkIyTWdQUExWbjhzakVMVFNwdlEyRHdWa3ZNSjhjSXpUdFJ6SjhDM2JIL1p4alBXbGk2ZWUxdG5qbFc0ZGFpc0xySWRwcHdHQU9Wb09USDAyZituc1hHT3BmcmFydC85R0dBcmlKTFJKSjBuVC9UaG1DNXhWR0hzZ0RJMnU3QU9mbjh1dTFiR3ltNjdobTNSNmZLUmJBV2FCR2QwS1lBellLRUpSdzRaZ29CUEp4c2hXQWR3ME84TkVOTURqUUp1WjFPRjhQWWVQVGZLMVdiN3d3KzcwN1EvT1pCKzlkOUtVSHdOaGc5Q1ZYek1aTTBZWW9ERU5xWG85SHFDK2x1RmdPRWlDaDNTQWh6QnRDSW9mU1ZvY3JEdU1nTHNROU1vZG0wRHJuNlpjU1NMQjBLdGMrYjBEK2hacThHZjlKQmlNRUZoTVFPanBZQlRBaGJ3b2tzMms5c3d4NEMyeGRHa2xFOGRaKzExbWdsQUpWM2dJb1RCNUJLS1dIbVdSaUNRMG9GVHZhbEdNTVh0WTVqRUEwcFdKMDZmOUpDQmszYTlHWXN2NGRocUExWmlBK1hxalBuMnFhM0RFQk9vWjE3T09ucThNWFJwcCtSRFdzMTRKOG1VOUR2eWxUOHhtNzN2N1FQYm0xK3JWVXkzL2VmN2RKMFBBZlNHZWxRQTc3R1VIYlRvVnVLcHJrYmpxY0lzSk5sQ2NvQ0lvbmoraTBqSDA4TjA1OGNNZ3VPWCs2ZXo5bjcxb3kvNmFNdm1nREVwZmJQbzUzb2FsNkRuTWh5eVZ5aFg0UEVVMHd5MkEweUJGVlVlbkVrYVBhQ0NDZk5Gam1vNlBwTWtRNkZ0SWx4YXlDVWxlb3NpUWl0LzdEd0xJSnB6dWs2cWhoQ3BDM1VENGdnTFV3bXFBY05oTUpJME5UZnN3YXFoMDVaV0NjaXRrSWp3NGFCajFHQmNxNUxaNERFZCs0TU41Q1NuRjFSS0lic0Q1N0E5a01saWVuenVwWXNuenF3MFEyV0tXVGhrQWwwME9sK2VtbnU4Wk8yaHNJbVNHR3grRDJwVFRLQWhXMzdvb0ZxV0hxS1p3SEgwOXE4ODF2K3ZqTTlrLytjSGU3Si8rY0g5MlVHOTQ2UlJwcGx2R1RJK05iUlhBKzBpK1pHK21VTkM2M0JEY2xSMEQzQTBBQm92SGRpZ2Y3NXAvK0l0VDJWMlB6V1kxV1FJK1N1RUtDaXdmUDAzVHFJTjQ0WHd3Qnd5RE93eG00cUpGTktKSW8yUTRZQlI0U1RJSEFwU0tRZ0tFWUN6cENYbk8xUUxxdjF6UVRxR2NGMDdnSVR3cHNGeEM1YmNkUXBpQk1KNkwwZUF5Tlpsb0tXRHRLU29MTFF5azh3cFRtVmc1cFlUNmdqRk01VUhld0hFbzdrMEdGL0NibFVYT2h0M0NwQ3VBK2RtSjR6blpzTmhOcXk0S3RpSFVLUU1BYXk0YllGZjkwdW5uZWc2ODFqcUdSQk9vTFEySmJjWloxK1lGdkNPc00zT3NsRXJLdytiZlIrNWYwRHZ0QzlsYmIrekozcXpueU5jZjBHTWpuWWZuNVE2YlVaTXlIbHhOMmpaK1l2V3I1WEVhcGJIbWFJT1U1UWdyUjFwZjBHTytwL1ZJNmt0UHpXVmZlWHBlNzhQcnZRWlpoRlM1N2NTZnROVnZCVmd5bXJKSDZHMUhvWFBGVFJob1RsZkgySFFhaklBWkFnWjN6TThTM0p5WWRGeEFwRmZ5aEh3bWg5VXpwb1ZpT05LM1dHc3BoajROU3VnZmxLWStqS1JYWlhsRXlxblI5bURVYUZmQWVydXRLcy9ZeEFWeWpJaElpWGhham1TTHcycWUxOHM0RExrMkw0dFEzbDdVWWhVb3o5bUkrUXRuajBYS1J0SnJFU3pIazZTdEJUdHBBT0FJaHZIZEM2Y1BQemR3M1k4c1NzQlN6YTA3Vi9pVWdtMGFSZGxBTzBoSkcyc2FNVU5TSmg0QjNmcU5sWWxHOVFBQUdDOUpSRUZVaGV3MnZZYytyS09nSEkwZDF2MjJiUnlwUUZGR0pVUGhsTHlGZVJZOU5EU1VEUTRPNm15QlBwQXhPeHVVY0VYT3RSSGNldkNzbm1Pc2s5cTludEFqdTFtV0pYSWMzKzNuMko2RTVFcmViQWdZc0lVbm54bUNXR1ZUT09JTUtKODdDMUd1YVRTSGRCUXNkYTFremR5TWMwVk04Mjh1TEE2TUNHMWZSZWhLWVM2M2o0WmFubkQvYi9YRVR2T1NOQkVVK2YwZVBlVXh0TkJLaGt0WkpwUnV5a1FFbytNMUtGWUVJNkdRSjYwbnFXSGRvSlhXeFc0QnBmd2NYdFBEbmNWekx4NStUb1ZKNWk2Sld0MHIyRjdYYmdNQW96RHVERHVzVFIyNTgrVFk5LzNMbDd0cVBRZkpFR2FlbUZOZzQ4N0poeExGUmw0WUhNWUFXWENSRzU3NURtbFp5R2xCbm8yZm1kVHljc0pmSUZFbSt5ZHpMQk5DOFJyd0dJRGhrVVkyb3EvbVRPb3J1RFA2cGxXcWNFMUYxb3lJdWZCdk1tQjI1M3g2d0hsYVVPeFUyVmZNL2lvUXhuQlN4amtXcW5DRnFqczZ0dFE2S3VCUVJyR3djb1FYWkpMY0lOZk1tcFJhUHdnSGVMaHl6cHBMc2Z3UFN1MzVTRGVHN2RhQW1MWERTT2tTbGR0d0pLNXdMV1NTRXlCektHa2JuYXNTSVNFa1hvNHNtS1RzM1EzQllBQVdYLzdyYi80NWV3QllXcDVudGhhS0V0cmgybTBBa0FnTU95UnMvdUtoVDErNFpuSDJXSzEvOUdDdzFuU0NaOXRrVXhLVDY5S0JGbmVFcHBRUlNUMWhvMGtiUTZTcVJ6bExZTC9RYTZNcTNFT2kzTGxUT0lubEhKS0hNK0o4TUdOQkpudEpmck1HSUcwdFlSK29JV2lZbkdhVDhxc2h6WEVyWWZLTFl4MWkrYXdjS1Bud0pLKzdtRWZ5QzMrT2o5RHdKWnhIaTRvYzAxNlk5R21aY05vZlJhdThsVVVxR0ZZQTRkRmltVXFJZTZraTFlVzJNb1U4WVpWUzVNNURiWkFIblBNSUU4WEhjd0NzSVIwNWRPOGQ1Mk05clZZQVJZTnpaclllYUxjQktITUNzOTZJdWFXNWlTZTZoMFovR0ZFalB3YmhNZ2VmdCtBZzNDUUpHN3htQWtRMU9NWVVadFR6RnBCT1Z3eGxCNmt3d0M1VzJHSmdjb2NCWU04QWkwMm4rWVpjbm1HVmdQT3lNam1tQ0lSUUNKaGlFclFCcHBnZ3F5VUVaampEczRJeUpBbjZEL3pTMXVCSVMxMFJiNXF0U3Mya0p6eW53NXlLQ1NxUGJVc0E5a29zTnRVYjJvTEVtdDFLVEhONmlCV2xYQ1psRzBUZGJGT1RzOGdkU2llN21SR3hOY0IzQ1ZCK2JnTllDZFl2VER3aFN1VkhnRnNqdm9GUzdUWUF5QXhaZWQ4NVpHelZGbDcrMXFORDQ2OWlMQWVoS3VBWk5zQnJrWVZDY2lzNlJSZzYwMjRHbE1pWXRUeFdIM1hGUDJVS3R3NkNsc0VLV2VaSU9sUmcxNERCQUFURmx3RVEzOTNzTkpzU0psblhEVnBsSzNJRk1uSFlLaEo0Rm94OFUwOVJGL2VsdENYUTRvb1A4WUJiVVVFWmdWeThvV2s0NWlPcHJBeGxFaDJQUi80MjJLSW9EYmphYUltVkxjaGxVa295ZVZ3ZTZSTEZFTVZnczFuTmkxc1lBUjREbmo5MVROOUlVbmNXbnN4UkdnVGI2OXB0QU1yY3BRMnBUVDk5NTVPRDEvMjlLYzJlSXd4dVpqWWI3bTJhWFh5NWhwcEQyWmI5cWloOGV5L2czQXpBS0t1QVVMWFM0cmhaeVFybDZJSHdyQm1lN2JDSjd0MExwYlFzRzdqRVNtSk9aRkM0b1BERVRlRmh5TklkSCtLbS9MRWd5Y1JOV3kxdm9CWTREdUd0WEkzVTVSTFpTc1dYVVFhZUV4RmNCcVdWUlhPNmJaUUpwTUlKUnA1SWhkZTN1K3JMVTg4K2RPZVRTc0kyYUpzNFh6MHJhSU82alJ4QU1wdy9DYUgyWG1IVVBiTy9yUzdQUHZqQkYvYS85YjFIYW4zRFA4QVlSdm41QzFtM3dFQVVSOTVCT1lsQUV4TUFiYkpaUFdiaWkvcHMvYUZvMHg1QVRpeVU4MkdGWVdEWmJRWUFxT09tVVEveldqY2FnSmZBVTFHaU1DWml3UDRESTZHT1psd29GVnJuRk5MWks1VDBsQUNqcVBJSWVTaGp2am5yem80MU5TU3dhdTBGTHgrM2RqYlVoaGFraW5LdGhGaWtYbjVJbFljdk5vV25VWVAyL3NmY1U5KzQ0N2RmRUhGcWp5M0tJWFU2bm5CYlhDZFdBRENlaW85NE1BSnpjN05MazZjZjZMdjZoaDhJaWhTVXF0V0p2SzIyanNwdy9vakpURXdxTm9WSnN6MkF5R1pnMWt1RzhselRoaEF1RElDK3ZxTjM4amRyQUx5R1ZEaWhOcGdLSWE3QldDWHhwb3FVS2tLYlhhSW41RU5Wb2tHbndGTnFQSXBhZDFmSVpic1pybE9ackNpM0ZZSXJpS3lPb0c2K1ArQWZic0VBekowKzg4RGNIRyt3bVBQdWdaT09jVlBzRzhWYTJ3aWM4YUQ4Y1Q5bDl2aFh2Nnl2Tnl4aEFCalh4V2JXRm12MldnU1pwZkhGZ0ViTWVOVmpvUmlQOWJKOERnWkNWeTNwN1hVeW1JcmVadVZTM1BuMlBKdUJ0clJQNklXeTRWWUNQdURIbHZUR2N1QXRQNWlqTkc4TDdURWprTFI5SzBNRUdvV3NvTHA3M1c1ckM4dC9QZ1hPdHhuNGRhVGFVbVBweEZQU2pUQlVYV2U4aDcxamlMZlZkV0lGa0RMb0RmQUcxYzcrdjE5K1l1d05QLzlFZDkvd0cvbDBGd1lBeGVCVHo1dDFHeTNoZXdPMko2QksyREN6c3VoNlFtVGx3cnpnaUd6b0xub0l2OEY0Rk9sYkQwRTBPSi9WWXpXbThsUUlqNTdtZVlId2xMQnZrWUphbXJNNWJQc2NTVUdMTjJmWlZiRzB6VDRKN1BRRzhFaVpsNy93STNwSHBhcysrL2dYUC9wdW5nRFFITmNYNElwdWJtZmJPbVVBZkhnNTgzbUQ5R2JnZFAzc2tVLzF2ZnI3Mzhoc2FtOXdhZllOUno2OTJPYWFtQTRBS3huSnJNQ2pUTW9ROEp3MWwzUVZLWXpBeWhJcEo2U0dsUVRZdGZPbTVUWVNOajRpMWNCbFVZcWFuTWRjUXFYcUhlK3dLTDB5UkI2ODBWUmdJMlZXVXRsWkdOcXlRa1k3aThXY0c1NGlEZXZFSjZkUitTRVVQbEI2NmJtam41dzRjNFp2QU9CNCtsanVsbkxjTWw3dXBWTUd3UG1DYWZjMEN0OTM1djRQM1BYS2Q5NzJpOTNkUGRmd0c2Z3NoK3hUMUZ0WUJYaEZtNGVheGFOSVU4bW00WlUwWGV0TUpWY21id0hqRkoyWDlleUs1eThQanh5L0FSN1MyeVRLNVhWdm9PeE96NElSMk1udFlYenh3eXg4bWRobWY3Ny9VRjg4OWVYYjN2OEZKZW1Cb0wwRm1FK1lpdnVRcEtzOHJHQjdYQ2YzQUp4RG1QWUdtV1diZVBLVHArb1hqLzFaTi9jK2FsWllDUlJ6cXhlOExFaXQ2L2xZQVpKMUR4ZnVIZWN3WmpmZ3VNMUNwKzNReStlMDErT1o5RFk0cTlmcmFnTzlLMDBpWFFGY2FWN1dxcDhYZi9oMEdlK2pqR2dGc0VkZnJKbysrL3p0VDl6N1p5ZFZqaDVCUjJ4eFdxTFRwcDV2cHNvNDdLVHpJUWFrVVRTTzg4MjFsKy83NzdmcFlQNFp2dHpMYlVENFNLV0daVnJpY3NLcVpMT3VYRjI1UEVxRDg2Vm1pRzN1dWw0ZEc2SldKcktGdU4wcnF6S0t0azNtVytDakhYWFRIMTUxSG5ERURvT0Rlam1OSHlSaDJjODNLN3VYbHM1OC9YYnBRcGgzWFBsOXdreTVwNmZhN2pwcEFHQWVCL1FHMFVCODQveWpmM2hpNGR6UlA3SlZnTGl3dllCNHVpNXQ5UlVMcTJMZlVIS1lEeTRhMENKOXd6aktYMkd2NnEwTk1IS2xlV2xML2JRRFFyUnJoM25uaVM4eWora25oNW45OGVQNlhOM1VxV2R1ZWZDdWp4d25qeHlUb3hzQmI0WWxkT3JTU1FQZ1BIdEQwaFVBcDV4cUp6LzM3MjV0ek0wOTA2TkhJZmtaZXg3SGVZbHRocjZNTkNnR2ZYbnUwQnNFZE55V29OcmxkVjJwdGxxOTNxQnRsbk5IMmh6YllrWmdoN1VIbm5ocU5Dcmw1eWZZUitWUmZuMnUrcG5QLys0djNxb1E5LzdvUkQ1Qkt1eXRVTEJ6cnRNR2dFYmd2REZ1Qk16S1RUOTMzem41MzlMRTM4QUEySzJBTHZhZCtsQnVaMTNWQ2hTM1NYbDJGb2ViNHViYnJTM1duazFKWVBzeUQybmpiMXkvUE1wSFgvbU5SdDBDTkU0ZXV2OS9IWDMwM25QaUFuMUlaMy8weEhXbm8weDIraWxBeWp5TllzTDB4bUx4QnA3LzQzLzRoYi94bjE3NmJNK2Vneis3ekk5NHlCYjI2TUx2dlRVZDBVMHBYWWt3eXAvVWF6TjRFdDlWd2NTSTJRcG1XNGJhOWtqSSttVUh0UWRXZU9hL2QxaXp2Kzc1TVFBSDltcTZ2M2o2cy8vM3YvNGtPLzlNd3J6OVo1T2lvUGVPdDhLaGt0cnZPcjBDZ09PMFFZUjlGWURGczJYUG1YdC81VGV6aFlVVFBYb3FZTGNDTWdMZCtrNjJuY1NEUXVVcUNleENDVERZK2RqSHVIN0loWjhneHdEczM2TUpibW5oeEpjKzlxdi9ROGsrR2Zyc254b0JXdHhSNWFlQzdUQUExSU56NVM4YmdPVUxEMy8weE5Rem4vLzE3bHFqYms4RnpBRG9PYjE5M3owVXJxNlZCSGFiQkhqa042NWZjOXFuUjMzajhudjFReldqQTQzNmM0OTgvdGNmdXZNUFRxZzk2QUtUb0JzQTR1aEp4eFZmZFpqYlRnTkFoVzRFVXN1SEFHclAzL3FPZXhiT0hQbFFyNTZOOGlNWjV2V3VOQ3VCeWxVUzJHMFM0SWc3UCtXMlQ3K0ZaY292QTNCZ1hEOUtldUxJaC83a3ZlKzRXKzFCOTlaUy9tMHhBdHRsQUx3eHdMSVJRQWo0cnFOLzhLYmZYN3A0OGpOOWVrU0MzdHRYVW5WUFVLdU1nTVJUdWQwaUFWZisvVkorWnYyOVV2NnI5L08xMzlPZi9yMTN2ZWwvcXgzb0hkLzlYOHNBYkV0enQ4c0EwSmkxakVBUXh2ejh3dkZQdlAzWGxxY3ZQTkNybmRLd0NzQVE2UFhieWdoc3k0Q29Lcms4Q2ZDeG1EMjY1ejh3MXBYdDE2TStsdit2T0NDYUd0TzN2KzluZm0xK250K3FNc1ZQbGQvdi9ia0Z3TG11aEZnSHI5dHBBTHdadmdJbzd3VmdCSmFtWDN4bzRvVlAvK3RmYnN4ZWVyUlhLd0ZiQmVoWlJiZmVuZGE3QTlYR29FdXhnanRPQW54OW1sOXV2cXFrL04wTFU0OTg5a1AvNXQzSERuMXpnakV1WDU3OTBZbHRVL3BVY0ZmaUJ0dWZwamxNK1FIWFBYL3VxZG5GeVZOZkdiN2h4OTdZTTloL0RTS3p4MVh4ZmR3cjlYaXdUOGM0Ky9RTzk0Sys0MSt2NjZYaVZpMUlXN09EdzkwYXJJTTZtTUxIV09iMCt3UzczZEVXWmwvYTRpY0N0N05OL05UNFB2MTBPelAvUGkzNzhkZGNwUWxzL3RJamQzMzRsOTcxNkQyM3ZpUitFRFRLajA4My9zQzdBWEFvVk9mZGxUQUF0QXJWS1RjMFZhZnV1WmYrYW5yKzdOUDNqNzMyNzkvWU16UjRuWDA4T0ZnQktWNVl1R3kzSWFnTVFPY0g1RlpydUZJR2dFZlZ3d1BkV3U3amcrTHZaOWt2NWUrYXZmalZ6L3pPdi9vUGo5N3pDWlNmOGM3ei9yTHlnM2RkY0NqVTlyZ3JaUUJvblN1OHczS0x1eGZPSFptZGZ2YUw5NDY4L3FjUDlvMk0zb2lZTExNdXdRaXNWclJNcWozeHlnQzBSNDZkb0hJbERFQ3Zia3YzYUtmL2dINTMwbWQ5bnZOZnZVOWFmdkhVcDI5OTcwKzk1K2hEOTV4WGU1bmhVWDYvL3kvUC9vaGsyNVdmU25lQ0FZQ1AxVnhYZmZMVTRzdGYrNS8zN2ZtYjc2ejNqVjcxL1YxOGpBOVJtUkVJWHhPaThIWklyeklBcTNYVGxjZHZwd0hnK3hVam12WDNqV3JXMTA0L3lzOXUvOVU2NGJkM3VGR2ZlT0h3QnovNEwxNzdHK2ZQbnB5VlpGQjJYL1pqQU5nRDhFMC9IN1lPbGJTOTdrb2FBRnE2MmhUdUFnRmFudlBmL1BBM0I2NTU0NUdCZmRmZjNEM1FzMGUvb1JidXdiVUU2K0l0d2tqS0MzWkNqSlVCNklSVTIwTnpPd3lBZmNldlg2ZjZ0TkhIOC8xOWNjbVBBVGlvbmY3QnJ2bmp4eDc2OC8veWY5NzlsdHVrNGN6NktIeTY3UGVabjJIcXZqMEMyQ0tWSzIwQVlIczlJK0JONjVsNDRrK2ZsWG45MHNncmYyaHY5K0Rvalg1UUVBTGNpM0ZiME1uanc1VUI4SzdZZWJBVEJzQm5IM2IzQjZYNExQZE44WFdQNzgvM3I5TGhIcDd6TDAyZStzemRIL21QLy9tdWo3em5NWWFqdk0vNndQTE1mOFUyL2NvOXQ1cnlsZk4xT3U1OEFObmh3Mk9jOEhwWjJMemVGTWp3aHIvK0Z6Ny9FNFBmOWFQdnF2VVB2MjVSNGwyU1owYzc5OW9LNXNkQTJTaGNabHY0TXJlR0tUNGl5eitzbHpyQ2o0UHFOMnVkYXpHMW14eHQ0WmVJOSs3dHNhY1pGeTh5TWUxdVIxdDRzbkhod21LMnBCK0EzWXFqRkYxS3Z6TGJvL2k4eURQWXowWmYrSVFYRU0vSFBNWTE4OWNXWm8rZWVQSytEOTN5S3ovMUZ5cnF5M3RYZmhRZjRhWXovNDVSZnZHMTZ1eEwyblk3VnllZ0d3RWdieXppVTBOQWVIbndOWC8zd0t0LytzUC91SGYvamY4czYrazlpQkZZa3FneEFqdzFNS2hleFFBdzZCdENLQlJzQVloTk9MSlhCbUFUQXR2bXJCczFBR212KzREajVCNnZvcVB3K0g1K3B0MjgzdVRUbE1ObnUvRkRVbnplNVIvVGpOKzlWRDk5NmRTUmozL3V0Ly85bng0NzlKVnphaTVqRllYM0dkK1YzNDJDSzc2ejRIQ2JKZFZjbmN1Z0dYdmxZczRQRU8rR0FBT1FyZ2JjR0lCZkhyLzVGMTU5OVZ2ZTgvTzllMjk0UjliYmZ5MGZHc1VZbUJHUW1JRm1BQWliandaQkVmN3Nud1M1L0JvQ2hqTzg0cFVCeU1WeDJRSEU2NTFkRW5VVGJmS3NsZTZaOTYyeUFyQTZkR0dQaUpuZFozZi9vVmNVbnQvbjQ4QlpuMFpWL2t1OU1jd1Bkd3pvL1pSUnpmak0vTFhGK1pPVFo0NTk2b0hiZnVPVEQzL3hsaE9xbnpIS0RJL0N1MDluZlJSL1J5cS8rTXI3Z1BCT2N0WnZZc2dOZ0VOZkRhUXJBb3dCNmN1anIzL2JOUWZmK3FzLzNuZmdwcCtwOVkxOWp6NHIwSTB4V0U1V0Jia2hVQUhUZVkydXFQdUNaZzd5RVplZU0rQ0R4U1BEV2dyS1QwMDFzdWxwL1FpMWN5bGF1STBNMUpEenlsNXByOTBDak5mQ0xjREV5aC9VTGpYTkdBYVgvajZCeFlWcmxkZGI2REpDTnF2bGE4SjdwRVVCVHpJWUNSTW1PTDYzWmtvOE1kR3dXNER3ZXhNYUdFcGpkamVGVjlpT2x5dXVKM2dXNWxkNVVmNWVqU2ovbFY0TUFUL1Z6WXpQTC9iVWxyUzBYNXA2L09LSnB6NTMvKzN2dS92UVZ6LzNVbXdPaXUxS0Qwd1ZuNW5mRlIvb2JrY05FK1MzVTUzekJrVEIzYXU3N0pZQWlQSzdVY2dOUWRZN1BITHRQL2pOTjR4Yy82Ti9wM3YwMVQ5VTZ4MSt2WHA3bEJGb0JrRmRZNnNDZFl2MWhpNG9oWWRGYzBXWS9DTmErZzFySnBqVTE5dW5wOFBBSTY4NUsreVJuUTJEQWREbUZSK20wTENkNElDcW5BbGNGNkFyYmc3WHdLWGx5blNJUTlEeUpPRnlQQ2JsR1QwOXJUK2xBOTd5QU9YSDlmeWRWOGtuMVJadS9WQjg4S2I4Z3NVWHAwTFlEWUROL0NnL1NxK1pIc1hYZ2lEcldsNmVYSzVQSFowOS8rSTNqaCs2LzRFN2YvZmRoK3YxYWI3Ynp6aEVvWDNXZDZWM1NGcnFmV1E0VlBMT2NXcnFqblVwYjRRUnZFUENHQUEzQm00RUhJSjNnUS91Kzl2Lzl0cXhHOTkyVTkvK04zeHY5OUNCTjlSNmhyNHJxL1h1VjJtOVhCQ1ZYMTNtdHdxVU5JUGdGR0ljNWNkUHRUSUFxckNWY3hLdDBxNFVqcll4NEZNRGdHQk5xUlJ3NVhJbGFrcEw4NjBYcG9IUTgzeWJpYStSMTJnNlhXaHJOT3pSSXpsbTk2bkphQUNFODluZlBqS2pPT2tvUE4rZ1pNWW5ySC9VZFZHZm9uaDVlV0htK2ZucGM0ZlB2M0Q0OFdjZXV2T3ByMy8yOTA4cWxkL3Fvd2s0Wm5WWGRJZmczSmNWMzd2ZklUUjJsUE9HN1NpbVNzdzRqMEQzR0FEQzlGL1pZd1RBT2ZTOGRBNWwrclV5MkR2eStwOTh4ZUJWTjEvWHMrZFYxM1gzNzN0VlY5L3dLN3E2Ky9kMzFmcjJOR3ExNFM1RjFHdTlkdXBZcGVoQlZnRDRTUTB5WHdHZ1RPdTZqZVJabDBqN01wZ0IwRXlYR2dCVEZyWFRaczBFdWhGWUMzcGFXdGFOU0JOT1RUQjhwQzlRMUplbXBlRlNYaStUMDFGZVp2a3g3Y2lqNE16UnJBQXNIM0tYVjdpZU5aYm1hNDNsNmF5eE1MRzhPUC95MHNMMFMvTlQ1MStZdW5EeStYUEhIajl4N0xHN1R4MTk1SjZMS3NGemUwcENBdWZLN2NxZlFrOXp4WTgxMmdvZ2xBNjBQTHpqb0RkeXh6RldZaWpsazdCN2xEdjFaV05BbXVNODdHV3BnZzdEa2RiYk83U252Ly9nelVPOTQ5ODkzTFBudXVHKzBZTWpYUU5qSXowRGU0ZXk3c0doNFpHQndhR3hnZjdaK1o3K3VibGFmNjI3cDBjZks5QXFRZytndW1yYVRxcnBSMmthZ2h4STBQZERPWlRRMEYwemYxVFJXS2J1SGVIRWViWkh5K1pGeldOVGx5UlFzU2ZHRFpwQ2kwdFRYdUVSanVFSWswZnhwcndSaHlLYVlwS2ZzSmZ6ZE1VaFpuUVZOT01LVkxyUWVWbkpVcUpqajZXcm9mclVSeEtpQkN1MEh1TjBMVW1PVXJqbEpSWFR6OHd1TERVYWk0dURBOHZ6V1dOeGZ2TFMzUHpTL056c1luMTJabUhxd3N6Q3pLV3BtWW5UVXhObmowOWZQUFhNOU9uamZ6VXpNekV4cCtxNFowZHhjVlNQWXp5NE1xUGNoRjNKVStoNG9KY0J1bGZRSFBFZDdlaWozZVJTZmdtN3B3TnRERVdJMGpzT1dJNm5hZER3c2dvYVRTRE9PNVE4M3BrZUJ1SWNsc09XV0VwM1hBVTNMZ0dYZTFvaXhYbllZWnFQc1BkUDJtL2tkZVgxTVBIVXV3RndYRG51NVlEdUZUUkhmRmM0Rjg2dVlEWmhNdVdiY09wZG1WUFlTdUU5bmJKcE9LWGxZYW9takhOWURsdGlLZDF4Rld5UEJGb3BWaG5uY1dBNTdEaUhiZ1JTV0E2N0FTaVg4VGpRWFJwMjNJNkc2V0RlMFl5dXdsektQK0gxZktyb2FiaFZPYXAwdklkYlFYQ3BvMHpsT2lPQnRSVE0wMXJCRkVlNDdGM3B3YWRoajlNYThMaTBiTUFVaHNianV3Wit1d3pXdEIwZUJwYkRhK0hLZWVuRWN2NjBZejEvaWl1SE41S25YS2FLcjVRQVNyY1JsK2J6c0NzczVWdUZIZWN3elZmR2VSb1FSL3F1ZHQ5T0E1UzIwQ0hsTm5rY21JYnB1TlZ3cExrcmwzRTgwTk5TWEJwZUx6M05XNFZYbDhCNml0WXEzWEVPb2U3aGpjQnlIdWZPOFI3ZjFmRGJmWUNXMjVmR054S21jOU44YVdldmhrL3pWT0h0bFVBcjVVeHhhUmpPUE80d3hhV2NrMDUvcC9uUzlGMGIvazRaeE41NWE3VzNuTGFWTXJ0MklPeHl4dGRTek5YUzFzTDdXRmd0enk0WFY4RytON1RBZkdlRkxyZjlsMXYrTzB2YW5XdnQ1U3JxNVpidlhNczZUTGthd0JzVGNDV25qY2xwcCtYNmpsWHNuZFlSRlQrVkJDb0pWQktvSkZCSm9KSkFKWUZLQXBVRUtnbFVFcWdrVUVtZ2trQWxnVW9DbFFRcUNWUVNxQ1JRU2FDU1FDV0JTZ0tWQkNvSlZCS29KRkJKb0pKQUpZRktBcFVFS2dsVUVxZ2tVRW1na2tBbGdVb0NsUVFxQ1ZRU3FDUlFTYUNTUUNXQlNnS1ZCQ29KVkJLb0pGQkpvSkpBSllGS0FwVUVLZ2xVRXFna1VFbWdrc0RHSmZEL0FiUEhaeUY3ZWlnRkFBQUFBRWxGVGtTdVFtQ0MiPgo8c3R5bGU+KiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94fWh0bWwsYm9keXttYXJnaW46MDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59PC9zdHlsZT4KPC9oZWFkPjxib2R5Pgo8ZGl2IGlkPSJyb290Ij48L2Rpdj4KPCEtLV9fU0lNX1BSRVZJRVdfQ09ORklHX18tLT4KPHNjcmlwdCB0eXBlPSJtb2R1bGUiPnZhciB5MixSLEMzLFM4LGYxLG41LFozLEozLFE1LEUyLEYyLFgzLEs1LCQ1LFk1LHEzLFMyPXt9LGIyPVtdLGI4PS9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2ksRDI9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBSMShDLFope2Zvcih2YXIgSiBpbiBaKUNbSl09WltKXTtyZXR1cm4gQ31mdW5jdGlvbiBMNShDKXtDJiZDLnBhcmVudE5vZGUmJkMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChDKX1mdW5jdGlvbiB3MShDLFosSil7dmFyIFgsRyxRLCQ9e307Zm9yKFEgaW4gWilRPT0ia2V5Ij9YPVpbUV06UT09InJlZiI/Rz1aW1FdOiRbUV09WltRXTtpZihhcmd1bWVudHMubGVuZ3RoPjImJigkLmNoaWxkcmVuPWFyZ3VtZW50cy5sZW5ndGg+Mz95Mi5jYWxsKGFyZ3VtZW50cywyKTpKKSx0eXBlb2YgQz09ImZ1bmN0aW9uIiYmQy5kZWZhdWx0UHJvcHMhPW51bGwpZm9yKFEgaW4gQy5kZWZhdWx0UHJvcHMpJFtRXT09PXZvaWQgMCYmKCRbUV09Qy5kZWZhdWx0UHJvcHNbUV0pO3JldHVybiB3MihDLCQsWCxHLG51bGwpfWZ1bmN0aW9uIHcyKEMsWixKLFgsRyl7dmFyIFE9e3R5cGU6Qyxwcm9wczpaLGtleTpKLHJlZjpYLF9fazpudWxsLF9fOm51bGwsX19iOjAsX19lOm51bGwsX19jOm51bGwsY29uc3RydWN0b3I6dm9pZCAwLF9fdjpHPT1udWxsPysrQzM6RyxfX2k6LTEsX191OjB9O3JldHVybiBHPT1udWxsJiZSLnZub2RlIT1udWxsJiZSLnZub2RlKFEpLFF9ZnVuY3Rpb24gSjEoQyl7cmV0dXJuIEMuY2hpbGRyZW59ZnVuY3Rpb24gSzEoQyxaKXt0aGlzLnByb3BzPUMsdGhpcy5jb250ZXh0PVp9ZnVuY3Rpb24gcTIoQyxaKXtpZihaPT1udWxsKXJldHVybiBDLl9fP3EyKEMuX18sQy5fX2krMSk6bnVsbDtmb3IodmFyIEo7WjxDLl9fay5sZW5ndGg7WisrKWlmKChKPUMuX19rW1pdKSE9bnVsbCYmSi5fX2UhPW51bGwpcmV0dXJuIEouX19lO3JldHVybiB0eXBlb2YgQy50eXBlPT0iZnVuY3Rpb24iP3EyKEMpOm51bGx9ZnVuY3Rpb24gUjgoQyl7aWYoQy5fX1AmJkMuX19kKXt2YXIgWj1DLl9fdixKPVouX19lLFg9W10sRz1bXSxRPVIxKHt9LFopO1EuX192PVouX192KzEsUi52bm9kZSYmUi52bm9kZShRKSxCNShDLl9fUCxRLFosQy5fX24sQy5fX1AubmFtZXNwYWNlVVJJLDMyJlouX191P1tKXTpudWxsLFgsSj09bnVsbD9xMihaKTpKLCEhKDMyJlouX191KSxHKSxRLl9fdj1aLl9fdixRLl9fLl9fa1tRLl9faV09USxZMyhYLFEsRyksWi5fX2U9Wi5fXz1udWxsLFEuX19lIT1KJiZHMyhRKX19ZnVuY3Rpb24gRzMoQyl7aWYoKEM9Qy5fXykhPW51bGwmJkMuX19jIT1udWxsKXJldHVybiBDLl9fZT1DLl9fYy5iYXNlPW51bGwsQy5fX2suc29tZShmdW5jdGlvbihaKXtpZihaIT1udWxsJiZaLl9fZSE9bnVsbClyZXR1cm4gQy5fX2U9Qy5fX2MuYmFzZT1aLl9fZX0pLEczKEMpfWZ1bmN0aW9uIFY1KEMpeyghQy5fX2QmJihDLl9fZD0hMCkmJmYxLnB1c2goQykmJiFSMi5fX3IrK3x8bjUhPVIuZGVib3VuY2VSZW5kZXJpbmcpJiYoKG41PVIuZGVib3VuY2VSZW5kZXJpbmcpfHxaMykoUjIpfWZ1bmN0aW9uIFIyKCl7dHJ5e2Zvcih2YXIgQyxaPTE7ZjEubGVuZ3RoOylmMS5sZW5ndGg+WiYmZjEuc29ydChKMyksQz1mMS5zaGlmdCgpLFo9ZjEubGVuZ3RoLFI4KEMpfWZpbmFsbHl7ZjEubGVuZ3RoPVIyLl9fcj0wfX1mdW5jdGlvbiBRMyhDLFosSixYLEcsUSwkLFksXyxWLEIpe3ZhciBLLEgsRixNLEwsRCxPLFA9WCYmWC5fX2t8fGIyLEU9Wi5sZW5ndGg7Zm9yKF89eTgoSixaLFAsXyxFKSxLPTA7SzxFO0srKykoRj1KLl9fa1tLXSkhPW51bGwmJihIPUYuX19pIT0tMSYmUFtGLl9faV18fFMyLEYuX19pPUssRD1CNShDLEYsSCxHLFEsJCxZLF8sVixCKSxNPUYuX19lLEYucmVmJiZILnJlZiE9Ri5yZWYmJihILnJlZiYmSDUoSC5yZWYsbnVsbCxGKSxCLnB1c2goRi5yZWYsRi5fX2N8fE0sRikpLEw9PW51bGwmJk0hPW51bGwmJihMPU0pLChPPSEhKDQmRi5fX3UpKXx8SC5fX2s9PT1GLl9faz8oXz0kMyhGLF8sQyxPKSxPJiZILl9fZSYmKEguX19lPW51bGwpKTp0eXBlb2YgRi50eXBlPT0iZnVuY3Rpb24iJiZEIT09dm9pZCAwP189RDpNJiYoXz1NLm5leHRTaWJsaW5nKSxGLl9fdSY9LTcpO3JldHVybiBKLl9fZT1MLF99ZnVuY3Rpb24geTgoQyxaLEosWCxHKXt2YXIgUSwkLFksXyxWLEI9Si5sZW5ndGgsSz1CLEg9MDtmb3IoQy5fX2s9QXJyYXkoRyksUT0wO1E8RztRKyspKCQ9WltRXSkhPW51bGwmJnR5cGVvZiAkIT0iYm9vbGVhbiImJnR5cGVvZiAkIT0iZnVuY3Rpb24iPyh0eXBlb2YgJD09InN0cmluZyJ8fHR5cGVvZiAkPT0ibnVtYmVyInx8dHlwZW9mICQ9PSJiaWdpbnQifHwkLmNvbnN0cnVjdG9yPT1TdHJpbmc/JD1DLl9fa1tRXT13MihudWxsLCQsbnVsbCxudWxsLG51bGwpOkQyKCQpPyQ9Qy5fX2tbUV09dzIoSjEse2NoaWxkcmVuOiR9LG51bGwsbnVsbCxudWxsKTokLmNvbnN0cnVjdG9yPT09dm9pZCAwJiYkLl9fYj4wPyQ9Qy5fX2tbUV09dzIoJC50eXBlLCQucHJvcHMsJC5rZXksJC5yZWY/JC5yZWY6bnVsbCwkLl9fdik6Qy5fX2tbUV09JCxfPVErSCwkLl9fPUMsJC5fX2I9Qy5fX2IrMSxZPW51bGwsKFY9JC5fX2k9ajgoJCxKLF8sSykpIT0tMSYmKEstLSwoWT1KW1ZdKSYmKFkuX191fD0yKSksWT09bnVsbHx8WS5fX3Y9PW51bGw/KFY9PS0xJiYoRz5CP0gtLTpHPEImJkgrKyksdHlwZW9mICQudHlwZSE9ImZ1bmN0aW9uIiYmKCQuX191fD00KSk6ViE9XyYmKFY9PV8tMT9ILS06Vj09XysxP0grKzooVj5fP0gtLTpIKyssJC5fX3V8PTQpKSk6Qy5fX2tbUV09bnVsbDtpZihLKWZvcihRPTA7UTxCO1ErKykoWT1KW1FdKSE9bnVsbCYmKDImWS5fX3UpPT0wJiYoWS5fX2U9PVgmJihYPXEyKFkpKSxfMyhZLFkpKTtyZXR1cm4gWH1mdW5jdGlvbiAkMyhDLFosSixYKXt2YXIgRyxRO2lmKHR5cGVvZiBDLnR5cGU9PSJmdW5jdGlvbiIpe2ZvcihHPUMuX19rLFE9MDtHJiZRPEcubGVuZ3RoO1ErKylHW1FdJiYoR1tRXS5fXz1DLFo9JDMoR1tRXSxaLEosWCkpO3JldHVybiBafUMuX19lIT1aJiYoWCYmKFomJkMudHlwZSYmIVoucGFyZW50Tm9kZSYmKFo9cTIoQykpLEouaW5zZXJ0QmVmb3JlKEMuX19lLFp8fG51bGwpKSxaPUMuX19lKTtkbyBaPVomJloubmV4dFNpYmxpbmc7d2hpbGUoWiE9bnVsbCYmWi5ub2RlVHlwZT09OCk7cmV0dXJuIFp9ZnVuY3Rpb24geTEoQyxaKXtyZXR1cm4gWj1afHxbXSxDPT1udWxsfHx0eXBlb2YgQz09ImJvb2xlYW4ifHwoRDIoQyk/Qy5zb21lKGZ1bmN0aW9uKEope3kxKEosWil9KTpaLnB1c2goQykpLFp9ZnVuY3Rpb24gajgoQyxaLEosWCl7dmFyIEcsUSwkLFk9Qy5rZXksXz1DLnR5cGUsVj1aW0pdLEI9ViE9bnVsbCYmKDImVi5fX3UpPT0wO2lmKFY9PT1udWxsJiZZPT1udWxsfHxCJiZZPT1WLmtleSYmXz09Vi50eXBlKXJldHVybiBKO2lmKFg+KEI/MTowKSl7Zm9yKEc9Si0xLFE9SisxO0c+PTB8fFE8Wi5sZW5ndGg7KWlmKChWPVpbJD1HPj0wP0ctLTpRKytdKSE9bnVsbCYmKDImVi5fX3UpPT0wJiZZPT1WLmtleSYmXz09Vi50eXBlKXJldHVybiAkfXJldHVybi0xfWZ1bmN0aW9uIHQ1KEMsWixKKXtaWzBdPT0iLSI/Qy5zZXRQcm9wZXJ0eShaLEo9PW51bGw/IiI6Sik6Q1taXT1KPT1udWxsPyIiOnR5cGVvZiBKIT0ibnVtYmVyInx8YjgudGVzdChaKT9KOkorInB4In1mdW5jdGlvbiBUMihDLFosSixYLEcpe3ZhciBRLCQ7QzppZihaPT0ic3R5bGUiKWlmKHR5cGVvZiBKPT0ic3RyaW5nIilDLnN0eWxlLmNzc1RleHQ9SjtlbHNle2lmKHR5cGVvZiBYPT0ic3RyaW5nIiYmKEMuc3R5bGUuY3NzVGV4dD1YPSIiKSxYKWZvcihaIGluIFgpSiYmWiBpbiBKfHx0NShDLnN0eWxlLFosIiIpO2lmKEopZm9yKFogaW4gSilYJiZKW1pdPT1YW1pdfHx0NShDLnN0eWxlLFosSltaXSl9ZWxzZSBpZihaWzBdPT0ibyImJlpbMV09PSJuIilRPVohPShaPVoucmVwbGFjZShYMywiJDEiKSksJD1aLnRvTG93ZXJDYXNlKCksWj0kIGluIEN8fFo9PSJvbkZvY3VzT3V0Inx8Wj09Im9uRm9jdXNJbiI/JC5zbGljZSgyKTpaLnNsaWNlKDIpLEMubHx8KEMubD17fSksQy5sW1orUV09SixKP1g/SltGMl09WFtGMl06KEpbRjJdPUs1LEMuYWRkRXZlbnRMaXN0ZW5lcihaLFE/WTU6JDUsUSkpOkMucmVtb3ZlRXZlbnRMaXN0ZW5lcihaLFE/WTU6JDUsUSk7ZWxzZXtpZihHPT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKVo9Wi5yZXBsYWNlKC94bGluayhIfDpoKS8sImgiKS5yZXBsYWNlKC9zTmFtZSQvLCJzIik7ZWxzZSBpZihaIT0id2lkdGgiJiZaIT0iaGVpZ2h0IiYmWiE9ImhyZWYiJiZaIT0ibGlzdCImJlohPSJmb3JtIiYmWiE9InRhYkluZGV4IiYmWiE9ImRvd25sb2FkIiYmWiE9InJvd1NwYW4iJiZaIT0iY29sU3BhbiImJlohPSJyb2xlIiYmWiE9InBvcG92ZXIiJiZaIGluIEMpdHJ5e0NbWl09Sj09bnVsbD8iIjpKO2JyZWFrIEN9Y2F0Y2goWSl7fXR5cGVvZiBKPT0iZnVuY3Rpb24ifHwoSj09bnVsbHx8Sj09PSExJiZaWzRdIT0iLSI/Qy5yZW1vdmVBdHRyaWJ1dGUoWik6Qy5zZXRBdHRyaWJ1dGUoWixaPT0icG9wb3ZlciImJko9PTE/IiI6SikpfX1mdW5jdGlvbiBlNShDKXtyZXR1cm4gZnVuY3Rpb24oWil7aWYodGhpcy5sKXt2YXIgSj10aGlzLmxbWi50eXBlK0NdO2lmKFpbRTJdPT1udWxsKVpbRTJdPUs1Kys7ZWxzZSBpZihaW0UyXTxKW0YyXSlyZXR1cm47cmV0dXJuIEooUi5ldmVudD9SLmV2ZW50KFopOlopfX19ZnVuY3Rpb24gQjUoQyxaLEosWCxHLFEsJCxZLF8sVil7dmFyIEIsSyxILEYsTSxMLEQsTyxQLEUsdyxmLGssVCxTLHg9Wi50eXBlO2lmKFouY29uc3RydWN0b3IhPT12b2lkIDApcmV0dXJuIG51bGw7MTI4JkouX191JiYoXz0hISgzMiZKLl9fdSksUT1bWT1aLl9fZT1KLl9fZV0pLChCPVIuX19iKSYmQihaKTtDOmlmKHR5cGVvZiB4PT0iZnVuY3Rpb24iKXRyeXtpZihPPVoucHJvcHMsUD14LnByb3RvdHlwZSYmeC5wcm90b3R5cGUucmVuZGVyLEU9KEI9eC5jb250ZXh0VHlwZSkmJlhbQi5fX2NdLHc9Qj9FP0UucHJvcHMudmFsdWU6Qi5fXzpYLEouX19jP0Q9KEs9Wi5fX2M9Si5fX2MpLl9fPUsuX19FOihQP1ouX19jPUs9bmV3IHgoTyx3KTooWi5fX2M9Sz1uZXcgSzEoTyx3KSxLLmNvbnN0cnVjdG9yPXgsSy5yZW5kZXI9djgpLEUmJkUuc3ViKEspLEsuc3RhdGV8fChLLnN0YXRlPXt9KSxLLl9fbj1YLEg9Sy5fX2Q9ITAsSy5fX2g9W10sSy5fc2I9W10pLFAmJksuX19zPT1udWxsJiYoSy5fX3M9Sy5zdGF0ZSksUCYmeC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMhPW51bGwmJihLLl9fcz09Sy5zdGF0ZSYmKEsuX19zPVIxKHt9LEsuX19zKSksUjEoSy5fX3MseC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoTyxLLl9fcykpKSxGPUsucHJvcHMsTT1LLnN0YXRlLEsuX192PVosSClQJiZ4LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz09bnVsbCYmSy5jb21wb25lbnRXaWxsTW91bnQhPW51bGwmJksuY29tcG9uZW50V2lsbE1vdW50KCksUCYmSy5jb21wb25lbnREaWRNb3VudCE9bnVsbCYmSy5fX2gucHVzaChLLmNvbXBvbmVudERpZE1vdW50KTtlbHNle2lmKFAmJnguZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPT1udWxsJiZPIT09RiYmSy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT1udWxsJiZLLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoTyx3KSxaLl9fdj09Si5fX3Z8fCFLLl9fZSYmSy5zaG91bGRDb21wb25lbnRVcGRhdGUhPW51bGwmJksuc2hvdWxkQ29tcG9uZW50VXBkYXRlKE8sSy5fX3Msdyk9PT0hMSl7Wi5fX3YhPUouX192JiYoSy5wcm9wcz1PLEsuc3RhdGU9Sy5fX3MsSy5fX2Q9ITEpLFouX19lPUouX19lLFouX19rPUouX19rLFouX19rLnNvbWUoZnVuY3Rpb24ocyl7cyYmKHMuX189Wil9KSxiMi5wdXNoLmFwcGx5KEsuX19oLEsuX3NiKSxLLl9zYj1bXSxLLl9faC5sZW5ndGgmJiQucHVzaChLKTticmVhayBDfUsuY29tcG9uZW50V2lsbFVwZGF0ZSE9bnVsbCYmSy5jb21wb25lbnRXaWxsVXBkYXRlKE8sSy5fX3MsdyksUCYmSy5jb21wb25lbnREaWRVcGRhdGUhPW51bGwmJksuX19oLnB1c2goZnVuY3Rpb24oKXtLLmNvbXBvbmVudERpZFVwZGF0ZShGLE0sTCl9KX1pZihLLmNvbnRleHQ9dyxLLnByb3BzPU8sSy5fX1A9QyxLLl9fZT0hMSxmPVIuX19yLGs9MCxQKUsuc3RhdGU9Sy5fX3MsSy5fX2Q9ITEsZiYmZihaKSxCPUsucmVuZGVyKEsucHJvcHMsSy5zdGF0ZSxLLmNvbnRleHQpLGIyLnB1c2guYXBwbHkoSy5fX2gsSy5fc2IpLEsuX3NiPVtdO2Vsc2UgZG8gSy5fX2Q9ITEsZiYmZihaKSxCPUsucmVuZGVyKEsucHJvcHMsSy5zdGF0ZSxLLmNvbnRleHQpLEsuc3RhdGU9Sy5fX3M7d2hpbGUoSy5fX2QmJisrazwyNSk7Sy5zdGF0ZT1LLl9fcyxLLmdldENoaWxkQ29udGV4dCE9bnVsbCYmKFg9UjEoUjEoe30sWCksSy5nZXRDaGlsZENvbnRleHQoKSkpLFAmJiFIJiZLLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlIT1udWxsJiYoTD1LLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKEYsTSkpLFQ9QiE9bnVsbCYmQi50eXBlPT09SjEmJkIua2V5PT1udWxsP1YzKEIucHJvcHMuY2hpbGRyZW4pOkIsWT1RMyhDLEQyKFQpP1Q6W1RdLFosSixYLEcsUSwkLFksXyxWKSxLLmJhc2U9Wi5fX2UsWi5fX3UmPS0xNjEsSy5fX2gubGVuZ3RoJiYkLnB1c2goSyksRCYmKEsuX19FPUsuX189bnVsbCl9Y2F0Y2gocyl7aWYoWi5fX3Y9bnVsbCxffHxRIT1udWxsKWlmKHMudGhlbil7Zm9yKFouX191fD1fPzE2MDoxMjg7WSYmWS5ub2RlVHlwZT09OCYmWS5uZXh0U2libGluZzspWT1ZLm5leHRTaWJsaW5nO1FbUS5pbmRleE9mKFkpXT1udWxsLFouX19lPVl9ZWxzZXtmb3IoUz1RLmxlbmd0aDtTLS07KUw1KFFbU10pO181KFopfWVsc2UgWi5fX2U9Si5fX2UsWi5fX2s9Si5fX2sscy50aGVufHxfNShaKTtSLl9fZShzLFosSil9ZWxzZSBRPT1udWxsJiZaLl9fdj09Si5fX3Y/KFouX19rPUouX19rLFouX19lPUouX19lKTpZPVouX19lPWg4KEouX19lLFosSixYLEcsUSwkLF8sVik7cmV0dXJuKEI9Ui5kaWZmZWQpJiZCKFopLDEyOCZaLl9fdT92b2lkIDA6WX1mdW5jdGlvbiBfNShDKXtDJiYoQy5fX2MmJihDLl9fYy5fX2U9ITApLEMuX19rJiZDLl9fay5zb21lKF81KSl9ZnVuY3Rpb24gWTMoQyxaLEope2Zvcih2YXIgWD0wO1g8Si5sZW5ndGg7WCsrKUg1KEpbWF0sSlsrK1hdLEpbKytYXSk7Ui5fX2MmJlIuX19jKFosQyksQy5zb21lKGZ1bmN0aW9uKEcpe3RyeXtDPUcuX19oLEcuX19oPVtdLEMuc29tZShmdW5jdGlvbihRKXtRLmNhbGwoRyl9KX1jYXRjaChRKXtSLl9fZShRLEcuX192KX19KX1mdW5jdGlvbiBWMyhDKXtyZXR1cm4gdHlwZW9mIEMhPSJvYmplY3QifHxDPT1udWxsfHxDLl9fYj4wP0M6RDIoQyk/Qy5tYXAoVjMpOlIxKHt9LEMpfWZ1bmN0aW9uIGg4KEMsWixKLFgsRyxRLCQsWSxfKXt2YXIgVixCLEssSCxGLE0sTCxEPUoucHJvcHN8fFMyLE89Wi5wcm9wcyxQPVoudHlwZTtpZihQPT0ic3ZnIj9HPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI6UD09Im1hdGgiP0c9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiOkd8fChHPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiksUSE9bnVsbCl7Zm9yKFY9MDtWPFEubGVuZ3RoO1YrKylpZigoRj1RW1ZdKSYmInNldEF0dHJpYnV0ZSJpbiBGPT0hIVAmJihQP0YubG9jYWxOYW1lPT1QOkYubm9kZVR5cGU9PTMpKXtDPUYsUVtWXT1udWxsO2JyZWFrfX1pZihDPT1udWxsKXtpZihQPT1udWxsKXJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShPKTtDPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhHLFAsTy5pcyYmTyksWSYmKFIuX19tJiZSLl9fbShaLFEpLFk9ITEpLFE9bnVsbH1pZihQPT1udWxsKUQ9PT1PfHxZJiZDLmRhdGE9PU98fChDLmRhdGE9Tyk7ZWxzZXtpZihRPVEmJnkyLmNhbGwoQy5jaGlsZE5vZGVzKSwhWSYmUSE9bnVsbClmb3IoRD17fSxWPTA7VjxDLmF0dHJpYnV0ZXMubGVuZ3RoO1YrKylEWyhGPUMuYXR0cmlidXRlc1tWXSkubmFtZV09Ri52YWx1ZTtmb3IoViBpbiBEKUY9RFtWXSxWPT0iZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiP0s9RjpWPT0iY2hpbGRyZW4ifHwoViBpbiBPKXx8Vj09InZhbHVlIiYmKCJkZWZhdWx0VmFsdWUiaW4gTyl8fFY9PSJjaGVja2VkIiYmKCJkZWZhdWx0Q2hlY2tlZCJpbiBPKXx8VDIoQyxWLG51bGwsRixHKTtmb3IoViBpbiBPKUY9T1tWXSxWPT0iY2hpbGRyZW4iP0g9RjpWPT0iZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiP0I9RjpWPT0idmFsdWUiP009RjpWPT0iY2hlY2tlZCI/TD1GOlkmJnR5cGVvZiBGIT0iZnVuY3Rpb24ifHxEW1ZdPT09Rnx8VDIoQyxWLEYsRFtWXSxHKTtpZihCKVl8fEsmJihCLl9faHRtbD09Sy5fX2h0bWx8fEIuX19odG1sPT1DLmlubmVySFRNTCl8fChDLmlubmVySFRNTD1CLl9faHRtbCksWi5fX2s9W107ZWxzZSBpZihLJiYoQy5pbm5lckhUTUw9IiIpLFEzKFoudHlwZT09InRlbXBsYXRlIj9DLmNvbnRlbnQ6QyxEMihIKT9IOltIXSxaLEosWCxQPT0iZm9yZWlnbk9iamVjdCI/Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiOkcsUSwkLFE/UVswXTpKLl9fayYmcTIoSiwwKSxZLF8pLFEhPW51bGwpZm9yKFY9US5sZW5ndGg7Vi0tOylMNShRW1ZdKTtZfHwoVj0idmFsdWUiLFA9PSJwcm9ncmVzcyImJk09PW51bGw/Qy5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik6TSE9bnVsbCYmKE0hPT1DW1ZdfHxQPT0icHJvZ3Jlc3MiJiYhTXx8UD09Im9wdGlvbiImJk0hPURbVl0pJiZUMihDLFYsTSxEW1ZdLEcpLFY9ImNoZWNrZWQiLEwhPW51bGwmJkwhPUNbVl0mJlQyKEMsVixMLERbVl0sRykpfXJldHVybiBDfWZ1bmN0aW9uIEg1KEMsWixKKXt0cnl7aWYodHlwZW9mIEM9PSJmdW5jdGlvbiIpe3ZhciBYPXR5cGVvZiBDLl9fdT09ImZ1bmN0aW9uIjtYJiZDLl9fdSgpLFgmJlo9PW51bGx8fChDLl9fdT1DKFopKX1lbHNlIEMuY3VycmVudD1afWNhdGNoKEcpe1IuX19lKEcsSil9fWZ1bmN0aW9uIF8zKEMsWixKKXt2YXIgWCxHO2lmKFIudW5tb3VudCYmUi51bm1vdW50KEMpLChYPUMucmVmKSYmKFguY3VycmVudCYmWC5jdXJyZW50IT1DLl9fZXx8SDUoWCxudWxsLFopKSwoWD1DLl9fYykhPW51bGwpe2lmKFguY29tcG9uZW50V2lsbFVubW91bnQpdHJ5e1guY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChRKXtSLl9fZShRLFopfVguYmFzZT1YLl9fUD1udWxsfWlmKFg9Qy5fX2spZm9yKEc9MDtHPFgubGVuZ3RoO0crKylYW0ddJiZfMyhYW0ddLFosSnx8dHlwZW9mIEMudHlwZSE9ImZ1bmN0aW9uIik7Snx8TDUoQy5fX2UpLEMuX19jPUMuX189Qy5fX2U9dm9pZCAwfWZ1bmN0aW9uIHY4KEMsWixKKXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3RvcihDLEopfWZ1bmN0aW9uIGoyKEMsWixKKXt2YXIgWCxHLFEsJDtaPT1kb2N1bWVudCYmKFo9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSxSLl9fJiZSLl9fKEMsWiksRz0oWD10eXBlb2YgSj09ImZ1bmN0aW9uIik/bnVsbDpKJiZKLl9fa3x8Wi5fX2ssUT1bXSwkPVtdLEI1KFosQz0oIVgmJkp8fFopLl9faz13MShKMSxudWxsLFtDXSksR3x8UzIsUzIsWi5uYW1lc3BhY2VVUkksIVgmJko/W0pdOkc/bnVsbDpaLmZpcnN0Q2hpbGQ/eTIuY2FsbChaLmNoaWxkTm9kZXMpOm51bGwsUSwhWCYmSj9KOkc/Ry5fX2U6Wi5maXJzdENoaWxkLFgsJCksWTMoUSxDLCQpfWZ1bmN0aW9uIGoxKEMpe2Z1bmN0aW9uIFooSil7dmFyIFgsRztyZXR1cm4gdGhpcy5nZXRDaGlsZENvbnRleHR8fChYPW5ldyBTZXQsKEc9e30pW1ouX19jXT10aGlzLHRoaXMuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIEd9LHRoaXMuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXtYPW51bGx9LHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKFEpe3RoaXMucHJvcHMudmFsdWUhPVEudmFsdWUmJlguZm9yRWFjaChmdW5jdGlvbigkKXskLl9fZT0hMCxWNSgkKX0pfSx0aGlzLnN1Yj1mdW5jdGlvbihRKXtYLmFkZChRKTt2YXIgJD1RLmNvbXBvbmVudFdpbGxVbm1vdW50O1EuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXtYJiZYLmRlbGV0ZShRKSwkJiYkLmNhbGwoUSl9fSksSi5jaGlsZHJlbn1yZXR1cm4gWi5fX2M9Il9fY0MiK3EzKyssWi5fXz1DLFouUHJvdmlkZXI9Wi5fX2w9KFouQ29uc3VtZXI9ZnVuY3Rpb24oSixYKXtyZXR1cm4gSi5jaGlsZHJlbihYKX0pLmNvbnRleHRUeXBlPVosWn15Mj1iMi5zbGljZSxSPXtfX2U6ZnVuY3Rpb24oQyxaLEosWCl7Zm9yKHZhciBHLFEsJDtaPVouX187KWlmKChHPVouX19jKSYmIUcuX18pdHJ5e2lmKChRPUcuY29uc3RydWN0b3IpJiZRLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciE9bnVsbCYmKEcuc2V0U3RhdGUoUS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoQykpLCQ9Ry5fX2QpLEcuY29tcG9uZW50RGlkQ2F0Y2ghPW51bGwmJihHLmNvbXBvbmVudERpZENhdGNoKEMsWHx8e30pLCQ9Ry5fX2QpLCQpcmV0dXJuIEcuX19FPUd9Y2F0Y2goWSl7Qz1ZfXRocm93IEN9fSxDMz0wLFM4PWZ1bmN0aW9uKEMpe3JldHVybiBDIT1udWxsJiZDLmNvbnN0cnVjdG9yPT09dm9pZCAwfSxLMS5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oQyxaKXt2YXIgSjtKPXRoaXMuX19zIT1udWxsJiZ0aGlzLl9fcyE9dGhpcy5zdGF0ZT90aGlzLl9fczp0aGlzLl9fcz1SMSh7fSx0aGlzLnN0YXRlKSx0eXBlb2YgQz09ImZ1bmN0aW9uIiYmKEM9QyhSMSh7fSxKKSx0aGlzLnByb3BzKSksQyYmUjEoSixDKSxDIT1udWxsJiZ0aGlzLl9fdiYmKFomJnRoaXMuX3NiLnB1c2goWiksVjUodGhpcykpfSxLMS5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oQyl7dGhpcy5fX3YmJih0aGlzLl9fZT0hMCxDJiZ0aGlzLl9faC5wdXNoKEMpLFY1KHRoaXMpKX0sSzEucHJvdG90eXBlLnJlbmRlcj1KMSxmMT1bXSxaMz10eXBlb2YgUHJvbWlzZT09ImZ1bmN0aW9uIj9Qcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpOnNldFRpbWVvdXQsSjM9ZnVuY3Rpb24oQyxaKXtyZXR1cm4gQy5fX3YuX19iLVouX192Ll9fYn0sUjIuX19yPTAsUTU9TWF0aC5yYW5kb20oKS50b1N0cmluZyg4KSxFMj0iX19kIitRNSxGMj0iX19hIitRNSxYMz0vKFBvaW50ZXJDYXB0dXJlKSR8Q2FwdHVyZSQvaSxLNT0wLCQ1PWU1KCExKSxZNT1lNSghMCkscTM9MDt2YXIgRzIsWDEsTjUsSzMsVTI9MCxPMz1bXSxWMT1SLEwzPVYxLl9fYixCMz1WMS5fX3IsSDM9VjEuZGlmZmVkLE4zPVYxLl9fYyxGMz1WMS51bm1vdW50LEQzPVYxLl9fO2Z1bmN0aW9uIHYyKEMsWil7VjEuX19oJiZWMS5fX2goWDEsQyxVMnx8WiksVTI9MDt2YXIgSj1YMS5fX0h8fChYMS5fX0g9e19fOltdLF9faDpbXX0pO3JldHVybiBDPj1KLl9fLmxlbmd0aCYmSi5fXy5wdXNoKHt9KSxKLl9fW0NdfWZ1bmN0aW9uIEkoQyl7cmV0dXJuIFUyPTEsRDUoTTMsQyl9ZnVuY3Rpb24gRDUoQyxaLEope3ZhciBYPXYyKEcyKyssMik7aWYoWC50PUMsIVguX19jJiYoWC5fXz1bSj9KKFopOk0zKHZvaWQgMCxaKSxmdW5jdGlvbihZKXt2YXIgXz1YLl9fTj9YLl9fTlswXTpYLl9fWzBdLFY9WC50KF8sWSk7XyE9PVYmJihYLl9fTj1bVixYLl9fWzFdXSxYLl9fYy5zZXRTdGF0ZSh7fSkpfV0sWC5fX2M9WDEsIVgxLl9fZikpe3ZhciBHPWZ1bmN0aW9uKFksXyxWKXtpZighWC5fX2MuX19IKXJldHVybiEwO3ZhciBCPVguX19jLl9fSC5fXy5maWx0ZXIoZnVuY3Rpb24oSCl7cmV0dXJuIEguX19jfSk7aWYoQi5ldmVyeShmdW5jdGlvbihIKXtyZXR1cm4hSC5fX059KSlyZXR1cm4hUXx8US5jYWxsKHRoaXMsWSxfLFYpO3ZhciBLPVguX19jLnByb3BzIT09WTtyZXR1cm4gQi5zb21lKGZ1bmN0aW9uKEgpe2lmKEguX19OKXt2YXIgRj1ILl9fWzBdO0guX189SC5fX04sSC5fX049dm9pZCAwLEYhPT1ILl9fWzBdJiYoSz0hMCl9fSksUSYmUS5jYWxsKHRoaXMsWSxfLFYpfHxLfTtYMS5fX2Y9ITA7dmFye3Nob3VsZENvbXBvbmVudFVwZGF0ZTpRLGNvbXBvbmVudFdpbGxVcGRhdGU6JH09WDE7WDEuY29tcG9uZW50V2lsbFVwZGF0ZT1mdW5jdGlvbihZLF8sVil7aWYodGhpcy5fX2Upe3ZhciBCPVE7UT12b2lkIDAsRyhZLF8sViksUT1CfSQmJiQuY2FsbCh0aGlzLFksXyxWKX0sWDEuc2hvdWxkQ29tcG9uZW50VXBkYXRlPUd9cmV0dXJuIFguX19OfHxYLl9ffWZ1bmN0aW9uIHkoQyxaKXt2YXIgSj12MihHMisrLDMpOyFWMS5fX3MmJnozKEouX19ILFopJiYoSi5fXz1DLEoudT1aLFgxLl9fSC5fX2gucHVzaChKKSl9ZnVuY3Rpb24gaChDKXtyZXR1cm4gVTI9NSxFMShmdW5jdGlvbigpe3JldHVybntjdXJyZW50OkN9fSxbXSl9ZnVuY3Rpb24gRTEoQyxaKXt2YXIgSj12MihHMisrLDcpO3JldHVybiB6MyhKLl9fSCxaKSYmKEouX189QygpLEouX19IPVosSi5fX2g9QyksSi5fX31mdW5jdGlvbiBqKEMsWil7cmV0dXJuIFUyPTgsRTEoZnVuY3Rpb24oKXtyZXR1cm4gQ30sWil9ZnVuY3Rpb24gcDEoQyl7dmFyIFo9WDEuY29udGV4dFtDLl9fY10sSj12MihHMisrLDkpO3JldHVybiBKLmM9QyxaPyhKLl9fPT1udWxsJiYoSi5fXz0hMCxaLnN1YihYMSkpLFoucHJvcHMudmFsdWUpOkMuX199ZnVuY3Rpb24gbTgoKXtmb3IodmFyIEM7Qz1PMy5zaGlmdCgpOyl7dmFyIFo9Qy5fX0g7aWYoQy5fX1AmJlopdHJ5e1ouX19oLnNvbWUoaDIpLFouX19oLnNvbWUoRjUpLFouX19oPVtdfWNhdGNoKEope1ouX19oPVtdLFYxLl9fZShKLEMuX192KX19fVYxLl9fYj1mdW5jdGlvbihDKXtYMT1udWxsLEwzJiZMMyhDKX0sVjEuX189ZnVuY3Rpb24oQyxaKXtDJiZaLl9fayYmWi5fX2suX19tJiYoQy5fX209Wi5fX2suX19tKSxEMyYmRDMoQyxaKX0sVjEuX19yPWZ1bmN0aW9uKEMpe0IzJiZCMyhDKSxHMj0wO3ZhciBaPShYMT1DLl9fYykuX19IO1omJihONT09PVgxPyhaLl9faD1bXSxYMS5fX2g9W10sWi5fXy5zb21lKGZ1bmN0aW9uKEope0ouX19OJiYoSi5fXz1KLl9fTiksSi51PUouX19OPXZvaWQgMH0pKTooWi5fX2guc29tZShoMiksWi5fX2guc29tZShGNSksWi5fX2g9W10sRzI9MCkpLE41PVgxfSxWMS5kaWZmZWQ9ZnVuY3Rpb24oQyl7SDMmJkgzKEMpO3ZhciBaPUMuX19jO1omJlouX19IJiYoWi5fX0guX19oLmxlbmd0aCYmKE8zLnB1c2goWikhPT0xJiZLMz09PVYxLnJlcXVlc3RBbmltYXRpb25GcmFtZXx8KChLMz1WMS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpfHxnOCkobTgpKSxaLl9fSC5fXy5zb21lKGZ1bmN0aW9uKEope0oudSYmKEouX19IPUoudSksSi51PXZvaWQgMH0pKSxONT1YMT1udWxsfSxWMS5fX2M9ZnVuY3Rpb24oQyxaKXtaLnNvbWUoZnVuY3Rpb24oSil7dHJ5e0ouX19oLnNvbWUoaDIpLEouX19oPUouX19oLmZpbHRlcihmdW5jdGlvbihYKXtyZXR1cm4hWC5fX3x8RjUoWCl9KX1jYXRjaChYKXtaLnNvbWUoZnVuY3Rpb24oRyl7Ry5fX2gmJihHLl9faD1bXSl9KSxaPVtdLFYxLl9fZShYLEouX192KX19KSxOMyYmTjMoQyxaKX0sVjEudW5tb3VudD1mdW5jdGlvbihDKXtGMyYmRjMoQyk7dmFyIFosSj1DLl9fYztKJiZKLl9fSCYmKEouX19ILl9fLnNvbWUoZnVuY3Rpb24oWCl7dHJ5e2gyKFgpfWNhdGNoKEcpe1o9R319KSxKLl9fSD12b2lkIDAsWiYmVjEuX19lKFosSi5fX3YpKX07dmFyIFUzPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU9PSJmdW5jdGlvbiI7ZnVuY3Rpb24gZzgoQyl7dmFyIFosSj1mdW5jdGlvbigpe2NsZWFyVGltZW91dChYKSxVMyYmY2FuY2VsQW5pbWF0aW9uRnJhbWUoWiksc2V0VGltZW91dChDKX0sWD1zZXRUaW1lb3V0KEosMzUpO1UzJiYoWj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoSikpfWZ1bmN0aW9uIGgyKEMpe3ZhciBaPVgxLEo9Qy5fX2M7dHlwZW9mIEo9PSJmdW5jdGlvbiImJihDLl9fYz12b2lkIDAsSigpKSxYMT1afWZ1bmN0aW9uIEY1KEMpe3ZhciBaPVgxO0MuX19jPUMuX18oKSxYMT1afWZ1bmN0aW9uIHozKEMsWil7cmV0dXJuIUN8fEMubGVuZ3RoIT09Wi5sZW5ndGh8fFouc29tZShmdW5jdGlvbihKLFgpe3JldHVybiBKIT09Q1tYXX0pfWZ1bmN0aW9uIE0zKEMsWil7cmV0dXJuIHR5cGVvZiBaPT0iZnVuY3Rpb24iP1ooQyk6Wn1mdW5jdGlvbiBkOChDLFope2Zvcih2YXIgSiBpbiBaKUNbSl09WltKXTtyZXR1cm4gQ31mdW5jdGlvbiBXMyhDLFope2Zvcih2YXIgSiBpbiBDKWlmKEohPT0iX19zb3VyY2UiJiYhKEogaW4gWikpcmV0dXJuITA7Zm9yKHZhciBYIGluIFopaWYoWCE9PSJfX3NvdXJjZSImJkNbWF0hPT1aW1hdKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFAzKEMsWil7dGhpcy5wcm9wcz1DLHRoaXMuY29udGV4dD1afShQMy5wcm90b3R5cGU9bmV3IEsxKS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMCxQMy5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKEMsWil7cmV0dXJuIFczKHRoaXMucHJvcHMsQyl8fFczKHRoaXMuc3RhdGUsWil9O3ZhciBrMz1SLl9fYjtSLl9fYj1mdW5jdGlvbihDKXtDLnR5cGUmJkMudHlwZS5fX2YmJkMucmVmJiYoQy5wcm9wcy5yZWY9Qy5yZWYsQy5yZWY9bnVsbCksazMmJmszKEMpfTt2YXIgYTg9Ui5fX2U7Ui5fX2U9ZnVuY3Rpb24oQyxaLEosWCl7aWYoQy50aGVuKXtmb3IodmFyIEcsUT1aO1E9US5fXzspaWYoKEc9US5fX2MpJiZHLl9fYylyZXR1cm4gWi5fX2U9PW51bGwmJihaLl9fZT1KLl9fZSxaLl9faz1KLl9fayksRy5fX2MoQyxaKX1hOChDLFosSixYKX07dmFyIEEzPVIudW5tb3VudDtmdW5jdGlvbiBiMyhDLFosSil7cmV0dXJuIEMmJihDLl9fYyYmQy5fX2MuX19IJiYoQy5fX2MuX19ILl9fLmZvckVhY2goZnVuY3Rpb24oWCl7dHlwZW9mIFguX19jPT0iZnVuY3Rpb24iJiZYLl9fYygpfSksQy5fX2MuX19IPW51bGwpLChDPWQ4KHt9LEMpKS5fX2MhPW51bGwmJihDLl9fYy5fX1A9PT1KJiYoQy5fX2MuX19QPVopLEMuX19jLl9fZT0hMCxDLl9fYz1udWxsKSxDLl9faz1DLl9fayYmQy5fX2subWFwKGZ1bmN0aW9uKFgpe3JldHVybiBiMyhYLFosSil9KSksQ31mdW5jdGlvbiBSMyhDLFosSil7cmV0dXJuIEMmJkomJihDLl9fdj1udWxsLEMuX19rPUMuX19rJiZDLl9fay5tYXAoZnVuY3Rpb24oWCl7cmV0dXJuIFIzKFgsWixKKX0pLEMuX19jJiZDLl9fYy5fX1A9PT1aJiYoQy5fX2UmJkouYXBwZW5kQ2hpbGQoQy5fX2UpLEMuX19jLl9fZT0hMCxDLl9fYy5fX1A9SikpLEN9ZnVuY3Rpb24gVTUoKXt0aGlzLl9fdT0wLHRoaXMubz1udWxsLHRoaXMuX19iPW51bGx9ZnVuY3Rpb24geTMoQyl7dmFyIFo9Qy5fXyYmQy5fXy5fX2M7cmV0dXJuIFomJlouX19hJiZaLl9fYShDKX1mdW5jdGlvbiBtMigpe3RoaXMuaT1udWxsLHRoaXMubD1udWxsfVIudW5tb3VudD1mdW5jdGlvbihDKXt2YXIgWj1DLl9fYztaJiYoWi5fX3o9ITApLFomJlouX19SJiZaLl9fUigpLFomJjMyJkMuX191JiYoQy50eXBlPW51bGwpLEEzJiZBMyhDKX0sKFU1LnByb3RvdHlwZT1uZXcgSzEpLl9fYz1mdW5jdGlvbihDLFope3ZhciBKPVouX19jLFg9dGhpcztYLm89PW51bGwmJihYLm89W10pLFguby5wdXNoKEopO3ZhciBHPXkzKFguX192KSxRPSExLCQ9ZnVuY3Rpb24oKXtRfHxYLl9fenx8KFE9ITAsSi5fX1I9bnVsbCxHP0coXyk6XygpKX07Si5fX1I9JDt2YXIgWT1KLl9fUDtKLl9fUD1udWxsO3ZhciBfPWZ1bmN0aW9uKCl7aWYoIS0tWC5fX3Upe2lmKFguc3RhdGUuX19hKXt2YXIgVj1YLnN0YXRlLl9fYTtYLl9fdi5fX2tbMF09UjMoVixWLl9fYy5fX1AsVi5fX2MuX19PKX12YXIgQjtmb3IoWC5zZXRTdGF0ZSh7X19hOlguX19iPW51bGx9KTtCPVguby5wb3AoKTspQi5fX1A9WSxCLmZvcmNlVXBkYXRlKCl9fTtYLl9fdSsrfHwzMiZaLl9fdXx8WC5zZXRTdGF0ZSh7X19hOlguX19iPVguX192Ll9fa1swXX0pLEMudGhlbigkLCQpfSxVNS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt0aGlzLm89W119LFU1LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oQyxaKXtpZih0aGlzLl9fYil7aWYodGhpcy5fX3YuX19rKXt2YXIgSj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxYPXRoaXMuX192Ll9fa1swXS5fX2M7dGhpcy5fX3YuX19rWzBdPWIzKHRoaXMuX19iLEosWC5fX089WC5fX1ApfXRoaXMuX19iPW51bGx9dmFyIEc9Wi5fX2EmJncxKEoxLG51bGwsQy5mYWxsYmFjayk7cmV0dXJuIEcmJihHLl9fdSY9LTMzKSxbdzEoSjEsbnVsbCxaLl9fYT9udWxsOkMuY2hpbGRyZW4pLEddfTt2YXIgSTM9ZnVuY3Rpb24oQyxaLEope2lmKCsrSlsxXT09PUpbMF0mJkMubC5kZWxldGUoWiksQy5wcm9wcy5yZXZlYWxPcmRlciYmKEMucHJvcHMucmV2ZWFsT3JkZXJbMF0hPT0idCJ8fCFDLmwuc2l6ZSkpZm9yKEo9Qy5pO0o7KXtmb3IoO0oubGVuZ3RoPjM7KUoucG9wKCkoKTtpZihKWzFdPEpbMF0pYnJlYWs7Qy5pPUo9SlsyXX19OyhtMi5wcm90b3R5cGU9bmV3IEsxKS5fX2E9ZnVuY3Rpb24oQyl7dmFyIFo9dGhpcyxKPXkzKFouX192KSxYPVoubC5nZXQoQyk7cmV0dXJuIFhbMF0rKyxmdW5jdGlvbihHKXt2YXIgUT1mdW5jdGlvbigpe1oucHJvcHMucmV2ZWFsT3JkZXI/KFgucHVzaChHKSxJMyhaLEMsWCkpOkcoKX07Sj9KKFEpOlEoKX19LG0yLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oQyl7dGhpcy5pPW51bGwsdGhpcy5sPW5ldyBNYXA7dmFyIFo9eTEoQy5jaGlsZHJlbik7Qy5yZXZlYWxPcmRlciYmQy5yZXZlYWxPcmRlclswXT09PSJiIiYmWi5yZXZlcnNlKCk7Zm9yKHZhciBKPVoubGVuZ3RoO0otLTspdGhpcy5sLnNldChaW0pdLHRoaXMuaT1bMSwwLHRoaXMuaV0pO3JldHVybiBDLmNoaWxkcmVufSxtMi5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlPW0yLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3ZhciBDPXRoaXM7dGhpcy5sLmZvckVhY2goZnVuY3Rpb24oWixKKXtJMyhDLEosWil9KX07dmFyIG84PXR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8fDYwMTAzLGk4PS9eKD86YWNjZW50fGFsaWdubWVudHxhcmFiaWN8YmFzZWxpbmV8Y2FwfGNsaXAoPyFQYXRoVSl8Y29sb3J8ZG9taW5hbnR8ZmlsbHxmbG9vZHxmb250fGdseXBoKD8hUil8aG9yaXp8aW1hZ2UoIVMpfGxldHRlcnxsaWdodGluZ3xtYXJrZXIoPyFIfFd8VSl8b3ZlcmxpbmV8cGFpbnR8cG9pbnRlcnxzaGFwZXxzdG9wfHN0cmlrZXRocm91Z2h8c3Ryb2tlfHRleHQoPyFMKXx0cmFuc2Zvcm18dW5kZXJsaW5lfHVuaWNvZGV8dW5pdHN8dnx2ZWN0b3J8dmVydHx3b3JkfHdyaXRpbmd8eCg/IUMpKVtBLVpdLyxyOD0vXm9uKEFuaXxUcmF8VG91fEJlZm9yZUlucHxDb21wbykvLHM4PS9bQS1aMC05XS9nLG44PXR5cGVvZiBkb2N1bWVudDwidSIsdDg9ZnVuY3Rpb24oQyl7cmV0dXJuKHR5cGVvZiBTeW1ib2w8InUiJiZ0eXBlb2YgU3ltYm9sKCk9PSJzeW1ib2wiPy9maWx8Y2hlfHJhZC86L2ZpbHxjaGV8cmEvKS50ZXN0KEMpfTtmdW5jdGlvbiBqMyhDLFosSil7cmV0dXJuIFouX19rPT1udWxsJiYoWi50ZXh0Q29udGVudD0iIiksajIoQyxaKSx0eXBlb2YgSj09ImZ1bmN0aW9uIiYmSigpLEM/Qy5fX2M6bnVsbH1LMS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD0hMCxbImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJjb21wb25lbnRXaWxsVXBkYXRlIl0uZm9yRWFjaChmdW5jdGlvbihDKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoSzEucHJvdG90eXBlLEMse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1siVU5TQUZFXyIrQ119LHNldDpmdW5jdGlvbihaKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxDLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Wn0pfX0pfSk7dmFyIFQzPVIuZXZlbnQ7Ui5ldmVudD1mdW5jdGlvbihDKXtyZXR1cm4gVDMmJihDPVQzKEMpKSxDLnBlcnNpc3Q9ZnVuY3Rpb24oKXt9LEMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWxCdWJibGV9LEMuaXNEZWZhdWx0UHJldmVudGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdFByZXZlbnRlZH0sQy5uYXRpdmVFdmVudD1DfTt2YXIgaDMsZTg9e2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbGFzc319LEUzPVIudm5vZGU7Ui52bm9kZT1mdW5jdGlvbihDKXt0eXBlb2YgQy50eXBlPT0ic3RyaW5nIiYmZnVuY3Rpb24oWil7dmFye3Byb3BzOkosdHlwZTpYfT1aLEc9e30sUT1YLmluZGV4T2YoIi0iKT09LTE7Zm9yKHZhciAkIGluIEope3ZhciBZPUpbJF07aWYoISgkPT09InZhbHVlIiYmKCJkZWZhdWx0VmFsdWUiaW4gSikmJlk9PW51bGx8fG44JiYkPT09ImNoaWxkcmVuIiYmWD09PSJub3NjcmlwdCJ8fCQ9PT0iY2xhc3MifHwkPT09ImNsYXNzTmFtZSIpKXt2YXIgXz0kLnRvTG93ZXJDYXNlKCk7JD09PSJkZWZhdWx0VmFsdWUiJiYidmFsdWUiaW4gSiYmSi52YWx1ZT09bnVsbD8kPSJ2YWx1ZSI6JD09PSJkb3dubG9hZCImJlk9PT0hMD9ZPSIiOl89PT0idHJhbnNsYXRlIiYmWT09PSJubyI/WT0hMTpfWzBdPT09Im8iJiZfWzFdPT09Im4iP189PT0ib25kb3VibGVjbGljayI/JD0ib25kYmxjbGljayI6XyE9PSJvbmNoYW5nZSJ8fFghPT0iaW5wdXQiJiZYIT09InRleHRhcmVhInx8dDgoSi50eXBlKT9fPT09Im9uZm9jdXMiPyQ9Im9uZm9jdXNpbiI6Xz09PSJvbmJsdXIiPyQ9Im9uZm9jdXNvdXQiOnI4LnRlc3QoJCkmJigkPV8pOl89JD0ib25pbnB1dCI6USYmaTgudGVzdCgkKT8kPSQucmVwbGFjZShzOCwiLSQmIikudG9Mb3dlckNhc2UoKTpZPT09bnVsbCYmKFk9dm9pZCAwKSxfPT09Im9uaW5wdXQiJiZHWyQ9X10mJigkPSJvbmlucHV0Q2FwdHVyZSIpLEdbJF09WX19WD09InNlbGVjdCImJihHLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KEcudmFsdWUpJiYoRy52YWx1ZT15MShKLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKFYpe1YucHJvcHMuc2VsZWN0ZWQ9Ry52YWx1ZS5pbmRleE9mKFYucHJvcHMudmFsdWUpIT0tMX0pKSxHLmRlZmF1bHRWYWx1ZSE9bnVsbCYmKEcudmFsdWU9eTEoSi5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbihWKXtWLnByb3BzLnNlbGVjdGVkPUcubXVsdGlwbGU/Ry5kZWZhdWx0VmFsdWUuaW5kZXhPZihWLnByb3BzLnZhbHVlKSE9LTE6Ry5kZWZhdWx0VmFsdWU9PVYucHJvcHMudmFsdWV9KSkpLEouY2xhc3MmJiFKLmNsYXNzTmFtZT8oRy5jbGFzcz1KLmNsYXNzLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShHLCJjbGFzc05hbWUiLGU4KSk6Si5jbGFzc05hbWUmJihHLmNsYXNzPUcuY2xhc3NOYW1lPUouY2xhc3NOYW1lKSxaLnByb3BzPUd9KEMpLEMuJCR0eXBlb2Y9bzgsRTMmJkUzKEMpfTt2YXIgdzM9Ui5fX3I7Ui5fX3I9ZnVuY3Rpb24oQyl7dzMmJnczKEMpLGgzPUMuX19jfTt2YXIgUzM9Ui5kaWZmZWQ7Ui5kaWZmZWQ9ZnVuY3Rpb24oQyl7UzMmJlMzKEMpO3Zhcntwcm9wczpaLF9fZTpKfT1DO0ohPW51bGwmJkMudHlwZT09PSJ0ZXh0YXJlYSImJiJ2YWx1ZSJpbiBaJiZaLnZhbHVlIT09Si52YWx1ZSYmKEoudmFsdWU9Wi52YWx1ZT09bnVsbD8iIjpaLnZhbHVlKSxoMz1udWxsfTtmdW5jdGlvbiB2MyhDKXtyZXR1cm4hIUMuX19rJiYoajIobnVsbCxDKSwhMCl9ZnVuY3Rpb24gbTMoQyl7cmV0dXJue3JlbmRlcjpmdW5jdGlvbihaKXtqMyhaLEMpfSx1bm1vdW50OmZ1bmN0aW9uKCl7djMoQyl9fX12YXIgZzM9IkFjY2Vzc2liaWxpdHkgdW5hdmFpbGFibGUgb24gdGhpcyBzaW11bGF0b3IuIjtmdW5jdGlvbiB4MyhDKXtsZXQgWj1bXSxKPW5ldyBNYXA7Zm9yKGxldCBYIG9mIEMpe2xldCBHPVguYXBwTmFtZXx8WC5idW5kbGVJZHx8IlVua25vd24iLFE9WC5idW5kbGVJZHx8RywkPUouZ2V0KFEpO2lmKCEkKSQ9e2tleTpRLGFwcE5hbWU6RyxidW5kbGVJZDpYLmJ1bmRsZUlkLHRhcmdldHM6W119LEouc2V0KFEsJCksWi5wdXNoKFEpOyQudGFyZ2V0cy5wdXNoKFgpfXJldHVybiBaLm1hcCgoWCk9PkouZ2V0KFgpKX1mdW5jdGlvbiBpMyhDLFope2Zvcih2YXIgSiBpbiBaKUNbSl09WltKXTtyZXR1cm4gQ31mdW5jdGlvbiBNNShDLFope2Zvcih2YXIgSiBpbiBDKWlmKEohPT0iX19zb3VyY2UiJiYhKEogaW4gWikpcmV0dXJuITA7Zm9yKHZhciBYIGluIFopaWYoWCE9PSJfX3NvdXJjZSImJkNbWF0hPT1aW1hdKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGYzKEMsWil7dGhpcy5wcm9wcz1DLHRoaXMuY29udGV4dD1afWZ1bmN0aW9uIE8yKEMsWil7ZnVuY3Rpb24gSihHKXt2YXIgUT10aGlzLnByb3BzLnJlZjtyZXR1cm4gUSE9Ry5yZWYmJlEmJih0eXBlb2YgUT09ImZ1bmN0aW9uIj9RKG51bGwpOlEuY3VycmVudD1udWxsKSxaPyFaKHRoaXMucHJvcHMsRyl8fFEhPUcucmVmOk01KHRoaXMucHJvcHMsRyl9ZnVuY3Rpb24gWChHKXtyZXR1cm4gdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGU9Six3MShDLEcpfXJldHVybiBYLmRpc3BsYXlOYW1lPSJNZW1vKCIrKEMuZGlzcGxheU5hbWV8fEMubmFtZSkrIikiLFguX19mPVgucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9ITAsWC50eXBlPUMsWH0oZjMucHJvdG90eXBlPW5ldyBLMSkuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITAsZjMucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihDLFope3JldHVybiBNNSh0aGlzLnByb3BzLEMpfHxNNSh0aGlzLnN0YXRlLFopfTt2YXIgcDM9Ui5fX2I7Ui5fX2I9ZnVuY3Rpb24oQyl7Qy50eXBlJiZDLnR5cGUuX19mJiZDLnJlZiYmKEMucHJvcHMucmVmPUMucmVmLEMucmVmPW51bGwpLHAzJiZwMyhDKX07dmFyIEM5PXR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpfHwzOTExO2Z1bmN0aW9uIFEyKEMpe2Z1bmN0aW9uIFooSil7dmFyIFg9aTMoe30sSik7cmV0dXJuIGRlbGV0ZSBYLnJlZixDKFgsSi5yZWZ8fG51bGwpfXJldHVybiBaLiQkdHlwZW9mPUM5LFoucmVuZGVyPUMsWi5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD1aLl9fZj0hMCxaLmRpc3BsYXlOYW1lPSJGb3J3YXJkUmVmKCIrKEMuZGlzcGxheU5hbWV8fEMubmFtZSkrIikiLFp9dmFyIFo5PVIuX19lO1IuX19lPWZ1bmN0aW9uKEMsWixKLFgpe2lmKEMudGhlbil7Zm9yKHZhciBHLFE9WjtRPVEuX187KWlmKChHPVEuX19jKSYmRy5fX2MpcmV0dXJuIFouX19lPT1udWxsJiYoWi5fX2U9Si5fX2UsWi5fX2s9Si5fX2spLEcuX19jKEMsWil9WjkoQyxaLEosWCl9O3ZhciB1Mz1SLnVubW91bnQ7ZnVuY3Rpb24gcjMoQyxaLEope3JldHVybiBDJiYoQy5fX2MmJkMuX19jLl9fSCYmKEMuX19jLl9fSC5fXy5mb3JFYWNoKGZ1bmN0aW9uKFgpe3R5cGVvZiBYLl9fYz09ImZ1bmN0aW9uIiYmWC5fX2MoKX0pLEMuX19jLl9fSD1udWxsKSwoQz1pMyh7fSxDKSkuX19jIT1udWxsJiYoQy5fX2MuX19QPT09SiYmKEMuX19jLl9fUD1aKSxDLl9fYy5fX2U9ITAsQy5fX2M9bnVsbCksQy5fX2s9Qy5fX2smJkMuX19rLm1hcChmdW5jdGlvbihYKXtyZXR1cm4gcjMoWCxaLEopfSkpLEN9ZnVuY3Rpb24gczMoQyxaLEope3JldHVybiBDJiZKJiYoQy5fX3Y9bnVsbCxDLl9faz1DLl9fayYmQy5fX2subWFwKGZ1bmN0aW9uKFgpe3JldHVybiBzMyhYLFosSil9KSxDLl9fYyYmQy5fX2MuX19QPT09WiYmKEMuX19lJiZKLmFwcGVuZENoaWxkKEMuX19lKSxDLl9fYy5fX2U9ITAsQy5fX2MuX19QPUopKSxDfWZ1bmN0aW9uIHo1KCl7dGhpcy5fX3U9MCx0aGlzLm89bnVsbCx0aGlzLl9fYj1udWxsfWZ1bmN0aW9uIG4zKEMpe3ZhciBaPUMuX18mJkMuX18uX19jO3JldHVybiBaJiZaLl9fYSYmWi5fX2EoQyl9ZnVuY3Rpb24gZzIoKXt0aGlzLmk9bnVsbCx0aGlzLmw9bnVsbH1SLnVubW91bnQ9ZnVuY3Rpb24oQyl7dmFyIFo9Qy5fX2M7WiYmKFouX196PSEwKSxaJiZaLl9fUiYmWi5fX1IoKSxaJiYzMiZDLl9fdSYmKEMudHlwZT1udWxsKSx1MyYmdTMoQyl9LCh6NS5wcm90b3R5cGU9bmV3IEsxKS5fX2M9ZnVuY3Rpb24oQyxaKXt2YXIgSj1aLl9fYyxYPXRoaXM7WC5vPT1udWxsJiYoWC5vPVtdKSxYLm8ucHVzaChKKTt2YXIgRz1uMyhYLl9fdiksUT0hMSwkPWZ1bmN0aW9uKCl7UXx8WC5fX3p8fChRPSEwLEouX19SPW51bGwsRz9HKF8pOl8oKSl9O0ouX19SPSQ7dmFyIFk9Si5fX1A7Si5fX1A9bnVsbDt2YXIgXz1mdW5jdGlvbigpe2lmKCEtLVguX191KXtpZihYLnN0YXRlLl9fYSl7dmFyIFY9WC5zdGF0ZS5fX2E7WC5fX3YuX19rWzBdPXMzKFYsVi5fX2MuX19QLFYuX19jLl9fTyl9dmFyIEI7Zm9yKFguc2V0U3RhdGUoe19fYTpYLl9fYj1udWxsfSk7Qj1YLm8ucG9wKCk7KUIuX19QPVksQi5mb3JjZVVwZGF0ZSgpfX07WC5fX3UrK3x8MzImWi5fX3V8fFguc2V0U3RhdGUoe19fYTpYLl9fYj1YLl9fdi5fX2tbMF19KSxDLnRoZW4oJCwkKX0sejUucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5vPVtdfSx6NS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKEMsWil7aWYodGhpcy5fX2Ipe2lmKHRoaXMuX192Ll9fayl7dmFyIEo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksWD10aGlzLl9fdi5fX2tbMF0uX19jO3RoaXMuX192Ll9fa1swXT1yMyh0aGlzLl9fYixKLFguX19PPVguX19QKX10aGlzLl9fYj1udWxsfXZhciBHPVouX19hJiZ3MShKMSxudWxsLEMuZmFsbGJhY2spO3JldHVybiBHJiYoRy5fX3UmPS0zMyksW3cxKEoxLG51bGwsWi5fX2E/bnVsbDpDLmNoaWxkcmVuKSxHXX07dmFyIGMzPWZ1bmN0aW9uKEMsWixKKXtpZigrK0pbMV09PT1KWzBdJiZDLmwuZGVsZXRlKFopLEMucHJvcHMucmV2ZWFsT3JkZXImJihDLnByb3BzLnJldmVhbE9yZGVyWzBdIT09InQifHwhQy5sLnNpemUpKWZvcihKPUMuaTtKOyl7Zm9yKDtKLmxlbmd0aD4zOylKLnBvcCgpKCk7aWYoSlsxXTxKWzBdKWJyZWFrO0MuaT1KPUpbMl19fTsoZzIucHJvdG90eXBlPW5ldyBLMSkuX19hPWZ1bmN0aW9uKEMpe3ZhciBaPXRoaXMsSj1uMyhaLl9fdiksWD1aLmwuZ2V0KEMpO3JldHVybiBYWzBdKyssZnVuY3Rpb24oRyl7dmFyIFE9ZnVuY3Rpb24oKXtaLnByb3BzLnJldmVhbE9yZGVyPyhYLnB1c2goRyksYzMoWixDLFgpKTpHKCl9O0o/SihRKTpRKCl9fSxnMi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKEMpe3RoaXMuaT1udWxsLHRoaXMubD1uZXcgTWFwO3ZhciBaPXkxKEMuY2hpbGRyZW4pO0MucmV2ZWFsT3JkZXImJkMucmV2ZWFsT3JkZXJbMF09PT0iYiImJloucmV2ZXJzZSgpO2Zvcih2YXIgSj1aLmxlbmd0aDtKLS07KXRoaXMubC5zZXQoWltKXSx0aGlzLmk9WzEsMCx0aGlzLmldKTtyZXR1cm4gQy5jaGlsZHJlbn0sZzIucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZT1nMi5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgQz10aGlzO3RoaXMubC5mb3JFYWNoKGZ1bmN0aW9uKFosSil7YzMoQyxKLFopfSl9O3ZhciBKOT10eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2MDEwMyxYOT0vXig/OmFjY2VudHxhbGlnbm1lbnR8YXJhYmljfGJhc2VsaW5lfGNhcHxjbGlwKD8hUGF0aFUpfGNvbG9yfGRvbWluYW50fGZpbGx8Zmxvb2R8Zm9udHxnbHlwaCg/IVIpfGhvcml6fGltYWdlKCFTKXxsZXR0ZXJ8bGlnaHRpbmd8bWFya2VyKD8hSHxXfFUpfG92ZXJsaW5lfHBhaW50fHBvaW50ZXJ8c2hhcGV8c3RvcHxzdHJpa2V0aHJvdWdofHN0cm9rZXx0ZXh0KD8hTCl8dHJhbnNmb3JtfHVuZGVybGluZXx1bmljb2RlfHVuaXRzfHZ8dmVjdG9yfHZlcnR8d29yZHx3cml0aW5nfHgoPyFDKSlbQS1aXS8scTk9L15vbihBbml8VHJhfFRvdXxCZWZvcmVJbnB8Q29tcG8pLyxHOT0vW0EtWjAtOV0vZyxROT10eXBlb2YgZG9jdW1lbnQ8InUiLCQ5PWZ1bmN0aW9uKEMpe3JldHVybih0eXBlb2YgU3ltYm9sPCJ1IiYmdHlwZW9mIFN5bWJvbCgpPT0ic3ltYm9sIj8vZmlsfGNoZXxyYWQvOi9maWx8Y2hlfHJhLykudGVzdChDKX07SzEucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9ITAsWyJjb21wb25lbnRXaWxsTW91bnQiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwiY29tcG9uZW50V2lsbFVwZGF0ZSJdLmZvckVhY2goZnVuY3Rpb24oQyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KEsxLnByb3RvdHlwZSxDLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbIlVOU0FGRV8iK0NdfSxzZXQ6ZnVuY3Rpb24oWil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsQyx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOlp9KX19KX0pO3ZhciBsMz1SLmV2ZW50O1IuZXZlbnQ9ZnVuY3Rpb24oQyl7cmV0dXJuIGwzJiYoQz1sMyhDKSksQy5wZXJzaXN0PWZ1bmN0aW9uKCl7fSxDLmlzUHJvcGFnYXRpb25TdG9wcGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FuY2VsQnViYmxlfSxDLmlzRGVmYXVsdFByZXZlbnRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmF1bHRQcmV2ZW50ZWR9LEMubmF0aXZlRXZlbnQ9Q307dmFyIHQzLFk5PXtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xhc3N9fSxkMz1SLnZub2RlO1Iudm5vZGU9ZnVuY3Rpb24oQyl7dHlwZW9mIEMudHlwZT09InN0cmluZyImJmZ1bmN0aW9uKFope3Zhcntwcm9wczpKLHR5cGU6WH09WixHPXt9LFE9WC5pbmRleE9mKCItIik9PS0xO2Zvcih2YXIgJCBpbiBKKXt2YXIgWT1KWyRdO2lmKCEoJD09PSJ2YWx1ZSImJigiZGVmYXVsdFZhbHVlImluIEopJiZZPT1udWxsfHxROSYmJD09PSJjaGlsZHJlbiImJlg9PT0ibm9zY3JpcHQifHwkPT09ImNsYXNzInx8JD09PSJjbGFzc05hbWUiKSl7dmFyIF89JC50b0xvd2VyQ2FzZSgpOyQ9PT0iZGVmYXVsdFZhbHVlIiYmInZhbHVlImluIEomJkoudmFsdWU9PW51bGw/JD0idmFsdWUiOiQ9PT0iZG93bmxvYWQiJiZZPT09ITA/WT0iIjpfPT09InRyYW5zbGF0ZSImJlk9PT0ibm8iP1k9ITE6X1swXT09PSJvIiYmX1sxXT09PSJuIj9fPT09Im9uZG91YmxlY2xpY2siPyQ9Im9uZGJsY2xpY2siOl8hPT0ib25jaGFuZ2UifHxYIT09ImlucHV0IiYmWCE9PSJ0ZXh0YXJlYSJ8fCQ5KEoudHlwZSk/Xz09PSJvbmZvY3VzIj8kPSJvbmZvY3VzaW4iOl89PT0ib25ibHVyIj8kPSJvbmZvY3Vzb3V0IjpxOS50ZXN0KCQpJiYoJD1fKTpfPSQ9Im9uaW5wdXQiOlEmJlg5LnRlc3QoJCk/JD0kLnJlcGxhY2UoRzksIi0kJiIpLnRvTG93ZXJDYXNlKCk6WT09PW51bGwmJihZPXZvaWQgMCksXz09PSJvbmlucHV0IiYmR1skPV9dJiYoJD0ib25pbnB1dENhcHR1cmUiKSxHWyRdPVl9fVg9PSJzZWxlY3QiJiYoRy5tdWx0aXBsZSYmQXJyYXkuaXNBcnJheShHLnZhbHVlKSYmKEcudmFsdWU9eTEoSi5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbihWKXtWLnByb3BzLnNlbGVjdGVkPUcudmFsdWUuaW5kZXhPZihWLnByb3BzLnZhbHVlKSE9LTF9KSksRy5kZWZhdWx0VmFsdWUhPW51bGwmJihHLnZhbHVlPXkxKEouY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24oVil7Vi5wcm9wcy5zZWxlY3RlZD1HLm11bHRpcGxlP0cuZGVmYXVsdFZhbHVlLmluZGV4T2YoVi5wcm9wcy52YWx1ZSkhPS0xOkcuZGVmYXVsdFZhbHVlPT1WLnByb3BzLnZhbHVlfSkpKSxKLmNsYXNzJiYhSi5jbGFzc05hbWU/KEcuY2xhc3M9Si5jbGFzcyxPYmplY3QuZGVmaW5lUHJvcGVydHkoRywiY2xhc3NOYW1lIixZOSkpOkouY2xhc3NOYW1lJiYoRy5jbGFzcz1HLmNsYXNzTmFtZT1KLmNsYXNzTmFtZSksWi5wcm9wcz1HfShDKSxDLiQkdHlwZW9mPUo5LGQzJiZkMyhDKX07dmFyIGEzPVIuX19yO1IuX19yPWZ1bmN0aW9uKEMpe2EzJiZhMyhDKSx0Mz1DLl9fY307dmFyIG8zPVIuZGlmZmVkO1IuZGlmZmVkPWZ1bmN0aW9uKEMpe28zJiZvMyhDKTt2YXJ7cHJvcHM6WixfX2U6Sn09QztKIT1udWxsJiZDLnR5cGU9PT0idGV4dGFyZWEiJiYidmFsdWUiaW4gWiYmWi52YWx1ZSE9PUoudmFsdWUmJihKLnZhbHVlPVoudmFsdWU9PW51bGw/IiI6Wi52YWx1ZSksdDM9bnVsbH07dmFyIHUxPTM7ZnVuY3Rpb24gVzUoQyl7cmV0dXJuIEM9PT0ibGFuZHNjYXBlX2xlZnQifHxDPT09ImxhbmRzY2FwZV9yaWdodCJ9ZnVuY3Rpb24gejIoQyl7cmV0dXJuISFDJiYoVzUoQy5vcmllbnRhdGlvbil8fEMud2lkdGg+Qy5oZWlnaHQpfWZ1bmN0aW9uICQyKEMpe2lmKCFDfHxDLndpZHRoPD0wfHxDLmhlaWdodDw9MClyZXR1cm4gbnVsbDtsZXQgWj1XNShDLm9yaWVudGF0aW9uKXx8Qy53aWR0aD5DLmhlaWdodCxKPVo/TWF0aC5tYXgoQy53aWR0aCxDLmhlaWdodCk6TWF0aC5taW4oQy53aWR0aCxDLmhlaWdodCksWD1aP01hdGgubWluKEMud2lkdGgsQy5oZWlnaHQpOk1hdGgubWF4KEMud2lkdGgsQy5oZWlnaHQpO2lmKEo9PT1DLndpZHRoJiZYPT09Qy5oZWlnaHQpcmV0dXJuIEM7cmV0dXJuey4uLkMsd2lkdGg6SixoZWlnaHQ6WH19ZnVuY3Rpb24gTTIoQyl7bGV0IFo9JDIoQyksSj1lMyhDPy5vcmllbnRhdGlvbiksWD1NYXRoLmFicyhKKT09PTkwLEc9ISFDJiZDLndpZHRoPkMuaGVpZ2h0LFE9Sj09PTE4MHx8WCYmIUc7cmV0dXJue2Rpc3BsYXlDb25maWc6Wixyb3RhdGlvbkRlZ3JlZXM6UT9KOjAsbmVlZHNDc3NSb3RhdGlvbjpRLGlucHV0T3JpZW50YXRpb246UT9DPy5vcmllbnRhdGlvbjp2b2lkIDB9fWZ1bmN0aW9uIGUzKEMpe3N3aXRjaChDKXtjYXNlImxhbmRzY2FwZV9sZWZ0IjpyZXR1cm4gOTA7Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnJldHVybi05MDtjYXNlInBvcnRyYWl0X3Vwc2lkZV9kb3duIjpyZXR1cm4gMTgwO2RlZmF1bHQ6cmV0dXJuIDB9fWZ1bmN0aW9uIFcyKEMsWixKKXtzd2l0Y2goQyl7Y2FzZSJsYW5kc2NhcGVfbGVmdCI6cmV0dXJue3g6Six5OjEtWn07Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnJldHVybnt4OjEtSix5Olp9O2Nhc2UicG9ydHJhaXRfdXBzaWRlX2Rvd24iOnJldHVybnt4OjEtWix5OjEtSn07ZGVmYXVsdDpyZXR1cm57eDpaLHk6Sn19fWZ1bmN0aW9uIFA1KEMsWil7c3dpdGNoKEMpe2Nhc2UibGFuZHNjYXBlX2xlZnQiOnN3aXRjaChaKXtjYXNlIDE6cmV0dXJuIDM7Y2FzZSA0OnJldHVybiAyO2Nhc2UgMjpyZXR1cm4gMTtjYXNlIDM6cmV0dXJuIDQ7ZGVmYXVsdDpyZXR1cm4gWn1jYXNlImxhbmRzY2FwZV9yaWdodCI6c3dpdGNoKFope2Nhc2UgMTpyZXR1cm4gMjtjYXNlIDQ6cmV0dXJuIDM7Y2FzZSAyOnJldHVybiA0O2Nhc2UgMzpyZXR1cm4gMTtkZWZhdWx0OnJldHVybiBafWNhc2UicG9ydHJhaXRfdXBzaWRlX2Rvd24iOnN3aXRjaChaKXtjYXNlIDE6cmV0dXJuIDQ7Y2FzZSA0OnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMztjYXNlIDM6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gWn1kZWZhdWx0OnJldHVybiBafX12YXIgVjk9MDtmdW5jdGlvbiBxKEMsWixKLFgsRyxRKXtafHwoWj17fSk7dmFyICQsWSxfPVo7aWYoInJlZiJpbiBfKWZvcihZIGluIF89e30sWilZPT0icmVmIj8kPVpbWV06X1tZXT1aW1ldO3ZhciBWPXt0eXBlOkMscHJvcHM6XyxrZXk6SixyZWY6JCxfX2s6bnVsbCxfXzpudWxsLF9fYjowLF9fZTpudWxsLF9fYzpudWxsLGNvbnN0cnVjdG9yOnZvaWQgMCxfX3Y6LS1WOSxfX2k6LTEsX191OjAsX19zb3VyY2U6RyxfX3NlbGY6UX07aWYodHlwZW9mIEM9PSJmdW5jdGlvbiImJigkPUMuZGVmYXVsdFByb3BzKSlmb3IoWSBpbiAkKV9bWV09PT12b2lkIDAmJihfW1ldPSRbWV0pO3JldHVybiBSLnZub2RlJiZSLnZub2RlKFYpLFZ9dmFyIEM4PWB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnJTNFJTNDY2lyY2xlIGN4PScxMicgY3k9JzEyJyByPSc5JyBmaWxsPSdyZ2JhKDI1NSwyNTUsMjU1LDAuNDUpJyBzdHJva2U9J3JnYmEoMCwwLDAsMC41NSknIHN0cm9rZS13aWR0aD0nMS4yNScgZmlsdGVyPSdkcm9wLXNoYWRvdygwIDFweCAycHggcmdiYSgwLDAsMCwwLjQ1KSknLyUzRSUzQy9zdmclM0UiKSAxMiAxMiwgcG9pbnRlcmAsXzk9MyxLOT00LEw5PTU7ZnVuY3Rpb24geDIoe3VybDpDLHdzVXJsOlosc3R5bGU6SixpbWFnZVN0eWxlOlgsY2xhc3NOYW1lOkcsb25Ib21lUHJlc3M6USxvblN0cmVhbVRvdWNoOiQsb25TdHJlYW1NdWx0aVRvdWNoOlksb25TdHJlYW1CdXR0b246XyxzdWJzY3JpYmVGcmFtZTpWLHN0cmVhbUZyYW1lOkIsc3RyZWFtQ29uZmlnOkssb25TY3JlZW5Db25maWdDaGFuZ2U6SCxoaWRlQ29udHJvbHM6RixvblN0cmVhbWluZ0NoYW5nZTpNLGNvbm5lY3Rpb25RdWFsaXR5Okx9KXtsZXQgRD0hISQsTz1oKG51bGwpLFA9aChudWxsKSxFPWgobnVsbCksdz1oKG51bGwpLFtmLGtdPUkoITEpLFtULFNdPUkobnVsbCksW3gsc109SShudWxsKSxsPWgobnVsbCksSDE9aChIKTtIMS5jdXJyZW50PUg7bGV0IHExPWgobnVsbCksW1AxLHZdPUkobnVsbCk7eSgoKT0+e2xldCBVPXExLmN1cnJlbnQ7aWYoIVV8fHR5cGVvZiBSZXNpemVPYnNlcnZlcj4idSIpcmV0dXJuO2xldCBOPW5ldyBSZXNpemVPYnNlcnZlcigoVyk9PntsZXQgQT1XWzBdPy5jb250ZW50UmVjdDtpZihBKXYoe3dpZHRoOkEud2lkdGgsaGVpZ2h0OkEuaGVpZ2h0fSl9KTtyZXR1cm4gTi5vYnNlcnZlKFUpLCgpPT5OLmRpc2Nvbm5lY3QoKX0sW10pO2xldFtpLCQxXT1JKDApLHI9aCgwKSxbbixGMV09SSghMSksQzE9aChudWxsKTt5KCgpPT57aWYoTD09PSJwb29yIil7aWYoRjEoITApLEMxLmN1cnJlbnQpY2xlYXJUaW1lb3V0KEMxLmN1cnJlbnQpO0MxLmN1cnJlbnQ9c2V0VGltZW91dCgoKT0+e0YxKCExKSxDMS5jdXJyZW50PW51bGx9LDMwMDApfWVsc2UgaWYoRjEoITEpLEMxLmN1cnJlbnQpY2xlYXJUaW1lb3V0KEMxLmN1cnJlbnQpLEMxLmN1cnJlbnQ9bnVsbDtyZXR1cm4oKT0+e2lmKEMxLmN1cnJlbnQpY2xlYXJUaW1lb3V0KEMxLmN1cnJlbnQpfX0sW0xdKTtsZXQgdD1gJHtDfS9zdHJlYW0ubWpwZWdgO3koKCk9PntsLmN1cnJlbnQ9bnVsbCxzKG51bGwpfSxbQ10pO2xldCBtPWooKFUpPT57aWYoIVV8fFUud2lkdGg8PTB8fFUuaGVpZ2h0PD0wKXJldHVybjtsZXQgTj1sLmN1cnJlbnQsVz1VLm9yaWVudGF0aW9uPT09dm9pZCAwJiZOPy5vcmllbnRhdGlvbj97Li4uVSxvcmllbnRhdGlvbjpOLm9yaWVudGF0aW9ufTpVO2lmKE4mJk4ud2lkdGg9PT1XLndpZHRoJiZOLmhlaWdodD09PVcuaGVpZ2h0JiZOLm9yaWVudGF0aW9uPT09Vy5vcmllbnRhdGlvbilyZXR1cm47bC5jdXJyZW50PVcscyhXKSxIMS5jdXJyZW50Py4oVyl9LFtdKSxkPWgoTSk7ZC5jdXJyZW50PU0seSgoKT0+e2QuY3VycmVudD8uKGYpfSxbZl0pLHkoKCk9PntpZihEJiZLKW0oSyl9LFtELEssbV0pO2xldCBwPWgoITEpO3AuY3VycmVudD1mO2xldCBlPWgobnVsbCk7eSgoKT0+e2lmKCFEfHwhVilyZXR1cm47bGV0IE49c2V0VGltZW91dCgoKT0+e2lmKCFwLmN1cnJlbnQpUygiU3RyZWFtIGlzIG5vdCBwcm9kdWNpbmcgZnJhbWVzLiBUaGUgc2ltdWxhdG9yIG1heSBoYXZlIHN0b3BwZWQg4oCUIHRyeSByZWNvbm5lY3RpbmcuIil9LDYwMDApLFc9VigoQSk9PntyLmN1cnJlbnQrKyxTMS5jdXJyZW50PURhdGUubm93KCk7bGV0IGc9UC5jdXJyZW50O2lmKGcpe2lmKGUuY3VycmVudClVUkwucmV2b2tlT2JqZWN0VVJMKGUuY3VycmVudCk7ZS5jdXJyZW50PUEsZy5zcmM9QX1pZighcC5jdXJyZW50KWNsZWFyVGltZW91dChOKSxrKCEwKSxTKG51bGwpfSk7cmV0dXJuKCk9PntpZihjbGVhclRpbWVvdXQoTiksVz8uKCksZS5jdXJyZW50KVVSTC5yZXZva2VPYmplY3RVUkwoZS5jdXJyZW50KSxlLmN1cnJlbnQ9bnVsbH19LFtELFZdKTtsZXQgWTE9aigoVSk9PntsZXQgTj1NMihsLmN1cnJlbnQpLmlucHV0T3JpZW50YXRpb24sVz1XMihOLFUueCxVLnkpLEE9VS5lZGdlPT09dm9pZCAwP3ZvaWQgMDpQNShOLFUuZWRnZSksZz1BPT09dm9pZCAwP3t0eXBlOlUudHlwZSwuLi5XfTp7dHlwZTpVLnR5cGUsLi4uVyxlZGdlOkF9O2lmKEQpeyQ/LihnKTtyZXR1cm59bGV0IHU9dy5jdXJyZW50O2lmKCF1fHx1LnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTilyZXR1cm47bGV0IGE9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGcpKSxvPW5ldyBVaW50OEFycmF5KDErYS5sZW5ndGgpO29bMF09Xzksby5zZXQoYSwxKSx1LnNlbmQobyl9LFtELCRdKSxMMT1qKChVKT0+e2lmKEQpe18/LihVKTtyZXR1cm59bGV0IE49dy5jdXJyZW50O2lmKCFOfHxOLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTilyZXR1cm47bGV0IFc9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHtidXR0b246VX0pKSxBPW5ldyBVaW50OEFycmF5KDErVy5sZW5ndGgpO0FbMF09SzksQS5zZXQoVywxKSxOLnNlbmQoQSl9LFtELF9dKSxCMT1qKChVKT0+e2xldCBOPU0yKGwuY3VycmVudCkuaW5wdXRPcmllbnRhdGlvbixXPVcyKE4sVS54MSxVLnkxKSxBPVcyKE4sVS54MixVLnkyKSxnPXt0eXBlOlUudHlwZSx4MTpXLngseTE6Vy55LHgyOkEueCx5MjpBLnl9O2lmKEQpe1k/LihnKTtyZXR1cm59bGV0IHU9dy5jdXJyZW50O2lmKCF1fHx1LnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTilyZXR1cm47bGV0IGE9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGcpKSxvPW5ldyBVaW50OEFycmF5KDErYS5sZW5ndGgpO29bMF09TDksby5zZXQoYSwxKSx1LnNlbmQobyl9LFtELFldKTt5KCgpPT57aWYoRClyZXR1cm47bGV0IFU9bmV3IEFib3J0Q29udHJvbGxlcixOPSgpPT57ZmV0Y2goYCR7Q30vY29uZmlnYCx7c2lnbmFsOlUuc2lnbmFsfSkudGhlbigoYjEpPT5iMS5qc29uKCkpLnRoZW4oKGIxKT0+e20oYjEpfSkuY2F0Y2goKCk9Pnt9KX07TigpO2xldCBXPXNldEludGVydmFsKE4sMTAwMCksQT1aPz9DLnJlcGxhY2UoL15odHRwLywid3MiKSsiL3dzIixnPW5ldyBXZWJTb2NrZXQoQSk7Zy5iaW5hcnlUeXBlPSJhcnJheWJ1ZmZlciIsdy5jdXJyZW50PWcsZy5vbm9wZW49KCk9PntrKCEwKSxTKG51bGwpfSxnLm9uY2xvc2U9KCk9PntrKCExKX0sZy5vbmVycm9yPSgpPT57UygiV2ViU29ja2V0IGNvbm5lY3Rpb24gZmFpbGVkIiksayghMSl9O2xldCB1PW5ldyBBYm9ydENvbnRyb2xsZXIsYT1zZXRJbnRlcnZhbCgoKT0+eyQxKHIuY3VycmVudCksci5jdXJyZW50PTB9LDEwMDApLG89ITEsSjI9c2V0VGltZW91dCgoKT0+e2lmKCFvKVMoIlN0cmVhbSBpcyBub3QgcHJvZHVjaW5nIGZyYW1lcy4gVGhlIHNpbXVsYXRvciBtYXkgaGF2ZSBzdG9wcGVkIOKAlCB0cnkgcmVjb25uZWN0aW5nLiIpfSw2MDAwKTtyZXR1cm4oYXN5bmMoKT0+e3RyeXtsZXQgWDI9KGF3YWl0IGZldGNoKHQse3NpZ25hbDp1LnNpZ25hbH0pKS5ib2R5Py5nZXRSZWFkZXIoKTtpZighWDIpcmV0dXJuO2xldCB4MT1uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoIi0tZnJhbWUiKTt3aGlsZSghMCl7bGV0e2RvbmU6SDIsdmFsdWU6TjJ9PWF3YWl0IFgyLnJlYWQoKTtpZihIMilicmVhaztpZihOMilmb3IobGV0IEc1PTA7RzU8PU4yLmxlbmd0aC14MS5sZW5ndGg7RzUrKyl7bGV0IHM1PSEwO2ZvcihsZXQgSTI9MDtJMjx4MS5sZW5ndGg7STIrKylpZihOMltHNStJMl0hPT14MVtJMl0pe3M1PSExO2JyZWFrfWlmKHM1KXtpZihyLmN1cnJlbnQrKywhbylvPSEwLGNsZWFyVGltZW91dChKMil9fX19Y2F0Y2h7fX0pKCksKCk9Pnt1LmFib3J0KCksVS5hYm9ydCgpLGNsZWFySW50ZXJ2YWwoVyksY2xlYXJJbnRlcnZhbChhKSxjbGVhclRpbWVvdXQoSjIpLGcuY2xvc2UoKSx3LmN1cnJlbnQ9bnVsbH19LFtDLHQsRCxtLFpdKTtsZXQgUzE9aCgwKTt5KCgpPT57aWYoIUQpcmV0dXJuO2xldCBVPTIwMDAsTj0oKT0+e2xldCBnPVMxLmN1cnJlbnQ7aWYoIWd8fCFwLmN1cnJlbnQpcmV0dXJuO2lmKERhdGUubm93KCktZz5VKWsoITEpfSxXPXNldEludGVydmFsKCgpPT57JDEoci5jdXJyZW50KSxyLmN1cnJlbnQ9MCxOKCl9LDEwMDApLEE9KCk9PntpZighZG9jdW1lbnQuaGlkZGVuKU4oKX07cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLEEpLCgpPT57Y2xlYXJJbnRlcnZhbChXKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixBKX19LFtEXSk7bGV0IHMxPWooKCk9PntyZXR1cm4gRD9QLmN1cnJlbnQ6Ty5jdXJyZW50fSxbRF0pLE4xPWooKCk9PntyZXR1cm4gRS5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKT8/czEoKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk/P251bGx9LFtzMV0pLG4xPWooKFUsTik9PntsZXQgVz1OMSgpO2lmKCFXKXJldHVybjtsZXQgQT0oTi5jbGllbnRYLVcubGVmdCkvVy53aWR0aCxnPShOLmNsaWVudFktVy50b3ApL1cuaGVpZ2h0O1kxKHt0eXBlOlUseDpBLHk6Z30pfSxbTjEsWTFdKSxfMT1oKCExKSx6MT1oKCExKSxjMT1oKCExKSxfMj1oKHtkeDowLGR5OjB9KSxsMT1oKCExKSxbSzIsazJdPUkoITEpLHQxPWgoe3g6MC41LHk6MC41fSksW0kxLFUxXT1JKG51bGwpO3koKCk9PntsZXQgVT0oVyk9PntpZihXLmtleT09PSJBbHQiKWsyKCEwKX0sTj0oVyk9PntpZihXLmtleT09PSJBbHQiKXtpZihrMighMSksIXoxLmN1cnJlbnQpVTEobnVsbCl9fTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLFUpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsTiksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsVSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIixOKX19LFtdKSx5KCgpPT57aWYoSzImJiF6MS5jdXJyZW50KXtsZXQgVT10MS5jdXJyZW50O1UxKHt4MTpVLngseTE6VS55LHgyOjEtVS54LHkyOjEtVS55fSl9ZWxzZSBpZighSzImJiF6MS5jdXJyZW50KVUxKG51bGwpfSxbSzJdKTtsZXQgdjE9aChudWxsKSxlMT1oKCExKSxtMT1oKDApLEMyPWooKFUsTik9PntlMS5jdXJyZW50PSEwO2xldCBXPXYxLmN1cnJlbnQ7aWYoVyljYW5jZWxBbmltYXRpb25GcmFtZShtMS5jdXJyZW50KSxtMS5jdXJyZW50PXJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e1cuc3R5bGUubGVmdD1gJHtVKjEwMH0lYCxXLnN0eWxlLnRvcD1gJHtOKjEwMH0lYCxXLnN0eWxlLmRpc3BsYXk9ImJsb2NrIn0pfSxbXSksQTI9aigoVSxOKT0+e2lmKCFlMS5jdXJyZW50KXJldHVybjtsZXQgVz12MS5jdXJyZW50O2lmKFcpY2FuY2VsQW5pbWF0aW9uRnJhbWUobTEuY3VycmVudCksbTEuY3VycmVudD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntXLnN0eWxlLmxlZnQ9YCR7VSoxMDB9JWAsVy5zdHlsZS50b3A9YCR7TioxMDB9JWB9KX0sW10pLGsxPWooKCk9PntlMS5jdXJyZW50PSExO2xldCBVPXYxLmN1cnJlbnQ7aWYoVSljYW5jZWxBbmltYXRpb25GcmFtZShtMS5jdXJyZW50KSxVLnN0eWxlLmRpc3BsYXk9Im5vbmUifSxbXSksTDI9aCgwKSxkMT1oKG51bGwpLFoxPWooKCk9PntsZXQgVT1EYXRlLm5vdygpLE49VS1MMi5jdXJyZW50O2lmKEwyLmN1cnJlbnQ9VSxOPDMwMCl7aWYoZDEuY3VycmVudCljbGVhclRpbWVvdXQoZDEuY3VycmVudCksZDEuY3VycmVudD1udWxsO2lmKFEpUSgpO2Vsc2UgTDEoImFwcF9zd2l0Y2hlciIpfWVsc2UgZDEuY3VycmVudD1zZXRUaW1lb3V0KCgpPT57aWYoUSlRKCk7ZWxzZSBMMSgiaG9tZSIpO2QxLmN1cnJlbnQ9bnVsbH0sMzAwKX0sW0wxLFFdKSxnMT1NMih4KSxhMT1nMS5kaXNwbGF5Q29uZmlnLFQxPSgoKT0+e2lmKCFhMXx8IVAxKXJldHVybiBudWxsO2lmKFAxLndpZHRoPT09MHx8UDEuaGVpZ2h0PT09MClyZXR1cm4gbnVsbDtsZXQgVT1NYXRoLm1pbihQMS53aWR0aC9hMS53aWR0aCxQMS5oZWlnaHQvYTEuaGVpZ2h0KTtyZXR1cm57d2lkdGg6YTEud2lkdGgqVSxoZWlnaHQ6YTEuaGVpZ2h0KlV9fSkoKSxaMj1nMS5yb3RhdGlvbkRlZ3JlZXMsQjI9ZzEubmVlZHNDc3NSb3RhdGlvbiYmTWF0aC5hYnMoWjIpPT09OTAsej1YLGI9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiI1MCUiLGxlZnQ6IjUwJSIsd2lkdGg6QjImJlQxP2Ake1QxLmhlaWdodH1weGA6IjEwMCUiLGhlaWdodDpCMiYmVDE/YCR7VDEud2lkdGh9cHhgOiIxMDAlIix0cmFuc2Zvcm06YHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSR7WjI9PT0wPyIiOmAgcm90YXRlKCR7WjJ9ZGVnKWB9YCx0cmFuc2Zvcm1PcmlnaW46ImNlbnRlciBjZW50ZXIiLGN1cnNvcjpDOCxkaXNwbGF5OiJibG9jayIsdXNlclNlbGVjdDoibm9uZSIsV2Via2l0VXNlclNlbGVjdDoibm9uZSIsdG91Y2hBY3Rpb246Im5vbmUiLC4uLlgsLi4uWjI9PT0wP3t9Ontib3JkZXJSYWRpdXM6MCxjb3JuZXJTaGFwZTp2b2lkIDB9fTtyZXR1cm4gcSgiZGl2Iix7c3R5bGU6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZmxleDoxLC4uLkY/e306e2JvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikifSxvdmVyZmxvdzoiaGlkZGVuIixtaW5XaWR0aDowLG1pbkhlaWdodDowLC4uLkp9LGNsYXNzTmFtZTpHLGNoaWxkcmVuOltxKCJkaXYiLHtyZWY6cTEsc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsZmxleDoxLG1pbkhlaWdodDowLG1pbldpZHRoOjAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIn0sY2hpbGRyZW46cSgiZGl2Iix7cmVmOkUsc3R5bGU6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsd2lkdGg6VDE/YCR7VDEud2lkdGh9cHhgOiIxMDAlIixoZWlnaHQ6VDE/YCR7VDEuaGVpZ2h0fXB4YDoiMTAwJSIsb3ZlcmZsb3c6ImhpZGRlbiIsYm9yZGVyUmFkaXVzOno/LmJvcmRlclJhZGl1cyxjb3JuZXJTaGFwZTp6Py5jb3JuZXJTaGFwZX0sY2hpbGRyZW46W3EoImltZyIse3JlZjpPLHNyYzpEP3ZvaWQgMDp0LGRyYWdnYWJsZTohMSxvbkxvYWQ6KFUpPT57bGV0IE49VS5jdXJyZW50VGFyZ2V0O2lmKE4ubmF0dXJhbFdpZHRoPjAmJk4ubmF0dXJhbEhlaWdodD4wKW0oe3dpZHRoOk4ubmF0dXJhbFdpZHRoLGhlaWdodDpOLm5hdHVyYWxIZWlnaHR9KX0sc3R5bGU6RD97ZGlzcGxheToibm9uZSJ9OmJ9KSxEJiZxKCJpbWciLHtyZWY6UCxkcmFnZ2FibGU6ITEsb25Mb2FkOihVKT0+e2xldCBOPVUuY3VycmVudFRhcmdldDtpZihOLm5hdHVyYWxXaWR0aD4wJiZOLm5hdHVyYWxIZWlnaHQ+MCltKHt3aWR0aDpOLm5hdHVyYWxXaWR0aCxoZWlnaHQ6Ti5uYXR1cmFsSGVpZ2h0fSl9LHN0eWxlOmJ9KSxxKCJkaXYiLHtzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixpbnNldDowLGN1cnNvcjpDOCx0b3VjaEFjdGlvbjoibm9uZSJ9LG9uTW91c2VEb3duOihVKT0+e1UucHJldmVudERlZmF1bHQoKTtsZXQgTj1OMSgpO2lmKCFOKXJldHVybjtsZXQgVz0oVS5jbGllbnRYLU4ubGVmdCkvTi53aWR0aCxBPShVLmNsaWVudFktTi50b3ApL04uaGVpZ2h0O2lmKFUuYWx0S2V5KXt6MS5jdXJyZW50PSEwLGMxLmN1cnJlbnQ9VS5zaGlmdEtleTtsZXQgZz17eDE6Vyx5MTpBLHgyOjEtVyx5MjoxLUF9O18yLmN1cnJlbnQ9e2R4OjEtVy1XLGR5OjEtQS1BfSxVMShnKSxCMSh7dHlwZToiYmVnaW4iLC4uLmd9KTtyZXR1cm59aWYoQzIoVyxBKSxBPjAuODgpXzEuY3VycmVudD0hMCxZMSh7dHlwZToiYmVnaW4iLHg6Vyx5OkEsZWRnZTp1MX0pO2Vsc2UgXzEuY3VycmVudD0hMSxuMSgiYmVnaW4iLFUpfSxvbk1vdXNlTW92ZTooVSk9PntsZXQgTj1OMSgpO2lmKCFOKXJldHVybjtsZXQgVz0oVS5jbGllbnRYLU4ubGVmdCkvTi53aWR0aCxBPShVLmNsaWVudFktTi50b3ApL04uaGVpZ2h0O2lmKHQxLmN1cnJlbnQ9e3g6Vyx5OkF9LFUuYnV0dG9ucz09PTApe2lmKFUuYWx0S2V5KVUxKHt4MTpXLHkxOkEseDI6MS1XLHkyOjEtQX0pO3JldHVybn1pZih6MS5jdXJyZW50KXtsZXQgZztpZihjMS5jdXJyZW50KXtsZXQgdT1fMi5jdXJyZW50O2c9e3gxOlcseTE6QSx4MjpXK3UuZHgseTI6QSt1LmR5fX1lbHNlIGc9e3gxOlcseTE6QSx4MjoxLVcseTI6MS1BfTtVMShnKSxCMSh7dHlwZToibW92ZSIsLi4uZ30pO3JldHVybn1pZihBMihXLEEpLF8xLmN1cnJlbnQpWTEoe3R5cGU6Im1vdmUiLHg6Vyx5OkEsZWRnZTp1MX0pO2Vsc2UgbjEoIm1vdmUiLFUpfSxvbk1vdXNlVXA6KFUpPT57aWYoejEuY3VycmVudCl7bGV0IE49TjEoKTtpZihOKXtsZXQgVz0oVS5jbGllbnRYLU4ubGVmdCkvTi53aWR0aCxBPShVLmNsaWVudFktTi50b3ApL04uaGVpZ2h0O2lmKGMxLmN1cnJlbnQpe2xldCBnPV8yLmN1cnJlbnQ7QjEoe3R5cGU6ImVuZCIseDE6Vyx5MTpBLHgyOlcrZy5keCx5MjpBK2cuZHl9KX1lbHNlIEIxKHt0eXBlOiJlbmQiLHgxOlcseTE6QSx4MjoxLVcseTI6MS1BfSl9aWYoejEuY3VycmVudD0hMSwhVS5hbHRLZXkpVTEobnVsbCk7cmV0dXJufWlmKGsxKCksXzEuY3VycmVudCl7bGV0IE49TjEoKTtpZihOKXtsZXQgVz0oVS5jbGllbnRYLU4ubGVmdCkvTi53aWR0aCxBPShVLmNsaWVudFktTi50b3ApL04uaGVpZ2h0O1kxKHt0eXBlOiJlbmQiLHg6Vyx5OkEsZWRnZTp1MX0pfV8xLmN1cnJlbnQ9ITE7cmV0dXJufW4xKCJlbmQiLFUpfSxvbk1vdXNlTGVhdmU6KFUpPT57aWYoejEuY3VycmVudCl7aWYoSTEpQjEoe3R5cGU6ImVuZCIsLi4uSTF9KTt6MS5jdXJyZW50PSExLFUxKG51bGwpO3JldHVybn1pZihrMSgpLF8xLmN1cnJlbnQpe2xldCBOPU4xKCk7aWYoTil7bGV0IFc9KFUuY2xpZW50WC1OLmxlZnQpL04ud2lkdGgsQT0oVS5jbGllbnRZLU4udG9wKS9OLmhlaWdodDtZMSh7dHlwZToiZW5kIix4OlcseTpBLGVkZ2U6dTF9KX1fMS5jdXJyZW50PSExO3JldHVybn1pZihVLmJ1dHRvbnM+MCluMSgiZW5kIixVKTtVMShudWxsKX0sb25Ub3VjaFN0YXJ0OihVKT0+e1UucHJldmVudERlZmF1bHQoKTtsZXQgTj1OMSgpO2lmKCFOKXJldHVybjtpZihVLnRvdWNoZXMubGVuZ3RoPj0yKXtrMSgpO2xldCB1PVUudG91Y2hlc1swXSxhPVUudG91Y2hlc1sxXSxvPXt4MToodS5jbGllbnRYLU4ubGVmdCkvTi53aWR0aCx5MToodS5jbGllbnRZLU4udG9wKS9OLmhlaWdodCx4MjooYS5jbGllbnRYLU4ubGVmdCkvTi53aWR0aCx5MjooYS5jbGllbnRZLU4udG9wKS9OLmhlaWdodH07aWYoIWwxLmN1cnJlbnQmJiFfMS5jdXJyZW50KVkxKHt0eXBlOiJlbmQiLHg6by54MSx5Om8ueTF9KTtsMS5jdXJyZW50PSEwLHoxLmN1cnJlbnQ9ITAsXzEuY3VycmVudD0hMSxVMShvKSxCMSh7dHlwZToiYmVnaW4iLC4uLm99KTtyZXR1cm59bGV0IFc9VS50b3VjaGVzWzBdO2lmKCFXKXJldHVybjtsZXQgQT0oVy5jbGllbnRYLU4ubGVmdCkvTi53aWR0aCxnPShXLmNsaWVudFktTi50b3ApL04uaGVpZ2h0O2lmKEMyKEEsZyksZz4wLjg4KV8xLmN1cnJlbnQ9ITAsWTEoe3R5cGU6ImJlZ2luIix4OkEseTpnLGVkZ2U6dTF9KTtlbHNlIF8xLmN1cnJlbnQ9ITEsWTEoe3R5cGU6ImJlZ2luIix4OkEseTpnfSl9LG9uVG91Y2hNb3ZlOihVKT0+e1UucHJldmVudERlZmF1bHQoKTtsZXQgTj1OMSgpO2lmKCFOKXJldHVybjtpZihsMS5jdXJyZW50JiZVLnRvdWNoZXMubGVuZ3RoPj0yKXtsZXQgdT1VLnRvdWNoZXNbMF0sYT1VLnRvdWNoZXNbMV0sbz17eDE6KHUuY2xpZW50WC1OLmxlZnQpL04ud2lkdGgseTE6KHUuY2xpZW50WS1OLnRvcCkvTi5oZWlnaHQseDI6KGEuY2xpZW50WC1OLmxlZnQpL04ud2lkdGgseTI6KGEuY2xpZW50WS1OLnRvcCkvTi5oZWlnaHR9O1UxKG8pLEIxKHt0eXBlOiJtb3ZlIiwuLi5vfSk7cmV0dXJufWxldCBXPVUudG91Y2hlc1swXTtpZighVylyZXR1cm47bGV0IEE9KFcuY2xpZW50WC1OLmxlZnQpL04ud2lkdGgsZz0oVy5jbGllbnRZLU4udG9wKS9OLmhlaWdodDtpZihBMihBLGcpLF8xLmN1cnJlbnQpWTEoe3R5cGU6Im1vdmUiLHg6QSx5OmcsZWRnZTp1MX0pO2Vsc2UgWTEoe3R5cGU6Im1vdmUiLHg6QSx5Omd9KX0sb25Ub3VjaEVuZDooVSk9PntVLnByZXZlbnREZWZhdWx0KCk7bGV0IE49TjEoKTtpZighTilyZXR1cm47aWYobDEuY3VycmVudCl7aWYoVS50b3VjaGVzLmxlbmd0aDwyKXtsZXQgdT1VLmNoYW5nZWRUb3VjaGVzWzBdLGE9STE7aWYodSYmYSlCMSh7dHlwZToiZW5kIix4MToodS5jbGllbnRYLU4ubGVmdCkvTi53aWR0aCx5MToodS5jbGllbnRZLU4udG9wKS9OLmhlaWdodCx4MjphLngyLHkyOmEueTJ9KTtlbHNlIGlmKGEpQjEoe3R5cGU6ImVuZCIsLi4uYX0pO2wxLmN1cnJlbnQ9ITEsejEuY3VycmVudD0hMSxVMShudWxsKX1yZXR1cm59bGV0IFc9VS5jaGFuZ2VkVG91Y2hlc1swXTtpZighVylyZXR1cm47bGV0IEE9KFcuY2xpZW50WC1OLmxlZnQpL04ud2lkdGgsZz0oVy5jbGllbnRZLU4udG9wKS9OLmhlaWdodDtpZihrMSgpLF8xLmN1cnJlbnQpWTEoe3R5cGU6ImVuZCIseDpBLHk6ZyxlZGdlOnUxfSksXzEuY3VycmVudD0hMTtlbHNlIFkxKHt0eXBlOiJlbmQiLHg6QSx5Omd9KX19KSxxKCJkaXYiLHtyZWY6djEsImRhdGEtdGVzdGlkIjoidG91Y2gtaW5kaWNhdG9yIixzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJub25lIix3aWR0aDoyNCxoZWlnaHQ6MjQsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6InJnYmEoNTksMTMwLDI0NiwwLjUpIixib3hTaGFkb3c6IjAgMCA4cHggcmdiYSg1OSwxMzAsMjQ2LDAuMykiLHRyYW5zZm9ybToidHJhbnNsYXRlKC01MCUsIC01MCUpIixwb2ludGVyRXZlbnRzOiJub25lIn19KSxJMSYmcShKMSx7Y2hpbGRyZW46W3EoImRpdiIseyJkYXRhLXRlc3RpZCI6ImZpbmdlci1kb3QiLHN0eWxlOlg4KEkxLngxLEkxLnkxKX0pLHEoImRpdiIseyJkYXRhLXRlc3RpZCI6ImZpbmdlci1kb3QiLHN0eWxlOlg4KEkxLngyLEkxLnkyKX0pXX0pLCFmJiYhVCYmcSgiZGl2Iix7c3R5bGU6ey4uLlo4LC4uLlh8fHt9fSxjaGlsZHJlbjpxKCJzcGFuIix7c3R5bGU6e2NvbG9yOiIjODg4Iixmb250U2l6ZToxNH0sY2hpbGRyZW46IkNvbm5lY3RpbmcuLi4ifSl9KSxUJiZxKCJkaXYiLHtzdHlsZTpaOCxjaGlsZHJlbjpxKCJzcGFuIix7c3R5bGU6e2NvbG9yOiIjZjQ0Iixmb250U2l6ZToxNCxwYWRkaW5nOjIwLHRleHRBbGlnbjoiY2VudGVyIn0sY2hpbGRyZW46VH0pfSksbiYmcSgiZGl2Iix7c3R5bGU6QjksY2hpbGRyZW46cSgic3BhbiIse3N0eWxlOntjb2xvcjoiI2ZiYmYyNCIsZm9udFNpemU6MTMsZm9udEZhbWlseToibW9ub3NwYWNlIn0sY2hpbGRyZW46IlNsb3cgY29ubmVjdGlvbiJ9KX0pXX0pfSksIUYmJnEoImRpdiIse3N0eWxlOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixwYWRkaW5nOiI0cHggOHB4Iixib3JkZXJUb3A6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIn0sY2hpbGRyZW46W3EoImJ1dHRvbiIse29uQ2xpY2s6WjEsc3R5bGU6e2JhY2tncm91bmQ6Im5vbmUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4yKSIsY29sb3I6IiNhYWEiLGZvbnRTaXplOjExLGZvbnRGYW1pbHk6Im1vbm9zcGFjZSIscGFkZGluZzoiMnB4IDEwcHgiLGN1cnNvcjoicG9pbnRlciIsYm9yZGVyUmFkaXVzOjR9LGNoaWxkcmVuOiJIb21lIn0pLHEoInNwYW4iLHtzdHlsZTp7Y29sb3I6aT4wPyIjNGY0IjoiIzg4OCIsZm9udFNpemU6MTIsZm9udEZhbWlseToibW9ub3NwYWNlIixkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDo2fSxjaGlsZHJlbjpbTCYmcSgic3BhbiIseyJkYXRhLXRlc3RpZCI6InF1YWxpdHktZG90IixzdHlsZTp7d2lkdGg6OCxoZWlnaHQ6OCxib3JkZXJSYWRpdXM6IjUwJSIsZGlzcGxheToiaW5saW5lLWJsb2NrIixiYWNrZ3JvdW5kOkw9PT0iZ29vZCI/IiM0YWRlODAiOkw9PT0iZGVncmFkZWQiPyIjZmFjYzE1IjoiI2VmNDQ0NCJ9fSksaSwiIGZwcyJdfSldfSldfSl9dmFyIEI5PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDo4LGxlZnQ6IjUwJSIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVYKC01MCUpIixiYWNrZ3JvdW5kOiJyZ2JhKDAsMCwwLDAuNykiLGJvcmRlclJhZGl1czo2LHBhZGRpbmc6IjRweCAxMnB4Iixwb2ludGVyRXZlbnRzOiJub25lIn0sWjg9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaW5zZXQ6MCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGJhY2tncm91bmQ6InJnYmEoMCwwLDAsMC44KSJ9LEo4PTIwO2Z1bmN0aW9uIFg4KEMsWil7cmV0dXJue3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDpgJHtDKjEwMH0lYCx0b3A6YCR7WioxMDB9JWAsd2lkdGg6SjgsaGVpZ2h0Oko4LGJvcmRlclJhZGl1czoiNTAlIixiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNDUpIixib3JkZXI6IjEuMjVweCBzb2xpZCByZ2JhKDAsMCwwLDAuNTUpIixib3hTaGFkb3c6IjAgMXB4IDNweCByZ2JhKDAsMCwwLDAuNDUpIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgtNTAlLCAtNTAlKSIscG9pbnRlckV2ZW50czoibm9uZSJ9fWZ1bmN0aW9uIFkyKEMpe2lmKCFDKXJldHVybiJpcGhvbmUiO2xldCBaPUMudG9Mb3dlckNhc2UoKTtpZihaLmluY2x1ZGVzKCJpcGFkIikpcmV0dXJuImlwYWQiO2lmKFouaW5jbHVkZXMoIndhdGNoIikpcmV0dXJuIndhdGNoIjtpZihaLmluY2x1ZGVzKCJ2aXNpb24iKSlyZXR1cm4idmlzaW9uIjtyZXR1cm4iaXBob25lIn12YXIgQTE9e2lwaG9uZTp7d2lkdGg6NDI3LGhlaWdodDo4ODEsYmV6ZWxYOjE4LGJlemVsWToxOCxpbm5lclJhZGl1czo1NX0saXBhZDp7d2lkdGg6NDMwLGhlaWdodDo2MDUsYmV6ZWxYOjE2LGJlemVsWToxNixpbm5lclJhZGl1czoxMn0sd2F0Y2g6e3dpZHRoOjI3NCxoZWlnaHQ6MzIyLGJlemVsWDoxMixiZXplbFk6MTIsaW5uZXJSYWRpdXM6Nzl9LHZpc2lvbjp7d2lkdGg6NjQwLGhlaWdodDo0MDAsYmV6ZWxYOjEyLGJlemVsWToxMixpbm5lclJhZGl1czozMn19LFg0PUExLmlwaG9uZS53aWR0aCxxND1BMS5pcGhvbmUuaGVpZ2h0LEc0PUExLmlwaG9uZS5iZXplbFgsUTQ9QTEuaXBob25lLmJlemVsWSwkND1BMS5pcGhvbmUuaW5uZXJSYWRpdXMscTg9eyJpUGhvbmUgMTcgUHJvIE1heCI6e3dpZHRoOjEzMjAsaGVpZ2h0OjI4Njh9LCJpUGhvbmUgMTcgUHJvIjp7d2lkdGg6MTIwNixoZWlnaHQ6MjYyMn0sImlQaG9uZSAxNyI6e3dpZHRoOjEyMDYsaGVpZ2h0OjI2MjJ9LCJpUGhvbmUgQWlyIjp7d2lkdGg6MTI2MCxoZWlnaHQ6MjczNn0sImlQaG9uZSAxNiBQcm8gTWF4Ijp7d2lkdGg6MTMyMCxoZWlnaHQ6Mjg2OH0sImlQaG9uZSAxNiBQcm8iOnt3aWR0aDoxMjA2LGhlaWdodDoyNjIyfSwiaVBob25lIDE2IFBsdXMiOnt3aWR0aDoxMjkwLGhlaWdodDoyNzk2fSwiaVBob25lIDE2Ijp7d2lkdGg6MTE3OSxoZWlnaHQ6MjU1Nn0sImlQaG9uZSAxNmUiOnt3aWR0aDoxMTcwLGhlaWdodDoyNTMyfSwiaVBob25lIDE1IFBybyBNYXgiOnt3aWR0aDoxMjkwLGhlaWdodDoyNzk2fSwiaVBob25lIDE1IFBybyI6e3dpZHRoOjExNzksaGVpZ2h0OjI1NTZ9LCJpUGhvbmUgMTUgUGx1cyI6e3dpZHRoOjEyOTAsaGVpZ2h0OjI3OTZ9LCJpUGhvbmUgMTUiOnt3aWR0aDoxMTc5LGhlaWdodDoyNTU2fSwiaVBhZCBQcm8gMTMtaW5jaCAoTTUpIjp7d2lkdGg6MjA2NCxoZWlnaHQ6Mjc1Mn0sImlQYWQgUHJvIDExLWluY2ggKE01KSI6e3dpZHRoOjE2NjgsaGVpZ2h0OjI0MjB9LCJpUGFkIFBybyAxMy1pbmNoIChNNCkiOnt3aWR0aDoyMDY0LGhlaWdodDoyNzUyfSwiaVBhZCBQcm8gMTEtaW5jaCAoTTQpIjp7d2lkdGg6MTY2OCxoZWlnaHQ6MjQyMH0sImlQYWQgQWlyIDEzLWluY2ggKE0zKSI6e3dpZHRoOjIwNDgsaGVpZ2h0OjI3MzJ9LCJpUGFkIEFpciAxMS1pbmNoIChNMykiOnt3aWR0aDoxNjQwLGhlaWdodDoyMzYwfSwiaVBhZCAoQTE2KSI6e3dpZHRoOjE2NDAsaGVpZ2h0OjIzNjB9LCJpUGFkIG1pbmkgKEExNyBQcm8pIjp7d2lkdGg6MTQ4OCxoZWlnaHQ6MjI2Nn0sIkFwcGxlIFdhdGNoIFVsdHJhIDMgKDQ5bW0pIjp7d2lkdGg6NDIyLGhlaWdodDo1MTR9LCJBcHBsZSBXYXRjaCBVbHRyYSAyICg0OW1tKSI6e3dpZHRoOjQxMCxoZWlnaHQ6NTAyfSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDExICg0Nm1tKSI6e3dpZHRoOjQxNixoZWlnaHQ6NDk2fSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDExICg0Mm1tKSI6e3dpZHRoOjM3NCxoZWlnaHQ6NDQ2fSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDEwICg0Nm1tKSI6e3dpZHRoOjQxNixoZWlnaHQ6NDk2fSwiQXBwbGUgV2F0Y2ggU2VyaWVzIDEwICg0Mm1tKSI6e3dpZHRoOjM3NCxoZWlnaHQ6NDQ2fSwiQXBwbGUgV2F0Y2ggU0UgMyAoNDRtbSkiOnt3aWR0aDozNjgsaGVpZ2h0OjQ0OH0sIkFwcGxlIFdhdGNoIFNFIDMgKDQwbW0pIjp7d2lkdGg6MzI0LGhlaWdodDozOTR9LCJBcHBsZSBXYXRjaCBTRSAoNDRtbSkiOnt3aWR0aDozNjgsaGVpZ2h0OjQ0OH0sIkFwcGxlIFdhdGNoIFNFICg0MG1tKSI6e3dpZHRoOjMyNCxoZWlnaHQ6Mzk0fSwiQXBwbGUgVmlzaW9uIFBybyI6e3dpZHRoOjE5MjAsaGVpZ2h0OjEwODB9fTtmdW5jdGlvbiBmMihDLFope2xldCBKPUMmJkMud2lkdGg+MCYmQy5oZWlnaHQ+MD9DOlosWD0kMihKKTtpZihYKXJldHVybmAke1gud2lkdGh9IC8gJHtYLmhlaWdodH1gO3JldHVybmAke0ExLmlwaG9uZS53aWR0aC0yKkExLmlwaG9uZS5iZXplbFh9IC8gJHtBMS5pcGhvbmUuaGVpZ2h0LTIqQTEuaXBob25lLmJlemVsWX1gfWZ1bmN0aW9uIHAyKEM9ImlwaG9uZSIsWil7bGV0IEo9Wj9xOFtaXTpudWxsO2lmKEopcmV0dXJuIEo7bGV0IFg9QTFbQ107cmV0dXJue3dpZHRoOlgud2lkdGgtMipYLmJlemVsWCxoZWlnaHQ6WC5oZWlnaHQtMipYLmJlemVsWX19ZnVuY3Rpb24gdTIoQz0iaXBob25lIixaKXtpZih6MihaKSlzd2l0Y2goQyl7Y2FzZSJpcGFkIjpyZXR1cm4gNzIwO2Nhc2UidmlzaW9uIjpyZXR1cm4gNTgwO2Nhc2Uid2F0Y2giOnJldHVybiAyMDA7ZGVmYXVsdDpyZXR1cm4gNjIwfXN3aXRjaChDKXtjYXNlImlwYWQiOnJldHVybiA0MDA7Y2FzZSJ3YXRjaCI6cmV0dXJuIDIwMDtjYXNlInZpc2lvbiI6cmV0dXJuIDU4MDtkZWZhdWx0OnJldHVybiAzMjB9fWZ1bmN0aW9uIGMyKEM9ImlwaG9uZSIsWil7bGV0IEo9QTFbQ10sWD1KLndpZHRoLTIqSi5iZXplbFgsRz1KLmhlaWdodC0yKkouYmV6ZWxZO2lmKFg8RyYmejIoWikpcmV0dXJuYCR7Si5pbm5lclJhZGl1cy9HKjEwMH0lIC8gJHtKLmlubmVyUmFkaXVzL1gqMTAwfSVgO3JldHVybmAke0ouaW5uZXJSYWRpdXMvWCoxMDB9JSAvICR7Si5pbm5lclJhZGl1cy9HKjEwMH0lYH12YXIgazU9ajEobnVsbCk7ZnVuY3Rpb24gbDIoQyl7bGV0IFo9cDEoazUpO2lmKCFaKXRocm93IEVycm9yKGA8U2ltdWxhdG9yVG9vbGJhci4ke0N9PiBtdXN0IGJlIHJlbmRlcmVkIGluc2lkZSA8U2ltdWxhdG9yVG9vbGJhcj5gKTtyZXR1cm4gWn12YXIgRDk9e2Rpc3BsYXk6ImZsZXgiLGZsZXhXcmFwOiJ3cmFwIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixnYXA6IjRweCAxMnB4IixwYWRkaW5nOiI4cHggMTJweCIsYm9yZGVyUmFkaXVzOjI0LGJhY2tncm91bmQ6IiMxYzFjMWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKSIsYm94U2hhZG93OiIwIDFweCAycHggcmdiYSgwLDAsMCwwLjIpIixtaW5XaWR0aDoyNDAsd2lkdGg6IjEwMCUifTtmdW5jdGlvbiBVOSh7ZXhlYzpDLG9uUm90YXRlOlosb3JpZW50YXRpb246SixkZXZpY2VVZGlkOlgsZGV2aWNlTmFtZTpHLGRldmljZVJ1bnRpbWU6USxzdHJlYW1pbmc6JD0hMSxkaXNhYmxlZDpZPSExLGNoaWxkcmVuOl8sc3R5bGU6ViwuLi5CfSl7bGV0IEs9WTIoRyksRj17ZXhlYzpDLG9uUm90YXRlOlosb3JpZW50YXRpb246SixkZXZpY2VVZGlkOlgsZGV2aWNlTmFtZTpHLGRldmljZVJ1bnRpbWU6USxkZXZpY2VUeXBlOkssc3RyZWFtaW5nOiQsZGlzYWJsZWQ6WXx8IVh8fCEkfTtyZXR1cm4gcShrNS5Qcm92aWRlcix7dmFsdWU6RixjaGlsZHJlbjpxKCJkaXYiLHsiZGF0YS1zaW11bGF0b3ItdG9vbGJhciI6ITAsc3R5bGU6ey4uLkQ5LC4uLlZ9LC4uLkIsY2hpbGRyZW46X30pfSl9dmFyIE85PXtkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGFsaWduSXRlbXM6ImZsZXgtc3RhcnQiLHRleHRBbGlnbjoibGVmdCIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6IiNmZmYiLHBhZGRpbmc6IjJweCA0cHgiLG1hcmdpbjoiLTJweCAtNHB4Iixib3JkZXJSYWRpdXM6NixjdXJzb3I6InBvaW50ZXIiLG1pbldpZHRoOjAsbWF4V2lkdGg6IjEwMCUiLGxpbmVIZWlnaHQ6MS4yLGZvbnRGYW1pbHk6ImluaGVyaXQifSx6OT1RMihmdW5jdGlvbih7bmFtZTpaLHN1YnRpdGxlOkosaGlkZUNoZXZyb246WCxzdHlsZTpHLG9uTW91c2VFbnRlcjpRLG9uTW91c2VMZWF2ZTokLC4uLll9LF8pe2xldCBWPWwyKCJUaXRsZSIpLFtCLEtdPUkoITEpLEg9Wj8/Vi5kZXZpY2VOYW1lPz8iTm8gc2ltdWxhdG9yIixGPUo/PyhWLmRldmljZVJ1bnRpbWU/Vi5kZXZpY2VSdW50aW1lLnJlcGxhY2UoL1wuLywiICIpOiLigJQiKTtyZXR1cm4gcSgiYnV0dG9uIix7cmVmOl8sdHlwZToiYnV0dG9uIiwiZGF0YS1zaW11bGF0b3ItdG9vbGJhci10aXRsZSI6ITAsb25Nb3VzZUVudGVyOihNKT0+e0soITApLFE/LihNKX0sb25Nb3VzZUxlYXZlOihNKT0+e0soITEpLCQ/LihNKX0sc3R5bGU6ey4uLk85LGJhY2tncm91bmQ6Qj8icmdiYSgyNTUsMjU1LDI1NSwwLjEpIjoidHJhbnNwYXJlbnQiLC4uLkd9LC4uLlksY2hpbGRyZW46W3EoInNwYW4iLHtzdHlsZTp7ZGlzcGxheToiaW5saW5lLWZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjQsZm9udFNpemU6MTIsZm9udFdlaWdodDo2MDAsY29sb3I6IiNmZmYiLG1heFdpZHRoOiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxjaGlsZHJlbjpbSCwhWCYmcSgic3ZnIix7d2lkdGg6IjEwIixoZWlnaHQ6IjEwIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixzdHlsZTp7Y29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC42KSIsZmxleFNocmluazowfSxjaGlsZHJlbjpxKCJwb2x5bGluZSIse3BvaW50czoiNiA5IDEyIDE1IDE4IDkifSl9KV19KSxxKCJzcGFuIix7c3R5bGU6e2ZvbnRTaXplOjEwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNSkiLG1heFdpZHRoOiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxjaGlsZHJlbjpGfSldfSl9KSxNOT17ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6NCxmbGV4U2hyaW5rOjB9O2Z1bmN0aW9uIFc5KHtzdHlsZTpDLC4uLlp9KXtyZXR1cm4gcSgiZGl2Iix7c3R5bGU6ey4uLk05LC4uLkN9LC4uLlp9KX12YXIgUDk9e2JhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLHBhZGRpbmc6Nixib3JkZXJSYWRpdXM6NixjdXJzb3I6InBvaW50ZXIiLGRpc3BsYXk6ImlubGluZS1mbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuOCkiLHRyYW5zaXRpb246ImJhY2tncm91bmQtY29sb3IgMC4xNXMsIGNvbG9yIDAuMTVzIn0sZDI9UTIoZnVuY3Rpb24oe2ZvcmNlRGlzYWJsZWQ6WixzdHlsZTpKLGRpc2FibGVkOlgsb25Nb3VzZUVudGVyOkcsb25Nb3VzZUxlYXZlOlEsY2hpbGRyZW46JCwuLi5ZfSxfKXtsZXQgVj1wMShrNSksQj1YfHxafHxWPy5kaXNhYmxlZCxbSyxIXT1JKCExKTtyZXR1cm4gcSgiYnV0dG9uIix7cmVmOl8sdHlwZToiYnV0dG9uIixkaXNhYmxlZDpCLG9uTW91c2VFbnRlcjooRik9PntIKCEwKSxHPy4oRil9LG9uTW91c2VMZWF2ZTooRik9PntIKCExKSxRPy4oRil9LHN0eWxlOnsuLi5QOSxjb2xvcjpCPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMjUpIjoicmdiYSgyNTUsMjU1LDI1NSwwLjgpIixiYWNrZ3JvdW5kOksmJiFCPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMSkiOiJ0cmFuc3BhcmVudCIsY3Vyc29yOkI/Im5vdC1hbGxvd2VkIjoicG9pbnRlciIsLi4uSn0sLi4uWSxjaGlsZHJlbjokfSl9KTtmdW5jdGlvbiBrOSgpe3JldHVyblsndGVsbCBhcHBsaWNhdGlvbiAiU3lzdGVtIEV2ZW50cyIgdG8gdGVsbCBwcm9jZXNzICJTaW11bGF0b3IiIHRvIHNldCBmcm9udG1vc3QgdG8gdHJ1ZScsJ3RlbGwgYXBwbGljYXRpb24gIlN5c3RlbSBFdmVudHMiIHRvIHRlbGwgcHJvY2VzcyAiU2ltdWxhdG9yIiB0byBwZXJmb3JtIGFjdGlvbiAiQVhSYWlzZSIgb2YgKGZpcnN0IHdpbmRvdyB3aG9zZSBuYW1lIGNvbnRhaW5zICJ3YXRjaE9TIiknLCd0ZWxsIGFwcGxpY2F0aW9uICJTeXN0ZW0gRXZlbnRzIiB0byB0ZWxsIHByb2Nlc3MgIlNpbXVsYXRvciIgdG8gY2xpY2sgbWVudSBpdGVtICJIb21lIiBvZiBtZW51ICJEZXZpY2UiIG9mIG1lbnUgYmFyIGl0ZW0gIkRldmljZSIgb2YgbWVudSBiYXIgMSddLm1hcCgoWik9PmAtZSAnJHtafSdgKS5yZWR1Y2UoKFosSik9PmAke1p9ICR7Sn1gLCJvc2FzY3JpcHQiKX12YXIgQTk9e3BvcnRyYWl0OiJsYW5kc2NhcGVfbGVmdCIsbGFuZHNjYXBlX2xlZnQ6InBvcnRyYWl0X3Vwc2lkZV9kb3duIixwb3J0cmFpdF91cHNpZGVfZG93bjoibGFuZHNjYXBlX3JpZ2h0IixsYW5kc2NhcGVfcmlnaHQ6InBvcnRyYWl0In0sSTk9cSgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46cSgicGF0aCIse2Q6Ik0zIDEwLjUgMTIgM2w5IDcuNVYyMGExIDEgMCAwIDEtMSAxaC01di03aC02djdINGExIDEgMCAwIDEtMS0xeiJ9KX0pLFQ5PXEoInN2ZyIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltxKCJwYXRoIix7ZDoiTTE0LjUgNGgtNUw3IDdINGEyIDIgMCAwIDAtMiAydjlhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0yVjlhMiAyIDAgMCAwLTItMmgtM3oifSkscSgiY2lyY2xlIix7Y3g6IjEyIixjeToiMTMiLHI6IjQifSldfSksRTk9cSgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMTIgMTMiLGZpbGw6ImN1cnJlbnRDb2xvciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpxKCJwYXRoIix7ZDoiTTEwLjIzMDUgMTIuODA3N0g0LjQyMzgzQzMuOTIzODMgMTIuODA3NyAzLjU0Njg4IDEyLjY4NDYgMy4yOTI5NyAxMi40Mzg1QzMuMDQyOTcgMTIuMTk2MyAyLjkxNzk3IDExLjgxOTQgMi45MTc5NyAxMS4zMDc3VjUuNTEyNzRDMi45MTc5NyA0Ljk5NzExIDMuMDQyOTcgNC42MTgyMSAzLjI5Mjk3IDQuMzc2MDJDMy41NDY4OCA0LjEyOTkzIDMuOTIzODMgNC4wMDY4OCA0LjQyMzgzIDQuMDA2ODhIMTAuMjMwNUMxMC43MzQ0IDQuMDA2ODggMTEuMTExMyA0LjEyOTkzIDExLjM2MTMgNC4zNzYwMkMxMS42MTEzIDQuNjE4MjEgMTEuNzM2MyA0Ljk5NzExIDExLjczNjMgNS41MTI3NFYxMS4zMDc3QzExLjczNjMgMTEuODE5NCAxMS42MTEzIDEyLjE5NjMgMTEuMzYxMyAxMi40Mzg1QzExLjExMTMgMTIuNjg0NiAxMC43MzQ0IDEyLjgwNzcgMTAuMjMwNSAxMi44MDc3Wk0xMC4yMTI5IDExLjg2NDNDMTAuNDE2IDExLjg2NDMgMTAuNTYyNSAxMS44MTk0IDEwLjY1MjMgMTEuNzI5NUMxMC43NDYxIDExLjY0MzYgMTAuNzkzIDExLjQ5NzEgMTAuNzkzIDExLjI5MDFWNS41MjQ0NkMxMC43OTMgNS4zMTc0MyAxMC43NDYxIDUuMTcwOTQgMTAuNjUyMyA1LjA4NTAxQzEwLjU2MjUgNC45OTUxNiAxMC40MTYgNC45NTAyNCAxMC4yMTI5IDQuOTUwMjRINC40NDE0MUM0LjI0MjE5IDQuOTUwMjQgNC4wOTU3IDQuOTk1MTYgNC4wMDE5NSA1LjA4NTAxQzMuOTA4MiA1LjE3MDk0IDMuODYxMzMgNS4zMTc0MyAzLjg2MTMzIDUuNTI0NDZWMTEuMjkwMUMzLjg2MTMzIDExLjQ5NzEgMy45MDgyIDExLjY0MzYgNC4wMDE5NSAxMS43Mjk1QzQuMDk1NyAxMS44MTk0IDQuMjQyMTkgMTEuODY0MyA0LjQ0MTQxIDExLjg2NDNIMTAuMjEyOVpNMi45MTc5NyAyLjU4MzA1VjAuNDE1MDgzQzIuOTE3OTcgMC4yMDAyNCAyLjk4NjMzIDAuMDY5MzgwMyAzLjEyMzA1IDAuMDIyNTA1M0MzLjI1OTc3IC0wLjAyODI3NTkgMy40MTAxNiAwLjAwNjg4MDMzIDMuNTc0MjIgMC4xMjc5NzRMNS4wNTA3OCAxLjIxMTk2QzUuMTc1NzggMS4zMDU3MSA1LjIzODI4IDEuNDAxNDEgNS4yMzgyOCAxLjQ5OTA3QzUuMjM4MjggMS41OTY3MiA1LjE3NTc4IDEuNjkyNDMgNS4wNTA3OCAxLjc4NjE4TDMuNTc0MjIgMi44NjQzQzMuNDEwMTYgMi45ODU0IDMuMjU5NzcgMy4wMjI1MSAzLjEyMzA1IDIuOTc1NjNDMi45ODYzMyAyLjkyNDg1IDIuOTE3OTcgMi43OTM5OSAyLjkxNzk3IDIuNTgzMDVaTTMuNTMzMiAxLjE1MzM2QzMuNjI2OTUgMS4xNTMzNiAzLjcwNzAzIDEuMTg2NTcgMy43NzM0NCAxLjI1Mjk3QzMuODQzNzUgMS4zMTkzOCAzLjg3ODkxIDEuMzk3NTEgMy44Nzg5MSAxLjQ4NzM1QzMuODc4OTEgMS41ODExIDMuODQzNzUgMS42NjMxMyAzLjc3MzQ0IDEuNzMzNDRDMy43MDcwMyAxLjc5OTg1IDMuNjI2OTUgMS44MzMwNSAzLjUzMzIgMS44MzMwNUgyLjgwNjY0QzIuMzgwODYgMS44MzMwNSAyLjAxMTcyIDEuOTI0ODUgMS42OTkyMiAyLjEwODQ0QzEuMzkwNjIgMi4yODgxMyAxLjE1MjM0IDIuNTM4MTMgMC45ODQzNzUgMi44NTg0NEMwLjgxNjQwNiAzLjE3ODc2IDAuNzMyNDIyIDMuNTQ1OTQgMC43MzI0MjIgMy45NjAwMVY0LjgzODkxQzAuNzMyNDIyIDQuOTM2NTcgMC42OTcyNjYgNS4wMjI1MSAwLjYyNjk1MyA1LjA5NjcyQzAuNTUyNzM0IDUuMTY3MDQgMC40NjQ4NDQgNS4yMDIxOSAwLjM2MzI4MSA1LjIwMjE5QzAuMjY1NjI1IDUuMjAyMTkgMC4xODE2NDEgNS4xNjcwNCAwLjExMTMyOCA1LjA5NjcyQzAuMDM3MTA5NCA1LjAyMjUxIDAgNC45MzY1NyAwIDQuODM4OTFWMy45NjAwMUMwIDMuNDAxNDEgMC4xMTcxODggMi45MTExOCAwLjM1MTU2MiAyLjQ4OTNDMC41ODIwMzEgMi4wNjc0MyAwLjkwODIwMyAxLjczOTMgMS4zMzAwOCAxLjUwNDkzQzEuNzQ4MDUgMS4yNzA1NSAyLjIzODI4IDEuMTUzMzYgMi44MDA3OCAxLjE1MzM2SDMuNTMzMloifSl9KSx3OT1RMihmdW5jdGlvbih7b25DbGljazpaLC4uLkp9LFgpe2xldCBHPWwyKCJIb21lQnV0dG9uIik7cmV0dXJuIHEoZDIse3JlZjpYLCJhcmlhLWxhYmVsIjoiSG9tZSIsb25DbGljazooUSk9PntpZihaPy4oUSksUS5kZWZhdWx0UHJldmVudGVkKXJldHVybjtpZihHLmRldmljZVR5cGU9PT0id2F0Y2giKUcuZXhlYyhrOSgpKTtlbHNlIEcuZXhlYygic2VydmUtc2ltIGJ1dHRvbiBob21lIil9LC4uLkosY2hpbGRyZW46STl9KX0pLFM5PVEyKGZ1bmN0aW9uKHtvbkNsaWNrOlosLi4uSn0sWCl7bGV0IEc9bDIoIlNjcmVlbnNob3RCdXR0b24iKTtyZXR1cm4gcShkMix7cmVmOlgsImFyaWEtbGFiZWwiOiJTY3JlZW5zaG90IixvbkNsaWNrOihRKT0+e2lmKFo/LihRKSxRLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2lmKEcuZGV2aWNlVWRpZClHLmV4ZWMoYHhjcnVuIHNpbWN0bCBpbyAke0cuZGV2aWNlVWRpZH0gc2NyZWVuc2hvdCB+L0Rlc2t0b3Avc2VydmUtc2ltLXNjcmVlbnNob3QtJChkYXRlICslcykucG5nYCl9LC4uLkosY2hpbGRyZW46VDl9KX0pLGI5PVEyKGZ1bmN0aW9uKHtvbkNsaWNrOlosZm9yY2VEaXNhYmxlZDpKLC4uLlh9LEcpe2xldCBRPWwyKCJSb3RhdGVCdXR0b24iKSwkPVEuZGV2aWNlVHlwZT09PSJ3YXRjaCJ8fFEuZGV2aWNlVHlwZT09PSJ2aXNpb24iLFtZLF9dPUkoInBvcnRyYWl0Iik7cmV0dXJuIHkoKCk9PntfKFEub3JpZW50YXRpb24/PyJwb3J0cmFpdCIpfSxbUS5kZXZpY2VVZGlkLFEub3JpZW50YXRpb25dKSxxKGQyLHtyZWY6RywiYXJpYS1sYWJlbCI6IlJvdGF0ZSBkZXZpY2UiLGZvcmNlRGlzYWJsZWQ6Snx8JCxvbkNsaWNrOihWKT0+e2lmKFo/LihWKSxWLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2lmKCFRLmRldmljZVVkaWR8fCQpcmV0dXJuO2xldCBCPUE5W1Eub3JpZW50YXRpb24/P1ldO2lmKF8oQiksUS5vblJvdGF0ZSlRLm9uUm90YXRlKEIpO2Vsc2UgUS5leGVjKGBzZXJ2ZS1zaW0gcm90YXRlICR7Qn0gLWQgJHtRLmRldmljZVVkaWR9YCl9LC4uLlgsY2hpbGRyZW46RTl9KX0pLEQxPVU5O0QxLlRpdGxlPXo5O0QxLkFjdGlvbnM9Vzk7RDEuQnV0dG9uPWQyO0QxLkhvbWVCdXR0b249dzk7RDEuU2NyZWVuc2hvdEJ1dHRvbj1TOTtEMS5Sb3RhdGVCdXR0b249Yjk7ZnVuY3Rpb24gUjkoQyxaLEope2xldCBYPUoubGF0Kk1hdGguUEkvMTgwLEc9KEMtSi5sYXQpKk1hdGguUEkvMTgwO3JldHVybnt4OihaLUoubG5nKSpNYXRoLlBJLzE4MCpNYXRoLmNvcyhYKSo2MzcxMDAwLHo6LUcqNjM3MTAwMH19ZnVuY3Rpb24geTkoQyxaLEope2xldCBYPUoubGF0Kk1hdGguUEkvMTgwLEc9LVovNjM3MTAwMCooMTgwL01hdGguUEkpLFE9Qy8oNjM3MTAwMCpNYXRoLmNvcyhYKSkqKDE4MC9NYXRoLlBJKTtyZXR1cm57bGF0OkoubGF0K0csbG5nOkoubG5nK1F9fWZ1bmN0aW9uIGo5KEMsWixKLFgsRyl7bGV0IFE9RypHLCQ9USpHLFk9KF8sVixCLEspPT4wLjUqKDIqVisoLV8rQikqRysoMipfLTUqVis0KkItSykqUSsoLV8rMypWLTMqQitLKSokKTtyZXR1cm57eDpZKEMueCxaLngsSi54LFgueCksejpZKEMueixaLnosSi56LFgueikseTpZKEMueSxaLnksSi55LFgueSkscmF3QWx0OlkoQy5yYXdBbHQsWi5yYXdBbHQsSi5yYXdBbHQsWC5yYXdBbHQpfX1mdW5jdGlvbiBoOShDLFosSil7aWYoQy5sZW5ndGg8MilyZXR1cm4gQy5zbGljZSgpO2xldCBYPVtdLEc9Qy5sZW5ndGgsUT1KP0c6Ry0xO2ZvcihsZXQgJD0wOyQ8UTskKyspe2xldCBZPUNbSj8oJC0xK0cpJUc6TWF0aC5tYXgoMCwkLTEpXSxfPUNbJCVHXSxWPUNbKCQrMSklR10sQj1DW0o/KCQrMiklRzpNYXRoLm1pbihHLTEsJCsyKV0sSz1WLngtXy54LEg9Vi56LV8ueixGPU1hdGguaHlwb3QoSyxIKSxNPU1hdGgubWF4KDIsTWF0aC5jZWlsKEYvWikpO2ZvcihsZXQgTD0wO0w8TTtMKyspe2xldCBEPUwvTTtYLnB1c2goajkoWSxfLFYsQixEKSl9fWlmKCFKKVgucHVzaChDW0ctMV0pO3JldHVybiBYfWZ1bmN0aW9uIEc4KEMpe2lmKEMud2F5cG9pbnRzLmxlbmd0aDwyKXRocm93IEVycm9yKGBUcmFpbCAke0MuaWR9IG5lZWRzIGF0IGxlYXN0IDIgd2F5cG9pbnRzYCk7bGV0IFo9e2xhdDpDLndheXBvaW50cy5yZWR1Y2UoKEwsRCk9PkwrRC5sYXQsMCkvQy53YXlwb2ludHMubGVuZ3RoLGxuZzpDLndheXBvaW50cy5yZWR1Y2UoKEwsRCk9PkwrRC5sbmcsMCkvQy53YXlwb2ludHMubGVuZ3RofSxKPUMud2F5cG9pbnRzLm1hcCgoTCk9PkwuYWx0Pz8wKSxYPU1hdGgubWluKC4uLkopLEc9TWF0aC5tYXgoLi4uSiksUT1DLndheXBvaW50cy5tYXAoKEwpPT57bGV0e3g6RCx6Ok99PVI5KEwubGF0LEwubG5nLFopLFA9TC5hbHQ/PzA7cmV0dXJue3g6RCx6Ok8seTpQLVgscmF3QWx0OlB9fSksJD1oOShRLDgsISFDLmxvb3ApLFk9W10sXz0wO2ZvcihsZXQgTD0wO0w8JC5sZW5ndGg7TCsrKXtsZXQgRD0kW0xdO2lmKEw+MCl7bGV0IHc9JFtMLTFdO18rPU1hdGguaHlwb3QoRC54LXcueCxELnotdy56LEQueS13LnkpfWxldHtsYXQ6Tyxsbmc6UH09eTkoRC54LEQueixaKSxFPU1hdGgubWF4KDAsRC55KTtZLnB1c2goe3g6RC54LHo6RC56LHk6RSxhcmM6XyxsYXQ6Tyxsbmc6UH0pfWxldCBWPTEvMCxCPS0xLzAsSz0xLzAsSD0tMS8wLEY9MS8wLE09LTEvMDtmb3IobGV0IEwgb2YgWSl7aWYoTC54PFYpVj1MLng7aWYoTC54PkIpQj1MLng7aWYoTC56PEspSz1MLno7aWYoTC56PkgpSD1MLno7aWYoTC55PEYpRj1MLnk7aWYoTC55Pk0pTT1MLnl9cmV0dXJue3RyYWlsOkMsb3JpZ2luOloscG9pbnRzOlksdG90YWxEaXN0YW5jZTpZW1kubGVuZ3RoLTFdLmFyYyxib3VuZHM6e3g6W1YsQl0seTpbRixNXSx6OltLLEhdfSxyYXdNaW5BbHQ6WCxyYXdNYXhBbHQ6R319ZnVuY3Rpb24gbzEoQyxaKXtsZXQgSj1DLnRvdGFsRGlzdGFuY2U7aWYoSj09PTApcmV0dXJuIEMucG9pbnRzWzBdO2xldCBYPVo7aWYoQy50cmFpbC5sb29wKVg9KFglSitKKSVKO2Vsc2V7aWYoWDw9MClyZXR1cm4gQy5wb2ludHNbMF07aWYoWD49SilyZXR1cm4gQy5wb2ludHNbQy5wb2ludHMubGVuZ3RoLTFdfWxldCBHPTAsUT1DLnBvaW50cy5sZW5ndGgtMTt3aGlsZShHKzE8USl7bGV0IEI9RytRPj4+MTtpZihDLnBvaW50c1tCXS5hcmM8PVgpRz1CO2Vsc2UgUT1CfWxldCAkPUMucG9pbnRzW0ddLFk9Qy5wb2ludHNbUV0sXz1ZLmFyYy0kLmFyYyxWPV89PT0wPzA6KFgtJC5hcmMpL187cmV0dXJue3g6JC54KyhZLngtJC54KSpWLHo6JC56KyhZLnotJC56KSpWLHk6JC55KyhZLnktJC55KSpWLGFyYzpYLGxhdDokLmxhdCsoWS5sYXQtJC5sYXQpKlYsbG5nOiQubG5nKyhZLmxuZy0kLmxuZykqVn19ZnVuY3Rpb24gQTUoQyl7c3dpdGNoKEMpe2Nhc2Uid2FsayI6cmV0dXJuIDEuNDtjYXNlInJ1biI6cmV0dXJuIDM7Y2FzZSJjeWNsZSI6cmV0dXJuIDUuNTtjYXNlImRyaXZlIjpyZXR1cm4gMTMuNH19dmFyIHY5PVt7bGF0OjM3LjMzMjcyLGxuZzotMTIyLjAwODMzLGFsdDo0OX0se2xhdDozNy4zMzMwOSxsbmc6LTEyMi4wMDczNSxhbHQ6NDh9LHtsYXQ6MzcuMzMzNzMsbG5nOi0xMjIuMDA2NjMsYWx0OjQ5fSx7bGF0OjM3LjMzNDU0LGxuZzotMTIyLjAwNjI3LGFsdDo0OX0se2xhdDozNy4zMzU0LGxuZzotMTIyLjAwNjMzLGFsdDo0OX0se2xhdDozNy4zMzYxOCxsbmc6LTEyMi4wMDY3OSxhbHQ6NDV9LHtsYXQ6MzcuMzM2NzUsbG5nOi0xMjIuMDA3NTksYWx0OjQ1fSx7bGF0OjM3LjMzNzA0LGxuZzotMTIyLjAwODYxLGFsdDo0Nn0se2xhdDozNy4zMzY5OCxsbmc6LTEyMi4wMDk2OSxhbHQ6NDh9LHtsYXQ6MzcuMzM2NjIsbG5nOi0xMjIuMDEwNjYsYWx0OjQ4fSx7bGF0OjM3LjMzNTk4LGxuZzotMTIyLjAxMTM4LGFsdDo0OX0se2xhdDozNy4zMzUxNyxsbmc6LTEyMi4wMTE3NCxhbHQ6NTB9LHtsYXQ6MzcuMzM0MzEsbG5nOi0xMjIuMDExNjksYWx0OjUwfSx7bGF0OjM3LjMzMzU0LGxuZzotMTIyLjAxMTIyLGFsdDo1MH0se2xhdDozNy4zMzI5Nixsbmc6LTEyMi4wMTA0MixhbHQ6NTF9LHtsYXQ6MzcuMzMyNjgsbG5nOi0xMjIuMDA5NCxhbHQ6NTB9XSxtOT1be2xhdDozNy44MzIxMixsbmc6LTEyMi40ODA2NSxhbHQ6MzB9LHtsYXQ6MzcuODI5MzcsbG5nOi0xMjIuNDc5NzQsYWx0OjMwfSx7bGF0OjM3LjgyNjQ5LGxuZzotMTIyLjQ3OTQsYWx0OjMwfSx7bGF0OjM3LjgyMzYyLGxuZzotMTIyLjQ3OTA3LGFsdDo0NX0se2xhdDozNy44MjA3NCxsbmc6LTEyMi40Nzg3MyxhbHQ6NTl9LHtsYXQ6MzcuODE3ODYsbG5nOi0xMjIuNDc4MzksYWx0OjY2fSx7bGF0OjM3LjgxNDk4LGxuZzotMTIyLjQ3ODA2LGFsdDo2Nn0se2xhdDozNy44MTIxMSxsbmc6LTEyMi40Nzc3MixhbHQ6NTh9LHtsYXQ6MzcuODA5MjMsbG5nOi0xMjIuNDc3MzQsYWx0OjQ0fSx7bGF0OjM3LjgwOTQ5LGxuZzotMTIyLjQ3NzMsYWx0OjQ1fSx7bGF0OjM3LjgxMjM2LGxuZzotMTIyLjQ3NzY1LGFsdDo1OX0se2xhdDozNy44MTUyNCxsbmc6LTEyMi40Nzc5OCxhbHQ6NjZ9LHtsYXQ6MzcuODE4MTIsbG5nOi0xMjIuNDc4MzIsYWx0OjY2fSx7bGF0OjM3LjgyMSxsbmc6LTEyMi40Nzg2NixhbHQ6NTh9LHtsYXQ6MzcuODIzODcsbG5nOi0xMjIuNDc5LGFsdDo0NH0se2xhdDozNy44MjY3NSxsbmc6LTEyMi40NzkzMyxhbHQ6MzB9LHtsYXQ6MzcuODI5NjMsbG5nOi0xMjIuNDc5NjcsYWx0OjMwfSx7bGF0OjM3LjgzMjMzLGxuZzotMTIyLjQ4MDcyLGFsdDozMH1dLGc5PVt7bGF0OjM3Ljg4NjY0LGxuZzotMTIyLjYyNTk5LGFsdDoxMjF9LHtsYXQ6MzcuODg4ODcsbG5nOi0xMjIuNjIzMzIsYWx0OjEzNX0se2xhdDozNy44OTExNSxsbmc6LTEyMi42MjE2LGFsdDoxNjR9LHtsYXQ6MzcuODkzNTMsbG5nOi0xMjIuNjE5MjEsYWx0OjE4MH0se2xhdDozNy44OTQ2Nixsbmc6LTEyMi42MTU3NyxhbHQ6MjIwfSx7bGF0OjM3Ljg5NjMxLGxuZzotMTIyLjYxMjY4LGFsdDoyNzN9LHtsYXQ6MzcuODk5MTcsbG5nOi0xMjIuNjEwOTgsYWx0OjMxM30se2xhdDozNy45MDE2Nixsbmc6LTEyMi42MDg1NSxhbHQ6MzQyfSx7bGF0OjM3LjkwMTk5LGxuZzotMTIyLjYwNjAxLGFsdDo0MDh9LHtsYXQ6MzcuOTAzMzksbG5nOi0xMjIuNjA0MDEsYWx0OjQ1MH0se2xhdDozNy45MDY2Mixsbmc6LTEyMi42MDI5MSxhbHQ6NDQwfSx7bGF0OjM3LjkwOTcxLGxuZzotMTIyLjYwMTczLGFsdDo0MzJ9LHtsYXQ6MzcuOTEyMTMsbG5nOi0xMjIuNjAwMDcsYWx0OjQzNn0se2xhdDozNy45MTQzOSxsbmc6LTEyMi41OTc4LGFsdDo0MTB9LHtsYXQ6MzcuOTEyODUsbG5nOi0xMjIuNTk1MDQsYWx0OjQyMn0se2xhdDozNy45MTI3NCxsbmc6LTEyMi41OTIwMixhbHQ6NDI1fSx7bGF0OjM3LjkxNSxsbmc6LTEyMi41OTAzMixhbHQ6NDEyfSx7bGF0OjM3LjkxNjM3LGxuZzotMTIyLjU4OTAzLGFsdDo0MDZ9LHtsYXQ6MzcuOTE0ODEsbG5nOi0xMjIuNTg1OTUsYWx0OjM4Mn0se2xhdDozNy45MTc0LGxuZzotMTIyLjU4Mzk4LGFsdDozNzJ9LHtsYXQ6MzcuOTE2NDIsbG5nOi0xMjIuNTgyMzYsYWx0OjM1Mn0se2xhdDozNy45MTQ4MSxsbmc6LTEyMi41ODAxMSxhbHQ6MzQyfV0seDk9W3tsYXQ6NDAuNzgyMTYsbG5nOi03My45NjI1NCxhbHQ6Mzd9LHtsYXQ6NDAuNzgyMjEsbG5nOi03My45NjA5OCxhbHQ6MzZ9LHtsYXQ6NDAuNzgzMjgsbG5nOi03My45NjAxLGFsdDozNn0se2xhdDo0MC43ODQ0LGxuZzotNzMuOTU5MyxhbHQ6MzZ9LHtsYXQ6NDAuNzg1NSxsbmc6LTczLjk1ODQ4LGFsdDozNn0se2xhdDo0MC43ODY2NCxsbmc6LTczLjk1Nzc0LGFsdDozNn0se2xhdDo0MC43ODc5LGxuZzotNzMuOTU3NjQsYWx0OjM2fSx7bGF0OjQwLjc4ODk4LGxuZzotNzMuOTU3OTIsYWx0OjM2fSx7bGF0OjQwLjc4ODY4LGxuZzotNzMuOTU5NTEsYWx0OjM3fSx7bGF0OjQwLjc4ODk3LGxuZzotNzMuOTYxMTIsYWx0OjM2fSx7bGF0OjQwLjc4ODMzLGxuZzotNzMuOTYyNSxhbHQ6Mzd9LHtsYXQ6NDAuNzg4MjgsbG5nOi03My45NjQxNixhbHQ6Mzd9LHtsYXQ6NDAuNzg4MDUsbG5nOi03My45NjU3MyxhbHQ6MzZ9LHtsYXQ6NDAuNzg2OTEsbG5nOi03My45NjYzNixhbHQ6MzZ9LHtsYXQ6NDAuNzg1NjYsbG5nOi03My45NjY2NSxhbHQ6MzZ9LHtsYXQ6NDAuNzg0NTgsbG5nOi03My45NjYwOCxhbHQ6MzZ9LHtsYXQ6NDAuNzg0MDIsbG5nOi03My45NjQ1OSxhbHQ6MzZ9LHtsYXQ6NDAuNzgzMjIsbG5nOi03My45NjMzNCxhbHQ6Mzd9XSxmOT1be2xhdDozNy41OTY1OSxsbmc6LTEyMi41MDMxNixhbHQ6NH0se2xhdDozNy41OTU1NSxsbmc6LTEyMi41MDQyNCxhbHQ6NH0se2xhdDozNy41OTQ1Mixsbmc6LTEyMi41MDUzNCxhbHQ6NX0se2xhdDozNy41OTMyOSxsbmc6LTEyMi41MDU4OCxhbHQ6OX0se2xhdDozNy41OTIxMixsbmc6LTEyMi41MDUwOCxhbHQ6MjB9LHtsYXQ6MzcuNTkxLGxuZzotMTIyLjUwNDEzLGFsdDoyOX0se2xhdDozNy41ODk3NCxsbmc6LTEyMi41MDQxNixhbHQ6NDB9LHtsYXQ6MzcuNTg4Nyxsbmc6LTEyMi41MDUyNCxhbHQ6NTF9LHtsYXQ6MzcuNTg3NDUsbG5nOi0xMjIuNTA0OTYsYWx0OjYwfSx7bGF0OjM3LjU4NjI3LGxuZzotMTIyLjUwNDIyLGFsdDo3MX0se2xhdDozNy41ODUzOSxsbmc6LTEyMi41MDUzNCxhbHQ6ODJ9LHtsYXQ6MzcuNTg1MDUsbG5nOi0xMjIuNTA2OTgsYWx0OjkzfSx7bGF0OjM3LjU4NTM5LGxuZzotMTIyLjUwNTM0LGFsdDo4Mn0se2xhdDozNy41ODYyNyxsbmc6LTEyMi41MDQyMixhbHQ6NzF9LHtsYXQ6MzcuNTg3NDUsbG5nOi0xMjIuNTA0OTYsYWx0OjYwfSx7bGF0OjM3LjU4ODcsbG5nOi0xMjIuNTA1MjQsYWx0OjUxfSx7bGF0OjM3LjU4OTc0LGxuZzotMTIyLjUwNDE2LGFsdDo0MH0se2xhdDozNy41OTEsbG5nOi0xMjIuNTA0MTMsYWx0OjI5fSx7bGF0OjM3LjU5MjEyLGxuZzotMTIyLjUwNTA4LGFsdDoyMH0se2xhdDozNy41OTMyOSxsbmc6LTEyMi41MDU4OCxhbHQ6OX0se2xhdDozNy41OTQ1Mixsbmc6LTEyMi41MDUzNCxhbHQ6NX0se2xhdDozNy41OTU1NSxsbmc6LTEyMi41MDQyNCxhbHQ6NH1dLGkxPVt7aWQ6ImFwcGxlLXBhcmstbG9vcCIsbmFtZToiQXBwbGUgUGFyayBMb29wIixkZXNjcmlwdGlvbjoiQ3VwZXJ0aW5vIOKAoiBmbGF0IHJpbmcgcm9hZCIsbW9kZToid2FsayIsd2F5cG9pbnRzOnY5LGxvb3A6ITB9LHtpZDoiZ29sZGVuLWdhdGUiLG5hbWU6IkdvbGRlbiBHYXRlIENyb3NzaW5nIixkZXNjcmlwdGlvbjoiU2FuIEZyYW5jaXNjbyDigKIgYnJpZGdlIHJvdW5kLXRyaXAiLG1vZGU6InJ1biIsd2F5cG9pbnRzOm05LGxvb3A6ITB9LHtpZDoidGFtLXJpZGdlIixuYW1lOiJNdC4gVGFtIFJpZGdlIixkZXNjcmlwdGlvbjoiU3RpbnNvbiBCZWFjaCDigKIgU3RlZXAgUmF2aW5lICsgTWF0dCBEYXZpcyBsb29wIixtb2RlOiJ3YWxrIix3YXlwb2ludHM6ZzksbG9vcDohMH0se2lkOiJjZW50cmFsLXBhcmsiLG5hbWU6IlJlc2Vydm9pciBMb29wIixkZXNjcmlwdGlvbjoiQ2VudHJhbCBQYXJrIOKAoiAyLjUga20iLG1vZGU6InJ1biIsd2F5cG9pbnRzOng5LGxvb3A6ITB9LHtpZDoicGNoLXBhY2lmaWNhIixuYW1lOiJQYWNpZmljIENvYXN0IEh3eSIsZGVzY3JpcHRpb246IlBhY2lmaWNhIOKAoiBEZXZpbCdzIFNsaWRlIHJvdW5kLXRyaXAiLG1vZGU6ImRyaXZlIix3YXlwb2ludHM6ZjksbG9vcDohMH1dO2Z1bmN0aW9uIGEyKHtvcGVuOkN9KXtyZXR1cm4gcSgic3ZnIix7d2lkdGg6IjEwIixoZWlnaHQ6IjEwIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjbGFzc05hbWU6ImxlbS1jaGV2cm9uIixzdHlsZTp7dHJhbnNpdGlvbjoidHJhbnNmb3JtIDAuMTVzLCBjb2xvciAwLjEycyIsdHJhbnNmb3JtOkM/InJvdGF0ZSgxODBkZWcpIjoicm90YXRlKDBkZWcpIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjUpIn0sY2hpbGRyZW46cSgicG9seWxpbmUiLHtwb2ludHM6IjYgOSAxMiAxNSAxOCA5In0pfSl9ZnVuY3Rpb24gbzIoe2RpcjpDfSl7cmV0dXJuIHEoInN2ZyIse3dpZHRoOiI5IixoZWlnaHQ6IjkiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoiY3VycmVudENvbG9yIixzdHlsZTp7bWFyZ2luUmlnaHQ6M30sY2hpbGRyZW46Qz09PSJ1cCI/cSgicG9seWdvbiIse3BvaW50czoiMTIsNCAyMCwxOCA0LDE4In0pOnEoInBvbHlnb24iLHtwb2ludHM6IjQsNiAyMCw2IDEyLDIwIn0pfSl9ZnVuY3Rpb24gSTUoKXtyZXR1cm4gcSgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjExIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6ImN1cnJlbnRDb2xvciIsY2hpbGRyZW46cSgicG9seWdvbiIse3BvaW50czoiNiw0IDIwLDEyIDYsMjAifSl9KX1mdW5jdGlvbiBUNSgpe3JldHVybiBxKCJzdmciLHt3aWR0aDoiMTEiLGhlaWdodDoiMTEiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoiY3VycmVudENvbG9yIixjaGlsZHJlbjpbcSgicmVjdCIse3g6IjYiLHk6IjQiLHdpZHRoOiI0IixoZWlnaHQ6IjE2In0pLHEoInJlY3QiLHt4OiIxNCIseToiNCIsd2lkdGg6IjQiLGhlaWdodDoiMTYifSldfSl9ZnVuY3Rpb24gRTUoKXtyZXR1cm4gcSgic3ZnIix7d2lkdGg6IjEwIixoZWlnaHQ6IjEwIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6ImN1cnJlbnRDb2xvciIsY2hpbGRyZW46cSgicmVjdCIse3g6IjUiLHk6IjUiLHdpZHRoOiIxNCIsaGVpZ2h0OiIxNCIscng6IjEuNSJ9KX0pfWZ1bmN0aW9uIHc1KCl7cmV0dXJuIHEoInN2ZyIse3dpZHRoOiIxMiIsaGVpZ2h0OiIxMiIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLCJhcmlhLWhpZGRlbiI6InRydWUiLGNoaWxkcmVuOltxKCJwYXRoIix7ZDoiTTEyIDZhMiAyIDAgMCAxIDMuNDE0LTEuNDE0bDYgNmEyIDIgMCAwIDEgMCAyLjgyOGwtNiA2QTIgMiAwIDAgMSAxMiAxOHoifSkscSgicGF0aCIse2Q6Ik0yIDZhMiAyIDAgMCAxIDMuNDE0LTEuNDE0bDYgNmEyIDIgMCAwIDEgMCAyLjgyOGwtNiA2QTIgMiAwIDAgMSAyIDE4eiJ9KV19KX1mdW5jdGlvbiBTNSgpe3JldHVybiBxKCJzdmciLHt3aWR0aDoiOSIsaGVpZ2h0OiIxNCIsdmlld0JveDoiNCAyIDkgMTMiLGZpbGw6ImN1cnJlbnRDb2xvciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjpxKCJwYXRoIix7ZDoiTTYuMDA4NTIgMTQuODA1NEM1Ljg5MTgxIDE0LjkzNSA1Ljc1ODE1IDE0Ljk5OTggNS42MDc1NiAxNC45OTk4QzUuNDU2OTYgMTUuMDAzMyA1LjMyMzMgMTQuOTYxMyA1LjIwNjU5IDE0Ljg3MzdDNS4wOTM2NCAxNC43ODYxIDUuMDI1ODcgMTQuNjcyMyA1LjAwMzI4IDE0LjUzMjJDNC45ODQ0NiAxNC4zOTIxIDUuMDQ2NTggMTQuMjQ1IDUuMTg5NjUgMTQuMDkwOUw2Ljk0NTk5IDEyLjE1MjJMNy4yNDUzIDEwLjg3NTVMOC4xOTk3MSAxMS45ODkzTDguMDU4NTMgMTIuMzkzOUM4LjAyMDg4IDEyLjQ5NTUgNy45ODY5OSAxMi41NzA4IDcuOTU2ODcgMTIuNjE5OEM3LjkzMDUyIDEyLjY2ODggNy44NzQwNCAxMi43NDA2IDcuNzg3NDUgMTIuODM1Mkw2LjAwODUyIDE0LjgwNTRaTTEwLjM0NTcgMTQuNjQyNUw5LjEwMzI5IDEyLjMwNDZDOS4wNzY5NCAxMi4yNjI1IDkuMDU0MzUgMTIuMjIyMyA5LjAzNTUzIDEyLjE4MzdDOS4wMTY3IDEyLjE0NTIgOC45NzcxNyAxMi4wOTA5IDguOTE2OTMgMTIuMDIwOUw3LjcxOTY4IDEwLjYxODFDNy40OTM3OSAxMC4zNTU0IDcuMzM3NTQgMTAuMTI5NSA3LjI1MDk1IDkuOTQwMzRDNy4xNjQzNSA5Ljc0NzcgNy4xMzQyNCA5LjQ5OTAxIDcuMTYwNTkgOS4xOTQyOUw3LjI2MjI0IDcuOTgwNjVDNy4yNjk3NyA3LjkwNzEgNy4yMzIxMiA3Ljg1NDU2IDcuMTQ5MjkgNy44MjMwNEM3LjA2NjQ3IDcuNzkxNTEgNi45ODU1MiA3LjgwOTAzIDYuOTA2NDYgNy44NzU1N0w2LjQ3MTYxIDguMjQzMzRMNi4zNDE3MiA5LjY3MjM5QzYuMzIyODkgOS44NDc1MiA2LjI2NDU0IDkuOTc4ODcgNi4xNjY2NSAxMC4wNjY0QzYuMDY4NzYgMTAuMTU0IDUuOTM4ODcgMTAuMTkyNSA1Ljc3Njk4IDEwLjE4MkM1LjYxMTMyIDEwLjE3NSA1LjQ4MzMxIDEwLjExOSA1LjM5Mjk1IDEwLjAxMzlDNS4zMDYzNiA5LjkwODgyIDUuMjY4NzEgOS43NzM5NyA1LjI4MDAxIDkuNjA5MzVMNS4zODczMSA4LjMwNjM5QzUuNDAyMzcgOC4xMjc3NiA1LjQzODEzIDcuOTc1NCA1LjQ5NDYxIDcuODQ5MzFDNS41NTQ4NSA3LjcyMzIxIDUuNjYwMjYgNy41OTE4NyA1LjgxMDg2IDcuNDU1MjdMNi43MTQ0NSA2LjYyNTE2QzcuMDA0MzUgNi4zNjI0NyA3LjI2OTc3IDYuMTYxMDcgNy41MTA3MyA2LjAyMDk2QzcuNzUxNjggNS44NzczNiA4LjAyODQxIDUuODA1NTYgOC4zNDA5IDUuODA1NTZDOC43NTg4IDUuODA1NTYgOS4wNzg4MiA1LjkzMzQgOS4zMDA5NSA2LjE4OTA5QzkuNTI2ODUgNi40NDQ3OCA5LjYyNDc0IDYuNzYxNzYgOS41OTQ2MiA3LjE0MDA0TDkuNDc2MDIgOC43MzE5NUM5LjQ1MzQzIDkuMDE1NjYgOS40MTk1NSA5LjI2MjU5IDkuMzc0MzcgOS40NzI3NUM5LjMyOTE5IDkuNjgyOSA5LjI1Mzg5IDkuOTI5ODMgOS4xNDg0NyAxMC4yMTM1TDkuMDkyIDEwLjM2MDZMOS44NjU2OSAxMS4zNzk5QzkuOTIyMTcgMTEuNDUzNCA5Ljk4MDUyIDExLjUzNCAxMC4wNDA4IDExLjYyMTZDMTAuMTAxIDExLjcwOTEgMTAuMTUzNyAxMS43OTY3IDEwLjE5ODkgMTEuODg0M0wxMS40MDc0IDE0LjE2NDRDMTEuNTA1MyAxNC4zNTAxIDExLjUyNDEgMTQuNTExMiAxMS40NjM5IDE0LjY0NzhDMTEuNDAzNyAxNC43ODQ0IDExLjMwMiAxNC44ODI1IDExLjE1ODkgMTQuOTQyQzExLjAxOTYgMTUuMDAxNSAxMC44NzA5IDE1LjAxMDMgMTAuNzEyOCAxNC45NjgzQzEwLjU1ODQgMTQuOTI2MiAxMC40MzYxIDE0LjgxNzcgMTAuMzQ1NyAxNC42NDI1Wk0xMi40MDcgNy45NjQ4OUMxMi41ODQgNy45NjQ4OSAxMi43MjcgOC4wMTA0MiAxMi44MzYyIDguMTAxNDlDMTIuOTQ1NCA4LjE4OTA1IDEzIDguMzA2MzkgMTMgOC40NTM1QzEzIDguNjExMTEgMTIuOTQ1NCA4LjczMzcgMTIuODM2MiA4LjgyMTI3QzEyLjczMDggOC45MDg4MyAxMi41ODc3IDguOTUyNjEgMTIuNDA3IDguOTUyNjFIMTEuMTMwN0MxMC45NTM4IDguOTUyNjEgMTAuODE0NSA4LjkzNjg1IDEwLjcxMjggOC45MDUzM0MxMC42MTEyIDguODcwMyAxMC41MTMzIDguODA3MjYgMTAuNDE5MSA4LjcxNjE5TDEwLjA1MjEgOC4zNzk5NEwxMC4xNDI0IDcuMDQwMjFMMTEuMDM0NyA3Ljk2NDg5SDEyLjQwN1pNOS4wMDE2NCA1LjMxMTY5QzguNzcxOTggNS4zMTE2OSA4LjU2MzAzIDUuMjYwOTEgOC4zNzQ3OCA1LjE1OTMzQzguMTg2NTMgNS4wNTQyNiA4LjAzNTk0IDQuOTE0MTUgNy45MjI5OSA0LjczOTAzQzcuODEzODEgNC41NjM5IDcuNzU5MjEgNC4zNjk1IDcuNzU5MjEgNC4xNTU4NUM3Ljc1OTIxIDMuOTQyMTkgNy44MTM4MSAzLjc0NzggNy45MjI5OSAzLjU3MjY3QzguMDM1OTQgMy4zOTc1NCA4LjE4NjUzIDMuMjU5MTkgOC4zNzQ3OCAzLjE1NzYyQzguNTYzMDMgMy4wNTI1NCA4Ljc3MTk4IDMgOS4wMDE2NCAzQzkuMjMxMyAzIDkuNDQwMjYgMy4wNTI1NCA5LjYyODUgMy4xNTc2MkM5LjgxNjc1IDMuMjU5MTkgOS45NjU0NiAzLjM5NzU0IDEwLjA3NDYgMy41NzI2N0MxMC4xODc2IDMuNzQ3OCAxMC4yNDQxIDMuOTQyMTkgMTAuMjQ0MSA0LjE1NTg1QzEwLjI0NDEgNC4zNjk1IDEwLjE4NzYgNC41NjM5IDEwLjA3NDYgNC43MzkwM0M5Ljk2NTQ2IDQuOTE0MTUgOS44MTY3NSA1LjA1NDI2IDkuNjI4NSA1LjE1OTMzQzkuNDQwMjYgNS4yNjA5MSA5LjIzMTMgNS4zMTE2OSA5LjAwMTY0IDUuMzExNjlaIn0pfSl9ZnVuY3Rpb24gYjUoKXtyZXR1cm4gcSgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjE0Iix2aWV3Qm94OiIyNiAxIDEyIDE0IixmaWxsOiJjdXJyZW50Q29sb3IiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46cSgicGF0aCIse2Q6Ik0zMy4yNDM3IDQuNTg0NTlDMzMuMDAwOCA0LjU4NDU5IDMyLjc4MTcgNC41MjcyOCAzMi41ODY2IDQuNDEyNjhDMzIuMzkxNSA0LjI5NDEyIDMyLjIzNDIgNC4xMzgwMSAzMi4xMTQ3IDMuOTQ0MzdDMzEuOTk5MiAzLjc0Njc3IDMxLjk0MTQgMy41Mjk0MSAzMS45NDE0IDMuMjkyMjlDMzEuOTQxNCAzLjA1MTIyIDMxLjk5OTIgMi44MzM4NyAzMi4xMTQ3IDIuNjQwMjJDMzIuMjM0MiAyLjQ0NjU3IDMyLjM5MTUgMi4yOTI0NSAzMi41ODY2IDIuMTc3ODRDMzIuNzgxNyAyLjA1OTI4IDMzLjAwMDggMiAzMy4yNDM3IDJDMzMuNDgyNiAyIDMzLjY5OTcgMi4wNTkyOCAzMy44OTQ4IDIuMTc3ODRDMzQuMDkzOSAyLjI5MjQ1IDM0LjI1MTIgMi40NDY1NyAzNC4zNjY3IDIuNjQwMjJDMzQuNDg2MiAyLjgzMzg3IDM0LjU0NTkgMy4wNTEyMiAzNC41NDU5IDMuMjkyMjlDMzQuNTQ1OSAzLjUyOTQxIDM0LjQ4NjIgMy43NDY3NyAzNC4zNjY3IDMuOTQ0MzdDMzQuMjUxMiA0LjEzODAxIDM0LjA5MzkgNC4yOTQxMiAzMy44OTQ4IDQuNDEyNjhDMzMuNjk5NyA0LjUyNzI4IDMzLjQ4MjYgNC41ODQ1OSAzMy4yNDM3IDQuNTg0NTlaTTMxLjIwMDcgOS43NDE5MUMzMS4wNzMzIDkuNjcwNzcgMzAuOTQxOSA5LjU5NTY4IDMwLjgwNjUgOS41MTY2NEMzMC42NzUgOS40Mzc2IDMwLjU1OTYgOS4zNDI3NiAzMC40NiA5LjIzMjFDMzAuMzYwNCA5LjExNzQ5IDMwLjI5MjcgOC45NzcyIDMwLjI1NjkgOC44MTEyMkMzMC4yMjUgOC42NDEyOCAzMC4yNDQ5IDguNDI5ODUgMzAuMzE2NiA4LjE3NjkzTDMwLjgwNjUgNi40ODE1M0MzMC44MzgzIDYuMzY2OTIgMzAuODE4NCA2LjI3OTk4IDMwLjc0NjcgNi4yMjA3QzMwLjY3OSA2LjE1NzQ3IDMwLjU5NzQgNi4xMjk4MSAzMC41MDE4IDYuMTM3NzFMMjkuNjU5NSA2LjE5Njk5TDI5LjQwMjcgNy45MjIwMkMyOS4zNzg4IDguMTA3NzcgMjkuMzE1MSA4LjI0NjA5IDI5LjIxMTUgOC4zMzY5OEMyOS4xMDggOC40Mjc4OCAyOC45NzI2IDguNDY1NDIgMjguODA1MyA4LjQ0OTYxQzI4LjY0MiA4LjQzMzggMjguNTE4NiA4LjM2NjYyIDI4LjQzNDkgOC4yNDgwNkMyOC4zNTEzIDguMTI5NSAyOC4zMjE0IDcuOTc3MzUgMjguMzQ1MyA3Ljc5MTYxTDI4LjYyNjEgNS42ODEyNkMyOC42NSA1LjUxMTMyIDI4LjcxNTcgNS4zNzQ5OCAyOC44MjMyIDUuMjcyMjNDMjguOTMwOCA1LjE2OTQ4IDI5LjA2ODEgNS4xMTIxNyAyOS4yMzU0IDUuMTAwMzJMMzEuMzMyMSA0Ljk1MjEyQzMxLjg4MTcgNC45MTI2IDMyLjMzNTcgNC45Njk5IDMyLjY5NDEgNS4xMjQwM0MzMy4wNTI1IDUuMjc4MTYgMzMuMzY3MSA1LjUzODk5IDMzLjYzNzkgNS45MDY1MkwzNC42NzE0IDcuMzIzM0wzNi4xNzA4IDYuNjY1M0MzNi4zMzggNi41OTAyMSAzNi40ODkzIDYuNTc0NCAzNi42MjQ4IDYuNjE3ODdDMzYuNzYwMiA2LjY1NzM5IDM2Ljg2NTcgNi43NTIyNCAzNi45NDE0IDYuOTAyNDJDMzcuMDEzIDcuMDUyNTkgMzcuMDE5IDcuMTk0ODYgMzYuOTU5MyA3LjMyOTIzQzM2LjkwMzUgNy40NjM2IDM2Ljc5MiA3LjU2ODMyIDM2LjYyNDggNy42NDM0MUwzNC43MzExIDguNDc5MjVDMzQuNjAzNyA4LjUzODUzIDM0LjQ3NDMgOC41NTAzOSAzNC4zNDI4IDguNTE0ODJDMzQuMjE1NCA4LjQ3NTMgMzQuMTEzOCA4LjQwMDIxIDM0LjAzODIgOC4yODk1NkwzMy4zODExIDcuMzM1MTZDMzMuMzEzNCA3LjI0MDMxIDMzLjIyOTggNy4xOTg4MSAzMy4xMzAyIDcuMjEwNjdDMzMuMDMwNiA3LjIyMjUzIDMyLjk2NDkgNy4yODM3OCAzMi45MzMxIDcuMzk0NDRMMzIuNDkxIDguOTI5NzhMMzQuNzMxMSAxMC4zODgxQzM0Ljg0MjYgMTAuNDU5MiAzNC45MjIzIDEwLjU1NiAzNC45NzAxIDEwLjY3ODVDMzUuMDE3OSAxMC44MDEgMzUuMDI5OCAxMC45MjU1IDM1LjAwNTkgMTEuMDUyQzM0Ljk4NiAxMS4xNzQ1IDM0LjkyODIgMTEuMjc1MyAzNC44MzI3IDExLjM1NDNMMzIuNzcxOCAxMy4wOTcxQzMyLjYwODUgMTMuMjM1NCAzMi40NDUyIDEzLjI5ODcgMzIuMjgxOSAxMy4yODY4QzMyLjEyMjYgMTMuMjc1IDMxLjk5MzIgMTMuMjEzNyAzMS44OTM3IDEzLjEwMzFDMzEuNzk4MSAxMi45OTY0IDMxLjc1NDMgMTIuODY1OSAzMS43NjIyIDEyLjcxMThDMzEuNzcwMiAxMi41NTM3IDMxLjg1MzggMTIuNDA3NSAzMi4wMTMxIDEyLjI3MzFMMzMuNDg4NiAxMS4wMTY0TDMxLjIwMDcgOS43NDE5MVpNMjcuMjA0NCAxNC44NjM3QzI3LjA4NDkgMTQuNzU3IDI3LjAxNzIgMTQuNjE4NiAyNy4wMDEzIDE0LjQ0ODdDMjYuOTg5MyAxNC4yNzg4IDI3LjA2MSAxNC4xMTY3IDI3LjIxNjMgMTMuOTYyNkwyOS4yMjM1IDExLjk3NjdMMjkuOTM0MyA5LjQ4MTA4QzMwLjA0MTggOS42MTU0NCAzMC4xNzUzIDkuNzQ1ODYgMzAuMzM0NSA5Ljg3MjMyQzMwLjQ5NzggOS45OTQ4MyAzMC42OTMgMTAuMTE3MyAzMC45MiAxMC4yMzk5TDMxLjExNzEgMTAuMzQ2NkwzMC4zMDQ3IDEyLjQzMzJDMzAuMjUyOSAxMi41NTU3IDMwLjIwOTEgMTIuNjQwNyAzMC4xNzMzIDEyLjY4ODFDMzAuMTQxNCAxMi43MzU1IDMwLjA4NTYgMTIuNzk4OCAzMC4wMDYgMTIuODc3OEwyOC4wNzA2IDE0Ljc4MDdDMjcuOTE5MiAxNC45MjY5IDI3Ljc2MzkgMTUgMjcuNjA0NiAxNUMyNy40NDkzIDE1IDI3LjMxNTkgMTQuOTU0NiAyNy4yMDQ0IDE0Ljg2MzdaIn0pfSl9ZnVuY3Rpb24gUjUoKXtyZXR1cm4gcSgic3ZnIix7d2lkdGg6IjE0IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiI0OSAzIDE2IDEyIixmaWxsOiJjdXJyZW50Q29sb3IiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46cSgicGF0aCIse2Q6Ik01Ny4wMDI4IDExLjk0OUM1Ni44NDggMTEuOTQ5IDU2LjcxNzIgMTEuODk4NyA1Ni42MTAzIDExLjc5OEM1Ni41MDM1IDExLjY5MzkgNTYuNDUwMSAxMS41NzA3IDU2LjQ1MDEgMTEuNDI4NFY5LjAyODYzTDU0LjQyMTYgNy4xMDc3NkM1NC4yMjI3IDYuOTIwMzUgNTQuMDk1NSA2LjY5ODI1IDU0LjA0MDMgNi40NDE0NEM1My45ODUgNi4xODExNiA1NC4wMTA4IDUuOTI3ODIgNTQuMTE3NiA1LjY4MTQyQzU0LjIyODIgNS40Mzg0OSA1NC4zOTc3IDUuMjQ0MTQgNTQuNjI2MSA1LjA5ODM5QzU0Ljg1ODMgNC45NDkxNiA1NS4xMTYyIDQuODc0NTQgNTUuMzk5OSA0Ljg3NDU0SDU4LjExMzdDNTguNDIzMiA0Ljg3NDU0IDU4LjY4NDggNC45NzY5MiA1OC44OTg1IDUuMTgxNjhDNTkuMTE1OSA1LjM4Mjk2IDU5LjIyNDYgNS42MjkzNiA1OS4yMjQ2IDUuOTIwODdWNy43NjM2Nkg2MC44OTkzQzYxLjA1MDQgNy43NjM2NiA2MS4xNzk0IDcuODEzOTkgNjEuMjg2MiA3LjkxNDYzQzYxLjM5MzEgOC4wMTUyNyA2MS40NDY1IDguMTM4NDcgNjEuNDQ2NSA4LjI4NDIzQzYxLjQ0NjUgOC40MjY1MSA2MS4zOTMxIDguNTQ3OTggNjEuMjg2MiA4LjY0ODYyQzYxLjE3OTQgOC43NDkyNiA2MS4wNTA0IDguNzk5NTggNjAuODk5MyA4Ljc5OTU4SDU4LjY3MTlDNTguNTIwOSA4Ljc5OTU4IDU4LjM5MDEgOC43NDkyNiA1OC4yNzk1IDguNjQ4NjJDNTguMTcyNyA4LjU0Nzk4IDU4LjExOTIgOC40MjY1MSA1OC4xMTkyIDguMjg0MjNWNi45ODgwM0M1OC4xMTkyIDYuOTE4NjIgNTguMDk5IDYuODU0NDIgNTguMDU4NCA2Ljc5NTQyQzU4LjAxNzkgNi43MzI5NSA1Ny45NDQyIDYuNzAxNzIgNTcuODM3MyA2LjcwMTcySDU2LjA2MzJDNTUuOTkzMiA2LjcwMTcyIDU1Ljk0NTMgNi43Mjk0OCA1NS45MTk1IDYuNzg1MDFDNTUuODk3NCA2LjgzNzA2IDU1LjkwODQgNi44ODczOSA1NS45NTI2IDYuOTM1OTdMNTcuNDAwNyA4LjQ1NjAxQzU3LjUwMzkgOC41NjM2IDU3LjU1NTUgOC42ODE1OSA1Ny41NTU1IDguODA5OTlWMTEuNDI4NEM1Ny41NTU1IDExLjU3MDcgNTcuNTAwMiAxMS42OTM5IDU3LjM4OTcgMTEuNzk4QzU3LjI4MjggMTEuODk4NyA1Ny4xNTM4IDExLjk0OSA1Ny4wMDI4IDExLjk0OVpNNTMuMDAxMiAxNEM1Mi41ODQ4IDE0IDUyLjE5NDIgMTMuOTI3MSA1MS44Mjk1IDEzLjc4MTRDNTEuNDY4NCAxMy42MzU2IDUxLjE0OTYgMTMuNDMyNiA1MC44NzMzIDEzLjE3MjNDNTAuNjAwNiAxMi45MTIgNTAuMzg2OSAxMi42MTE4IDUwLjIzMjEgMTIuMjcxN0M1MC4wNzc0IDExLjkyODIgNTAgMTEuNTYwMyA1MCAxMS4xNjgxQzUwIDEwLjc3NiA1MC4wNzc0IDEwLjQwOTkgNTAuMjMyMSAxMC4wNjk4QzUwLjM4NjkgOS43MjYxOCA1MC42MDA2IDkuNDI0MjYgNTAuODczMyA5LjE2Mzk4QzUxLjE0OTYgOC45MDM3IDUxLjQ2ODQgOC43MDA2OCA1MS44Mjk1IDguNTU0OTJDNTIuMTk0MiA4LjQwOTE2IDUyLjU4NDggOC4zMzYyOCA1My4wMDEyIDguMzM2MjhDNTMuNDIxMiA4LjMzNjI4IDUzLjgxMTggOC40MDkxNiA1NC4xNzI5IDguNTU0OTJDNTQuNTM3NyA4LjcwMDY4IDU0Ljg1NjQgOC45MDM3IDU1LjEyOTEgOS4xNjM5OEM1NS40MDU0IDkuNDI0MjYgNTUuNjIxIDkuNzI2MTggNTUuNzc1OCAxMC4wNjk4QzU1LjkzMDUgMTAuNDA5OSA1Ni4wMDc5IDEwLjc3NiA1Ni4wMDc5IDExLjE2ODFDNTYuMDA3OSAxMS41NjAzIDU1LjkzMDUgMTEuOTI4MiA1NS43NzU4IDEyLjI3MTdDNTUuNjIxIDEyLjYxMTggNTUuNDA1NCAxMi45MTIgNTUuMTI5MSAxMy4xNzIzQzU0Ljg1NjQgMTMuNDMyNiA1NC41Mzc3IDEzLjYzNTYgNTQuMTcyOSAxMy43ODE0QzUzLjgxMTggMTMuOTI3MSA1My40MjEyIDE0IDUzLjAwMTIgMTRaTTUzLjAwMTIgMTMuMjY2QzUzLjQxMDIgMTMuMjY2IDUzLjc4MjMgMTMuMTcwNiA1NC4xMTc2IDEyLjk3OTdDNTQuNDU2NiAxMi43OTIzIDU0LjcyNTYgMTIuNTQwNyA1NC45MjQ2IDEyLjIyNDlDNTUuMTI3MyAxMS45MDU2IDU1LjIyODYgMTEuNTUzNCA1NS4yMjg2IDExLjE2ODFDNTUuMjI4NiAxMC43ODI5IDU1LjEyNzMgMTAuNDMyNCA1NC45MjQ2IDEwLjExNjZDNTQuNzI1NiA5Ljc5NzMzIDU0LjQ1NjYgOS41NDM5OSA1NC4xMTc2IDkuMzU2NTlDNTMuNzgyMyA5LjE2NTcxIDUzLjQxMDIgOS4wNzAyOCA1My4wMDEyIDkuMDcwMjhDNTIuNTk1OSA5LjA3MDI4IDUyLjIyMzcgOS4xNjU3MSA1MS44ODQ3IDkuMzU2NTlDNTEuNTQ5NCA5LjU0Mzk5IDUxLjI4MDQgOS43OTczMyA1MS4wNzc4IDEwLjExNjZDNTAuODc4OCAxMC40MzI0IDUwLjc3OTMgMTAuNzgyOSA1MC43NzkzIDExLjE2ODFDNTAuNzc5MyAxMS41NTM0IDUwLjg3ODggMTEuOTA1NiA1MS4wNzc4IDEyLjIyNDlDNTEuMjgwNCAxMi41NDA3IDUxLjU0OTQgMTIuNzkyMyA1MS44ODQ3IDEyLjk3OTdDNTIuMjIzNyAxMy4xNzA2IDUyLjU5NTkgMTMuMjY2IDUzLjAwMTIgMTMuMjY2Wk02Mi40ODAxIDkuNjExNjZDNjIuMzYyMiA5LjUxNDQ5IDYyLjMwMTQgOS40MTU1OCA2Mi4yOTc3IDkuMzE0OTRDNjIuMjk3NyA5LjIxMDgzIDYyLjMzMDggOS4xMjQwNyA2Mi4zOTcyIDkuMDU0NjZDNjIuNDY3MiA4Ljk4NTI1IDYyLjU1MzggOC45NDUzNCA2Mi42NTY5IDguOTM0OTNDNjIuNzYzOCA4LjkyMTA1IDYyLjg2ODggOC45NTU3NSA2Mi45NzIgOS4wMzkwNEM2My4yODg5IDkuMzAyNzkgNjMuNTM5NCA5LjYxNjg3IDYzLjcyMzYgOS45ODEyNkM2My45MDc5IDEwLjM0NTcgNjQgMTAuNzQxMyA2NCAxMS4xNjgxQzY0IDExLjU2MDMgNjMuOTIyNiAxMS45MjgyIDYzLjc2NzkgMTIuMjcxN0M2My42MTMxIDEyLjYxMTggNjMuMzk3NiAxMi45MTIgNjMuMTIxMiAxMy4xNzIzQzYyLjg0ODUgMTMuNDMyNiA2Mi41Mjk4IDEzLjYzNTYgNjIuMTY1IDEzLjc4MTRDNjEuODAzOSAxMy45MjcxIDYxLjQxNTIgMTQgNjAuOTk4OCAxNEM2MC41ODI0IDE0IDYwLjE5MTkgMTMuOTI3MSA1OS44MjcxIDEzLjc4MTRDNTkuNDYyMyAxMy42MzU2IDU5LjE0MTcgMTMuNDMyNiA1OC44NjU0IDEzLjE3MjNDNTguNTkyNyAxMi45MTIgNTguMzc5IDEyLjYxMTggNTguMjI0MiAxMi4yNzE3QzU4LjA2OTUgMTEuOTI4MiA1Ny45OTIxIDExLjU2MDMgNTcuOTkyMSAxMS4xNjgxQzU3Ljk5MjEgMTAuOTYzNCA1OC4wMTQyIDEwLjc2NTYgNTguMDU4NCAxMC41NzQ3QzU4LjEwNjMgMTAuMzgwNCA1OC4xNzI3IDEwLjE5MyA1OC4yNTc0IDEwLjAxMjVDNTguMzA5IDkuOTAxNDQgNTguMzgwOCA5LjgzMDMgNTguNDczIDkuNzk5MDZDNTguNTY4OCA5Ljc2NDM2IDU4LjY2MjcgOS43NjQzNiA1OC43NTQ4IDkuNzk5MDZDNTguODUwNiA5LjgzMDMgNTguOTIyNSA5Ljg5Mjc2IDU4Ljk3MDQgOS45ODY0N0M1OS4wMTgzIDEwLjA4MDIgNTkuMDEwOSAxMC4xOTgyIDU4Ljk0ODMgMTAuMzQwNEM1OC44MzA0IDEwLjYwMDcgNTguNzcxNCAxMC44NzY2IDU4Ljc3MTQgMTEuMTY4MUM1OC43NzE0IDExLjU1MzQgNTguODcwOSAxMS45MDU2IDU5LjA2OTkgMTIuMjI0OUM1OS4yNzI1IDEyLjU0MDcgNTkuNTQxNSAxMi43OTIzIDU5Ljg3NjggMTIuOTc5N0M2MC4yMTU4IDEzLjE3MDYgNjAuNTg5OCAxMy4yNjYgNjAuOTk4OCAxMy4yNjZDNjEuNDA3OCAxMy4yNjYgNjEuNzggMTMuMTcwNiA2Mi4xMTUzIDEyLjk3OTdDNjIuNDUwNiAxMi43OTIzIDYyLjcxNzcgMTIuNTQwNyA2Mi45MTY3IDEyLjIyNDlDNjMuMTE5NCAxMS45MDU2IDYzLjIyMDcgMTEuNTUzNCA2My4yMjA3IDExLjE2ODFDNjMuMjIwNyAxMC44NTkzIDYzLjE1MjUgMTAuNTcxMiA2My4wMTYyIDEwLjMwNEM2Mi44ODM1IDEwLjAzMzMgNjIuNzA0OCA5LjgwMjUzIDYyLjQ4MDEgOS42MTE2NlpNNjAuOTk4OCA2LjI3NDg2QzYwLjc3NCA2LjI3NDg2IDYwLjU2OTUgNi4yMjQ1NCA2MC4zODUzIDYuMTIzODlDNjAuMjAxMSA2LjAxOTc4IDYwLjA1MzcgNS44ODI3IDU5Ljk0MzIgNS43MTI2NUM1OS44MzYzIDUuNTM5MTMgNTkuNzgyOSA1LjM0NjUyIDU5Ljc4MjkgNS4xMzQ4M0M1OS43ODI5IDQuOTI2NiA1OS44MzYzIDQuNzM3NDYgNTkuOTQzMiA0LjU2NzQxQzYwLjA1MzcgNC4zOTM4OSA2MC4yMDExIDQuMjU2ODEgNjAuMzg1MyA0LjE1NjE3QzYwLjU2OTUgNC4wNTIwNiA2MC43NzQgNCA2MC45OTg4IDRDNjEuMjE5OSA0IDYxLjQyMDcgNC4wNTIwNiA2MS42MDEzIDQuMTU2MTdDNjEuNzgxOCA0LjI1NjgxIDYxLjkyNTUgNC4zOTM4OSA2Mi4wMzI0IDQuNTY3NDFDNjIuMTQyOSA0LjczNzQ2IDYyLjE5ODIgNC45MjY2IDYyLjE5ODIgNS4xMzQ4M0M2Mi4xOTgyIDUuMzQ2NTIgNjIuMTQyOSA1LjUzOTEzIDYyLjAzMjQgNS43MTI2NUM2MS45MjU1IDUuODgyNyA2MS43ODE4IDYuMDE5NzggNjEuNjAxMyA2LjEyMzg5QzYxLjQyMDcgNi4yMjQ1NCA2MS4yMTk5IDYuMjc0ODYgNjAuOTk4OCA2LjI3NDg2WiJ9KX0pfWZ1bmN0aW9uIHk1KCl7cmV0dXJuIHEoInN2ZyIse3dpZHRoOiIxNiIsaGVpZ2h0OiIxNCIsdmlld0JveDoiNzAgNSAxOCA5IixmaWxsOiJjdXJyZW50Q29sb3IiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46cSgicGF0aCIse2Q6Ik04NS41NzIgMTIuMTAzOEM4Ni4wNiAxMi4xMDM4IDg2LjQyMDcgMTEuOTg5MiA4Ni42NTQyIDExLjc2MDFDODYuODg0NyAxMS41MjgxIDg3IDExLjE2NDEgODcgMTAuNjY4MVYxMC4xMTEyQzg3IDkuNzY5MDEgODYuOTIwNyA5LjQ2MzAyIDg2Ljc2MiA5LjE5MzI5Qzg2LjYwMzMgOC45MjA2NSA4Ni4zNzU4IDguNjk3MzMgODYuMDc5NCA4LjUyMzMxQzg1Ljc4MDEgOC4zNDkyOSA4NS40MjIzIDguMjM3NjIgODUuMDA2MiA4LjE4ODMyTDgzLjAxNjggNy45NTMzOUw4MS4xOTgxIDYuODQ4MzVDODAuOTIyNyA2LjY4MDEzIDgwLjY2MDggNi41NDIzNyA4MC40MTIzIDYuNDM1MDVDODAuMTYwOCA2LjMyNDg0IDc5Ljg5NzQgNi4yMzc4MyA3OS42MjE5IDYuMTc0MDJDNzkuMzQ2NSA2LjExMDIxIDc5LjAzODIgNi4wNjUyNiA3OC42OTY5IDYuMDM5MTVDNzguMzUyNiA2LjAxMzA1IDc3Ljk1MTQgNiA3Ny40OTM0IDZINzYuODEwOEM3Ni4zODg3IDYgNzUuOTk1IDYuMDQ5MzEgNzUuNjI5OCA2LjE0NzkyQzc1LjI2MTYgNi4yNDM2MyA3NC45MTg4IDYuMzcxMjUgNzQuNjAxNSA2LjUzMDc2Qzc0LjI4MTEgNi42OTAyOCA3My45ODYyIDYuODY1NzYgNzMuNzE2OCA3LjA1NzE4QzczLjQ0NDQgNy4yNDg2IDczLjE5NTkgNy40MzcxMiA3Mi45NzE0IDcuNjIyNzVMNzIuMjU3NCA3Ljg1MzMzQzcxLjgzMjMgNy45ODY3NCA3MS41MTY0IDguMTgzOTcgNzEuMzA5OSA4LjQ0NUM3MS4xMDMzIDguNzAzMTMgNzEgOS4wMzM3NyA3MSA5LjQzNjkyVjEwLjY0MkM3MSAxMS4xNDY3IDcxLjExNTMgMTEuNTE2NSA3MS4zNDU4IDExLjc1MTRDNzEuNTc2MyAxMS45ODYzIDcxLjkzNyAxMi4xMDM4IDcyLjQyOCAxMi4xMDM4SDcyLjcxNTRDNzIuNzAwNCAxMi4wMzcxIDcyLjY4ODUgMTEuOTcwNCA3Mi42Nzk1IDExLjkwMzdDNzIuNjcwNSAxMS44MzQxIDcyLjY2NiAxMS43NjQ1IDcyLjY2NiAxMS42OTQ4QzcyLjY2NiAxMS4zNTU1IDcyLjc0OTggMTEuMDQ5NSA3Mi45MTc1IDEwLjc3NjlDNzMuMDg1MSAxMC41MDQyIDczLjMxMTIgMTAuMjg4MiA3My41OTU2IDEwLjEyODdDNzMuODc3IDkuOTY2MjMgNzQuMTkyOCA5Ljg4NTAyIDc0LjU0MzEgOS44ODUwMkM3NC44OTA0IDkuODg1MDIgNzUuMjA2MiA5Ljk2NjIzIDc1LjQ5MDYgMTAuMTI4N0M3NS43NzIgMTAuMjg4MiA3NS45OTY1IDEwLjUwNDIgNzYuMTY0MiAxMC43NzY5Qzc2LjMzMTggMTEuMDQ5NSA3Ni40MTU3IDExLjM1NTUgNzYuNDE1NyAxMS42OTQ4Qzc2LjQxNTcgMTEuNzY0NSA3Ni40MTEyIDExLjgzNDEgNzYuNDAyMiAxMS45MDM3Qzc2LjM5MzIgMTEuOTcwNCA3Ni4zODI3IDEyLjAzNzEgNzYuMzcwOCAxMi4xMDM4SDgxLjYzODJDODEuNjIwMyAxMi4wMzcxIDgxLjYwODMgMTEuOTcwNCA4MS42MDIzIDExLjkwMzdDODEuNTkzMyAxMS44MzQxIDgxLjU4ODggMTEuNzY0NSA4MS41ODg4IDExLjY5NDhDODEuNTg4OCAxMS4zNTU1IDgxLjY3MjcgMTEuMDQ5NSA4MS44NDAzIDEwLjc3NjlDODIuMDA1IDEwLjUwNDIgODIuMjI5NSAxMC4yODgyIDgyLjUxMzkgMTAuMTI4N0M4Mi43OTUzIDkuOTY2MjMgODMuMTExMSA5Ljg4NTAyIDgzLjQ2MTQgOS44ODUwMkM4My44MTE3IDkuODg1MDIgODQuMTI5IDkuOTY2MjMgODQuNDEzNCAxMC4xMjg3Qzg0LjY5NDggMTAuMjg4MiA4NC45MTk0IDEwLjUwNDIgODUuMDg3IDEwLjc3NjlDODUuMjUxNyAxMS4wNDk1IDg1LjMzNCAxMS4zNTU1IDg1LjMzNCAxMS42OTQ4Qzg1LjMzNCAxMS43NjQ1IDg1LjMzMSAxMS44MzQxIDg1LjMyNSAxMS45MDM3Qzg1LjMxNiAxMS45NzA0IDg1LjMwNDEgMTIuMDM3MSA4NS4yODkxIDEyLjEwMzhIODUuNTcyWk04My40NjE0IDEzQzgzLjcxMjkgMTMgODMuOTQwNCAxMi45NDIgODQuMTQ0IDEyLjgyNkM4NC4zNDc2IDEyLjcxIDg0LjUwOTIgMTIuNTUzMyA4NC42MjkgMTIuMzU2MUM4NC43NDg3IDEyLjE1ODkgODQuODA4NiAxMS45Mzg1IDg0LjgwODYgMTEuNjk0OEM4NC44MDg2IDExLjQ1MTIgODQuNzQ4NyAxMS4yMzA4IDg0LjYyOSAxMS4wMzM2Qzg0LjUwOTIgMTAuODM2MyA4NC4zNDc2IDEwLjY3OTcgODQuMTQ0IDEwLjU2MzdDODMuOTQwNCAxMC40NDc3IDgzLjcxMjkgMTAuMzg5NyA4My40NjE0IDEwLjM4OTdDODMuMjA2OSAxMC4zODk3IDgyLjk3NzkgMTAuNDQ3NyA4Mi43NzQzIDEwLjU2MzdDODIuNTcwOCAxMC42Nzk3IDgyLjQwOTEgMTAuODM2MyA4Mi4yODk0IDExLjAzMzZDODIuMTY5NiAxMS4yMzA4IDgyLjEwOTcgMTEuNDUxMiA4Mi4xMDk3IDExLjY5NDhDODIuMTA5NyAxMS45Mzg1IDgyLjE2OTYgMTIuMTU4OSA4Mi4yODk0IDEyLjM1NjFDODIuNDA5MSAxMi41NTMzIDgyLjU3MDggMTIuNzEgODIuNzc0MyAxMi44MjZDODIuOTc3OSAxMi45NDIgODMuMjA2OSAxMyA4My40NjE0IDEzWk03NC41NDMxIDEzQzc0Ljc5NDYgMTMgNzUuMDIyMSAxMi45NDIgNzUuMjI1NyAxMi44MjZDNzUuNDI5MiAxMi43MSA3NS41OTA5IDEyLjU1MzMgNzUuNzEwNiAxMi4zNTYxQzc1LjgzMDQgMTIuMTU4OSA3NS44OTAzIDExLjkzODUgNzUuODkwMyAxMS42OTQ4Qzc1Ljg5MDMgMTEuNDUxMiA3NS44MzA0IDExLjIzMDggNzUuNzEwNiAxMS4wMzM2Qzc1LjU5MDkgMTAuODM2MyA3NS40MjkyIDEwLjY3OTcgNzUuMjI1NyAxMC41NjM3Qzc1LjAyMjEgMTAuNDQ3NyA3NC43OTQ2IDEwLjM4OTcgNzQuNTQzMSAxMC4zODk3Qzc0LjI4ODYgMTAuMzg5NyA3NC4wNTk2IDEwLjQ0NzcgNzMuODU2IDEwLjU2MzdDNzMuNjUyNCAxMC42Nzk3IDczLjQ5MDggMTAuODM2MyA3My4zNzEgMTEuMDMzNkM3My4yNTEzIDExLjIzMDggNzMuMTkxNCAxMS40NTEyIDczLjE5MTQgMTEuNjk0OEM3My4xOTE0IDExLjkzODUgNzMuMjUxMyAxMi4xNTg5IDczLjM3MSAxMi4zNTYxQzczLjQ5MDggMTIuNTUzMyA3My42NTI0IDEyLjcxIDczLjg1NiAxMi44MjZDNzQuMDU5NiAxMi45NDIgNzQuMjg4NiAxMyA3NC41NDMxIDEzWiJ9KX0pfXZhciBwOT02NTAsdTk9YAoubGVtLXRvZ2dsZTpob3ZlciB7IGNvbG9yOiAjZmZmOyB9Ci5sZW0tdG9nZ2xlOmhvdmVyIC5sZW0tY2hldnJvbiB7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuODUpICFpbXBvcnRhbnQ7IH0KLmxlbS1zZWxlY3Q6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDcpOyBib3JkZXItY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4xNik7IH0KLmxlbS1zZWxlY3Q6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyBib3JkZXItY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4yNCk7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wOCk7IH0KLmxlbS1wcmltYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsgZmlsdGVyOiBicmlnaHRuZXNzKDEuMDgpOyB9Ci5sZW0tcHJpbWFyeS1vbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4yMikgIWltcG9ydGFudDsgZmlsdGVyOiBub25lOyB9Ci5sZW0tZ2hvc3Q6aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDYpOyBib3JkZXItY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4yKTsgY29sb3I6ICNmZmY7IH0KLmxlbS1naG9zdDpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNDsgY3Vyc29yOiBub3QtYWxsb3dlZDsgfQoubGVtLXNlZzpob3Zlcjpub3QoW2FyaWEtcHJlc3NlZD0idHJ1ZSJdKSB7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuOSk7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wNSkgIWltcG9ydGFudDsgfQoubGVtLXNwZWVkOmhvdmVyIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjA5KTsgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuMTgpOyBjb2xvcjogI2ZmZjsgfQoubGVtLXNwZWVkLW9uOmhvdmVyIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjg4KSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC44OCkgIWltcG9ydGFudDsgY29sb3I6ICMwYTBhMGMgIWltcG9ydGFudDsgfQoubGVtLXNwZWVkOmFjdGl2ZSB7IHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7IH0KYCxqNT1bMSwyLDUsMjBdLFE4PTEwMDAsaDU9e3N0YXR1czoiaWRsZSIsYXJjOjAsZWxhcHNlZE1zOjB9O2Z1bmN0aW9uIEI4KHt1ZGlkOkMsZXhlYzpafSl7bGV0W0osWF09SSghMCksW0csUV09SShpMVswXS5pZCksWyQsWV09SShpMVswXS5tb2RlKSxbXyxWXT1JKDEpLFtCLEtdPUkoaDUpLFtILEZdPUkobnVsbCksTT1FMSgoKT0+aTEuZmluZCgodik9PnYuaWQ9PT1HKT8/aTFbMF0sW0ddKSxMPUUxKCgpPT5HOChNKSxbTV0pLEQ9aCgwKSxPPWgoImlkbGUiKSxQPWgoQTUoJCkqXyksRT1oKDApLHc9aChMKSxmPWgobnVsbCk7eSgoKT0+e1AuY3VycmVudD1BNSgkKSpffSxbJCxfXSk7bGV0IGs9aChudWxsKTt5KCgpPT57bGV0IHY9dy5jdXJyZW50LGk9RC5jdXJyZW50O2lmKHcuY3VycmVudD1MLHYmJnYhPT1MKWsuY3VycmVudD1kOSh2LGksTCxwZXJmb3JtYW5jZS5ub3coKSk7RC5jdXJyZW50PTAsRS5jdXJyZW50PTAsTy5jdXJyZW50PSJpZGxlIixmLmN1cnJlbnQ9bnVsbCxLKGg1KX0sW0xdKTtsZXQgVD1oKDApLFM9aChudWxsKSx4PWgobnVsbCk7eSgoKT0+e2xldCB2PTAsaT0oJDEpPT57bGV0IHI9Uy5jdXJyZW50LG49cj09bnVsbD8xNjpNYXRoLm1pbig2NCwkMS1yKTtpZihTLmN1cnJlbnQ9JDEsVC5jdXJyZW50PShULmN1cnJlbnQrbiowLjAwMDEyKSUoTWF0aC5QSSoyKSxPLmN1cnJlbnQ9PT0icGxheWluZyIpe2xldCBDMT1QLmN1cnJlbnQqbi8xMDAwO0QuY3VycmVudCs9QzEsRS5jdXJyZW50Kz1uO2xldCB0PXcuY3VycmVudC50b3RhbERpc3RhbmNlO2lmKCF3LmN1cnJlbnQudHJhaWwubG9vcCYmRC5jdXJyZW50Pj10KUQuY3VycmVudD10LE8uY3VycmVudD0icGF1c2VkIixLKHtzdGF0dXM6InBhdXNlZCIsYXJjOnQsZWxhcHNlZE1zOkUuY3VycmVudH0pfWxldCBGMT14LmN1cnJlbnQ7aWYoRjEpe2xldCBDMT13LmN1cnJlbnQsdD1udWxsLG09ay5jdXJyZW50O2lmKG0pe2xldCBkPSgkMS1tLnN0YXJ0TXMpL3A5O2lmKGQ+PTEpay5jdXJyZW50PW51bGw7ZWxzZXtsZXQgcD1pOShkKTtDMT1vOShtLHApLHQ9e3g6bS5wcmV2TWFya2VyLngrKG0ubmV4dE1hcmtlci54LW0ucHJldk1hcmtlci54KSpwLHk6bS5wcmV2TWFya2VyLnkrKG0ubmV4dE1hcmtlci55LW0ucHJldk1hcmtlci55KSpwLHo6bS5wcmV2TWFya2VyLnorKG0ubmV4dE1hcmtlci56LW0ucHJldk1hcmtlci56KSpwfX19cjkoRjEsQzEsRC5jdXJyZW50LFQuY3VycmVudCwkMSxPLmN1cnJlbnQ9PT0icGxheWluZyIsdCl9dj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaSl9O3JldHVybiB2PXJlcXVlc3RBbmltYXRpb25GcmFtZShpKSwoKT0+Y2FuY2VsQW5pbWF0aW9uRnJhbWUodil9LFtdKSx5KCgpPT57bGV0IHY9c2V0SW50ZXJ2YWwoKCk9PntpZihPLmN1cnJlbnQ9PT0icGxheWluZyIpSyh7c3RhdHVzOiJwbGF5aW5nIixhcmM6RC5jdXJyZW50LGVsYXBzZWRNczpFLmN1cnJlbnR9KX0sMjUwKTtyZXR1cm4oKT0+Y2xlYXJJbnRlcnZhbCh2KX0sW10pLHkoKCk9PntpZihCLnN0YXR1cyE9PSJwbGF5aW5nIilyZXR1cm47bGV0IHY9ITEsaT0wLCQxPW51bGwscj1hc3luYygpPT57aWYodnx8JDEpcmV0dXJuO2xldCBGMT1EYXRlLm5vdygpO2lmKEYxLWk8UTgpcmV0dXJuO2k9RjE7bGV0IEMxPW8xKHcuY3VycmVudCxELmN1cnJlbnQpLHQ9YHhjcnVuIHNpbWN0bCBsb2NhdGlvbiAke0N9IHNldCAke0MxLmxhdC50b0ZpeGVkKDcpfSwke0MxLmxuZy50b0ZpeGVkKDcpfWA7JDE9Wih0KS50aGVuKChtKT0+e2lmKHYpcmV0dXJuO2lmKG0uZXhpdENvZGUhPT0wKUYoSzgobS5zdGRlcnIpfHwic2ltY3RsIGxvY2F0aW9uIHNldCBmYWlsZWQiKTtlbHNlIEYobnVsbCl9KS5jYXRjaCgobSk9PntpZighdilGKG0gaW5zdGFuY2VvZiBFcnJvcj9tLm1lc3NhZ2U6U3RyaW5nKG0pKX0pLmZpbmFsbHkoKCk9PnskMT1udWxsfSl9O3IoKTtsZXQgbj1zZXRJbnRlcnZhbChyLFE4KTtyZXR1cm4oKT0+e3Y9ITAsY2xlYXJJbnRlcnZhbChuKX19LFtCLnN0YXR1cyxDLFpdKTtsZXQgcz1qKCgpPT57aWYoTy5jdXJyZW50PT09InBsYXlpbmciKXtPLmN1cnJlbnQ9InBhdXNlZCIsSygodik9Pih7Li4udixzdGF0dXM6InBhdXNlZCJ9KSk7cmV0dXJufWlmKEQuY3VycmVudD49dy5jdXJyZW50LnRvdGFsRGlzdGFuY2UmJiF3LmN1cnJlbnQudHJhaWwubG9vcClELmN1cnJlbnQ9MCxFLmN1cnJlbnQ9MDtpZihmLmN1cnJlbnQ9PW51bGwpe2xldCB2PW8xKHcuY3VycmVudCxELmN1cnJlbnQpO2YuY3VycmVudD17bGF0OnYubGF0LGxuZzp2LmxuZ319Ty5jdXJyZW50PSJwbGF5aW5nIixLKCh2KT0+KHsuLi52LHN0YXR1czoicGxheWluZyIsYXJjOkQuY3VycmVudCxlbGFwc2VkTXM6RS5jdXJyZW50fSkpfSxbXSksbD1qKCgpPT57Ty5jdXJyZW50PSJpZGxlIixELmN1cnJlbnQ9MCxFLmN1cnJlbnQ9MCxLKGg1KTtsZXQgdj1mLmN1cnJlbnQ7Zi5jdXJyZW50PW51bGw7bGV0IGk9dj9geGNydW4gc2ltY3RsIGxvY2F0aW9uICR7Q30gc2V0ICR7di5sYXQudG9GaXhlZCg3KX0sJHt2LmxuZy50b0ZpeGVkKDcpfWA6YHhjcnVuIHNpbWN0bCBsb2NhdGlvbiAke0N9IGNsZWFyYDtaKGkpLnRoZW4oKCQxKT0+e2lmKCQxLmV4aXRDb2RlIT09MClGKEs4KCQxLnN0ZGVycil8fG51bGwpO2Vsc2UgRihudWxsKX0pfSxbWixDXSksSDE9aigodik9PntRKHYpO2xldCBpPWkxLmZpbmQoKCQxKT0+JDEuaWQ9PT12KTtpZihpKVkoaS5tb2RlKX0sW10pO3koKCk9PigpPT57aWYoTy5jdXJyZW50PT09ImlkbGUiKXJldHVybjtsZXQgdj1mLmN1cnJlbnQsaT12P2B4Y3J1biBzaW1jdGwgbG9jYXRpb24gJHtDfSBzZXQgJHt2LmxhdC50b0ZpeGVkKDcpfSwke3YubG5nLnRvRml4ZWQoNyl9YDpgeGNydW4gc2ltY3RsIGxvY2F0aW9uICR7Q30gY2xlYXJgO1ooaSkuY2F0Y2goKCk9Pnt9KX0sW1osQ10pO2xldCBxMT1CLnN0YXR1cz09PSJwbGF5aW5nIixQMT1xMT9gJHttNShCLmFyYyl9IMK3ICR7VjgoQi5lbGFwc2VkTXMpfWA6YCR7bTUoTC50b3RhbERpc3RhbmNlKX0gdG90YWxgO3JldHVybiBxKCJkaXYiLHtzdHlsZTp7Li4udDkscGFkZGluZzoiOHB4IDEycHggMTJweCJ9LGNoaWxkcmVuOltxKCJzdHlsZSIse2NoaWxkcmVuOnU5fSkscSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT5YKCh2KT0+IXYpLHN0eWxlOmU5LGNsYXNzTmFtZToibGVtLXRvZ2dsZSIsImFyaWEtZXhwYW5kZWQiOkosY2hpbGRyZW46W3EoInNwYW4iLHtzdHlsZTpDNyxjaGlsZHJlbjoiTG9jYXRpb24ifSkscSgic3BhbiIse3N0eWxlOlo3LGNoaWxkcmVuOltxKCJzcGFuIix7c3R5bGU6ey4uLko3LGJhY2tncm91bmQ6cTE/IiM0YWRlODAiOkwudG90YWxEaXN0YW5jZT4wPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMykiOiJ0cmFuc3BhcmVudCIsYm94U2hhZG93OnExPyIwIDAgNnB4IHJnYmEoNzQsMjIyLDEyOCwwLjcpIjoibm9uZSJ9fSksUDFdfSkscShhMix7b3BlbjpKfSldfSksSiYmcShKMSx7Y2hpbGRyZW46W3EoImRpdiIse3N0eWxlOlg3LGNoaWxkcmVuOltxKCJkaXYiLHtzdHlsZTpxNyxjaGlsZHJlbjpbcSgic2VsZWN0Iix7dmFsdWU6RyxvbkNoYW5nZToodik9PkgxKHYudGFyZ2V0LnZhbHVlKSxzdHlsZTpHNyxjbGFzc05hbWU6ImxlbS1zZWxlY3QiLCJhcmlhLWxhYmVsIjoiVHJhaWwiLGNoaWxkcmVuOmkxLm1hcCgodik9PnEoIm9wdGlvbiIse3ZhbHVlOnYuaWQsY2hpbGRyZW46di5uYW1lfSx2LmlkKSl9KSxxKCJzcGFuIix7c3R5bGU6UTcsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46cShhMix7b3BlbjohMX0pfSldfSkscSgiZGl2Iix7c3R5bGU6JDcsY2hpbGRyZW46TS5kZXNjcmlwdGlvbn0pXX0pLHEoImRpdiIse3N0eWxlOlk3LGNoaWxkcmVuOltxKCJjYW52YXMiLHtyZWY6eCxzdHlsZTpWN30pLHEobDkse3ByZXBhcmVkOkx9KV19KSxxKCJkaXYiLHtzdHlsZTpfNyxjaGlsZHJlbjpbcSh2NSx7bGFiZWw6IkRpc3RhbmNlIix2YWx1ZTptNShCLmFyYyl9KSxxKHY1LHtsYWJlbDoiUGFjZSIsdmFsdWU6bjkoUC5jdXJyZW50KX0pLHEodjUse2xhYmVsOiJFbGFwc2VkIix2YWx1ZTpWOChCLmVsYXBzZWRNcyl9KV19KSxxKCJkaXYiLHtzdHlsZTpINyxjaGlsZHJlbjpbcSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOnMsc3R5bGU6ey4uLk43LGJhY2tncm91bmQ6cTE/InJnYmEoMjU1LDI1NSwyNTUsMC4xNikiOiIjMzRkMzk5Iixjb2xvcjpxMT8iI2ZmZiI6IiMwNjIwMTgifSxjbGFzc05hbWU6cTE/ImxlbS1wcmltYXJ5IGxlbS1wcmltYXJ5LW9uIjoibGVtLXByaW1hcnkiLCJhcmlhLXByZXNzZWQiOnExLHRpdGxlOnExPyJQYXVzZSI6IlBsYXkiLGNoaWxkcmVuOltxMT9xKFQ1LHt9KTpxKEk1LHt9KSxxKCJzcGFuIix7Y2hpbGRyZW46cTE/IlBhdXNlIjoiUGxheSJ9KV19KSxxKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6bCxzdHlsZTpGNyxjbGFzc05hbWU6ImxlbS1naG9zdCIsZGlzYWJsZWQ6Qi5zdGF0dXM9PT0iaWRsZSImJkIuYXJjPT09MCx0aXRsZToiU3RvcCBhbmQgY2xlYXIgc2ltdWxhdGVkIGxvY2F0aW9uIixjaGlsZHJlbjpbcShFNSx7fSkscSgic3BhbiIse2NoaWxkcmVuOiJTdG9wIn0pXX0pXX0pLHEoImRpdiIse3N0eWxlOkQ3LGNoaWxkcmVuOltxKCJkaXYiLHtzdHlsZTp7ZmxleDoxLG1pbldpZHRoOjB9LGNoaWxkcmVuOnEoYzkse2FyaWFMYWJlbDoiVHJhbnNwb3J0IG1vZGUiLHZhbHVlOiQsb25DaGFuZ2U6KHYpPT5ZKHYpLG9wdGlvbnM6W3t2YWx1ZToid2FsayIsbGFiZWw6IldhbGsiLGljb246cShTNSx7fSl9LHt2YWx1ZToicnVuIixsYWJlbDoiUnVuIixpY29uOnEoYjUse30pfSx7dmFsdWU6ImN5Y2xlIixsYWJlbDoiQ3ljbGUiLGljb246cShSNSx7fSl9LHt2YWx1ZToiZHJpdmUiLGxhYmVsOiJEcml2ZSIsaWNvbjpxKHk1LHt9KX1dfSl9KSxxKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PntsZXQgdj1qNS5pbmRleE9mKF8pLGk9ajVbKHYrMSklajUubGVuZ3RoXTtWKGkpfSxzdHlsZTp7Li4uaTIsYmFja2dyb3VuZDpfPjE/IiNmZmYiOmkyLmJhY2tncm91bmQsYm9yZGVyQ29sb3I6Xz4xPyIjZmZmIjppMi5ib3JkZXJDb2xvcixjb2xvcjpfPjE/IiMwYTBhMGMiOmkyLmNvbG9yfSxjbGFzc05hbWU6Xz4xPyJsZW0tc3BlZWQgbGVtLXNwZWVkLW9uIjoibGVtLXNwZWVkIiwiYXJpYS1sYWJlbCI6YFNwZWVkICR7X33DlyDigJQgdGFwIHRvIGN5Y2xlYCx0aXRsZTpgU3BlZWQgJHtffcOXIOKAlCB0YXAgdG8gY3ljbGVgLGNoaWxkcmVuOltxKHc1LHt9KSxfPjEmJnEoInNwYW4iLHtzdHlsZTpVNyxjaGlsZHJlbjpbXywiw5ciXX0pXX0pXX0pLEgmJnEoImRpdiIse3N0eWxlOk03LGNoaWxkcmVuOkh9KV19KV19KX12YXIgdjU9TzIoZnVuY3Rpb24oe2xhYmVsOlosdmFsdWU6Sn0pe3JldHVybiBxKCJkaXYiLHtzdHlsZTpLNyxjaGlsZHJlbjpbcSgiZGl2Iix7c3R5bGU6TDcsY2hpbGRyZW46Wn0pLHEoImRpdiIse3N0eWxlOkI3LGNoaWxkcmVuOkp9KV19KX0pO2Z1bmN0aW9uIGM5KHt2YWx1ZTpDLG9uQ2hhbmdlOlosb3B0aW9uczpKLGFyaWFMYWJlbDpYfSl7cmV0dXJuIHEoImRpdiIse3JvbGU6Imdyb3VwIiwiYXJpYS1sYWJlbCI6WCxzdHlsZTpPNyxjaGlsZHJlbjpKLm1hcCgoRyk9PntsZXQgUT1HLnZhbHVlPT09QztyZXR1cm4gcSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT5aKEcudmFsdWUpLHN0eWxlOnsuLi56NyxiYWNrZ3JvdW5kOlE/InJnYmEoMjU1LDI1NSwyNTUsMC4xMikiOiJ0cmFuc3BhcmVudCIsY29sb3I6UT8iI2ZmZiI6InJnYmEoMjU1LDI1NSwyNTUsMC42KSJ9LGNsYXNzTmFtZTpRPyJsZW0tc2VnIGxlbS1zZWctYWN0aXZlIjoibGVtLXNlZyIsImFyaWEtcHJlc3NlZCI6USwiYXJpYS1sYWJlbCI6Ry5pY29uP0cubGFiZWw6dm9pZCAwLHRpdGxlOkcuaWNvbj9HLmxhYmVsOnZvaWQgMCxjaGlsZHJlbjpHLmljb24/P0cubGFiZWx9LEcudmFsdWUpfSl9KX1mdW5jdGlvbiBsOSh7cHJlcGFyZWQ6Q30pe2lmKEMucmF3TWF4QWx0LUMucmF3TWluQWx0PDUpcmV0dXJuIG51bGw7cmV0dXJuIHEoSjEse2NoaWxkcmVuOltxKCJkaXYiLHtzdHlsZTp7Li4uTDgsdG9wOjgsbGVmdDoxMH0sY2hpbGRyZW46W3EobzIse2RpcjoidXAifSksIiAiLF84KEMucmF3TWF4QWx0KV19KSxxKCJkaXYiLHtzdHlsZTp7Li4uTDgsdG9wOjgscmlnaHQ6MTB9LGNoaWxkcmVuOltxKG8yLHtkaXI6ImRvd24ifSksIiAiLF84KEMucmF3TWluQWx0KV19KV19KX12YXIgJDg9MTQwO2Z1bmN0aW9uIFk4KEMsWil7bGV0IEo9QXJyYXkoWik7Zm9yKGxldCBYPTA7WDxaO1grKyl7bGV0IEc9Wj09PTE/MDpYLyhaLTEpLFE9bzEoQyxHKkMudG90YWxEaXN0YW5jZSk7SltYXT17eDpRLngseTpRLnksejpRLnp9fXJldHVybiBKfWZ1bmN0aW9uIGQ5KEMsWixKLFgpe2xldCBHPShDLmJvdW5kcy54WzBdK0MuYm91bmRzLnhbMV0pLzIsUT0oQy5ib3VuZHMuelswXStDLmJvdW5kcy56WzFdKS8yLCQ9Qy5ib3VuZHMueVswXSxZPU1hdGgubWF4KDEsQy5ib3VuZHMueFsxXS1DLmJvdW5kcy54WzBdLEMuYm91bmRzLnpbMV0tQy5ib3VuZHMuelswXSksXz0oSi5ib3VuZHMueFswXStKLmJvdW5kcy54WzFdKS8yLFY9KEouYm91bmRzLnpbMF0rSi5ib3VuZHMuelsxXSkvMixCPUouYm91bmRzLnlbMF0sSD1NYXRoLm1heCgxLEouYm91bmRzLnhbMV0tSi5ib3VuZHMueFswXSxKLmJvdW5kcy56WzFdLUouYm91bmRzLnpbMF0pL1ksTT1ZOChDLCQ4KS5tYXAoKGspPT4oe3g6KGsueC1HKSpIK18seTooay55LSQpKkgrQix6OihrLnotUSkqSCtWfSkpLEw9WTgoSiwkOCksRD0oQy50cmFpbC5sb29wfHxKLnRyYWlsLmxvb3ApPz8hMSxPPWE5KE0sTCxEKSxQPW8xKEMsWiksRT17eDooUC54LUcpKkgrXyx5OihQLnktJCkqSCtCLHo6KFAuei1RKSpIK1Z9LHc9bzEoSiwwKSxmPXt4OncueCx5OncueSx6Oncuen07cmV0dXJue2Zyb206Qyx0bzpKLGZyb21QdHM6TSx0b1B0czpPLHByZXZNYXJrZXI6RSxuZXh0TWFya2VyOmYsc3RhcnRNczpYfX1mdW5jdGlvbiBhOShDLFosSil7bGV0IFg9Qy5sZW5ndGgsRz0xLzAsUT0wLCQ9ITEsWT1bWixbLi4uWl0ucmV2ZXJzZSgpXTtmb3IobGV0IEI9MDtCPFkubGVuZ3RoO0IrKyl7bGV0IEs9WVtCXSxIPUo/WDoxO2ZvcihsZXQgRj0wO0Y8SDtGKyspe2xldCBNPTA7Zm9yKGxldCBMPTA7TDxYO0wrKyl7bGV0IEQ9Q1tMXSxPPUtbKEwrRiklWF0sUD1ELngtTy54LEU9RC55LU8ueSx3PUQuei1PLno7aWYoTSs9UCpQK0UqRSt3KncsTT49RylicmVha31pZihNPEcpRz1NLFE9RiwkPUI9PT0xfX1sZXQgXz0kP1suLi5aXS5yZXZlcnNlKCk6WixWPUFycmF5KFgpO2ZvcihsZXQgQj0wO0I8WDtCKyspVltCXT1fWyhCK1EpJVhdO3JldHVybiBWfWZ1bmN0aW9uIG85KEMsWil7bGV0IEo9Qy5mcm9tUHRzLmxlbmd0aCxYPUFycmF5KEopLEc9MCxRPW51bGwsJD0xLzAsWT0tMS8wLF89MS8wLFY9LTEvMCxCPTEvMCxLPS0xLzA7Zm9yKGxldCBIPTA7SDxKO0grKyl7bGV0IEY9Qy5mcm9tUHRzW0hdLE09Qy50b1B0c1tIXSxMPUYueCsoTS54LUYueCkqWixEPUYueSsoTS55LUYueSkqWixPPUYueisoTS56LUYueikqWjtpZihRKXtsZXQgRT1MLVEueCx3PUQtUS55LGY9Ty1RLno7Rys9TWF0aC5zcXJ0KEUqRSt3KncrZipmKX1sZXQgUD17eDpMLHk6RCx6Ok8sYXJjOkcsbGF0OjAsbG5nOjB9O2lmKFhbSF09UCxRPVAsTDwkKSQ9TDtpZihMPlkpWT1MO2lmKEQ8XylfPUQ7aWYoRD5WKVY9RDtpZihPPEIpQj1PO2lmKE8+SylLPU99cmV0dXJue3RyYWlsOkMudG8udHJhaWwsb3JpZ2luOkMudG8ub3JpZ2luLHBvaW50czpYLHRvdGFsRGlzdGFuY2U6Ryxib3VuZHM6e3g6WyQsWV0seTpbXyxWXSx6OltCLEtdfSxyYXdNaW5BbHQ6Qy50by5yYXdNaW5BbHQrKEMuZnJvbS5yYXdNaW5BbHQtQy50by5yYXdNaW5BbHQpKigxLVopLHJhd01heEFsdDpDLnRvLnJhd01heEFsdCsoQy5mcm9tLnJhd01heEFsdC1DLnRvLnJhd01heEFsdCkqKDEtWil9fWZ1bmN0aW9uIGk5KEMpe3JldHVybiBDPDAuNT8yKkMqQzoxLU1hdGgucG93KC0yKkMrMiwyKS8yfWZ1bmN0aW9uIHI5KEMsWixKLFgsRyxRLCQpe2xldCBZPUMuZ2V0Q29udGV4dCgiMmQiKTtpZighWSlyZXR1cm47bGV0e2NsaWVudFdpZHRoOl8sY2xpZW50SGVpZ2h0OlZ9PUM7aWYoXz09PTB8fFY9PT0wKXJldHVybjtsZXQgQj10eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MToxLEs9TWF0aC5yb3VuZChfKkIpLEg9TWF0aC5yb3VuZChWKkIpO2lmKEMud2lkdGghPT1LfHxDLmhlaWdodCE9PUgpQy53aWR0aD1LLEMuaGVpZ2h0PUg7WS5zZXRUcmFuc2Zvcm0oQiwwLDAsQiwwLDApLFkuY2xlYXJSZWN0KDAsMCxfLFYpO2xldCBGPVkuY3JlYXRlUmFkaWFsR3JhZGllbnQoXyowLjUsViowLjU1LE1hdGgubWluKF8sVikqMC4yLF8qMC41LFYqMC41NSxNYXRoLm1heChfLFYpKjAuODUpO0YuYWRkQ29sb3JTdG9wKDAsIiMxYTFhMWQiKSxGLmFkZENvbG9yU3RvcCgxLCIjMGEwYTBjIiksWS5maWxsU3R5bGU9RixZLmZpbGxSZWN0KDAsMCxfLFYpLHM5KFksXyxWKTtsZXR7cG9pbnRzOk0sYm91bmRzOkx9PVo7aWYoTS5sZW5ndGg8MilyZXR1cm47bGV0IEQ9MjgqTWF0aC5QSS8xODAsTz1NYXRoLnNpbihEKSxQPU1hdGguY29zKEQpLEU9TWF0aC5zaW4oWCksdz1NYXRoLmNvcyhYKSxmPShMLnhbMF0rTC54WzFdKS8yLGs9KEwuelswXStMLnpbMV0pLzIsVD1MLnhbMV0tTC54WzBdLFM9TC56WzFdLUwuelswXSx4PUwueVsxXS1MLnlbMF0scz1NYXRoLm1heChULFMpKjEuMDUsbD1NYXRoLm1heChTKlAreCpPLFQqMC40KSoxLjE1LEgxPV8qMC4wOCxxMT1WKjAuMTgsUDE9TWF0aC5taW4oKF8tSDEqMikvcywoVi1xMSoyKS9sKSoxLjQ1LHY9eDwxPzE6TWF0aC5taW4oMjQsMTQwL01hdGgubWF4KDIwLHgpKSxpPShtLGQscCk9PntsZXQgZT1tLWYsWTE9cC1rLEwxPWUqdytZMSpFLEIxPS1lKkUrWTEqdyxTMT1kKnYsczE9UzEqUC1CMSpPLE4xPVMxKk8rQjEqUDtyZXR1cm57c3g6Xy8yK0wxKlAxLHN5OlYqMC41NS1zMSpQMSxkZXB0aDpOMX19LCQxPTM4LHI9TS5tYXAoKG0pPT57bGV0IGQ9aShtLngsbS55LG0ueikscD1pKG0ueCwwLG0ueiksZT17c3g6ZC5zeCxzeTpNYXRoLm1heChwLnN5LGQuc3krJDEpLGRlcHRoOnAuZGVwdGh9O3JldHVybntwOm0sdG9wOmQsYm90OmV9fSk7Zm9yKGxldCBtPTE7bTxyLmxlbmd0aDttKyspe2xldCBkPXJbbS0xXSxwPXJbbV0sZT1ZLmNyZWF0ZUxpbmVhckdyYWRpZW50KChkLnRvcC5zeCtwLnRvcC5zeCkvMiwoZC50b3Auc3krcC50b3Auc3kpLzIsKGQuYm90LnN4K3AuYm90LnN4KS8yLChkLmJvdC5zeStwLmJvdC5zeSkvMik7ZS5hZGRDb2xvclN0b3AoMCwicmdiYSgyNTUsMjU1LDI1NSwwLjU1KSIpLGUuYWRkQ29sb3JTdG9wKDAuNDUsInJnYmEoMTgwLDE4MCwxODUsMC4yOCkiKSxlLmFkZENvbG9yU3RvcCgwLjg1LCJyZ2JhKDQwLDQwLDQ1LDAuMTgpIiksZS5hZGRDb2xvclN0b3AoMSwicmdiYSgwLDAsMCwwKSIpLFkuZmlsbFN0eWxlPWUsWS5iZWdpblBhdGgoKSxZLm1vdmVUbyhkLnRvcC5zeCxkLnRvcC5zeSksWS5saW5lVG8ocC50b3Auc3gscC50b3Auc3kpLFkubGluZVRvKHAuYm90LnN4LHAuYm90LnN5KSxZLmxpbmVUbyhkLmJvdC5zeCxkLmJvdC5zeSksWS5jbG9zZVBhdGgoKSxZLmZpbGwoKX1ZLnN0cm9rZVN0eWxlPSIjZmZmZmZmIixZLmxpbmVXaWR0aD0xLjYsWS5saW5lQ2FwPSJyb3VuZCIsWS5saW5lSm9pbj0icm91bmQiLFkuYmVnaW5QYXRoKCk7Zm9yKGxldCBtPTA7bTxyLmxlbmd0aDttKyspe2xldHt0b3A6ZH09clttXTtpZihtPT09MClZLm1vdmVUbyhkLnN4LGQuc3kpO2Vsc2UgWS5saW5lVG8oZC5zeCxkLnN5KX1ZLnN0cm9rZSgpO2xldCBuPUo7WS5zdHJva2VTdHlsZT0iI2Y5ZDJhNCIsWS5saW5lV2lkdGg9Mi4yLFkuYmVnaW5QYXRoKCk7bGV0IEYxPSExO2ZvcihsZXQgbT0wO208ci5sZW5ndGg7bSsrKXtsZXR7cDpkLHRvcDpwfT1yW21dO2lmKGQuYXJjPm4pYnJlYWs7aWYoIUYxKVkubW92ZVRvKHAuc3gscC5zeSksRjE9ITA7ZWxzZSBZLmxpbmVUbyhwLnN4LHAuc3kpfWlmKEYxKVkuc3Ryb2tlKCk7bGV0IEMxPSQ/P28xKFosSiksdD1pKEMxLngsQzEueSxDMS56KTtpZihRKXtsZXQgcD1HJTI2MDAvMjYwMCxlPTQrMjIqcCxZMT0wLjIyKigxLXApLEwxPVkuY3JlYXRlUmFkaWFsR3JhZGllbnQodC5zeCx0LnN5LGUqMC41LHQuc3gsdC5zeSxlKTtMMS5hZGRDb2xvclN0b3AoMCwicmdiYSgyNTUsMjU1LDI1NSwwKSIpLEwxLmFkZENvbG9yU3RvcCgwLjcsYHJnYmEoMjU1LDI1NSwyNTUsJHtZMS50b0ZpeGVkKDMpfSlgKSxMMS5hZGRDb2xvclN0b3AoMSwicmdiYSgyNTUsMjU1LDI1NSwwKSIpLFkuZmlsbFN0eWxlPUwxLFkuYmVnaW5QYXRoKCksWS5hcmModC5zeCx0LnN5LGUsMCxNYXRoLlBJKjIpLFkuZmlsbCgpfVkuZmlsbFN0eWxlPSIjZmZmIixZLmJlZ2luUGF0aCgpLFkuYXJjKHQuc3gsdC5zeSwzLjgsMCxNYXRoLlBJKjIpLFkuZmlsbCgpfWZ1bmN0aW9uIHM5KEMsWixKKXtDLmZpbGxTdHlsZT0icmdiYSgyNTUsMjU1LDI1NSwwLjA2KSI7Zm9yKGxldCBRPTc7UTxKO1ErPTE0KWZvcihsZXQgJD03OyQ8WjskKz0xNClDLmJlZ2luUGF0aCgpLEMuYXJjKCQsUSwwLjcsMCxNYXRoLlBJKjIpLEMuZmlsbCgpfWZ1bmN0aW9uIG01KEMpe2lmKEM8MTAwMClyZXR1cm5gJHtDLnRvRml4ZWQoMCl9IG1gO3JldHVybmAkeyhDLzEwMDApLnRvRml4ZWQoMil9IGttYH1mdW5jdGlvbiBWOChDKXtsZXQgWj1NYXRoLmZsb29yKEMvMTAwMCksSj1NYXRoLmZsb29yKFovMzYwMCksWD1NYXRoLmZsb29yKFolMzYwMC82MCksRz1aJTYwO2lmKEo+MClyZXR1cm5gJHtKfToke1gudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7Ry50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gO3JldHVybmAke1h9OiR7Ry50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gfWZ1bmN0aW9uIG45KEMpe2lmKEM8PTApcmV0dXJuIuKAlCI7aWYoQz43KXJldHVybmAkeyhDKjMuNikudG9GaXhlZCgwKX0ga20vaGA7bGV0IFo9MTAwMC9DLEo9TWF0aC5mbG9vcihaLzYwKSxYPU1hdGgucm91bmQoWiU2MCk7cmV0dXJuYCR7Sn06JHtYLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS9rbWB9ZnVuY3Rpb24gXzgoQyl7cmV0dXJuYCR7Qy50b0ZpeGVkKDApfSBtYH1mdW5jdGlvbiBLOChDKXtsZXQgWj1DLnRyaW0oKTtpZighWilyZXR1cm4iIjtsZXQgSj1aLm1hdGNoKC9SZWFzb246XHMqKC4rKSQvbSk7aWYoSilyZXR1cm4gSlsxXTtyZXR1cm4gWi5zcGxpdChgCmApLnNsaWNlKC0xKVswXT8/Wn12YXIgdDk9e2JhY2tncm91bmQ6IiMxYzFjMWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wOCkiLGJvcmRlclJhZGl1czoxMCxkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDoxMH0sZTk9e2Rpc3BsYXk6ImdyaWQiLGdyaWRUZW1wbGF0ZUNvbHVtbnM6ImF1dG8gMWZyIGF1dG8iLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjgsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6IiNlZWUiLHBhZGRpbmc6IjEwcHggNHB4IixtYXJnaW46Ii04cHggLTRweCIsY3Vyc29yOiJwb2ludGVyIix3aWR0aDoiY2FsYygxMDAlICsgOHB4KSIsdGV4dEFsaWduOiJsZWZ0IixtaW5IZWlnaHQ6MzYsbGluZUhlaWdodDoxfSxDNz17Zm9udFNpemU6MTEsZm9udFdlaWdodDo2MDAsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41KSIsdGV4dFRyYW5zZm9ybToidXBwZXJjYXNlIixsZXR0ZXJTcGFjaW5nOiIwLjA4ZW0iLGxpbmVIZWlnaHQ6MSxkaXNwbGF5OiJpbmxpbmUtZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIn0sWjc9e2ZvbnRTaXplOjExLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTUpIixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsZGlzcGxheToiaW5saW5lLWZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjYsanVzdGlmeVNlbGY6ImVuZCIsbGluZUhlaWdodDoxfSxKNz17d2lkdGg6NixoZWlnaHQ6Nixib3JkZXJSYWRpdXM6IjUwJSIsdHJhbnNpdGlvbjoiYmFja2dyb3VuZCAwLjJzLCBib3gtc2hhZG93IDAuMnMifSxYNz17ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixnYXA6NH0scTc9e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsZGlzcGxheToiYmxvY2sifSxHNz17YXBwZWFyYW5jZToibm9uZSIsV2Via2l0QXBwZWFyYW5jZToibm9uZSIsYmFja2dyb3VuZDoicmdiYSgyNTUsMjU1LDI1NSwwLjA0KSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjYsY29sb3I6IiNlZWUiLGZvbnRTaXplOjEyLHBhZGRpbmc6IjZweCAyNnB4IDZweCA4cHgiLGZvbnRGYW1pbHk6ImluaGVyaXQiLGN1cnNvcjoicG9pbnRlciIsd2lkdGg6IjEwMCUiLHRyYW5zaXRpb246ImJhY2tncm91bmQgMC4xMnMsIGJvcmRlci1jb2xvciAwLjEycyJ9LFE3PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHJpZ2h0OjksdG9wOiI1MCUiLHRyYW5zZm9ybToidHJhbnNsYXRlWSgtNTAlKSIscG9pbnRlckV2ZW50czoibm9uZSIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIn0sJDc9e2ZvbnRTaXplOjEwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNDUpIn0sWTc9e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsd2lkdGg6IjEwMCUiLGFzcGVjdFJhdGlvOiIxNiAvIDExIixib3JkZXJSYWRpdXM6MTAsb3ZlcmZsb3c6ImhpZGRlbiIsYmFja2dyb3VuZDoiIzBhMGEwYyIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA2KSJ9LFY3PXt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixkaXNwbGF5OiJibG9jayJ9LEw4PXtwb3NpdGlvbjoiYWJzb2x1dGUiLGJhY2tncm91bmQ6InJnYmEoMjAsMjAsMjIsMC42NSkiLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuODUpIixmb250U2l6ZToxMCxmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIscGFkZGluZzoiMnB4IDZweCIsYm9yZGVyUmFkaXVzOjUsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixsZXR0ZXJTcGFjaW5nOiIwLjAyZW0iLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wNikifSxfNz17ZGlzcGxheToiZ3JpZCIsZ3JpZFRlbXBsYXRlQ29sdW1uczoiMWZyIDFmciAxZnIiLGdhcDo2fSxLNz17ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixnYXA6MixiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDMpIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDYpIixib3JkZXJSYWRpdXM6NixwYWRkaW5nOiI1cHggN3B4IixtaW5XaWR0aDowfSxMNz17Zm9udFNpemU6OSx0ZXh0VHJhbnNmb3JtOiJ1cHBlcmNhc2UiLGxldHRlclNwYWNpbmc6IjAuMDZlbSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC40NSkifSxCNz17Zm9udFNpemU6MTIsZm9udEZhbWlseToidWktbW9ub3NwYWNlLCBtb25vc3BhY2UiLGNvbG9yOiIjZmZmIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxINz17ZGlzcGxheToiZmxleCIsZ2FwOjZ9LE43PXtmbGV4OjEsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixnYXA6NixwYWRkaW5nOiI4cHggMTBweCIsYm9yZGVyOiJub25lIixib3JkZXJSYWRpdXM6Nyxmb250U2l6ZToxMixmb250V2VpZ2h0OjYwMCxjdXJzb3I6InBvaW50ZXIiLGZvbnRGYW1pbHk6ImluaGVyaXQifSxGNz17ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixnYXA6NixwYWRkaW5nOiI4cHggMTJweCIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSIsYm9yZGVyUmFkaXVzOjcsZm9udFNpemU6MTIsZm9udFdlaWdodDo1MDAsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuODUpIixjdXJzb3I6InBvaW50ZXIiLGZvbnRGYW1pbHk6ImluaGVyaXQifSxENz17ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoicm93IixhbGlnbkl0ZW1zOiJzdHJldGNoIixnYXA6Nn0saTI9e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsZ2FwOjQscGFkZGluZzoiMCAxMHB4Iixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixib3JkZXJSYWRpdXM6NyxiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDQpIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjg1KSIsY3Vyc29yOiJwb2ludGVyIixmb250RmFtaWx5OiJpbmhlcml0Iixmb250U2l6ZToxMSxmb250V2VpZ2h0OjYwMCxtaW5XaWR0aDo1Nn0sVTc9e2ZvbnRGYW1pbHk6InVpLW1vbm9zcGFjZSwgbW9ub3NwYWNlIixmb250VmFyaWFudE51bWVyaWM6InRhYnVsYXItbnVtcyJ9LE83PXtkaXNwbGF5OiJmbGV4IixiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDQpIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixib3JkZXJSYWRpdXM6NyxwYWRkaW5nOjIsZ2FwOjJ9LHo3PXtmbGV4OjEsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixib3JkZXI6Im5vbmUiLGJvcmRlclJhZGl1czo1LHBhZGRpbmc6IjVweCA4cHgiLGZvbnRTaXplOjExLGZvbnRXZWlnaHQ6NTAwLGN1cnNvcjoicG9pbnRlciIsZm9udEZhbWlseToiaW5oZXJpdCIsdHJhbnNpdGlvbjoiYmFja2dyb3VuZCAwLjEycywgY29sb3IgMC4xMnMiLG1pbkhlaWdodDoyMn0sTTc9e2JhY2tncm91bmQ6InJnYmEoMjQ4LDExMywxMTMsMC4wOCkiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjQ4LDExMywxMTMsMC4yKSIsY29sb3I6IiNmY2E1YTUiLGZvbnRTaXplOjExLHBhZGRpbmc6IjZweCA4cHgiLGJvcmRlclJhZGl1czo2fTt2YXIgVzc9e3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjEyLHJpZ2h0OjEyLGJvdHRvbToxMixtaW5XaWR0aDowLGJhY2tncm91bmQ6InJnYmEoMjAsMjAsMjIsMC45MikiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wOCkiLGJvcmRlclJhZGl1czoxNCxjb2xvcjoiI2VlZSIsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixvdmVyZmxvdzoiaGlkZGVuIix0cmFuc2l0aW9uOiJ0cmFuc2Zvcm0gMC4yNXMgZWFzZSwgb3BhY2l0eSAwLjJzIGVhc2UiLGJveFNoYWRvdzoiMCAxMnB4IDQwcHggcmdiYSgwLDAsMCwwLjU1KSIsYmFja2Ryb3BGaWx0ZXI6ImJsdXIoMThweCkiLFdlYmtpdEJhY2tkcm9wRmlsdGVyOiJibHVyKDE4cHgpIixmb250RmFtaWx5OiItYXBwbGUtc3lzdGVtLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWYiLHpJbmRleDozNX0sUDc9e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLGdhcDoxMCxwYWRkaW5nOiI2cHggMTBweCA2cHggMTJweCIsZmxleFNocmluazowfSxrNz17Zm9udFNpemU6MTEsZm9udFdlaWdodDo1MDAsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41NSkifSxBNz17YmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6IiNhYWEiLGN1cnNvcjoicG9pbnRlciIscGFkZGluZzo0LGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsYm9yZGVyUmFkaXVzOjQsZmxleFNocmluazowfTtmdW5jdGlvbiByMih7b3BlbjpDLHdpZHRoOlosY2hpbGRyZW46SixzdHlsZTpYfSl7cmV0dXJuIHEoImFzaWRlIix7c3R5bGU6ey4uLlc3LHdpZHRoOlosdHJhbnNmb3JtOkM/InRyYW5zbGF0ZVgoMCkiOiJ0cmFuc2xhdGVYKGNhbGMoMTAwJSArIDI0cHgpKSIsb3BhY2l0eTpDPzE6MCxwb2ludGVyRXZlbnRzOkM/ImF1dG8iOiJub25lIiwuLi5YfSwiYXJpYS1oaWRkZW4iOiFDLGNoaWxkcmVuOkp9KX1mdW5jdGlvbiBzMih7Y2hpbGRyZW46QyxzdHlsZTpafSl7cmV0dXJuIHEoImhlYWRlciIse3N0eWxlOnsuLi5QNywuLi5afSxjaGlsZHJlbjpDfSl9ZnVuY3Rpb24gZzUoe2NoaWxkcmVuOkN9KXtyZXR1cm4gcSgic3BhbiIse3N0eWxlOms3LGNoaWxkcmVuOkN9KX1mdW5jdGlvbiBuMih7b25DbGljazpDLGFyaWFMYWJlbDpaPSJDbG9zZSBwYW5lbCIsdGl0bGU6SixpY29uU2l6ZTpYPTE2fSl7cmV0dXJuIHEoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazpDLHN0eWxlOkE3LCJhcmlhLWxhYmVsIjpaLHRpdGxlOkosY2hpbGRyZW46cSgic3ZnIix7d2lkdGg6WCxoZWlnaHQ6WCx2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W3EoImxpbmUiLHt4MToiMTgiLHkxOiI2Iix4MjoiNiIseTI6IjE4In0pLHEoImxpbmUiLHt4MToiNiIseTE6IjYiLHgyOiIxOCIseTI6IjE4In0pXX0pfSl9ZnVuY3Rpb24gSTcoQyl7bGV0W1osSl09SShudWxsKSxYPWgobmV3IFNldCksRz1qKChRKT0+e3JldHVybiBYLmN1cnJlbnQuYWRkKFEpLCgpPT57WC5jdXJyZW50LmRlbGV0ZShRKX19LFtdKTtyZXR1cm4geSgoKT0+e2lmKCFDKXJldHVybjtsZXQgUT1uZXcgQWJvcnRDb250cm9sbGVyLCQ9ITEsWT1udWxsLF89Qy5yZXBsYWNlKC9cL3N0cmVhbVwubWpwZWckLywiIiksVj0oRCk9PntpZihELndpZHRoPD0wfHxELmhlaWdodDw9MClyZXR1cm47SigoTyk9Pk8mJk8ud2lkdGg9PT1ELndpZHRoJiZPLmhlaWdodD09PUQuaGVpZ2h0JiZPLm9yaWVudGF0aW9uPT09RC5vcmllbnRhdGlvbj9POkQpfSxCPSgpPT57ZmV0Y2goYCR7X30vY29uZmlnYCx7c2lnbmFsOlEuc2lnbmFsfSkudGhlbigoRCk9PkQuanNvbigpKS50aGVuKFYpLmNhdGNoKCgpPT57fSl9O0IoKTtsZXQgSz1zZXRJbnRlcnZhbChCLDEwMDApLEg9bmV3IFVSTChDKTtILnNlYXJjaFBhcmFtcy5zZXQoInJhdyIsIjEiKTtsZXQgRj1ILnRvU3RyaW5nKCksTT0oKT0+e2lmKCR8fFEuc2lnbmFsLmFib3J0ZWR8fFkpcmV0dXJuO1k9c2V0VGltZW91dCgoKT0+e1k9bnVsbCxMKCl9LDEwMDApfSxMPWFzeW5jKCk9Pnt0cnl7bGV0IE89KGF3YWl0IGZldGNoKEYse3NpZ25hbDpRLnNpZ25hbH0pKS5ib2R5Py5nZXRSZWFkZXIoKTtpZighTyl7TSgpO3JldHVybn1sZXQgUD1uZXcgVWludDhBcnJheSgwKTt3aGlsZSghMCl7bGV0e2RvbmU6RSx2YWx1ZTp3fT1hd2FpdCBPLnJlYWQoKTtpZihFKWJyZWFrO2xldCBmPW5ldyBVaW50OEFycmF5KFAubGVuZ3RoK3cubGVuZ3RoKTtmLnNldChQKSxmLnNldCh3LFAubGVuZ3RoKSxQPWY7d2hpbGUoITApe2xldCBrPS0xO2ZvcihsZXQgbD0wO2w8UC5sZW5ndGgtMTtsKyspaWYoUFtsXT09PTI1NSYmUFtsKzFdPT09MjE2KXtrPWw7YnJlYWt9aWYoaz09PS0xKWJyZWFrO2xldCBUPS0xO2ZvcihsZXQgbD1rKzI7bDxQLmxlbmd0aC0xO2wrKylpZihQW2xdPT09MjU1JiZQW2wrMV09PT0yMTcpe1Q9bCsyO2JyZWFrfWlmKFQ9PT0tMSlicmVhaztsZXQgUz1QLnNsaWNlKGssVCk7UD1QLnNsaWNlKFQpO2xldCB4PW5ldyBCbG9iKFtTXSx7dHlwZToiaW1hZ2UvanBlZyJ9KSxzPVVSTC5jcmVhdGVPYmplY3RVUkwoeCk7aWYoWC5jdXJyZW50LnNpemU9PT0wKXtVUkwucmV2b2tlT2JqZWN0VVJMKHMpO2NvbnRpbnVlfWZvcihsZXQgbCBvZiBYLmN1cnJlbnQpbChzKX19fWNhdGNoe31maW5hbGx5e00oKX19O3JldHVybiBMKCksKCk9PntpZigkPSEwLFkpY2xlYXJUaW1lb3V0KFkpO1EuYWJvcnQoKSxjbGVhckludGVydmFsKEspfX0sW0NdKSx7c3Vic2NyaWJlRnJhbWU6RyxmcmFtZTpudWxsLGNvbmZpZzpafX12YXIgVDc9e0tleUE6NCxLZXlCOjUsS2V5Qzo2LEtleUQ6NyxLZXlFOjgsS2V5Rjo5LEtleUc6MTAsS2V5SDoxMSxLZXlJOjEyLEtleUo6MTMsS2V5SzoxNCxLZXlMOjE1LEtleU06MTYsS2V5TjoxNyxLZXlPOjE4LEtleVA6MTksS2V5UToyMCxLZXlSOjIxLEtleVM6MjIsS2V5VDoyMyxLZXlVOjI0LEtleVY6MjUsS2V5VzoyNixLZXlYOjI3LEtleVk6MjgsS2V5WjoyOSxEaWdpdDE6MzAsRGlnaXQyOjMxLERpZ2l0MzozMixEaWdpdDQ6MzMsRGlnaXQ1OjM0LERpZ2l0NjozNSxEaWdpdDc6MzYsRGlnaXQ4OjM3LERpZ2l0OTozOCxEaWdpdDA6MzksRW50ZXI6NDAsRXNjYXBlOjQxLEJhY2tzcGFjZTo0MixUYWI6NDMsU3BhY2U6NDQsTWludXM6NDUsRXF1YWw6NDYsQnJhY2tldExlZnQ6NDcsQnJhY2tldFJpZ2h0OjQ4LEJhY2tzbGFzaDo0OSxTZW1pY29sb246NTEsUXVvdGU6NTIsQmFja3F1b3RlOjUzLENvbW1hOjU0LFBlcmlvZDo1NSxTbGFzaDo1NixDYXBzTG9jazo1NyxGMTo1OCxGMjo1OSxGMzo2MCxGNDo2MSxGNTo2MixGNjo2MyxGNzo2NCxGODo2NSxGOTo2NixGMTA6NjcsRjExOjY4LEYxMjo2OSxQcmludFNjcmVlbjo3MCxTY3JvbGxMb2NrOjcxLFBhdXNlOjcyLEluc2VydDo3MyxIb21lOjc0LFBhZ2VVcDo3NSxEZWxldGU6NzYsRW5kOjc3LFBhZ2VEb3duOjc4LEFycm93UmlnaHQ6NzksQXJyb3dMZWZ0OjgwLEFycm93RG93bjo4MSxBcnJvd1VwOjgyLE51bUxvY2s6ODMsTnVtcGFkRGl2aWRlOjg0LE51bXBhZE11bHRpcGx5Ojg1LE51bXBhZFN1YnRyYWN0Ojg2LE51bXBhZEFkZDo4NyxOdW1wYWRFbnRlcjo4OCxOdW1wYWQxOjg5LE51bXBhZDI6OTAsTnVtcGFkMzo5MSxOdW1wYWQ0OjkyLE51bXBhZDU6OTMsTnVtcGFkNjo5NCxOdW1wYWQ3Ojk1LE51bXBhZDg6OTYsTnVtcGFkOTo5NyxOdW1wYWQwOjk4LE51bXBhZERlY2ltYWw6OTksQ29udHJvbExlZnQ6MjI0LFNoaWZ0TGVmdDoyMjUsQWx0TGVmdDoyMjYsTWV0YUxlZnQ6MjI3LENvbnRyb2xSaWdodDoyMjgsU2hpZnRSaWdodDoyMjksQWx0UmlnaHQ6MjMwLE1ldGFSaWdodDoyMzF9O2Z1bmN0aW9uIEU3KEMpe3JldHVybiBUN1tDXT8/bnVsbH1mdW5jdGlvbiByMShDKXtsZXQgSj13aW5kb3cuX19TSU1fUFJFVklFV19fPy5iYXNlUGF0aD8/KHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cLyskLywiIil8fCIvIik7cmV0dXJuIEo9PT0iLyI/YC8ke0N9YDpgJHtKfS8ke0N9YH1mdW5jdGlvbiBGOChDKXtyZXR1cm4gQz8uZXJyb3JzPy5pbmNsdWRlcyhnMyk/PyExfWZ1bmN0aW9uIEQ4KHtzaXplOkM9MTgsc3Ryb2tlV2lkdGg6Wj0yfSl7cmV0dXJuIHEoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6QyxoZWlnaHQ6Qyx2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDpaLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltxKCJwYXRoIix7ZDoiTTMgMTJhOSA5IDAgMSAwIDktOSA5Ljc1IDkuNzUgMCAwIDAtNi43NCAyLjc0TDMgOCJ9KSxxKCJwYXRoIix7ZDoiTTMgM3Y1aDUifSldfSl9ZnVuY3Rpb24gdzcoQyl7bGV0W1osSl09SShudWxsKSxbWCxHXT1JKCJBWCBvZmYiKTtyZXR1cm4geSgoKT0+e2lmKCFDKXtKKG51bGwpLEcoIkFYIG9mZiIpO3JldHVybn1KKG51bGwpLEcoIkFYIHdhaXRpbmciKTtsZXQgUT1uZXcgRXZlbnRTb3VyY2UoQyk7cmV0dXJuIFEub25tZXNzYWdlPSgkKT0+e3RyeXtsZXQgWT1KU09OLnBhcnNlKCQuZGF0YSk7SihZKSxHKEY4KFkpPyJBWCB1bmF2YWlsYWJsZSI6YCR7WS5lbGVtZW50cy5sZW5ndGh9IEFYIGVsZW1lbnRzYCl9Y2F0Y2h7RygiQVggcGFyc2UgZXJyb3IiKX19LFEuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT57RygiQVggcmVjb25uZWN0aW5nIil9KSwoKT0+US5jbG9zZSgpfSxbQ10pLHtzbmFwc2hvdDpaLHN0YXR1czpYfX12YXIgVTg9ajEoe3NuYXBzaG90Om51bGwsc3RhdHVzOiJBWCBvZmYifSksTzg9ajEobnVsbCk7ZnVuY3Rpb24gaTUoKXtyZXR1cm4gcDEoVTgpfWZ1bmN0aW9uIHo4KCl7bGV0IEM9cDEoTzgpO2lmKCFDKXRocm93IEVycm9yKCJBWCBzZWxlY3Rpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpO3JldHVybiBDfWZ1bmN0aW9uIFM3KHtlbmRwb2ludDpDLGNoaWxkcmVuOlp9KXtsZXR7c25hcHNob3Q6SixzdGF0dXM6WH09dzcoQyksW0csUV09SShudWxsKSxbJCxZXT1JKG51bGwpO3koKCk9PntpZighQylRKG51bGwpLFkobnVsbCl9LFtDXSk7bGV0IF89RTEoKCk9Pih7c25hcHNob3Q6SixzdGF0dXM6WH0pLFtKLFhdKSxWPUUxKCgpPT4oe2hpZ2hsaWdodGVkS2V5Okcsc2VsZWN0ZWRLZXk6JCxzZXRIaWdobGlnaHRlZEtleTpRLHNldFNlbGVjdGVkS2V5Oll9KSxbRywkXSk7cmV0dXJuIHEoVTguUHJvdmlkZXIse3ZhbHVlOl8sY2hpbGRyZW46cShPOC5Qcm92aWRlcix7dmFsdWU6VixjaGlsZHJlbjpafSl9KX1hc3luYyBmdW5jdGlvbiBPMShDKXtyZXR1cm4oYXdhaXQgZmV0Y2gocjEoImV4ZWMiKSx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe2NvbW1hbmQ6Q30pfSkpLmpzb24oKX1mdW5jdGlvbiBiNyhDLFope2xldFtKLFhdPUkoW10pLFtHLFFdPUkobnVsbCksWyQsWV09SSghMSksXz1qKGFzeW5jKCk9PntpZighQylyZXR1cm47WSghMCksUShudWxsKTt0cnl7bGV0IFY9YXdhaXQgZmV0Y2goQyx7Y2FjaGU6Im5vLXN0b3JlIn0pLEI9YXdhaXQgVi5qc29uKCk7aWYoIVYub2t8fEIuZXJyb3IpdGhyb3cgRXJyb3IoQi5lcnJvcnx8IkZhaWxlZCB0byBsaXN0IFdlYktpdCB0YXJnZXRzIik7WChCLnRhcmdldHM/P1tdKX1jYXRjaChWKXtRKFYgaW5zdGFuY2VvZiBFcnJvcj9WLm1lc3NhZ2U6IkZhaWxlZCB0byBzdGFydCBXZWJLaXQgRGV2VG9vbHMiKX1maW5hbGx5e1koITEpfX0sW0NdKTtyZXR1cm4geSgoKT0+e2lmKCFaKXJldHVybjtfKCk7bGV0IFY9c2V0SW50ZXJ2YWwoKCk9PnZvaWQgXygpLDI1MDApO3JldHVybigpPT5jbGVhckludGVydmFsKFYpfSxbWixfXSkse3RhcmdldHM6SixlcnJvcjpHLGxvYWRpbmc6JCxyZWZyZXNoOl99fWZ1bmN0aW9uIFI3KEMpe2xldCBaPUMuY29udGVudERvY3VtZW50O2lmKCFaKXJldHVybjtsZXQgSj0oKT0+e2xldCBRPVtaXTt3aGlsZShRLmxlbmd0aCl7bGV0ICQ9US5wb3AoKSxZPSQucXVlcnlTZWxlY3RvckFsbCgiW2FyaWEtbGFiZWxdLFt0aXRsZV0iKTtmb3IobGV0IF8gb2YgWSl7bGV0IFY9Xy5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiKXx8Xy50aXRsZXx8IiI7aWYoL150b2dnbGUgc2NyZWVuY2FzdCQvaS50ZXN0KFYpKXJldHVybiBffWZvcihsZXQgXyBvZiAkLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSlpZihfLnNoYWRvd1Jvb3QpUS5wdXNoKF8uc2hhZG93Um9vdCl9cmV0dXJuIG51bGx9LFg9MCxHPSgpPT57WCsrO2xldCBRPUooKTtpZihRJiZRLmdldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIikhPT0iZmFsc2UiKXtRLmNsaWNrKCk7cmV0dXJufWlmKFg8MjApc2V0VGltZW91dChHLDEwMCl9O0coKX12YXIgUDI9bmV3IE1hcDtmdW5jdGlvbiB5NyhDLFope2xldCBKPWAke0N9OiR7Wn1gLFg9UDIuZ2V0KEopO2lmKFghPT12b2lkIDApcmV0dXJuIFByb21pc2UucmVzb2x2ZShYKTtsZXQgRz1NOChPMSxDLFopLnRoZW4oKFEpPT57bGV0ICQ9US5pY29uRGF0YVVybD8/bnVsbDtyZXR1cm4gUDIuc2V0KEosJCksJH0pLmNhdGNoKCgpPT57cmV0dXJuIFAyLnNldChKLG51bGwpLG51bGx9KTtyZXR1cm4gUDIuc2V0KEosRyksR31mdW5jdGlvbiBqNyhDLFope2xldFtKLFhdPUkoe30pLEc9RTEoKCk9Plouc2xpY2UoKS5zb3J0KCkuam9pbigifCIpLFtaXSk7cmV0dXJuIHkoKCk9PntpZighQylyZXR1cm47bGV0IFE9ITE7Zm9yKGxldCAkIG9mIFope2lmKCEkKWNvbnRpbnVlO2xldCBZPWAke0N9OiR7JH1gLF89UDIuZ2V0KFkpO2lmKHR5cGVvZiBfPT09InN0cmluZyJ8fF89PT1udWxsKXtYKChWKT0+VlskXT09PV8/Vjp7Li4uVixbJF06X30pO2NvbnRpbnVlfXk3KEMsJCkudGhlbigoVik9PntpZihRKXJldHVybjtYKChCKT0+KHsuLi5CLFskXTpWfSkpfSl9cmV0dXJuKCk9PntRPSEwfX0sW0MsR10pLEp9ZnVuY3Rpb24gdDIoQyxaKXtmZXRjaChyMSgiZGV2dG9vbHMvaGlnaGxpZ2h0Iikse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxib2R5OkpTT04uc3RyaW5naWZ5KHt0YXJnZXRJZDpDLG9uOlp9KSxrZWVwYWxpdmU6ITB9KS5jYXRjaCgoKT0+e30pfWZ1bmN0aW9uIEg4KCl7bGV0IEM9cjEoImRldnRvb2xzL3JlbGVhc2UiKTt0cnl7aWYodHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvci5zZW5kQmVhY29uKXtsZXQgWj1uZXcgQmxvYihbInt9Il0se3R5cGU6ImFwcGxpY2F0aW9uL2pzb24ifSk7aWYobmF2aWdhdG9yLnNlbmRCZWFjb24oQyxaKSlyZXR1cm59fWNhdGNoe31mZXRjaChDLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keToie30iLGtlZXBhbGl2ZTohMH0pLmNhdGNoKCgpPT57fSl9ZnVuY3Rpb24gaDcoe3VkaWQ6Qyx0YXJnZXRzOlosc2VsZWN0ZWQ6SixvblNlbGVjdFRhcmdldDpYLG9uUmVmcmVzaDpHfSl7bGV0IFE9eDMoWiksJD1RLm1hcCgoTCk9PkwuYnVuZGxlSWQpLmZpbHRlcigoTCk9PiEhTCksWT1qNyhDLCQpLFtfLFZdPUkoITEpLFtCLEtdPUkobnVsbCksSD1oKG51bGwpLEY9aChudWxsKTt5KCgpPT57aWYoIV8pcmV0dXJuO2xldCBMPShEKT0+e2lmKCFGLmN1cnJlbnQpcmV0dXJuO2lmKCFGLmN1cnJlbnQuY29udGFpbnMoRC50YXJnZXQpKVYoITEpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixMKSwoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixMKX0sW19dKSx5KCgpPT57aWYoXylyZXR1cm47aWYoSC5jdXJyZW50KXQyKEguY3VycmVudCwhMSksSC5jdXJyZW50PW51bGw7SDgoKX0sW19dKSx5KCgpPT57bGV0IEw9KCk9Pkg4KCk7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsTCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsTCksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLEwpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLEwpfX0sW10pO2xldCBNPUo/KEoudGl0bGV8fEoudXJsfHxKLmFwcE5hbWV8fCJVbnRpdGxlZCIpLnNsaWNlKDAsOTApOiJTZWxlY3QgdGFyZ2V0IjtyZXR1cm4gcSgiZGl2Iix7cmVmOkYsc3R5bGU6UTEucGlja2VyV3JhcCxjaGlsZHJlbjpbcSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT57VigoTCk9PntpZighTClHKCk7cmV0dXJuIUx9KX0sc3R5bGU6UTEucGlja2VyQnV0dG9uLCJhcmlhLWhhc3BvcHVwIjoibGlzdGJveCIsImFyaWEtZXhwYW5kZWQiOl8sImFyaWEtbGFiZWwiOiJXZWJLaXQgdGFyZ2V0IixjaGlsZHJlbjpbcSgic3BhbiIse3N0eWxlOlExLnBpY2tlckxhYmVsLGNoaWxkcmVuOk19KSxxKCJzdmciLHt3aWR0aDoiMTIiLGhlaWdodDoiMTIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpxKCJwb2x5bGluZSIse3BvaW50czoiNiA5IDEyIDE1IDE4IDkifSl9KV19KSxfJiZxKCJ1bCIse3JvbGU6Imxpc3Rib3giLHN0eWxlOlExLnBpY2tlckxpc3QsY2hpbGRyZW46US5tYXAoKEwpPT57bGV0IEQ9TC5idW5kbGVJZD9ZW0wuYnVuZGxlSWRdOm51bGw7cmV0dXJuIHEoImxpIix7c3R5bGU6UTEucGlja2VyR3JvdXAsY2hpbGRyZW46W3EoImRpdiIse3N0eWxlOlExLnBpY2tlckdyb3VwSGVhZGVyLGNoaWxkcmVuOltEP3EoImltZyIse3NyYzpELGFsdDoiIixzdHlsZTpRMS5waWNrZXJHcm91cEljb25JbWd9KTpxKCJzcGFuIix7c3R5bGU6UTEucGlja2VyR3JvdXBJY29uSW1nLCJhcmlhLWhpZGRlbiI6InRydWUifSkscSgic3BhbiIse3N0eWxlOlExLnBpY2tlckdyb3VwTmFtZSxjaGlsZHJlbjpMLmFwcE5hbWV9KV19KSxxKCJ1bCIse3JvbGU6Imdyb3VwIixzdHlsZTpRMS5waWNrZXJHcm91cExpc3QsY2hpbGRyZW46TC50YXJnZXRzLm1hcCgoTyk9PntsZXQgUD1KPy5pZD09PU8uaWQsRT0hIU8uaW5Vc2VCeU90aGVySW5zcGVjdG9yJiYhUCx3PShPLnRpdGxlfHxPLnVybHx8Ty5hcHBOYW1lfHwiVW50aXRsZWQiKS5zbGljZSgwLDkwKTtyZXR1cm4gcSgibGkiLHtyb2xlOiJvcHRpb24iLCJhcmlhLXNlbGVjdGVkIjpQLCJhcmlhLWRpc2FibGVkIjpFLHRhYkluZGV4OkU/LTE6MCx0aXRsZTpFPyJBbHJlYWR5IGJlaW5nIGluc3BlY3RlZCBieSBhbm90aGVyIGRlYnVnZ2VyIjp2b2lkIDAsb25Nb3VzZUVudGVyOigpPT57aWYoRSlyZXR1cm47aWYoSC5jdXJyZW50JiZILmN1cnJlbnQhPT1PLmlkKXQyKEguY3VycmVudCwhMSk7SC5jdXJyZW50PU8uaWQsSyhPLmlkKSx0MihPLmlkLCEwKX0sb25Nb3VzZUxlYXZlOigpPT57aWYoSC5jdXJyZW50PT09Ty5pZCl0MihPLmlkLCExKSxILmN1cnJlbnQ9bnVsbDtLKChmKT0+Zj09PU8uaWQ/bnVsbDpmKX0sb25DbGljazooKT0+e2lmKEUpcmV0dXJuO1goTy5pZCksVighMSl9LHN0eWxlOnsuLi5RMS5waWNrZXJJdGVtLC4uLlA/UTEucGlja2VySXRlbVNlbGVjdGVkOm51bGwsLi4uQj09PU8uaWQmJiFFP1ExLnBpY2tlckl0ZW1Ib3ZlcmVkOm51bGwsLi4uRT9RMS5waWNrZXJJdGVtRGlzYWJsZWQ6bnVsbH0sY2hpbGRyZW46W3EoInNwYW4iLHtzdHlsZTpRMS5waWNrZXJJdGVtVGl0bGUsY2hpbGRyZW46d30pLE8udXJsJiZPLnVybCE9PSJhYm91dDpibGFuayImJnEoInNwYW4iLHtzdHlsZTpRMS5waWNrZXJJdGVtVXJsLGNoaWxkcmVuOk8udXJsfSldfSxPLmlkKX0pfSldfSxMLmtleSl9KX0pXX0pfWZ1bmN0aW9uIHY3KEMpe3RyeXtsZXQgWj1KU09OLnBhcnNlKEMpLEo9W107Zm9yKGxldFtYLEddb2YgT2JqZWN0LmVudHJpZXMoWi5kZXZpY2VzPz97fSkpe2xldCBRPVgucmVwbGFjZSgvXmNvbVwuYXBwbGVcLkNvcmVTaW11bGF0b3JcLlNpbVJ1bnRpbWVcLi8sIiIpLnJlcGxhY2UoLy0vZywiLiIpO2ZvcihsZXQgJCBvZiBHKWlmKCQuaXNBdmFpbGFibGUpSi5wdXNoKHt1ZGlkOiQudWRpZCxuYW1lOiQubmFtZSxzdGF0ZTokLnN0YXRlLHJ1bnRpbWU6UX0pfXJldHVybiBKfWNhdGNoe3JldHVybltdfX1mdW5jdGlvbiBaNShDKXtsZXQgWj1DLnRvTG93ZXJDYXNlKCk7aWYoWi5pbmNsdWRlcygiaXBob25lIikpcmV0dXJuIDA7aWYoWi5pbmNsdWRlcygiaXBhZCIpKXJldHVybiAxO2lmKFouaW5jbHVkZXMoIndhdGNoIikpcmV0dXJuIDI7aWYoWi5pbmNsdWRlcygidmlzaW9uIikpcmV0dXJuIDM7cmV0dXJuIDR9ZnVuY3Rpb24gSjUoQyl7bGV0IFo9Qy50b0xvd2VyQ2FzZSgpO2lmKFouc3RhcnRzV2l0aCgiaW9zIikpcmV0dXJuIDA7aWYoWi5zdGFydHNXaXRoKCJpcGFkb3MiKSlyZXR1cm4gMTtpZihaLnN0YXJ0c1dpdGgoIndhdGNob3MiKSlyZXR1cm4gMjtpZihaLnN0YXJ0c1dpdGgoInZpc2lvbm9zIil8fFouc3RhcnRzV2l0aCgieHJvcyIpKXJldHVybiAzO3JldHVybiA0fWZ1bmN0aW9uIG03KHtkZXZpY2VzOkMsc2VsZWN0ZWRVZGlkOlosbG9hZGluZzpKLGVycm9yOlgsc3RvcHBpbmdVZGlkczpHLG9uUmVmcmVzaDpRLG9uU2VsZWN0OiQsb25TdG9wOlksdHJpZ2dlcjpffSl7bGV0W1YsQl09SSghMSksSz1oKG51bGwpO3koKCk9PntpZighVilyZXR1cm47bGV0IEw9KEQpPT57aWYoIUsuY3VycmVudD8uY29udGFpbnMoRC50YXJnZXQpKUIoITEpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsTCksKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLEwpfSxbVl0pO2xldCBIPW5ldyBNYXA7Zm9yKGxldCBMIG9mIEMpe2lmKEwudWRpZD09PVopY29udGludWU7bGV0IEQ9SC5nZXQoTC5ydW50aW1lKTtpZighRClEPVtdLEguc2V0KEwucnVudGltZSxEKTtELnB1c2goTCl9Zm9yKGxldCBMIG9mIEgudmFsdWVzKCkpTC5zb3J0KChELE8pPT5aNShELm5hbWUpLVo1KE8ubmFtZSl8fEQubmFtZS5sb2NhbGVDb21wYXJlKE8ubmFtZSkpO2xldCBGPVsuLi5ILmVudHJpZXMoKV0uc29ydCgoW0xdLFtEXSk9Pko1KEwpLUo1KEQpfHxMLmxvY2FsZUNvbXBhcmUoRCkpLE09Qy5maW5kKChMKT0+TC51ZGlkPT09Wik/P251bGw7cmV0dXJuIHEoImRpdiIse3JlZjpLLHN0eWxlOntwb3NpdGlvbjoicmVsYXRpdmUifSxjaGlsZHJlbjpbcSgiZGl2Iix7b25DbGljazooKT0+e2lmKCFWKVEoKTtCKChMKT0+IUwpfSxjaGlsZHJlbjpffSksViYmcSgiZGl2Iix7c3R5bGU6SDYsY2hpbGRyZW46W3EoImRpdiIse3N0eWxlOkE4LGNoaWxkcmVuOltxKCJzcGFuIix7c3R5bGU6e2ZvbnRXZWlnaHQ6NjAwfSxjaGlsZHJlbjoiU2ltdWxhdG9ycyJ9KSxxKCJidXR0b24iLHtvbkNsaWNrOihMKT0+e0wuc3RvcFByb3BhZ2F0aW9uKCksUSgpfSxkaXNhYmxlZDpKLHN0eWxlOkk4LGNoaWxkcmVuOko/Ii4uLiI6IlJlZnJlc2gifSldfSksWCYmcSgiZGl2Iix7c3R5bGU6ZDUsY2hpbGRyZW46WH0pLE0mJnEoSjEse2NoaWxkcmVuOltxKCJkaXYiLHtzdHlsZTp7Li4uYTUsY29sb3I6IiNhNWI0ZmMifSxjaGlsZHJlbjpbcSgic3BhbiIse3N0eWxlOmM1KE0uc3RhdGU9PT0iQm9vdGVkIj8iIzRhZGU4MCI6IiM0NDQiKX0pLHEoInNwYW4iLHtzdHlsZTp7ZmxleDoxfSxjaGlsZHJlbjpNLm5hbWV9KV19KSxxKCJkaXYiLHtzdHlsZTpONn0pXX0pLEMubGVuZ3RoPT09MCYmIUomJiFYJiZxKCJkaXYiLHtzdHlsZTpUOCxjaGlsZHJlbjoiTm8gYXZhaWxhYmxlIHNpbXVsYXRvcnMgZm91bmQifSksRi5tYXAoKFtMLERdKT0+cSgiZGl2Iix7Y2hpbGRyZW46W3EoImRpdiIse3N0eWxlOkU4LGNoaWxkcmVuOkx9KSxELm1hcCgoTyk9PntsZXQgUD1HLmhhcyhPLnVkaWQpLEU9Ty5zdGF0ZT09PSJCb290ZWQiO3JldHVybiBxKCJkaXYiLHtzdHlsZTphNSxvbk1vdXNlRW50ZXI6KHcpPT53LmN1cnJlbnRUYXJnZXQuc3R5bGUuYmFja2dyb3VuZD0icmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsb25Nb3VzZUxlYXZlOih3KT0+dy5jdXJyZW50VGFyZ2V0LnN0eWxlLmJhY2tncm91bmQ9InRyYW5zcGFyZW50IixvbkNsaWNrOigpPT57JChPKSxCKCExKX0sY2hpbGRyZW46W3EoInNwYW4iLHtzdHlsZTpjNShFPyIjNGFkZTgwIjoiIzQ0NCIpfSkscSgic3BhbiIse3N0eWxlOntmbGV4OjF9LGNoaWxkcmVuOk8ubmFtZX0pLEUmJnEoInNwYW4iLHtyb2xlOiJidXR0b24iLG9uQ2xpY2s6KHcpPT57aWYody5zdG9wUHJvcGFnYXRpb24oKSwhUClZKE8udWRpZCl9LHN0eWxlOntmb250U2l6ZToxMCxwYWRkaW5nOiIxcHggNnB4Iixib3JkZXJSYWRpdXM6NCxjb2xvcjpQPyIjODg4IjoiI2Y4NzE3MSIsYmFja2dyb3VuZDpQPyJ0cmFuc3BhcmVudCI6InJnYmEoMjQ4LDExMywxMTMsMC4xKSIsY3Vyc29yOlA/ImRlZmF1bHQiOiJwb2ludGVyIn0sY2hpbGRyZW46UD8iU3RvcHBpbmcuLi4iOiJTdG9wIn0pXX0sTy51ZGlkKX0pXX0sTCkpXX0pXX0pfWZ1bmN0aW9uIGM1KEMpe3JldHVybnt3aWR0aDo2LGhlaWdodDo2LGJvcmRlclJhZGl1czoiNTAlIixiYWNrZ3JvdW5kOkMsZmxleFNocmluazowfX12YXIgZzc9bmV3IFNldChbImltYWdlL2pwZWciLCJpbWFnZS9wbmciLCJpbWFnZS9naWYiLCJpbWFnZS9oZWljIiwiaW1hZ2UvaGVpZiIsImltYWdlL3dlYnAiLCJ2aWRlby9tcDQiLCJ2aWRlby9xdWlja3RpbWUiXSkseDU9MjYyMTQ0LHg3PTUyNDI4ODAwMDtmdW5jdGlvbiBmNyhDKXtpZihyNShDKT09PSJpcGEiKXJldHVybiJpcGEiO2lmKGc3LmhhcyhDLnR5cGUpKXJldHVybiJtZWRpYSI7cmV0dXJuIG51bGx9ZnVuY3Rpb24gcDcoQyl7bGV0IFo9bmV3IFVpbnQ4QXJyYXkoQyksSj0iIjtmb3IobGV0IFg9MDtYPFoubGVuZ3RoO1grKylKKz1TdHJpbmcuZnJvbUNoYXJDb2RlKFpbWF0pO3JldHVybiBidG9hKEopfWZ1bmN0aW9uIHI1KEMpe2xldCBaPUMubmFtZSxKPVoubGFzdEluZGV4T2YoIi4iKTtpZihKPj0wKXJldHVybiBaLnNsaWNlKEorMSkudG9Mb3dlckNhc2UoKTtpZihDLnR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIikpcmV0dXJuIm1wNCI7cmV0dXJuImpwZyJ9YXN5bmMgZnVuY3Rpb24gdTcoQyxaLEosWCxHKXtpZihDLnNpemU+eDcpdGhyb3cgRXJyb3IoIkZpbGUgdG9vIGxhcmdlIChtYXggNTAwTUIpIik7bGV0IFE9Wj09PSJpcGEiPyJpcGEiOnI1KEMpLFk9YC90bXAvJHtaPT09ImlwYSI/InNlcnZlLXNpbS1pbnN0YWxsIjoic2VydmUtc2ltLXVwbG9hZCJ9LSR7Y3J5cHRvLnJhbmRvbVVVSUQoKX0uJHtRfWA7dHJ5e0coMCk7bGV0IF89YXdhaXQgQy5hcnJheUJ1ZmZlcigpLFY9cDcoXyksQj0wO2ZvcihsZXQgRj0wO0Y8Vi5sZW5ndGg7Ris9eDUpe2xldCBNPVYuc2xpY2UoRixGK3g1KSxEPWF3YWl0IEooYGJhc2ggLWMgJ2VjaG8gJHtNfSB8IGJhc2U2NCAtZCAke0Y9PT0wPyI+IjoiPj4ifSAke1l9J2ApO2lmKEQuZXhpdENvZGUhPT0wKXRocm93IEVycm9yKEQuc3RkZXJyfHxgV3JpdGUgZmFpbGVkIChleGl0ICR7RC5leGl0Q29kZX0pYCk7bGV0IE89TWF0aC5taW4oRit4NSxWLmxlbmd0aCksUD1NYXRoLmZsb29yKE8vVi5sZW5ndGgqMTAwKTtpZihQIT09QilCPVAsRyhPL1YubGVuZ3RoKX1HKG51bGwpO2xldCBLPVo9PT0iaXBhIj9geGNydW4gc2ltY3RsIGluc3RhbGwgJHtYfSAke1l9YDpgeGNydW4gc2ltY3RsIGFkZG1lZGlhICR7WH0gJHtZfWAsSD1hd2FpdCBKKEspO2lmKEguZXhpdENvZGUhPT0wKXtsZXQgRj1aPT09ImlwYSI/Imluc3RhbGwiOiJhZGRtZWRpYSI7dGhyb3cgRXJyb3IoSC5zdGRlcnJ8fGAke0Z9IGZhaWxlZCAoZXhpdCAke0guZXhpdENvZGV9KWApfX1maW5hbGx5e0ooYGJhc2ggLWMgJ3JtIC1mICR7WX0nYCkuY2F0Y2goKCk9Pnt9KX19ZnVuY3Rpb24gYzcoKXtsZXRbQyxaXT1JKFtdKSxKPWooKFEsJCk9PntsZXQgWT1jcnlwdG8ucmFuZG9tVVVJRCgpO3JldHVybiBaKChfKT0+Wy4uLl8se2lkOlksbmFtZTpRLGtpbmQ6JCxzdGF0dXM6InVwbG9hZGluZyIscHJvZ3Jlc3M6MH1dKSxZfSxbXSksWD1qKChRLCQpPT57aWYoWigoWSk9PlkubWFwKChfKT0+Xy5pZD09PVE/ey4uLl8sLi4uJH06XykpLCQuc3RhdHVzPT09InN1Y2Nlc3MifHwkLnN0YXR1cz09PSJlcnJvciIpc2V0VGltZW91dCgoKT0+e1ooKFkpPT5ZLmZpbHRlcigoXyk9Pl8uaWQhPT1RKSl9LDMwMDApfSxbXSksRz1qKChRLCQpPT57WigoWSk9PlkubWFwKChfKT0+Xy5pZD09PVE/ey4uLl8scHJvZ3Jlc3M6JH06XykpfSxbXSk7cmV0dXJue3RvYXN0czpDLGFkZDpKLHVwZGF0ZTpYLHNldFByb2dyZXNzOkd9fWZ1bmN0aW9uIGw3KHtleGVjOkMsdWRpZDpaLGVuYWJsZWQ6SixvblVwbG9hZFN0YXJ0Olgsb25VcGxvYWRQcm9ncmVzczpHLG9uVXBsb2FkRW5kOlEsb25VbnN1cHBvcnRlZDokfSl7bGV0W1ksX109SSghMSksVj1oKDApLEI9aihhc3luYyhNKT0+e2lmKE0ucHJldmVudERlZmF1bHQoKSxNLnN0b3BQcm9wYWdhdGlvbigpLFYuY3VycmVudD0wLF8oITEpLCFKfHwhWilyZXR1cm47bGV0IEw9QXJyYXkuZnJvbShNLmRhdGFUcmFuc2Zlci5maWxlcyk7aWYoTC5sZW5ndGg9PT0wKXJldHVybjtmb3IobGV0IEQgb2YgTCl7bGV0IE89ZjcoRCk7aWYoIU8peyQoRCk7Y29udGludWV9bGV0IFA9WChELm5hbWUsTyk7dTcoRCxPLEMsWiwoRSk9PkcoUCxFKSkudGhlbigoKT0+UShQLCEwKSkuY2F0Y2goKEUpPT5RKFAsITEsRSBpbnN0YW5jZW9mIEVycm9yP0UubWVzc2FnZToiVXBsb2FkIGZhaWxlZCIpKX19LFtKLFosQyxYLEcsUSwkXSksSz1qKChNKT0+e2lmKE0ucHJldmVudERlZmF1bHQoKSxKKU0uZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9ImNvcHkifSxbSl0pLEg9aigoTSk9PntpZihNLnByZXZlbnREZWZhdWx0KCksIUopcmV0dXJuO2lmKFYuY3VycmVudCsrLFYuY3VycmVudD09PTEpXyghMCl9LFtKXSksRj1qKChNKT0+e2lmKE0ucHJldmVudERlZmF1bHQoKSxWLmN1cnJlbnQtLSxWLmN1cnJlbnQ8PTApVi5jdXJyZW50PTAsXyghMSl9LFtdKTtyZXR1cm57aXNEcmFnT3ZlcjpZLGRyb3Bab25lUHJvcHM6e29uRHJhZ092ZXI6SyxvbkRyYWdFbnRlcjpILG9uRHJhZ0xlYXZlOkYsb25Ecm9wOkJ9fX1mdW5jdGlvbiBoMShDKXtyZXR1cm5gJyR7Qy5yZXBsYWNlKC8nL2csIidcXCcnIil9J2B9YXN5bmMgZnVuY3Rpb24gTTgoQyxaLEope2xldCBYPWF3YWl0IEMoYHhjcnVuIHNpbWN0bCBnZXRfYXBwX2NvbnRhaW5lciAke1p9ICR7aDEoSil9IGFwcGApO2lmKFguZXhpdENvZGUhPT0wKXJldHVybntlcnJvcjpYLnN0ZGVyci50cmltKCl8fCJBcHAgbm90IGZvdW5kIG9uIHNpbXVsYXRvciJ9O2xldCBHPVguc3Rkb3V0LnRyaW0oKTtpZighRylyZXR1cm57ZXJyb3I6IkVtcHR5IGFwcCBwYXRoIn07bGV0IFE9YXdhaXQgQyhgcGx1dGlsIC1jb252ZXJ0IGpzb24gLW8gLSAke2gxKEcrIi9JbmZvLnBsaXN0Iil9YCksJD17fTtpZihRLmV4aXRDb2RlPT09MCl0cnl7JD1KU09OLnBhcnNlKFEuc3Rkb3V0KX1jYXRjaHt9bGV0IFksVj0oJD8uQ0ZCdW5kbGVJY29ucz8uQ0ZCdW5kbGVQcmltYXJ5SWNvbj8/JD8uWyJDRkJ1bmRsZUljb25zfmlwYWQiXT8uQ0ZCdW5kbGVQcmltYXJ5SWNvbik/LkNGQnVuZGxlSWNvbkZpbGVzPz8kPy5DRkJ1bmRsZUljb25GaWxlcztpZihWJiZWLmxlbmd0aD4wKVk9VltWLmxlbmd0aC0xXTtlbHNlIGlmKHR5cGVvZiAkPy5DRkJ1bmRsZUljb25GaWxlPT09InN0cmluZyIpWT0kLkNGQnVuZGxlSWNvbkZpbGU7bGV0IEI9bnVsbDtpZihZKXtsZXQgSz1bYCR7WX1AM3gucG5nYCxgJHtZfUAyeC5wbmdgLGAke1l9LnBuZ2AsYCR7WX02MHg2MEAzeC5wbmdgLGAke1l9NjB4NjBAMngucG5nYF0sRj0oYXdhaXQgQyhgYmFzaCAtYyAke2gxKEsubWFwKChNKT0+YFsgLWYgJHtoMShHKyIvIitNKX0gXSAmJiBlY2hvICR7aDEoRysiLyIrTSl9ICYmIGV4aXQgMGApLmpvaW4oIjsgIikrIjsgZXhpdCAxIil9YCkpLnN0ZG91dC50cmltKCk7aWYoRil7bGV0IE09YXdhaXQgQyhgYmFzZTY0IC1pICR7aDEoRil9YCk7aWYoTS5leGl0Q29kZT09PTApQj1gZGF0YTppbWFnZS9wbmc7YmFzZTY0LCR7TS5zdGRvdXQucmVwbGFjZSgvXHMrL2csIiIpfWB9fXJldHVybnthcHBQYXRoOkcsZGlzcGxheU5hbWU6JC5DRkJ1bmRsZURpc3BsYXlOYW1lPz8kLkNGQnVuZGxlTmFtZSxzaG9ydFZlcnNpb246JC5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZyxidW5kbGVWZXJzaW9uOiQuQ0ZCdW5kbGVWZXJzaW9uLG1pbk9TOiQuTWluaW11bU9TVmVyc2lvbixleGVjdXRhYmxlOiQuQ0ZCdW5kbGVFeGVjdXRhYmxlLGljb25EYXRhVXJsOkJ9fWZ1bmN0aW9uIGQ3KHt1ZGlkOkMsY3VycmVudEFwcDpafSl7bGV0W0osWF09SShudWxsKTtpZih5KCgpPT57aWYoIVope1gobnVsbCk7cmV0dXJufWxldCBHPSExO3JldHVybiBYKHtidW5kbGVJZDpaLmJ1bmRsZUlkLGlzUmVhY3ROYXRpdmU6Wi5pc1JlYWN0TmF0aXZlLHBpZDpaLnBpZCxsb2FkaW5nOiEwfSksTTgoTzEsQyxaLmJ1bmRsZUlkKS50aGVuKChRKT0+e2lmKEcpcmV0dXJuO1goe2J1bmRsZUlkOlouYnVuZGxlSWQsaXNSZWFjdE5hdGl2ZTpaLmlzUmVhY3ROYXRpdmUscGlkOloucGlkLGxvYWRpbmc6ITEsLi4uUX0pfSksKCk9PntHPSEwfX0sW0MsWj8uYnVuZGxlSWQsWj8ucGlkLFo/LmlzUmVhY3ROYXRpdmVdKSwhSilyZXR1cm4gcSgiZGl2Iix7c3R5bGU6Yy5lbXB0eSxjaGlsZHJlbjoiV2FpdGluZyBmb3IgYW4gYXBwIHRvIGNvbWUgdG8gdGhlIGZvcmVncm91bmTigKYifSk7cmV0dXJuIHEoImRpdiIse3N0eWxlOmMuc2VjdGlvbixjaGlsZHJlbjpbcSgiZGl2Iix7c3R5bGU6Yy5hcHBIZWFkZXIsY2hpbGRyZW46W0ouaWNvbkRhdGFVcmw/cSgiaW1nIix7c3JjOkouaWNvbkRhdGFVcmwsc3R5bGU6Yy5hcHBJY29uLGFsdDoiIn0pOnEoImRpdiIse3N0eWxlOnsuLi5jLmFwcEljb24sYmFja2dyb3VuZDoiIzJhMmEyYyJ9fSkscSgiZGl2Iix7c3R5bGU6e21pbldpZHRoOjAsZmxleDoxfSxjaGlsZHJlbjpbcSgiZGl2Iix7c3R5bGU6Yy5hcHBOYW1lLGNoaWxkcmVuOltKLmRpc3BsYXlOYW1lPz9KLmJ1bmRsZUlkLEoubG9hZGluZyYmcSgic3BhbiIse3N0eWxlOmMuc3Bpbm5lcixjaGlsZHJlbjoiIOKApiJ9KV19KSxxKCJkaXYiLHtzdHlsZTpjLmFwcEJ1bmRsZSx0aXRsZTpKLmJ1bmRsZUlkLGNoaWxkcmVuOkouYnVuZGxlSWR9KV19KV19KSxKLmVycm9yJiZxKCJkaXYiLHtzdHlsZTpjLmVycm9yLGNoaWxkcmVuOkouZXJyb3J9KSxxKCJkbCIse3N0eWxlOmMuZGwsY2hpbGRyZW46W3EoVjIse2xhYmVsOiJWZXJzaW9uIix2YWx1ZTpKLnNob3J0VmVyc2lvbj9gJHtKLnNob3J0VmVyc2lvbn0gKCR7Si5idW5kbGVWZXJzaW9uPz8i4oCUIn0pYDpKLmxvYWRpbmc/IuKApiI6IuKAlCJ9KSxxKFYyLHtsYWJlbDoiTWluIGlPUyIsdmFsdWU6Si5taW5PUz8/KEoubG9hZGluZz8i4oCmIjoi4oCUIil9KSxxKFYyLHtsYWJlbDoiRXhlY3V0YWJsZSIsdmFsdWU6Si5leGVjdXRhYmxlPz8oSi5sb2FkaW5nPyLigKYiOiLigJQiKX0pLHEoVjIse2xhYmVsOiJQSUQiLHZhbHVlOkoucGlkIT1udWxsP1N0cmluZyhKLnBpZCk6IuKAlCJ9KSxKLmlzUmVhY3ROYXRpdmUmJnEoVjIse2xhYmVsOiJSZWFjdCBOYXRpdmUiLHZhbHVlOiJZZXMifSkscShWMix7bGFiZWw6IkFwcCBwYXRoIix2YWx1ZTpKLmFwcFBhdGg/PyhKLmxvYWRpbmc/IuKApiI6IuKAlCIpLG1vbm86ITAsYWN0aW9uOkouYXBwUGF0aD97dGl0bGU6IlJldmVhbCBpbiBGaW5kZXIiLG9uQ2xpY2s6KCk9PntPMShgb3BlbiAtUiAke2gxKEouYXBwUGF0aCl9YCl9LGljb246cSgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjExIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi4yIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbcSgibGluZSIse3gxOiI3Iix5MToiMTciLHgyOiIxNyIseTI6IjcifSkscSgicG9seWxpbmUiLHtwb2ludHM6IjEwIDcgMTcgNyAxNyAxNCJ9KV19KX06dm9pZCAwfSldfSldfSl9ZnVuY3Rpb24gVjIoe2xhYmVsOkMsdmFsdWU6Wixtb25vOkosYWN0aW9uOlh9KXtsZXRbRyxRXT1JKCExKTtyZXR1cm4gcSgiZGl2Iix7c3R5bGU6Yy5yb3csb25Nb3VzZUVudGVyOigpPT5RKCEwKSxvbk1vdXNlTGVhdmU6KCk9PlEoITEpLGNoaWxkcmVuOltxKCJkdCIse3N0eWxlOmMuZHQsY2hpbGRyZW46Q30pLHEoImRkIix7c3R5bGU6ey4uLmMuZGQsZm9udEZhbWlseTpKPyJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSI6dm9pZCAwLGZvbnRTaXplOko/MTE6MTIscG9zaXRpb246InJlbGF0aXZlIn0sdGl0bGU6WixjaGlsZHJlbjpbWixYJiZxKCJkaXYiLHtzdHlsZTp7Li4uYy5yb3dBY3Rpb25XcmFwLG9wYWNpdHk6Rz8xOjAsdHJhbnNmb3JtOkc/InRyYW5zbGF0ZVgoMCkiOiJ0cmFuc2xhdGVYKDRweCkiLHBvaW50ZXJFdmVudHM6Rz8iYXV0byI6Im5vbmUifSxjaGlsZHJlbjpxKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6WC5vbkNsaWNrLHRpdGxlOlgudGl0bGUsImFyaWEtbGFiZWwiOlgudGl0bGUsc3R5bGU6Yy5yb3dBY3Rpb24sY2hpbGRyZW46WC5pY29ufSl9KV19KV19KX12YXIgYTc9W3trZXk6ImNhbWVyYSIsbGFiZWw6IkNhbWVyYSJ9LHtrZXk6Im1pY3JvcGhvbmUiLGxhYmVsOiJNaWNyb3Bob25lIn0se2tleToicGhvdG9zIixsYWJlbDoiUGhvdG9zIn0se2tleToicGhvdG9zLWFkZCIsbGFiZWw6IkFkZCB0byBQaG90b3MifSx7a2V5OiJjb250YWN0cyIsbGFiZWw6IkNvbnRhY3RzIn0se2tleToiY2FsZW5kYXIiLGxhYmVsOiJDYWxlbmRhciJ9LHtrZXk6InJlbWluZGVycyIsbGFiZWw6IlJlbWluZGVycyJ9LHtrZXk6ImxvY2F0aW9uIixsYWJlbDoiTG9jYXRpb24ifSx7a2V5OiJsb2NhdGlvbi1hbHdheXMiLGxhYmVsOiJMb2NhdGlvbiAoQWx3YXlzKSJ9LHtrZXk6Im1vdGlvbiIsbGFiZWw6Ik1vdGlvbiJ9LHtrZXk6Im1lZGlhLWxpYnJhcnkiLGxhYmVsOiJNZWRpYSBMaWJyYXJ5In0se2tleToic2lyaSIsbGFiZWw6IlNpcmkifV07ZnVuY3Rpb24gbzcoe3VkaWQ6QyxidW5kbGVJZDpafSl7bGV0W0osWF09SSh7fSksW0csUV09SShudWxsKSxbJCxZXT1JKG51bGwpLFtfLFZdPUkoITEpO3koKCk9PntYKHt9KSxZKG51bGwpfSxbWl0pO2xldCBCPWooYXN5bmMoSCxGKT0+e2lmKCFaKXJldHVybjtsZXQgTT1gJHtIfToke0Z9YDtRKE0pLFkobnVsbCk7dHJ5e2xldCBMPWF3YWl0IE8xKGB4Y3J1biBzaW1jdGwgcHJpdmFjeSAke0N9ICR7Rn0gJHtIfSAke2gxKFopfWApO2lmKEwuZXhpdENvZGUhPT0wKXtZKEwuc3RkZXJyLnRyaW0oKXx8YHNpbWN0bCBwcml2YWN5IGZhaWxlZCAoZXhpdCAke0wuZXhpdENvZGV9KWApO3JldHVybn1YKChEKT0+KHsuLi5ELFtIXTpGPT09InJlc2V0Ij92b2lkIDA6Rn0pKX1maW5hbGx5e1EobnVsbCl9fSxbQyxaXSksSz1qKGFzeW5jKCk9PntpZighWilyZXR1cm47USgiX19hbGxfXyIpLFkobnVsbCk7dHJ5e2xldCBIPWF3YWl0IE8xKGB4Y3J1biBzaW1jdGwgcHJpdmFjeSAke0N9IHJlc2V0IGFsbCAke2gxKFopfWApO2lmKEguZXhpdENvZGUhPT0wKXtZKEguc3RkZXJyLnRyaW0oKXx8YHNpbWN0bCBwcml2YWN5IGZhaWxlZCAoZXhpdCAke0guZXhpdENvZGV9KWApO3JldHVybn1YKHt9KX1maW5hbGx5e1EobnVsbCl9fSxbQyxaXSk7aWYoIVopcmV0dXJuIHEoImRpdiIse3N0eWxlOmMuZW1wdHksY2hpbGRyZW46IlBlcm1pc3Npb25zIGFwcGVhciBvbmNlIGFuIGFwcCBpcyBpbiB0aGUgZm9yZWdyb3VuZC4ifSk7cmV0dXJuIHEoImRpdiIse3N0eWxlOnsuLi5jLnNlY3Rpb24scGFkZGluZzoiOHB4IDEycHgifSxjaGlsZHJlbjpbcSgiYnV0dG9uIix7b25DbGljazooKT0+VigoSCk9PiFIKSxzdHlsZTpjLnBlcm1zVG9nZ2xlLCJhcmlhLWV4cGFuZGVkIjpfLGNoaWxkcmVuOltxKCJzcGFuIix7c3R5bGU6ey4uLmMuc2VjdGlvblRpdGxlLG1hcmdpbjowfSxjaGlsZHJlbjoiUGVybWlzc2lvbnMifSkscSgic3ZnIix7d2lkdGg6IjExIixoZWlnaHQ6IjExIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixzdHlsZTp7dHJhbnNmb3JtOl8/InJvdGF0ZSg5MGRlZykiOiJyb3RhdGUoMGRlZykiLHRyYW5zaXRpb246InRyYW5zZm9ybSAwLjE1cyIsZmxleFNocmluazowfSxjaGlsZHJlbjpxKCJwb2x5bGluZSIse3BvaW50czoiOSAxOCAxNSAxMiA5IDYifSl9KV19KSxfJiYkJiZxKCJkaXYiLHtzdHlsZTp7Li4uYy5lcnJvcixtYXJnaW5Ub3A6OH0sY2hpbGRyZW46JH0pLF8mJnEoImRpdiIse3N0eWxlOmMucGVybXNTY3JvbGxXcmFwLGNoaWxkcmVuOltxKCJkaXYiLHtzdHlsZTpjLnBlcm1zU2Nyb2xsLGNoaWxkcmVuOmE3Lm1hcCgoe2tleTpILGxhYmVsOkZ9KT0+e2xldCBNPUpbSF07cmV0dXJuIHEoImRpdiIse3N0eWxlOmMucGVybVJvdyxjaGlsZHJlbjpbcSgic3BhbiIse3N0eWxlOmMucGVybUxhYmVsLGNoaWxkcmVuOkZ9KSxxKCJkaXYiLHtzdHlsZTpjLnBlcm1TZWcscm9sZToiZ3JvdXAiLCJhcmlhLWxhYmVsIjpGLGNoaWxkcmVuOltxKGY1LHthY3RpdmU6TT09PSJncmFudCIscGVuZGluZzpHPT09YCR7SH06Z3JhbnRgLG9uQ2xpY2s6KCk9PkIoSCwiZ3JhbnQiKSx2YXJpYW50OiJncmFudCIsdGl0bGU6IkFsbG93IixjaGlsZHJlbjpxKCJzdmciLHt3aWR0aDoiMTEiLGhlaWdodDoiMTEiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIzIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpxKCJwb2x5bGluZSIse3BvaW50czoiNSAxMiAxMCAxNyAxOSA3In0pfSl9KSxxKGY1LHthY3RpdmU6TT09PSJyZXZva2UiLHBlbmRpbmc6Rz09PWAke0h9OnJldm9rZWAsb25DbGljazooKT0+QihILCJyZXZva2UiKSx2YXJpYW50OiJyZXZva2UiLHRpdGxlOiJEZW55IixjaGlsZHJlbjpxKCJzdmciLHt3aWR0aDoiMTEiLGhlaWdodDoiMTEiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIzIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbcSgibGluZSIse3gxOiI2Iix5MToiNiIseDI6IjE4Iix5MjoiMTgifSkscSgibGluZSIse3gxOiIxOCIseTE6IjYiLHgyOiI2Iix5MjoiMTgifSldfSl9KSxxKGY1LHthY3RpdmU6ITEscGVuZGluZzpHPT09YCR7SH06cmVzZXRgLG9uQ2xpY2s6KCk9PkIoSCwicmVzZXQiKSx2YXJpYW50OiJyZXNldCIsdGl0bGU6IlJlc2V0IixjaGlsZHJlbjpxKEQ4LHtzaXplOjExLHN0cm9rZVdpZHRoOjIuNH0pfSldfSldfSxIKX0pfSkscSgiZGl2Iix7c3R5bGU6Yy5wZXJtc0ZhZGVUb3B9KSxxKCJkaXYiLHtzdHlsZTpjLnBlcm1zRmFkZUJvdHRvbX0pXX0pLF8mJnEoImRpdiIse3N0eWxlOmMucGVybXNGb290ZXIsY2hpbGRyZW46cSgiYnV0dG9uIix7b25DbGljazpLLGRpc2FibGVkOkc9PT0iX19hbGxfXyIsc3R5bGU6Yy5yZXNldEFsbEJ0bix0aXRsZToieGNydW4gc2ltY3RsIHByaXZhY3kgcmVzZXQgYWxsIixjaGlsZHJlbjpHPT09Il9fYWxsX18iPyLigKYiOiJSZXNldCBhbGwifSl9KV19KX1mdW5jdGlvbiBpNyh7ZGV2aWNlczpDLGxvYWRpbmc6WixlcnJvcjpKLG9uUmVmcmVzaDpYfSl7bGV0W0csUV09SShudWxsKSxbJCxZXT1JKG51bGwpLF89aihhc3luYyhLKT0+e2lmKEcpcmV0dXJuO1EoSy51ZGlkKSxZKG51bGwpO3RyeXtsZXQgSD1gJHtyMSgiYXBpIil9P2RldmljZT0ke2VuY29kZVVSSUNvbXBvbmVudChLLnVkaWQpfWAsRj0oYXN5bmMoKT0+e2xldCBQPURhdGUubm93KCkrOTAwMDA7d2hpbGUoRGF0ZS5ub3coKTxQKXt0cnl7bGV0IEU9YXdhaXQgZmV0Y2goSCx7Y2FjaGU6Im5vLXN0b3JlIn0pO2lmKEUub2smJmF3YWl0IEUuanNvbigpKXtsZXQgdz1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtyZXR1cm4gdy5zZWFyY2hQYXJhbXMuc2V0KCJkZXZpY2UiLEsudWRpZCksd2luZG93LmxvY2F0aW9uLmFzc2lnbih3LnRvU3RyaW5nKCkpLCEwfX1jYXRjaHt9YXdhaXQgbmV3IFByb21pc2UoKEUpPT5zZXRUaW1lb3V0KEUsNDAwKSl9cmV0dXJuITF9KSgpLE09cjEoImdyaWQvYXBpL3N0YXJ0IiksTD1mZXRjaChNLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpKU09OLnN0cmluZ2lmeSh7dWRpZDpLLnVkaWR9KX0pLnRoZW4oYXN5bmMoUCk9PntsZXQgRT1hd2FpdCBQLmpzb24oKS5jYXRjaCgoKT0+KHt9KSk7aWYoIVAub2t8fCFFLm9rKXRocm93IEVycm9yKEUuZXJyb3I/P2BIVFRQICR7UC5zdGF0dXN9YCl9KTtpZihhd2FpdCBQcm9taXNlLnJhY2UoW0YsTC50aGVuKCgpPT4ic3RhcnRlZCIpXSk9PT0hMClyZXR1cm47aWYoYXdhaXQgRilyZXR1cm47dGhyb3cgRXJyb3IoInNlcnZlLXNpbSBzdGFydGVkIGJ1dCBubyBzdHJlYW0gc3RhdGUgYXBwZWFyZWQiKX1jYXRjaChIKXtZKEggaW5zdGFuY2VvZiBFcnJvcj9ILm1lc3NhZ2U6IkZhaWxlZCB0byBzdGFydCBzdHJlYW0iKSxRKG51bGwpfX0sW0ddKSxWPW5ldyBNYXA7Zm9yKGxldCBLIG9mIEMpe2xldCBIPVYuZ2V0KEsucnVudGltZSk7aWYoIUgpSD1bXSxWLnNldChLLnJ1bnRpbWUsSCk7SC5wdXNoKEspfWZvcihsZXQgSyBvZiBWLnZhbHVlcygpKUsuc29ydCgoSCxGKT0+e2xldCBNPUguc3RhdGU9PT0iQm9vdGVkIj8wOjEsTD1GLnN0YXRlPT09IkJvb3RlZCI/MDoxO2lmKE0hPT1MKXJldHVybiBNLUw7cmV0dXJuIFo1KEgubmFtZSktWjUoRi5uYW1lKXx8SC5uYW1lLmxvY2FsZUNvbXBhcmUoRi5uYW1lKX0pO2xldCBCPVsuLi5WLmVudHJpZXMoKV0uc29ydCgoW0tdLFtIXSk9Pko1KEspLUo1KEgpfHxLLmxvY2FsZUNvbXBhcmUoSCkpO3JldHVybiBxKCJkaXYiLHtzdHlsZTpHMS5wYWdlLGNoaWxkcmVuOnEoImRpdiIse3N0eWxlOkcxLmVtcHR5LGNoaWxkcmVuOltxKCJoMSIse3N0eWxlOkcxLmVtcHR5VGl0bGUsY2hpbGRyZW46Ik5vIHNlcnZlLXNpbSBzdHJlYW0gcnVubmluZyJ9KSxxKCJwIix7c3R5bGU6RzEuZW1wdHlIaW50LGNoaWxkcmVuOlsiUGljayBhIHNpbXVsYXRvciB0byBib290LCBvciBzdGFydCBvbmUgeW91cnNlbGYgd2l0aCIsIiAiLHEoImNvZGUiLHtzdHlsZTpHMS5jb2RlLGNoaWxkcmVuOiJidW54IHNlcnZlLXNpbSAtLWRldGFjaCJ9KSwiLiJdfSkscSgiZGl2Iix7c3R5bGU6SzYsY2hpbGRyZW46W3EoImRpdiIse3N0eWxlOkE4LGNoaWxkcmVuOltxKCJzcGFuIix7c3R5bGU6e2ZvbnRXZWlnaHQ6NjAwfSxjaGlsZHJlbjoiU2ltdWxhdG9ycyJ9KSxxKCJidXR0b24iLHtvbkNsaWNrOlgsZGlzYWJsZWQ6WixzdHlsZTpJOCxjaGlsZHJlbjpaPyIuLi4iOiJSZWZyZXNoIn0pXX0pLEomJnEoImRpdiIse3N0eWxlOmQ1LGNoaWxkcmVuOkp9KSwkJiZxKCJkaXYiLHtzdHlsZTpkNSxjaGlsZHJlbjokfSksIVomJiFKJiZDLmxlbmd0aD09PTAmJnEoImRpdiIse3N0eWxlOlQ4LGNoaWxkcmVuOiJObyBhdmFpbGFibGUgc2ltdWxhdG9ycyBmb3VuZCJ9KSxCLm1hcCgoW0ssSF0pPT5xKCJkaXYiLHtjaGlsZHJlbjpbcSgiZGl2Iix7c3R5bGU6RTgsY2hpbGRyZW46S30pLEgubWFwKChGKT0+e2xldCBNPUc9PT1GLnVkaWQsTD1HIT09bnVsbCYmIU0sRD1GLnN0YXRlPT09IkJvb3RlZCI7cmV0dXJuIHEoImRpdiIse3N0eWxlOnsuLi5hNSxjdXJzb3I6TD8iZGVmYXVsdCI6InBvaW50ZXIiLG9wYWNpdHk6TD8wLjU6MX0sb25Nb3VzZUVudGVyOihPKT0+e2lmKCFMKU8uY3VycmVudFRhcmdldC5zdHlsZS5iYWNrZ3JvdW5kPSJyZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIn0sb25Nb3VzZUxlYXZlOihPKT0+Ty5jdXJyZW50VGFyZ2V0LnN0eWxlLmJhY2tncm91bmQ9InRyYW5zcGFyZW50IixvbkNsaWNrOigpPT57aWYoIUwpXyhGKX0sY2hpbGRyZW46W3EoInNwYW4iLHtzdHlsZTpjNShEPyIjNGFkZTgwIjoiIzQ0NCIpfSkscSgic3BhbiIse3N0eWxlOntmbGV4OjEsdGV4dEFsaWduOiJsZWZ0In0sY2hpbGRyZW46Ri5uYW1lfSkscSgic3BhbiIse3N0eWxlOntmb250U2l6ZToxMCxjb2xvcjpNPyIjYTViNGZjIjoiIzg4OCJ9LGNoaWxkcmVuOk0/RD8iU3RhcnRpbmcuLi4iOiJCb290aW5nLi4uIjpEPyJTdGFydCBzdHJlYW0iOiJCb290ICYgc3RyZWFtIn0pXX0sRi51ZGlkKX0pXX0sSykpXX0pXX0pfSl9ZnVuY3Rpb24gZjUoe2FjdGl2ZTpDLHBlbmRpbmc6WixvbkNsaWNrOkosdmFyaWFudDpYLHRpdGxlOkcsY2hpbGRyZW46UX0pe2xldCAkPVg9PT0iZ3JhbnQiPyIjNGFkZTgwIjpYPT09InJldm9rZSI/IiNmODcxNzEiOiIjYTViNGZjIjtyZXR1cm4gcSgiYnV0dG9uIix7b25DbGljazpKLGRpc2FibGVkOlosdGl0bGU6RywiYXJpYS1sYWJlbCI6RyxzdHlsZTp7Li4uYy5wZXJtQnRuLGJhY2tncm91bmQ6Qz9gJHskfTIyYDoidHJhbnNwYXJlbnQiLGNvbG9yOkM/JDoicmdiYSgyNTUsMjU1LDI1NSwwLjU1KSIsb3BhY2l0eTpaPzAuNToxfSxjaGlsZHJlbjpRfSl9ZnVuY3Rpb24gVzgoQyxaKXtpZihDPT09WilyZXR1cm4hMDtpZihDLmlkIT09Wi5pZHx8Qy5wYXRoIT09Wi5wYXRofHxDLmxhYmVsIT09Wi5sYWJlbHx8Qy52YWx1ZSE9PVoudmFsdWV8fEMucm9sZSE9PVoucm9sZXx8Qy50eXBlIT09Wi50eXBlfHxDLmVuYWJsZWQhPT1aLmVuYWJsZWQpcmV0dXJuITE7bGV0IEo9Qy5mcmFtZSxYPVouZnJhbWU7cmV0dXJuIEo9PT1YfHxKLng9PT1YLngmJkoueT09PVgueSYmSi53aWR0aD09PVgud2lkdGgmJkouaGVpZ2h0PT09WC5oZWlnaHR9dmFyIHI3PU8yKGZ1bmN0aW9uKHtlbGVtZW50OlosaW5kZXg6SixzY3JlZW46WCxoaWdobGlnaHRlZDpHLHNlbGVjdGVkOlEsb25IaWdobGlnaHQ6JCxvblNlbGVjdDpZfSl7bGV0IF89cTUoWiksVj1QOChaLEopLEI9ZTcoWi5mcmFtZSxYKTtpZighQilyZXR1cm4gbnVsbDtsZXQgSz1DNihWKTtyZXR1cm4gcSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiZGF0YS1heC1rZXkiOl8sImRhdGEtYXgtaWQiOlYuaWQsImRhdGEtYXgtcGF0aCI6Vi5wYXRoLCJkYXRhLWF4LWxhYmVsIjpWLmxhYmVsLCJkYXRhLWF4LXZhbHVlIjpWLnZhbHVlLCJkYXRhLWF4LXJvbGUiOlYucm9sZSwiZGF0YS1heC10eXBlIjpWLnR5cGUsImRhdGEtYXgtZW5hYmxlZCI6U3RyaW5nKFYuZW5hYmxlZCksImRhdGEtYXgtZnJhbWUiOms4KFYuZnJhbWUpLCJkYXRhLWF4LXNlbGVjdGVkIjpTdHJpbmcoUSksImFyaWEtbGFiZWwiOloubGFiZWx8fEssdGl0bGU6SyxvbkNsaWNrOigpPT5ZKF8pLG9uTW91c2VFbnRlcjooKT0+JChfKSxvbk1vdXNlTGVhdmU6KCk9PiQobnVsbCksc3R5bGU6ey4uLlcxLnRhcmdldCxsZWZ0OmAke0IueC9YLndpZHRoKjEwMH0lYCx0b3A6YCR7Qi55L1guaGVpZ2h0KjEwMH0lYCx3aWR0aDpgJHtCLndpZHRoL1gud2lkdGgqMTAwfSVgLGhlaWdodDpgJHtCLmhlaWdodC9YLmhlaWdodCoxMDB9JWAsYm9yZGVyQ29sb3I6UT8iIzYwYTVmYSI6Rz8iI2ZiYmYyNCI6IiMzNGQzOTkiLGJhY2tncm91bmQ6UT8icmdiYSg5NiwxNjUsMjUwLDAuMjQpIjpHPyJyZ2JhKDI0NSwxNTgsMTEsMC4yOCkiOiJyZ2JhKDE2LDE4NSwxMjksMC4xMikifX0pfSwoQyxaKT0+Qy5pbmRleD09PVouaW5kZXgmJkMuaGlnaGxpZ2h0ZWQ9PT1aLmhpZ2hsaWdodGVkJiZDLnNlbGVjdGVkPT09Wi5zZWxlY3RlZCYmQy5vbkhpZ2hsaWdodD09PVoub25IaWdobGlnaHQmJkMub25TZWxlY3Q9PT1aLm9uU2VsZWN0JiZDLnNjcmVlbi53aWR0aD09PVouc2NyZWVuLndpZHRoJiZDLnNjcmVlbi5oZWlnaHQ9PT1aLnNjcmVlbi5oZWlnaHQmJlc4KEMuZWxlbWVudCxaLmVsZW1lbnQpKTtmdW5jdGlvbiBzNygpe2xldHtzbmFwc2hvdDpDfT1pNSgpLHtoaWdobGlnaHRlZEtleTpaLHNlbGVjdGVkS2V5Okosc2V0SGlnaGxpZ2h0ZWRLZXk6WCxzZXRTZWxlY3RlZEtleTpHfT16OCgpO2lmKCFDPy5zY3JlZW4ud2lkdGh8fCFDPy5zY3JlZW4uaGVpZ2h0KXJldHVybiBudWxsO3JldHVybiBxKCJkaXYiLHtzdHlsZTpXMS50YXJnZXRzLGNoaWxkcmVuOkMuZWxlbWVudHMubWFwKChRLCQpPT57bGV0IFk9cTUoUSk7cmV0dXJuIHEocjcse2VsZW1lbnQ6USxpbmRleDokLHNjcmVlbjpDLnNjcmVlbixoaWdobGlnaHRlZDpZPT09WixzZWxlY3RlZDpZPT09SixvbkhpZ2hsaWdodDpYLG9uU2VsZWN0Okd9LFkpfSl9KX12YXIgbjc9TzIoZnVuY3Rpb24oe2VsZW1lbnQ6WixpbmRleDpKLGFjdGl2ZTpYLG9uSGlnaGxpZ2h0Okd9KXtsZXQgUT1xNShaKSwkPVA4KFosSiksWT1gJHtNYXRoLnJvdW5kKFouZnJhbWUud2lkdGgpfXgke01hdGgucm91bmQoWi5mcmFtZS5oZWlnaHQpfWAsXz1bJC5sYWJlbCwkLnJvbGV8fCQudHlwZXx8ImVsZW1lbnQiLFldLmZpbHRlcihCb29sZWFuKS5qb2luKCIgwrcgIik7cmV0dXJuIHEoImRpdiIse3JvbGU6Imxpc3RpdGVtIix0YWJJbmRleDowLCJkYXRhLWF4LWtleSI6USx0aXRsZTpfLG9uTW91c2VFbnRlcjooKT0+RyhRKSxvbk1vdXNlTGVhdmU6KCk9PkcobnVsbCksb25Gb2N1czooKT0+RyhRKSxvbkJsdXI6KCk9PkcobnVsbCksc3R5bGU6ey4uLlcxLmxpc3RJdGVtLC4uLlg/VzEubGlzdEl0ZW1BY3RpdmU6e319LGNoaWxkcmVuOltxKCJzcGFuIix7c3R5bGU6VzEuaXRlbVRleHQsY2hpbGRyZW46W3EoInNwYW4iLHtzdHlsZTpXMS5pdGVtTGFiZWwsY2hpbGRyZW46Wi5sYWJlbHx8Wi5yb2xlfHwiVW5sYWJlbGVkIn0pLHEoInNwYW4iLHtzdHlsZTpXMS5pdGVtTWV0YSxjaGlsZHJlbjpaLnJvbGV8fFoudHlwZXx8ImVsZW1lbnQifSldfSkscSgiY29kZSIse3N0eWxlOlcxLml0ZW1TaXplLGNoaWxkcmVuOll9KV19KX0sKEMsWik9PkMuaW5kZXg9PT1aLmluZGV4JiZDLmFjdGl2ZT09PVouYWN0aXZlJiZDLm9uSGlnaGxpZ2h0PT09Wi5vbkhpZ2hsaWdodCYmVzgoQy5lbGVtZW50LFouZWxlbWVudCkpO2Z1bmN0aW9uIHQ3KHtvdmVybGF5RW5hYmxlZDpDLG9uVG9nZ2xlT3ZlcmxheTpafSl7bGV0e3NuYXBzaG90Okp9PWk1KCkse2hpZ2hsaWdodGVkS2V5Olgsc2V0SGlnaGxpZ2h0ZWRLZXk6R309ejgoKSxRPUo/LmVsZW1lbnRzPz9bXSwkPUY4KEopLFk9Sj8uZXJyb3JzPy5bMF0/P251bGw7cmV0dXJuIHEoImRpdiIse3N0eWxlOnsuLi5jLnNlY3Rpb24scGFkZGluZzoiOHB4IDEycHgifSxjaGlsZHJlbjpbcSgiZGl2Iix7c3R5bGU6VzEucGFuZWxIZWFkZXIsY2hpbGRyZW46W3EoInNwYW4iLHtzdHlsZTp7Li4uYy5zZWN0aW9uVGl0bGUsbWFyZ2luOjB9LGNoaWxkcmVuOiJBWCBUcmVlIn0pLHEoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazpaLCJhcmlhLXByZXNzZWQiOkMsc3R5bGU6VzEub3ZlcmxheVRvZ2dsZSxjaGlsZHJlbjpDPyJPdmVybGF5IG9uIjoiRW5hYmxlIG92ZXJsYXkifSldfSksIUM/bnVsbDokP3EoImRpdiIse3N0eWxlOnsuLi5jLmVtcHR5LHBhZGRpbmc6MTJ9LGNoaWxkcmVuOiJBWCB1bmF2YWlsYWJsZSBvbiB0aGlzIHNpbXVsYXRvci4ifSk6US5sZW5ndGg9PT0wP3EoImRpdiIse3N0eWxlOnsuLi5jLmVtcHR5LHBhZGRpbmc6MTJ9LGNoaWxkcmVuOlk/PyJXYWl0aW5nIGZvciBhY2Nlc3NpYmlsaXR5IGRhdGHigKYifSk6cSgiZGl2Iix7c3R5bGU6VzEubGlzdCxyb2xlOiJsaXN0IixjaGlsZHJlbjpRLm1hcCgoXyxWKT0+e2xldCBCPXE1KF8pO3JldHVybiBxKG43LHtlbGVtZW50Ol8saW5kZXg6VixhY3RpdmU6Qj09PVgsb25IaWdobGlnaHQ6R30sQil9KX0pXX0pfWZ1bmN0aW9uIFA4KEMsWil7bGV0IEo9Qy5sYWJlbHx8Qy5yb2xlfHxgZWxlbWVudCAke1orMX1gLFg9Qy5yb2xlfHxDLnR5cGU7cmV0dXJue2lkOkMuaWQscGF0aDpDLnBhdGgsbGFiZWw6Six2YWx1ZTpDLnZhbHVlLHJvbGU6WCx0eXBlOkMudHlwZSxlbmFibGVkOkMuZW5hYmxlZCxmcmFtZTpDLmZyYW1lfX1mdW5jdGlvbiBlNyhDLFope2xldCBKPU1hdGgubWF4KDAsQy54KSxYPU1hdGgubWF4KDAsQy55KSxHPU1hdGgubWluKFoud2lkdGgsQy54K0Mud2lkdGgpLFE9TWF0aC5taW4oWi5oZWlnaHQsQy55K0MuaGVpZ2h0KSwkPU1hdGgubWF4KDAsRy1KKSxZPU1hdGgubWF4KDAsUS1YKTtyZXR1cm4gJD4wJiZZPjA/e3g6Six5Olgsd2lkdGg6JCxoZWlnaHQ6WX06bnVsbH1mdW5jdGlvbiBxNShDKXtyZXR1cm4gQy5pZH1mdW5jdGlvbiBDNihDKXtyZXR1cm5bYEFYIGxhYmVsOiAke0MubGFiZWx8fCJVbmxhYmVsZWQifWAsQy5yb2xlP2Byb2xlOiAke0Mucm9sZX1gOiIiLEMudHlwZT9gdHlwZTogJHtDLnR5cGV9YDoiIixDLnZhbHVlP2B2YWx1ZTogJHtDLnZhbHVlfWA6IiIsQy5pZD9gaWQ6ICR7Qy5pZH1gOiIiLGBwYXRoOiAke0MucGF0aH1gLGBmcmFtZTogJHtrOChDLmZyYW1lKX1gXS5maWx0ZXIoQm9vbGVhbikuam9pbigiOyAiKX1mdW5jdGlvbiBrOChDKXtyZXR1cm5gJHtDLnh9LCR7Qy55fSAke0Mud2lkdGh9eCR7Qy5oZWlnaHR9YH1mdW5jdGlvbiBaNih7b3ZlcmxheUVuYWJsZWQ6QyxzdHJlYW1pbmc6WixvblRvZ2dsZU92ZXJsYXk6Sn0pe2xldHtzdGF0dXM6WH09aTUoKSxbRyxRXT1JKCExKTtyZXR1cm4gcShEMS5CdXR0b24seyJhcmlhLWxhYmVsIjpDPyJIaWRlIGFjY2Vzc2liaWxpdHkgb3ZlcmxheSI6IlNob3cgYWNjZXNzaWJpbGl0eSBvdmVybGF5IiwiYXJpYS1wcmVzc2VkIjpDLHRpdGxlOlgsb25DbGljazpKLG9uTW91c2VFbnRlcjooKT0+USghMCksb25Nb3VzZUxlYXZlOigpPT5RKCExKSxzdHlsZTpDJiZaP3suLi5XMS50b29sYmFyQnV0dG9uQWN0aXZlLC4uLkc/VzEudG9vbGJhckJ1dHRvbkFjdGl2ZUhvdmVyOnt9fTp2b2lkIDAsY2hpbGRyZW46cSgic3ZnIix7d2lkdGg6IjE5IixoZWlnaHQ6IjE5Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W3EoInBhdGgiLHtkOiJNMyA4VjVhMiAyIDAgMCAxIDItMmgzIn0pLHEoInBhdGgiLHtkOiJNMTYgM2gzYTIgMiAwIDAgMSAyIDJ2MyJ9KSxxKCJwYXRoIix7ZDoiTTIxIDE2djNhMiAyIDAgMCAxLTIgMmgtMyJ9KSxxKCJwYXRoIix7ZDoiTTggMjFINWEyIDIgMCAwIDEtMi0ydi0zIn0pLHEoImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIzLjUifSldfSl9KX1mdW5jdGlvbiBKNihDKXtpZighTnVtYmVyLmlzRmluaXRlKEMpfHxDPD0wKXJldHVybiIwIEIiO2xldCBaPUMvMTA3Mzc0MTgyNDtpZihaPj0xKXJldHVybmAke1oudG9GaXhlZChaPj0xMD8wOjEpfSBHQmA7cmV0dXJuYCR7KEMvMTA0ODU3NikudG9GaXhlZCgwKX0gTUJgfWZ1bmN0aW9uIFg2KEMsWixKKXtsZXRbWCxHXT1JKG51bGwpLFtRLCRdPUkoMCk7eSgoKT0+e2lmKCFafHwhQylyZXR1cm47bGV0IF89ITEsVj1hc3luYygpPT57dHJ5e2xldCBIPWF3YWl0KGF3YWl0IGZldGNoKEMse2NhY2hlOiJuby1zdG9yZSJ9KSkuanNvbigpO2lmKCFfKUcoSC5kZXZpY2VzPz9bXSl9Y2F0Y2h7aWYoIV8pRyhbXSl9fTtWKCk7bGV0IEI9c2V0SW50ZXJ2YWwoVixKPzc1MDozMDAwKTtyZXR1cm4oKT0+e189ITAsY2xlYXJJbnRlcnZhbChCKX19LFtDLFosUSxKXSk7bGV0IFk9aigoKT0+JCgoXyk9Pl8rMSksW10pO3JldHVybntkZXZpY2VzOlgscmVmcmVzaDpZfX1mdW5jdGlvbiBxNihDLFope2xldFtKLFhdPUkobnVsbCk7cmV0dXJuIHkoKCk9PntpZighWnx8IUMpcmV0dXJuO2xldCBHPSExLFE9YXN5bmMoKT0+e3RyeXtsZXQgXz1hd2FpdChhd2FpdCBmZXRjaChDLHtjYWNoZToibm8tc3RvcmUifSkpLmpzb24oKTtpZighRylYKF8pfWNhdGNoe319O1EoKTtsZXQgJD1zZXRJbnRlcnZhbChRLDUwMDApO3JldHVybigpPT57Rz0hMCxjbGVhckludGVydmFsKCQpfX0sW0MsWl0pLEp9ZnVuY3Rpb24gRzYoe3JlcG9ydDpDfSl7aWYoIUN8fEMudG90YWxCeXRlcz09PTApcmV0dXJuIG51bGw7bGV0e2VzdGltYXRlZEFkZGl0aW9uYWw6WixhdmFpbGFibGVCeXRlczpKLHRvdGFsQnl0ZXM6WCxydW5uaW5nU2ltdWxhdG9yczpHfT1DLFE9TWF0aC5tYXgoMCxNYXRoLm1pbigxLDEtSi9YKSksJD1HK1osWT1aPT09MD8iI2U2NiI6Wjw9MT8iI2U5YTEzYiI6IiMzYjMiO3JldHVybiBxKCJkaXYiLHtzdHlsZTpNMS5jYXBhY2l0eSxjaGlsZHJlbjpbcSgic3BhbiIse3N0eWxlOnsuLi5NMS5jYXBhY2l0eURvdCxiYWNrZ3JvdW5kOll9fSkscSgic3BhbiIse2NoaWxkcmVuOltHLCIvIiwkLCIgc2ltcyJdfSkscSgic3BhbiIse3N0eWxlOntjb2xvcjoiIzY2NiJ9LGNoaWxkcmVuOiLCtyJ9KSxxKCJzcGFuIix7c3R5bGU6e2NvbG9yOiIjODg4In0sY2hpbGRyZW46W0o2KEopLCIgZnJlZSJdfSkscSgic3BhbiIseyJhcmlhLWhpZGRlbiI6ITAsc3R5bGU6TTEuY2FwYWNpdHlCYXIsY2hpbGRyZW46cSgic3BhbiIse3N0eWxlOntkaXNwbGF5OiJibG9jayIsd2lkdGg6YCR7KFEqMTAwKS50b0ZpeGVkKDEpfSVgLGhlaWdodDoiMTAwJSIsYmFja2dyb3VuZDpRPjAuOT8iI2U2NiI6UT4wLjc1PyIjZTlhMTNiIjoiIzNiMyIsdHJhbnNpdGlvbjoid2lkdGggMzAwbXMgZWFzZSwgYmFja2dyb3VuZCAzMDBtcyBlYXNlIn19KX0pXX0pfWZ1bmN0aW9uIHA1KEMsWixKLFgpe2xldCBHPWooKEIpPT5NYXRoLm1heChKLE1hdGgubWluKFgsQikpLFtKLFhdKSxbUSwkXT1JKCgpPT57aWYodHlwZW9mIHdpbmRvdz4idSIpcmV0dXJuIFo7bGV0IEI9d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKEMpLEs9QiE9bnVsbD9OdW1iZXIoQik6TmFOO3JldHVybiBOdW1iZXIuaXNGaW5pdGUoSyk/RyhLKTpafSksWT10eXBlb2Ygd2luZG93PCJ1Ij9NYXRoLm1pbihYLHdpbmRvdy5pbm5lcldpZHRoLTMyKTpYLF89TWF0aC5tYXgoSixNYXRoLm1pbihZLFEpKSxWPWooKEIpPT57Qi5wcmV2ZW50RGVmYXVsdCgpO2xldCBLPUIuY2xpZW50WCxIPV8sRj1CLmN1cnJlbnRUYXJnZXQ7Ri5zZXRQb2ludGVyQ2FwdHVyZShCLnBvaW50ZXJJZCk7bGV0IE09KEQpPT57bGV0IE89RyhIKyhLLUQuY2xpZW50WCkpOyQoTyl9LEw9KEQpPT57Ri5yZWxlYXNlUG9pbnRlckNhcHR1cmUoRC5wb2ludGVySWQpLEYucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLE0pLEYucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixMKSxGLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLEwpO3RyeXt3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oQyxTdHJpbmcoRyhIKyhLLUQuY2xpZW50WCkpKSl9Y2F0Y2h7fX07Ri5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsTSksRi5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLEwpLEYuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIsTCl9LFtHLF8sQ10pO3JldHVybnt3aWR0aDpfLG9uUG9pbnRlckRvd246Vn19ZnVuY3Rpb24gdTUoe3BhbmVsV2lkdGg6Qyx2aXNpYmxlOlosb25Qb2ludGVyRG93bjpKLGFyaWFMYWJlbDpYfSl7bGV0W0csUV09SSghMSksWyQsWV09SSghMSksXz1HfHwkLFY9MTIrQy05O3JldHVybiBxKCJkaXYiLHtyb2xlOiJzZXBhcmF0b3IiLCJhcmlhLW9yaWVudGF0aW9uIjoidmVydGljYWwiLCJhcmlhLWxhYmVsIjpYLCJhcmlhLWhpZGRlbiI6IVosb25Qb2ludGVyRG93bjooQik9PntZKCEwKSxKKEIpfSxvblBvaW50ZXJVcDooKT0+WSghMSksb25Qb2ludGVyQ2FuY2VsOigpPT5ZKCExKSxvblBvaW50ZXJFbnRlcjooKT0+USghMCksb25Qb2ludGVyTGVhdmU6KCk9PlEoITEpLHN0eWxlOntwb3NpdGlvbjoiZml4ZWQiLHRvcDoxMixib3R0b206MTIscmlnaHQ6Vix3aWR0aDoxNixjdXJzb3I6ImNvbC1yZXNpemUiLHpJbmRleDozNix0b3VjaEFjdGlvbjoibm9uZSIscG9pbnRlckV2ZW50czpaPyJhdXRvIjoibm9uZSIsb3BhY2l0eTpaPzE6MCx0cmFuc2l0aW9uOiJvcGFjaXR5IDAuMnMgZWFzZSJ9LGNoaWxkcmVuOltxKCJkaXYiLHtzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxib3R0b206MCxsZWZ0OiI1MCUiLHdpZHRoOjEsdHJhbnNmb3JtOiJ0cmFuc2xhdGVYKC0wLjVweCkiLGJhY2tncm91bmQ6ImxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMjU1LDI1NSwyNTUsMCkgMCUsIHJnYmEoMjU1LDI1NSwyNTUsMC4yOCkgMzAlLCByZ2JhKDI1NSwyNTUsMjU1LDAuMjgpIDcwJSwgcmdiYSgyNTUsMjU1LDI1NSwwKSAxMDAlKSIsb3BhY2l0eTpfPzE6MCx0cmFuc2l0aW9uOiJvcGFjaXR5IDAuMTVzIGVhc2UiLHBvaW50ZXJFdmVudHM6Im5vbmUifX0pLHEoImRpdiIse3N0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiNTAlIixsZWZ0OiI1MCUiLHdpZHRoOjQsaGVpZ2h0OjI4LGJvcmRlclJhZGl1czoyLHRyYW5zZm9ybToidHJhbnNsYXRlKC01MCUsIC01MCUpIixiYWNrZ3JvdW5kOiQ/IiM5YTlhOWUiOiIjNmU2ZTcyIix6SW5kZXg6MSxvcGFjaXR5Ol8/MTowLHRyYW5zaXRpb246Im9wYWNpdHkgMC4xNXMgZWFzZSwgYmFja2dyb3VuZCAwLjE1cyBlYXNlIixwb2ludGVyRXZlbnRzOiJub25lIn19KV19KX1mdW5jdGlvbiBsNShDLFope2xldCBKPUMuaW5jbHVkZXMoIj8iKT8iJiI6Ij8iO3JldHVybmAke0N9JHtKfWRldmljZT0ke2VuY29kZVVSSUNvbXBvbmVudChaKX1gfWZ1bmN0aW9uIFE2KHtkZXZpY2U6QyxhY3RpdmU6WixwcmV2aWV3RW5kcG9pbnQ6SixzdGFydGluZzpYLHNodXR0aW5nRG93bjpHLGVycm9yOlEsb25TdGFydDokLG9uU2h1dGRvd246WX0pe2xldCBfPUMuaGVscGVyLFY9Qy5zdGF0ZT09PSJCb290ZWQiLEI9Xz8i4pePIGxpdmUiOlg/Vj8ic3RhcnRpbmcgaGVscGVy4oCmIjoiYm9vdGluZyAmIHN0YXJ0aW5n4oCmIjpHPyJzaHV0dGluZyBkb3du4oCmIjpWPyJib290ZWQgKG5vIHN0cmVhbSkiOkMuc3RhdGUudG9Mb3dlckNhc2UoKSxLPV8/IiMzYjMiOiIjODg4IixIPVo/InJnYmEoMTAsMTMyLDI1NSwwLjU1KSI6InRyYW5zcGFyZW50IixGPV8/ImEiOiJkaXYiLE09Xz97aHJlZjpsNShKLEMuZGV2aWNlKX06e307cmV0dXJuIHEoRix7Li4uTSxjbGFzc05hbWU6ImdyaWQtdGlsZSIsc3R5bGU6ey4uLk0xLnRpbGUsb3V0bGluZTpgMXB4IHNvbGlkICR7SH1gfSxjaGlsZHJlbjpbKF98fFYpJiZxKCJidXR0b24iLHt0eXBlOiJidXR0b24iLHRpdGxlOkc/IlNodXR0aW5nIGRvd27igKYiOiJTaHV0ZG93biBzaW11bGF0b3IiLCJhcmlhLWxhYmVsIjoiU2h1dGRvd24gc2ltdWxhdG9yIixvbkNsaWNrOihMKT0+e0wucHJldmVudERlZmF1bHQoKSxMLnN0b3BQcm9wYWdhdGlvbigpLFkoKX0sZGlzYWJsZWQ6RyxjbGFzc05hbWU6ImdyaWQtc2h1dGRvd24tYnRuIixzdHlsZTpNMS5zaHV0ZG93bkJ0bixjaGlsZHJlbjoiw5cifSksXz9xKCJkaXYiLHtzdHlsZTpNMS50aWxlUHJldmlldyxjaGlsZHJlbjpxKCJpbWciLHtzcmM6Xy5zdHJlYW1VcmwsYWx0OkMubmFtZSxkcmFnZ2FibGU6ITEsc3R5bGU6e21heFdpZHRoOiIxMDAlIixtYXhIZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiY29udGFpbiJ9fSl9KTpxKCJkaXYiLHtzdHlsZTpNMS50aWxlUGxhY2Vob2xkZXIsY2hpbGRyZW46W1g/cSgic3BhbiIseyJhcmlhLWhpZGRlbiI6ITAsc3R5bGU6e3dpZHRoOjIyLGhlaWdodDoyMixib3JkZXJSYWRpdXM6IjUwJSIsYm9yZGVyOiIycHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjE1KSIsYm9yZGVyVG9wQ29sb3I6InJnYmEoMTU1LDIwMSwxNTUsMC45NSkiLGFuaW1hdGlvbjoiZ3JpZC1zcGluIDAuOHMgbGluZWFyIGluZmluaXRlIn19KTpxKCJkaXYiLHtzdHlsZTp7Zm9udFNpemU6Mjgsb3BhY2l0eTowLjV9LGNoaWxkcmVuOlY/IuKWoyI6IuKWoiJ9KSxRP3EoImRpdiIse3N0eWxlOk0xLnRpbGVFcnJvcixjaGlsZHJlbjpRfSk6bnVsbCxxKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KEwpPT57TC5wcmV2ZW50RGVmYXVsdCgpLEwuc3RvcFByb3BhZ2F0aW9uKCksJCgpfSxkaXNhYmxlZDpYLHN0eWxlOnsuLi5NMS50aWxlU3RhcnRCdG4sYmFja2dyb3VuZDpYPyIjMWExYTFhIjoiIzFkMmExZCIsY29sb3I6WD8iIzg4OCI6IiM5YzkiLGN1cnNvcjpYPyJkZWZhdWx0IjoicG9pbnRlciJ9LGNoaWxkcmVuOlg/Vj8iU3RhcnRpbmfigKYiOiJCb290aW5n4oCmIjpWPyJTdGFydCBzdHJlYW0iOiJCb290ICYgc3RhcnQifSldfSkscSgiZGl2Iix7c3R5bGU6TTEudGlsZUZvb3RlcixjaGlsZHJlbjpbcSgic3BhbiIse3N0eWxlOk0xLnRpbGVOYW1lLGNoaWxkcmVuOkMubmFtZX0pLHEoInNwYW4iLHtzdHlsZTp7Y29sb3I6Syx3aGl0ZVNwYWNlOiJub3dyYXAifSxjaGlsZHJlbjpbQixfP3EoInNwYW4iLHtzdHlsZTp7Y29sb3I6IiM2NjYifSxjaGlsZHJlbjpbIiA6IixfLnBvcnRdfSk6bnVsbF19KV19KV19KX1mdW5jdGlvbiAkNih7b3BlbjpDLG9uQ2xvc2U6WixjdXJyZW50VWRpZDpKLHdpZHRoOlh9KXtsZXQgRz13aW5kb3cuX19TSU1fUFJFVklFV19fLFE9Rz8uZ3JpZEFwaUVuZHBvaW50LCQ9Rz8uZ3JpZFN0YXJ0RW5kcG9pbnQsWT1HPy5ncmlkU2h1dGRvd25FbmRwb2ludCxfPUc/LmdyaWRNZW1vcnlFbmRwb2ludCxWPUc/LnByZXZpZXdFbmRwb2ludD8/Ii8iLFtCLEtdPUkoe30pLFtILEZdPUkoe30pLFtNLExdPUkoe30pLEQ9T2JqZWN0LnZhbHVlcyhCKS5zb21lKEJvb2xlYW4pfHxPYmplY3QudmFsdWVzKEgpLnNvbWUoQm9vbGVhbikse2RldmljZXM6TyxyZWZyZXNoOlB9PVg2KFEsQyxEKSxFPXE2KF8sQyksdz1qKGFzeW5jKFQsUz0yMDAwMCk9PntpZighUSlyZXR1cm4gbnVsbDtsZXQgeD1EYXRlLm5vdygpK1M7d2hpbGUoRGF0ZS5ub3coKTx4KXt0cnl7bGV0IEgxPSgoYXdhaXQoYXdhaXQgZmV0Y2goUSx7Y2FjaGU6Im5vLXN0b3JlIn0pKS5qc29uKCkpLmRldmljZXM/P1tdKS5maW5kKChxMSk9PnExLmRldmljZT09PVQmJnExLmhlbHBlcik7aWYoSDEpcmV0dXJuIEgxfWNhdGNoe31hd2FpdCBuZXcgUHJvbWlzZSgocyk9PnNldFRpbWVvdXQocyw0MDApKX1yZXR1cm4gbnVsbH0sW1FdKSxmPWooYXN5bmMoVCk9PntpZighJClyZXR1cm47SygoUyk9Pih7Li4uUyxbVF06ITB9KSksTCgoUyk9Pih7Li4uUyxbVF06bnVsbH0pKTt0cnl7bGV0IFM9YXdhaXQgZmV0Y2goJCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe3VkaWQ6VH0pfSkseD1hd2FpdCBTLmpzb24oKS5jYXRjaCgoKT0+KHt9KSk7aWYoIVMub2t8fCF4Lm9rKXtMKChsKT0+KHsuLi5sLFtUXTp4LmVycm9yPz9gSFRUUCAke1Muc3RhdHVzfWB9KSk7cmV0dXJufWlmKGF3YWl0IHcoVCkpe3dpbmRvdy5sb2NhdGlvbi5hc3NpZ24obDUoVixUKSk7cmV0dXJufUwoKGwpPT4oey4uLmwsW1RdOiJIZWxwZXIgZGlkIG5vdCByZWdpc3RlciBpbiB0aW1lIn0pKX1jYXRjaChTKXtMKCh4KT0+KHsuLi54LFtUXTpTPy5tZXNzYWdlPz8iUmVxdWVzdCBmYWlsZWQifSkpfWZpbmFsbHl7SygoUyk9Pih7Li4uUyxbVF06ITF9KSksUCgpfX0sWyQsUCx3LFZdKTt5KCgpPT57aWYoIU98fCFKKXJldHVybjtpZihPLmZpbmQoKHgpPT54LmRldmljZT09PUopPy5oZWxwZXIpcmV0dXJuO2xldCBTPU8uZmluZCgoeCk9PnguaGVscGVyJiZ4LmRldmljZSE9PUopO3dpbmRvdy5sb2NhdGlvbi5hc3NpZ24oUz9sNShWLFMuZGV2aWNlKTpWKX0sW08sSixWXSk7bGV0IGs9aihhc3luYyhUKT0+e2lmKCFZKXJldHVybjtGKChTKT0+KHsuLi5TLFtUXTohMH0pKSxMKChTKT0+KHsuLi5TLFtUXTpudWxsfSkpO3RyeXtsZXQgUz1hd2FpdCBmZXRjaChZLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpKU09OLnN0cmluZ2lmeSh7dWRpZDpUfSl9KSx4PWF3YWl0IFMuanNvbigpLmNhdGNoKCgpPT4oe30pKTtpZighUy5va3x8IXgub2spTCgocyk9Pih7Li4ucyxbVF06eC5lcnJvcj8/YEhUVFAgJHtTLnN0YXR1c31gfSkpfWNhdGNoKFMpe0woKHgpPT4oey4uLngsW1RdOlM/Lm1lc3NhZ2U/PyJSZXF1ZXN0IGZhaWxlZCJ9KSl9ZmluYWxseXtGKChTKT0+KHsuLi5TLFtUXTohMX0pKSxQKCl9fSxbWSxQXSk7cmV0dXJuIHEocjIse29wZW46Qyx3aWR0aDpYLGNoaWxkcmVuOltxKCJzdHlsZSIse2NoaWxkcmVuOlk2fSkscShzMix7Y2hpbGRyZW46W3EoZzUse2NoaWxkcmVuOiJTaW11bGF0b3JzIn0pLHEoImRpdiIse3N0eWxlOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDo4fSxjaGlsZHJlbjpbcShHNix7cmVwb3J0OkV9KSxxKG4yLHtvbkNsaWNrOlp9KV19KV19KSxxKCJkaXYiLHtzdHlsZTpNMS5ib2R5LGNoaWxkcmVuOk89PT1udWxsP251bGw6Ty5sZW5ndGg9PT0wP3EoImRpdiIse3N0eWxlOk0xLmVtcHR5LGNoaWxkcmVuOiJObyBpT1Mgc2ltdWxhdG9ycyBhdmFpbGFibGUuIn0pOk8ubWFwKChUKT0+cShRNix7ZGV2aWNlOlQsYWN0aXZlOlQuZGV2aWNlPT09SixwcmV2aWV3RW5kcG9pbnQ6VixzdGFydGluZzohIUJbVC5kZXZpY2VdLHNodXR0aW5nRG93bjohIUhbVC5kZXZpY2VdLGVycm9yOk1bVC5kZXZpY2VdPz9udWxsLG9uU3RhcnQ6KCk9PmYoVC5kZXZpY2UpLG9uU2h1dGRvd246KCk9PmsoVC5kZXZpY2UpfSxULmRldmljZSkpfSldfSl9dmFyIFk2PWAKICAuZ3JpZC1zaHV0ZG93bi1idG4geyBvcGFjaXR5OiAwOyB0cmFuc2l0aW9uOiBvcGFjaXR5IDEyMG1zLCBiYWNrZ3JvdW5kIDEyMG1zLCBjb2xvciAxMjBtczsgfQogIC5ncmlkLXRpbGU6aG92ZXIgLmdyaWQtc2h1dGRvd24tYnRuIHsgb3BhY2l0eTogMTsgfQogIC5ncmlkLXNodXRkb3duLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7IGJhY2tncm91bmQ6ICM1YTFkMWQ7IGNvbG9yOiAjZmZmOyBib3JkZXItY29sb3I6ICNhMzM7IH0KICAuZ3JpZC10aWxlOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiAjNTU1ICFpbXBvcnRhbnQ7IH0KICBAa2V5ZnJhbWVzIGdyaWQtc3BpbiB7IHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfSB9CmA7ZnVuY3Rpb24gVjYoe29wZW46QyxvbkNsb3NlOlosdWRpZDpKLGN1cnJlbnRBcHA6WCxheE92ZXJsYXlFbmFibGVkOkcsb25Ub2dnbGVBeE92ZXJsYXk6USx3aWR0aDokfSl7cmV0dXJuIHEocjIse29wZW46Qyx3aWR0aDokLGNoaWxkcmVuOltxKHMyLHtjaGlsZHJlbjpbcShnNSx7Y2hpbGRyZW46IlRvb2xzIn0pLHEobjIse29uQ2xpY2s6Wn0pXX0pLEMmJnEoImRpdiIse3N0eWxlOmMuYm9keSxjaGlsZHJlbjpbcSh0Nyx7b3ZlcmxheUVuYWJsZWQ6RyxvblRvZ2dsZU92ZXJsYXk6UX0pLHEoZDcse3VkaWQ6SixjdXJyZW50QXBwOlh9KSxxKG83LHt1ZGlkOkosYnVuZGxlSWQ6WD8uYnVuZGxlSWQ/P251bGx9KSxxKEI4LHt1ZGlkOkosZXhlYzpPMX0pXX0pXX0pfWZ1bmN0aW9uIF82KHtvcGVuOkMsb25DbG9zZTpaLHVkaWQ6Six0YXJnZXRzOlgsc2VsZWN0ZWRUYXJnZXRJZDpHLG9uU2VsZWN0VGFyZ2V0OlEsbG9hZGluZzokLGVycm9yOlksb25SZWZyZXNoOl8sd2lkdGg6Vn0pe2xldCBCPUc/WC5maW5kKChLKT0+Sy5pZD09PUcpPz9udWxsOm51bGw7cmV0dXJuIHEocjIse29wZW46Qyx3aWR0aDpWLGNoaWxkcmVuOltxKHMyLHtjaGlsZHJlbjpbWC5sZW5ndGg+MD9xKGg3LHt1ZGlkOkosdGFyZ2V0czpYLHNlbGVjdGVkOkIsb25TZWxlY3RUYXJnZXQ6USxvblJlZnJlc2g6X30pOnEoInNwYW4iLHtzdHlsZTpRMS5lbXB0eVRhcmdldCxjaGlsZHJlbjokPyJMb29raW5nIGZvciBTYWZhcmkgYW5kIGluc3BlY3RhYmxlIHdlYnZpZXdzLi4uIjoiTm8gaW5zcGVjdGFibGUgU2FmYXJpIG9yIFdLV2ViVmlldyB0YXJnZXRzIn0pLHEobjIse29uQ2xpY2s6WixhcmlhTGFiZWw6IkNsb3NlIFdlYktpdCBEZXZUb29scyIsdGl0bGU6IkNsb3NlIixpY29uU2l6ZToxNX0pXX0pLHEoImRpdiIse3N0eWxlOlExLmZyYW1lV3JhcCxjaGlsZHJlbjpZP3EoImRpdiIse3N0eWxlOlExLm1lc3NhZ2UsY2hpbGRyZW46WX0pOkImJkM/cSgiaWZyYW1lIix7c3JjOkIuZGV2dG9vbHNGcm9udGVuZFVybCx0aXRsZTpgV2ViS2l0IERldlRvb2xzIC0gJHtCLnRpdGxlfHxCLnVybHx8Qi5pZH1gLHN0eWxlOlExLmlmcmFtZSxvbkxvYWQ6KEspPT5SNyhLLmN1cnJlbnRUYXJnZXQpfSxCLmlkKTpxKCJkaXYiLHtzdHlsZTpRMS5tZXNzYWdlLGNoaWxkcmVuOkI/IkRldlRvb2xzIHBhdXNlZCDigJQgb3BlbiB0aGUgcGFuZWwgdG8gcmVhdHRhY2guIjoiT3BlbiBTYWZhcmkgb3IgYW4gaW5zcGVjdGFibGUgV0tXZWJWaWV3IGluIHRoZSBzaW11bGF0b3IuIn0pfSldfSl9dmFyIEs2PXt3aWR0aDoiMTAwJSIsbWF4V2lkdGg6MzYwLG1hcmdpblRvcDo4LGJhY2tncm91bmQ6IiMxYzFjMWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikiLGJvcmRlclJhZGl1czoxMCxwYWRkaW5nOjQsZm9udEZhbWlseToidWktbW9ub3NwYWNlLCBtb25vc3BhY2UiLGZvbnRTaXplOjEzLGNvbG9yOiIjZWVlIix0ZXh0QWxpZ246ImxlZnQiLG1heEhlaWdodDoiNzB2aCIsb3ZlcmZsb3dZOiJhdXRvIixtaW5IZWlnaHQ6MH07ZnVuY3Rpb24gTDYoKXtsZXQgQz13aW5kb3cuX19TSU1fUFJFVklFV19fLFtaLEpdPUkoITEpLFtYLEddPUkoW10pLFtRLCRdPUkoITEpLFtZLF9dPUkobnVsbCksW1YsQl09SShuZXcgU2V0KSxbSyxIXT1JKCExKSxbRixNXT1JKCExKSxbTCxEXT1JKCExKSxbTyxQXT1JKCExKSxbRSx3XT1JKG51bGwpLGY9aihhc3luYygpPT57JCghMCksXyhudWxsKTt0cnl7bGV0IHo9YXdhaXQgTzEoInhjcnVuIHNpbWN0bCBsaXN0IGRldmljZXMgYXZhaWxhYmxlIC1qIik7aWYoei5leGl0Q29kZSE9PTApdGhyb3cgRXJyb3Ioei5zdGRlcnJ8fCJzaW1jdGwgbGlzdCBmYWlsZWQiKTtHKHY3KHouc3Rkb3V0KSl9Y2F0Y2goeil7Xyh6IGluc3RhbmNlb2YgRXJyb3I/ei5tZXNzYWdlOiJGYWlsZWQgdG8gbGlzdCBkZXZpY2VzIil9ZmluYWxseXskKCExKX19LFtdKTtpZih5KCgpPT57ZigpfSxbZl0pLHkoKCk9PntpZighQz8ubG9nc0VuZHBvaW50KXJldHVybjtsZXQgej1uZXcgRXZlbnRTb3VyY2UoQy5sb2dzRW5kcG9pbnQpLGI9bmV3IE1hcCxVPVsiIzhiZTlmZCIsIiM1MGZhN2IiLCIjZmZiODZjIiwiI2ZmNzljNiIsIiNiZDkzZjkiLCIjZjFmYThjIiwiIzYyNzJhNCIsIiNmZjU1NTUiLCIjNjlmZjk0IiwiI2Q2YWNmZiIsIiNmZmZmYTUiLCIjYTRmZmZmIiwiI2ZmNmU2ZSIsIiNjYWE5ZmEiLCIjNWFmNzhlIl07ZnVuY3Rpb24gTihnKXtsZXQgdT1iLmdldChnKTtpZighdSl7bGV0IGE9MDtmb3IobGV0IG89MDtvPGcubGVuZ3RoO28rKylhPShhPDw1KS1hK2cuY2hhckNvZGVBdChvKXwwO3U9VVtNYXRoLmFicyhhKSVVLmxlbmd0aF0sYi5zZXQoZyx1KX1yZXR1cm4gdX1sZXQgVz0iIixBPSExO3JldHVybiB6Lm9ubWVzc2FnZT0oZyk9Pnt0cnl7bGV0IHU9SlNPTi5wYXJzZShnLmRhdGEpLGE9dS5wcm9jZXNzSW1hZ2VQYXRoPy5zcGxpdCgiLyIpLnBvcCgpPz91LnNlbmRlckltYWdlUGF0aD8uc3BsaXQoIi8iKS5wb3AoKT8/IiIsbz11LnN1YnN5c3RlbT8/IiIsSjI9dS5jYXRlZ29yeT8/IiIsYjE9dS5ldmVudE1lc3NhZ2U/PyIiO2lmKCFiMSlyZXR1cm47aWYoYSE9PVcpe2lmKEEpY29uc29sZS5ncm91cEVuZCgpO2xldCBOMj1OKGEpO2NvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoYCVjJHthfSR7bz9gICVjJHtvfSR7SjI/IjoiK0oyOiIifWA6IiJ9YCxgY29sb3I6JHtOMn07Zm9udC13ZWlnaHQ6Ym9sZGAsLi4ubz9bImNvbG9yOiM4ODg7Zm9udC13ZWlnaHQ6bm9ybWFsIl06W10pLEE9ITAsVz1hfWxldCBYMj0odS5tZXNzYWdlVHlwZT8/IiIpLnRvTG93ZXJDYXNlKCkseDE9byYmYT09PVc/YCVjJHtKMnx8b30lYyBgOiIiLEgyPXgxP1siY29sb3I6Izg4ODtmb250LXN0eWxlOml0YWxpYyIsImNvbG9yOmluaGVyaXQiXTpbXTtpZihYMj09PSJmYXVsdCJ8fFgyPT09ImVycm9yIiljb25zb2xlLmxvZyhgJHt4MX0lYyR7YjF9YCwuLi5IMiwiY29sb3I6I2ZmNTU1NSIpO2Vsc2UgaWYoWDI9PT0iZGVidWciKWNvbnNvbGUubG9nKGAke3gxfSVjJHtiMX1gLC4uLkgyLCJjb2xvcjojNjI3MmE0Iik7ZWxzZSBjb25zb2xlLmxvZyhgJHt4MX0lYyR7YjF9YCwuLi5IMiwiY29sb3I6aW5oZXJpdCIpfWNhdGNoe319LCgpPT57aWYoQSljb25zb2xlLmdyb3VwRW5kKCk7ei5jbG9zZSgpfX0sW0M/LmxvZ3NFbmRwb2ludF0pLCFDKXJldHVybiBxKGk3LHtkZXZpY2VzOlgsbG9hZGluZzpRLGVycm9yOlksb25SZWZyZXNoOmZ9KTtsZXQgaz1YLmZpbmQoKHopPT56LnVkaWQ9PT1DLmRldmljZSk/P251bGw7eSgoKT0+e2RvY3VtZW50LnRpdGxlPWs/Lm5hbWU/YFNpbXVsYXRvciAtICR7ay5uYW1lfWA6IlNpbXVsYXRvciBQcmV2aWV3In0sW2s/Lm5hbWVdKTtsZXQgVD1ZMihrPy5uYW1lKSxTPWI3KEMuZGV2dG9vbHNFbmRwb2ludD8/cjEoImRldnRvb2xzIiksTCk7eSgoKT0+e2lmKCFMKXJldHVybjtpZihFJiZTLnRhcmdldHMuc29tZSgoeik9PnouaWQ9PT1FKSlyZXR1cm47dyhTLnRhcmdldHMubGVuZ3RoPT09MT9TLnRhcmdldHNbMF0uaWQ6bnVsbCl9LFtMLFMudGFyZ2V0cyxFXSkseSgoKT0+e3cobnVsbCl9LFtDLmRldmljZV0pO2xldCB4PUk3KEMuc3RyZWFtVXJsKSxbcyxsXT1JKG51bGwpLEgxPXM/P3guY29uZmlnPz9wMihULGs/Lm5hbWUpLHExPWMyKFQsSDEpLFAxPXUyKFQsSDEpLHY9ZjIoSDEpLGk9JDIoSDEpLCQxPWk/aS53aWR0aC9pLmhlaWdodDoxLHI9aChudWxsKTt5KCgpPT57bGV0IHo9ITEsYj1udWxsLFU9bnVsbCxOPSgpPT57aWYoenx8YilyZXR1cm47Yj1zZXRUaW1lb3V0KCgpPT57Yj1udWxsLFcoKX0sMTAwMCl9LFc9KCk9PntsZXQgQT1uZXcgV2ViU29ja2V0KEMud3NVcmwpO0EuYmluYXJ5VHlwZT0iYXJyYXlidWZmZXIiLFU9QSxyLmN1cnJlbnQ9QSxBLm9uY2xvc2U9KCk9PntpZihyLmN1cnJlbnQ9PT1BKXIuY3VycmVudD1udWxsO04oKX0sQS5vbmVycm9yPSgpPT57QS5jbG9zZSgpfX07cmV0dXJuIFcoKSwoKT0+e2lmKHo9ITAsYiljbGVhclRpbWVvdXQoYik7aWYoci5jdXJyZW50PT09VSlyLmN1cnJlbnQ9bnVsbDtVPy5jbG9zZSgpfX0sW0Mud3NVcmxdKTtsZXQgbj1qKCh6LGIpPT57bGV0IFU9ci5jdXJyZW50O2lmKCFVfHxVLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTilyZXR1cm47bGV0IE49bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGIpKSxXPW5ldyBVaW50OEFycmF5KDErTi5sZW5ndGgpO1dbMF09eixXLnNldChOLDEpLFUuc2VuZChXKX0sW10pLEYxPWooKHopPT5uKDMseiksW25dKSxDMT1qKCh6KT0+big1LHopLFtuXSksdD1qKCh6KT0+big0LHtidXR0b246en0pLFtuXSksbT1qKCh6KT0+e2woKGIpPT5iJiZiLndpZHRoPT09ei53aWR0aCYmYi5oZWlnaHQ9PT16LmhlaWdodCYmYi5vcmllbnRhdGlvbj09PXoub3JpZW50YXRpb24/Yjp6KX0sW10pLGQ9aigoeik9PntuKDcse29yaWVudGF0aW9uOnp9KX0sW25dKTt5KCgpPT57bChudWxsKX0sW0Muc3RyZWFtVXJsXSkseSgoKT0+e2xldCB6PXguY29uZmlnO2lmKCF6KXJldHVybjtsKChiKT0+YiYmYi53aWR0aD09PXoud2lkdGgmJmIuaGVpZ2h0PT09ei5oZWlnaHQmJmIub3JpZW50YXRpb249PT16Lm9yaWVudGF0aW9uP2I6bnVsbCl9LFt4LmNvbmZpZz8ud2lkdGgseC5jb25maWc/LmhlaWdodCx4LmNvbmZpZz8ub3JpZW50YXRpb25dKTtsZXQgcD1qKCh6LGIpPT57big2LHt0eXBlOnosdXNhZ2U6Yn0pfSxbbl0pLFtlLFkxXT1JKG51bGwpLFtMMSxCMV09SSghMSkse3dpZHRoOlMxLG9uUG9pbnRlckRvd246czF9PXA1KCJzZXJ2ZS1zaW06dG9vbHMtcGFuZWwtd2lkdGgiLEY2LDI0MCw3MjApLHt3aWR0aDpOMSxvblBvaW50ZXJEb3duOm4xfT1wNSgic2VydmUtc2ltOmRldnRvb2xzLXBhbmVsLXdpZHRoIixENiw0MjAsMTQwMCkse3dpZHRoOl8xLG9uUG9pbnRlckRvd246ejF9PXA1KCJzZXJ2ZS1zaW06Z3JpZC1wYW5lbC13aWR0aCIsVTYsMzYwLDE0MDApLFtjMSxfMl09SSgoKT0+dHlwZW9mIHdpbmRvdzwidSI/d2luZG93LmlubmVyV2lkdGg6MCksW2wxLEsyXT1JKCgpPT50eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3cuaW5uZXJIZWlnaHQ6MCk7eSgoKT0+e2xldCB6PSgpPT57XzIod2luZG93LmlubmVyV2lkdGgpLEsyKHdpbmRvdy5pbm5lckhlaWdodCl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix6KSwoKT0+d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIseil9LFtdKSx5KCgpPT57bGV0IHo9bmV3IEV2ZW50U291cmNlKEMuYXBwU3RhdGVFbmRwb2ludD8/cjEoImFwcHN0YXRlIikpLGI9bnVsbDtyZXR1cm4gei5vbm1lc3NhZ2U9KFUpPT57dHJ5e2xldCBOPUpTT04ucGFyc2UoVS5kYXRhKTtpZihiKWNsZWFyVGltZW91dChiKTtsZXQgVz1OPy5pc1JlYWN0TmF0aXZlPzA6NjAwO2I9c2V0VGltZW91dCgoKT0+WTEoTiksVyl9Y2F0Y2h7fX0sKCk9PntpZihiKWNsZWFyVGltZW91dChiKTt6LmNsb3NlKCl9fSxbQy5hcHBTdGF0ZUVuZHBvaW50XSk7bGV0IGsyPWooYXN5bmMoKT0+e3AoImRvd24iLDIyNyksYXdhaXQgbmV3IFByb21pc2UoKFUpPT5zZXRUaW1lb3V0KFUsMzApKSxwKCJkb3duIiwyMSksYXdhaXQgbmV3IFByb21pc2UoKFUpPT5zZXRUaW1lb3V0KFUsMzApKSxwKCJ1cCIsMjEpLGF3YWl0IG5ldyBQcm9taXNlKChVKT0+c2V0VGltZW91dChVLDMwKSkscCgidXAiLDIyNyl9LFtwXSksdDE9aChudWxsKSxbSTEsVTFdPUkoMCk7eSgoKT0+e2xldCB6PXQxLmN1cnJlbnQ7aWYoIXp8fHR5cGVvZiBSZXNpemVPYnNlcnZlcj4idSIpcmV0dXJuO2xldCBiPW5ldyBSZXNpemVPYnNlcnZlcigoVSk9PntsZXQgTj1VWzBdPy5jb250ZW50UmVjdC53aWR0aD8/MDtVMShOKX0pO3JldHVybiBiLm9ic2VydmUoeiksKCk9PmIuZGlzY29ubmVjdCgpfSxbXSk7bGV0W3YxLGUxXT1JKCEwKSxtMT1oKCEwKTttMS5jdXJyZW50PXYxO2xldCBDMj1oKG5ldyBTZXQpO3koKCk9PntsZXQgej0oYik9PntsZXQgVT0hIXQxLmN1cnJlbnQ/LmNvbnRhaW5zKGIudGFyZ2V0KTtlMShVKX07cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIix6LCEwKSwoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLHosITApfSxbXSkseSgoKT0+e2lmKHYxKXJldHVybjtsZXQgej1DMi5jdXJyZW50O2lmKHouc2l6ZT09PTApcmV0dXJuO2ZvcihsZXQgYiBvZiB6KW4oNix7dHlwZToidXAiLHVzYWdlOmJ9KTt6LmNsZWFyKCl9LFt2MSxuXSkseSgoKT0+e2xldCB6PShOLFcpPT57aWYoIW0xLmN1cnJlbnQpcmV0dXJuO2lmKE4uY29kZT09PSJLZXlIIiYmTi5tZXRhS2V5JiZOLnNoaWZ0S2V5KXtpZihOLnByZXZlbnREZWZhdWx0KCksVz09PSJkb3duIiYmIU4ucmVwZWF0KW4oNCx7YnV0dG9uOiJob21lIn0pO3JldHVybn1pZihOLmNvZGU9PT0iS2V5QSImJk4ubWV0YUtleSYmTi5zaGlmdEtleSl7aWYoTi5wcmV2ZW50RGVmYXVsdCgpLFc9PT0iZG93biImJiFOLnJlcGVhdClPMShgeGNydW4gc2ltY3RsIHVpICR7Qy5kZXZpY2V9IGFwcGVhcmFuY2VgKS50aGVuKChnKT0+e2xldCB1PWcuc3Rkb3V0LnRyaW0oKT09PSJkYXJrIj8ibGlnaHQiOiJkYXJrIjtyZXR1cm4gTzEoYHhjcnVuIHNpbWN0bCB1aSAke0MuZGV2aWNlfSBhcHBlYXJhbmNlICR7dX1gKX0pLmNhdGNoKCgpPT57fSk7cmV0dXJufWxldCBBPUU3KE4uY29kZSk7aWYoQT09bnVsbClyZXR1cm47aWYoTi5wcmV2ZW50RGVmYXVsdCgpLFc9PT0iZG93biIpQzIuY3VycmVudC5hZGQoQSk7ZWxzZSBDMi5jdXJyZW50LmRlbGV0ZShBKTtuKDYse3R5cGU6Vyx1c2FnZTpBfSl9LGI9KE4pPT56KE4sImRvd24iKSxVPShOKT0+eihOLCJ1cCIpO3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsYiksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixVKSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixiKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5dXAiLFUpfX0sW24sQy5kZXZpY2VdKTtsZXQgQTI9aihhc3luYyh6KT0+e2lmKEt8fHoudWRpZD09PUMuZGV2aWNlKXJldHVybjtIKCEwKTt0cnl7aWYoei5zdGF0ZSE9PSJCb290ZWQiKWF3YWl0IE8xKGB4Y3J1biBzaW1jdGwgYm9vdCAke3oudWRpZH1gKTtsZXQgYj1hd2FpdCBPMShgYnVueCBzZXJ2ZS1zaW0gLS1kZXRhY2ggJHt6LnVkaWR9YCk7aWYoYi5leGl0Q29kZSE9PTApdGhyb3cgRXJyb3IoYi5zdGRlcnJ8fCJGYWlsZWQgdG8gc3RhcnQgc2VydmUtc2ltIik7bGV0IFU9bmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7VS5zZWFyY2hQYXJhbXMuc2V0KCJkZXZpY2UiLHoudWRpZCksd2luZG93LmxvY2F0aW9uLmFzc2lnbihVLnRvU3RyaW5nKCkpfWNhdGNoe0goITEpfX0sW0ssQy5kZXZpY2VdKSxrMT1jNygpLEwyPWw3KHtleGVjOk8xLHVkaWQ6Qy5kZXZpY2UsZW5hYmxlZDpaLG9uVXBsb2FkU3RhcnQ6azEuYWRkLG9uVXBsb2FkUHJvZ3Jlc3M6azEuc2V0UHJvZ3Jlc3Msb25VcGxvYWRFbmQ6KHosYixVKT0+azEudXBkYXRlKHose3N0YXR1czpiPyJzdWNjZXNzIjoiZXJyb3IiLG1lc3NhZ2U6VX0pLG9uVW5zdXBwb3J0ZWQ6KHopPT57bGV0IGI9azEuYWRkKHoubmFtZSwibWVkaWEiKTtrMS51cGRhdGUoYix7c3RhdHVzOiJlcnJvciIsbWVzc2FnZTpgVW5zdXBwb3J0ZWQ6ICR7ei50eXBlfHxyNSh6KX1gfSl9fSksZDE9aihhc3luYyh6KT0+e0IoKGIpPT5uZXcgU2V0KGIpLmFkZCh6KSk7dHJ5e2F3YWl0IE8xKGB4Y3J1biBzaW1jdGwgc2h1dGRvd24gJHt6fWApLGF3YWl0IGYoKX1maW5hbGx5e0IoKGIpPT57bGV0IFU9bmV3IFNldChiKTtyZXR1cm4gVS5kZWxldGUoeiksVX0pfX0sW2ZdKSxaMT1XNih7ZGVmYXVsdFdpZHRoOlAxLHZpZXdwb3J0V2lkdGg6YzEsdmlld3BvcnRIZWlnaHQ6bDEsYXNwZWN0UmF0aW86JDEsb25TdGFydDooKT0+ZTEoITEpfSksZzE9TD9OMTpPP18xOkwxP1MxOjAsYTE9MTIsVDE9MjQsWjI9ZzE+MD9nMStUMTowLEIyPTA7aWYoZzE+MCl7bGV0IHo9YzEtYTEtZzEsYj1JMT4wP01hdGgubWluKEkxLFoxLndpZHRoKTpaMS53aWR0aCxOPWMxLzIrYi8yLSh6LVQxKTtpZihOPjApe2xldCBXPTIqTjtCMj1XPD1aMj9XOjB9fXJldHVybiBxKFM3LHtlbmRwb2ludDpGP0M/LmF4RW5kcG9pbnQ6dm9pZCAwLGNoaWxkcmVuOnEoImRpdiIse3N0eWxlOnsuLi5HMS5wYWdlLHBhZGRpbmdSaWdodDoyNCtCMix0cmFuc2l0aW9uOloxLmlzUmVzaXppbmc/Im5vbmUiOk02fSxjaGlsZHJlbjpbcSgiZGl2Iix7c3R5bGU6ey4uLkcxLnNpbXVsYXRvclN0YWNrLHdpZHRoOloxLndpZHRoLHRyYW5zaXRpb246WjEuaXNSZXNpemluZz9OODpvNX0sY2hpbGRyZW46W3EoRDEse2V4ZWM6TzEsb25Sb3RhdGU6ZCxvcmllbnRhdGlvbjpIMS5vcmllbnRhdGlvbj8/bnVsbCxkZXZpY2VVZGlkOkMuZGV2aWNlLGRldmljZU5hbWU6az8ubmFtZT8/bnVsbCxkZXZpY2VSdW50aW1lOms/LnJ1bnRpbWU/P251bGwsc3RyZWFtaW5nOlosY2hpbGRyZW46W3EobTcse2RldmljZXM6WCxzZWxlY3RlZFVkaWQ6Qy5kZXZpY2UsbG9hZGluZzpRLGVycm9yOlksc3RvcHBpbmdVZGlkczpWLG9uUmVmcmVzaDpmLG9uU2VsZWN0OkEyLG9uU3RvcDpkMSx0cmlnZ2VyOnEoRDEuVGl0bGUse30pfSkscShEMS5BY3Rpb25zLHtjaGlsZHJlbjpbZT8uaXNSZWFjdE5hdGl2ZSYmcShEMS5CdXR0b24seyJhcmlhLWxhYmVsIjoiUmVsb2FkIFJlYWN0IE5hdGl2ZSBidW5kbGUiLHRpdGxlOiJSZWxvYWQgKENtZCtSKSIsb25DbGljazooKT0+dm9pZCBrMigpLGNoaWxkcmVuOnEoRDgse30pfSkscShEMS5Ib21lQnV0dG9uLHtvbkNsaWNrOih6KT0+e3oucHJldmVudERlZmF1bHQoKSx0KCJob21lIil9fSkscShaNix7b3ZlcmxheUVuYWJsZWQ6RixzdHJlYW1pbmc6WixvblRvZ2dsZU92ZXJsYXk6KCk9Pk0oKHopPT4heil9KSxxKEQxLlJvdGF0ZUJ1dHRvbix7dGl0bGU6IlJvdGF0ZSBkZXZpY2UifSldfSldfSkscSgiZGl2Iix7cmVmOnQxLHN0eWxlOnt3aWR0aDpaMS53aWR0aCxtYXhIZWlnaHQ6IjEwMCUiLGFzcGVjdFJhdGlvOnYscG9zaXRpb246InJlbGF0aXZlIix0cmFuc2l0aW9uOloxLmlzUmVzaXppbmc/Tjg6bzUsd2lsbENoYW5nZTpaMS5pc1Jlc2l6aW5nPyJ3aWR0aCI6dm9pZCAwfSwuLi5MMi5kcm9wWm9uZVByb3BzLGNoaWxkcmVuOltxKHgyLHt1cmw6Qy51cmwsc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLGJvcmRlcjoibm9uZSIscG9pbnRlckV2ZW50czpaMS5pc1Jlc2l6aW5nPyJub25lIjp2b2lkIDB9LGltYWdlU3R5bGU6e2JvcmRlclJhZGl1czpxMSxjb3JuZXJTaGFwZToic3VwZXJlbGxpcHNlKDEuMykifSxoaWRlQ29udHJvbHM6ITAsb25TdHJlYW1pbmdDaGFuZ2U6SixvblN0cmVhbVRvdWNoOkYxLG9uU3RyZWFtTXVsdGlUb3VjaDpDMSxvblN0cmVhbUJ1dHRvbjp0LHN1YnNjcmliZUZyYW1lOnguc3Vic2NyaWJlRnJhbWUsc3RyZWFtRnJhbWU6eC5mcmFtZSxzdHJlYW1Db25maWc6SDEsb25TY3JlZW5Db25maWdDaGFuZ2U6bX0pLEYmJnEoczcse30pLEwyLmlzRHJhZ092ZXImJnEoImRpdiIse3N0eWxlOnsuLi5HMS5kcm9wT3ZlcmxheSxib3JkZXJSYWRpdXM6cTF9LGNoaWxkcmVuOltxKCJzdmciLHt3aWR0aDoiMzIiLGhlaWdodDoiMzIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIxLjUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltxKCJwYXRoIix7ZDoiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTQifSkscSgicG9seWxpbmUiLHtwb2ludHM6IjE3IDggMTIgMyA3IDgifSkscSgibGluZSIse3gxOiIxMiIseTE6IjMiLHgyOiIxMiIseTI6IjE1In0pXX0pLHEoInNwYW4iLHtzdHlsZTp7Zm9udFNpemU6MTMsZm9udFdlaWdodDo1MDB9LGNoaWxkcmVuOiJEcm9wIG1lZGlhIG9yIC5pcGEifSldfSkscSgiZGl2Iix7cmVmOloxLmhhbmRsZVJlZixyb2xlOiJzZXBhcmF0b3IiLCJhcmlhLWxhYmVsIjoiUmVzaXplIHNpbXVsYXRvciIsImFyaWEtb3JpZW50YXRpb24iOiJ2ZXJ0aWNhbCIsImFyaWEtdmFsdWVtaW4iOk1hdGgucm91bmQoWDUpLCJhcmlhLXZhbHVlbWF4IjpNYXRoLnJvdW5kKFoxLm1heFdpZHRoKSwiYXJpYS12YWx1ZW5vdyI6TWF0aC5yb3VuZChaMS53aWR0aCksdGFiSW5kZXg6MCx0aXRsZToiRHJhZyB0byByZXNpemUiLG9uUG9pbnRlckRvd246WjEub25Qb2ludGVyRG93bixvblBvaW50ZXJNb3ZlOloxLm9uUG9pbnRlck1vdmUsb25Qb2ludGVyVXA6WjEub25Qb2ludGVyRW5kLG9uUG9pbnRlckNhbmNlbDpaMS5vblBvaW50ZXJFbmQsb25Mb3N0UG9pbnRlckNhcHR1cmU6WjEub25Qb2ludGVyRW5kLG9uS2V5RG93bjpaMS5vbktleURvd24sb25Qb2ludGVyRW50ZXI6KCk9PloxLnNldEhhbmRsZUhvdmVyZWQoITApLG9uUG9pbnRlckxlYXZlOigpPT5aMS5zZXRIYW5kbGVIb3ZlcmVkKCExKSxzdHlsZTp7Li4uRzEucmVzaXplSGFuZGxlLC4uLloxLmhhbmRsZUFjdGl2ZT9HMS5yZXNpemVIYW5kbGVBY3RpdmU6e319LGNoaWxkcmVuOnEoInN2ZyIse3dpZHRoOiIxNSIsaGVpZ2h0OiIxNSIsdmlld0JveDoiMCAwIDE1IDE1IixmaWxsOiJub25lIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjpbcSgicGF0aCIse2Q6Ik05IDEzTDEzIDkiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMS40IixzdHJva2VMaW5lY2FwOiJyb3VuZCJ9KSxxKCJwYXRoIix7ZDoiTTUgMTNMMTMgNSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIxLjQiLHN0cm9rZUxpbmVjYXA6InJvdW5kIn0pXX0pfSldfSldfSksazEudG9hc3RzLmxlbmd0aD4wJiZxKCJkaXYiLHtzdHlsZTpHMS50b2FzdFN0YWNrLGNoaWxkcmVuOltxKCJzdHlsZSIse2NoaWxkcmVuOkI2fSksazEudG9hc3RzLm1hcCgoeik9PntsZXQgYj16LnN0YXR1cz09PSJlcnJvciIsVT16LnN0YXR1cz09PSJ1cGxvYWRpbmciLE49VSYmei5wcm9ncmVzcyE9PW51bGwsVz16LnByb2dyZXNzIT1udWxsP01hdGgucm91bmQoei5wcm9ncmVzcyoxMDApOjA7cmV0dXJuIHEoImRpdiIse3N0eWxlOnsuLi5HMS50b2FzdCx1c2VyU2VsZWN0OmI/InRleHQiOiJub25lIixXZWJraXRVc2VyU2VsZWN0OmI/InRleHQiOiJub25lIixjdXJzb3I6Yj8idGV4dCI6ImRlZmF1bHQifSxjaGlsZHJlbjpbcSgiZGl2Iix7c3R5bGU6RzEudG9hc3RSb3csY2hpbGRyZW46W3EoInNwYW4iLHtzdHlsZTp7Li4uRzEuZG90LGJhY2tncm91bmQ6ei5zdGF0dXM9PT0idXBsb2FkaW5nIj8iI2E1YjRmYyI6ei5zdGF0dXM9PT0ic3VjY2VzcyI/IiM0YWRlODAiOiIjZjg3MTcxIn19KSxxKCJzcGFuIix7c3R5bGU6RzEudG9hc3RUZXh0LGNoaWxkcmVuOltVJiZOJiZgVXBsb2FkaW5nICR7ei5uYW1lfeKApiAke1d9JWAsVSYmIU4mJih6LmtpbmQ9PT0iaXBhIj9gSW5zdGFsbGluZyAke3oubmFtZX3igKZgOmBBZGRpbmcgJHt6Lm5hbWV94oCmYCksei5zdGF0dXM9PT0ic3VjY2VzcyImJih6LmtpbmQ9PT0iaXBhIj9gSW5zdGFsbGVkICR7ei5uYW1lfWA6YEFkZGVkICR7ei5uYW1lfSB0byBQaG90b3NgKSxiJiZgJHt6Lm5hbWV9OiAke3oubWVzc2FnZT8/IlVwbG9hZCBmYWlsZWQifWBdfSldfSksVSYmcSgiZGl2Iix7c3R5bGU6RzEucHJvZ3Jlc3NUcmFjayxjaGlsZHJlbjpOP3EoImRpdiIse3N0eWxlOnsuLi5HMS5wcm9ncmVzc0ZpbGwsd2lkdGg6YCR7V30lYH19KTpxKCJkaXYiLHtjbGFzc05hbWU6InNlcnZlLXNpbS10b2FzdC1pbmRldGVybWluYXRlIixzdHlsZTpHMS5wcm9ncmVzc0luZGV0ZXJtaW5hdGV9KX0pXX0sei5pZCl9KV19KSxxKCJkaXYiLHtzdHlsZTp7Li4uQzUucmFpbCxvcGFjaXR5OkwxfHxMfHxPPzA6MSxwb2ludGVyRXZlbnRzOkwxfHxMfHxPPyJub25lIjoiYXV0byJ9LGNoaWxkcmVuOltxKCJidXR0b24iLHtvbkNsaWNrOigpPT57RCghMSksUCghMSksQjEoKHopPT4heil9LHN0eWxlOkM1LmJ1dHRvbiwiYXJpYS1sYWJlbCI6Ik9wZW4gdG9vbHMgcGFuZWwiLCJhcmlhLXByZXNzZWQiOkwxLHRpdGxlOiJUb29scyIsY2hpbGRyZW46cSgic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMS43NSIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W3EoInJlY3QiLHt4OiIzIix5OiI0Iix3aWR0aDoiMTgiLGhlaWdodDoiMTYiLHJ4OiIyLjUifSkscSgibGluZSIse3gxOiIxNSIseTE6IjQiLHgyOiIxNSIseTI6IjIwIn0pXX0pfSkscSgiYnV0dG9uIix7b25DbGljazooKT0+e0IxKCExKSxQKCExKSxEKCh6KT0+IXopfSxzdHlsZTpDNS5idXR0b24sImFyaWEtbGFiZWwiOiJPcGVuIFdlYktpdCBEZXZUb29scyIsImFyaWEtcHJlc3NlZCI6TCx0aXRsZToiV2ViS2l0IERldlRvb2xzIixjaGlsZHJlbjpxKCJzdmciLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIxLjc1IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbcSgiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn0pLHEoInBhdGgiLHtkOiJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCJ9KSxxKCJwYXRoIix7ZDoiTTIgMTJoMjAifSldfSl9KSxxKCJidXR0b24iLHtvbkNsaWNrOigpPT57QjEoITEpLEQoITEpLFAoKHopPT4heil9LHN0eWxlOkM1LmJ1dHRvbiwiYXJpYS1sYWJlbCI6Ik9wZW4gc2ltdWxhdG9yIGdyaWQiLCJhcmlhLXByZXNzZWQiOk8sdGl0bGU6IlNpbXVsYXRvcnMiLGNoaWxkcmVuOnEoInN2ZyIse3dpZHRoOiIxOCIsaGVpZ2h0OiIxOCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjEuNzUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltxKCJyZWN0Iix7eDoiMyIseToiMyIsd2lkdGg6IjciLGhlaWdodDoiNyIscng6IjEuNSJ9KSxxKCJyZWN0Iix7eDoiMTQiLHk6IjMiLHdpZHRoOiI3IixoZWlnaHQ6IjciLHJ4OiIxLjUifSkscSgicmVjdCIse3g6IjMiLHk6IjE0Iix3aWR0aDoiNyIsaGVpZ2h0OiI3IixyeDoiMS41In0pLHEoInJlY3QiLHt4OiIxNCIseToiMTQiLHdpZHRoOiI3IixoZWlnaHQ6IjciLHJ4OiIxLjUifSldfSl9KV19KSxxKFY2LHtvcGVuOkwxLG9uQ2xvc2U6KCk9PkIxKCExKSx1ZGlkOkMuZGV2aWNlLGN1cnJlbnRBcHA6ZSxheE92ZXJsYXlFbmFibGVkOkYsb25Ub2dnbGVBeE92ZXJsYXk6KCk9Pk0oKHopPT4heiksd2lkdGg6UzF9KSxxKHU1LHtwYW5lbFdpZHRoOlMxLHZpc2libGU6TDEsb25Qb2ludGVyRG93bjpzMSxhcmlhTGFiZWw6IlJlc2l6ZSB0b29scyBwYW5lbCJ9KSxxKCQ2LHtvcGVuOk8sb25DbG9zZTooKT0+UCghMSksY3VycmVudFVkaWQ6Qy5kZXZpY2Usd2lkdGg6XzF9KSxxKHU1LHtwYW5lbFdpZHRoOl8xLHZpc2libGU6TyxvblBvaW50ZXJEb3duOnoxLGFyaWFMYWJlbDoiUmVzaXplIHNpbXVsYXRvcnMgcGFuZWwifSkscShfNix7b3BlbjpMLG9uQ2xvc2U6KCk9PkQoITEpLHVkaWQ6Qy5kZXZpY2UsdGFyZ2V0czpTLnRhcmdldHMsc2VsZWN0ZWRUYXJnZXRJZDpFLG9uU2VsZWN0VGFyZ2V0OncsbG9hZGluZzpTLmxvYWRpbmcsZXJyb3I6Uy5lcnJvcixvblJlZnJlc2g6KCk9PnZvaWQgUy5yZWZyZXNoKCksd2lkdGg6TjF9KSxxKHU1LHtwYW5lbFdpZHRoOk4xLHZpc2libGU6TCxvblBvaW50ZXJEb3duOm4xLGFyaWFMYWJlbDoiUmVzaXplIFdlYktpdCBEZXZUb29scyBwYW5lbCJ9KSxxKCJkaXYiLHtzdHlsZTpHMS5iYXIsY2hpbGRyZW46cSgic3BhbiIse3N0eWxlOnsuLi5HMS5saXZlLGNvbG9yOlo/IiM0YWRlODAiOiIjNjY2In0sY2hpbGRyZW46W3EoInNwYW4iLHtzdHlsZTp7Li4uRzEuZG90LGJhY2tncm91bmQ6Wj8iIzRhZGU4MCI6IiM2NjYifX0pLFo/ImxpdmUiOiJjb25uZWN0aW5nIl19KX0pXX0pfSl9dmFyIEcxPXtwYWdlOntkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsaGVpZ2h0OiIxMDB2aCIsYmFja2dyb3VuZDoiIzBhMGEwYSIscGFkZGluZzoyNCxnYXA6MTIsZm9udEZhbWlseToiLWFwcGxlLXN5c3RlbSwgc3lzdGVtLXVpLCBzYW5zLXNlcmlmIixib3hTaXppbmc6ImJvcmRlci1ib3gifSxzaW11bGF0b3JTdGFjazp7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDoxMixtaW5XaWR0aDowLHRyYW5zaXRpb246bzV9LGJhcjp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6MTAsZm9udFNpemU6MTIsZm9udEZhbWlseToidWktbW9ub3NwYWNlLCBtb25vc3BhY2UiLGNvbG9yOiIjNjY2In0sbGl2ZTp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6NSx0cmFuc2l0aW9uOiJjb2xvciAwLjNzIn0sZG90Ont3aWR0aDo2LGhlaWdodDo2LGJvcmRlclJhZGl1czoiNTAlIix0cmFuc2l0aW9uOiJiYWNrZ3JvdW5kIDAuM3MifSxlbXB0eTp7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDoxMix0ZXh0QWxpZ246ImNlbnRlciJ9LGVtcHR5VGl0bGU6e2ZvbnRTaXplOjE4LG1hcmdpbjowLGNvbG9yOiIjZWVlIn0sZW1wdHlIaW50Ontjb2xvcjoiIzg4OCIsZm9udFNpemU6MTQsbWF4V2lkdGg6NDgwfSxjb2RlOntiYWNrZ3JvdW5kOiIjMjIyIixwYWRkaW5nOiIycHggNnB4Iixib3JkZXJSYWRpdXM6NCxmb250U2l6ZToxM30sZHJvcE92ZXJsYXk6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsaW5zZXQ6MCxkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsZ2FwOjgsYm9yZGVyOiIycHggZGFzaGVkICNhNWI0ZmMiLGJhY2tncm91bmQ6InJnYmEoOTksMTAyLDI0MSwwLjEyKSIsYmFja2Ryb3BGaWx0ZXI6ImJsdXIoMnB4KSIsY29sb3I6IiNhNWI0ZmMiLHBvaW50ZXJFdmVudHM6Im5vbmUiLHpJbmRleDoyMH0scmVzaXplSGFuZGxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLHJpZ2h0Oi0zNCxib3R0b206Mix3aWR0aDoyOCxoZWlnaHQ6MjgsYm9yZGVyUmFkaXVzOjE0LGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC43MikiLGJhY2tncm91bmQ6InJnYmEoMjgsMjgsMzAsMC42MikiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xNCkiLGJveFNoYWRvdzoiMCA4cHggMjRweCByZ2JhKDAsMCwwLDAuMzIpIixiYWNrZHJvcEZpbHRlcjoiYmx1cigxOHB4KSIsV2Via2l0QmFja2Ryb3BGaWx0ZXI6ImJsdXIoMThweCkiLGN1cnNvcjoibndzZS1yZXNpemUiLHRvdWNoQWN0aW9uOiJub25lIixvcGFjaXR5OjAuNzIsdHJhbnNpdGlvbjoib3BhY2l0eSAwLjE4cyBlYXNlLCBiYWNrZ3JvdW5kIDAuMThzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE4cyBlYXNlLCBib3gtc2hhZG93IDAuMThzIGVhc2UiLHpJbmRleDoyNX0scmVzaXplSGFuZGxlQWN0aXZlOntvcGFjaXR5OjEsYmFja2dyb3VuZDoicmdiYSg0NCw0NCw0NiwwLjgyKSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjI4KSIsYm94U2hhZG93OiIwIDEwcHggMjhweCByZ2JhKDAsMCwwLDAuNDIpLCAwIDAgMCA0cHggcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSJ9LHRvYXN0U3RhY2s6e3Bvc2l0aW9uOiJmaXhlZCIsYm90dG9tOjE2LHJpZ2h0OjE2LGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjYsbWF4V2lkdGg6MzIwLHpJbmRleDozMH0sdG9hc3Q6e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjYscGFkZGluZzoiOHB4IDEycHgiLGJhY2tncm91bmQ6IiMxYzFjMWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikiLGJvcmRlclJhZGl1czo4LGNvbG9yOiIjZWVlIixmb250U2l6ZToxMixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsYm94U2hhZG93OiIwIDRweCAxMnB4IHJnYmEoMCwwLDAsMC40KSJ9LHRvYXN0Um93OntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDo4fSx0b2FzdFRleHQ6e2ZsZXg6MSxvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxwcm9ncmVzc1RyYWNrOntwb3NpdGlvbjoicmVsYXRpdmUiLGhlaWdodDozLHdpZHRoOiIxMDAlIixiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixib3JkZXJSYWRpdXM6MixvdmVyZmxvdzoiaGlkZGVuIn0scHJvZ3Jlc3NGaWxsOntoZWlnaHQ6IjEwMCUiLGJhY2tncm91bmQ6IiNhNWI0ZmMiLGJvcmRlclJhZGl1czoyLHRyYW5zaXRpb246IndpZHRoIDEyMG1zIGxpbmVhciJ9LHByb2dyZXNzSW5kZXRlcm1pbmF0ZTp7cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsaGVpZ2h0OiIxMDAlIix3aWR0aDoiNDAlIixiYWNrZ3JvdW5kOiIjYTViNGZjIixib3JkZXJSYWRpdXM6Mn19LEI2PWAKICBAa2V5ZnJhbWVzIHNlcnZlLXNpbS10b2FzdC1pbmRldGVybWluYXRlIHsKICAgIDAlICAgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOyB9CiAgICAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDI1MCUpOyB9CiAgfQogIC5zZXJ2ZS1zaW0tdG9hc3QtaW5kZXRlcm1pbmF0ZSB7CiAgICBhbmltYXRpb246IHNlcnZlLXNpbS10b2FzdC1pbmRldGVybWluYXRlIDEuMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgfQpgLEg2PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiY2FsYygxMDAlICsgNnB4KSIsbGVmdDowLG1pbldpZHRoOjI2MCxtYXhIZWlnaHQ6MzYwLG92ZXJmbG93WToiYXV0byIsYmFja2dyb3VuZDoiIzFjMWMxZSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSIsYm9yZGVyUmFkaXVzOjEwLHBhZGRpbmc6NCxib3hTaGFkb3c6IjAgOHB4IDI0cHggcmdiYSgwLDAsMCwwLjUpIixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsZm9udFNpemU6MTMsY29sb3I6IiNlZWUiLHpJbmRleDoyMH0sQTg9e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLHBhZGRpbmc6IjZweCAxMHB4Iixmb250U2l6ZToxMSxjb2xvcjoiI2FhYSJ9LEk4PXtiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixjb2xvcjoiI2E1YjRmYyIsZm9udFNpemU6MTEsY3Vyc29yOiJwb2ludGVyIixwYWRkaW5nOjB9LGQ1PXtwYWRkaW5nOiI2cHggMTBweCIsY29sb3I6IiNmODcxNzEiLGZvbnRTaXplOjExfSxhNT17ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6OCxwYWRkaW5nOiI2cHggMTBweCIsYm9yZGVyUmFkaXVzOjYsY3Vyc29yOiJwb2ludGVyIix0cmFuc2l0aW9uOiJiYWNrZ3JvdW5kIDAuMTVzIn0sTjY9e2hlaWdodDoxLGJhY2tncm91bmQ6InJnYmEoMjU1LDI1NSwyNTUsMC4wOCkiLG1hcmdpbjoiNHB4IDAifSxUOD17cGFkZGluZzoxMixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjQpIixmb250U2l6ZToxMSx0ZXh0QWxpZ246ImNlbnRlciJ9LEU4PXtwYWRkaW5nOiI2cHggMTBweCAycHgiLGZvbnRTaXplOjEwLGZvbnRXZWlnaHQ6NjAwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNCkiLHRleHRUcmFuc2Zvcm06InVwcGVyY2FzZSIsbGV0dGVyU3BhY2luZzoiMC4wOGVtIn0sRjY9MzIwLEQ2PTc2MCxVNj03MjAsWDU9MjgwLE82PTMsejY9MTM2LE44PSJ3aWR0aCA3MG1zIGxpbmVhciIsbzU9IndpZHRoIDAuMjRzIGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKSIsTTY9InBhZGRpbmctcmlnaHQgMC4yNHMgY3ViaWMtYmV6aWVyKDAuMjIsIDEsIDAuMzYsIDEpIjtmdW5jdGlvbiBXNih7ZGVmYXVsdFdpZHRoOkMsdmlld3BvcnRXaWR0aDpaLHZpZXdwb3J0SGVpZ2h0OkosYXNwZWN0UmF0aW86WCxvblN0YXJ0Okd9KXtsZXRbUSwkXT1JKG51bGwpLFtZLF9dPUkoITEpLFtWLEJdPUkoITEpLEs9aChudWxsKSxIPWgobnVsbCksRj1oKG51bGwpLE09dzgoQyxaLEosWCksTD1lMihRPz9DLEMsWixKLFgpO3koKCk9PntpZihRPT1udWxsKXJldHVybjtsZXQgaz1lMihRLEMsWixKLFgpO2lmKGshPT1RKSQoayl9LFtYLEMsUSxKLFpdKSx5KCgpPT57aWYoIVkpcmV0dXJuO2xldCBrPWRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yLFQ9ZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0LFM9ZG9jdW1lbnQuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0O3JldHVybiBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcj0ibndzZS1yZXNpemUiLGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdD0ibm9uZSIsZG9jdW1lbnQuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PSJub25lIiwoKT0+e2RvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yPWssZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0PVQsZG9jdW1lbnQuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0PVN9fSxbWV0pO2xldCBEPWooKGspPT57bGV0IFQ9ZTIoayxDLFosSixYKTtpZihILmN1cnJlbnQhPW51bGwpY2FuY2VsQW5pbWF0aW9uRnJhbWUoSC5jdXJyZW50KTtILmN1cnJlbnQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57SC5jdXJyZW50PW51bGwsJChUKX0pfSxbWCxDLEosWl0pLE89aigoKT0+e2xldCBrPUsuY3VycmVudD8ucG9pbnRlcklkO2lmKEsuY3VycmVudD1udWxsLGshPW51bGwmJms+PTApe2xldCBUPUYuY3VycmVudDtpZihUPy5oYXNQb2ludGVyQ2FwdHVyZShrKSlULnJlbGVhc2VQb2ludGVyQ2FwdHVyZShrKX1pZihILmN1cnJlbnQhPW51bGwpY2FuY2VsQW5pbWF0aW9uRnJhbWUoSC5jdXJyZW50KSxILmN1cnJlbnQ9bnVsbDtfKCExKX0sW10pO3koKCk9PntyZXR1cm4oKT0+TygpfSxbT10pLHkoKCk9PntpZighWSlyZXR1cm47bGV0IGs9KCk9Pk8oKSxUPSgpPT57aWYoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlPT09ImhpZGRlbiIpTygpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLGspLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLGssITApLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIixrLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixUKSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIixrKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixrLCEwKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmNhbmNlbCIsaywhMCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsVCl9fSxbWSxPXSk7bGV0IFA9aigoayk9PntsZXQgVD1LLmN1cnJlbnQ7aWYoIVR8fFQucG9pbnRlcklkIT09ay5wb2ludGVySWQpcmV0dXJuO2sucHJldmVudERlZmF1bHQoKSxrLnN0b3BQcm9wYWdhdGlvbigpLE8oKX0sW09dKSxFPWooKGspPT57aWYoay5idXR0b24hPT0wKXJldHVybjtrLnByZXZlbnREZWZhdWx0KCksay5zdG9wUHJvcGFnYXRpb24oKSxrLmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoay5wb2ludGVySWQpLEsuY3VycmVudD17cG9pbnRlcklkOmsucG9pbnRlcklkLHN0YXJ0WDprLmNsaWVudFgsc3RhcnRZOmsuY2xpZW50WSxzdGFydFdpZHRoOkx9LEcoKSxfKCEwKX0sW0csTF0pLHc9aigoayk9PntsZXQgVD1LLmN1cnJlbnQ7aWYoIVR8fFQucG9pbnRlcklkIT09ay5wb2ludGVySWQpcmV0dXJuO2lmKGsucHJldmVudERlZmF1bHQoKSxrLmJ1dHRvbnMhPT0xKXtPKCk7cmV0dXJufWxldCBTPWsuY2xpZW50WC1ULnN0YXJ0WCx4PShrLmNsaWVudFktVC5zdGFydFkpKlgscz1ULnN0YXJ0V2lkdGgrKE1hdGguYWJzKFMpPj1NYXRoLmFicyh4KT9TOngpO0Qocyl9LFtYLEQsT10pLGY9aigoayk9PntsZXQgVD1rLmtleT09PSJBcnJvd1JpZ2h0Inx8ay5rZXk9PT0iQXJyb3dEb3duIj8xOmsua2V5PT09IkFycm93TGVmdCJ8fGsua2V5PT09IkFycm93VXAiPy0xOjA7aWYoVD09PTApcmV0dXJuO2sucHJldmVudERlZmF1bHQoKTtsZXQgUz1rLnNoaWZ0S2V5PzgwOjI0OyQoZTIoTCtUKlMsQyxaLEosWCkpfSxbWCxDLEosWixMXSk7cmV0dXJue2hhbmRsZVJlZjpGLHdpZHRoOkwsbWF4V2lkdGg6TSxpc1Jlc2l6aW5nOlksaGFuZGxlQWN0aXZlOlZ8fFksc2V0SGFuZGxlSG92ZXJlZDpCLG9uUG9pbnRlckRvd246RSxvblBvaW50ZXJNb3ZlOncsb25Qb2ludGVyRW5kOlAsb25LZXlEb3duOmZ9fWZ1bmN0aW9uIGUyKEMsWixKLFgsRyl7bGV0IFE9dzgoWixKLFgsRyksJD1NYXRoLm1pbihYNSxRKTtyZXR1cm4gTWF0aC5taW4oUSxNYXRoLm1heCgkLEMpKX1mdW5jdGlvbiB3OChDLFosSixYKXtsZXQgRz1DKk82LFE9Wj4wP01hdGgubWF4KFg1LFotNDgpOkcsJD1KPjAmJk51bWJlci5pc0Zpbml0ZShYKSYmWD4wP01hdGgubWF4KFg1LChKLXo2KSpYKTpHO3JldHVybiBNYXRoLm1pbihHLFEsJCl9dmFyIFExPXt0aXRsZUdyb3VwOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJiYXNlbGluZSIsZ2FwOjgsbWluV2lkdGg6MH0sdGl0bGU6e2ZvbnRTaXplOjExLGZvbnRXZWlnaHQ6NTAwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTUpIix3aGl0ZVNwYWNlOiJub3dyYXAifSxzdWJ0aXRsZTp7Zm9udFNpemU6MTEsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC4zOCkiLGZvbnRGYW1pbHk6InVpLW1vbm9zcGFjZSwgbW9ub3NwYWNlIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxoZWFkZXJBY3Rpb25zOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDo0LGZsZXhTaHJpbms6MH0saWNvbkJ1dHRvbjp7d2lkdGg6MjYsaGVpZ2h0OjI2LGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC42OCkiLGJvcmRlclJhZGl1czo1LGN1cnNvcjoicG9pbnRlciIscGFkZGluZzowfSx0YXJnZXRCYXI6e21pbkhlaWdodDozNixkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLHBhZGRpbmc6IjZweCA4cHgiLGJvcmRlckJvdHRvbToiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wOCkiLGZsZXhTaHJpbms6MH0sc2VsZWN0Ont3aWR0aDoiMTAwJSIsbWluV2lkdGg6MCxoZWlnaHQ6MjYsYmFja2dyb3VuZDoiIzFjMWMxZSIsY29sb3I6IiNlZWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikiLGJvcmRlclJhZGl1czo2LGZvbnRTaXplOjEyLHBhZGRpbmc6IjAgOHB4IixvdXRsaW5lOiJub25lIn0scGlja2VyV3JhcDp7cG9zaXRpb246InJlbGF0aXZlIix3aWR0aDoiMTAwJSIsbWluV2lkdGg6MH0scGlja2VyQnV0dG9uOnt3aWR0aDoiMTAwJSIsbWluV2lkdGg6MCxoZWlnaHQ6MjYsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIsZ2FwOjgsYmFja2dyb3VuZDoiIzFjMWMxZSIsY29sb3I6IiNlZWUiLGJvcmRlcjoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikiLGJvcmRlclJhZGl1czo2LGZvbnRTaXplOjEyLHBhZGRpbmc6IjAgOHB4IixjdXJzb3I6InBvaW50ZXIiLHRleHRBbGlnbjoibGVmdCJ9LHBpY2tlckxhYmVsOntvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAiLG1pbldpZHRoOjB9LHBpY2tlckxpc3Q6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiJjYWxjKDEwMCUgKyA0cHgpIixsZWZ0OjAsbWFyZ2luOjAscGFkZGluZzo0LGxpc3RTdHlsZToibm9uZSIsYmFja2dyb3VuZDoiIzFjMWMxZSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSIsYm9yZGVyUmFkaXVzOjgsYm94U2hhZG93OiIwIDhweCAyNHB4IHJnYmEoMCwwLDAsMC41KSIsbWluV2lkdGg6MjIwLG1heFdpZHRoOjM2MCxtYXhIZWlnaHQ6MzIwLG92ZXJmbG93WToiYXV0byIsekluZGV4OjUwfSxwaWNrZXJJdGVtOntkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLHBhZGRpbmc6IjNweCA4cHgiLGJvcmRlclJhZGl1czo0LGN1cnNvcjoicG9pbnRlciIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC44NSkiLGZvbnRTaXplOjEyLGxpbmVIZWlnaHQ6MS4zNX0scGlja2VySXRlbVNlbGVjdGVkOntiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDYpIn0scGlja2VySXRlbUhvdmVyZWQ6e2JhY2tncm91bmQ6InJnYmEoMTAsMTMyLDI1NSwwLjIyKSJ9LHBpY2tlckl0ZW1EaXNhYmxlZDp7b3BhY2l0eTowLjQsY3Vyc29yOiJub3QtYWxsb3dlZCIsZm9udFN0eWxlOiJpdGFsaWMifSxwaWNrZXJHcm91cDp7bGlzdFN0eWxlOiJub25lIixtYXJnaW46MCxwYWRkaW5nOjB9LHBpY2tlckdyb3VwSGVhZGVyOntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDo4LHBhZGRpbmc6IjRweCA2cHggMnB4Iixmb250U2l6ZToxMixmb250V2VpZ2h0OjYwMCxjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjkyKSJ9LHBpY2tlckdyb3VwSWNvbkltZzp7d2lkdGg6MTYsaGVpZ2h0OjE2LGJvcmRlclJhZGl1czozLGZsZXhTaHJpbms6MCxvYmplY3RGaXQ6ImNvdmVyIn0scGlja2VyR3JvdXBOYW1lOntvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxwaWNrZXJHcm91cExpc3Q6e2xpc3RTdHlsZToibm9uZSIsbWFyZ2luOjAscGFkZGluZzowLHBhZGRpbmdMZWZ0OjI2fSxwaWNrZXJJdGVtVGl0bGU6e2Rpc3BsYXk6ImJsb2NrIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxwaWNrZXJJdGVtVXJsOntkaXNwbGF5OiJibG9jayIsZm9udEZhbWlseToidWktbW9ub3NwYWNlLCBtb25vc3BhY2UiLGZvbnRTaXplOjEwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNDIpIixvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxlbXB0eVRhcmdldDp7Y29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC40OCkiLGZvbnRTaXplOjEyLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LGZyYW1lV3JhcDp7ZmxleDoxLG1pbkhlaWdodDowLGJhY2tncm91bmQ6IiNmZmYiLHBvc2l0aW9uOiJyZWxhdGl2ZSJ9LGlmcmFtZTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsYm9yZGVyOiJub25lIixkaXNwbGF5OiJibG9jayIsYmFja2dyb3VuZDoiI2ZmZiJ9LG1lc3NhZ2U6e2hlaWdodDoiMTAwJSIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixwYWRkaW5nOjI0LGJhY2tncm91bmQ6IiMxMTExMTMiLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNTgpIix0ZXh0QWxpZ246ImNlbnRlciIsZm9udFNpemU6MTN9fSxNMT17Ym9keTp7ZmxleDoxLG1pbkhlaWdodDowLG92ZXJmbG93WToiYXV0byIscGFkZGluZzoxNCxkaXNwbGF5OiJncmlkIixncmlkVGVtcGxhdGVDb2x1bW5zOiJyZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjAwcHgsIDFmcikpIixncmlkQXV0b1Jvd3M6Im1pbm1heCgzMDBweCwgYXV0bykiLGdhcDoxMixhbGlnbkNvbnRlbnQ6InN0YXJ0In0sZW1wdHk6e2dyaWRDb2x1bW46IjEgLyAtMSIsYmFja2dyb3VuZDoiIzFjMWMxZSIsYm9yZGVyOiIxcHggZGFzaGVkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKSIsYm9yZGVyUmFkaXVzOjEwLHBhZGRpbmc6MTYsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41KSIsZm9udFNpemU6MTIsdGV4dEFsaWduOiJjZW50ZXIifSxjYXBhY2l0eTp7ZGlzcGxheToiaW5saW5lLWZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjYscGFkZGluZzoiM3B4IDhweCIsYm9yZGVyUmFkaXVzOjk5OSxiYWNrZ3JvdW5kOiIjMTAxMDEwIixib3JkZXI6IjFweCBzb2xpZCAjMjIyIixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgbW9ub3NwYWNlIixmb250U2l6ZToxMSxjb2xvcjoiI2JiYiIsbGluZUhlaWdodDoxfSxjYXBhY2l0eURvdDp7d2lkdGg6NixoZWlnaHQ6Nixib3JkZXJSYWRpdXM6MyxmbGV4OiIwIDAgYXV0byJ9LGNhcGFjaXR5QmFyOnttYXJnaW5MZWZ0OjIsd2lkdGg6MjgsaGVpZ2h0OjMsYmFja2dyb3VuZDoiIzFjMWMxYyIsYm9yZGVyUmFkaXVzOjIsb3ZlcmZsb3c6ImhpZGRlbiIsZGlzcGxheToiaW5saW5lLWJsb2NrIn0sdGlsZTp7cG9zaXRpb246InJlbGF0aXZlIixkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGJhY2tncm91bmQ6IiMxMTEiLGJvcmRlclJhZGl1czoxMCxvdmVyZmxvdzoiaGlkZGVuIix0ZXh0RGVjb3JhdGlvbjoibm9uZSIsY29sb3I6ImluaGVyaXQiLGJvcmRlcjoiMXB4IHNvbGlkICMyYTJhMmEiLHRyYW5zaXRpb246ImJvcmRlci1jb2xvciAxMjBtcyJ9LHRpbGVQcmV2aWV3OntmbGV4OjEsbWluSGVpZ2h0OjAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixwYWRkaW5nOjgsYmFja2dyb3VuZDoiIzAwMCIscG9pbnRlckV2ZW50czoibm9uZSJ9LHRpbGVQbGFjZWhvbGRlcjp7ZmxleDoxLG1pbkhlaWdodDowLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIscGFkZGluZzoxMixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDoxMCxjb2xvcjoiIzg4OCIsZm9udFNpemU6MTIsdGV4dEFsaWduOiJjZW50ZXIifSx0aWxlRXJyb3I6e2NvbG9yOiIjZTY2Iixmb250U2l6ZToxMSxmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSJ9LHRpbGVTdGFydEJ0bjp7cGFkZGluZzoiNnB4IDEycHgiLGJvcmRlclJhZGl1czo2LGJvcmRlcjoiMXB4IHNvbGlkICMzMzMiLGZvbnRTaXplOjExLGZvbnRGYW1pbHk6InVpLW1vbm9zcGFjZSwgbW9ub3NwYWNlIn0sdGlsZUZvb3Rlcjp7cGFkZGluZzoiNnB4IDEwcHgiLGJvcmRlclRvcDoiMXB4IHNvbGlkICMyMjIiLGZvbnRTaXplOjExLGZvbnRGYW1pbHk6InVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBtb25vc3BhY2UiLGNvbG9yOiIjYmJiIixkaXNwbGF5OiJmbGV4IixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIsZ2FwOjh9LHRpbGVOYW1lOntvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAifSxzaHV0ZG93bkJ0bjp7cG9zaXRpb246ImFic29sdXRlIix0b3A6NixyaWdodDo2LHdpZHRoOjIyLGhlaWdodDoyMixib3JkZXJSYWRpdXM6MTEsYm9yZGVyOiIxcHggc29saWQgIzQ0NCIsYmFja2dyb3VuZDoicmdiYSgyMCwyMCwyMCwwLjg1KSIsY29sb3I6IiNjY2MiLGZvbnRTaXplOjEzLGxpbmVIZWlnaHQ6MSxjdXJzb3I6InBvaW50ZXIiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIscGFkZGluZzowLHpJbmRleDoyLHBvaW50ZXJFdmVudHM6ImF1dG8ifX0sQzU9e3JhaWw6e3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjEyLHJpZ2h0OjEyLGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjQscGFkZGluZzo0LGJhY2tncm91bmQ6InJnYmEoMjAsMjAsMjIsMC44KSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjEwLGJhY2tkcm9wRmlsdGVyOiJibHVyKDEycHgpIixXZWJraXRCYWNrZHJvcEZpbHRlcjoiYmx1cigxMnB4KSIsdHJhbnNpdGlvbjoib3BhY2l0eSAwLjE4cyBlYXNlIix6SW5kZXg6NDB9LGJ1dHRvbjp7d2lkdGg6MzAsaGVpZ2h0OjMwLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsYm9yZGVyUmFkaXVzOjYsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC43KSIsY3Vyc29yOiJwb2ludGVyIix0cmFuc2l0aW9uOiJiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGNvbG9yIDAuMTVzIGVhc2UifX0sYz17dG9nZ2xlOntwb3NpdGlvbjoiZml4ZWQiLHRvcDoxNixyaWdodDoxNix3aWR0aDozMCxoZWlnaHQ6MzAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixib3JkZXJSYWRpdXM6Nixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjYpIixjdXJzb3I6InBvaW50ZXIiLHRyYW5zaXRpb246ImJhY2tncm91bmQgMC4xNXMgZWFzZSwgY29sb3IgMC4xNXMgZWFzZSIsekluZGV4OjQwfSxib2R5OntwYWRkaW5nOjE0LG92ZXJmbG93WToiYXV0byIsZmxleDoxLGRpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsZ2FwOjEyfSxzZWN0aW9uVGl0bGU6e2ZvbnRTaXplOjExLGZvbnRXZWlnaHQ6NjAwLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNSkiLHRleHRUcmFuc2Zvcm06InVwcGVyY2FzZSIsbGV0dGVyU3BhY2luZzoiMC4wOGVtIixtYXJnaW46IjAgMCAxMHB4In0sc2VjdGlvbjp7YmFja2dyb3VuZDoiIzFjMWMxZSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjEwLHBhZGRpbmc6MTJ9LGVtcHR5OntiYWNrZ3JvdW5kOiIjMWMxYzFlIixib3JkZXI6IjFweCBkYXNoZWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEpIixib3JkZXJSYWRpdXM6MTAscGFkZGluZzoxNixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjUpIixmb250U2l6ZToxMix0ZXh0QWxpZ246ImNlbnRlciJ9LGFwcEhlYWRlcjp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6MTIsbWFyZ2luQm90dG9tOjEwfSxhcHBJY29uOnt3aWR0aDo0NCxoZWlnaHQ6NDQsYm9yZGVyUmFkaXVzOjEwLGZsZXhTaHJpbms6MCxvYmplY3RGaXQ6ImNvdmVyIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIn0sYXBwTmFtZTp7Zm9udFNpemU6MTQsZm9udFdlaWdodDo2MDAsb3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIn0sYXBwQnVuZGxlOntmb250U2l6ZToxMSxjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjUpIixmb250RmFtaWx5OiJ1aS1tb25vc3BhY2UsIG1vbm9zcGFjZSIsb3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIn0sc3Bpbm5lcjp7Y29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC40KSIsZm9udFdlaWdodDo0MDB9LGVycm9yOntiYWNrZ3JvdW5kOiJyZ2JhKDI0OCwxMTMsMTEzLDAuMDgpIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI0OCwxMTMsMTEzLDAuMikiLGNvbG9yOiIjZmNhNWE1Iixmb250U2l6ZToxMSxwYWRkaW5nOiI2cHggOHB4Iixib3JkZXJSYWRpdXM6NixtYXJnaW5Cb3R0b206MTB9LGRsOnttYXJnaW46MCxkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDo2fSxyb3c6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImJhc2VsaW5lIixnYXA6OCxtaW5XaWR0aDowfSxkdDp7bWFyZ2luOjAsZm9udFNpemU6MTEsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41KSIsd2lkdGg6ODQsZmxleFNocmluazowfSxkZDp7bWFyZ2luOjAsZm9udFNpemU6MTIsY29sb3I6IiNlZWUiLGZsZXg6MSxtaW5XaWR0aDowLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LHJvd0FjdGlvbldyYXA6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAscmlnaHQ6MCxib3R0b206MCxwYWRkaW5nTGVmdDoyOCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJmbGV4LWVuZCIsYmFja2dyb3VuZDoibGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI4LDI4LDMwLDApIDAlLCAjMWMxYzFlIDU1JSkiLHRyYW5zaXRpb246Im9wYWNpdHkgMC4xNXMgZWFzZSwgdHJhbnNmb3JtIDAuMTVzIGVhc2UifSxwZXJtc1RvZ2dsZTp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIsZ2FwOjYsYmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41KSIscGFkZGluZzowLG1hcmdpbjowLGN1cnNvcjoicG9pbnRlciIsd2lkdGg6IjEwMCUiLHRleHRBbGlnbjoibGVmdCIsbGluZUhlaWdodDoxfSxwZXJtc1Njcm9sbFdyYXA6e3Bvc2l0aW9uOiJyZWxhdGl2ZSIsbWFyZ2luVG9wOjh9LHBlcm1zU2Nyb2xsOnttYXhIZWlnaHQ6MjYwLG92ZXJmbG93WToiYXV0byIsZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixnYXA6NCxwYWRkaW5nOiI4cHggMCIsc2Nyb2xsYmFyV2lkdGg6InRoaW4ifSxwZXJtc0ZhZGVUb3A6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowLHJpZ2h0OjAsaGVpZ2h0OjE0LHBvaW50ZXJFdmVudHM6Im5vbmUiLGJhY2tncm91bmQ6ImxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMxYzFjMWUgMCUsIHJnYmEoMjgsMjgsMzAsMCkgMTAwJSkiLGJvcmRlclRvcExlZnRSYWRpdXM6MTAsYm9yZGVyVG9wUmlnaHRSYWRpdXM6MTB9LHBlcm1zRmFkZUJvdHRvbTp7cG9zaXRpb246ImFic29sdXRlIixib3R0b206MCxsZWZ0OjAscmlnaHQ6MCxoZWlnaHQ6MTQscG9pbnRlckV2ZW50czoibm9uZSIsYmFja2dyb3VuZDoibGluZWFyLWdyYWRpZW50KHRvIHRvcCwgIzFjMWMxZSAwJSwgcmdiYSgyOCwyOCwzMCwwKSAxMDAlKSJ9LHBlcm1zRm9vdGVyOntkaXNwbGF5OiJmbGV4IixqdXN0aWZ5Q29udGVudDoiZmxleC1lbmQiLHBhZGRpbmdUb3A6OH0scmVzZXRBbGxCdG46e2JhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjcpIixmb250U2l6ZToxMCxwYWRkaW5nOiIzcHggOHB4Iixib3JkZXJSYWRpdXM6NSxjdXJzb3I6InBvaW50ZXIiLHRleHRUcmFuc2Zvcm06InVwcGVyY2FzZSIsbGV0dGVyU3BhY2luZzoiMC4wNGVtIn0scGVybXNMaXN0OntkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDo0LG1hcmdpblRvcDo0fSxwZXJtUm93OntkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJzcGFjZS1iZXR3ZWVuIixnYXA6OCxwYWRkaW5nOiI0cHggMnB4In0scGVybUxhYmVsOntmb250U2l6ZToxMixjb2xvcjoiI2VlZSIsb3ZlcmZsb3c6ImhpZGRlbiIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyIsd2hpdGVTcGFjZToibm93cmFwIixmbGV4OjEsbWluV2lkdGg6MH0scGVybVNlZzp7ZGlzcGxheToiZmxleCIsZ2FwOjIsYmFja2dyb3VuZDoicmdiYSgyNTUsMjU1LDI1NSwwLjA0KSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsYm9yZGVyUmFkaXVzOjYscGFkZGluZzoyfSxwZXJtQnRuOnt3aWR0aDoyNCxoZWlnaHQ6MjIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixib3JkZXI6Im5vbmUiLGJvcmRlclJhZGl1czo0LGN1cnNvcjoicG9pbnRlciIscGFkZGluZzowLHRyYW5zaXRpb246ImJhY2tncm91bmQgMC4xMnMsIGNvbG9yIDAuMTJzIn0scm93QWN0aW9uOnt3aWR0aDoyMCxoZWlnaHQ6MjAsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixib3JkZXJSYWRpdXM6NCxjb2xvcjoiI2ZmZiIsY3Vyc29yOiJwb2ludGVyIixwYWRkaW5nOjB9fSxXMT17dGFyZ2V0czp7cG9zaXRpb246ImFic29sdXRlIixpbnNldDowLG92ZXJmbG93OiJoaWRkZW4iLHBvaW50ZXJFdmVudHM6Im5vbmUiLHpJbmRleDoxMH0sdGFyZ2V0Ontwb3NpdGlvbjoiYWJzb2x1dGUiLGJveFNpemluZzoiYm9yZGVyLWJveCIsbWluV2lkdGg6MSxtaW5IZWlnaHQ6MSxwYWRkaW5nOjAsYm9yZGVyOiIxcHggc29saWQgIzM0ZDM5OSIsYm9yZGVyUmFkaXVzOjMsY3Vyc29yOiJwb2ludGVyIixwb2ludGVyRXZlbnRzOiJhdXRvIn0scGFuZWxIZWFkZXI6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLGdhcDo4fSxvdmVybGF5VG9nZ2xlOntib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTIpIixib3JkZXJSYWRpdXM6NSxiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC43KSIsY3Vyc29yOiJwb2ludGVyIixmb250U2l6ZToxMCxwYWRkaW5nOiIzcHggN3B4In0sdG9vbGJhckJ1dHRvbkFjdGl2ZTp7YmFja2dyb3VuZDoicmdiYSgyNTUsMjU1LDI1NSwwLjA4KSIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC45NSkifSx0b29sYmFyQnV0dG9uQWN0aXZlSG92ZXI6e2JhY2tncm91bmQ6InJnYmEoMjU1LDI1NSwyNTUsMC4xMikifSxsaXN0OntkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGdhcDo0LG1hcmdpblRvcDo4LHBhZGRpbmc6IjhweCAwIixtYXhIZWlnaHQ6MjYwLG92ZXJmbG93WToiYXV0byIsc2Nyb2xsYmFyV2lkdGg6InRoaW4ifSxsaXN0SXRlbTp7ZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoic3BhY2UtYmV0d2VlbiIsZ2FwOjgsYm9yZGVyUmFkaXVzOjYscGFkZGluZzoiNHB4IDJweCIsbWluV2lkdGg6MH0sbGlzdEl0ZW1BY3RpdmU6e2JhY2tncm91bmQ6InJnYmEoMjU1LDI1NSwyNTUsMC4wNikifSxpdGVtVGV4dDp7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixnYXA6MixmbGV4OjEsbWluV2lkdGg6MH0saXRlbUxhYmVsOntvdmVyZmxvdzoiaGlkZGVuIix0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aGl0ZVNwYWNlOiJub3dyYXAiLGNvbG9yOiIjZWVlIixmb250U2l6ZToxMixmb250V2VpZ2h0OjUwMH0saXRlbU1ldGE6e292ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC40NSkiLGZvbnRGYW1pbHk6InVpLW1vbm9zcGFjZSwgbW9ub3NwYWNlIixmb250U2l6ZToxMH0saXRlbVNpemU6e2ZsZXhTaHJpbms6MCxiYWNrZ3JvdW5kOiJyZ2JhKDI1NSwyNTUsMjU1LDAuMDQpIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDgpIixib3JkZXJSYWRpdXM6Nixjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjU1KSIsZm9udEZhbWlseToidWktbW9ub3NwYWNlLCBtb25vc3BhY2UiLGZvbnRTaXplOjEwLHBhZGRpbmc6IjNweCA2cHgifX07bTMoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvb3QiKSkucmVuZGVyKHEoTDYse30pKTsKPC9zY3JpcHQ+CjwvYm9keT48L2h0bWw+","base64").toString("utf-8");return JZ}function M4(){try{let J=QJ("xcrun simctl list devices -j",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:3000}),Z=JSON.parse(J),$=[];for(let[Q,G]of Object.entries(Z.devices)){if(!/SimRuntime\.iOS-/i.test(Q))continue;for(let Y of G){if(Y.isAvailable===!1)continue;$.push({...Y,runtime:Q.replace(/^.*SimRuntime\./,"")})}}return $}catch{return[]}}var E4=1610612736;function T4(){try{let J=Number(QJ("sysctl -n hw.memsize",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim()),Z=Number(QJ("sysctl -n hw.pagesize",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim()),$=QJ("vm_stat",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}),Q=(Y)=>{let X=$.match(Y);return X?Number(X[1]):0},G=Q(/Pages free:\s+(\d+)/)+Q(/Pages inactive:\s+(\d+)/)+Q(/Pages speculative:\s+(\d+)/);return{totalBytes:Number.isFinite(J)?J:0,availableBytes:G*(Number.isFinite(Z)?Z:4096)}}catch{return{totalBytes:0,availableBytes:0}}}function B4(){try{let J=QJ("ps -axo rss=,args=",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:3000,maxBuffer:8388608}),Z={},$=0,Q=/\/Devices\/([0-9A-F-]{36})\//i;for(let G of J.split(`
39
- `)){let Y=G.trimStart();if(!Y)continue;let X=Q.exec(Y);if(!X)continue;let W=Number(Y.split(/\s+/,1)[0]);if(!Number.isFinite(W))continue;let z=W*1024,R=X[1].toUpperCase();Z[R]=(Z[R]??0)+z,$+=z}return{perUdid:Z,totalBytes:$}}catch{return{perUdid:{},totalBytes:0}}}function q4(){let{totalBytes:J,availableBytes:Z}=T4(),$=B4(),Q=Object.keys($.perUdid).length,G=Q>0?$.totalBytes/Q:0,Y=G>=268435456?"measured":"estimated",X=Y==="measured"?G:E4,W=X>0?Math.max(0,Math.floor(Z/X)):0;return{totalBytes:J,availableBytes:Z,runningSimulators:Q,perSimAvgBytes:X,perSimSource:Y,estimatedAdditional:W}}function x4(){if(process.argv[0]&&/(^|\/)serve-sim$/.test(process.argv[0]))return{command:process.argv[0],baseArgs:[]};if(process.argv[1]&&/(^|\/)serve-sim\.js$/.test(process.argv[1]))return{command:process.argv[0],baseArgs:[process.argv[1]]};try{let J=QJ("command -v serve-sim",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim();if(J)return{command:J,baseArgs:[]}}catch{}return null}function o4(J){let Z=(J?.basePath??"/.sim").replace(/\/+$/,"");return($,Q,G)=>{let Y=$.url??"",X=Y.indexOf("?"),W=X===-1?Y:Y.slice(0,X),z=R4(Y)??J?.device??null,R=Z==="/"?"/devtools-frontend":`${Z}/devtools-frontend`;if(W===R||W.startsWith(`${R}/`)){(async()=>{let _=W===R?"inspector.html":W.slice(R.length+1);if(_.split("/").some((H)=>H==="..")){Q.writeHead(400,{"Content-Type":"text/plain; charset=utf-8"}),Q.end("Invalid asset path");return}try{let H=await fetch(`https://chrome-devtools-frontend.appspot.com/serve_rev/@${F4}/${_}${X===-1?"":Y.slice(X)}`),A={"Cache-Control":"public, max-age=604800"},E=H.headers.get("content-type");if(E)A["Content-Type"]=E;Q.writeHead(H.status,A),Q.end(Buffer.from(await H.arrayBuffer()))}catch(H){Q.writeHead(502,{"Content-Type":"text/plain; charset=utf-8"}),Q.end(H instanceof Error?H.message:"Failed to load DevTools frontend")}})();return}if(W===Z||W===Z+"/"){let _=$J(),H=WJ(_,z),A=A4();if(H){let E=(Z===""?"":Z)+"/grid/api",B=`<script>window.__SIM_PREVIEW__=${JSON.stringify({...H,basePath:Z,logsEndpoint:TJ(Z,"/logs",H.device),appStateEndpoint:TJ(Z,"/appstate",H.device),axEndpoint:TJ(Z,"/ax",H.device),devtoolsEndpoint:TJ(Z,"/devtools",H.device),gridApiEndpoint:E,gridStartEndpoint:E+"/start",gridShutdownEndpoint:E+"/shutdown",gridMemoryEndpoint:E+"/memory",previewEndpoint:Z===""?"/":Z})}</script>`;A=A.replace("<!--__SIM_PREVIEW_CONFIG__-->",B)}Q.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store"}),Q.end(A);return}if(W===Z+"/grid/api/memory"){Q.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify(q4()));return}if(W===Z+"/grid/api"){let _=$J(),H=new Map(_.map((P)=>[P.device,P])),E=M4().map((P)=>{let C=H.get(P.udid);return{device:P.udid,name:P.name,runtime:P.runtime,state:P.state,helper:C?{port:C.port,url:C.url,streamUrl:C.streamUrl,wsUrl:C.wsUrl}:null}}),M=(P)=>{if(/iphone/i.test(P))return 0;if(/ipad/i.test(P))return 1;if(/watch/i.test(P))return 2;if(/(apple\s*tv|^tv\b)/i.test(P))return 3;if(/vision|reality/i.test(P))return 4;return 5},B=(P)=>P.helper?0:P.state==="Booted"?1:2;E.sort((P,C)=>M(P.name)-M(C.name)||B(P)-B(C)||P.name.localeCompare(C.name)),Q.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify({devices:E}));return}if(W===Z+"/grid/api/shutdown"&&$.method==="POST"){let _="";$.on("data",(H)=>{_+=typeof H==="string"?H:H.toString()}),$.on("end",()=>{let H="";try{H=JSON.parse(_).udid??""}catch{}if(!/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(H)){Q.writeHead(400,{"Content-Type":"application/json"}),Q.end(JSON.stringify({ok:!1,error:"Invalid or missing udid"}));return}LJ={at:0,booted:null},eZ("xcrun",["simctl","shutdown",H],{timeout:30000},(A,E,M)=>{if(A){Q.writeHead(500,{"Content-Type":"application/json"}),Q.end(JSON.stringify({ok:!1,error:M?.toString().trim()||A.message}));return}Q.writeHead(200,{"Content-Type":"application/json"}),Q.end(JSON.stringify({ok:!0}))})});return}if(W===Z+"/grid/api/start"&&$.method==="POST"){let _="";$.on("data",(H)=>{_+=typeof H==="string"?H:H.toString()}),$.on("end",()=>{let H="";try{H=JSON.parse(_).udid??""}catch{}if(!/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(H)){Q.writeHead(400,{"Content-Type":"application/json"}),Q.end(JSON.stringify({ok:!1,error:"Invalid or missing udid"}));return}let A=x4();if(!A){Q.writeHead(500,{"Content-Type":"application/json"}),Q.end(JSON.stringify({ok:!1,error:"serve-sim CLI not found in PATH. Install it (npm i -g serve-sim) and retry."}));return}let E=sJ(A.command,[...A.baseArgs,"--detach",H],{stdio:["ignore","pipe","pipe"],detached:!1}),M="",B="";E.stdout?.on("data",(C)=>{M+=C.toString()}),E.stderr?.on("data",(C)=>{B+=C.toString()});let P=setTimeout(()=>{try{E.kill("SIGTERM")}catch{}},180000);E.on("close",(C)=>{if(clearTimeout(P),C===0)Q.writeHead(200,{"Content-Type":"application/json"}),Q.end(JSON.stringify({ok:!0,stdout:M.trim()}));else Q.writeHead(500,{"Content-Type":"application/json"}),Q.end(JSON.stringify({ok:!1,error:B.trim()||M.trim()||`serve-sim exited with code ${C}`}))})});return}if(W===Z+"/devtools"){(async()=>{let _=$J();if(!WJ(_,z)){Q.writeHead(404,{"Content-Type":"application/json"}),Q.end(JSON.stringify({error:"No serve-sim device"}));return}try{let A=await eJ(),E=await A.listTargets(),M=j4($.headers?.host,A.port),B=E.map((P)=>({...P,webSocketDebuggerUrl:`ws://${M}/devtools/page/${encodeURIComponent(P.id)}`,devtoolsFrontendUrl:C4(R,M,P.id)}));Q.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify({port:A.port,targets:B}))}catch(A){Q.writeHead(500,{"Content-Type":"application/json"}),Q.end(JSON.stringify({error:A instanceof Error?A.message:"Failed to start inspect-webkit"}))}})();return}if(W===Z+"/devtools/release"&&$.method==="POST"){let _="";$.on("data",(H)=>_+=H),$.on("end",async()=>{try{let H=_?JSON.parse(_):{};(await eJ()).releaseHighlight?.(H.targetId),Q.writeHead(200,{"Content-Type":"application/json"}),Q.end("{}")}catch(H){Q.writeHead(500,{"Content-Type":"application/json"}),Q.end(JSON.stringify({error:H instanceof Error?H.message:"Failed to release"}))}});return}if(W===Z+"/devtools/highlight"&&$.method==="POST"){let _="";$.on("data",(H)=>_+=H),$.on("end",async()=>{try{let{targetId:H,on:A}=JSON.parse(_||"{}");if(!H){Q.writeHead(400,{"Content-Type":"application/json"}),Q.end(JSON.stringify({error:"Missing targetId"}));return}let E=await eJ();if(!E.highlightTarget){Q.writeHead(501,{"Content-Type":"application/json"}),Q.end(JSON.stringify({error:"highlightTarget not supported by inspect-webkit"}));return}await E.highlightTarget(H,!!A),Q.writeHead(200,{"Content-Type":"application/json"}),Q.end("{}")}catch(H){Q.writeHead(500,{"Content-Type":"application/json"}),Q.end(JSON.stringify({error:H instanceof Error?H.message:"Failed to highlight target"}))}});return}if(W===Z+"/api"){let _=$J(),H=WJ(_,z);Q.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),Q.end(JSON.stringify(H||null));return}if(W===Z+"/ax"){let _=$J(),H=WJ(_,z);if(!H){Q.writeHead(404),Q.end("No serve-sim device");return}Q.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),Q.write(`:
38
+ `}function MZ({port:J}){let Q=new Set,Z=null,$=null,G=IJ,Y=!1,X=J,W=()=>{if(Q.size===0||Z)return;Z=setTimeout(z,G)},z=async()=>{if(Z=null,Y||Q.size===0){W();return}Y=!0;try{let R=await jZ(X),_=AZ(R);if(_!==$){for(let H of Q)H.write(_);G=IJ}else G=Math.min(G*2,UZ);if($=_,_Z(R))G=NZ}finally{Y=!1,W()}};return{setPort(R){if(R===X)return;if(X=R,$=null,G=IJ,Z)clearTimeout(Z),Z=null;z()},addClient(R){if(Q.add(R),$)R.write($);return z(),()=>{if(Q.delete(R),Q.size===0&&Z)clearTimeout(Z),Z=null}}}}function UQ(){let J=new Map;return{get(Q,Z){let $=J.get(Q);if($)return $.setPort(Z),$;let G=MZ({port:Z});return J.set(Q,G),G}}}var aQ=QQ(H2(),"serve-sim"),F2="854a02be78c7ffea104cb523636efa991bef5c5b",EJ=9222,D2=UQ(),QJ=null,U2=new Set(["host.exp.Exponent","dev.expo.Exponent"]),N2=["Frameworks/React.framework","Frameworks/hermes.framework","Frameworks/Hermes.framework","Frameworks/ExpoModulesCore.framework","main.jsbundle"],O2=/(WidgetRenderer|ExtensionHost|\.extension(\.|$)|Service|PlaceholderApp|InCallService|CallUI|InCallUI|com\.apple\.Preferences\.Cellular|com\.apple\.purplebuddy|com\.apple\.chrono|com\.apple\.shuttle|com\.apple\.usernotificationsui)/i;function oQ(J){return!O2.test(J)}function P2(J){let Q=/\[app<([^>]+)>:(\d+)\] Setting process visibility to: Foreground/.exec(J);if(!Q)return null;return{bundleId:Q[1],pid:parseInt(Q[2],10)}}function rQ(J,Q){if(U2.has(Q))return Promise.resolve(!0);return new Promise((Z)=>{eQ("xcrun",["simctl","get_app_container",J,Q,"app"],{timeout:2000},($,G)=>{if($)return Z(!1);let Y=G.trim();if(!Y)return Z(!1);for(let X of N2)if(z2(QQ(Y,X)))return Z(!0);Z(!1)})})}function tQ(J){return J.trim().replace(/\s+/g," ").toLowerCase()}function a2(J,Q){let Z=tQ(Q);if(!Z)return null;for(let[$,G]of Object.entries(J))if([G.CFBundleDisplayName,G.CFBundleName,G.CFBundleExecutable].filter((X)=>typeof X==="string").some((X)=>tQ(X)===Z))return G.CFBundleIdentifier||$;return null}var LJ={at:0,booted:null};function L2(){let J=Date.now();if(LJ.booted&&J-LJ.at<1500)return LJ.booted;try{let Q=$J("xcrun simctl list devices booted -j",{encoding:"utf-8",stdio:["ignore","pipe","pipe"],timeout:3000}),Z=JSON.parse(Q),$=new Set;for(let G of Object.values(Z.devices))for(let Y of G)if(Y.state==="Booted")$.add(Y.udid);return LJ={at:J,booted:$},$}catch{return null}}function ZJ(){let J;try{J=X2(aQ).filter(($)=>$.startsWith("server-")&&$.endsWith(".json"))}catch{return[]}let Q=L2(),Z=[];for(let $ of J){let G=QQ(aQ,$);try{let Y=JSON.parse(V2(G,"utf-8"));try{process.kill(Y.pid,0)}catch{try{mQ(G)}catch{}continue}if(Q&&!Q.has(Y.device)){try{process.kill(Y.pid,"SIGTERM")}catch{}try{mQ(G)}catch{}continue}Z.push(Y)}catch{}}return Z}function WJ(J,Q){if(Q)return J.find((Z)=>Z.device===Q)??null;return J[0]??null}function R2(J){let Q=J.indexOf("?");if(Q===-1)return null;return new URLSearchParams(J.slice(Q+1)).get("device")}function BJ(J,Q,Z){return`${`${J}${Q}`}?device=${encodeURIComponent(Z)}`}async function _2(J){return new Promise((Q)=>{let Z=K2();Z.once("error",()=>Q(!1)),Z.once("listening",()=>Z.close(()=>Q(!0))),Z.listen(J,"127.0.0.1")})}async function sQ(J){let Q=`http://127.0.0.1:${J}`;try{let Z=await fetch(`${Q}/json/version`);if(!Z.ok)return null;if((await Z.json()).Browser!=="Safari/inspect-webkit")return null;return{port:J,cdpUrl:Q,async listTargets(){return(await(await fetch(`${Q}/json/list`)).json()).filter((X)=>X.id.startsWith("sim:")).map((X)=>{let z=X.id.split(":")[1],R=X.description?.match(/\(([^)]+)\)/)?.[1];return{id:X.id,title:X.title||X.url||"Untitled",url:/^https?:/i.test(X.url)?X.url:"about:blank",type:X.type||"page",udid:z,bundleId:R}})}}}catch{return null}}async function eJ(){if(QJ)try{return await(await QJ).listTargets(),QJ}catch{QJ=null}return QJ=(async()=>{let{startCdpServer:J}=await Promise.resolve().then(() => (nQ(),gQ));for(let Q=EJ;Q<EJ+50;Q++){if(!await _2(Q)){let Z=await sQ(Q);if(Z)return Z;continue}try{let Z=await J({host:"127.0.0.1",port:Q});return{port:Q,cdpUrl:`http://127.0.0.1:${Q}`,async listTargets(){return Z.getTargets().filter(($)=>$.source?.kind==="simulator").map(($)=>{let G=$.url??"";return{id:$.targetId,title:$.title||$.appName||G||"Untitled",url:/^https?:/i.test(G)?G:"about:blank",type:$.type||"page",appName:$.appName,bundleId:$.bundleId,udid:$.source?.id,inUseByOtherInspector:!!$.inUseByOtherInspector}})},highlightTarget:Z.highlightTarget?.bind(Z),releaseHighlight:Z.releaseHighlight?.bind(Z)}}catch(Z){if(Z?.code==="EADDRINUSE"){let $=await sQ(Q);if($)return $;continue}throw Z}}throw Error(`No available inspect-webkit port found in ${EJ}-${EJ+49}`)})().catch((J)=>{throw QJ=null,J}),QJ}function C2(J,Q,Z){let $=new URL(`${J}/inspector.html`,"http://serve-sim.local");return $.searchParams.set("ws",`${Q}/devtools/page/${Z}`),`${$.pathname}${$.search}`}function j2(J,Q){return`127.0.0.1:${Q}`}var JQ=null;function A2(){if(!JQ)JQ=Buffer.from("PCFkb2N0eXBlIGh0bWw+CjxodG1sPjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj4KPHRpdGxlPlNpbXVsYXRvciBQcmV2aWV3PC90aXRsZT4KPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImRhdGE6aW1hZ2UveC1pY29uO2Jhc2U2NCxBQUFCQUFVQUVCQUFBQUVBSUFBNEJnQUFWZ0FBQUNBZ0FBQUJBQ0FBUEFvQUFJNEdBQUF3TUFBQUFRQWdBS0VQQUFES0VBQUFnSUFBQUFFQUlBQ2NPQUFBYXlBQUFBQUFBQUFCQUNBQS9wb0FBQWRaQUFDSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQUVBQUFBQkFJQmdBQUFCL3ovMkVBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUFRb0FNQUJBQUFBQUVBQUFBUUFBQUFBT2JZeVZNQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUFvSkpSRUZVT0JHbFVzOXJFMEVVL21abWs5MU5paVd4MHRvcVZSRHhvQ0NtSUhnVVdpaWV2UFRrU2NHVENJSUhFUS8xRC9BaWluK0NKdzhxZUZERVMrMUZnZ0VWV3l5MDBDYllObW1iNXNkbXM3c3pmck90cGZjK2RuYmY3SHZ2ZTkvN1pvQWptamhjYndEMWJIZTNVRzA2N2tZdkVBR0RXMTB1T2x1ZWIzUWNoN1dKWS9YRE5RY0FkNVo2NTc1MW5PZk5VSlFTcmQxWUE0WlJUZFNFdnJhWlVvWUNwdXlZK1A3bU5XL0pBcVVBNXN1c2M4bC85R0ZGdUpNNk1QeHBZRmdvNUY1QzZqUFRScVRIMVEwL05UZmZUV05tSm5Fc3l0UGlyV0tyTGt2OVVHT2lZSEJqUkNLeDg2UkZUS0NmSWRqbkRZMjVob0FqWkduWXVYSjhIZGhJQVdvdDRTVmRPQ01zbUM0S1hQVU5hcDBFemI2QXNCeEp3WFVraGpnS3V1U2g0S2kyOExoREN0Q2pTSjFkNE1GRmdTZm5iUVV3VjR2d2FqbUJiMXNUd0ZFSzFSYjlEdU1xVFVsZktVRFE0Nnc5ZHJFZGFGYkFJVTlpY2xTZzZOdHNnNGdxanUwQXl3Mmd6WHpFTm5PZndmWTJ2YTVBMUdlRHlLVEtEeWlEVTVrRWl0MnRpRW9LVEExTHhLSEV5N0pCUWZ1b0hRYXc2b2NjcGRIUkZFeGd2YVh4ZlMyQ2w3RWtMU2hucHlBNnpNTHRhM2dwOS84YWtBSGxRa0lHOVRibmxScTFIWU9mVmY1WDdNcVI4bVJqcmRyV2tJSEE2QW1nekgySzArMTNRektPRjFZTnlqbnlaY2NmYXhxVkZRZDFKc2QyL2tGN2ZCcXJUWWxjRnZGQTBBZ3RZQW93UHYrbThhZjBzUEoxTVg5OS9oYzdFU05Lc2xEc3pnZVMreW9QM2ZCcUtsY2luM1FxTjBkLzExOFRZTy9NNkp5NXUzZ2g5c2RlUUdRdUcyTmNLNXk5QTVRai9UcEVVWTRNZlJWVnhnYzI3NzEvZkhiQk1qZ0FzQnVhT0gzNzQwa0Izek1KYnhITmRZRkJya0krYTNKZTBIczdPL1dYZ2YwRHR4bEh0SDg0aWhRSmZTYXpqUUFBQUFCSlJVNUVya0pnZ29sUVRrY05DaG9LQUFBQURVbElSRklBQUFBZ0FBQUFJQWdHQUFBQWMzcDY5QUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFnWTBoU1RRQUFlaVlBQUlDRUFBRDZBQUFBZ09nQUFIVXdBQURxWUFBQU9wZ0FBQmR3bkxwUlBBQUFBSGhsV0VsbVRVMEFLZ0FBQUFnQUJBRWFBQVVBQUFBQkFBQUFQZ0ViQUFVQUFBQUJBQUFBUmdFb0FBTUFBQUFCQUFJQUFJZHBBQVFBQUFBQkFBQUFUZ0FBQUFBQUFBQ1FBQUFBQVFBQUFKQUFBQUFCQUFPZ0FRQURBQUFBQVFBQkFBQ2dBZ0FFQUFBQUFRQUFBQ0NnQXdBRUFBQUFBUUFBQUNBQUFBQUFmZ3ZhVWdBQUFBbHdTRmx6QUFBV0pRQUFGaVVCU1ZJazhBQUFBcHhwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJbGhOVUNCRGIzSmxJRFl1TUM0d0lqNEtJQ0FnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0S0lDQWdJQ0FnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJS0lDQWdJQ0FnSUNBZ0lDQWdlRzFzYm5NNmRHbG1aajBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5MGFXWm1MekV1TUM4aUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9tVjRhV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdlpYaHBaaTh4TGpBdklqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNldGSmxjMjlzZFhScGIyNCtNVFEwUEM5MGFXWm1PbGhTWlhOdmJIVjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0eE5EUThMM1JwWm1ZNldWSmxjMjlzZFhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGpJOEwzUnBabVk2VW1WemIyeDFkR2x2YmxWdWFYUStDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0eU5UWThMMlY0YVdZNlVHbDRaV3haUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtNalUyUEM5bGVHbG1PbEJwZUdWc1dFUnBiV1Z1YzJsdmJqNEtJQ0FnSUNBZ0lDQWdQR1Y0YVdZNlEyOXNiM0pUY0dGalpUNHhQQzlsZUdsbU9rTnZiRzl5VTNCaFkyVStDaUFnSUNBZ0lEd3ZjbVJtT2tSbGMyTnlhWEIwYVc5dVBnb2dJQ0E4TDNKa1pqcFNSRVkrQ2p3dmVEcDRiWEJ0WlhSaFBncnAvc2x4QUFBR2hrbEVRVlJZQ2UxV3pZOFVSUlIvVlYwOTNiUExmbVVYa0JESTdvVUVSU1ZySUFvbTNreU1GeEtQbmpRbXhJTlhUTlNMQ1RHR2kvNEZHaE1UalViQ3djQkJFMDFBQ0pKZEVrRUlBbUVGQVlGZGxtVm1kcVkvcXN2ZnIyYUc2VmtXcm5yd0pkWFZYZjNxdmQvN3JCTDVuLzVsRDZoSDZYZUgzNGtPN056LzdKKzE0TWtrTUJPdFhFVlpManJIaHJ3UVNUQUtMWkppWGs0eFk3MkZueTE4NXdxL2pFdXlMSjgzeXA1YlAvdjE2Wm05ZTdQVmRLMEs0T1ByQzd1T0xvOGN1RnhUTDlSRmF4ZEFxSVZDMXhiaE9yUEdPbDh0RkhQdURnV3BBZmRBcGJKRllZdzdVY21XOXQzWU5YNThKWWlIQU95ZnU3WHJjR1BpK3pNMVBXWmJWclJ5WW93U2E1MTBGVk1JTndhQjhrb0wvQ3RURzRDU1BPZTZFaFVGWXFSWXJOcDdyMTdmUFg2aXpBc245dWo0OFcrcXgycWpuL3kycE1lS0p2eE5qWEFwaDFzeENueHpjTDM3WHA1Ny9FNG9LeTMwV0t0WTgrbms1ei9GUFkwQ1lDVTZNanc5UFZjek8yemRDb3p6NURFQVIwQXNaUmZncjBlUGRkZU5UVWVXeGw0UERLSGh1eWZFMElabVI3cDJhaHJmRDBMUkIrQjJNdkpVM1dxbEVUenVnM0V5Q0k0M3BnSlpXMEdzb2F4TWREVnBCUzRQL2o1eTVvdUx1ZHhwQWJ6blF3aE5xS3dNYnNPVzFRRWtFa3dnNUZLQlpPNWh0bThjVURLOVJvbEdtaGY4U2VMa2hmS0JqODdFWDN6bnA0NlVURldWTERTZGhCMDNjREk2bVBCOG5VZWZCNUxNUlRrUUYwazc0UnJJNGlZc24yOWlEUW1KaFBiV2hqQ0pTbFRIQlc2RkN6UTBtVEFRQ3psRkM2T3JCVEd6cVlzZUNjQW15RHRhbWlvWlFORGYzNmJsdVhFbG13ZGhwNFZLcCtWR3M1Q2pONEVNTmFpN0FPaUZMZ2lzYWEwbFJQd3RLeC9ERllTTEdhVXAyWU9zOEd0ZGJQNGp4eVp1eU9DRkZ6Y3AyYmVWTzdyVUxwZ3RJNEdjdXRHU0t6V1J5TFQvdHozUUNRL1kwVGtrcXNCeXlGSWNUQ2FRZ2piZnlkcWYvdGtQQU5ZckQ4SUp3dTZKWWt2R2VkZmZiMXE1ZGs5SlhFRWY4TVo3cnZZR2NMQUpEY1RPTnlqS1V4MEJCQ09VWDZLSEFEZ3dPVEFWSFVZbVlqZkdqQzB6T29TYnA0WUQyWXhSRGZrTkpSZ1d2QWxLcFo0cHVZY21WRUY1SnVqTkJvM0kyME9aandVQUFheDM0eEJIV2daKzlucGZqNUJBaDdQOXZyWWxGcVZEcVJpRUJkYVJyMHhNVHFiTUs1TmF2anlYeTZHTERsN1JYbVpBZVNYcTgwREtFTUFEUGs2bzR4U1NVeUNtQjJrNXJTUTFtNW5VWUtHQjBCNkJpVWpBUkFBQnZEV0VaSHo3NlJCblFpYUhMcUFER0NQbWNRQmFLTGNjSUh6NUFFZ0NFQzBvWWd4cExFUEFwcmVFSEZoTTRQcE9FaEtFMTkxQlF3RGtSZW5BWTRIc1hxL2x5TytaV0NSMzNER2l3OXJmaXJNVkh1RHgyc3djV2k3aUNkZnpZS0psTmRUMjNXV3NoVlJib2c0S2YwUUJSQUcwRG51Y0NtVVFNVjJHVVRINlNwbjZRd0NFTklWaEFIaHBZVjVHSENqUUFvQkRnMWRJZ29WNklUZFJobkVGYnVsYTVMSDA1d09UVXBFRmZpOGdCMmtqbGNjQmFBRUFlbzNQVkFMZ1JhTU9hMkdMWklCcWVRT0JSYmRyVHY1YUxDU09BQWdhWXJpSDNiR1pXa2t6NnpGMW9SakVqaTI4VmtkcGpnQkEyWHk4OTNrQTVWY3d5d01vWi9Ob0FuVUQ3WlE1a0VCQmhud2d3SVdHa3IrWGxBd1BCakkrRk1yY2dwVmJPSDIyYlF4eFlBV3lXSWNndUI5UmtBMWpSazVmemFTQUM1bUFsUlZIWng4QVpWM0taQXRRaGdWQXBMaGJKYWhwRnFCR2ZjTTRDYkREd0pjREZXUTAwSjY4bE1rZmQranFRSzdNRjdKOW84akVtb3Evd0xCSXpsN0w1ZHgxSllNUitCR21XTEhaOTZnUFFOWklGM0ljRlJxSk4zT3BrRk9iUkVaeGZTZ0FpRVJ3cDY4bTh0MnZLZTk5MGtTWHltQnhCZVdtd0pQZzVEdDJvWkNoS0lkQ1ZFc2psM3JLRUJsVUZnV3d4TzI4RjlaNTlBR1F4dng1SmVza3dPRnhGeTcrOEdDS294U1hFNWhpa1ZIc2lHZ0JLSzBCOUFERVBkU0MyNXEzbG9IbkdSbXBRTmhQVVBwWUQzQ280UWRjWDBCbWpNUWFjcmZPbHdIQXBoNDF6aHljTVhsckZvZXBCMkVrUkNoaW5HWVJSZ3doVmFtYUt0eklob0phNzdaV3psRFlIVnpuL3dEdHNIMjJJSFRZc3pacXpZN09INXp0YVdSd1M3UTg5M002dm5YUFpSMnQyNFBhalhnRkFuNWYrN1FDeWV5SDd6cDQ1M0hNTlY2L3V2ODRrOWlNZUo0NHRuVVR5dWJSN1A1a2NPYXR6ejU0L1VLYm8vMmsvSWRvNnMxZlhpNUduL2tJaFRhTkM3NEtFU2hleTltU3k4UlRqd0o4dldObTF2T2J0YzhtU1dDeHp0MjY0V1RtQ1RuNzNsZnZQdjlEZVQvZlZ3WEFINk9UMjBlSFhqcXdVOFVidG9hVjZnVEtDeFZFMFQzU0FNYkVSQ3BJekZNUjMreE5KblFGY2ljMXJqay9ZRytmVjhmMm5mejJ4NW1sM3M3LzMvNURIdmdIYWtRU1dLMGpJVXdBQUFBQVNVVk9SSzVDWUlLSlVFNUhEUW9hQ2dBQUFBMUpTRVJTQUFBQU1BQUFBREFJQmdBQUFGY0MrWWNBQUFBRVowRk5RUUFBc1k4TC9HRUZBQUFBSUdOSVVrMEFBSG9tQUFDQWhBQUErZ0FBQUlEb0FBQjFNQUFBNm1BQUFEcVlBQUFYY0p5NlVUd0FBQUI0WlZoSlprMU5BQ29BQUFBSUFBUUJHZ0FGQUFBQUFRQUFBRDRCR3dBRkFBQUFBUUFBQUVZQktBQURBQUFBQVFBQ0FBQ0hhUUFFQUFBQUFRQUFBRTRBQUFBQUFBQUFrQUFBQUFFQUFBQ1FBQUFBQVFBRG9BRUFBd0FBQUFFQUFRQUFvQUlBQkFBQUFBRUFBQUF3b0FNQUJBQUFBQUVBQUFBd0FBQUFBQW02MUswQUFBQUpjRWhaY3dBQUZpVUFBQllsQVVsU0pQQUFBQUtjYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pZVFZBZ1EyOXlaU0EyTGpBdU1DSStDaUFnSUR4eVpHWTZVa1JHSUhodGJHNXpPbkprWmowaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1UazVPUzh3TWk4eU1pMXlaR1l0YzNsdWRHRjRMVzV6SXlJK0NpQWdJQ0FnSUR4eVpHWTZSR1Z6WTNKcGNIUnBiMjRnY21SbU9tRmliM1YwUFNJaUNpQWdJQ0FnSUNBZ0lDQWdJSGh0Ykc1ek9uUnBabVk5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmRHbG1aaTh4TGpBdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cGxlR2xtUFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwyVjRhV1l2TVM0d0x5SStDaUFnSUNBZ0lDQWdJRHgwYVdabU9saFNaWE52YkhWMGFXOXVQakUwTkR3dmRHbG1aanBZVW1WemIyeDFkR2x2Ymo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V1ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9sbFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFNaWE52YkhWMGFXOXVWVzVwZEQ0eVBDOTBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQakkxTmp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQThMM0prWmpwRVpYTmpjbWx3ZEdsdmJqNEtJQ0FnUEM5eVpHWTZVa1JHUGdvOEwzZzZlRzF3YldWMFlUNEs2ZjdKY1FBQUMrdEpSRUZVYUFYdFdWMklIV2NaZnIvNVBidG5mMDIyS1UzU2xqYjlTUk1DcFdCU1c5QkFiU0V0MUp2Y0ZoUzhLSUpDUVJTdDRJVUI5Y0tmNG9XVW9ONUpJc1ZDSU1YRzJpYUlwaWxwU2tvYTA2aHBaZFBkVFRiWjdPNDVlMmJtekkvUDg4NlozZGt6czBrS3hSdnpuWjJaYjc2ZjkzdWY5L2Y3WmtWdWxWc1MrUCtXZ1BtMDhETVJJd2YzdWxPUFArY3NMSXpiMTJ6SExNNHZtcmtTSWRhWDMxRXAzb3MyZmNmTkdSck9yblhqYk1pYVMrVFFvZTdKbDEvdWxzamNWUFdtQUV4UC82bDV3SC8waVU5Q2IvZHNhTGEyWXVzMnNhMkJvQ3RPa29vRlVCTGp5bEJKV2NjelJzWFllUjNqSkVFYnIyN3Z3anl0NHpYMVBZbURJTzJJbFY2eVRIYld5YUkzbzdOLy8vUE1jMCsxYjRUaWhnQitkZW5xbmxQUjZJL2VYN0Flbm81RVdpR1lTa1JjVHlRTXJrL2VjZkwrbU9oUTFsck1iNEFXYUJzckIyMWpvR1BTVTE1My9zWEpYWjg3bk0rdXY2OUZVMGYvZE9yYTgyKzJSMzV4L0lyeGdrNHNvQzhHTXpqSjk0MkVJZVIzbmVJNE9mbVlLcmxPcWFObGZFZGNxS0tSdEw5MWNlZndyOWVhVHA1cXk4OC9tbnI2TDYyUlh4NmRFcThMNXNtTDFXTytkc0puM0ppRnNVUWQ4UUtyK2RLbW81ZjJyRVcrRnNEQkl3ZEhUeWZyZm54ODFyaUc5Z0lCWnJEWlQzT2xuM0o4TFcyc0hYV05HN2xqUDlueTB1R1JPaEMxQVA2MStRdFBubGx5dHdldFdBd1lVYy9zZnhMWFozalZya0VoTE1VU0czZDc1NzRkVDlVQjZMblo2cTdMMXZEdTZTVVJHd1JNamZreXdsaVk2VU0xakR5MUJlYm05UG9zVldIdEtQVXBOelhTUVhpaTh4bzZXVjlKS0NodmVEZWEvOURYSlJVQWU4SDN0Y2g5c0EwQUt2MitHVEU0M2psaHlkTjMyc0pmdWhZQXpDdDRXUk5rYWN6eHkwWmUrMDlNcUJVUUdTSlVJdDRENkVKZ1JyVlVLZ0MyN2QwMmNMWnJKbUxFYnF1UE94Skh4Sk05bXl4NWdER2VraWtSNjY4V3NyelJHQWFINWpwTFRrNkpUSGN5Y2NobXVUQzlHVE94WWNlT3hzenAwNnR5UXdXQWJOdmxHY2RxZVBRT1o3V0xLQUJ0TXJJRXFTQ0pxZ25oWGw1TzY0YkJ0b1RnZW1NY0lHQ1NhMkk5RHh5NXRLVnlBU0RmTmdPeS9URlBiZ1RBODI2emc0NDRJVTJJNmJKVXVuaE5RQ3pvV3RMS2pBSkllbU80SkNXNVV2QlN2Q3UrS2tpT05aYWxERE9sUkFHaUR0Yk43TldDRTl1bXp6bjIwSVorM1ZSOUlISjlrekJuTVh2Q3VZclNoVGx0SEJDWjhETVpSYk9IZHd1eGo3OE1SdDdHK0NXWWxLdkpndk95WlZ0bWYxNktKOTlVUndDUUFVQW1BZDlwM1dyaEsrdm04ekNhM1pibTBxSkpueFVUaXFMSU1DYlRnZFdKc1NhWi8rNTJTNzV4dndVMW0xSkM2MDNIbUVXRXBsY3ZoUExoUWlZK2paZ3I5a0tZOHI4TW9yZSs5b0VXQUhCNFFKNFQzR0JMeW40WmcvWXQ2L1A2QU9naEthV2dHZ0E5TUg5WFUrU0ZyYlkwS3dyczBjSUM0M0NheHpZNGNtSnFTUm8rUkFVcktFSWlOZERQUDJjU0lNYzUwRUFNdTFlaDZiNkptaW9oS0N1dXQyVHhxR2lBSFJtSVVKMGt5SXc2aWdXOEVyMWljdi9UaC9rc0JyRUVxWXQ5RE5IbUs2c0RvMXJtZytRSWtDYWtDblBSZ0xWNHFTbWhXaTRNeWVYNVJWOHRBQ1lPRFF1UVBqV3RhYjQzZzJ1VXBaa3pna1hSemh3eDMwbkZCV29MRXFVeGNHeXVnZFhMa3lFTE54dmo2QU1OZEd2WVZoL2dZcVh4Sk5MbjF4ekJVZ0hRaGczQmlaZWx3ZTBDSFVzWlp4VzBGSURlY2luU2J5bHZadWlyN1V6R0lOVjFycEVSN0ZnYjZHQlk3RzFNbFMwR3JnaUVPcURiUmdadVJTbk9CcGJ1Ym5WdFNxT3ZHUEswS2dQa0F5b0EyTXdFcGRHQVhHczlVd0Nrd2NWWG9nb0FLQkJJRWhJYWdlMC8vOGlRM0x1dUllTURDSTlvQSs5YXlqeFJ0cndvRFBBdWkxRW1NemhickljZi9mRmNMUFB3YUI4NWdWclNRcUVWOVY1VDhhZ0FJRWhLazR2RFFuVWxGNTRHYTFJSmE5aFhhbVFoai8xcVpxZ1BRZW9QalhKdUpsMHd4ZE1YaTVwUVhsVlR5Mjg1ZlI1aVJvQnlmRmprL29jOWVmSWVSMTQ2RWN2SkdaaVZabE5NeEJnUFROV2RueW9BcUNhZW9Bb256aldRUzR2Q0xqUkFnYWhRUUJ4L0t0RVVuWE90U1B5R0JZMVFER3d2VU9DbGtDS2JVS2VBMUpFaGFndDJTSi9aQkthL3M4dVRIeDRMNWV4c0lnMFhkUERIYURXRWFUTzR5cVVDZ0JxSUFEVU9RUnpxamFIbkJLSWs0MVE1UXl5QmNMazhaeG5WRG5taWxoYVpUV0Z3bWt6Sk1EdldLajBRWko1QTFPbEJtWG5rMlh0c09UTVp3RmNBem5iUVdsOXFBWlExb0NHdHh6eWpVMG9VWkI1M01rbVFCTUxtR0FoYUFSeVNBQXF2TGRaVklHVTB5bjB1Q0FMUUdvVkFoa1UyRDl0eUczYU9sMEdQOUhFRUZ3LzVxTDlVQU5DRUdBa014WWxMa3dzMWdhdXJBRWdpQjdDODN5Y0FiRHM0cG8xTlhnd2ZzT244MXkwRVE4bm4yaVJOMWJBQ1FEdWNlQnhSYkhvUk9RaGhsb3pTaFBwTEJVQUxJN2lWTGlTdlR6QkRFNG9BakptWlRtdmpscHNTR2NBRk1VVVl0d2lKUmVpd25WU2xtaSs0N0FsOTY5Tm9PSnV5eWdHd2hTYmxJekh3UUpYeGd3RG9Ncy9kRkFENmdNWmlTaEFFaW5CSzZlS2NyU2FVSWJQWldJVCt0YnhOQUIvc24yc2prV0d3bzJFUWkwUEVPWXVnMVN1cm8xSU9qc0tnMGptWSs2TWhQRHNRaGtteENOYUdFbXBMUlFNYWhYaUFLQUdnR1hFckhkS1pxV2Y4V1doTUVQNHkyRG9YWm1URkxrS3VJSkY1a0pwRERaQjVjcC9mOUVGR1dUSms2Nkt1N3lTS1loQlhzWHVXRENCbUZ5QU1HQSt0Z09iYXJGRkJCVURIOGJJTU1aeE1FM24reEdZTFJDaGhQWjlpWlRxeFJpaHd6NlNUd2FRSVlCNzdlWmNMZ2pKTkFiYUZmWkVsNjRZY0RZVUVlM1V4aGpCQVFCSGtwb2czQlVxOFk4T1dmRHdiSXlTTERBNWlKZENqckhSTTM2MEN3QVFoTE1Ud3B3QUtFQVFRUUFPTVFqUUJMa1F6b21uUkx5QlBaV294dE1UQlhBZVowRUk0V1Qvc3lOaWdrYitkRCtRQ21OcXl3Wk5kOS9weXRXWExwWGtnNWdJS0JCeUN4UUY4MEJxRWJiNzZiZ3NIUW9DR2FnMHVLRFJ6YXI2a1ZRQjBybDVNUnh6a01tb0FKd2h1ZVQzRVpmVUJTRTIzMmoycnBvQUpyQXRRdEt3WWpGUHBTZVlpSzd0eSs1Z0RqY1J5NEoydXpDNVp5S3dEOHU1RmtjbHJzWHp4UGx2dVd1L0p6SHdxN1pBT2oxMHZwRDB4Yk9USW1Vam1PcDZNREZCcjRBRW0xWEFsSG5FdVliWFZwUUlnbkh3N0NscHBFSElvUWcrbE8zT0Y1dUZBUXBRNHFCWDJtZzlCRzA1VjhJVzVWaXJETGlUWWRLU0RrSFQwZzY1OE9FTTdSRlJCT3o3d2FEaThkQzJWQThkRHVYZEM1SUhiSFprWXNtR2FxVnhaN01vYjcwY3kyN1prY01DVmJrQk5BeHdFbUlacHNIRHFPSUwwNmxJQk1IdnVYRENjSnJQd0lmMXd4Uno0eVpWVTlyOFZ5ak03T0J5eW9zZFNaTFJLNk4zR3k4ZFhZdm5aNFFVNVBZazlESTZlQ2NZMGZGY0djYVVBQ0RsQ2ZaeUVoQVNSOHR6N2J3ajAvRlFNczhIT05JZ29MM0dodVNHWUVXTVh6WmhMTUNjMjdHVDI4bHRuS3R1aENnQ003MXBSNTd6bE5ML0U1RVF1dVpsNzVVUWlyNTFxaTJmbFoyQVAzOFJEZkZMT1J6RCtjNHZzeXVpUXE3YlBEcGR4bGdVQXRHZzA2bFhSNVBIckdIelVBNGNaTm9MOFpSakRQS1A1aCtOUjU1YThhY0lQRDBHSCtleVZleDBBU1Jlbmo5bWo2Nyt1SVJOalNiaUJzQkxESnlMZFltS25DU21HRVdOUlhoeUVDUjlNTU9vUUZCY0dWcFVnL1RRdmFDd1ZqdU5GUjdWd0htQWg4eXNGd1FGengzMUVvMmo2MkVyN1NtMkZnNVUyYWIrei80Z2RkLzVoR2VRLzlZV2NHYmdVdEdIamNpQTlXeVZJS2ZKeUFJaE1rT2xpenMwK2kyeGZOOTUzWE5uWURNN092Zi9iSXlVV2w2czlIUysvYTZWOThlMzIyTlpuWnAzbUhWOUpFa1J6bWdBbGcwdlZpeWNsbmlCaEZlOHF1YjR4UERLeW5hZTY4cmh5blRUWG9wVmx0ank0TVl2dlNOLzc1dS8zZmZYRWFpN3p0MW9Oc091ai9ZKytZaGJPdnRqd3M5aEFDdityd2x4UU9QTzJPN1A0YnYvYzkzL3p3dWRmV1d0OU5kZTFPdEh1M2ZPMW8zdk51a2UrRjV2bVE0ejFtZ2Z3aEE5TGdIODM5YXk4bGtUbFB6U1lWeTU4cFgveFgwd1JBaVMzRUEzWSs5aWd5TWFSOWdkandYdjdmdmZ0eC9sRm1ubTd0dHdJQUNlWjhXMVBiQjdiK1lNdm0rRzdIeGQ3YUV0bTNQVytiemZDeU5qSXl0QmlQUmxFUk4zLzBHUVlrUGo1aEV3eUxQSXNrWC9VTW1uRHk1SzBtd1MrMjUxdG1QWS8zZkRDWHlmZjJQZjZzZGRmbjhUNmZiQlg0NmhmZWZXWThodHRhYkE1TVRIZ3JyL1B6NXh4QkhRWDUvcGVnQytQUkIzQzFKcytXVVdGWDdmWndUWjhGODBzcTV2RlMzTkpOSDgrUEhQbWNnZk4yRTJ0TFhIMDNTcTNKSEJMQWlVSi9CY1lHc1pyMjk1WnJRQUFBQUJKUlU1RXJrSmdnb2xRVGtjTkNob0tBQUFBRFVsSVJGSUFBQUNBQUFBQWdBZ0dBQUFBd3o1aHl3QUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQWdZMGhTVFFBQWVpWUFBSUNFQUFENkFBQUFnT2dBQUhVd0FBRHFZQUFBT3BnQUFCZHduTHBSUEFBQUFIaGxXRWxtVFUwQUtnQUFBQWdBQkFFYUFBVUFBQUFCQUFBQVBnRWJBQVVBQUFBQkFBQUFSZ0VvQUFNQUFBQUJBQUlBQUlkcEFBUUFBQUFCQUFBQVRnQUFBQUFBQUFDUUFBQUFBUUFBQUpBQUFBQUJBQU9nQVFBREFBQUFBUUFCQUFDZ0FnQUVBQUFBQVFBQUFJQ2dBd0FFQUFBQUFRQUFBSUFBQUFBQW1nTzgxZ0FBQUFsd1NGbHpBQUFXSlFBQUZpVUJTVklrOEFBQUFweHBWRmgwV0UxTU9tTnZiUzVoWkc5aVpTNTRiWEFBQUFBQUFEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlsaE5VQ0JEYjNKbElEWXVNQzR3SWo0S0lDQWdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRLSUNBZ0lDQWdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02ZEdsbVpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzkwYVdabUx6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T21WNGFXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2WlhocFppOHhMakF2SWo0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2V0ZKbGMyOXNkWFJwYjI0K01UUTBQQzkwYVdabU9saFNaWE52YkhWMGFXOXVQZ29nSUNBZ0lDQWdJQ0E4ZEdsbVpqcFpVbVZ6YjJ4MWRHbHZiajR4TkRROEwzUnBabVk2V1ZKbGMyOXNkWFJwYjI0K0NpQWdJQ0FnSUNBZ0lEeDBhV1ptT2xKbGMyOXNkWFJwYjI1VmJtbDBQakk4TDNScFptWTZVbVZ6YjJ4MWRHbHZibFZ1YVhRK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXVVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFpSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV0VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2UTI5c2IzSlRjR0ZqWlQ0eFBDOWxlR2xtT2tOdmJHOXlVM0JoWTJVK0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdycC9zbHhBQUEwNWtsRVFWUjRBZTJkYVpBa3gzWGZzKytlYzYvWjJRT0xhNEVsUUFJbUtkQ0VMRktrUk5BMmd3ckxsTU1mek1PbUltelJKaDBNaDBnNS9FRmhpYklWVmppc2d3aUhlSVJOU3FBc0tpZ0xFbmpia0hpSUpnaVFPQWlBd3BKWVhBdnNpY1VlTTdPN2MvWDA0Zi92WldaMWRVLzNUTmRzTHdTU2t6TlZlYjE4NytWN0wxOW1WV1ZWTzdjWk5pV3dLWUZOQ1d4S1lGTUNteExZbE1DbUJEWWxzQ21CVFFsc1NtQlRBcHNTMkpUQXBnUTJKYkFwZ1I5OUNlUmVZbDE4cWZGenVjVFR1bHlJcytMOTJ4SjRwQnZqTk44STV5VWpvRFJqUTBqVDMzNTlCdjJMM3U5ZXpBeWhuNnRRUkRveDdsWnk0YWYydWZMUC9PcEhxN3R1dnJsYTNUbFJHUzFQbGk4MG02VjhvVnFvNXh1RlZqMlhiK1J5dVh6ZDVlcEY1eHIxdXVGYWdWVGQwd3VSWmF4Y3FYUmNqNWxRWGlyNStvV0ZCRVViWHJBUlgyeEd2S0xDWHVYMVpyRkZmYTdsV3ZWV3E1VnJ0SnFOU3FGUnFDODF4c2J5SzNQbnp0ZGFaeTRzdHc0K3RuVGt2LzdiSllIV2REUjBwRU0rWktJaHhEZ05NOVIwVk1oUWthYVFSZngwTEhhMi9JbnZmbmRQYzhldUEvbXg4UnR6b3lQWExkZGIxOVNhK1YzMWh0dldMT1NxdVVLdVhDeTYwbnpORlpvdWwyKzJYTDZKYkZ2K1VOcUdpc283WXFTVmxJVTBlUWdUMnhIU0RlV3JJMUtvS2hlbERtQW9pL0F4SGZNV2kzQWRtSWdqM1VibDFrWXNLV2tIWUxsOHE3bGx3alZtNTl4S3M5R3FpY0NTbUo1eHVlYXBWajczYkc1eDhlbld3c1hIQytkT1BYbjRuOTV5UW0yaXZSVm9yMFBvTGwrSUNobzJoWWdYeGRNSjl6K2ZlT0xHMHM3ZFA3ZGNxdno5UlZlOCtXSTl2MmNoN3dybk5ad3VhaXdzcU51TE9wYlJoRnFWcTg1SmFDYlVLTTBZZ3crcGtDZFkyaWU5dEZRUXFoSzRKQi9xWUdwc1RBckZBQlo5WTJEc0NEQ1IzcXJ5QUlkUlVFZEl3L29TblNXRmd2b3lPZW5jM0FVUGswTWlPdktvbHhqZ2htdmtjODJUdVdiOU1iZXkvSlhDMmJOZmV2WXQxeDVTRGVndnF5RkVSY0hHc0FJNDZaZko3Uk5QUHZucXd0NTk3NXR0bGYvSjJWWis2dmk4Yzg5ZmRPNnMzTzVjcmVVV05LUnFVb0xjcGgraDBreEJybmwwTE8vbVpodUpnSWZGWElKSDNJMVA1TDBCTE1qUEJFa01XeUI1U1dKeVM4R2RuMnU2cGcwRnp3SDBOS01aM1p5c3BLQnByVkRSb1RqZmJKN0pOMWYrb243cTZNZFAvSU1ERDZ1RjJZbGlrMm5TaHlFa2h0MWY4TUZzNDdmdnZudDYrcWRlLzRHWi9NaDdqOVh6Vzc5L3hybm41bHJ1N0ZMTExjcFhOcVJ3UmswTVVRR1VsVXM1TnpidURTRFdEejN1WXdERHB0TTJnRWFIQWF5bWd6SGs1Qmx5cmxET3ViSzhVNkhSbk0zWGx6NjIvRGYzM0g3cTNXOTVRVzJHN2cyR2FRRGdnc0g2SGM4OTkvcjY3ajIvZDdSZXV2WGg1NTE3L0Z6TG5WNXF1bHJ3bVdiOXF5VmdKUmhBNmNmU0FOSUNrUkhJY29yVm5LdU00eEZXN3MrZE92bkJJN2RkL1MxQkRkVUlvbXRKVTk5SU9pcS8rWWZQUC8vTytlbDluLzN1aGRLdFgzckt1WHRQTnR6eGhZWldRRnJKQ1hOZWtNTzB1bzB3KzlKdkl3L1piTGpseFlaYm1OSGxRck4wYTNQWHZzL3V1K2Y1ZDRwM0poS01ZQ2hpSElZQndJaG1MdGU2NDlUcFg1cWJuUDdrZldmeVUzOTF1T1VPemRiZGt0dzlSSWJDcmZEOFdBVzV3N3F1TzVjMGRkWnErU20zYmZxVCsrNDkvUjdKWUdoR2NLa0dnRjZ4eHNZbmp4NTkrK3pranR2dk81MnJmdk40MDUzUXFHZUszMVM4aEhDSm9kbVFON2pRZE10THVhcmJ1dVAyZlY4LytnNmg1SHJwa2ozQnBSZ0F1cVY5ODZNSEQ3MSthV3J2N1ErZXpZMTgrMlRUbmRGOHZ6bnFKWmtoaG1aTGE2aDVIVXU1RVRlOTkvWXJ2M2pvcDRYK2tqM0JSZzBBNVpzQi9QS0hQN3lyY1BVMXR4K2N6MC9kZjdMbHppeEwrWnZEZm9pcWI2UENDSmJuVzFwUGFUcllkODN0TzMvakk5T2hkc01TMzZnQlFCZjM0Mjc2NTcvNGdaTzU4aTMzSDJ1NTUrWDI0OGlQRnZKU2plR2Q4Rkxscng5ZnVzSHNhbG9UTkN2bFd5ci84QjBmOUwzWStGVEE0aTFyZ0RmMDNQcXRyMzN6TmZQVkxlL2hVdThaelZFMU9hUkxIZjFjQnVaMUVIUGI5WElGOEhOd1pRb2RPblU1UWlGRkExckRDSTE2MHhVdUZGeDFiTXQ3ZG4vNi85MzUvTHZlK0pEdzBvWE1GRFppQVBTQjBaK2ZldVVyMy91RWJ2SThmcmJsbGxkYXJpZ1c5RERra2tJMGdKeU1DZUZkcnRCTjUzSVpBTWJNZ3d6NmNxbXlhY3RDMDREV1dhV1IvTmJTZ1ZlL1YrWHYwOEY2QUlsbGt0cEdwZ0N6dE4rNDY2NGI1NHZqLy9nSHVqOTFTb3VUOUlqQzBpLzFpS1B6VXZHczFYN1lQUGVpZGJsbzFPVzJWblJidlZVY2U5c1YvLzBMTndiRlo3YmpyQjRBQW96KzF2UXRQL25XazduODl1ZG14WWl1OVhVSE02UHRDYjVIUUdDTUdrS01mVzY0Witnd1ZtQWJPcGtsTnlBN2NkUmJYMEsvQm15NkRwanVFU3pxZHZwb2ZudnU3N3ptclFJK3FNT21ac1VEVThwcUFEQ1YzNzU5ZTZVMU92bm1FM3FvYzBiMzloRW0vbWNZSVk0WUVGcDZHRWg3NFJEUFpnU2l3OGk5bkFhZ3hYdmlFU09kZ1RYVWkvZFlwcWRMalZwQlQwNjN2TmxOVFgzRW5UbXpyQ3J1RHd3Y3NrNEJ4dis3Zi9NM3Ixak9WMTV4OGp5UGNNT2RQb1E0aE1OR0k5TGhrR2JZQk9BM0JQZzRSOW5RRHVnTUUxOHZYRUV1TWdMNHRqNHBwcCt4cnh1Vkc0T2tvYjBNclVMNXBoM3YveTlYQksxSEd3dlp0YU1zSGdERTVtS21iNzdsd0tJcjdEeWpPYWhCWjlhbXNXNHR1aVlRYXpPTlBUWGowYWtXdTc2d3k2TkZlTnBzT0FnSitEbVl3dUxUeUEzajY5TVFMOU13T3ZLVWlwT3JKQ29JSWh3MUZtTmZzZjVaR0YxRGV5aWFsY0xPeXY2Zk9LQVdUNE54L1padGlDd0dRQ3REUHJwcjF3Mm5XN25pZWJsL2U4YWRpV1NiZUV6bG9vSWxFK1F5cVFYRmJ1MEptTllqNFo0aHlJNjZWSElWNkNxMlVnVzBxMVp5eG4rdFVPaVVXaGZTcm13SG5SUktYOTVWZ01JcjZzdWtudXp4S1B5Q0ZtOEZGVVl3UEp6UGlKY096SU5sbWxoWFBsOHNiSisrUVMzK3J3NkVCcXExMkZhMUQxa05BT1Q1OHVUay9ndTJneWU0c29odGd6R2NhaEM2cXJELzVNNkN1M1U2NzdielBMeFlzRjVZVDFMZFNTVUhwb2pBYVJjRmJ3bERwSkpZbWNJMkxCcTRkN1N4cEkyTUp5KzAzUDI2VmY2OW1icks5T3hmbzU4Nm13SjB5cmU1UzNHeVRsSUl6TE9NVCs0WEpBdDBVQTRjc2hnQVl1SW8xMTM1U3JaeExjbWFtOUdWRFV5eUI2Q0VCQ052bWk2Nlg3ZytwOUdpcldIQzMySTVvN3FleXVoWDNvVWVoaTBraVpCUEkwMm5RM1VrMnFzcWdzUTRRWjBrdW1pb3ZGRjJibXBYem0wZktiaUNIUFVEWjdXN1ZRWnZ1NElFamhoYldFTFdvQ200cFcxMWNzaFhxYWw4alcwMkhSaExGZ013cE5Oalk5VjZvN0JyUWV2TnBvZ1h4WE4zdndlbFRuYzVtSWV2MGhhd04xeVJjeFBhRnJVd0t5dEx5UUw4MGM1U3hZT1M2WUNMdkRMblIxeklQYVpqM05Fb1F5YmlwMGxjVjRDekZHaG9GNXA3MVZUQlBUVlhkN05hUUxObnNIc2RrTVlCbmpXREJLTzd3NUpQY2RxTmoxZmRSWWFtcVdTZ3JrQiswR0I4M2Z5V242azJjb1V0Yk9CRWNReFMyY0dHRHBUS0hUOVd3MWVONXR5MkNlZm10YkFzcTR3QVhtQ1k1a2d6VGNReXlyTWMzVHlDRTlmSkVmSEcrRkpvcEhGQUkvSXVkcDBjbTZ0S2J1TXk4bDJhNzFoQXMraWxJellOd0Uvb1l6ZS8vZkxXSENWSUp5T3Zlek1rTXRuUG9CNGdJczN0dmY2V2Fpdm5xalYxQk8zYkxVNGxOeG9RREVJWWsvTnFpa29UZDZZeUZwZldPUkJUa0FxVzdTcExWYTlPQ20vc3dPckszaVhEcElFbmlJZGQvb25rS0hmT3NCWlYwRzhXd3F3SnFNOGFiS29zdW1ycDJyOWJYWFNmby9uQTNSM1VBQktlSnZidXJlU0toWktNd09XNStiOEJoaE5rSk5RZUl5cHBaU3lkbStLanRkc0lWVjFDSWlSOGxKUjJvT3VYU2RiZGE0a21oWkpMckt5aEh3MnVCS0lCMkFoWFI0c3FMQlh6cmlSRGlMdUQ1UWN5cU01ekIwMmgwVDdLZkhsa3g1NkticzFrQ3BrTm9McDl2RndxdTFKWmJteDhWSlN6eXlsaE1EWkZLRVVKQXNYak1uazZaNk5mTVdYbUptbWxOQ2VMU0dZSS9sSXphTCtmRVNTSUw1RkdDai9LeGJBcFlyNk5VMDlaV2h1WDIwTjV0aHNZZ05BdTFWeUY2NGV5WG5BWkhja1Y2OXRIcEpVa2dDYnBVVkxhbGNoaUFJYXcxYXFXNWhkeitWa3QxTTdOTVBtc1M2T0xaR2NXbDRlQzZ4TkZZZEs4cUh6aUFVaExldDRZSXAwWWQrSVpMRWZiSGxMdVFObVJHUXh0QjFTYlJoelowUU8wcEd6NlI2Z3RhUkY0YmtXR3I0cy9BUlJ3RWVLTjZTQkxBTHl5Vk5KMk1WZFlybzFsMGFlUnlkb2dWeWdWQ3kyOThJUmllTXc1akdBM2s0UUlSYWM5Z0JtQ1RoaEkyd3RzVUVFREN6Ymczd2dabzhGSmpSWFp3azV4WGdxbWxBVXZDMmY2U2Qvc2hBZFFHWXJIVUpnT3Fjb1NtQ3AxSGFpWGpYSlo5V21YMzFsb3lXSUw2SjNiODhZb0hkdG9RQkJnTWVFb0RVNEV4QlJnK0JYVE9STVdhUXdoSWRaT21iUjdsQ2R6Y3F3elptblhXZFBHcEJTTG14UVYzN1FORVZHMTR5NEpTT3VHWFNQYTVuMEJZdUNrVWJCTkFVSVhMejJKRVFCWXJIKzBheU1mS0dVNHVDZUhPL0ZoWUJTWkxVYTdsQXZTZzUvWU9oU3lOcStSSSt0dklrK2ZhRW5ER0FQdWtYZjFkSGxzZWNxNDF4QTlBSGxUanNXQm5oQmpGaEYvd29VS1lobmdNVzMxcGlSU2xLYU1LdUszMHE0MmdLOFIwalJRTmhxT1U0QVpnc3FpQVdEUUtNMHJUZ2taSGUyajlraG5DU1lYa1pNTlJCUUROODlzQUxwVWlXL3ArazRNU01vNnBST3lRUUM4S01KZFJKU0xrdGxSeER1Q1M3cThwRU8rVGh0TlZOZVNHL0I1aUtsUy96RWdWQzZmd0d2RHJCMUZFRTgwNUF3T2FFdWtFRmt5WlF6dDF1dWtVamdFNlVkL1VENTVTT0htaVhYZ0FZeC9tcEdtQTByVGppTGxFa05RY3FCZ2hzUzk1VmJ6OGh1QTAzdmI2b1E5dzlCYjhHbGQ5R1NXRGxsQTBlcmhzb2I1Tmwzejc5TWJzOXYwTUthRVZGVHh5aTA1dDFmczE2b3RWeFpXREFOTE1BUEJMU01keWhGUlNMTUhjVjR2bU00cWdTeTVsUFFLME5ra2JvQkczdmlneklJdjc4eWxxOXJ0MnFsUTN5T0tlRXpEY0NnNkpobFZvRjhiN2ZDbXRLMEJoTU9QZmhWQVFQMVR5Zzc2UjE4eUJYQklKNFhzTTNyMkZucEp3V3RkWExLQ2gvRitJUW9QSldMNUpmWDZYOTFRY1A5aWY5NWRPNVp6dWkzdWR4SUZCTURueGhHR3g3b1dicHFZUWVsMDlHTFRmZk5relQycmQ4M0xyS28xNUZoWm14R0FzMXZ4U1I0czdXQkcxODV1SU9XVmoxYk5DTlFCU05tQnJKUzJTMXpEckV3d2JCYUJYQ0hRZjRadzFtRnN4Z1RPWnRackNQOE1ocWFaQW9KbmdCS3ZGZFJGQXdTdXBPNTkrTmFpKzhWcnNuYXZQd1Z1cG5FajVlVjYvZnJxaWFxNzg2a2w5K2pabXF2bzhXNWUwNkZORFF4QkJUc25pbWVjaVRWZlphTXgzUlh6TStrQ3c3REdTWGdBOTZhcmxPaVkwcVVaSDRlOFlHd1JLQkY0RDZBQ2dkUFdycWdDbnF3ZWdPY3hoa1JSMXBCNURiQlNhK1NxY0NpaU1CMWsySk11Z3VSZlh3Qnh2L1NLdkh2M0VKWGZUWEJVaXY3NWE2dnU4RnpOemVvckV5VjVGek1DN0Mwb0pKRVMrUzRFeU5Dc3VxdmNpbnVVeGFKT1BNSml1THNVYjRiZ2pjQ21BQnBCa0FNWmlrZVM1bEU3RWFwMC9aQVkwL3FncXlBeUd3QVlqSGVkYkpwZWhUSlZJQmhHLzNiTitlL2EzN1hwSWdVMnJPUTJ2VmIrcXFteSsvSXppMjVFNzlnWHVNMnFZWjZYWkUzbEVxNlhMejFJTXI1RDZoV2xGcEpFMzRKWW9UaG9MQjBGZzZNb2VlUUxPUjNSQU1JaXl2aERqdGdwWkZlUlZ0bDZnVXRsTTRMMUFIdlViOGdBN01iTk9rUlpLTkN4dWhaOVYybkJkN1hlYzM4eHdyN3hnbWpxRlNwNW5hSVl5T3ZPU2g1ZjcvL0ZnaCtKcTNrUnh5WjlyNEpPUmFqeE9pRkNvR1FDc1IxQ3BPc21IWjZ1M1FrTUl6NXFIT1ZCejV3VmNvdEdaWmpXUDcyb0hrQVA2K3ptREJ3anNOanhiamJqK2dEcjNLYk5FTlV3RjNmRERUcy9KaS9BWTlibEZlMllGWGVGNkFFa1hlOEZFRFhCY3BieUphRzhJNHF3QnJiR0tlQXlZUVQzRC81b0JOREdDUFNIL0ZBMGgya2RFaGlxWmYzNnVwOU1hZEl6R0E3VmdEeGp5TzRCZEsyTzRrMzVpdnN4RzYyYTYzZ3U5YXpER1puYkNEZ0x2eFg4ckJZb3VtT3RhUUFQd0lFUzJrcjMwby9jSTBFZjRycUZrbGdiNi9ySG9YM0VyNGFvVWxsL05XSzBQVDVkUTltdDM3YnlsVmQ5cERjNHpSUTNOT2JZUU1oc0FCZ1pLMWtJMmgyaEhrU05uOGhRekt6UnN3aWFSclVHZUJwc1ZSclBVK05hUzRwdlNlczhZbUpuSVdzQkpPM3grdEdabGhvR1RaNEltSkNsY1AwQWFrRjU1dzF1bE84TE1UNUxrdFZSMXdtaEErOUhrby9pQVBIMEk1OEFEUkJvWkF3UEFOc0ZrdGtBYUcvQ0VrSGlmblRwSU5mVkVkWUFyZGVkSE5DK0Y0NWVaYkVsYUhxZ3NtcG9zczNic01vQXNGVWVzT2g3ZmFZVWxPQXBwakVFYW9wOEtuVU9WYlRxR1lTbWpTa29ueEwrZFREekVjY0REOUFoRStHUEhpQnRCT3VSN2VBbDRPZ29HekN6WVFPZ0V6Q3UvdlFNQ042a0tSaGc5YjkrR0FTb0g4R0FIVnIrWTFSS1NLSzZtYXkxZ0Y4SWV1VjdaWGlPUU9hSm1sSlNYSGJtMXlFcUxCNDN1S0lIOEdWeDhXZFhBL0FvbnNCdHNnTmNCM21VVHhaSzBSQ1VIQ2lBSzhYNlFHMGlVR1lEWUFlQUxmQ2tZUmlIZHE5Z29nMk1wY1ZIVWN5SGFrT0N3Y1R5WHZoaW1ZMldBTmdMSHB4OC9kT1FLYWFEWEFYWVl4STFTTnFrRTE3YnZpOGdTSWVRajhWSk0yQTZNcjZSR1lMS3UwYytkL3VpQVVJb1VScUlBM0xRcGJJZTRTRG5EVFh5aURNYkFDdE5MZ1BOYWtXNGh3d01Nd28xdVFvbXh1bSt3RE13aE1oLzBJTndVdElPUHFlUnBhSXdsU2VFSTMxZ3JGNkpGVnRwcVVCckFZeVYrd0FZUUU1YThMaEE1T2thRDViMkJiNCtuUmJzR2lIU2p5UGRLNTViMGQ0STh0STBpcmVMSUdKeGFaZlJFSW9IOGd6RG5pamlYSU5zVW1YOFJqd1lmc2FRMlFCWUJISnBoN0tZYXZzeEMwL2V5cFZDYTdRTEIya0UzeGEraDQzMTFnNmdkTEJDNFRIRTZZclZQTEFHaUs0L3B3OHNtZkoxS3JBb2xDYTRmVnpSblVMaXNvNlNwSzZyUjl1V3hqWkhGZGwyN1dURVFnNjZDanlWcE44c2hMblk0S21tUDd6bllmcFprWWJySzdvY2xYUllHTElocENDTDRNNGt0OFMxb1VieUl4WWk4V1E5aVBpTlNzWlRhSnV4bFlGbk5nRHpBQkJVNTlHSlpOVXpVSTZSR0l4aW1oQlFPblhFRkFKREhiRVBpR3gxQUE4MStJR2tQaEEzV21vU3NtNUJUd2Naa1ZWdHh0ODVWbkM3dFBkdWwyNFFUU3U5UTY5b2JkRXhxcnVUVldtN0xFTmdYNTRwWFFpSTQzemRZUURDRDkyRVgzVUFRK0NDQTJQUWJRZWJlbmhaWmw2UHRQVmRjRGVqNDdSZTRlWTRxKzhSejRrdmRsUFg2Z1h0NVplUjZ1QktoUVVxQW1HYzJFMHJ1aDg3UTNxOUFHTnF2NUdRMlFEd0FIRUtzRUhaaHlvOGVZbUZlSFcyWFczQW9VR1NKdDhPRktNUWk5dkZxK1JVbGpKZnF4Y0xiOWhadGVPS0xTVzNiU1R2UnFSd3ZXbG1nWUZuaDNMRTRMUTRwTTBZU1ZQUkk1aGhDQmZvRUdEYVlIRHhOZzNBbWY3WjRLTHRmKzY4WHFSNVFkOUhQbkpleHFEMGpQWlV0bVE1ZWwzUVZZVEVOdlBRUHgwMDlBYnYrMHpKbWtFNDF0TEZXbTB6R3dESW9yQk1jbjJ3TTVkRlFVWVE1QmxsYWlOSm1TamtHRWZZN2hpNUFNTTFOdnNRd0U5QVlBbE81YmVQRnR6NzM3RERUZXBac3cwc0FUQkM1eVQwU05Oa0hCcFpXdTFpREU1Q3hPbHpnNTJUTmhHWm1NUVkrREw0TnIzck9LVVhYMTYrTytjdWlwZlg3cW5vS0xpN24xNXhqN3pRc084blYyU2hmcTNpNmVIdHpCQWl2bjVzUURnaDNnK29kM2xtQTZpbkZvRVE3Y2ViOFVPOWpyUnk4VlN4TENyRVdBT3VBNXRoc0Nwb1dDNGswcDZnRFdXZzl1YnQwcElFT2wvWE40dllkNjl0RXZaNFdQV0IyWFNiam5RNjQ5RUZ5djE2bVFDWmQ0bzUra2V3ZmlwR1p1WTVsY1pnMmJxNWI2dHpWMnd2dWpkZVYzVGZmcTdoN3Z6K2ludjBkRVA4Nnh2QmJPMkRwSkhWU2ZpNnB5UFZKc0hvSVZpSVpBeVpEUUQ4akNoYkNCTDNJV2k4cXhLNE9EOEJHK0U3MHFIUW91UVVDaU4rSWN5eFZJN1NEYmlNVG9BaGpWdXR6Uys1TXY2K1dKSzMwcFp6elZsYWdrVk1YWEdiZUNmRmRDNmRwbm1hcWtmWFZwQ3ZpL2xWc1ZDMTVBRnErckFEdjNreXFwMzh0OTFZY0RmdExyalBQcmJpN255OHBvOXU2QU5RdHJGRkFFTEFYek1pNnVLZXJNbTRtOFVlY0wyS01odUFkb1RwdlhxOUZDS1hOcW5QazZ3V1Jac01VMFZSZS8xRzljYWFqWFpWc1g2Z1RUTDZFVWlhK1NUVHhteWp4c29CYkpkSG1hU2JVOHNlUTFiaUdBTmVoYW1BbzNjSUZVa1VBZHQweEdHcUtlWGsyMlVHQ1RPZVVWRlVuVEVuMWFrWUJmS2ZoSkRXejZHNHV0NkZyQ25QRlBITzE1YmNYcjA5K3FtRFRUZXZLd1Y3YTBoekNEak1mTk00RW1TNmdwRStSa2UxUFM3OVdraXFmcTFrWmdQQW5hMW9KYnVpZDFEcmJOL3RFK0FWblRVRW95c3hDK1F4Q2pwRE91WWpyQWZTT2RWUlN3cldDcnZLRFVlb0lvcWhycFdYN1pIVU9ScUFmWjdGbEJLaEFobjRTQ21UV2lQWFZkWnU1V3RqdnMyU244QmFva0ZaTkFLcnR6S2xBakFSME5nTG9TUkRxT2tYUlhpNSt3MHYwemQvNUwwKzh0Q3liWkExVDJCRzRBMEIrRTRPL0JxRGR5bzNFakliQUQvcFVwVDc0bWRXbHZpbGpUNVVZWkpyM1VWdDlWMWVSdVU4bHZFRzRPdW85MGU3UjlRQWxNaXFuZkJTOC9VNjIyQUx1ZEFxeVhFZklJL3lkZU1IRHUxWmdDM1Z2WklTSk9EcGJKemc4SWxldllzTmV0V0pYWnVpZkIzMjFqWUV5d1I1V2FtUndHQUlTQ2pQMUNCRnZucWZjLy9vYk03ZDhjaVMzdm5UOXdTMExyQjlqaGlTb2ZGdHJLRk9yYWFNUmtWMXRjOGFNaHNBSG9BMUFQMjBKMng5S1VyWTBwTDlDUmF4Y1VRUFFHekNqM0hiQ3F3aXlNWFRNUnJXY3k5UXhFZzdjSGJLd25DdWlFR2I4OFVrUnRqa2tYQlVUQUpQNnhoQ1licklxbFlWeEFhSzAzV2h2YUsyYWxHV2g3R25nOENqUUhoWDJuc2RvUFZuV3ZVMUJYbFd6YXp1dHV2TDdwR1RkZmZ3ODNWWGxYWU5SOGM4RUdnS0c4WGN2K0RkOEt3aHN3RkFnSG1jUTd6M0RKRzFxT0FJQnpoSFZINnNOelJkdUtnelBCR1oyaUZQd0NqcTlnQUptQURzbzArQzVJc2JkREN2TkpkamhrRFI2Z0RXWGlFUTdGV1ZFRFJ1T2lEOHFQZEZxTldNejVSUFdac1dFMVRvcGVkTlhzcjRsQkZ3YitDdEJ5cnU0S2tWM1RDU0g1T1c5WUZZWFNZbWhEMEJuYU1CYk9CT3NNa25RVFJJZ3FrRzVVZmw5V3BEdDZ5YlNjSVhwQldmYm0rM1JhMEIyRHJkTk1WMEdTWEcrVFdXQVEwaDhoZ0VOMlpJK3lsQWVHUUEzQlRXVFdBSlZrS01ia1V3Z3dianN4ZHcwRU43eEhjQ1JWTFVHMTN4MG9adHArRFh1RFl2QUkrNkRGUUpMOGdjMEpkRURtd3J1SU5uR3JxcmlTblJIN1V3WTZLbFo0SUhUZlNkQlhyV2tMMUptQUxTQ3V4RkZOYUFpZE1FN0hKdys5UkdjaWhJQkV6ZUlQeloycXZFdXFnVGNLRUpnRDZ2Y2h5UmVVWXJ4YnY0L1FDMkNVUkxmLzRZZ2V3VUFvUGhDN0JyUmNiT1dnQmRkUjE0RXdXSi81Z1dnTEZnN2NTVkxOYjNoek9WSGlFUHJIaW5nV3ZFc2hhRnI5WmR6Yi9STk5DU2hnMFM0VVZnWDJJNXBnQmtrVFZrTmdEY2pIa0FVVE5lK2xBME5qbHhCTTVRSW0zcHF5bFVlVWEveHdOZ093QVRkR2FGakhDdlRtdnRCUWhlYWQrbUEzQUJvNWlITk9aZXpXMEtoRVVoUkV3WmJScURwRHhYL3B6dUw3VG9pVVhkaUFUb3kvMm9wUjllK1I3ZStpR1VZRzNqVjUwQmFocnduYlZuQzlmdDBLYy9wUHdHNnhxYkI0VE1ybW5idEJrQUtGSk9JM1BJYkFEY2JXSVJDT2NvYjgxZ1dnNndpbWlHQjRCL1d0ck5KTVdtTlFwTWFsSVdSU0ZMa1JVbm9xWStqQjRxd0FVd1NlV1pacmovRGcwZXNsQmxVd05JMFNBRkVaZEhITW9vdDBvU0E0WmU4Q2pTTnpjdWxZNVRqK2ZhVTdGcEwxQ0prME0wRkM1WnZhejBWVEY5aEdPclhxSGpnVkxST2lXYXVrY0FyS2Z1QjVCTkFRTnluUWJMYkFDc0FiaHVSWG53MHk5UVpZcXhoSWNpMldzZEVCVklBMlFISEIwRVAwcU5Cb0ZRQ0I1R1FsS2wxY0dQQ28yVVRoaUFEWGpjSnVWQ1pxT1gyS1BvYzE2N3RyT1JjZGxabE1yQlA2RlQrUlJpbERJRitrYk9ZcDFVUlJ0YjdZZTIzQ21zNklubDFrcmVuZExyYnkzMk9RSkRweFVDbU1VOFE4aXNUT0hJM0FiaHhrVmdvamhqcDhmSmV0Z3VSL2tjTUc1Vm9aN0lsN1E3RlkwcmdiVVdmZ3laZTVlMHpFRFVNaG9HTWZodFU3RFM4SXJBZ0xlUE5FU0pxVzZ3NERrejByMGFtRldsSzlvRUxLV1RMd2w0aENqMnRkTUFBUFExOFhJUFUyVmZDNzhrT3E0RklIYzNyYkVKRUZpUEdlcllnNVlMdXR3bGx5MWtOZ0RRRDdJR0FNNE1CTDdoVjBkVUVLeWIrdy9sUkhRSTlmcng0V0ZSWHZKOFhCQjJKU0FvVTdodlpDMVpNMEVqNHVmRkVKNGI2SFZaM1E3MlUwcmNuV3NOa2xOYmlNWmdVcjUrSXBKUFkwampzSEp6QXhIUzQ3UWVxcWpEQUFRYzRURUEvNTZnbm1Hb1BRYkFKV0hiZFpKV2UyazlPQUlqdXdIZEcwT1pEU0JlQnBvMWR2Yk45ekNjcWNLbzQwR2VvM3NSU0tFWmlCSmVtREtFSUJBLzNtbEY4TFZnWVEzQWF0OEhsWU5ER1F5QVl2WUUyb0NTOHYyWGg0UWJqMkdGdEFxNHlOTndvREF3b0xDMWVVMlMwQWprNHZ3ZmpjQ1RWeHZ4UTkrOXQ5SXRkR21ZQVkraURaWU9nbHBsYk1sSFltU3A1OGlzekkyMGFjZ0M3TXVVV09FYU1qRSs2VEF3NFNCaUFkbXU4d0J4TVVrNXdORUFiR1FyWS9Vb2kxNEdDZVI0RTVvR0tvczBFQmFMVEQ0MFllL2VLWVA3dDB0Q2hHdk52YWNoYVlGQ3RSa2s5QWFqMURDblVBUmFIU1UrQTYrZEJxQzIvdC9IU2pPMUlRUDZZNlBkTEZ0cDh2RkFqb0loeTZuSC9TRnExZzNaalVZR3dCeExSK0k4M1lzS1BNT1lEVExGTmhjcnRpbU1Lc3JBRTlLazFCOS9xREIyRHJkdkFqTEFBS3plQW11dHFjWVl5Q2tOZmw0TXNTc0FGZlBxTkI4MEFwOEp5WU1hUEdVV0JHTkJlWklVeDloWCtEUDRMeVZZbjRYQTQwbjd0MkF3TW1aN3BkMzRWUjgxc1FQTDExT1FvekVWNDhBSXZISzhhQjZBS1lDbmU4a2NIaGhKUjRtY0FyT1JlWlREWVFJMkk1SWJVdys5UUR3R3hHTHVHcmpZdXhoalZmUlVzZTJqQTVPbGZWdHdtd2VBU2NFMVJWaXN5cVhxVUJxOHZoM3dJRjA3cENHRXVrZndwZEdEUlFCcmwycHNVRG9SMnhFS0xMSkc0a3Z3eU1rdkFqRnd2VktuNGNtVWVUSDhFR2NiZ2FjVTI5UHVSVE1BMnhTS0ltQTJjdUQ1U2M2eDd5akRhOWRiTzgyU0tVRGFRdkYyZ014d2haRWd4SFRJVHdHcWtuVHdJQ3g4ZUliT1BmNjhSajJ4TFJRaEk1R1pnYW1lTjROeFQ5NEFCSXNCbUY4VnoxZ0V3clkyUGxZeUJLK0ltSU9sMkpkWVJwendIQXZURmh6TGlLMnhUcUZ2UkJIVWlneFc5ZW9Ib0dZRTZyVDNXTG9UcU1JVmpmNFpQWFZsM1NPdzVLRGZQT1VFRDIyUjEwWkM1aW1Bd2NWOUFDelRkNnczV2Fvand4R096bmNzQWdVVTU4TkVNZ0pHRUlqRWxFN3ZRRVFQdzd3Znk4MmxxeHh2Uk1EZ1dCeXlNeGNEQUs2dVBDK0lldUY2WWRuWmhBNXloU1JTdTVpeEN1VkNIVFd4SDBreUZIYlhoYVloRWgrcGdrNXZJZVNCRCtPUHJQcUN3WkpuQy92c2ZNTU1vS0I5Wk1ZS3lIUmd6eVpqWlUwOHF1U0tJV3ZJM0lScmE5dmdJUWFpTmZjaWF2b0t6TUl3eWVpaTZRaHQyMGNBQ0tJeVlTaU5BdGtLUmN4bGpvMTRDUVZjaGs4aTRaTEpEQ0dGMzE0T3RSRXY1WXVJL2VZUVFQcVBzS1QxNzBOSTRIZ0owRy9YSmxBcTg1U05iMkJKS0RZVms3UjY0aGg4VzZzS2RUd0Q4TUhqNHVFUHdmb3M1b3hOOVVuZi90VzJkZWNlTzdPaVBSWE84UkhZNVBFNkRkUThZb3JqZytLc0liTUI1SEw2VUtnWVpOUkJ1RitneXVwOVA0MWhNd0RhcVE3WkdSNEp4T1JvQXZJcVlBV1BJSUJuN2tabW9PRnpxZ2piVHduQlV3aVFPcERHS2FDbVcyZ3R5bFhHOXdIc0oxb1lWUndlVkltZzd1N1ljQ1dtWUVaSGtTRlRSSTNSRTQvdzdkTWhOcmhVbW53U29FeWR0VEE4c2NxVXIycEdQenl5RUJ6UlZuWmVWbm5zUk0xZ29XdC9hbzRoZ0NYMmhSZ3p5cXpNamJScGFIZUZ1WCtNd1BkRmFEcERaTXpxQXd3UitmUVU0QTFBaGFyd1lQNU1lK1p2T3VWN1NZbkFWSVpDZVprQ0k4QlYybVZTSUdnR0lCUmNCa2IveUZVQTE5TmVzSW9qY3dLSmdvZUlVVkNCcCtRck1VTGU1cUVlRGpGNmFIZzNya3JTL0dGcDFnZGFXNkZpSDVSTGhYU090T2lwVDdZNFZWUGpSelJLdXYzTGJ3eWR1OUJ3UDNoK3haVzFyNXdiWW1DM29LYko4eEFWQ0lYSkttY0xuUUF6WUpUZGFMUWxTUGNCVExkNDJYNkJLZ095aEluRmoxRGw2VWhVUGpEeGlMaW9SeWlTaFhrQ3ZBQUNRQmUyQUJRR0huK2E4QlhieUJhZWh0WUlLSWhkUytnRVFuWWZRQVJNZ0ZZbVBCQUthUk0rR2ZKVzdEMUdWYThNamZOQ2lkNDBZWmMyWHgxWjFKcytGeGVidHMydHFRNndUakY5Qzc5L3ZDdmlWa2JjRGgyNW1JbkdScHdjdnI4VGVyZGhtNzRBL21WdENUdXZoMENqZWhnVS82eGo4Q284OUFOMFpDVVAzVHBraFpZdFpEYUF1bFpaZXVQS0hsZWh1SDdCR09NVUR5VnRoS0pWQmQ2TEk1OG9IeUg2S3V1UVpHSXg2ejV6L1lxTm5uck5Rczl1aFFhalFCQUl3UzhDOVlVUWVRQXpBQTFoM1JTMmUrU01Fc05wZUNWTzFkbWZDVi93YW0rdVY0cmZNVmwwZS9UaFNyNXJlTzVpM1MxSUNSTXlodDA3Q25xQlF3OW16aGZjV2Yza0Mvc2Q2UU9OazM0bzB6blBlOXlDVWdJdVF6QStsRmFNcDRFMzBpT2lQejJaZCtjdk50dzNubHdPM3owVXAvQ3A5Z1lIdllDR21LYVNRVXZ2SHdicGhzb0Jvc3dHa05OZWE2TVA1Y2hGRDBJb3hRc0hhSm1uSXZMSlpTQjVzV3RYQVNZOTBLbFF3V1NoazFlUU5RK2VBQmd2TU9DUUozbmZ5dU9EQm04SE0wV1lWQlN6a1BRZUlBaFNlUzlNbjRjU1c3QzM2TjNCSzdVTFo3czIxeDA4dXVUKzh1Q2lPM3l1WVFiRlY4Y083Q3k1dDl3MDRnN3MwZXRtNHlWMzVIVGV6Y2hOODk2Qjc0ZG5LdmFEYm5XR2RBRzlGR1Y0Q1FlL0lUQzFwZWgyYW92M0gzMXJ3WjI5eU9objZ6MS93Y3d4Z2hSUzB0U1lBWmhFVTVVREpMTWFRSzZoSFpkYXJEQXdiZTdwUllOdUpxWklKdlNiTWtZcGJSUGxteEY0a0k2T0FhZUNPSEpSTmtRUnFrMEZJYmJPQTZzRXl1ZW82NU81K25xNkZsVXFsREhrNVM2WXk2T2d1ZGVPZ1VDUEJlS0loTHhIVzYrdTNaSFRieFkxM0NlL2ZkRjkrOWxsNGNwcmk3YW1BTUd5UmV2aFl3MzMvWk1YM1J1dUs3bTMvY1NvdS9uS2dqc3NJemloWHdCYldKWlFSQnorOE1aZStjb290Tk5RYkFmNHNVNnFSVm56L283SmtydE9QRHp3OUpMN3hoTkx1Z29JeWxkZjZDZXRPZkF3NUFtZWdwVTNtendGeXhpeUdvQkdZcjJoaFV2VDNCYW5IaUVwRlhjSUQ5Y0tveWlkQTdiYkM2b2dJT3RKMHJKRCtSZ0J5b2NjaG1EWHdJcTVFV0kzUXlRTmd3bjRXUXZZSXBGRzBKZllPTXdBUUtJcEFwNHF1dFRhcnJlR3I5cVpkM3YwR2J0SG5xdTV6OXcvNzA3UHQ3UUhyeHkyWS90Mm5pSFJsNUsvL25UVFBYVm13YjNqdFNQdTVWY1U5QjVpeVQxN3FtbUx0cHAwWUYxSitoT05RWFFUZFpIeUJzaFVoS0ozYlMyNEczZm4zYkhUZGZjbjl5OXFmMS9KakMrbmkzdTJoZHNESXNGYUsvRWVBeW5lYnRabUVkMHQ0aUk5Vzhoc0FGV05oUzBUcnFIWDdiUm5iZTJIa0ZoK2VhVm9iNjBnRDBabm5BSzhCNGdHc1pwcEZLcmVlZzlBVW1uekFrcWpReGE4MkpKdENoRXNYZ0hjMEZnSkJzRG94LzJiRWFvT0E4QVFHTlVUZW5tVVViOS9TdkI2YmZ2T2g1cnVPMGRVVzVwd3U2ZTgwZHJpVW5neGxpU29VN0Myb1BYV0hRODY5OU5uVys2MkEzcXo1K3E4ZStaTTNwMDgxM1FYRnYyMEFDOSs5Q2V0MjNuaDVPUFdFL0krKzlqOE9aMXp4ODgyM1I4Slo2RTY0YVprblBRcHI2bkpYaFZVR2paU25CaFM4bHYxMHVuRW1Hdk0xZlZDNUdxUU52RWVxY3dHTURzN3UrSm1tbzJGSlMySUZ2b2JIR0pDaVV0YWtaM2ZwaEhaOHU4dGVRK2d2S1NEOHBDbXJhWlhNZWZiVTJ3ZFIvQUlRQWVDeFF0d2NFbG84N3ZTZmhFb281TjExcE54ai92VVRsdEpzNklGRm91NW5Wdnk3a3J4cEduY1Bmak1rdnVMaHpUcTlVdm9yUHlaS3BaMStCRW5neEJCT3dKL0tKUyt3WDlEbmZtc0RPZUJwNXo3aFZkWE5DV1UzVjR0NEk3TjV0Mlo4eGdDM3dPZ244RFRFZkVxcGFQNEVWM203WmdvdUd2azhuZG94WC92b1VYM3B3OHU2aTRtbTBIenJpWWVDdlpTcTNnUVBIMmcvK2pYb3NBUG1lMGpSVGQvc1ZWZm1iSGZES1JHWEE0V3NoaUFJVjJhT2JuY3FqZHI1c0pOLy8xb0lTWnhvbzZmWDlDSEcyV2I2cE1wandvRWlTSkRyNHhiV3JRNzU2Y044b0RSYmRxWU1VaVFwZ2psaWUwVE1LRytvR3ZtbTY2YWtDRDlPa0EvY0dMWDFhUGFWclZWaTZ2dE9pRDgrUEVsZDk5ekJmZlk4YnFyNlkwYTNEQ2JMdm1EbG0wb2tTZXhxd1hvV0NsOFdNYjRWZ3ZickhGeXR1aysrdGVMN3FZOU5mZm1sNWZkeTNacExwL1NBbkV4NytiMFRZQkZmZExlREYrZFlhN254ekg1YVZ4KzRlZllHVTA3OXl5Nmg0K3VtS3N2cXQ2clcveEw0Mlk0aXJrdkVrTTdoVHlBbGd5YWpaVUxGMDVrZmpjb2l3RVkvZnFwN3k3cmQrcVdVQXlFK3dWVGtDcHh2eWNrb0JmbVdtNUsxbzRWZS9ldlJKQ2xhVmluS09SdW5QUWR4Uk44T3VCUm5nc2ZWdlFhTkJLdWM4K2QwdnlwZDZTdTJWcDFaYTNjY1o4WVhrM1RJNWR1MzNtODdoNDl1dXlPempUZDVNUzQ1bm90dExTWEtzL05GZ0dhUUVWTU4xV2tDS09ZT3Z1ODl3amV3RTFadG1VcnA3dDJUWGZ3eEtLOHk1SjcxYjZpdTM1WDBVM3J4N0RLOGdwNERBSmVneW5pMGFmMTFzK1JtdnVCM3Y3aHhsVkZmRURmNW5zV3NDbGpOS3JXWEh3Rk9WQkdFWk13TTdFVzVrc3p6enlZTmdCUEVNQTFRbVlEbUh2NjNxVTlqY1ljaktEa3ZrRjE4Q3FEZHFmMW84bDNINnk3ZjMxYlNVTFhyNDJkbzYzdmlhR3dFM2t2MUY0NDR3Q0FMdW13dnZNME5FK082NWRIZVhMMk8xK1ljOTg3V25QYnRpekp6UlpOcUEydDV2bWwwd1hWczA3Z0lRc2p2aXFyNFlaTzNaUXZRMER4T3BqeitiTmd2UFhrU0lYQXc3Tk1GNXhoNzk1UnJRTU9uNjVKbWN0dVFudTZkMjRiZHd2ekYwUmJENnIwNnJmZVhyY0hWdERodHdOSGRiUEozRHhLTnlQMGhwaHdrY2pIS3oxeVE3R2EyR2R1dElOdzd2Z0QzeFRtYkdGUUE0Q1dGOFhDd25LdXVYSTZyNWFpM2Q4SUJHME5kRUxnZjNqUGlrWkYzcjN5V3UzUGtjVmYxTXVsOGJjbkFtWmhDMEx2MlFkUEhnakp6U0NGMXR3N1B6bXJBZTkrNzB2bjNhTzZWTXRYeXZvZVQwRS8xZTZWeWJ6TDVSNGV3b1JxQ0h3Wkk3aWd6WVB4NVV2ckUxQ2VYT0FrRUNRWE82VWtzSHdJS3JhQk1hYWpBb1lnMThQY3Z5d2U1cVNXbVFzcWt3RUFqZUpIOWYza2FIQVdpejhiOWFvajd6blZPYzBIeGVtODBnV05zS3JXTWtWWGYrSDAvTHdlRzFsSVE0V2kzdEdnQmhCYmcxanovL0pSZUVTWW5ZODNJNWppaEFWOUdsWEE1M1JwOWNIUExMcjN2Nm5zM25pamJxUm9FY1pUMjdRWFNaclFYQm1UUTRJU2F1MUEybGJIaWwrWXJidmYvZnk4KzlQdnpMdWlsRi9rMnQxR05RcVJhelZtUTJ0Rk9IY3VFekVLNWlUdmJzSHZZUkE2dkZnK05HdjNCeDVvSnkra1UyaGh2TnFpVkhqdHp4YW5ZZEVuS2ZQNWwyYjZKMzNVME9DQUQveVpJVVM2TUpBRUEvWk1KV1ZLQ0lZSFJoaEF2clYwVENXOEc5TFJNZzNlSzcwUkEyZzF6NTk3TmpjMUxYd1lnQmRCTjNLRXFOcFFyTkVuTjMxR28rRFg3bHAwMTA0dHVldW44MjZiRm1SY3cxcVF4aU0wcTk5eXVheFgwT1VtVWlGTmlVVTFpNnNUK3ZIS3g0NnZDSGRUcTN4K2lWTUtsMlg0YTJjaFoyVHhoNUJEaUdrTUEvWnRWRklYR1RDNHNPcnVLQXNJUXVSSFp4c0FPdkJGOERSa0lLTEJPZ2lEYk11akRXTmNKYnpCaVVLQ0V2NEMzMG1aYjJ0Z0ttTlJ5UWV3YWhkbUQ2dU1aVG1RUGFCcHNUcGtNUUNRV3Y5V3poNTVzclQ5WlEzZGU5Ymo5dGpsMWNqVHhzRUtHeGZjbENBT24ybTZKL1MrR3dzaUhpMmFGeEYyNDFxR1VDcVYzUGhFeWMzTWRCcEFKd1hFTFVHYmF5KzRNVjBLMlNxZWVWVEd4bHhxcjFKSmdBWVo1QWdPa294ZGowR3BZTVFKU0VoMHVGOGFyZ29BNmdodURQNHBpWDRCLzQyM3dkRjRYcXlIQ1JaZ2FSSGhJejFmVHBVNDdHeGlMZUtKS3RZUGxWeXpjZkhja1NkRGVYK0Z4SWFwT0lzQjBNeVExNDdkOTFSbC84K2VMaFRLdTJzMjYvVG0wdHk0R3BtZ0JlTG5PRndXSDJyMGN5U3JZeHY3aGtJcERFQ1dNajZpS1dKSkUyVlhTSVJqNWNyWnZ5aG82TVE1bERtZkFrYWYwVTRhSlFtek5vUnJBbFpNeCtKZ0UwTUtkaklxZzU3YS9ZMHRSRDBnWld4M2U0QUVLa1dxazQ5VVJRUU9NVFY0bGtsNTBYS3VmdnI0RS9mcGJnVFN5TVo0VmdNd2pvNy8xVzgvZjhQcmZ2bnhRckdzbTVmcVZoZ0JnYmNrTW5FbmZUQlZtSklZRjF5LzhiS0dGdWhpR2NYVHpNZDgxY3QvMFhNOTloQ3dtdW5rSTUxSiswS1ZkYnJVaEJWUHlrUmxSZ0NLV0VhOHdXQTRZdHRBTEJwWmpHTjF6eGoycWVoZ3RDZWt3WENacXdzTVYyd3UvK0N2UC8zZlRnYklRVm9uU05lVGNBS29CSWc1WktUemk2MExwNzVSM0xIbFo3RkNMcTM2aHNDT1diWjFENlhveG9pdHZGVkp2WG90MVJzS0RJRzdkaXpRQ2dOdGN2UEtwN0VmOGVBS3F2QW9EUzlGb2RUeXBDMHZtR2dFSG5ENDU0Zy9UYjhubFRTL1BRRlNoWUtkckdvZEpRTlltVC8xallzWHVhNHlSd2FXZ1RIWm1pT0ZkcjBraUcyaGNlSFE1NzZhYnpSbVdISGJIU3ZWb0x6dUE4WFR5QVN1aEJlR2xLc1N2RWY4MDR5ZCtsT2REQ3RkMGovdE1YajRnQzJoNDJrYkQxMjgyWDBaR09zcTcrWi9HUGxoMDRCM0J0NU83VmtZTHpabWpqend4YStvSjRTNENQUzVBYzVaRFNBU2NTZS85QjhPTlJmUC9KK0tyci90STBaaUtycTVkTXlsVVRwUDJpekN5cjBScEEwQkZXSXU4UnhVbWhoS2Q1NjIxcDZGWE1EZFRhOFhENUdQYnRnZmlyd3Nlb3QyRGUzVGhWaGgrZXlYUC8vN0h6Z1VwSXF0WndwWkRRQVJRNFRyelpVTGozM3VVOW9nTXNmREMxYlM2NDRXTlVycHZ5T3RxblpsT3QydkFlVUthMVd2eHcrTjE0TzUxUHFoMDVEMHVhUytRazhzZDFRYmM4Y2UvTklkRWdQNjBOT1daQXBRY3JDUTFRREFpc3doMWpqeGhYL3pTSFB1eUIrYkY5RENiVzF0aEpacmFVd2doRGdLZlc2TjgxcTRma1RyOEl3N0ovVVllNDhTRjQ3OXIvLzlPLy95RWFXaVRvZ3poWTBhQUhPTldkM3ByL3pLeDNPMStlOVZkUysreU1KT0xBempvQmZEd0xNV0RzUm1VODJRZU81RmE1ZzB3TFZOanhCZmRwV2VLQmJtdi9lMU8zN2w0eEpUMUFXZVdSRFp3a1lNQUFvUXNtbGc1bnQzblZ3ODlNVmZMK1hyNXlyNm5BazNZRGJEOENYQVZNUVgwQTljS2ZlL3RYN3V4S05mL1BWSHYvN25YUHFaSGhSblZqNWNibFJiRU1QaXVBM1VmUGJPdDkrM2VPeWVENVhMamVVS24ybmZOQUtKWlhnQllVOXEwWGZneXJ5N2ZrOXo2ZnpoZXo3MEovLzU3ZmVxT05HQjBpK3FBZEE3Q0xJVzRCRms0L0FuMy9Ubnl5Y2YrbENsMGx5dWlsbnU1MitHUzVOQTFDajdGbDkrVGQ3ZHNMZTV2SGo4dXgvNkh4OTgwNTNJWElmSlhuRUV6VXh3R0ZxQ09FZGg1cUZQSE55eS83WmpsZTFYL0wxOHFUaWlyYU5hWldmbmpSOTlMdXNlOTVKZWk3NmNvYUpkUXJESFBnSzdlWGdaaUhGenFxb2JOc3Q2cVdSUVVaakVkT0xxYXMrMm9udkYvcHk3WmtvYnZwNzcxcTkrL04rOS9qTmlFN2VQOHMwREs4NHVaRFVpRE5NQTBGWis1dUU3RG8xT0hYaTR1dk82RzR2VnltNW1tZlJESWFPNnp1bkgxUUNpZ2JBdGJLdEcvYlY3dGIxdHYzUFRvL09QSEhuZ3ovNzlwLzdqMis2VzZGQStkLzB1V2Ztb1lSZ0dBQjRza01PTVlPNzdkNTJvblQ3MHRkRjlyMm1XeHladktGVUxlcm1KNVVaNDhyV092ZjZvRzRCMVB5MERYWXB3NjdzaXI3ZE5pcjk2Rnk0LzU2N2FYajlmbkgvbUQ3NzZzZmQvNkt1Zi9xM3ZTNEJSK2NTWjcvcXB6YXJBVmRDd0FyZ3dLSjR2NlA2Z0hhVXJmdTUzWHpWeDh6OTdWNjQ2L1pabXZyU05id3cxeEQ2dm1QTVJaS1lJTzlTQXl5aHVjL0tKMURFSllsWWJQUzVYWUxSTmFGZHVRMXVKRi9qcy9RWWxrZFpqbWxlUFRtWXZ1OSt5cGVET2E1ZXc3UWhTQlE4clViajJpTmk3Q2FQYUlUeWhwM3BiSjdWWlZQZjJ4MHYxYzduRlUzLzU5TDEvOXNlZi85Z0hIaFZlRk01K1A5dythUVphUDlLcUdqeHNzTnQ5Q1lDUG9ZNFI4Q3lYdmVDa0s5TnYvazh2bTd6aDUyOHJUbDc5dWx4cDdJWm1yaklsU0Y3ZmwyRFVtM0NRNXFQSC9DSUp2NnpWM2MyaDlCcTBRc1QrUkF4eVVXSkZLUndZQXAyd3g4dkVNWitPQWFDT0k1U1RpZWtrbGlSUThxUVVPNjl0NXhnREd6Z3hjRzFjc2w5ZVlUT0hkcU0zS3JtbE0vbkd3cUhsMlNQZmV1YkJMMzd0N2ovNHRTZUVIcVhIeFI0dW54R0JDSVlsQnV1RDhBMDFtRnlFc2RzUThBNlVqZTI4OVgyN1I2NTgvZjdTanV1dkswenN1aXBmSEwyaTVUQ0kwcVMwVU5FQ3NEUTJrUy9PenVCUndvTjlQVGptT1lBOEJQZ3ZQV0FBVWd5ZWlHM2hLSW90WnNraEtpZ3M1akVPMGhZcmpZR1FqdVZLMnErRGFmMnFUVHhpVXA4bjEzY09Xc1ZpcXprKzZocUxDL3BOajJaVFB5ZlpXczQzVjg3bjNQS1pYSFBoK09Mc3FTTnpKNTk2K3RTVDl6NTl6MTBmUFNVMCtoRVpVenFLeHdBWThTZytqdnFoS1Y4NGh5Uk1NSzBPeUlRRHhYUEkxczBiRUV0OEZ0SjFsZEc5cjZsV2QreXY1TWVueXFPVE8wcTFsVktwVlJ6UjFuNkpucGZmc1FFZWd4SDQrYzFMRENNYWhValpuOFFrUnFCc3ZJS05lUW9qb3pGTnN3Uk9hVzFHc1I4bktHb25xTDc0clgwdWN2aThTTnRZYkpSMG5URi80ZXpLeFhObmF1ZFBIMTQ2K2RTRHk5cElnM0xqUWc0MlVDeEtSdGxSNlpkTjhhSmg0WktGR0JHdEVVT0RBNlhISThxVE9KWkZ1RFJQNmJSQWYyZ0N5a3p6bmg2MXBPT0J3cVBTaVRHRVdFWWM0WlM4UENITjVPV2gwTVlhYVJHbkR3d2c1b0dPZWRLRTJNN25mdmpPM2NxUGlxVW5NUjBWSFdQcTB1M0lYNWJ3dHlYY2JycnBmRHBOcDd2emwwVVFseEZwdHlMVCtYUWFGcnJ6bDVFdGovcWxLdHlYS2wrWHFwQVhYY0dYeXZCbSswMEpiRXBnVXdLYkV0aVV3S1lFTmlXd0tZRk5DV3hLWUZNQ214TFlsTUNtQkg1MEpQRC9BYVVjdVE1N1EyS0lBQUFBQUVsRlRrU3VRbUNDaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVFBQUFBRUFDQVlBQUFCY2NxaG1BQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFlR1ZZU1daTlRRQXFBQUFBQ0FBRUFSb0FCUUFBQUFFQUFBQStBUnNBQlFBQUFBRUFBQUJHQVNnQUF3QUFBQUVBQWdBQWgya0FCQUFBQUFFQUFBQk9BQUFBQUFBQUFKQUFBQUFCQUFBQWtBQUFBQUVBQTZBQkFBTUFBQUFCQUFFQUFLQUNBQVFBQUFBQkFBQUJBS0FEQUFRQUFBQUJBQUFCQUFBQUFBQzFaNkxvQUFBQUNYQklXWE1BQUJZbEFBQVdKUUZKVWlUd0FBQUJuV2xVV0hSWVRVdzZZMjl0TG1Ga2IySmxMbmh0Y0FBQUFBQUFQSGc2ZUcxd2JXVjBZU0I0Yld4dWN6cDRQU0poWkc5aVpUcHVjenB0WlhSaEx5SWdlRHA0YlhCMGF6MGlXRTFRSUVOdmNtVWdOaTR3TGpBaVBnb2dJQ0E4Y21SbU9sSkVSaUI0Yld4dWN6cHlaR1k5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZNREl2TWpJdGNtUm1MWE41Ym5SaGVDMXVjeU1pUGdvZ0lDQWdJQ0E4Y21SbU9rUmxjMk55YVhCMGFXOXVJSEprWmpwaFltOTFkRDBpSWdvZ0lDQWdJQ0FnSUNBZ0lDQjRiV3h1Y3pwbGVHbG1QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDJWNGFXWXZNUzR3THlJK0NpQWdJQ0FnSUNBZ0lEeGxlR2xtT2xCcGVHVnNXRVJwYldWdWMybHZiajR5TlRZOEwyVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qVTJQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnUEM5eVpHWTZSR1Z6WTNKcGNIUnBiMjQrQ2lBZ0lEd3ZjbVJtT2xKRVJqNEtQQzk0T25odGNHMWxkR0UrQ2w2d0hoc0FBRUFBU1VSQlZIZ0I3TDE3dEc5TFZ0ZTNmdnQ5bnZmOTZOdjMzbjdjaGdhYTdzWldCSU5nVkh3Z3daWVlEUWl0S01NWGYraUl3YUFSa1dIVWtXaFFFOGVBa0JBRDBhQXlJc0pBVVFNa21nd0lBU0tTRmtUZ2RqZmR0Mi9mUjkvWGVaLzl6UGZ6blRWcjFWcjd0OC9aZTUvOSs1MTltbC90dlZiTm1uUFdyRGxuVmMycXRYN3J0MzVkdDBnTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhzUERBd2dNTER5dzhjRGM4TUxrYmpkNGpiUzU4YzQ5MDFCSFUzRHNDNzY4STFsK3Bnenp0WmtBa2ZKUU9QMDZkbzhoZjhCN1BBOGVaNE8wWU9FNzk0Mmw2U21yOVNocklCOWs2eG8vTGJWZmRpdGJ5TGVDNzY0R0RKdkkwL0RRYzJoK0V2N3VXblhEckt5Y3M3elNJWTVMU2VkTW1hNHRMT0hOMFB3Z2UweWhuYXVza2JwSFB6d01IVGRScCtNUmxqcFlId2EwRjhORFBMVzlMdjJmaFQ2WEJPODJXeEpHM01CM1dsaE1HVHlkblIrODJjT0xneVpUMU1oL2pzN3pJVDhZRDR6N0ljdVp0SzlrbjVPTUR2cXpUNWkwOGpRZGNwdVROOGoyWnA1UHVTZVVicFZzN0VoNTNlb3VuODVqY09jR1hCSysrKzkzdjN2aThyLzdxY3crKzVkTXVuSC8wa1lzWDdyL3ZRbmRtNCtMeSt0bnp5MHZMNTFmWFY4NnVyNjJjMmR5YmJHeHVkZXRMeTh1cjNXUnBWWFZYOWlaN0t4SzYzSFZMUzhxWDl2WjJrVG5aNjVZbTNkN2VaSmRzZDg4NlpPT2l4eWdVQWtWSSsyZ2lwSkxRQjdDWWs5KzVpRm0yTEJXUzN6a25wUjBkeTlMMHpKbXUyMUxoeXJWU3I2bS9ONlZ1eXJvVnpUeXFTeHVHZGNwNnU4THJmejllT0dTNmpwajNsaVp5MzU3NGxBc1FYbzViMmhYUDd1N2U3dTVrMHUzSXBkdVN0TDIzMjIxMXV6dGI5OTNYM1Z5ZTdOMTQvZFh0NjV1YjI5ZjJkbmV1VEc1ZXU3SjM4OGFsM1V0dlhONTU1ZVZMTnovMGk1ZDMvc1hmdmZyR0J6OTRRMDF1RlZYb0UvcksvYVVjRmZNUVdHRndwTXpIc0luMzJpa254YjJtTi9xMnVpZE1QdTJnMHpSZ25OYS83bHYrMGtPZjl1dC95NU5uSG4vaW1kV3o1NTlaV2xsN1c3ZXkrcVFHM0dPN1M4c1BhT3hkRUh4R2xWWTdYU1F4YlRsV05kV1o3ZGQxM05Ud1FTaURHaUFIT2JEeFFpZGNXTUI0b0dlWmZCK1BrQzE5R2crVHBmSUl5TGFuNGJQTmxnZVlBSEQrZkFTQVM1ZDd2UWFUdExTVE9OcE1PSFByMGVpUStKcGo0a2pPbUdiZGtxZnc3OE1KZjJCUzM5ei9RTmowK3F2cWFQVTBiZG94UkpXOWJtdXYyN3V1L1BKa2IrYzFSWklYSjl0YnorMXViWDU0OStxVlovZGVmZjdaNnovK1E4KzkrdGUvOFJWeDN5enR5RU1PQ2tnNjZDaXNwaWQ4VCtWTWxuc3R0VG9ubk5HYmNoNTBQY2ZaYi82KzczdjZ6ZTk5MzN2WEgzencxKzR0cmIxUGsvd2QyOTNTbzN0cjNjcTJ1RGMxMmpZMWFHN3FZRVhrMkJadWgwTmR6N0VyZUhXajY5YldGUUFVQWE2emhpZ0pIYjB2bm5hVVFQTWdCRkJLV3NJZ3dOV3lBUE1VNUQ1YWc2ODBBY0NITHNOYjZpd3JzRjI0SUZzVnlCd0FVbzdvMkVSSzNuSFpiUlk1aHMzYytFSmxKam5KZFFXM01pb3NlcmFSY2dabElZdVltbHZvbEZNR2dOZGVpMzZEeFFOQko4dlFDTkhPd1ZONm9xazlLU05tSW1WMk43dnR5ZDd1UzVOdTl4ZjN0bS8rOU43cnIvN0UxaS8rcTU5NTRZLzlybytxaHZaSERnVGNMMHMxTVNGaGdRUDFVbVh3cHo3aGtuc2x0Ym9tbkJNL2Myelplc2M3SGp6M0o3NzNYL3lxQjU5Nnl4ZnZyWjM1amR0TEs1Kzlzeks1YjFPMXJtNnFSM1ZjMThDL29RbnZ5YS91Wk1KdmthdjdPQWFUWDBJcHJ5c0FiR2piZkZWRDRocmJaclFRTHowdWNwOEtEbnlic3N3Z0wxVXJHVnJTS3pKeGhkRFNCM0JEYi9ISXlRbVZNcUZ6ckdnNDMzY3hBc0FibC9xMnN6NzFTRmxPdUpWWGFRWEFCeFVIWEFwa0EzeWhKUzV6b1FkMVhBYW5ZK3d2YUNUd0hHMEFvQy9CWmZMRXI0VkNLeFVaT0V4dmdzS1NmRExod0pDdHZUZDBoZkZ2OW01ZS96LzJYdmpsSDM3dWEvNzluKzVlZmZXS0tHd0NxWjNtWmo0d1EvUjdJclYrT3MwS3QzcVdycXZYYkd6VmNQNzJuL3oyYjMvaWZWLyt1OSsvZk9HKzM3ZlpMWC91MXRwaytaSTJkSmUxV2pQeHIydGx2OUVjVFA2YktwTXphSnhMa2xkLzVUdGF4a1QyYWtZQU9IT1dZOUpkdnJLbkFDQUdORkVtVXA5VTFyK1BIcmtmZ3VlNEtaM1J5OUFHdHk4VXNja1Z4UUZaaFJVTjQvc2ZXUElPNEkzWHNmTGdsSFVuTWpoZ25SMzlwdGVSTm9VUU9neEx2Vzk2dm1BUHZxSGViUXN0SldVbS9RSFpzcUtSOE5wcjZqTnQyU1psMXNNSEdIVURxR1dLUWVCT2pabE1FN3hFUUZpTG9MQjNjMjluYVcvbkovZXV2dkhkbC8vNVAveisxNzc1ajM1YzNPd0lxRVgzMDB6bXJXb3RMSmJUbDRyNXAwK3hScVBVa1R3UEFuZXUrcHQvNXU5OHo5cysrei80Ylg5Zzc4ejUzNys1dXZUMDY1cjByMnFGdnF4SmYxV3IvRldONyt2S0NRQ1pFd2h1YXFDdzZtOHFaOVhuTHBPMys4cmRjenBsRDdLbFBYZCtxVHQzYnFtN2NtVzN1M1pWZHdsU3MwYlpld0tVTFN1ckV3V0E1VzVUVjhlWGJoTUE3Z1V6c1dWNWVkSzkvdHFPQTBEMkEvM1g2eThvL3BVVHppQXFCMWR6b3dwT2c0emRnWTVsWGZwNWg3QzUrOUhkYTFmKzU1cy8vcjkvNTB0LzRzcy9JZ25zQ0VnRWdEWUk1TkRKM0V5bjdXUWZuRGFsR24xU1AvS2M4T1NzK2x0Zi9aZi84c08vOVk5KzNkY3VuYi80eDIrc0xUM3hzalpvcjJqaXY4RjFyWTdMT3E1d2FQSmYwd3lQSFlBbXZXYTViaVBYRzFwTmV3YXowUmJQQ3Zzck5RQzBmaml0OEVFQjRORDZFZ1dVSWhEb013Y0NBcE5mYUlJQU93UUhBdTBLQ0FiYUxqNC91WHpwMjY1OTcvL3dIUy8vdGYvc2s4SVFDRElJdElGQTZMcU9BSitxTkcyc254WUZVemNtUEFmbDNPNVB2dVBESDMzLzJUZTk2UnR2cksyODYwVk4vSmMxOFYvWGl2K2FqamQwQUYvYTNOTU9ZRS9iZmsxNExlSDBTcVlVbnVYYjVZc0FjRHNQM1YzNkhRZUFzZm9FQVA0MDh6TVlPQkFRREhRczEwQ3cvYk43TDN6aUwzM3NpNS8rdmlLQ29jVTFWUWFCZHRpZHV0MEFFK3UwSlJ5WUIvcmx3VFhYOXAvNW51OTU4bis1Zk8wN1ZwNTQ2dSs5c0x2eXJwOS91ZXQrNmZXdSs3Q0N3TFA2T091WGRFUHJGeS90ZGgrNXZOTzlxQ1gvc3ZiNFc1cjhlRDZGa2kvU3dnTzM5QUNYZ1hySVlIZG5wOXZtMEkyaGJTMG1mTVRJc2FYN1Nwc2FiN3VUbFhkTjN2VFUzM3ZMVDEvN2prZi8yMy8wWnNrVTFmY0hXS3h5N09hUXkveVdUYytUZU5vVVNuM0kwM21aYjMvYnYvdWxMNzN2clcvOXI2K3NMTC85T1UzNlQ2b1RQcW5yZmVlQ1g3dTUyMTJtazdoZ1YwcGhMdHpoYWJFRHVFTUh6cmo2aWU4QUR0QjNvdVYvU2NleVJxVjNCSnJtUEZPeGNrN2piWFBuUXpzZis4alhQL2NsNy9qSHFwNlhCTzF1SUhjQW1SL1F5dnpRVEs3VGtuSyt0cE9mS0RwNVdENytyaGRmK2M4dnZQMlp2Ly9penZMYmYwR3Iva2UwNHJQcWYwaFIrTmxMZTkzSGRLZnZOZDNHWjZ1UGdCUjJXb3hiNlBHcDRRRTlpTmp0Yk85MFcrd0lOTFYzMkJIb1BoTzdnWjNKOHR1WDMvck0zMy82UjEvNWM3S1d1Y1V3Wk9lYXU0RWNscG1MZEhmVGFRa0E2UkJ5ZE9MQWNkMVgvc2svZWZHL2VmM0tmOWM5OHVCZitPV3IzZHF6V3ZtVk93Qjg2UEtldC9xdjZMTTh0dmtwaEhxTHRQREE3RHlneXdNRmdtMEhBdTA0U3lEWTBnTmkyNXZkR21QMUxUOTE1ZHZQZitEcjlhaVZyejR6QUdSUVFMVlRNVnhSN0c2bmRNUjQ4dS85c2IveE54NzdMWC82ejM3WHpmTm4zdjloUGVMNW5DYit4M1d6aitOalYvZTZWL1JaSGgvalVUR0Z6TktZdGJWSng3R3BtNHRiK3ZpczNEaWVaWk16azcya2o4dzJ6aXo1QWFlYk4wN05qdlRZOW1MTGttN1kzWkF0WEs3TksrbkxDcVU5alVDMVM5dDhlV0hwNHRxN3o3enZON3h2OHZEalAzTGovL3BCN1ZXOXFJM1Ztc2V3SGJjNUtOL3RBSkFPSUNjNm9nOHIvOTZmL3ZidmZPTFgvYUUvOU4zWE50YS82RmxOL284cnVqTHhueU1BNkRQNFM4eDhwUlRnd294UGl3QXdZd2ZmZ2ZpN0ZRQ3NzbVk5ejVDMFM5R2VMZ3VXejYrOGZlUFRQK2Z6Tjk3eW1UOTA5VWUrVnhjSlU0UEFIVmg5NTFWUFF3REl5ViszL2F6OHYrNFBmdTEzWDlsWSsveG45UWxydStwLzR0cXVQOWFiNThSUE55OENRSHJpOU9WM05RQVVkM2oxMXhPUy9Ia1RvaUN3ZEg3NXlkVzNmc2JuVFI1NjdKOXBKNkE5N09rS0FuY3pBRENIeDVOLzhudSs3dXN1L3JaditIUGZkZTNzK2hjK3ErOW01Y3IvVVczNVg3d1JIK25kamNsUEh5OENBRjQ0bmVrMEJBQTg0MHNDaDRBK0NFd1VCRGJlOFo3M2JMLzYyai9aK3JtZjFCTXFIdmRtcDBwVEJqZlh4S3A3TjFMTzRRd0FCS0tsQng1NFlPWEwvb3YvNm0vY1BMZnhtejZrbGYvNWNyMy9VVDE3LzVJKzArZmp2YXg0TjVSZXRMbnd3R0U4NEdjSDlISDBydTRGY0lOd216c0FGelorMDhOZi8xZi9ldmZnZzF6aU11L2FBN0YzWldqZmpRQ1FocllPSUFEcy9QVVAvdngvMmoxdy9pcytvbXYrVCtoei9lZDEzYy9OdnBkMXM0OW45TE1pM2xxa2hRZE9zd2QyTmZ1M2VRS1ZUd2gwYkNrSTdEMXc3aXVmK3Q1LysvWFNXNWpUOGZIZ3ZBTkF6bUh5REFCRXhPMi8rYTkrNW5lc1B2Ym9OM3hNVC9KOVFoUC9FNzdacDBkOEY1TmY3bG1rZTlFRDdBVDRacUtEZ0o0WDJORzRYbnIwMFc5NDB6LzZtUytWUFR3eDZKMnZjdVpDT3pkVW5FK2Fad0JvRFV5RGZRL2lqLy9OYjMzTHc1LzVybTk1YWF0YlkrSy9JRWV4L1g5Ums1K3Y1bWJGK2JoazBjckNBeWZuZ1YwZUhOSjY3OHNCM1JSVVBGaGJlL3U3dnVYaGIvN3ZueTZ0NUVLWWMrTGtHaitFcEhrR2dGU0grY3pCNU9lWWZONVhmZFZmdkw2Ky9KYm50ZnEvcU1sUEFIangrcTYvcHJ1WS9QTFFJdDI3SHRCSEF6dmVDWlFnb0V2YjNUUExiem43MjcveUw4cW9uQWM1K1hPNFp6NXp1K2NWQU5JZ2NnN2FaZkp2LzgxLy9jSDNUKzYvK0h1ZTA2dWNYdFp6L1JFQTlIMTdMZjFaU1h5bklxWHlldFBucDBUS2p2aFVNQ2I3NWxUYVFoQm9kZ0k3ZkJoNDhmenZmZFAzLyt6N0JiV1hBbk0zdzQvYnpzbHBhVnhPL3NtWC9aRS84c2hENzNqbk43NjgxVTFlMXFyUDhkSjF2YmxSWCtyaDFicW5LZms1RDNRcWVxRWZCdDJUU2JyYnY4V2UwK2JyWS9tMHNjVjlkU3doczZ1MHAxZEs3V2pFOE5YaUhRMGN2VXQ2c3ZyMHAvMzVCNy9pNi83UFYvLyt0MnI1ODZKWXJLZ2ZEVktlYVpwSEFHam5DWk0vQThET2wvM1p2L0MxVzJkWDMvbkNTL0d0dnBlMFBYcFpuL1VyQnB5NnlVVlA4QjRJbmova0V3bHRWazZkamxMcFVLbTFCWHV3NVY1T0RERHNJT2REZGwxcW44cStXZEV1WUdsbjJZK1E3MmlzTDExWWZlZlpQL3pudmxZQjRMK1V5c3hGdWlaTkFaNTU4azI0R2JkQ3YrVEI1TWZRcFQvNHpYL2w2VS83cmIvOWI3MXdZM0tlWi95NTZmZWNQdko3UTkvb2d5a3JuSnBjM2JHdTd3R3M2MVZhL2k2QXZnOXdLdlU4ak85a3k2cWVteit6c2VTYlV6dy9mMnI4ZkJqOVJ6ejB3MW5ad3VwNlU2dUh2c1ovS3UycHUwZGVOaUtINC9PVk0rYytjMlhqM1BkZi8vRWYxaDB3SnlaK0hyRE1OT0c3ZVNYYXlodC9PMS93dFYvNyt6YzNsaDU3V1pQL1ZTMUJyeWdpTXZteEdNYlRlSER0bjhkcDFPOG9PdUZuMzh1UVRVZXBkeHA1MDVhOE4zTWFkVVFuOVBTbkFucWdUWnVCYmxmamZrOXo0TXo3ditZUGlNU3pBY3lQWklXZGxIbVVUdmc4NjBzQTk0MTBUcVBJdXkvL1UzL3F6YXYzUC9TQjUvWDFDRjdoOVpvYzhhcFdvVjN0cldldDBISDl4M1ZsYThReXdlQzR3dTUyUFd3cCttTVR0dHpyS1FlYWJUbkY5cUFhNDV5Zk45cVYwbHdLTE4vMzBBY3VmczJmL2g4dmZlZGZlMEZrdW9RanJjaGNxSk5QODVwdjlFOGF0dlBGZi9qcmZ1Zk9tZVVuWHRHMVArL3VlMVZPdUtUVm4ydTMwNXJvaFEyZEZMeDlENkI5b1B1MDZudzd2YkNGQTF2dTVjVGd3ZzUyQUl3aGJxdWY1clRFdlFETmZnNzlLSW0rTmJqOHhJWGYrOGQvcHdMQXQwbHY1a25HTTFrMDJ6VExBSUFScERUR0FlQnRiM3ZiMlhPUFAva1ZiUGt2eVhoZTRmM2FUVjdQSGRmVVVlWDBuZlBPY3ZaSXJxQ25UOVBiYTRRdFRCWnM0YmpYUHdWZ2dMVzIzQXYydEx1QVhVV3M1WWVlK01yenp6enpkNjQ4KzZ4bWhvUEFYRzRHTWlsbm1YTHlrOVBXN2dmKzFyZCt6dTc2K250ZjFiVS9yKzUrUXdIZ3FyN2IzektlVmhoSFdUZU50dE9xNDJIMXFyYWtUZmR3ZmkvYTRoOC8xUlRuaGlYM0Fqck5pYk4vNnRzK1J4QVQzNHVsOHJZN1ZUejVOTXNkUUdxTEVXblE3cHMvKzNOKzg3Witjdk9LVm45K3VJTlhkL084OUR3VVNZV09rL3NlQUJPL1RQNTcvUjZBOVMvMmZFcmNBeWkyc1ByZkcvWndJMUJ2SGRhUFNPOXh6WEsyVzFuNzlIZDlzYUFmMWNITlFHNEtNbmRtbW1ZMTcxTHhqR0FPQU9mT25UdXpkdUgrTDJMNzcxL3MwUTdnaWw2dHhYVmJWcGlwdFhjZ1hPTXFYdjBrZ0dCd0wraDhrTG5ZZ3IreEkyMDVpUGRld0xlMk1KZkc5d0J5RUdJTHRwK1dwQjg4angwQS9hQUJ0WHord1MvU1R6YWYxVTlQYVdtY3oyWEFyQUlBUGs2L1o5Nzl4OS8wVFUvdHJhNS8xbVU5OFVjQTRGZDcrTkVPQnVGcFQ1NHNVcEw5R2VybVRxRFgreDR3SXBWbHdIRlVXKzRoM2RPR1VkN2FNdkdBWXRqMUtTM012S2ZjUFVnajN6Y3ZmUm1nS2IrMHN2NVpELy9SYjM3Nms5L3k5YjhrclhMZXBDSGtKNjcrTEFNQW5rWHB1djEvMTIvNExlL1pYWnRjdUtwSEh2aDEzcXM2K000MERLY3hwZWZSRGM5NzBnc2dYOUlnTTcwd2didG5rblJsbTh4MitkN1pNdC9hdTJsTDJyTkhoK2gvblBaNEFtZVVwckNOT0daVVJFWHZBdlJwQUJ2K3M1TUxhNS83eGU4UjlBczZtQmFwTFBsTTFKeGxBRURwUERCbTcrTGpiLzQxbXZQeEE1M2FBVnpYVzFQb3Axa3FvZVpPSlBHcUo0eHhyNVN1WURkQXQ5eXFkMmJTYTNkb0VUbzU2QXBnc1dUczNhc0ozN2VKUHNsK1NkL2JWdUU5R0ROd3U5VFd2RHV3QXdDL3RDeWw5NlRvOGtOditseHA4ci9xOEZCVDNwb0luR1lKdlBNMGk3bVhDcFBuZ1RHcksrZlB2NWZmN2RQWC9CMEUrSFhlMDVEUW90VmtBRE5Eb0N2ajRQTm1CaGlxcDNFQzc2bmszWXFVcm5wWDRKNHl3OHFpT3YyUS9ZTlJwY3VxZmVNQUIzOWFuejhqRGlid1FIM2ZSbWwyWjc5RFVBT0tjY1Y5Z0tVekY5Z0JuTkdSOXdIYVlYYmlQVFdMQUlDM1dsODZBSC94Qno3d1lMZXkvdlpyK3NqamhsWi9EZ0tBTmdFRFppcmZyY1ExV2F0NHE0Znh1TDhjYkRXZE1oZWhnb1dVMlVINHBNODlsMEs3UElUQ3dQTng2alE4bEV2YXZ1STYycDJuMlUvZlFFdXJEQ2RDT2Zpa01RRXpKWjYzK3M0cjZUTUFCU3kxclA3d3B3RXJhODljK0xLdmVmRHlEM3puaTlJQlJkcWpWL2FFRkp4VkFFQzlnZUx2L2ExZjh1VDJaUG5oNjRwcitpRWZCNERUOUxZZjN1R2EzWjdYODJrQVl3dGQ2U2Q5RjZnN3E1QzJvbDkrNDdmaGZLa0pJOXU0ZXlUWkRobHluejVzMG9jdzNVUmZjcnFYRTlwZmtDMFRIVmZWSjllMHNPUVB4dmhudmQwL0RFZzlmU2Q3V1pFS3ltYm5yS0lMd1pNU0Y2WFpuZWtMZ3BkamdCYkZwWlhsaDgvK2UxL3lwQUlBandXalRxcUVFc0FucXRwSkI0QlcyVlRZU2ovMnpEdmZwcDlMWExucGxUOVcvNG4yUFNldEFJMmVWR0xpNndubDdyd215enN2VHJvbnowKzY4MUo0YVcxSlBjRXdHaVU2YzRSeWNTcnlBTjVwOVVlNHNaTkg1T0dRS1VUWEdWVjB4ekQ1ei9JN2xpVWQwWWFtV29KSHprZHFEZXRQSVJvMXdsTmtBbTgvdHVxZDVldDZ2dVNqK2dHWjUvVTdFbHl1RVFqd2VGd09SR1hPNEd0UDFuNENDQjVxelRMUmtvTUFnTWFhM2hPd3N2clVwNzlOcFovUWtVcGtMdFRKcGxuTlB4VE9BLy91bm52bzRiZnhJZ1FtMUpaNllYTjhZWGF5ZGgxUld2UzhvN0JxbHI2d0FlKytmNm43TEMyVlRQd3ptaWZuOVZLQWRlWDhJaXdHdWdNUGFBMTU4SkNpaFlCbmRSNjBwVUtXNzdROWRNOWQwVHpzUU4vVTNlM2R4aFo0NFdPaWIybUJ1YjQ1NmE3cGVNZjVwZTRGZmNuc3AxN1o3bDdTZXliV05OdERyaGdGc09lakRrTVJQSWQzQjJaQ29nSGxzMHUwRVBjQnRBZFZrOTZGUFBEUTIwcUxWcWZBWmoxcFRVNDZBT0MxR2xBRm96VEg4c3FaODIvbDVoOFRQNFBBYWJqKzU4b2RwUWRKQ0xiNlgvREljdmMyRGFJSGRFdm1NeC9xdXZ2UCtsTE5BNGJkQWNlK3VrWFFRZmhCTzNNbzRQempwdE5pQS9vZnhnNzA1V0JDWDFjZ2VFRWZONis5T3VrZVdsdnRmbFN2bmZyd2xkMU9QNG1vRlBzM3JyK0JYVS80N05QczFMZ3NQRXpMeUR4K1d0Yk05K1NYSXVSTGErZmVLbWs1K1ZHZ1ZRSVlsVThrblhRQVNFVlQ2Y3hYbGxmWG45aFVwM0J0UmhEZ3l6KzdzaU1ybklnMXh4Q1NDckxDSmN3ZDJjOS9lTGw3KzRXbDd1MzNkOTE3SHRIV1VrU05uMjVMOXpENDhvWnZPcFZ1b05NT2xaTC9VTXlIWTJyOTExN0RVcHZtV3ZyaEpCNkNxN0czQVE5UjhkWXNyYTVqVzI1ZFUxUXE2NkRlbm5ablN6cmVwTDQ3cDZEOXk4OTMzUmMrb2tzRC9ZNzNDM3JaN0xJNm01SEhoR2VTOHlLUnZLbUxQVDZLTW96UldhY2xLMTBhMXR6UXczSnZWbWxOQjUrYUYwMEV6U0NkZEFCb1ZVUnhLLy80NDQrZjBaWE5JNXN5aDV0cC9GcktMdGYvOHUxTXJXdTFPU1NNZnF6NnoyanlQNmtmZDM3Zm8vcStndXBlMGRPTHUzcHIwWkowMTlpeTNsTjFsMDJ6SHpLSE5LYXdWVDByY0p2NnA5Q0cxTmdtSEdBSGZpZDRxNHY4bWZxMlJ2ZXFwdEZqMnIxOTRxV3UrOXlIVjdvZmZHN1QyLzVsSmo1OG12dzdpdUJjSExBN1FMVEZ6N1VUbXgyQWxGOWFYbjJrZStLSmplNzU1N1hVVkpVT3NGb2NkNUJtR1FCUXkvNzh6Qy80Z25ON1M4djNiMnIxZEFEUUpPUFhWS3V6NzhDQUU2bGFCanplNXFiUVordTZuK3Q5Vm41KzB2V1N2cms0MFMrNzZLMVQzVXE1d0duSFIvYU1jUTJoQVU5RXphTUtTYjFxUFNGYVhPcTNENWVFVW5GVXJPTG1CYlQ2dWMyUkhlQmFIWUVaWjN6a3ZLVkZoL3MxWjNVWjk0aTJjYzhvdVAvOEczbzlaOXdWZERCbkV1eHFWN0N0bFppMk1zQVBuQ1g4ekJJS3M0MVUrL3kwdUNMQS9lYy82d3ZQWFhuK0gvQ2pZcTM1d0sycEt0NVptbFVBUU5FOHVzYys2NzNuTmQzUGMvT3ZEd0RpT0ZGVGp1WUkrMXhWTkU2c2hqMHI1T01iays1KzNSbC9RcXYva3J6RCt3cjIxQTM2K1hrSEIvZlRxS2swQTlwcFN2dlVFV0xLazdCOU40aStyODRwTUdpZlR0aUJYajVOVnpBL3JtVzNlVTNIdXZyeXFtYjIyODR2ZC85T0FZQUp4ME5BclA1OHBzT2s1NTRBWDB6bmNvL0VaU0h4bnVJdG1vTDFqcFBIbGRyajBsSjZuVjkveDdzdlhQbmhmOEN6QUtTWk5UK0xBREJXZHUrUk56MTVZVyt5dEpHVDM3bU1WVGZjdFpSSzBza1o4ZEhyTVFXQUZSRWZQcStCSSswMnRmWG5iY0FzR0RuQk14OHJmeEIrekhkWHk3TDN3T0hFQUx5cnloMis4VnVaWVNucUw3YjBYRWl2cWw5NVpvUDdBZzhvdUNzR2RGYzArSmp3VEg2K044RHFEejlqZ2U5SklKL0ZRYy9uT00zU0w5YURCckxSbGFXTmxVZTVBSFZDZ3p3SzZ1U3lXUVNBMUs0cWZlN2hSeTdvMm14VnIwYVBhelRsK1dXVVpMN2JPY3B5YStnOEgvRnBzS3dxMXlkSDhUVk5FYm0ycElQSWFnNmN5WVFzRkw2K2VOY2c3R3BUNnQvaURvSkhKaDNFTmpmOFBsdGFCUnNpSUNSeWdya0R2QkFUK2xXUi9LeG1PaStoSWFycmJEcjM0ZmhVYWtVMXVTbElvbDUwT01Ec2t4ZVFzR2wxNytLakJJQTBZMmFObjJRQUNLK0ZxZ21UNzIyY1AzZUJKMzU0N0pRZ3dMYXJmUVJ6WnRiZFFuQXFpSXZ4TXJkYkdRd2JHaFIrd2srOXp5VUwxMlFNbk9UTFRvcCtFajVUZzJqQXBONjFQSFdwOWg1U2s2eDNTUGE1c0tWT1UyMkJtQVRsN095WTFDUmdRT1kxK1lZQ0FKLy9yNWtuVm44bXZ0N1k3KzAvbndnNGFKVDZ5QkJxdGtrRGE0TENOS1RHbDgrZHpSMUEyeTRhbmFncUp4a0FXa1dCcS92V3psODhoMjA0blpXVVFKQ2RNcTQwanpJZXpJTkp6OEhYZTdYb2U4Vmd1NC8yNkFrams5NTlVMkJoKzhzQkZ6amRPdEdlVXdVU2NVSzU5RVh0ZzlKSk5WdmxWT0NnRnU4QWYweGJCdlpUU0IyVkp3aWErd084TTREeHlLUm42MjlZT1o5TThkSGZscUpGKzlndzlUaG1sVHpHSkp5Y2hwWTJMcDZqR0tYWk5UM0xBQ0RkUTNHOTZPQWNsbmoxMTZRaTE1T2FweUpsdExjeTBvbjd3S3dVVEhoL1VhYm82UTRTVE5HZFZPQTZzc0JQczJpQUhCU21jUjhmWjMyYUlkcUFZNkhUU0xmVmJNQXdLSXpGMzNtNXRXV2FzcVdGQVlrQ2FwVzhncFlWTkhEWmQ0ekJmdUwzTndTWG1maUlLZlh5aHFCUU0wMXIwaWUvRTRDZTNlbzZBWUNVWm1ZZTJCTTZuM1FBbUtya3h0bTFzMnU2RzdQR1k3UWJmQ1F6NlM3cWpzeFU1aE15N0RCaUdBem9nTU41SUlUeWlrWUZPVGdmT3JGcllWZVFaUThpNkVZRVhrVXdrUld3S2ZYNG1VSk5pd0x0MzMxT3h0S0Qwb2hTaWlQc1FaVlBHRDlzZkw4dFF6c3FuV29VU3U2K0ZFd3grKzNNaGg3dDNsbnlUc0M4bXZScytibmhSOVhvNi9oSTBHSXNYSVFacGlVMXluMm5GYzNJZGQyQTNyNndxa2VZRGt4cDRZRU1oeVdjZEFBb2JnKzNTZ203YnUzTTJzYUtBc0M2amcwRmdETXk3Wnp1dE0zQnJ3ZjZJUld0REVLQVcyRWtGSmdCbzhEc2daTjVTK3RoYXZhSkVpdElwQUJxTWRFenlzT25jWGFibkFhT1Bwd21ycmFQbGR1azgwdGpXNnhUYlQ0MUtUczJGZUhuTUY4QmZNa3BCRHM2Q1BUTCt2cHlkMEc1UHhrQUxab3Yrd1FqZ0IzQTBHY2dacHZRaFFEQXdkcS9kV0ZOTTZXYWhQWXpTU2NkQUZCeW43SmJ1NU9OaVY0RWVvMTNBZXFobWl0WDlycXIraTJBZll3ek1YRy9VUFc5QndrNUFCL0RKTHpEMHo3U3JQSUlZUEo3UWdzMnZoREhjRkRqbkZ0SW1waC9RclBvaURyd2o2Z0VFaktJaGJRakNqZ3g5c2FXSXJNZk4weCtkbTVORUlDb0ttUUZkQUJQRzhEZHVMN1RYZEp6M2F2dTZxZ0xONWQrcnNkSnlTK3JUNXpLQlczYVNaOTRNR2xWSDFud05YTjlqNm5idnI1RUFKaDVPdWtBTU5WSE96dEw2emYwUU0xMWdvQStYTCtpSHdHOXBKY0NUR1dldWNsOUE3UWZnN3dFSTQyU25RZU1OVk91SHI0RUVJWkIxRzc3V3hpaUI1bFBCUTZNWlJXMDRWbWR4djYwVlFOOTFQS1lxVlZtcEdSZm5BYTFGVThlSHF1NXp4WXh3SU5tQitZaXVBOExYM2JIcHQ1R2MxVnZwZVhiZ1o3MWtnREl6M1d0SUUzL1liRVdnZ3FmdkkydHhGVnRBVmEwL1dRSHNLM0F0SHR6d3VNbk0wOG5IUURHQ3N0OWVpeGJEemYzUXdpTVArbHd4NDByekx2c3FDOTkwSSt2SzZOd3J0NU04SG93RUpveWVycE1UZU4xQWxmS0xzejVGQnEwamU3SHRGUjNUb3NBdm5XVk1mZk15dnZWYUREMGsyWW12dGE2clVtcW5KbWFCbVV1N1FnQTBVL0ZOSlVoYzZWSFloT1ExLzdnR0FPYWcwNkpMOFhaWnlpbVJEYVpMS09HUVhDelNyTU9BT2c5bVN3dHIvQXhTMDZnV1JseldMbkZ6NTdvd0F3dGZ3OEFCWnRFS1hjQm9FMHVkbkJaUUVYWEtMaktBK0JrYWhiNi9BQjB6M0JFS0EzYVYyMUlvTm5ZOGV4anJBanoxRklDUTRVcnp4Q2R6SGVXRDFVdXN2WWpFK05jZWhESVNXUXRqVDV6RUlCWTlHMmZRQVhGSjBGTWRnSUFNSGYrbVJqNVJDQ3hoVlNxUitHa3p4TGU5czFraWR1QjFSUmFTN05PdE9WWkJvQkc0UWtmcjhZRVFuMFZjRzdEY0tKR0hWWVlPbTJqalA1WkNlaDhyLzZCc3I3akFOQUdNYi9Jd2J4Um9WLzlEWVVhSXMwOFpSdjdIT3FOODZENS9aZ0JXWVZHZDVkRzlHeHJoRDZ4WXNvZjJCTElRTFhuTW9hRXl0OEN5R3JrSE5sL0tSWTl3Yk1nc1MwbGtMUDlkNzlDOHdEUUEwR0MrWmpRdHduYXlzTFBKS0VVN2Vnb3VyUnpFeXFKUERtTnVOTlQyOGlkeW1ycnA4TGdlTFNPZHg3VUNaWE9iaXZNRTY0clFtblVYcFYrdnROdmhYdGRjd0RCbWpiMHNHb0t5YVNLSnh2N1BIam9VVU1sbjBYbVRiQUVvMHVSYisvN1ZGR0hiem5xN2VQSCtKckM1aWkyK01wd1RDRGE5am5GdWhCNG93VEc5bDlOYU5tUFZSTWYyQU45dTBLZ3N2dGF1YS9sbGNNZmRjSmRCSDM5bDQvK1loR3dNT0g0eGlvM0FuMnJvSmM4RXloMVFobkRtak16YVdna2RGWUJJSnR4ejJseThQWHJHSXpPNHlrc0U1Tnp6cmtIVERPbzR6dmh4ZmxGMXh4QURDSVNaVmRwNkdHWEpvUjVnaENnejJGempxaVE0dlB3ZERSUGpMbjNyZW8wWFVjVUxmVTFlbWlvQWFYUXVNVVh6RDVDSzZXRjI3ckhod2ZOVWJBdE1jbVJhcFRGSnhTNXo2Z2pnSXdqQTNqMkc5V1k5QnpRK0s2QWR3R0NTZHdEWUx0SzBVRkRlZlkvOUZrbGRodHRCMmdwSVFDTXNDZmYrcXdEQUJyckU0NGxmZ2F0TjdBNCsrVE5DWStONWJaelFZNDFPVlhJYTNtMmVwREFlNklyOStBUmczNi84UllUUHlxeEp1NExBdGxXTmtZYlUxUFBRSTg3VlNBUjQzdy9RNHRCRjVkOTZ1WDNVZ2JjUFhvTXFTcTFiODg5clkyeHNJUEtyZlRnMlk4SkxRSlB5QXNvK2FibDRPaEQ5eWM1b25WcUp6d3dsdzk4QXNBWTRDTkZnb0JuWDZrenIzc0FxR2NsVVZTM3psMmU4V2tlQVFDSDg2aDkzeEdDNTMwUEFKL2kzVjMxWnNBTWFtL2U3WFFHUWlnSVlGUjlGSmpIUm5PQVZUdVFvb0xMQlhiR2lmck9zcVVvcHd3ejVBa2tiR05pcmRvVDhrWlhWSzBNS1dtVWwzckpwbUl2Q2RZa2pLb2xaVUFlRlBaWHVHUE1yZVJMYTVIRGRnSHF2d3JMb3VoRExFT0d5c2xiY2dkeHFrSG1LSWtiZ2VzcTArLytDQkM4eW5FL0lMNGx1Q1JoU0c0WEVOaG1rV3hUMGMrNlJqeWFSVk1EbVhNSkFHclJZOC8yNldTbkpuS2d6cDBYb28yYzVLekxPVFNRYlRVYzhYTTBtQjZ6VlNpVitDOUg3Z0JZRWVxTm91UVJvNi83WFNVcTZPektrYnZnOW9HY1RCQVVhZ3h4aGRhVEJMa1FCTUJVMDRTZU1lVHNPL2Yxeks5aXJtVDdXRnRFMFVQY3h0Wml5ek5IT0hveSt6TmNram94TWJFcFhXRWZTYmUyUEFnQVJXL1RFYUlqNnNSczh5Y0I0SVVrWTdIZ2owQXc4MVNhb0NuYnRjY1BoUlgxWnRqNFhBS0FKb3AzQUhqVmRzcXg0ZHlUczZ6NHp3S0JjOGpZb2FVWndrRzBIOXd4b1pqSU1PZ2tJSDZzTVZZR3ZnekVTMElJQUZrM0puM0lxVEJWczM2MjFjOVdpeTRjaFJvOTJ4YzhKUHNpVUl4TTQwd2RMUDlhbWNLRVdxY3NpMzE1QU1WS2hvcVdHNmNCUnhSc2lNRjk0b1VkNDNvQkIxTjZubHRCUS92SG5ObVhLSjhCQVo2RS9RbUEvSk5TMm54d0NTQTE4ZHRTMmRHeCtyTVRaZUw3eFNDTVM4SDU4Ujh3bG5GWlFJcXp3Uk0vc2NCNENCWEowbk9XelZYOTV4UUE5T0dLUElrejAwaWNmeElXdGpKaVVzVExIa3RUcFUyMi9ucStXaWUyODB4YzVwUHJlcUpxK2hZRnQvVDVFTytLNE9VUWZvVzV5cHVGSHg3ellVYkM1S1hzTmxWMkt2Z282R3gwMEFxSFVibkNNQUFHdjFOWERIT0dza1Z1eTFObEF5UWRlQkFzUUlTdHZRcEFTRTVONElnMEhSdTB0RDE1VHk2Zm9zZllCckZVbEd4TlA5Zy9Vc1Q1Rkh6ZEFUVEtldXd4RG55VnJacWE0R2hRZDNsQ0lTOERRWm4vdmx4b3hKd29XQU02aXZod1NLQU5tM2FpalRYQzVoUUFpb2N4VEFsalozTVBJQnF3L3d6R2hPYzNDQi9RRjVIZTkrQlM5eG4zVGJxbnp1bGQ4WHJROHB5ZXRlTHVLeDVPTHordWwvOXRDSzhmQWVxMjlWcnBYYjFNY2tVakx3WmZXV1dLYkJ0VFRtWCtxUlNoT3pScE9aSXhQb1BlMU1pOHF0L2xlazJ2SFhwUnI2citwSTR0YlRsNFkwME03aGprMXFzb1p4MGt1TWNWUWhGTktWUkxKZ2hEbmg2elg4TURNZnNKaUhHNkJTbFpEcDIzbWtaWXBXcGd3elphaXo3SWRzRUhiWHBlQXdBVlNpVjZDSkRYY1h2MVYrZUJ5M2hBSGQrVkw3THI1RlI1Vm9tK3BSMXNjWnFnMmV6VFBBSUFwcFdCS1lOYUkrL1F2dFpEckU1RTlwcFU1Z2RJSDlNRS9xcG5WcnJmOVpZbHZSQnkwcDNSN2QzOGZJWDZLU056QmtZZUUzMGRRMTlqcWp6SVRyNGhGc3IrbEx6N0tYVXN1aTE5TDZwN1VUOWg5YS8xNHhVZmZHVkxyMDNYdStzSkJQeVZrVkZoMVloQWdQUndKclI5Q1NPY0N2ODBubVNaa25zQ1ZobGhkMU9jVXVQa1VMWXNHOU9zcVBZSjV3ZDF3QkJ4UzBTMGIrekp3dG1UdlBOREZPekZYZmFFTDBHRjg1aFJnMHkrM1A2VDg2Q1F4MG5qV2tUTUt0VWdReU54TkMzUHF0VjQ0bkYyMGh2SmRFQzFUWUNmdW12b1J3V1JSYUlEYzdYSUNNb0RIRGUwaC8vU3A1YTZiL3ljbGU3VDlidCtlSk5veHdFOGw4OVkxTTZ0VXZwRHIwZm8zbkp1cVh2NjNIcjNub2RYdXgvOHlQWHVlYjIxY3MzYmt4amVqZ00yVUdYMnBJSnRGVUlNMHhLV2pSSW9PU2tuem9nNnBSaWU5VG5BS1R3dDZsQk1iWVZid0ZQMEYzZGU2MU94NVVqWXVkUndQTkJvQ0k4RjgyQUhnQUR4NWRoalRESU9HRU80bW5zK1hCYjRHUUdWK2FRQWw4TkRHN01jTTNTcGc1VGFtV2VheHc1Z01QRXA2UDlFZnZLRVRrR2E1MFdBaXR5NlpsZjQvaU9mdnR6OStmZXRlTVhuYTFYNUJRL1lUa3RDLzdBaE5HTEE4YU1rSC9pTXM5MzMvTUwxN3BkZTMrcFdOVExaQmRTRE9xb1VnNzNrakI3ajhXejQxOEVoQ3lXUElFQWhlQUtLYzZ2SHRJRllnMnhiNmNUaGJBVy9GSTFrVWs3c0J1dVdIUmhrZXdhM3RLSG1xc3RLVGhEUXY0K2srZWFmY0V3QTAzU2lIYitXdXdRQjQ0V0xSY1pOenV4VWZ5UW5GWjFaUzBQQjh3a0E3WWZ2eGNDTXdrTjFEbGZLVHFUckRFdW1PMGtqOTZaVy92L3dyY3ZkTi8zcWxVNjc5MDR2VjhtaGREamhkNUdMTFNmdXVhakgwLzZqVHp2VC9lMS9zOU85b0pmYTgxWFJuUFI5THVOWStjdHV3Sk9EeXFUZVFWRXVad0tsMHdGME55NkdaQ3ZjK3pIN0dYcldPNEVHZXNWS1RsUFd1OUFDTnJhYW1kVUlDTzIzQXZHVlYzV3h0MEVOR0FsZTZjbDE0RVlIaFZMSDl3QUUrMUtqdEVTZG1TVzFOWEE4QTNvT2FaWUJBSk9jN1BDbUV5RGtVVmlPbEZtd2hKSjdpMGR0bGZuSTdxMjZ6di96djJxNVd4ZVJHM25tUFpMMHU4dU12Z1NDKy9YbXlpOTkrOW51YjMvd2t0NU92S3V2VTdEU1JTRGcvbkFFQW9BYzlBelBzbTU2cE9wVWpRK2dGazJmYnVlUVZFcEQ1TlNLaDJDWldnL2tnWG8xRVdzdzhXbXMybTNRUW9JSDBBeVdPNzRFb0MybzROa1ZlcDZCVUNJSTVQWWZPZ0VCSVNaWEpjMTY0cWRxS28zcG1IRnpWZjlaQm9EYWlGZm5VaUlZWU9DeWtNY3hrdW9rY3JiTTVEaVBuSS81L3ZBN1Y3b25kWmQvUTRqanlKZVl1NTdRbStNZCtsbnlkejI4MXYzVUoyN3FsMjAwK2ZVQk5rR0FtMVFFZ0FnRUZFb1F3QXNpVU5jSnB5UmdaRU5MMGlpUEtxVmlyVDlpVW5FL2FUOW1mNjJETUtGeDFUdlpVcVFJcGxIR1ZrcUd3UWZnMVQrNHhCSVZxTU5FcmdzUUNKVTlzV2xEc044R1ZYd0duLzFLSGZIR1Y4UmpoeEM4VkpwTjhrZVN0Ri9FQzV4TG1rc0FzQ1ZZVkt6QzBUZzNqVDJLcGRVeEJmRDJUUUpaL1o4K08rbCt4OVBDQ0Y2RGNBOG5kZ0VFenM5OWZGMEI0SVoyQVhxK1FUYnJXeFVPQWt6K1BaOFl0Sm9TeFpuOTNmRXd2dm9ZZjNtWnVaVmp4RVRubE5SRGljbThVQTVtU01aRDVrVlFHdEhVc3Y2ZW1hRjNhMThFQWdVRTZrbUVjOVZObXpHM3ZRZUEyS0RwTndCRXc3L2sramVlU1U5VHVEWEhLano1Z1Z6S0ZlckVFOWJaOVdyZjNZUlNjMGh6Q1FBWWhqMXBvTzA2cG9IWmdjakFhVVI0T21sYlBmMXJIbG5TeDM2VFRyLys5Q21STU9QTjUxZTZCL1VXMjVldTd2aVZVUkVFWWxCNjFXUHlpOCtEcHNBeEdYREJ5QkgyT1JNRzJ2N2svaG5YcVd5cUhQL0NIQ0NnOGg0VGtIeEw3azlWVUQveHcxNElpVXR0bkNNRG9PUWVIK2l0SXhQamhTSStLNXVGbVBqQzhkUW5lSTh0WUNvMWRTbk9KS21Ob25ib05wTkc5Z3VkU3dDZzJYYnllN0R1MStWUUdBLzYwaUh1U0FtT1FMRFh2VWZ2OCtQbXpkeU1PcFRHeDJmQ3JqTXk1dEd6eTkxemw3YTh3dkVsTWU2Vk04aVpDdjdDQ2lPSHlZK1R5K3dPSDBjWjhpQVYvdzF3bzBKbE1WQkxNNThMMXJWdEU3c2EzWUl1aG9MUGN1d0N5bTVBL0ZtbnZRUm94SGpoZ0FlWDVXU0g3cDJCQ05CeWQ4QXJ4MGlTN253V0p6ZUJXVFFWemMyaW1YMHk1ekpYNnAxWW1zZElaVGozdU83RVB6SDUrMTBBMyt0K1NoK2hrYnlGTTNSdm4vQVBGajJvTnhWekNiQ3M1ZDgvSkNrbjhtVlJ2bVB0RlV5d0I4NDRDR0IrRXhRb2txYjVmZCtZVXoxd0xlOCtIa3ViemFtMjIraWZBYzYwb2x6eWtWZTQxTUVuakpNTUFza0EzcmJvVk9LbEw2L0FNWGI0NGdvdkFzRzMrSjlkMTh5VDJrcjkzUmFLenlITkpRQlVPK1JJK3NaSFJSNGVZRWpTRis1ZjVYUk95TnZ6aXgwZTRBTi9NWHlxQkFCWjQzUmU3Ni9lMWlqZVljTFhQeDVqSlJCb2hkUmc4VUNXN1pIM0s2RUY0Q1NuR0dXRGdWWW9aT2JxVHcwbHdKVFNNTzdqdVRQRUFmcTV3OHRPUUhCYzY3TWVpei9MSlUvYk1tL3ZBVER4d1hNd3FabGp2dGNpMkE4Q1laaG1mUVlGbXZYRFFLcVE5ZTdNdm9OckQ0SVNhaHpNZXFLVXVRUUFqTUdabVFDSnlqajFPTWtkcUlyeGhSekprU3c2a01kOFA1VlMrb2NuQW5mM0JZQ1kvSHg3a1FuQnd6QU0zREpOWWtlQU0xSklPdVlXZnFkZnBnNjlJQlFKRVlSTDRZUXoyYUMybU5wT3JlN29uV2owQVM0NDZsQTJPZmxLUUdDY01mWTRYRis1NnltcnM2eklZa0hoSGtBK2xKTTMvK0FyMWFnMWsrUkZpMFpLc2kxWm1HRStsd0JnQitMRTlLSnlERHlPa1hRMjlSQkY1OUpwZkhQUDEvN2VFZ2p4S1pTd0U5dFkvZGtGOEc2MTlvOGZsTWlQd096VE12RERRNkloZ0dSblp5RlFmUStNOGFJWFZHVDc2V0FzTWtXZFFON0xMSkF5dDZFVE52cjUvV0xINEFHbzByYkhCcWR5Wnc5V3hnaUgwVVdlc2dnSTBIWGtkVC9yQnpzRGdnQndmdzlBaFJtbjJrOVdUbzJSenlITkpRRGs1VXdHQUl6RjBlN0xZeGlKYjl5cHlpMFRiekh3S1RmeWdJL2JSaVBtN29NeWhBQ1Fsd0RldGtvcjRwM3ZDWGdISUZ1THNaa3o2bk5Ia0k0WitNaXo0bGJtTmF0OTQ5Z0VUOXEzZy80cU04TDZsd2I5eUMrVFd5bFhjL0tLeDk2Yy9FVVk0d09RSXplSTZZTnFmakVFM3BUTG1HVlZobFJVRVRURFJGc29PZWMwbHdDUXYzcUtiV0VqQXpNbTdHSHRUZC9RU1JsUUhLMlJDRkVPVEo3RHlreStvOVJqUU13em9SdjI4aDREdjh1QXhqVlN1RkhsU3lEdFUvM0RHSW9HSHF3K3c2U2t5dm1jZkNDQ0oyRVArQ3lVdlBlRm9QZzNwYlc3NXhsVlBvRml0b051cE5UZmVIQUNrc2QwVU1MbnhJMWNZNnNnMkRWNE1qZEtVNThiaWlGT2RBRU9xaUw0L2ZYS29lVWk0KzA1alJrN2JOL29remdSdUdnMGo1T1FlUWdaY3drQTZPRU9UZU9VcDNNUG9hTlpzbXJ5eDUxYUJCZU1janAyMWltYk8ybzd4OVpORFRMUjJ4MEFocUlIT3dCR1B3OEU4WlliVHc0YUVuOU1BR0FkeFVrVkIrb1dpZlp1bThSekNLN2JpbWtaUEdmSHZWajBiM1hIeFBxSkFMcXFvbGRQRVV3clFzSGhGcnNHT2JDNmJ1UlV4WWQ1clE5LzNnTUFWNnI0WVNLeFZjMlFjZElKbVRZRndkbndTVGN5UmQ1Y0FrRGFnNEdaeW5qTjRxRnlkNTQ0NlNqTDFNbWRrWEl6UDVTMGtKR3NSNnlhMVE2VnUzTUxwL1U5VksxZ1FpLzh4dDFzRGh1dTZGbi91QWNnUENRU0U4T1R4YU9wWGdBRXNlQ2lNT1VNZlpRcXhrQXQxZlpHN0hkVXhJNXFTVVNET3VscVVCdlpsV09DZW5HNUVQWmJsb2lJOUtHVHhXY0xLbVMvMUU4RWhHQmg4ajJBd3B3TGM2TlpsUVB1cEZKZW50ZzhDVTFkVDByK1FYTG1FZ0NpQjBJRmp6RlpkeWZQQVNBcEEwaktvemR4bXN2UmxNdDA4cEhUU1hyL0dBcU1tOGRXdHY4OFQrR0VUQnNiOXNiekFCcit3bnZlUUFNdWVWUXE1K3FnREE0SHJPUkZpY2hLSWNTNjZTcXpKMVhVa1lDUmY5STBUM2dMd3BDUW1QYjB1Um92cTMvYTNlZWlhZlppWGI3eUc4VmRGNUpFNXNSbmkyL1hDbWxZT1RzQWRnZndsK1pEaVJtZDBkdTZJUi9sNXBUbUVnQndMdU91VHRZN05NNHJvV1RFUFlBaWJJNU91MFAxajE1ZHR2R2VBOThFWkpUSW9aakx3U0JsbFpySUdRelV2RHVlZVF5bW5PeGl5RlJIbXhBSWFsSVVDM0pFZzYxSDlWQlQvV2pnUU1RQmVzcEFUMEowTnF5Y2lhK1dQT0dGbi9CdEd2eGdaMlJPQUloVTR4NTFRQlVDTURUOG1OdC9aSUpqM0JJUTVwSlNIK1VGbkV1emN3a0E5U1lnbHJYSEVVMTBJQ2wxTW5wWGVWTTY2aUJISmo1emkxUmhVRDZpYmdleGU4eENsSDZvbUcxTVVmY2dFYTdqbTRCVXhnbkNNTTRacER3SE1IZ1lpSFk4Q1RSQnNqSFY4RVNKb1krQVhwRW8xYlAzQTY0WEd2WWlnSFJJTmxCUTQxd3JIeEhvWlVmRktxMEIwZ2JybjVPYjFsVTU3d3Rrc0t1VHYrb1htbkllQkFEcUNzZDJ2d1pRVkZDWkp2SmpRZXF4Mk1DYkIyd3pTVFJBZzVuY3oxbVlYVDZYQUpBVHQ3WFBUMWdkd3k1M1JPbVVjYWNlUTl6dHE2QTBqYzQ1alp0bHNISjRrRElKeXdEaEJpQitZRDMwbWdqc3dSUkFWWjI2Z3hHbVlrUUZvVTJFb1VrS0JmdlFWWnI0UkJ6UWd6WkFGV2x0cld5Z3pPVXNEdk1xUklBcVY3dG9VRG83QkpIYmNPVTBFQ1RiUW1CSW5BVnJsdHVXRUdlMU03QkFUNWc2K0ppY0JVYi9FV2pKWVp4aEl1ZzRLVWVmTE02d1NZdWVTd0RBR2pvZ0Q4bzRtSDQ3U21yNVBSbW9MRGsrQ3BFaUtkRlJpbk5MU3p6ektBZEExc2x5OGxoWUxSd2VRQ1VHdWhQQ0MyeDhRU2U1RkNzclFOVlhBTmYvN0FKcUtrSThXSVQzajFjSWx6Y0FNNi84TkI3L1BjcXpvclNUamRWV2d5MVlLckd2MjBJbTM0YW41UWRHLzl1bU1wRlRKeWEyRkVyYlBORnBWazVvY2JEejhhRnhGUGlvVkJtc21YQWx2dzRNam0wK094L2VFa3gvc2VxdlVKKy9wbElEcHBpVHkvR0hHckMvYVdpbWpmVnF6eVVBMko0MGpyWUZZeS9IVVJOMXZCb3FwM09RN1pUeUs2S2hKYzhkNVkzZ0ErVWN4NklEaFEwSXZnUW9BWURQL2YwREpySStYMmpCVFN0V0xnOThQT3VSMityRGdJNDBXSDN4MjZBbENvRUVUNTJnRjY2U3dYV2NsRElQckdzbFExT3Y5REFtVGpZeEtUM2hnV3lqaWdRR3RDU0hYT0ZvVGU5UUNSc282dkRpbzl6VXpFWENoL3lNTlRjTkNRTGNtVWNlZkNTQk0wdkZsSm0yTVUzNXVRUUFKcXdqR3hvVWJ4NW5CMEJWTGgyWUIra3d5ME40UllnNFNxWEpiRHFxSkkrSVpWNVpCSjJjNVdSQjZWdUlyMno1dFZGa2xDRVo5Z29Cem1vS1NIMk1NMjhWWWFDbGc2RE1nUFN1UjdudnFSUTh0Rmp0eURuNnlkQzNGTzJMZFdwQ1JwdmE1d0JNSzUzWDh0WCtiQ3ZlQnNaZXB3cE1MY3BYYWdsalNrclFtSUt1T0pXQlFSdG5tSlA2ekFnRlNlVytaRUtzK0hMOFpIL2dKOTgvRUkzZzZPMi9jbDVhazU5V1VZOWpWc2xCR1FjWEozTnZZaDVwTGdIQWR1bUV3L000emh1QkxFZGVvWU5JZzBGWWNFR0pjL0tQY1cyNWhhZUlxT1JiMFdBYUQ0NldIMXFXRXg3ejE0WkdnTWV3Y08yRFFMNVJaNWxBREhBVmRDSkl4YW9vQkJPZ3lNcTI3WHZxRlVUaWc2M25weDd0a2lPN3pST2ZlZFRkZjdac25jaDVUVHM1N2VaaWtIbmdDNzJLb2NYUXgrM29SRkR3elU1UkFoZk13Q2pvakx6QXhvRTBFTjhqc1AxRmtSM0p5NThCNTJmQi9MR2ZhSkF0UXdEVndXZHF3RVNkV0o1ajJnSlJZazVwTGdHQWtJdE5PZkN3cllVUGF5c2RrSjNBWUVlbUI3MkIvVkxjWnFrRFRCcmtwZUFzQ2NGbXhrQ05DY213UDBlWFBtbFFlM1NHamlaSmVROUM1ZGdCcnMzN3VqMEVIVVoyQUZ3R1VDY090djlNaTlpeXhnMHhsYlNVN0pwRHNsVjVXU2QrYldoTis5bDF2VFJoUTk4czJpRFhzUzU0WFhpK2JRZ2RQZzY5ZnRBSGRRa0FjUVNNUHNqTkhQWDJKUlJVcXJvS0FDWVFNUEU1SE5DVTh5bzN2dVRFK3h5M3RMM2pGNVA0SlNkK2xvMDNQTjhRekc4OGtOOFVqdmNpYk9JSER5QUZCam1kd01BcXp6c1NVaS9yV1BXVW4xQ0FnMVJnOUdDYlQ1RjZmcVRhL3BQTjREeklvRVRLNmxrKzBWeHRvV01kUTdKeEhta3VBUUJIdXdPd3FCanBqanFHaGE0bkdWd0sxQTVObUhaR01yTTh6bUUwcmhDU1BoUlFzU09wcWlzU2d5elRWRTU0eE1EMkRucHVMZDIyY0tZSjMrYklneGNjUjZiNEdGQ0RSTTdrajhua080TzZ3T1U5Z1d2TFM5MVp2UWp4NHZwUzk0QmVJWGEvWGlKeW4xNk5mRUc0czNyRE1KT2RpZTdKTGNGaTk0UmhBakJ4UlBLZzk0dEdKTnAwK0FxZDYyaFBDdEU4MFlweTZFcWltTEFSNVpScVF1UGEybVYxSHYzSHVNQXV4anB3SHByakFZc0FYd1NKbVB3RWd1djZTYlhMT2k1dDduVnY2R2VWWHRkeFJmQjEwUWdtN0IzNFpTVUNGM1l3a1hlMWxOTzJrNVZRUVhUYXhpNUkzbWNJNSs5WkZGMmh3YWQvODZRSTBDZWFpbURyS0JpOTVwSG1FZ0N3RGNQcW9US1RBYWNlSldVbnNIM2ozK3VmOHRKNyswUkJ5dFRDaVR2cGZOeEcydGZpZ2RPT3BOOUtqK1RaMGVDK3FZRTgwZHMvK0xHUUMvclpza2YwcXJESEw2eDJqNTliNlI0NnUrTEpmMFl2RDFsWHIvSlNWRloxOGcyVk9XS1ZaNldQZzhuaGlhL2M3ZWlVN1kxMVNoc3loOTdDWS81cDVXbXlVd2E1eDRkeVB2RWdHTlNKcnpJLzJMcXBKM1UydDNVb0tyQUxBTWZCenVDNnJpbXY4RnVMK28zRmw2L3ZkUy9wZU8zR1huZE51d2UrRUxRcW52WlNoQjBFN1pGNCs0OWNvQ1QvQ3NmT2piR0ZOOWhOb1RkbmN2alNqbEpkbUR0UExDWjE5WmZnd1NYQm5Zcy9VTUo4QW9BNktTYy9tbFJERDFSclB3Rm5TMHgwUzNxZXZJV2JhaWJwbEt0dnNzR1NIWjk1aSt0RlVMa3ZUWVBhK2dNNm5TbEVyTldDSkljT1J2L0FSMDQ1QnQ2ZzlxQUFQNG1QK1o0NnY5eTk5WUhWN3FtTGE5MGplbG5vUmUzZnoycFdNK25QNjAyb0YzU2MxNCtnS2hZNENMRGFzd3BpQmdmdGNiQ3Frbk1mWmxPSGFUcGxIemtIRDY3UURSU2NNcWNEN1UrR29uemFnQStjbEZjUXVKUXpYMUxnZ281dmVNbVRmdDZ4VHJ5c1oxc0lCR1h5WDVNeDF6WW4yZ1VzNjlKQkFVSDRxekx1VlFXQkY2OHBGMDd4UVR1TzNXNWJrV1ZYQVpXeDRZYmtXOThES0FwNFlTazk1WnVxOW9ONGl0YlZEbFVucFpnb0hmT01vNVU4TndvY21ObWU1eElBTUlHSTNvK21LR2RuSHNYRWREYU9ZaUE3SWZzQVlhMHZEZXVVT1hWYjJHVWpnSTZmMEsyS1VjSHJpUkFNSENiTklDL05vRDUxeG1iZ3Q4Zk82dWZDM25WT3EvMUtkMTdMKzBVdDV3K2VXKzRlMEN1UTd0ZlBINjFyaTg5S1RuMG1OY2QxY2lHOHhkWnNRUTRycXlkMTVsUWdrZXNnYy91Smh6WktZLzFHNUFPTFk1SGpzaXVtY09XZVpDVUg5bEVDbWk5VGhGdFdvT0M0b0tDbkgzSzI3dGhKVUdEeVg5Rng2ZVpFdXdBRmg2MnV1NndBY1hWcnFmdkk2OHZkczY5dkM4ZHVha2t5WWc4UU9uR08xWjZjSUo3bHVNR0tEOVY0aytDSXVnM3lpQ0NCK282RkhMRk4yT2NTQU9pVXVwb1UrQmk2eHVCVVJiWkhUUDdCUkp2U0ExTlF0MnoycVB5M0ZIWUN4QndUOStsNi9yMVBiSFJ2MW0rY1A2d2djRWI3ZW1oTWRGWncvYkN3WG9zdW4ranc5bGxsbG5pdjBESUtQM25JNnVSY1pQSThBQkl2OUtoZ3pGeE85ajhuQTVGbEVaTkloZVRWTzRPQzcwOG9FUGhlaG9MRWlrYTFOa2pkZldmMVduWFY0UkxoOGczdEFoUVZYNzh4Nlg3ZnV6YTYzL2lXdGU0bm50L3FmdXpqVzNyak1yKzhGSmRXUkJybXR5ZWsvWUpuV1AxeFMxNEdvRVY0TEdOQjZpWENzVklkeXhJRVBLODBsd0F3K0M1QXNleW85d0RDM1ZHWnp2QktTaEZuY1lnaFFkQ2s5R1BOQytDSlVSaVNsc3hScmxnSmFWdTIyT1lFMzVET0t0SFVqaURWc0FDMnRWb1l3VmszcTZEci9ick8vNXdIVnowSWI4ajR5emMxNGJtMlZRVHc1OXZDTVRRWnRIbDRjcUFkZ2xJWURZeFRhYkQ2WkV3ZmxWTy9FZnBZeFZ1cGhjQzB3WERUUXVxQXpudjRRRFIyTzNRVkJ3SEJRVUdqTzNjSjU4OHBJT2pnbnNIckNnUVA2ZGVZMzNMZmV2ZWIzN3JlL2ZRTFc5MFBmMlJUdXdKK2xsMEJSTUdFTWVhSmlKSldsQk45RzNjSElKcWtCazBXTlZQcWwrVkQ1UkpTSno0Q1VHQU9hUzRCQUZ0c0U1MmtBMFB0dkdNWWFGbFpIM2twQXlDUGdtdUxPY0FQeWxOTUNDeWRYSkV0VUZ1c3JmUURRUFV5WUpRQkFyYzdGaVlWUEVDTkRIVUwycko2T1VVMGRZVmtkWC94bXI0TnFLVnNWOWV2RTIycCtJaHVXZnYrRlMxNzVId001Z25UQ0tHWnRMZEtCRGxPVTNDSmF2VWJWK3VkdjQ4U2lOU2xGWFlBSytoc0s2c041QXRaOFVYR3dONUNwS2xkK1l2QXNLM3RFVHNrYmlCTU5OS1hDQWc2TGlnUVhOUnhYY1NYTG5lNmxGcnRmdlhqcTkxUGZHS3IrNmNmMnV3K2Zqa3VEZGhST0RISjFZbmxZazU2UkdPMGxaY0kzakdvREdXc3AyWGM1dVF4QWsvNjZqYjhKMFdlU3dCZ0VIb2doc2NNYzFsd0hFZWxmOWhCMUNnTmNpVE1mRHA1d3AyVXQ5dzdsanhGSWdva2JhVE1GTzdEb2hqazI3cXI5Y1pMMStJdXZwYW9GUzFyeXhxZE1lazFCR1ZrM0szT29kbW9jdGlHcGxWSmMyNHI0d0RHTVpyT3VFM0NYdmZybUM5bGlWNmxGQngxTWdIbTlsMExlWXcxQ2R6UnJtbExsd0dibXRUWENRYjZaZEFWSFU4ODFIVVAzNmNBKzdvdUc5Wlh1L2MrdXRMOTBFZTBJL2p3cHA4LzRCNEJFUndmdTUxQld5cTRyTjJZZFFsaXc1SnEzVGEzem1ramVjSzNyWGxuREhNSkFMbHF0emExOEZGTXdMblRvbVhGTmNKYVA3bzluY1k1N0lscnFob2M0aWtaNHo0SHlvNE9yTTRGNFV3RHhqd01IdjB4TmNkMXJITUtHVFhlb3FtNU91Rm53cGRqY0NOUkVkWFBBakF3TFQrYUQ1bHQ3U0k0bEt3NkdydHZleEM4eVRwU3FTa2V4REdsM2FaVytxK2lXb2NrVWppa3VBV0xHOHJFdnA0V2xjWiszRmVXQ0g0NGhzZDZkZk0vZ29FQ3dxWWl4SVJBb0k4YUhuOVlsMW9YOVhIcEs1UHVkNit0ZGU5NVpLWDdlejkzbzN2MnRWMC9RSlZCeGpzOE5SQmVSNVA0Q0RHMFZMK0kwZnFsUFlmTnMxTG1oNjEzaDN4ekNRQjR4UGNCRkFseU4wQW5EYnYyMXBZTWVGV1hvR0s1T0F6NVdTWXZLZHVpbUdOOW5MYzBWN01nUXdlZWtpWHp5aWdFZXVaQ1p4aWNBTnIxSUZJT2ZUeElxNHdSZ0F4V0IxWHpoUGNUY01Vd0xnV2dJTGM5d2hralFWbWtTazJEUXNWUy93Qkt6ek1WT2thdFVSWHNUZjhGTUdTd0QybTdNRlgrd2pZdWo5VmtWKyt3ZFFJWUFBQkFBRWxFUVZUN0ErTGYxbVhDbGo0ZFlHY3cwU2NKSzNxMjRzbkhkWS9nQ3BjS1M5MS84cmxudTMvNDcyNTIvL0tYTitQQkluVUVmempiZllnc0ZYbVJTS0dvWCtrUHRPalQwSUllUDRhbTNTc2I4NXgwZVM0QmdHc3Bic1p3ZDVaalRlR1lEMTZHYmpxOGFjUmZUeWdOVStZQWQ3NTV1TVdPTDk0bXl3UEpSdXMwemxzYThMNUVRelhkUW1NUEF0WjZKUVlCbVFZQ2Y3RURLRzBMMzBwSjZTME9FWU1rZWZ3d2lEK3JsclQ2cUsrdmc5UVd0cXVDanhwZEJoTDJGN0xoL1JSaGVtSVBUV1U4VVNUNnU3MCtBZ3ljWmJvWkJEbUNGbktaalgxOUNhTFFaNDFGUGQ3UFNVaWVIeWpTc3dJM3RDdFlVaEE0cHdjUG5ucENZL1dscnZ2cWQ2MTNENTlaNnY3eHMvdzJJMDlkU3JUN05YSVZhb0NtdjBYT3BxT2hRNTZSdVZvdVM4ajN1SDZaUTVwTEFOaVFRL2ZPNithTEl1MTFkY3hOZWZIR2RueVVkU3diMVdrZUkrUTZIQUFrbHlBelRpS0xLYkFseTJMTnN3NzBNbTRTTmRQOE1PMmxQdjVsSUgxVXRhZFhYL2twTmhtdDRhZ1Jxd0NnQUtqeDR3T0ZnWSthMGpkRHAxVHNVY1hkQVQrR05NdkRGQlZzWDRQMzUvTWxhTmgwR0JxNmxabmlFMWc0OG9FcG5oL1kwdXJQemNObEJZSTNhVGZ3MGllNzdrdWVXZTBlT0xmYS9jQXZoMjhqQ0FSc3YwdUdtMVFiTkZPYnFvQ1F0MGtFOFZVV1NPMUVOalJYZUFweUhta3VBWUN0MWk1YkxSMmJjdTZXamsxZGpCM0JQL1pGQ2ZxRzNiODZaUUJnSW5oeUZLKzVjMzBxWXdGZWFGUHlVc1YwNUkzVDdmUTAzWElGK1Q5MkF1anJ4VW1uL0tMSlFVWm5zK08yc3V3ZFFOeHBrbnJpWnZWSFdSMjA0NEhJOGlOYWZyVTEycElFMGNzSklGSUtOcTJuZ2k2b3dqZ3N4ZkFlNHdycnRBeFdsQnVrVzlmSG5ud0V0MVpyUk5SeElKeDNXQmFuVXluYkwxU3NkY1JWbWl4WnRiSEVEVGZEWTlNRTA1dmNIOUNZbmVqZXdFTVBoSnpQVjBWMkN0Ly83STQvS3ZRTldQZ2h5ejc3WHdYa0c3YkU0YWx0YTBpSnk3enNOK1lISC9IT0k4MGxBRnpWOW1wYnEvT2xTenIwc2N2cmwzZTBBeURLSHkzMS9FeDJuTzJUSCs5YzFZVFkyVkhZOWlZczVOSVpISmx5Y285ejAwTlVzcFo4S3JMeVdKL1M2WWxrb09XejVJUTRlTkFob01KbG5oZzhoWmpWRDh6OVRUcXZDaUVOUnV6bmozc0Uxa1YwMnFuUElzQmEwNkJRSjBRbEZ5QzVNcGY0bWdKc0VKVnlHeUFkUG9YTmVpZmVoWDVoeUphY2EvYVlyQk1YVlU2ZVVlSlBJVUpYV0F5ZTlFWjRwRVFWbjZ1RU9rQ3lMVzc2OC9neGp4UHo3VVFlcnJydmduS1ZmNzEyQk0vcm1lSi85dXhOM1JqTVQySHdkMytra3FqVTZ4SUtaaHRXWVhUaUc0MnIyZ0tzYWZ1L3JvVnk3NDBSdzR5S2N3a0FmanBOMXJjT3NJT09ZUlQxR0UvTUJSWkIzd2xIVGl1OEZPR3JZdys0OEkxejBKbUMzeHlKR29zMlBycFVZTU5LaDFQc2cwQzBYOGFnQ0QxN3JWOWJPUmhneTgvWFozbnpyN2YvS3BQN0ZWYkN4d3R4TlFoUkhzRmtkZlExQ3JaTjdFTUhZaCs2clROcmVOUjQrRWhuQTRXb3pNWHFWSlVoQlZJK0taUGQxWFJTR1ZJdk91N0pWRk1rcDZjRkkveDhjWXBWZUVzUERmRTQ5WDM2aEdCTDVkLzF6blU5T2JqZC9lekxPdzRDeUtHK04xL0tDVk51QWJraWdFZFZlSkI3dXdRUEFYMWVhUzRCQUVlMEJ4M0c1RDJPblV4OEJXWFhyMDRxM3FXTk5sRTBxdUNUbmpuRVFtcUFBUmppQ2hQNjlqcHpVeTVLMmZuSXJaMk5iQm5LY0NCbE8zMzlnaXdJNklESko5QXArWGt0T08vL2h5T0dlT1Jjais3cDdtQzhFekNEZ0dxSlArc1dVVk96Y1h0VG1TcFMzRWVyVUd0T0JZci9wdElLMHRPemJiUFVjYkNEcHhnWjIrZTRVV3BVMlIxQVR6OE1RMEhCeWsvN1BGWHFjRW5BUTBXYnVuZUY2eStXbmNCWGZ2YVo3cS8rNkJWL2wyQlpXd1lrdFNyU29sL1ZwcHdidC81a3dMaGkxTFJNQXBnWHlNcnhOSTN0cEhGekNRQk1XaVlIUjNvSzhDZ3BxNUxuRzFUcEZFZC80VEp2NWJzTm4wcjdOTmlVWFN4bFlDY3JtWVZodnA5VmsxSXNjVzBYVTUzcWJSQ2dSeE1YOG5YT0VRT3ROQUhxb0VSOWRsRTdNaEorRHhEQkVSRFVMbmdoOFlGWGZ0c2dpVVhvVUhhMkdIcjFiU1lYZE9DZXIrYzVZY2g2VHBPWnVvZ21vNkxFV1VkUnl6aE9LanZEZUpMTHdvekxoWmpTUXBDbHFJcisybUNFakNENTY5UnMvLzFSb2E0Tnp1cjdCVS91TG5WZitta2IzWGQvOEhvSnZCSU9QMHUzYktJdUY3aStOSk1zTk9PZVJyWUJLMGViR0QySk4yMU9VV0F1QVlEUE44dmlWUU1CRDFUZ21LT2tjRkNwRmJNdXFqT1Fpa2NITWxYSWhjQjR5dFJvOGxJc2hCQlh6MmJPVWhUYVpta1NMTTNueXptTlV6a0hVSEEweWpVZ2trc1IwTExhc3BFRjc1dUFqallTVHFORVZjcksvVEVndVNwNzNLY1ErSlFvRnJDVXdCNlVzbkxtQi9HQjc2WGVpdXR3dEFQYWs4TXJKU2UxTU1iUmZDRTJKS0ZFS0IyRlQxb3RtZXlScU5pWGFpd3FIZGY2a1krWWVSeDdTemNIbDNXWG5zZUt2L0RwdGU3LytkaG05K0hYZC9TeGRwbXRYcEg0aUR1N2huQ2pIWUtFaGI2aExCcWtGcUZMTEdwUU9aQVduRW1kWFQ2WEFJQzFPTGc2dWN6SzR4ckpkZzhuMDBrT0xGUDhnNE45Y0FKV1RudXBRK2JJS0N6bUd4WUNOZUFvekttN3QzakkxUkhYNEVrcHRVVHdtRktPMmRZQjNoUk43c28xMjZjQzEvdDhMTVNEUDdCeVprZ1oxclhVUkVwNDhpUGZCakZCUkIwMDBqWjRTSmdHU21yQVJKMXdIaTFVbFN1UXpRaFJsQmpZSnB6RGdjaXVranhaMytXQ1RGSDJUdmdTdGdFMTZ5RXQvcjJTTTFHNEI2RC9ibDFCZ1BzRFgvS085ZTViZi9LcW45SGdVaXdscFV3K3BzMVdJa1NvcEk2cVRWQ2xKSEFjbnZ3Q2dqK3BzOHZuRWdCd01CTXVEeHpGT0ozbWlGdWJHbDNGNUVkV3JRODZqMFpBb3BLUHNsTUZvbHFpYTNTb2lGc0RqWmpCSUhKN0VMUGhSb3pSQjlCZ2EyWFdha0p5czVQSFdQTW1JTG9hNXZxZklDRG1hSzVNZmtvcERBSndNRlN4RlVpK2lyZ1ZjQ1RtV3dscWFGTVVhNXNST2NKZFU2VkUwNmhaeHBNTGdhazNSR3VWd0VjeHBtWGZCTFJTU21SQnhTVlZQQ3VnMXdaMDI3cEQzeWtBOE5LU2R6KzIyajN6Z040dDhLcStQS1NaeEUzYVByRkk2VEpORTU2eG1ndEZ2WGN4Nm95Y0R6VHJJTkFMbWlrMGx3REFLbzBUT0p5VXQ5MXhGQXVaL1BTVjY2ZThLUUlndWMxQ002dE9XYVhxQXIzQkYvYWVzU0lDOEdvZVZZeklIUVQ0YkNPTmEyMkVWblVlRWJ3aEt2U3FYL0lyQjhlZDZMd0ptTXF4dm5BM2xKdUF0QjlIdE9TZGdPbzV0VUlUZDFKNXlqNkt2TmIrZ1lJSENLbHRsTlV6SFNsOGlBcjdzd095ai9JeUFLa0VrQ3BHNVI1dUtUaXhVSkR0VGxWd0tRTDVQZ0VQQyswb0NQQkVLNjllKzRLbjE3dGYrT1JWdldGWXZjRkE5OUtOVmdUbENGdmNvSTB2YkNFVFhUaG9CeWlTUzdTcFloV1J4Qm5tY3drQStZd3pSc2JFay9tREdYaDdDNm5iSm9JdDJ6SDNsd1VITmNVbUt1dFZmQkxFYmxwaDhQQkk1dHJRRUVIbnBCeFlQRDdJQ3o3R0NaS2lZeDBjVEF4ZTZyVEpza1EzTjAxRnRkQ3JNSUtHcjM4T29QQ0JKSElvTU1RUGc4WndpeW5DaXBpQ2k2RGpaRFIraUhSSXRsN1NxRUl4dTZjbnRJOFFrNm82cUpvWUFzTjJWYVpvMnFnaHk0MnBsMDNBSFAxQVkrSjNGU3JqUXhVRGRCQmdZbkw0Y2t3N0FHNjh2dWZSMWU1QlBTcDhTUzhtbmVqdWRINGFFWjBaN2Z1R0lBMDJUUVFsVUpDaTNTZzdBQmc1KzlOY0FnQ0JNWGNCTnBTeWJNTWZSMDNVb1dOY3YzZ3g1SXlraWVhT0ZUOXNGUzUxUUNhWVFDMmpWRllBVmtLNjZhVVpsNFZ3cmxPV0FkQ1B2R1NsSmtHdkNGSUdzU3dzaG5NWEFBbGFXeVpZZWdkQTFFTUl4bWNTenZjQXlQa1QyVHFNaFNUL3NYTUV6eVlOSmVQSmtvYUUzcTZHN2tsdjUwTldoYXd1QnlhWTdKRTcxRmRVTkNIT3RyOHREMm55YWVrazM4Z1R6S3ZYK0J4NlI3T1V5NEQ3ejB5NnozaDRwZnV4ai9LRklkWFFRSjlNK1NCL1Z4MnpMSjNjSHMwVkRUSlBoUkJQay9NS0FuTUpBQmhwL3dwSVB6T1dNZlk0S2VWUlArUUtFbUI4RVpod08xZXliWExxRXBSSTdwWUNSMVlLcHBtbGRoaUEyNDJLUFZGSTQ2bXF6bVlsWUJJekljbGRqNXhrbmdJVzJLUUNrN1dKY3Q0RDhBVEhnSG93MEtNOVpNUVE2eHNDS21KYmtiZUZiMVVIMnV5U2JKa3F2TWYyME5CZTQ0dmkrT0VnUGJPRnBQZWNSYklKT21rbTVyMEVoeFA1bkp3KzRQa0FQZzFnc3I1YnU0QWYrK1dibXZ6eU5VR0FxbTVmUlAzemNCSUE5d0U4c1UzSHlNQURJVk5rMCtIaGs1MTVwTGtFQUQ3RHp2RnFvNm9Eam1kaU9GaDE4VjlKT0s4dHUxam96blJxYyt0VDZvQjNmY3JpcXZKZE1qSk9Zb0xQY3BUbjVEYXVDRWs1THVya0lPRGF3WURzMnBoZ0JsQ1NNMkJRaG8xa1BWWHcwNVNLV0JwM2xwbDRCbDE4REtqQktWbDUzVW9qVmJZbHplYVVlbzZsTzFDTmtTbzdHSTd3NllJUmVsUlVTL3IzUkN3VmFqMDVJMjAxSGFYd3hVZ0NSZXNyZm5MRGhTZUNRbyt4UElvQ0NBSXU5OGh1ajQ3Z2FVRTE4dGI3VjdwemVqRXJQMnJpajdjdEgwMVVUeks0ODgrQ2h6Z1dwQ2tiQkdGRFgzUjJBREJtOXFlNUJBRDVvdzVrWU5KQkF5U28wOC9wd0t4UDJYSUFpdHlzbVNnY25yUnNPM1B3TVJSQ1AxaHowSXpFUVlyT05DUllqUEM0ZzhtcGlMeVNRNGdoVUhnSzNuekljT1hJS0pLeWF0SUNLeDd4K2tsQTZsRElyUXNNR2xuc05xanJvOGl0c3VDNTA0VE0yNlloMDdEVVZCNFEwSExvQXlNQ2JiQTloVTBTa0RMa3pNb3FYUGdXdnl1WnA2ZEhsZXh0R0dLdkJGL1N3TnFMN3RUU2V3aWpIZm5kOGt1Ylh1MFpYS0kvb0hzQWorZ3R6Ui9WTXdGK0ZvaEFRTCtJbCs1aVFoTW8rT0ZSZ2dIZFo3SENrNEJKTkF0OFVJQXcwd21mNWhNQXBEUkc0d3g3V3dBLzdwR0czODRtcW1XeTR3ckM4cEtRZWRKVWhsN3JKa3hla1VNWTdwYVdJc2s5WElyQ1pQQjVpS2lRWlFBNk1SRGlJUWhvY2hJVUtoNWg2RUFsSmVNTkZKbkNJMko4NEQ4UG5KS0hjU293K1RVUTQzTm82dUZYdEEwYW9sTWZ3M2txN1djUjlvUFRMWWtIVjdzdDVRQzVBM1E2S3N4b1JUSXA4K2s2OEswdm85WkFVRytpMFBaUEVSWmM3dUh3bkR0SFdDWTdSQW1MblpYS0NLYnp4Y05sQUxPYjd3MDhlV0c1Ky9Dck8vbzBJUHp2eHVDelJJdUlTd0JRSk1ueDRsUzA0bnNkaU01alRsY0FjM290dUN6TlR3S3czVzVKUjRDNFRVcW50R3oxVXdUazVGRkErQkxsUHFCYzJuTXVPSW9CdERCMSt4U1U3SXpvc09na2VIeGpLRVNVZ1NGTlVSWWNvSEo0Nk56QUl5OWhKQ2dsUDJEQ1JhYnBPcUd6TDZPa2dIVW9mR21raDI3NUtORGlTek5wcFpWSllabkRjOHQwVzRaYjFqNDVZaGlETDYwUnRwZGtFT2NJQ0pjVVlxQ1N6Ym5yRm94aG5ZYTRDSjFaS1NhOFNzaUdVU2Y2SjRLcjZpb2E4M05qRHJ6Q1AzR2hmQXdvZmVodVA2UGhTUjJoUmlnTGN5c0lrc3pBOVhwUVpxeHhlQ3dvbjNXYXp3NEFaM1BJR3ZkWFkveFJEY1JKS1l1T3lVbHBPVFJRVXJaRlo5QXdkVWpKa21YakVtbU9saXM2Q2JKWmRMSTRuVklQZ0I0V1E1bnNNV2lpb2xHRjVDYVFReVVsNjFGa1dNK0NOdzE2NFdIMTV6TEFDSXgybzhvRjUxM25ySnE1cUU2eHRtVXBjdVMyYVZ3SDJwaW41WjhuWFBZejBXVHhMNFdxc3hRMWJLY0hXNnlud0RFQkErdGl0UXY3V0s5akxCUnBLVlRJZWo5Rk9GOW1JVDhhY2gyQ2NySS9xbDl0OHZZZmx1eFVHbEFxOHozdUExaFdqek1kbnNLYi9Mbm9VSjVsbWtzQThBMHNHV2kvWUtpTzF1RERHSmlPcHJySFB3Q3B5SXBPREZSQnU2TVRYd05CSWJwNmtlRWhrdko2RVJWS1V1bjdhQk9xRUNuZkV4cEdtSlJuZXpGQ0hQY0xLTGpPZnJFWHd5d242NFlJblFOQWJGd0MwR0Jwa3dhMEF2RlpkTjVnb25vZCtLS25iTVRNTGFIc1lSTEtIaU81R20wVTR3WmloSGZaZzJ1b2lGL21XZHFEa3YzV2M1VkFVVHF1VG40OEtxSHhZSlZnS3Fqc0ZSNy9hekFpNno3OUtDdmZHWWhCRncyWlI1VnpyQ09hdmxJMTU4cXNiK3BBbVNEaUhjQ2NJc0JjQWdBRzJ1RUMwdkhob3NPZm1mVHBLSnhJWWxKa3dubmpSRnZ1VHhHeTNab2pqVXAwWUszWVE2QWdtNzhSVHBrQmtVR29qTU9lcnpEa1FFRU9xREt1TEhRZ3R6U0puSlJ0L2xJSGNreitZcThReU9iTFFZd2lMaThBa2VsRE1BQXc0TnhTTm5iYmhndGpkc3cwQlpGeFFLb2tuRVJpZ2dYVW53K1FuWUUrVlhYdUUzdU1USUt5TXlUWkU5OG90Y0kvenVlL0hEa0d6K2wzR2ZscGRUNEpnSmozZnd5cllzWUdaR1RBVGpYUm40TkVEdStjNXYrYzdnRTBEc05JbkplT28zellsRTR5djJTUTNCL0F0QkVaNk9pZ0xCZGE4Z1JkMHFpZ0U5dkFVZ0F4VEcyajhMZXNDU3RQTm91MDRJSVJJc1pUQVpBdUIrUTFaZzRDcXVTNFF3WkhUU3JFeDREQzBGWXlsTHg5SjJCZHFaQlFoVmRKQWFTeUkvU3cwVEZ4WEtieEtla0E5SDdPV3pCVzBraFJiQjhMd3BjdHJpMFVPVldjK0JoN3BNUkZ1YXorS2NrT1JwQzRDREFDdmEwbnB5d0s0NWMrTVl1eStQbjFlSk1RYm05RndNU3V6emN0VmJ2ZTVXOTBRUThtUGJKcDcxTXFBR0JjSHVsNUREMU9zb01ranh1d0thdUNPSlNqWkc0eml0SHg2RUdaVlgra0FMemhmdkpNSUUxd3AyVEhCcXNFQUNBbldGeUp6Z3U4T3QwVnN0endWUjVWVjkyUTEvT2wzc2JyeERqemdCT0J5VTQ1MjJVTEdsOEdpb0dKYU1zRWFCVnpGU1BIYUJpZGFLOXcxUEtCekZGbHhtZDd3RzJFT2MxSzNTcGF0QWllb1VwVmdvQ0V2VFV2Yk9EcTVZRm5MUWdrOVVHYW9Kb0JPK0RvRDhJRzM4TkFNS3MvbHdBZVJ4WnF3VWp4MklHQWpHZ3ZKampOVUxiZXlpa0FaeUFBTmVzMGwwc0FJcVVIdFF4TUI2V3ZEMnRnZFpJcU1BR1FBeTdsMlpPTk1CenJOZ3ZPZk1tdmlsRkdvV0FvV1MxWElCdXVET0xQaHAzcmxEeUlnczk0WlRrVFZYWjdOcHBDendPdjJSdGM2ZzNLaHhEY0FQU0xVSlF6Z0NNS3FLNzNrMHgraHByS0pVcEZMc1FnSWExTjFDQ0JiMkVqVC9aVW1qNUlBemRtUnpUTnBrb1ZGYldOOWlTdGhGNzlSQTNhaXdKdUsralMvMWxPZWpUb2FVb2tGenI3a0tKaCtZbHVkRUNtTGNGTVdENE5XR0dDRTVGSmJveEt3RFZ6a1poQm91c0syVHpnS1Bzb1BPQm1tZVlTQUdTbkhZWlAwaG5IdGErZC9NZ2lrWTNsbGFhQ1JRV1hPWkVvSit3eXNieE5NWm1NYXdkYVJxMWtEb2Ftb3JSQUVmQTFWMEV5UEo2eW5ta3FsRUZtQVpVL3F1ZjRjUzVXZ2lqZkIwZ1JqRUlDd1JJM29taE85Zk1Ba1FQWHNnODh3YWgvQ3gzNzRNQktzeU5ZajBiOHVGeEl1S3A2SWdxMVdGaGNicXNYRTZ2LzJ2N3YrWUNLUUdjcXk2bUE5aWV3Q3BRZEFMVHFaekF3VHphT2NERmFXaEZac3NiWC9hUEJiVjFnQjVTVU5lTjhQZ0ZBMWpzd2ttTVF1WUdqV1ZkaXF5dmhlRVI0OEFJVWVTVUx3U3BVRW5BaHRqa09KeVd1Q2dwMGY0WXhnMEhNbUo2R1hOTUxZRGh4NURSZWdvQ05GMFBMZzZRcVF5RHNCV1dTQ3J3VWRKbFJWK3I1N2pNOEdpMThUWmlQQWlGUnVXNVhMVVU0UnUxQmlZWk9PdlhPUEpSa1ZMaUZoaUhEREZPNGJxTi9yd29CTTBTUkdkU3BvSG9OM0xkcUIyWW12SFAwQXdiRmlRQ2dDUzYvYy9uZ0tpbUlYQWZWV09Hejd3WFpSb1lRL09Ud2NDa3IwTHM3OHZaUWNlWnBMZ0dndlFTd2MyUldPNW1QWXFVZGhHT1ZjT0FnVVU2YVFPWUw3UmlsVS9LVEU1OWpQa0hJYWdKS29wMUk3QWJFclVwNURWZWY3aE1EQTZLTUNjYUxPaDBaZlcxa2dJbDN3eUNwVDZ5NVlCSkg1Q2Nod2dld0RteGc5ZmNMUVJoMFlLbGtva3BNZnVHVm9aQXJXMm9LdGs2dFZpSWtUVldja0RWSSt4QnVEcGFzdXA5aklPQmtDMjRNZjQzVGZvejlrMnlxbDNxU0YxZjB1Q1I2Rmt1V3l6clZ5UzlQUnRHRzB4cGxKaTZzMldjQys0WmNLR1dZU0tsbWtZVU1Cd0dSWU9GSUZycHdYbWt1QVFDbk05azhxSXUxOXZjUnJCejdwSFpra1ljSEFVbEdsVUxMWjVSTzFnTStZT1hJYm04TXFWZzYxaldnSmhNa3c5R0Jxa2t2UWkrc1RGYS9xTU5vbmZnWGpldSthbk5VenJtS1JNTU9TT0pEVk9ybVhBZ0hBQWszelJVaUVQanVzckFFSjdjaDJSRlN4Q2xaNVJRZ1JTZWtOTWw4S28vUURjZXh3TU9MUzg1V2tZU0hUZS9IWnQyZUx6SE9kYXBsbkttVVpZQStwRWl5T3dqdkFjTXBxRFJJSGtjQUhzK2EvWWlFaFRLN05BdFhadG13QXNOUVNNaHduVUlycEdoT1BQQ0RHd1FXbFdlVjVoSUF4anVBTlBJNFJ0bGg2VXpsVERodzR5UlNUS0xpNFN4blIwUWVna3hEQUlDVGRnZktVMjdkdG9GcjVQa3F6NGdCMHUxYURJYTZzdW9aTE9YU2hsdUFRRXNsczE2d0NjdEJ5c0hGQUl1L29MSEY1T1lUZzhVN0VTczhITFM5RkJNdHI3QVpkaU5KeWdhekxJNUVCZk1SemxNclRrVTJRbHQ2Q3ljTGlvRnZGRXpTS1BjdW9JaElTVEgvbzI3aXFCYXd6ZzdtUlRwc09ySjdYQlJMdlFRUTBiVFM3cmI2WnF2NXRTdTNnbUNBekNtV1pzak40MVBoS2V6dVQ4SHpTSE1KQURqZXdSSGppMVcrUGpxaWhkVGw4T1FzZ3V6UUpCUTZZczJuVTBaU2RJZ0JRRTRoZU9DRm9HSkpQYzF6RzZ4UUtTZTVhc2U2cG5veG1TV0xsYmkzRDhuUVE4NGdSMWpmTUNVbnF4ZHFtRXg1dkFPZ1dudXdBL0MxUDAxQlVBcVZhSGhLYXREQjN5UHNuMUlGTE9MTW8wSVJEVVovZmFtd0J5OTE5cE5jSi9tT24vZDYza3FHVi9haVE2b3l5S1ZnZlNLekNvSWo3Y0xZMkZtRjdjQkJoZDJYaEw3bWlyN2UzTjZMbnhNekVRWWRxTnJtMEpBaG5NY0lSY0U1NFdIUEk3L2NSWlZacHJrRUFFOSt0cTg0UXdjNWsvZ29xVlIxRlp5R281Q2JpWEltOCtxVU9YamFwSnp0SjQ2Y1pOMkNJeEFGbDNLdHJ3cE1iT1FZenltRlVxc0dnZExCeVdqaFRGRGFFZElBRlpxVXN1QVIydm9LQU1aT1hrTzFwQXRQQnN1MEkzY0FERjlHbFlPQjZubkZLcnVRcHJVUWZHdkVnT29DeXRUa0tWWkxMVEJnYXdsakdFYnNEaWVXYzJHcXRGSldadFp5N3JFOU5HaFhoUXpyeHJzODRvMU9MOGlRYnQvUmh2amRuYzZSWU05Nnd1SlRYdlBGeDdMVTRyaTJ1YWVmRThNblJRNVNvMXFmZ3hMT2NVTTVRWUJFWmxtTnZFYUtlV1oxbWtzQXdBOTFRRk1vNVlBT2Z4NnN3cEpqVVJhT3dPWklFSjdpeWVTMUhqUXBJSENaZzFReU1rQ2ZpVFpLOFNTWE9rMXdEZ3dUT05FR2JBalBuaE9vMzQrSUNGL29KbU1Fdk1ZVmdEYktKTFYrRkJ1UjRQcWJnTkNHZi9WSEtOeDJtZncwa2JwWXZoQk9pZXhWVGNxaDhyNzZvZGh0aURpekg3SWNGa0pveExSd2d4NkFwVDhHdUZFQmY3V0o0alJjeTJORlNtQzJpV3FuUGxPaHpuS3pJc0FTN2xRQWtBREtUTjVMTjNiMTJ2QTl2UjI0OEFxWC9yYzh5dWpoVTlEU0ZQUnJFeXlEc2Q0U1R4aWVUd0RRck1tQjdRNHZ6amlPTGVsTWYzd2lPV1BucFV6d3RPbVZHNzdDV1BVb2RQTkRIMGdxekNKbUp5SEFuVjl3TVJEVTJWSUluWHdBcTJyRnFYRmdFdHRscjhxT0lMUVdhNFhwK0llNndWcDlsVnJFRG9EUC9IV29Kb09Ed1ljb1lIQnhBNUQyUWk0VzhlOVVjWlFTR2FTcVlDbU9zOVNwNGtmVksvNDJRUHEvZGtUeUkwK043Qk5iSzZDQnFHbkRQc1lRTkVDWFF1TGN0eU5jMUJwWlY0cDViOGRGbmVnakgraGttRlBvVFgrem9yOThaY2RCZXJWMEpHU1N4MDloenpKOTVZZTZsS2VPTmxFTTlLZmJnbmtPYVM0QmdBR003OXlueW5GT25WaEhNSko2SkNaL09zeDlvcE5sZzFmQ3FmVUFLR1dRYk1HTkFqYWl6NFB6OW1mM3NlcXpGWXhyL2RTc3Fac284WG5PcTh4bnl2bWUrQnhrS0o3UGlZZG54STlzNnVuQUxuSmZBa2hRVG5pK2JFSkE4THZuNWRFNlNOMXVCS3VVaDRYUSszS2paM2pEZlFKV1RWWFlVTnJSVmprdWpIQ2xra1VoRWRrdlBiWkF5WjE1UVEvMEtnV3o5SHdWS2tBdDF6WVNVK3A3VURhQldlVjhvaklucGYwb2RxN1JnYU0vOUt2QmIrdzBmb3NHUXB5WXNobWhxVU9STVpHWEVKU0ZyZ200TFZmQ0RJQzVCQUEvdENJckdjd1l5K2s0QmxJWHh5R0gralVYbkRla0xGOWwycWp0RlY3alJuRGlxQUpjVGdCT29LeXJHd3hxcTdzbnR5b3lFTXhaK0N3TDJHV2RpckxtVHg3WEthY0dsM3FuTFFRdEFzQ3lJaCs0aW1jUXVzd0VMMEVBcWtkcHpXb3J2aDhRMWxTY0FZU1UxSUNCeWNhU0lmUFVWL200anF0TXJSZkkvZlNEOE5uWTdmTDlqUTB3cFREQU5TTHJqN2pDd0tRdkZqR0JjV1hreGNmVUU1NmY4L2FOT3NGY25qM24xNEdWNE1FSzBXN3BFRXU5a3BDbi85aTFLVGNOUklFZFZOb0tRWnJKZVM0QmdCWE1GbU40T1l3N29rbkZSM1pZT2pIbE9rZGVZU0tqclppZ2ZidUIxem4rZzFCNGpVVEdJREVnbE1RZjgwcWRYT0NhQjFsQklIZ1pCblhnaU1iRU00NTY4R2h3bUc1K0tPeEZJb2NEbmZOVEJGWHhEb0NQQVBtb2lSK1pvQjN3c2Zwb0Y0QThWUWlaeUlZcXJkMnVRT0NhMFZJdEdEcTRXT1QwWEFFaEFCSkplWkdlUmVlRFUvS0tNelNQZWkxUFphbEFTejBjUEsycTI1dEdhTFcyQWRFRG9GMHNmZVp5Z2RPdHZva25aNi9vT294Vi9QTE4zZTRGL1dTNFh4aytVdFYxd0NHMDZFRS9rVExRbDJLTUsrRXBKdzYrV2FhNUJBRHN6bDFBT21GcW54ekNVanRIbFpra0tTdXJwVVBkSG1RQkxld3E0SXdzUXhGWWlhMTA3U3hqQ3NGd2V4SWVKU0NySjVGRmtjbm9pYXZjZ25JRmdJL0RNMXFjQmU5SFNHbFRLTnBGaGhNc0tuTms0QVQyRGtBTkNQVEJtYis0QVlqdVRIekpRUkM1dVF5NEJ1SEZxV1FocFdJYkJZSXR6NVc5QXFLZ1JFMk5qSXBMbGdHamtRT01Db015OVFzaXNuM1Vwb1ZXb1FhZEFoSWxFZE9sSkZaeWlpaG5wVmo5S0RiZnUwazh1eTRSZWZTYTN3UmRFZjNqcjI5M2IxelhEVUIrS3J6MHIyV05ZR1RTYWgwS1JVZVA1ZFIzenZsY0FvQmZuaWpMTWQ0bkFjUEpkbnVyN2RDV0RSbUlRNmdGdDhUQWV5S1pxVFJiZUkybnRzcTVRbFF4QW1MeURPV1ozYlRBd3c5ZkRuODZNWFdNRGc0T2MwTXdnMXBqOENESGVtV05NbDJOYTNSMzVRZ0U4U21BNnF1dVgwa3RtbHZRaVU4YldKV1FhYmxGckRQYU0yZHBsRXBLUVJQZ1FTcGt3WnNJM1lLeUJGK3BZMVEyMU5DbmdyU0M3QkFlWisxZlhJNlNwYXFjcFY2TU1QdVJQYmtRWWJFdGhUS3RDcjAwVEQyWEtmaUFwS3hPWVB0RnZqTk9lUHpJb1g1YzF0N2ZxNytxOEhOaFAvZkNwaThEZURsb3BKREh1WWNLUlUybnk0Tld6QlErK1ZsTU9PYVI1aElBTk9oam5zbDVaU3pzNjVLakdCc0RpTTdxNVhrODlQMWFpM1VWVlFQUmRwa09SUkYvbnh2MTZCWFhMejNSYU1qei9iU1ZQZFRhNENCQUZWV1BEdTNQcG9HWDdEcVFrS1BleFFZUHFGS1h0cE9QV01FQks0bjJIQUIyaXU3VUY0TUhpazc4TWhEcW80RGI0VVJ5Mndtb2FJR0ZCamxCOUlPTmxJQUZCaXJ4RFZldlhGc24yVlB4ckZpRXhpQm9Lb2d2V0xHRVBrZ0JrYnM0d2cwNURsZmFMeUtON00ydHZoSXArN3JtNE5RVTVXVkZXbGIvOVZYNVgrVXREYkNmL2NTV2RnUG1zRUxCV3lyaFJ4Qks5QzlGN0RRcThVRU9IdmpLMGFCbkJzNG5BSlNKWHpzWUIrZzRTa3AySmdhSitnd28reENpanVKUHdEZ0FTbkxiS2pQeFRDOG5zNkNmK2VKY245QW9kWGZMVEtGTmZ6dE1lS05nejk3S3FwS0VWZ3hwazZpamlrd2V5djZoU0UzWU92bEFwcHdDVXZSQlhSMEVNUWNBOUJRL1BsaVdOUE1JUnBiSEdiSjA1RDJBYUFPdWFOc0txRVNxK2tjeFNOU0h2VEJTckhWb0lJc0JacW5VTVhsMHNqRFRBeW9OcUJBOVp5Q2FwR1lVaHpLaW9uRU5PT1M1YldsY3N4cFFhMlovREhLeHVjL0p5N0VzWUVVWCsydWFPVXllajcyMjNUMzNtbDRITGp4U09aT1RFcktNUU1TNEZRTjk2SjBpZUpKVVREN2FXaHIrMUhEd3pPQTh5d0JRdmM3UFdybVh5UXh5N1hyMGhFQTdHVURKa3pyQUtCY1lzdHNwZktETnEzTFErdFdteWlpMElxTEpncGQyUGJVQmxHS2JyMExUUmxBNHg3VTVyQVNDbW9SZ010UEJVWS9LckFxYURwN0JnUWZiNmc4Y2x3Q3FMOGZGVGpNQ2pTV2doZzdMTFRsTjFKRUlDQUptcFo1bXlBaERaWkticDVBc3VGUktWT0pjcmtpWWhzbVR2TFJKNHdiZHhoQ21WcnlWSjVpalR4QmN5b0tZSE9NMEJUVmk2ZXUzaEFpZGplS04vOTJPU0RVdk1QN1RKYjd1L0M5MTYvcDVjQ2FPM2dQYS9ZUitFb3duQU0rc3RUMmRVNy80dW1uY3JVb3QzSkJ6QUp6eEpRODRxVTNsR1lDekRBQ3BybDZTSW5mS0huZXNqTGR6Yjk5N1dkOTU2eVFRTVVoNm1jbWMrTXFqaXVBU1grR0NLMFBSREZVbEE3WGt6b201b1k2VkFBWUQzY05BQ3IyaXcxUEh5Sm5VTUNWTmQrOVY5ajBBMXd1OGg0M3hLYStzN09DS1VlaE1BUENOd01RcGg4N0I3cFAzQXRBdUNFOTJnWU1jUnBLWWttOEFsNEpwOE1GZkJGVCtoaWRsNjdaWFljdWE4cWpxVXQyN3JRSzdWUWpna1ZOZzhIbEoxK0xOV1lLRks5M2lGRkl0dU9HcTJBYTNIN1Fkc0VxbE91bWJzdW1pMFUrczhpdUtBbWZYRlF6RWMwVlAvLzJrQXNCYXVmMVBqOFlmNHZnYnBaUUxEYmdrZ3pyQnowRmJud283Z0dLZUI0TG5tZnU4R0w3UE9aWDcxZ0QxY29CNWxDVjc0MUJRbFlmQVkwU1BDejF5Rldyb0tXc2dPT2g5aC9YckJ6aHY3eVdRZ1pMWDhJWWxLMjBrYjJFM0EwTDFIVWdLREQ3TllLZkF3VUFEUndCZzlTZFJSbUQvVWhDMVh5NHJRbytnNTRDbWd0dUhPSVpOUUtCNFJNdEFad1M4cmhKTW5DbnpNTk95SnNLS1ZzTmxEWDQrRXdkUHdyZThzWmlQTFhlazlMYU9zSVhBVUppa1JJVlZ3UlBmT0NTSXh6aGdFblVrbElSK0FSM3RYT3E1OVZRaEpZam1HNTdPbzQyMm5OT1lJTHVzbndNK284blBZcThmQmU3KzVVZHZkaTlkMnUwMjlETEE1QXV4MlFoNUhPbGJqeG1hU1phbzRIT2k4T1dFdDQzTUljMWpCMEJuOHltYk84OVc0ZXc3TUM5bDJEOFVrTmM0cTZBWVI1R1V0N2pFai9QVXNSRzFINlNoSXBkT2pFa2ZxM3N6ZzJvOWY3eFloZ2ZWaU82SWlNL3lHVFlNZi8wMUk0VEo0ZDFDMFRzbVVBU0Vhb2lDQVEraVlBT0J3SU5HZ3JuSFFNSCt0YTdJRG5VcURoMVFwdENoQm84UUJWK3FxQnoxbVFCTTlGWGQvbDdUNTE5cm1nWGNDRnZWQ0dKcjNDWitNV2RMRHkzZDNGenVibTdwYTdJcWJHbjdzaTFsdVJ5TXlVOUQ2RzhsYXQ3aUF1WWNQRUNERkNLTWFzQ0R1S09xR2NNNm40dG8yKzhPRGQ4NENLZ0dmdkpEUC9vRlZtdyt2eUY3NWU4dE9lcEhmdjY2YndxaUgySjhVemZobW90QW02VVREQmE1eW1vS2paQVVCMTFiaVRNRTVoTUFtQVdZbzhNRDc1Z0dGUkVoQjNHdGl5b3hoSHRpQ0djVzhoYW1yanF4MG9CY0lDc0FZZ3BJM3lVMko0NDdURWhvZVhlWFNSczMvQUlIamJrUmQveWhVVXNUWGdQTlk0MjZ3bmlRQ1RCT01uQVhuKy9UWnRyQkRvRERPRXZSU1luNktPRmZDQmJJaEhJenlJYVpCQnduQzhqQm5aUGJQRm1QZ3V1RkhHUng0MnRWazM1OWRiazd1NkZKY0VZcm9DYi9paHF3N2pUUnRDVTFkUjkxMHUyYzdicnJteE50bFZlNjZ6ZjN1aHMzQ1FRN0pSRElQdGZoQkp5NWlsWWdjWlNWY0E2Wi9nSXFhaG83NVZUNFc2NVFzZmducTZUZEl0cHZveHdjazRUQXgrVGYwQTJZcytyVUgzMzJadmVoVCs3SUo2eitKRHpNWDBCR1JZTWduUEFSYXVHZjRBczhaOHlIbm5oSmdtM21hVDRCZ1BHQU16aEl5dTkwZzJOblN0UkFib2gyTXpSRkc1NkFpUyt6Q1JvSFhvKzhMeHZOcVUxbWFoRUZwcmNhV25Rc2c0QkJtZ00xQmtYV05vL3FEVHBiWlE4QU1hWElvcXJGTTZsWlZmTVNJSmlvcEoyQ0JNWjdBYU15QTlZdFNxK2M2TWdrMlZkaXFMbHd0T01BMHNBQ1BSblk2cTlxaXg4VGY3bTdUeFA2Z2lZQmcwYjN3Znd1L0UyOUJPUDE2enZkVlUxdzBubmRHYnRmdjViTHp1Q0dkZ0hyMmpJemNhN2VuSFJ2WEYzcHJ0NVlpa0RBNVFIK1owYUVFckpWTXZ6ZjRpVFVkSk5VU0d0NnZDQ24wQ0JMbVRmOGlSSmp4UXFvL2dBdm00czY5cU92K3pYNUNYd1hGZmhXNU8rYnN2a0gvcjlyWHYzeE5YWDRjektNL1A0UFBHMWdxdHRTR1YwNVNPU3BEN25oZUNBMFdXQ2JTWnBQQU5pTG9XdHJUc0FrVmxvbVV2VmdDeGY1WkQ1MHlod2c0VEttY216VlBIa1FHWWthVFZJSFcwaURvc2VRbDUxSDF4TjRZUFNFRnhRMEh1TUZRdWIrM0ZpaGtaV0hHTTBkbHdFTVRqRW9HR1RpZllDK1hCQUNyQ25vSXFCeXFVNlVBNVA0TEpGbnVFSXUyMzArMTE1anhWOWY3aTZlblhUM240dTczbXVTdmFGUjg3SFh0clFLM3VnKytQRk5mUk51VjNmQ3FTbmE2cVI3VkQrVStkNDNyM1ZmOE14Rzk4UjlXdjBWQ0ZZVkJNN3BlUDNxVXZmNmxhWHVtcEEzZEduQVBRSi9qUWJqbGFKZlNtQ1FWa1pqTTdRb0dRWnNkYVowVUlJU0VzWWM5RlFrOGp5QURPdkVUYjhOUGVHRC9mcnhuKzZjYlAvZW43N1dmVXkvQkx5aFM0S29nMytwRTM5dGE5RFp6WkVpQ0FSc3hPaVVGSExkQS9BUUYzaXdZYVA2eHluT0l3RG9VNjRKdndaZW94K2hNRDlQUDRyUzZTQThraE91ZnNUWUNFbzZQTHhJaytTQkpaaWNnVlRMS0ZadzVIM3FDd25SZmc1Q3VocCtUeXdZVklUdVEyWEdMRnQ5SmxOT3hsd0ZCampxRkRrSXBBN0plaUtud0R2Q1l3dVRQWkNSVzZZQ2dtL0VxZlVjZ2t3T3k2SjlzNGJjaXJPQ3RrTHlnb21neGZVOHEvNlo5UlZ0OVplNkJ5OW9CZGR5djZwMnoybjcrL0xsN2U3di9zeTE3c2MrZEVQYmUvR1htNERZUkxxNVBlays4c3B1OSt6TE43ci83ZC9lN0w3d0hldmRsMzcybWU0aFZiNnFRUERveFFnRW43eTAzRjBpRUNoeTdIRi9RTVBkRTFxRzkzbkl4Tjd3ZTJrRUh6aGxiMUFvTk1DR1RwRlVVY2xYMklmK29DOUVVSWZ4VVNzM09UZjBnZi85NXlmYTJlaXlSN2lQZkhLcit5Y2Z2S2I3SU1YWGRHNlJtYjR2bEI2UC9tTER2L1FYcWRjbnloNERBaHRwOHRiczB6d0NnSzYzZDNkaVJaUkJzcnczOG5nR01qbVFNZkRpMktPUUU2ZmNFeXFyTkdWa21DMXo4VXdMVHRtQmd6WlJvdFN6UGlxU2tKYzJBcnZqaFVrZnhLN0FVMVRZekl0TjFGZGw2dm5RaVR4M0FFR0VJUTdmL1dmMktRaDRGZEtBZEU0OUJxZHl5cGtqaTVhRXFUaEExckpsalFhdWFWbjFHZlFQbnRlS0xrYnVlTVA4VC8vTnRlNzdOZmw1N3AwSnNLN1YzckpGZFp1d0tTM3pmS3dTay9xZi85eE5mVlMyMWIzL1BSdmRiL3owalc1WEFXS2lkalllN3JwUGFrbDk5ZEpxZCtXYWRnUGFCL0JPUGI5dW04cFdGTzlnQ0Foa3FoUUdnRkFLSE5BUUQ0WVVlZ1E4T2t0T3VDVjhFYjFBQzlGUEs3S0J5WC9mT2ZtQjFaOEFwVm42UC8zZlY3cnJXL0tUNkZ3aSthL2tDQXhwMFZhMjdoeTlFekVFQjRyQmdsN3EwRStkQUtBSW9EQXZtN0x6Y0g3QzJIcUlsT3hNSGhJK010ektLa3hrT2VHenpjUlJqdnNQWlRDcERJMlQ4d0RCREJMNjFyYXpJN01DNVFLVEpUa0ZVSStnd29UTVlNRFF6b0FRZkZHVGVZMHNkTXhCemJZL0QzL3pyNVFOcTdXNEpDcURrYlo4cEJZNUpQdWM5b0lhT0cvM05hRFBhT0t6Nmora1ZmOCtMWGVyVXZ5Q2J2WTkrL0pXOTNkKy9ITDNieit4cld0N0pyN0NSUm5zREZaTGFYTGtPd25IemNJcnVqL3dYVDkrdmZ0L0ZRaSs2dGVlN1o1NlVQY0NkTW53K0gyaWEzZng4dXZMdWo4dzBZM0NIYjFYTDE2dTZVc2RPL1gvYis5c2dDdzdydnArNTgzMzU4NStTR3ZKdHJCazdFaE9RRFlRd0NUQlpRcENnZ1BZVUU1VmtncEpwWkpLa1pTTFZFd3FUaWpLVUs3WUlWUkNnWTBEd1NZQ2JGbUlzdVVQWkRuSXNtVFpzaTFMU0VMU3JsYUxySlYycFYzdGgzWjNkcjduemN6TC8zZTZ6NzM5N3J6NTNQZG1aK3piTTMxUDkrbnUwNmRQOXpuZHQyL2YrMmc3MUlKOEFCYU5WMjlKZ2ZlOHhzRWFGNWNIV1dKWWN2VVZVRkQrV25hVlZpd29QNnVnVzZUOFQ3OVUxMjJPem1GYSsxV3lEQ08xSUYrbDAxY3hRbitsZmU1NUFnZWhKZURNYTFHa1lHZ3FHVHJrdG1zRm9HNk5MbmFnSzVPajE0SjVXYy9rQ0VHRVpWRmRnTG5TZUJpOGU4cDdHT2p4Q0FIQjVWUXRTc3o1dGFGQ1daQnlCaFFQaWxEZ2JFbW5SRE4wZ3Jic1Y0ME1iQjdWTVhDZ1liT0lEeUtLV3dONFlTWUVnVGI3c3dsSVdTQ1ZVVmhlMXh3U0JoT3hxMElycDh3TTlqNWRiTmJYSnRjNHM1MlVmMGpyWDVhNzNUcUU4TG5IWnJKUHljL3FjUjdQdTJrbzFWc3RGallPckQyd1lva0FlYkd1UUVOdnpLRllEYjAwczVUOXQ3dW1zcDk3VTMvMkV6Y05aZ3VhU2NlMXRCNjRTbDczMCtjbnU3THBXVWw2UVovWDBtcUFweDQ0ZjBJUXduYlZKZFJMelByVUF3YVROSXUzdnZqeW4vTDBCK2Y4T2RTRElSd2Y2YzRPeWtDSnZXeE15di9GcDJheUx6dzVxNW0vTUg2Qmh5RHY1aXYxRlR3d0J1Z3VuSStqRUF1NVRFNFJRVGJrcTZWUzNGWHhuSjJCblRZQW9XM0w5WG9oamxRMEcydFVXcFlTSnA4SVcxR2dVbGNnSHh4U1BVTTYzaGhUcEJtbTFJcGFMUS8xQ1VVNGxBbDgwTEdXMHpNNUNmSUtSeGtHQUIwUGRCck1CRll1UXNJTVNPdDhoU21icmdMWVNMS1ZpeE5RT293dzhCejZsaFJKNE11UThneDBqQkd6UG9ONVVMdjJJM3F1dFYvTGZYYjUyZVFiMWFnNG8zdjlXeDZZeWg0OVViZFozNVFmcWlydk5HQ1dQNE0wZ0hBWkdCTVlQbTR2Tkx1TGlZODlPSjg5SldQd3o3VWEyRHNzU1VnNDErNlYwZW52eXM1TmFHOUFHNFV6V2czTTF6VU54dHVDUUJoaWNwSlREQkV4RklEbGUrR0tIQVhPUXlHZlh4RXB1LzNJWTBqUCtmYU4xVXo1dFJqSzlrajVIMzV1UHZ2amIwemJoaUJIZ1RIYXdYQkhZeUJja0VSeHBYYVRUYXd5RFRzWEtTVGR4b1I0QWFybE1vL1d1TUJtbXJtTjRVNFpnQ2JwajQ1azgvM2pzdktxYlVFYlJ3djFibGwzbXJsRlo1MnRza0I1QmphVEV4dFNDcG9Ea29iSGVkamk0Qk9jWmRqQXhXbDVqMENqVlJnY3lrNmlLMzBPWXhsTVQ0MkJUQjRsaGdGVjNJa3kyeHZQeWcrMHg0QmtWdGlXbFFxRFkvUFBsNWJjTklhNk5ad0lHUEdRbndUcVlLQnovODdPOWpDenZoU2ZlLzBoOVkwMjZhV2tPdDkrdkpIZDhVU21lLzNoN0JWWE1jZ0RZUU9LRUUrOVVrTWVhekN4a2xNREVBY1hiOU8zTGpXeTMvbGFscjM5YjJYWm02N1ZJMFBOZC92RXdKQVU3cHdNd1lYSm5teFNxNEU1clFZVzRpYWhHVUFqQkNrUHdKVzdpRk0wTndZRkttUktzcU4wR2pJMjY3T3NIeG5zenZhUGRkbXluNzJQY2NuaThPa3N1L1V4UFFrWjIyc3ZBVm03SlhPTWFBajdLcTZRaVlraDFoT0JFcDNIMW5CSSt5RjdkTHV4Unl1d01mbUZtV3krZGM3MllqdGxBSnE0bExyUGQydFp5WkxUb0N3K3d0K3E4OW1Vdm1WQWhYZTBDMnFPdDhFV0I0Q0hIWkk3RFJlbDF3N0J0WkYwOWhVaGJuaGRUUEVoa1dja1V1UUo3eEpFQlNXL0RkVmd1TndrVXBUQlRqdWRSek1JY2ZsdlMxY3BOd3BOUGd3Sks0UWcwMERMNVF2a3hDQXpQb2Q1bU1tWjlYbTBoK0tQU2VsWTVqTHJuNXZSN1B5WGpleXhGNVZmSFRVa1JXU2dpMFN6d2h2ZkRQeVFadWtFaWJkeTRnOFowUllja1BmcFp6VEgvY2tqV1hib3BTejdSemRKNFhUZndhZlByOUhTbTBlRzV5N1ZiRFV3cXkvdXpHazFZS2NKSlJTT0dydUNCNXFSTUl5VW5aSTh0NVZSSEQ3aFBaeHhrRHhrRE1lMENqcWdldmRxRmRTdlBNejhmL2xDSS92NEk3b1YwVE9Cc09HcHNwS2xsWSt3S2F5NlRRYWlEU2ZSL3JiaXFzeWx5UU9ab0IvQWhlV2wxQUI0QXltWGhsZlEyU3lpa3dZZ1ovVEMrWVc1UG5YdS9KUzhPcjJ1emx6Mkc3eE5jQXpCY0xSV2dVaWQrMFBPbmZmcUhuTnhzVS9DRG1wRXNubGRBdFFnakFqYlVDT2R1RGwxbDRWemhDZXNnSlpEV3U2SzdpWG9jSnpEd0VXSU93Nlllc3FTejNCaXhsNFVVb1JCaEdKN0czbjhCODRITURNL2hleWJBQnJKRG9VeVdyYWFVQWlEeTNQc3NHUGZyVm0vS3h2VmxqNnpQb3F2QllEZDczTXMrUXVIWnJOUFB6YW56MXVGR1JFYVZPcEwvaEJ0amxzNk5lcWZSVEFEdnFXTFFySlptM1lxVHI4Rm4yWDNuRzlrRHovVHlINzI1cjdzTGEvcjArTk85YUptMzhGOVdvVm8zSEJ1WUdxMnBzZU9PbStnc2NQaEk3czFrREdBcHZkblhyZlZGeXJsbWh0RHRkY1YzL1krdE84d3JDVS96L2paK0dRVkpMdG9LOVU3SHAzTzduZ01IUXl2Lzdvc1RMWVNCcmNDaFd5UVFUU1dsRUJZY2k0UDZnY1RzSmEwNHJLZ3poalFpUzQxTjV2aUJPWGt3dHlLVERTM3phNlRCZ0JXVGY3MStiblpiaW0rVG9GbVMxcnFMY1dkM3EyMUpkcCtVYWJ6R1UxTDhzdWlpWEhCV2FYQWtHeHhEMXNSWFloYlFnRVVXcXVMbEJ3TDJCS2NxT1VYUHlvR3VVQTBvRkZncU5rc0VNTmt3WkVYQTJMbi8xV1k4dWJCUjIvOEtvekRWZzVybHVJOTlFYWNncm9FYlRCcVJQT0JDc0pzWW5GTHdHeVA0dnVPUFJ0c0hOL2xKQnNuK1ZCOFBEdjB6NXhaeWo3MjlVdlpZWDNVZ2hrUkdoaVlZSXpnTFhweGx2TVptWFNlWVpyYkR4VTEvbzNwZUtHdGVKZU5LejFZd3VBNVVzeWp4VDk4WURaNzhOaEM5czd2Rzh4ZWQzVlBOcU94d2dHaVVTMVJNRXlYWm1wMmtwQmp4ZmEwUUgyT0lXQUNDTzhZZUYwQk9uKzB3WXloR0tTTmZYRVZOQ3A1N0pVeFpJZGZpeDNiN0x1Z3d3cS85N1dwN0J2UHp0dUtDWGtzNlVNc0xnZUVnT3oxaW11Tzh6Ujc3S3FtSWg0WGhMV2QrRHB1UUFMazZJOTV0UnVkaVVXY2hNTjFLRzB1dWQwR29DV1RqZnI4dEN1Y0NVZlNDWEJ6ekhwdWxDZXRpRGpQbkhuY1pQVW9JM3FDSTE4Y1p4WnBpdWRjUkdyTndNbzM4eGxpYnRuSlFFdnlPalU0aklUVEVXUHdoa3NOUVVwVGJCc1g0SUlQcHdXZERuQlpTOUFEZXdaTXlURXNZYUNoOUpxRjJKVFNJQ1hNSGdodjZUSEllL1dNZmtBS3psSWFwVWZaR2VUTWN0cmt0bzlZM1B0c0xYdncyYVhzbkQ1cVlXKzBNYmo1czBIZUdzSmtrVWZNQllTdEFPQy83QnpIb2dYaFFCdkRUYnVnRTBJeUFsckJZUWdPbjF6TzNuOTZLbnZ6RGIzWjI3NW5JSHZsZUhjMks0WGdubnlQREFGR1lXcXVLNXVSbjVQQlgxQjhVWVlnR0FGVkFXRmtwRDlWWlRLeld5QmtJajhnWlVjbUhFOGVqaklCc2dxNi8rbTU3UGFIcDdOelV3MTdNZ0t2WVNVVVpudkNablFoTEorbkI0bFkwMDAyZ1lVOGJvRjFMZ3hYdkZnMHVMdzRQNjJvWXJTbWM2N2RCZ0JPbldHSFhZMjVTOVBjME5JYWQ2NFlIdDhLaEFZZERsMVdGM1FjbFM0cHJOdGRNd0k2Z1dET2pZQXhKVzBNT1pWa2lJSXppK1pOS0JwVDVQQXlrYTZBcGVuaXZKQUNuVERBWTdvdzVHdnBsVG1PS1lNYVpaQXd4NHlBU1hqTjFVTjJuNzhvVGVLV3dLajdJRlJibWVHNGYrUkxOWGlVWDRmNTdLTVZmTGhpU0hHWSt0YVpoZXp1dzdQWlk3cS9IUmdaVjMxNkRDaGhtZExEc1RGWURHN0RSK1pDSHFvT2l1QnRMTGdOZkxtQkxQbzRHalZsWk5ZM09pb2M3MlJNSnRCQ1FnUDZ5aVlydXZ1ZXJtZmZQRmJQZnZBMXZkbVAzZGlmWFgrZ0IvWXpMUUpzdjJKQnkyUTlLTEFqeUp3K1hOUXN6UmlnRDFKbk0zK1VDL0pnSTFvTElqT0dLRDRqNFlrWEZyTFA2RkhuSVoxellQWFV5aGk2NHVmeVFGYjZzMzZJb1dEbFErMUYyMU51Vmc4SHVoZ3NVVlFiRnVlbWRNUGNlU2R4ZE1SNU54aGNuSnVleEFDNGF4NHdqdDA0TktKZWczV0NPbDVUNDdOblF5VjFLVDFLd01tMmVUMTFjRWNSUDJCaTZwZ1Fjbkx3RmxUVlM2MFBLUnM2UEZMeEJqWVJqVWdCTXhTQ2xBRmI5Z3dDWmkzd0dJQ2U1Ym5zbWtHZG1kY1JPbFlEeTEzZFlheDVQc0d3eE1Yd2FZbXJzcnBqc01FT3JmTmExajcwekh6MlZmbWpweGQxRDYwWlVDZHdVQWllTnZ2Z1JySHRMeW80ZzlKd0FuQVQwcGlod3FhanFnbE1LcDY2bFlNL3BLTnMwS0NYSU0yM0RxekhJbjBrajJNV0hOUXluYytnMzNlMG5uM3RXL1hzOVZkM1p6L3kzYjNaOTc2cU45dXZnd3FzaE13QXFDMnMvclFJTU1Qb1cwdE9FbHA2NkdHZWxROXRabktZME9uREI1NWJ5TzQ3TXBjZGtVd1lGd05tQ09FdHROWGw0Zkp4NVRlNXFCM0lJYlFJcnEzRzBJUVl6SEVrcitISWJuMnVBSkE5bllXWlNRd0FTWWdvQ0VhQmRqdUpvK091YTNucXBTa05ldTdRdFRDVlUzTU1iclpxbFd1U1JCS2hVeDg3d1hGU3ZYbW03Wk1oUFZMaFRiU1ptU0JReStvenYwMVJ2Z2FJbklRTVJ0L0pwanc2cmhYTDVMTjBEUnlnSzRDRlk1cm5jWnFtL0lxRU9JTXBoRzNvS2RMSDdDUUM1L1NUVS9jZW1zNWV0VSszQVdNTjdjd3Y2LzUrT1c1Q2FRaHlDOENBWmVTSUdrdmhHVzJXOFVNVno1NWR6QTY5V00vKytreGRiK3lGUjQxOHVwcmJBVjd4RFlNT3FBcWhnZWNQdnNJbHg4RW9PUGkwL1lISTcrYU1KZFF4SUx3a0JhM0FFOHBzMVVGYkh1dG1yMVZMQURXZEhXRFZjUGpVVXZia2k0dlorTkNjOWdlNnM1dXU3Y2x1MEtyZ3FsRzlwYWpOVFc1L3pCbUJFUFFyOU5sQVBIdHBLVHNtbVR5cEY1aU9hTFovZVRyY3gvTjBCR1htSDFuQ2pQMEI1UzNOTUdTaEhtUVdvRiticWxVazVJc2NrR2tOUnpKOVljdC9RZjNYRnk2ZW1WeWpTRk4xYStSYk42bVRCZ0FtOFYzekYxL1FDbUI1VHN2TjN0RERVcFF0TkNFdGduSVljYUE4RzJTSGRQOTRWQWRNYnJwV1gyNlJJUmpUN3U2MDdxVG1aQkRJaXl2cURjcWFJSlJLVnhUT3l4U1kxaUh5R2JWWUlNU0ZFemxEUmJ5Uno4TkJCdFNJRDQveFFqdnNtM1BTTk83WjczNWlPcnZsTHlhem1tYTlNYjFRczNla1I1NW4rT0hESEJnQWxKQlZEM3NnRi9Ycy9LSWU1L0Y2THJ2bHRpa28yZkNXbnYxUm1VSmhWZ3M4Y2hzQXI0VUJzRWpBS1M4S2orS25nem9vaFhCcWo5bFR5SzdqeUl1RERsejc3TW5nZHlOQWF0RmJHQXNreTdzSEZGYTc5Q3U4RHorL2FMY0hQQzRia1pERzlRanYxVmVQYXEramxpM016YWhMMWZseVRBWXplb1NJOGJzZ1paK1FiSGhya1JvWUwrRmRmbkZEYzhFcTRISWdRTjBtazRDMHNHV3ozTmJqRnFLdVZBNjB5N3ZaMDRDck9lcFFVNElSa0tCcmplVzVpYlBIZlFYZ3BCeXVSbVpMK0U0YUFCZ3lwdXNubjVpU0FkQnA3OW9vd3Nmak50dWlGUy9weEprY1dneFFYdEw0K0lQMTdBTS9wN1Bsc3A4Y3FKalNMaS8zaG5YZENnVGxqNTJUVzRMbXpncE1iWll6MmhKYXhWakJRYUVZOERIdStCUXFZNWhsMUFZR3BWWXRROXFnWWx2OW9nYnZIMzFaRGRIYWRWbEtlbkcyeXhUODJEa0thV1dJNXFoQ0g2UW9OYmNPQVdxbTE2Z3lkc2dqa2pqeUJzaktJWkFJeGlEUXlmUEVNcm55eDNKUVJOYXA4M2FtdVBYQ0JVZkJES0FBckhYaGpxcENENUFyck5TSWs1UE53bTVWYUhIMUlUL0x6YmY1SmxXWWhjejU4M1gxdDdROE91aDVPekYwN0kyQU03bFpIdHBkeEUwK1FnVGxqM2d5eUR2UHlBdFhZQ3lhOTNmUjJ3b3BhMmhMeU5QcUNyV3drWXRoRXQzRzh2VHA1eDVQRGNCNkpGcVIzUkN1MHdiQW1KZzUvdlVaUGZpL3FKdnlWNENnd1NiTVhBa3QyNll1Wm5FcElkRkFEd254aHRiZGh4ZXpINzhKMzVOcE1zajI2bGFBKzF6V1V4eXVaS1loYzFCWUl0RWx3VUF4NEIxTkhlczdEVXd2NEpsVkVKU1Y5elJubUVHbE1NdDNOdkJRL0RGdGJ1bmxhVnVtLzlhZGw3Sm45WGl1aXh0WHk2djgrWkpmUTFRNEc0d3hqVXJ5UVdrVm1wUkJHaDVvRVYzTlNJQTNHdEtjUEUva1NRZ0dMNHFBd2dmV0F6M3BvRzNnUVcybHMwcEthRzk0Z1NZWG5wV1A5WWFBSFdoU3g5cEJwNERPK1hJelFMOFJEbi9LcFB3OHFrTkVHRC9iTzlDMys1eGpCUklYNVFHR291RmlFWWtoeG92MkIyTWdQUExWbjhzakVMVFNwdlEyRHdWa3ZNSjhjSXpUdFJ6SjhDM2JIL1p4alBXbGk2ZWUxdG5qbFc0ZGFpc0xySWRwcHdHQU9Wb09USDAyZituc1hHT3BmcmFydC85R0dBcmlKTFJKSjBuVC9UaG1DNXhWR0hzZ0RJMnU3QU9mbjh1dTFiR3ltNjdobTNSNmZLUmJBV2FCR2QwS1lBellLRUpSdzRaZ29CUEp4c2hXQWR3ME84TkVOTURqUUp1WjFPRjhQWWVQVGZLMVdiN3d3KzcwN1EvT1pCKzlkOUtVSHdOaGc5Q1ZYek1aTTBZWW9ERU5xWG85SHFDK2x1RmdPRWlDaDNTQWh6QnRDSW9mU1ZvY3JEdU1nTHNROU1vZG0wRHJuNlpjU1NMQjBLdGMrYjBEK2hacThHZjlKQmlNRUZoTVFPanBZQlRBaGJ3b2tzMms5c3d4NEMyeGRHa2xFOGRaKzExbWdsQUpWM2dJb1RCNUJLS1dIbVdSaUNRMG9GVHZhbEdNTVh0WTVqRUEwcFdKMDZmOUpDQmszYTlHWXN2NGRocUExWmlBK1hxalBuMnFhM0RFQk9vWjE3T09ucThNWFJwcCtSRFdzMTRKOG1VOUR2eWxUOHhtNzN2N1FQYm0xK3JWVXkzL2VmN2RKMFBBZlNHZWxRQTc3R1VIYlRvVnVLcHJrYmpxY0lzSk5sQ2NvQ0lvbmoraTBqSDA4TjA1OGNNZ3VPWCs2ZXo5bjcxb3kvNmFNdm1nREVwZmJQbzUzb2FsNkRuTWh5eVZ5aFg0UEVVMHd5MkEweUJGVlVlbkVrYVBhQ0NDZk5Gam1vNlBwTWtRNkZ0SWx4YXlDVWxlb3NpUWl0LzdEd0xJSnB6dWs2cWhoQ3BDM1VENGdnTFV3bXFBY05oTUpJME5UZnN3YXFoMDVaV0NjaXRrSWp3NGFCajFHQmNxNUxaNERFZCs0TU41Q1NuRjFSS0lic0Q1N0E5a01saWVuenVwWXNuenF3MFEyV0tXVGhrQWwwME9sK2VtbnU4Wk8yaHNJbVNHR3grRDJwVFRLQWhXMzdvb0ZxV0hxS1p3SEgwOXE4ODF2K3ZqTTlrLytjSGU3Si8rY0g5MlVHOTQ2UlJwcGx2R1RJK05iUlhBKzBpK1pHK21VTkM2M0JEY2xSMEQzQTBBQm92SGRpZ2Y3NXAvK0l0VDJWMlB6V1kxV1FJK1N1RUtDaXdmUDAzVHFJTjQ0WHd3Qnd5RE93eG00cUpGTktKSW8yUTRZQlI0U1RJSEFwU0tRZ0tFWUN6cENYbk8xUUxxdjF6UVRxR2NGMDdnSVR3cHNGeEM1YmNkUXBpQk1KNkwwZUF5Tlpsb0tXRHRLU29MTFF5azh3cFRtVmc1cFlUNmdqRk01VUhld0hFbzdrMEdGL0NibFVYT2h0M0NwQ3VBK2RtSjR6blpzTmhOcXk0S3RpSFVLUU1BYXk0YllGZjkwdW5uZWc2ODFqcUdSQk9vTFEySmJjWloxK1lGdkNPc00zT3NsRXJLdytiZlIrNWYwRHZ0QzlsYmIrekozcXpueU5jZjBHTWpuWWZuNVE2YlVaTXlIbHhOMmpaK1l2V3I1WEVhcGJIbWFJT1U1UWdyUjFwZjBHTytwL1ZJNmt0UHpXVmZlWHBlNzhQcnZRWlpoRlM1N2NTZnROVnZCVmd5bXJKSDZHMUhvWFBGVFJob1RsZkgySFFhaklBWkFnWjN6TThTM0p5WWRGeEFwRmZ5aEh3bWg5VXpwb1ZpT05LM1dHc3BoajROU3VnZmxLWStqS1JYWlhsRXlxblI5bURVYUZmQWVydXRLcy9ZeEFWeWpJaElpWGhham1TTHcycWUxOHM0RExrMkw0dFEzbDdVWWhVb3o5bUkrUXRuajBYS1J0SnJFU3pIazZTdEJUdHBBT0FJaHZIZEM2Y1BQemR3M1k4c1NzQlN6YTA3Vi9pVWdtMGFSZGxBTzBoSkcyc2FNVU5TSmg0QjNmcU5sWWxHOVFBQUdDOUpSRUZVaGV3MnZZYytyS09nSEkwZDF2MjJiUnlwUUZGR0pVUGhsTHlGZVJZOU5EU1VEUTRPNm15QlBwQXhPeHVVY0VYT3RSSGNldkNzbm1Pc2s5cTludEFqdTFtV0pYSWMzKzNuMko2RTVFcmViQWdZc0lVbm54bUNXR1ZUT09JTUtKODdDMUd1YVRTSGRCUXNkYTFremR5TWMwVk04Mjh1TEE2TUNHMWZSZWhLWVM2M2o0WmFubkQvYi9YRVR2T1NOQkVVK2YwZVBlVXh0TkJLaGt0WkpwUnV5a1FFbytNMUtGWUVJNkdRSjYwbnFXSGRvSlhXeFc0QnBmd2NYdFBEbmNWekx4NStUb1ZKNWk2Sld0MHIyRjdYYmdNQW96RHVERHVzVFIyNTgrVFk5LzNMbDd0cVBRZkpFR2FlbUZOZzQ4N0poeExGUmw0WUhNWUFXWENSRzU3NURtbFp5R2xCbm8yZm1kVHljc0pmSUZFbSt5ZHpMQk5DOFJyd0dJRGhrVVkyb3EvbVRPb3J1RFA2cGxXcWNFMUYxb3lJdWZCdk1tQjI1M3g2d0hsYVVPeFUyVmZNL2lvUXhuQlN4amtXcW5DRnFqczZ0dFE2S3VCUVJyR3djb1FYWkpMY0lOZk1tcFJhUHdnSGVMaHl6cHBMc2Z3UFN1MzVTRGVHN2RhQW1MWERTT2tTbGR0d0pLNXdMV1NTRXlCektHa2JuYXNTSVNFa1hvNHNtS1RzM1EzQllBQVdYLzdyYi80NWV3QllXcDVudGhhS0V0cmgybTBBa0FnTU95UnMvdUtoVDErNFpuSDJXSzEvOUdDdzFuU0NaOXRrVXhLVDY5S0JGbmVFcHBRUlNUMWhvMGtiUTZTcVJ6bExZTC9RYTZNcTNFT2kzTGxUT0lubEhKS0hNK0o4TUdOQkpudEpmck1HSUcwdFlSK29JV2lZbkdhVDhxc2h6WEVyWWZLTFl4MWkrYXdjS1Bud0pLKzdtRWZ5QzMrT2o5RHdKWnhIaTRvYzAxNlk5R21aY05vZlJhdThsVVVxR0ZZQTRkRmltVXFJZTZraTFlVzJNb1U4WVpWUzVNNURiWkFIblBNSUU4WEhjd0NzSVIwNWRPOGQ1Mk05clZZQVJZTnpaclllYUxjQktITUNzOTZJdWFXNWlTZTZoMFovR0ZFalB3YmhNZ2VmdCtBZzNDUUpHN3htQWtRMU9NWVVadFR6RnBCT1Z3eGxCNmt3d0M1VzJHSmdjb2NCWU04QWkwMm4rWVpjbm1HVmdQT3lNam1tQ0lSUUNKaGlFclFCcHBnZ3F5VUVaampEczRJeUpBbjZEL3pTMXVCSVMxMFJiNXF0U3Mya0p6eW53NXlLQ1NxUGJVc0E5a29zTnRVYjJvTEVtdDFLVEhONmlCV2xYQ1psRzBUZGJGT1RzOGdkU2llN21SR3hOY0IzQ1ZCK2JnTllDZFl2VER3aFN1VkhnRnNqdm9GUzdUWUF5QXhaZWQ4NVpHelZGbDcrMXFORDQ2OWlMQWVoS3VBWk5zQnJrWVZDY2lzNlJSZzYwMjRHbE1pWXRUeFdIM1hGUDJVS3R3NkNsc0VLV2VaSU9sUmcxNERCQUFURmx3RVEzOTNzTkpzU0psblhEVnBsSzNJRk1uSFlLaEo0Rm94OFUwOVJGL2VsdENYUTRvb1A4WUJiVVVFWmdWeThvV2s0NWlPcHJBeGxFaDJQUi80MjJLSW9EYmphYUltVkxjaGxVa295ZVZ3ZTZSTEZFTVZnczFuTmkxc1lBUjREbmo5MVROOUlVbmNXbnN4UkdnVGI2OXB0QU1yY3BRMnBUVDk5NTVPRDEvMjlLYzJlSXd4dVpqWWI3bTJhWFh5NWhwcEQyWmI5cWloOGV5L2czQXpBS0t1QVVMWFM0cmhaeVFybDZJSHdyQm1lN2JDSjd0MExwYlFzRzdqRVNtSk9aRkM0b1BERVRlRmh5TklkSCtLbS9MRWd5Y1JOV3kxdm9CWTREdUd0WEkzVTVSTFpTc1dYVVFhZUV4RmNCcVdWUlhPNmJaUUpwTUlKUnA1SWhkZTN1K3JMVTg4K2RPZVRTc0kyYUpzNFh6MHJhSU82alJ4QU1wdy9DYUgyWG1IVVBiTy9yUzdQUHZqQkYvYS85YjFIYW4zRFA4QVlSdm41QzFtM3dFQVVSOTVCT1lsQUV4TUFiYkpaUFdiaWkvcHMvYUZvMHg1QVRpeVU4MkdGWVdEWmJRWUFxT09tVVEveldqY2FnSmZBVTFHaU1DWml3UDRESTZHT1psd29GVnJuRk5MWks1VDBsQUNqcVBJSWVTaGp2am5yem80MU5TU3dhdTBGTHgrM2RqYlVoaGFraW5LdGhGaWtYbjVJbFljdk5vV25VWVAyL3NmY1U5KzQ0N2RmRUhGcWp5M0tJWFU2bm5CYlhDZFdBRENlaW85NE1BSnpjN05MazZjZjZMdjZoaDhJaWhTVXF0V0p2SzIyanNwdy9vakpURXdxTm9WSnN6MkF5R1pnMWt1RzhselRoaEF1RElDK3ZxTjM4amRyQUx5R1ZEaWhOcGdLSWE3QldDWHhwb3FVS2tLYlhhSW41RU5Wb2tHbndGTnFQSXBhZDFmSVpic1pybE9ackNpM0ZZSXJpS3lPb0c2K1ArQWZic0VBekowKzg4RGNIRyt3bVBQdWdaT09jVlBzRzhWYTJ3aWM4YUQ4Y1Q5bDl2aFh2Nnl2Tnl4aEFCalh4V2JXRm12MldnU1pwZkhGZ0ViTWVOVmpvUmlQOWJKOERnWkNWeTNwN1hVeW1JcmVadVZTM1BuMlBKdUJ0clJQNklXeTRWWUNQdURIbHZUR2N1QXRQNWlqTkc4TDdURWprTFI5SzBNRUdvV3NvTHA3M1c1ckM4dC9QZ1hPdHhuNGRhVGFVbVBweEZQU2pUQlVYV2U4aDcxamlMZlZkV0lGa0RMb0RmQUcxYzcrdjE5K1l1d05QLzlFZDkvd0cvbDBGd1lBeGVCVHo1dDFHeTNoZXdPMko2QksyREN6c3VoNlFtVGx3cnpnaUd6b0xub0l2OEY0Rk9sYkQwRTBPSi9WWXpXbThsUUlqNTdtZVlId2xMQnZrWUphbXJNNWJQc2NTVUdMTjJmWlZiRzB6VDRKN1BRRzhFaVpsNy93STNwSHBhcysrL2dYUC9wdW5nRFFITmNYNElwdWJtZmJPbVVBZkhnNTgzbUQ5R2JnZFAzc2tVLzF2ZnI3Mzhoc2FtOXdhZllOUno2OTJPYWFtQTRBS3huSnJNQ2pUTW9ROEp3MWwzUVZLWXpBeWhJcEo2U0dsUVRZdGZPbTVUWVNOajRpMWNCbFVZcWFuTWRjUXFYcUhlK3dLTDB5UkI2ODBWUmdJMlZXVXRsWkdOcXlRa1k3aThXY0c1NGlEZXZFSjZkUitTRVVQbEI2NmJtam41dzRjNFp2QU9CNCtsanVsbkxjTWw3dXBWTUd3UG1DYWZjMEN0OTM1djRQM1BYS2Q5NzJpOTNkUGRmd0c2Z3NoK3hUMUZ0WUJYaEZtNGVheGFOSVU4bW00WlUwWGV0TUpWY21id0hqRkoyWDlleUs1eThQanh5L0FSN1MyeVRLNVhWdm9PeE96NElSMk1udFlYenh3eXg4bWRobWY3Ny9VRjg4OWVYYjN2OEZKZW1Cb0wwRm1FK1lpdnVRcEtzOHJHQjdYQ2YzQUp4RG1QWUdtV1diZVBLVHArb1hqLzFaTi9jK2FsWllDUlJ6cXhlOExFaXQ2L2xZQVpKMUR4ZnVIZWN3WmpmZ3VNMUNwKzNReStlMDErT1o5RFk0cTlmcmFnTzlLMDBpWFFGY2FWN1dxcDhYZi9oMEdlK2pqR2dGc0VkZnJKbysrL3p0VDl6N1p5ZFZqaDVCUjJ4eFdxTFRwcDV2cHNvNDdLVHpJUWFrVVRTTzg4MjFsKy83NzdmcFlQNFp2dHpMYlVENFNLV0daVnJpY3NLcVpMT3VYRjI1UEVxRDg2Vm1pRzN1dWw0ZEc2SldKcktGdU4wcnF6S0t0azNtVytDakhYWFRIMTUxSG5ERURvT0Rlam1OSHlSaDJjODNLN3VYbHM1OC9YYnBRcGgzWFBsOXdreTVwNmZhN2pwcEFHQWVCL1FHMFVCODQveWpmM2hpNGR6UlA3SlZnTGl3dllCNHVpNXQ5UlVMcTJMZlVIS1lEeTRhMENKOXd6aktYMkd2NnEwTk1IS2xlV2xML2JRRFFyUnJoM25uaVM4eWora25oNW45OGVQNlhOM1VxV2R1ZWZDdWp4d25qeHlUb3hzQmI0WWxkT3JTU1FQZ1BIdEQwaFVBcDV4cUp6LzM3MjV0ek0wOTA2TkhJZmtaZXg3SGVZbHRocjZNTkNnR2ZYbnUwQnNFZE55V29OcmxkVjJwdGxxOTNxQnRsbk5IMmh6YllrWmdoN1VIbm5ocU5Dcmw1eWZZUitWUmZuMnUrcG5QLys0djNxb1E5LzdvUkQ1Qkt1eXRVTEJ6cnRNR2dFYmd2REZ1Qk16S1RUOTMzem41MzlMRTM4QUEySzJBTHZhZCtsQnVaMTNWQ2hTM1NYbDJGb2ViNHViYnJTM1duazFKWVBzeUQybmpiMXkvUE1wSFgvbU5SdDBDTkU0ZXV2OS9IWDMwM25QaUFuMUlaMy8weEhXbm8weDIraWxBeWp5TllzTDB4bUx4QnA3LzQzLzRoYi94bjE3NmJNK2Vneis3ekk5NHlCYjI2TUx2dlRVZDBVMHBYWWt3eXAvVWF6TjRFdDlWd2NTSTJRcG1XNGJhOWtqSSttVUh0UWRXZU9hL2QxaXp2Kzc1TVFBSDltcTZ2M2o2cy8vM3YvNGtPLzlNd3J6OVo1T2lvUGVPdDhLaGt0cnZPcjBDZ09PMFFZUjlGWURGczJYUG1YdC81VGV6aFlVVFBYb3FZTGNDTWdMZCtrNjJuY1NEUXVVcUNleENDVERZK2RqSHVIN0loWjhneHdEczM2TUpibW5oeEpjKzlxdi9ROGsrR2Zyc254b0JXdHhSNWFlQzdUQUExSU56NVM4YmdPVUxEMy8weE5Rem4vLzE3bHFqYms4RnpBRG9PYjE5M3owVXJxNlZCSGFiQkhqa042NWZjOXFuUjMzajhudjFReldqQTQzNmM0OTgvdGNmdXZNUFRxZzk2QUtUb0JzQTR1aEp4eFZmZFpqYlRnTkFoVzRFVXN1SEFHclAzL3FPZXhiT0hQbFFyNTZOOGlNWjV2V3VOQ3VCeWxVUzJHMFM0SWc3UCtXMlQ3K0ZaY292QTNCZ1hEOUtldUxJaC83a3ZlKzRXKzFCOTlaUy9tMHhBdHRsQUx3eHdMSVJRQWo0cnFOLzhLYmZYN3A0OGpOOWVrU0MzdHRYVW5WUFVLdU1nTVJUdWQwaUFWZisvVkorWnYyOVV2NnI5L08xMzlPZi9yMTN2ZWwvcXgzb0hkLzlYOHNBYkV0enQ4c0EwSmkxakVBUXh2ejh3dkZQdlAzWGxxY3ZQTkNybmRLd0NzQVE2UFhieWdoc3k0Q29Lcms4Q2ZDeG1EMjY1ejh3MXBYdDE2TStsdit2T0NDYUd0TzN2KzluZm0xK250K3FNc1ZQbGQvdi9ia0Z3TG11aEZnSHI5dHBBTHdadmdJbzd3VmdCSmFtWDN4bzRvVlAvK3RmYnN4ZWVyUlhLd0ZiQmVoWlJiZmVuZGE3QTlYR29FdXhnanRPQW54OW1sOXV2cXFrL04wTFU0OTg5a1AvNXQzSERuMXpnakV1WDU3OTBZbHRVL3BVY0ZmaUJ0dWZwamxNK1FIWFBYL3VxZG5GeVZOZkdiN2h4OTdZTTloL0RTS3p4MVh4ZmR3cjlYaXdUOGM0Ky9RTzk0Sys0MSt2NjZYaVZpMUlXN09EdzkwYXJJTTZtTUxIV09iMCt3UzczZEVXWmwvYTRpY0N0N05OL05UNFB2MTBPelAvUGkzNzhkZGNwUWxzL3RJamQzMzRsOTcxNkQyM3ZpUitFRFRLajA4My9zQzdBWEFvVk9mZGxUQUF0QXJWS1RjMFZhZnV1WmYrYW5yKzdOUDNqNzMyNzkvWU16UjRuWDA4T0ZnQktWNVl1R3kzSWFnTVFPY0g1RlpydUZJR2dFZlZ3d1BkV3U3amcrTHZaOWt2NWUrYXZmalZ6L3pPdi9vUGo5N3pDWlNmOGM3ei9yTHlnM2RkY0NqVTlyZ3JaUUJvblN1OHczS0x1eGZPSFptZGZ2YUw5NDY4L3FjUDlvMk0zb2lZTExNdXdRaXNWclJNcWozeHlnQzBSNDZkb0hJbERFQ3Zia3YzYUtmL2dINTMwbWQ5bnZOZnZVOWFmdkhVcDI5OTcwKzk1K2hEOTV4WGU1bmhVWDYvL3kvUC9vaGsyNVdmU25lQ0FZQ1AxVnhYZmZMVTRzdGYrNS8zN2ZtYjc2ejNqVjcxL1YxOGpBOVJtUkVJWHhPaThIWklyeklBcTNYVGxjZHZwd0hnK3hVam12WDNqV3JXMTA0L3lzOXUvOVU2NGJkM3VGR2ZlT0h3QnovNEwxNzdHK2ZQbnB5VlpGQjJYL1pqQU5nRDhFMC9IN1lPbGJTOTdrb2FBRnE2MmhUdUFnRmFudlBmL1BBM0I2NTU0NUdCZmRmZjNEM1FzMGUvb1JidXdiVUU2K0l0d2tqS0MzWkNqSlVCNklSVTIwTnpPd3lBZmNldlg2ZjZ0TkhIOC8xOWNjbVBBVGlvbmY3QnJ2bmp4eDc2OC8veWY5NzlsdHVrNGN6NktIeTY3UGVabjJIcXZqMEMyQ0tWSzIwQVlIczlJK0JONjVsNDRrK2ZsWG45MHNncmYyaHY5K0Rvalg1UUVBTGNpM0ZiME1uanc1VUI4SzdZZWJBVEJzQm5IM2IzQjZYNExQZE44WFdQNzgvM3I5TGhIcDd6TDAyZStzemRIL21QLy9tdWo3em5NWWFqdk0vNndQTE1mOFUyL2NvOXQ1cnlsZk4xT3U1OEFObmh3Mk9jOEhwWjJMemVGTWp3aHIvK0Z6Ny9FNFBmOWFQdnF2VVB2MjVSNGwyU1owYzc5OW9LNXNkQTJTaGNabHY0TXJlR0tUNGl5eitzbHpyQ2o0UHFOMnVkYXpHMW14eHQ0WmVJOSs3dHNhY1pGeTh5TWUxdVIxdDRzbkhod21LMnBCK0EzWXFqRkYxS3Z6TGJvL2k4eURQWXowWmYrSVFYRU0vSFBNWTE4OWNXWm8rZWVQSytEOTN5S3ovMUZ5cnF5M3RYZmhRZjRhWXovNDVSZnZHMTZ1eEwyblk3VnllZ0d3RWdieXppVTBOQWVIbndOWC8zd0t0LytzUC91SGYvamY4czYrazlpQkZZa3FneEFqdzFNS2hleFFBdzZCdENLQlJzQVloTk9MSlhCbUFUQXR2bXJCczFBR212KzREajVCNnZvcVB3K0g1K3B0MjgzdVRUbE1ObnUvRkRVbnplNVIvVGpOKzlWRDk5NmRTUmozL3V0Ly85bng0NzlKVnphaTVqRllYM0dkK1YzNDJDSzc2ejRIQ2JKZFZjbmN1Z0dYdmxZczRQRU8rR0FBT1FyZ2JjR0lCZkhyLzVGMTU5OVZ2ZTgvTzllMjk0UjliYmZ5MGZHc1VZbUJHUW1JRm1BQWliandaQkVmN3Nud1M1L0JvQ2hqTzg0cFVCeU1WeDJRSEU2NTFkRW5VVGJmS3NsZTZaOTYyeUFyQTZkR0dQaUpuZFozZi9vVmNVbnQvbjQ4QlpuMFpWL2t1OU1jd1Bkd3pvL1pSUnpmak0vTFhGK1pPVFo0NTk2b0hiZnVPVEQzL3hsaE9xbnpIS0RJL0N1MDluZlJSL1J5cS8rTXI3Z1BCT2N0WnZZc2dOZ0VOZkRhUXJBb3dCNmN1anIzL2JOUWZmK3FzLzNuZmdwcCtwOVkxOWp6NHIwSTB4V0U1V0Jia2hVQUhUZVkydXFQdUNaZzd5RVplZU0rQ0R4U1BEV2dyS1QwMDFzdWxwL1FpMWN5bGF1STBNMUpEenlsNXByOTBDak5mQ0xjREV5aC9VTGpYTkdBYVgvajZCeFlWcmxkZGI2REpDTnF2bGE4SjdwRVVCVHpJWUNSTW1PTDYzWmtvOE1kR3dXNER3ZXhNYUdFcGpkamVGVjlpT2x5dXVKM2dXNWxkNVVmNWVqU2ovbFY0TUFUL1Z6WXpQTC9iVWxyUzBYNXA2L09LSnB6NTMvKzN2dS92UVZ6LzNVbXdPaXUxS0Qwd1ZuNW5mRlIvb2JrY05FK1MzVTUzekJrVEIzYXU3N0pZQWlQSzdVY2dOUWRZN1BITHRQL2pOTjR4Yy82Ti9wM3YwMVQ5VTZ4MSt2WHA3bEJGb0JrRmRZNnNDZFl2MWhpNG9oWWRGYzBXWS9DTmErZzFySnBqVTE5dW5wOFBBSTY4NUsreVJuUTJEQWREbUZSK20wTENkNElDcW5BbGNGNkFyYmc3WHdLWGx5blNJUTlEeUpPRnlQQ2JsR1QwOXJUK2xBOTd5QU9YSDlmeWRWOGtuMVJadS9WQjg4S2I4Z3NVWHAwTFlEWUROL0NnL1NxK1pIc1hYZ2lEcldsNmVYSzVQSFowOS8rSTNqaCs2LzRFN2YvZmRoK3YxYWI3Ynp6aEVvWDNXZDZWM1NGcnFmV1E0VlBMT2NXcnFqblVwYjRRUnZFUENHQUEzQm00RUhJSjNnUS91Kzl2Lzl0cXhHOTkyVTkvK04zeHY5OUNCTjlSNmhyNHJxL1h1VjJtOVhCQ1ZYMTNtdHdxVU5JUGdGR0ljNWNkUHRUSUFxckNWY3hLdDBxNFVqcll4NEZNRGdHQk5xUlJ3NVhJbGFrcEw4NjBYcG9IUTgzeWJpYStSMTJnNlhXaHJOT3pSSXpsbTk2bkphQUNFODluZlBqS2pPT2tvUE4rZ1pNWW5ySC9VZFZHZm9uaDVlV0htK2ZucGM0ZlB2M0Q0OFdjZXV2T3ByMy8yOTA4cWxkL3Fvd2s0Wm5WWGRJZmczSmNWMzd2ZklUUjJsUE9HN1NpbVNzdzRqMEQzR0FEQzlGL1pZd1RBT2ZTOGRBNWwrclV5MkR2eStwOTh4ZUJWTjEvWHMrZFYxM1gzNzN0VlY5L3dLN3E2Ky9kMzFmcjJOR3ExNFM1RjFHdTlkdXBZcGVoQlZnRDRTUTB5WHdHZ1RPdTZqZVJabDBqN01wZ0IwRXlYR2dCVEZyWFRaczBFdWhGWUMzcGFXdGFOU0JOT1RUQjhwQzlRMUplbXBlRlNYaStUMDFGZVp2a3g3Y2lqNE16UnJBQXNIM0tYVjdpZU5aYm1hNDNsNmF5eE1MRzhPUC95MHNMMFMvTlQ1MStZdW5EeStYUEhIajl4N0xHN1R4MTk1SjZMS3NGemUwcENBdWZLN2NxZlFrOXp4WTgxMmdvZ2xBNjBQTHpqb0RkeXh6RldZaWpsazdCN2xEdjFaV05BbXVNODdHV3BnZzdEa2RiYk83U252Ly9nelVPOTQ5ODkzTFBudXVHKzBZTWpYUU5qSXowRGU0ZXk3c0doNFpHQndhR3hnZjdaK1o3K3VibGFmNjI3cDBjZks5QXFRZytndW1yYVRxcnBSMmthZ2h4STBQZERPWlRRMEYwemYxVFJXS2J1SGVIRWViWkh5K1pGeldOVGx5UlFzU2ZHRFpwQ2kwdFRYdUVSanVFSWswZnhwcndSaHlLYVlwS2ZzSmZ6ZE1VaFpuUVZOT01LVkxyUWVWbkpVcUpqajZXcm9mclVSeEtpQkN1MEh1TjBMVW1PVXJqbEpSWFR6OHd1TERVYWk0dURBOHZ6V1dOeGZ2TFMzUHpTL056c1luMTJabUhxd3N6Q3pLV3BtWW5UVXhObmowOWZQUFhNOU9uamZ6VXpNekV4cCtxNFowZHhjVlNQWXp5NE1xUGNoRjNKVStoNG9KY0J1bGZRSFBFZDdlaWozZVJTZmdtN3B3TnRERVdJMGpzT1dJNm5hZER3c2dvYVRTRE9PNVE4M3BrZUJ1SWNsc09XV0VwM1hBVTNMZ0dYZTFvaXhYbllZWnFQc1BkUDJtL2tkZVgxTVBIVXV3RndYRG51NVlEdUZUUkhmRmM0Rjg2dVlEWmhNdVdiY09wZG1WUFlTdUU5bmJKcE9LWGxZYW9takhOWURsdGlLZDF4Rld5UEJGb3BWaG5uY1dBNTdEaUhiZ1JTV0E2N0FTaVg4VGpRWFJwMjNJNkc2V0RlMFl5dXdsektQK0gxZktyb2FiaFZPYXAwdklkYlFYQ3BvMHpsT2lPQnRSVE0wMXJCRkVlNDdGM3B3YWRoajlNYThMaTBiTUFVaHNianV3Wit1d3pXdEIwZUJwYkRhK0hLZWVuRWN2NjBZejEvaWl1SE41S25YS2FLcjVRQVNyY1JsK2J6c0NzczVWdUZIZWN3elZmR2VSb1FSL3F1ZHQ5T0E1UzIwQ0hsTm5rY21JYnB1TlZ3cExrcmwzRTgwTk5TWEJwZUx6M05XNFZYbDhCNml0WXEzWEVPb2U3aGpjQnlIdWZPOFI3ZjFmRGJmWUNXMjVmR054S21jOU44YVdldmhrL3pWT0h0bFVBcjVVeHhhUmpPUE80d3hhV2NrMDUvcC9uUzlGMGIvazRaeE41NWE3VzNuTGFWTXJ0MklPeHl4dGRTek5YUzFzTDdXRmd0enk0WFY4RytON1RBZkdlRkxyZjlsMXYrTzB2YW5XdnQ1U3JxNVpidlhNczZUTGthd0JzVGNDV25qY2xwcCtYNmpsWHNuZFlSRlQrVkJDb0pWQktvSkZCSm9KSkFKWUZLQXBVRUtnbFVFcWdrVUVtZ2trQWxnVW9DbFFRcUNWUVNxQ1JRU2FDU1FDV0JTZ0tWQkNvSlZCS29KRkJKb0pKQUpZRktBcFVFS2dsVUVxZ2tVRW1na2tBbGdVb0NsUVFxQ1ZRU3FDUlFTYUNTUUNXQlNnS1ZCQ29KVkJLb0pGQkpvSkpBSllGS0FwVUVLZ2xVRXFna1VFbWdrc0RHSmZEL0FiUEhaeUY3ZWlnRkFBQUFBRWxGVGtTdVFtQ0MiPgo8c3R5bGU+KiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94fWh0bWwsYm9keXttYXJnaW46MDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59PC9zdHlsZT4KPHN0eWxlPi8qISB0YWlsd2luZGNzcyB2NC4xLjE0IHwgTUlUIExpY2Vuc2UgfCBodHRwczovL3RhaWx3aW5kY3NzLmNvbSAqL0BsYXllciBwcm9wZXJ0aWVzO0BsYXllciB0aGVtZSxiYXNlLGNvbXBvbmVudHMsdXRpbGl0aWVzO0BsYXllciB0aGVtZXs6cm9vdCw6aG9zdHstLWZvbnQtc2Fuczp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSI7LS1mb250LW1vbm86dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLG1vbm9zcGFjZTstLWNvbG9yLWJsYWNrOiMwMDA7LS1jb2xvci13aGl0ZTojZmZmOy0tc3BhY2luZzouMjVyZW07LS1mb250LXdlaWdodC1ub3JtYWw6NDAwOy0tZm9udC13ZWlnaHQtbWVkaXVtOjUwMDstLWZvbnQtd2VpZ2h0LXNlbWlib2xkOjYwMDstLXJhZGl1cy14czouMTI1cmVtOy0tcmFkaXVzLW1kOi4zNzVyZW07LS1yYWRpdXMtbGc6LjVyZW07LS1lYXNlLW91dDpjdWJpYy1iZXppZXIoMCwwLC4yLDEpOy0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7LS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpOy0tZGVmYXVsdC1mb250LWZhbWlseTp2YXIoLS1mb250LXNhbnMpOy0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5OnZhcigtLWZvbnQtbW9ubyk7LS1jb2xvci1wYW5lbDojMWMxYzFlOy0tY29sb3ItcGFuZWwtYmc6IzE0MTQxNmViOy0tY29sb3ItcGFuZWwtb3ZlcmxheTojMTQxNDE2YTY7LS1jb2xvci1wYW5lbC1kZWVwOiMxMTExMTM7LS1jb2xvci1wYWdlOiMwYTBhMGE7LS1jb2xvci1hY2NlbnQ6I2E1YjRmYzstLWNvbG9yLXN1Y2Nlc3M6IzRhZGU4MDstLWNvbG9yLXN1Y2Nlc3MtZW1lcmFsZDojMzRkMzk5Oy0tY29sb3ItZGFuZ2VyOiNmODcxNzE7LS1jb2xvci1kYW5nZXItc29mdDojZmNhNWE1Oy0tZm9udC1zeXN0ZW06LWFwcGxlLXN5c3RlbSxzeXN0ZW0tdWksc2Fucy1zZXJpZn19QGxheWVyIGJhc2V7Kiw6YWZ0ZXIsOmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyOjAgc29saWQ7bWFyZ2luOjA7cGFkZGluZzowfTo6YmFja2Ryb3B7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkO21hcmdpbjowO3BhZGRpbmc6MH06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXI6MCBzb2xpZDttYXJnaW46MDtwYWRkaW5nOjB9OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyOjAgc29saWQ7bWFyZ2luOjA7cGFkZGluZzowfWh0bWwsOmhvc3R7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7dGFiLXNpemU6NDtsaW5lLWhlaWdodDoxLjU7Zm9udC1mYW1pbHk6dmFyKC0tZGVmYXVsdC1mb250LWZhbWlseSx1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLCJBcHBsZSBDb2xvciBFbW9qaSIsIlNlZ29lIFVJIEVtb2ppIiwiU2Vnb2UgVUkgU3ltYm9sIiwiTm90byBDb2xvciBFbW9qaSIpO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtZm9udC12YXJpYXRpb24tc2V0dGluZ3Msbm9ybWFsKTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9aHJ7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweDtoZWlnaHQ6MH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9Y29kZSxrYmQsc2FtcCxwcmV7Zm9udC1mYW1pbHk6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5LHVpLW1vbm9zcGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxNb25hY28sQ29uc29sYXMsIkxpYmVyYXRpb24gTW9ubyIsIkNvdXJpZXIgTmV3Iixtb25vc3BhY2UpO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LW1vbm8tZm9udC1mZWF0dXJlLXNldHRpbmdzLG5vcm1hbCk7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLG5vcm1hbCk7Zm9udC1zaXplOjFlbX1zbWFsbHtmb250LXNpemU6ODAlfXN1YixzdXB7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7Zm9udC1zaXplOjc1JTtsaW5lLWhlaWdodDowfXN1Yntib3R0b206LS4yNWVtfXN1cHt0b3A6LS41ZW19dGFibGV7dGV4dC1pbmRlbnQ6MDtib3JkZXItY29sb3I6aW5oZXJpdDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2V9Oi1tb3otZm9jdXNyaW5ne291dGxpbmU6YXV0b31wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtfW9sLHVsLG1lbnV7bGlzdC1zdHlsZTpub25lfWltZyxzdmcsdmlkZW8sY2FudmFzLGF1ZGlvLGlmcmFtZSxlbWJlZCxvYmplY3R7ZGlzcGxheTpibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aW1nLHZpZGVve21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvfWJ1dHRvbixpbnB1dCxzZWxlY3Qsb3B0Z3JvdXAsdGV4dGFyZWF7Zm9udDppbmhlcml0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczppbmhlcml0O2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtjb2xvcjppbmhlcml0O29wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JvcmRlci1yYWRpdXM6MH06Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9ue2ZvbnQ6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDtvcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjojMDAwMDtib3JkZXItcmFkaXVzOjB9OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntmb250OmluaGVyaXQ7Zm9udC1mZWF0dXJlLXNldHRpbmdzOmluaGVyaXQ7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7b3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6IzAwMDA7Ym9yZGVyLXJhZGl1czowfTp3aGVyZShzZWxlY3Q6LXdlYmtpdC1hbnkoW211bHRpcGxlXSxbc2l6ZV0pKSBvcHRncm91cHtmb250LXdlaWdodDpib2xkZXJ9OndoZXJlKHNlbGVjdDotbW96LWFueShbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OmJvbGRlcn06d2hlcmUoc2VsZWN0OmlzKFttdWx0aXBsZV0sW3NpemVdKSkgb3B0Z3JvdXB7Zm9udC13ZWlnaHQ6Ym9sZGVyfTp3aGVyZShzZWxlY3Q6LXdlYmtpdC1hbnkoW211bHRpcGxlXSxbc2l6ZV0pKSBvcHRncm91cCBvcHRpb257cGFkZGluZy1pbmxpbmUtc3RhcnQ6MjBweH06d2hlcmUoc2VsZWN0Oi1tb3otYW55KFttdWx0aXBsZV0sW3NpemVdKSkgb3B0Z3JvdXAgb3B0aW9ue3BhZGRpbmctaW5saW5lLXN0YXJ0OjIwcHh9OndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3VwIG9wdGlvbntwYWRkaW5nLWlubGluZS1zdGFydDoyMHB4fTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257bWFyZ2luLWlubGluZS1lbmQ6NHB4fTo6ZmlsZS1zZWxlY3Rvci1idXR0b257bWFyZ2luLWlubGluZS1lbmQ6NHB4fTo6cGxhY2Vob2xkZXJ7b3BhY2l0eToxfUBzdXBwb3J0cyAoIG5vdCAoLXdlYmtpdC1hcHBlYXJhbmNlOiAtYXBwbGUtcGF5LWJ1dHRvbikpIG9yIChjb250YWluLWludHJpbnNpYy1zaXplOiAxcHgpezo6cGxhY2Vob2xkZXJ7Y29sb3I6Y3VycmVudENvbG9yfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7OjpwbGFjZWhvbGRlcntjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsY3VycmVudGNvbG9yIDUwJSx0cmFuc3BhcmVudCl9fX10ZXh0YXJlYXtyZXNpemU6dmVydGljYWx9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVle3RleHQtYWxpZ246aW5oZXJpdDttaW4taGVpZ2h0OjFsaH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdHtkaXNwbGF5OmlubGluZS1mbGV4fTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWZpZWxkcy13cmFwcGVye3BhZGRpbmc6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdHtwYWRkaW5nLWJsb2NrLXN0YXJ0OjA7cGFkZGluZy1ibG9jay1lbmQ6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC15ZWFyLWZpZWxke3BhZGRpbmctYmxvY2stc3RhcnQ6MDtwYWRkaW5nLWJsb2NrLWVuZDowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1vbnRoLWZpZWxke3BhZGRpbmctYmxvY2stc3RhcnQ6MDtwYWRkaW5nLWJsb2NrLWVuZDowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWRheS1maWVsZHtwYWRkaW5nLWJsb2NrLXN0YXJ0OjA7cGFkZGluZy1ibG9jay1lbmQ6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1ob3VyLWZpZWxke3BhZGRpbmctYmxvY2stc3RhcnQ6MDtwYWRkaW5nLWJsb2NrLWVuZDowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbnV0ZS1maWVsZHtwYWRkaW5nLWJsb2NrLXN0YXJ0OjA7cGFkZGluZy1ibG9jay1lbmQ6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1zZWNvbmQtZmllbGR7cGFkZGluZy1ibG9jay1zdGFydDowO3BhZGRpbmctYmxvY2stZW5kOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWlsbGlzZWNvbmQtZmllbGR7cGFkZGluZy1ibG9jay1zdGFydDowO3BhZGRpbmctYmxvY2stZW5kOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWVyaWRpZW0tZmllbGR7cGFkZGluZy1ibG9jay1zdGFydDowO3BhZGRpbmctYmxvY2stZW5kOjB9Ojotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7bGluZS1oZWlnaHQ6MX06LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX1idXR0b257YXBwZWFyYW5jZTpidXR0b259aW5wdXQ6d2hlcmUoW3R5cGU9YnV0dG9uXSxbdHlwZT1yZXNldF0sW3R5cGU9c3VibWl0XSl7YXBwZWFyYW5jZTpidXR0b259Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbnthcHBlYXJhbmNlOmJ1dHRvbn06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2FwcGVhcmFuY2U6YnV0dG9ufTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b306Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W2hpZGRlbl06d2hlcmUoOm5vdChbaGlkZGVuPXVudGlsLWZvdW5kXSkpe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBsYXllciB1dGlsaXRpZXN7LnBvaW50ZXItZXZlbnRzLWF1dG97cG9pbnRlci1ldmVudHM6YXV0b30ucG9pbnRlci1ldmVudHMtbm9uZXtwb2ludGVyLWV2ZW50czpub25lfS5jb2xsYXBzZXt2aXNpYmlsaXR5OmNvbGxhcHNlfS52aXNpYmxle3Zpc2liaWxpdHk6dmlzaWJsZX0uYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LmZpeGVke3Bvc2l0aW9uOmZpeGVkfS5yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0uc3RhdGlje3Bvc2l0aW9uOnN0YXRpY30uaW5zZXQtMHtpbnNldDpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS50b3AtMHt0b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0udG9wLTFcLjV7dG9wOmNhbGModmFyKC0tc3BhY2luZykqMS41KX0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLTJ7dG9wOmNhbGModmFyKC0tc3BhY2luZykqMil9LnRvcC0ze3RvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS50b3AtXFtjYWxjXCgxMDBcJVwrNHB4XClcXXt0b3A6Y2FsYygxMDAlICsgNHB4KX0udG9wLVxbY2FsY1woMTAwXCVcKzZweFwpXF17dG9wOmNhbGMoMTAwJSArIDZweCl9LnJpZ2h0LTB7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ucmlnaHQtMVwuNXtyaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LnJpZ2h0LTJcLjV7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS5yaWdodC0ze3JpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMyl9LnJpZ2h0LTR7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ucmlnaHQtXFs5cHhcXXtyaWdodDo5cHh9LmJvdHRvbS0we2JvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS5ib3R0b20tM3tib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSozKX0uYm90dG9tLTR7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykqNCl9LmxlZnQtMHtsZWZ0OmNhbGModmFyKC0tc3BhY2luZykqMCl9LmxlZnQtMVwvMntsZWZ0OjUwJX0ubGVmdC0yXC41e2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyLjUpfS56LTF7ei1pbmRleDoxfS56LTEwe3otaW5kZXg6MTB9LnotMjB7ei1pbmRleDoyMH0uei0zMHt6LWluZGV4OjMwfS56LTM1e3otaW5kZXg6MzV9LnotMzZ7ei1pbmRleDozNn0uei00MHt6LWluZGV4OjQwfS56LTUwe3otaW5kZXg6NTB9LnotXFsyXF17ei1pbmRleDoyfS5jb2wtc3Bhbi1mdWxse2dyaWQtY29sdW1uOjEvLTF9LmNvbnRhaW5lcnt3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOjQwcmVtKXsuY29udGFpbmVye21heC13aWR0aDo0MHJlbX19QG1lZGlhIChtaW4td2lkdGg6NDhyZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjQ4cmVtfX1AbWVkaWEgKG1pbi13aWR0aDo2NHJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NjRyZW19fUBtZWRpYSAobWluLXdpZHRoOjgwcmVtKXsuY29udGFpbmVye21heC13aWR0aDo4MHJlbX19QG1lZGlhIChtaW4td2lkdGg6OTZyZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjk2cmVtfX0ubS0we21hcmdpbjpjYWxjKHZhcigtLXNwYWNpbmcpKjApfS4tbXgtMXttYXJnaW4taW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqLTEpfS4tbXktMnttYXJnaW4tYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSotMil9Lm15LTF7bWFyZ2luLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMSl9Lm10LTJ7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5tci1cWzNweFxde21hcmdpbi1yaWdodDozcHh9Lm1iLTJcLjV7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjIuNSl9Lm1sLTBcLjV7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LmJveC1ib3JkZXJ7Ym94LXNpemluZzpib3JkZXItYm94fS5ibG9ja3tkaXNwbGF5OmJsb2NrfS5mbGV4e2Rpc3BsYXk6ZmxleH0uZ3JpZHtkaXNwbGF5OmdyaWR9LmhpZGRlbntkaXNwbGF5Om5vbmV9LmlubGluZXtkaXNwbGF5OmlubGluZX0uaW5saW5lLWJsb2Nre2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5pbmxpbmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4fS5cW2FzcGVjdC1yYXRpb1w6MTZcLzExXF17YXNwZWN0LXJhdGlvOjE2LzExfS5zaXplLTFcLjV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjEuNSl9LmgtNHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0uaC01e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjUpfS5oLTVcLjV7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqNS41KX0uaC03e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS5oLTExe2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpKjExKX0uaC1cWzNweFxde2hlaWdodDozcHh9LmgtXFsxNHB4XF17aGVpZ2h0OjE0cHh9LmgtXFsyMnB4XF17aGVpZ2h0OjIycHh9LmgtXFsyNnB4XF17aGVpZ2h0OjI2cHh9LmgtXFszMHB4XF17aGVpZ2h0OjMwcHh9LmgtZnVsbHtoZWlnaHQ6MTAwJX0uaC1weHtoZWlnaHQ6MXB4fS5oLXNjcmVlbntoZWlnaHQ6MTAwdmh9Lm1heC1oLTkwe21heC1oZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSo5MCl9Lm1heC1oLVxbNzB2aFxde21heC1oZWlnaHQ6NzB2aH0ubWF4LWgtXFsyNjBweFxde21heC1oZWlnaHQ6MjYwcHh9Lm1heC1oLVxbMzIwcHhcXXttYXgtaGVpZ2h0OjMyMHB4fS5tYXgtaC1mdWxse21heC1oZWlnaHQ6MTAwJX0ubWluLWgtMHttaW4taGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykqMCl9Lm1pbi1oLVxbMjJweFxde21pbi1oZWlnaHQ6MjJweH0ubWluLWgtXFszNnB4XF17bWluLWhlaWdodDozNnB4fS5taW4taC1weHttaW4taGVpZ2h0OjFweH0udy0xe3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnctNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjQpfS53LTV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSo1KX0udy01XC41e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNS41KX0udy02e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqNil9LnctN3t3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS53LTExe3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMTEpfS53LTIxe3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMjEpfS53LVxbMjJweFxde3dpZHRoOjIycHh9LnctXFszMHB4XF17d2lkdGg6MzBweH0udy1cWzQwXCVcXXt3aWR0aDo0MCV9LnctXFtjYWxjXCgxMDBcJVwrOHB4XClcXXt3aWR0aDpjYWxjKDEwMCUgKyA4cHgpfS53LWZ1bGx7d2lkdGg6MTAwJX0udy1weHt3aWR0aDoxcHh9Lm1heC13LTkwe21heC13aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjkwKX0ubWF4LXctMTIwe21heC13aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjEyMCl9Lm1heC13LVxbMzIwcHhcXXttYXgtd2lkdGg6MzIwcHh9Lm1heC13LVxbMzYwcHhcXXttYXgtd2lkdGg6MzYwcHh9Lm1heC13LWZ1bGx7bWF4LXdpZHRoOjEwMCV9Lm1pbi13LTB7bWluLXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykqMCl9Lm1pbi13LTY1e21pbi13aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpKjY1KX0ubWluLXctXFs1NnB4XF17bWluLXdpZHRoOjU2cHh9Lm1pbi13LVxbMjIwcHhcXXttaW4td2lkdGg6MjIwcHh9Lm1pbi13LXB4e21pbi13aWR0aDoxcHh9LmZsZXgtMXtmbGV4OjF9LnNocmluay0we2ZsZXgtc2hyaW5rOjB9Li10cmFuc2xhdGUteC0xXC8yey0tdHctdHJhbnNsYXRlLXg6Y2FsYyhjYWxjKDEvMioxMDAlKSotMSk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KXZhcigtLXR3LXRyYW5zbGF0ZS15KX0udHJhbnNsYXRlLXgtMXstLXR3LXRyYW5zbGF0ZS14OmNhbGModmFyKC0tc3BhY2luZykqMSk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KXZhcigtLXR3LXRyYW5zbGF0ZS15KX0uLXRyYW5zbGF0ZS15LTFcLzJ7LS10dy10cmFuc2xhdGUteTpjYWxjKGNhbGMoMS8yKjEwMCUpKi0xKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5yb3RhdGUtMHtyb3RhdGU6bm9uZX0ucm90YXRlLTkwe3JvdGF0ZTo5MGRlZ30ucm90YXRlLTE4MHtyb3RhdGU6MTgwZGVnfS50cmFuc2Zvcm17dHJhbnNmb3JtOnZhcigtLXR3LXJvdGF0ZS14LCl2YXIoLS10dy1yb3RhdGUteSwpdmFyKC0tdHctcm90YXRlLXosKXZhcigtLXR3LXNrZXcteCwpdmFyKC0tdHctc2tldy15LCl9LmFuaW1hdGUtXFtncmlkLXNwaW5fMFwuOHNfbGluZWFyX2luZmluaXRlXF17YW5pbWF0aW9uOmdyaWQtc3BpbiAuOHMgbGluZWFyIGluZmluaXRlfS5jdXJzb3ItY29sLXJlc2l6ZXtjdXJzb3I6Y29sLXJlc2l6ZX0uY3Vyc29yLWRlZmF1bHR7Y3Vyc29yOmRlZmF1bHR9LmN1cnNvci1ub3QtYWxsb3dlZHtjdXJzb3I6bm90LWFsbG93ZWR9LmN1cnNvci1wb2ludGVye2N1cnNvcjpwb2ludGVyfS5jdXJzb3ItdGV4dHtjdXJzb3I6dGV4dH0udG91Y2gtbm9uZXt0b3VjaC1hY3Rpb246bm9uZX0ucmVzaXple3Jlc2l6ZTpib3RofS5saXN0LW5vbmV7bGlzdC1zdHlsZS10eXBlOm5vbmV9LmFwcGVhcmFuY2Utbm9uZXthcHBlYXJhbmNlOm5vbmV9LmF1dG8tcm93cy1cW21pbm1heFwoMzAwcHhcLGF1dG9cKVxde2dyaWQtYXV0by1yb3dzOm1pbm1heCgzMDBweCxhdXRvKX0uXFtncmlkLXRlbXBsYXRlLWNvbHVtbnNcOjFmcl8xZnJfMWZyXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnIgMWZyfS5cW2dyaWQtdGVtcGxhdGUtY29sdW1uc1w6YXV0b18xZnJfYXV0b1xde2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmciBhdXRvfS5ncmlkLWNvbHMtXFtyZXBlYXRcKGF1dG8tZmlsbFwsbWlubWF4XCgyMDBweFwsMWZyXClcKVxde2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLG1pbm1heCgyMDBweCwxZnIpKX0uZmxleC1jb2x7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5mbGV4LXJvd3tmbGV4LWRpcmVjdGlvbjpyb3d9LmNvbnRlbnQtc3RhcnR7YWxpZ24tY29udGVudDogZmxleC1zdGFydH0uaXRlbXMtYmFzZWxpbmV7YWxpZ24taXRlbXM6YmFzZWxpbmV9Lml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczogY2VudGVyfS5pdGVtcy1zdHJldGNoe2FsaWduLWl0ZW1zOnN0cmV0Y2h9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uanVzdGlmeS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uanVzdGlmeS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5nYXAtMFwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LmdhcC0xe2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5nYXAtMVwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5nYXAtMntnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0uZ2FwLTJcLjV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0uZ2FwLTN7Z2FwOmNhbGModmFyKC0tc3BhY2luZykqMyl9LmdhcC1cWzVweFxde2dhcDo1cHh9Lmp1c3RpZnktc2VsZi1lbmR7anVzdGlmeS1zZWxmOmZsZXgtZW5kfS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy15LWF1dG97b3ZlcmZsb3cteTphdXRvfS5yb3VuZGVke2JvcmRlci1yYWRpdXM6LjI1cmVtfS5yb3VuZGVkLVxbMnB4XF17Ym9yZGVyLXJhZGl1czoycHh9LnJvdW5kZWQtXFszcHhcXXtib3JkZXItcmFkaXVzOjNweH0ucm91bmRlZC1cWzVweFxde2JvcmRlci1yYWRpdXM6NXB4fS5yb3VuZGVkLVxbN3B4XF17Ym9yZGVyLXJhZGl1czo3cHh9LnJvdW5kZWQtXFsxMHB4XF17Ym9yZGVyLXJhZGl1czoxMHB4fS5yb3VuZGVkLVxbMTRweFxde2JvcmRlci1yYWRpdXM6MTRweH0ucm91bmRlZC1mdWxse2JvcmRlci1yYWRpdXM6My40MDI4MmUzOHB4fS5yb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWxnKX0ucm91bmRlZC1tZHtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1tZCl9LnJvdW5kZWQteHN7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMteHMpfS5yb3VuZGVkLXQtXFsxMHB4XF17Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czoxMHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjEwcHh9LmJvcmRlcntib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItMntib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MnB4fS5ib3JkZXItdHtib3JkZXItdG9wLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXRvcC13aWR0aDoxcHh9LmJvcmRlci1kYXNoZWR7LS10dy1ib3JkZXItc3R5bGU6ZGFzaGVkO2JvcmRlci1zdHlsZTpkYXNoZWR9LmJvcmRlci1ub25ley0tdHctYm9yZGVyLXN0eWxlOm5vbmU7Ym9yZGVyLXN0eWxlOm5vbmV9LmJvcmRlci1cW1wjMmEyYTJhXF17Ym9yZGVyLWNvbG9yOiMyYTJhMmF9LmJvcmRlci1cW1wjMjIyXF17Ym9yZGVyLWNvbG9yOiMyMjJ9LmJvcmRlci1cW1wjMzMzXF17Ym9yZGVyLWNvbG9yOiMzMzN9LmJvcmRlci1cW1wjNDQ0XF17Ym9yZGVyLWNvbG9yOiM0NDR9LmJvcmRlci1hY2NlbnR7Ym9yZGVyLWNvbG9yOnZhcigtLWNvbG9yLWFjY2VudCl9LmJvcmRlci1kYW5nZXJcLzIwe2JvcmRlci1jb2xvcjojZjg3MTcxMzN9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLWRhbmdlclwvMjB7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1kYW5nZXIpMjAlLHRyYW5zcGFyZW50KX19LmJvcmRlci13aGl0ZXtib3JkZXItY29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5ib3JkZXItd2hpdGVcLzh7Ym9yZGVyLWNvbG9yOiNmZmZmZmYxNH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ib3JkZXItd2hpdGVcLzh7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4JSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGVcLzEwe2JvcmRlci1jb2xvcjojZmZmZmZmMWF9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC8xMHtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTEwJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGVcLzEye2JvcmRlci1jb2xvcjojZmZmZmZmMWZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC8xMntib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTEyJSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGVcLzE1e2JvcmRlci1jb2xvcjojZmZmZmZmMjZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXdoaXRlXC8xNXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTE1JSx0cmFuc3BhcmVudCl9fS5ib3JkZXItd2hpdGVcL1xbMFwuMDZcXXtib3JkZXItY29sb3I6I2ZmZmZmZjBmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci13aGl0ZVwvXFswXC4wNlxde2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNiUsdHJhbnNwYXJlbnQpfX0uYmctXFtcIzBhMGEwY1xde2JhY2tncm91bmQtY29sb3I6IzBhMGEwY30uYmctXFtcIzFhMWExYVxde2JhY2tncm91bmQtY29sb3I6IzFhMWExYX0uYmctXFtcIzFjMWMxY1xde2JhY2tncm91bmQtY29sb3I6IzFjMWMxY30uYmctXFtcIzFkMmExZFxde2JhY2tncm91bmQtY29sb3I6IzFkMmExZH0uYmctXFtcIzJhMmEyY1xde2JhY2tncm91bmQtY29sb3I6IzJhMmEyY30uYmctXFtcIzZlNmU3Mlxde2JhY2tncm91bmQtY29sb3I6IzZlNmU3Mn0uYmctXFtcIzlhOWE5ZVxde2JhY2tncm91bmQtY29sb3I6IzlhOWE5ZX0uYmctXFtcIzExMVxde2JhY2tncm91bmQtY29sb3I6IzExMX0uYmctXFtcIzIyMlxde2JhY2tncm91bmQtY29sb3I6IzIyMn0uYmctXFtcIzEwMTAxMFxde2JhY2tncm91bmQtY29sb3I6IzEwMTAxMH0uYmctXFtyZ2JhXCgxMFwsMTMyXCwyNTVcLDBcLjIyXClcXXtiYWNrZ3JvdW5kLWNvbG9yOiMwYTg0ZmYzOH0uYmctXFtyZ2JhXCgyMFwsMjBcLDIwXCwwXC44NVwpXF17YmFja2dyb3VuZC1jb2xvcjojMTQxNDE0ZDl9LmJnLVxbcmdiYVwoOTlcLDEwMlwsMjQxXCwwXC4xMlwpXF17YmFja2dyb3VuZC1jb2xvcjojNjM2NmYxMWZ9LmJnLWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLWFjY2VudCl9LmJnLWJsYWNre2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItYmxhY2spfS5iZy1kYW5nZXJcLzEwe2JhY2tncm91bmQtY29sb3I6I2Y4NzE3MTFhfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLWRhbmdlclwvMTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItZGFuZ2VyKTEwJSx0cmFuc3BhcmVudCl9fS5iZy1wYWdle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcGFnZSl9LmJnLXBhbmVse2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcGFuZWwpfS5iZy1wYW5lbC1iZ3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXBhbmVsLWJnKX0uYmctcGFuZWwtZGVlcHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXBhbmVsLWRlZXApfS5iZy1wYW5lbC1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3ItcGFuZWwtb3ZlcmxheSl9LmJnLXN1Y2Nlc3MtZW1lcmFsZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLXN1Y2Nlc3MtZW1lcmFsZCl9LmJnLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmJnLXdoaXRle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5iZy13aGl0ZVwvOHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxNH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvOHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk4JSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvXFswXC4wM1xde2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjA4fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXdoaXRlXC9cWzBcLjAzXF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMyUsdHJhbnNwYXJlbnQpfX0uYmctd2hpdGVcL1xbMFwuMDRcXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwYX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy13aGl0ZVwvXFswXC4wNFxde2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTQlLHRyYW5zcGFyZW50KX19LmJnLXdoaXRlXC9cWzBcLjA2XF17YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMGZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcL1xbMFwuMDZcXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk2JSx0cmFuc3BhcmVudCl9fS5iZy13aGl0ZVwvXFswXC4xMlxde2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjFmfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXdoaXRlXC9cWzBcLjEyXF17YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpMTIlLHRyYW5zcGFyZW50KX19LmJnLXdoaXRlXC9cWzBcLjE2XF17YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMjl9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYmctd2hpdGVcL1xbMFwuMTZcXXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSkxNiUsdHJhbnNwYXJlbnQpfX0uYmctXFtsaW5lYXItZ3JhZGllbnRcKHRvX2JvdHRvbVwsXCMxYzFjMWVfMFwlXCxyZ2JhXCgyOFwsMjhcLDMwXCwwXClfMTAwXCVcKVxde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KCMxYzFjMWUgMCUsIzFjMWMxZTAwIDEwMCUpfS5iZy1cW2xpbmVhci1ncmFkaWVudFwodG9fcmlnaHRcLHJnYmFcKDI4XCwyOFwsMzBcLDBcKV8wXCVcLFwjMWMxYzFlXzU1XCVcKVxde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMxYzFjMWUwMCAwJSwjMWMxYzFlIDU1JSl9LmJnLVxbbGluZWFyLWdyYWRpZW50XCh0b190b3BcLFwjMWMxYzFlXzBcJVwscmdiYVwoMjhcLDI4XCwzMFwsMFwpXzEwMFwlXClcXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgjMWMxYzFlMDAgMCUsIzFjMWMxZSAxMDAlKX0ub2JqZWN0LWNvbnRhaW57b2JqZWN0LWZpdDpjb250YWlufS5vYmplY3QtY292ZXJ7b2JqZWN0LWZpdDpjb3Zlcn0ucC0we3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKX0ucC0wXC41e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LnAtMXtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnAtMntwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMil9LnAtM3twYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMyl9LnAtM1wuNXtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykqMy41KX0ucC00e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSo0KX0ucC02e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSo2KX0ucHgtMFwuNXtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0ucHgtMXtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5weC0xXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMS41KX0ucHgtMntwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5weC0yXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0ucHgtM3twYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5weC1cWzdweFxde3BhZGRpbmctaW5saW5lLXN0YXJ0OjdweDtwYWRkaW5nLWlubGluZS1lbmQ6N3B4fS5weS0wXC41e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSouNSl9LnB5LTF7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpKjEpfS5weS0xXC41e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5weS0ye3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSoyKX0ucHktMlwuNXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqMi41KX0ucHktNntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykqNil9LnB5LVxbM3B4XF17cGFkZGluZy1ibG9jay1zdGFydDozcHg7cGFkZGluZy1ibG9jay1lbmQ6M3B4fS5weS1cWzVweFxde3BhZGRpbmctYmxvY2stc3RhcnQ6NXB4O3BhZGRpbmctYmxvY2stZW5kOjVweH0ucHktcHh7cGFkZGluZy1ibG9jay1zdGFydDoxcHg7cGFkZGluZy1ibG9jay1lbmQ6MXB4fS5wdC0xe3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykqMSl9LnB0LTFcLjV7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSoxLjUpfS5wdC0ye3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykqMil9LnByLVxbMjZweFxde3BhZGRpbmctcmlnaHQ6MjZweH0ucGItMFwuNXtwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKi41KX0ucGItM3twYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5wbC0ye3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjIpfS5wbC0ze3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjMpfS5wbC02e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjYpfS5wbC03e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpKjcpfS5wbC1cWzI2cHhcXXtwYWRkaW5nLWxlZnQ6MjZweH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnR9LlxbZm9udC1mYW1pbHlcOi1hcHBsZS1zeXN0ZW1cLHN5c3RlbS11aVwsc2Fucy1zZXJpZlxde2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sc3lzdGVtLXVpLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxSb2JvdG8sTm90byBTYW5zLFVidW50dSxDYW50YXJlbGwsSGVsdmV0aWNhIE5ldWUsc2Fucy1zZXJpZn0uZm9udC1cW2luaGVyaXRcXXtmb250LWZhbWlseTppbmhlcml0fS5mb250LW1vbm97Zm9udC1mYW1pbHk6dmFyKC0tZm9udC1tb25vKX0uZm9udC1zeXN0ZW17Zm9udC1mYW1pbHk6dmFyKC0tZm9udC1zeXN0ZW0pfS50ZXh0LVxbOXB4XF17Zm9udC1zaXplOjlweH0udGV4dC1cWzEwcHhcXXtmb250LXNpemU6MTBweH0udGV4dC1cWzExcHhcXXtmb250LXNpemU6MTFweH0udGV4dC1cWzEycHhcXXtmb250LXNpemU6MTJweH0udGV4dC1cWzEzcHhcXXtmb250LXNpemU6MTNweH0udGV4dC1cWzE0cHhcXXtmb250LXNpemU6MTRweH0udGV4dC1cWzE4cHhcXXtmb250LXNpemU6MThweH0udGV4dC1cWzI4cHhcXXtmb250LXNpemU6MjhweH0ubGVhZGluZy1cWzFcLjM1XF17LS10dy1sZWFkaW5nOjEuMzU7bGluZS1oZWlnaHQ6MS4zNX0ubGVhZGluZy1ub25ley0tdHctbGVhZGluZzoxO2xpbmUtaGVpZ2h0OjF9LmZvbnQtbWVkaXVtey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pfS5mb250LW5vcm1hbHstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKX0uZm9udC1zZW1pYm9sZHstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCl9LnRyYWNraW5nLVxbMFwuMDJlbVxdey0tdHctdHJhY2tpbmc6LjAyZW07bGV0dGVyLXNwYWNpbmc6LjAyZW19LnRyYWNraW5nLVxbMFwuMDRlbVxdey0tdHctdHJhY2tpbmc6LjA0ZW07bGV0dGVyLXNwYWNpbmc6LjA0ZW19LnRyYWNraW5nLVxbMFwuMDZlbVxdey0tdHctdHJhY2tpbmc6LjA2ZW07bGV0dGVyLXNwYWNpbmc6LjA2ZW19LnRyYWNraW5nLVxbMFwuMDhlbVxdey0tdHctdHJhY2tpbmc6LjA4ZW07bGV0dGVyLXNwYWNpbmc6LjA4ZW19LnRleHQtZWxsaXBzaXN7dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ud2hpdGVzcGFjZS1ub3dyYXB7d2hpdGUtc3BhY2U6bm93cmFwfS50ZXh0LVxbXCMwYTBhMGNcXXtjb2xvcjojMGEwYTBjfS50ZXh0LVxbXCMwNjIwMThcXXtjb2xvcjojMDYyMDE4fS50ZXh0LWFjY2VudHtjb2xvcjp2YXIoLS1jb2xvci1hY2NlbnQpfS50ZXh0LWRhbmdlcntjb2xvcjp2YXIoLS1jb2xvci1kYW5nZXIpfS50ZXh0LWRhbmdlci1zb2Z0e2NvbG9yOnZhcigtLWNvbG9yLWRhbmdlci1zb2Z0KX0udGV4dC1pbmhlcml0e2NvbG9yOmluaGVyaXR9LnRleHQtc3VjY2Vzc3tjb2xvcjp2YXIoLS1jb2xvci1zdWNjZXNzKX0udGV4dC13aGl0ZXtjb2xvcjp2YXIoLS1jb2xvci13aGl0ZSl9LnRleHQtd2hpdGVcLzQwe2NvbG9yOiNmZmY2fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzQwe2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0MCUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNDV7Y29sb3I6I2ZmZmZmZjczfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzQ1e2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0NSUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNTB7Y29sb3I6I2ZmZmZmZjgwfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzUwe2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk1MCUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNTV7Y29sb3I6I2ZmZmZmZjhjfUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcLzU1e2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk1NSUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvNjB7Y29sb3I6I2ZmZjl9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNjB7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTYwJSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC82NXtjb2xvcjojZmZmZmZmYTZ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNjV7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTY1JSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC83MHtjb2xvcjojZmZmZmZmYjN9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvNzB7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTcwJSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC84MHtjb2xvcjojZmZmY31Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC84MHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpODAlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzg1e2NvbG9yOiNmZmZmZmZkOX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC84NXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpODUlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcLzkwe2NvbG9yOiNmZmZmZmZlNn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC85MHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOTAlLHRyYW5zcGFyZW50KX19LnRleHQtd2hpdGVcL1xbMFwuNDJcXXtjb2xvcjojZmZmZmZmNmJ9QHN1cHBvcnRzIChjb2xvcjogY29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC13aGl0ZVwvXFswXC40Mlxde2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci13aGl0ZSk0MiUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvXFswXC40OFxde2NvbG9yOiNmZmZmZmY3YX1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC9cWzBcLjQ4XF17Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTQ4JSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRlXC9cWzBcLjU4XF17Y29sb3I6I2ZmZmZmZjk0fUBzdXBwb3J0cyAoY29sb3I6IGNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtd2hpdGVcL1xbMFwuNThcXXtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpNTguMCUsdHJhbnNwYXJlbnQpfX0udGV4dC13aGl0ZVwvXFswXC45Mlxde2NvbG9yOiNmZmZmZmZlYn1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LXdoaXRlXC9cWzBcLjkyXF17Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLHZhcigtLWNvbG9yLXdoaXRlKTkyJSx0cmFuc3BhcmVudCl9fS51cHBlcmNhc2V7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWN9LlxbZm9udC12YXJpYW50LW51bWVyaWNcOnRhYnVsYXItbnVtc1xde2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30ubm8tdW5kZXJsaW5le3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmV9Lm9wYWNpdHktMHtvcGFjaXR5OjB9Lm9wYWNpdHktNDB7b3BhY2l0eTouNH0ub3BhY2l0eS01MHtvcGFjaXR5Oi41fS5vcGFjaXR5LTEwMHtvcGFjaXR5OjF9LnNoYWRvd3stLXR3LXNoYWRvdzowIDFweCAzcHggMCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSwwIDFweCAycHggLTFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9LnNoYWRvdy1cWzBfNHB4XzEycHhfcmdiYVwoMFwsMFwsMFwsMFwuNFwpXF17LS10dy1zaGFkb3c6MCA0cHggMTJweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDYpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LVxbMF84cHhfMjRweF9yZ2JhXCgwXCwwXCwwXCwwXC41XClcXXstLXR3LXNoYWRvdzowIDhweCAyNHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwODApO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LVxbMF8xMnB4XzQwcHhfcmdiYVwoMFwsMFwsMFwsMFwuNTVcKVxdey0tdHctc2hhZG93OjAgMTJweCA0MHB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwOGMpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0ucmluZ3stLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKTAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKXZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdyl9Lm91dGxpbmV7b3V0bGluZS1zdHlsZTp2YXIoLS10dy1vdXRsaW5lLXN0eWxlKTtvdXRsaW5lLXdpZHRoOjFweH0uYmx1cnstLXR3LWJsdXI6Ymx1cig4cHgpO2ZpbHRlcjp2YXIoLS10dy1ibHVyLCl2YXIoLS10dy1icmlnaHRuZXNzLCl2YXIoLS10dy1jb250cmFzdCwpdmFyKC0tdHctZ3JheXNjYWxlLCl2YXIoLS10dy1odWUtcm90YXRlLCl2YXIoLS10dy1pbnZlcnQsKXZhcigtLXR3LXNhdHVyYXRlLCl2YXIoLS10dy1zZXBpYSwpdmFyKC0tdHctZHJvcC1zaGFkb3csKX0uZmlsdGVye2ZpbHRlcjp2YXIoLS10dy1ibHVyLCl2YXIoLS10dy1icmlnaHRuZXNzLCl2YXIoLS10dy1jb250cmFzdCwpdmFyKC0tdHctZ3JheXNjYWxlLCl2YXIoLS10dy1odWUtcm90YXRlLCl2YXIoLS10dy1pbnZlcnQsKXZhcigtLXR3LXNhdHVyYXRlLCl2YXIoLS10dy1zZXBpYSwpdmFyKC0tdHctZHJvcC1zaGFkb3csKX0uYmFja2Ryb3AtYmx1ci1cWzJweFxdey0tdHctYmFja2Ryb3AtYmx1cjpibHVyKDJweCk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKXZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCl2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCl2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcywpdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKXZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSwpdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCl2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCl2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSwpdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKX0uYmFja2Ryb3AtYmx1ci1cWzEycHhcXXstLXR3LWJhY2tkcm9wLWJsdXI6Ymx1cigxMnB4KTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpO2JhY2tkcm9wLWZpbHRlcjp2YXIoLS10dy1iYWNrZHJvcC1ibHVyLCl2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCl2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpdmFyKC0tdHctYmFja2Ryb3AtZ3JheXNjYWxlLCl2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCl2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKXZhcigtLXR3LWJhY2tkcm9wLW9wYWNpdHksKXZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCl2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS5iYWNrZHJvcC1ibHVyLVxbMThweFxdey0tdHctYmFja2Ryb3AtYmx1cjpibHVyKDE4cHgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKXZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKXZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0LCl2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKXZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKXZhcigtLXR3LWJhY2tkcm9wLWludmVydCwpdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKXZhcigtLXR3LWJhY2tkcm9wLXNlcGlhLCk7YmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKXZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKXZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0LCl2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKXZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKXZhcigtLXR3LWJhY2tkcm9wLWludmVydCwpdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKXZhcigtLXR3LWJhY2tkcm9wLXNlcGlhLCl9LnRyYW5zaXRpb257dHJhbnNpdGlvbi1wcm9wZXJ0eTpjb2xvcixiYWNrZ3JvdW5kLWNvbG9yLGJvcmRlci1jb2xvcixvdXRsaW5lLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSwtLXR3LWdyYWRpZW50LWZyb20sLS10dy1ncmFkaWVudC12aWEsLS10dy1ncmFkaWVudC10byxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLHRyYW5zbGF0ZSxzY2FsZSxyb3RhdGUsZmlsdGVyLC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyLGJhY2tkcm9wLWZpbHRlcixkaXNwbGF5LGNvbnRlbnQtdmlzaWJpbGl0eSxvdmVybGF5LHBvaW50ZXItZXZlbnRzO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tXFt3aWR0aFwsYmFja2dyb3VuZFxde3RyYW5zaXRpb24tcHJvcGVydHk6d2lkdGgsYmFja2dyb3VuZDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS50cmFuc2l0aW9uLWNvbG9yc3t0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tb3BhY2l0eXt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0udHJhbnNpdGlvbi10cmFuc2Zvcm17dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm0sdHJhbnNsYXRlLHNjYWxlLHJvdGF0ZTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS5kdXJhdGlvbi0xNTB7LS10dy1kdXJhdGlvbjouMTVzO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30uZHVyYXRpb24tMjAwey0tdHctZHVyYXRpb246LjJzO3RyYW5zaXRpb24tZHVyYXRpb246LjJzfS5kdXJhdGlvbi0zMDB7LS10dy1kdXJhdGlvbjouM3M7dHJhbnNpdGlvbi1kdXJhdGlvbjouM3N9LmVhc2Utb3V0ey0tdHctZWFzZTp2YXIoLS1lYXNlLW91dCk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tZWFzZS1vdXQpfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uc2VsZWN0LXRleHR7LXdlYmtpdC11c2VyLXNlbGVjdDp0ZXh0O3VzZXItc2VsZWN0OnRleHR9LlxbLXdlYmtpdC1hcHBlYXJhbmNlXDpub25lXF17LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9LlxbLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXJcOmJsdXJcKDEycHhcKVxdey13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoMTJweCl9Llxbc2Nyb2xsYmFyLXdpZHRoXDp0aGluXF17c2Nyb2xsYmFyLXdpZHRoOnRoaW59LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4yc1wsYm94LXNoYWRvd18wXC4yc1xde3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnMsYm94LXNoYWRvdyAuMnN9LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4zc1xde3RyYW5zaXRpb246YmFja2dyb3VuZCAuM3N9LlxbdHJhbnNpdGlvblw6YmFja2dyb3VuZF8wXC4xMnNcLGJvcmRlci1jb2xvcl8wXC4xMnNcXXt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjEycyxib3JkZXItY29sb3IgLjEyc30uXFt0cmFuc2l0aW9uXDpiYWNrZ3JvdW5kXzBcLjEyc1wsY29sb3JfMFwuMTJzXF17dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xMnMsY29sb3IgLjEyc30uXFt0cmFuc2l0aW9uXDpiYWNrZ3JvdW5kXzBcLjE1c19lYXNlXCxjb2xvcl8wXC4xNXNfZWFzZVxde3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzLGNvbG9yIC4xNXN9LlxbdHJhbnNpdGlvblw6Ym9yZGVyLWNvbG9yXzEyMG1zXF17dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjEyc30uXFt0cmFuc2l0aW9uXDpjb2xvcl8wXC4zc1xde3RyYW5zaXRpb246Y29sb3IgLjNzfS5cW3RyYW5zaXRpb25cOm9wYWNpdHlfMFwuMTVzX2Vhc2VcLGJhY2tncm91bmRfMFwuMTVzX2Vhc2VcXXt0cmFuc2l0aW9uOm9wYWNpdHkgLjE1cyxiYWNrZ3JvdW5kIC4xNXN9LlxbdHJhbnNpdGlvblw6b3BhY2l0eV8wXC4xNXNfZWFzZVwsdHJhbnNmb3JtXzBcLjE1c19lYXNlXF17dHJhbnNpdGlvbjpvcGFjaXR5IC4xNXMsdHJhbnNmb3JtIC4xNXN9LlxbdHJhbnNpdGlvblw6b3BhY2l0eV8wXC4xOHNfZWFzZVxde3RyYW5zaXRpb246b3BhY2l0eSAuMThzfS5cW3RyYW5zaXRpb25cOnRyYW5zZm9ybV8wXC4xNXNcLGNvbG9yXzBcLjEyc1xde3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMsY29sb3IgLjEyc30uXFt0cmFuc2l0aW9uXDp0cmFuc2Zvcm1fMFwuMjVzX2Vhc2VcLG9wYWNpdHlfMFwuMnNfZWFzZVxde3RyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMsb3BhY2l0eSAuMnN9LlxbdHJhbnNpdGlvblw6d2lkdGhfMTIwbXNfbGluZWFyXF17dHJhbnNpdGlvbjp3aWR0aCAuMTJzIGxpbmVhcn1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZ3JvdXAtaG92ZXJcOnBvaW50ZXItZXZlbnRzLWF1dG86aXMoOndoZXJlKC5ncm91cCk6aG92ZXIgKil7cG9pbnRlci1ldmVudHM6YXV0b319QG1lZGlhIChob3Zlcjpob3Zlcil7Lmdyb3VwLWhvdmVyXDp0cmFuc2xhdGUteC0wOmlzKDp3aGVyZSguZ3JvdXApOmhvdmVyICopey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSowKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpdmFyKC0tdHctdHJhbnNsYXRlLXkpfX1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuZ3JvdXAtaG92ZXJcOm9wYWNpdHktMTAwOmlzKDp3aGVyZSguZ3JvdXApOmhvdmVyICope29wYWNpdHk6MX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy13aGl0ZVwvODpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxNH1Ac3VwcG9ydHMgKGNvbG9yOiBjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctd2hpdGVcLzg6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3Itd2hpdGUpOCUsdHJhbnNwYXJlbnQpfX19QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDp0ZXh0LXdoaXRlOmhvdmVye2NvbG9yOnZhcigtLWNvbG9yLXdoaXRlKX19fUBrZXlmcmFtZXMgZ3JpZC1zcGlue3Rve3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBzZXJ2ZS1zaW0tdG9hc3QtaW5kZXRlcm1pbmF0ZXswJXt0cmFuc2Zvcm06dHJhbnNsYXRlKC0xMDAlKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKDI1MCUpfX0uc2VydmUtc2ltLXRvYXN0LWluZGV0ZXJtaW5hdGV7YW5pbWF0aW9uOnNlcnZlLXNpbS10b2FzdC1pbmRldGVybWluYXRlIDEuMXMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmdyaWQtc2h1dGRvd24tYnRue29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgLjEycyxiYWNrZ3JvdW5kIC4xMnMsY29sb3IgLjEyc30uZ3JpZC10aWxlOmhvdmVyIC5ncmlkLXNodXRkb3duLWJ0bntvcGFjaXR5OjF9LmdyaWQtc2h1dGRvd24tYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOiNmZmY7YmFja2dyb3VuZDojNWExZDFkO2JvcmRlci1jb2xvcjojYTMzfS5ncmlkLXRpbGU6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM1NTUhaW1wb3J0YW50fUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS16e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXJvdGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcm90YXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yb3RhdGUtentzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJvcmRlci1zdHlsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6c29saWR9QHByb3BlcnR5IC0tdHctbGVhZGluZ3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWZvbnQtd2VpZ2h0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctdHJhY2tpbmd7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1yaW5nLWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcmluZy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1pbnNldC1yaW5nLWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW5zZXQtcmluZy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1yaW5nLWluc2V0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtd2lkdGh7c3ludGF4OiI8bGVuZ3RoPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTojZmZmfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LW91dGxpbmUtc3R5bGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOnNvbGlkfUBwcm9wZXJ0eSAtLXR3LWJsdXJ7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1icmlnaHRuZXNze3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctY29udHJhc3R7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1ncmF5c2NhbGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1odWUtcm90YXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW52ZXJ0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctb3BhY2l0eXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNhdHVyYXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2VwaWF7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvdy1zaXple3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtYmx1cntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3N7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1jb250cmFzdHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1pbnZlcnR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1vcGFjaXR5e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3Atc2F0dXJhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1zZXBpYXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWR1cmF0aW9ue3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZWFzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBsYXllciBwcm9wZXJ0aWVze0BzdXBwb3J0cyAoKC13ZWJraXQtaHlwaGVuczogbm9uZSkgYW5kICggbm90IChtYXJnaW4tdHJpbTogaW5saW5lKSkpIG9yICgoLW1vei1vcmllbnQ6IGlubGluZSkgYW5kICggbm90IChjb2xvcjpyZ2IoZnJvbSByZWQgciBnIGIpKSkpeyosOmJlZm9yZSw6YWZ0ZXIsOjpiYWNrZHJvcHstLXR3LXRyYW5zbGF0ZS14OjA7LS10dy10cmFuc2xhdGUteTowOy0tdHctdHJhbnNsYXRlLXo6MDstLXR3LXJvdGF0ZS14OmluaXRpYWw7LS10dy1yb3RhdGUteTppbml0aWFsOy0tdHctcm90YXRlLXo6aW5pdGlhbDstLXR3LXNrZXcteDppbml0aWFsOy0tdHctc2tldy15OmluaXRpYWw7LS10dy1ib3JkZXItc3R5bGU6c29saWQ7LS10dy1sZWFkaW5nOmluaXRpYWw7LS10dy1mb250LXdlaWdodDppbml0aWFsOy0tdHctdHJhY2tpbmc6aW5pdGlhbDstLXR3LXNoYWRvdzowIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LXNoYWRvdy1hbHBoYToxMDAlOy0tdHctaW5zZXQtc2hhZG93OjAgMCAjMDAwMDstLXR3LWluc2V0LXNoYWRvdy1jb2xvcjppbml0aWFsOy0tdHctaW5zZXQtc2hhZG93LWFscGhhOjEwMCU7LS10dy1yaW5nLWNvbG9yOmluaXRpYWw7LS10dy1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1pbnNldC1yaW5nLWNvbG9yOmluaXRpYWw7LS10dy1pbnNldC1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1yaW5nLWluc2V0OmluaXRpYWw7LS10dy1yaW5nLW9mZnNldC13aWR0aDowcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OjAgMCAjMDAwMDstLXR3LW91dGxpbmUtc3R5bGU6c29saWQ7LS10dy1ibHVyOmluaXRpYWw7LS10dy1icmlnaHRuZXNzOmluaXRpYWw7LS10dy1jb250cmFzdDppbml0aWFsOy0tdHctZ3JheXNjYWxlOmluaXRpYWw7LS10dy1odWUtcm90YXRlOmluaXRpYWw7LS10dy1pbnZlcnQ6aW5pdGlhbDstLXR3LW9wYWNpdHk6aW5pdGlhbDstLXR3LXNhdHVyYXRlOmluaXRpYWw7LS10dy1zZXBpYTppbml0aWFsOy0tdHctZHJvcC1zaGFkb3c6aW5pdGlhbDstLXR3LWRyb3Atc2hhZG93LWNvbG9yOmluaXRpYWw7LS10dy1kcm9wLXNoYWRvdy1hbHBoYToxMDAlOy0tdHctZHJvcC1zaGFkb3ctc2l6ZTppbml0aWFsOy0tdHctYmFja2Ryb3AtYmx1cjppbml0aWFsOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczppbml0aWFsOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6aW5pdGlhbDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTppbml0aWFsOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTppbml0aWFsOy0tdHctYmFja2Ryb3AtaW52ZXJ0OmluaXRpYWw7LS10dy1iYWNrZHJvcC1vcGFjaXR5OmluaXRpYWw7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTppbml0aWFsOy0tdHctYmFja2Ryb3Atc2VwaWE6aW5pdGlhbDstLXR3LWR1cmF0aW9uOmluaXRpYWw7LS10dy1lYXNlOmluaXRpYWx9fX0KPC9zdHlsZT4KPC9oZWFkPjxib2R5Pgo8ZGl2IGlkPSJyb290Ij48L2Rpdj4KPCEtLV9fU0lNX1BSRVZJRVdfQ09ORklHX18tLT4KPHNjcmlwdCB0eXBlPSJtb2R1bGUiPnZhciBtMix2LGUwLGUzLHAxLHQwLEM1LEw1LFgwLFQyLGIyLE41LFkwLHcwLCQwLEs1LHkyPXt9LGgyPVtdLEM4PS9hY2l0fGV4KD86c3xnfG58cHwkKXxycGh8Z3JpZHxvd3N8bW5jfG50d3xpbmVbY2hdfHpvb3xeb3JkfGl0ZXJhL2ksSDI9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBQMShDLEwpe2Zvcih2YXIgTiBpbiBMKUNbTl09TFtOXTtyZXR1cm4gQ31mdW5jdGlvbiBxMChDKXtDJiZDLnBhcmVudE5vZGUmJkMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChDKX1mdW5jdGlvbiBFMShDLEwsTil7dmFyIEssWixYLHc9e307Zm9yKFggaW4gTClYPT0ia2V5Ij9LPUxbWF06WD09InJlZiI/Wj1MW1hdOndbWF09TFtYXTtpZihhcmd1bWVudHMubGVuZ3RoPjImJih3LmNoaWxkcmVuPWFyZ3VtZW50cy5sZW5ndGg+Mz9tMi5jYWxsKGFyZ3VtZW50cywyKTpOKSx0eXBlb2YgQz09ImZ1bmN0aW9uIiYmQy5kZWZhdWx0UHJvcHMhPW51bGwpZm9yKFggaW4gQy5kZWZhdWx0UHJvcHMpd1tYXT09PXZvaWQgMCYmKHdbWF09Qy5kZWZhdWx0UHJvcHNbWF0pO3JldHVybiBQMihDLHcsSyxaLG51bGwpfWZ1bmN0aW9uIFAyKEMsTCxOLEssWil7dmFyIFg9e3R5cGU6Qyxwcm9wczpMLGtleTpOLHJlZjpLLF9fazpudWxsLF9fOm51bGwsX19iOjAsX19lOm51bGwsX19jOm51bGwsY29uc3RydWN0b3I6dm9pZCAwLF9fdjpaPT1udWxsPysrZTA6WixfX2k6LTEsX191OjB9O3JldHVybiBaPT1udWxsJiZ2LnZub2RlIT1udWxsJiZ2LnZub2RlKFgpLFh9ZnVuY3Rpb24gSzEoQyl7cmV0dXJuIEMuY2hpbGRyZW59ZnVuY3Rpb24gYjEoQyxMKXt0aGlzLnByb3BzPUMsdGhpcy5jb250ZXh0PUx9ZnVuY3Rpb24gcjEoQyxMKXtpZihMPT1udWxsKXJldHVybiBDLl9fP3IxKEMuX18sQy5fX2krMSk6bnVsbDtmb3IodmFyIE47TDxDLl9fay5sZW5ndGg7TCsrKWlmKChOPUMuX19rW0xdKSE9bnVsbCYmTi5fX2UhPW51bGwpcmV0dXJuIE4uX19lO3JldHVybiB0eXBlb2YgQy50eXBlPT0iZnVuY3Rpb24iP3IxKEMpOm51bGx9ZnVuY3Rpb24gTDgoQyl7aWYoQy5fX1AmJkMuX19kKXt2YXIgTD1DLl9fdixOPUwuX19lLEs9W10sWj1bXSxYPVAxKHt9LEwpO1guX192PUwuX192KzEsdi52bm9kZSYmdi52bm9kZShYKSxiMChDLl9fUCxYLEwsQy5fX24sQy5fX1AubmFtZXNwYWNlVVJJLDMyJkwuX191P1tOXTpudWxsLEssTj09bnVsbD9yMShMKTpOLCEhKDMyJkwuX191KSxaKSxYLl9fdj1MLl9fdixYLl9fLl9fa1tYLl9faV09WCx3NShLLFgsWiksTC5fX2U9TC5fXz1udWxsLFguX19lIT1OJiZfNShYKX19ZnVuY3Rpb24gXzUoQyl7aWYoKEM9Qy5fXykhPW51bGwmJkMuX19jIT1udWxsKXJldHVybiBDLl9fZT1DLl9fYy5iYXNlPW51bGwsQy5fX2suc29tZShmdW5jdGlvbihMKXtpZihMIT1udWxsJiZMLl9fZSE9bnVsbClyZXR1cm4gQy5fX2U9Qy5fX2MuYmFzZT1MLl9fZX0pLF81KEMpfWZ1bmN0aW9uIEcwKEMpeyghQy5fX2QmJihDLl9fZD0hMCkmJnAxLnB1c2goQykmJiFTMi5fX3IrK3x8dDAhPXYuZGVib3VuY2VSZW5kZXJpbmcpJiYoKHQwPXYuZGVib3VuY2VSZW5kZXJpbmcpfHxDNSkoUzIpfWZ1bmN0aW9uIFMyKCl7dHJ5e2Zvcih2YXIgQyxMPTE7cDEubGVuZ3RoOylwMS5sZW5ndGg+TCYmcDEuc29ydChMNSksQz1wMS5zaGlmdCgpLEw9cDEubGVuZ3RoLEw4KEMpfWZpbmFsbHl7cDEubGVuZ3RoPVMyLl9fcj0wfX1mdW5jdGlvbiBaNShDLEwsTixLLFosWCx3LCQsSixHLHEpe3ZhciBZLEgsUSxrLGIsVixELEE9SyYmSy5fX2t8fGgyLEk9TC5sZW5ndGg7Zm9yKEo9TjgoTixMLEEsSixJKSxZPTA7WTxJO1krKykoUT1OLl9fa1tZXSkhPW51bGwmJihIPVEuX19pIT0tMSYmQVtRLl9faV18fHkyLFEuX19pPVksVj1iMChDLFEsSCxaLFgsdywkLEosRyxxKSxrPVEuX19lLFEucmVmJiZILnJlZiE9US5yZWYmJihILnJlZiYmSDAoSC5yZWYsbnVsbCxRKSxxLnB1c2goUS5yZWYsUS5fX2N8fGssUSkpLGI9PW51bGwmJmshPW51bGwmJihiPWspLChEPSEhKDQmUS5fX3UpKXx8SC5fX2s9PT1RLl9faz8oSj1YNShRLEosQyxEKSxEJiZILl9fZSYmKEguX19lPW51bGwpKTp0eXBlb2YgUS50eXBlPT0iZnVuY3Rpb24iJiZWIT09dm9pZCAwP0o9VjprJiYoSj1rLm5leHRTaWJsaW5nKSxRLl9fdSY9LTcpO3JldHVybiBOLl9fZT1iLEp9ZnVuY3Rpb24gTjgoQyxMLE4sSyxaKXt2YXIgWCx3LCQsSixHLHE9Ti5sZW5ndGgsWT1xLEg9MDtmb3IoQy5fX2s9QXJyYXkoWiksWD0wO1g8WjtYKyspKHc9TFtYXSkhPW51bGwmJnR5cGVvZiB3IT0iYm9vbGVhbiImJnR5cGVvZiB3IT0iZnVuY3Rpb24iPyh0eXBlb2Ygdz09InN0cmluZyJ8fHR5cGVvZiB3PT0ibnVtYmVyInx8dHlwZW9mIHc9PSJiaWdpbnQifHx3LmNvbnN0cnVjdG9yPT1TdHJpbmc/dz1DLl9fa1tYXT1QMihudWxsLHcsbnVsbCxudWxsLG51bGwpOkgyKHcpP3c9Qy5fX2tbWF09UDIoSzEse2NoaWxkcmVuOnd9LG51bGwsbnVsbCxudWxsKTp3LmNvbnN0cnVjdG9yPT09dm9pZCAwJiZ3Ll9fYj4wP3c9Qy5fX2tbWF09UDIody50eXBlLHcucHJvcHMsdy5rZXksdy5yZWY/dy5yZWY6bnVsbCx3Ll9fdik6Qy5fX2tbWF09dyxKPVgrSCx3Ll9fPUMsdy5fX2I9Qy5fX2IrMSwkPW51bGwsKEc9dy5fX2k9SzgodyxOLEosWSkpIT0tMSYmKFktLSwoJD1OW0ddKSYmKCQuX191fD0yKSksJD09bnVsbHx8JC5fX3Y9PW51bGw/KEc9PS0xJiYoWj5xP0gtLTpaPHEmJkgrKyksdHlwZW9mIHcudHlwZSE9ImZ1bmN0aW9uIiYmKHcuX191fD00KSk6RyE9SiYmKEc9PUotMT9ILS06Rz09SisxP0grKzooRz5KP0gtLTpIKyssdy5fX3V8PTQpKSk6Qy5fX2tbWF09bnVsbDtpZihZKWZvcihYPTA7WDxxO1grKykoJD1OW1hdKSE9bnVsbCYmKDImJC5fX3UpPT0wJiYoJC5fX2U9PUsmJihLPXIxKCQpKSxHNSgkLCQpKTtyZXR1cm4gS31mdW5jdGlvbiBYNShDLEwsTixLKXt2YXIgWixYO2lmKHR5cGVvZiBDLnR5cGU9PSJmdW5jdGlvbiIpe2ZvcihaPUMuX19rLFg9MDtaJiZYPFoubGVuZ3RoO1grKylaW1hdJiYoWltYXS5fXz1DLEw9WDUoWltYXSxMLE4sSykpO3JldHVybiBMfUMuX19lIT1MJiYoSyYmKEwmJkMudHlwZSYmIUwucGFyZW50Tm9kZSYmKEw9cjEoQykpLE4uaW5zZXJ0QmVmb3JlKEMuX19lLEx8fG51bGwpKSxMPUMuX19lKTtkbyBMPUwmJkwubmV4dFNpYmxpbmc7d2hpbGUoTCE9bnVsbCYmTC5ub2RlVHlwZT09OCk7cmV0dXJuIEx9ZnVuY3Rpb24geTEoQyxMKXtyZXR1cm4gTD1MfHxbXSxDPT1udWxsfHx0eXBlb2YgQz09ImJvb2xlYW4ifHwoSDIoQyk/Qy5zb21lKGZ1bmN0aW9uKE4pe3kxKE4sTCl9KTpMLnB1c2goQykpLEx9ZnVuY3Rpb24gSzgoQyxMLE4sSyl7dmFyIFosWCx3LCQ9Qy5rZXksSj1DLnR5cGUsRz1MW05dLHE9RyE9bnVsbCYmKDImRy5fX3UpPT0wO2lmKEc9PT1udWxsJiYkPT1udWxsfHxxJiYkPT1HLmtleSYmSj09Ry50eXBlKXJldHVybiBOO2lmKEs+KHE/MTowKSl7Zm9yKFo9Ti0xLFg9TisxO1o+PTB8fFg8TC5sZW5ndGg7KWlmKChHPUxbdz1aPj0wP1otLTpYKytdKSE9bnVsbCYmKDImRy5fX3UpPT0wJiYkPT1HLmtleSYmSj09Ry50eXBlKXJldHVybiB3fXJldHVybi0xfWZ1bmN0aW9uIHMwKEMsTCxOKXtMWzBdPT0iLSI/Qy5zZXRQcm9wZXJ0eShMLE49PW51bGw/IiI6Tik6Q1tMXT1OPT1udWxsPyIiOnR5cGVvZiBOIT0ibnVtYmVyInx8QzgudGVzdChMKT9OOk4rInB4In1mdW5jdGlvbiBFMihDLEwsTixLLFope3ZhciBYLHc7QzppZihMPT0ic3R5bGUiKWlmKHR5cGVvZiBOPT0ic3RyaW5nIilDLnN0eWxlLmNzc1RleHQ9TjtlbHNle2lmKHR5cGVvZiBLPT0ic3RyaW5nIiYmKEMuc3R5bGUuY3NzVGV4dD1LPSIiKSxLKWZvcihMIGluIEspTiYmTCBpbiBOfHxzMChDLnN0eWxlLEwsIiIpO2lmKE4pZm9yKEwgaW4gTilLJiZOW0xdPT1LW0xdfHxzMChDLnN0eWxlLEwsTltMXSl9ZWxzZSBpZihMWzBdPT0ibyImJkxbMV09PSJuIilYPUwhPShMPUwucmVwbGFjZShONSwiJDEiKSksdz1MLnRvTG93ZXJDYXNlKCksTD13IGluIEN8fEw9PSJvbkZvY3VzT3V0Inx8TD09Im9uRm9jdXNJbiI/dy5zbGljZSgyKTpMLnNsaWNlKDIpLEMubHx8KEMubD17fSksQy5sW0wrWF09TixOP0s/TltiMl09S1tiMl06KE5bYjJdPVkwLEMuYWRkRXZlbnRMaXN0ZW5lcihMLFg/JDA6dzAsWCkpOkMucmVtb3ZlRXZlbnRMaXN0ZW5lcihMLFg/JDA6dzAsWCk7ZWxzZXtpZihaPT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKUw9TC5yZXBsYWNlKC94bGluayhIfDpoKS8sImgiKS5yZXBsYWNlKC9zTmFtZSQvLCJzIik7ZWxzZSBpZihMIT0id2lkdGgiJiZMIT0iaGVpZ2h0IiYmTCE9ImhyZWYiJiZMIT0ibGlzdCImJkwhPSJmb3JtIiYmTCE9InRhYkluZGV4IiYmTCE9ImRvd25sb2FkIiYmTCE9InJvd1NwYW4iJiZMIT0iY29sU3BhbiImJkwhPSJyb2xlIiYmTCE9InBvcG92ZXIiJiZMIGluIEMpdHJ5e0NbTF09Tj09bnVsbD8iIjpOO2JyZWFrIEN9Y2F0Y2goJCl7fXR5cGVvZiBOPT0iZnVuY3Rpb24ifHwoTj09bnVsbHx8Tj09PSExJiZMWzRdIT0iLSI/Qy5yZW1vdmVBdHRyaWJ1dGUoTCk6Qy5zZXRBdHRyaWJ1dGUoTCxMPT0icG9wb3ZlciImJk49PTE/IiI6TikpfX1mdW5jdGlvbiBuMChDKXtyZXR1cm4gZnVuY3Rpb24oTCl7aWYodGhpcy5sKXt2YXIgTj10aGlzLmxbTC50eXBlK0NdO2lmKExbVDJdPT1udWxsKUxbVDJdPVkwKys7ZWxzZSBpZihMW1QyXTxOW2IyXSlyZXR1cm47cmV0dXJuIE4odi5ldmVudD92LmV2ZW50KEwpOkwpfX19ZnVuY3Rpb24gYjAoQyxMLE4sSyxaLFgsdywkLEosRyl7dmFyIHEsWSxILFEsayxiLFYsRCxBLEksaCxnLFUseix5LHg9TC50eXBlO2lmKEwuY29uc3RydWN0b3IhPT12b2lkIDApcmV0dXJuIG51bGw7MTI4Jk4uX191JiYoSj0hISgzMiZOLl9fdSksWD1bJD1MLl9fZT1OLl9fZV0pLChxPXYuX19iKSYmcShMKTtDOmlmKHR5cGVvZiB4PT0iZnVuY3Rpb24iKXRyeXtpZihEPUwucHJvcHMsQT14LnByb3RvdHlwZSYmeC5wcm90b3R5cGUucmVuZGVyLEk9KHE9eC5jb250ZXh0VHlwZSkmJktbcS5fX2NdLGg9cT9JP0kucHJvcHMudmFsdWU6cS5fXzpLLE4uX19jP1Y9KFk9TC5fX2M9Ti5fX2MpLl9fPVkuX19FOihBP0wuX19jPVk9bmV3IHgoRCxoKTooTC5fX2M9WT1uZXcgYjEoRCxoKSxZLmNvbnN0cnVjdG9yPXgsWS5yZW5kZXI9WjgpLEkmJkkuc3ViKFkpLFkuc3RhdGV8fChZLnN0YXRlPXt9KSxZLl9fbj1LLEg9WS5fX2Q9ITAsWS5fX2g9W10sWS5fc2I9W10pLEEmJlkuX19zPT1udWxsJiYoWS5fX3M9WS5zdGF0ZSksQSYmeC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMhPW51bGwmJihZLl9fcz09WS5zdGF0ZSYmKFkuX19zPVAxKHt9LFkuX19zKSksUDEoWS5fX3MseC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoRCxZLl9fcykpKSxRPVkucHJvcHMsaz1ZLnN0YXRlLFkuX192PUwsSClBJiZ4LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz09bnVsbCYmWS5jb21wb25lbnRXaWxsTW91bnQhPW51bGwmJlkuY29tcG9uZW50V2lsbE1vdW50KCksQSYmWS5jb21wb25lbnREaWRNb3VudCE9bnVsbCYmWS5fX2gucHVzaChZLmNvbXBvbmVudERpZE1vdW50KTtlbHNle2lmKEEmJnguZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzPT1udWxsJiZEIT09USYmWS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIT1udWxsJiZZLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoRCxoKSxMLl9fdj09Ti5fX3Z8fCFZLl9fZSYmWS5zaG91bGRDb21wb25lbnRVcGRhdGUhPW51bGwmJlkuc2hvdWxkQ29tcG9uZW50VXBkYXRlKEQsWS5fX3MsaCk9PT0hMSl7TC5fX3YhPU4uX192JiYoWS5wcm9wcz1ELFkuc3RhdGU9WS5fX3MsWS5fX2Q9ITEpLEwuX19lPU4uX19lLEwuX19rPU4uX19rLEwuX19rLnNvbWUoZnVuY3Rpb24oaSl7aSYmKGkuX189TCl9KSxoMi5wdXNoLmFwcGx5KFkuX19oLFkuX3NiKSxZLl9zYj1bXSxZLl9faC5sZW5ndGgmJncucHVzaChZKTticmVhayBDfVkuY29tcG9uZW50V2lsbFVwZGF0ZSE9bnVsbCYmWS5jb21wb25lbnRXaWxsVXBkYXRlKEQsWS5fX3MsaCksQSYmWS5jb21wb25lbnREaWRVcGRhdGUhPW51bGwmJlkuX19oLnB1c2goZnVuY3Rpb24oKXtZLmNvbXBvbmVudERpZFVwZGF0ZShRLGssYil9KX1pZihZLmNvbnRleHQ9aCxZLnByb3BzPUQsWS5fX1A9QyxZLl9fZT0hMSxnPXYuX19yLFU9MCxBKVkuc3RhdGU9WS5fX3MsWS5fX2Q9ITEsZyYmZyhMKSxxPVkucmVuZGVyKFkucHJvcHMsWS5zdGF0ZSxZLmNvbnRleHQpLGgyLnB1c2guYXBwbHkoWS5fX2gsWS5fc2IpLFkuX3NiPVtdO2Vsc2UgZG8gWS5fX2Q9ITEsZyYmZyhMKSxxPVkucmVuZGVyKFkucHJvcHMsWS5zdGF0ZSxZLmNvbnRleHQpLFkuc3RhdGU9WS5fX3M7d2hpbGUoWS5fX2QmJisrVTwyNSk7WS5zdGF0ZT1ZLl9fcyxZLmdldENoaWxkQ29udGV4dCE9bnVsbCYmKEs9UDEoUDEoe30sSyksWS5nZXRDaGlsZENvbnRleHQoKSkpLEEmJiFIJiZZLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlIT1udWxsJiYoYj1ZLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKFEsaykpLHo9cSE9bnVsbCYmcS50eXBlPT09SzEmJnEua2V5PT1udWxsPyQ1KHEucHJvcHMuY2hpbGRyZW4pOnEsJD1aNShDLEgyKHopP3o6W3pdLEwsTixLLFosWCx3LCQsSixHKSxZLmJhc2U9TC5fX2UsTC5fX3UmPS0xNjEsWS5fX2gubGVuZ3RoJiZ3LnB1c2goWSksViYmKFkuX19FPVkuX189bnVsbCl9Y2F0Y2goaSl7aWYoTC5fX3Y9bnVsbCxKfHxYIT1udWxsKWlmKGkudGhlbil7Zm9yKEwuX191fD1KPzE2MDoxMjg7JCYmJC5ub2RlVHlwZT09OCYmJC5uZXh0U2libGluZzspJD0kLm5leHRTaWJsaW5nO1hbWC5pbmRleE9mKCQpXT1udWxsLEwuX19lPSR9ZWxzZXtmb3IoeT1YLmxlbmd0aDt5LS07KXEwKFhbeV0pO0owKEwpfWVsc2UgTC5fX2U9Ti5fX2UsTC5fX2s9Ti5fX2ssaS50aGVufHxKMChMKTt2Ll9fZShpLEwsTil9ZWxzZSBYPT1udWxsJiZMLl9fdj09Ti5fX3Y/KEwuX19rPU4uX19rLEwuX19lPU4uX19lKTokPUwuX19lPV84KE4uX19lLEwsTixLLFosWCx3LEosRyk7cmV0dXJuKHE9di5kaWZmZWQpJiZxKEwpLDEyOCZMLl9fdT92b2lkIDA6JH1mdW5jdGlvbiBKMChDKXtDJiYoQy5fX2MmJihDLl9fYy5fX2U9ITApLEMuX19rJiZDLl9fay5zb21lKEowKSl9ZnVuY3Rpb24gdzUoQyxMLE4pe2Zvcih2YXIgSz0wO0s8Ti5sZW5ndGg7SysrKUgwKE5bS10sTlsrK0tdLE5bKytLXSk7di5fX2MmJnYuX19jKEwsQyksQy5zb21lKGZ1bmN0aW9uKFope3RyeXtDPVouX19oLFouX19oPVtdLEMuc29tZShmdW5jdGlvbihYKXtYLmNhbGwoWil9KX1jYXRjaChYKXt2Ll9fZShYLFouX192KX19KX1mdW5jdGlvbiAkNShDKXtyZXR1cm4gdHlwZW9mIEMhPSJvYmplY3QifHxDPT1udWxsfHxDLl9fYj4wP0M6SDIoQyk/Qy5tYXAoJDUpOlAxKHt9LEMpfWZ1bmN0aW9uIF84KEMsTCxOLEssWixYLHcsJCxKKXt2YXIgRyxxLFksSCxRLGssYixWPU4ucHJvcHN8fHkyLEQ9TC5wcm9wcyxBPUwudHlwZTtpZihBPT0ic3ZnIj9aPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI6QT09Im1hdGgiP1o9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiOlp8fChaPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiksWCE9bnVsbCl7Zm9yKEc9MDtHPFgubGVuZ3RoO0crKylpZigoUT1YW0ddKSYmInNldEF0dHJpYnV0ZSJpbiBRPT0hIUEmJihBP1EubG9jYWxOYW1lPT1BOlEubm9kZVR5cGU9PTMpKXtDPVEsWFtHXT1udWxsO2JyZWFrfX1pZihDPT1udWxsKXtpZihBPT1udWxsKXJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShEKTtDPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhaLEEsRC5pcyYmRCksJCYmKHYuX19tJiZ2Ll9fbShMLFgpLCQ9ITEpLFg9bnVsbH1pZihBPT1udWxsKVY9PT1EfHwkJiZDLmRhdGE9PUR8fChDLmRhdGE9RCk7ZWxzZXtpZihYPVgmJm0yLmNhbGwoQy5jaGlsZE5vZGVzKSwhJCYmWCE9bnVsbClmb3IoVj17fSxHPTA7RzxDLmF0dHJpYnV0ZXMubGVuZ3RoO0crKylWWyhRPUMuYXR0cmlidXRlc1tHXSkubmFtZV09US52YWx1ZTtmb3IoRyBpbiBWKVE9VltHXSxHPT0iZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiP1k9UTpHPT0iY2hpbGRyZW4ifHwoRyBpbiBEKXx8Rz09InZhbHVlIiYmKCJkZWZhdWx0VmFsdWUiaW4gRCl8fEc9PSJjaGVja2VkIiYmKCJkZWZhdWx0Q2hlY2tlZCJpbiBEKXx8RTIoQyxHLG51bGwsUSxaKTtmb3IoRyBpbiBEKVE9RFtHXSxHPT0iY2hpbGRyZW4iP0g9UTpHPT0iZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiP3E9UTpHPT0idmFsdWUiP2s9UTpHPT0iY2hlY2tlZCI/Yj1ROiQmJnR5cGVvZiBRIT0iZnVuY3Rpb24ifHxWW0ddPT09UXx8RTIoQyxHLFEsVltHXSxaKTtpZihxKSR8fFkmJihxLl9faHRtbD09WS5fX2h0bWx8fHEuX19odG1sPT1DLmlubmVySFRNTCl8fChDLmlubmVySFRNTD1xLl9faHRtbCksTC5fX2s9W107ZWxzZSBpZihZJiYoQy5pbm5lckhUTUw9IiIpLFo1KEwudHlwZT09InRlbXBsYXRlIj9DLmNvbnRlbnQ6QyxIMihIKT9IOltIXSxMLE4sSyxBPT0iZm9yZWlnbk9iamVjdCI/Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiOlosWCx3LFg/WFswXTpOLl9fayYmcjEoTiwwKSwkLEopLFghPW51bGwpZm9yKEc9WC5sZW5ndGg7Ry0tOylxMChYW0ddKTskfHwoRz0idmFsdWUiLEE9PSJwcm9ncmVzcyImJms9PW51bGw/Qy5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik6ayE9bnVsbCYmKGshPT1DW0ddfHxBPT0icHJvZ3Jlc3MiJiYha3x8QT09Im9wdGlvbiImJmshPVZbR10pJiZFMihDLEcsayxWW0ddLFopLEc9ImNoZWNrZWQiLGIhPW51bGwmJmIhPUNbR10mJkUyKEMsRyxiLFZbR10sWikpfXJldHVybiBDfWZ1bmN0aW9uIEgwKEMsTCxOKXt0cnl7aWYodHlwZW9mIEM9PSJmdW5jdGlvbiIpe3ZhciBLPXR5cGVvZiBDLl9fdT09ImZ1bmN0aW9uIjtLJiZDLl9fdSgpLEsmJkw9PW51bGx8fChDLl9fdT1DKEwpKX1lbHNlIEMuY3VycmVudD1MfWNhdGNoKFope3YuX19lKFosTil9fWZ1bmN0aW9uIEc1KEMsTCxOKXt2YXIgSyxaO2lmKHYudW5tb3VudCYmdi51bm1vdW50KEMpLChLPUMucmVmKSYmKEsuY3VycmVudCYmSy5jdXJyZW50IT1DLl9fZXx8SDAoSyxudWxsLEwpKSwoSz1DLl9fYykhPW51bGwpe2lmKEsuY29tcG9uZW50V2lsbFVubW91bnQpdHJ5e0suY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChYKXt2Ll9fZShYLEwpfUsuYmFzZT1LLl9fUD1udWxsfWlmKEs9Qy5fX2spZm9yKFo9MDtaPEsubGVuZ3RoO1orKylLW1pdJiZHNShLW1pdLEwsTnx8dHlwZW9mIEMudHlwZSE9ImZ1bmN0aW9uIik7Tnx8cTAoQy5fX2UpLEMuX19jPUMuX189Qy5fX2U9dm9pZCAwfWZ1bmN0aW9uIFo4KEMsTCxOKXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3RvcihDLE4pfWZ1bmN0aW9uIHYyKEMsTCxOKXt2YXIgSyxaLFgsdztMPT1kb2N1bWVudCYmKEw9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSx2Ll9fJiZ2Ll9fKEMsTCksWj0oSz10eXBlb2YgTj09ImZ1bmN0aW9uIik/bnVsbDpOJiZOLl9fa3x8TC5fX2ssWD1bXSx3PVtdLGIwKEwsQz0oIUsmJk58fEwpLl9faz1FMShLMSxudWxsLFtDXSksWnx8eTIseTIsTC5uYW1lc3BhY2VVUkksIUsmJk4/W05dOlo/bnVsbDpMLmZpcnN0Q2hpbGQ/bTIuY2FsbChMLmNoaWxkTm9kZXMpOm51bGwsWCwhSyYmTj9OOlo/Wi5fX2U6TC5maXJzdENoaWxkLEssdyksdzUoWCxDLHcpfWZ1bmN0aW9uIGgxKEMpe2Z1bmN0aW9uIEwoTil7dmFyIEssWjtyZXR1cm4gdGhpcy5nZXRDaGlsZENvbnRleHR8fChLPW5ldyBTZXQsKFo9e30pW0wuX19jXT10aGlzLHRoaXMuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIFp9LHRoaXMuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXtLPW51bGx9LHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKFgpe3RoaXMucHJvcHMudmFsdWUhPVgudmFsdWUmJksuZm9yRWFjaChmdW5jdGlvbih3KXt3Ll9fZT0hMCxHMCh3KX0pfSx0aGlzLnN1Yj1mdW5jdGlvbihYKXtLLmFkZChYKTt2YXIgdz1YLmNvbXBvbmVudFdpbGxVbm1vdW50O1guY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXtLJiZLLmRlbGV0ZShYKSx3JiZ3LmNhbGwoWCl9fSksTi5jaGlsZHJlbn1yZXR1cm4gTC5fX2M9Il9fY0MiK0s1KyssTC5fXz1DLEwuUHJvdmlkZXI9TC5fX2w9KEwuQ29uc3VtZXI9ZnVuY3Rpb24oTixLKXtyZXR1cm4gTi5jaGlsZHJlbihLKX0pLmNvbnRleHRUeXBlPUwsTH1tMj1oMi5zbGljZSx2PXtfX2U6ZnVuY3Rpb24oQyxMLE4sSyl7Zm9yKHZhciBaLFgsdztMPUwuX187KWlmKChaPUwuX19jKSYmIVouX18pdHJ5e2lmKChYPVouY29uc3RydWN0b3IpJiZYLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciE9bnVsbCYmKFouc2V0U3RhdGUoWC5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoQykpLHc9Wi5fX2QpLFouY29tcG9uZW50RGlkQ2F0Y2ghPW51bGwmJihaLmNvbXBvbmVudERpZENhdGNoKEMsS3x8e30pLHc9Wi5fX2QpLHcpcmV0dXJuIFouX19FPVp9Y2F0Y2goJCl7Qz0kfXRocm93IEN9fSxlMD0wLGUzPWZ1bmN0aW9uKEMpe3JldHVybiBDIT1udWxsJiZDLmNvbnN0cnVjdG9yPT09dm9pZCAwfSxiMS5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oQyxMKXt2YXIgTjtOPXRoaXMuX19zIT1udWxsJiZ0aGlzLl9fcyE9dGhpcy5zdGF0ZT90aGlzLl9fczp0aGlzLl9fcz1QMSh7fSx0aGlzLnN0YXRlKSx0eXBlb2YgQz09ImZ1bmN0aW9uIiYmKEM9QyhQMSh7fSxOKSx0aGlzLnByb3BzKSksQyYmUDEoTixDKSxDIT1udWxsJiZ0aGlzLl9fdiYmKEwmJnRoaXMuX3NiLnB1c2goTCksRzAodGhpcykpfSxiMS5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oQyl7dGhpcy5fX3YmJih0aGlzLl9fZT0hMCxDJiZ0aGlzLl9faC5wdXNoKEMpLEcwKHRoaXMpKX0sYjEucHJvdG90eXBlLnJlbmRlcj1LMSxwMT1bXSxDNT10eXBlb2YgUHJvbWlzZT09ImZ1bmN0aW9uIj9Qcm9taXNlLnByb3RvdHlwZS50aGVuLmJpbmQoUHJvbWlzZS5yZXNvbHZlKCkpOnNldFRpbWVvdXQsTDU9ZnVuY3Rpb24oQyxMKXtyZXR1cm4gQy5fX3YuX19iLUwuX192Ll9fYn0sUzIuX19yPTAsWDA9TWF0aC5yYW5kb20oKS50b1N0cmluZyg4KSxUMj0iX19kIitYMCxiMj0iX19hIitYMCxONT0vKFBvaW50ZXJDYXB0dXJlKSR8Q2FwdHVyZSQvaSxZMD0wLHcwPW4wKCExKSwkMD1uMCghMCksSzU9MDt2YXIgYzEsXzEsUTAsSjUsUTI9MCxCNT1bXSx3MT12LFk1PXcxLl9fYixxNT13MS5fX3IsYjU9dzEuZGlmZmVkLEg1PXcxLl9fYyxRNT13MS51bm1vdW50LFY1PXcxLl9fO2Z1bmN0aW9uIHAyKEMsTCl7dzEuX19oJiZ3MS5fX2goXzEsQyxRMnx8TCksUTI9MDt2YXIgTj1fMS5fX0h8fChfMS5fX0g9e19fOltdLF9faDpbXX0pO3JldHVybiBDPj1OLl9fLmxlbmd0aCYmTi5fXy5wdXNoKHt9KSxOLl9fW0NdfWZ1bmN0aW9uIE0oQyl7cmV0dXJuIFEyPTEsRDAoazUsQyl9ZnVuY3Rpb24gRDAoQyxMLE4pe3ZhciBLPXAyKGMxKyssMik7aWYoSy50PUMsIUsuX19jJiYoSy5fXz1bTj9OKEwpOms1KHZvaWQgMCxMKSxmdW5jdGlvbigkKXt2YXIgSj1LLl9fTj9LLl9fTlswXTpLLl9fWzBdLEc9Sy50KEosJCk7SiE9PUcmJihLLl9fTj1bRyxLLl9fWzFdXSxLLl9fYy5zZXRTdGF0ZSh7fSkpfV0sSy5fX2M9XzEsIV8xLl9fZikpe3ZhciBaPWZ1bmN0aW9uKCQsSixHKXtpZighSy5fX2MuX19IKXJldHVybiEwO3ZhciBxPUsuX19jLl9fSC5fXy5maWx0ZXIoZnVuY3Rpb24oSCl7cmV0dXJuIEguX19jfSk7aWYocS5ldmVyeShmdW5jdGlvbihIKXtyZXR1cm4hSC5fX059KSlyZXR1cm4hWHx8WC5jYWxsKHRoaXMsJCxKLEcpO3ZhciBZPUsuX19jLnByb3BzIT09JDtyZXR1cm4gcS5zb21lKGZ1bmN0aW9uKEgpe2lmKEguX19OKXt2YXIgUT1ILl9fWzBdO0guX189SC5fX04sSC5fX049dm9pZCAwLFEhPT1ILl9fWzBdJiYoWT0hMCl9fSksWCYmWC5jYWxsKHRoaXMsJCxKLEcpfHxZfTtfMS5fX2Y9ITA7dmFye3Nob3VsZENvbXBvbmVudFVwZGF0ZTpYLGNvbXBvbmVudFdpbGxVcGRhdGU6d309XzE7XzEuY29tcG9uZW50V2lsbFVwZGF0ZT1mdW5jdGlvbigkLEosRyl7aWYodGhpcy5fX2Upe3ZhciBxPVg7WD12b2lkIDAsWigkLEosRyksWD1xfXcmJncuY2FsbCh0aGlzLCQsSixHKX0sXzEuc2hvdWxkQ29tcG9uZW50VXBkYXRlPVp9cmV0dXJuIEsuX19OfHxLLl9ffWZ1bmN0aW9uIEUoQyxMKXt2YXIgTj1wMihjMSsrLDMpOyF3MS5fX3MmJkY1KE4uX19ILEwpJiYoTi5fXz1DLE4udT1MLF8xLl9fSC5fX2gucHVzaChOKSl9ZnVuY3Rpb24gUihDKXtyZXR1cm4gUTI9NSxNMShmdW5jdGlvbigpe3JldHVybntjdXJyZW50OkN9fSxbXSl9ZnVuY3Rpb24gTTEoQyxMKXt2YXIgTj1wMihjMSsrLDcpO3JldHVybiBGNShOLl9fSCxMKSYmKE4uX189QygpLE4uX19IPUwsTi5fX2g9QyksTi5fX31mdW5jdGlvbiBQKEMsTCl7cmV0dXJuIFEyPTgsTTEoZnVuY3Rpb24oKXtyZXR1cm4gQ30sTCl9ZnVuY3Rpb24geDEoQyl7dmFyIEw9XzEuY29udGV4dFtDLl9fY10sTj1wMihjMSsrLDkpO3JldHVybiBOLmM9QyxMPyhOLl9fPT1udWxsJiYoTi5fXz0hMCxMLnN1YihfMSkpLEwucHJvcHMudmFsdWUpOkMuX199ZnVuY3Rpb24gWDgoKXtmb3IodmFyIEM7Qz1CNS5zaGlmdCgpOyl7dmFyIEw9Qy5fX0g7aWYoQy5fX1AmJkwpdHJ5e0wuX19oLnNvbWUoUjIpLEwuX19oLnNvbWUoVjApLEwuX19oPVtdfWNhdGNoKE4pe0wuX19oPVtdLHcxLl9fZShOLEMuX192KX19fXcxLl9fYj1mdW5jdGlvbihDKXtfMT1udWxsLFk1JiZZNShDKX0sdzEuX189ZnVuY3Rpb24oQyxMKXtDJiZMLl9fayYmTC5fX2suX19tJiYoQy5fX209TC5fX2suX19tKSxWNSYmVjUoQyxMKX0sdzEuX19yPWZ1bmN0aW9uKEMpe3E1JiZxNShDKSxjMT0wO3ZhciBMPShfMT1DLl9fYykuX19IO0wmJihRMD09PV8xPyhMLl9faD1bXSxfMS5fX2g9W10sTC5fXy5zb21lKGZ1bmN0aW9uKE4pe04uX19OJiYoTi5fXz1OLl9fTiksTi51PU4uX19OPXZvaWQgMH0pKTooTC5fX2guc29tZShSMiksTC5fX2guc29tZShWMCksTC5fX2g9W10sYzE9MCkpLFEwPV8xfSx3MS5kaWZmZWQ9ZnVuY3Rpb24oQyl7YjUmJmI1KEMpO3ZhciBMPUMuX19jO0wmJkwuX19IJiYoTC5fX0guX19oLmxlbmd0aCYmKEI1LnB1c2goTCkhPT0xJiZKNT09PXcxLnJlcXVlc3RBbmltYXRpb25GcmFtZXx8KChKNT13MS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpfHx3OCkoWDgpKSxMLl9fSC5fXy5zb21lKGZ1bmN0aW9uKE4pe04udSYmKE4uX19IPU4udSksTi51PXZvaWQgMH0pKSxRMD1fMT1udWxsfSx3MS5fX2M9ZnVuY3Rpb24oQyxMKXtMLnNvbWUoZnVuY3Rpb24oTil7dHJ5e04uX19oLnNvbWUoUjIpLE4uX19oPU4uX19oLmZpbHRlcihmdW5jdGlvbihLKXtyZXR1cm4hSy5fX3x8VjAoSyl9KX1jYXRjaChLKXtMLnNvbWUoZnVuY3Rpb24oWil7Wi5fX2gmJihaLl9faD1bXSl9KSxMPVtdLHcxLl9fZShLLE4uX192KX19KSxINSYmSDUoQyxMKX0sdzEudW5tb3VudD1mdW5jdGlvbihDKXtRNSYmUTUoQyk7dmFyIEwsTj1DLl9fYztOJiZOLl9fSCYmKE4uX19ILl9fLnNvbWUoZnVuY3Rpb24oSyl7dHJ5e1IyKEspfWNhdGNoKFope0w9Wn19KSxOLl9fSD12b2lkIDAsTCYmdzEuX19lKEwsTi5fX3YpKX07dmFyIEQ1PXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU9PSJmdW5jdGlvbiI7ZnVuY3Rpb24gdzgoQyl7dmFyIEwsTj1mdW5jdGlvbigpe2NsZWFyVGltZW91dChLKSxENSYmY2FuY2VsQW5pbWF0aW9uRnJhbWUoTCksc2V0VGltZW91dChDKX0sSz1zZXRUaW1lb3V0KE4sMzUpO0Q1JiYoTD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoTikpfWZ1bmN0aW9uIFIyKEMpe3ZhciBMPV8xLE49Qy5fX2M7dHlwZW9mIE49PSJmdW5jdGlvbiImJihDLl9fYz12b2lkIDAsTigpKSxfMT1MfWZ1bmN0aW9uIFYwKEMpe3ZhciBMPV8xO0MuX19jPUMuX18oKSxfMT1MfWZ1bmN0aW9uIEY1KEMsTCl7cmV0dXJuIUN8fEMubGVuZ3RoIT09TC5sZW5ndGh8fEwuc29tZShmdW5jdGlvbihOLEspe3JldHVybiBOIT09Q1tLXX0pfWZ1bmN0aW9uIGs1KEMsTCl7cmV0dXJuIHR5cGVvZiBMPT0iZnVuY3Rpb24iP0woQyk6TH1mdW5jdGlvbiBIOChDLEwpe2Zvcih2YXIgTiBpbiBMKUNbTl09TFtOXTtyZXR1cm4gQ31mdW5jdGlvbiBXNShDLEwpe2Zvcih2YXIgTiBpbiBDKWlmKE4hPT0iX19zb3VyY2UiJiYhKE4gaW4gTCkpcmV0dXJuITA7Zm9yKHZhciBLIGluIEwpaWYoSyE9PSJfX3NvdXJjZSImJkNbS10hPT1MW0tdKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEE1KEMsTCl7dGhpcy5wcm9wcz1DLHRoaXMuY29udGV4dD1MfShBNS5wcm90b3R5cGU9bmV3IGIxKS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMCxBNS5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKEMsTCl7cmV0dXJuIFc1KHRoaXMucHJvcHMsQyl8fFc1KHRoaXMuc3RhdGUsTCl9O3ZhciBNNT12Ll9fYjt2Ll9fYj1mdW5jdGlvbihDKXtDLnR5cGUmJkMudHlwZS5fX2YmJkMucmVmJiYoQy5wcm9wcy5yZWY9Qy5yZWYsQy5yZWY9bnVsbCksTTUmJk01KEMpfTt2YXIgUTg9di5fX2U7di5fX2U9ZnVuY3Rpb24oQyxMLE4sSyl7aWYoQy50aGVuKXtmb3IodmFyIFosWD1MO1g9WC5fXzspaWYoKFo9WC5fX2MpJiZaLl9fYylyZXR1cm4gTC5fX2U9PW51bGwmJihMLl9fZT1OLl9fZSxMLl9faz1OLl9fayksWi5fX2MoQyxMKX1ROChDLEwsTixLKX07dmFyIFU1PXYudW5tb3VudDtmdW5jdGlvbiBQNShDLEwsTil7cmV0dXJuIEMmJihDLl9fYyYmQy5fX2MuX19IJiYoQy5fX2MuX19ILl9fLmZvckVhY2goZnVuY3Rpb24oSyl7dHlwZW9mIEsuX19jPT0iZnVuY3Rpb24iJiZLLl9fYygpfSksQy5fX2MuX19IPW51bGwpLChDPUg4KHt9LEMpKS5fX2MhPW51bGwmJihDLl9fYy5fX1A9PT1OJiYoQy5fX2MuX19QPUwpLEMuX19jLl9fZT0hMCxDLl9fYz1udWxsKSxDLl9faz1DLl9fayYmQy5fX2subWFwKGZ1bmN0aW9uKEspe3JldHVybiBQNShLLEwsTil9KSksQ31mdW5jdGlvbiB5NShDLEwsTil7cmV0dXJuIEMmJk4mJihDLl9fdj1udWxsLEMuX19rPUMuX19rJiZDLl9fay5tYXAoZnVuY3Rpb24oSyl7cmV0dXJuIHk1KEssTCxOKX0pLEMuX19jJiZDLl9fYy5fX1A9PT1MJiYoQy5fX2UmJk4uYXBwZW5kQ2hpbGQoQy5fX2UpLEMuX19jLl9fZT0hMCxDLl9fYy5fX1A9TikpLEN9ZnVuY3Rpb24gQjAoKXt0aGlzLl9fdT0wLHRoaXMubz1udWxsLHRoaXMuX19iPW51bGx9ZnVuY3Rpb24gaDUoQyl7dmFyIEw9Qy5fXyYmQy5fXy5fX2M7cmV0dXJuIEwmJkwuX19hJiZMLl9fYShDKX1mdW5jdGlvbiB4Migpe3RoaXMuaT1udWxsLHRoaXMubD1udWxsfXYudW5tb3VudD1mdW5jdGlvbihDKXt2YXIgTD1DLl9fYztMJiYoTC5fX3o9ITApLEwmJkwuX19SJiZMLl9fUigpLEwmJjMyJkMuX191JiYoQy50eXBlPW51bGwpLFU1JiZVNShDKX0sKEIwLnByb3RvdHlwZT1uZXcgYjEpLl9fYz1mdW5jdGlvbihDLEwpe3ZhciBOPUwuX19jLEs9dGhpcztLLm89PW51bGwmJihLLm89W10pLEsuby5wdXNoKE4pO3ZhciBaPWg1KEsuX192KSxYPSExLHc9ZnVuY3Rpb24oKXtYfHxLLl9fenx8KFg9ITAsTi5fX1I9bnVsbCxaP1ooSik6SigpKX07Ti5fX1I9dzt2YXIgJD1OLl9fUDtOLl9fUD1udWxsO3ZhciBKPWZ1bmN0aW9uKCl7aWYoIS0tSy5fX3Upe2lmKEsuc3RhdGUuX19hKXt2YXIgRz1LLnN0YXRlLl9fYTtLLl9fdi5fX2tbMF09eTUoRyxHLl9fYy5fX1AsRy5fX2MuX19PKX12YXIgcTtmb3IoSy5zZXRTdGF0ZSh7X19hOksuX19iPW51bGx9KTtxPUsuby5wb3AoKTspcS5fX1A9JCxxLmZvcmNlVXBkYXRlKCl9fTtLLl9fdSsrfHwzMiZMLl9fdXx8Sy5zZXRTdGF0ZSh7X19hOksuX19iPUsuX192Ll9fa1swXX0pLEMudGhlbih3LHcpfSxCMC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt0aGlzLm89W119LEIwLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oQyxMKXtpZih0aGlzLl9fYil7aWYodGhpcy5fX3YuX19rKXt2YXIgTj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxLPXRoaXMuX192Ll9fa1swXS5fX2M7dGhpcy5fX3YuX19rWzBdPVA1KHRoaXMuX19iLE4sSy5fX089Sy5fX1ApfXRoaXMuX19iPW51bGx9dmFyIFo9TC5fX2EmJkUxKEsxLG51bGwsQy5mYWxsYmFjayk7cmV0dXJuIFomJihaLl9fdSY9LTMzKSxbRTEoSzEsbnVsbCxMLl9fYT9udWxsOkMuY2hpbGRyZW4pLFpdfTt2YXIgTzU9ZnVuY3Rpb24oQyxMLE4pe2lmKCsrTlsxXT09PU5bMF0mJkMubC5kZWxldGUoTCksQy5wcm9wcy5yZXZlYWxPcmRlciYmKEMucHJvcHMucmV2ZWFsT3JkZXJbMF0hPT0idCJ8fCFDLmwuc2l6ZSkpZm9yKE49Qy5pO047KXtmb3IoO04ubGVuZ3RoPjM7KU4ucG9wKCkoKTtpZihOWzFdPE5bMF0pYnJlYWs7Qy5pPU49TlsyXX19Oyh4Mi5wcm90b3R5cGU9bmV3IGIxKS5fX2E9ZnVuY3Rpb24oQyl7dmFyIEw9dGhpcyxOPWg1KEwuX192KSxLPUwubC5nZXQoQyk7cmV0dXJuIEtbMF0rKyxmdW5jdGlvbihaKXt2YXIgWD1mdW5jdGlvbigpe0wucHJvcHMucmV2ZWFsT3JkZXI/KEsucHVzaChaKSxPNShMLEMsSykpOlooKX07Tj9OKFgpOlgoKX19LHgyLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oQyl7dGhpcy5pPW51bGwsdGhpcy5sPW5ldyBNYXA7dmFyIEw9eTEoQy5jaGlsZHJlbik7Qy5yZXZlYWxPcmRlciYmQy5yZXZlYWxPcmRlclswXT09PSJiIiYmTC5yZXZlcnNlKCk7Zm9yKHZhciBOPUwubGVuZ3RoO04tLTspdGhpcy5sLnNldChMW05dLHRoaXMuaT1bMSwwLHRoaXMuaV0pO3JldHVybiBDLmNoaWxkcmVufSx4Mi5wcm90b3R5cGUuY29tcG9uZW50RGlkVXBkYXRlPXgyLnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe3ZhciBDPXRoaXM7dGhpcy5sLmZvckVhY2goZnVuY3Rpb24oTCxOKXtPNShDLE4sTCl9KX07dmFyIFY4PXR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8fDYwMTAzLEQ4PS9eKD86YWNjZW50fGFsaWdubWVudHxhcmFiaWN8YmFzZWxpbmV8Y2FwfGNsaXAoPyFQYXRoVSl8Y29sb3J8ZG9taW5hbnR8ZmlsbHxmbG9vZHxmb250fGdseXBoKD8hUil8aG9yaXp8aW1hZ2UoIVMpfGxldHRlcnxsaWdodGluZ3xtYXJrZXIoPyFIfFd8VSl8b3ZlcmxpbmV8cGFpbnR8cG9pbnRlcnxzaGFwZXxzdG9wfHN0cmlrZXRocm91Z2h8c3Ryb2tlfHRleHQoPyFMKXx0cmFuc2Zvcm18dW5kZXJsaW5lfHVuaWNvZGV8dW5pdHN8dnx2ZWN0b3J8dmVydHx3b3JkfHdyaXRpbmd8eCg/IUMpKVtBLVpdLyxCOD0vXm9uKEFuaXxUcmF8VG91fEJlZm9yZUlucHxDb21wbykvLEY4PS9bQS1aMC05XS9nLGs4PXR5cGVvZiBkb2N1bWVudDwidSIsVzg9ZnVuY3Rpb24oQyl7cmV0dXJuKHR5cGVvZiBTeW1ib2w8InUiJiZ0eXBlb2YgU3ltYm9sKCk9PSJzeW1ib2wiPy9maWx8Y2hlfHJhZC86L2ZpbHxjaGV8cmEvKS50ZXN0KEMpfTtmdW5jdGlvbiBTNShDLEwsTil7cmV0dXJuIEwuX19rPT1udWxsJiYoTC50ZXh0Q29udGVudD0iIiksdjIoQyxMKSx0eXBlb2YgTj09ImZ1bmN0aW9uIiYmTigpLEM/Qy5fX2M6bnVsbH1iMS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD0hMCxbImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCJjb21wb25lbnRXaWxsVXBkYXRlIl0uZm9yRWFjaChmdW5jdGlvbihDKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYjEucHJvdG90eXBlLEMse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1siVU5TQUZFXyIrQ119LHNldDpmdW5jdGlvbihMKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxDLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6TH0pfX0pfSk7dmFyIHo1PXYuZXZlbnQ7di5ldmVudD1mdW5jdGlvbihDKXtyZXR1cm4gejUmJihDPXo1KEMpKSxDLnBlcnNpc3Q9ZnVuY3Rpb24oKXt9LEMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW5jZWxCdWJibGV9LEMuaXNEZWZhdWx0UHJldmVudGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVmYXVsdFByZXZlbnRlZH0sQy5uYXRpdmVFdmVudD1DfTt2YXIgbTUsQTg9e2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbGFzc319LEk1PXYudm5vZGU7di52bm9kZT1mdW5jdGlvbihDKXt0eXBlb2YgQy50eXBlPT0ic3RyaW5nIiYmZnVuY3Rpb24oTCl7dmFye3Byb3BzOk4sdHlwZTpLfT1MLFo9e30sWD1LLmluZGV4T2YoIi0iKT09LTE7Zm9yKHZhciB3IGluIE4pe3ZhciAkPU5bd107aWYoISh3PT09InZhbHVlIiYmKCJkZWZhdWx0VmFsdWUiaW4gTikmJiQ9PW51bGx8fGs4JiZ3PT09ImNoaWxkcmVuIiYmSz09PSJub3NjcmlwdCJ8fHc9PT0iY2xhc3MifHx3PT09ImNsYXNzTmFtZSIpKXt2YXIgSj13LnRvTG93ZXJDYXNlKCk7dz09PSJkZWZhdWx0VmFsdWUiJiYidmFsdWUiaW4gTiYmTi52YWx1ZT09bnVsbD93PSJ2YWx1ZSI6dz09PSJkb3dubG9hZCImJiQ9PT0hMD8kPSIiOko9PT0idHJhbnNsYXRlIiYmJD09PSJubyI/JD0hMTpKWzBdPT09Im8iJiZKWzFdPT09Im4iP0o9PT0ib25kb3VibGVjbGljayI/dz0ib25kYmxjbGljayI6SiE9PSJvbmNoYW5nZSJ8fEshPT0iaW5wdXQiJiZLIT09InRleHRhcmVhInx8VzgoTi50eXBlKT9KPT09Im9uZm9jdXMiP3c9Im9uZm9jdXNpbiI6Sj09PSJvbmJsdXIiP3c9Im9uZm9jdXNvdXQiOkI4LnRlc3QodykmJih3PUopOko9dz0ib25pbnB1dCI6WCYmRDgudGVzdCh3KT93PXcucmVwbGFjZShGOCwiLSQmIikudG9Mb3dlckNhc2UoKTokPT09bnVsbCYmKCQ9dm9pZCAwKSxKPT09Im9uaW5wdXQiJiZaW3c9Sl0mJih3PSJvbmlucHV0Q2FwdHVyZSIpLFpbd109JH19Sz09InNlbGVjdCImJihaLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KFoudmFsdWUpJiYoWi52YWx1ZT15MShOLmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKEcpe0cucHJvcHMuc2VsZWN0ZWQ9Wi52YWx1ZS5pbmRleE9mKEcucHJvcHMudmFsdWUpIT0tMX0pKSxaLmRlZmF1bHRWYWx1ZSE9bnVsbCYmKFoudmFsdWU9eTEoTi5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbihHKXtHLnByb3BzLnNlbGVjdGVkPVoubXVsdGlwbGU/Wi5kZWZhdWx0VmFsdWUuaW5kZXhPZihHLnByb3BzLnZhbHVlKSE9LTE6Wi5kZWZhdWx0VmFsdWU9PUcucHJvcHMudmFsdWV9KSkpLE4uY2xhc3MmJiFOLmNsYXNzTmFtZT8oWi5jbGFzcz1OLmNsYXNzLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShaLCJjbGFzc05hbWUiLEE4KSk6Ti5jbGFzc05hbWUmJihaLmNsYXNzPVouY2xhc3NOYW1lPU4uY2xhc3NOYW1lKSxMLnByb3BzPVp9KEMpLEMuJCR0eXBlb2Y9VjgsSTUmJkk1KEMpfTt2YXIgRTU9di5fX3I7di5fX3I9ZnVuY3Rpb24oQyl7RTUmJkU1KEMpLG01PUMuX19jfTt2YXIgVDU9di5kaWZmZWQ7di5kaWZmZWQ9ZnVuY3Rpb24oQyl7VDUmJlQ1KEMpO3Zhcntwcm9wczpMLF9fZTpOfT1DO04hPW51bGwmJkMudHlwZT09PSJ0ZXh0YXJlYSImJiJ2YWx1ZSJpbiBMJiZMLnZhbHVlIT09Ti52YWx1ZSYmKE4udmFsdWU9TC52YWx1ZT09bnVsbD8iIjpMLnZhbHVlKSxtNT1udWxsfTtmdW5jdGlvbiB2NShDKXtyZXR1cm4hIUMuX19rJiYodjIobnVsbCxDKSwhMCl9ZnVuY3Rpb24gUjUoQyl7cmV0dXJue3JlbmRlcjpmdW5jdGlvbihMKXtTNShMLEMpfSx1bm1vdW50OmZ1bmN0aW9uKCl7djUoQyl9fX1mdW5jdGlvbiBhNShDLEwpe2Zvcih2YXIgTiBpbiBMKUNbTl09TFtOXTtyZXR1cm4gQ31mdW5jdGlvbiBXMChDLEwpe2Zvcih2YXIgTiBpbiBDKWlmKE4hPT0iX19zb3VyY2UiJiYhKE4gaW4gTCkpcmV0dXJuITA7Zm9yKHZhciBLIGluIEwpaWYoSyE9PSJfX3NvdXJjZSImJkNbS10hPT1MW0tdKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHA1KEMsTCl7dGhpcy5wcm9wcz1DLHRoaXMuY29udGV4dD1MfWZ1bmN0aW9uIHQxKEMsTCl7ZnVuY3Rpb24gTihaKXt2YXIgWD10aGlzLnByb3BzLnJlZjtyZXR1cm4gWCE9Wi5yZWYmJlgmJih0eXBlb2YgWD09ImZ1bmN0aW9uIj9YKG51bGwpOlguY3VycmVudD1udWxsKSxMPyFMKHRoaXMucHJvcHMsWil8fFghPVoucmVmOlcwKHRoaXMucHJvcHMsWil9ZnVuY3Rpb24gSyhaKXtyZXR1cm4gdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGU9TixFMShDLFopfXJldHVybiBLLmRpc3BsYXlOYW1lPSJNZW1vKCIrKEMuZGlzcGxheU5hbWV8fEMubmFtZSkrIikiLEsuX19mPUsucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9ITAsSy50eXBlPUMsS30ocDUucHJvdG90eXBlPW5ldyBiMSkuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITAscDUucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihDLEwpe3JldHVybiBXMCh0aGlzLnByb3BzLEMpfHxXMCh0aGlzLnN0YXRlLEwpfTt2YXIgeDU9di5fX2I7di5fX2I9ZnVuY3Rpb24oQyl7Qy50eXBlJiZDLnR5cGUuX19mJiZDLnJlZiYmKEMucHJvcHMucmVmPUMucmVmLEMucmVmPW51bGwpLHg1JiZ4NShDKX07dmFyIE04PXR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpfHwzOTExO2Z1bmN0aW9uIHMxKEMpe2Z1bmN0aW9uIEwoTil7dmFyIEs9YTUoe30sTik7cmV0dXJuIGRlbGV0ZSBLLnJlZixDKEssTi5yZWZ8fG51bGwpfXJldHVybiBMLiQkdHlwZW9mPU04LEwucmVuZGVyPUMsTC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD1MLl9fZj0hMCxMLmRpc3BsYXlOYW1lPSJGb3J3YXJkUmVmKCIrKEMuZGlzcGxheU5hbWV8fEMubmFtZSkrIikiLEx9dmFyIFU4PXYuX19lO3YuX19lPWZ1bmN0aW9uKEMsTCxOLEspe2lmKEMudGhlbil7Zm9yKHZhciBaLFg9TDtYPVguX187KWlmKChaPVguX19jKSYmWi5fX2MpcmV0dXJuIEwuX19lPT1udWxsJiYoTC5fX2U9Ti5fX2UsTC5fX2s9Ti5fX2spLFouX19jKEMsTCl9VTgoQyxMLE4sSyl9O3ZhciBnNT12LnVubW91bnQ7ZnVuY3Rpb24gZDUoQyxMLE4pe3JldHVybiBDJiYoQy5fX2MmJkMuX19jLl9fSCYmKEMuX19jLl9fSC5fXy5mb3JFYWNoKGZ1bmN0aW9uKEspe3R5cGVvZiBLLl9fYz09ImZ1bmN0aW9uIiYmSy5fX2MoKX0pLEMuX19jLl9fSD1udWxsKSwoQz1hNSh7fSxDKSkuX19jIT1udWxsJiYoQy5fX2MuX19QPT09TiYmKEMuX19jLl9fUD1MKSxDLl9fYy5fX2U9ITAsQy5fX2M9bnVsbCksQy5fX2s9Qy5fX2smJkMuX19rLm1hcChmdW5jdGlvbihLKXtyZXR1cm4gZDUoSyxMLE4pfSkpLEN9ZnVuY3Rpb24gaTUoQyxMLE4pe3JldHVybiBDJiZOJiYoQy5fX3Y9bnVsbCxDLl9faz1DLl9fayYmQy5fX2subWFwKGZ1bmN0aW9uKEspe3JldHVybiBpNShLLEwsTil9KSxDLl9fYyYmQy5fX2MuX19QPT09TCYmKEMuX19lJiZOLmFwcGVuZENoaWxkKEMuX19lKSxDLl9fYy5fX2U9ITAsQy5fX2MuX19QPU4pKSxDfWZ1bmN0aW9uIGswKCl7dGhpcy5fX3U9MCx0aGlzLm89bnVsbCx0aGlzLl9fYj1udWxsfWZ1bmN0aW9uIHI1KEMpe3ZhciBMPUMuX18mJkMuX18uX19jO3JldHVybiBMJiZMLl9fYSYmTC5fX2EoQyl9ZnVuY3Rpb24gZzIoKXt0aGlzLmk9bnVsbCx0aGlzLmw9bnVsbH12LnVubW91bnQ9ZnVuY3Rpb24oQyl7dmFyIEw9Qy5fX2M7TCYmKEwuX196PSEwKSxMJiZMLl9fUiYmTC5fX1IoKSxMJiYzMiZDLl9fdSYmKEMudHlwZT1udWxsKSxnNSYmZzUoQyl9LChrMC5wcm90b3R5cGU9bmV3IGIxKS5fX2M9ZnVuY3Rpb24oQyxMKXt2YXIgTj1MLl9fYyxLPXRoaXM7Sy5vPT1udWxsJiYoSy5vPVtdKSxLLm8ucHVzaChOKTt2YXIgWj1yNShLLl9fdiksWD0hMSx3PWZ1bmN0aW9uKCl7WHx8Sy5fX3p8fChYPSEwLE4uX19SPW51bGwsWj9aKEopOkooKSl9O04uX19SPXc7dmFyICQ9Ti5fX1A7Ti5fX1A9bnVsbDt2YXIgSj1mdW5jdGlvbigpe2lmKCEtLUsuX191KXtpZihLLnN0YXRlLl9fYSl7dmFyIEc9Sy5zdGF0ZS5fX2E7Sy5fX3YuX19rWzBdPWk1KEcsRy5fX2MuX19QLEcuX19jLl9fTyl9dmFyIHE7Zm9yKEsuc2V0U3RhdGUoe19fYTpLLl9fYj1udWxsfSk7cT1LLm8ucG9wKCk7KXEuX19QPSQscS5mb3JjZVVwZGF0ZSgpfX07Sy5fX3UrK3x8MzImTC5fX3V8fEsuc2V0U3RhdGUoe19fYTpLLl9fYj1LLl9fdi5fX2tbMF19KSxDLnRoZW4odyx3KX0sazAucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5vPVtdfSxrMC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKEMsTCl7aWYodGhpcy5fX2Ipe2lmKHRoaXMuX192Ll9fayl7dmFyIE49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSz10aGlzLl9fdi5fX2tbMF0uX19jO3RoaXMuX192Ll9fa1swXT1kNSh0aGlzLl9fYixOLEsuX19PPUsuX19QKX10aGlzLl9fYj1udWxsfXZhciBaPUwuX19hJiZFMShLMSxudWxsLEMuZmFsbGJhY2spO3JldHVybiBaJiYoWi5fX3UmPS0zMyksW0UxKEsxLG51bGwsTC5fX2E/bnVsbDpDLmNoaWxkcmVuKSxaXX07dmFyIGw1PWZ1bmN0aW9uKEMsTCxOKXtpZigrK05bMV09PT1OWzBdJiZDLmwuZGVsZXRlKEwpLEMucHJvcHMucmV2ZWFsT3JkZXImJihDLnByb3BzLnJldmVhbE9yZGVyWzBdIT09InQifHwhQy5sLnNpemUpKWZvcihOPUMuaTtOOyl7Zm9yKDtOLmxlbmd0aD4zOylOLnBvcCgpKCk7aWYoTlsxXTxOWzBdKWJyZWFrO0MuaT1OPU5bMl19fTsoZzIucHJvdG90eXBlPW5ldyBiMSkuX19hPWZ1bmN0aW9uKEMpe3ZhciBMPXRoaXMsTj1yNShMLl9fdiksSz1MLmwuZ2V0KEMpO3JldHVybiBLWzBdKyssZnVuY3Rpb24oWil7dmFyIFg9ZnVuY3Rpb24oKXtMLnByb3BzLnJldmVhbE9yZGVyPyhLLnB1c2goWiksbDUoTCxDLEspKTpaKCl9O04/TihYKTpYKCl9fSxnMi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKEMpe3RoaXMuaT1udWxsLHRoaXMubD1uZXcgTWFwO3ZhciBMPXkxKEMuY2hpbGRyZW4pO0MucmV2ZWFsT3JkZXImJkMucmV2ZWFsT3JkZXJbMF09PT0iYiImJkwucmV2ZXJzZSgpO2Zvcih2YXIgTj1MLmxlbmd0aDtOLS07KXRoaXMubC5zZXQoTFtOXSx0aGlzLmk9WzEsMCx0aGlzLmldKTtyZXR1cm4gQy5jaGlsZHJlbn0sZzIucHJvdG90eXBlLmNvbXBvbmVudERpZFVwZGF0ZT1nMi5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgQz10aGlzO3RoaXMubC5mb3JFYWNoKGZ1bmN0aW9uKEwsTil7bDUoQyxOLEwpfSl9O3ZhciBPOD10eXBlb2YgU3ltYm9sPCJ1IiYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2MDEwMyx6OD0vXig/OmFjY2VudHxhbGlnbm1lbnR8YXJhYmljfGJhc2VsaW5lfGNhcHxjbGlwKD8hUGF0aFUpfGNvbG9yfGRvbWluYW50fGZpbGx8Zmxvb2R8Zm9udHxnbHlwaCg/IVIpfGhvcml6fGltYWdlKCFTKXxsZXR0ZXJ8bGlnaHRpbmd8bWFya2VyKD8hSHxXfFUpfG92ZXJsaW5lfHBhaW50fHBvaW50ZXJ8c2hhcGV8c3RvcHxzdHJpa2V0aHJvdWdofHN0cm9rZXx0ZXh0KD8hTCl8dHJhbnNmb3JtfHVuZGVybGluZXx1bmljb2RlfHVuaXRzfHZ8dmVjdG9yfHZlcnR8d29yZHx3cml0aW5nfHgoPyFDKSlbQS1aXS8sSTg9L15vbihBbml8VHJhfFRvdXxCZWZvcmVJbnB8Q29tcG8pLyxFOD0vW0EtWjAtOV0vZyxUOD10eXBlb2YgZG9jdW1lbnQ8InUiLFA4PWZ1bmN0aW9uKEMpe3JldHVybih0eXBlb2YgU3ltYm9sPCJ1IiYmdHlwZW9mIFN5bWJvbCgpPT0ic3ltYm9sIj8vZmlsfGNoZXxyYWQvOi9maWx8Y2hlfHJhLykudGVzdChDKX07YjEucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9ITAsWyJjb21wb25lbnRXaWxsTW91bnQiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwiY29tcG9uZW50V2lsbFVwZGF0ZSJdLmZvckVhY2goZnVuY3Rpb24oQyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGIxLnByb3RvdHlwZSxDLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbIlVOU0FGRV8iK0NdfSxzZXQ6ZnVuY3Rpb24oTCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsQyx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkx9KX19KX0pO3ZhciBqNT12LmV2ZW50O3YuZXZlbnQ9ZnVuY3Rpb24oQyl7cmV0dXJuIGo1JiYoQz1qNShDKSksQy5wZXJzaXN0PWZ1bmN0aW9uKCl7fSxDLmlzUHJvcGFnYXRpb25TdG9wcGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FuY2VsQnViYmxlfSxDLmlzRGVmYXVsdFByZXZlbnRlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmF1bHRQcmV2ZW50ZWR9LEMubmF0aXZlRXZlbnQ9Q307dmFyIGM1LHk4PXtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xhc3N9fSxvNT12LnZub2RlO3Yudm5vZGU9ZnVuY3Rpb24oQyl7dHlwZW9mIEMudHlwZT09InN0cmluZyImJmZ1bmN0aW9uKEwpe3Zhcntwcm9wczpOLHR5cGU6S309TCxaPXt9LFg9Sy5pbmRleE9mKCItIik9PS0xO2Zvcih2YXIgdyBpbiBOKXt2YXIgJD1OW3ddO2lmKCEodz09PSJ2YWx1ZSImJigiZGVmYXVsdFZhbHVlImluIE4pJiYkPT1udWxsfHxUOCYmdz09PSJjaGlsZHJlbiImJks9PT0ibm9zY3JpcHQifHx3PT09ImNsYXNzInx8dz09PSJjbGFzc05hbWUiKSl7dmFyIEo9dy50b0xvd2VyQ2FzZSgpO3c9PT0iZGVmYXVsdFZhbHVlIiYmInZhbHVlImluIE4mJk4udmFsdWU9PW51bGw/dz0idmFsdWUiOnc9PT0iZG93bmxvYWQiJiYkPT09ITA/JD0iIjpKPT09InRyYW5zbGF0ZSImJiQ9PT0ibm8iPyQ9ITE6SlswXT09PSJvIiYmSlsxXT09PSJuIj9KPT09Im9uZG91YmxlY2xpY2siP3c9Im9uZGJsY2xpY2siOkohPT0ib25jaGFuZ2UifHxLIT09ImlucHV0IiYmSyE9PSJ0ZXh0YXJlYSJ8fFA4KE4udHlwZSk/Sj09PSJvbmZvY3VzIj93PSJvbmZvY3VzaW4iOko9PT0ib25ibHVyIj93PSJvbmZvY3Vzb3V0IjpJOC50ZXN0KHcpJiYodz1KKTpKPXc9Im9uaW5wdXQiOlgmJno4LnRlc3Qodyk/dz13LnJlcGxhY2UoRTgsIi0kJiIpLnRvTG93ZXJDYXNlKCk6JD09PW51bGwmJigkPXZvaWQgMCksSj09PSJvbmlucHV0IiYmWlt3PUpdJiYodz0ib25pbnB1dENhcHR1cmUiKSxaW3ddPSR9fUs9PSJzZWxlY3QiJiYoWi5tdWx0aXBsZSYmQXJyYXkuaXNBcnJheShaLnZhbHVlKSYmKFoudmFsdWU9eTEoTi5jaGlsZHJlbikuZm9yRWFjaChmdW5jdGlvbihHKXtHLnByb3BzLnNlbGVjdGVkPVoudmFsdWUuaW5kZXhPZihHLnByb3BzLnZhbHVlKSE9LTF9KSksWi5kZWZhdWx0VmFsdWUhPW51bGwmJihaLnZhbHVlPXkxKE4uY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24oRyl7Ry5wcm9wcy5zZWxlY3RlZD1aLm11bHRpcGxlP1ouZGVmYXVsdFZhbHVlLmluZGV4T2YoRy5wcm9wcy52YWx1ZSkhPS0xOlouZGVmYXVsdFZhbHVlPT1HLnByb3BzLnZhbHVlfSkpKSxOLmNsYXNzJiYhTi5jbGFzc05hbWU/KFouY2xhc3M9Ti5jbGFzcyxPYmplY3QuZGVmaW5lUHJvcGVydHkoWiwiY2xhc3NOYW1lIix5OCkpOk4uY2xhc3NOYW1lJiYoWi5jbGFzcz1aLmNsYXNzTmFtZT1OLmNsYXNzTmFtZSksTC5wcm9wcz1afShDKSxDLiQkdHlwZW9mPU84LG81JiZvNShDKX07dmFyIGY1PXYuX19yO3YuX19yPWZ1bmN0aW9uKEMpe2Y1JiZmNShDKSxjNT1DLl9fY307dmFyIHU1PXYuZGlmZmVkO3YuZGlmZmVkPWZ1bmN0aW9uKEMpe3U1JiZ1NShDKTt2YXJ7cHJvcHM6TCxfX2U6Tn09QztOIT1udWxsJiZDLnR5cGU9PT0idGV4dGFyZWEiJiYidmFsdWUiaW4gTCYmTC52YWx1ZSE9PU4udmFsdWUmJihOLnZhbHVlPUwudmFsdWU9PW51bGw/IiI6TC52YWx1ZSksYzU9bnVsbH07dmFyIGcxPTM7ZnVuY3Rpb24gQTAoQyl7cmV0dXJuIEM9PT0ibGFuZHNjYXBlX2xlZnQifHxDPT09ImxhbmRzY2FwZV9yaWdodCJ9ZnVuY3Rpb24gVjIoQyl7cmV0dXJuISFDJiYoQTAoQy5vcmllbnRhdGlvbil8fEMud2lkdGg+Qy5oZWlnaHQpfWZ1bmN0aW9uIG4xKEMpe2lmKCFDfHxDLndpZHRoPD0wfHxDLmhlaWdodDw9MClyZXR1cm4gbnVsbDtsZXQgTD1BMChDLm9yaWVudGF0aW9uKXx8Qy53aWR0aD5DLmhlaWdodCxOPUw/TWF0aC5tYXgoQy53aWR0aCxDLmhlaWdodCk6TWF0aC5taW4oQy53aWR0aCxDLmhlaWdodCksSz1MP01hdGgubWluKEMud2lkdGgsQy5oZWlnaHQpOk1hdGgubWF4KEMud2lkdGgsQy5oZWlnaHQpO2lmKE49PT1DLndpZHRoJiZLPT09Qy5oZWlnaHQpcmV0dXJuIEM7cmV0dXJuey4uLkMsd2lkdGg6TixoZWlnaHQ6S319ZnVuY3Rpb24gRDIoQyl7bGV0IEw9bjEoQyksTj10NShDPy5vcmllbnRhdGlvbiksSz1NYXRoLmFicyhOKT09PTkwLFo9ISFDJiZDLndpZHRoPkMuaGVpZ2h0LFg9Tj09PTE4MHx8SyYmIVo7cmV0dXJue2Rpc3BsYXlDb25maWc6TCxyb3RhdGlvbkRlZ3JlZXM6WD9OOjAsbmVlZHNDc3NSb3RhdGlvbjpYLGlucHV0T3JpZW50YXRpb246WD9DPy5vcmllbnRhdGlvbjp2b2lkIDB9fWZ1bmN0aW9uIHQ1KEMpe3N3aXRjaChDKXtjYXNlImxhbmRzY2FwZV9sZWZ0IjpyZXR1cm4gOTA7Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnJldHVybi05MDtjYXNlInBvcnRyYWl0X3Vwc2lkZV9kb3duIjpyZXR1cm4gMTgwO2RlZmF1bHQ6cmV0dXJuIDB9fWZ1bmN0aW9uIEIyKEMsTCxOKXtzd2l0Y2goQyl7Y2FzZSJsYW5kc2NhcGVfbGVmdCI6cmV0dXJue3g6Tix5OjEtTH07Y2FzZSJsYW5kc2NhcGVfcmlnaHQiOnJldHVybnt4OjEtTix5Okx9O2Nhc2UicG9ydHJhaXRfdXBzaWRlX2Rvd24iOnJldHVybnt4OjEtTCx5OjEtTn07ZGVmYXVsdDpyZXR1cm57eDpMLHk6Tn19fWZ1bmN0aW9uIE0wKEMsTCl7c3dpdGNoKEMpe2Nhc2UibGFuZHNjYXBlX2xlZnQiOnN3aXRjaChMKXtjYXNlIDE6cmV0dXJuIDM7Y2FzZSA0OnJldHVybiAyO2Nhc2UgMjpyZXR1cm4gMTtjYXNlIDM6cmV0dXJuIDQ7ZGVmYXVsdDpyZXR1cm4gTH1jYXNlImxhbmRzY2FwZV9yaWdodCI6c3dpdGNoKEwpe2Nhc2UgMTpyZXR1cm4gMjtjYXNlIDQ6cmV0dXJuIDM7Y2FzZSAyOnJldHVybiA0O2Nhc2UgMzpyZXR1cm4gMTtkZWZhdWx0OnJldHVybiBMfWNhc2UicG9ydHJhaXRfdXBzaWRlX2Rvd24iOnN3aXRjaChMKXtjYXNlIDE6cmV0dXJuIDQ7Y2FzZSA0OnJldHVybiAxO2Nhc2UgMjpyZXR1cm4gMztjYXNlIDM6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gTH1kZWZhdWx0OnJldHVybiBMfX12YXIgaDg9MDtmdW5jdGlvbiBfKEMsTCxOLEssWixYKXtMfHwoTD17fSk7dmFyIHcsJCxKPUw7aWYoInJlZiJpbiBKKWZvcigkIGluIEo9e30sTCkkPT0icmVmIj93PUxbJF06SlskXT1MWyRdO3ZhciBHPXt0eXBlOkMscHJvcHM6SixrZXk6TixyZWY6dyxfX2s6bnVsbCxfXzpudWxsLF9fYjowLF9fZTpudWxsLF9fYzpudWxsLGNvbnN0cnVjdG9yOnZvaWQgMCxfX3Y6LS1oOCxfX2k6LTEsX191OjAsX19zb3VyY2U6WixfX3NlbGY6WH07aWYodHlwZW9mIEM9PSJmdW5jdGlvbiImJih3PUMuZGVmYXVsdFByb3BzKSlmb3IoJCBpbiB3KUpbJF09PT12b2lkIDAmJihKWyRdPXdbJF0pO3JldHVybiB2LnZub2RlJiZ2LnZub2RlKEcpLEd9dmFyIHM1PWB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnJTNFJTNDY2lyY2xlIGN4PScxMicgY3k9JzEyJyByPSc5JyBmaWxsPSdyZ2JhKDI1NSwyNTUsMjU1LDAuNDUpJyBzdHJva2U9J3JnYmEoMCwwLDAsMC41NSknIHN0cm9rZS13aWR0aD0nMS4yNScgZmlsdGVyPSdkcm9wLXNoYWRvdygwIDFweCAycHggcmdiYSgwLDAsMCwwLjQ1KSknLyUzRSUzQy9zdmclM0UiKSAxMiAxMiwgcG9pbnRlcmAsUzg9MyxtOD00LHY4PTU7ZnVuY3Rpb24gbDIoe3VybDpDLHdzVXJsOkwsc3R5bGU6TixpbWFnZVN0eWxlOkssY2xhc3NOYW1lOlosb25Ib21lUHJlc3M6WCxvblN0cmVhbVRvdWNoOncsb25TdHJlYW1NdWx0aVRvdWNoOiQsb25TdHJlYW1CdXR0b246SixzdWJzY3JpYmVGcmFtZTpHLHN0cmVhbUZyYW1lOnEsc3RyZWFtQ29uZmlnOlksb25TY3JlZW5Db25maWdDaGFuZ2U6SCxoaWRlQ29udHJvbHM6USxvblN0cmVhbWluZ0NoYW5nZTprLGNvbm5lY3Rpb25RdWFsaXR5OmJ9KXtsZXQgVj0hIXcsRD1SKG51bGwpLEE9UihudWxsKSxJPVIobnVsbCksaD1SKG51bGwpLFtnLFVdPU0oITEpLFt6LHldPU0obnVsbCksW3gsaV09TShudWxsKSxhPVIobnVsbCkscTE9UihIKTtxMS5jdXJyZW50PUg7bGV0IGQ9UihudWxsKSxbTDEsVF09TShudWxsKTtFKCgpPT57bGV0IEY9ZC5jdXJyZW50O2lmKCFGfHx0eXBlb2YgUmVzaXplT2JzZXJ2ZXI+InUiKXJldHVybjtsZXQgQj1uZXcgUmVzaXplT2JzZXJ2ZXIoKE8pPT57bGV0IFM9T1swXT8uY29udGVudFJlY3Q7aWYoUylUKHt3aWR0aDpTLndpZHRoLGhlaWdodDpTLmhlaWdodH0pfSk7cmV0dXJuIEIub2JzZXJ2ZShGKSwoKT0+Qi5kaXNjb25uZWN0KCl9LFtdKTtsZXRbbCxlXT1NKDApLHM9UigwKSxbSDEsJDFdPU0oITEpLEMxPVIobnVsbCk7RSgoKT0+e2lmKGI9PT0icG9vciIpe2lmKCQxKCEwKSxDMS5jdXJyZW50KWNsZWFyVGltZW91dChDMS5jdXJyZW50KTtDMS5jdXJyZW50PXNldFRpbWVvdXQoKCk9PnskMSghMSksQzEuY3VycmVudD1udWxsfSwzMDAwKX1lbHNlIGlmKCQxKCExKSxDMS5jdXJyZW50KWNsZWFyVGltZW91dChDMS5jdXJyZW50KSxDMS5jdXJyZW50PW51bGw7cmV0dXJuKCk9PntpZihDMS5jdXJyZW50KWNsZWFyVGltZW91dChDMS5jdXJyZW50KX19LFtiXSk7bGV0IGM9YCR7Q30vc3RyZWFtLm1qcGVnYDtFKCgpPT57YS5jdXJyZW50PW51bGwsaShudWxsKX0sW0NdKTtsZXQgcD1QKChGKT0+e2lmKCFGfHxGLndpZHRoPD0wfHxGLmhlaWdodDw9MClyZXR1cm47bGV0IEI9YS5jdXJyZW50LE89Ri5vcmllbnRhdGlvbj09PXZvaWQgMCYmQj8ub3JpZW50YXRpb24/ey4uLkYsb3JpZW50YXRpb246Qi5vcmllbnRhdGlvbn06RjtpZihCJiZCLndpZHRoPT09Ty53aWR0aCYmQi5oZWlnaHQ9PT1PLmhlaWdodCYmQi5vcmllbnRhdGlvbj09PU8ub3JpZW50YXRpb24pcmV0dXJuO2EuY3VycmVudD1PLGkoTykscTEuY3VycmVudD8uKE8pfSxbXSkscj1SKGspO3IuY3VycmVudD1rLEUoKCk9PntyLmN1cnJlbnQ/LihnKX0sW2ddKSxFKCgpPT57aWYoViYmWSlwKFkpfSxbVixZLHBdKTtsZXQgZj1SKCExKTtmLmN1cnJlbnQ9ZztsZXQgbj1SKG51bGwpO0UoKCk9PntpZighVnx8IUcpcmV0dXJuO2xldCBCPXNldFRpbWVvdXQoKCk9PntpZighZi5jdXJyZW50KXkoIlN0cmVhbSBpcyBub3QgcHJvZHVjaW5nIGZyYW1lcy4gVGhlIHNpbXVsYXRvciBtYXkgaGF2ZSBzdG9wcGVkIOKAlCB0cnkgcmVjb25uZWN0aW5nLiIpfSw2MDAwKSxPPUcoKFMpPT57cy5jdXJyZW50KyssbDEuY3VycmVudD1EYXRlLm5vdygpO2xldCBqPUEuY3VycmVudDtpZihqKXtpZihuLmN1cnJlbnQpVVJMLnJldm9rZU9iamVjdFVSTChuLmN1cnJlbnQpO24uY3VycmVudD1TLGouc3JjPVN9aWYoIWYuY3VycmVudCljbGVhclRpbWVvdXQoQiksVSghMCkseShudWxsKX0pO3JldHVybigpPT57aWYoY2xlYXJUaW1lb3V0KEIpLE8/LigpLG4uY3VycmVudClVUkwucmV2b2tlT2JqZWN0VVJMKG4uY3VycmVudCksbi5jdXJyZW50PW51bGx9fSxbVixHXSk7bGV0IFoxPVAoKEYpPT57bGV0IEI9RDIoYS5jdXJyZW50KS5pbnB1dE9yaWVudGF0aW9uLE89QjIoQixGLngsRi55KSxTPUYuZWRnZT09PXZvaWQgMD92b2lkIDA6TTAoQixGLmVkZ2UpLGo9Uz09PXZvaWQgMD97dHlwZTpGLnR5cGUsLi4uT306e3R5cGU6Ri50eXBlLC4uLk8sZWRnZTpTfTtpZihWKXt3Py4oaik7cmV0dXJufWxldCBOMT1oLmN1cnJlbnQ7aWYoIU4xfHxOMS5yZWFkeVN0YXRlIT09V2ViU29ja2V0Lk9QRU4pcmV0dXJuO2xldCBHMT1uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoaikpLEoxPW5ldyBVaW50OEFycmF5KDErRzEubGVuZ3RoKTtKMVswXT1TOCxKMS5zZXQoRzEsMSksTjEuc2VuZChKMSl9LFtWLHddKSxBMT1QKChGKT0+e2lmKFYpe0o/LihGKTtyZXR1cm59bGV0IEI9aC5jdXJyZW50O2lmKCFCfHxCLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTilyZXR1cm47bGV0IE89bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHtidXR0b246Rn0pKSxTPW5ldyBVaW50OEFycmF5KDErTy5sZW5ndGgpO1NbMF09bTgsUy5zZXQoTywxKSxCLnNlbmQoUyl9LFtWLEpdKSxRMT1QKChGKT0+e2xldCBCPUQyKGEuY3VycmVudCkuaW5wdXRPcmllbnRhdGlvbixPPUIyKEIsRi54MSxGLnkxKSxTPUIyKEIsRi54MixGLnkyKSxqPXt0eXBlOkYudHlwZSx4MTpPLngseTE6Ty55LHgyOlMueCx5MjpTLnl9O2lmKFYpeyQ/LihqKTtyZXR1cm59bGV0IE4xPWguY3VycmVudDtpZighTjF8fE4xLnJlYWR5U3RhdGUhPT1XZWJTb2NrZXQuT1BFTilyZXR1cm47bGV0IEcxPW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShKU09OLnN0cmluZ2lmeShqKSksSjE9bmV3IFVpbnQ4QXJyYXkoMStHMS5sZW5ndGgpO0oxWzBdPXY4LEoxLnNldChHMSwxKSxOMS5zZW5kKEoxKX0sW1YsJF0pO0UoKCk9PntpZihWKXJldHVybjtsZXQgRj1uZXcgQWJvcnRDb250cm9sbGVyLEI9KCk9PntmZXRjaChgJHtDfS9jb25maWdgLHtzaWduYWw6Ri5zaWduYWx9KS50aGVuKCh6Mik9PnoyLmpzb24oKSkudGhlbigoejIpPT57cCh6Mil9KS5jYXRjaCgoKT0+e30pfTtCKCk7bGV0IE89c2V0SW50ZXJ2YWwoQiwxMDAwKSxTPUw/P0MucmVwbGFjZSgvXmh0dHAvLCJ3cyIpKyIvd3MiLGo9bmV3IFdlYlNvY2tldChTKTtqLmJpbmFyeVR5cGU9ImFycmF5YnVmZmVyIixoLmN1cnJlbnQ9aixqLm9ub3Blbj0oKT0+e1UoITApLHkobnVsbCl9LGoub25jbG9zZT0oKT0+e1UoITEpfSxqLm9uZXJyb3I9KCk9Pnt5KCJXZWJTb2NrZXQgY29ubmVjdGlvbiBmYWlsZWQiKSxVKCExKX07bGV0IE4xPW5ldyBBYm9ydENvbnRyb2xsZXIsRzE9c2V0SW50ZXJ2YWwoKCk9PntlKHMuY3VycmVudCkscy5jdXJyZW50PTB9LDEwMDApLEoxPSExLGkwPXNldFRpbWVvdXQoKCk9PntpZighSjEpeSgiU3RyZWFtIGlzIG5vdCBwcm9kdWNpbmcgZnJhbWVzLiBUaGUgc2ltdWxhdG9yIG1heSBoYXZlIHN0b3BwZWQg4oCUIHRyeSByZWNvbm5lY3RpbmcuIil9LDYwMDApO3JldHVybihhc3luYygpPT57dHJ5e2xldCByMD0oYXdhaXQgZmV0Y2goYyx7c2lnbmFsOk4xLnNpZ25hbH0pKS5ib2R5Py5nZXRSZWFkZXIoKTtpZighcjApcmV0dXJuO2xldCBLMD1uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoIi0tZnJhbWUiKTt3aGlsZSghMCl7bGV0e2RvbmU6bjMsdmFsdWU6XzB9PWF3YWl0IHIwLnJlYWQoKTtpZihuMylicmVhaztpZihfMClmb3IobGV0IFowPTA7WjA8PV8wLmxlbmd0aC1LMC5sZW5ndGg7WjArKyl7bGV0IGMwPSEwO2ZvcihsZXQgSTI9MDtJMjxLMC5sZW5ndGg7STIrKylpZihfMFtaMCtJMl0hPT1LMFtJMl0pe2MwPSExO2JyZWFrfWlmKGMwKXtpZihzLmN1cnJlbnQrKywhSjEpSjE9ITAsY2xlYXJUaW1lb3V0KGkwKX19fX1jYXRjaHt9fSkoKSwoKT0+e04xLmFib3J0KCksRi5hYm9ydCgpLGNsZWFySW50ZXJ2YWwoTyksY2xlYXJJbnRlcnZhbChHMSksY2xlYXJUaW1lb3V0KGkwKSxqLmNsb3NlKCksaC5jdXJyZW50PW51bGx9fSxbQyxjLFYscCxMXSk7bGV0IGwxPVIoMCk7RSgoKT0+e2lmKCFWKXJldHVybjtsZXQgRj0yMDAwLEI9KCk9PntsZXQgaj1sMS5jdXJyZW50O2lmKCFqfHwhZi5jdXJyZW50KXJldHVybjtpZihEYXRlLm5vdygpLWo+RilVKCExKX0sTz1zZXRJbnRlcnZhbCgoKT0+e2Uocy5jdXJyZW50KSxzLmN1cnJlbnQ9MCxCKCl9LDEwMDApLFM9KCk9PntpZighZG9jdW1lbnQuaGlkZGVuKUIoKX07cmV0dXJuIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLFMpLCgpPT57Y2xlYXJJbnRlcnZhbChPKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixTKX19LFtWXSk7bGV0IFMxPVAoKCk9PntyZXR1cm4gVj9BLmN1cnJlbnQ6RC5jdXJyZW50fSxbVl0pLEYxPVAoKCk9PntyZXR1cm4gSS5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKT8/UzEoKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk/P251bGx9LFtTMV0pLG0xPVAoKEYsQik9PntsZXQgTz1GMSgpO2lmKCFPKXJldHVybjtsZXQgUz0oQi5jbGllbnRYLU8ubGVmdCkvTy53aWR0aCxqPShCLmNsaWVudFktTy50b3ApL08uaGVpZ2h0O1oxKHt0eXBlOkYseDpTLHk6an0pfSxbRjEsWjFdKSxWMT1SKCExKSxrMT1SKCExKSwkMj1SKCExKSxHMj1SKHtkeDowLGR5OjB9KSxUMT1SKCExKSxbZDEsTTJdPU0oITEpLGkxPVIoe3g6MC41LHk6MC41fSksW3oxLEIxXT1NKG51bGwpO0UoKCk9PntsZXQgRj0oTyk9PntpZihPLmtleT09PSJBbHQiKU0yKCEwKX0sQj0oTyk9PntpZihPLmtleT09PSJBbHQiKXtpZihNMighMSksIWsxLmN1cnJlbnQpQjEobnVsbCl9fTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLEYpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsQiksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsRiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIixCKX19LFtdKSxFKCgpPT57aWYoZDEmJiFrMS5jdXJyZW50KXtsZXQgRj1pMS5jdXJyZW50O0IxKHt4MTpGLngseTE6Ri55LHgyOjEtRi54LHkyOjEtRi55fSl9ZWxzZSBpZighZDEmJiFrMS5jdXJyZW50KUIxKG51bGwpfSxbZDFdKTtsZXQgdjE9UihudWxsKSxKMj1SKCExKSxXMT1SKDApLFkyPVAoKEYsQik9PntKMi5jdXJyZW50PSEwO2xldCBPPXYxLmN1cnJlbnQ7aWYoTyljYW5jZWxBbmltYXRpb25GcmFtZShXMS5jdXJyZW50KSxXMS5jdXJyZW50PXJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e08uc3R5bGUubGVmdD1gJHtGKjEwMH0lYCxPLnN0eWxlLnRvcD1gJHtCKjEwMH0lYCxPLnN0eWxlLmRpc3BsYXk9ImJsb2NrIn0pfSxbXSksVTI9UCgoRixCKT0+e2lmKCFKMi5jdXJyZW50KXJldHVybjtsZXQgTz12MS5jdXJyZW50O2lmKE8pY2FuY2VsQW5pbWF0aW9uRnJhbWUoVzEuY3VycmVudCksVzEuY3VycmVudD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntPLnN0eWxlLmxlZnQ9YCR7RioxMDB9JWAsTy5zdHlsZS50b3A9YCR7QioxMDB9JWB9KX0sW10pLHQ9UCgoKT0+e0oyLmN1cnJlbnQ9ITE7bGV0IEY9djEuY3VycmVudDtpZihGKWNhbmNlbEFuaW1hdGlvbkZyYW1lKFcxLmN1cnJlbnQpLEYuc3R5bGUuZGlzcGxheT0ibm9uZSJ9LFtdKSxqMT1SKDApLG8xPVIobnVsbCksTzI9UCgoKT0+e2xldCBGPURhdGUubm93KCksQj1GLWoxLmN1cnJlbnQ7aWYoajEuY3VycmVudD1GLEI8MzAwKXtpZihvMS5jdXJyZW50KWNsZWFyVGltZW91dChvMS5jdXJyZW50KSxvMS5jdXJyZW50PW51bGw7aWYoWClYKCk7ZWxzZSBBMSgiYXBwX3N3aXRjaGVyIil9ZWxzZSBvMS5jdXJyZW50PXNldFRpbWVvdXQoKCk9PntpZihYKVgoKTtlbHNlIEExKCJob21lIik7bzEuY3VycmVudD1udWxsfSwzMDApfSxbQTEsWF0pLHEyPUQyKHgpLFIxPXEyLmRpc3BsYXlDb25maWcsVz0oKCk9PntpZighUjF8fCFMMSlyZXR1cm4gbnVsbDtpZihMMS53aWR0aD09PTB8fEwxLmhlaWdodD09PTApcmV0dXJuIG51bGw7bGV0IEY9TWF0aC5taW4oTDEud2lkdGgvUjEud2lkdGgsTDEuaGVpZ2h0L1IxLmhlaWdodCk7cmV0dXJue3dpZHRoOlIxLndpZHRoKkYsaGVpZ2h0OlIxLmhlaWdodCpGfX0pKCksbT1xMi5yb3RhdGlvbkRlZ3JlZXMsbz1xMi5uZWVkc0Nzc1JvdGF0aW9uJiZNYXRoLmFicyhtKT09PTkwLHU9SyxYMT17cG9zaXRpb246ImFic29sdXRlIix0b3A6IjUwJSIsbGVmdDoiNTAlIix3aWR0aDpvJiZXP2Ake1cuaGVpZ2h0fXB4YDoiMTAwJSIsaGVpZ2h0Om8mJlc/YCR7Vy53aWR0aH1weGA6IjEwMCUiLHRyYW5zZm9ybTpgdHJhbnNsYXRlKC01MCUsIC01MCUpJHttPT09MD8iIjpgIHJvdGF0ZSgke219ZGVnKWB9YCx0cmFuc2Zvcm1PcmlnaW46ImNlbnRlciBjZW50ZXIiLGN1cnNvcjpzNSxkaXNwbGF5OiJibG9jayIsdXNlclNlbGVjdDoibm9uZSIsV2Via2l0VXNlclNlbGVjdDoibm9uZSIsdG91Y2hBY3Rpb246Im5vbmUiLC4uLkssLi4ubT09PTA/e306e2JvcmRlclJhZGl1czowLGNvcm5lclNoYXBlOnZvaWQgMH19O3JldHVybiBfKCJkaXYiLHtzdHlsZTp7ZGlzcGxheToiZmxleCIsZmxleERpcmVjdGlvbjoiY29sdW1uIixmbGV4OjEsLi4uUT97fTp7Ym9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEyKSJ9LG92ZXJmbG93OiJoaWRkZW4iLG1pbldpZHRoOjAsbWluSGVpZ2h0OjAsLi4uTn0sY2xhc3NOYW1lOlosY2hpbGRyZW46W18oImRpdiIse3JlZjpkLHN0eWxlOntwb3NpdGlvbjoicmVsYXRpdmUiLGZsZXg6MSxtaW5IZWlnaHQ6MCxtaW5XaWR0aDowLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciJ9LGNoaWxkcmVuOl8oImRpdiIse3JlZjpJLHN0eWxlOntwb3NpdGlvbjoicmVsYXRpdmUiLHdpZHRoOlc/YCR7Vy53aWR0aH1weGA6IjEwMCUiLGhlaWdodDpXP2Ake1cuaGVpZ2h0fXB4YDoiMTAwJSIsb3ZlcmZsb3c6ImhpZGRlbiIsYm9yZGVyUmFkaXVzOnU/LmJvcmRlclJhZGl1cyxjb3JuZXJTaGFwZTp1Py5jb3JuZXJTaGFwZX0sY2hpbGRyZW46W18oImltZyIse3JlZjpELHNyYzpWP3ZvaWQgMDpjLGRyYWdnYWJsZTohMSxvbkxvYWQ6KEYpPT57bGV0IEI9Ri5jdXJyZW50VGFyZ2V0O2lmKEIubmF0dXJhbFdpZHRoPjAmJkIubmF0dXJhbEhlaWdodD4wKXAoe3dpZHRoOkIubmF0dXJhbFdpZHRoLGhlaWdodDpCLm5hdHVyYWxIZWlnaHR9KX0sc3R5bGU6Vj97ZGlzcGxheToibm9uZSJ9OlgxfSksViYmXygiaW1nIix7cmVmOkEsZHJhZ2dhYmxlOiExLG9uTG9hZDooRik9PntsZXQgQj1GLmN1cnJlbnRUYXJnZXQ7aWYoQi5uYXR1cmFsV2lkdGg+MCYmQi5uYXR1cmFsSGVpZ2h0PjApcCh7d2lkdGg6Qi5uYXR1cmFsV2lkdGgsaGVpZ2h0OkIubmF0dXJhbEhlaWdodH0pfSxzdHlsZTpYMX0pLF8oImRpdiIse3N0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLGluc2V0OjAsY3Vyc29yOnM1LHRvdWNoQWN0aW9uOiJub25lIn0sb25Nb3VzZURvd246KEYpPT57Ri5wcmV2ZW50RGVmYXVsdCgpO2xldCBCPUYxKCk7aWYoIUIpcmV0dXJuO2xldCBPPShGLmNsaWVudFgtQi5sZWZ0KS9CLndpZHRoLFM9KEYuY2xpZW50WS1CLnRvcCkvQi5oZWlnaHQ7aWYoRi5hbHRLZXkpe2sxLmN1cnJlbnQ9ITAsJDIuY3VycmVudD1GLnNoaWZ0S2V5O2xldCBqPXt4MTpPLHkxOlMseDI6MS1PLHkyOjEtU307RzIuY3VycmVudD17ZHg6MS1PLU8sZHk6MS1TLVN9LEIxKGopLFExKHt0eXBlOiJiZWdpbiIsLi4uan0pO3JldHVybn1pZihZMihPLFMpLFM+MC44OClWMS5jdXJyZW50PSEwLFoxKHt0eXBlOiJiZWdpbiIseDpPLHk6UyxlZGdlOmcxfSk7ZWxzZSBWMS5jdXJyZW50PSExLG0xKCJiZWdpbiIsRil9LG9uTW91c2VNb3ZlOihGKT0+e2xldCBCPUYxKCk7aWYoIUIpcmV0dXJuO2xldCBPPShGLmNsaWVudFgtQi5sZWZ0KS9CLndpZHRoLFM9KEYuY2xpZW50WS1CLnRvcCkvQi5oZWlnaHQ7aWYoaTEuY3VycmVudD17eDpPLHk6U30sRi5idXR0b25zPT09MCl7aWYoRi5hbHRLZXkpQjEoe3gxOk8seTE6Uyx4MjoxLU8seTI6MS1TfSk7cmV0dXJufWlmKGsxLmN1cnJlbnQpe2xldCBqO2lmKCQyLmN1cnJlbnQpe2xldCBOMT1HMi5jdXJyZW50O2o9e3gxOk8seTE6Uyx4MjpPK04xLmR4LHkyOlMrTjEuZHl9fWVsc2Ugaj17eDE6Tyx5MTpTLHgyOjEtTyx5MjoxLVN9O0IxKGopLFExKHt0eXBlOiJtb3ZlIiwuLi5qfSk7cmV0dXJufWlmKFUyKE8sUyksVjEuY3VycmVudClaMSh7dHlwZToibW92ZSIseDpPLHk6UyxlZGdlOmcxfSk7ZWxzZSBtMSgibW92ZSIsRil9LG9uTW91c2VVcDooRik9PntpZihrMS5jdXJyZW50KXtsZXQgQj1GMSgpO2lmKEIpe2xldCBPPShGLmNsaWVudFgtQi5sZWZ0KS9CLndpZHRoLFM9KEYuY2xpZW50WS1CLnRvcCkvQi5oZWlnaHQ7aWYoJDIuY3VycmVudCl7bGV0IGo9RzIuY3VycmVudDtRMSh7dHlwZToiZW5kIix4MTpPLHkxOlMseDI6TytqLmR4LHkyOlMrai5keX0pfWVsc2UgUTEoe3R5cGU6ImVuZCIseDE6Tyx5MTpTLHgyOjEtTyx5MjoxLVN9KX1pZihrMS5jdXJyZW50PSExLCFGLmFsdEtleSlCMShudWxsKTtyZXR1cm59aWYodCgpLFYxLmN1cnJlbnQpe2xldCBCPUYxKCk7aWYoQil7bGV0IE89KEYuY2xpZW50WC1CLmxlZnQpL0Iud2lkdGgsUz0oRi5jbGllbnRZLUIudG9wKS9CLmhlaWdodDtaMSh7dHlwZToiZW5kIix4Ok8seTpTLGVkZ2U6ZzF9KX1WMS5jdXJyZW50PSExO3JldHVybn1tMSgiZW5kIixGKX0sb25Nb3VzZUxlYXZlOihGKT0+e2lmKGsxLmN1cnJlbnQpe2lmKHoxKVExKHt0eXBlOiJlbmQiLC4uLnoxfSk7azEuY3VycmVudD0hMSxCMShudWxsKTtyZXR1cm59aWYodCgpLFYxLmN1cnJlbnQpe2xldCBCPUYxKCk7aWYoQil7bGV0IE89KEYuY2xpZW50WC1CLmxlZnQpL0Iud2lkdGgsUz0oRi5jbGllbnRZLUIudG9wKS9CLmhlaWdodDtaMSh7dHlwZToiZW5kIix4Ok8seTpTLGVkZ2U6ZzF9KX1WMS5jdXJyZW50PSExO3JldHVybn1pZihGLmJ1dHRvbnM+MCltMSgiZW5kIixGKTtCMShudWxsKX0sb25Ub3VjaFN0YXJ0OihGKT0+e0YucHJldmVudERlZmF1bHQoKTtsZXQgQj1GMSgpO2lmKCFCKXJldHVybjtpZihGLnRvdWNoZXMubGVuZ3RoPj0yKXt0KCk7bGV0IE4xPUYudG91Y2hlc1swXSxHMT1GLnRvdWNoZXNbMV0sSjE9e3gxOihOMS5jbGllbnRYLUIubGVmdCkvQi53aWR0aCx5MTooTjEuY2xpZW50WS1CLnRvcCkvQi5oZWlnaHQseDI6KEcxLmNsaWVudFgtQi5sZWZ0KS9CLndpZHRoLHkyOihHMS5jbGllbnRZLUIudG9wKS9CLmhlaWdodH07aWYoIVQxLmN1cnJlbnQmJiFWMS5jdXJyZW50KVoxKHt0eXBlOiJlbmQiLHg6SjEueDEseTpKMS55MX0pO1QxLmN1cnJlbnQ9ITAsazEuY3VycmVudD0hMCxWMS5jdXJyZW50PSExLEIxKEoxKSxRMSh7dHlwZToiYmVnaW4iLC4uLkoxfSk7cmV0dXJufWxldCBPPUYudG91Y2hlc1swXTtpZighTylyZXR1cm47bGV0IFM9KE8uY2xpZW50WC1CLmxlZnQpL0Iud2lkdGgsaj0oTy5jbGllbnRZLUIudG9wKS9CLmhlaWdodDtpZihZMihTLGopLGo+MC44OClWMS5jdXJyZW50PSEwLFoxKHt0eXBlOiJiZWdpbiIseDpTLHk6aixlZGdlOmcxfSk7ZWxzZSBWMS5jdXJyZW50PSExLFoxKHt0eXBlOiJiZWdpbiIseDpTLHk6an0pfSxvblRvdWNoTW92ZTooRik9PntGLnByZXZlbnREZWZhdWx0KCk7bGV0IEI9RjEoKTtpZighQilyZXR1cm47aWYoVDEuY3VycmVudCYmRi50b3VjaGVzLmxlbmd0aD49Mil7bGV0IE4xPUYudG91Y2hlc1swXSxHMT1GLnRvdWNoZXNbMV0sSjE9e3gxOihOMS5jbGllbnRYLUIubGVmdCkvQi53aWR0aCx5MTooTjEuY2xpZW50WS1CLnRvcCkvQi5oZWlnaHQseDI6KEcxLmNsaWVudFgtQi5sZWZ0KS9CLndpZHRoLHkyOihHMS5jbGllbnRZLUIudG9wKS9CLmhlaWdodH07QjEoSjEpLFExKHt0eXBlOiJtb3ZlIiwuLi5KMX0pO3JldHVybn1sZXQgTz1GLnRvdWNoZXNbMF07aWYoIU8pcmV0dXJuO2xldCBTPShPLmNsaWVudFgtQi5sZWZ0KS9CLndpZHRoLGo9KE8uY2xpZW50WS1CLnRvcCkvQi5oZWlnaHQ7aWYoVTIoUyxqKSxWMS5jdXJyZW50KVoxKHt0eXBlOiJtb3ZlIix4OlMseTpqLGVkZ2U6ZzF9KTtlbHNlIFoxKHt0eXBlOiJtb3ZlIix4OlMseTpqfSl9LG9uVG91Y2hFbmQ6KEYpPT57Ri5wcmV2ZW50RGVmYXVsdCgpO2xldCBCPUYxKCk7aWYoIUIpcmV0dXJuO2lmKFQxLmN1cnJlbnQpe2lmKEYudG91Y2hlcy5sZW5ndGg8Mil7bGV0IE4xPUYuY2hhbmdlZFRvdWNoZXNbMF0sRzE9ejE7aWYoTjEmJkcxKVExKHt0eXBlOiJlbmQiLHgxOihOMS5jbGllbnRYLUIubGVmdCkvQi53aWR0aCx5MTooTjEuY2xpZW50WS1CLnRvcCkvQi5oZWlnaHQseDI6RzEueDIseTI6RzEueTJ9KTtlbHNlIGlmKEcxKVExKHt0eXBlOiJlbmQiLC4uLkcxfSk7VDEuY3VycmVudD0hMSxrMS5jdXJyZW50PSExLEIxKG51bGwpfXJldHVybn1sZXQgTz1GLmNoYW5nZWRUb3VjaGVzWzBdO2lmKCFPKXJldHVybjtsZXQgUz0oTy5jbGllbnRYLUIubGVmdCkvQi53aWR0aCxqPShPLmNsaWVudFktQi50b3ApL0IuaGVpZ2h0O2lmKHQoKSxWMS5jdXJyZW50KVoxKHt0eXBlOiJlbmQiLHg6Uyx5OmosZWRnZTpnMX0pLFYxLmN1cnJlbnQ9ITE7ZWxzZSBaMSh7dHlwZToiZW5kIix4OlMseTpqfSl9fSksXygiZGl2Iix7cmVmOnYxLCJkYXRhLXRlc3RpZCI6InRvdWNoLWluZGljYXRvciIsc3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZGlzcGxheToibm9uZSIsd2lkdGg6MjQsaGVpZ2h0OjI0LGJvcmRlclJhZGl1czoiNTAlIixiYWNrZ3JvdW5kOiJyZ2JhKDU5LDEzMCwyNDYsMC41KSIsYm94U2hhZG93OiIwIDAgOHB4IHJnYmEoNTksMTMwLDI0NiwwLjMpIix0cmFuc2Zvcm06InRyYW5zbGF0ZSgtNTAlLCAtNTAlKSIscG9pbnRlckV2ZW50czoibm9uZSJ9fSksejEmJl8oSzEse2NoaWxkcmVuOltfKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJmaW5nZXItZG90IixzdHlsZTpDMyh6MS54MSx6MS55MSl9KSxfKCJkaXYiLHsiZGF0YS10ZXN0aWQiOiJmaW5nZXItZG90IixzdHlsZTpDMyh6MS54Mix6MS55Mil9KV19KSwhZyYmIXomJl8oImRpdiIse3N0eWxlOnsuLi5uNSwuLi5LfHx7fX0sY2hpbGRyZW46Xygic3BhbiIse3N0eWxlOntjb2xvcjoiIzg4OCIsZm9udFNpemU6MTR9LGNoaWxkcmVuOiJDb25uZWN0aW5nLi4uIn0pfSkseiYmXygiZGl2Iix7c3R5bGU6bjUsY2hpbGRyZW46Xygic3BhbiIse3N0eWxlOntjb2xvcjoiI2Y0NCIsZm9udFNpemU6MTQscGFkZGluZzoyMCx0ZXh0QWxpZ246ImNlbnRlciJ9LGNoaWxkcmVuOnp9KX0pLEgxJiZfKCJkaXYiLHtzdHlsZTpSOCxjaGlsZHJlbjpfKCJzcGFuIix7c3R5bGU6e2NvbG9yOiIjZmJiZjI0Iixmb250U2l6ZToxMyxmb250RmFtaWx5OiJtb25vc3BhY2UifSxjaGlsZHJlbjoiU2xvdyBjb25uZWN0aW9uIn0pfSldfSl9KSwhUSYmXygiZGl2Iix7c3R5bGU6e2Rpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLHBhZGRpbmc6IjRweCA4cHgiLGJvcmRlclRvcDoiMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xMikifSxjaGlsZHJlbjpbXygiYnV0dG9uIix7b25DbGljazpPMixzdHlsZTp7YmFja2dyb3VuZDoibm9uZSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjIpIixjb2xvcjoiI2FhYSIsZm9udFNpemU6MTEsZm9udEZhbWlseToibW9ub3NwYWNlIixwYWRkaW5nOiIycHggMTBweCIsY3Vyc29yOiJwb2ludGVyIixib3JkZXJSYWRpdXM6NH0sY2hpbGRyZW46IkhvbWUifSksXygic3BhbiIse3N0eWxlOntjb2xvcjpsPjA/IiM0ZjQiOiIjODg4Iixmb250U2l6ZToxMixmb250RmFtaWx5OiJtb25vc3BhY2UiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsZ2FwOjZ9LGNoaWxkcmVuOltiJiZfKCJzcGFuIix7ImRhdGEtdGVzdGlkIjoicXVhbGl0eS1kb3QiLHN0eWxlOnt3aWR0aDo4LGhlaWdodDo4LGJvcmRlclJhZGl1czoiNTAlIixkaXNwbGF5OiJpbmxpbmUtYmxvY2siLGJhY2tncm91bmQ6Yj09PSJnb29kIj8iIzRhZGU4MCI6Yj09PSJkZWdyYWRlZCI/IiNmYWNjMTUiOiIjZWY0NDQ0In19KSxsLCIgZnBzIl19KV19KV19KX12YXIgUjg9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjgsbGVmdDoiNTAlIix0cmFuc2Zvcm06InRyYW5zbGF0ZVgoLTUwJSkiLGJhY2tncm91bmQ6InJnYmEoMCwwLDAsMC43KSIsYm9yZGVyUmFkaXVzOjYscGFkZGluZzoiNHB4IDEycHgiLHBvaW50ZXJFdmVudHM6Im5vbmUifSxuNT17cG9zaXRpb246ImFic29sdXRlIixpbnNldDowLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsYmFja2dyb3VuZDoicmdiYSgwLDAsMCwwLjgpIn0sZTU9MjA7ZnVuY3Rpb24gQzMoQyxMKXtyZXR1cm57cG9zaXRpb246ImFic29sdXRlIixsZWZ0OmAke0MqMTAwfSVgLHRvcDpgJHtMKjEwMH0lYCx3aWR0aDplNSxoZWlnaHQ6ZTUsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6InJnYmEoMjU1LDI1NSwyNTUsMC40NSkiLGJvcmRlcjoiMS4yNXB4IHNvbGlkIHJnYmEoMCwwLDAsMC41NSkiLGJveFNoYWRvdzoiMCAxcHggM3B4IHJnYmEoMCwwLDAsMC40NSkiLHRyYW5zZm9ybToidHJhbnNsYXRlKC01MCUsIC01MCUpIixwb2ludGVyRXZlbnRzOiJub25lIn19ZnVuY3Rpb24gZTEoQyl7aWYoIUMpcmV0dXJuImlwaG9uZSI7bGV0IEw9Qy50b0xvd2VyQ2FzZSgpO2lmKEwuaW5jbHVkZXMoImlwYWQiKSlyZXR1cm4iaXBhZCI7aWYoTC5pbmNsdWRlcygid2F0Y2giKSlyZXR1cm4id2F0Y2giO2lmKEwuaW5jbHVkZXMoInZpc2lvbiIpKXJldHVybiJ2aXNpb24iO3JldHVybiJpcGhvbmUifXZhciBVMT17aXBob25lOnt3aWR0aDo0MjcsaGVpZ2h0Ojg4MSxiZXplbFg6MTgsYmV6ZWxZOjE4LGlubmVyUmFkaXVzOjU1fSxpcGFkOnt3aWR0aDo0MzAsaGVpZ2h0OjYwNSxiZXplbFg6MTYsYmV6ZWxZOjE2LGlubmVyUmFkaXVzOjEyfSx3YXRjaDp7d2lkdGg6Mjc0LGhlaWdodDozMjIsYmV6ZWxYOjEyLGJlemVsWToxMixpbm5lclJhZGl1czo3OX0sdmlzaW9uOnt3aWR0aDo2NDAsaGVpZ2h0OjQwMCxiZXplbFg6MTIsYmV6ZWxZOjEyLGlubmVyUmFkaXVzOjMyfX0sRzQ9VTEuaXBob25lLndpZHRoLEo0PVUxLmlwaG9uZS5oZWlnaHQsWTQ9VTEuaXBob25lLmJlemVsWCxxND1VMS5pcGhvbmUuYmV6ZWxZLGI0PVUxLmlwaG9uZS5pbm5lclJhZGl1cyxMMz17ImlQaG9uZSAxNyBQcm8gTWF4Ijp7d2lkdGg6MTMyMCxoZWlnaHQ6Mjg2OH0sImlQaG9uZSAxNyBQcm8iOnt3aWR0aDoxMjA2LGhlaWdodDoyNjIyfSwiaVBob25lIDE3Ijp7d2lkdGg6MTIwNixoZWlnaHQ6MjYyMn0sImlQaG9uZSBBaXIiOnt3aWR0aDoxMjYwLGhlaWdodDoyNzM2fSwiaVBob25lIDE2IFBybyBNYXgiOnt3aWR0aDoxMzIwLGhlaWdodDoyODY4fSwiaVBob25lIDE2IFBybyI6e3dpZHRoOjEyMDYsaGVpZ2h0OjI2MjJ9LCJpUGhvbmUgMTYgUGx1cyI6e3dpZHRoOjEyOTAsaGVpZ2h0OjI3OTZ9LCJpUGhvbmUgMTYiOnt3aWR0aDoxMTc5LGhlaWdodDoyNTU2fSwiaVBob25lIDE2ZSI6e3dpZHRoOjExNzAsaGVpZ2h0OjI1MzJ9LCJpUGhvbmUgMTUgUHJvIE1heCI6e3dpZHRoOjEyOTAsaGVpZ2h0OjI3OTZ9LCJpUGhvbmUgMTUgUHJvIjp7d2lkdGg6MTE3OSxoZWlnaHQ6MjU1Nn0sImlQaG9uZSAxNSBQbHVzIjp7d2lkdGg6MTI5MCxoZWlnaHQ6Mjc5Nn0sImlQaG9uZSAxNSI6e3dpZHRoOjExNzksaGVpZ2h0OjI1NTZ9LCJpUGFkIFBybyAxMy1pbmNoIChNNSkiOnt3aWR0aDoyMDY0LGhlaWdodDoyNzUyfSwiaVBhZCBQcm8gMTEtaW5jaCAoTTUpIjp7d2lkdGg6MTY2OCxoZWlnaHQ6MjQyMH0sImlQYWQgUHJvIDEzLWluY2ggKE00KSI6e3dpZHRoOjIwNjQsaGVpZ2h0OjI3NTJ9LCJpUGFkIFBybyAxMS1pbmNoIChNNCkiOnt3aWR0aDoxNjY4LGhlaWdodDoyNDIwfSwiaVBhZCBBaXIgMTMtaW5jaCAoTTMpIjp7d2lkdGg6MjA0OCxoZWlnaHQ6MjczMn0sImlQYWQgQWlyIDExLWluY2ggKE0zKSI6e3dpZHRoOjE2NDAsaGVpZ2h0OjIzNjB9LCJpUGFkIChBMTYpIjp7d2lkdGg6MTY0MCxoZWlnaHQ6MjM2MH0sImlQYWQgbWluaSAoQTE3IFBybykiOnt3aWR0aDoxNDg4LGhlaWdodDoyMjY2fSwiQXBwbGUgV2F0Y2ggVWx0cmEgMyAoNDltbSkiOnt3aWR0aDo0MjIsaGVpZ2h0OjUxNH0sIkFwcGxlIFdhdGNoIFVsdHJhIDIgKDQ5bW0pIjp7d2lkdGg6NDEwLGhlaWdodDo1MDJ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTEgKDQ2bW0pIjp7d2lkdGg6NDE2LGhlaWdodDo0OTZ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTEgKDQybW0pIjp7d2lkdGg6Mzc0LGhlaWdodDo0NDZ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTAgKDQ2bW0pIjp7d2lkdGg6NDE2LGhlaWdodDo0OTZ9LCJBcHBsZSBXYXRjaCBTZXJpZXMgMTAgKDQybW0pIjp7d2lkdGg6Mzc0LGhlaWdodDo0NDZ9LCJBcHBsZSBXYXRjaCBTRSAzICg0NG1tKSI6e3dpZHRoOjM2OCxoZWlnaHQ6NDQ4fSwiQXBwbGUgV2F0Y2ggU0UgMyAoNDBtbSkiOnt3aWR0aDozMjQsaGVpZ2h0OjM5NH0sIkFwcGxlIFdhdGNoIFNFICg0NG1tKSI6e3dpZHRoOjM2OCxoZWlnaHQ6NDQ4fSwiQXBwbGUgV2F0Y2ggU0UgKDQwbW0pIjp7d2lkdGg6MzI0LGhlaWdodDozOTR9LCJBcHBsZSBWaXNpb24gUHJvIjp7d2lkdGg6MTkyMCxoZWlnaHQ6MTA4MH19O2Z1bmN0aW9uIGoyKEMsTCl7bGV0IE49QyYmQy53aWR0aD4wJiZDLmhlaWdodD4wP0M6TCxLPW4xKE4pO2lmKEspcmV0dXJuYCR7Sy53aWR0aH0gLyAke0suaGVpZ2h0fWA7cmV0dXJuYCR7VTEuaXBob25lLndpZHRoLTIqVTEuaXBob25lLmJlemVsWH0gLyAke1UxLmlwaG9uZS5oZWlnaHQtMipVMS5pcGhvbmUuYmV6ZWxZfWB9ZnVuY3Rpb24gbzIoQz0iaXBob25lIixMKXtsZXQgTj1MP0wzW0xdOm51bGw7aWYoTilyZXR1cm4gTjtsZXQgSz1VMVtDXTtyZXR1cm57d2lkdGg6Sy53aWR0aC0yKksuYmV6ZWxYLGhlaWdodDpLLmhlaWdodC0yKksuYmV6ZWxZfX1mdW5jdGlvbiBmMihDPSJpcGhvbmUiLEwpe2lmKFYyKEwpKXN3aXRjaChDKXtjYXNlImlwYWQiOnJldHVybiA3MjA7Y2FzZSJ2aXNpb24iOnJldHVybiA1ODA7Y2FzZSJ3YXRjaCI6cmV0dXJuIDIwMDtkZWZhdWx0OnJldHVybiA2MjB9c3dpdGNoKEMpe2Nhc2UiaXBhZCI6cmV0dXJuIDQwMDtjYXNlIndhdGNoIjpyZXR1cm4gMjAwO2Nhc2UidmlzaW9uIjpyZXR1cm4gNTgwO2RlZmF1bHQ6cmV0dXJuIDMyMH19ZnVuY3Rpb24gdTIoQz0iaXBob25lIixMKXtsZXQgTj1VMVtDXSxLPU4ud2lkdGgtMipOLmJlemVsWCxaPU4uaGVpZ2h0LTIqTi5iZXplbFk7aWYoSzxaJiZWMihMKSlyZXR1cm5gJHtOLmlubmVyUmFkaXVzL1oqMTAwfSUgLyAke04uaW5uZXJSYWRpdXMvSyoxMDB9JWA7cmV0dXJuYCR7Ti5pbm5lclJhZGl1cy9LKjEwMH0lIC8gJHtOLmlubmVyUmFkaXVzL1oqMTAwfSVgfXZhciBVMD1oMShudWxsKTtmdW5jdGlvbiBhMihDKXtsZXQgTD14MShVMCk7aWYoIUwpdGhyb3cgRXJyb3IoYDxTaW11bGF0b3JUb29sYmFyLiR7Q30+IG11c3QgYmUgcmVuZGVyZWQgaW5zaWRlIDxTaW11bGF0b3JUb29sYmFyPmApO3JldHVybiBMfXZhciBsOD17ZGlzcGxheToiZmxleCIsZmxleFdyYXA6IndyYXAiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6InNwYWNlLWJldHdlZW4iLGdhcDoiNHB4IDEycHgiLHBhZGRpbmc6IjhweCAxMnB4Iixib3JkZXJSYWRpdXM6MjQsYmFja2dyb3VuZDoiIzFjMWMxZSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEpIixib3hTaGFkb3c6IjAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMikiLG1pbldpZHRoOjI0MCx3aWR0aDoiMTAwJSJ9O2Z1bmN0aW9uIGo4KHtleGVjOkMsb25Sb3RhdGU6TCxvcmllbnRhdGlvbjpOLGRldmljZVVkaWQ6SyxkZXZpY2VOYW1lOlosZGV2aWNlUnVudGltZTpYLHN0cmVhbWluZzp3PSExLGRpc2FibGVkOiQ9ITEsY2hpbGRyZW46SixzdHlsZTpHLC4uLnF9KXtsZXQgWT1lMShaKSxRPXtleGVjOkMsb25Sb3RhdGU6TCxvcmllbnRhdGlvbjpOLGRldmljZVVkaWQ6SyxkZXZpY2VOYW1lOlosZGV2aWNlUnVudGltZTpYLGRldmljZVR5cGU6WSxzdHJlYW1pbmc6dyxkaXNhYmxlZDokfHwhS3x8IXd9O3JldHVybiBfKFUwLlByb3ZpZGVyLHt2YWx1ZTpRLGNoaWxkcmVuOl8oImRpdiIseyJkYXRhLXNpbXVsYXRvci10b29sYmFyIjohMCxzdHlsZTp7Li4ubDgsLi4uR30sLi4ucSxjaGlsZHJlbjpKfSl9KX12YXIgbzg9e2Rpc3BsYXk6ImZsZXgiLGZsZXhEaXJlY3Rpb246ImNvbHVtbiIsYWxpZ25JdGVtczoiZmxleC1zdGFydCIsdGV4dEFsaWduOiJsZWZ0IixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixjb2xvcjoiI2ZmZiIscGFkZGluZzoiMnB4IDRweCIsbWFyZ2luOiItMnB4IC00cHgiLGJvcmRlclJhZGl1czo2LGN1cnNvcjoicG9pbnRlciIsbWluV2lkdGg6MCxtYXhXaWR0aDoiMTAwJSIsbGluZUhlaWdodDoxLjIsZm9udEZhbWlseToiaW5oZXJpdCJ9LGY4PXMxKGZ1bmN0aW9uKHtuYW1lOkwsc3VidGl0bGU6TixoaWRlQ2hldnJvbjpLLHN0eWxlOlosb25Nb3VzZUVudGVyOlgsb25Nb3VzZUxlYXZlOncsLi4uJH0sSil7bGV0IEc9YTIoIlRpdGxlIiksW3EsWV09TSghMSksSD1MPz9HLmRldmljZU5hbWU/PyJObyBzaW11bGF0b3IiLFE9Tj8/KEcuZGV2aWNlUnVudGltZT9HLmRldmljZVJ1bnRpbWUucmVwbGFjZSgvXC4vLCIgIik6IuKAlCIpO3JldHVybiBfKCJidXR0b24iLHtyZWY6Six0eXBlOiJidXR0b24iLCJkYXRhLXNpbXVsYXRvci10b29sYmFyLXRpdGxlIjohMCxvbk1vdXNlRW50ZXI6KGspPT57WSghMCksWD8uKGspfSxvbk1vdXNlTGVhdmU6KGspPT57WSghMSksdz8uKGspfSxzdHlsZTp7Li4ubzgsYmFja2dyb3VuZDpxPyJyZ2JhKDI1NSwyNTUsMjU1LDAuMSkiOiJ0cmFuc3BhcmVudCIsLi4uWn0sLi4uJCxjaGlsZHJlbjpbXygic3BhbiIse3N0eWxlOntkaXNwbGF5OiJpbmxpbmUtZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixnYXA6NCxmb250U2l6ZToxMixmb250V2VpZ2h0OjYwMCxjb2xvcjoiI2ZmZiIsbWF4V2lkdGg6IjEwMCUiLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LGNoaWxkcmVuOltILCFLJiZfKCJzdmciLHt3aWR0aDoiMTAiLGhlaWdodDoiMTAiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyLjUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLHN0eWxlOntjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjYpIixmbGV4U2hyaW5rOjB9LGNoaWxkcmVuOl8oInBvbHlsaW5lIix7cG9pbnRzOiI2IDkgMTIgMTUgMTggOSJ9KX0pXX0pLF8oInNwYW4iLHtzdHlsZTp7Zm9udFNpemU6MTAsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC41KSIsbWF4V2lkdGg6IjEwMCUiLG92ZXJmbG93OiJoaWRkZW4iLHRleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdoaXRlU3BhY2U6Im5vd3JhcCJ9LGNoaWxkcmVuOlF9KV19KX0pLHU4PXtkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGdhcDo0LGZsZXhTaHJpbms6MH07ZnVuY3Rpb24gYTgoe3N0eWxlOkMsLi4uTH0pe3JldHVybiBfKCJkaXYiLHtzdHlsZTp7Li4udTgsLi4uQ30sLi4uTH0pfXZhciBkOD17YmFja2dyb3VuZDoidHJhbnNwYXJlbnQiLGJvcmRlcjoibm9uZSIscGFkZGluZzo2LGJvcmRlclJhZGl1czo2LGN1cnNvcjoicG9pbnRlciIsZGlzcGxheToiaW5saW5lLWZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsY29sb3I6InJnYmEoMjU1LDI1NSwyNTUsMC44KSIsdHJhbnNpdGlvbjoiYmFja2dyb3VuZC1jb2xvciAwLjE1cywgY29sb3IgMC4xNXMifSxkMj1zMShmdW5jdGlvbih7Zm9yY2VEaXNhYmxlZDpMLHN0eWxlOk4sZGlzYWJsZWQ6Syxvbk1vdXNlRW50ZXI6Wixvbk1vdXNlTGVhdmU6WCxjaGlsZHJlbjp3LC4uLiR9LEope2xldCBHPXgxKFUwKSxxPUt8fEx8fEc/LmRpc2FibGVkLFtZLEhdPU0oITEpO3JldHVybiBfKCJidXR0b24iLHtyZWY6Six0eXBlOiJidXR0b24iLGRpc2FibGVkOnEsb25Nb3VzZUVudGVyOihRKT0+e0goITApLFo/LihRKX0sb25Nb3VzZUxlYXZlOihRKT0+e0goITEpLFg/LihRKX0sc3R5bGU6ey4uLmQ4LGNvbG9yOnE/InJnYmEoMjU1LDI1NSwyNTUsMC4yNSkiOiJyZ2JhKDI1NSwyNTUsMjU1LDAuOCkiLGJhY2tncm91bmQ6WSYmIXE/InJnYmEoMjU1LDI1NSwyNTUsMC4xKSI6InRyYW5zcGFyZW50IixjdXJzb3I6cT8ibm90LWFsbG93ZWQiOiJwb2ludGVyIiwuLi5OfSwuLi4kLGNoaWxkcmVuOnd9KX0pO2Z1bmN0aW9uIGk4KCl7cmV0dXJuWyd0ZWxsIGFwcGxpY2F0aW9uICJTeXN0ZW0gRXZlbnRzIiB0byB0ZWxsIHByb2Nlc3MgIlNpbXVsYXRvciIgdG8gc2V0IGZyb250bW9zdCB0byB0cnVlJywndGVsbCBhcHBsaWNhdGlvbiAiU3lzdGVtIEV2ZW50cyIgdG8gdGVsbCBwcm9jZXNzICJTaW11bGF0b3IiIHRvIHBlcmZvcm0gYWN0aW9uICJBWFJhaXNlIiBvZiAoZmlyc3Qgd2luZG93IHdob3NlIG5hbWUgY29udGFpbnMgIndhdGNoT1MiKScsJ3RlbGwgYXBwbGljYXRpb24gIlN5c3RlbSBFdmVudHMiIHRvIHRlbGwgcHJvY2VzcyAiU2ltdWxhdG9yIiB0byBjbGljayBtZW51IGl0ZW0gIkhvbWUiIG9mIG1lbnUgIkRldmljZSIgb2YgbWVudSBiYXIgaXRlbSAiRGV2aWNlIiBvZiBtZW51IGJhciAxJ10ubWFwKChMKT0+YC1lICcke0x9J2ApLnJlZHVjZSgoTCxOKT0+YCR7TH0gJHtOfWAsIm9zYXNjcmlwdCIpfXZhciByOD17cG9ydHJhaXQ6ImxhbmRzY2FwZV9sZWZ0IixsYW5kc2NhcGVfbGVmdDoicG9ydHJhaXRfdXBzaWRlX2Rvd24iLHBvcnRyYWl0X3Vwc2lkZV9kb3duOiJsYW5kc2NhcGVfcmlnaHQiLGxhbmRzY2FwZV9yaWdodDoicG9ydHJhaXQifSxjOD1fKCJzdmciLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpfKCJwYXRoIix7ZDoiTTMgMTAuNSAxMiAzbDkgNy41VjIwYTEgMSAwIDAgMS0xIDFoLTV2LTdoLTZ2N0g0YTEgMSAwIDAgMS0xLTF6In0pfSksdDg9Xygic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W18oInBhdGgiLHtkOiJNMTQuNSA0aC01TDcgN0g0YTIgMiAwIDAgMC0yIDJ2OWEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJWOWEyIDIgMCAwIDAtMi0yaC0zeiJ9KSxfKCJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMyIscjoiNCJ9KV19KSxzOD1fKCJzdmciLHt3aWR0aDoiMTgiLGhlaWdodDoiMTgiLHZpZXdCb3g6IjAgMCAxMiAxMyIsZmlsbDoiY3VycmVudENvbG9yIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOl8oInBhdGgiLHtkOiJNMTAuMjMwNSAxMi44MDc3SDQuNDIzODNDMy45MjM4MyAxMi44MDc3IDMuNTQ2ODggMTIuNjg0NiAzLjI5Mjk3IDEyLjQzODVDMy4wNDI5NyAxMi4xOTYzIDIuOTE3OTcgMTEuODE5NCAyLjkxNzk3IDExLjMwNzdWNS41MTI3NEMyLjkxNzk3IDQuOTk3MTEgMy4wNDI5NyA0LjYxODIxIDMuMjkyOTcgNC4zNzYwMkMzLjU0Njg4IDQuMTI5OTMgMy45MjM4MyA0LjAwNjg4IDQuNDIzODMgNC4wMDY4OEgxMC4yMzA1QzEwLjczNDQgNC4wMDY4OCAxMS4xMTEzIDQuMTI5OTMgMTEuMzYxMyA0LjM3NjAyQzExLjYxMTMgNC42MTgyMSAxMS43MzYzIDQuOTk3MTEgMTEuNzM2MyA1LjUxMjc0VjExLjMwNzdDMTEuNzM2MyAxMS44MTk0IDExLjYxMTMgMTIuMTk2MyAxMS4zNjEzIDEyLjQzODVDMTEuMTExMyAxMi42ODQ2IDEwLjczNDQgMTIuODA3NyAxMC4yMzA1IDEyLjgwNzdaTTEwLjIxMjkgMTEuODY0M0MxMC40MTYgMTEuODY0MyAxMC41NjI1IDExLjgxOTQgMTAuNjUyMyAxMS43Mjk1QzEwLjc0NjEgMTEuNjQzNiAxMC43OTMgMTEuNDk3MSAxMC43OTMgMTEuMjkwMVY1LjUyNDQ2QzEwLjc5MyA1LjMxNzQzIDEwLjc0NjEgNS4xNzA5NCAxMC42NTIzIDUuMDg1MDFDMTAuNTYyNSA0Ljk5NTE2IDEwLjQxNiA0Ljk1MDI0IDEwLjIxMjkgNC45NTAyNEg0LjQ0MTQxQzQuMjQyMTkgNC45NTAyNCA0LjA5NTcgNC45OTUxNiA0LjAwMTk1IDUuMDg1MDFDMy45MDgyIDUuMTcwOTQgMy44NjEzMyA1LjMxNzQzIDMuODYxMzMgNS41MjQ0NlYxMS4yOTAxQzMuODYxMzMgMTEuNDk3MSAzLjkwODIgMTEuNjQzNiA0LjAwMTk1IDExLjcyOTVDNC4wOTU3IDExLjgxOTQgNC4yNDIxOSAxMS44NjQzIDQuNDQxNDEgMTEuODY0M0gxMC4yMTI5Wk0yLjkxNzk3IDIuNTgzMDVWMC40MTUwODNDMi45MTc5NyAwLjIwMDI0IDIuOTg2MzMgMC4wNjkzODAzIDMuMTIzMDUgMC4wMjI1MDUzQzMuMjU5NzcgLTAuMDI4Mjc1OSAzLjQxMDE2IDAuMDA2ODgwMzMgMy41NzQyMiAwLjEyNzk3NEw1LjA1MDc4IDEuMjExOTZDNS4xNzU3OCAxLjMwNTcxIDUuMjM4MjggMS40MDE0MSA1LjIzODI4IDEuNDk5MDdDNS4yMzgyOCAxLjU5NjcyIDUuMTc1NzggMS42OTI0MyA1LjA1MDc4IDEuNzg2MThMMy41NzQyMiAyLjg2NDNDMy40MTAxNiAyLjk4NTQgMy4yNTk3NyAzLjAyMjUxIDMuMTIzMDUgMi45NzU2M0MyLjk4NjMzIDIuOTI0ODUgMi45MTc5NyAyLjc5Mzk5IDIuOTE3OTcgMi41ODMwNVpNMy41MzMyIDEuMTUzMzZDMy42MjY5NSAxLjE1MzM2IDMuNzA3MDMgMS4xODY1NyAzLjc3MzQ0IDEuMjUyOTdDMy44NDM3NSAxLjMxOTM4IDMuODc4OTEgMS4zOTc1MSAzLjg3ODkxIDEuNDg3MzVDMy44Nzg5MSAxLjU4MTEgMy44NDM3NSAxLjY2MzEzIDMuNzczNDQgMS43MzM0NEMzLjcwNzAzIDEuNzk5ODUgMy42MjY5NSAxLjgzMzA1IDMuNTMzMiAxLjgzMzA1SDIuODA2NjRDMi4zODA4NiAxLjgzMzA1IDIuMDExNzIgMS45MjQ4NSAxLjY5OTIyIDIuMTA4NDRDMS4zOTA2MiAyLjI4ODEzIDEuMTUyMzQgMi41MzgxMyAwLjk4NDM3NSAyLjg1ODQ0QzAuODE2NDA2IDMuMTc4NzYgMC43MzI0MjIgMy41NDU5NCAwLjczMjQyMiAzLjk2MDAxVjQuODM4OTFDMC43MzI0MjIgNC45MzY1NyAwLjY5NzI2NiA1LjAyMjUxIDAuNjI2OTUzIDUuMDk2NzJDMC41NTI3MzQgNS4xNjcwNCAwLjQ2NDg0NCA1LjIwMjE5IDAuMzYzMjgxIDUuMjAyMTlDMC4yNjU2MjUgNS4yMDIxOSAwLjE4MTY0MSA1LjE2NzA0IDAuMTExMzI4IDUuMDk2NzJDMC4wMzcxMDk0IDUuMDIyNTEgMCA0LjkzNjU3IDAgNC44Mzg5MVYzLjk2MDAxQzAgMy40MDE0MSAwLjExNzE4OCAyLjkxMTE4IDAuMzUxNTYyIDIuNDg5M0MwLjU4MjAzMSAyLjA2NzQzIDAuOTA4MjAzIDEuNzM5MyAxLjMzMDA4IDEuNTA0OTNDMS43NDgwNSAxLjI3MDU1IDIuMjM4MjggMS4xNTMzNiAyLjgwMDc4IDEuMTUzMzZIMy41MzMyWiJ9KX0pLG44PXMxKGZ1bmN0aW9uKHtvbkNsaWNrOkwsLi4uTn0sSyl7bGV0IFo9YTIoIkhvbWVCdXR0b24iKTtyZXR1cm4gXyhkMix7cmVmOkssImFyaWEtbGFiZWwiOiJIb21lIixvbkNsaWNrOihYKT0+e2lmKEw/LihYKSxYLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2lmKFouZGV2aWNlVHlwZT09PSJ3YXRjaCIpWi5leGVjKGk4KCkpO2Vsc2UgWi5leGVjKCJzZXJ2ZS1zaW0gYnV0dG9uIGhvbWUiKX0sLi4uTixjaGlsZHJlbjpjOH0pfSksZTg9czEoZnVuY3Rpb24oe29uQ2xpY2s6TCwuLi5OfSxLKXtsZXQgWj1hMigiU2NyZWVuc2hvdEJ1dHRvbiIpO3JldHVybiBfKGQyLHtyZWY6SywiYXJpYS1sYWJlbCI6IlNjcmVlbnNob3QiLG9uQ2xpY2s6KFgpPT57aWYoTD8uKFgpLFguZGVmYXVsdFByZXZlbnRlZClyZXR1cm47aWYoWi5kZXZpY2VVZGlkKVouZXhlYyhgeGNydW4gc2ltY3RsIGlvICR7Wi5kZXZpY2VVZGlkfSBzY3JlZW5zaG90IH4vRGVza3RvcC9zZXJ2ZS1zaW0tc2NyZWVuc2hvdC0kKGRhdGUgKyVzKS5wbmdgKX0sLi4uTixjaGlsZHJlbjp0OH0pfSksQzk9czEoZnVuY3Rpb24oe29uQ2xpY2s6TCxmb3JjZURpc2FibGVkOk4sLi4uS30sWil7bGV0IFg9YTIoIlJvdGF0ZUJ1dHRvbiIpLHc9WC5kZXZpY2VUeXBlPT09IndhdGNoInx8WC5kZXZpY2VUeXBlPT09InZpc2lvbiIsWyQsSl09TSgicG9ydHJhaXQiKTtyZXR1cm4gRSgoKT0+e0ooWC5vcmllbnRhdGlvbj8/InBvcnRyYWl0Iil9LFtYLmRldmljZVVkaWQsWC5vcmllbnRhdGlvbl0pLF8oZDIse3JlZjpaLCJhcmlhLWxhYmVsIjoiUm90YXRlIGRldmljZSIsZm9yY2VEaXNhYmxlZDpOfHx3LG9uQ2xpY2s6KEcpPT57aWYoTD8uKEcpLEcuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47aWYoIVguZGV2aWNlVWRpZHx8dylyZXR1cm47bGV0IHE9cjhbWC5vcmllbnRhdGlvbj8/JF07aWYoSihxKSxYLm9uUm90YXRlKVgub25Sb3RhdGUocSk7ZWxzZSBYLmV4ZWMoYHNlcnZlLXNpbSByb3RhdGUgJHtxfSAtZCAke1guZGV2aWNlVWRpZH1gKX0sLi4uSyxjaGlsZHJlbjpzOH0pfSksRDE9ajg7RDEuVGl0bGU9Zjg7RDEuQWN0aW9ucz1hODtEMS5CdXR0b249ZDI7RDEuSG9tZUJ1dHRvbj1uODtEMS5TY3JlZW5zaG90QnV0dG9uPWU4O0QxLlJvdGF0ZUJ1dHRvbj1DOTtmdW5jdGlvbiBpMih7b3BlbjpDfSl7cmV0dXJuIF8oInN2ZyIse3dpZHRoOiIxMCIsaGVpZ2h0OiIxMCIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIuNSIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2xhc3NOYW1lOmBsZW0tY2hldnJvbiB0ZXh0LXdoaXRlLzUwIFt0cmFuc2l0aW9uOnRyYW5zZm9ybV8wLjE1cyxjb2xvcl8wLjEyc10gJHtDPyJyb3RhdGUtMTgwIjoicm90YXRlLTAifWAsY2hpbGRyZW46XygicG9seWxpbmUiLHtwb2ludHM6IjYgOSAxMiAxNSAxOCA5In0pfSl9ZnVuY3Rpb24gcjIoe2RpcjpDfSl7cmV0dXJuIF8oInN2ZyIse3dpZHRoOiI5IixoZWlnaHQ6IjkiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoiY3VycmVudENvbG9yIixjbGFzc05hbWU6Im1yLVszcHhdIixjaGlsZHJlbjpDPT09InVwIj9fKCJwb2x5Z29uIix7cG9pbnRzOiIxMiw0IDIwLDE4IDQsMTgifSk6XygicG9seWdvbiIse3BvaW50czoiNCw2IDIwLDYgMTIsMjAifSl9KX1mdW5jdGlvbiBPMCgpe3JldHVybiBfKCJzdmciLHt3aWR0aDoiMTEiLGhlaWdodDoiMTEiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoiY3VycmVudENvbG9yIixjaGlsZHJlbjpfKCJwb2x5Z29uIix7cG9pbnRzOiI2LDQgMjAsMTIgNiwyMCJ9KX0pfWZ1bmN0aW9uIHowKCl7cmV0dXJuIF8oInN2ZyIse3dpZHRoOiIxMSIsaGVpZ2h0OiIxMSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJjdXJyZW50Q29sb3IiLGNoaWxkcmVuOltfKCJyZWN0Iix7eDoiNiIseToiNCIsd2lkdGg6IjQiLGhlaWdodDoiMTYifSksXygicmVjdCIse3g6IjE0Iix5OiI0Iix3aWR0aDoiNCIsaGVpZ2h0OiIxNiJ9KV19KX1mdW5jdGlvbiBJMCgpe3JldHVybiBfKCJzdmciLHt3aWR0aDoiMTAiLGhlaWdodDoiMTAiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoiY3VycmVudENvbG9yIixjaGlsZHJlbjpfKCJyZWN0Iix7eDoiNSIseToiNSIsd2lkdGg6IjE0IixoZWlnaHQ6IjE0IixyeDoiMS41In0pfSl9ZnVuY3Rpb24gRTAoKXtyZXR1cm4gXygic3ZnIix7d2lkdGg6IjEyIixoZWlnaHQ6IjEyIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46W18oInBhdGgiLHtkOiJNMTIgNmEyIDIgMCAwIDEgMy40MTQtMS40MTRsNiA2YTIgMiAwIDAgMSAwIDIuODI4bC02IDZBMiAyIDAgMCAxIDEyIDE4eiJ9KSxfKCJwYXRoIix7ZDoiTTIgNmEyIDIgMCAwIDEgMy40MTQtMS40MTRsNiA2YTIgMiAwIDAgMSAwIDIuODI4bC02IDZBMiAyIDAgMCAxIDIgMTh6In0pXX0pfWZ1bmN0aW9uIFQwKCl7cmV0dXJuIF8oInN2ZyIse3dpZHRoOiI5IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiI0IDIgOSAxMyIsZmlsbDoiY3VycmVudENvbG9yIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJhcmlhLWhpZGRlbiI6InRydWUiLGNoaWxkcmVuOl8oInBhdGgiLHtkOiJNNi4wMDg1MiAxNC44MDU0QzUuODkxODEgMTQuOTM1IDUuNzU4MTUgMTQuOTk5OCA1LjYwNzU2IDE0Ljk5OThDNS40NTY5NiAxNS4wMDMzIDUuMzIzMyAxNC45NjEzIDUuMjA2NTkgMTQuODczN0M1LjA5MzY0IDE0Ljc4NjEgNS4wMjU4NyAxNC42NzIzIDUuMDAzMjggMTQuNTMyMkM0Ljk4NDQ2IDE0LjM5MjEgNS4wNDY1OCAxNC4yNDUgNS4xODk2NSAxNC4wOTA5TDYuOTQ1OTkgMTIuMTUyMkw3LjI0NTMgMTAuODc1NUw4LjE5OTcxIDExLjk4OTNMOC4wNTg1MyAxMi4zOTM5QzguMDIwODggMTIuNDk1NSA3Ljk4Njk5IDEyLjU3MDggNy45NTY4NyAxMi42MTk4QzcuOTMwNTIgMTIuNjY4OCA3Ljg3NDA0IDEyLjc0MDYgNy43ODc0NSAxMi44MzUyTDYuMDA4NTIgMTQuODA1NFpNMTAuMzQ1NyAxNC42NDI1TDkuMTAzMjkgMTIuMzA0NkM5LjA3Njk0IDEyLjI2MjUgOS4wNTQzNSAxMi4yMjIzIDkuMDM1NTMgMTIuMTgzN0M5LjAxNjcgMTIuMTQ1MiA4Ljk3NzE3IDEyLjA5MDkgOC45MTY5MyAxMi4wMjA5TDcuNzE5NjggMTAuNjE4MUM3LjQ5Mzc5IDEwLjM1NTQgNy4zMzc1NCAxMC4xMjk1IDcuMjUwOTUgOS45NDAzNEM3LjE2NDM1IDkuNzQ3NyA3LjEzNDI0IDkuNDk5MDEgNy4xNjA1OSA5LjE5NDI5TDcuMjYyMjQgNy45ODA2NUM3LjI2OTc3IDcuOTA3MSA3LjIzMjEyIDcuODU0NTYgNy4xNDkyOSA3LjgyMzA0QzcuMDY2NDcgNy43OTE1MSA2Ljk4NTUyIDcuODA5MDMgNi45MDY0NiA3Ljg3NTU3TDYuNDcxNjEgOC4yNDMzNEw2LjM0MTcyIDkuNjcyMzlDNi4zMjI4OSA5Ljg0NzUyIDYuMjY0NTQgOS45Nzg4NyA2LjE2NjY1IDEwLjA2NjRDNi4wNjg3NiAxMC4xNTQgNS45Mzg4NyAxMC4xOTI1IDUuNzc2OTggMTAuMTgyQzUuNjExMzIgMTAuMTc1IDUuNDgzMzEgMTAuMTE5IDUuMzkyOTUgMTAuMDEzOUM1LjMwNjM2IDkuOTA4ODIgNS4yNjg3MSA5Ljc3Mzk3IDUuMjgwMDEgOS42MDkzNUw1LjM4NzMxIDguMzA2MzlDNS40MDIzNyA4LjEyNzc2IDUuNDM4MTMgNy45NzU0IDUuNDk0NjEgNy44NDkzMUM1LjU1NDg1IDcuNzIzMjEgNS42NjAyNiA3LjU5MTg3IDUuODEwODYgNy40NTUyN0w2LjcxNDQ1IDYuNjI1MTZDNy4wMDQzNSA2LjM2MjQ3IDcuMjY5NzcgNi4xNjEwNyA3LjUxMDczIDYuMDIwOTZDNy43NTE2OCA1Ljg3NzM2IDguMDI4NDEgNS44MDU1NiA4LjM0MDkgNS44MDU1NkM4Ljc1ODggNS44MDU1NiA5LjA3ODgyIDUuOTMzNCA5LjMwMDk1IDYuMTg5MDlDOS41MjY4NSA2LjQ0NDc4IDkuNjI0NzQgNi43NjE3NiA5LjU5NDYyIDcuMTQwMDRMOS40NzYwMiA4LjczMTk1QzkuNDUzNDMgOS4wMTU2NiA5LjQxOTU1IDkuMjYyNTkgOS4zNzQzNyA5LjQ3Mjc1QzkuMzI5MTkgOS42ODI5IDkuMjUzODkgOS45Mjk4MyA5LjE0ODQ3IDEwLjIxMzVMOS4wOTIgMTAuMzYwNkw5Ljg2NTY5IDExLjM3OTlDOS45MjIxNyAxMS40NTM0IDkuOTgwNTIgMTEuNTM0IDEwLjA0MDggMTEuNjIxNkMxMC4xMDEgMTEuNzA5MSAxMC4xNTM3IDExLjc5NjcgMTAuMTk4OSAxMS44ODQzTDExLjQwNzQgMTQuMTY0NEMxMS41MDUzIDE0LjM1MDEgMTEuNTI0MSAxNC41MTEyIDExLjQ2MzkgMTQuNjQ3OEMxMS40MDM3IDE0Ljc4NDQgMTEuMzAyIDE0Ljg4MjUgMTEuMTU4OSAxNC45NDJDMTEuMDE5NiAxNS4wMDE1IDEwLjg3MDkgMTUuMDEwMyAxMC43MTI4IDE0Ljk2ODNDMTAuNTU4NCAxNC45MjYyIDEwLjQzNjEgMTQuODE3NyAxMC4zNDU3IDE0LjY0MjVaTTEyLjQwNyA3Ljk2NDg5QzEyLjU4NCA3Ljk2NDg5IDEyLjcyNyA4LjAxMDQyIDEyLjgzNjIgOC4xMDE0OUMxMi45NDU0IDguMTg5MDUgMTMgOC4zMDYzOSAxMyA4LjQ1MzVDMTMgOC42MTExMSAxMi45NDU0IDguNzMzNyAxMi44MzYyIDguODIxMjdDMTIuNzMwOCA4LjkwODgzIDEyLjU4NzcgOC45NTI2MSAxMi40MDcgOC45NTI2MUgxMS4xMzA3QzEwLjk1MzggOC45NTI2MSAxMC44MTQ1IDguOTM2ODUgMTAuNzEyOCA4LjkwNTMzQzEwLjYxMTIgOC44NzAzIDEwLjUxMzMgOC44MDcyNiAxMC40MTkxIDguNzE2MTlMMTAuMDUyMSA4LjM3OTk0TDEwLjE0MjQgNy4wNDAyMUwxMS4wMzQ3IDcuOTY0ODlIMTIuNDA3Wk05LjAwMTY0IDUuMzExNjlDOC43NzE5OCA1LjMxMTY5IDguNTYzMDMgNS4yNjA5MSA4LjM3NDc4IDUuMTU5MzNDOC4xODY1MyA1LjA1NDI2IDguMDM1OTQgNC45MTQxNSA3LjkyMjk5IDQuNzM5MDNDNy44MTM4MSA0LjU2MzkgNy43NTkyMSA0LjM2OTUgNy43NTkyMSA0LjE1NTg1QzcuNzU5MjEgMy45NDIxOSA3LjgxMzgxIDMuNzQ3OCA3LjkyMjk5IDMuNTcyNjdDOC4wMzU5NCAzLjM5NzU0IDguMTg2NTMgMy4yNTkxOSA4LjM3NDc4IDMuMTU3NjJDOC41NjMwMyAzLjA1MjU0IDguNzcxOTggMyA5LjAwMTY0IDNDOS4yMzEzIDMgOS40NDAyNiAzLjA1MjU0IDkuNjI4NSAzLjE1NzYyQzkuODE2NzUgMy4yNTkxOSA5Ljk2NTQ2IDMuMzk3NTQgMTAuMDc0NiAzLjU3MjY3QzEwLjE4NzYgMy43NDc4IDEwLjI0NDEgMy45NDIxOSAxMC4yNDQxIDQuMTU1ODVDMTAuMjQ0MSA0LjM2OTUgMTAuMTg3NiA0LjU2MzkgMTAuMDc0NiA0LjczOTAzQzkuOTY1NDYgNC45MTQxNSA5LjgxNjc1IDUuMDU0MjYgOS42Mjg1IDUuMTU5MzNDOS40NDAyNiA1LjI2MDkxIDkuMjMxMyA1LjMxMTY5IDkuMDAxNjQgNS4zMTE2OVoifSl9KX1mdW5jdGlvbiBQMCgpe3JldHVybiBfKCJzdmciLHt3aWR0aDoiMTEiLGhlaWdodDoiMTQiLHZpZXdCb3g6IjI2IDEgMTIgMTQiLGZpbGw6ImN1cnJlbnRDb2xvciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjpfKCJwYXRoIix7ZDoiTTMzLjI0MzcgNC41ODQ1OUMzMy4wMDA4IDQuNTg0NTkgMzIuNzgxNyA0LjUyNzI4IDMyLjU4NjYgNC40MTI2OEMzMi4zOTE1IDQuMjk0MTIgMzIuMjM0MiA0LjEzODAxIDMyLjExNDcgMy45NDQzN0MzMS45OTkyIDMuNzQ2NzcgMzEuOTQxNCAzLjUyOTQxIDMxLjk0MTQgMy4yOTIyOUMzMS45NDE0IDMuMDUxMjIgMzEuOTk5MiAyLjgzMzg3IDMyLjExNDcgMi42NDAyMkMzMi4yMzQyIDIuNDQ2NTcgMzIuMzkxNSAyLjI5MjQ1IDMyLjU4NjYgMi4xNzc4NEMzMi43ODE3IDIuMDU5MjggMzMuMDAwOCAyIDMzLjI0MzcgMkMzMy40ODI2IDIgMzMuNjk5NyAyLjA1OTI4IDMzLjg5NDggMi4xNzc4NEMzNC4wOTM5IDIuMjkyNDUgMzQuMjUxMiAyLjQ0NjU3IDM0LjM2NjcgMi42NDAyMkMzNC40ODYyIDIuODMzODcgMzQuNTQ1OSAzLjA1MTIyIDM0LjU0NTkgMy4yOTIyOUMzNC41NDU5IDMuNTI5NDEgMzQuNDg2MiAzLjc0Njc3IDM0LjM2NjcgMy45NDQzN0MzNC4yNTEyIDQuMTM4MDEgMzQuMDkzOSA0LjI5NDEyIDMzLjg5NDggNC40MTI2OEMzMy42OTk3IDQuNTI3MjggMzMuNDgyNiA0LjU4NDU5IDMzLjI0MzcgNC41ODQ1OVpNMzEuMjAwNyA5Ljc0MTkxQzMxLjA3MzMgOS42NzA3NyAzMC45NDE5IDkuNTk1NjggMzAuODA2NSA5LjUxNjY0QzMwLjY3NSA5LjQzNzYgMzAuNTU5NiA5LjM0Mjc2IDMwLjQ2IDkuMjMyMUMzMC4zNjA0IDkuMTE3NDkgMzAuMjkyNyA4Ljk3NzIgMzAuMjU2OSA4LjgxMTIyQzMwLjIyNSA4LjY0MTI4IDMwLjI0NDkgOC40Mjk4NSAzMC4zMTY2IDguMTc2OTNMMzAuODA2NSA2LjQ4MTUzQzMwLjgzODMgNi4zNjY5MiAzMC44MTg0IDYuMjc5OTggMzAuNzQ2NyA2LjIyMDdDMzAuNjc5IDYuMTU3NDcgMzAuNTk3NCA2LjEyOTgxIDMwLjUwMTggNi4xMzc3MUwyOS42NTk1IDYuMTk2OTlMMjkuNDAyNyA3LjkyMjAyQzI5LjM3ODggOC4xMDc3NyAyOS4zMTUxIDguMjQ2MDkgMjkuMjExNSA4LjMzNjk4QzI5LjEwOCA4LjQyNzg4IDI4Ljk3MjYgOC40NjU0MiAyOC44MDUzIDguNDQ5NjFDMjguNjQyIDguNDMzOCAyOC41MTg2IDguMzY2NjIgMjguNDM0OSA4LjI0ODA2QzI4LjM1MTMgOC4xMjk1IDI4LjMyMTQgNy45NzczNSAyOC4zNDUzIDcuNzkxNjFMMjguNjI2MSA1LjY4MTI2QzI4LjY1IDUuNTExMzIgMjguNzE1NyA1LjM3NDk4IDI4LjgyMzIgNS4yNzIyM0MyOC45MzA4IDUuMTY5NDggMjkuMDY4MSA1LjExMjE3IDI5LjIzNTQgNS4xMDAzMkwzMS4zMzIxIDQuOTUyMTJDMzEuODgxNyA0LjkxMjYgMzIuMzM1NyA0Ljk2OTkgMzIuNjk0MSA1LjEyNDAzQzMzLjA1MjUgNS4yNzgxNiAzMy4zNjcxIDUuNTM4OTkgMzMuNjM3OSA1LjkwNjUyTDM0LjY3MTQgNy4zMjMzTDM2LjE3MDggNi42NjUzQzM2LjMzOCA2LjU5MDIxIDM2LjQ4OTMgNi41NzQ0IDM2LjYyNDggNi42MTc4N0MzNi43NjAyIDYuNjU3MzkgMzYuODY1NyA2Ljc1MjI0IDM2Ljk0MTQgNi45MDI0MkMzNy4wMTMgNy4wNTI1OSAzNy4wMTkgNy4xOTQ4NiAzNi45NTkzIDcuMzI5MjNDMzYuOTAzNSA3LjQ2MzYgMzYuNzkyIDcuNTY4MzIgMzYuNjI0OCA3LjY0MzQxTDM0LjczMTEgOC40NzkyNUMzNC42MDM3IDguNTM4NTMgMzQuNDc0MyA4LjU1MDM5IDM0LjM0MjggOC41MTQ4MkMzNC4yMTU0IDguNDc1MyAzNC4xMTM4IDguNDAwMjEgMzQuMDM4MiA4LjI4OTU2TDMzLjM4MTEgNy4zMzUxNkMzMy4zMTM0IDcuMjQwMzEgMzMuMjI5OCA3LjE5ODgxIDMzLjEzMDIgNy4yMTA2N0MzMy4wMzA2IDcuMjIyNTMgMzIuOTY0OSA3LjI4Mzc4IDMyLjkzMzEgNy4zOTQ0NEwzMi40OTEgOC45Mjk3OEwzNC43MzExIDEwLjM4ODFDMzQuODQyNiAxMC40NTkyIDM0LjkyMjMgMTAuNTU2IDM0Ljk3MDEgMTAuNjc4NUMzNS4wMTc5IDEwLjgwMSAzNS4wMjk4IDEwLjkyNTUgMzUuMDA1OSAxMS4wNTJDMzQuOTg2IDExLjE3NDUgMzQuOTI4MiAxMS4yNzUzIDM0LjgzMjcgMTEuMzU0M0wzMi43NzE4IDEzLjA5NzFDMzIuNjA4NSAxMy4yMzU0IDMyLjQ0NTIgMTMuMjk4NyAzMi4yODE5IDEzLjI4NjhDMzIuMTIyNiAxMy4yNzUgMzEuOTkzMiAxMy4yMTM3IDMxLjg5MzcgMTMuMTAzMUMzMS43OTgxIDEyLjk5NjQgMzEuNzU0MyAxMi44NjU5IDMxLjc2MjIgMTIuNzExOEMzMS43NzAyIDEyLjU1MzcgMzEuODUzOCAxMi40MDc1IDMyLjAxMzEgMTIuMjczMUwzMy40ODg2IDExLjAxNjRMMzEuMjAwNyA5Ljc0MTkxWk0yNy4yMDQ0IDE0Ljg2MzdDMjcuMDg0OSAxNC43NTcgMjcuMDE3MiAxNC42MTg2IDI3LjAwMTMgMTQuNDQ4N0MyNi45ODkzIDE0LjI3ODggMjcuMDYxIDE0LjExNjcgMjcuMjE2MyAxMy45NjI2TDI5LjIyMzUgMTEuOTc2N0wyOS45MzQzIDkuNDgxMDhDMzAuMDQxOCA5LjYxNTQ0IDMwLjE3NTMgOS43NDU4NiAzMC4zMzQ1IDkuODcyMzJDMzAuNDk3OCA5Ljk5NDgzIDMwLjY5MyAxMC4xMTczIDMwLjkyIDEwLjIzOTlMMzEuMTE3MSAxMC4zNDY2TDMwLjMwNDcgMTIuNDMzMkMzMC4yNTI5IDEyLjU1NTcgMzAuMjA5MSAxMi42NDA3IDMwLjE3MzMgMTIuNjg4MUMzMC4xNDE0IDEyLjczNTUgMzAuMDg1NiAxMi43OTg4IDMwLjAwNiAxMi44Nzc4TDI4LjA3MDYgMTQuNzgwN0MyNy45MTkyIDE0LjkyNjkgMjcuNzYzOSAxNSAyNy42MDQ2IDE1QzI3LjQ0OTMgMTUgMjcuMzE1OSAxNC45NTQ2IDI3LjIwNDQgMTQuODYzN1oifSl9KX1mdW5jdGlvbiB5MCgpe3JldHVybiBfKCJzdmciLHt3aWR0aDoiMTQiLGhlaWdodDoiMTQiLHZpZXdCb3g6IjQ5IDMgMTYgMTIiLGZpbGw6ImN1cnJlbnRDb2xvciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjpfKCJwYXRoIix7ZDoiTTU3LjAwMjggMTEuOTQ5QzU2Ljg0OCAxMS45NDkgNTYuNzE3MiAxMS44OTg3IDU2LjYxMDMgMTEuNzk4QzU2LjUwMzUgMTEuNjkzOSA1Ni40NTAxIDExLjU3MDcgNTYuNDUwMSAxMS40Mjg0VjkuMDI4NjNMNTQuNDIxNiA3LjEwNzc2QzU0LjIyMjcgNi45MjAzNSA1NC4wOTU1IDYuNjk4MjUgNTQuMDQwMyA2LjQ0MTQ0QzUzLjk4NSA2LjE4MTE2IDU0LjAxMDggNS45Mjc4MiA1NC4xMTc2IDUuNjgxNDJDNTQuMjI4MiA1LjQzODQ5IDU0LjM5NzcgNS4yNDQxNCA1NC42MjYxIDUuMDk4MzlDNTQuODU4MyA0Ljk0OTE2IDU1LjExNjIgNC44NzQ1NCA1NS4zOTk5IDQuODc0NTRINTguMTEzN0M1OC40MjMyIDQuODc0NTQgNTguNjg0OCA0Ljk3NjkyIDU4Ljg5ODUgNS4xODE2OEM1OS4xMTU5IDUuMzgyOTYgNTkuMjI0NiA1LjYyOTM2IDU5LjIyNDYgNS45MjA4N1Y3Ljc2MzY2SDYwLjg5OTNDNjEuMDUwNCA3Ljc2MzY2IDYxLjE3OTQgNy44MTM5OSA2MS4yODYyIDcuOTE0NjNDNjEuMzkzMSA4LjAxNTI3IDYxLjQ0NjUgOC4xMzg0NyA2MS40NDY1IDguMjg0MjNDNjEuNDQ2NSA4LjQyNjUxIDYxLjM5MzEgOC41NDc5OCA2MS4yODYyIDguNjQ4NjJDNjEuMTc5NCA4Ljc0OTI2IDYxLjA1MDQgOC43OTk1OCA2MC44OTkzIDguNzk5NThINTguNjcxOUM1OC41MjA5IDguNzk5NTggNTguMzkwMSA4Ljc0OTI2IDU4LjI3OTUgOC42NDg2MkM1OC4xNzI3IDguNTQ3OTggNTguMTE5MiA4LjQyNjUxIDU4LjExOTIgOC4yODQyM1Y2Ljk4ODAzQzU4LjExOTIgNi45MTg2MiA1OC4wOTkgNi44NTQ0MiA1OC4wNTg0IDYuNzk1NDJDNTguMDE3OSA2LjczMjk1IDU3Ljk0NDIgNi43MDE3MiA1Ny44MzczIDYuNzAxNzJINTYuMDYzMkM1NS45OTMyIDYuNzAxNzIgNTUuOTQ1MyA2LjcyOTQ4IDU1LjkxOTUgNi43ODUwMUM1NS44OTc0IDYuODM3MDYgNTUuOTA4NCA2Ljg4NzM5IDU1Ljk1MjYgNi45MzU5N0w1Ny40MDA3IDguNDU2MDFDNTcuNTAzOSA4LjU2MzYgNTcuNTU1NSA4LjY4MTU5IDU3LjU1NTUgOC44MDk5OVYxMS40Mjg0QzU3LjU1NTUgMTEuNTcwNyA1Ny41MDAyIDExLjY5MzkgNTcuMzg5NyAxMS43OThDNTcuMjgyOCAxMS44OTg3IDU3LjE1MzggMTEuOTQ5IDU3LjAwMjggMTEuOTQ5Wk01My4wMDEyIDE0QzUyLjU4NDggMTQgNTIuMTk0MiAxMy45MjcxIDUxLjgyOTUgMTMuNzgxNEM1MS40Njg0IDEzLjYzNTYgNTEuMTQ5NiAxMy40MzI2IDUwLjg3MzMgMTMuMTcyM0M1MC42MDA2IDEyLjkxMiA1MC4zODY5IDEyLjYxMTggNTAuMjMyMSAxMi4yNzE3QzUwLjA3NzQgMTEuOTI4MiA1MCAxMS41NjAzIDUwIDExLjE2ODFDNTAgMTAuNzc2IDUwLjA3NzQgMTAuNDA5OSA1MC4yMzIxIDEwLjA2OThDNTAuMzg2OSA5LjcyNjE4IDUwLjYwMDYgOS40MjQyNiA1MC44NzMzIDkuMTYzOThDNTEuMTQ5NiA4LjkwMzcgNTEuNDY4NCA4LjcwMDY4IDUxLjgyOTUgOC41NTQ5MkM1Mi4xOTQyIDguNDA5MTYgNTIuNTg0OCA4LjMzNjI4IDUzLjAwMTIgOC4zMzYyOEM1My40MjEyIDguMzM2MjggNTMuODExOCA4LjQwOTE2IDU0LjE3MjkgOC41NTQ5MkM1NC41Mzc3IDguNzAwNjggNTQuODU2NCA4LjkwMzcgNTUuMTI5MSA5LjE2Mzk4QzU1LjQwNTQgOS40MjQyNiA1NS42MjEgOS43MjYxOCA1NS43NzU4IDEwLjA2OThDNTUuOTMwNSAxMC40MDk5IDU2LjAwNzkgMTAuNzc2IDU2LjAwNzkgMTEuMTY4MUM1Ni4wMDc5IDExLjU2MDMgNTUuOTMwNSAxMS45MjgyIDU1Ljc3NTggMTIuMjcxN0M1NS42MjEgMTIuNjExOCA1NS40MDU0IDEyLjkxMiA1NS4xMjkxIDEzLjE3MjNDNTQuODU2NCAxMy40MzI2IDU0LjUzNzcgMTMuNjM1NiA1NC4xNzI5IDEzLjc4MTRDNTMuODExOCAxMy45MjcxIDUzLjQyMTIgMTQgNTMuMDAxMiAxNFpNNTMuMDAxMiAxMy4yNjZDNTMuNDEwMiAxMy4yNjYgNTMuNzgyMyAxMy4xNzA2IDU0LjExNzYgMTIuOTc5N0M1NC40NTY2IDEyLjc5MjMgNTQuNzI1NiAxMi41NDA3IDU0LjkyNDYgMTIuMjI0OUM1NS4xMjczIDExLjkwNTYgNTUuMjI4NiAxMS41NTM0IDU1LjIyODYgMTEuMTY4MUM1NS4yMjg2IDEwLjc4MjkgNTUuMTI3MyAxMC40MzI0IDU0LjkyNDYgMTAuMTE2NkM1NC43MjU2IDkuNzk3MzMgNTQuNDU2NiA5LjU0Mzk5IDU0LjExNzYgOS4zNTY1OUM1My43ODIzIDkuMTY1NzEgNTMuNDEwMiA5LjA3MDI4IDUzLjAwMTIgOS4wNzAyOEM1Mi41OTU5IDkuMDcwMjggNTIuMjIzNyA5LjE2NTcxIDUxLjg4NDcgOS4zNTY1OUM1MS41NDk0IDkuNTQzOTkgNTEuMjgwNCA5Ljc5NzMzIDUxLjA3NzggMTAuMTE2NkM1MC44Nzg4IDEwLjQzMjQgNTAuNzc5MyAxMC43ODI5IDUwLjc3OTMgMTEuMTY4MUM1MC43NzkzIDExLjU1MzQgNTAuODc4OCAxMS45MDU2IDUxLjA3NzggMTIuMjI0OUM1MS4yODA0IDEyLjU0MDcgNTEuNTQ5NCAxMi43OTIzIDUxLjg4NDcgMTIuOTc5N0M1Mi4yMjM3IDEzLjE3MDYgNTIuNTk1OSAxMy4yNjYgNTMuMDAxMiAxMy4yNjZaTTYyLjQ4MDEgOS42MTE2NkM2Mi4zNjIyIDkuNTE0NDkgNjIuMzAxNCA5LjQxNTU4IDYyLjI5NzcgOS4zMTQ5NEM2Mi4yOTc3IDkuMjEwODMgNjIuMzMwOCA5LjEyNDA3IDYyLjM5NzIgOS4wNTQ2NkM2Mi40NjcyIDguOTg1MjUgNjIuNTUzOCA4Ljk0NTM0IDYyLjY1NjkgOC45MzQ5M0M2Mi43NjM4IDguOTIxMDUgNjIuODY4OCA4Ljk1NTc1IDYyLjk3MiA5LjAzOTA0QzYzLjI4ODkgOS4zMDI3OSA2My41Mzk0IDkuNjE2ODcgNjMuNzIzNiA5Ljk4MTI2QzYzLjkwNzkgMTAuMzQ1NyA2NCAxMC43NDEzIDY0IDExLjE2ODFDNjQgMTEuNTYwMyA2My45MjI2IDExLjkyODIgNjMuNzY3OSAxMi4yNzE3QzYzLjYxMzEgMTIuNjExOCA2My4zOTc2IDEyLjkxMiA2My4xMjEyIDEzLjE3MjNDNjIuODQ4NSAxMy40MzI2IDYyLjUyOTggMTMuNjM1NiA2Mi4xNjUgMTMuNzgxNEM2MS44MDM5IDEzLjkyNzEgNjEuNDE1MiAxNCA2MC45OTg4IDE0QzYwLjU4MjQgMTQgNjAuMTkxOSAxMy45MjcxIDU5LjgyNzEgMTMuNzgxNEM1OS40NjIzIDEzLjYzNTYgNTkuMTQxNyAxMy40MzI2IDU4Ljg2NTQgMTMuMTcyM0M1OC41OTI3IDEyLjkxMiA1OC4zNzkgMTIuNjExOCA1OC4yMjQyIDEyLjI3MTdDNTguMDY5NSAxMS45MjgyIDU3Ljk5MjEgMTEuNTYwMyA1Ny45OTIxIDExLjE2ODFDNTcuOTkyMSAxMC45NjM0IDU4LjAxNDIgMTAuNzY1NiA1OC4wNTg0IDEwLjU3NDdDNTguMTA2MyAxMC4zODA0IDU4LjE3MjcgMTAuMTkzIDU4LjI1NzQgMTAuMDEyNUM1OC4zMDkgOS45MDE0NCA1OC4zODA4IDkuODMwMyA1OC40NzMgOS43OTkwNkM1OC41Njg4IDkuNzY0MzYgNTguNjYyNyA5Ljc2NDM2IDU4Ljc1NDggOS43OTkwNkM1OC44NTA2IDkuODMwMyA1OC45MjI1IDkuODkyNzYgNTguOTcwNCA5Ljk4NjQ3QzU5LjAxODMgMTAuMDgwMiA1OS4wMTA5IDEwLjE5ODIgNTguOTQ4MyAxMC4zNDA0QzU4LjgzMDQgMTAuNjAwNyA1OC43NzE0IDEwLjg3NjYgNTguNzcxNCAxMS4xNjgxQzU4Ljc3MTQgMTEuNTUzNCA1OC44NzA5IDExLjkwNTYgNTkuMDY5OSAxMi4yMjQ5QzU5LjI3MjUgMTIuNTQwNyA1OS41NDE1IDEyLjc5MjMgNTkuODc2OCAxMi45Nzk3QzYwLjIxNTggMTMuMTcwNiA2MC41ODk4IDEzLjI2NiA2MC45OTg4IDEzLjI2NkM2MS40MDc4IDEzLjI2NiA2MS43OCAxMy4xNzA2IDYyLjExNTMgMTIuOTc5N0M2Mi40NTA2IDEyLjc5MjMgNjIuNzE3NyAxMi41NDA3IDYyLjkxNjcgMTIuMjI0OUM2My4xMTk0IDExLjkwNTYgNjMuMjIwNyAxMS41NTM0IDYzLjIyMDcgMTEuMTY4MUM2My4yMjA3IDEwLjg1OTMgNjMuMTUyNSAxMC41NzEyIDYzLjAxNjIgMTAuMzA0QzYyLjg4MzUgMTAuMDMzMyA2Mi43MDQ4IDkuODAyNTMgNjIuNDgwMSA5LjYxMTY2Wk02MC45OTg4IDYuMjc0ODZDNjAuNzc0IDYuMjc0ODYgNjAuNTY5NSA2LjIyNDU0IDYwLjM4NTMgNi4xMjM4OUM2MC4yMDExIDYuMDE5NzggNjAuMDUzNyA1Ljg4MjcgNTkuOTQzMiA1LjcxMjY1QzU5LjgzNjMgNS41MzkxMyA1OS43ODI5IDUuMzQ2NTIgNTkuNzgyOSA1LjEzNDgzQzU5Ljc4MjkgNC45MjY2IDU5LjgzNjMgNC43Mzc0NiA1OS45NDMyIDQuNTY3NDFDNjAuMDUzNyA0LjM5Mzg5IDYwLjIwMTEgNC4yNTY4MSA2MC4zODUzIDQuMTU2MTdDNjAuNTY5NSA0LjA1MjA2IDYwLjc3NCA0IDYwLjk5ODggNEM2MS4yMTk5IDQgNjEuNDIwNyA0LjA1MjA2IDYxLjYwMTMgNC4xNTYxN0M2MS43ODE4IDQuMjU2ODEgNjEuOTI1NSA0LjM5Mzg5IDYyLjAzMjQgNC41Njc0MUM2Mi4xNDI5IDQuNzM3NDYgNjIuMTk4MiA0LjkyNjYgNjIuMTk4MiA1LjEzNDgzQzYyLjE5ODIgNS4zNDY1MiA2Mi4xNDI5IDUuNTM5MTMgNjIuMDMyNCA1LjcxMjY1QzYxLjkyNTUgNS44ODI3IDYxLjc4MTggNi4wMTk3OCA2MS42MDEzIDYuMTIzODlDNjEuNDIwNyA2LjIyNDU0IDYxLjIxOTkgNi4yNzQ4NiA2MC45OTg4IDYuMjc0ODZaIn0pfSl9ZnVuY3Rpb24gaDAoKXtyZXR1cm4gXygic3ZnIix7d2lkdGg6IjE2IixoZWlnaHQ6IjE0Iix2aWV3Qm94OiI3MCA1IDE4IDkiLGZpbGw6ImN1cnJlbnRDb2xvciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjpfKCJwYXRoIix7ZDoiTTg1LjU3MiAxMi4xMDM4Qzg2LjA2IDEyLjEwMzggODYuNDIwNyAxMS45ODkyIDg2LjY1NDIgMTEuNzYwMUM4Ni44ODQ3IDExLjUyODEgODcgMTEuMTY0MSA4NyAxMC42NjgxVjEwLjExMTJDODcgOS43NjkwMSA4Ni45MjA3IDkuNDYzMDIgODYuNzYyIDkuMTkzMjlDODYuNjAzMyA4LjkyMDY1IDg2LjM3NTggOC42OTczMyA4Ni4wNzk0IDguNTIzMzFDODUuNzgwMSA4LjM0OTI5IDg1LjQyMjMgOC4yMzc2MiA4NS4wMDYyIDguMTg4MzJMODMuMDE2OCA3Ljk1MzM5TDgxLjE5ODEgNi44NDgzNUM4MC45MjI3IDYuNjgwMTMgODAuNjYwOCA2LjU0MjM3IDgwLjQxMjMgNi40MzUwNUM4MC4xNjA4IDYuMzI0ODQgNzkuODk3NCA2LjIzNzgzIDc5LjYyMTkgNi4xNzQwMkM3OS4zNDY1IDYuMTEwMjEgNzkuMDM4MiA2LjA2NTI2IDc4LjY5NjkgNi4wMzkxNUM3OC4zNTI2IDYuMDEzMDUgNzcuOTUxNCA2IDc3LjQ5MzQgNkg3Ni44MTA4Qzc2LjM4ODcgNiA3NS45OTUgNi4wNDkzMSA3NS42Mjk4IDYuMTQ3OTJDNzUuMjYxNiA2LjI0MzYzIDc0LjkxODggNi4zNzEyNSA3NC42MDE1IDYuNTMwNzZDNzQuMjgxMSA2LjY5MDI4IDczLjk4NjIgNi44NjU3NiA3My43MTY4IDcuMDU3MThDNzMuNDQ0NCA3LjI0ODYgNzMuMTk1OSA3LjQzNzEyIDcyLjk3MTQgNy42MjI3NUw3Mi4yNTc0IDcuODUzMzNDNzEuODMyMyA3Ljk4Njc0IDcxLjUxNjQgOC4xODM5NyA3MS4zMDk5IDguNDQ1QzcxLjEwMzMgOC43MDMxMyA3MSA5LjAzMzc3IDcxIDkuNDM2OTJWMTAuNjQyQzcxIDExLjE0NjcgNzEuMTE1MyAxMS41MTY1IDcxLjM0NTggMTEuNzUxNEM3MS41NzYzIDExLjk4NjMgNzEuOTM3IDEyLjEwMzggNzIuNDI4IDEyLjEwMzhINzIuNzE1NEM3Mi43MDA0IDEyLjAzNzEgNzIuNjg4NSAxMS45NzA0IDcyLjY3OTUgMTEuOTAzN0M3Mi42NzA1IDExLjgzNDEgNzIuNjY2IDExLjc2NDUgNzIuNjY2IDExLjY5NDhDNzIuNjY2IDExLjM1NTUgNzIuNzQ5OCAxMS4wNDk1IDcyLjkxNzUgMTAuNzc2OUM3My4wODUxIDEwLjUwNDIgNzMuMzExMiAxMC4yODgyIDczLjU5NTYgMTAuMTI4N0M3My44NzcgOS45NjYyMyA3NC4xOTI4IDkuODg1MDIgNzQuNTQzMSA5Ljg4NTAyQzc0Ljg5MDQgOS44ODUwMiA3NS4yMDYyIDkuOTY2MjMgNzUuNDkwNiAxMC4xMjg3Qzc1Ljc3MiAxMC4yODgyIDc1Ljk5NjUgMTAuNTA0MiA3Ni4xNjQyIDEwLjc3NjlDNzYuMzMxOCAxMS4wNDk1IDc2LjQxNTcgMTEuMzU1NSA3Ni40MTU3IDExLjY5NDhDNzYuNDE1NyAxMS43NjQ1IDc2LjQxMTIgMTEuODM0MSA3Ni40MDIyIDExLjkwMzdDNzYuMzkzMiAxMS45NzA0IDc2LjM4MjcgMTIuMDM3MSA3Ni4zNzA4IDEyLjEwMzhIODEuNjM4MkM4MS42MjAzIDEyLjAzNzEgODEuNjA4MyAxMS45NzA0IDgxLjYwMjMgMTEuOTAzN0M4MS41OTMzIDExLjgzNDEgODEuNTg4OCAxMS43NjQ1IDgxLjU4ODggMTEuNjk0OEM4MS41ODg4IDExLjM1NTUgODEuNjcyNyAxMS4wNDk1IDgxLjg0MDMgMTAuNzc2OUM4Mi4wMDUgMTAuNTA0MiA4Mi4yMjk1IDEwLjI4ODIgODIuNTEzOSAxMC4xMjg3QzgyLjc5NTMgOS45NjYyMyA4My4xMTExIDkuODg1MDIgODMuNDYxNCA5Ljg4NTAyQzgzLjgxMTcgOS44ODUwMiA4NC4xMjkgOS45NjYyMyA4NC40MTM0IDEwLjEyODdDODQuNjk0OCAxMC4yODgyIDg0LjkxOTQgMTAuNTA0MiA4NS4wODcgMTAuNzc2OUM4NS4yNTE3IDExLjA0OTUgODUuMzM0IDExLjM1NTUgODUuMzM0IDExLjY5NDhDODUuMzM0IDExLjc2NDUgODUuMzMxIDExLjgzNDEgODUuMzI1IDExLjkwMzdDODUuMzE2IDExLjk3MDQgODUuMzA0MSAxMi4wMzcxIDg1LjI4OTEgMTIuMTAzOEg4NS41NzJaTTgzLjQ2MTQgMTNDODMuNzEyOSAxMyA4My45NDA0IDEyLjk0MiA4NC4xNDQgMTIuODI2Qzg0LjM0NzYgMTIuNzEgODQuNTA5MiAxMi41NTMzIDg0LjYyOSAxMi4zNTYxQzg0Ljc0ODcgMTIuMTU4OSA4NC44MDg2IDExLjkzODUgODQuODA4NiAxMS42OTQ4Qzg0LjgwODYgMTEuNDUxMiA4NC43NDg3IDExLjIzMDggODQuNjI5IDExLjAzMzZDODQuNTA5MiAxMC44MzYzIDg0LjM0NzYgMTAuNjc5NyA4NC4xNDQgMTAuNTYzN0M4My45NDA0IDEwLjQ0NzcgODMuNzEyOSAxMC4zODk3IDgzLjQ2MTQgMTAuMzg5N0M4My4yMDY5IDEwLjM4OTcgODIuOTc3OSAxMC40NDc3IDgyLjc3NDMgMTAuNTYzN0M4Mi41NzA4IDEwLjY3OTcgODIuNDA5MSAxMC44MzYzIDgyLjI4OTQgMTEuMDMzNkM4Mi4xNjk2IDExLjIzMDggODIuMTA5NyAxMS40NTEyIDgyLjEwOTcgMTEuNjk0OEM4Mi4xMDk3IDExLjkzODUgODIuMTY5NiAxMi4xNTg5IDgyLjI4OTQgMTIuMzU2MUM4Mi40MDkxIDEyLjU1MzMgODIuNTcwOCAxMi43MSA4Mi43NzQzIDEyLjgyNkM4Mi45Nzc5IDEyLjk0MiA4My4yMDY5IDEzIDgzLjQ2MTQgMTNaTTc0LjU0MzEgMTNDNzQuNzk0NiAxMyA3NS4wMjIxIDEyLjk0MiA3NS4yMjU3IDEyLjgyNkM3NS40MjkyIDEyLjcxIDc1LjU5MDkgMTIuNTUzMyA3NS43MTA2IDEyLjM1NjFDNzUuODMwNCAxMi4xNTg5IDc1Ljg5MDMgMTEuOTM4NSA3NS44OTAzIDExLjY5NDhDNzUuODkwMyAxMS40NTEyIDc1LjgzMDQgMTEuMjMwOCA3NS43MTA2IDExLjAzMzZDNzUuNTkwOSAxMC44MzYzIDc1LjQyOTIgMTAuNjc5NyA3NS4yMjU3IDEwLjU2MzdDNzUuMDIyMSAxMC40NDc3IDc0Ljc5NDYgMTAuMzg5NyA3NC41NDMxIDEwLjM4OTdDNzQuMjg4NiAxMC4zODk3IDc0LjA1OTYgMTAuNDQ3NyA3My44NTYgMTAuNTYzN0M3My42NTI0IDEwLjY3OTcgNzMuNDkwOCAxMC44MzYzIDczLjM3MSAxMS4wMzM2QzczLjI1MTMgMTEuMjMwOCA3My4xOTE0IDExLjQ1MTIgNzMuMTkxNCAxMS42OTQ4QzczLjE5MTQgMTEuOTM4NSA3My4yNTEzIDEyLjE1ODkgNzMuMzcxIDEyLjM1NjFDNzMuNDkwOCAxMi41NTMzIDczLjY1MjQgMTIuNzEgNzMuODU2IDEyLjgyNkM3NC4wNTk2IDEyLjk0MiA3NC4yODg2IDEzIDc0LjU0MzEgMTNaIn0pfSl9ZnVuY3Rpb24gRjIoe3NpemU6Qz0xOCxzdHJva2VXaWR0aDpMPTJ9KXtyZXR1cm4gXygic3ZnIix7eG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDpDLGhlaWdodDpDLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOkwsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W18oInBhdGgiLHtkOiJNMyAxMmE5IDkgMCAxIDAgOS05IDkuNzUgOS43NSAwIDAgMC02Ljc0IDIuNzRMMyA4In0pLF8oInBhdGgiLHtkOiJNMyAzdjVoNSJ9KV19KX12YXIgTjM9IkFjY2Vzc2liaWxpdHkgdW5hdmFpbGFibGUgb24gdGhpcyBzaW11bGF0b3IuIjtmdW5jdGlvbiBjMihDKXtyZXR1cm4gQz8uZXJyb3JzPy5pbmNsdWRlcyhOMyk/PyExfWZ1bmN0aW9uIHQyKEMsTCl7aWYoQz09PUwpcmV0dXJuITA7aWYoQy5pZCE9PUwuaWR8fEMucGF0aCE9PUwucGF0aHx8Qy5sYWJlbCE9PUwubGFiZWx8fEMudmFsdWUhPT1MLnZhbHVlfHxDLnJvbGUhPT1MLnJvbGV8fEMudHlwZSE9PUwudHlwZXx8Qy5lbmFibGVkIT09TC5lbmFibGVkKXJldHVybiExO2xldCBOPUMuZnJhbWUsSz1MLmZyYW1lO3JldHVybiBOPT09S3x8Ti54PT09Sy54JiZOLnk9PT1LLnkmJk4ud2lkdGg9PT1LLndpZHRoJiZOLmhlaWdodD09PUsuaGVpZ2h0fWZ1bmN0aW9uIHMyKEMsTCl7bGV0IE49Qy5sYWJlbHx8Qy5yb2xlfHxgZWxlbWVudCAke0wrMX1gLEs9Qy5yb2xlfHxDLnR5cGU7cmV0dXJue2lkOkMuaWQscGF0aDpDLnBhdGgsbGFiZWw6Tix2YWx1ZTpDLnZhbHVlLHJvbGU6Syx0eXBlOkMudHlwZSxlbmFibGVkOkMuZW5hYmxlZCxmcmFtZTpDLmZyYW1lfX1mdW5jdGlvbiBLMyhDLEwpe2xldCBOPU1hdGgubWF4KDAsQy54KSxLPU1hdGgubWF4KDAsQy55KSxaPU1hdGgubWluKEwud2lkdGgsQy54K0Mud2lkdGgpLFg9TWF0aC5taW4oTC5oZWlnaHQsQy55K0MuaGVpZ2h0KSx3PU1hdGgubWF4KDAsWi1OKSwkPU1hdGgubWF4KDAsWC1LKTtyZXR1cm4gdz4wJiYkPjA/e3g6Tix5Okssd2lkdGg6dyxoZWlnaHQ6JH06bnVsbH1mdW5jdGlvbiBmMShDKXtyZXR1cm4gQy5pZH1mdW5jdGlvbiBTMChDKXtyZXR1cm5gJHtDLnh9LCR7Qy55fSAke0Mud2lkdGh9eCR7Qy5oZWlnaHR9YH1mdW5jdGlvbiBfMyhDKXtyZXR1cm5bYEFYIGxhYmVsOiAke0MubGFiZWx8fCJVbmxhYmVsZWQifWAsQy5yb2xlP2Byb2xlOiAke0Mucm9sZX1gOiIiLEMudHlwZT9gdHlwZTogJHtDLnR5cGV9YDoiIixDLnZhbHVlP2B2YWx1ZTogJHtDLnZhbHVlfWA6IiIsQy5pZD9gaWQ6ICR7Qy5pZH1gOiIiLGBwYXRoOiAke0MucGF0aH1gLGBmcmFtZTogJHtTMChDLmZyYW1lKX1gXS5maWx0ZXIoQm9vbGVhbikuam9pbigiOyAiKX1mdW5jdGlvbiBaMyhDKXtsZXRbTCxOXT1NKG51bGwpLFtLLFpdPU0oIkFYIG9mZiIpO3JldHVybiBFKCgpPT57aWYoIUMpe04obnVsbCksWigiQVggb2ZmIik7cmV0dXJufU4obnVsbCksWigiQVggd2FpdGluZyIpO2xldCBYPW5ldyBFdmVudFNvdXJjZShDKTtyZXR1cm4gWC5vbm1lc3NhZ2U9KHcpPT57dHJ5e2xldCAkPUpTT04ucGFyc2Uody5kYXRhKTtOKCQpLFooYzIoJCk/IkFYIHVuYXZhaWxhYmxlIjpgJHskLmVsZW1lbnRzLmxlbmd0aH0gQVggZWxlbWVudHNgKX1jYXRjaHtaKCJBWCBwYXJzZSBlcnJvciIpfX0sWC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKCk9PntaKCJBWCByZWNvbm5lY3RpbmciKX0pLCgpPT5YLmNsb3NlKCl9LFtDXSkse3NuYXBzaG90Okwsc3RhdHVzOkt9fXZhciBtMD1oMSh7c25hcHNob3Q6bnVsbCxzdGF0dXM6IkFYIG9mZiJ9KSx2MD1oMShudWxsKTtmdW5jdGlvbiBDMigpe3JldHVybiB4MShtMCl9ZnVuY3Rpb24gbjIoKXtsZXQgQz14MSh2MCk7aWYoIUMpdGhyb3cgRXJyb3IoIkFYIHNlbGVjdGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIik7cmV0dXJuIEN9dmFyIFgzPXQxKGZ1bmN0aW9uKHtlbGVtZW50OkwsaW5kZXg6TixzY3JlZW46SyxoaWdobGlnaHRlZDpaLHNlbGVjdGVkOlgsb25IaWdobGlnaHQ6dyxvblNlbGVjdDokfSl7bGV0IEo9ZjEoTCksRz1zMihMLE4pLHE9SzMoTC5mcmFtZSxLKTtpZighcSlyZXR1cm4gbnVsbDtsZXQgWT1fMyhHKTtyZXR1cm4gXygiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiZGF0YS1heC1rZXkiOkosImRhdGEtYXgtaWQiOkcuaWQsImRhdGEtYXgtcGF0aCI6Ry5wYXRoLCJkYXRhLWF4LWxhYmVsIjpHLmxhYmVsLCJkYXRhLWF4LXZhbHVlIjpHLnZhbHVlLCJkYXRhLWF4LXJvbGUiOkcucm9sZSwiZGF0YS1heC10eXBlIjpHLnR5cGUsImRhdGEtYXgtZW5hYmxlZCI6U3RyaW5nKEcuZW5hYmxlZCksImRhdGEtYXgtZnJhbWUiOlMwKEcuZnJhbWUpLCJkYXRhLWF4LXNlbGVjdGVkIjpTdHJpbmcoWCksImFyaWEtbGFiZWwiOkwubGFiZWx8fFksdGl0bGU6WSxvbkNsaWNrOigpPT4kKEopLG9uTW91c2VFbnRlcjooKT0+dyhKKSxvbk1vdXNlTGVhdmU6KCk9PncobnVsbCksY2xhc3NOYW1lOiJhYnNvbHV0ZSBib3gtYm9yZGVyIG1pbi13LXB4IG1pbi1oLXB4IHAtMCByb3VuZGVkLVszcHhdIGJvcmRlciBjdXJzb3ItcG9pbnRlciBwb2ludGVyLWV2ZW50cy1hdXRvIixzdHlsZTp7bGVmdDpgJHtxLngvSy53aWR0aCoxMDB9JWAsdG9wOmAke3EueS9LLmhlaWdodCoxMDB9JWAsd2lkdGg6YCR7cS53aWR0aC9LLndpZHRoKjEwMH0lYCxoZWlnaHQ6YCR7cS5oZWlnaHQvSy5oZWlnaHQqMTAwfSVgLGJvcmRlckNvbG9yOlg/IiM2MGE1ZmEiOlo/IiNmYmJmMjQiOiIjMzRkMzk5IixiYWNrZ3JvdW5kOlg/InJnYmEoOTYsMTY1LDI1MCwwLjI0KSI6Wj8icmdiYSgyNDUsMTU4LDExLDAuMjgpIjoicmdiYSgxNiwxODUsMTI5LDAuMTIpIn19KX0sKEMsTCk9PkMuaW5kZXg9PT1MLmluZGV4JiZDLmhpZ2hsaWdodGVkPT09TC5oaWdobGlnaHRlZCYmQy5zZWxlY3RlZD09PUwuc2VsZWN0ZWQmJkMub25IaWdobGlnaHQ9PT1MLm9uSGlnaGxpZ2h0JiZDLm9uU2VsZWN0PT09TC5vblNlbGVjdCYmQy5zY3JlZW4ud2lkdGg9PT1MLnNjcmVlbi53aWR0aCYmQy5zY3JlZW4uaGVpZ2h0PT09TC5zY3JlZW4uaGVpZ2h0JiZ0MihDLmVsZW1lbnQsTC5lbGVtZW50KSk7ZnVuY3Rpb24gdzMoKXtsZXR7c25hcHNob3Q6Q309QzIoKSx7aGlnaGxpZ2h0ZWRLZXk6TCxzZWxlY3RlZEtleTpOLHNldEhpZ2hsaWdodGVkS2V5Okssc2V0U2VsZWN0ZWRLZXk6Wn09bjIoKTtpZighQz8uc2NyZWVuLndpZHRofHwhQz8uc2NyZWVuLmhlaWdodClyZXR1cm4gbnVsbDtyZXR1cm4gXygiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIHotMTAgb3ZlcmZsb3ctaGlkZGVuIHBvaW50ZXItZXZlbnRzLW5vbmUiLGNoaWxkcmVuOkMuZWxlbWVudHMubWFwKChYLHcpPT57bGV0ICQ9ZjEoWCk7cmV0dXJuIF8oWDMse2VsZW1lbnQ6WCxpbmRleDp3LHNjcmVlbjpDLnNjcmVlbixoaWdobGlnaHRlZDokPT09TCxzZWxlY3RlZDokPT09TixvbkhpZ2hsaWdodDpLLG9uU2VsZWN0Olp9LCQpfSl9KX1mdW5jdGlvbiAkMyh7ZW5kcG9pbnQ6QyxjaGlsZHJlbjpMfSl7bGV0e3NuYXBzaG90Ok4sc3RhdHVzOkt9PVozKEMpLFtaLFhdPU0obnVsbCksW3csJF09TShudWxsKTtFKCgpPT57aWYoIUMpWChudWxsKSwkKG51bGwpfSxbQ10pO2xldCBKPU0xKCgpPT4oe3NuYXBzaG90Ok4sc3RhdHVzOkt9KSxbTixLXSksRz1NMSgoKT0+KHtoaWdobGlnaHRlZEtleTpaLHNlbGVjdGVkS2V5Oncsc2V0SGlnaGxpZ2h0ZWRLZXk6WCxzZXRTZWxlY3RlZEtleTokfSksW1osd10pO3JldHVybiBfKG0wLHt2YWx1ZTpKLGNoaWxkcmVuOl8odjAse3ZhbHVlOkcsY2hpbGRyZW46TH0pfSl9ZnVuY3Rpb24gRzMoe292ZXJsYXlFbmFibGVkOkMsc3RyZWFtaW5nOkwsb25Ub2dnbGVPdmVybGF5Ok59KXtsZXR7c3RhdHVzOkt9PUMyKCksW1osWF09TSghMSksdz1DJiZMO3JldHVybiBfKEQxLkJ1dHRvbix7ImFyaWEtbGFiZWwiOkM/IkhpZGUgYWNjZXNzaWJpbGl0eSBvdmVybGF5IjoiU2hvdyBhY2Nlc3NpYmlsaXR5IG92ZXJsYXkiLCJhcmlhLXByZXNzZWQiOkMsdGl0bGU6SyxvbkNsaWNrOk4sb25Nb3VzZUVudGVyOigpPT5YKCEwKSxvbk1vdXNlTGVhdmU6KCk9PlgoITEpLHN0eWxlOnc/e2JhY2tncm91bmQ6Wj8icmdiYSgyNTUsMjU1LDI1NSwwLjEyKSI6InJnYmEoMjU1LDI1NSwyNTUsMC4wOCkiLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuOTUpIn06dm9pZCAwLGNoaWxkcmVuOl8oInN2ZyIse3dpZHRoOiIxOSIsaGVpZ2h0OiIxOSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltfKCJwYXRoIix7ZDoiTTMgOFY1YTIgMiAwIDAgMSAyLTJoMyJ9KSxfKCJwYXRoIix7ZDoiTTE2IDNoM2EyIDIgMCAwIDEgMiAydjMifSksXygicGF0aCIse2Q6Ik0yMSAxNnYzYTIgMiAwIDAgMS0yIDJoLTMifSksXygicGF0aCIse2Q6Ik04IDIxSDVhMiAyIDAgMCAxLTItMnYtMyJ9KSxfKCJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMy41In0pXX0pfSl9ZnVuY3Rpb24gSjMoQyl7dHJ5e2xldCBMPUpTT04ucGFyc2UoQyksTj1bXTtmb3IobGV0W0ssWl1vZiBPYmplY3QuZW50cmllcyhMLmRldmljZXM/P3t9KSl7bGV0IFg9Sy5yZXBsYWNlKC9eY29tXC5hcHBsZVwuQ29yZVNpbXVsYXRvclwuU2ltUnVudGltZVwuLywiIikucmVwbGFjZSgvLS9nLCIuIik7Zm9yKGxldCB3IG9mIFopaWYody5pc0F2YWlsYWJsZSlOLnB1c2goe3VkaWQ6dy51ZGlkLG5hbWU6dy5uYW1lLHN0YXRlOncuc3RhdGUscnVudGltZTpYfSl9cmV0dXJuIE59Y2F0Y2h7cmV0dXJuW119fWZ1bmN0aW9uIEwyKEMpe2xldCBMPUMudG9Mb3dlckNhc2UoKTtpZihMLmluY2x1ZGVzKCJpcGhvbmUiKSlyZXR1cm4gMDtpZihMLmluY2x1ZGVzKCJpcGFkIikpcmV0dXJuIDE7aWYoTC5pbmNsdWRlcygid2F0Y2giKSlyZXR1cm4gMjtpZihMLmluY2x1ZGVzKCJ2aXNpb24iKSlyZXR1cm4gMztyZXR1cm4gNH1mdW5jdGlvbiBOMihDKXtsZXQgTD1DLnRvTG93ZXJDYXNlKCk7aWYoTC5zdGFydHNXaXRoKCJpb3MiKSlyZXR1cm4gMDtpZihMLnN0YXJ0c1dpdGgoImlwYWRvcyIpKXJldHVybiAxO2lmKEwuc3RhcnRzV2l0aCgid2F0Y2hvcyIpKXJldHVybiAyO2lmKEwuc3RhcnRzV2l0aCgidmlzaW9ub3MiKXx8TC5zdGFydHNXaXRoKCJ4cm9zIikpcmV0dXJuIDM7cmV0dXJuIDR9ZnVuY3Rpb24gSTEoQyl7bGV0IE49d2luZG93Ll9fU0lNX1BSRVZJRVdfXz8uYmFzZVBhdGg/Pyh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXC8rJC8sIiIpfHwiLyIpO3JldHVybiBOPT09Ii8iP2AvJHtDfWA6YCR7Tn0vJHtDfWB9ZnVuY3Rpb24gWTMoe2RldmljZXM6Qyxsb2FkaW5nOkwsZXJyb3I6TixvblJlZnJlc2g6S30pe2xldFtaLFhdPU0obnVsbCksW3csJF09TShudWxsKSxKPVAoYXN5bmMoWSk9PntpZihaKXJldHVybjtYKFkudWRpZCksJChudWxsKTt0cnl7bGV0IEg9YCR7STEoImFwaSIpfT9kZXZpY2U9JHtlbmNvZGVVUklDb21wb25lbnQoWS51ZGlkKX1gLFE9KGFzeW5jKCk9PntsZXQgQT1EYXRlLm5vdygpKzkwMDAwO3doaWxlKERhdGUubm93KCk8QSl7dHJ5e2xldCBJPWF3YWl0IGZldGNoKEgse2NhY2hlOiJuby1zdG9yZSJ9KTtpZihJLm9rJiZhd2FpdCBJLmpzb24oKSl7bGV0IGg9bmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7cmV0dXJuIGguc2VhcmNoUGFyYW1zLnNldCgiZGV2aWNlIixZLnVkaWQpLHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oaC50b1N0cmluZygpKSwhMH19Y2F0Y2h7fWF3YWl0IG5ldyBQcm9taXNlKChJKT0+c2V0VGltZW91dChJLDQwMCkpfXJldHVybiExfSkoKSxrPUkxKCJncmlkL2FwaS9zdGFydCIpLGI9ZmV0Y2goayx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe3VkaWQ6WS51ZGlkfSl9KS50aGVuKGFzeW5jKEEpPT57bGV0IEk9YXdhaXQgQS5qc29uKCkuY2F0Y2goKCk9Pih7fSkpO2lmKCFBLm9rfHwhSS5vayl0aHJvdyBFcnJvcihJLmVycm9yPz9gSFRUUCAke0Euc3RhdHVzfWApfSk7aWYoYXdhaXQgUHJvbWlzZS5yYWNlKFtRLGIudGhlbigoKT0+InN0YXJ0ZWQiKV0pPT09ITApcmV0dXJuO2lmKGF3YWl0IFEpcmV0dXJuO3Rocm93IEVycm9yKCJzZXJ2ZS1zaW0gc3RhcnRlZCBidXQgbm8gc3RyZWFtIHN0YXRlIGFwcGVhcmVkIil9Y2F0Y2goSCl7JChIIGluc3RhbmNlb2YgRXJyb3I/SC5tZXNzYWdlOiJGYWlsZWQgdG8gc3RhcnQgc3RyZWFtIiksWChudWxsKX19LFtaXSksRz1uZXcgTWFwO2ZvcihsZXQgWSBvZiBDKXtsZXQgSD1HLmdldChZLnJ1bnRpbWUpO2lmKCFIKUg9W10sRy5zZXQoWS5ydW50aW1lLEgpO0gucHVzaChZKX1mb3IobGV0IFkgb2YgRy52YWx1ZXMoKSlZLnNvcnQoKEgsUSk9PntsZXQgaz1ILnN0YXRlPT09IkJvb3RlZCI/MDoxLGI9US5zdGF0ZT09PSJCb290ZWQiPzA6MTtpZihrIT09YilyZXR1cm4gay1iO3JldHVybiBMMihILm5hbWUpLUwyKFEubmFtZSl8fEgubmFtZS5sb2NhbGVDb21wYXJlKFEubmFtZSl9KTtsZXQgcT1bLi4uRy5lbnRyaWVzKCldLnNvcnQoKFtZXSxbSF0pPT5OMihZKS1OMihIKXx8WS5sb2NhbGVDb21wYXJlKEgpKTtyZXR1cm4gXygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBoLXNjcmVlbiBiZy1wYWdlIHAtNiBnYXAtMyBmb250LXN5c3RlbSBib3gtYm9yZGVyIixjaGlsZHJlbjpfKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0zIHRleHQtY2VudGVyIixjaGlsZHJlbjpbXygiaDEiLHtjbGFzc05hbWU6InRleHQtWzE4cHhdIG0tMCB0ZXh0LXdoaXRlLzkwIixjaGlsZHJlbjoiTm8gc2VydmUtc2ltIHN0cmVhbSBydW5uaW5nIn0pLF8oInAiLHtjbGFzc05hbWU6InRleHQtd2hpdGUvNTUgdGV4dC1bMTRweF0gbWF4LXctMTIwIixjaGlsZHJlbjpbIlBpY2sgYSBzaW11bGF0b3IgdG8gYm9vdCwgb3Igc3RhcnQgb25lIHlvdXJzZWxmIHdpdGgiLCIgIixfKCJjb2RlIix7Y2xhc3NOYW1lOiJiZy1bIzIyMl0gcHgtMS41IHB5LTAuNSByb3VuZGVkIHRleHQtWzEzcHhdIixjaGlsZHJlbjoiYnVueCBzZXJ2ZS1zaW0gLS1kZXRhY2gifSksIi4iXX0pLF8oImRpdiIse2NsYXNzTmFtZToidy1mdWxsIG1heC13LTkwIG10LTIgYmctcGFuZWwgYm9yZGVyIGJvcmRlci13aGl0ZS8xMiByb3VuZGVkLVsxMHB4XSBwLTEgZm9udC1tb25vIHRleHQtWzEzcHhdIHRleHQtd2hpdGUvOTAgdGV4dC1sZWZ0IG1heC1oLVs3MHZoXSBvdmVyZmxvdy15LWF1dG8gbWluLWgtMCIsY2hpbGRyZW46W18oImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTIuNSBweS0xLjUgdGV4dC1bMTFweF0gdGV4dC13aGl0ZS82NSIsY2hpbGRyZW46W18oInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtc2VtaWJvbGQiLGNoaWxkcmVuOiJTaW11bGF0b3JzIn0pLF8oImJ1dHRvbiIse29uQ2xpY2s6SyxkaXNhYmxlZDpMLGNsYXNzTmFtZToiYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgdGV4dC1hY2NlbnQgdGV4dC1bMTFweF0gY3Vyc29yLXBvaW50ZXIgcC0wIixjaGlsZHJlbjpMPyIuLi4iOiJSZWZyZXNoIn0pXX0pLE4mJl8oImRpdiIse2NsYXNzTmFtZToicHgtMi41IHB5LTEuNSB0ZXh0LWRhbmdlciB0ZXh0LVsxMXB4XSIsY2hpbGRyZW46Tn0pLHcmJl8oImRpdiIse2NsYXNzTmFtZToicHgtMi41IHB5LTEuNSB0ZXh0LWRhbmdlciB0ZXh0LVsxMXB4XSIsY2hpbGRyZW46d30pLCFMJiYhTiYmQy5sZW5ndGg9PT0wJiZfKCJkaXYiLHtjbGFzc05hbWU6InAtMyB0ZXh0LXdoaXRlLzQwIHRleHQtWzExcHhdIHRleHQtY2VudGVyIixjaGlsZHJlbjoiTm8gYXZhaWxhYmxlIHNpbXVsYXRvcnMgZm91bmQifSkscS5tYXAoKFtZLEhdKT0+XygiZGl2Iix7Y2hpbGRyZW46W18oImRpdiIse2NsYXNzTmFtZToicHgtMi41IHB0LTEuNSBwYi0wLjUgdGV4dC1bMTBweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlLzQwIHVwcGVyY2FzZSB0cmFja2luZy1bMC4wOGVtXSIsY2hpbGRyZW46WX0pLEgubWFwKChRKT0+e2xldCBrPVo9PT1RLnVkaWQsYj1aIT09bnVsbCYmIWssVj1RLnN0YXRlPT09IkJvb3RlZCI7cmV0dXJuIF8oImRpdiIse2NsYXNzTmFtZTpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMi41IHB5LTEuNSByb3VuZGVkLW1kIHRyYW5zaXRpb24tY29sb3JzICR7Yj8iY3Vyc29yLWRlZmF1bHQgb3BhY2l0eS01MCI6ImN1cnNvci1wb2ludGVyIGhvdmVyOmJnLXdoaXRlLzgifWAsb25DbGljazooKT0+e2lmKCFiKUooUSl9LGNoaWxkcmVuOltfKCJzcGFuIix7Y2xhc3NOYW1lOiJzaXplLTEuNSByb3VuZGVkLWZ1bGwgc2hyaW5rLTAiLHN0eWxlOntiYWNrZ3JvdW5kOlY/IiM0YWRlODAiOiIjNDQ0In19KSxfKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4LTEgdGV4dC1sZWZ0IixjaGlsZHJlbjpRLm5hbWV9KSxfKCJzcGFuIix7Y2xhc3NOYW1lOmB0ZXh0LVsxMHB4XSAke2s/InRleHQtYWNjZW50IjoidGV4dC13aGl0ZS81NSJ9YCxjaGlsZHJlbjprP1Y/IlN0YXJ0aW5nLi4uIjoiQm9vdGluZy4uLiI6Vj8iU3RhcnQgc3RyZWFtIjoiQm9vdCAmIHN0cmVhbSJ9KV19LFEudWRpZCl9KV19LFkpKV19KV19KX0pfWZ1bmN0aW9uIHEzKHtkZXZpY2VzOkMsc2VsZWN0ZWRVZGlkOkwsbG9hZGluZzpOLGVycm9yOkssc3RvcHBpbmdVZGlkczpaLG9uUmVmcmVzaDpYLG9uU2VsZWN0Oncsb25TdG9wOiQsdHJpZ2dlcjpKfSl7bGV0W0cscV09TSghMSksWT1SKG51bGwpO0UoKCk9PntpZighRylyZXR1cm47bGV0IGI9KFYpPT57aWYoIVkuY3VycmVudD8uY29udGFpbnMoVi50YXJnZXQpKXEoITEpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsYiksKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGIpfSxbR10pO2xldCBIPW5ldyBNYXA7Zm9yKGxldCBiIG9mIEMpe2lmKGIudWRpZD09PUwpY29udGludWU7bGV0IFY9SC5nZXQoYi5ydW50aW1lKTtpZighVilWPVtdLEguc2V0KGIucnVudGltZSxWKTtWLnB1c2goYil9Zm9yKGxldCBiIG9mIEgudmFsdWVzKCkpYi5zb3J0KChWLEQpPT5MMihWLm5hbWUpLUwyKEQubmFtZSl8fFYubmFtZS5sb2NhbGVDb21wYXJlKEQubmFtZSkpO2xldCBRPVsuLi5ILmVudHJpZXMoKV0uc29ydCgoW2JdLFtWXSk9Pk4yKGIpLU4yKFYpfHxiLmxvY2FsZUNvbXBhcmUoVikpLGs9Qy5maW5kKChiKT0+Yi51ZGlkPT09TCk/P251bGw7cmV0dXJuIF8oImRpdiIse3JlZjpZLGNsYXNzTmFtZToicmVsYXRpdmUiLGNoaWxkcmVuOltfKCJkaXYiLHtvbkNsaWNrOigpPT57aWYoIUcpWCgpO3EoKGIpPT4hYil9LGNoaWxkcmVuOkp9KSxHJiZfKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC1bY2FsYygxMDAlKzZweCldIGxlZnQtMCBtaW4tdy02NSBtYXgtaC05MCBvdmVyZmxvdy15LWF1dG8gYmctcGFuZWwgYm9yZGVyIGJvcmRlci13aGl0ZS8xMiByb3VuZGVkLVsxMHB4XSBwLTEgc2hhZG93LVswXzhweF8yNHB4X3JnYmEoMCwwLDAsMC41KV0gZm9udC1tb25vIHRleHQtWzEzcHhdIHRleHQtd2hpdGUvOTAgei0yMCIsY2hpbGRyZW46W18oImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTIuNSBweS0xLjUgdGV4dC1bMTFweF0gdGV4dC13aGl0ZS82NSIsY2hpbGRyZW46W18oInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtc2VtaWJvbGQiLGNoaWxkcmVuOiJTaW11bGF0b3JzIn0pLF8oImJ1dHRvbiIse29uQ2xpY2s6KGIpPT57Yi5zdG9wUHJvcGFnYXRpb24oKSxYKCl9LGRpc2FibGVkOk4sY2xhc3NOYW1lOiJiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSB0ZXh0LWFjY2VudCB0ZXh0LVsxMXB4XSBjdXJzb3ItcG9pbnRlciBwLTAiLGNoaWxkcmVuOk4/Ii4uLiI6IlJlZnJlc2gifSldfSksSyYmXygiZGl2Iix7Y2xhc3NOYW1lOiJweC0yLjUgcHktMS41IHRleHQtZGFuZ2VyIHRleHQtWzExcHhdIixjaGlsZHJlbjpLfSksayYmXyhLMSx7Y2hpbGRyZW46W18oImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMi41IHB5LTEuNSByb3VuZGVkLW1kIHRleHQtYWNjZW50IixjaGlsZHJlbjpbXygic3BhbiIse2NsYXNzTmFtZToic2l6ZS0xLjUgcm91bmRlZC1mdWxsIHNocmluay0wIixzdHlsZTp7YmFja2dyb3VuZDprLnN0YXRlPT09IkJvb3RlZCI/IiM0YWRlODAiOiIjNDQ0In19KSxfKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4LTEiLGNoaWxkcmVuOmsubmFtZX0pXX0pLF8oImRpdiIse2NsYXNzTmFtZToiaC1weCBiZy13aGl0ZS84IG15LTEifSldfSksQy5sZW5ndGg9PT0wJiYhTiYmIUsmJl8oImRpdiIse2NsYXNzTmFtZToicC0zIHRleHQtd2hpdGUvNDAgdGV4dC1bMTFweF0gdGV4dC1jZW50ZXIiLGNoaWxkcmVuOiJObyBhdmFpbGFibGUgc2ltdWxhdG9ycyBmb3VuZCJ9KSxRLm1hcCgoW2IsVl0pPT5fKCJkaXYiLHtjaGlsZHJlbjpbXygiZGl2Iix7Y2xhc3NOYW1lOiJweC0yLjUgcHQtMS41IHBiLTAuNSB0ZXh0LVsxMHB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNDAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIixjaGlsZHJlbjpifSksVi5tYXAoKEQpPT57bGV0IEE9Wi5oYXMoRC51ZGlkKSxJPUQuc3RhdGU9PT0iQm9vdGVkIjtyZXR1cm4gXygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0yLjUgcHktMS41IHJvdW5kZWQtbWQgY3Vyc29yLXBvaW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6Ymctd2hpdGUvOCIsb25DbGljazooKT0+e3coRCkscSghMSl9LGNoaWxkcmVuOltfKCJzcGFuIix7Y2xhc3NOYW1lOiJzaXplLTEuNSByb3VuZGVkLWZ1bGwgc2hyaW5rLTAiLHN0eWxlOntiYWNrZ3JvdW5kOkk/IiM0YWRlODAiOiIjNDQ0In19KSxfKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4LTEiLGNoaWxkcmVuOkQubmFtZX0pLEkmJl8oInNwYW4iLHtyb2xlOiJidXR0b24iLG9uQ2xpY2s6KGgpPT57aWYoaC5zdG9wUHJvcGFnYXRpb24oKSwhQSkkKEQudWRpZCl9LGNsYXNzTmFtZTpgdGV4dC1bMTBweF0gcHktcHggcHgtMS41IHJvdW5kZWQgJHtBPyJ0ZXh0LXdoaXRlLzU1IGJnLXRyYW5zcGFyZW50IGN1cnNvci1kZWZhdWx0IjoidGV4dC1kYW5nZXIgYmctZGFuZ2VyLzEwIGN1cnNvci1wb2ludGVyIn1gLGNoaWxkcmVuOkE/IlN0b3BwaW5nLi4uIjoiU3RvcCJ9KV19LEQudWRpZCl9KV19LGIpKV19KV19KX1mdW5jdGlvbiBLMih7b3BlbjpDLHdpZHRoOkwsY2hpbGRyZW46TixzdHlsZTpLfSl7cmV0dXJuIF8oImFzaWRlIix7Y2xhc3NOYW1lOiJmaXhlZCB0b3AtMyByaWdodC0zIGJvdHRvbS0zIHotMzUgbWluLXctMCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1bMTRweF0gYm9yZGVyIGJvcmRlci13aGl0ZS8xMCBiZy1wYW5lbC1iZyB0ZXh0LXdoaXRlLzkwIHNoYWRvdy1bMF8xMnB4XzQwcHhfcmdiYSgwLDAsMCwwLjU1KV0gYmFja2Ryb3AtYmx1ci1bMThweF0gW2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sc3lzdGVtLXVpLHNhbnMtc2VyaWZdIFt0cmFuc2l0aW9uOnRyYW5zZm9ybV8wLjI1c19lYXNlLG9wYWNpdHlfMC4yc19lYXNlXSBmbGV4IGZsZXgtY29sIixzdHlsZTp7d2lkdGg6TCx0cmFuc2Zvcm06Qz8idHJhbnNsYXRlWCgwKSI6InRyYW5zbGF0ZVgoY2FsYygxMDAlICsgMjRweCkpIixvcGFjaXR5OkM/MTowLHBvaW50ZXJFdmVudHM6Qz8iYXV0byI6Im5vbmUiLC4uLkt9LCJhcmlhLWhpZGRlbiI6IUMsY2hpbGRyZW46Tn0pfWZ1bmN0aW9uIF8yKHtjaGlsZHJlbjpDLHN0eWxlOkx9KXtyZXR1cm4gXygiaGVhZGVyIix7Y2xhc3NOYW1lOiJmbGV4IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIuNSBweC0yLjUgcHktMS41IHBsLTMiLHN0eWxlOkwsY2hpbGRyZW46Q30pfWZ1bmN0aW9uIGUyKHtjaGlsZHJlbjpDfSl7cmV0dXJuIF8oInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzExcHhdIGZvbnQtbWVkaXVtIHRleHQtd2hpdGUvNTUiLGNoaWxkcmVuOkN9KX1mdW5jdGlvbiBaMih7b25DbGljazpDLGFyaWFMYWJlbDpMPSJDbG9zZSBwYW5lbCIsdGl0bGU6TixpY29uU2l6ZTpLPTE2fSl7cmV0dXJuIF8oImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazpDLGNsYXNzTmFtZToiZmxleCBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZCBiZy10cmFuc3BhcmVudCBwLTEgdGV4dC13aGl0ZS82NSIsImFyaWEtbGFiZWwiOkwsdGl0bGU6TixjaGlsZHJlbjpfKCJzdmciLHt3aWR0aDpLLGhlaWdodDpLLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbXygibGluZSIse3gxOiIxOCIseTE6IjYiLHgyOiI2Iix5MjoiMTgifSksXygibGluZSIse3gxOiI2Iix5MToiNiIseDI6IjE4Iix5MjoiMTgifSldfSl9KX1mdW5jdGlvbiBiMyhDLEwsTil7bGV0W0ssWl09TShudWxsKSxbWCx3XT1NKDApO0UoKCk9PntpZighTHx8IUMpcmV0dXJuO2xldCBKPSExLEc9YXN5bmMoKT0+e3RyeXtsZXQgSD1hd2FpdChhd2FpdCBmZXRjaChDLHtjYWNoZToibm8tc3RvcmUifSkpLmpzb24oKTtpZighSilaKEguZGV2aWNlcz8/W10pfWNhdGNoe2lmKCFKKVooW10pfX07RygpO2xldCBxPXNldEludGVydmFsKEcsTj83NTA6MzAwMCk7cmV0dXJuKCk9PntKPSEwLGNsZWFySW50ZXJ2YWwocSl9fSxbQyxMLFgsTl0pO2xldCAkPVAoKCk9PncoKEopPT5KKzEpLFtdKTtyZXR1cm57ZGV2aWNlczpLLHJlZnJlc2g6JH19ZnVuY3Rpb24gSDMoQyxMKXtsZXRbTixLXT1NKG51bGwpO3JldHVybiBFKCgpPT57aWYoIUx8fCFDKXJldHVybjtsZXQgWj0hMSxYPWFzeW5jKCk9Pnt0cnl7bGV0IEo9YXdhaXQoYXdhaXQgZmV0Y2goQyx7Y2FjaGU6Im5vLXN0b3JlIn0pKS5qc29uKCk7aWYoIVopSyhKKX1jYXRjaHt9fTtYKCk7bGV0IHc9c2V0SW50ZXJ2YWwoWCw1MDAwKTtyZXR1cm4oKT0+e1o9ITAsY2xlYXJJbnRlcnZhbCh3KX19LFtDLExdKSxOfWZ1bmN0aW9uIFEzKEMpe2lmKCFOdW1iZXIuaXNGaW5pdGUoQyl8fEM8PTApcmV0dXJuIjAgQiI7bGV0IEw9Qy8xMDczNzQxODI0O2lmKEw+PTEpcmV0dXJuYCR7TC50b0ZpeGVkKEw+PTEwPzA6MSl9IEdCYDtyZXR1cm5gJHsoQy8xMDQ4NTc2KS50b0ZpeGVkKDApfSBNQmB9ZnVuY3Rpb24gazIoQyxMKXtsZXQgTj1DLmluY2x1ZGVzKCI/Iik/IiYiOiI/IjtyZXR1cm5gJHtDfSR7Tn1kZXZpY2U9JHtlbmNvZGVVUklDb21wb25lbnQoTCl9YH1mdW5jdGlvbiBWMyh7cmVwb3J0OkN9KXtpZighQ3x8Qy50b3RhbEJ5dGVzPT09MClyZXR1cm4gbnVsbDtsZXR7ZXN0aW1hdGVkQWRkaXRpb25hbDpMLGF2YWlsYWJsZUJ5dGVzOk4sdG90YWxCeXRlczpLLHJ1bm5pbmdTaW11bGF0b3JzOlp9PUMsWD1NYXRoLm1heCgwLE1hdGgubWluKDEsMS1OL0spKSx3PVorTCwkPUw9PT0wPyIjZTY2IjpMPD0xPyIjZTlhMTNiIjoiIzNiMyIsSj1YPjAuOT8iI2U2NiI6WD4wLjc1PyIjZTlhMTNiIjoiIzNiMyI7cmV0dXJuIF8oImRpdiIse2NsYXNzTmFtZToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcHgtMiBweS1bM3B4XSByb3VuZGVkLWZ1bGwgYmctWyMxMDEwMTBdIGJvcmRlciBib3JkZXItWyMyMjJdIGZvbnQtbW9ubyB0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzcwIGxlYWRpbmctbm9uZSIsY2hpbGRyZW46W18oInNwYW4iLHtjbGFzc05hbWU6InNpemUtMS41IHJvdW5kZWQtWzNweF0gc2hyaW5rLTAiLHN0eWxlOntiYWNrZ3JvdW5kOiR9fSksXygic3BhbiIse2NoaWxkcmVuOltaLCIvIix3LCIgc2ltcyJdfSksXygic3BhbiIse2NsYXNzTmFtZToidGV4dC13aGl0ZS80MCIsY2hpbGRyZW46IsK3In0pLF8oInNwYW4iLHtjbGFzc05hbWU6InRleHQtd2hpdGUvNTUiLGNoaWxkcmVuOltRMyhOKSwiIGZyZWUiXX0pLF8oInNwYW4iLHsiYXJpYS1oaWRkZW4iOiEwLGNsYXNzTmFtZToibWwtMC41IHctNyBoLVszcHhdIGJnLVsjMWMxYzFjXSByb3VuZGVkLVsycHhdIG92ZXJmbG93LWhpZGRlbiBpbmxpbmUtYmxvY2siLGNoaWxkcmVuOl8oInNwYW4iLHtjbGFzc05hbWU6ImJsb2NrIGgtZnVsbCB0cmFuc2l0aW9uLVt3aWR0aCxiYWNrZ3JvdW5kXSBkdXJhdGlvbi0zMDAgZWFzZS1vdXQiLHN0eWxlOnt3aWR0aDpgJHsoWCoxMDApLnRvRml4ZWQoMSl9JWAsYmFja2dyb3VuZDpKfX0pfSldfSl9ZnVuY3Rpb24gRDMoe2RldmljZTpDLGFjdGl2ZTpMLHByZXZpZXdFbmRwb2ludDpOLHN0YXJ0aW5nOkssc2h1dHRpbmdEb3duOlosZXJyb3I6WCxvblN0YXJ0Oncsb25TaHV0ZG93bjokfSl7bGV0IEo9Qy5oZWxwZXIsRz1DLnN0YXRlPT09IkJvb3RlZCIscT1KPyLil48gbGl2ZSI6Sz9HPyJzdGFydGluZyBoZWxwZXLigKYiOiJib290aW5nICYgc3RhcnRpbmfigKYiOlo/InNodXR0aW5nIGRvd27igKYiOkc/ImJvb3RlZCAobm8gc3RyZWFtKSI6Qy5zdGF0ZS50b0xvd2VyQ2FzZSgpLFk9Sj8iIzNiMyI6IiM4ODgiLEg9TD8icmdiYSgxMCwxMzIsMjU1LDAuNTUpIjoidHJhbnNwYXJlbnQiLFE9Sj8iYSI6ImRpdiIsaz1KP3tocmVmOmsyKE4sQy5kZXZpY2UpfTp7fTtyZXR1cm4gXyhRLHsuLi5rLGNsYXNzTmFtZToiZ3JpZC10aWxlIHJlbGF0aXZlIGZsZXggZmxleC1jb2wgYmctWyMxMTFdIHJvdW5kZWQtWzEwcHhdIG92ZXJmbG93LWhpZGRlbiBuby11bmRlcmxpbmUgdGV4dC1pbmhlcml0IGJvcmRlciBib3JkZXItWyMyYTJhMmFdIFt0cmFuc2l0aW9uOmJvcmRlci1jb2xvcl8xMjBtc10iLHN0eWxlOntvdXRsaW5lOmAxcHggc29saWQgJHtIfWB9LGNoaWxkcmVuOlsoSnx8RykmJl8oImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsdGl0bGU6Wj8iU2h1dHRpbmcgZG93buKApiI6IlNodXRkb3duIHNpbXVsYXRvciIsImFyaWEtbGFiZWwiOiJTaHV0ZG93biBzaW11bGF0b3IiLG9uQ2xpY2s6KGIpPT57Yi5wcmV2ZW50RGVmYXVsdCgpLGIuc3RvcFByb3BhZ2F0aW9uKCksJCgpfSxkaXNhYmxlZDpaLGNsYXNzTmFtZToiZ3JpZC1zaHV0ZG93bi1idG4gYWJzb2x1dGUgdG9wLTEuNSByaWdodC0xLjUgdy1bMjJweF0gaC1bMjJweF0gcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItWyM0NDRdIGJnLVtyZ2JhKDIwLDIwLDIwLDAuODUpXSB0ZXh0LXdoaXRlLzgwIHRleHQtWzEzcHhdIGxlYWRpbmctbm9uZSBjdXJzb3ItcG9pbnRlciBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTAgei1bMl0gcG9pbnRlci1ldmVudHMtYXV0byIsY2hpbGRyZW46IsOXIn0pLEo/XygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4LTEgbWluLWgtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTIgYmctYmxhY2sgcG9pbnRlci1ldmVudHMtbm9uZSIsY2hpbGRyZW46XygiaW1nIix7c3JjOkouc3RyZWFtVXJsLGFsdDpDLm5hbWUsZHJhZ2dhYmxlOiExLGNsYXNzTmFtZToibWF4LXctZnVsbCBtYXgtaC1mdWxsIG9iamVjdC1jb250YWluIn0pfSk6XygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4LTEgbWluLWgtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTMgZmxleC1jb2wgZ2FwLTIuNSB0ZXh0LXdoaXRlLzU1IHRleHQtWzEycHhdIHRleHQtY2VudGVyIixjaGlsZHJlbjpbSz9fKCJzcGFuIix7ImFyaWEtaGlkZGVuIjohMCxjbGFzc05hbWU6InctNS41IGgtNS41IHJvdW5kZWQtZnVsbCBib3JkZXItMiBib3JkZXItd2hpdGUvMTUgYW5pbWF0ZS1bZ3JpZC1zcGluXzAuOHNfbGluZWFyX2luZmluaXRlXSIsc3R5bGU6e2JvcmRlclRvcENvbG9yOiJyZ2JhKDE1NSwyMDEsMTU1LDAuOTUpIn19KTpfKCJkaXYiLHtjbGFzc05hbWU6InRleHQtWzI4cHhdIG9wYWNpdHktNTAiLGNoaWxkcmVuOkc/IuKWoyI6IuKWoiJ9KSxYP18oImRpdiIse2NsYXNzTmFtZToidGV4dC1kYW5nZXIgdGV4dC1bMTFweF0gZm9udC1tb25vIixjaGlsZHJlbjpYfSk6bnVsbCxfKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KGIpPT57Yi5wcmV2ZW50RGVmYXVsdCgpLGIuc3RvcFByb3BhZ2F0aW9uKCksdygpfSxkaXNhYmxlZDpLLGNsYXNzTmFtZTpgcHgtMyBweS0xLjUgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLVsjMzMzXSB0ZXh0LVsxMXB4XSBmb250LW1vbm8gJHtLPyJiZy1bIzFhMWExYV0gdGV4dC13aGl0ZS81NSBjdXJzb3ItZGVmYXVsdCI6ImJnLVsjMWQyYTFkXSB0ZXh0LXN1Y2Nlc3MgY3Vyc29yLXBvaW50ZXIifWAsY2hpbGRyZW46Sz9HPyJTdGFydGluZ+KApiI6IkJvb3RpbmfigKYiOkc/IlN0YXJ0IHN0cmVhbSI6IkJvb3QgJiBzdGFydCJ9KV19KSxfKCJkaXYiLHtjbGFzc05hbWU6InB4LTIuNSBweS0xLjUgYm9yZGVyLXQgYm9yZGVyLVsjMjIyXSB0ZXh0LVsxMXB4XSBmb250LW1vbm8gdGV4dC13aGl0ZS83MCBmbGV4IGp1c3RpZnktYmV0d2VlbiBnYXAtMiIsY2hpbGRyZW46W18oInNwYW4iLHtjbGFzc05hbWU6Im92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIixjaGlsZHJlbjpDLm5hbWV9KSxfKCJzcGFuIix7Y2xhc3NOYW1lOiJ3aGl0ZXNwYWNlLW5vd3JhcCIsc3R5bGU6e2NvbG9yOll9LGNoaWxkcmVuOltxLEo/Xygic3BhbiIse2NsYXNzTmFtZToidGV4dC13aGl0ZS80MCIsY2hpbGRyZW46WyIgOiIsSi5wb3J0XX0pOm51bGxdfSldfSldfSl9ZnVuY3Rpb24gQjMoe29wZW46QyxvbkNsb3NlOkwsY3VycmVudFVkaWQ6Tix3aWR0aDpLfSl7bGV0IFo9d2luZG93Ll9fU0lNX1BSRVZJRVdfXyxYPVo/LmdyaWRBcGlFbmRwb2ludCx3PVo/LmdyaWRTdGFydEVuZHBvaW50LCQ9Wj8uZ3JpZFNodXRkb3duRW5kcG9pbnQsSj1aPy5ncmlkTWVtb3J5RW5kcG9pbnQsRz1aPy5wcmV2aWV3RW5kcG9pbnQ/PyIvIixbcSxZXT1NKHt9KSxbSCxRXT1NKHt9KSxbayxiXT1NKHt9KSxWPU9iamVjdC52YWx1ZXMocSkuc29tZShCb29sZWFuKXx8T2JqZWN0LnZhbHVlcyhIKS5zb21lKEJvb2xlYW4pLHtkZXZpY2VzOkQscmVmcmVzaDpBfT1iMyhYLEMsViksST1IMyhKLEMpLGg9UChhc3luYyh6LHk9MjAwMDApPT57aWYoIVgpcmV0dXJuIG51bGw7bGV0IHg9RGF0ZS5ub3coKSt5O3doaWxlKERhdGUubm93KCk8eCl7dHJ5e2xldCBxMT0oKGF3YWl0KGF3YWl0IGZldGNoKFgse2NhY2hlOiJuby1zdG9yZSJ9KSkuanNvbigpKS5kZXZpY2VzPz9bXSkuZmluZCgoZCk9PmQuZGV2aWNlPT09eiYmZC5oZWxwZXIpO2lmKHExKXJldHVybiBxMX1jYXRjaHt9YXdhaXQgbmV3IFByb21pc2UoKGkpPT5zZXRUaW1lb3V0KGksNDAwKSl9cmV0dXJuIG51bGx9LFtYXSksZz1QKGFzeW5jKHopPT57aWYoIXcpcmV0dXJuO1koKHkpPT4oey4uLnksW3pdOiEwfSkpLGIoKHkpPT4oey4uLnksW3pdOm51bGx9KSk7dHJ5e2xldCB5PWF3YWl0IGZldGNoKHcse21ldGhvZDoiUE9TVCIsaGVhZGVyczp7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24ifSxib2R5OkpTT04uc3RyaW5naWZ5KHt1ZGlkOnp9KX0pLHg9YXdhaXQgeS5qc29uKCkuY2F0Y2goKCk9Pih7fSkpO2lmKCF5Lm9rfHwheC5vayl7YigoYSk9Pih7Li4uYSxbel06eC5lcnJvcj8/YEhUVFAgJHt5LnN0YXR1c31gfSkpO3JldHVybn1pZihhd2FpdCBoKHopKXt3aW5kb3cubG9jYXRpb24uYXNzaWduKGsyKEcseikpO3JldHVybn1iKChhKT0+KHsuLi5hLFt6XToiSGVscGVyIGRpZCBub3QgcmVnaXN0ZXIgaW4gdGltZSJ9KSl9Y2F0Y2goeSl7YigoeCk9Pih7Li4ueCxbel06eT8ubWVzc2FnZT8/IlJlcXVlc3QgZmFpbGVkIn0pKX1maW5hbGx5e1koKHkpPT4oey4uLnksW3pdOiExfSkpLEEoKX19LFt3LEEsaCxHXSk7RSgoKT0+e2lmKCFEfHwhTilyZXR1cm47aWYoRC5maW5kKCh4KT0+eC5kZXZpY2U9PT1OKT8uaGVscGVyKXJldHVybjtsZXQgeT1ELmZpbmQoKHgpPT54LmhlbHBlciYmeC5kZXZpY2UhPT1OKTt3aW5kb3cubG9jYXRpb24uYXNzaWduKHk/azIoRyx5LmRldmljZSk6Ryl9LFtELE4sR10pO2xldCBVPVAoYXN5bmMoeik9PntpZighJClyZXR1cm47USgoeSk9Pih7Li4ueSxbel06ITB9KSksYigoeSk9Pih7Li4ueSxbel06bnVsbH0pKTt0cnl7bGV0IHk9YXdhaXQgZmV0Y2goJCx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe3VkaWQ6en0pfSkseD1hd2FpdCB5Lmpzb24oKS5jYXRjaCgoKT0+KHt9KSk7aWYoIXkub2t8fCF4Lm9rKWIoKGkpPT4oey4uLmksW3pdOnguZXJyb3I/P2BIVFRQICR7eS5zdGF0dXN9YH0pKX1jYXRjaCh5KXtiKCh4KT0+KHsuLi54LFt6XTp5Py5tZXNzYWdlPz8iUmVxdWVzdCBmYWlsZWQifSkpfWZpbmFsbHl7USgoeSk9Pih7Li4ueSxbel06ITF9KSksQSgpfX0sWyQsQV0pO3JldHVybiBfKEsyLHtvcGVuOkMsd2lkdGg6SyxjaGlsZHJlbjpbXyhfMix7Y2hpbGRyZW46W18oZTIse2NoaWxkcmVuOiJTaW11bGF0b3JzIn0pLF8oImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIiLGNoaWxkcmVuOltfKFYzLHtyZXBvcnQ6SX0pLF8oWjIse29uQ2xpY2s6TH0pXX0pXX0pLF8oImRpdiIse2NsYXNzTmFtZToiZmxleC0xIG1pbi1oLTAgb3ZlcmZsb3cteS1hdXRvIHAtMy41IGdyaWQgYXV0by1yb3dzLVttaW5tYXgoMzAwcHgsYXV0byldIGdhcC0zIGNvbnRlbnQtc3RhcnQgZ3JpZC1jb2xzLVtyZXBlYXQoYXV0by1maWxsLG1pbm1heCgyMDBweCwxZnIpKV0iLGNoaWxkcmVuOkQ9PT1udWxsP251bGw6RC5sZW5ndGg9PT0wP18oImRpdiIse2NsYXNzTmFtZToiY29sLXNwYW4tZnVsbCBiZy1wYW5lbCBib3JkZXIgYm9yZGVyLWRhc2hlZCBib3JkZXItd2hpdGUvMTAgcm91bmRlZC1bMTBweF0gcC00IHRleHQtd2hpdGUvNTAgdGV4dC1bMTJweF0gdGV4dC1jZW50ZXIiLGNoaWxkcmVuOiJObyBpT1Mgc2ltdWxhdG9ycyBhdmFpbGFibGUuIn0pOkQubWFwKCh6KT0+XyhEMyx7ZGV2aWNlOnosYWN0aXZlOnouZGV2aWNlPT09TixwcmV2aWV3RW5kcG9pbnQ6RyxzdGFydGluZzohIXFbei5kZXZpY2VdLHNodXR0aW5nRG93bjohIUhbei5kZXZpY2VdLGVycm9yOmtbei5kZXZpY2VdPz9udWxsLG9uU3RhcnQ6KCk9Pmcoei5kZXZpY2UpLG9uU2h1dGRvd246KCk9PlUoei5kZXZpY2UpfSx6LmRldmljZSkpfSldfSl9ZnVuY3Rpb24gQzAoe3BhbmVsV2lkdGg6Qyx2aXNpYmxlOkwsb25Qb2ludGVyRG93bjpOLGFyaWFMYWJlbDpLfSl7bGV0W1osWF09TSghMSksW3csJF09TSghMSksSj1afHx3LEc9MTIrQy05O3JldHVybiBfKCJkaXYiLHtyb2xlOiJzZXBhcmF0b3IiLCJhcmlhLW9yaWVudGF0aW9uIjoidmVydGljYWwiLCJhcmlhLWxhYmVsIjpLLCJhcmlhLWhpZGRlbiI6IUwsb25Qb2ludGVyRG93bjoocSk9PnskKCEwKSxOKHEpfSxvblBvaW50ZXJVcDooKT0+JCghMSksb25Qb2ludGVyQ2FuY2VsOigpPT4kKCExKSxvblBvaW50ZXJFbnRlcjooKT0+WCghMCksb25Qb2ludGVyTGVhdmU6KCk9PlgoITEpLGNsYXNzTmFtZTpgZml4ZWQgdG9wLTMgYm90dG9tLTMgdy00IHotMzYgY3Vyc29yLWNvbC1yZXNpemUgdG91Y2gtbm9uZSB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMjAwICR7TD8ib3BhY2l0eS0xMDAgcG9pbnRlci1ldmVudHMtYXV0byI6Im9wYWNpdHktMCBwb2ludGVyLWV2ZW50cy1ub25lIn1gLHN0eWxlOntyaWdodDpHfSxjaGlsZHJlbjpbXygiZGl2Iix7Y2xhc3NOYW1lOmBhYnNvbHV0ZSB0b3AtMCBib3R0b20tMCBsZWZ0LTEvMiB3LXB4IHBvaW50ZXItZXZlbnRzLW5vbmUgdHJhbnNpdGlvbi1vcGFjaXR5IGR1cmF0aW9uLTE1MCAke0o/Im9wYWNpdHktMTAwIjoib3BhY2l0eS0wIn1gLHN0eWxlOnt0cmFuc2Zvcm06InRyYW5zbGF0ZVgoLTAuNXB4KSIsYmFja2dyb3VuZDoibGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgyNTUsMjU1LDI1NSwwKSAwJSwgcmdiYSgyNTUsMjU1LDI1NSwwLjI4KSAzMCUsIHJnYmEoMjU1LDI1NSwyNTUsMC4yOCkgNzAlLCByZ2JhKDI1NSwyNTUsMjU1LDApIDEwMCUpIn19KSxfKCJkaXYiLHtjbGFzc05hbWU6YGFic29sdXRlIHRvcC0xLzIgbGVmdC0xLzIgdy0xIGgtNyByb3VuZGVkLXhzIC10cmFuc2xhdGUteC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB6LTEgcG9pbnRlci1ldmVudHMtbm9uZSBbdHJhbnNpdGlvbjpvcGFjaXR5XzAuMTVzX2Vhc2UsYmFja2dyb3VuZF8wLjE1c19lYXNlXSAke0o/Im9wYWNpdHktMTAwIjoib3BhY2l0eS0wIn0gJHt3PyJiZy1bIzlhOWE5ZV0iOiJiZy1bIzZlNmU3Ml0ifWB9KV19KX1mdW5jdGlvbiBMOShDLEwsTil7bGV0IEs9Ti5sYXQqTWF0aC5QSS8xODAsWj0oQy1OLmxhdCkqTWF0aC5QSS8xODA7cmV0dXJue3g6KEwtTi5sbmcpKk1hdGguUEkvMTgwKk1hdGguY29zKEspKjYzNzEwMDAsejotWio2MzcxMDAwfX1mdW5jdGlvbiBOOShDLEwsTil7bGV0IEs9Ti5sYXQqTWF0aC5QSS8xODAsWj0tTC82MzcxMDAwKigxODAvTWF0aC5QSSksWD1DLyg2MzcxMDAwKk1hdGguY29zKEspKSooMTgwL01hdGguUEkpO3JldHVybntsYXQ6Ti5sYXQrWixsbmc6Ti5sbmcrWH19ZnVuY3Rpb24gSzkoQyxMLE4sSyxaKXtsZXQgWD1aKlosdz1YKlosJD0oSixHLHEsWSk9PjAuNSooMipHKygtSitxKSpaKygyKkotNSpHKzQqcS1ZKSpYKygtSiszKkctMypxK1kpKncpO3JldHVybnt4OiQoQy54LEwueCxOLngsSy54KSx6OiQoQy56LEwueixOLnosSy56KSx5OiQoQy55LEwueSxOLnksSy55KSxyYXdBbHQ6JChDLnJhd0FsdCxMLnJhd0FsdCxOLnJhd0FsdCxLLnJhd0FsdCl9fWZ1bmN0aW9uIF85KEMsTCxOKXtpZihDLmxlbmd0aDwyKXJldHVybiBDLnNsaWNlKCk7bGV0IEs9W10sWj1DLmxlbmd0aCxYPU4/WjpaLTE7Zm9yKGxldCB3PTA7dzxYO3crKyl7bGV0ICQ9Q1tOPyh3LTErWiklWjpNYXRoLm1heCgwLHctMSldLEo9Q1t3JVpdLEc9Q1sodysxKSVaXSxxPUNbTj8odysyKSVaOk1hdGgubWluKFotMSx3KzIpXSxZPUcueC1KLngsSD1HLnotSi56LFE9TWF0aC5oeXBvdChZLEgpLGs9TWF0aC5tYXgoMixNYXRoLmNlaWwoUS9MKSk7Zm9yKGxldCBiPTA7YjxrO2IrKyl7bGV0IFY9Yi9rO0sucHVzaChLOSgkLEosRyxxLFYpKX19aWYoIU4pSy5wdXNoKENbWi0xXSk7cmV0dXJuIEt9ZnVuY3Rpb24gRjMoQyl7aWYoQy53YXlwb2ludHMubGVuZ3RoPDIpdGhyb3cgRXJyb3IoYFRyYWlsICR7Qy5pZH0gbmVlZHMgYXQgbGVhc3QgMiB3YXlwb2ludHNgKTtsZXQgTD17bGF0OkMud2F5cG9pbnRzLnJlZHVjZSgoYixWKT0+YitWLmxhdCwwKS9DLndheXBvaW50cy5sZW5ndGgsbG5nOkMud2F5cG9pbnRzLnJlZHVjZSgoYixWKT0+YitWLmxuZywwKS9DLndheXBvaW50cy5sZW5ndGh9LE49Qy53YXlwb2ludHMubWFwKChiKT0+Yi5hbHQ/PzApLEs9TWF0aC5taW4oLi4uTiksWj1NYXRoLm1heCguLi5OKSxYPUMud2F5cG9pbnRzLm1hcCgoYik9PntsZXR7eDpWLHo6RH09TDkoYi5sYXQsYi5sbmcsTCksQT1iLmFsdD8/MDtyZXR1cm57eDpWLHo6RCx5OkEtSyxyYXdBbHQ6QX19KSx3PV85KFgsOCwhIUMubG9vcCksJD1bXSxKPTA7Zm9yKGxldCBiPTA7Yjx3Lmxlbmd0aDtiKyspe2xldCBWPXdbYl07aWYoYj4wKXtsZXQgaD13W2ItMV07Sis9TWF0aC5oeXBvdChWLngtaC54LFYuei1oLnosVi55LWgueSl9bGV0e2xhdDpELGxuZzpBfT1OOShWLngsVi56LEwpLEk9TWF0aC5tYXgoMCxWLnkpOyQucHVzaCh7eDpWLngsejpWLnoseTpJLGFyYzpKLGxhdDpELGxuZzpBfSl9bGV0IEc9MS8wLHE9LTEvMCxZPTEvMCxIPS0xLzAsUT0xLzAsaz0tMS8wO2ZvcihsZXQgYiBvZiAkKXtpZihiLng8RylHPWIueDtpZihiLng+cSlxPWIueDtpZihiLno8WSlZPWIuejtpZihiLno+SClIPWIuejtpZihiLnk8USlRPWIueTtpZihiLnk+aylrPWIueX1yZXR1cm57dHJhaWw6QyxvcmlnaW46TCxwb2ludHM6JCx0b3RhbERpc3RhbmNlOiRbJC5sZW5ndGgtMV0uYXJjLGJvdW5kczp7eDpbRyxxXSx5OltRLGtdLHo6W1ksSF19LHJhd01pbkFsdDpLLHJhd01heEFsdDpafX1mdW5jdGlvbiB1MShDLEwpe2xldCBOPUMudG90YWxEaXN0YW5jZTtpZihOPT09MClyZXR1cm4gQy5wb2ludHNbMF07bGV0IEs9TDtpZihDLnRyYWlsLmxvb3ApSz0oSyVOK04pJU47ZWxzZXtpZihLPD0wKXJldHVybiBDLnBvaW50c1swXTtpZihLPj1OKXJldHVybiBDLnBvaW50c1tDLnBvaW50cy5sZW5ndGgtMV19bGV0IFo9MCxYPUMucG9pbnRzLmxlbmd0aC0xO3doaWxlKForMTxYKXtsZXQgcT1aK1g+Pj4xO2lmKEMucG9pbnRzW3FdLmFyYzw9SylaPXE7ZWxzZSBYPXF9bGV0IHc9Qy5wb2ludHNbWl0sJD1DLnBvaW50c1tYXSxKPSQuYXJjLXcuYXJjLEc9Sj09PTA/MDooSy13LmFyYykvSjtyZXR1cm57eDp3LngrKCQueC13LngpKkcsejp3LnorKCQuei13LnopKkcseTp3LnkrKCQueS13LnkpKkcsYXJjOkssbGF0OncubGF0KygkLmxhdC13LmxhdCkqRyxsbmc6dy5sbmcrKCQubG5nLXcubG5nKSpHfX1mdW5jdGlvbiBSMChDKXtzd2l0Y2goQyl7Y2FzZSJ3YWxrIjpyZXR1cm4gMS40O2Nhc2UicnVuIjpyZXR1cm4gMztjYXNlImN5Y2xlIjpyZXR1cm4gNS41O2Nhc2UiZHJpdmUiOnJldHVybiAxMy40fX12YXIgWjk9W3tsYXQ6MzcuMzMyNzIsbG5nOi0xMjIuMDA4MzMsYWx0OjQ5fSx7bGF0OjM3LjMzMzA5LGxuZzotMTIyLjAwNzM1LGFsdDo0OH0se2xhdDozNy4zMzM3Myxsbmc6LTEyMi4wMDY2MyxhbHQ6NDl9LHtsYXQ6MzcuMzM0NTQsbG5nOi0xMjIuMDA2MjcsYWx0OjQ5fSx7bGF0OjM3LjMzNTQsbG5nOi0xMjIuMDA2MzMsYWx0OjQ5fSx7bGF0OjM3LjMzNjE4LGxuZzotMTIyLjAwNjc5LGFsdDo0NX0se2xhdDozNy4zMzY3NSxsbmc6LTEyMi4wMDc1OSxhbHQ6NDV9LHtsYXQ6MzcuMzM3MDQsbG5nOi0xMjIuMDA4NjEsYWx0OjQ2fSx7bGF0OjM3LjMzNjk4LGxuZzotMTIyLjAwOTY5LGFsdDo0OH0se2xhdDozNy4zMzY2Mixsbmc6LTEyMi4wMTA2NixhbHQ6NDh9LHtsYXQ6MzcuMzM1OTgsbG5nOi0xMjIuMDExMzgsYWx0OjQ5fSx7bGF0OjM3LjMzNTE3LGxuZzotMTIyLjAxMTc0LGFsdDo1MH0se2xhdDozNy4zMzQzMSxsbmc6LTEyMi4wMTE2OSxhbHQ6NTB9LHtsYXQ6MzcuMzMzNTQsbG5nOi0xMjIuMDExMjIsYWx0OjUwfSx7bGF0OjM3LjMzMjk2LGxuZzotMTIyLjAxMDQyLGFsdDo1MX0se2xhdDozNy4zMzI2OCxsbmc6LTEyMi4wMDk0LGFsdDo1MH1dLFg5PVt7bGF0OjM3LjgzMjEyLGxuZzotMTIyLjQ4MDY1LGFsdDozMH0se2xhdDozNy44MjkzNyxsbmc6LTEyMi40Nzk3NCxhbHQ6MzB9LHtsYXQ6MzcuODI2NDksbG5nOi0xMjIuNDc5NCxhbHQ6MzB9LHtsYXQ6MzcuODIzNjIsbG5nOi0xMjIuNDc5MDcsYWx0OjQ1fSx7bGF0OjM3LjgyMDc0LGxuZzotMTIyLjQ3ODczLGFsdDo1OX0se2xhdDozNy44MTc4Nixsbmc6LTEyMi40NzgzOSxhbHQ6NjZ9LHtsYXQ6MzcuODE0OTgsbG5nOi0xMjIuNDc4MDYsYWx0OjY2fSx7bGF0OjM3LjgxMjExLGxuZzotMTIyLjQ3NzcyLGFsdDo1OH0se2xhdDozNy44MDkyMyxsbmc6LTEyMi40NzczNCxhbHQ6NDR9LHtsYXQ6MzcuODA5NDksbG5nOi0xMjIuNDc3MyxhbHQ6NDV9LHtsYXQ6MzcuODEyMzYsbG5nOi0xMjIuNDc3NjUsYWx0OjU5fSx7bGF0OjM3LjgxNTI0LGxuZzotMTIyLjQ3Nzk4LGFsdDo2Nn0se2xhdDozNy44MTgxMixsbmc6LTEyMi40NzgzMixhbHQ6NjZ9LHtsYXQ6MzcuODIxLGxuZzotMTIyLjQ3ODY2LGFsdDo1OH0se2xhdDozNy44MjM4Nyxsbmc6LTEyMi40NzksYWx0OjQ0fSx7bGF0OjM3LjgyNjc1LGxuZzotMTIyLjQ3OTMzLGFsdDozMH0se2xhdDozNy44Mjk2Myxsbmc6LTEyMi40Nzk2NyxhbHQ6MzB9LHtsYXQ6MzcuODMyMzMsbG5nOi0xMjIuNDgwNzIsYWx0OjMwfV0sdzk9W3tsYXQ6MzcuODg2NjQsbG5nOi0xMjIuNjI1OTksYWx0OjEyMX0se2xhdDozNy44ODg4Nyxsbmc6LTEyMi42MjMzMixhbHQ6MTM1fSx7bGF0OjM3Ljg5MTE1LGxuZzotMTIyLjYyMTYsYWx0OjE2NH0se2xhdDozNy44OTM1Myxsbmc6LTEyMi42MTkyMSxhbHQ6MTgwfSx7bGF0OjM3Ljg5NDY2LGxuZzotMTIyLjYxNTc3LGFsdDoyMjB9LHtsYXQ6MzcuODk2MzEsbG5nOi0xMjIuNjEyNjgsYWx0OjI3M30se2xhdDozNy44OTkxNyxsbmc6LTEyMi42MTA5OCxhbHQ6MzEzfSx7bGF0OjM3LjkwMTY2LGxuZzotMTIyLjYwODU1LGFsdDozNDJ9LHtsYXQ6MzcuOTAxOTksbG5nOi0xMjIuNjA2MDEsYWx0OjQwOH0se2xhdDozNy45MDMzOSxsbmc6LTEyMi42MDQwMSxhbHQ6NDUwfSx7bGF0OjM3LjkwNjYyLGxuZzotMTIyLjYwMjkxLGFsdDo0NDB9LHtsYXQ6MzcuOTA5NzEsbG5nOi0xMjIuNjAxNzMsYWx0OjQzMn0se2xhdDozNy45MTIxMyxsbmc6LTEyMi42MDAwNyxhbHQ6NDM2fSx7bGF0OjM3LjkxNDM5LGxuZzotMTIyLjU5NzgsYWx0OjQxMH0se2xhdDozNy45MTI4NSxsbmc6LTEyMi41OTUwNCxhbHQ6NDIyfSx7bGF0OjM3LjkxMjc0LGxuZzotMTIyLjU5MjAyLGFsdDo0MjV9LHtsYXQ6MzcuOTE1LGxuZzotMTIyLjU5MDMyLGFsdDo0MTJ9LHtsYXQ6MzcuOTE2MzcsbG5nOi0xMjIuNTg5MDMsYWx0OjQwNn0se2xhdDozNy45MTQ4MSxsbmc6LTEyMi41ODU5NSxhbHQ6MzgyfSx7bGF0OjM3LjkxNzQsbG5nOi0xMjIuNTgzOTgsYWx0OjM3Mn0se2xhdDozNy45MTY0Mixsbmc6LTEyMi41ODIzNixhbHQ6MzUyfSx7bGF0OjM3LjkxNDgxLGxuZzotMTIyLjU4MDExLGFsdDozNDJ9XSwkOT1be2xhdDo0MC43ODIxNixsbmc6LTczLjk2MjU0LGFsdDozN30se2xhdDo0MC43ODIyMSxsbmc6LTczLjk2MDk4LGFsdDozNn0se2xhdDo0MC43ODMyOCxsbmc6LTczLjk2MDEsYWx0OjM2fSx7bGF0OjQwLjc4NDQsbG5nOi03My45NTkzLGFsdDozNn0se2xhdDo0MC43ODU1LGxuZzotNzMuOTU4NDgsYWx0OjM2fSx7bGF0OjQwLjc4NjY0LGxuZzotNzMuOTU3NzQsYWx0OjM2fSx7bGF0OjQwLjc4NzksbG5nOi03My45NTc2NCxhbHQ6MzZ9LHtsYXQ6NDAuNzg4OTgsbG5nOi03My45NTc5MixhbHQ6MzZ9LHtsYXQ6NDAuNzg4NjgsbG5nOi03My45NTk1MSxhbHQ6Mzd9LHtsYXQ6NDAuNzg4OTcsbG5nOi03My45NjExMixhbHQ6MzZ9LHtsYXQ6NDAuNzg4MzMsbG5nOi03My45NjI1LGFsdDozN30se2xhdDo0MC43ODgyOCxsbmc6LTczLjk2NDE2LGFsdDozN30se2xhdDo0MC43ODgwNSxsbmc6LTczLjk2NTczLGFsdDozNn0se2xhdDo0MC43ODY5MSxsbmc6LTczLjk2NjM2LGFsdDozNn0se2xhdDo0MC43ODU2Nixsbmc6LTczLjk2NjY1LGFsdDozNn0se2xhdDo0MC43ODQ1OCxsbmc6LTczLjk2NjA4LGFsdDozNn0se2xhdDo0MC43ODQwMixsbmc6LTczLjk2NDU5LGFsdDozNn0se2xhdDo0MC43ODMyMixsbmc6LTczLjk2MzM0LGFsdDozN31dLEc5PVt7bGF0OjM3LjU5NjU5LGxuZzotMTIyLjUwMzE2LGFsdDo0fSx7bGF0OjM3LjU5NTU1LGxuZzotMTIyLjUwNDI0LGFsdDo0fSx7bGF0OjM3LjU5NDUyLGxuZzotMTIyLjUwNTM0LGFsdDo1fSx7bGF0OjM3LjU5MzI5LGxuZzotMTIyLjUwNTg4LGFsdDo5fSx7bGF0OjM3LjU5MjEyLGxuZzotMTIyLjUwNTA4LGFsdDoyMH0se2xhdDozNy41OTEsbG5nOi0xMjIuNTA0MTMsYWx0OjI5fSx7bGF0OjM3LjU4OTc0LGxuZzotMTIyLjUwNDE2LGFsdDo0MH0se2xhdDozNy41ODg3LGxuZzotMTIyLjUwNTI0LGFsdDo1MX0se2xhdDozNy41ODc0NSxsbmc6LTEyMi41MDQ5NixhbHQ6NjB9LHtsYXQ6MzcuNTg2MjcsbG5nOi0xMjIuNTA0MjIsYWx0OjcxfSx7bGF0OjM3LjU4NTM5LGxuZzotMTIyLjUwNTM0LGFsdDo4Mn0se2xhdDozNy41ODUwNSxsbmc6LTEyMi41MDY5OCxhbHQ6OTN9LHtsYXQ6MzcuNTg1MzksbG5nOi0xMjIuNTA1MzQsYWx0OjgyfSx7bGF0OjM3LjU4NjI3LGxuZzotMTIyLjUwNDIyLGFsdDo3MX0se2xhdDozNy41ODc0NSxsbmc6LTEyMi41MDQ5NixhbHQ6NjB9LHtsYXQ6MzcuNTg4Nyxsbmc6LTEyMi41MDUyNCxhbHQ6NTF9LHtsYXQ6MzcuNTg5NzQsbG5nOi0xMjIuNTA0MTYsYWx0OjQwfSx7bGF0OjM3LjU5MSxsbmc6LTEyMi41MDQxMyxhbHQ6Mjl9LHtsYXQ6MzcuNTkyMTIsbG5nOi0xMjIuNTA1MDgsYWx0OjIwfSx7bGF0OjM3LjU5MzI5LGxuZzotMTIyLjUwNTg4LGFsdDo5fSx7bGF0OjM3LjU5NDUyLGxuZzotMTIyLjUwNTM0LGFsdDo1fSx7bGF0OjM3LjU5NTU1LGxuZzotMTIyLjUwNDI0LGFsdDo0fV0sYTE9W3tpZDoiYXBwbGUtcGFyay1sb29wIixuYW1lOiJBcHBsZSBQYXJrIExvb3AiLGRlc2NyaXB0aW9uOiJDdXBlcnRpbm8g4oCiIGZsYXQgcmluZyByb2FkIixtb2RlOiJ3YWxrIix3YXlwb2ludHM6WjksbG9vcDohMH0se2lkOiJnb2xkZW4tZ2F0ZSIsbmFtZToiR29sZGVuIEdhdGUgQ3Jvc3NpbmciLGRlc2NyaXB0aW9uOiJTYW4gRnJhbmNpc2NvIOKAoiBicmlkZ2Ugcm91bmQtdHJpcCIsbW9kZToicnVuIix3YXlwb2ludHM6WDksbG9vcDohMH0se2lkOiJ0YW0tcmlkZ2UiLG5hbWU6Ik10LiBUYW0gUmlkZ2UiLGRlc2NyaXB0aW9uOiJTdGluc29uIEJlYWNoIOKAoiBTdGVlcCBSYXZpbmUgKyBNYXR0IERhdmlzIGxvb3AiLG1vZGU6IndhbGsiLHdheXBvaW50czp3OSxsb29wOiEwfSx7aWQ6ImNlbnRyYWwtcGFyayIsbmFtZToiUmVzZXJ2b2lyIExvb3AiLGRlc2NyaXB0aW9uOiJDZW50cmFsIFBhcmsg4oCiIDIuNSBrbSIsbW9kZToicnVuIix3YXlwb2ludHM6JDksbG9vcDohMH0se2lkOiJwY2gtcGFjaWZpY2EiLG5hbWU6IlBhY2lmaWMgQ29hc3QgSHd5IixkZXNjcmlwdGlvbjoiUGFjaWZpY2Eg4oCiIERldmlsJ3MgU2xpZGUgcm91bmQtdHJpcCIsbW9kZToiZHJpdmUiLHdheXBvaW50czpHOSxsb29wOiEwfV07dmFyIEo5PTY1MCxZOT1gCi5sZW0tdG9nZ2xlOmhvdmVyIHsgY29sb3I6ICNmZmY7IH0KLmxlbS10b2dnbGU6aG92ZXIgLmxlbS1jaGV2cm9uIHsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC44NSkgIWltcG9ydGFudDsgfQoubGVtLXNlbGVjdDpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wNyk7IGJvcmRlci1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjE2KTsgfQoubGVtLXNlbGVjdDpmb2N1cyB7IG91dGxpbmU6IG5vbmU7IGJvcmRlci1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjI0KTsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjA4KTsgfQoubGVtLXByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBmaWx0ZXI6IGJyaWdodG5lc3MoMS4wOCk7IH0KLmxlbS1wcmltYXJ5LW9uOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjIyKSAhaW1wb3J0YW50OyBmaWx0ZXI6IG5vbmU7IH0KLmxlbS1naG9zdDpob3Zlcjpub3QoOmRpc2FibGVkKSB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wNik7IGJvcmRlci1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjIpOyBjb2xvcjogI2ZmZjsgfQoubGVtLWdob3N0OmRpc2FibGVkIHsgb3BhY2l0eTogMC40OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9Ci5sZW0tc2VnOmhvdmVyOm5vdChbYXJpYS1wcmVzc2VkPSJ0cnVlIl0pIHsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC45KTsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjA1KSAhaW1wb3J0YW50OyB9Ci5sZW0tc3BlZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDkpOyBib3JkZXItY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC4xOCk7IGNvbG9yOiAjZmZmOyB9Ci5sZW0tc3BlZWQtb246aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuODgpICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjg4KSAhaW1wb3J0YW50OyBjb2xvcjogIzBhMGEwYyAhaW1wb3J0YW50OyB9Ci5sZW0tc3BlZWQ6YWN0aXZlIHsgdHJhbnNmb3JtOiBzY2FsZSgwLjk3KTsgfQpgLHAwPVsxLDIsNSwyMF0sazM9MTAwMCx4MD17c3RhdHVzOiJpZGxlIixhcmM6MCxlbGFwc2VkTXM6MH07ZnVuY3Rpb24gejMoe3VkaWQ6QyxleGVjOkx9KXtsZXRbTixLXT1NKCEwKSxbWixYXT1NKGExWzBdLmlkKSxbdywkXT1NKGExWzBdLm1vZGUpLFtKLEddPU0oMSksW3EsWV09TSh4MCksW0gsUV09TShudWxsKSxrPU0xKCgpPT5hMS5maW5kKChUKT0+VC5pZD09PVopPz9hMVswXSxbWl0pLGI9TTEoKCk9PkYzKGspLFtrXSksVj1SKDApLEQ9UigiaWRsZSIpLEE9UihSMCh3KSpKKSxJPVIoMCksaD1SKGIpLGc9UihudWxsKTtFKCgpPT57QS5jdXJyZW50PVIwKHcpKkp9LFt3LEpdKTtsZXQgVT1SKG51bGwpO0UoKCk9PntsZXQgVD1oLmN1cnJlbnQsbD1WLmN1cnJlbnQ7aWYoaC5jdXJyZW50PWIsVCYmVCE9PWIpVS5jdXJyZW50PUg5KFQsbCxiLHBlcmZvcm1hbmNlLm5vdygpKTtWLmN1cnJlbnQ9MCxJLmN1cnJlbnQ9MCxELmN1cnJlbnQ9ImlkbGUiLGcuY3VycmVudD1udWxsLFkoeDApfSxbYl0pO2xldCB6PVIoMCkseT1SKG51bGwpLHg9UihudWxsKTtFKCgpPT57bGV0IFQ9MCxsPShlKT0+e2xldCBzPXkuY3VycmVudCxIMT1zPT1udWxsPzE2Ok1hdGgubWluKDY0LGUtcyk7aWYoeS5jdXJyZW50PWUsei5jdXJyZW50PSh6LmN1cnJlbnQrSDEqMC4wMDAxMiklKE1hdGguUEkqMiksRC5jdXJyZW50PT09InBsYXlpbmciKXtsZXQgQzE9QS5jdXJyZW50KkgxLzEwMDA7Vi5jdXJyZW50Kz1DMSxJLmN1cnJlbnQrPUgxO2xldCBjPWguY3VycmVudC50b3RhbERpc3RhbmNlO2lmKCFoLmN1cnJlbnQudHJhaWwubG9vcCYmVi5jdXJyZW50Pj1jKVYuY3VycmVudD1jLEQuY3VycmVudD0icGF1c2VkIixZKHtzdGF0dXM6InBhdXNlZCIsYXJjOmMsZWxhcHNlZE1zOkkuY3VycmVudH0pfWxldCAkMT14LmN1cnJlbnQ7aWYoJDEpe2xldCBDMT1oLmN1cnJlbnQsYz1udWxsLHA9VS5jdXJyZW50O2lmKHApe2xldCByPShlLXAuc3RhcnRNcykvSjk7aWYocj49MSlVLmN1cnJlbnQ9bnVsbDtlbHNle2xldCBmPUQ5KHIpO0MxPVY5KHAsZiksYz17eDpwLnByZXZNYXJrZXIueCsocC5uZXh0TWFya2VyLngtcC5wcmV2TWFya2VyLngpKmYseTpwLnByZXZNYXJrZXIueSsocC5uZXh0TWFya2VyLnktcC5wcmV2TWFya2VyLnkpKmYsejpwLnByZXZNYXJrZXIueisocC5uZXh0TWFya2VyLnotcC5wcmV2TWFya2VyLnopKmZ9fX1COSgkMSxDMSxWLmN1cnJlbnQsei5jdXJyZW50LGUsRC5jdXJyZW50PT09InBsYXlpbmciLGMpfVQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGwpfTtyZXR1cm4gVD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobCksKCk9PmNhbmNlbEFuaW1hdGlvbkZyYW1lKFQpfSxbXSksRSgoKT0+e2xldCBUPXNldEludGVydmFsKCgpPT57aWYoRC5jdXJyZW50PT09InBsYXlpbmciKVkoe3N0YXR1czoicGxheWluZyIsYXJjOlYuY3VycmVudCxlbGFwc2VkTXM6SS5jdXJyZW50fSl9LDI1MCk7cmV0dXJuKCk9PmNsZWFySW50ZXJ2YWwoVCl9LFtdKSxFKCgpPT57aWYocS5zdGF0dXMhPT0icGxheWluZyIpcmV0dXJuO2xldCBUPSExLGw9MCxlPW51bGwscz1hc3luYygpPT57aWYoVHx8ZSlyZXR1cm47bGV0ICQxPURhdGUubm93KCk7aWYoJDEtbDxrMylyZXR1cm47bD0kMTtsZXQgQzE9dTEoaC5jdXJyZW50LFYuY3VycmVudCksYz1geGNydW4gc2ltY3RsIGxvY2F0aW9uICR7Q30gc2V0ICR7QzEubGF0LnRvRml4ZWQoNyl9LCR7QzEubG5nLnRvRml4ZWQoNyl9YDtlPUwoYykudGhlbigocCk9PntpZihUKXJldHVybjtpZihwLmV4aXRDb2RlIT09MClRKE8zKHAuc3RkZXJyKXx8InNpbWN0bCBsb2NhdGlvbiBzZXQgZmFpbGVkIik7ZWxzZSBRKG51bGwpfSkuY2F0Y2goKHApPT57aWYoIVQpUShwIGluc3RhbmNlb2YgRXJyb3I/cC5tZXNzYWdlOlN0cmluZyhwKSl9KS5maW5hbGx5KCgpPT57ZT1udWxsfSl9O3MoKTtsZXQgSDE9c2V0SW50ZXJ2YWwocyxrMyk7cmV0dXJuKCk9PntUPSEwLGNsZWFySW50ZXJ2YWwoSDEpfX0sW3Euc3RhdHVzLEMsTF0pO2xldCBpPVAoKCk9PntpZihELmN1cnJlbnQ9PT0icGxheWluZyIpe0QuY3VycmVudD0icGF1c2VkIixZKChUKT0+KHsuLi5ULHN0YXR1czoicGF1c2VkIn0pKTtyZXR1cm59aWYoVi5jdXJyZW50Pj1oLmN1cnJlbnQudG90YWxEaXN0YW5jZSYmIWguY3VycmVudC50cmFpbC5sb29wKVYuY3VycmVudD0wLEkuY3VycmVudD0wO2lmKGcuY3VycmVudD09bnVsbCl7bGV0IFQ9dTEoaC5jdXJyZW50LFYuY3VycmVudCk7Zy5jdXJyZW50PXtsYXQ6VC5sYXQsbG5nOlQubG5nfX1ELmN1cnJlbnQ9InBsYXlpbmciLFkoKFQpPT4oey4uLlQsc3RhdHVzOiJwbGF5aW5nIixhcmM6Vi5jdXJyZW50LGVsYXBzZWRNczpJLmN1cnJlbnR9KSl9LFtdKSxhPVAoKCk9PntELmN1cnJlbnQ9ImlkbGUiLFYuY3VycmVudD0wLEkuY3VycmVudD0wLFkoeDApO2xldCBUPWcuY3VycmVudDtnLmN1cnJlbnQ9bnVsbDtsZXQgbD1UP2B4Y3J1biBzaW1jdGwgbG9jYXRpb24gJHtDfSBzZXQgJHtULmxhdC50b0ZpeGVkKDcpfSwke1QubG5nLnRvRml4ZWQoNyl9YDpgeGNydW4gc2ltY3RsIGxvY2F0aW9uICR7Q30gY2xlYXJgO0wobCkudGhlbigoZSk9PntpZihlLmV4aXRDb2RlIT09MClRKE8zKGUuc3RkZXJyKXx8bnVsbCk7ZWxzZSBRKG51bGwpfSl9LFtMLENdKSxxMT1QKChUKT0+e1goVCk7bGV0IGw9YTEuZmluZCgoZSk9PmUuaWQ9PT1UKTtpZihsKSQobC5tb2RlKX0sW10pO0UoKCk9PigpPT57aWYoRC5jdXJyZW50PT09ImlkbGUiKXJldHVybjtsZXQgVD1nLmN1cnJlbnQsbD1UP2B4Y3J1biBzaW1jdGwgbG9jYXRpb24gJHtDfSBzZXQgJHtULmxhdC50b0ZpeGVkKDcpfSwke1QubG5nLnRvRml4ZWQoNyl9YDpgeGNydW4gc2ltY3RsIGxvY2F0aW9uICR7Q30gY2xlYXJgO0wobCkuY2F0Y2goKCk9Pnt9KX0sW0wsQ10pO2xldCBkPXEuc3RhdHVzPT09InBsYXlpbmciLEwxPWQ/YCR7bDAocS5hcmMpfSDCtyAke00zKHEuZWxhcHNlZE1zKX1gOmAke2wwKGIudG90YWxEaXN0YW5jZSl9IHRvdGFsYDtyZXR1cm4gXygiZGl2Iix7Y2xhc3NOYW1lOiJiZy1wYW5lbCBib3JkZXIgYm9yZGVyLXdoaXRlLzggcm91bmRlZC1bMTBweF0gZmxleCBmbGV4LWNvbCBnYXAtMi41IHB4LTMgcHQtMiBwYi0zIixjaGlsZHJlbjpbXygic3R5bGUiLHtjaGlsZHJlbjpZOX0pLF8oImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+SygoVCk9PiFUKSxjbGFzc05hbWU6ImxlbS10b2dnbGUgZ3JpZCBbZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG9fMWZyX2F1dG9dIGl0ZW1zLWNlbnRlciBnYXAtMiBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSB0ZXh0LXdoaXRlLzkwIHB5LTIuNSBweC0xIC1teS0yIC1teC0xIGN1cnNvci1wb2ludGVyIHctW2NhbGMoMTAwJSs4cHgpXSB0ZXh0LWxlZnQgbWluLWgtWzM2cHhdIGxlYWRpbmctbm9uZSIsImFyaWEtZXhwYW5kZWQiOk4sY2hpbGRyZW46W18oInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzExcHhdIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZS81MCB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMDhlbV0gbGVhZGluZy1ub25lIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciIsY2hpbGRyZW46IkxvY2F0aW9uIn0pLF8oInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzExcHhdIHRleHQtd2hpdGUvNTUgZm9udC1tb25vIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IGp1c3RpZnktc2VsZi1lbmQgbGVhZGluZy1ub25lIixjaGlsZHJlbjpbXygic3BhbiIse2NsYXNzTmFtZToic2l6ZS0xLjUgcm91bmRlZC1mdWxsIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4ycyxib3gtc2hhZG93XzAuMnNdIixzdHlsZTp7YmFja2dyb3VuZDpkPyIjNGFkZTgwIjpiLnRvdGFsRGlzdGFuY2U+MD8icmdiYSgyNTUsMjU1LDI1NSwwLjMpIjoidHJhbnNwYXJlbnQiLGJveFNoYWRvdzpkPyIwIDAgNnB4IHJnYmEoNzQsMjIyLDEyOCwwLjcpIjoibm9uZSJ9fSksTDFdfSksXyhpMix7b3BlbjpOfSldfSksTiYmXyhLMSx7Y2hpbGRyZW46W18oImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBnYXAtMSIsY2hpbGRyZW46W18oImRpdiIse2NsYXNzTmFtZToicmVsYXRpdmUgYmxvY2siLGNoaWxkcmVuOltfKCJzZWxlY3QiLHt2YWx1ZTpaLG9uQ2hhbmdlOihUKT0+cTEoVC50YXJnZXQudmFsdWUpLGNsYXNzTmFtZToibGVtLXNlbGVjdCBhcHBlYXJhbmNlLW5vbmUgWy13ZWJraXQtYXBwZWFyYW5jZTpub25lXSBiZy13aGl0ZS9bMC4wNF0gYm9yZGVyIGJvcmRlci13aGl0ZS84IHJvdW5kZWQtbWQgdGV4dC13aGl0ZS85MCB0ZXh0LVsxMnB4XSBweS0xLjUgcHItWzI2cHhdIHBsLTIgZm9udC1baW5oZXJpdF0gY3Vyc29yLXBvaW50ZXIgdy1mdWxsIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xMnMsYm9yZGVyLWNvbG9yXzAuMTJzXSIsImFyaWEtbGFiZWwiOiJUcmFpbCIsY2hpbGRyZW46YTEubWFwKChUKT0+Xygib3B0aW9uIix7dmFsdWU6VC5pZCxjaGlsZHJlbjpULm5hbWV9LFQuaWQpKX0pLF8oInNwYW4iLHtjbGFzc05hbWU6ImFic29sdXRlIHJpZ2h0LVs5cHhdIHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiBwb2ludGVyLWV2ZW50cy1ub25lIGZsZXggaXRlbXMtY2VudGVyIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjpfKGkyLHtvcGVuOiExfSl9KV19KSxfKCJkaXYiLHtjbGFzc05hbWU6InRleHQtWzEwcHhdIHRleHQtd2hpdGUvNDUiLGNoaWxkcmVuOmsuZGVzY3JpcHRpb259KV19KSxfKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIHctZnVsbCByb3VuZGVkLVsxMHB4XSBvdmVyZmxvdy1oaWRkZW4gYmctWyMwYTBhMGNdIGJvcmRlciBib3JkZXItd2hpdGUvWzAuMDZdIFthc3BlY3QtcmF0aW86MTYvMTFdIixjaGlsZHJlbjpbXygiY2FudmFzIix7cmVmOngsY2xhc3NOYW1lOiJ3LWZ1bGwgaC1mdWxsIGJsb2NrIn0pLF8oYjkse3ByZXBhcmVkOmJ9KV19KSxfKCJkaXYiLHtjbGFzc05hbWU6ImdyaWQgW2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnJfMWZyXzFmcl0gZ2FwLTEuNSIsY2hpbGRyZW46W18oZzAse2xhYmVsOiJEaXN0YW5jZSIsdmFsdWU6bDAocS5hcmMpfSksXyhnMCx7bGFiZWw6IlBhY2UiLHZhbHVlOms5KEEuY3VycmVudCl9KSxfKGcwLHtsYWJlbDoiRWxhcHNlZCIsdmFsdWU6TTMocS5lbGFwc2VkTXMpfSldfSksXygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGdhcC0xLjUiLGNoaWxkcmVuOltfKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6aSxjbGFzc05hbWU6YGZsZXgtMSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMS41IHB5LTIgcHgtMi41IGJvcmRlci1ub25lIHJvdW5kZWQtWzdweF0gdGV4dC1bMTJweF0gZm9udC1zZW1pYm9sZCBjdXJzb3ItcG9pbnRlciBmb250LVtpbmhlcml0XSAke2Q/ImxlbS1wcmltYXJ5IGxlbS1wcmltYXJ5LW9uIGJnLXdoaXRlL1swLjE2XSB0ZXh0LXdoaXRlIjoibGVtLXByaW1hcnkgYmctc3VjY2Vzcy1lbWVyYWxkIHRleHQtWyMwNjIwMThdIn1gLCJhcmlhLXByZXNzZWQiOmQsdGl0bGU6ZD8iUGF1c2UiOiJQbGF5IixjaGlsZHJlbjpbZD9fKHowLHt9KTpfKE8wLHt9KSxfKCJzcGFuIix7Y2hpbGRyZW46ZD8iUGF1c2UiOiJQbGF5In0pXX0pLF8oImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazphLGNsYXNzTmFtZToibGVtLWdob3N0IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0xLjUgcHktMiBweC0zIGJvcmRlciBib3JkZXItd2hpdGUvMTIgcm91bmRlZC1bN3B4XSB0ZXh0LVsxMnB4XSBmb250LW1lZGl1bSBiZy10cmFuc3BhcmVudCB0ZXh0LXdoaXRlLzg1IGN1cnNvci1wb2ludGVyIGZvbnQtW2luaGVyaXRdIixkaXNhYmxlZDpxLnN0YXR1cz09PSJpZGxlIiYmcS5hcmM9PT0wLHRpdGxlOiJTdG9wIGFuZCBjbGVhciBzaW11bGF0ZWQgbG9jYXRpb24iLGNoaWxkcmVuOltfKEkwLHt9KSxfKCJzcGFuIix7Y2hpbGRyZW46IlN0b3AifSldfSldfSksXygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtcm93IGl0ZW1zLXN0cmV0Y2ggZ2FwLTEuNSIsY2hpbGRyZW46W18oImRpdiIse2NsYXNzTmFtZToiZmxleC0xIG1pbi13LTAiLGNoaWxkcmVuOl8ocTkse2FyaWFMYWJlbDoiVHJhbnNwb3J0IG1vZGUiLHZhbHVlOncsb25DaGFuZ2U6KFQpPT4kKFQpLG9wdGlvbnM6W3t2YWx1ZToid2FsayIsbGFiZWw6IldhbGsiLGljb246XyhUMCx7fSl9LHt2YWx1ZToicnVuIixsYWJlbDoiUnVuIixpY29uOl8oUDAse30pfSx7dmFsdWU6ImN5Y2xlIixsYWJlbDoiQ3ljbGUiLGljb246Xyh5MCx7fSl9LHt2YWx1ZToiZHJpdmUiLGxhYmVsOiJEcml2ZSIsaWNvbjpfKGgwLHt9KX1dfSl9KSxfKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PntsZXQgVD1wMC5pbmRleE9mKEopLGw9cDBbKFQrMSklcDAubGVuZ3RoXTtHKGwpfSxjbGFzc05hbWU6YGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0xIHB4LTIuNSBib3JkZXIgcm91bmRlZC1bN3B4XSBjdXJzb3ItcG9pbnRlciBmb250LVtpbmhlcml0XSB0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIG1pbi13LVs1NnB4XSAke0o+MT8ibGVtLXNwZWVkIGxlbS1zcGVlZC1vbiBiZy13aGl0ZSBib3JkZXItd2hpdGUgdGV4dC1bIzBhMGEwY10iOiJsZW0tc3BlZWQgYmctd2hpdGUvWzAuMDRdIGJvcmRlci13aGl0ZS84IHRleHQtd2hpdGUvODUifWAsImFyaWEtbGFiZWwiOmBTcGVlZCAke0p9w5cg4oCUIHRhcCB0byBjeWNsZWAsdGl0bGU6YFNwZWVkICR7Sn3DlyDigJQgdGFwIHRvIGN5Y2xlYCxjaGlsZHJlbjpbXyhFMCx7fSksSj4xJiZfKCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LW1vbm8gW2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc10iLGNoaWxkcmVuOltKLCLDlyJdfSldfSldfSksSCYmXygiZGl2Iix7Y2xhc3NOYW1lOiJiZy1kYW5nZXIvMTAgYm9yZGVyIGJvcmRlci1kYW5nZXIvMjAgdGV4dC1kYW5nZXItc29mdCB0ZXh0LVsxMXB4XSBweC0yIHB5LTEuNSByb3VuZGVkLW1kIixjaGlsZHJlbjpIfSldfSldfSl9dmFyIGcwPXQxKGZ1bmN0aW9uKHtsYWJlbDpMLHZhbHVlOk59KXtyZXR1cm4gXygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtY29sIGdhcC0wLjUgYmctd2hpdGUvWzAuMDNdIGJvcmRlciBib3JkZXItd2hpdGUvWzAuMDZdIHJvdW5kZWQtbWQgcHktWzVweF0gcHgtWzdweF0gbWluLXctMCIsY2hpbGRyZW46W18oImRpdiIse2NsYXNzTmFtZToidGV4dC1bOXB4XSB1cHBlcmNhc2UgdHJhY2tpbmctWzAuMDZlbV0gdGV4dC13aGl0ZS80NSIsY2hpbGRyZW46TH0pLF8oImRpdiIse2NsYXNzTmFtZToidGV4dC1bMTJweF0gZm9udC1tb25vIHRleHQtd2hpdGUgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAiLGNoaWxkcmVuOk59KV19KX0pO2Z1bmN0aW9uIHE5KHt2YWx1ZTpDLG9uQ2hhbmdlOkwsb3B0aW9uczpOLGFyaWFMYWJlbDpLfSl7cmV0dXJuIF8oImRpdiIse3JvbGU6Imdyb3VwIiwiYXJpYS1sYWJlbCI6SyxjbGFzc05hbWU6ImZsZXggYmctd2hpdGUvWzAuMDRdIGJvcmRlciBib3JkZXItd2hpdGUvOCByb3VuZGVkLVs3cHhdIHAtMC41IGdhcC0wLjUiLGNoaWxkcmVuOk4ubWFwKChaKT0+e2xldCBYPVoudmFsdWU9PT1DO3JldHVybiBfKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PkwoWi52YWx1ZSksY2xhc3NOYW1lOmBmbGV4LTEgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLW5vbmUgcm91bmRlZC1bNXB4XSBweS1bNXB4XSBweC0yIHRleHQtWzExcHhdIGZvbnQtbWVkaXVtIGN1cnNvci1wb2ludGVyIGZvbnQtW2luaGVyaXRdIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xMnMsY29sb3JfMC4xMnNdIG1pbi1oLVsyMnB4XSAke1g/ImxlbS1zZWcgbGVtLXNlZy1hY3RpdmUgYmctd2hpdGUvWzAuMTJdIHRleHQtd2hpdGUiOiJsZW0tc2VnIGJnLXRyYW5zcGFyZW50IHRleHQtd2hpdGUvNjAifWAsImFyaWEtcHJlc3NlZCI6WCwiYXJpYS1sYWJlbCI6Wi5pY29uP1oubGFiZWw6dm9pZCAwLHRpdGxlOlouaWNvbj9aLmxhYmVsOnZvaWQgMCxjaGlsZHJlbjpaLmljb24/P1oubGFiZWx9LFoudmFsdWUpfSl9KX1mdW5jdGlvbiBiOSh7cHJlcGFyZWQ6Q30pe2lmKEMucmF3TWF4QWx0LUMucmF3TWluQWx0PDUpcmV0dXJuIG51bGw7cmV0dXJuIF8oSzEse2NoaWxkcmVuOltfKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC0yIGxlZnQtMi41IGJnLXBhbmVsLW92ZXJsYXkgdGV4dC13aGl0ZS84NSB0ZXh0LVsxMHB4XSBmb250LW1vbm8gcHgtMS41IHB5LTAuNSByb3VuZGVkLVs1cHhdIGZsZXggaXRlbXMtY2VudGVyIHRyYWNraW5nLVswLjAyZW1dIGJvcmRlciBib3JkZXItd2hpdGUvWzAuMDZdIixjaGlsZHJlbjpbXyhyMix7ZGlyOiJ1cCJ9KSwiICIsVTMoQy5yYXdNYXhBbHQpXX0pLF8oImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgdG9wLTIgcmlnaHQtMi41IGJnLXBhbmVsLW92ZXJsYXkgdGV4dC13aGl0ZS84NSB0ZXh0LVsxMHB4XSBmb250LW1vbm8gcHgtMS41IHB5LTAuNSByb3VuZGVkLVs1cHhdIGZsZXggaXRlbXMtY2VudGVyIHRyYWNraW5nLVswLjAyZW1dIGJvcmRlciBib3JkZXItd2hpdGUvWzAuMDZdIixjaGlsZHJlbjpbXyhyMix7ZGlyOiJkb3duIn0pLCIgIixVMyhDLnJhd01pbkFsdCldfSldfSl9dmFyIFczPTE0MDtmdW5jdGlvbiBBMyhDLEwpe2xldCBOPUFycmF5KEwpO2ZvcihsZXQgSz0wO0s8TDtLKyspe2xldCBaPUw9PT0xPzA6Sy8oTC0xKSxYPXUxKEMsWipDLnRvdGFsRGlzdGFuY2UpO05bS109e3g6WC54LHk6WC55LHo6WC56fX1yZXR1cm4gTn1mdW5jdGlvbiBIOShDLEwsTixLKXtsZXQgWj0oQy5ib3VuZHMueFswXStDLmJvdW5kcy54WzFdKS8yLFg9KEMuYm91bmRzLnpbMF0rQy5ib3VuZHMuelsxXSkvMix3PUMuYm91bmRzLnlbMF0sJD1NYXRoLm1heCgxLEMuYm91bmRzLnhbMV0tQy5ib3VuZHMueFswXSxDLmJvdW5kcy56WzFdLUMuYm91bmRzLnpbMF0pLEo9KE4uYm91bmRzLnhbMF0rTi5ib3VuZHMueFsxXSkvMixHPShOLmJvdW5kcy56WzBdK04uYm91bmRzLnpbMV0pLzIscT1OLmJvdW5kcy55WzBdLEg9TWF0aC5tYXgoMSxOLmJvdW5kcy54WzFdLU4uYm91bmRzLnhbMF0sTi5ib3VuZHMuelsxXS1OLmJvdW5kcy56WzBdKS8kLGs9QTMoQyxXMykubWFwKChVKT0+KHt4OihVLngtWikqSCtKLHk6KFUueS13KSpIK3EsejooVS56LVgpKkgrR30pKSxiPUEzKE4sVzMpLFY9KEMudHJhaWwubG9vcHx8Ti50cmFpbC5sb29wKT8/ITEsRD1ROShrLGIsViksQT11MShDLEwpLEk9e3g6KEEueC1aKSpIK0oseTooQS55LXcpKkgrcSx6OihBLnotWCkqSCtHfSxoPXUxKE4sMCksZz17eDpoLngseTpoLnksejpoLnp9O3JldHVybntmcm9tOkMsdG86Tixmcm9tUHRzOmssdG9QdHM6RCxwcmV2TWFya2VyOkksbmV4dE1hcmtlcjpnLHN0YXJ0TXM6S319ZnVuY3Rpb24gUTkoQyxMLE4pe2xldCBLPUMubGVuZ3RoLFo9MS8wLFg9MCx3PSExLCQ9W0wsWy4uLkxdLnJldmVyc2UoKV07Zm9yKGxldCBxPTA7cTwkLmxlbmd0aDtxKyspe2xldCBZPSRbcV0sSD1OP0s6MTtmb3IobGV0IFE9MDtRPEg7USsrKXtsZXQgaz0wO2ZvcihsZXQgYj0wO2I8SztiKyspe2xldCBWPUNbYl0sRD1ZWyhiK1EpJUtdLEE9Vi54LUQueCxJPVYueS1ELnksaD1WLnotRC56O2lmKGsrPUEqQStJKkkraCpoLGs+PVopYnJlYWt9aWYoazxaKVo9ayxYPVEsdz1xPT09MX19bGV0IEo9dz9bLi4uTF0ucmV2ZXJzZSgpOkwsRz1BcnJheShLKTtmb3IobGV0IHE9MDtxPEs7cSsrKUdbcV09SlsocStYKSVLXTtyZXR1cm4gR31mdW5jdGlvbiBWOShDLEwpe2xldCBOPUMuZnJvbVB0cy5sZW5ndGgsSz1BcnJheShOKSxaPTAsWD1udWxsLHc9MS8wLCQ9LTEvMCxKPTEvMCxHPS0xLzAscT0xLzAsWT0tMS8wO2ZvcihsZXQgSD0wO0g8TjtIKyspe2xldCBRPUMuZnJvbVB0c1tIXSxrPUMudG9QdHNbSF0sYj1RLngrKGsueC1RLngpKkwsVj1RLnkrKGsueS1RLnkpKkwsRD1RLnorKGsuei1RLnopKkw7aWYoWCl7bGV0IEk9Yi1YLngsaD1WLVgueSxnPUQtWC56O1orPU1hdGguc3FydChJKkkraCpoK2cqZyl9bGV0IEE9e3g6Yix5OlYsejpELGFyYzpaLGxhdDowLGxuZzowfTtpZihLW0hdPUEsWD1BLGI8dyl3PWI7aWYoYj4kKSQ9YjtpZihWPEopSj1WO2lmKFY+RylHPVY7aWYoRDxxKXE9RDtpZihEPlkpWT1EfXJldHVybnt0cmFpbDpDLnRvLnRyYWlsLG9yaWdpbjpDLnRvLm9yaWdpbixwb2ludHM6Syx0b3RhbERpc3RhbmNlOlosYm91bmRzOnt4Olt3LCRdLHk6W0osR10sejpbcSxZXX0scmF3TWluQWx0OkMudG8ucmF3TWluQWx0KyhDLmZyb20ucmF3TWluQWx0LUMudG8ucmF3TWluQWx0KSooMS1MKSxyYXdNYXhBbHQ6Qy50by5yYXdNYXhBbHQrKEMuZnJvbS5yYXdNYXhBbHQtQy50by5yYXdNYXhBbHQpKigxLUwpfX1mdW5jdGlvbiBEOShDKXtyZXR1cm4gQzwwLjU/MipDKkM6MS1NYXRoLnBvdygtMipDKzIsMikvMn1mdW5jdGlvbiBCOShDLEwsTixLLFosWCx3KXtsZXQgJD1DLmdldENvbnRleHQoIjJkIik7aWYoISQpcmV0dXJuO2xldHtjbGllbnRXaWR0aDpKLGNsaWVudEhlaWdodDpHfT1DO2lmKEo9PT0wfHxHPT09MClyZXR1cm47bGV0IHE9dHlwZW9mIHdpbmRvdzwidSI/d2luZG93LmRldmljZVBpeGVsUmF0aW98fDE6MSxZPU1hdGgucm91bmQoSipxKSxIPU1hdGgucm91bmQoRypxKTtpZihDLndpZHRoIT09WXx8Qy5oZWlnaHQhPT1IKUMud2lkdGg9WSxDLmhlaWdodD1IOyQuc2V0VHJhbnNmb3JtKHEsMCwwLHEsMCwwKSwkLmNsZWFyUmVjdCgwLDAsSixHKTtsZXQgUT0kLmNyZWF0ZVJhZGlhbEdyYWRpZW50KEoqMC41LEcqMC41NSxNYXRoLm1pbihKLEcpKjAuMixKKjAuNSxHKjAuNTUsTWF0aC5tYXgoSixHKSowLjg1KTtRLmFkZENvbG9yU3RvcCgwLCIjMWExYTFkIiksUS5hZGRDb2xvclN0b3AoMSwiIzBhMGEwYyIpLCQuZmlsbFN0eWxlPVEsJC5maWxsUmVjdCgwLDAsSixHKSxGOSgkLEosRyk7bGV0e3BvaW50czprLGJvdW5kczpifT1MO2lmKGsubGVuZ3RoPDIpcmV0dXJuO2xldCBWPTI4Kk1hdGguUEkvMTgwLEQ9TWF0aC5zaW4oViksQT1NYXRoLmNvcyhWKSxJPU1hdGguc2luKEspLGg9TWF0aC5jb3MoSyksZz0oYi54WzBdK2IueFsxXSkvMixVPShiLnpbMF0rYi56WzFdKS8yLHo9Yi54WzFdLWIueFswXSx5PWIuelsxXS1iLnpbMF0seD1iLnlbMV0tYi55WzBdLGk9TWF0aC5tYXgoeix5KSoxLjA1LGE9TWF0aC5tYXgoeSpBK3gqRCx6KjAuNCkqMS4xNSxxMT1KKjAuMDgsZD1HKjAuMTgsTDE9TWF0aC5taW4oKEotcTEqMikvaSwoRy1kKjIpL2EpKjEuNDUsVD14PDE/MTpNYXRoLm1pbigyNCwxNDAvTWF0aC5tYXgoMjAseCkpLGw9KHAscixmKT0+e2xldCBuPXAtZyxaMT1mLVUsQTE9bipoK1oxKkksUTE9LW4qSStaMSpoLGwxPXIqVCxTMT1sMSpBLVExKkQsRjE9bDEqRCtRMSpBO3JldHVybntzeDpKLzIrQTEqTDEsc3k6RyowLjU1LVMxKkwxLGRlcHRoOkYxfX0sZT0zOCxzPWsubWFwKChwKT0+e2xldCByPWwocC54LHAueSxwLnopLGY9bChwLngsMCxwLnopLG49e3N4OnIuc3gsc3k6TWF0aC5tYXgoZi5zeSxyLnN5K2UpLGRlcHRoOmYuZGVwdGh9O3JldHVybntwLHRvcDpyLGJvdDpufX0pO2ZvcihsZXQgcD0xO3A8cy5sZW5ndGg7cCsrKXtsZXQgcj1zW3AtMV0sZj1zW3BdLG49JC5jcmVhdGVMaW5lYXJHcmFkaWVudCgoci50b3Auc3grZi50b3Auc3gpLzIsKHIudG9wLnN5K2YudG9wLnN5KS8yLChyLmJvdC5zeCtmLmJvdC5zeCkvMiwoci5ib3Quc3krZi5ib3Quc3kpLzIpO24uYWRkQ29sb3JTdG9wKDAsInJnYmEoMjU1LDI1NSwyNTUsMC41NSkiKSxuLmFkZENvbG9yU3RvcCgwLjQ1LCJyZ2JhKDE4MCwxODAsMTg1LDAuMjgpIiksbi5hZGRDb2xvclN0b3AoMC44NSwicmdiYSg0MCw0MCw0NSwwLjE4KSIpLG4uYWRkQ29sb3JTdG9wKDEsInJnYmEoMCwwLDAsMCkiKSwkLmZpbGxTdHlsZT1uLCQuYmVnaW5QYXRoKCksJC5tb3ZlVG8oci50b3Auc3gsci50b3Auc3kpLCQubGluZVRvKGYudG9wLnN4LGYudG9wLnN5KSwkLmxpbmVUbyhmLmJvdC5zeCxmLmJvdC5zeSksJC5saW5lVG8oci5ib3Quc3gsci5ib3Quc3kpLCQuY2xvc2VQYXRoKCksJC5maWxsKCl9JC5zdHJva2VTdHlsZT0iI2ZmZmZmZiIsJC5saW5lV2lkdGg9MS42LCQubGluZUNhcD0icm91bmQiLCQubGluZUpvaW49InJvdW5kIiwkLmJlZ2luUGF0aCgpO2ZvcihsZXQgcD0wO3A8cy5sZW5ndGg7cCsrKXtsZXR7dG9wOnJ9PXNbcF07aWYocD09PTApJC5tb3ZlVG8oci5zeCxyLnN5KTtlbHNlICQubGluZVRvKHIuc3gsci5zeSl9JC5zdHJva2UoKTtsZXQgSDE9TjskLnN0cm9rZVN0eWxlPSIjZjlkMmE0IiwkLmxpbmVXaWR0aD0yLjIsJC5iZWdpblBhdGgoKTtsZXQgJDE9ITE7Zm9yKGxldCBwPTA7cDxzLmxlbmd0aDtwKyspe2xldHtwOnIsdG9wOmZ9PXNbcF07aWYoci5hcmM+SDEpYnJlYWs7aWYoISQxKSQubW92ZVRvKGYuc3gsZi5zeSksJDE9ITA7ZWxzZSAkLmxpbmVUbyhmLnN4LGYuc3kpfWlmKCQxKSQuc3Ryb2tlKCk7bGV0IEMxPXc/P3UxKEwsTiksYz1sKEMxLngsQzEueSxDMS56KTtpZihYKXtsZXQgZj1aJTI2MDAvMjYwMCxuPTQrMjIqZixaMT0wLjIyKigxLWYpLEExPSQuY3JlYXRlUmFkaWFsR3JhZGllbnQoYy5zeCxjLnN5LG4qMC41LGMuc3gsYy5zeSxuKTtBMS5hZGRDb2xvclN0b3AoMCwicmdiYSgyNTUsMjU1LDI1NSwwKSIpLEExLmFkZENvbG9yU3RvcCgwLjcsYHJnYmEoMjU1LDI1NSwyNTUsJHtaMS50b0ZpeGVkKDMpfSlgKSxBMS5hZGRDb2xvclN0b3AoMSwicmdiYSgyNTUsMjU1LDI1NSwwKSIpLCQuZmlsbFN0eWxlPUExLCQuYmVnaW5QYXRoKCksJC5hcmMoYy5zeCxjLnN5LG4sMCxNYXRoLlBJKjIpLCQuZmlsbCgpfSQuZmlsbFN0eWxlPSIjZmZmIiwkLmJlZ2luUGF0aCgpLCQuYXJjKGMuc3gsYy5zeSwzLjgsMCxNYXRoLlBJKjIpLCQuZmlsbCgpfWZ1bmN0aW9uIEY5KEMsTCxOKXtDLmZpbGxTdHlsZT0icmdiYSgyNTUsMjU1LDI1NSwwLjA2KSI7Zm9yKGxldCBYPTc7WDxOO1grPTE0KWZvcihsZXQgdz03O3c8TDt3Kz0xNClDLmJlZ2luUGF0aCgpLEMuYXJjKHcsWCwwLjcsMCxNYXRoLlBJKjIpLEMuZmlsbCgpfWZ1bmN0aW9uIGwwKEMpe2lmKEM8MTAwMClyZXR1cm5gJHtDLnRvRml4ZWQoMCl9IG1gO3JldHVybmAkeyhDLzEwMDApLnRvRml4ZWQoMil9IGttYH1mdW5jdGlvbiBNMyhDKXtsZXQgTD1NYXRoLmZsb29yKEMvMTAwMCksTj1NYXRoLmZsb29yKEwvMzYwMCksSz1NYXRoLmZsb29yKEwlMzYwMC82MCksWj1MJTYwO2lmKE4+MClyZXR1cm5gJHtOfToke0sudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7Wi50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gO3JldHVybmAke0t9OiR7Wi50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1gfWZ1bmN0aW9uIGs5KEMpe2lmKEM8PTApcmV0dXJuIuKAlCI7aWYoQz43KXJldHVybmAkeyhDKjMuNikudG9GaXhlZCgwKX0ga20vaGA7bGV0IEw9MTAwMC9DLE49TWF0aC5mbG9vcihMLzYwKSxLPU1hdGgucm91bmQoTCU2MCk7cmV0dXJuYCR7Tn06JHtLLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS9rbWB9ZnVuY3Rpb24gVTMoQyl7cmV0dXJuYCR7Qy50b0ZpeGVkKDApfSBtYH1mdW5jdGlvbiBPMyhDKXtsZXQgTD1DLnRyaW0oKTtpZighTClyZXR1cm4iIjtsZXQgTj1MLm1hdGNoKC9SZWFzb246XHMqKC4rKSQvbSk7aWYoTilyZXR1cm4gTlsxXTtyZXR1cm4gTC5zcGxpdChgCmApLnNsaWNlKC0xKVswXT8/TH1hc3luYyBmdW5jdGlvbiBZMShDKXtyZXR1cm4oYXdhaXQgZmV0Y2goSTEoImV4ZWMiKSx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6SlNPTi5zdHJpbmdpZnkoe2NvbW1hbmQ6Q30pfSkpLmpzb24oKX1mdW5jdGlvbiBPMShDKXtyZXR1cm5gJyR7Qy5yZXBsYWNlKC8nL2csIidcXCcnIil9J2B9YXN5bmMgZnVuY3Rpb24gajAoQyxMLE4pe2xldCBLPWF3YWl0IEMoYHhjcnVuIHNpbWN0bCBnZXRfYXBwX2NvbnRhaW5lciAke0x9ICR7TzEoTil9IGFwcGApO2lmKEsuZXhpdENvZGUhPT0wKXJldHVybntlcnJvcjpLLnN0ZGVyci50cmltKCl8fCJBcHAgbm90IGZvdW5kIG9uIHNpbXVsYXRvciJ9O2xldCBaPUsuc3Rkb3V0LnRyaW0oKTtpZighWilyZXR1cm57ZXJyb3I6IkVtcHR5IGFwcCBwYXRoIn07bGV0IFg9YXdhaXQgQyhgcGx1dGlsIC1jb252ZXJ0IGpzb24gLW8gLSAke08xKForIi9JbmZvLnBsaXN0Iil9YCksdz17fTtpZihYLmV4aXRDb2RlPT09MCl0cnl7dz1KU09OLnBhcnNlKFguc3Rkb3V0KX1jYXRjaHt9bGV0ICQsRz0odz8uQ0ZCdW5kbGVJY29ucz8uQ0ZCdW5kbGVQcmltYXJ5SWNvbj8/dz8uWyJDRkJ1bmRsZUljb25zfmlwYWQiXT8uQ0ZCdW5kbGVQcmltYXJ5SWNvbik/LkNGQnVuZGxlSWNvbkZpbGVzPz93Py5DRkJ1bmRsZUljb25GaWxlcztpZihHJiZHLmxlbmd0aD4wKSQ9R1tHLmxlbmd0aC0xXTtlbHNlIGlmKHR5cGVvZiB3Py5DRkJ1bmRsZUljb25GaWxlPT09InN0cmluZyIpJD13LkNGQnVuZGxlSWNvbkZpbGU7bGV0IHE9bnVsbDtpZigkKXtsZXQgWT1bYCR7JH1AM3gucG5nYCxgJHskfUAyeC5wbmdgLGAkeyR9LnBuZ2AsYCR7JH02MHg2MEAzeC5wbmdgLGAkeyR9NjB4NjBAMngucG5nYF0sUT0oYXdhaXQgQyhgYmFzaCAtYyAke08xKFkubWFwKChrKT0+YFsgLWYgJHtPMShaKyIvIitrKX0gXSAmJiBlY2hvICR7TzEoWisiLyIrayl9ICYmIGV4aXQgMGApLmpvaW4oIjsgIikrIjsgZXhpdCAxIil9YCkpLnN0ZG91dC50cmltKCk7aWYoUSl7bGV0IGs9YXdhaXQgQyhgYmFzZTY0IC1pICR7TzEoUSl9YCk7aWYoay5leGl0Q29kZT09PTApcT1gZGF0YTppbWFnZS9wbmc7YmFzZTY0LCR7ay5zdGRvdXQucmVwbGFjZSgvXHMrL2csIiIpfWB9fXJldHVybnthcHBQYXRoOlosZGlzcGxheU5hbWU6dy5DRkJ1bmRsZURpc3BsYXlOYW1lPz93LkNGQnVuZGxlTmFtZSxzaG9ydFZlcnNpb246dy5DRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZyxidW5kbGVWZXJzaW9uOncuQ0ZCdW5kbGVWZXJzaW9uLG1pbk9TOncuTWluaW11bU9TVmVyc2lvbixleGVjdXRhYmxlOncuQ0ZCdW5kbGVFeGVjdXRhYmxlLGljb25EYXRhVXJsOnF9fXZhciBYMj1uZXcgTWFwO2Z1bmN0aW9uIEkzKEMsTCxOKXtsZXQgSz1gJHtMfToke059YCxaPVgyLmdldChLKTtpZihaIT09dm9pZCAwKXJldHVybiBQcm9taXNlLnJlc29sdmUoWik7bGV0IFg9ajAoQyxMLE4pLnRoZW4oKHcpPT57bGV0ICQ9dy5pY29uRGF0YVVybD8/bnVsbDtyZXR1cm4gWDIuc2V0KEssJCksJH0pLmNhdGNoKCgpPT57cmV0dXJuIFgyLnNldChLLG51bGwpLG51bGx9KTtyZXR1cm4gWDIuc2V0KEssWCksWH1mdW5jdGlvbiBFMyh7dWRpZDpDLGN1cnJlbnRBcHA6TH0pe2xldFtOLEtdPU0obnVsbCk7aWYoRSgoKT0+e2lmKCFMKXtLKG51bGwpO3JldHVybn1sZXQgWj0hMTtyZXR1cm4gSyh7YnVuZGxlSWQ6TC5idW5kbGVJZCxpc1JlYWN0TmF0aXZlOkwuaXNSZWFjdE5hdGl2ZSxwaWQ6TC5waWQsbG9hZGluZzohMH0pLGowKFkxLEMsTC5idW5kbGVJZCkudGhlbigoWCk9PntpZihaKXJldHVybjtLKHtidW5kbGVJZDpMLmJ1bmRsZUlkLGlzUmVhY3ROYXRpdmU6TC5pc1JlYWN0TmF0aXZlLHBpZDpMLnBpZCxsb2FkaW5nOiExLC4uLlh9KX0pLCgpPT57Wj0hMH19LFtDLEwsTD8uYnVuZGxlSWQsTD8ucGlkLEw/LmlzUmVhY3ROYXRpdmVdKSwhTilyZXR1cm4gXygiZGl2Iix7Y2xhc3NOYW1lOiJiZy1wYW5lbCBib3JkZXIgYm9yZGVyLWRhc2hlZCBib3JkZXItd2hpdGUvMTAgcm91bmRlZC1bMTBweF0gcC00IHRleHQtd2hpdGUvNTAgdGV4dC1bMTJweF0gdGV4dC1jZW50ZXIiLGNoaWxkcmVuOiJXYWl0aW5nIGZvciBhbiBhcHAgdG8gY29tZSB0byB0aGUgZm9yZWdyb3VuZOKApiJ9KTtyZXR1cm4gXygiZGl2Iix7Y2xhc3NOYW1lOiJiZy1wYW5lbCBib3JkZXIgYm9yZGVyLXdoaXRlLzggcm91bmRlZC1bMTBweF0gcC0zIixjaGlsZHJlbjpbXygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBtYi0yLjUiLGNoaWxkcmVuOltOLmljb25EYXRhVXJsP18oImltZyIse3NyYzpOLmljb25EYXRhVXJsLGNsYXNzTmFtZToidy0xMSBoLTExIHJvdW5kZWQtWzEwcHhdIHNocmluay0wIG9iamVjdC1jb3ZlciBib3JkZXIgYm9yZGVyLXdoaXRlLzgiLGFsdDoiIn0pOl8oImRpdiIse2NsYXNzTmFtZToidy0xMSBoLTExIHJvdW5kZWQtWzEwcHhdIHNocmluay0wIG9iamVjdC1jb3ZlciBib3JkZXIgYm9yZGVyLXdoaXRlLzggYmctWyMyYTJhMmNdIn0pLF8oImRpdiIse2NsYXNzTmFtZToibWluLXctMCBmbGV4LTEiLGNoaWxkcmVuOltfKCJkaXYiLHtjbGFzc05hbWU6InRleHQtWzE0cHhdIGZvbnQtc2VtaWJvbGQgb3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAiLGNoaWxkcmVuOltOLmRpc3BsYXlOYW1lPz9OLmJ1bmRsZUlkLE4ubG9hZGluZyYmXygic3BhbiIse2NsYXNzTmFtZToidGV4dC13aGl0ZS80MCBmb250LW5vcm1hbCIsY2hpbGRyZW46IiDigKYifSldfSksXygiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSB0ZXh0LXdoaXRlLzUwIGZvbnQtbW9ubyBvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCIsdGl0bGU6Ti5idW5kbGVJZCxjaGlsZHJlbjpOLmJ1bmRsZUlkfSldfSldfSksTi5lcnJvciYmXygiZGl2Iix7Y2xhc3NOYW1lOiJiZy1kYW5nZXIvMTAgYm9yZGVyIGJvcmRlci1kYW5nZXIvMjAgdGV4dC1kYW5nZXItc29mdCB0ZXh0LVsxMXB4XSBweC0yIHB5LTEuNSByb3VuZGVkLW1kIG1iLTIuNSIsY2hpbGRyZW46Ti5lcnJvcn0pLF8oImRsIix7Y2xhc3NOYW1lOiJtLTAgZmxleCBmbGV4LWNvbCBnYXAtMS41IixjaGlsZHJlbjpbXyh3Mix7bGFiZWw6IlZlcnNpb24iLHZhbHVlOk4uc2hvcnRWZXJzaW9uP2Ake04uc2hvcnRWZXJzaW9ufSAoJHtOLmJ1bmRsZVZlcnNpb24/PyLigJQifSlgOk4ubG9hZGluZz8i4oCmIjoi4oCUIn0pLF8odzIse2xhYmVsOiJNaW4gaU9TIix2YWx1ZTpOLm1pbk9TPz8oTi5sb2FkaW5nPyLigKYiOiLigJQiKX0pLF8odzIse2xhYmVsOiJFeGVjdXRhYmxlIix2YWx1ZTpOLmV4ZWN1dGFibGU/PyhOLmxvYWRpbmc/IuKApiI6IuKAlCIpfSksXyh3Mix7bGFiZWw6IlBJRCIsdmFsdWU6Ti5waWQhPW51bGw/U3RyaW5nKE4ucGlkKToi4oCUIn0pLE4uaXNSZWFjdE5hdGl2ZSYmXyh3Mix7bGFiZWw6IlJlYWN0IE5hdGl2ZSIsdmFsdWU6IlllcyJ9KSxfKHcyLHtsYWJlbDoiQXBwIHBhdGgiLHZhbHVlOk4uYXBwUGF0aD8/KE4ubG9hZGluZz8i4oCmIjoi4oCUIiksbW9ubzohMCxhY3Rpb246Ti5hcHBQYXRoP3t0aXRsZToiUmV2ZWFsIGluIEZpbmRlciIsb25DbGljazooKT0+e1kxKGBvcGVuIC1SICR7TzEoTi5hcHBQYXRoKX1gKX0saWNvbjpfKCJzdmciLHt3aWR0aDoiMTEiLGhlaWdodDoiMTEiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyLjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOltfKCJsaW5lIix7eDE6IjciLHkxOiIxNyIseDI6IjE3Iix5MjoiNyJ9KSxfKCJwb2x5bGluZSIse3BvaW50czoiMTAgNyAxNyA3IDE3IDE0In0pXX0pfTp2b2lkIDB9KV19KV19KX1mdW5jdGlvbiB3Mih7bGFiZWw6Qyx2YWx1ZTpMLG1vbm86TixhY3Rpb246S30pe3JldHVybiBfKCJkaXYiLHtjbGFzc05hbWU6Imdyb3VwIGZsZXggaXRlbXMtYmFzZWxpbmUgZ2FwLTIgbWluLXctMCIsY2hpbGRyZW46W18oImR0Iix7Y2xhc3NOYW1lOiJtLTAgdGV4dC1bMTFweF0gdGV4dC13aGl0ZS81MCB3LTIxIHNocmluay0wIixjaGlsZHJlbjpDfSksXygiZGQiLHtjbGFzc05hbWU6YG0tMCB0ZXh0LXdoaXRlLzkwIGZsZXgtMSBtaW4tdy0wIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIHJlbGF0aXZlICR7Tj8iZm9udC1tb25vIHRleHQtWzExcHhdIjoidGV4dC1bMTJweF0ifWAsdGl0bGU6TCxjaGlsZHJlbjpbTCxLJiZfKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTAgcGwtNyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWVuZCBiZy1bbGluZWFyLWdyYWRpZW50KHRvX3JpZ2h0LHJnYmEoMjgsMjgsMzAsMClfMCUsIzFjMWMxZV81NSUpXSBbdHJhbnNpdGlvbjpvcGFjaXR5XzAuMTVzX2Vhc2UsdHJhbnNmb3JtXzAuMTVzX2Vhc2VdIG9wYWNpdHktMCB0cmFuc2xhdGUteC0xIHBvaW50ZXItZXZlbnRzLW5vbmUgZ3JvdXAtaG92ZXI6b3BhY2l0eS0xMDAgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMCBncm91cC1ob3Zlcjpwb2ludGVyLWV2ZW50cy1hdXRvIixjaGlsZHJlbjpfKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6Sy5vbkNsaWNrLHRpdGxlOksudGl0bGUsImFyaWEtbGFiZWwiOksudGl0bGUsY2xhc3NOYW1lOiJ3LTUgaC01IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXRyYW5zcGFyZW50IGJvcmRlci1ub25lIHJvdW5kZWQgdGV4dC13aGl0ZSBjdXJzb3ItcG9pbnRlciBwLTAiLGNoaWxkcmVuOksuaWNvbn0pfSldfSldfSl9dmFyIFQzPVt7a2V5OiJjYW1lcmEiLGxhYmVsOiJDYW1lcmEifSx7a2V5OiJtaWNyb3Bob25lIixsYWJlbDoiTWljcm9waG9uZSJ9LHtrZXk6InBob3RvcyIsbGFiZWw6IlBob3RvcyJ9LHtrZXk6InBob3Rvcy1hZGQiLGxhYmVsOiJBZGQgdG8gUGhvdG9zIn0se2tleToiY29udGFjdHMiLGxhYmVsOiJDb250YWN0cyJ9LHtrZXk6ImNhbGVuZGFyIixsYWJlbDoiQ2FsZW5kYXIifSx7a2V5OiJyZW1pbmRlcnMiLGxhYmVsOiJSZW1pbmRlcnMifSx7a2V5OiJsb2NhdGlvbiIsbGFiZWw6IkxvY2F0aW9uIn0se2tleToibG9jYXRpb24tYWx3YXlzIixsYWJlbDoiTG9jYXRpb24gKEFsd2F5cykifSx7a2V5OiJtb3Rpb24iLGxhYmVsOiJNb3Rpb24ifSx7a2V5OiJtZWRpYS1saWJyYXJ5IixsYWJlbDoiTWVkaWEgTGlicmFyeSJ9LHtrZXk6InNpcmkiLGxhYmVsOiJTaXJpIn1dO2Z1bmN0aW9uIFAzKHt1ZGlkOkMsYnVuZGxlSWQ6TH0pe2xldFtOLEtdPU0oe30pLFtaLFhdPU0obnVsbCksW3csJF09TShudWxsKSxbSixHXT1NKCExKTtFKCgpPT57Syh7fSksJChudWxsKX0sW0xdKTtsZXQgcT1QKGFzeW5jKEgsUSk9PntpZighTClyZXR1cm47bGV0IGs9YCR7SH06JHtRfWA7WChrKSwkKG51bGwpO3RyeXtsZXQgYj1hd2FpdCBZMShgeGNydW4gc2ltY3RsIHByaXZhY3kgJHtDfSAke1F9ICR7SH0gJHtPMShMKX1gKTtpZihiLmV4aXRDb2RlIT09MCl7JChiLnN0ZGVyci50cmltKCl8fGBzaW1jdGwgcHJpdmFjeSBmYWlsZWQgKGV4aXQgJHtiLmV4aXRDb2RlfSlgKTtyZXR1cm59SygoVik9Pih7Li4uVixbSF06UT09PSJyZXNldCI/dm9pZCAwOlF9KSl9ZmluYWxseXtYKG51bGwpfX0sW0MsTF0pLFk9UChhc3luYygpPT57aWYoIUwpcmV0dXJuO1goIl9fYWxsX18iKSwkKG51bGwpO3RyeXtsZXQgSD1hd2FpdCBZMShgeGNydW4gc2ltY3RsIHByaXZhY3kgJHtDfSByZXNldCBhbGwgJHtPMShMKX1gKTtpZihILmV4aXRDb2RlIT09MCl7JChILnN0ZGVyci50cmltKCl8fGBzaW1jdGwgcHJpdmFjeSBmYWlsZWQgKGV4aXQgJHtILmV4aXRDb2RlfSlgKTtyZXR1cm59Syh7fSl9ZmluYWxseXtYKG51bGwpfX0sW0MsTF0pO2lmKCFMKXJldHVybiBfKCJkaXYiLHtjbGFzc05hbWU6ImJnLXBhbmVsIGJvcmRlciBib3JkZXItZGFzaGVkIGJvcmRlci13aGl0ZS8xMCByb3VuZGVkLVsxMHB4XSBwLTQgdGV4dC13aGl0ZS81MCB0ZXh0LVsxMnB4XSB0ZXh0LWNlbnRlciIsY2hpbGRyZW46IlBlcm1pc3Npb25zIGFwcGVhciBvbmNlIGFuIGFwcCBpcyBpbiB0aGUgZm9yZWdyb3VuZC4ifSk7cmV0dXJuIF8oImRpdiIse2NsYXNzTmFtZToiYmctcGFuZWwgYm9yZGVyIGJvcmRlci13aGl0ZS84IHJvdW5kZWQtWzEwcHhdIHB4LTMgcHktMiIsY2hpbGRyZW46W18oImJ1dHRvbiIse29uQ2xpY2s6KCk9PkcoKEgpPT4hSCksY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTEuNSBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSB0ZXh0LXdoaXRlLzUwIHAtMCBtLTAgY3Vyc29yLXBvaW50ZXIgdy1mdWxsIHRleHQtbGVmdCBsZWFkaW5nLW5vbmUiLCJhcmlhLWV4cGFuZGVkIjpKLGNoaWxkcmVuOltfKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIG0tMCIsY2hpbGRyZW46IlBlcm1pc3Npb25zIn0pLF8oInN2ZyIse3dpZHRoOiIxMSIsaGVpZ2h0OiIxMSIsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIuNSIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2xhc3NOYW1lOmBzaHJpbmstMCB0cmFuc2l0aW9uLXRyYW5zZm9ybSBkdXJhdGlvbi0xNTAgJHtKPyJyb3RhdGUtOTAiOiJyb3RhdGUtMCJ9YCxjaGlsZHJlbjpfKCJwb2x5bGluZSIse3BvaW50czoiOSAxOCAxNSAxMiA5IDYifSl9KV19KSxKJiZ3JiZfKCJkaXYiLHtjbGFzc05hbWU6ImJnLWRhbmdlci8xMCBib3JkZXIgYm9yZGVyLWRhbmdlci8yMCB0ZXh0LWRhbmdlci1zb2Z0IHRleHQtWzExcHhdIHB4LTIgcHktMS41IHJvdW5kZWQtbWQgbXQtMiIsY2hpbGRyZW46d30pLEomJl8oImRpdiIse2NsYXNzTmFtZToicmVsYXRpdmUgbXQtMiIsY2hpbGRyZW46W18oImRpdiIse2NsYXNzTmFtZToibWF4LWgtWzI2MHB4XSBvdmVyZmxvdy15LWF1dG8gZmxleCBmbGV4LWNvbCBnYXAtMSBweS0yIFtzY3JvbGxiYXItd2lkdGg6dGhpbl0iLGNoaWxkcmVuOlQzLm1hcCgoe2tleTpILGxhYmVsOlF9KT0+e2xldCBrPU5bSF07cmV0dXJuIF8oImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIHB4LTAuNSBweS0xIixjaGlsZHJlbjpbXygic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTJweF0gdGV4dC13aGl0ZS85MCBvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCBmbGV4LTEgbWluLXctMCIsY2hpbGRyZW46UX0pLF8oImRpdiIse2NsYXNzTmFtZToiZmxleCBnYXAtMC41IGJnLXdoaXRlL1swLjA0XSBib3JkZXIgYm9yZGVyLXdoaXRlLzggcm91bmRlZC1tZCBwLTAuNSIscm9sZToiZ3JvdXAiLCJhcmlhLWxhYmVsIjpRLGNoaWxkcmVuOltfKG8wLHthY3RpdmU6az09PSJncmFudCIscGVuZGluZzpaPT09YCR7SH06Z3JhbnRgLG9uQ2xpY2s6KCk9PnEoSCwiZ3JhbnQiKSx2YXJpYW50OiJncmFudCIsdGl0bGU6IkFsbG93IixjaGlsZHJlbjpfKCJzdmciLHt3aWR0aDoiMTEiLGhlaWdodDoiMTEiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIzIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpfKCJwb2x5bGluZSIse3BvaW50czoiNSAxMiAxMCAxNyAxOSA3In0pfSl9KSxfKG8wLHthY3RpdmU6az09PSJyZXZva2UiLHBlbmRpbmc6Wj09PWAke0h9OnJldm9rZWAsb25DbGljazooKT0+cShILCJyZXZva2UiKSx2YXJpYW50OiJyZXZva2UiLHRpdGxlOiJEZW55IixjaGlsZHJlbjpfKCJzdmciLHt3aWR0aDoiMTEiLGhlaWdodDoiMTEiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIzIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbXygibGluZSIse3gxOiI2Iix5MToiNiIseDI6IjE4Iix5MjoiMTgifSksXygibGluZSIse3gxOiIxOCIseTE6IjYiLHgyOiI2Iix5MjoiMTgifSldfSl9KSxfKG8wLHthY3RpdmU6ITEscGVuZGluZzpaPT09YCR7SH06cmVzZXRgLG9uQ2xpY2s6KCk9PnEoSCwicmVzZXQiKSx2YXJpYW50OiJyZXNldCIsdGl0bGU6IlJlc2V0IixjaGlsZHJlbjpfKEYyLHtzaXplOjExLHN0cm9rZVdpZHRoOjIuNH0pfSldfSldfSxIKX0pfSksXygiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgcmlnaHQtMCBoLVsxNHB4XSBwb2ludGVyLWV2ZW50cy1ub25lIHJvdW5kZWQtdC1bMTBweF0gYmctW2xpbmVhci1ncmFkaWVudCh0b19ib3R0b20sIzFjMWMxZV8wJSxyZ2JhKDI4LDI4LDMwLDApXzEwMCUpXSJ9KSxfKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCByaWdodC0wIGgtWzE0cHhdIHBvaW50ZXItZXZlbnRzLW5vbmUgYmctW2xpbmVhci1ncmFkaWVudCh0b190b3AsIzFjMWMxZV8wJSxyZ2JhKDI4LDI4LDMwLDApXzEwMCUpXSJ9KV19KSxKJiZfKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1lbmQgcHQtMiIsY2hpbGRyZW46XygiYnV0dG9uIix7b25DbGljazpZLGRpc2FibGVkOlo9PT0iX19hbGxfXyIsY2xhc3NOYW1lOiJiZy10cmFuc3BhcmVudCBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHRleHQtd2hpdGUvNzAgdGV4dC1bMTBweF0gcHgtMiBweS1bM3B4XSByb3VuZGVkLVs1cHhdIGN1cnNvci1wb2ludGVyIHVwcGVyY2FzZSB0cmFja2luZy1bMC4wNGVtXSIsdGl0bGU6InhjcnVuIHNpbWN0bCBwcml2YWN5IHJlc2V0IGFsbCIsY2hpbGRyZW46Wj09PSJfX2FsbF9fIj8i4oCmIjoiUmVzZXQgYWxsIn0pfSldfSl9ZnVuY3Rpb24gbzAoe2FjdGl2ZTpDLHBlbmRpbmc6TCxvbkNsaWNrOk4sdmFyaWFudDpLLHRpdGxlOlosY2hpbGRyZW46WH0pe2xldCB3PUs9PT0iZ3JhbnQiPyIjNGFkZTgwIjpLPT09InJldm9rZSI/IiNmODcxNzEiOiIjYTViNGZjIjtyZXR1cm4gXygiYnV0dG9uIix7b25DbGljazpOLGRpc2FibGVkOkwsdGl0bGU6WiwiYXJpYS1sYWJlbCI6WixjbGFzc05hbWU6InctNiBoLTUuNSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXItbm9uZSByb3VuZGVkIHAtMCBjdXJzb3ItcG9pbnRlciBbdHJhbnNpdGlvbjpiYWNrZ3JvdW5kXzAuMTJzLGNvbG9yXzAuMTJzXSIsc3R5bGU6e2JhY2tncm91bmQ6Qz9gJHt3fTIyYDoidHJhbnNwYXJlbnQiLGNvbG9yOkM/dzoicmdiYSgyNTUsMjU1LDI1NSwwLjU1KSIsb3BhY2l0eTpMPzAuNToxfSxjaGlsZHJlbjpYfSl9dmFyIFc5PSJiZy1wYW5lbCBib3JkZXIgYm9yZGVyLXdoaXRlLzggcm91bmRlZC1bMTBweF0iLEE5PSJ0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLVswLjA4ZW1dIG0tMCIseTM9ImJnLXBhbmVsIGJvcmRlciBib3JkZXItZGFzaGVkIGJvcmRlci13aGl0ZS8xMCByb3VuZGVkLVsxMHB4XSBwLTMgdGV4dC13aGl0ZS81MCB0ZXh0LVsxMnB4XSB0ZXh0LWNlbnRlciI7ZnVuY3Rpb24gaDMoe292ZXJsYXlFbmFibGVkOkMsb25Ub2dnbGVPdmVybGF5Okx9KXtsZXR7c25hcHNob3Q6Tn09QzIoKSx7aGlnaGxpZ2h0ZWRLZXk6SyxzZXRIaWdobGlnaHRlZEtleTpafT1uMigpLFg9Tj8uZWxlbWVudHM/P1tdLHc9YzIoTiksJD1OPy5lcnJvcnM/LlswXT8/bnVsbDtyZXR1cm4gXygiZGl2Iix7Y2xhc3NOYW1lOmAke1c5fSBweC0zIHB5LTJgLGNoaWxkcmVuOltfKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMiIsY2hpbGRyZW46W18oInNwYW4iLHtjbGFzc05hbWU6QTksY2hpbGRyZW46IkFYIFRyZWUifSksXygiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOkwsImFyaWEtcHJlc3NlZCI6QyxjbGFzc05hbWU6ImJvcmRlciBib3JkZXItd2hpdGUvMTIgcm91bmRlZC1bNXB4XSBiZy10cmFuc3BhcmVudCB0ZXh0LXdoaXRlLzcwIGN1cnNvci1wb2ludGVyIHRleHQtWzEwcHhdIHB4LVs3cHhdIHB5LVszcHhdIixjaGlsZHJlbjpDPyJPdmVybGF5IG9uIjoiRW5hYmxlIG92ZXJsYXkifSldfSksIUM/bnVsbDp3P18oImRpdiIse2NsYXNzTmFtZTp5MyxjaGlsZHJlbjoiQVggdW5hdmFpbGFibGUgb24gdGhpcyBzaW11bGF0b3IuIn0pOlgubGVuZ3RoPT09MD9fKCJkaXYiLHtjbGFzc05hbWU6eTMsY2hpbGRyZW46JD8/IldhaXRpbmcgZm9yIGFjY2Vzc2liaWxpdHkgZGF0YeKApiJ9KTpfKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgZ2FwLTEgbXQtMiBweS0yIG1heC1oLVsyNjBweF0gb3ZlcmZsb3cteS1hdXRvIFtzY3JvbGxiYXItd2lkdGg6dGhpbl0iLHJvbGU6Imxpc3QiLGNoaWxkcmVuOlgubWFwKChKLEcpPT57bGV0IHE9ZjEoSik7cmV0dXJuIF8oTTkse2VsZW1lbnQ6SixpbmRleDpHLGFjdGl2ZTpxPT09SyxvbkhpZ2hsaWdodDpafSxxKX0pfSldfSl9dmFyIE05PXQxKGZ1bmN0aW9uKHtlbGVtZW50OkwsaW5kZXg6TixhY3RpdmU6SyxvbkhpZ2hsaWdodDpafSl7bGV0IFg9ZjEoTCksdz1zMihMLE4pLCQ9YCR7TWF0aC5yb3VuZChMLmZyYW1lLndpZHRoKX14JHtNYXRoLnJvdW5kKEwuZnJhbWUuaGVpZ2h0KX1gLEo9W3cubGFiZWwsdy5yb2xlfHx3LnR5cGV8fCJlbGVtZW50IiwkXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpO3JldHVybiBfKCJkaXYiLHtyb2xlOiJsaXN0aXRlbSIsdGFiSW5kZXg6MCwiZGF0YS1heC1rZXkiOlgsdGl0bGU6Sixvbk1vdXNlRW50ZXI6KCk9PlooWCksb25Nb3VzZUxlYXZlOigpPT5aKG51bGwpLG9uRm9jdXM6KCk9PlooWCksb25CbHVyOigpPT5aKG51bGwpLGNsYXNzTmFtZTpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIHJvdW5kZWQtbWQgcHktMSBweC0wLjUgbWluLXctMCAke0s/ImJnLXdoaXRlL1swLjA2XSI6IiJ9YCxjaGlsZHJlbjpbXygic3BhbiIse2NsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBnYXAtMC41IGZsZXgtMSBtaW4tdy0wIixjaGlsZHJlbjpbXygic3BhbiIse2NsYXNzTmFtZToib3ZlcmZsb3ctaGlkZGVuIHRleHQtZWxsaXBzaXMgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC13aGl0ZS85MCB0ZXh0LVsxMnB4XSBmb250LW1lZGl1bSIsY2hpbGRyZW46TC5sYWJlbHx8TC5yb2xlfHwiVW5sYWJlbGVkIn0pLF8oInNwYW4iLHtjbGFzc05hbWU6Im92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtd2hpdGUvNDUgZm9udC1tb25vIHRleHQtWzEwcHhdIixjaGlsZHJlbjpMLnJvbGV8fEwudHlwZXx8ImVsZW1lbnQifSldfSksXygiY29kZSIse2NsYXNzTmFtZToic2hyaW5rLTAgYmctd2hpdGUvWzAuMDRdIGJvcmRlciBib3JkZXItd2hpdGUvOCByb3VuZGVkLW1kIHRleHQtd2hpdGUvNTUgZm9udC1tb25vIHRleHQtWzEwcHhdIHB4LTEuNSBweS1bM3B4XSIsY2hpbGRyZW46JH0pXX0pfSwoQyxMKT0+Qy5pbmRleD09PUwuaW5kZXgmJkMuYWN0aXZlPT09TC5hY3RpdmUmJkMub25IaWdobGlnaHQ9PT1MLm9uSGlnaGxpZ2h0JiZ0MihDLmVsZW1lbnQsTC5lbGVtZW50KSk7ZnVuY3Rpb24gUzMoe29wZW46QyxvbkNsb3NlOkwsdWRpZDpOLGN1cnJlbnRBcHA6SyxheE92ZXJsYXlFbmFibGVkOlosb25Ub2dnbGVBeE92ZXJsYXk6WCx3aWR0aDp3fSl7cmV0dXJuIF8oSzIse29wZW46Qyx3aWR0aDp3LGNoaWxkcmVuOltfKF8yLHtjaGlsZHJlbjpbXyhlMix7Y2hpbGRyZW46IlRvb2xzIn0pLF8oWjIse29uQ2xpY2s6TH0pXX0pLEMmJl8oImRpdiIse2NsYXNzTmFtZToicC0zLjUgb3ZlcmZsb3cteS1hdXRvIGZsZXgtMSBmbGV4IGZsZXgtY29sIGdhcC0zIixjaGlsZHJlbjpbXyhoMyx7b3ZlcmxheUVuYWJsZWQ6WixvblRvZ2dsZU92ZXJsYXk6WH0pLF8oRTMse3VkaWQ6TixjdXJyZW50QXBwOkt9KSxfKFAzLHt1ZGlkOk4sYnVuZGxlSWQ6Sz8uYnVuZGxlSWQ/P251bGx9KSxfKHozLHt1ZGlkOk4sZXhlYzpZMX0pXX0pXX0pfWZ1bmN0aW9uIFcyKEMsTCl7ZmV0Y2goSTEoImRldnRvb2xzL2hpZ2hsaWdodCIpLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sYm9keTpKU09OLnN0cmluZ2lmeSh7dGFyZ2V0SWQ6QyxvbjpMfSksa2VlcGFsaXZlOiEwfSkuY2F0Y2goKCk9Pnt9KX1mdW5jdGlvbiBmMCgpe2xldCBDPUkxKCJkZXZ0b29scy9yZWxlYXNlIik7dHJ5e2lmKHR5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3Iuc2VuZEJlYWNvbil7bGV0IEw9bmV3IEJsb2IoWyJ7fSJdLHt0eXBlOiJhcHBsaWNhdGlvbi9qc29uIn0pO2lmKG5hdmlnYXRvci5zZW5kQmVhY29uKEMsTCkpcmV0dXJufX1jYXRjaHt9ZmV0Y2goQyx7bWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGJvZHk6Int9IixrZWVwYWxpdmU6ITB9KS5jYXRjaCgoKT0+e30pfWZ1bmN0aW9uIG0zKEMpe2xldCBMPUMuY29udGVudERvY3VtZW50O2lmKCFMKXJldHVybjtsZXQgTj0oKT0+e2xldCBYPVtMXTt3aGlsZShYLmxlbmd0aCl7bGV0IHc9WC5wb3AoKSwkPXcucXVlcnlTZWxlY3RvckFsbCgiW2FyaWEtbGFiZWxdLFt0aXRsZV0iKTtmb3IobGV0IEogb2YgJCl7bGV0IEc9Si5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiKXx8Si50aXRsZXx8IiI7aWYoL150b2dnbGUgc2NyZWVuY2FzdCQvaS50ZXN0KEcpKXJldHVybiBKfWZvcihsZXQgSiBvZiB3LnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSlpZihKLnNoYWRvd1Jvb3QpWC5wdXNoKEouc2hhZG93Um9vdCl9cmV0dXJuIG51bGx9LEs9MCxaPSgpPT57SysrO2xldCBYPU4oKTtpZihYJiZYLmdldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIikhPT0iZmFsc2UiKXtYLmNsaWNrKCk7cmV0dXJufWlmKEs8MjApc2V0VGltZW91dChaLDEwMCl9O1ooKX1mdW5jdGlvbiB2MyhDKXtsZXQgTD1bXSxOPW5ldyBNYXA7Zm9yKGxldCBLIG9mIEMpe2xldCBaPUsuYXBwTmFtZXx8Sy5idW5kbGVJZHx8IlVua25vd24iLFg9Sy5idW5kbGVJZHx8Wix3PU4uZ2V0KFgpO2lmKCF3KXc9e2tleTpYLGFwcE5hbWU6WixidW5kbGVJZDpLLmJ1bmRsZUlkLHRhcmdldHM6W119LE4uc2V0KFgsdyksTC5wdXNoKFgpO3cudGFyZ2V0cy5wdXNoKEspfXJldHVybiBMLm1hcCgoSyk9Pk4uZ2V0KEspKX1mdW5jdGlvbiBSMyhDLEwpe2xldFtOLEtdPU0oe30pLFo9TTEoKCk9Pkwuc2xpY2UoKS5zb3J0KCkuam9pbigifCIpLFtMXSk7cmV0dXJuIEUoKCk9PntpZighQylyZXR1cm47bGV0IFg9ITE7Zm9yKGxldCB3IG9mIEwpe2lmKCF3KWNvbnRpbnVlO2xldCAkPWAke0N9OiR7d31gLEo9WDIuZ2V0KCQpO2lmKHR5cGVvZiBKPT09InN0cmluZyJ8fEo9PT1udWxsKXtLKChHKT0+R1t3XT09PUo/Rzp7Li4uRyxbd106Sn0pO2NvbnRpbnVlfUkzKFkxLEMsdykudGhlbigoRyk9PntpZihYKXJldHVybjtLKChxKT0+KHsuLi5xLFt3XTpHfSkpfSl9cmV0dXJuKCk9PntYPSEwfX0sW0MsWl0pLE59ZnVuY3Rpb24gcDMoe3VkaWQ6Qyx0YXJnZXRzOkwsc2VsZWN0ZWQ6TixvblNlbGVjdFRhcmdldDpLLG9uUmVmcmVzaDpafSl7bGV0IFg9djMoTCksdz1YLm1hcCgoYik9PmIuYnVuZGxlSWQpLmZpbHRlcigoYik9PiEhYiksJD1SMyhDLHcpLFtKLEddPU0oITEpLFtxLFldPU0obnVsbCksSD1SKG51bGwpLFE9UihudWxsKTtFKCgpPT57aWYoIUopcmV0dXJuO2xldCBiPShWKT0+e2lmKCFRLmN1cnJlbnQpcmV0dXJuO2lmKCFRLmN1cnJlbnQuY29udGFpbnMoVi50YXJnZXQpKUcoITEpfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixiKSwoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixiKX0sW0pdKSxFKCgpPT57aWYoSilyZXR1cm47aWYoSC5jdXJyZW50KVcyKEguY3VycmVudCwhMSksSC5jdXJyZW50PW51bGw7ZjAoKX0sW0pdKSxFKCgpPT57bGV0IGI9KCk9PmYwKCk7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsYiksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZXVubG9hZCIsYiksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLGIpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJiZWZvcmV1bmxvYWQiLGIpfX0sW10pO2xldCBrPU4/KE4udGl0bGV8fE4udXJsfHxOLmFwcE5hbWV8fCJVbnRpdGxlZCIpLnNsaWNlKDAsOTApOiJTZWxlY3QgdGFyZ2V0IjtyZXR1cm4gXygiZGl2Iix7cmVmOlEsY2xhc3NOYW1lOiJyZWxhdGl2ZSB3LWZ1bGwgbWluLXctMCIsY2hpbGRyZW46W18oImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+e0coKGIpPT57aWYoIWIpWigpO3JldHVybiFifSl9LGNsYXNzTmFtZToidy1mdWxsIG1pbi13LTAgaC1bMjZweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIGJnLXBhbmVsIHRleHQtd2hpdGUvOTAgYm9yZGVyIGJvcmRlci13aGl0ZS8xMiByb3VuZGVkLW1kIHRleHQtWzEycHhdIHB4LTIgY3Vyc29yLXBvaW50ZXIgdGV4dC1sZWZ0IiwiYXJpYS1oYXNwb3B1cCI6Imxpc3Rib3giLCJhcmlhLWV4cGFuZGVkIjpKLCJhcmlhLWxhYmVsIjoiV2ViS2l0IHRhcmdldCIsY2hpbGRyZW46W18oInNwYW4iLHtjbGFzc05hbWU6Im92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIG1pbi13LTAiLGNoaWxkcmVuOmt9KSxfKCJzdmciLHt3aWR0aDoiMTIiLGhlaWdodDoiMTIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpfKCJwb2x5bGluZSIse3BvaW50czoiNiA5IDEyIDE1IDE4IDkifSl9KV19KSxKJiZfKCJ1bCIse3JvbGU6Imxpc3Rib3giLGNsYXNzTmFtZToiYWJzb2x1dGUgdG9wLVtjYWxjKDEwMCUrNHB4KV0gbGVmdC0wIG0tMCBwLTEgbGlzdC1ub25lIGJnLXBhbmVsIGJvcmRlciBib3JkZXItd2hpdGUvMTIgcm91bmRlZC1sZyBzaGFkb3ctWzBfOHB4XzI0cHhfcmdiYSgwLDAsMCwwLjUpXSBtaW4tdy1bMjIwcHhdIG1heC13LVszNjBweF0gbWF4LWgtWzMyMHB4XSBvdmVyZmxvdy15LWF1dG8gei01MCIsY2hpbGRyZW46WC5tYXAoKGIpPT57bGV0IFY9Yi5idW5kbGVJZD8kW2IuYnVuZGxlSWRdOm51bGw7cmV0dXJuIF8oImxpIix7Y2xhc3NOYW1lOiJsaXN0LW5vbmUgbS0wIHAtMCIsY2hpbGRyZW46W18oImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMS41IHB0LTEgcGItMC41IHRleHQtWzEycHhdIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZS9bMC45Ml0iLGNoaWxkcmVuOltWP18oImltZyIse3NyYzpWLGFsdDoiIixjbGFzc05hbWU6InctNCBoLTQgcm91bmRlZC1bM3B4XSBzaHJpbmstMCBvYmplY3QtY292ZXIifSk6Xygic3BhbiIse2NsYXNzTmFtZToidy00IGgtNCByb3VuZGVkLVszcHhdIHNocmluay0wIG9iamVjdC1jb3ZlciIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSxfKCJzcGFuIix7Y2xhc3NOYW1lOiJvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCIsY2hpbGRyZW46Yi5hcHBOYW1lfSldfSksXygidWwiLHtyb2xlOiJncm91cCIsY2xhc3NOYW1lOiJsaXN0LW5vbmUgbS0wIHAtMCBwbC1bMjZweF0iLGNoaWxkcmVuOmIudGFyZ2V0cy5tYXAoKEQpPT57bGV0IEE9Tj8uaWQ9PT1ELmlkLEk9ISFELmluVXNlQnlPdGhlckluc3BlY3RvciYmIUEsaD0oRC50aXRsZXx8RC51cmx8fEQuYXBwTmFtZXx8IlVudGl0bGVkIikuc2xpY2UoMCw5MCksZz1xPT09RC5pZCYmIUksVT0iZmxleCBmbGV4LWNvbCBweC0yIHB5LVszcHhdIHJvdW5kZWQgdGV4dC1bMTJweF0gbGVhZGluZy1bMS4zNV0iO3JldHVybiBfKCJsaSIse3JvbGU6Im9wdGlvbiIsImFyaWEtc2VsZWN0ZWQiOkEsImFyaWEtZGlzYWJsZWQiOkksdGFiSW5kZXg6ST8tMTowLHRpdGxlOkk/IkFscmVhZHkgYmVpbmcgaW5zcGVjdGVkIGJ5IGFub3RoZXIgZGVidWdnZXIiOnZvaWQgMCxvbk1vdXNlRW50ZXI6KCk9PntpZihJKXJldHVybjtpZihILmN1cnJlbnQmJkguY3VycmVudCE9PUQuaWQpVzIoSC5jdXJyZW50LCExKTtILmN1cnJlbnQ9RC5pZCxZKEQuaWQpLFcyKEQuaWQsITApfSxvbk1vdXNlTGVhdmU6KCk9PntpZihILmN1cnJlbnQ9PT1ELmlkKVcyKEQuaWQsITEpLEguY3VycmVudD1udWxsO1koKHkpPT55PT09RC5pZD9udWxsOnkpfSxvbkNsaWNrOigpPT57aWYoSSlyZXR1cm47SyhELmlkKSxHKCExKX0sY2xhc3NOYW1lOmBmbGV4IGZsZXgtY29sIHB4LTIgcHktWzNweF0gcm91bmRlZCB0ZXh0LVsxMnB4XSBsZWFkaW5nLVsxLjM1XSAke0k/Im9wYWNpdHktNDAgY3Vyc29yLW5vdC1hbGxvd2VkIGl0YWxpYyB0ZXh0LXdoaXRlLzg1IjpnPyJiZy1bcmdiYSgxMCwxMzIsMjU1LDAuMjIpXSB0ZXh0LXdoaXRlLzg1IGN1cnNvci1wb2ludGVyIjpBPyJiZy13aGl0ZS9bMC4wNl0gdGV4dC13aGl0ZS84NSBjdXJzb3ItcG9pbnRlciI6InRleHQtd2hpdGUvODUgY3Vyc29yLXBvaW50ZXIifWAsY2hpbGRyZW46W18oInNwYW4iLHtjbGFzc05hbWU6ImJsb2NrIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIixjaGlsZHJlbjpofSksRC51cmwmJkQudXJsIT09ImFib3V0OmJsYW5rIiYmXygic3BhbiIse2NsYXNzTmFtZToiYmxvY2sgZm9udC1tb25vIHRleHQtWzEwcHhdIHRleHQtd2hpdGUvWzAuNDJdIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIixjaGlsZHJlbjpELnVybH0pXX0sRC5pZCl9KX0pXX0sYi5rZXkpfSl9KV19KX1mdW5jdGlvbiB4Myh7b3BlbjpDLG9uQ2xvc2U6TCx1ZGlkOk4sdGFyZ2V0czpLLHNlbGVjdGVkVGFyZ2V0SWQ6WixvblNlbGVjdFRhcmdldDpYLGxvYWRpbmc6dyxlcnJvcjokLG9uUmVmcmVzaDpKLHdpZHRoOkd9KXtsZXQgcT1aP0suZmluZCgoWSk9PlkuaWQ9PT1aKT8/bnVsbDpudWxsO3JldHVybiBfKEsyLHtvcGVuOkMsd2lkdGg6RyxjaGlsZHJlbjpbXyhfMix7Y2hpbGRyZW46W0subGVuZ3RoPjA/XyhwMyx7dWRpZDpOLHRhcmdldHM6SyxzZWxlY3RlZDpxLG9uU2VsZWN0VGFyZ2V0Olgsb25SZWZyZXNoOkp9KTpfKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMnB4XSB0ZXh0LXdoaXRlL1swLjQ4XSBvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpcyB3aGl0ZXNwYWNlLW5vd3JhcCIsY2hpbGRyZW46dz8iTG9va2luZyBmb3IgU2FmYXJpIGFuZCBpbnNwZWN0YWJsZSB3ZWJ2aWV3cy4uLiI6Ik5vIGluc3BlY3RhYmxlIFNhZmFyaSBvciBXS1dlYlZpZXcgdGFyZ2V0cyJ9KSxfKFoyLHtvbkNsaWNrOkwsYXJpYUxhYmVsOiJDbG9zZSBXZWJLaXQgRGV2VG9vbHMiLHRpdGxlOiJDbG9zZSIsaWNvblNpemU6MTV9KV19KSxfKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgtMSBtaW4taC0wIGJnLXdoaXRlIHJlbGF0aXZlIixjaGlsZHJlbjokP18oImRpdiIse2NsYXNzTmFtZToiaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtNiBiZy1wYW5lbC1kZWVwIHRleHQtd2hpdGUvWzAuNThdIHRleHQtY2VudGVyIHRleHQtWzEzcHhdIixjaGlsZHJlbjokfSk6cSYmQz9fKCJpZnJhbWUiLHtzcmM6cS5kZXZ0b29sc0Zyb250ZW5kVXJsLHRpdGxlOmBXZWJLaXQgRGV2VG9vbHMgLSAke3EudGl0bGV8fHEudXJsfHxxLmlkfWAsY2xhc3NOYW1lOiJ3LWZ1bGwgaC1mdWxsIGJvcmRlci1ub25lIGJsb2NrIGJnLXdoaXRlIixvbkxvYWQ6KFkpPT5tMyhZLmN1cnJlbnRUYXJnZXQpfSxxLmlkKTpfKCJkaXYiLHtjbGFzc05hbWU6ImgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBwLTYgYmctcGFuZWwtZGVlcCB0ZXh0LXdoaXRlL1swLjU4XSB0ZXh0LWNlbnRlciB0ZXh0LVsxM3B4XSIsY2hpbGRyZW46cT8iRGV2VG9vbHMgcGF1c2VkIOKAlCBvcGVuIHRoZSBwYW5lbCB0byByZWF0dGFjaC4iOiJPcGVuIFNhZmFyaSBvciBhbiBpbnNwZWN0YWJsZSBXS1dlYlZpZXcgaW4gdGhlIHNpbXVsYXRvci4ifSl9KV19KX12YXIgVTk9bmV3IFNldChbImltYWdlL2pwZWciLCJpbWFnZS9wbmciLCJpbWFnZS9naWYiLCJpbWFnZS9oZWljIiwiaW1hZ2UvaGVpZiIsImltYWdlL3dlYnAiLCJ2aWRlby9tcDQiLCJ2aWRlby9xdWlja3RpbWUiXSk7ZnVuY3Rpb24gTDAoQyl7bGV0IEw9Qy5uYW1lLE49TC5sYXN0SW5kZXhPZigiLiIpO2lmKE4+PTApcmV0dXJuIEwuc2xpY2UoTisxKS50b0xvd2VyQ2FzZSgpO2lmKEMudHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iKSlyZXR1cm4ibXA0IjtyZXR1cm4ianBnIn1mdW5jdGlvbiBnMyhDKXtpZihMMChDKT09PSJpcGEiKXJldHVybiJpcGEiO2lmKFU5LmhhcyhDLnR5cGUpKXJldHVybiJtZWRpYSI7cmV0dXJuIG51bGx9ZnVuY3Rpb24gTzkoQyl7bGV0IEw9bmV3IFVpbnQ4QXJyYXkoQyksTj0iIjtmb3IobGV0IEs9MDtLPEwubGVuZ3RoO0srKylOKz1TdHJpbmcuZnJvbUNoYXJDb2RlKExbS10pO3JldHVybiBidG9hKE4pfWFzeW5jIGZ1bmN0aW9uIGwzKEMsTCxOLEssWil7aWYoQy5zaXplPjUyNDI4ODAwMCl0aHJvdyBFcnJvcigiRmlsZSB0b28gbGFyZ2UgKG1heCA1MDBNQikiKTtsZXQgWD1MPT09ImlwYSI/ImlwYSI6TDAoQyksJD1gL3RtcC8ke0w9PT0iaXBhIj8ic2VydmUtc2ltLWluc3RhbGwiOiJzZXJ2ZS1zaW0tdXBsb2FkIn0tJHtjcnlwdG8ucmFuZG9tVVVJRCgpfS4ke1h9YDt0cnl7WigwKTtsZXQgSj1hd2FpdCBDLmFycmF5QnVmZmVyKCksRz1POShKKSxxPTA7Zm9yKGxldCBRPTA7UTxHLmxlbmd0aDtRKz0yNjIxNDQpe2xldCBrPUcuc2xpY2UoUSxRKzI2MjE0NCksVj1hd2FpdCBOKGBiYXNoIC1jICdlY2hvICR7a30gfCBiYXNlNjQgLWQgJHtRPT09MD8iPiI6Ij4+In0gJHskfSdgKTtpZihWLmV4aXRDb2RlIT09MCl0aHJvdyBFcnJvcihWLnN0ZGVycnx8YFdyaXRlIGZhaWxlZCAoZXhpdCAke1YuZXhpdENvZGV9KWApO2xldCBEPU1hdGgubWluKFErMjYyMTQ0LEcubGVuZ3RoKSxBPU1hdGguZmxvb3IoRC9HLmxlbmd0aCoxMDApO2lmKEEhPT1xKXE9QSxaKEQvRy5sZW5ndGgpfVoobnVsbCk7bGV0IFk9TD09PSJpcGEiP2B4Y3J1biBzaW1jdGwgaW5zdGFsbCAke0t9ICR7JH1gOmB4Y3J1biBzaW1jdGwgYWRkbWVkaWEgJHtLfSAkeyR9YCxIPWF3YWl0IE4oWSk7aWYoSC5leGl0Q29kZSE9PTApe2xldCBRPUw9PT0iaXBhIj8iaW5zdGFsbCI6ImFkZG1lZGlhIjt0aHJvdyBFcnJvcihILnN0ZGVycnx8YCR7UX0gZmFpbGVkIChleGl0ICR7SC5leGl0Q29kZX0pYCl9fWZpbmFsbHl7TihgYmFzaCAtYyAncm0gLWYgJHskfSdgKS5jYXRjaCgoKT0+e30pfX1mdW5jdGlvbiBqMyh7ZXhlYzpDLHVkaWQ6TCxlbmFibGVkOk4sb25VcGxvYWRTdGFydDpLLG9uVXBsb2FkUHJvZ3Jlc3M6WixvblVwbG9hZEVuZDpYLG9uVW5zdXBwb3J0ZWQ6d30pe2xldFskLEpdPU0oITEpLEc9UigwKSxxPVAoYXN5bmMoayk9PntpZihrLnByZXZlbnREZWZhdWx0KCksay5zdG9wUHJvcGFnYXRpb24oKSxHLmN1cnJlbnQ9MCxKKCExKSwhTnx8IUwpcmV0dXJuO2xldCBiPUFycmF5LmZyb20oay5kYXRhVHJhbnNmZXIuZmlsZXMpO2lmKGIubGVuZ3RoPT09MClyZXR1cm47Zm9yKGxldCBWIG9mIGIpe2xldCBEPWczKFYpO2lmKCFEKXt3KFYpO2NvbnRpbnVlfWxldCBBPUsoVi5uYW1lLEQpO2wzKFYsRCxDLEwsKEkpPT5aKEEsSSkpLnRoZW4oKCk9PlgoQSwhMCkpLmNhdGNoKChJKT0+WChBLCExLEkgaW5zdGFuY2VvZiBFcnJvcj9JLm1lc3NhZ2U6IlVwbG9hZCBmYWlsZWQiKSl9fSxbTixMLEMsSyxaLFgsd10pLFk9UCgoayk9PntpZihrLnByZXZlbnREZWZhdWx0KCksTilrLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0PSJjb3B5In0sW05dKSxIPVAoKGspPT57aWYoay5wcmV2ZW50RGVmYXVsdCgpLCFOKXJldHVybjtpZihHLmN1cnJlbnQrKyxHLmN1cnJlbnQ9PT0xKUooITApfSxbTl0pLFE9UCgoayk9PntpZihrLnByZXZlbnREZWZhdWx0KCksRy5jdXJyZW50LS0sRy5jdXJyZW50PD0wKUcuY3VycmVudD0wLEooITEpfSxbXSk7cmV0dXJue2lzRHJhZ092ZXI6JCxkcm9wWm9uZVByb3BzOntvbkRyYWdPdmVyOlksb25EcmFnRW50ZXI6SCxvbkRyYWdMZWF2ZTpRLG9uRHJvcDpxfX19ZnVuY3Rpb24gbzMoQyl7bGV0W0wsTl09TShudWxsKSxLPVIobmV3IFNldCksWj1QKChYKT0+e3JldHVybiBLLmN1cnJlbnQuYWRkKFgpLCgpPT57Sy5jdXJyZW50LmRlbGV0ZShYKX19LFtdKTtyZXR1cm4gRSgoKT0+e2lmKCFDKXJldHVybjtsZXQgWD1uZXcgQWJvcnRDb250cm9sbGVyLHc9ITEsJD1udWxsLEo9Qy5yZXBsYWNlKC9cL3N0cmVhbVwubWpwZWckLywiIiksRz0oVik9PntpZihWLndpZHRoPD0wfHxWLmhlaWdodDw9MClyZXR1cm47TigoRCk9PkQmJkQud2lkdGg9PT1WLndpZHRoJiZELmhlaWdodD09PVYuaGVpZ2h0JiZELm9yaWVudGF0aW9uPT09Vi5vcmllbnRhdGlvbj9EOlYpfSxxPSgpPT57ZmV0Y2goYCR7Sn0vY29uZmlnYCx7c2lnbmFsOlguc2lnbmFsfSkudGhlbigoVik9PlYuanNvbigpKS50aGVuKEcpLmNhdGNoKCgpPT57fSl9O3EoKTtsZXQgWT1zZXRJbnRlcnZhbChxLDEwMDApLEg9bmV3IFVSTChDKTtILnNlYXJjaFBhcmFtcy5zZXQoInJhdyIsIjEiKTtsZXQgUT1ILnRvU3RyaW5nKCksaz0oKT0+e2lmKHd8fFguc2lnbmFsLmFib3J0ZWR8fCQpcmV0dXJuOyQ9c2V0VGltZW91dCgoKT0+eyQ9bnVsbCxiKCl9LDEwMDApfSxiPWFzeW5jKCk9Pnt0cnl7bGV0IEQ9KGF3YWl0IGZldGNoKFEse3NpZ25hbDpYLnNpZ25hbH0pKS5ib2R5Py5nZXRSZWFkZXIoKTtpZighRCl7aygpO3JldHVybn1sZXQgQT1uZXcgVWludDhBcnJheSgwKTt3aGlsZSghMCl7bGV0e2RvbmU6SSx2YWx1ZTpofT1hd2FpdCBELnJlYWQoKTtpZihJKWJyZWFrO2xldCBnPW5ldyBVaW50OEFycmF5KEEubGVuZ3RoK2gubGVuZ3RoKTtnLnNldChBKSxnLnNldChoLEEubGVuZ3RoKSxBPWc7d2hpbGUoITApe2xldCBVPS0xO2ZvcihsZXQgYT0wO2E8QS5sZW5ndGgtMTthKyspaWYoQVthXT09PTI1NSYmQVthKzFdPT09MjE2KXtVPWE7YnJlYWt9aWYoVT09PS0xKWJyZWFrO2xldCB6PS0xO2ZvcihsZXQgYT1VKzI7YTxBLmxlbmd0aC0xO2ErKylpZihBW2FdPT09MjU1JiZBW2ErMV09PT0yMTcpe3o9YSsyO2JyZWFrfWlmKHo9PT0tMSlicmVhaztsZXQgeT1BLnNsaWNlKFUseik7QT1BLnNsaWNlKHopO2xldCB4PW5ldyBCbG9iKFt5XSx7dHlwZToiaW1hZ2UvanBlZyJ9KSxpPVVSTC5jcmVhdGVPYmplY3RVUkwoeCk7aWYoSy5jdXJyZW50LnNpemU9PT0wKXtVUkwucmV2b2tlT2JqZWN0VVJMKGkpO2NvbnRpbnVlfWZvcihsZXQgYSBvZiBLLmN1cnJlbnQpYShpKX19fWNhdGNoe31maW5hbGx5e2soKX19O3JldHVybiBiKCksKCk9PntpZih3PSEwLCQpY2xlYXJUaW1lb3V0KCQpO1guYWJvcnQoKSxjbGVhckludGVydmFsKFkpfX0sW0NdKSx7c3Vic2NyaWJlRnJhbWU6WixmcmFtZTpudWxsLGNvbmZpZzpMfX1mdW5jdGlvbiBOMChDLEwsTixLKXtsZXQgWj1QKChxKT0+TWF0aC5tYXgoTixNYXRoLm1pbihLLHEpKSxbTixLXSksW1gsd109TSgoKT0+e2lmKHR5cGVvZiB3aW5kb3c+InUiKXJldHVybiBMO2xldCBxPXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShDKSxZPXEhPW51bGw/TnVtYmVyKHEpOk5hTjtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKFkpP1ooWSk6TH0pLCQ9dHlwZW9mIHdpbmRvdzwidSI/TWF0aC5taW4oSyx3aW5kb3cuaW5uZXJXaWR0aC0zMik6SyxKPU1hdGgubWF4KE4sTWF0aC5taW4oJCxYKSksRz1QKChxKT0+e3EucHJldmVudERlZmF1bHQoKTtsZXQgWT1xLmNsaWVudFgsSD1KLFE9cS5jdXJyZW50VGFyZ2V0O1Euc2V0UG9pbnRlckNhcHR1cmUocS5wb2ludGVySWQpO2xldCBrPShWKT0+e2xldCBEPVooSCsoWS1WLmNsaWVudFgpKTt3KEQpfSxiPShWKT0+e1EucmVsZWFzZVBvaW50ZXJDYXB0dXJlKFYucG9pbnRlcklkKSxRLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixrKSxRLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsYiksUS5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIixiKTt0cnl7d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKEMsU3RyaW5nKFooSCsoWS1WLmNsaWVudFgpKSkpfWNhdGNoe319O1EuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLGspLFEuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixiKSxRLmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLGIpfSxbWixKLENdKTtyZXR1cm57d2lkdGg6SixvblBvaW50ZXJEb3duOkd9fXZhciBmMz0yODA7dmFyIHUwPSJ3aWR0aCA3MG1zIGxpbmVhciIsYTA9IndpZHRoIDAuMjRzIGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKSIsdTM9InBhZGRpbmctcmlnaHQgMC4yNHMgY3ViaWMtYmV6aWVyKDAuMjIsIDEsIDAuMzYsIDEpIjtmdW5jdGlvbiBkMChDLEwsTixLKXtsZXQgWj1DKjMsWD1MPjA/TWF0aC5tYXgoMjgwLEwtNDgpOlosdz1OPjAmJk51bWJlci5pc0Zpbml0ZShLKSYmSz4wP01hdGgubWF4KDI4MCwoTi0xMzYpKkspOlo7cmV0dXJuIE1hdGgubWluKFosWCx3KX1mdW5jdGlvbiBBMihDLEwsTixLLFope2xldCBYPWQwKEwsTixLLFopLHc9TWF0aC5taW4oMjgwLFgpO3JldHVybiBNYXRoLm1pbihYLE1hdGgubWF4KHcsQykpfWZ1bmN0aW9uIGEzKHtkZWZhdWx0V2lkdGg6Qyx2aWV3cG9ydFdpZHRoOkwsdmlld3BvcnRIZWlnaHQ6Tixhc3BlY3RSYXRpbzpLLG9uU3RhcnQ6Wn0pe2xldFtYLHddPU0obnVsbCksWyQsSl09TSghMSksW0cscV09TSghMSksWT1SKG51bGwpLEg9UihudWxsKSxRPVIobnVsbCksaz1kMChDLEwsTixLKSxiPUEyKFg/P0MsQyxMLE4sSyk7RSgoKT0+e2lmKFg9PW51bGwpcmV0dXJuO2xldCBVPUEyKFgsQyxMLE4sSyk7aWYoVSE9PVgpdyhVKX0sW0ssQyxYLE4sTF0pLEUoKCk9PntpZighJClyZXR1cm47bGV0IFU9ZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3Isej1kb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QseT1kb2N1bWVudC5ib2R5LnN0eWxlLndlYmtpdFVzZXJTZWxlY3Q7cmV0dXJuIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yPSJud3NlLXJlc2l6ZSIsZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0PSJub25lIixkb2N1bWVudC5ib2R5LnN0eWxlLndlYmtpdFVzZXJTZWxlY3Q9Im5vbmUiLCgpPT57ZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3I9VSxkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3Q9eixkb2N1bWVudC5ib2R5LnN0eWxlLndlYmtpdFVzZXJTZWxlY3Q9eX19LFskXSk7bGV0IFY9UCgoVSk9PntsZXQgej1BMihVLEMsTCxOLEspO2lmKEguY3VycmVudCE9bnVsbCljYW5jZWxBbmltYXRpb25GcmFtZShILmN1cnJlbnQpO0guY3VycmVudD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntILmN1cnJlbnQ9bnVsbCx3KHopfSl9LFtLLEMsTixMXSksRD1QKCgpPT57bGV0IFU9WS5jdXJyZW50Py5wb2ludGVySWQ7aWYoWS5jdXJyZW50PW51bGwsVSE9bnVsbCYmVT49MCl7bGV0IHo9US5jdXJyZW50O2lmKHo/Lmhhc1BvaW50ZXJDYXB0dXJlKFUpKXoucmVsZWFzZVBvaW50ZXJDYXB0dXJlKFUpfWlmKEguY3VycmVudCE9bnVsbCljYW5jZWxBbmltYXRpb25GcmFtZShILmN1cnJlbnQpLEguY3VycmVudD1udWxsO0ooITEpfSxbXSk7RSgoKT0+e3JldHVybigpPT5EKCl9LFtEXSksRSgoKT0+e2lmKCEkKXJldHVybjtsZXQgVT0oKT0+RCgpLHo9KCk9PntpZihkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0iaGlkZGVuIilEKCl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsVSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsVSwhMCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLFUsITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHopLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLFUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLFUsITApLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyY2FuY2VsIixVLCEwKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix6KX19LFskLERdKTtsZXQgQT1QKChVKT0+e2xldCB6PVkuY3VycmVudDtpZighenx8ei5wb2ludGVySWQhPT1VLnBvaW50ZXJJZClyZXR1cm47VS5wcmV2ZW50RGVmYXVsdCgpLFUuc3RvcFByb3BhZ2F0aW9uKCksRCgpfSxbRF0pLEk9UCgoVSk9PntpZihVLmJ1dHRvbiE9PTApcmV0dXJuO1UucHJldmVudERlZmF1bHQoKSxVLnN0b3BQcm9wYWdhdGlvbigpLFUuY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShVLnBvaW50ZXJJZCksWS5jdXJyZW50PXtwb2ludGVySWQ6VS5wb2ludGVySWQsc3RhcnRYOlUuY2xpZW50WCxzdGFydFk6VS5jbGllbnRZLHN0YXJ0V2lkdGg6Yn0sWigpLEooITApfSxbWixiXSksaD1QKChVKT0+e2xldCB6PVkuY3VycmVudDtpZighenx8ei5wb2ludGVySWQhPT1VLnBvaW50ZXJJZClyZXR1cm47aWYoVS5wcmV2ZW50RGVmYXVsdCgpLFUuYnV0dG9ucyE9PTEpe0QoKTtyZXR1cm59bGV0IHk9VS5jbGllbnRYLXouc3RhcnRYLHg9KFUuY2xpZW50WS16LnN0YXJ0WSkqSyxpPXouc3RhcnRXaWR0aCsoTWF0aC5hYnMoeSk+PU1hdGguYWJzKHgpP3k6eCk7VihpKX0sW0ssVixEXSksZz1QKChVKT0+e2xldCB6PVUua2V5PT09IkFycm93UmlnaHQifHxVLmtleT09PSJBcnJvd0Rvd24iPzE6VS5rZXk9PT0iQXJyb3dMZWZ0Inx8VS5rZXk9PT0iQXJyb3dVcCI/LTE6MDtpZih6PT09MClyZXR1cm47VS5wcmV2ZW50RGVmYXVsdCgpO2xldCB5PVUuc2hpZnRLZXk/ODA6MjQ7dyhBMihiK3oqeSxDLEwsTixLKSl9LFtLLEMsTixMLGJdKTtyZXR1cm57aGFuZGxlUmVmOlEsd2lkdGg6YixtYXhXaWR0aDprLG1pbldpZHRoOmYzLGlzUmVzaXppbmc6JCxoYW5kbGVBY3RpdmU6R3x8JCxzZXRIYW5kbGVIb3ZlcmVkOnEsb25Qb2ludGVyRG93bjpJLG9uUG9pbnRlck1vdmU6aCxvblBvaW50ZXJFbmQ6QSxvbktleURvd246Z319ZnVuY3Rpb24gZDMoKXtsZXRbQyxMXT1NKFtdKSxOPVAoKFgsdyk9PntsZXQgJD1jcnlwdG8ucmFuZG9tVVVJRCgpO3JldHVybiBMKChKKT0+Wy4uLkose2lkOiQsbmFtZTpYLGtpbmQ6dyxzdGF0dXM6InVwbG9hZGluZyIscHJvZ3Jlc3M6MH1dKSwkfSxbXSksSz1QKChYLHcpPT57aWYoTCgoJCk9PiQubWFwKChKKT0+Si5pZD09PVg/ey4uLkosLi4ud306SikpLHcuc3RhdHVzPT09InN1Y2Nlc3MifHx3LnN0YXR1cz09PSJlcnJvciIpc2V0VGltZW91dCgoKT0+e0woKCQpPT4kLmZpbHRlcigoSik9PkouaWQhPT1YKSl9LDMwMDApfSxbXSksWj1QKChYLHcpPT57TCgoJCk9PiQubWFwKChKKT0+Si5pZD09PVg/ey4uLkoscHJvZ3Jlc3M6d306SikpfSxbXSk7cmV0dXJue3RvYXN0czpDLGFkZDpOLHVwZGF0ZTpLLHNldFByb2dyZXNzOlp9fWZ1bmN0aW9uIGkzKEMsTCl7bGV0W04sS109TShbXSksW1osWF09TShudWxsKSxbdywkXT1NKCExKSxKPVAoYXN5bmMoKT0+e2lmKCFDKXJldHVybjskKCEwKSxYKG51bGwpO3RyeXtsZXQgRz1hd2FpdCBmZXRjaChDLHtjYWNoZToibm8tc3RvcmUifSkscT1hd2FpdCBHLmpzb24oKTtpZighRy5va3x8cS5lcnJvcil0aHJvdyBFcnJvcihxLmVycm9yfHwiRmFpbGVkIHRvIGxpc3QgV2ViS2l0IHRhcmdldHMiKTtLKHEudGFyZ2V0cz8/W10pfWNhdGNoKEcpe1goRyBpbnN0YW5jZW9mIEVycm9yP0cubWVzc2FnZToiRmFpbGVkIHRvIHN0YXJ0IFdlYktpdCBEZXZUb29scyIpfWZpbmFsbHl7JCghMSl9fSxbQ10pO3JldHVybiBFKCgpPT57aWYoIUwpcmV0dXJuO0ooKTtsZXQgRz1zZXRJbnRlcnZhbCgoKT0+dm9pZCBKKCksMjUwMCk7cmV0dXJuKCk9PmNsZWFySW50ZXJ2YWwoRyl9LFtMLEpdKSx7dGFyZ2V0czpOLGVycm9yOlosbG9hZGluZzp3LHJlZnJlc2g6Sn19dmFyIHo5PXtLZXlBOjQsS2V5Qjo1LEtleUM6NixLZXlEOjcsS2V5RTo4LEtleUY6OSxLZXlHOjEwLEtleUg6MTEsS2V5SToxMixLZXlKOjEzLEtleUs6MTQsS2V5TDoxNSxLZXlNOjE2LEtleU46MTcsS2V5TzoxOCxLZXlQOjE5LEtleVE6MjAsS2V5UjoyMSxLZXlTOjIyLEtleVQ6MjMsS2V5VToyNCxLZXlWOjI1LEtleVc6MjYsS2V5WDoyNyxLZXlZOjI4LEtleVo6MjksRGlnaXQxOjMwLERpZ2l0MjozMSxEaWdpdDM6MzIsRGlnaXQ0OjMzLERpZ2l0NTozNCxEaWdpdDY6MzUsRGlnaXQ3OjM2LERpZ2l0ODozNyxEaWdpdDk6MzgsRGlnaXQwOjM5LEVudGVyOjQwLEVzY2FwZTo0MSxCYWNrc3BhY2U6NDIsVGFiOjQzLFNwYWNlOjQ0LE1pbnVzOjQ1LEVxdWFsOjQ2LEJyYWNrZXRMZWZ0OjQ3LEJyYWNrZXRSaWdodDo0OCxCYWNrc2xhc2g6NDksU2VtaWNvbG9uOjUxLFF1b3RlOjUyLEJhY2txdW90ZTo1MyxDb21tYTo1NCxQZXJpb2Q6NTUsU2xhc2g6NTYsQ2Fwc0xvY2s6NTcsRjE6NTgsRjI6NTksRjM6NjAsRjQ6NjEsRjU6NjIsRjY6NjMsRjc6NjQsRjg6NjUsRjk6NjYsRjEwOjY3LEYxMTo2OCxGMTI6NjksUHJpbnRTY3JlZW46NzAsU2Nyb2xsTG9jazo3MSxQYXVzZTo3MixJbnNlcnQ6NzMsSG9tZTo3NCxQYWdlVXA6NzUsRGVsZXRlOjc2LEVuZDo3NyxQYWdlRG93bjo3OCxBcnJvd1JpZ2h0Ojc5LEFycm93TGVmdDo4MCxBcnJvd0Rvd246ODEsQXJyb3dVcDo4MixOdW1Mb2NrOjgzLE51bXBhZERpdmlkZTo4NCxOdW1wYWRNdWx0aXBseTo4NSxOdW1wYWRTdWJ0cmFjdDo4NixOdW1wYWRBZGQ6ODcsTnVtcGFkRW50ZXI6ODgsTnVtcGFkMTo4OSxOdW1wYWQyOjkwLE51bXBhZDM6OTEsTnVtcGFkNDo5MixOdW1wYWQ1OjkzLE51bXBhZDY6OTQsTnVtcGFkNzo5NSxOdW1wYWQ4Ojk2LE51bXBhZDk6OTcsTnVtcGFkMDo5OCxOdW1wYWREZWNpbWFsOjk5LENvbnRyb2xMZWZ0OjIyNCxTaGlmdExlZnQ6MjI1LEFsdExlZnQ6MjI2LE1ldGFMZWZ0OjIyNyxDb250cm9sUmlnaHQ6MjI4LFNoaWZ0UmlnaHQ6MjI5LEFsdFJpZ2h0OjIzMCxNZXRhUmlnaHQ6MjMxfTtmdW5jdGlvbiByMyhDKXtyZXR1cm4gejlbQ10/P251bGx9dmFyIGMzPTMyMCx0Mz03NjAsczM9NzIwO3ZhciBJOT17cG9zaXRpb246ImFic29sdXRlIixyaWdodDotMzQsYm90dG9tOjIsd2lkdGg6MjgsaGVpZ2h0OjI4LGJvcmRlclJhZGl1czoxNCxkaXNwbGF5OiJmbGV4IixhbGlnbkl0ZW1zOiJjZW50ZXIiLGp1c3RpZnlDb250ZW50OiJjZW50ZXIiLGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDAuNzIpIixiYWNrZ3JvdW5kOiJyZ2JhKDI4LDI4LDMwLDAuNjIpIixib3JkZXI6IjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMTQpIixib3hTaGFkb3c6IjAgOHB4IDI0cHggcmdiYSgwLDAsMCwwLjMyKSIsYmFja2Ryb3BGaWx0ZXI6ImJsdXIoMThweCkiLFdlYmtpdEJhY2tkcm9wRmlsdGVyOiJibHVyKDE4cHgpIixjdXJzb3I6Im53c2UtcmVzaXplIix0b3VjaEFjdGlvbjoibm9uZSIsb3BhY2l0eTowLjcyLHRyYW5zaXRpb246Im9wYWNpdHkgMC4xOHMgZWFzZSwgYmFja2dyb3VuZCAwLjE4cyBlYXNlLCBib3JkZXItY29sb3IgMC4xOHMgZWFzZSwgYm94LXNoYWRvdyAwLjE4cyBlYXNlIix6SW5kZXg6MjV9LEU5PXtvcGFjaXR5OjEsYmFja2dyb3VuZDoicmdiYSg0NCw0NCw0NiwwLjgyKSIsYm9yZGVyOiIxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjI4KSIsYm94U2hhZG93OiIwIDEwcHggMjhweCByZ2JhKDAsMCwwLDAuNDIpLCAwIDAgMCA0cHggcmdiYSgyNTUsMjU1LDI1NSwwLjA4KSJ9O2Z1bmN0aW9uIFQ5KCl7bGV0IEM9d2luZG93Ll9fU0lNX1BSRVZJRVdfXyxbTCxOXT1NKCExKSxbSyxaXT1NKFtdKSxbWCx3XT1NKCExKSxbJCxKXT1NKG51bGwpLFtHLHFdPU0obmV3IFNldCksW1ksSF09TSghMSksW1Esa109TSghMSksW2IsVl09TSghMSksW0QsQV09TSghMSksW0ksaF09TShudWxsKSxnPVAoYXN5bmMoKT0+e3coITApLEoobnVsbCk7dHJ5e2xldCBVPWF3YWl0IFkxKCJ4Y3J1biBzaW1jdGwgbGlzdCBkZXZpY2VzIGF2YWlsYWJsZSAtaiIpO2lmKFUuZXhpdENvZGUhPT0wKXRocm93IEVycm9yKFUuc3RkZXJyfHwic2ltY3RsIGxpc3QgZmFpbGVkIik7WihKMyhVLnN0ZG91dCkpfWNhdGNoKFUpe0ooVSBpbnN0YW5jZW9mIEVycm9yP1UubWVzc2FnZToiRmFpbGVkIHRvIGxpc3QgZGV2aWNlcyIpfWZpbmFsbHl7dyghMSl9fSxbXSk7aWYoRSgoKT0+e2coKX0sW2ddKSxFKCgpPT57aWYoIUM/LmxvZ3NFbmRwb2ludClyZXR1cm47bGV0IFU9bmV3IEV2ZW50U291cmNlKEMubG9nc0VuZHBvaW50KSx6PW5ldyBNYXAseT1bIiM4YmU5ZmQiLCIjNTBmYTdiIiwiI2ZmYjg2YyIsIiNmZjc5YzYiLCIjYmQ5M2Y5IiwiI2YxZmE4YyIsIiM2MjcyYTQiLCIjZmY1NTU1IiwiIzY5ZmY5NCIsIiNkNmFjZmYiLCIjZmZmZmE1IiwiI2E0ZmZmZiIsIiNmZjZlNmUiLCIjY2FhOWZhIiwiIzVhZjc4ZSJdO2Z1bmN0aW9uIHgocTEpe2xldCBkPXouZ2V0KHExKTtpZighZCl7bGV0IEwxPTA7Zm9yKGxldCBUPTA7VDxxMS5sZW5ndGg7VCsrKUwxPShMMTw8NSktTDErcTEuY2hhckNvZGVBdChUKXwwO2Q9eVtNYXRoLmFicyhMMSkleS5sZW5ndGhdLHouc2V0KHExLGQpfXJldHVybiBkfWxldCBpPSIiLGE9ITE7cmV0dXJuIFUub25tZXNzYWdlPShxMSk9Pnt0cnl7bGV0IGQ9SlNPTi5wYXJzZShxMS5kYXRhKSxMMT1kLnByb2Nlc3NJbWFnZVBhdGg/LnNwbGl0KCIvIikucG9wKCk/P2Quc2VuZGVySW1hZ2VQYXRoPy5zcGxpdCgiLyIpLnBvcCgpPz8iIixUPWQuc3Vic3lzdGVtPz8iIixsPWQuY2F0ZWdvcnk/PyIiLGU9ZC5ldmVudE1lc3NhZ2U/PyIiO2lmKCFlKXJldHVybjtpZihMMSE9PWkpe2lmKGEpY29uc29sZS5ncm91cEVuZCgpO2xldCBDMT14KEwxKTtjb25zb2xlLmdyb3VwQ29sbGFwc2VkKGAlYyR7TDF9JHtUP2AgJWMke1R9JHtsPyI6IitsOiIifWA6IiJ9YCxgY29sb3I6JHtDMX07Zm9udC13ZWlnaHQ6Ym9sZGAsLi4uVD9bImNvbG9yOiM4ODg7Zm9udC13ZWlnaHQ6bm9ybWFsIl06W10pLGE9ITAsaT1MMX1sZXQgcz0oZC5tZXNzYWdlVHlwZT8/IiIpLnRvTG93ZXJDYXNlKCksSDE9VCYmTDE9PT1pP2AlYyR7bHx8VH0lYyBgOiIiLCQxPUgxP1siY29sb3I6Izg4ODtmb250LXN0eWxlOml0YWxpYyIsImNvbG9yOmluaGVyaXQiXTpbXTtpZihzPT09ImZhdWx0Inx8cz09PSJlcnJvciIpY29uc29sZS5sb2coYCR7SDF9JWMke2V9YCwuLi4kMSwiY29sb3I6I2ZmNTU1NSIpO2Vsc2UgaWYocz09PSJkZWJ1ZyIpY29uc29sZS5sb2coYCR7SDF9JWMke2V9YCwuLi4kMSwiY29sb3I6IzYyNzJhNCIpO2Vsc2UgY29uc29sZS5sb2coYCR7SDF9JWMke2V9YCwuLi4kMSwiY29sb3I6aW5oZXJpdCIpfWNhdGNoe319LCgpPT57aWYoYSljb25zb2xlLmdyb3VwRW5kKCk7VS5jbG9zZSgpfX0sW0M/LmxvZ3NFbmRwb2ludF0pLCFDKXJldHVybiBfKFkzLHtkZXZpY2VzOkssbG9hZGluZzpYLGVycm9yOiQsb25SZWZyZXNoOmd9KTtyZXR1cm4gXyhQOSx7Y29uZmlnOkMsZGV2aWNlczpLLGRldmljZXNMb2FkaW5nOlgsZGV2aWNlc0Vycm9yOiQsc3RvcHBpbmdVZGlkczpHLHNldFN0b3BwaW5nVWRpZHM6cSxzd2l0Y2hpbmc6WSxzZXRTd2l0Y2hpbmc6SCxheE92ZXJsYXlFbmFibGVkOlEsc2V0QXhPdmVybGF5RW5hYmxlZDprLGRldnRvb2xzT3BlbjpiLHNldERldnRvb2xzT3BlbjpWLGdyaWRPcGVuOkQsc2V0R3JpZE9wZW46QSxzZWxlY3RlZERldnRvb2xzVGFyZ2V0SWQ6SSxzZXRTZWxlY3RlZERldnRvb2xzVGFyZ2V0SWQ6aCxzdHJlYW1pbmc6TCxzZXRTdHJlYW1pbmc6TixmZXRjaERldmljZXM6Z30pfWZ1bmN0aW9uIFA5KHtjb25maWc6QyxkZXZpY2VzOkwsZGV2aWNlc0xvYWRpbmc6TixkZXZpY2VzRXJyb3I6SyxzdG9wcGluZ1VkaWRzOlosc2V0U3RvcHBpbmdVZGlkczpYLHN3aXRjaGluZzp3LHNldFN3aXRjaGluZzokLGF4T3ZlcmxheUVuYWJsZWQ6SixzZXRBeE92ZXJsYXlFbmFibGVkOkcsZGV2dG9vbHNPcGVuOnEsc2V0RGV2dG9vbHNPcGVuOlksZ3JpZE9wZW46SCxzZXRHcmlkT3BlbjpRLHNlbGVjdGVkRGV2dG9vbHNUYXJnZXRJZDprLHNldFNlbGVjdGVkRGV2dG9vbHNUYXJnZXRJZDpiLHN0cmVhbWluZzpWLHNldFN0cmVhbWluZzpELGZldGNoRGV2aWNlczpBfSl7bGV0IEk9TC5maW5kKChXKT0+Vy51ZGlkPT09Qy5kZXZpY2UpPz9udWxsO0UoKCk9Pntkb2N1bWVudC50aXRsZT1JPy5uYW1lP2BTaW11bGF0b3IgLSAke0kubmFtZX1gOiJTaW11bGF0b3IgUHJldmlldyJ9LFtJPy5uYW1lXSk7bGV0IGg9ZTEoST8ubmFtZSksZz1pMyhDLmRldnRvb2xzRW5kcG9pbnQ/P0kxKCJkZXZ0b29scyIpLHEpO0UoKCk9PntpZighcSlyZXR1cm47aWYoayYmZy50YXJnZXRzLnNvbWUoKFcpPT5XLmlkPT09aykpcmV0dXJuO2IoZy50YXJnZXRzLmxlbmd0aD09PTE/Zy50YXJnZXRzWzBdLmlkOm51bGwpfSxbcSxnLnRhcmdldHMsayxiXSksRSgoKT0+e2IobnVsbCl9LFtDLmRldmljZSxiXSk7bGV0IFU9bzMoQy5zdHJlYW1VcmwpLFt6LHldPU0obnVsbCkseD16Pz9VLmNvbmZpZz8/bzIoaCxJPy5uYW1lKSxpPXUyKGgseCksYT1mMihoLHgpLHExPWoyKHgpLGQ9bjEoeCksTDE9ZD9kLndpZHRoL2QuaGVpZ2h0OjEsVD1SKG51bGwpO0UoKCk9PntsZXQgVz0hMSxtPW51bGwsbz1udWxsLHU9KCk9PntpZihXfHxtKXJldHVybjttPXNldFRpbWVvdXQoKCk9PnttPW51bGwsWDEoKX0sMTAwMCl9LFgxPSgpPT57bGV0IEY9bmV3IFdlYlNvY2tldChDLndzVXJsKTtGLmJpbmFyeVR5cGU9ImFycmF5YnVmZmVyIixvPUYsVC5jdXJyZW50PUYsRi5vbmNsb3NlPSgpPT57aWYoVC5jdXJyZW50PT09RilULmN1cnJlbnQ9bnVsbDt1KCl9LEYub25lcnJvcj0oKT0+e0YuY2xvc2UoKX19O3JldHVybiBYMSgpLCgpPT57aWYoVz0hMCxtKWNsZWFyVGltZW91dChtKTtpZihULmN1cnJlbnQ9PT1vKVQuY3VycmVudD1udWxsO28/LmNsb3NlKCl9fSxbQy53c1VybF0pO2xldCBsPVAoKFcsbSk9PntsZXQgbz1ULmN1cnJlbnQ7aWYoIW98fG8ucmVhZHlTdGF0ZSE9PVdlYlNvY2tldC5PUEVOKXJldHVybjtsZXQgdT1uZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoSlNPTi5zdHJpbmdpZnkobSkpLFgxPW5ldyBVaW50OEFycmF5KDErdS5sZW5ndGgpO1gxWzBdPVcsWDEuc2V0KHUsMSksby5zZW5kKFgxKX0sW10pLGU9UCgoVyk9PmwoMyxXKSxbbF0pLHM9UCgoVyk9PmwoNSxXKSxbbF0pLEgxPVAoKFcpPT5sKDQse2J1dHRvbjpXfSksW2xdKSwkMT1QKChXKT0+e3koKG0pPT5tJiZtLndpZHRoPT09Vy53aWR0aCYmbS5oZWlnaHQ9PT1XLmhlaWdodCYmbS5vcmllbnRhdGlvbj09PVcub3JpZW50YXRpb24/bTpXKX0sW10pLEMxPVAoKFcpPT57bCg3LHtvcmllbnRhdGlvbjpXfSl9LFtsXSk7RSgoKT0+e3kobnVsbCl9LFtDLnN0cmVhbVVybF0pLEUoKCk9PntsZXQgVz1VLmNvbmZpZztpZighVylyZXR1cm47eSgobSk9Pm0mJm0ud2lkdGg9PT1XLndpZHRoJiZtLmhlaWdodD09PVcuaGVpZ2h0JiZtLm9yaWVudGF0aW9uPT09Vy5vcmllbnRhdGlvbj9tOm51bGwpfSxbVS5jb25maWcsVS5jb25maWc/LndpZHRoLFUuY29uZmlnPy5oZWlnaHQsVS5jb25maWc/Lm9yaWVudGF0aW9uXSk7bGV0IGM9UCgoVyxtKT0+e2woNix7dHlwZTpXLHVzYWdlOm19KX0sW2xdKSxbcCxyXT1NKG51bGwpLFtmLG5dPU0oITEpLHt3aWR0aDpaMSxvblBvaW50ZXJEb3duOkExfT1OMCgic2VydmUtc2ltOnRvb2xzLXBhbmVsLXdpZHRoIixjMywyNDAsNzIwKSx7d2lkdGg6UTEsb25Qb2ludGVyRG93bjpsMX09TjAoInNlcnZlLXNpbTpkZXZ0b29scy1wYW5lbC13aWR0aCIsdDMsNDIwLDE0MDApLHt3aWR0aDpTMSxvblBvaW50ZXJEb3duOkYxfT1OMCgic2VydmUtc2ltOmdyaWQtcGFuZWwtd2lkdGgiLHMzLDM2MCwxNDAwKSxbbTEsVjFdPU0oKCk9PnR5cGVvZiB3aW5kb3c8InUiP3dpbmRvdy5pbm5lcldpZHRoOjApLFtrMSwkMl09TSgoKT0+dHlwZW9mIHdpbmRvdzwidSI/d2luZG93LmlubmVySGVpZ2h0OjApO0UoKCk9PntsZXQgVz0oKT0+e1YxKHdpbmRvdy5pbm5lcldpZHRoKSwkMih3aW5kb3cuaW5uZXJIZWlnaHQpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsVyksKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLFcpfSxbXSksRSgoKT0+e2xldCBXPW5ldyBFdmVudFNvdXJjZShDLmFwcFN0YXRlRW5kcG9pbnQ/P0kxKCJhcHBzdGF0ZSIpKSxtPW51bGw7cmV0dXJuIFcub25tZXNzYWdlPShvKT0+e3RyeXtsZXQgdT1KU09OLnBhcnNlKG8uZGF0YSk7aWYobSljbGVhclRpbWVvdXQobSk7bGV0IFgxPXU/LmlzUmVhY3ROYXRpdmU/MDo2MDA7bT1zZXRUaW1lb3V0KCgpPT5yKHUpLFgxKX1jYXRjaHt9fSwoKT0+e2lmKG0pY2xlYXJUaW1lb3V0KG0pO1cuY2xvc2UoKX19LFtDLmFwcFN0YXRlRW5kcG9pbnRdKTtsZXQgRzI9UChhc3luYygpPT57YygiZG93biIsMjI3KSxhd2FpdCBuZXcgUHJvbWlzZSgobyk9PnNldFRpbWVvdXQobywzMCkpLGMoImRvd24iLDIxKSxhd2FpdCBuZXcgUHJvbWlzZSgobyk9PnNldFRpbWVvdXQobywzMCkpLGMoInVwIiwyMSksYXdhaXQgbmV3IFByb21pc2UoKG8pPT5zZXRUaW1lb3V0KG8sMzApKSxjKCJ1cCIsMjI3KX0sW2NdKSxUMT1SKG51bGwpLFtkMSxNMl09TSgwKTtFKCgpPT57bGV0IFc9VDEuY3VycmVudDtpZighV3x8dHlwZW9mIFJlc2l6ZU9ic2VydmVyPiJ1IilyZXR1cm47bGV0IG09bmV3IFJlc2l6ZU9ic2VydmVyKChvKT0+e2xldCB1PW9bMF0/LmNvbnRlbnRSZWN0LndpZHRoPz8wO00yKHUpfSk7cmV0dXJuIG0ub2JzZXJ2ZShXKSwoKT0+bS5kaXNjb25uZWN0KCl9LFtdKTtsZXRbaTEsejFdPU0oITApLEIxPVIoITApO0IxLmN1cnJlbnQ9aTE7bGV0IHYxPVIobmV3IFNldCk7RSgoKT0+e2xldCBXPShtKT0+e2xldCBvPSEhVDEuY3VycmVudD8uY29udGFpbnMobS50YXJnZXQpO3oxKG8pfTtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLFcsITApLCgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsVywhMCl9LFtdKSxFKCgpPT57aWYoaTEpcmV0dXJuO2xldCBXPXYxLmN1cnJlbnQ7aWYoVy5zaXplPT09MClyZXR1cm47Zm9yKGxldCBtIG9mIFcpbCg2LHt0eXBlOiJ1cCIsdXNhZ2U6bX0pO1cuY2xlYXIoKX0sW2kxLGxdKSxFKCgpPT57bGV0IFc9KHUsWDEpPT57aWYoIUIxLmN1cnJlbnQpcmV0dXJuO2lmKHUuY29kZT09PSJLZXlIIiYmdS5tZXRhS2V5JiZ1LnNoaWZ0S2V5KXtpZih1LnByZXZlbnREZWZhdWx0KCksWDE9PT0iZG93biImJiF1LnJlcGVhdClsKDQse2J1dHRvbjoiaG9tZSJ9KTtyZXR1cm59aWYodS5jb2RlPT09IktleUEiJiZ1Lm1ldGFLZXkmJnUuc2hpZnRLZXkpe2lmKHUucHJldmVudERlZmF1bHQoKSxYMT09PSJkb3duIiYmIXUucmVwZWF0KVkxKGB4Y3J1biBzaW1jdGwgdWkgJHtDLmRldmljZX0gYXBwZWFyYW5jZWApLnRoZW4oKEIpPT57bGV0IE89Qi5zdGRvdXQudHJpbSgpPT09ImRhcmsiPyJsaWdodCI6ImRhcmsiO3JldHVybiBZMShgeGNydW4gc2ltY3RsIHVpICR7Qy5kZXZpY2V9IGFwcGVhcmFuY2UgJHtPfWApfSkuY2F0Y2goKCk9Pnt9KTtyZXR1cm59bGV0IEY9cjModS5jb2RlKTtpZihGPT1udWxsKXJldHVybjtpZih1LnByZXZlbnREZWZhdWx0KCksWDE9PT0iZG93biIpdjEuY3VycmVudC5hZGQoRik7ZWxzZSB2MS5jdXJyZW50LmRlbGV0ZShGKTtsKDYse3R5cGU6WDEsdXNhZ2U6Rn0pfSxtPSh1KT0+Vyh1LCJkb3duIiksbz0odSk9PlcodSwidXAiKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLG0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsbyksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsbSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleXVwIixvKX19LFtsLEMuZGV2aWNlXSk7bGV0IEoyPVAoYXN5bmMoVyk9PntpZih3fHxXLnVkaWQ9PT1DLmRldmljZSlyZXR1cm47JCghMCk7dHJ5e2lmKFcuc3RhdGUhPT0iQm9vdGVkIilhd2FpdCBZMShgeGNydW4gc2ltY3RsIGJvb3QgJHtXLnVkaWR9YCk7bGV0IG09YXdhaXQgWTEoYGJ1bnggc2VydmUtc2ltIC0tZGV0YWNoICR7Vy51ZGlkfWApO2lmKG0uZXhpdENvZGUhPT0wKXRocm93IEVycm9yKG0uc3RkZXJyfHwiRmFpbGVkIHRvIHN0YXJ0IHNlcnZlLXNpbSIpO2xldCBvPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO28uc2VhcmNoUGFyYW1zLnNldCgiZGV2aWNlIixXLnVkaWQpLHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oby50b1N0cmluZygpKX1jYXRjaHskKCExKX19LFt3LEMuZGV2aWNlLCRdKSxXMT1kMygpLFkyPWozKHtleGVjOlkxLHVkaWQ6Qy5kZXZpY2UsZW5hYmxlZDpWLG9uVXBsb2FkU3RhcnQ6VzEuYWRkLG9uVXBsb2FkUHJvZ3Jlc3M6VzEuc2V0UHJvZ3Jlc3Msb25VcGxvYWRFbmQ6KFcsbSxvKT0+VzEudXBkYXRlKFcse3N0YXR1czptPyJzdWNjZXNzIjoiZXJyb3IiLG1lc3NhZ2U6b30pLG9uVW5zdXBwb3J0ZWQ6KFcpPT57bGV0IG09VzEuYWRkKFcubmFtZSwibWVkaWEiKTtXMS51cGRhdGUobSx7c3RhdHVzOiJlcnJvciIsbWVzc2FnZTpgVW5zdXBwb3J0ZWQ6ICR7Vy50eXBlfHxMMChXKX1gfSl9fSksVTI9UChhc3luYyhXKT0+e1goKG0pPT5uZXcgU2V0KG0pLmFkZChXKSk7dHJ5e2F3YWl0IFkxKGB4Y3J1biBzaW1jdGwgc2h1dGRvd24gJHtXfWApLGF3YWl0IEEoKX1maW5hbGx5e1goKG0pPT57bGV0IG89bmV3IFNldChtKTtyZXR1cm4gby5kZWxldGUoVyksb30pfX0sW0EsWF0pLHQ9YTMoe2RlZmF1bHRXaWR0aDphLHZpZXdwb3J0V2lkdGg6bTEsdmlld3BvcnRIZWlnaHQ6azEsYXNwZWN0UmF0aW86TDEsb25TdGFydDooKT0+ejEoITEpfSksajE9cT9RMTpIP1MxOmY/WjE6MCxvMT0xMixPMj0yNCxxMj1qMT4wP2oxK08yOjAsUjE9MDtpZihqMT4wKXtsZXQgVz1tMS1vMS1qMSxtPWQxPjA/TWF0aC5taW4oZDEsdC53aWR0aCk6dC53aWR0aCx1PW0xLzIrbS8yLShXLU8yKTtpZih1PjApe2xldCBYMT0yKnU7UjE9WDE8PXEyP1gxOjB9fXJldHVybiBfKCQzLHtlbmRwb2ludDpKP0M/LmF4RW5kcG9pbnQ6dm9pZCAwLGNoaWxkcmVuOl8oImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgaC1zY3JlZW4gYmctcGFnZSBweS02IHBsLTYgZ2FwLTMgZm9udC1zeXN0ZW0gYm94LWJvcmRlciIsc3R5bGU6e3BhZGRpbmdSaWdodDoyNCtSMSx0cmFuc2l0aW9uOnQuaXNSZXNpemluZz8ibm9uZSI6dTN9LGNoaWxkcmVuOltfKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0zIG1pbi13LTAiLHN0eWxlOnt3aWR0aDp0LndpZHRoLHRyYW5zaXRpb246dC5pc1Jlc2l6aW5nP3UwOmEwfSxjaGlsZHJlbjpbXyhEMSx7ZXhlYzpZMSxvblJvdGF0ZTpDMSxvcmllbnRhdGlvbjp4Lm9yaWVudGF0aW9uPz9udWxsLGRldmljZVVkaWQ6Qy5kZXZpY2UsZGV2aWNlTmFtZTpJPy5uYW1lPz9udWxsLGRldmljZVJ1bnRpbWU6ST8ucnVudGltZT8/bnVsbCxzdHJlYW1pbmc6VixjaGlsZHJlbjpbXyhxMyx7ZGV2aWNlczpMLHNlbGVjdGVkVWRpZDpDLmRldmljZSxsb2FkaW5nOk4sZXJyb3I6SyxzdG9wcGluZ1VkaWRzOlosb25SZWZyZXNoOkEsb25TZWxlY3Q6SjIsb25TdG9wOlUyLHRyaWdnZXI6XyhEMS5UaXRsZSx7fSl9KSxfKEQxLkFjdGlvbnMse2NoaWxkcmVuOltwPy5pc1JlYWN0TmF0aXZlJiZfKEQxLkJ1dHRvbix7ImFyaWEtbGFiZWwiOiJSZWxvYWQgUmVhY3QgTmF0aXZlIGJ1bmRsZSIsdGl0bGU6IlJlbG9hZCAoQ21kK1IpIixvbkNsaWNrOigpPT52b2lkIEcyKCksY2hpbGRyZW46XyhGMix7fSl9KSxfKEQxLkhvbWVCdXR0b24se29uQ2xpY2s6KFcpPT57Vy5wcmV2ZW50RGVmYXVsdCgpLEgxKCJob21lIil9fSksXyhHMyx7b3ZlcmxheUVuYWJsZWQ6SixzdHJlYW1pbmc6VixvblRvZ2dsZU92ZXJsYXk6KCk9PkcoKFcpPT4hVyl9KSxfKEQxLlJvdGF0ZUJ1dHRvbix7dGl0bGU6IlJvdGF0ZSBkZXZpY2UifSldfSldfSksXygiZGl2Iix7cmVmOlQxLGNsYXNzTmFtZToicmVsYXRpdmUgbWF4LWgtZnVsbCIsc3R5bGU6e3dpZHRoOnQud2lkdGgsYXNwZWN0UmF0aW86cTEsdHJhbnNpdGlvbjp0LmlzUmVzaXppbmc/dTA6YTAsd2lsbENoYW5nZTp0LmlzUmVzaXppbmc/IndpZHRoIjp2b2lkIDB9LC4uLlkyLmRyb3Bab25lUHJvcHMsY2hpbGRyZW46W18obDIse3VybDpDLnVybCxzdHlsZTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsYm9yZGVyOiJub25lIixwb2ludGVyRXZlbnRzOnQuaXNSZXNpemluZz8ibm9uZSI6dm9pZCAwfSxpbWFnZVN0eWxlOntib3JkZXJSYWRpdXM6aSxjb3JuZXJTaGFwZToic3VwZXJlbGxpcHNlKDEuMykifSxoaWRlQ29udHJvbHM6ITAsb25TdHJlYW1pbmdDaGFuZ2U6RCxvblN0cmVhbVRvdWNoOmUsb25TdHJlYW1NdWx0aVRvdWNoOnMsb25TdHJlYW1CdXR0b246SDEsc3Vic2NyaWJlRnJhbWU6VS5zdWJzY3JpYmVGcmFtZSxzdHJlYW1GcmFtZTpVLmZyYW1lLHN0cmVhbUNvbmZpZzp4LG9uU2NyZWVuQ29uZmlnQ2hhbmdlOiQxfSksSiYmXyh3Myx7fSksWTIuaXNEcmFnT3ZlciYmXygiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSBpbnNldC0wIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIGJvcmRlci0yIGJvcmRlci1kYXNoZWQgYm9yZGVyLWFjY2VudCBiZy1bcmdiYSg5OSwxMDIsMjQxLDAuMTIpXSBiYWNrZHJvcC1ibHVyLVsycHhdIHRleHQtYWNjZW50IHBvaW50ZXItZXZlbnRzLW5vbmUgei0yMCIsc3R5bGU6e2JvcmRlclJhZGl1czppfSxjaGlsZHJlbjpbXygic3ZnIix7d2lkdGg6IjMyIixoZWlnaHQ6IjMyIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMS41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjpbXygicGF0aCIse2Q6Ik0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00In0pLF8oInBvbHlsaW5lIix7cG9pbnRzOiIxNyA4IDEyIDMgNyA4In0pLF8oImxpbmUiLHt4MToiMTIiLHkxOiIzIix4MjoiMTIiLHkyOiIxNSJ9KV19KSxfKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxM3B4XSBmb250LW1lZGl1bSIsY2hpbGRyZW46IkRyb3AgbWVkaWEgb3IgLmlwYSJ9KV19KSxfKCJkaXYiLHtyZWY6dC5oYW5kbGVSZWYscm9sZToic2VwYXJhdG9yIiwiYXJpYS1sYWJlbCI6IlJlc2l6ZSBzaW11bGF0b3IiLCJhcmlhLW9yaWVudGF0aW9uIjoidmVydGljYWwiLCJhcmlhLXZhbHVlbWluIjpNYXRoLnJvdW5kKHQubWluV2lkdGgpLCJhcmlhLXZhbHVlbWF4IjpNYXRoLnJvdW5kKHQubWF4V2lkdGgpLCJhcmlhLXZhbHVlbm93IjpNYXRoLnJvdW5kKHQud2lkdGgpLHRhYkluZGV4OjAsdGl0bGU6IkRyYWcgdG8gcmVzaXplIixvblBvaW50ZXJEb3duOnQub25Qb2ludGVyRG93bixvblBvaW50ZXJNb3ZlOnQub25Qb2ludGVyTW92ZSxvblBvaW50ZXJVcDp0Lm9uUG9pbnRlckVuZCxvblBvaW50ZXJDYW5jZWw6dC5vblBvaW50ZXJFbmQsb25Mb3N0UG9pbnRlckNhcHR1cmU6dC5vblBvaW50ZXJFbmQsb25LZXlEb3duOnQub25LZXlEb3duLG9uUG9pbnRlckVudGVyOigpPT50LnNldEhhbmRsZUhvdmVyZWQoITApLG9uUG9pbnRlckxlYXZlOigpPT50LnNldEhhbmRsZUhvdmVyZWQoITEpLHN0eWxlOnsuLi5JOSwuLi50LmhhbmRsZUFjdGl2ZT9FOTp7fX0sY2hpbGRyZW46Xygic3ZnIix7d2lkdGg6IjE1IixoZWlnaHQ6IjE1Iix2aWV3Qm94OiIwIDAgMTUgMTUiLGZpbGw6Im5vbmUiLCJhcmlhLWhpZGRlbiI6InRydWUiLGNoaWxkcmVuOltfKCJwYXRoIix7ZDoiTTkgMTNMMTMgOSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIxLjQiLHN0cm9rZUxpbmVjYXA6InJvdW5kIn0pLF8oInBhdGgiLHtkOiJNNSAxM0wxMyA1IixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjEuNCIsc3Ryb2tlTGluZWNhcDoicm91bmQifSldfSl9KV19KV19KSxXMS50b2FzdHMubGVuZ3RoPjAmJl8oImRpdiIse2NsYXNzTmFtZToiZml4ZWQgYm90dG9tLTQgcmlnaHQtNCBmbGV4IGZsZXgtY29sIGdhcC0xLjUgbWF4LXctWzMyMHB4XSB6LTMwIixjaGlsZHJlbjpXMS50b2FzdHMubWFwKChXKT0+e2xldCBtPVcuc3RhdHVzPT09ImVycm9yIixvPVcuc3RhdHVzPT09InVwbG9hZGluZyIsdT1vJiZXLnByb2dyZXNzIT09bnVsbCxYMT1XLnByb2dyZXNzIT1udWxsP01hdGgucm91bmQoVy5wcm9ncmVzcyoxMDApOjA7cmV0dXJuIF8oImRpdiIse2NsYXNzTmFtZTpgZmxleCBmbGV4LWNvbCBnYXAtMS41IHB4LTMgcHktMiBiZy1wYW5lbCBib3JkZXIgYm9yZGVyLXdoaXRlLzEyIHJvdW5kZWQtbGcgdGV4dC13aGl0ZS85MCB0ZXh0LVsxMnB4XSBmb250LW1vbm8gc2hhZG93LVswXzRweF8xMnB4X3JnYmEoMCwwLDAsMC40KV0gJHttPyJzZWxlY3QtdGV4dCBjdXJzb3ItdGV4dCI6InNlbGVjdC1ub25lIGN1cnNvci1kZWZhdWx0In1gLGNoaWxkcmVuOltfKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIixjaGlsZHJlbjpbXygic3BhbiIse2NsYXNzTmFtZToic2l6ZS0xLjUgcm91bmRlZC1mdWxsIHNocmluay0wIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4zc10iLHN0eWxlOntiYWNrZ3JvdW5kOm8/IiNhNWI0ZmMiOlcuc3RhdHVzPT09InN1Y2Nlc3MiPyIjNGFkZTgwIjoiI2Y4NzE3MSJ9fSksXygic3BhbiIse2NsYXNzTmFtZToiZmxleC0xIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwIixjaGlsZHJlbjpbbyYmdSYmYFVwbG9hZGluZyAke1cubmFtZX3igKYgJHtYMX0lYCxvJiYhdSYmKFcua2luZD09PSJpcGEiP2BJbnN0YWxsaW5nICR7Vy5uYW1lfeKApmA6YEFkZGluZyAke1cubmFtZX3igKZgKSxXLnN0YXR1cz09PSJzdWNjZXNzIiYmKFcua2luZD09PSJpcGEiP2BJbnN0YWxsZWQgJHtXLm5hbWV9YDpgQWRkZWQgJHtXLm5hbWV9IHRvIFBob3Rvc2ApLG0mJmAke1cubmFtZX06ICR7Vy5tZXNzYWdlPz8iVXBsb2FkIGZhaWxlZCJ9YF19KV19KSxvJiZfKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIGgtWzNweF0gdy1mdWxsIGJnLXdoaXRlLzggcm91bmRlZC1bMnB4XSBvdmVyZmxvdy1oaWRkZW4iLGNoaWxkcmVuOnU/XygiZGl2Iix7Y2xhc3NOYW1lOiJoLWZ1bGwgYmctYWNjZW50IHJvdW5kZWQtWzJweF0gW3RyYW5zaXRpb246d2lkdGhfMTIwbXNfbGluZWFyXSIsc3R5bGU6e3dpZHRoOmAke1gxfSVgfX0pOl8oImRpdiIse2NsYXNzTmFtZToic2VydmUtc2ltLXRvYXN0LWluZGV0ZXJtaW5hdGUgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIGgtZnVsbCB3LVs0MCVdIGJnLWFjY2VudCByb3VuZGVkLVsycHhdIn0pfSldfSxXLmlkKX0pfSksXygiZGl2Iix7Y2xhc3NOYW1lOmBmaXhlZCB0b3AtMyByaWdodC0zIGZsZXggZmxleC1jb2wgZ2FwLTEgcC0xIGJnLXBhbmVsLWJnIGJvcmRlciBib3JkZXItd2hpdGUvOCByb3VuZGVkLVsxMHB4XSBiYWNrZHJvcC1ibHVyLVsxMnB4XSBbLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6Ymx1cigxMnB4KV0gW3RyYW5zaXRpb246b3BhY2l0eV8wLjE4c19lYXNlXSB6LTQwICR7Znx8cXx8SD8ib3BhY2l0eS0wIHBvaW50ZXItZXZlbnRzLW5vbmUiOiJvcGFjaXR5LTEwMCBwb2ludGVyLWV2ZW50cy1hdXRvIn1gLGNoaWxkcmVuOltfKCJidXR0b24iLHtvbkNsaWNrOigpPT57WSghMSksUSghMSksbigoVyk9PiFXKX0sY2xhc3NOYW1lOiJ3LVszMHB4XSBoLVszMHB4XSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy10cmFuc3BhcmVudCBib3JkZXItbm9uZSByb3VuZGVkLW1kIHRleHQtd2hpdGUvNzAgY3Vyc29yLXBvaW50ZXIgW3RyYW5zaXRpb246YmFja2dyb3VuZF8wLjE1c19lYXNlLGNvbG9yXzAuMTVzX2Vhc2VdIGhvdmVyOmJnLXdoaXRlLzggaG92ZXI6dGV4dC13aGl0ZSIsImFyaWEtbGFiZWwiOiJPcGVuIHRvb2xzIHBhbmVsIiwiYXJpYS1wcmVzc2VkIjpmLHRpdGxlOiJUb29scyIsY2hpbGRyZW46Xygic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMS43NSIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W18oInJlY3QiLHt4OiIzIix5OiI0Iix3aWR0aDoiMTgiLGhlaWdodDoiMTYiLHJ4OiIyLjUifSksXygibGluZSIse3gxOiIxNSIseTE6IjQiLHgyOiIxNSIseTI6IjIwIn0pXX0pfSksXygiYnV0dG9uIix7b25DbGljazooKT0+e24oITEpLFEoITEpLFkoKFcpPT4hVyl9LGNsYXNzTmFtZToidy1bMzBweF0gaC1bMzBweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcm91bmRlZC1tZCB0ZXh0LXdoaXRlLzcwIGN1cnNvci1wb2ludGVyIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNfZWFzZSxjb2xvcl8wLjE1c19lYXNlXSBob3ZlcjpiZy13aGl0ZS84IGhvdmVyOnRleHQtd2hpdGUiLCJhcmlhLWxhYmVsIjoiT3BlbiBXZWJLaXQgRGV2VG9vbHMiLCJhcmlhLXByZXNzZWQiOnEsdGl0bGU6IldlYktpdCBEZXZUb29scyIsY2hpbGRyZW46Xygic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMS43NSIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W18oImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9KSxfKCJwYXRoIix7ZDoiTTEyIDJhMTQuNSAxNC41IDAgMCAwIDAgMjAgMTQuNSAxNC41IDAgMCAwIDAtMjAifSksXygicGF0aCIse2Q6Ik0yIDEyaDIwIn0pXX0pfSksXygiYnV0dG9uIix7b25DbGljazooKT0+e24oITEpLFkoITEpLFEoKFcpPT4hVyl9LGNsYXNzTmFtZToidy1bMzBweF0gaC1bMzBweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctdHJhbnNwYXJlbnQgYm9yZGVyLW5vbmUgcm91bmRlZC1tZCB0ZXh0LXdoaXRlLzcwIGN1cnNvci1wb2ludGVyIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4xNXNfZWFzZSxjb2xvcl8wLjE1c19lYXNlXSBob3ZlcjpiZy13aGl0ZS84IGhvdmVyOnRleHQtd2hpdGUiLCJhcmlhLWxhYmVsIjoiT3BlbiBzaW11bGF0b3IgZ3JpZCIsImFyaWEtcHJlc3NlZCI6SCx0aXRsZToiU2ltdWxhdG9ycyIsY2hpbGRyZW46Xygic3ZnIix7d2lkdGg6IjE4IixoZWlnaHQ6IjE4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMS43NSIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsY2hpbGRyZW46W18oInJlY3QiLHt4OiIzIix5OiIzIix3aWR0aDoiNyIsaGVpZ2h0OiI3IixyeDoiMS41In0pLF8oInJlY3QiLHt4OiIxNCIseToiMyIsd2lkdGg6IjciLGhlaWdodDoiNyIscng6IjEuNSJ9KSxfKCJyZWN0Iix7eDoiMyIseToiMTQiLHdpZHRoOiI3IixoZWlnaHQ6IjciLHJ4OiIxLjUifSksXygicmVjdCIse3g6IjE0Iix5OiIxNCIsd2lkdGg6IjciLGhlaWdodDoiNyIscng6IjEuNSJ9KV19KX0pXX0pLF8oUzMse29wZW46ZixvbkNsb3NlOigpPT5uKCExKSx1ZGlkOkMuZGV2aWNlLGN1cnJlbnRBcHA6cCxheE92ZXJsYXlFbmFibGVkOkosb25Ub2dnbGVBeE92ZXJsYXk6KCk9PkcoKFcpPT4hVyksd2lkdGg6WjF9KSxfKEMwLHtwYW5lbFdpZHRoOloxLHZpc2libGU6ZixvblBvaW50ZXJEb3duOkExLGFyaWFMYWJlbDoiUmVzaXplIHRvb2xzIHBhbmVsIn0pLF8oQjMse29wZW46SCxvbkNsb3NlOigpPT5RKCExKSxjdXJyZW50VWRpZDpDLmRldmljZSx3aWR0aDpTMX0pLF8oQzAse3BhbmVsV2lkdGg6UzEsdmlzaWJsZTpILG9uUG9pbnRlckRvd246RjEsYXJpYUxhYmVsOiJSZXNpemUgc2ltdWxhdG9ycyBwYW5lbCJ9KSxfKHgzLHtvcGVuOnEsb25DbG9zZTooKT0+WSghMSksdWRpZDpDLmRldmljZSx0YXJnZXRzOmcudGFyZ2V0cyxzZWxlY3RlZFRhcmdldElkOmssb25TZWxlY3RUYXJnZXQ6Yixsb2FkaW5nOmcubG9hZGluZyxlcnJvcjpnLmVycm9yLG9uUmVmcmVzaDooKT0+dm9pZCBnLnJlZnJlc2goKSx3aWR0aDpRMX0pLF8oQzAse3BhbmVsV2lkdGg6UTEsdmlzaWJsZTpxLG9uUG9pbnRlckRvd246bDEsYXJpYUxhYmVsOiJSZXNpemUgV2ViS2l0IERldlRvb2xzIHBhbmVsIn0pLF8oImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIuNSB0ZXh0LVsxMnB4XSBmb250LW1vbm8gdGV4dC13aGl0ZS80MCIsY2hpbGRyZW46Xygic3BhbiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLVs1cHhdIFt0cmFuc2l0aW9uOmNvbG9yXzAuM3NdIixzdHlsZTp7Y29sb3I6Vj8iIzRhZGU4MCI6IiM2NjYifSxjaGlsZHJlbjpbXygic3BhbiIse2NsYXNzTmFtZToic2l6ZS0xLjUgcm91bmRlZC1mdWxsIFt0cmFuc2l0aW9uOmJhY2tncm91bmRfMC4zc10iLHN0eWxlOntiYWNrZ3JvdW5kOlY/IiM0YWRlODAiOiIjNjY2In19KSxWPyJsaXZlIjoiY29ubmVjdGluZyJdfSl9KV19KX0pfVI1KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb290IikpLnJlbmRlcihfKFQ5LHt9KSk7Cjwvc2NyaXB0Pgo8L2JvZHk+PC9odG1sPg==","base64").toString("utf-8");return JQ}function M2(){try{let J=$J("xcrun simctl list devices -j",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:3000}),Q=JSON.parse(J),Z=[];for(let[$,G]of Object.entries(Q.devices)){if(!/SimRuntime\.iOS-/i.test($))continue;for(let Y of G){if(Y.isAvailable===!1)continue;Z.push({...Y,runtime:$.replace(/^.*SimRuntime\./,"")})}}return Z}catch{return[]}}var E2=1610612736;function B2(){try{let J=Number($J("sysctl -n hw.memsize",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim()),Q=Number($J("sysctl -n hw.pagesize",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim()),Z=$J("vm_stat",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}),$=(Y)=>{let X=Z.match(Y);return X?Number(X[1]):0},G=$(/Pages free:\s+(\d+)/)+$(/Pages inactive:\s+(\d+)/)+$(/Pages speculative:\s+(\d+)/);return{totalBytes:Number.isFinite(J)?J:0,availableBytes:G*(Number.isFinite(Q)?Q:4096)}}catch{return{totalBytes:0,availableBytes:0}}}function T2(){try{let J=$J("ps -axo rss=,args=",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:3000,maxBuffer:8388608}),Q={},Z=0,$=/\/Devices\/([0-9A-F-]{36})\//i;for(let G of J.split(`
39
+ `)){let Y=G.trimStart();if(!Y)continue;let X=$.exec(Y);if(!X)continue;let W=Number(Y.split(/\s+/,1)[0]);if(!Number.isFinite(W))continue;let z=W*1024,R=X[1].toUpperCase();Q[R]=(Q[R]??0)+z,Z+=z}return{perUdid:Q,totalBytes:Z}}catch{return{perUdid:{},totalBytes:0}}}function q2(){let{totalBytes:J,availableBytes:Q}=B2(),Z=T2(),$=Object.keys(Z.perUdid).length,G=$>0?Z.totalBytes/$:0,Y=G>=268435456?"measured":"estimated",X=Y==="measured"?G:E2,W=X>0?Math.max(0,Math.floor(Q/X)):0;return{totalBytes:J,availableBytes:Q,runningSimulators:$,perSimAvgBytes:X,perSimSource:Y,estimatedAdditional:W}}function x2(){if(process.argv[0]&&/(^|\/)serve-sim$/.test(process.argv[0]))return{command:process.argv[0],baseArgs:[]};if(process.argv[1]&&/(^|\/)serve-sim\.js$/.test(process.argv[1]))return{command:process.argv[0],baseArgs:[process.argv[1]]};try{let J=$J("command -v serve-sim",{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:1500}).trim();if(J)return{command:J,baseArgs:[]}}catch{}return null}function o2(J){let Q=(J?.basePath??"/.sim").replace(/\/+$/,"");return(Z,$,G)=>{let Y=Z.url??"",X=Y.indexOf("?"),W=X===-1?Y:Y.slice(0,X),z=R2(Y)??J?.device??null,R=Q==="/"?"/devtools-frontend":`${Q}/devtools-frontend`;if(W===R||W.startsWith(`${R}/`)){(async()=>{let _=W===R?"inspector.html":W.slice(R.length+1);if(_.split("/").some((H)=>H==="..")){$.writeHead(400,{"Content-Type":"text/plain; charset=utf-8"}),$.end("Invalid asset path");return}try{let H=await fetch(`https://chrome-devtools-frontend.appspot.com/serve_rev/@${F2}/${_}${X===-1?"":Y.slice(X)}`),A={"Cache-Control":"public, max-age=604800"},E=H.headers.get("content-type");if(E)A["Content-Type"]=E;$.writeHead(H.status,A),$.end(Buffer.from(await H.arrayBuffer()))}catch(H){$.writeHead(502,{"Content-Type":"text/plain; charset=utf-8"}),$.end(H instanceof Error?H.message:"Failed to load DevTools frontend")}})();return}if(W===Q||W===Q+"/"){let _=ZJ(),H=WJ(_,z),A=A2();if(H){let E=(Q===""?"":Q)+"/grid/api",T=`<script>window.__SIM_PREVIEW__=${JSON.stringify({...H,basePath:Q,logsEndpoint:BJ(Q,"/logs",H.device),appStateEndpoint:BJ(Q,"/appstate",H.device),axEndpoint:BJ(Q,"/ax",H.device),devtoolsEndpoint:BJ(Q,"/devtools",H.device),gridApiEndpoint:E,gridStartEndpoint:E+"/start",gridShutdownEndpoint:E+"/shutdown",gridMemoryEndpoint:E+"/memory",previewEndpoint:Q===""?"/":Q})}</script>`;A=A.replace("<!--__SIM_PREVIEW_CONFIG__-->",T)}$.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store"}),$.end(A);return}if(W===Q+"/grid/api/memory"){$.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),$.end(JSON.stringify(q2()));return}if(W===Q+"/grid/api"){let _=ZJ(),H=new Map(_.map((P)=>[P.device,P])),E=M2().map((P)=>{let C=H.get(P.udid);return{device:P.udid,name:P.name,runtime:P.runtime,state:P.state,helper:C?{port:C.port,url:C.url,streamUrl:C.streamUrl,wsUrl:C.wsUrl}:null}}),M=(P)=>{if(/iphone/i.test(P))return 0;if(/ipad/i.test(P))return 1;if(/watch/i.test(P))return 2;if(/(apple\s*tv|^tv\b)/i.test(P))return 3;if(/vision|reality/i.test(P))return 4;return 5},T=(P)=>P.helper?0:P.state==="Booted"?1:2;E.sort((P,C)=>M(P.name)-M(C.name)||T(P)-T(C)||P.name.localeCompare(C.name)),$.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),$.end(JSON.stringify({devices:E}));return}if(W===Q+"/grid/api/shutdown"&&Z.method==="POST"){let _="";Z.on("data",(H)=>{_+=typeof H==="string"?H:H.toString()}),Z.on("end",()=>{let H="";try{H=JSON.parse(_).udid??""}catch{}if(!/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(H)){$.writeHead(400,{"Content-Type":"application/json"}),$.end(JSON.stringify({ok:!1,error:"Invalid or missing udid"}));return}LJ={at:0,booted:null},eQ("xcrun",["simctl","shutdown",H],{timeout:30000},(A,E,M)=>{if(A){$.writeHead(500,{"Content-Type":"application/json"}),$.end(JSON.stringify({ok:!1,error:M?.toString().trim()||A.message}));return}$.writeHead(200,{"Content-Type":"application/json"}),$.end(JSON.stringify({ok:!0}))})});return}if(W===Q+"/grid/api/start"&&Z.method==="POST"){let _="";Z.on("data",(H)=>{_+=typeof H==="string"?H:H.toString()}),Z.on("end",()=>{let H="";try{H=JSON.parse(_).udid??""}catch{}if(!/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(H)){$.writeHead(400,{"Content-Type":"application/json"}),$.end(JSON.stringify({ok:!1,error:"Invalid or missing udid"}));return}let A=x2();if(!A){$.writeHead(500,{"Content-Type":"application/json"}),$.end(JSON.stringify({ok:!1,error:"serve-sim CLI not found in PATH. Install it (npm i -g serve-sim) and retry."}));return}let E=sJ(A.command,[...A.baseArgs,"--detach",H],{stdio:["ignore","pipe","pipe"],detached:!1}),M="",T="";E.stdout?.on("data",(C)=>{M+=C.toString()}),E.stderr?.on("data",(C)=>{T+=C.toString()});let P=setTimeout(()=>{try{E.kill("SIGTERM")}catch{}},180000);E.on("close",(C)=>{if(clearTimeout(P),C===0)$.writeHead(200,{"Content-Type":"application/json"}),$.end(JSON.stringify({ok:!0,stdout:M.trim()}));else $.writeHead(500,{"Content-Type":"application/json"}),$.end(JSON.stringify({ok:!1,error:T.trim()||M.trim()||`serve-sim exited with code ${C}`}))})});return}if(W===Q+"/devtools"){(async()=>{let _=ZJ();if(!WJ(_,z)){$.writeHead(404,{"Content-Type":"application/json"}),$.end(JSON.stringify({error:"No serve-sim device"}));return}try{let A=await eJ(),E=await A.listTargets(),M=j2(Z.headers?.host,A.port),T=E.map((P)=>({...P,webSocketDebuggerUrl:`ws://${M}/devtools/page/${encodeURIComponent(P.id)}`,devtoolsFrontendUrl:C2(R,M,P.id)}));$.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),$.end(JSON.stringify({port:A.port,targets:T}))}catch(A){$.writeHead(500,{"Content-Type":"application/json"}),$.end(JSON.stringify({error:A instanceof Error?A.message:"Failed to start inspect-webkit"}))}})();return}if(W===Q+"/devtools/release"&&Z.method==="POST"){let _="";Z.on("data",(H)=>_+=H),Z.on("end",async()=>{try{let H=_?JSON.parse(_):{};(await eJ()).releaseHighlight?.(H.targetId),$.writeHead(200,{"Content-Type":"application/json"}),$.end("{}")}catch(H){$.writeHead(500,{"Content-Type":"application/json"}),$.end(JSON.stringify({error:H instanceof Error?H.message:"Failed to release"}))}});return}if(W===Q+"/devtools/highlight"&&Z.method==="POST"){let _="";Z.on("data",(H)=>_+=H),Z.on("end",async()=>{try{let{targetId:H,on:A}=JSON.parse(_||"{}");if(!H){$.writeHead(400,{"Content-Type":"application/json"}),$.end(JSON.stringify({error:"Missing targetId"}));return}let E=await eJ();if(!E.highlightTarget){$.writeHead(501,{"Content-Type":"application/json"}),$.end(JSON.stringify({error:"highlightTarget not supported by inspect-webkit"}));return}await E.highlightTarget(H,!!A),$.writeHead(200,{"Content-Type":"application/json"}),$.end("{}")}catch(H){$.writeHead(500,{"Content-Type":"application/json"}),$.end(JSON.stringify({error:H instanceof Error?H.message:"Failed to highlight target"}))}});return}if(W===Q+"/api"){let _=ZJ(),H=WJ(_,z);$.writeHead(200,{"Content-Type":"application/json","Cache-Control":"no-store"}),$.end(JSON.stringify(H||null));return}if(W===Q+"/ax"){let _=ZJ(),H=WJ(_,z);if(!H){$.writeHead(404),$.end("No serve-sim device");return}$.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),$.write(`:
40
40
 
41
- `);let E=D4.get(H.device,H.port).addClient(Q);$.on("close",E);return}if((W===Z+"/exec"||W===Z+"/exec/")&&$.method==="POST"){let _="";$.on("data",(H)=>{_+=typeof H==="string"?H:H.toString()}),$.on("end",()=>{let H="";try{H=JSON.parse(_).command??""}catch{}if(!H){Q.writeHead(400,{"Content-Type":"application/json"}),Q.end(JSON.stringify({stdout:"",stderr:"Missing command",exitCode:1}));return}W4(H,{maxBuffer:16777216},(A,E,M)=>{Q.writeHead(200,{"Content-Type":"application/json"}),Q.end(JSON.stringify({stdout:E.toString(),stderr:M.toString(),exitCode:A?A.code??1:0}))})});return}if(W===Z+"/logs"){let _=$J(),H=WJ(_,z);if(!H){Q.writeHead(404),Q.end("No serve-sim device");return}let A=H.device;Q.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),Q.write(`:
41
+ `);let E=D2.get(H.device,H.port).addClient($);Z.on("close",E);return}if((W===Q+"/exec"||W===Q+"/exec/")&&Z.method==="POST"){let _="";Z.on("data",(H)=>{_+=typeof H==="string"?H:H.toString()}),Z.on("end",()=>{let H="";try{H=JSON.parse(_).command??""}catch{}if(!H){$.writeHead(400,{"Content-Type":"application/json"}),$.end(JSON.stringify({stdout:"",stderr:"Missing command",exitCode:1}));return}W2(H,{maxBuffer:16777216},(A,E,M)=>{$.writeHead(200,{"Content-Type":"application/json"}),$.end(JSON.stringify({stdout:E.toString(),stderr:M.toString(),exitCode:A?A.code??1:0}))})});return}if(W===Q+"/logs"){let _=ZJ(),H=WJ(_,z);if(!H){$.writeHead(404),$.end("No serve-sim device");return}let A=H.device;$.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),$.write(`:
42
42
 
43
- `);let E=sJ("xcrun",["simctl","spawn",A,"log","stream","--style","ndjson","--level","info"],{stdio:["ignore","pipe","ignore"]}),M="";E.stdout.on("data",(B)=>{M+=B.toString();let P;while((P=M.indexOf(`
44
- `))!==-1){let C=M.slice(0,P).trim();if(M=M.slice(P+1),C)Q.write("data: "+C+`
43
+ `);let E=sJ("xcrun",["simctl","spawn",A,"log","stream","--style","ndjson","--level","info"],{stdio:["ignore","pipe","ignore"]}),M="";E.stdout.on("data",(T)=>{M+=T.toString();let P;while((P=M.indexOf(`
44
+ `))!==-1){let C=M.slice(0,P).trim();if(M=M.slice(P+1),C)$.write("data: "+C+`
45
45
 
46
- `)}}),E.on("close",()=>Q.end()),$.on("close",()=>E.kill());return}if(W===Z+"/appstate"){let _=$J(),H=WJ(_,z);if(!H){Q.writeHead(404),Q.end("No serve-sim device");return}let A=H.device;Q.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),Q.write(`:
46
+ `)}}),E.on("close",()=>$.end()),Z.on("close",()=>E.kill());return}if(W===Q+"/appstate"){let _=ZJ(),H=WJ(_,z);if(!H){$.writeHead(404),$.end("No serve-sim device");return}let A=H.device;$.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive","X-Accel-Buffering":"no"}),$.write(`:
47
47
 
48
- `);let E="";(async()=>{try{let j=new AbortController,U=setTimeout(()=>j.abort(),1500),O=await fetch(`http://127.0.0.1:${H.port}/foreground`,{signal:j.signal});if(clearTimeout(U),!O.ok)return;let N=await O.json();if(!N.bundleId||!oZ(N.bundleId))return;if(Q.writableEnded)return;E=N.bundleId;let K=await rZ(A,N.bundleId);if(Q.writableEnded)return;Q.write("data: "+JSON.stringify({bundleId:N.bundleId,pid:N.pid,isReactNative:K})+`
48
+ `);let E="";(async()=>{try{let j=new AbortController,N=setTimeout(()=>j.abort(),1500),U=await fetch(`http://127.0.0.1:${H.port}/foreground`,{signal:j.signal});if(clearTimeout(N),!U.ok)return;let O=await U.json();if(!O.bundleId||!oQ(O.bundleId))return;if($.writableEnded)return;E=O.bundleId;let K=await rQ(A,O.bundleId);if($.writableEnded)return;$.write("data: "+JSON.stringify({bundleId:O.bundleId,pid:O.pid,isReactNative:K})+`
49
49
 
50
- `)}catch{}})();let M=sJ("xcrun",["simctl","spawn",A,"log","stream","--style","ndjson","--level","info","--predicate",'process == "SpringBoard" AND eventMessage CONTAINS "Setting process visibility to: Foreground"'],{stdio:["ignore","pipe","ignore"]}),B=!1,P=async(j,U)=>{if(!oZ(j))return;if(j===E)return;E=j;let O=await rZ(A,j);if(!B)Q.write("data: "+JSON.stringify({bundleId:j,pid:U,isReactNative:O})+`
50
+ `)}catch{}})();let M=sJ("xcrun",["simctl","spawn",A,"log","stream","--style","ndjson","--level","info","--predicate",'process == "SpringBoard" AND eventMessage CONTAINS "Setting process visibility to: Foreground"'],{stdio:["ignore","pipe","ignore"]}),T=!1,P=async(j,N)=>{if(!oQ(j))return;if(j===E)return;E=j;let U=await rQ(A,j);if(!T)$.write("data: "+JSON.stringify({bundleId:j,pid:N,isReactNative:U})+`
51
51
 
52
- `)},C="";M.stdout.on("data",(j)=>{C+=j.toString();let U;while((U=C.indexOf(`
53
- `))!==-1){let O=C.slice(0,U).trim();if(C=C.slice(U+1),!O)continue;let N;try{N=JSON.parse(O).eventMessage??""}catch{continue}let K=P4(N);if(!K)continue;P(K.bundleId,K.pid)}}),M.on("close",()=>Q.end()),$.on("close",()=>{B=!0,M.kill()});return}if(G)G()}}export{o4 as simMiddleware,WJ as selectServeSimState,P4 as parseForegroundAppLogMessage,a4 as matchInstalledAppByDisplayName};
52
+ `)},C="";M.stdout.on("data",(j)=>{C+=j.toString();let N;while((N=C.indexOf(`
53
+ `))!==-1){let U=C.slice(0,N).trim();if(C=C.slice(N+1),!U)continue;let O;try{O=JSON.parse(U).eventMessage??""}catch{continue}let K=P2(O);if(!K)continue;P(K.bundleId,K.pid)}}),M.on("close",()=>$.end()),Z.on("close",()=>{T=!0,M.kill()});return}if(G)G()}}export{o2 as simMiddleware,WJ as selectServeSimState,P2 as parseForegroundAppLogMessage,a2 as matchInstalledAppByDisplayName};