@lottiefiles/dotlottie-web 0.30.3 → 0.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var JC=Object.defineProperty;var fC=(r,C,i)=>C in r?JC(r,C,{enumerable:!0,configurable:!0,writable:!0,value:i}):r[C]=i;var Z=(r,C,i)=>fC(r,typeof C!="symbol"?C+"":C,i);var _I=class{requestAnimationFrame(C){return requestAnimationFrame(C)}cancelAnimationFrame(C){cancelAnimationFrame(C);}},$I=class{constructor(){Z(this,"_lastHandleId",0);Z(this,"_lastImmediate",null);}requestAnimationFrame(C){return this._lastHandleId>=Number.MAX_SAFE_INTEGER&&(this._lastHandleId=0),this._lastHandleId+=1,this._lastImmediate=setImmediate(()=>{C(Date.now());}),this._lastHandleId}cancelAnimationFrame(C){this._lastImmediate&&clearImmediate(this._lastImmediate);}},VI=class{constructor(){Z(this,"_strategy");this._strategy=typeof requestAnimationFrame=="function"?new _I:new $I;}requestAnimationFrame(C){return this._strategy.requestAnimationFrame(C)}cancelAnimationFrame(C){this._strategy.cancelAnimationFrame(C);}};var M=typeof window<"u"&&typeof window.document<"u";var wI=new Uint8Array([80,75,3,4]),Eg=["v","ip","op","layers","fr","w","h"],qI="0.30.3",Ig="@lottiefiles/dotlottie-web";var TC=(()=>{var r=typeof document<"u"?document.currentScript?.src:void 0;return function(C={}){var i=C,d,B,f=new Promise((I,g)=>{d=I,B=g;}),P=Object.assign({},i),T="./this.program",v="";typeof document<"u"&&document.currentScript&&(v=document.currentScript.src),r&&(v=r),v.startsWith("blob:")?v="":v=v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1);var $=i.print||console.log.bind(console),q=i.printErr||console.error.bind(console);Object.assign(i,P),P=null,i.thisProgram&&(T=i.thisProgram);var iI;i.wasmBinary&&(iI=i.wasmBinary);var ZI,og=!1,Q,y,II,eI,w,K,ng,ag;function lg(){var I=ZI.buffer;i.HEAP8=Q=new Int8Array(I),i.HEAP16=II=new Int16Array(I),i.HEAPU8=y=new Uint8Array(I),i.HEAPU16=eI=new Uint16Array(I),i.HEAP32=w=new Int32Array(I),i.HEAPU32=K=new Uint32Array(I),i.HEAPF32=ng=new Float32Array(I),i.HEAPF64=ag=new Float64Array(I);}var sg=[],dg=[],cg=[];function Og(){var I=i.preRun.shift();sg.unshift(I);}var j=0,tI=null;function bI(I){throw i.onAbort?.(I),I="Aborted("+I+")",q(I),og=!0,I=new WebAssembly.RuntimeError(I+". Build with -sASSERTIONS for more info."),B(I),I}var Gg=I=>I.startsWith("data:application/octet-stream;base64,"),gI;if(gI="DotLottiePlayer.wasm",!Gg(gI)){var rg=gI;gI=i.locateFile?i.locateFile(rg,v):v+rg;}function hg(I){if(I==gI&&iI)return new Uint8Array(iI);throw "both async and sync fetching of the wasm failed"}function _g(I){return iI||typeof fetch!="function"?Promise.resolve().then(()=>hg(I)):fetch(I,{credentials:"same-origin"}).then(g=>{if(!g.ok)throw `failed to load wasm binary file at '${I}'`;return g.arrayBuffer()}).catch(()=>hg(I))}function Zg(I,g,A){return _g(I).then(e=>WebAssembly.instantiate(e,g)).then(A,e=>{q(`failed to asynchronously prepare wasm: ${e}`),bI(e);})}function $g(I,g){var A=gI;return iI||typeof WebAssembly.instantiateStreaming!="function"||Gg(A)||typeof fetch!="function"?Zg(A,I,g):fetch(A,{credentials:"same-origin"}).then(e=>WebAssembly.instantiateStreaming(e,I).then(g,function(t){return q(`wasm streaming compile failed: ${t}`),q("falling back to ArrayBuffer instantiation"),Zg(A,I,g)}))}var HI=I=>{for(;0<I.length;)I.shift()(i);},bg=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,x=(I,g,A)=>{var e=g+A;for(A=g;I[A]&&!(A>=e);)++A;if(16<A-g&&I.buffer&&bg)return bg.decode(I.subarray(g,A));for(e="";g<A;){var t=I[g++];if(t&128){var o=I[g++]&63;if((t&224)==192)e+=String.fromCharCode((t&31)<<6|o);else {var l=I[g++]&63;t=(t&240)==224?(t&15)<<12|o<<6|l:(t&7)<<18|o<<12|l<<6|I[g++]&63,65536>t?e+=String.fromCharCode(t):(t-=65536,e+=String.fromCharCode(55296|t>>10,56320|t&1023));}}else e+=String.fromCharCode(t);}return e};class qg{constructor(g){this.ya=g-24;}}var ug=0,mg=I=>{for(var g=0,A=0;A<I.length;++A){var e=I.charCodeAt(A);127>=e?g++:2047>=e?g+=2:55296<=e&&57343>=e?(g+=4,++A):g+=3;}return g},Bg=(I,g,A,e)=>{if(0<e){e=A+e-1;for(var t=0;t<I.length;++t){var o=I.charCodeAt(t);if(55296<=o&&57343>=o){var l=I.charCodeAt(++t);o=65536+((o&1023)<<10)|l&1023;}if(127>=o){if(A>=e)break;g[A++]=o;}else {if(2047>=o){if(A+1>=e)break;g[A++]=192|o>>6;}else {if(65535>=o){if(A+2>=e)break;g[A++]=224|o>>12;}else {if(A+3>=e)break;g[A++]=240|o>>18,g[A++]=128|o>>12&63;}g[A++]=128|o>>6&63;}g[A++]=128|o&63;}}g[A]=0;}},uI={},vI=I=>{for(;I.length;){var g=I.pop();I.pop()(g);}};function oI(I){return this.fromWireType(K[I>>2])}var CI={},O={},mI={},nI,U=(I,g,A)=>{function e(a){if(a=A(a),a.length!==I.length)throw new nI("Mismatched type converter count");for(var c=0;c<I.length;++c)k(I[c],a[c]);}I.forEach(function(a){mI[a]=g;});var t=Array(g.length),o=[],l=0;g.forEach((a,c)=>{O.hasOwnProperty(a)?t[c]=O[a]:(o.push(a),CI.hasOwnProperty(a)||(CI[a]=[]),CI[a].push(()=>{t[c]=O[a],++l,l===o.length&&e(t);}));}),o.length===0&&e(t);},pg,V=I=>{for(var g="";y[I];)g+=pg[y[I++]];return g},u;function gC(I,g,A={}){var e=g.name;if(!I)throw new u(`type "${e}" must have a positive integer typeid pointer`);if(O.hasOwnProperty(I)){if(A.ib)return;throw new u(`Cannot register type '${e}' twice`)}O[I]=g,delete mI[I],CI.hasOwnProperty(I)&&(g=CI[I],delete CI[I],g.forEach(t=>t()));}function k(I,g,A={}){if(!("argPackAdvance"in g))throw new TypeError("registerType registeredInstance requires argPackAdvance");return gC(I,g,A)}var kI=I=>{throw new u(I.ma.za.xa.name+" instance already deleted")},FI=!1,Wg=()=>{},Kg=(I,g,A)=>g===A?I:A.Ca===void 0?null:(I=Kg(I,g,A.Ca),I===null?null:A.ab(I)),yg={},aI=[],LI=()=>{for(;aI.length;){var I=aI.pop();I.ma.Ka=!1,I.delete();}},lI,sI={},CC=(I,g)=>{if(g===void 0)throw new u("ptr should not be undefined");for(;I.Ca;)g=I.Na(g),I=I.Ca;return sI[g]},BI=(I,g)=>{if(!g.za||!g.ya)throw new nI("makeClassHandle requires ptr and ptrType");if(!!g.Da!=!!g.Aa)throw new nI("Both smartPtrType and smartPtr must be specified");return g.count={value:1},dI(Object.create(I,{ma:{value:g,writable:!0}}))},dI=I=>typeof FinalizationRegistry>"u"?(dI=g=>g,I):(FI=new FinalizationRegistry(g=>{g=g.ma,--g.count.value,g.count.value===0&&(g.Aa?g.Da.Fa(g.Aa):g.za.xa.Fa(g.ya));}),dI=g=>{var A=g.ma;return A.Aa&&FI.register(g,{ma:A},g),g},Wg=g=>{FI.unregister(g);},dI(I));function pI(){}var cI=(I,g)=>Object.defineProperty(g,"name",{value:I}),Yg=(I,g,A)=>{if(I[g].Ba===void 0){var e=I[g];I[g]=function(...t){if(!I[g].Ba.hasOwnProperty(t.length))throw new u(`Function '${A}' called with an invalid number of arguments (${t.length}) - expects one of (${I[g].Ba})!`);return I[g].Ba[t.length].apply(this,t)},I[g].Ba=[],I[g].Ba[e.Oa]=e;}},NI=(I,g,A)=>{if(i.hasOwnProperty(I)){if(A===void 0||i[I].Ba!==void 0&&i[I].Ba[A]!==void 0)throw new u(`Cannot register public name '${I}' twice`);if(Yg(i,I,I),i.hasOwnProperty(A))throw new u(`Cannot register multiple overloads of a function with the same number of arguments (${A})!`);i[I].Ba[A]=g;}else i[I]=g,A!==void 0&&(i[I].vb=A);},AC=I=>{if(I===void 0)return "_unknown";I=I.replace(/[^a-zA-Z0-9_]/g,"$");var g=I.charCodeAt(0);return 48<=g&&57>=g?`_${I}`:I};function iC(I,g,A,e,t,o,l,a){this.name=I,this.constructor=g,this.La=A,this.Fa=e,this.Ca=t,this.cb=o,this.Na=l,this.ab=a,this.kb=[];}var JI=(I,g,A)=>{for(;g!==A;){if(!g.Na)throw new u(`Expected null or instance of ${A.name}, got an instance of ${g.name}`);I=g.Na(I),g=g.Ca;}return I};function eC(I,g){if(g===null){if(this.Ta)throw new u(`null is not a valid ${this.name}`);return 0}if(!g.ma)throw new u(`Cannot pass "${UI(g)}" as a ${this.name}`);if(!g.ma.ya)throw new u(`Cannot pass deleted object as a pointer of type ${this.name}`);return JI(g.ma.ya,g.ma.za.xa,this.xa)}function tC(I,g){if(g===null){if(this.Ta)throw new u(`null is not a valid ${this.name}`);if(this.Qa){var A=this.Ua();return I!==null&&I.push(this.Fa,A),A}return 0}if(!g||!g.ma)throw new u(`Cannot pass "${UI(g)}" as a ${this.name}`);if(!g.ma.ya)throw new u(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.Pa&&g.ma.za.Pa)throw new u(`Cannot convert argument of type ${g.ma.Da?g.ma.Da.name:g.ma.za.name} to parameter type ${this.name}`);if(A=JI(g.ma.ya,g.ma.za.xa,this.xa),this.Qa){if(g.ma.Aa===void 0)throw new u("Passing raw pointer to smart pointer is illegal");switch(this.pb){case 0:if(g.ma.Da===this)A=g.ma.Aa;else throw new u(`Cannot convert argument of type ${g.ma.Da?g.ma.Da.name:g.ma.za.name} to parameter type ${this.name}`);break;case 1:A=g.ma.Aa;break;case 2:if(g.ma.Da===this)A=g.ma.Aa;else {var e=g.clone();A=this.lb(A,KI(()=>e.delete())),I!==null&&I.push(this.Fa,A);}break;default:throw new u("Unsupporting sharing policy")}}return A}function oC(I,g){if(g===null){if(this.Ta)throw new u(`null is not a valid ${this.name}`);return 0}if(!g.ma)throw new u(`Cannot pass "${UI(g)}" as a ${this.name}`);if(!g.ma.ya)throw new u(`Cannot pass deleted object as a pointer of type ${this.name}`);if(g.ma.za.Pa)throw new u(`Cannot convert argument of type ${g.ma.za.name} to parameter type ${this.name}`);return JI(g.ma.ya,g.ma.za.xa,this.xa)}function GI(I,g,A,e,t,o,l,a,c,s,G){this.name=I,this.xa=g,this.Ta=A,this.Pa=e,this.Qa=t,this.jb=o,this.pb=l,this.Za=a,this.Ua=c,this.lb=s,this.Fa=G,t||g.Ca!==void 0?this.toWireType=tC:(this.toWireType=e?eC:oC,this.Ea=null);}var Sg=(I,g,A)=>{if(!i.hasOwnProperty(I))throw new nI("Replacing nonexistent public symbol");i[I].Ba!==void 0&&A!==void 0?i[I].Ba[A]=g:(i[I]=g,i[I].Oa=A);},H,nC=(I,g,A=[])=>(I.includes("j")?(I=I.replace(/p/g,"i"),g=(0, i["dynCall_"+I])(g,...A)):g=H.get(g)(...A),g),aC=(I,g)=>(...A)=>nC(I,g,A),R=(I,g)=>{I=V(I);var A=I.includes("j")?aC(I,g):H.get(g);if(typeof A!="function")throw new u(`unknown function pointer with signature ${I}: ${g}`);return A},Vg,wg=I=>{I=Jg(I);var g=V(I);return E(I),g},WI=(I,g)=>{function A(o){t[o]||O[o]||(mI[o]?mI[o].forEach(A):(e.push(o),t[o]=!0));}var e=[],t={};throw g.forEach(A),new Vg(`${I}: `+e.map(wg).join([", "]))},fI=(I,g)=>{for(var A=[],e=0;e<I;e++)A.push(K[g+4*e>>2]);return A};function lC(I){for(var g=1;g<I.length;++g)if(I[g]!==null&&I[g].Ea===void 0)return !0;return !1}function TI(I,g,A,e,t){var o=g.length;if(2>o)throw new u("argTypes array size mismatch! Must at least get return value and 'this' types!");var l=g[1]!==null&&A!==null,a=lC(g),c=g[0].name!=="void",s=o-2,G=Array(s),m=[],p=[];return cI(I,function(...n){if(n.length!==s)throw new u(`function ${I} called with ${n.length} arguments, expected ${s}`);if(p.length=0,m.length=l?2:1,m[0]=t,l){var h=g[1].toWireType(p,this);m[1]=h;}for(var b=0;b<s;++b)G[b]=g[b+2].toWireType(p,n[b]),m.push(G[b]);if(n=e(...m),a)vI(p);else for(b=l?1:2;b<g.length;b++){var S=b===1?h:G[b-2];g[b].Ea!==null&&g[b].Ea(S);}return h=c?g[0].fromWireType(n):void 0,h})}var Rg=I=>{I=I.trim();let g=I.indexOf("(");return g!==-1?I.substr(0,g):I},DI=[],D=[],EI=I=>{9<I&&--D[I+1]===0&&(D[I]=void 0,DI.push(I));},MI=I=>{if(!I)throw new u("Cannot use deleted val. handle = "+I);return D[I]},KI=I=>{switch(I){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let g=DI.pop()||D.length;return D[g]=I,D[g+1]=1,g}},Xg={name:"emscripten::val",fromWireType:I=>{var g=MI(I);return EI(I),g},toWireType:(I,g)=>KI(g),argPackAdvance:8,readValueFromPointer:oI,Ea:null},sC=(I,g,A)=>{switch(g){case 1:return A?function(e){return this.fromWireType(Q[e])}:function(e){return this.fromWireType(y[e])};case 2:return A?function(e){return this.fromWireType(II[e>>1])}:function(e){return this.fromWireType(eI[e>>1])};case 4:return A?function(e){return this.fromWireType(w[e>>2])}:function(e){return this.fromWireType(K[e>>2])};default:throw new TypeError(`invalid integer width (${g}): ${I}`)}},PI=(I,g)=>{var A=O[I];if(A===void 0)throw I=`${g} has unknown type ${wg(I)}`,new u(I);return A},UI=I=>{if(I===null)return "null";var g=typeof I;return g==="object"||g==="array"||g==="function"?I.toString():""+I},dC=(I,g)=>{switch(g){case 4:return function(A){return this.fromWireType(ng[A>>2])};case 8:return function(A){return this.fromWireType(ag[A>>3])};default:throw new TypeError(`invalid float width (${g}): ${I}`)}},cC=(I,g,A)=>{switch(g){case 1:return A?e=>Q[e]:e=>y[e];case 2:return A?e=>II[e>>1]:e=>eI[e>>1];case 4:return A?e=>w[e>>2]:e=>K[e>>2];default:throw new TypeError(`invalid integer width (${g}): ${I}`)}},Hg=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,GC=(I,g)=>{for(var A=I>>1,e=A+g/2;!(A>=e)&&eI[A];)++A;if(A<<=1,32<A-I&&Hg)return Hg.decode(y.subarray(I,A));for(A="",e=0;!(e>=g/2);++e){var t=II[I+2*e>>1];if(t==0)break;A+=String.fromCharCode(t);}return A},rC=(I,g,A)=>{if(A??(A=2147483647),2>A)return 0;A-=2;var e=g;A=A<2*I.length?A/2:I.length;for(var t=0;t<A;++t)II[g>>1]=I.charCodeAt(t),g+=2;return II[g>>1]=0,g-e},hC=I=>2*I.length,ZC=(I,g)=>{for(var A=0,e="";!(A>=g/4);){var t=w[I+4*A>>2];if(t==0)break;++A,65536<=t?(t-=65536,e+=String.fromCharCode(55296|t>>10,56320|t&1023)):e+=String.fromCharCode(t);}return e},bC=(I,g,A)=>{if(A??(A=2147483647),4>A)return 0;var e=g;A=e+A-4;for(var t=0;t<I.length;++t){var o=I.charCodeAt(t);if(55296<=o&&57343>=o){var l=I.charCodeAt(++t);o=65536+((o&1023)<<10)|l&1023;}if(w[g>>2]=o,g+=4,g+4>A)break}return w[g>>2]=0,g-e},uC=I=>{for(var g=0,A=0;A<I.length;++A){var e=I.charCodeAt(A);55296<=e&&57343>=e&&++A,g+=4;}return g},zI=[],mC=I=>{var g=zI.length;return zI.push(I),g},BC=(I,g)=>{for(var A=Array(I),e=0;e<I;++e)A[e]=PI(K[g+4*e>>2],"parameter "+e);return A},pC=Reflect.construct,QI={},vg=()=>{if(!jI){var I={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:T||"./this.program"},g;for(g in QI)QI[g]===void 0?delete I[g]:I[g]=QI[g];var A=[];for(g in I)A.push(`${g}=${I[g]}`);jI=A;}return jI},jI,WC=[null,[],[]],KC=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return I=>crypto.getRandomValues(I);bI("initRandomDevice");},kg=I=>(kg=KC())(I),yI=I=>I%4===0&&(I%100!==0||I%400===0),Fg=[31,29,31,30,31,30,31,31,30,31,30,31],Lg=[31,28,31,30,31,30,31,31,30,31,30,31];function yC(I){var g=Array(mg(I)+1);return Bg(I,g,0,g.length),g}var YC=(I,g,A,e)=>{function t(n,h,b){for(n=typeof n=="number"?n.toString():n||"";n.length<h;)n=b[0]+n;return n}function o(n,h){return t(n,h,"0")}function l(n,h){function b(z){return 0>z?-1:0<z?1:0}var S;return (S=b(n.getFullYear()-h.getFullYear()))===0&&(S=b(n.getMonth()-h.getMonth()))===0&&(S=b(n.getDate()-h.getDate())),S}function a(n){switch(n.getDay()){case 0:return new Date(n.getFullYear()-1,11,29);case 1:return n;case 2:return new Date(n.getFullYear(),0,3);case 3:return new Date(n.getFullYear(),0,2);case 4:return new Date(n.getFullYear(),0,1);case 5:return new Date(n.getFullYear()-1,11,31);case 6:return new Date(n.getFullYear()-1,11,30)}}function c(n){var h=n.Ia;for(n=new Date(new Date(n.Ja+1900,0,1).getTime());0<h;){var b=n.getMonth(),S=(yI(n.getFullYear())?Fg:Lg)[b];if(h>S-n.getDate())h-=S-n.getDate()+1,n.setDate(1),11>b?n.setMonth(b+1):(n.setMonth(0),n.setFullYear(n.getFullYear()+1));else {n.setDate(n.getDate()+h);break}}return b=new Date(n.getFullYear()+1,0,4),h=a(new Date(n.getFullYear(),0,4)),b=a(b),0>=l(h,n)?0>=l(b,n)?n.getFullYear()+1:n.getFullYear():n.getFullYear()-1}var s=K[e+40>>2];e={sb:w[e>>2],rb:w[e+4>>2],Ra:w[e+8>>2],Va:w[e+12>>2],Sa:w[e+16>>2],Ja:w[e+20>>2],Ga:w[e+24>>2],Ia:w[e+28>>2],wb:w[e+32>>2],qb:w[e+36>>2],tb:s&&s?x(y,s):""},A=A?x(y,A):"",s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var G in s)A=A.replace(new RegExp(G,"g"),s[G]);var m="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),p="January February March April May June July August September October November December".split(" ");s={"%a":n=>m[n.Ga].substring(0,3),"%A":n=>m[n.Ga],"%b":n=>p[n.Sa].substring(0,3),"%B":n=>p[n.Sa],"%C":n=>o((n.Ja+1900)/100|0,2),"%d":n=>o(n.Va,2),"%e":n=>t(n.Va,2," "),"%g":n=>c(n).toString().substring(2),"%G":c,"%H":n=>o(n.Ra,2),"%I":n=>(n=n.Ra,n==0?n=12:12<n&&(n-=12),o(n,2)),"%j":n=>{for(var h=0,b=0;b<=n.Sa-1;h+=(yI(n.Ja+1900)?Fg:Lg)[b++]);return o(n.Va+h,3)},"%m":n=>o(n.Sa+1,2),"%M":n=>o(n.rb,2),"%n":()=>`
4
- `,"%p":n=>0<=n.Ra&&12>n.Ra?"AM":"PM","%S":n=>o(n.sb,2),"%t":()=>" ","%u":n=>n.Ga||7,"%U":n=>o(Math.floor((n.Ia+7-n.Ga)/7),2),"%V":n=>{var h=Math.floor((n.Ia+7-(n.Ga+6)%7)/7);if(2>=(n.Ga+371-n.Ia-2)%7&&h++,h)h==53&&(b=(n.Ga+371-n.Ia)%7,b==4||b==3&&yI(n.Ja)||(h=1));else {h=52;var b=(n.Ga+7-n.Ia-1)%7;(b==4||b==5&&yI(n.Ja%400-1))&&h++;}return o(h,2)},"%w":n=>n.Ga,"%W":n=>o(Math.floor((n.Ia+7-(n.Ga+6)%7)/7),2),"%y":n=>(n.Ja+1900).toString().substring(2),"%Y":n=>n.Ja+1900,"%z":n=>{n=n.qb;var h=0<=n;return n=Math.abs(n)/60,(h?"+":"-")+("0000"+(n/60*100+n%60)).slice(-4)},"%Z":n=>n.tb,"%%":()=>"%"},A=A.replace(/%%/g,"\0\0");for(G in s)A.includes(G)&&(A=A.replace(new RegExp(G,"g"),s[G](e)));return A=A.replace(/\0\0/g,"%"),G=yC(A),G.length>g?0:(Q.set(G,I),G.length-1)};nI=i.InternalError=class extends Error{constructor(I){super(I),this.name="InternalError";}};for(var Ng=Array(256),YI=0;256>YI;++YI)Ng[YI]=String.fromCharCode(YI);pg=Ng,u=i.BindingError=class extends Error{constructor(I){super(I),this.name="BindingError";}},Object.assign(pI.prototype,{isAliasOf:function(I){if(!(this instanceof pI&&I instanceof pI))return !1;var g=this.ma.za.xa,A=this.ma.ya;I.ma=I.ma;var e=I.ma.za.xa;for(I=I.ma.ya;g.Ca;)A=g.Na(A),g=g.Ca;for(;e.Ca;)I=e.Na(I),e=e.Ca;return g===e&&A===I},clone:function(){if(this.ma.ya||kI(this),this.ma.Ma)return this.ma.count.value+=1,this;var I=dI,g=Object,A=g.create,e=Object.getPrototypeOf(this),t=this.ma;return I=I(A.call(g,e,{ma:{value:{count:t.count,Ka:t.Ka,Ma:t.Ma,ya:t.ya,za:t.za,Aa:t.Aa,Da:t.Da}}})),I.ma.count.value+=1,I.ma.Ka=!1,I},delete(){if(this.ma.ya||kI(this),this.ma.Ka&&!this.ma.Ma)throw new u("Object already scheduled for deletion");Wg(this);var I=this.ma;--I.count.value,I.count.value===0&&(I.Aa?I.Da.Fa(I.Aa):I.za.xa.Fa(I.ya)),this.ma.Ma||(this.ma.Aa=void 0,this.ma.ya=void 0);},isDeleted:function(){return !this.ma.ya},deleteLater:function(){if(this.ma.ya||kI(this),this.ma.Ka&&!this.ma.Ma)throw new u("Object already scheduled for deletion");return aI.push(this),aI.length===1&&lI&&lI(LI),this.ma.Ka=!0,this}}),i.getInheritedInstanceCount=()=>Object.keys(sI).length,i.getLiveInheritedInstances=()=>{var I=[],g;for(g in sI)sI.hasOwnProperty(g)&&I.push(sI[g]);return I},i.flushPendingDeletes=LI,i.setDelayFunction=I=>{lI=I,aI.length&&lI&&lI(LI);},Object.assign(GI.prototype,{eb(I){return this.Za&&(I=this.Za(I)),I},Xa(I){this.Fa?.(I);},argPackAdvance:8,readValueFromPointer:oI,fromWireType:function(I){function g(){return this.Qa?BI(this.xa.La,{za:this.jb,ya:A,Da:this,Aa:I}):BI(this.xa.La,{za:this,ya:I})}var A=this.eb(I);if(!A)return this.Xa(I),null;var e=CC(this.xa,A);if(e!==void 0)return e.ma.count.value===0?(e.ma.ya=A,e.ma.Aa=I,e.clone()):(e=e.clone(),this.Xa(I),e);if(e=this.xa.cb(A),e=yg[e],!e)return g.call(this);e=this.Pa?e.$a:e.pointerType;var t=Kg(A,this.xa,e.xa);return t===null?g.call(this):this.Qa?BI(e.xa.La,{za:e,ya:t,Da:this,Aa:I}):BI(e.xa.La,{za:e,ya:t})}}),Vg=i.UnboundTypeError=((I,g)=>{var A=cI(g,function(e){this.name=g,this.message=e,e=Error(e).stack,e!==void 0&&(this.stack=this.toString()+`
5
- `+e.replace(/^Error(:[^\n]*)?\n/,""));});return A.prototype=Object.create(I.prototype),A.prototype.constructor=A,A.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},A})(Error,"UnboundTypeError"),D.push(0,1,void 0,1,null,1,!0,1,!1,1),i.count_emval_handles=()=>D.length/2-5-DI.length;var SC={c:(I,g,A,e)=>{bI(`Assertion failed: ${I?x(y,I):""}, at: `+[g?g?x(y,g):"":"unknown filename",A,e?e?x(y,e):"":"unknown function"]);},m:(I,g,A)=>{var e=new qg(I);throw K[e.ya+16>>2]=0,K[e.ya+4>>2]=g,K[e.ya+8>>2]=A,ug=I,ug},B:function(){return 0},P:()=>{},M:()=>{},R:function(){return 0},N:()=>{},A:function(){},O:()=>{},v:I=>{var g=uI[I];delete uI[I];var A=g.Ua,e=g.Fa,t=g.Ya,o=t.map(l=>l.hb).concat(t.map(l=>l.nb));U([I],o,l=>{var a={};return t.forEach((c,s)=>{var G=l[s],m=c.fb,p=c.gb,n=l[s+t.length],h=c.mb,b=c.ob;a[c.bb]={read:S=>G.fromWireType(m(p,S)),write:(S,z)=>{var X=[];h(b,S,n.toWireType(X,z)),vI(X);}};}),[{name:g.name,fromWireType:c=>{var s={},G;for(G in a)s[G]=a[G].read(c);return e(c),s},toWireType:(c,s)=>{for(var G in a)if(!(G in s))throw new TypeError(`Missing field: "${G}"`);var m=A();for(G in a)a[G].write(m,s[G]);return c!==null&&c.push(e,m),m},argPackAdvance:8,readValueFromPointer:oI,Ea:e}]});},I:()=>{},Y:(I,g,A,e)=>{g=V(g),k(I,{name:g,fromWireType:function(t){return !!t},toWireType:function(t,o){return o?A:e},argPackAdvance:8,readValueFromPointer:function(t){return this.fromWireType(y[t])},Ea:null});},r:(I,g,A,e,t,o,l,a,c,s,G,m,p)=>{G=V(G),o=R(t,o),a&&(a=R(l,a)),s&&(s=R(c,s)),p=R(m,p);var n=AC(G);NI(n,function(){WI(`Cannot construct ${G} due to unbound types`,[e]);}),U([I,g,A],e?[e]:[],h=>{if(h=h[0],e)var b=h.xa,S=b.La;else S=pI.prototype;h=cI(G,function(...OI){if(Object.getPrototypeOf(this)!==z)throw new u("Use 'new' to construct "+G);if(X.Ha===void 0)throw new u(G+" has no accessible constructor");var Dg=X.Ha[OI.length];if(Dg===void 0)throw new u(`Tried to invoke ctor of ${G} with invalid number of parameters (${OI.length}) - expected (${Object.keys(X.Ha).toString()}) parameters instead!`);return Dg.apply(this,OI)});var z=Object.create(S,{constructor:{value:h}});h.prototype=z;var X=new iC(G,h,z,p,b,o,a,s);if(X.Ca){var rI;(rI=X.Ca).Wa??(rI.Wa=[]),X.Ca.Wa.push(X);}return b=new GI(G,X,!0,!1,!1),rI=new GI(G+"*",X,!1,!1,!1),S=new GI(G+" const*",X,!1,!0,!1),yg[I]={pointerType:rI,$a:S},Sg(n,h),[b,rI,S]});},q:(I,g,A,e,t,o)=>{var l=fI(g,A);t=R(e,t),U([],[I],a=>{a=a[0];var c=`constructor ${a.name}`;if(a.xa.Ha===void 0&&(a.xa.Ha=[]),a.xa.Ha[g-1]!==void 0)throw new u(`Cannot register multiple constructors with identical number of parameters (${g-1}) for class '${a.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return a.xa.Ha[g-1]=()=>{WI(`Cannot construct ${a.name} due to unbound types`,l);},U([],l,s=>(s.splice(1,0,null),a.xa.Ha[g-1]=TI(c,s,null,t,o),[])),[]});},f:(I,g,A,e,t,o,l,a)=>{var c=fI(A,e);g=V(g),g=Rg(g),o=R(t,o),U([],[I],s=>{function G(){WI(`Cannot call ${m} due to unbound types`,c);}s=s[0];var m=`${s.name}.${g}`;g.startsWith("@@")&&(g=Symbol[g.substring(2)]),a&&s.xa.kb.push(g);var p=s.xa.La,n=p[g];return n===void 0||n.Ba===void 0&&n.className!==s.name&&n.Oa===A-2?(G.Oa=A-2,G.className=s.name,p[g]=G):(Yg(p,g,m),p[g].Ba[A-2]=G),U([],c,h=>(h=TI(m,h,s,o,l),p[g].Ba===void 0?(h.Oa=A-2,p[g]=h):p[g].Ba[A-2]=h,[])),[]});},X:I=>k(I,Xg),x:(I,g,A,e)=>{function t(){}g=V(g),t.values={},k(I,{name:g,constructor:t,fromWireType:function(o){return this.constructor.values[o]},toWireType:(o,l)=>l.value,argPackAdvance:8,readValueFromPointer:sC(g,A,e),Ea:null}),NI(g,t);},k:(I,g,A)=>{var e=PI(I,"enum");g=V(g),I=e.constructor,e=Object.create(e.constructor.prototype,{value:{value:A},constructor:{value:cI(`${e.name}_${g}`,function(){})}}),I.values[A]=e,I[g]=e;},C:(I,g,A)=>{g=V(g),k(I,{name:g,fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:8,readValueFromPointer:dC(g,A),Ea:null});},E:(I,g,A,e,t,o)=>{var l=fI(g,A);I=V(I),I=Rg(I),t=R(e,t),NI(I,function(){WI(`Cannot call ${I} due to unbound types`,l);},g-1),U([],l,a=>(Sg(I,TI(I,[a[0],null].concat(a.slice(1)),null,t,o),g-1),[]));},l:(I,g,A,e,t)=>{if(g=V(g),t===-1&&(t=4294967295),t=a=>a,e===0){var o=32-8*A;t=a=>a<<o>>>o;}var l=g.includes("unsigned")?function(a,c){return c>>>0}:function(a,c){return c};k(I,{name:g,fromWireType:t,toWireType:l,argPackAdvance:8,readValueFromPointer:cC(g,A,e!==0),Ea:null});},g:(I,g,A)=>{function e(o){return new t(Q.buffer,K[o+4>>2],K[o>>2])}var t=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][g];A=V(A),k(I,{name:A,fromWireType:e,argPackAdvance:8,readValueFromPointer:e},{ib:!0});},w:I=>{k(I,Xg);},ca:(I,g,A,e,t,o,l,a,c,s,G,m)=>{A=V(A),o=R(t,o),a=R(l,a),s=R(c,s),m=R(G,m),U([I],[g],p=>(p=p[0],[new GI(A,p.xa,!1,!1,!0,p,e,o,a,s,m)]));},D:(I,g)=>{g=V(g);var A=g==="std::string";k(I,{name:g,fromWireType:function(e){var t=K[e>>2],o=e+4;if(A)for(var l=o,a=0;a<=t;++a){var c=o+a;if(a==t||y[c]==0){if(l=l?x(y,l,c-l):"",s===void 0)var s=l;else s+="\0",s+=l;l=c+1;}}else {for(s=Array(t),a=0;a<t;++a)s[a]=String.fromCharCode(y[o+a]);s=s.join("");}return E(e),s},toWireType:function(e,t){t instanceof ArrayBuffer&&(t=new Uint8Array(t));var o=typeof t=="string";if(!(o||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array))throw new u("Cannot pass non-string to std::string");var l=A&&o?mg(t):t.length,a=xI(4+l+1),c=a+4;if(K[a>>2]=l,A&&o)Bg(t,y,c,l+1);else if(o)for(o=0;o<l;++o){var s=t.charCodeAt(o);if(255<s)throw E(c),new u("String has UTF-16 code units that do not fit in 8 bits");y[c+o]=s;}else for(o=0;o<l;++o)y[c+o]=t[o];return e!==null&&e.push(E,a),a},argPackAdvance:8,readValueFromPointer:oI,Ea(e){E(e);}});},u:(I,g,A)=>{if(A=V(A),g===2)var e=GC,t=rC,o=hC,l=a=>eI[a>>1];else g===4&&(e=ZC,t=bC,o=uC,l=a=>K[a>>2]);k(I,{name:A,fromWireType:a=>{for(var c=K[a>>2],s,G=a+4,m=0;m<=c;++m){var p=a+4+m*g;(m==c||l(p)==0)&&(G=e(G,p-G),s===void 0?s=G:(s+="\0",s+=G),G=p+g);}return E(a),s},toWireType:(a,c)=>{if(typeof c!="string")throw new u(`Cannot pass non-string to C++ string type ${A}`);var s=o(c),G=xI(4+s+g);return K[G>>2]=s/g,t(c,G+4,s+g),a!==null&&a.push(E,G),G},argPackAdvance:8,readValueFromPointer:oI,Ea(a){E(a);}});},s:(I,g,A,e,t,o)=>{uI[I]={name:V(g),Ua:R(A,e),Fa:R(t,o),Ya:[]};},j:(I,g,A,e,t,o,l,a,c,s)=>{uI[I].Ya.push({bb:V(g),hb:A,fb:R(e,t),gb:o,nb:l,mb:R(a,c),ob:s});},Z:(I,g)=>{g=V(g),k(I,{ub:!0,name:g,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}});},J:()=>{throw 1/0},aa:(I,g,A,e)=>(I=zI[I],g=MI(g),I(null,g,A,e)),F:EI,$:(I,g,A)=>{var e=BC(I,g),t=e.shift();I--;var o=Array(I);return g=`methodCaller<(${e.map(l=>l.name).join(", ")}) => ${t.name}>`,mC(cI(g,(l,a,c,s)=>{for(var G=0,m=0;m<I;++m)o[m]=e[m].readValueFromPointer(s+G),G+=e[m].argPackAdvance;return a=A===1?pC(a,o):a.apply(l,o),l=[],a=t.toWireType(l,a),l.length&&(K[c>>2]=KI(l)),a}))},ba:I=>{9<I&&(D[I+1]+=1);},_:I=>{var g=MI(I);vI(g),EI(I);},o:(I,g)=>(I=PI(I,"_emval_take_value"),I=I.readValueFromPointer(g),KI(I)),W:()=>{bI("");},V:()=>performance.now(),L:I=>{var g=y.length;if(I>>>=0,2147483648<I)return !1;for(var A=1;4>=A;A*=2){var e=g*(1+.2/A);e=Math.min(e,I+100663296);var t=Math;e=Math.max(I,e);I:{t=(t.min.call(t,2147483648,e+(65536-e%65536)%65536)-ZI.buffer.byteLength+65535)/65536;try{ZI.grow(t),lg();var o=1;break I}catch{}o=void 0;}if(o)return !0}return !1},S:(I,g)=>{var A=0;return vg().forEach((e,t)=>{var o=g+A;for(t=K[I+4*t>>2]=o,o=0;o<e.length;++o)Q[t++]=e.charCodeAt(o);Q[t]=0,A+=e.length+1;}),0},T:(I,g)=>{var A=vg();K[I>>2]=A.length;var e=0;return A.forEach(t=>e+=t.length+1),K[g>>2]=e,0},t:()=>52,z:()=>52,H:function(){return 70},Q:(I,g,A,e)=>{for(var t=0,o=0;o<A;o++){var l=K[g>>2],a=K[g+4>>2];g+=8;for(var c=0;c<a;c++){var s=y[l+c],G=WC[I];s===0||s===10?((I===1?$:q)(x(G,0)),G.length=0):G.push(s);}t+=a;}return K[e>>2]=t,0},U:(I,g)=>(kg(y.subarray(I,I+g)),0),i:HC,d:XC,e:RC,p:vC,y:LC,b:VC,a:wC,h:FC,n:kC,G:NC,K:(I,g,A,e)=>YC(I,g,A,e)},Y=function(){function I(A){return Y=A.exports,ZI=Y.da,lg(),H=Y.ha,dg.unshift(Y.ea),j--,i.monitorRunDependencies?.(j),j==0&&(tI&&(A=tI,tI=null,A())),Y}var g={a:SC};if(j++,i.monitorRunDependencies?.(j),i.instantiateWasm)try{return i.instantiateWasm(g,I)}catch(A){q(`Module.instantiateWasm callback failed with error: ${A}`),B(A);}return $g(g,function(A){I(A.instance);}).catch(B),{}}(),xI=I=>(xI=Y.fa)(I),Jg=I=>(Jg=Y.ga)(I),E=I=>(E=Y.ia)(I),F=(I,g)=>(F=Y.ja)(I,g),L=I=>(L=Y.ka)(I),N=()=>(N=Y.la)();i.dynCall_iijj=(I,g,A,e,t,o)=>(i.dynCall_iijj=Y.na)(I,g,A,e,t,o),i.dynCall_vijj=(I,g,A,e,t,o)=>(i.dynCall_vijj=Y.oa)(I,g,A,e,t,o),i.dynCall_jiii=(I,g,A,e)=>(i.dynCall_jiii=Y.pa)(I,g,A,e),i.dynCall_jii=(I,g,A)=>(i.dynCall_jii=Y.qa)(I,g,A);var fg=i.dynCall_viiij=(I,g,A,e,t,o)=>(fg=i.dynCall_viiij=Y.ra)(I,g,A,e,t,o);i.dynCall_jiji=(I,g,A,e,t)=>(i.dynCall_jiji=Y.sa)(I,g,A,e,t),i.dynCall_viijii=(I,g,A,e,t,o,l)=>(i.dynCall_viijii=Y.ta)(I,g,A,e,t,o,l),i.dynCall_iiiiij=(I,g,A,e,t,o,l)=>(i.dynCall_iiiiij=Y.ua)(I,g,A,e,t,o,l),i.dynCall_iiiiijj=(I,g,A,e,t,o,l,a,c)=>(i.dynCall_iiiiijj=Y.va)(I,g,A,e,t,o,l,a,c),i.dynCall_iiiiiijj=(I,g,A,e,t,o,l,a,c,s)=>(i.dynCall_iiiiiijj=Y.wa)(I,g,A,e,t,o,l,a,c,s);function VC(I,g){var A=N();try{H.get(I)(g);}catch(e){if(L(A),e!==e+0)throw e;F(1,0);}}function wC(I,g,A){var e=N();try{H.get(I)(g,A);}catch(t){if(L(e),t!==t+0)throw t;F(1,0);}}function RC(I,g,A,e){var t=N();try{return H.get(I)(g,A,e)}catch(o){if(L(t),o!==o+0)throw o;F(1,0);}}function XC(I,g,A){var e=N();try{return H.get(I)(g,A)}catch(t){if(L(e),t!==t+0)throw t;F(1,0);}}function HC(I,g){var A=N();try{return H.get(I)(g)}catch(e){if(L(A),e!==e+0)throw e;F(1,0);}}function vC(I,g,A,e,t,o){var l=N();try{return H.get(I)(g,A,e,t,o)}catch(a){if(L(l),a!==a+0)throw a;F(1,0);}}function kC(I,g,A,e,t){var o=N();try{H.get(I)(g,A,e,t);}catch(l){if(L(o),l!==l+0)throw l;F(1,0);}}function FC(I,g,A,e){var t=N();try{H.get(I)(g,A,e);}catch(o){if(L(t),o!==o+0)throw o;F(1,0);}}function LC(I){var g=N();try{H.get(I)();}catch(A){if(L(g),A!==A+0)throw A;F(1,0);}}function NC(I,g,A,e,t,o){var l=N();try{fg(I,g,A,e,t,o);}catch(a){if(L(l),a!==a+0)throw a;F(1,0);}}var SI;tI=function I(){SI||Tg(),SI||(tI=I);};function Tg(){function I(){if(!SI&&(SI=!0,i.calledRun=!0,!og)){if(HI(dg),d(i),i.onRuntimeInitialized&&i.onRuntimeInitialized(),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var g=i.postRun.shift();cg.unshift(g);}HI(cg);}}if(!(0<j)){if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)Og();HI(sg),0<j||(i.setStatus?(i.setStatus("Running..."),setTimeout(function(){setTimeout(function(){i.setStatus("");},1),I();},1)):I());}}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.pop()();return Tg(),f}})(),Mg=TC;var _=class{constructor(){throw new Error("RendererLoader is a static class and cannot be instantiated.")}static async _tryLoad(C){return await Mg({locateFile:()=>C})}static async _loadWithBackup(){return this._ModulePromise||(this._ModulePromise=this._tryLoad(this._wasmURL).catch(async C=>{let i=`https://unpkg.com/${Ig}@${qI}/dist/dotlottie-player.wasm`;console.warn(`Primary WASM load failed from ${this._wasmURL}. Error: ${C.message}`),console.warn(`Attempting to load WASM from backup URL: ${i}`);try{return await this._tryLoad(i)}catch(d){throw console.error(`Primary WASM URL failed: ${C.message}`),console.error(`Backup WASM URL failed: ${d.message}`),new Error("WASM loading failed from all sources.")}})),this._ModulePromise}static async load(){return this._loadWithBackup()}static setWasmUrl(C){this._wasmURL=C,this._ModulePromise=null;}};Z(_,"_ModulePromise",null),Z(_,"_wasmURL",`https://cdn.jsdelivr.net/npm/${Ig}@${qI}/dist/dotlottie-player.wasm`);var AI=class{constructor(){Z(this,"_eventListeners",new Map);}addEventListener(C,i){let d=this._eventListeners.get(C);d||(d=new Set,this._eventListeners.set(C,d)),d.add(i);}removeEventListener(C,i){let d=this._eventListeners.get(C);d&&(i?(d.delete(i),d.size===0&&this._eventListeners.delete(C)):this._eventListeners.delete(C));}dispatch(C){this._eventListeners.get(C.type)?.forEach(d=>d(C));}removeAllEventListeners(){this._eventListeners.clear();}};function DC(r){return /^#([\da-f]{6}|[\da-f]{8})$/iu.test(r)}function Ug(r){if(!DC(r))return 0;let C=r.replace("#","");return C=C.length===6?`${C}ff`:C,parseInt(C,16)}function gg(r){if(r.byteLength<4)return !1;let C=new Uint8Array(r.slice(0,wI.byteLength));for(let i=0;i<wI.length;i+=1)if(wI[i]!==C[i])return !1;return !0}function Pg(r){return Eg.every(C=>Object.prototype.hasOwnProperty.call(r,C))}function Cg(r){if(typeof r=="string")try{return Pg(JSON.parse(r))}catch{return !1}else return Pg(r)}var Ag=(r,C)=>r==="reverse"?C.Mode.Reverse:r==="bounce"?C.Mode.Bounce:r==="reverse-bounce"?C.Mode.ReverseBounce:C.Mode.Forward,ig=(r,C)=>r==="contain"?C.Fit.Contain:r==="cover"?C.Fit.Cover:r==="fill"?C.Fit.Fill:r==="fit-height"?C.Fit.FitHeight:r==="fit-width"?C.Fit.FitWidth:C.Fit.None,eg=(r,C)=>{let i=new C.VectorFloat;return i.push_back(r[0]),i.push_back(r[1]),i},tg=(r,C)=>{let i=new C.VectorFloat;return r.length!==2||(i.push_back(r[0]),i.push_back(r[1])),i},W=class W{constructor(C){Z(this,"_canvas");Z(this,"_context",null);Z(this,"_eventManager");Z(this,"_animationFrameId",null);Z(this,"_frameManager");Z(this,"_dotLottieCore",null);Z(this,"_renderConfig",{});Z(this,"_isFrozen",!1);Z(this,"_backgroundColor",null);Z(this,"_pointerUpMethod");Z(this,"_pointerDownMethod");Z(this,"_pointerMoveMethod");Z(this,"_pointerEnterMethod");Z(this,"_pointerExitMethod");Z(this,"_onCompleteMethod");this._canvas=C.canvas,this._context=this._canvas.getContext("2d"),this._eventManager=new AI,this._frameManager=new VI,this._renderConfig=C.renderConfig??{},_.load().then(i=>{W._wasmModule=i,this._dotLottieCore=new i.DotLottiePlayer({autoplay:C.autoplay??!1,backgroundColor:0,loopAnimation:C.loop??!1,mode:Ag(C.mode??"forward",i),segment:tg(C.segment??[],i),speed:C.speed??1,useFrameInterpolation:C.useFrameInterpolation??!0,marker:C.marker??"",layout:C.layout?{align:eg(C.layout.align,i),fit:ig(C.layout.fit,i)}:i.createDefaultLayout()}),this._eventManager.dispatch({type:"ready"}),C.data?this._loadFromData(C.data):C.src&&this._loadFromSrc(C.src),C.backgroundColor&&this.setBackgroundColor(C.backgroundColor);}).catch(i=>{this._eventManager.dispatch({type:"loadError",error:new Error(`Failed to load wasm module: ${i}`)});}),this._pointerUpMethod=this._onPointerUp.bind(this),this._pointerDownMethod=this._onPointerDown.bind(this),this._pointerMoveMethod=this._onPointerMove.bind(this),this._pointerEnterMethod=this._onPointerEnter.bind(this),this._pointerExitMethod=this._onPointerLeave.bind(this),this._onCompleteMethod=this._onComplete.bind(this);}_dispatchError(C){console.error(C),this._eventManager.dispatch({type:"loadError",error:new Error(C)});}async _fetchData(C){let i=await fetch(C);if(!i.ok)throw new Error(`Failed to fetch animation data from URL: ${C}. ${i.status}: ${i.statusText}`);let d=await i.arrayBuffer();return gg(d)?d:new TextDecoder().decode(d)}_loadFromData(C){if(this._dotLottieCore===null)return;let i=this._canvas.width,d=this._canvas.height,B=!1;if(typeof C=="string"){if(!Cg(C)){this._dispatchError("Invalid Lottie JSON string: The provided string does not conform to the Lottie JSON format.");return}B=this._dotLottieCore.loadAnimationData(C,i,d);}else if(C instanceof ArrayBuffer){if(!gg(C)){this._dispatchError("Invalid dotLottie ArrayBuffer: The provided ArrayBuffer does not conform to the dotLottie format.");return}B=this._dotLottieCore.loadDotLottieData(C,i,d);}else if(typeof C=="object"){if(!Cg(C)){this._dispatchError("Invalid Lottie JSON object: The provided object does not conform to the Lottie JSON format.");return}B=this._dotLottieCore.loadAnimationData(JSON.stringify(C),i,d);}else {this._dispatchError(`Unsupported data type for animation data. Expected:
3
+ var j3=Object.defineProperty;var z3=(f,n,i)=>n in f?j3(f,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):f[n]=i;var _=(f,n,i)=>z3(f,typeof n!="symbol"?n+"":n,i);var X1=class{requestAnimationFrame(n){return requestAnimationFrame(n)}cancelAnimationFrame(n){cancelAnimationFrame(n);}},Z1=class{constructor(){_(this,"_lastHandleId",0);_(this,"_lastImmediate",null);}requestAnimationFrame(n){return this._lastHandleId>=Number.MAX_SAFE_INTEGER&&(this._lastHandleId=0),this._lastHandleId+=1,this._lastImmediate=setImmediate(()=>{n(Date.now());}),this._lastHandleId}cancelAnimationFrame(n){this._lastImmediate&&clearImmediate(this._lastImmediate);}},I1=class{constructor(){_(this,"_strategy");this._strategy=typeof requestAnimationFrame=="function"?new X1:new Z1;}requestAnimationFrame(n){return this._strategy.requestAnimationFrame(n)}cancelAnimationFrame(n){this._strategy.cancelAnimationFrame(n);}};var W=typeof window<"u"&&typeof window.document<"u";var F1=new Uint8Array([80,75,3,4]),H2=["v","ip","op","layers","fr","w","h"],Q1="0.31.1",e2="@lottiefiles/dotlottie-web",N2=.75;var H3=(()=>{var f=typeof document<"u"?document.currentScript?.src:void 0;return function(n={}){var i=n,h,M,B=new Promise((e,t)=>{h=e,M=t;}),N=Object.assign({},i),j="./this.program",k="";typeof document<"u"&&document.currentScript&&(k=document.currentScript.src),f&&(k=f),k.startsWith("blob:")?k="":k=k.substr(0,k.replace(/[?#].*/,"").lastIndexOf("/")+1);var Q=i.print||console.log.bind(console),e1=i.printErr||console.error.bind(console);Object.assign(i,N),N=null,i.thisProgram&&(j=i.thisProgram);var a1;i.wasmBinary&&(a1=i.wasmBinary);var _1,d2=!1,J,E,t1,o1,F,C,u2,l2;function c2(){var e=_1.buffer;i.HEAP8=J=new Int8Array(e),i.HEAP16=t1=new Int16Array(e),i.HEAPU8=E=new Uint8Array(e),i.HEAPU16=o1=new Uint16Array(e),i.HEAP32=F=new Int32Array(e),i.HEAPU32=C=new Uint32Array(e),i.HEAPF32=u2=new Float32Array(e),i.HEAPF64=l2=new Float64Array(e);}var h2=[],p2=[],v2=[];function Q2(){var e=i.preRun.shift();h2.unshift(e);}var G=0,s1=null;function g1(e){throw i.onAbort?.(e),e="Aborted("+e+")",e1(e),d2=!0,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),M(e),e}var f2=e=>e.startsWith("data:application/octet-stream;base64,"),n1;if(n1="DotLottiePlayer.wasm",!f2(n1)){var m2=n1;n1=i.locateFile?i.locateFile(m2,k):k+m2;}function _2(e){if(e==n1&&a1)return new Uint8Array(a1);throw "both async and sync fetching of the wasm failed"}function e3(e){return a1||typeof fetch!="function"?Promise.resolve().then(()=>_2(e)):fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw `failed to load wasm binary file at '${e}'`;return t.arrayBuffer()}).catch(()=>_2(e))}function g2(e,t,r){return e3(e).then(a=>WebAssembly.instantiate(a,t)).then(r,a=>{e1(`failed to asynchronously prepare wasm: ${a}`),g1(a);})}function t3(e,t){var r=n1;return a1||typeof WebAssembly.instantiateStreaming!="function"||f2(r)||typeof fetch!="function"?g2(r,e,t):fetch(r,{credentials:"same-origin"}).then(a=>WebAssembly.instantiateStreaming(a,e).then(t,function(o){return e1(`wasm streaming compile failed: ${o}`),e1("falling back to ArrayBuffer instantiation"),g2(r,e,t)}))}var T1=e=>{for(;0<e.length;)e.shift()(i);},y2=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,q=(e,t,r)=>{var a=t+r;for(r=t;e[r]&&!(r>=a);)++r;if(16<r-t&&e.buffer&&y2)return y2.decode(e.subarray(t,r));for(a="";t<r;){var o=e[t++];if(o&128){var s=e[t++]&63;if((o&224)==192)a+=String.fromCharCode((o&31)<<6|s);else {var l=e[t++]&63;o=(o&240)==224?(o&15)<<12|s<<6|l:(o&7)<<18|s<<12|l<<6|e[t++]&63,65536>o?a+=String.fromCharCode(o):(o-=65536,a+=String.fromCharCode(55296|o>>10,56320|o&1023));}}else a+=String.fromCharCode(o);}return a};class n3{constructor(t){this.ya=t-24;}}var w2=0,M2=e=>{for(var t=0,r=0;r<e.length;++r){var a=e.charCodeAt(r);127>=a?t++:2047>=a?t+=2:55296<=a&&57343>=a?(t+=4,++r):t+=3;}return t},L2=(e,t,r,a)=>{if(0<a){a=r+a-1;for(var o=0;o<e.length;++o){var s=e.charCodeAt(o);if(55296<=s&&57343>=s){var l=e.charCodeAt(++o);s=65536+((s&1023)<<10)|l&1023;}if(127>=s){if(r>=a)break;t[r++]=s;}else {if(2047>=s){if(r+1>=a)break;t[r++]=192|s>>6;}else {if(65535>=s){if(r+2>=a)break;t[r++]=224|s>>12;}else {if(r+3>=a)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63;}t[r++]=128|s>>6&63;}t[r++]=128|s&63;}}t[r]=0;}},y1={},k1=e=>{for(;e.length;){var t=e.pop();e.pop()(t);}};function d1(e){return this.fromWireType(C[e>>2])}var r1={},K={},w1={},u1,V=(e,t,r)=>{function a(u){if(u=r(u),u.length!==e.length)throw new u1("Mismatched type converter count");for(var p=0;p<e.length;++p)D(e[p],u[p]);}e.forEach(function(u){w1[u]=t;});var o=Array(t.length),s=[],l=0;t.forEach((u,p)=>{K.hasOwnProperty(u)?o[p]=K[u]:(s.push(u),r1.hasOwnProperty(u)||(r1[u]=[]),r1[u].push(()=>{o[p]=K[u],++l,l===s.length&&a(o);}));}),s.length===0&&a(o);},b2,I=e=>{for(var t="";E[e];)t+=b2[E[e++]];return t},y;function i3(e,t,r={}){var a=t.name;if(!e)throw new y(`type "${a}" must have a positive integer typeid pointer`);if(K.hasOwnProperty(e)){if(r.ib)return;throw new y(`Cannot register type '${a}' twice`)}K[e]=t,delete w1[e],r1.hasOwnProperty(e)&&(t=r1[e],delete r1[e],t.forEach(o=>o()));}function D(e,t,r={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return i3(e,t,r)}var D1=e=>{throw new y(e.ma.za.xa.name+" instance already deleted")},R1=!1,C2=()=>{},E2=(e,t,r)=>t===r?e:r.Ca===void 0?null:(e=E2(e,t,r.Ca),e===null?null:r.ab(e)),P2={},l1=[],$1=()=>{for(;l1.length;){var e=l1.pop();e.ma.Ka=!1,e.delete();}},c1,h1={},a3=(e,t)=>{if(t===void 0)throw new y("ptr should not be undefined");for(;e.Ca;)t=e.Na(t),e=e.Ca;return h1[t]},M1=(e,t)=>{if(!t.za||!t.ya)throw new u1("makeClassHandle requires ptr and ptrType");if(!!t.Da!=!!t.Aa)throw new u1("Both smartPtrType and smartPtr must be specified");return t.count={value:1},p1(Object.create(e,{ma:{value:t,writable:!0}}))},p1=e=>typeof FinalizationRegistry>"u"?(p1=t=>t,e):(R1=new FinalizationRegistry(t=>{t=t.ma,--t.count.value,t.count.value===0&&(t.Aa?t.Da.Fa(t.Aa):t.za.xa.Fa(t.ya));}),p1=t=>{var r=t.ma;return r.Aa&&R1.register(t,{ma:r},t),t},C2=t=>{R1.unregister(t);},p1(e));function L1(){}var v1=(e,t)=>Object.defineProperty(t,"name",{value:e}),S2=(e,t,r)=>{if(e[t].Ba===void 0){var a=e[t];e[t]=function(...o){if(!e[t].Ba.hasOwnProperty(o.length))throw new y(`Function '${r}' called with an invalid number of arguments (${o.length}) - expects one of (${e[t].Ba})!`);return e[t].Ba[o.length].apply(this,o)},e[t].Ba=[],e[t].Ba[a.Oa]=a;}},O1=(e,t,r)=>{if(i.hasOwnProperty(e)){if(r===void 0||i[e].Ba!==void 0&&i[e].Ba[r]!==void 0)throw new y(`Cannot register public name '${e}' twice`);if(S2(i,e,e),i.hasOwnProperty(r))throw new y(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`);i[e].Ba[r]=t;}else i[e]=t,r!==void 0&&(i[e].vb=r);},o3=e=>{if(e===void 0)return "_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return 48<=t&&57>=t?`_${e}`:e};function s3(e,t,r,a,o,s,l,u){this.name=e,this.constructor=t,this.La=r,this.Fa=a,this.Ca=o,this.cb=s,this.Na=l,this.ab=u,this.kb=[];}var W1=(e,t,r)=>{for(;t!==r;){if(!t.Na)throw new y(`Expected null or instance of ${r.name}, got an instance of ${t.name}`);e=t.Na(e),t=t.Ca;}return e};function d3(e,t){if(t===null){if(this.Ta)throw new y(`null is not a valid ${this.name}`);return 0}if(!t.ma)throw new y(`Cannot pass "${V1(t)}" as a ${this.name}`);if(!t.ma.ya)throw new y(`Cannot pass deleted object as a pointer of type ${this.name}`);return W1(t.ma.ya,t.ma.za.xa,this.xa)}function u3(e,t){if(t===null){if(this.Ta)throw new y(`null is not a valid ${this.name}`);if(this.Qa){var r=this.Ua();return e!==null&&e.push(this.Fa,r),r}return 0}if(!t||!t.ma)throw new y(`Cannot pass "${V1(t)}" as a ${this.name}`);if(!t.ma.ya)throw new y(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.Pa&&t.ma.za.Pa)throw new y(`Cannot convert argument of type ${t.ma.Da?t.ma.Da.name:t.ma.za.name} to parameter type ${this.name}`);if(r=W1(t.ma.ya,t.ma.za.xa,this.xa),this.Qa){if(t.ma.Aa===void 0)throw new y("Passing raw pointer to smart pointer is illegal");switch(this.pb){case 0:if(t.ma.Da===this)r=t.ma.Aa;else throw new y(`Cannot convert argument of type ${t.ma.Da?t.ma.Da.name:t.ma.za.name} to parameter type ${this.name}`);break;case 1:r=t.ma.Aa;break;case 2:if(t.ma.Da===this)r=t.ma.Aa;else {var a=t.clone();r=this.lb(r,C1(()=>a.delete())),e!==null&&e.push(this.Fa,r);}break;default:throw new y("Unsupporting sharing policy")}}return r}function l3(e,t){if(t===null){if(this.Ta)throw new y(`null is not a valid ${this.name}`);return 0}if(!t.ma)throw new y(`Cannot pass "${V1(t)}" as a ${this.name}`);if(!t.ma.ya)throw new y(`Cannot pass deleted object as a pointer of type ${this.name}`);if(t.ma.za.Pa)throw new y(`Cannot convert argument of type ${t.ma.za.name} to parameter type ${this.name}`);return W1(t.ma.ya,t.ma.za.xa,this.xa)}function f1(e,t,r,a,o,s,l,u,p,c,v){this.name=e,this.xa=t,this.Ta=r,this.Pa=a,this.Qa=o,this.jb=s,this.pb=l,this.Za=u,this.Ua=p,this.lb=c,this.Fa=v,o||t.Ca!==void 0?this.toWireType=u3:(this.toWireType=a?d3:l3,this.Ea=null);}var I2=(e,t,r)=>{if(!i.hasOwnProperty(e))throw new u1("Replacing nonexistent public symbol");i[e].Ba!==void 0&&r!==void 0?i[e].Ba[r]=t:(i[e]=t,i[e].Oa=r);},T,c3=(e,t,r=[])=>(e.includes("j")?(e=e.replace(/p/g,"i"),t=(0, i["dynCall_"+e])(t,...r)):t=T.get(t)(...r),t),h3=(e,t)=>(...r)=>c3(e,t,r),x=(e,t)=>{e=I(e);var r=e.includes("j")?h3(e,t):T.get(t);if(typeof r!="function")throw new y(`unknown function pointer with signature ${e}: ${t}`);return r},F2,x2=e=>{e=U2(e);var t=I(e);return H(e),t},b1=(e,t)=>{function r(s){o[s]||K[s]||(w1[s]?w1[s].forEach(r):(a.push(s),o[s]=!0));}var a=[],o={};throw t.forEach(r),new F2(`${e}: `+a.map(x2).join([", "]))},U1=(e,t)=>{for(var r=[],a=0;a<e;a++)r.push(C[t+4*a>>2]);return r};function p3(e){for(var t=1;t<e.length;++t)if(e[t]!==null&&e[t].Ea===void 0)return !0;return !1}function B1(e,t,r,a,o){var s=t.length;if(2>s)throw new y("argTypes array size mismatch! Must at least get return value and 'this' types!");var l=t[1]!==null&&r!==null,u=p3(t),p=t[0].name!=="void",c=s-2,v=Array(c),w=[],L=[];return v1(e,function(...d){if(d.length!==c)throw new y(`function ${e} called with ${d.length} arguments, expected ${c}`);if(L.length=0,w.length=l?2:1,w[0]=o,l){var m=t[1].toWireType(L,this);w[1]=m;}for(var g=0;g<c;++g)v[g]=t[g+2].toWireType(L,d[g]),w.push(v[g]);if(d=a(...w),u)k1(L);else for(g=l?1:2;g<t.length;g++){var S=g===1?m:v[g-2];t[g].Ea!==null&&t[g].Ea(S);}return m=p?t[0].fromWireType(d):void 0,m})}var A2=e=>{e=e.trim();let t=e.indexOf("(");return t!==-1?e.substr(0,t):e},j1=[],z=[],z1=e=>{9<e&&--z[e+1]===0&&(z[e]=void 0,j1.push(e));},H1=e=>{if(!e)throw new y("Cannot use deleted val. handle = "+e);return z[e]},C1=e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let t=j1.pop()||z.length;return z[t]=e,z[t+1]=1,t}},T2={name:"emscripten::val",fromWireType:e=>{var t=H1(e);return z1(e),t},toWireType:(e,t)=>C1(t),argPackAdvance:8,readValueFromPointer:d1,Ea:null},v3=(e,t,r)=>{switch(t){case 1:return r?function(a){return this.fromWireType(J[a])}:function(a){return this.fromWireType(E[a])};case 2:return r?function(a){return this.fromWireType(t1[a>>1])}:function(a){return this.fromWireType(o1[a>>1])};case 4:return r?function(a){return this.fromWireType(F[a>>2])}:function(a){return this.fromWireType(C[a>>2])};default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},N1=(e,t)=>{var r=K[e];if(r===void 0)throw e=`${t} has unknown type ${x2(e)}`,new y(e);return r},V1=e=>{if(e===null)return "null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e},f3=(e,t)=>{switch(t){case 4:return function(r){return this.fromWireType(u2[r>>2])};case 8:return function(r){return this.fromWireType(l2[r>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},m3=(e,t,r)=>{switch(t){case 1:return r?a=>J[a]:a=>E[a];case 2:return r?a=>t1[a>>1]:a=>o1[a>>1];case 4:return r?a=>F[a>>2]:a=>C[a>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},k2=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0,_3=(e,t)=>{for(var r=e>>1,a=r+t/2;!(r>=a)&&o1[r];)++r;if(r<<=1,32<r-e&&k2)return k2.decode(E.subarray(e,r));for(r="",a=0;!(a>=t/2);++a){var o=t1[e+2*a>>1];if(o==0)break;r+=String.fromCharCode(o);}return r},g3=(e,t,r)=>{if(r??(r=2147483647),2>r)return 0;r-=2;var a=t;r=r<2*e.length?r/2:e.length;for(var o=0;o<r;++o)t1[t>>1]=e.charCodeAt(o),t+=2;return t1[t>>1]=0,t-a},y3=e=>2*e.length,w3=(e,t)=>{for(var r=0,a="";!(r>=t/4);){var o=F[e+4*r>>2];if(o==0)break;++r,65536<=o?(o-=65536,a+=String.fromCharCode(55296|o>>10,56320|o&1023)):a+=String.fromCharCode(o);}return a},M3=(e,t,r)=>{if(r??(r=2147483647),4>r)return 0;var a=t;r=a+r-4;for(var o=0;o<e.length;++o){var s=e.charCodeAt(o);if(55296<=s&&57343>=s){var l=e.charCodeAt(++o);s=65536+((s&1023)<<10)|l&1023;}if(F[t>>2]=s,t+=4,t+4>r)break}return F[t>>2]=0,t-a},L3=e=>{for(var t=0,r=0;r<e.length;++r){var a=e.charCodeAt(r);55296<=a&&57343>=a&&++r,t+=4;}return t},Y1=[],b3=e=>{var t=Y1.length;return Y1.push(e),t},C3=(e,t)=>{for(var r=Array(e),a=0;a<e;++a)r[a]=N1(C[t+4*a>>2],"parameter "+a);return r},E3=Reflect.construct,J1={},D2=()=>{if(!G1){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:j||"./this.program"},t;for(t in J1)J1[t]===void 0?delete e[t]:e[t]=J1[t];var r=[];for(t in e)r.push(`${t}=${e[t]}`);G1=r;}return G1},G1,P3=[null,[],[]],S3=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return e=>crypto.getRandomValues(e);g1("initRandomDevice");},R2=e=>(R2=S3())(e),E1=e=>e%4===0&&(e%100!==0||e%400===0),$2=[31,29,31,30,31,30,31,31,30,31,30,31],O2=[31,28,31,30,31,30,31,31,30,31,30,31];function I3(e){var t=Array(M2(e)+1);return L2(e,t,0,t.length),t}var F3=(e,t,r,a)=>{function o(d,m,g){for(d=typeof d=="number"?d.toString():d||"";d.length<m;)d=g[0]+d;return d}function s(d,m){return o(d,m,"0")}function l(d,m){function g(Y){return 0>Y?-1:0<Y?1:0}var S;return (S=g(d.getFullYear()-m.getFullYear()))===0&&(S=g(d.getMonth()-m.getMonth()))===0&&(S=g(d.getDate()-m.getDate())),S}function u(d){switch(d.getDay()){case 0:return new Date(d.getFullYear()-1,11,29);case 1:return d;case 2:return new Date(d.getFullYear(),0,3);case 3:return new Date(d.getFullYear(),0,2);case 4:return new Date(d.getFullYear(),0,1);case 5:return new Date(d.getFullYear()-1,11,31);case 6:return new Date(d.getFullYear()-1,11,30)}}function p(d){var m=d.Ia;for(d=new Date(new Date(d.Ja+1900,0,1).getTime());0<m;){var g=d.getMonth(),S=(E1(d.getFullYear())?$2:O2)[g];if(m>S-d.getDate())m-=S-d.getDate()+1,d.setDate(1),11>g?d.setMonth(g+1):(d.setMonth(0),d.setFullYear(d.getFullYear()+1));else {d.setDate(d.getDate()+m);break}}return g=new Date(d.getFullYear()+1,0,4),m=u(new Date(d.getFullYear(),0,4)),g=u(g),0>=l(m,d)?0>=l(g,d)?d.getFullYear()+1:d.getFullYear():d.getFullYear()-1}var c=C[a+40>>2];a={sb:F[a>>2],rb:F[a+4>>2],Ra:F[a+8>>2],Va:F[a+12>>2],Sa:F[a+16>>2],Ja:F[a+20>>2],Ga:F[a+24>>2],Ia:F[a+28>>2],wb:F[a+32>>2],qb:F[a+36>>2],tb:c&&c?q(E,c):""},r=r?q(E,r):"",c={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var v in c)r=r.replace(new RegExp(v,"g"),c[v]);var w="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),L="January February March April May June July August September October November December".split(" ");c={"%a":d=>w[d.Ga].substring(0,3),"%A":d=>w[d.Ga],"%b":d=>L[d.Sa].substring(0,3),"%B":d=>L[d.Sa],"%C":d=>s((d.Ja+1900)/100|0,2),"%d":d=>s(d.Va,2),"%e":d=>o(d.Va,2," "),"%g":d=>p(d).toString().substring(2),"%G":p,"%H":d=>s(d.Ra,2),"%I":d=>(d=d.Ra,d==0?d=12:12<d&&(d-=12),s(d,2)),"%j":d=>{for(var m=0,g=0;g<=d.Sa-1;m+=(E1(d.Ja+1900)?$2:O2)[g++]);return s(d.Va+m,3)},"%m":d=>s(d.Sa+1,2),"%M":d=>s(d.rb,2),"%n":()=>`
4
+ `,"%p":d=>0<=d.Ra&&12>d.Ra?"AM":"PM","%S":d=>s(d.sb,2),"%t":()=>" ","%u":d=>d.Ga||7,"%U":d=>s(Math.floor((d.Ia+7-d.Ga)/7),2),"%V":d=>{var m=Math.floor((d.Ia+7-(d.Ga+6)%7)/7);if(2>=(d.Ga+371-d.Ia-2)%7&&m++,m)m==53&&(g=(d.Ga+371-d.Ia)%7,g==4||g==3&&E1(d.Ja)||(m=1));else {m=52;var g=(d.Ga+7-d.Ia-1)%7;(g==4||g==5&&E1(d.Ja%400-1))&&m++;}return s(m,2)},"%w":d=>d.Ga,"%W":d=>s(Math.floor((d.Ia+7-(d.Ga+6)%7)/7),2),"%y":d=>(d.Ja+1900).toString().substring(2),"%Y":d=>d.Ja+1900,"%z":d=>{d=d.qb;var m=0<=d;return d=Math.abs(d)/60,(m?"+":"-")+("0000"+(d/60*100+d%60)).slice(-4)},"%Z":d=>d.tb,"%%":()=>"%"},r=r.replace(/%%/g,"\0\0");for(v in c)r.includes(v)&&(r=r.replace(new RegExp(v,"g"),c[v](a)));return r=r.replace(/\0\0/g,"%"),v=I3(r),v.length>t?0:(J.set(v,e),v.length-1)};u1=i.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError";}};for(var W2=Array(256),P1=0;256>P1;++P1)W2[P1]=String.fromCharCode(P1);b2=W2,y=i.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError";}},Object.assign(L1.prototype,{isAliasOf:function(e){if(!(this instanceof L1&&e instanceof L1))return !1;var t=this.ma.za.xa,r=this.ma.ya;e.ma=e.ma;var a=e.ma.za.xa;for(e=e.ma.ya;t.Ca;)r=t.Na(r),t=t.Ca;for(;a.Ca;)e=a.Na(e),a=a.Ca;return t===a&&r===e},clone:function(){if(this.ma.ya||D1(this),this.ma.Ma)return this.ma.count.value+=1,this;var e=p1,t=Object,r=t.create,a=Object.getPrototypeOf(this),o=this.ma;return e=e(r.call(t,a,{ma:{value:{count:o.count,Ka:o.Ka,Ma:o.Ma,ya:o.ya,za:o.za,Aa:o.Aa,Da:o.Da}}})),e.ma.count.value+=1,e.ma.Ka=!1,e},delete(){if(this.ma.ya||D1(this),this.ma.Ka&&!this.ma.Ma)throw new y("Object already scheduled for deletion");C2(this);var e=this.ma;--e.count.value,e.count.value===0&&(e.Aa?e.Da.Fa(e.Aa):e.za.xa.Fa(e.ya)),this.ma.Ma||(this.ma.Aa=void 0,this.ma.ya=void 0);},isDeleted:function(){return !this.ma.ya},deleteLater:function(){if(this.ma.ya||D1(this),this.ma.Ka&&!this.ma.Ma)throw new y("Object already scheduled for deletion");return l1.push(this),l1.length===1&&c1&&c1($1),this.ma.Ka=!0,this}}),i.getInheritedInstanceCount=()=>Object.keys(h1).length,i.getLiveInheritedInstances=()=>{var e=[],t;for(t in h1)h1.hasOwnProperty(t)&&e.push(h1[t]);return e},i.flushPendingDeletes=$1,i.setDelayFunction=e=>{c1=e,l1.length&&c1&&c1($1);},Object.assign(f1.prototype,{eb(e){return this.Za&&(e=this.Za(e)),e},Xa(e){this.Fa?.(e);},argPackAdvance:8,readValueFromPointer:d1,fromWireType:function(e){function t(){return this.Qa?M1(this.xa.La,{za:this.jb,ya:r,Da:this,Aa:e}):M1(this.xa.La,{za:this,ya:e})}var r=this.eb(e);if(!r)return this.Xa(e),null;var a=a3(this.xa,r);if(a!==void 0)return a.ma.count.value===0?(a.ma.ya=r,a.ma.Aa=e,a.clone()):(a=a.clone(),this.Xa(e),a);if(a=this.xa.cb(r),a=P2[a],!a)return t.call(this);a=this.Pa?a.$a:a.pointerType;var o=E2(r,this.xa,a.xa);return o===null?t.call(this):this.Qa?M1(a.xa.La,{za:a,ya:o,Da:this,Aa:e}):M1(a.xa.La,{za:a,ya:o})}}),F2=i.UnboundTypeError=((e,t)=>{var r=v1(t,function(a){this.name=t,this.message=a,a=Error(a).stack,a!==void 0&&(this.stack=this.toString()+`
5
+ `+a.replace(/^Error(:[^\n]*)?\n/,""));});return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},r})(Error,"UnboundTypeError"),z.push(0,1,void 0,1,null,1,!0,1,!1,1),i.count_emval_handles=()=>z.length/2-5-j1.length;var x3={c:(e,t,r,a)=>{g1(`Assertion failed: ${e?q(E,e):""}, at: `+[t?t?q(E,t):"":"unknown filename",r,a?a?q(E,a):"":"unknown function"]);},m:(e,t,r)=>{var a=new n3(e);throw C[a.ya+16>>2]=0,C[a.ya+4>>2]=t,C[a.ya+8>>2]=r,w2=e,w2},B:function(){return 0},P:()=>{},M:()=>{},R:function(){return 0},N:()=>{},A:function(){},O:()=>{},v:e=>{var t=y1[e];delete y1[e];var r=t.Ua,a=t.Fa,o=t.Ya,s=o.map(l=>l.hb).concat(o.map(l=>l.nb));V([e],s,l=>{var u={};return o.forEach((p,c)=>{var v=l[c],w=p.fb,L=p.gb,d=l[c+o.length],m=p.mb,g=p.ob;u[p.bb]={read:S=>v.fromWireType(w(L,S)),write:(S,Y)=>{var A=[];m(g,S,d.toWireType(A,Y)),k1(A);}};}),[{name:t.name,fromWireType:p=>{var c={},v;for(v in u)c[v]=u[v].read(p);return a(p),c},toWireType:(p,c)=>{for(var v in u)if(!(v in c))throw new TypeError(`Missing field: "${v}"`);var w=r();for(v in u)u[v].write(w,c[v]);return p!==null&&p.push(a,w),w},argPackAdvance:8,readValueFromPointer:d1,Ea:a}]});},I:()=>{},Y:(e,t,r,a)=>{t=I(t),D(e,{name:t,fromWireType:function(o){return !!o},toWireType:function(o,s){return s?r:a},argPackAdvance:8,readValueFromPointer:function(o){return this.fromWireType(E[o])},Ea:null});},r:(e,t,r,a,o,s,l,u,p,c,v,w,L)=>{v=I(v),s=x(o,s),u&&(u=x(l,u)),c&&(c=x(p,c)),L=x(w,L);var d=o3(v);O1(d,function(){b1(`Cannot construct ${v} due to unbound types`,[a]);}),V([e,t,r],a?[a]:[],m=>{if(m=m[0],a)var g=m.xa,S=g.La;else S=L1.prototype;m=v1(v,function(...K1){if(Object.getPrototypeOf(this)!==Y)throw new y("Use 'new' to construct "+v);if(A.Ha===void 0)throw new y(v+" has no accessible constructor");var z2=A.Ha[K1.length];if(z2===void 0)throw new y(`Tried to invoke ctor of ${v} with invalid number of parameters (${K1.length}) - expected (${Object.keys(A.Ha).toString()}) parameters instead!`);return z2.apply(this,K1)});var Y=Object.create(S,{constructor:{value:m}});m.prototype=Y;var A=new s3(v,m,Y,L,g,s,u,c);if(A.Ca){var m1;(m1=A.Ca).Wa??(m1.Wa=[]),A.Ca.Wa.push(A);}return g=new f1(v,A,!0,!1,!1),m1=new f1(v+"*",A,!1,!1,!1),S=new f1(v+" const*",A,!1,!0,!1),P2[e]={pointerType:m1,$a:S},I2(d,m),[g,m1,S]});},q:(e,t,r,a,o,s)=>{var l=U1(t,r);o=x(a,o),V([],[e],u=>{u=u[0];var p=`constructor ${u.name}`;if(u.xa.Ha===void 0&&(u.xa.Ha=[]),u.xa.Ha[t-1]!==void 0)throw new y(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${u.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return u.xa.Ha[t-1]=()=>{b1(`Cannot construct ${u.name} due to unbound types`,l);},V([],l,c=>(c.splice(1,0,null),u.xa.Ha[t-1]=B1(p,c,null,o,s),[])),[]});},f:(e,t,r,a,o,s,l,u)=>{var p=U1(r,a);t=I(t),t=A2(t),s=x(o,s),V([],[e],c=>{function v(){b1(`Cannot call ${w} due to unbound types`,p);}c=c[0];var w=`${c.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),u&&c.xa.kb.push(t);var L=c.xa.La,d=L[t];return d===void 0||d.Ba===void 0&&d.className!==c.name&&d.Oa===r-2?(v.Oa=r-2,v.className=c.name,L[t]=v):(S2(L,t,w),L[t].Ba[r-2]=v),V([],p,m=>(m=B1(w,m,c,s,l),L[t].Ba===void 0?(m.Oa=r-2,L[t]=m):L[t].Ba[r-2]=m,[])),[]});},X:e=>D(e,T2),x:(e,t,r,a)=>{function o(){}t=I(t),o.values={},D(e,{name:t,constructor:o,fromWireType:function(s){return this.constructor.values[s]},toWireType:(s,l)=>l.value,argPackAdvance:8,readValueFromPointer:v3(t,r,a),Ea:null}),O1(t,o);},k:(e,t,r)=>{var a=N1(e,"enum");t=I(t),e=a.constructor,a=Object.create(a.constructor.prototype,{value:{value:r},constructor:{value:v1(`${a.name}_${t}`,function(){})}}),e.values[r]=a,e[t]=a;},C:(e,t,r)=>{t=I(t),D(e,{name:t,fromWireType:a=>a,toWireType:(a,o)=>o,argPackAdvance:8,readValueFromPointer:f3(t,r),Ea:null});},E:(e,t,r,a,o,s)=>{var l=U1(t,r);e=I(e),e=A2(e),o=x(a,o),O1(e,function(){b1(`Cannot call ${e} due to unbound types`,l);},t-1),V([],l,u=>(I2(e,B1(e,[u[0],null].concat(u.slice(1)),null,o,s),t-1),[]));},l:(e,t,r,a,o)=>{if(t=I(t),o===-1&&(o=4294967295),o=u=>u,a===0){var s=32-8*r;o=u=>u<<s>>>s;}var l=t.includes("unsigned")?function(u,p){return p>>>0}:function(u,p){return p};D(e,{name:t,fromWireType:o,toWireType:l,argPackAdvance:8,readValueFromPointer:m3(t,r,a!==0),Ea:null});},g:(e,t,r)=>{function a(s){return new o(J.buffer,C[s+4>>2],C[s>>2])}var o=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];r=I(r),D(e,{name:r,fromWireType:a,argPackAdvance:8,readValueFromPointer:a},{ib:!0});},w:e=>{D(e,T2);},ca:(e,t,r,a,o,s,l,u,p,c,v,w)=>{r=I(r),s=x(o,s),u=x(l,u),c=x(p,c),w=x(v,w),V([e],[t],L=>(L=L[0],[new f1(r,L.xa,!1,!1,!0,L,a,s,u,c,w)]));},D:(e,t)=>{t=I(t);var r=t==="std::string";D(e,{name:t,fromWireType:function(a){var o=C[a>>2],s=a+4;if(r)for(var l=s,u=0;u<=o;++u){var p=s+u;if(u==o||E[p]==0){if(l=l?q(E,l,p-l):"",c===void 0)var c=l;else c+="\0",c+=l;l=p+1;}}else {for(c=Array(o),u=0;u<o;++u)c[u]=String.fromCharCode(E[s+u]);c=c.join("");}return H(a),c},toWireType:function(a,o){o instanceof ArrayBuffer&&(o=new Uint8Array(o));var s=typeof o=="string";if(!(s||o instanceof Uint8Array||o instanceof Uint8ClampedArray||o instanceof Int8Array))throw new y("Cannot pass non-string to std::string");var l=r&&s?M2(o):o.length,u=q1(4+l+1),p=u+4;if(C[u>>2]=l,r&&s)L2(o,E,p,l+1);else if(s)for(s=0;s<l;++s){var c=o.charCodeAt(s);if(255<c)throw H(p),new y("String has UTF-16 code units that do not fit in 8 bits");E[p+s]=c;}else for(s=0;s<l;++s)E[p+s]=o[s];return a!==null&&a.push(H,u),u},argPackAdvance:8,readValueFromPointer:d1,Ea(a){H(a);}});},u:(e,t,r)=>{if(r=I(r),t===2)var a=_3,o=g3,s=y3,l=u=>o1[u>>1];else t===4&&(a=w3,o=M3,s=L3,l=u=>C[u>>2]);D(e,{name:r,fromWireType:u=>{for(var p=C[u>>2],c,v=u+4,w=0;w<=p;++w){var L=u+4+w*t;(w==p||l(L)==0)&&(v=a(v,L-v),c===void 0?c=v:(c+="\0",c+=v),v=L+t);}return H(u),c},toWireType:(u,p)=>{if(typeof p!="string")throw new y(`Cannot pass non-string to C++ string type ${r}`);var c=s(p),v=q1(4+c+t);return C[v>>2]=c/t,o(p,v+4,c+t),u!==null&&u.push(H,v),v},argPackAdvance:8,readValueFromPointer:d1,Ea(u){H(u);}});},s:(e,t,r,a,o,s)=>{y1[e]={name:I(t),Ua:x(r,a),Fa:x(o,s),Ya:[]};},j:(e,t,r,a,o,s,l,u,p,c)=>{y1[e].Ya.push({bb:I(t),hb:r,fb:x(a,o),gb:s,nb:l,mb:x(u,p),ob:c});},Z:(e,t)=>{t=I(t),D(e,{ub:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}});},J:()=>{throw 1/0},aa:(e,t,r,a)=>(e=Y1[e],t=H1(t),e(null,t,r,a)),F:z1,$:(e,t,r)=>{var a=C3(e,t),o=a.shift();e--;var s=Array(e);return t=`methodCaller<(${a.map(l=>l.name).join(", ")}) => ${o.name}>`,b3(v1(t,(l,u,p,c)=>{for(var v=0,w=0;w<e;++w)s[w]=a[w].readValueFromPointer(c+v),v+=a[w].argPackAdvance;return u=r===1?E3(u,s):u.apply(l,s),l=[],u=o.toWireType(l,u),l.length&&(C[p>>2]=C1(l)),u}))},ba:e=>{9<e&&(z[e+1]+=1);},_:e=>{var t=H1(e);k1(t),z1(e);},o:(e,t)=>(e=N1(e,"_emval_take_value"),e=e.readValueFromPointer(t),C1(e)),W:()=>{g1("");},V:()=>performance.now(),L:e=>{var t=E.length;if(e>>>=0,2147483648<e)return !1;for(var r=1;4>=r;r*=2){var a=t*(1+.2/r);a=Math.min(a,e+100663296);var o=Math;a=Math.max(e,a);e:{o=(o.min.call(o,2147483648,a+(65536-a%65536)%65536)-_1.buffer.byteLength+65535)/65536;try{_1.grow(o),c2();var s=1;break e}catch{}s=void 0;}if(s)return !0}return !1},S:(e,t)=>{var r=0;return D2().forEach((a,o)=>{var s=t+r;for(o=C[e+4*o>>2]=s,s=0;s<a.length;++s)J[o++]=a.charCodeAt(s);J[o]=0,r+=a.length+1;}),0},T:(e,t)=>{var r=D2();C[e>>2]=r.length;var a=0;return r.forEach(o=>a+=o.length+1),C[t>>2]=a,0},t:()=>52,z:()=>52,H:function(){return 70},Q:(e,t,r,a)=>{for(var o=0,s=0;s<r;s++){var l=C[t>>2],u=C[t+4>>2];t+=8;for(var p=0;p<u;p++){var c=E[l+p],v=P3[e];c===0||c===10?((e===1?Q:e1)(q(v,0)),v.length=0):v.push(c);}o+=u;}return C[a>>2]=o,0},U:(e,t)=>(R2(E.subarray(e,e+t)),0),i:R3,d:D3,e:k3,p:$3,y:U3,b:A3,a:T3,h:W3,n:O3,G:B3,K:(e,t,r,a)=>F3(e,t,r,a)},P=function(){function e(r){return P=r.exports,_1=P.da,c2(),T=P.ha,p2.unshift(P.ea),G--,i.monitorRunDependencies?.(G),G==0&&(s1&&(r=s1,s1=null,r())),P}var t={a:x3};if(G++,i.monitorRunDependencies?.(G),i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(r){e1(`Module.instantiateWasm callback failed with error: ${r}`),M(r);}return t3(t,function(r){e(r.instance);}).catch(M),{}}(),q1=e=>(q1=P.fa)(e),U2=e=>(U2=P.ga)(e),H=e=>(H=P.ia)(e),R=(e,t)=>(R=P.ja)(e,t),$=e=>($=P.ka)(e),O=()=>(O=P.la)();i.dynCall_iijj=(e,t,r,a,o,s)=>(i.dynCall_iijj=P.na)(e,t,r,a,o,s),i.dynCall_vijj=(e,t,r,a,o,s)=>(i.dynCall_vijj=P.oa)(e,t,r,a,o,s),i.dynCall_jiii=(e,t,r,a)=>(i.dynCall_jiii=P.pa)(e,t,r,a),i.dynCall_jii=(e,t,r)=>(i.dynCall_jii=P.qa)(e,t,r);var B2=i.dynCall_viiij=(e,t,r,a,o,s)=>(B2=i.dynCall_viiij=P.ra)(e,t,r,a,o,s);i.dynCall_jiji=(e,t,r,a,o)=>(i.dynCall_jiji=P.sa)(e,t,r,a,o),i.dynCall_viijii=(e,t,r,a,o,s,l)=>(i.dynCall_viijii=P.ta)(e,t,r,a,o,s,l),i.dynCall_iiiiij=(e,t,r,a,o,s,l)=>(i.dynCall_iiiiij=P.ua)(e,t,r,a,o,s,l),i.dynCall_iiiiijj=(e,t,r,a,o,s,l,u,p)=>(i.dynCall_iiiiijj=P.va)(e,t,r,a,o,s,l,u,p),i.dynCall_iiiiiijj=(e,t,r,a,o,s,l,u,p,c)=>(i.dynCall_iiiiiijj=P.wa)(e,t,r,a,o,s,l,u,p,c);function A3(e,t){var r=O();try{T.get(e)(t);}catch(a){if($(r),a!==a+0)throw a;R(1,0);}}function T3(e,t,r){var a=O();try{T.get(e)(t,r);}catch(o){if($(a),o!==o+0)throw o;R(1,0);}}function k3(e,t,r,a){var o=O();try{return T.get(e)(t,r,a)}catch(s){if($(o),s!==s+0)throw s;R(1,0);}}function D3(e,t,r){var a=O();try{return T.get(e)(t,r)}catch(o){if($(a),o!==o+0)throw o;R(1,0);}}function R3(e,t){var r=O();try{return T.get(e)(t)}catch(a){if($(r),a!==a+0)throw a;R(1,0);}}function $3(e,t,r,a,o,s){var l=O();try{return T.get(e)(t,r,a,o,s)}catch(u){if($(l),u!==u+0)throw u;R(1,0);}}function O3(e,t,r,a,o){var s=O();try{T.get(e)(t,r,a,o);}catch(l){if($(s),l!==l+0)throw l;R(1,0);}}function W3(e,t,r,a){var o=O();try{T.get(e)(t,r,a);}catch(s){if($(o),s!==s+0)throw s;R(1,0);}}function U3(e){var t=O();try{T.get(e)();}catch(r){if($(t),r!==r+0)throw r;R(1,0);}}function B3(e,t,r,a,o,s){var l=O();try{B2(e,t,r,a,o,s);}catch(u){if($(l),u!==u+0)throw u;R(1,0);}}var S1;s1=function e(){S1||j2(),S1||(s1=e);};function j2(){function e(){if(!S1&&(S1=!0,i.calledRun=!0,!d2)){if(T1(p2),h(i),i.onRuntimeInitialized&&i.onRuntimeInitialized(),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var t=i.postRun.shift();v2.unshift(t);}T1(v2);}}if(!(0<G)){if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)Q2();T1(h2),0<G||(i.setStatus?(i.setStatus("Running..."),setTimeout(function(){setTimeout(function(){i.setStatus("");},1),e();},1)):e());}}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.pop()();return j2(),B}})(),V2=H3;var X=class{constructor(){throw new Error("RendererLoader is a static class and cannot be instantiated.")}static async _tryLoad(n){return await V2({locateFile:()=>n})}static async _loadWithBackup(){return this._ModulePromise||(this._ModulePromise=this._tryLoad(this._wasmURL).catch(async n=>{let i=`https://unpkg.com/${e2}@${Q1}/dist/dotlottie-player.wasm`;console.warn(`Primary WASM load failed from ${this._wasmURL}. Error: ${n.message}`),console.warn(`Attempting to load WASM from backup URL: ${i}`);try{return await this._tryLoad(i)}catch(h){throw console.error(`Primary WASM URL failed: ${n.message}`),console.error(`Backup WASM URL failed: ${h.message}`),new Error("WASM loading failed from all sources.")}})),this._ModulePromise}static async load(){return this._loadWithBackup()}static setWasmUrl(n){this._wasmURL=n,this._ModulePromise=null;}};_(X,"_ModulePromise",null),_(X,"_wasmURL",`https://cdn.jsdelivr.net/npm/${e2}@${Q1}/dist/dotlottie-player.wasm`);var i1=class{constructor(){_(this,"_eventListeners",new Map);}addEventListener(n,i){let h=this._eventListeners.get(n);h||(h=new Set,this._eventListeners.set(n,h)),h.add(i);}removeEventListener(n,i){let h=this._eventListeners.get(n);h&&(i?(h.delete(i),h.size===0&&this._eventListeners.delete(n)):this._eventListeners.delete(n));}dispatch(n){this._eventListeners.get(n.type)?.forEach(h=>h(n));}removeAllEventListeners(){this._eventListeners.clear();}};function N3(f){return /^#([\da-f]{6}|[\da-f]{8})$/iu.test(f)}function J2(f){if(!N3(f))return 0;let n=f.replace("#","");return n=n.length===6?`${n}ff`:n,parseInt(n,16)}function t2(f){if(f.byteLength<4)return !1;let n=new Uint8Array(f.slice(0,F1.byteLength));for(let i=0;i<F1.length;i+=1)if(F1[i]!==n[i])return !1;return !0}function Y2(f){return H2.every(n=>Object.prototype.hasOwnProperty.call(f,n))}function n2(f){if(typeof f=="string")try{return Y2(JSON.parse(f))}catch{return !1}else return Y2(f)}function Z(){return 1+((W?window.devicePixelRatio:1)-1)*N2}var r2=(f,n)=>f==="reverse"?n.Mode.Reverse:f==="bounce"?n.Mode.Bounce:f==="reverse-bounce"?n.Mode.ReverseBounce:n.Mode.Forward,i2=(f,n)=>f==="contain"?n.Fit.Contain:f==="cover"?n.Fit.Cover:f==="fill"?n.Fit.Fill:f==="fit-height"?n.Fit.FitHeight:f==="fit-width"?n.Fit.FitWidth:n.Fit.None,a2=(f,n)=>{let i=new n.VectorFloat;return i.push_back(f[0]),i.push_back(f[1]),i},o2=(f,n)=>{let i=new n.VectorFloat;return f.length!==2||(i.push_back(f[0]),i.push_back(f[1])),i},b=class b{constructor(n){_(this,"_canvas");_(this,"_context",null);_(this,"_eventManager");_(this,"_animationFrameId",null);_(this,"_frameManager");_(this,"_dotLottieCore",null);_(this,"_renderConfig",{});_(this,"_isFrozen",!1);_(this,"_backgroundColor",null);_(this,"_pointerUpMethod");_(this,"_pointerDownMethod");_(this,"_pointerMoveMethod");_(this,"_pointerEnterMethod");_(this,"_pointerExitMethod");_(this,"_onCompleteMethod");this._canvas=n.canvas,this._context=this._canvas.getContext("2d"),this._eventManager=new i1,this._frameManager=new I1,this._renderConfig={devicePixelRatio:n.renderConfig?.devicePixelRatio||Z()},X.load().then(i=>{b._wasmModule=i,this._dotLottieCore=new i.DotLottiePlayer({autoplay:n.autoplay??!1,backgroundColor:0,loopAnimation:n.loop??!1,mode:r2(n.mode??"forward",i),segment:o2(n.segment??[],i),speed:n.speed??1,useFrameInterpolation:n.useFrameInterpolation??!0,marker:n.marker??"",layout:n.layout?{align:a2(n.layout.align,i),fit:i2(n.layout.fit,i)}:i.createDefaultLayout()}),this._eventManager.dispatch({type:"ready"}),n.data?this._loadFromData(n.data):n.src&&this._loadFromSrc(n.src),n.backgroundColor&&this.setBackgroundColor(n.backgroundColor);}).catch(i=>{this._eventManager.dispatch({type:"loadError",error:new Error(`Failed to load wasm module: ${i}`)});}),this._pointerUpMethod=this._onPointerUp.bind(this),this._pointerDownMethod=this._onPointerDown.bind(this),this._pointerMoveMethod=this._onPointerMove.bind(this),this._pointerEnterMethod=this._onPointerEnter.bind(this),this._pointerExitMethod=this._onPointerLeave.bind(this),this._onCompleteMethod=this._onComplete.bind(this);}_dispatchError(n){console.error(n),this._eventManager.dispatch({type:"loadError",error:new Error(n)});}async _fetchData(n){let i=await fetch(n);if(!i.ok)throw new Error(`Failed to fetch animation data from URL: ${n}. ${i.status}: ${i.statusText}`);let h=await i.arrayBuffer();return t2(h)?h:new TextDecoder().decode(h)}_loadFromData(n){if(this._dotLottieCore===null)return;let i=this._canvas.width,h=this._canvas.height,M=!1;if(typeof n=="string"){if(!n2(n)){this._dispatchError("Invalid Lottie JSON string: The provided string does not conform to the Lottie JSON format.");return}M=this._dotLottieCore.loadAnimationData(n,i,h);}else if(n instanceof ArrayBuffer){if(!t2(n)){this._dispatchError("Invalid dotLottie ArrayBuffer: The provided ArrayBuffer does not conform to the dotLottie format.");return}M=this._dotLottieCore.loadDotLottieData(n,i,h);}else if(typeof n=="object"){if(!n2(n)){this._dispatchError("Invalid Lottie JSON object: The provided object does not conform to the Lottie JSON format.");return}M=this._dotLottieCore.loadAnimationData(JSON.stringify(n),i,h);}else {this._dispatchError(`Unsupported data type for animation data. Expected:
6
6
  - string (Lottie JSON),
7
7
  - ArrayBuffer (dotLottie),
8
8
  - object (Lottie JSON).
9
- Received: ${typeof C}`);return}B?(this._eventManager.dispatch({type:"load"}),M&&this.resize(),this._eventManager.dispatch({type:"frame",currentFrame:this._dotLottieCore.currentFrame()}),this._render(),this._dotLottieCore.config().autoplay&&(this._dotLottieCore.play(),this._dotLottieCore.isPlaying()?(this._eventManager.dispatch({type:"play"}),this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this))):console.error("something went wrong, the animation was suppose to autoplay"))):this._dispatchError("Failed to load animation data");}_loadFromSrc(C){this._fetchData(C).then(i=>this._loadFromData(i)).catch(i=>this._dispatchError(`Failed to load animation data from URL: ${C}. ${i}`));}get activeAnimationId(){return this._dotLottieCore?.activeAnimationId()}get activeThemeId(){return this._dotLottieCore?.activeThemeId()}get layout(){let C=this._dotLottieCore?.config().layout;if(C)return {align:[C.align.get(0),C.align.get(1)],fit:(()=>{switch(C.fit){case W._wasmModule?.Fit.Contain:return "contain";case W._wasmModule?.Fit.Cover:return "cover";case W._wasmModule?.Fit.Fill:return "fill";case W._wasmModule?.Fit.FitHeight:return "fit-height";case W._wasmModule?.Fit.FitWidth:return "fit-width";case W._wasmModule?.Fit.None:return "none";default:return "contain"}})()}}get marker(){return this._dotLottieCore?.config().marker}get manifest(){try{let C=this._dotLottieCore?.manifestString();if(this._dotLottieCore===null||!C)return null;let i=JSON.parse(C);return Object.keys(i).length===0?null:i}catch{return null}}get renderConfig(){return this._renderConfig}get segment(){let C=this._dotLottieCore?.config().segment;if(C&&C.size()===2)return [C.get(0),C.get(1)]}get loop(){return this._dotLottieCore?.config().loopAnimation??!1}get mode(){let C=this._dotLottieCore?.config().mode;return C===W._wasmModule?.Mode.Reverse?"reverse":C===W._wasmModule?.Mode.Bounce?"bounce":C===W._wasmModule?.Mode.ReverseBounce?"reverse-bounce":"forward"}get isFrozen(){return this._isFrozen}get backgroundColor(){return this._backgroundColor??""}get autoplay(){return this._dotLottieCore?.config().autoplay??!1}get useFrameInterpolation(){return this._dotLottieCore?.config().useFrameInterpolation??!1}get speed(){return this._dotLottieCore?.config().speed??0}get isReady(){return this._dotLottieCore!==null}get isLoaded(){return this._dotLottieCore?.isLoaded()??!1}get isPlaying(){return this._dotLottieCore?.isPlaying()??!1}get isPaused(){return this._dotLottieCore?.isPaused()??!1}get isStopped(){return this._dotLottieCore?.isStopped()??!1}get currentFrame(){return this._dotLottieCore?.currentFrame()??0}get loopCount(){return this._dotLottieCore?.loopCount()??0}get totalFrames(){return this._dotLottieCore?.totalFrames()??0}get duration(){return this._dotLottieCore?.duration()??0}get segmentDuration(){return this._dotLottieCore?.segmentDuration()??0}get canvas(){return this._canvas}load(C){this._dotLottieCore===null||W._wasmModule===null||(this._dotLottieCore.setConfig({autoplay:C.autoplay??!1,backgroundColor:0,loopAnimation:C.loop??!1,mode:Ag(C.mode??"forward",W._wasmModule),segment:tg(C.segment??[],W._wasmModule),speed:C.speed??1,useFrameInterpolation:C.useFrameInterpolation??!0,marker:C.marker??"",layout:C.layout?{align:eg(C.layout.align,W._wasmModule),fit:ig(C.layout.fit,W._wasmModule)}:W._wasmModule.createDefaultLayout()}),C.data?this._loadFromData(C.data):C.src&&this._loadFromSrc(C.src),this.setBackgroundColor(C.backgroundColor??""));}_render(){if(this._dotLottieCore===null||this._context===null)return !1;if(this._dotLottieCore.render()){let i=this._dotLottieCore.buffer(),d=new Uint8ClampedArray(i,0,this._canvas.width*this._canvas.height*4),B=null;return typeof ImageData>"u"?(B=this._context.createImageData(this._canvas.width,this._canvas.height),B.data.set(d)):B=new ImageData(d,this._canvas.width,this._canvas.height),this._context.putImageData(B,0,0),this._eventManager.dispatch({type:"render",currentFrame:this._dotLottieCore.currentFrame()}),!0}return !1}_draw(){if(this._dotLottieCore===null||this._context===null||!this._dotLottieCore.isPlaying())return;let C=this._dotLottieCore.requestFrame();this._dotLottieCore.setFrame(C)&&(this._eventManager.dispatch({type:"frame",currentFrame:this._dotLottieCore.currentFrame()}),this._render()&&this._dotLottieCore.isComplete()&&(this._dotLottieCore.config().loopAnimation?this._eventManager.dispatch({type:"loop",loopCount:this._dotLottieCore.loopCount()}):this._eventManager.dispatch({type:"complete"}))),this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this));}play(){if(this._dotLottieCore===null)return;(this._dotLottieCore.play()||this._dotLottieCore.isPlaying())&&(this._isFrozen=!1,this._eventManager.dispatch({type:"play"}),this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this)));}pause(){if(this._dotLottieCore===null)return;(this._dotLottieCore.pause()||this._dotLottieCore.isPaused())&&this._eventManager.dispatch({type:"pause"});}stop(){if(this._dotLottieCore===null)return;this._dotLottieCore.stop()&&(this._eventManager.dispatch({type:"frame",currentFrame:this._dotLottieCore.currentFrame()}),this._render(),this._eventManager.dispatch({type:"stop"}));}setFrame(C){if(this._dotLottieCore===null||C<0||C>this._dotLottieCore.totalFrames())return;this._dotLottieCore.seek(C)&&(this._eventManager.dispatch({type:"frame",currentFrame:this._dotLottieCore.currentFrame()}),this._render());}setSpeed(C){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),speed:C});}setBackgroundColor(C){this._dotLottieCore!==null&&(M&&this._canvas instanceof HTMLCanvasElement?this._canvas.style.backgroundColor=C:this._dotLottieCore.setConfig({...this._dotLottieCore.config(),backgroundColor:Ug(C)}),this._backgroundColor=C);}setLoop(C){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),loopAnimation:C});}setUseFrameInterpolation(C){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),useFrameInterpolation:C});}addEventListener(C,i){this._eventManager.addEventListener(C,i);}removeEventListener(C,i){this._eventManager.removeEventListener(C,i);}destroy(){this._dotLottieCore?.delete(),this._dotLottieCore=null,this._context=null,this._eventManager.dispatch({type:"destroy"}),this._eventManager.removeAllEventListeners(),this._cleanupStateMachineListeners();}freeze(){this._animationFrameId!==null&&(this._frameManager.cancelAnimationFrame(this._animationFrameId),this._animationFrameId=null,this._isFrozen=!0,this._eventManager.dispatch({type:"freeze"}));}unfreeze(){this._animationFrameId===null&&(this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this)),this._isFrozen=!1,this._eventManager.dispatch({type:"unfreeze"}));}resize(){if(M&&this._canvas instanceof HTMLCanvasElement){let i=this._renderConfig.devicePixelRatio||window.devicePixelRatio||1,{height:d,width:B}=this._canvas.getBoundingClientRect();this._canvas.width=B*i,this._canvas.height=d*i;}this._dotLottieCore?.resize(this._canvas.width,this._canvas.height)&&this._render();}setSegment(C,i){this._dotLottieCore===null||W._wasmModule===null||this._dotLottieCore.setConfig({...this._dotLottieCore.config(),segment:tg([C,i],W._wasmModule)});}setMode(C){this._dotLottieCore===null||W._wasmModule===null||this._dotLottieCore.setConfig({...this._dotLottieCore.config(),mode:Ag(C,W._wasmModule)});}setRenderConfig(C){this._renderConfig=C;}loadAnimation(C){if(this._dotLottieCore===null||this._dotLottieCore.activeAnimationId()===C)return;this._dotLottieCore.loadAnimation(C,this._canvas.width,this._canvas.height)?(this._eventManager.dispatch({type:"load"}),this.resize()):this._eventManager.dispatch({type:"loadError",error:new Error(`Failed to animation :${C}`)});}setMarker(C){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),marker:C});}markers(){let C=this._dotLottieCore?.markers();if(C){let i=[];for(let d=0;d<C.size();d+=1){let B=C.get(d);i.push({name:B.name,time:B.time,duration:B.duration});}return i}return []}loadTheme(C){if(this._dotLottieCore===null)return !1;let i=this._dotLottieCore.loadTheme(C);return this._render(),i}loadThemeData(C){if(this._dotLottieCore===null)return !1;let i=this._dotLottieCore.loadThemeData(C);return this._render(),i}setLayout(C){this._dotLottieCore===null||W._wasmModule===null||this._dotLottieCore.setConfig({...this._dotLottieCore.config(),layout:{align:eg(C.align,W._wasmModule),fit:ig(C.fit,W._wasmModule)}});}setViewport(C,i,d,B){return this._dotLottieCore===null?!1:this._dotLottieCore.setViewport(C,i,d,B)}static setWasmUrl(C){_.setWasmUrl(C);}loadStateMachine(C){return this._dotLottieCore?.loadStateMachine(C)??!1}startStateMachine(){let C=this._dotLottieCore?.startStateMachine()??!1;return C&&this._setupStateMachineListeners(),C}stopStateMachine(){let C=this._dotLottieCore?.stopStateMachine()??!1;return C&&this._cleanupStateMachineListeners(),C}_getPointerPosition(C){let i=this._canvas.getBoundingClientRect(),d=this._canvas.width/i.width,B=this._canvas.height/i.height,f=this._renderConfig.devicePixelRatio||window.devicePixelRatio||1,P=(C.clientX-i.left)*d/f,T=(C.clientY-i.top)*B/f;return {x:P,y:T}}_onPointerUp(C){let{x:i,y:d}=this._getPointerPosition(C);this.postStateMachineEvent(`OnPointerUp: ${i} ${d}`);}_onPointerDown(C){let{x:i,y:d}=this._getPointerPosition(C);this.postStateMachineEvent(`OnPointerDown: ${i} ${d}`);}_onPointerMove(C){let{x:i,y:d}=this._getPointerPosition(C);this.postStateMachineEvent(`OnPointerMove: ${i} ${d}`);}_onPointerEnter(C){let{x:i,y:d}=this._getPointerPosition(C);this.postStateMachineEvent(`OnPointerEnter: ${i} ${d}`);}_onPointerLeave(C){let{x:i,y:d}=this._getPointerPosition(C);this.postStateMachineEvent(`OnPointerExit: ${i} ${d}`);}_onComplete(){this.postStateMachineEvent("OnComplete");}postStateMachineEvent(C){let i=this._dotLottieCore?.postEventPayload(C)??1;return i===2?this.play():i===3?this.pause():i===4&&this._render(),i}getStateMachineListeners(){if(!this._dotLottieCore)return [];let C=this._dotLottieCore.stateMachineFrameworkSetup(),i=[];for(let d=0;d<C.size();d+=1)i.push(C.get(d));return i}_setupStateMachineListeners(){if(M&&this._canvas instanceof HTMLCanvasElement&&this._dotLottieCore!==null&&this.isLoaded){let C=this.getStateMachineListeners();C.includes("PointerUp")&&this._canvas.addEventListener("pointerup",this._pointerUpMethod),C.includes("PointerDown")&&this._canvas.addEventListener("pointerdown",this._pointerDownMethod),C.includes("PointerMove")&&this._canvas.addEventListener("pointermove",this._pointerMoveMethod),C.includes("PointerEnter")&&this._canvas.addEventListener("pointerenter",this._pointerEnterMethod),C.includes("PointerExit")&&this._canvas.addEventListener("pointerleave",this._pointerExitMethod),C.includes("Complete")&&this.addEventListener("complete",this._onCompleteMethod);}}_cleanupStateMachineListeners(){M&&this._canvas instanceof HTMLCanvasElement&&(this._canvas.removeEventListener("pointerup",this._pointerUpMethod),this._canvas.removeEventListener("pointerdown",this._pointerDownMethod),this._canvas.removeEventListener("pointermove",this._pointerMoveMethod),this._canvas.removeEventListener("pointerenter",this._pointerEnterMethod),this._canvas.removeEventListener("pointerleave",this._pointerExitMethod),this.removeEventListener("complete",this._onCompleteMethod));}loadStateMachineData(C){return this._dotLottieCore?.loadStateMachineData(C)??!1}animationSize(){let C=this._dotLottieCore?.animationSize().get(0)??0,i=this._dotLottieCore?.animationSize().get(1)??0;return {width:C,height:i}}setStateMachineBooleanContext(C,i){return this._dotLottieCore?.setStateMachineBooleanContext(C,i)??!1}setStateMachineNumericContext(C,i){return this._dotLottieCore?.setStateMachineNumericContext(C,i)??!1}setStateMachineStringContext(C,i){return this._dotLottieCore?.setStateMachineStringContext(C,i)??!1}};Z(W,"_wasmModule",null);var zg=W;var hI=class{constructor(){if(typeof window>"u")throw new Error("Worker is not available in this environment.");return new Worker("data:application/javascript;base64,InVzZSBzdHJpY3QiOwooKCkgPT4gewogIHZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7CiAgdmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlOwogIHZhciBfX3B1YmxpY0ZpZWxkID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4gX19kZWZOb3JtYWxQcm9wKG9iaiwgdHlwZW9mIGtleSAhPT0gInN5bWJvbCIgPyBrZXkgKyAiIiA6IGtleSwgdmFsdWUpOwoKICAvLyBzcmMvYW5pbWF0aW9uLWZyYW1lLW1hbmFnZXIudHMKICB2YXIgV2ViQW5pbWF0aW9uRnJhbWVTdHJhdGVneSA9IGNsYXNzIHsKICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjaykgewogICAgICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrKTsKICAgIH0KICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKSB7CiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTsKICAgIH0KICB9OwogIHZhciBOb2RlQW5pbWF0aW9uRnJhbWVTdHJhdGVneSA9IGNsYXNzIHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfbGFzdEhhbmRsZUlkIiwgMCk7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9sYXN0SW1tZWRpYXRlIiwgbnVsbCk7CiAgICB9CiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spIHsKICAgICAgaWYgKHRoaXMuX2xhc3RIYW5kbGVJZCA+PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikgewogICAgICAgIHRoaXMuX2xhc3RIYW5kbGVJZCA9IDA7CiAgICAgIH0KICAgICAgdGhpcy5fbGFzdEhhbmRsZUlkICs9IDE7CiAgICAgIHRoaXMuX2xhc3RJbW1lZGlhdGUgPSBzZXRJbW1lZGlhdGUoKCkgPT4gewogICAgICAgIGNhbGxiYWNrKERhdGUubm93KCkpOwogICAgICB9KTsKICAgICAgcmV0dXJuIHRoaXMuX2xhc3RIYW5kbGVJZDsKICAgIH0KICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKF9pZCkgewogICAgICBpZiAodGhpcy5fbGFzdEltbWVkaWF0ZSkgewogICAgICAgIGNsZWFySW1tZWRpYXRlKHRoaXMuX2xhc3RJbW1lZGlhdGUpOwogICAgICB9CiAgICB9CiAgfTsKICB2YXIgQW5pbWF0aW9uRnJhbWVNYW5hZ2VyID0gY2xhc3MgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9zdHJhdGVneSIpOwogICAgICB0aGlzLl9zdHJhdGVneSA9IHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICJmdW5jdGlvbiIgPyBuZXcgV2ViQW5pbWF0aW9uRnJhbWVTdHJhdGVneSgpIDogbmV3IE5vZGVBbmltYXRpb25GcmFtZVN0cmF0ZWd5KCk7CiAgICB9CiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIHRoaXMuX3N0cmF0ZWd5LnJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7CiAgICB9CiAgICBjYW5jZWxBbmltYXRpb25GcmFtZShpZCkgewogICAgICB0aGlzLl9zdHJhdGVneS5jYW5jZWxBbmltYXRpb25GcmFtZShpZCk7CiAgICB9CiAgfTsKCiAgLy8gc3JjL2NvbnN0YW50cy50cwogIHZhciBJU19CUk9XU0VSID0gdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgJiYgdHlwZW9mIHdpbmRvdy5kb2N1bWVudCAhPT0gInVuZGVmaW5lZCI7CiAgdmFyIFpJUF9TSUdOQVRVUkUgPSBuZXcgVWludDhBcnJheShbODAsIDc1LCAzLCA0XSk7CiAgdmFyIExPVFRJRV9KU09OX01BTkRBVE9SWV9GSUVMRFMgPSBbInYiLCAiaXAiLCAib3AiLCAibGF5ZXJzIiwgImZyIiwgInciLCAiaCJdOwogIHZhciBQQUNLQUdFX1ZFUlNJT04gPSAiMC4zMC4zIjsKICB2YXIgUEFDS0FHRV9OQU1FID0gIkBsb3R0aWVmaWxlcy9kb3Rsb3R0aWUtd2ViIjsKCiAgLy8gc3JjL2NvcmUvZG90bG90dGllLXBsYXllci5qcwogIHZhciBjcmVhdGVEb3RMb3R0aWVQbGF5ZXJNb2R1bGUgPSAoKCkgPT4gewogICAgdmFyIF9zY3JpcHREaXIgPSB0eXBlb2YgZG9jdW1lbnQgIT0gInVuZGVmaW5lZCIgPyBkb2N1bWVudC5jdXJyZW50U2NyaXB0Py5zcmMgOiB2b2lkIDA7CiAgICByZXR1cm4gZnVuY3Rpb24obW9kdWxlQXJnID0ge30pIHsKICAgICAgdmFyIGsgPSBtb2R1bGVBcmcsIGFhLCBiYSwgcmVhZHlQcm9taXNlID0gbmV3IFByb21pc2UoKGEsIGIpID0+IHsKICAgICAgICBhYSA9IGE7CiAgICAgICAgYmEgPSBiOwogICAgICB9KSwgY2EgPSBPYmplY3QuYXNzaWduKHt9LCBrKSwgZGEgPSAiLi90aGlzLnByb2dyYW0iLCB0ID0gIiI7CiAgICAgICJ1bmRlZmluZWQiICE9IHR5cGVvZiBkb2N1bWVudCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0ICYmICh0ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpOwogICAgICBfc2NyaXB0RGlyICYmICh0ID0gX3NjcmlwdERpcik7CiAgICAgIHQuc3RhcnRzV2l0aCgiYmxvYjoiKSA/IHQgPSAiIiA6IHQgPSB0LnN1YnN0cigwLCB0LnJlcGxhY2UoL1s/I10uKi8sICIiKS5sYXN0SW5kZXhPZigiLyIpICsgMSk7CiAgICAgIHZhciBlYSA9IGsucHJpbnQgfHwgY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwgdyA9IGsucHJpbnRFcnIgfHwgY29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpOwogICAgICBPYmplY3QuYXNzaWduKGssIGNhKTsKICAgICAgY2EgPSBudWxsOwogICAgICBrLnRoaXNQcm9ncmFtICYmIChkYSA9IGsudGhpc1Byb2dyYW0pOwogICAgICB2YXIgeDsKICAgICAgay53YXNtQmluYXJ5ICYmICh4ID0gay53YXNtQmluYXJ5KTsKICAgICAgdmFyIGZhLCBoYSA9IGZhbHNlLCB5LCBBLCBCLCBDLCBFLCBGLCBqYSwga2E7CiAgICAgIGZ1bmN0aW9uIGxhKCkgewogICAgICAgIHZhciBhID0gZmEuYnVmZmVyOwogICAgICAgIGsuSEVBUDggPSB5ID0gbmV3IEludDhBcnJheShhKTsKICAgICAgICBrLkhFQVAxNiA9IEIgPSBuZXcgSW50MTZBcnJheShhKTsKICAgICAgICBrLkhFQVBVOCA9IEEgPSBuZXcgVWludDhBcnJheShhKTsKICAgICAgICBrLkhFQVBVMTYgPSBDID0gbmV3IFVpbnQxNkFycmF5KGEpOwogICAgICAgIGsuSEVBUDMyID0gRSA9IG5ldyBJbnQzMkFycmF5KGEpOwogICAgICAgIGsuSEVBUFUzMiA9IEYgPSBuZXcgVWludDMyQXJyYXkoYSk7CiAgICAgICAgay5IRUFQRjMyID0gamEgPSBuZXcgRmxvYXQzMkFycmF5KGEpOwogICAgICAgIGsuSEVBUEY2NCA9IGthID0gbmV3IEZsb2F0NjRBcnJheShhKTsKICAgICAgfQogICAgICB2YXIgbWEgPSBbXSwgbmEgPSBbXSwgb2EgPSBbXTsKICAgICAgZnVuY3Rpb24gcGEoKSB7CiAgICAgICAgdmFyIGEgPSBrLnByZVJ1bi5zaGlmdCgpOwogICAgICAgIG1hLnVuc2hpZnQoYSk7CiAgICAgIH0KICAgICAgdmFyIEcgPSAwLCBxYSA9IG51bGwsIEggPSBudWxsOwogICAgICBmdW5jdGlvbiByYShhKSB7CiAgICAgICAgay5vbkFib3J0Py4oYSk7CiAgICAgICAgYSA9ICJBYm9ydGVkKCIgKyBhICsgIikiOwogICAgICAgIHcoYSk7CiAgICAgICAgaGEgPSB0cnVlOwogICAgICAgIGEgPSBuZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGEgKyAiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiIpOwogICAgICAgIGJhKGEpOwogICAgICAgIHRocm93IGE7CiAgICAgIH0KICAgICAgdmFyIHNhID0gKGEpID0+IGEuc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpLCBJOwogICAgICBJID0gIkRvdExvdHRpZVBsYXllci53YXNtIjsKICAgICAgaWYgKCFzYShJKSkgewogICAgICAgIHZhciB0YSA9IEk7CiAgICAgICAgSSA9IGsubG9jYXRlRmlsZSA/IGsubG9jYXRlRmlsZSh0YSwgdCkgOiB0ICsgdGE7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gdWEoYSkgewogICAgICAgIGlmIChhID09IEkgJiYgeCkgcmV0dXJuIG5ldyBVaW50OEFycmF5KHgpOwogICAgICAgIHRocm93ICJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCI7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gdmEoYSkgewogICAgICAgIHJldHVybiB4IHx8ICJmdW5jdGlvbiIgIT0gdHlwZW9mIGZldGNoID8gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB1YShhKSkgOiBmZXRjaChhLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pLnRoZW4oKGIpID0+IHsKICAgICAgICAgIGlmICghYi5vaykgdGhyb3cgYGZhaWxlZCB0byBsb2FkIHdhc20gYmluYXJ5IGZpbGUgYXQgJyR7YX0nYDsKICAgICAgICAgIHJldHVybiBiLmFycmF5QnVmZmVyKCk7CiAgICAgICAgfSkuY2F0Y2goKCkgPT4gdWEoYSkpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIHdhKGEsIGIsIGMpIHsKICAgICAgICByZXR1cm4gdmEoYSkudGhlbigoZCkgPT4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZCwgYikpLnRoZW4oYywgKGQpID0+IHsKICAgICAgICAgIHcoYGZhaWxlZCB0byBhc3luY2hyb25vdXNseSBwcmVwYXJlIHdhc206ICR7ZH1gKTsKICAgICAgICAgIHJhKGQpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIHhhKGEsIGIpIHsKICAgICAgICB2YXIgYyA9IEk7CiAgICAgICAgcmV0dXJuIHggfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcgfHwgc2EoYykgfHwgImZ1bmN0aW9uIiAhPSB0eXBlb2YgZmV0Y2ggPyB3YShjLCBhLCBiKSA6IGZldGNoKGMsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSkudGhlbigKICAgICAgICAgIChkKSA9PiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhkLCBhKS50aGVuKGIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdyhgd2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICR7ZX1gKTsKICAgICAgICAgICAgdygiZmFsbGluZyBiYWNrIHRvIEFycmF5QnVmZmVyIGluc3RhbnRpYXRpb24iKTsKICAgICAgICAgICAgcmV0dXJuIHdhKGMsIGEsIGIpOwogICAgICAgICAgfSkKICAgICAgICApOwogICAgICB9CiAgICAgIHZhciB5YSA9IChhKSA9PiB7CiAgICAgICAgZm9yICg7IDAgPCBhLmxlbmd0aDsgKSBhLnNoaWZ0KCkoayk7CiAgICAgIH0sIHphID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIFRleHREZWNvZGVyID8gbmV3IFRleHREZWNvZGVyKCJ1dGY4IikgOiB2b2lkIDAsIEogPSAoYSwgYiwgYykgPT4gewogICAgICAgIHZhciBkID0gYiArIGM7CiAgICAgICAgZm9yIChjID0gYjsgYVtjXSAmJiAhKGMgPj0gZCk7ICkgKytjOwogICAgICAgIGlmICgxNiA8IGMgLSBiICYmIGEuYnVmZmVyICYmIHphKSByZXR1cm4gemEuZGVjb2RlKGEuc3ViYXJyYXkoYiwgYykpOwogICAgICAgIGZvciAoZCA9ICIiOyBiIDwgYzsgKSB7CiAgICAgICAgICB2YXIgZSA9IGFbYisrXTsKICAgICAgICAgIGlmIChlICYgMTI4KSB7CiAgICAgICAgICAgIHZhciBmID0gYVtiKytdICYgNjM7CiAgICAgICAgICAgIGlmICgxOTIgPT0gKGUgJiAyMjQpKSBkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGUgJiAzMSkgPDwgNiB8IGYpOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICB2YXIgbCA9IGFbYisrXSAmIDYzOwogICAgICAgICAgICAgIGUgPSAyMjQgPT0gKGUgJiAyNDApID8gKGUgJiAxNSkgPDwgMTIgfCBmIDw8IDYgfCBsIDogKGUgJiA3KSA8PCAxOCB8IGYgPDwgMTIgfCBsIDw8IDYgfCBhW2IrK10gJiA2MzsKICAgICAgICAgICAgICA2NTUzNiA+IGUgPyBkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoZSkgOiAoZSAtPSA2NTUzNiwgZCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2IHwgZSA+PiAxMCwgNTYzMjAgfCBlICYgMTAyMykpOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgZCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZDsKICAgICAgfTsKICAgICAgY2xhc3MgQWEgewogICAgICAgIGNvbnN0cnVjdG9yKGEpIHsKICAgICAgICAgIHRoaXMueWEgPSBhIC0gMjQ7CiAgICAgICAgfQogICAgICB9CiAgICAgIHZhciBCYSA9IDAsIENhID0gMCwgRGEgPSAoYSkgPT4gewogICAgICAgIGZvciAodmFyIGIgPSAwLCBjID0gMDsgYyA8IGEubGVuZ3RoOyArK2MpIHsKICAgICAgICAgIHZhciBkID0gYS5jaGFyQ29kZUF0KGMpOwogICAgICAgICAgMTI3ID49IGQgPyBiKysgOiAyMDQ3ID49IGQgPyBiICs9IDIgOiA1NTI5NiA8PSBkICYmIDU3MzQzID49IGQgPyAoYiArPSA0LCArK2MpIDogYiArPSAzOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYjsKICAgICAgfSwgRWEgPSAoYSwgYiwgYywgZCkgPT4gewogICAgICAgIGlmICgwIDwgZCkgewogICAgICAgICAgZCA9IGMgKyBkIC0gMTsKICAgICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgYS5sZW5ndGg7ICsrZSkgewogICAgICAgICAgICB2YXIgZiA9IGEuY2hhckNvZGVBdChlKTsKICAgICAgICAgICAgaWYgKDU1Mjk2IDw9IGYgJiYgNTczNDMgPj0gZikgewogICAgICAgICAgICAgIHZhciBsID0gYS5jaGFyQ29kZUF0KCsrZSk7CiAgICAgICAgICAgICAgZiA9IDY1NTM2ICsgKChmICYgMTAyMykgPDwgMTApIHwgbCAmIDEwMjM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKDEyNyA+PSBmKSB7CiAgICAgICAgICAgICAgaWYgKGMgPj0gZCkgYnJlYWs7CiAgICAgICAgICAgICAgYltjKytdID0gZjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBpZiAoMjA0NyA+PSBmKSB7CiAgICAgICAgICAgICAgICBpZiAoYyArIDEgPj0gZCkgYnJlYWs7CiAgICAgICAgICAgICAgICBiW2MrK10gPSAxOTIgfCBmID4+IDY7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICg2NTUzNSA+PSBmKSB7CiAgICAgICAgICAgICAgICAgIGlmIChjICsgMiA+PSBkKSBicmVhazsKICAgICAgICAgICAgICAgICAgYltjKytdID0gMjI0IHwgZiA+PiAxMjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGlmIChjICsgMyA+PSBkKSBicmVhazsKICAgICAgICAgICAgICAgICAgYltjKytdID0gMjQwIHwgZiA+PiAxODsKICAgICAgICAgICAgICAgICAgYltjKytdID0gMTI4IHwgZiA+PiAxMiAmIDYzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYltjKytdID0gMTI4IHwgZiA+PiA2ICYgNjM7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJbYysrXSA9IDEyOCB8IGYgJiA2MzsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgYltjXSA9IDA7CiAgICAgICAgfQogICAgICB9LCBGYSA9IHt9LCBHYSA9IChhKSA9PiB7CiAgICAgICAgZm9yICg7IGEubGVuZ3RoOyApIHsKICAgICAgICAgIHZhciBiID0gYS5wb3AoKTsKICAgICAgICAgIGEucG9wKCkoYik7CiAgICAgICAgfQogICAgICB9OwogICAgICBmdW5jdGlvbiBLKGEpIHsKICAgICAgICByZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoRlthID4+IDJdKTsKICAgICAgfQogICAgICB2YXIgTCA9IHt9LCBNID0ge30sIEhhID0ge30sIElhLCBQID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBmdW5jdGlvbiBkKGgpIHsKICAgICAgICAgIGggPSBjKGgpOwogICAgICAgICAgaWYgKGgubGVuZ3RoICE9PSBhLmxlbmd0aCkgdGhyb3cgbmV3IElhKCJNaXNtYXRjaGVkIHR5cGUgY29udmVydGVyIGNvdW50Iik7CiAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGEubGVuZ3RoOyArK24pIE8oYVtuXSwgaFtuXSk7CiAgICAgICAgfQogICAgICAgIGEuZm9yRWFjaChmdW5jdGlvbihoKSB7CiAgICAgICAgICBIYVtoXSA9IGI7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGUgPSBBcnJheShiLmxlbmd0aCksIGYgPSBbXSwgbCA9IDA7CiAgICAgICAgYi5mb3JFYWNoKChoLCBuKSA9PiB7CiAgICAgICAgICBNLmhhc093blByb3BlcnR5KGgpID8gZVtuXSA9IE1baF0gOiAoZi5wdXNoKGgpLCBMLmhhc093blByb3BlcnR5KGgpIHx8IChMW2hdID0gW10pLCBMW2hdLnB1c2goKCkgPT4gewogICAgICAgICAgICBlW25dID0gTVtoXTsKICAgICAgICAgICAgKytsOwogICAgICAgICAgICBsID09PSBmLmxlbmd0aCAmJiBkKGUpOwogICAgICAgICAgfSkpOwogICAgICAgIH0pOwogICAgICAgIDAgPT09IGYubGVuZ3RoICYmIGQoZSk7CiAgICAgIH0sIEphLCBRID0gKGEpID0+IHsKICAgICAgICBmb3IgKHZhciBiID0gIiI7IEFbYV07ICkgYiArPSBKYVtBW2ErK11dOwogICAgICAgIHJldHVybiBiOwogICAgICB9LCBSOwogICAgICBmdW5jdGlvbiBLYShhLCBiLCBjID0ge30pIHsKICAgICAgICB2YXIgZCA9IGIubmFtZTsKICAgICAgICBpZiAoIWEpIHRocm93IG5ldyBSKGB0eXBlICIke2R9IiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyYCk7CiAgICAgICAgaWYgKE0uaGFzT3duUHJvcGVydHkoYSkpIHsKICAgICAgICAgIGlmIChjLmliKSByZXR1cm47CiAgICAgICAgICB0aHJvdyBuZXcgUihgQ2Fubm90IHJlZ2lzdGVyIHR5cGUgJyR7ZH0nIHR3aWNlYCk7CiAgICAgICAgfQogICAgICAgIE1bYV0gPSBiOwogICAgICAgIGRlbGV0ZSBIYVthXTsKICAgICAgICBMLmhhc093blByb3BlcnR5KGEpICYmIChiID0gTFthXSwgZGVsZXRlIExbYV0sIGIuZm9yRWFjaCgoZSkgPT4gZSgpKSk7CiAgICAgIH0KICAgICAgZnVuY3Rpb24gTyhhLCBiLCBjID0ge30pIHsKICAgICAgICBpZiAoISgiYXJnUGFja0FkdmFuY2UiIGluIGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWdpc3RlclR5cGUgcmVnaXN0ZXJlZEluc3RhbmNlIHJlcXVpcmVzIGFyZ1BhY2tBZHZhbmNlIik7CiAgICAgICAgcmV0dXJuIEthKGEsIGIsIGMpOwogICAgICB9CiAgICAgIHZhciBMYSA9IChhKSA9PiB7CiAgICAgICAgdGhyb3cgbmV3IFIoYS5tYS56YS54YS5uYW1lICsgIiBpbnN0YW5jZSBhbHJlYWR5IGRlbGV0ZWQiKTsKICAgICAgfSwgTWEgPSBmYWxzZSwgT2EgPSAoKSA9PiB7CiAgICAgIH0sIFBhID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBpZiAoYiA9PT0gYykgcmV0dXJuIGE7CiAgICAgICAgaWYgKHZvaWQgMCA9PT0gYy5DYSkgcmV0dXJuIG51bGw7CiAgICAgICAgYSA9IFBhKGEsIGIsIGMuQ2EpOwogICAgICAgIHJldHVybiBudWxsID09PSBhID8gbnVsbCA6IGMuYWIoYSk7CiAgICAgIH0sIFFhID0ge30sIFJhID0gW10sIFNhID0gKCkgPT4gewogICAgICAgIGZvciAoOyBSYS5sZW5ndGg7ICkgewogICAgICAgICAgdmFyIGEgPSBSYS5wb3AoKTsKICAgICAgICAgIGEubWEuS2EgPSBmYWxzZTsKICAgICAgICAgIGFbImRlbGV0ZSJdKCk7CiAgICAgICAgfQogICAgICB9LCBUYSwgVWEgPSB7fSwgVmEgPSAoYSwgYikgPT4gewogICAgICAgIGlmICh2b2lkIDAgPT09IGIpIHRocm93IG5ldyBSKCJwdHIgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQiKTsKICAgICAgICBmb3IgKDsgYS5DYTsgKSBiID0gYS5OYShiKSwgYSA9IGEuQ2E7CiAgICAgICAgcmV0dXJuIFVhW2JdOwogICAgICB9LCBYYSA9IChhLCBiKSA9PiB7CiAgICAgICAgaWYgKCFiLnphIHx8ICFiLnlhKSB0aHJvdyBuZXcgSWEoIm1ha2VDbGFzc0hhbmRsZSByZXF1aXJlcyBwdHIgYW5kIHB0clR5cGUiKTsKICAgICAgICBpZiAoISFiLkRhICE9PSAhIWIuQWEpIHRocm93IG5ldyBJYSgiQm90aCBzbWFydFB0clR5cGUgYW5kIHNtYXJ0UHRyIG11c3QgYmUgc3BlY2lmaWVkIik7CiAgICAgICAgYi5jb3VudCA9IHsgdmFsdWU6IDEgfTsKICAgICAgICByZXR1cm4gV2EoT2JqZWN0LmNyZWF0ZShhLCB7IG1hOiB7IHZhbHVlOiBiLCB3cml0YWJsZTogdHJ1ZSB9IH0pKTsKICAgICAgfSwgV2EgPSAoYSkgPT4gewogICAgICAgIGlmICgidW5kZWZpbmVkIiA9PT0gdHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5KSByZXR1cm4gV2EgPSAoYikgPT4gYiwgYTsKICAgICAgICBNYSA9IG5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoYikgPT4gewogICAgICAgICAgYiA9IGIubWE7CiAgICAgICAgICAtLWIuY291bnQudmFsdWU7CiAgICAgICAgICAwID09PSBiLmNvdW50LnZhbHVlICYmIChiLkFhID8gYi5EYS5GYShiLkFhKSA6IGIuemEueGEuRmEoYi55YSkpOwogICAgICAgIH0pOwogICAgICAgIFdhID0gKGIpID0+IHsKICAgICAgICAgIHZhciBjID0gYi5tYTsKICAgICAgICAgIGMuQWEgJiYgTWEucmVnaXN0ZXIoYiwgeyBtYTogYyB9LCBiKTsKICAgICAgICAgIHJldHVybiBiOwogICAgICAgIH07CiAgICAgICAgT2EgPSAoYikgPT4gewogICAgICAgICAgTWEudW5yZWdpc3RlcihiKTsKICAgICAgICB9OwogICAgICAgIHJldHVybiBXYShhKTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gWWEoKSB7CiAgICAgIH0KICAgICAgdmFyIFphID0gKGEsIGIpID0+IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCAibmFtZSIsIHsgdmFsdWU6IGEgfSksICRhID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBpZiAodm9pZCAwID09PSBhW2JdLkJhKSB7CiAgICAgICAgICB2YXIgZCA9IGFbYl07CiAgICAgICAgICBhW2JdID0gZnVuY3Rpb24oLi4uZSkgewogICAgICAgICAgICBpZiAoIWFbYl0uQmEuaGFzT3duUHJvcGVydHkoZS5sZW5ndGgpKQogICAgICAgICAgICAgIHRocm93IG5ldyBSKAogICAgICAgICAgICAgICAgYEZ1bmN0aW9uICcke2N9JyBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgKCR7ZS5sZW5ndGh9KSAtIGV4cGVjdHMgb25lIG9mICgke2FbYl0uQmF9KSFgCiAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIGFbYl0uQmFbZS5sZW5ndGhdLmFwcGx5KHRoaXMsIGUpOwogICAgICAgICAgfTsKICAgICAgICAgIGFbYl0uQmEgPSBbXTsKICAgICAgICAgIGFbYl0uQmFbZC5PYV0gPSBkOwogICAgICAgIH0KICAgICAgfSwgYWIgPSAoYSwgYiwgYykgPT4gewogICAgICAgIGlmIChrLmhhc093blByb3BlcnR5KGEpKSB7CiAgICAgICAgICBpZiAodm9pZCAwID09PSBjIHx8IHZvaWQgMCAhPT0ga1thXS5CYSAmJiB2b2lkIDAgIT09IGtbYV0uQmFbY10pCiAgICAgICAgICAgIHRocm93IG5ldyBSKGBDYW5ub3QgcmVnaXN0ZXIgcHVibGljIG5hbWUgJyR7YX0nIHR3aWNlYCk7CiAgICAgICAgICAkYShrLCBhLCBhKTsKICAgICAgICAgIGlmIChrLmhhc093blByb3BlcnR5KGMpKQogICAgICAgICAgICB0aHJvdyBuZXcgUihgQ2Fubm90IHJlZ2lzdGVyIG11bHRpcGxlIG92ZXJsb2FkcyBvZiBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGFyZ3VtZW50cyAoJHtjfSkhYCk7CiAgICAgICAgICBrW2FdLkJhW2NdID0gYjsKICAgICAgICB9IGVsc2Uga1thXSA9IGIsIHZvaWQgMCAhPT0gYyAmJiAoa1thXS52YiA9IGMpOwogICAgICB9LCBiYiA9IChhKSA9PiB7CiAgICAgICAgaWYgKHZvaWQgMCA9PT0gYSkgcmV0dXJuICJfdW5rbm93biI7CiAgICAgICAgYSA9IGEucmVwbGFjZSgvW15hLXpBLVowLTlfXS9nLCAiJCIpOwogICAgICAgIHZhciBiID0gYS5jaGFyQ29kZUF0KDApOwogICAgICAgIHJldHVybiA0OCA8PSBiICYmIDU3ID49IGIgPyBgXyR7YX1gIDogYTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gY2IoYSwgYiwgYywgZCwgZSwgZiwgbCwgaCkgewogICAgICAgIHRoaXMubmFtZSA9IGE7CiAgICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGI7CiAgICAgICAgdGhpcy5MYSA9IGM7CiAgICAgICAgdGhpcy5GYSA9IGQ7CiAgICAgICAgdGhpcy5DYSA9IGU7CiAgICAgICAgdGhpcy5jYiA9IGY7CiAgICAgICAgdGhpcy5OYSA9IGw7CiAgICAgICAgdGhpcy5hYiA9IGg7CiAgICAgICAgdGhpcy5rYiA9IFtdOwogICAgICB9CiAgICAgIHZhciBkYiA9IChhLCBiLCBjKSA9PiB7CiAgICAgICAgZm9yICg7IGIgIT09IGM7ICkgewogICAgICAgICAgaWYgKCFiLk5hKSB0aHJvdyBuZXcgUihgRXhwZWN0ZWQgbnVsbCBvciBpbnN0YW5jZSBvZiAke2MubmFtZX0sIGdvdCBhbiBpbnN0YW5jZSBvZiAke2IubmFtZX1gKTsKICAgICAgICAgIGEgPSBiLk5hKGEpOwogICAgICAgICAgYiA9IGIuQ2E7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhOwogICAgICB9OwogICAgICBmdW5jdGlvbiBlYihhLCBiKSB7CiAgICAgICAgaWYgKG51bGwgPT09IGIpIHsKICAgICAgICAgIGlmICh0aGlzLlRhKSB0aHJvdyBuZXcgUihgbnVsbCBpcyBub3QgYSB2YWxpZCAke3RoaXMubmFtZX1gKTsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBpZiAoIWIubWEpIHRocm93IG5ldyBSKGBDYW5ub3QgcGFzcyAiJHtmYihiKX0iIGFzIGEgJHt0aGlzLm5hbWV9YCk7CiAgICAgICAgaWYgKCFiLm1hLnlhKSB0aHJvdyBuZXcgUihgQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgJHt0aGlzLm5hbWV9YCk7CiAgICAgICAgcmV0dXJuIGRiKGIubWEueWEsIGIubWEuemEueGEsIHRoaXMueGEpOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGdiKGEsIGIpIHsKICAgICAgICBpZiAobnVsbCA9PT0gYikgewogICAgICAgICAgaWYgKHRoaXMuVGEpIHRocm93IG5ldyBSKGBudWxsIGlzIG5vdCBhIHZhbGlkICR7dGhpcy5uYW1lfWApOwogICAgICAgICAgaWYgKHRoaXMuUWEpIHsKICAgICAgICAgICAgdmFyIGMgPSB0aGlzLlVhKCk7CiAgICAgICAgICAgIG51bGwgIT09IGEgJiYgYS5wdXNoKHRoaXMuRmEsIGMpOwogICAgICAgICAgICByZXR1cm4gYzsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBpZiAoIWIgfHwgIWIubWEpIHRocm93IG5ldyBSKGBDYW5ub3QgcGFzcyAiJHtmYihiKX0iIGFzIGEgJHt0aGlzLm5hbWV9YCk7CiAgICAgICAgaWYgKCFiLm1hLnlhKSB0aHJvdyBuZXcgUihgQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgJHt0aGlzLm5hbWV9YCk7CiAgICAgICAgaWYgKCF0aGlzLlBhICYmIGIubWEuemEuUGEpCiAgICAgICAgICB0aHJvdyBuZXcgUigKICAgICAgICAgICAgYENhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgJHtiLm1hLkRhID8gYi5tYS5EYS5uYW1lIDogYi5tYS56YS5uYW1lfSB0byBwYXJhbWV0ZXIgdHlwZSAke3RoaXMubmFtZX1gCiAgICAgICAgICApOwogICAgICAgIGMgPSBkYihiLm1hLnlhLCBiLm1hLnphLnhhLCB0aGlzLnhhKTsKICAgICAgICBpZiAodGhpcy5RYSkgewogICAgICAgICAgaWYgKHZvaWQgMCA9PT0gYi5tYS5BYSkgdGhyb3cgbmV3IFIoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIik7CiAgICAgICAgICBzd2l0Y2ggKHRoaXMucGIpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGlmIChiLm1hLkRhID09PSB0aGlzKSBjID0gYi5tYS5BYTsKICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUigKICAgICAgICAgICAgICAgICAgYENhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgJHtiLm1hLkRhID8gYi5tYS5EYS5uYW1lIDogYi5tYS56YS5uYW1lfSB0byBwYXJhbWV0ZXIgdHlwZSAke3RoaXMubmFtZX1gCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgYyA9IGIubWEuQWE7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBpZiAoYi5tYS5EYSA9PT0gdGhpcykgYyA9IGIubWEuQWE7CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgZCA9IGIuY2xvbmUoKTsKICAgICAgICAgICAgICAgIGMgPSB0aGlzLmxiKAogICAgICAgICAgICAgICAgICBjLAogICAgICAgICAgICAgICAgICBoYigoKSA9PiBkWyJkZWxldGUiXSgpKQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG51bGwgIT09IGEgJiYgYS5wdXNoKHRoaXMuRmEsIGMpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICB0aHJvdyBuZXcgUigiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iik7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjOwogICAgICB9CiAgICAgIGZ1bmN0aW9uIGliKGEsIGIpIHsKICAgICAgICBpZiAobnVsbCA9PT0gYikgewogICAgICAgICAgaWYgKHRoaXMuVGEpIHRocm93IG5ldyBSKGBudWxsIGlzIG5vdCBhIHZhbGlkICR7dGhpcy5uYW1lfWApOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIGlmICghYi5tYSkgdGhyb3cgbmV3IFIoYENhbm5vdCBwYXNzICIke2ZiKGIpfSIgYXMgYSAke3RoaXMubmFtZX1gKTsKICAgICAgICBpZiAoIWIubWEueWEpIHRocm93IG5ldyBSKGBDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAke3RoaXMubmFtZX1gKTsKICAgICAgICBpZiAoYi5tYS56YS5QYSkgdGhyb3cgbmV3IFIoYENhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgJHtiLm1hLnphLm5hbWV9IHRvIHBhcmFtZXRlciB0eXBlICR7dGhpcy5uYW1lfWApOwogICAgICAgIHJldHVybiBkYihiLm1hLnlhLCBiLm1hLnphLnhhLCB0aGlzLnhhKTsKICAgICAgfQogICAgICBmdW5jdGlvbiBqYihhLCBiLCBjLCBkLCBlLCBmLCBsLCBoLCBuLCBtLCBwKSB7CiAgICAgICAgdGhpcy5uYW1lID0gYTsKICAgICAgICB0aGlzLnhhID0gYjsKICAgICAgICB0aGlzLlRhID0gYzsKICAgICAgICB0aGlzLlBhID0gZDsKICAgICAgICB0aGlzLlFhID0gZTsKICAgICAgICB0aGlzLmpiID0gZjsKICAgICAgICB0aGlzLnBiID0gbDsKICAgICAgICB0aGlzLlphID0gaDsKICAgICAgICB0aGlzLlVhID0gbjsKICAgICAgICB0aGlzLmxiID0gbTsKICAgICAgICB0aGlzLkZhID0gcDsKICAgICAgICBlIHx8IHZvaWQgMCAhPT0gYi5DYSA/IHRoaXMudG9XaXJlVHlwZSA9IGdiIDogKHRoaXMudG9XaXJlVHlwZSA9IGQgPyBlYiA6IGliLCB0aGlzLkVhID0gbnVsbCk7CiAgICAgIH0KICAgICAgdmFyIGtiID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBpZiAoIWsuaGFzT3duUHJvcGVydHkoYSkpIHRocm93IG5ldyBJYSgiUmVwbGFjaW5nIG5vbmV4aXN0ZW50IHB1YmxpYyBzeW1ib2wiKTsKICAgICAgICB2b2lkIDAgIT09IGtbYV0uQmEgJiYgdm9pZCAwICE9PSBjID8ga1thXS5CYVtjXSA9IGIgOiAoa1thXSA9IGIsIGtbYV0uT2EgPSBjKTsKICAgICAgfSwgUywgbGIgPSAoYSwgYiwgYyA9IFtdKSA9PiB7CiAgICAgICAgYS5pbmNsdWRlcygiaiIpID8gKGEgPSBhLnJlcGxhY2UoL3AvZywgImkiKSwgYiA9ICgwLCBrWyJkeW5DYWxsXyIgKyBhXSkoYiwgLi4uYykpIDogYiA9IFMuZ2V0KGIpKC4uLmMpOwogICAgICAgIHJldHVybiBiOwogICAgICB9LCBtYiA9IChhLCBiKSA9PiAoLi4uYykgPT4gbGIoYSwgYiwgYyksIFQgPSAoYSwgYikgPT4gewogICAgICAgIGEgPSBRKGEpOwogICAgICAgIHZhciBjID0gYS5pbmNsdWRlcygiaiIpID8gbWIoYSwgYikgOiBTLmdldChiKTsKICAgICAgICBpZiAoImZ1bmN0aW9uIiAhPSB0eXBlb2YgYykgdGhyb3cgbmV3IFIoYHVua25vd24gZnVuY3Rpb24gcG9pbnRlciB3aXRoIHNpZ25hdHVyZSAke2F9OiAke2J9YCk7CiAgICAgICAgcmV0dXJuIGM7CiAgICAgIH0sIG5iLCBwYiA9IChhKSA9PiB7CiAgICAgICAgYSA9IG9iKGEpOwogICAgICAgIHZhciBiID0gUShhKTsKICAgICAgICBVKGEpOwogICAgICAgIHJldHVybiBiOwogICAgICB9LCBxYiA9IChhLCBiKSA9PiB7CiAgICAgICAgZnVuY3Rpb24gYyhmKSB7CiAgICAgICAgICBlW2ZdIHx8IE1bZl0gfHwgKEhhW2ZdID8gSGFbZl0uZm9yRWFjaChjKSA6IChkLnB1c2goZiksIGVbZl0gPSB0cnVlKSk7CiAgICAgICAgfQogICAgICAgIHZhciBkID0gW10sIGUgPSB7fTsKICAgICAgICBiLmZvckVhY2goYyk7CiAgICAgICAgdGhyb3cgbmV3IG5iKGAke2F9OiBgICsgZC5tYXAocGIpLmpvaW4oWyIsICJdKSk7CiAgICAgIH0sIHJiID0gKGEsIGIpID0+IHsKICAgICAgICBmb3IgKHZhciBjID0gW10sIGQgPSAwOyBkIDwgYTsgZCsrKSBjLnB1c2goRltiICsgNCAqIGQgPj4gMl0pOwogICAgICAgIHJldHVybiBjOwogICAgICB9OwogICAgICBmdW5jdGlvbiBzYihhKSB7CiAgICAgICAgZm9yICh2YXIgYiA9IDE7IGIgPCBhLmxlbmd0aDsgKytiKSBpZiAobnVsbCAhPT0gYVtiXSAmJiB2b2lkIDAgPT09IGFbYl0uRWEpIHJldHVybiB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICBmdW5jdGlvbiB0YihhLCBiLCBjLCBkLCBlKSB7CiAgICAgICAgdmFyIGYgPSBiLmxlbmd0aDsKICAgICAgICBpZiAoMiA+IGYpIHRocm93IG5ldyBSKCJhcmdUeXBlcyBhcnJheSBzaXplIG1pc21hdGNoISBNdXN0IGF0IGxlYXN0IGdldCByZXR1cm4gdmFsdWUgYW5kICd0aGlzJyB0eXBlcyEiKTsKICAgICAgICB2YXIgbCA9IG51bGwgIT09IGJbMV0gJiYgbnVsbCAhPT0gYywgaCA9IHNiKGIpLCBuID0gInZvaWQiICE9PSBiWzBdLm5hbWUsIG0gPSBmIC0gMiwgcCA9IEFycmF5KG0pLCB1ID0gW10sIHYgPSBbXTsKICAgICAgICByZXR1cm4gWmEoYSwgZnVuY3Rpb24oLi4uZykgewogICAgICAgICAgaWYgKGcubGVuZ3RoICE9PSBtKSB0aHJvdyBuZXcgUihgZnVuY3Rpb24gJHthfSBjYWxsZWQgd2l0aCAke2cubGVuZ3RofSBhcmd1bWVudHMsIGV4cGVjdGVkICR7bX1gKTsKICAgICAgICAgIHYubGVuZ3RoID0gMDsKICAgICAgICAgIHUubGVuZ3RoID0gbCA/IDIgOiAxOwogICAgICAgICAgdVswXSA9IGU7CiAgICAgICAgICBpZiAobCkgewogICAgICAgICAgICB2YXIgcSA9IGJbMV0udG9XaXJlVHlwZSh2LCB0aGlzKTsKICAgICAgICAgICAgdVsxXSA9IHE7CiAgICAgICAgICB9CiAgICAgICAgICBmb3IgKHZhciByID0gMDsgciA8IG07ICsrcikgcFtyXSA9IGJbciArIDJdLnRvV2lyZVR5cGUodiwgZ1tyXSksIHUucHVzaChwW3JdKTsKICAgICAgICAgIGcgPSBkKC4uLnUpOwogICAgICAgICAgaWYgKGgpIEdhKHYpOwogICAgICAgICAgZWxzZQogICAgICAgICAgICBmb3IgKHIgPSBsID8gMSA6IDI7IHIgPCBiLmxlbmd0aDsgcisrKSB7CiAgICAgICAgICAgICAgdmFyIHogPSAxID09PSByID8gcSA6IHBbciAtIDJdOwogICAgICAgICAgICAgIG51bGwgIT09IGJbcl0uRWEgJiYgYltyXS5FYSh6KTsKICAgICAgICAgICAgfQogICAgICAgICAgcSA9IG4gPyBiWzBdLmZyb21XaXJlVHlwZShnKSA6IHZvaWQgMDsKICAgICAgICAgIHJldHVybiBxOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHZhciB1YiA9IChhKSA9PiB7CiAgICAgICAgYSA9IGEudHJpbSgpOwogICAgICAgIGNvbnN0IGIgPSBhLmluZGV4T2YoIigiKTsKICAgICAgICByZXR1cm4gLTEgIT09IGIgPyBhLnN1YnN0cigwLCBiKSA6IGE7CiAgICAgIH0sIHZiID0gW10sIFYgPSBbXSwgd2IgPSAoYSkgPT4gewogICAgICAgIDkgPCBhICYmIDAgPT09IC0tVlthICsgMV0gJiYgKFZbYV0gPSB2b2lkIDAsIHZiLnB1c2goYSkpOwogICAgICB9LCB5YiA9IChhKSA9PiB7CiAgICAgICAgaWYgKCFhKSB0aHJvdyBuZXcgUigiQ2Fubm90IHVzZSBkZWxldGVkIHZhbC4gaGFuZGxlID0gIiArIGEpOwogICAgICAgIHJldHVybiBWW2FdOwogICAgICB9LCBoYiA9IChhKSA9PiB7CiAgICAgICAgc3dpdGNoIChhKSB7CiAgICAgICAgICBjYXNlIHZvaWQgMDoKICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgICBjYXNlIG51bGw6CiAgICAgICAgICAgIHJldHVybiA0OwogICAgICAgICAgY2FzZSB0cnVlOgogICAgICAgICAgICByZXR1cm4gNjsKICAgICAgICAgIGNhc2UgZmFsc2U6CiAgICAgICAgICAgIHJldHVybiA4OwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgY29uc3QgYiA9IHZiLnBvcCgpIHx8IFYubGVuZ3RoOwogICAgICAgICAgICBWW2JdID0gYTsKICAgICAgICAgICAgVltiICsgMV0gPSAxOwogICAgICAgICAgICByZXR1cm4gYjsKICAgICAgICB9CiAgICAgIH0sIHpiID0gewogICAgICAgIG5hbWU6ICJlbXNjcmlwdGVuOjp2YWwiLAogICAgICAgIGZyb21XaXJlVHlwZTogKGEpID0+IHsKICAgICAgICAgIHZhciBiID0geWIoYSk7CiAgICAgICAgICB3YihhKTsKICAgICAgICAgIHJldHVybiBiOwogICAgICAgIH0sCiAgICAgICAgdG9XaXJlVHlwZTogKGEsIGIpID0+IGhiKGIpLAogICAgICAgIGFyZ1BhY2tBZHZhbmNlOiA4LAogICAgICAgIHJlYWRWYWx1ZUZyb21Qb2ludGVyOiBLLAogICAgICAgIEVhOiBudWxsCiAgICAgIH0sIEFiID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBzd2l0Y2ggKGIpIHsKICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgcmV0dXJuIGMgPyBmdW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKHlbZF0pOwogICAgICAgICAgICB9IDogZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShBW2RdKTsKICAgICAgICAgICAgfTsKICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgcmV0dXJuIGMgPyBmdW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKEJbZCA+PiAxXSk7CiAgICAgICAgICAgIH0gOiBmdW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKENbZCA+PiAxXSk7CiAgICAgICAgICAgIH07CiAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIHJldHVybiBjID8gZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShFW2QgPj4gMl0pOwogICAgICAgICAgICB9IDogZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShGW2QgPj4gMl0pOwogICAgICAgICAgICB9OwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgaW52YWxpZCBpbnRlZ2VyIHdpZHRoICgke2J9KTogJHthfWApOwogICAgICAgIH0KICAgICAgfSwgQmIgPSAoYSwgYikgPT4gewogICAgICAgIHZhciBjID0gTVthXTsKICAgICAgICBpZiAodm9pZCAwID09PSBjKSB0aHJvdyBhID0gYCR7Yn0gaGFzIHVua25vd24gdHlwZSAke3BiKGEpfWAsIG5ldyBSKGEpOwogICAgICAgIHJldHVybiBjOwogICAgICB9LCBmYiA9IChhKSA9PiB7CiAgICAgICAgaWYgKG51bGwgPT09IGEpIHJldHVybiAibnVsbCI7CiAgICAgICAgdmFyIGIgPSB0eXBlb2YgYTsKICAgICAgICByZXR1cm4gIm9iamVjdCIgPT09IGIgfHwgImFycmF5IiA9PT0gYiB8fCAiZnVuY3Rpb24iID09PSBiID8gYS50b1N0cmluZygpIDogIiIgKyBhOwogICAgICB9LCBDYiA9IChhLCBiKSA9PiB7CiAgICAgICAgc3dpdGNoIChiKSB7CiAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihjKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKGphW2MgPj4gMl0pOwogICAgICAgICAgICB9OwogICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oYykgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShrYVtjID4+IDNdKTsKICAgICAgICAgICAgfTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgZmxvYXQgd2lkdGggKCR7Yn0pOiAke2F9YCk7CiAgICAgICAgfQogICAgICB9LCBEYiA9IChhLCBiLCBjKSA9PiB7CiAgICAgICAgc3dpdGNoIChiKSB7CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHJldHVybiBjID8gKGQpID0+IHlbZF0gOiAoZCkgPT4gQVtkXTsKICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgcmV0dXJuIGMgPyAoZCkgPT4gQltkID4+IDFdIDogKGQpID0+IENbZCA+PiAxXTsKICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgcmV0dXJuIGMgPyAoZCkgPT4gRVtkID4+IDJdIDogKGQpID0+IEZbZCA+PiAyXTsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYGludmFsaWQgaW50ZWdlciB3aWR0aCAoJHtifSk6ICR7YX1gKTsKICAgICAgICB9CiAgICAgIH0sIEViID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIFRleHREZWNvZGVyID8gbmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpIDogdm9pZCAwLCBGYiA9IChhLCBiKSA9PiB7CiAgICAgICAgdmFyIGMgPSBhID4+IDE7CiAgICAgICAgZm9yICh2YXIgZCA9IGMgKyBiIC8gMjsgIShjID49IGQpICYmIENbY107ICkgKytjOwogICAgICAgIGMgPDw9IDE7CiAgICAgICAgaWYgKDMyIDwgYyAtIGEgJiYgRWIpIHJldHVybiBFYi5kZWNvZGUoQS5zdWJhcnJheShhLCBjKSk7CiAgICAgICAgYyA9ICIiOwogICAgICAgIGZvciAoZCA9IDA7ICEoZCA+PSBiIC8gMik7ICsrZCkgewogICAgICAgICAgdmFyIGUgPSBCW2EgKyAyICogZCA+PiAxXTsKICAgICAgICAgIGlmICgwID09IGUpIGJyZWFrOwogICAgICAgICAgYyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYzsKICAgICAgfSwgR2IgPSAoYSwgYiwgYykgPT4gewogICAgICAgIGMgPz8gKGMgPSAyMTQ3NDgzNjQ3KTsKICAgICAgICBpZiAoMiA+IGMpIHJldHVybiAwOwogICAgICAgIGMgLT0gMjsKICAgICAgICB2YXIgZCA9IGI7CiAgICAgICAgYyA9IGMgPCAyICogYS5sZW5ndGggPyBjIC8gMiA6IGEubGVuZ3RoOwogICAgICAgIGZvciAodmFyIGUgPSAwOyBlIDwgYzsgKytlKSBCW2IgPj4gMV0gPSBhLmNoYXJDb2RlQXQoZSksIGIgKz0gMjsKICAgICAgICBCW2IgPj4gMV0gPSAwOwogICAgICAgIHJldHVybiBiIC0gZDsKICAgICAgfSwgSGIgPSAoYSkgPT4gMiAqIGEubGVuZ3RoLCBJYiA9IChhLCBiKSA9PiB7CiAgICAgICAgZm9yICh2YXIgYyA9IDAsIGQgPSAiIjsgIShjID49IGIgLyA0KTsgKSB7CiAgICAgICAgICB2YXIgZSA9IEVbYSArIDQgKiBjID4+IDJdOwogICAgICAgICAgaWYgKDAgPT0gZSkgYnJlYWs7CiAgICAgICAgICArK2M7CiAgICAgICAgICA2NTUzNiA8PSBlID8gKGUgLT0gNjU1MzYsIGQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NiB8IGUgPj4gMTAsIDU2MzIwIHwgZSAmIDEwMjMpKSA6IGQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGQ7CiAgICAgIH0sIEpiID0gKGEsIGIsIGMpID0+IHsKICAgICAgICBjID8/IChjID0gMjE0NzQ4MzY0Nyk7CiAgICAgICAgaWYgKDQgPiBjKSByZXR1cm4gMDsKICAgICAgICB2YXIgZCA9IGI7CiAgICAgICAgYyA9IGQgKyBjIC0gNDsKICAgICAgICBmb3IgKHZhciBlID0gMDsgZSA8IGEubGVuZ3RoOyArK2UpIHsKICAgICAgICAgIHZhciBmID0gYS5jaGFyQ29kZUF0KGUpOwogICAgICAgICAgaWYgKDU1Mjk2IDw9IGYgJiYgNTczNDMgPj0gZikgewogICAgICAgICAgICB2YXIgbCA9IGEuY2hhckNvZGVBdCgrK2UpOwogICAgICAgICAgICBmID0gNjU1MzYgKyAoKGYgJiAxMDIzKSA8PCAxMCkgfCBsICYgMTAyMzsKICAgICAgICAgIH0KICAgICAgICAgIEVbYiA+PiAyXSA9IGY7CiAgICAgICAgICBiICs9IDQ7CiAgICAgICAgICBpZiAoYiArIDQgPiBjKSBicmVhazsKICAgICAgICB9CiAgICAgICAgRVtiID4+IDJdID0gMDsKICAgICAgICByZXR1cm4gYiAtIGQ7CiAgICAgIH0sIEtiID0gKGEpID0+IHsKICAgICAgICBmb3IgKHZhciBiID0gMCwgYyA9IDA7IGMgPCBhLmxlbmd0aDsgKytjKSB7CiAgICAgICAgICB2YXIgZCA9IGEuY2hhckNvZGVBdChjKTsKICAgICAgICAgIDU1Mjk2IDw9IGQgJiYgNTczNDMgPj0gZCAmJiArK2M7CiAgICAgICAgICBiICs9IDQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiBiOwogICAgICB9LCBMYiA9IFtdLCBNYiA9IChhKSA9PiB7CiAgICAgICAgdmFyIGIgPSBMYi5sZW5ndGg7CiAgICAgICAgTGIucHVzaChhKTsKICAgICAgICByZXR1cm4gYjsKICAgICAgfSwgTmIgPSAoYSwgYikgPT4gewogICAgICAgIGZvciAodmFyIGMgPSBBcnJheShhKSwgZCA9IDA7IGQgPCBhOyArK2QpIGNbZF0gPSBCYihGW2IgKyA0ICogZCA+PiAyXSwgInBhcmFtZXRlciAiICsgZCk7CiAgICAgICAgcmV0dXJuIGM7CiAgICAgIH0sIE9iID0gUmVmbGVjdC5jb25zdHJ1Y3QsIFBiID0ge30sIFJiID0gKCkgPT4gewogICAgICAgIGlmICghUWIpIHsKICAgICAgICAgIHZhciBhID0gewogICAgICAgICAgICBVU0VSOiAid2ViX3VzZXIiLAogICAgICAgICAgICBMT0dOQU1FOiAid2ViX3VzZXIiLAogICAgICAgICAgICBQQVRIOiAiLyIsCiAgICAgICAgICAgIFBXRDogIi8iLAogICAgICAgICAgICBIT01FOiAiL2hvbWUvd2ViX3VzZXIiLAogICAgICAgICAgICBMQU5HOiAoIm9iamVjdCIgPT0gdHlwZW9mIG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IubGFuZ3VhZ2VzICYmIG5hdmlnYXRvci5sYW5ndWFnZXNbMF0gfHwgIkMiKS5yZXBsYWNlKAogICAgICAgICAgICAgICItIiwKICAgICAgICAgICAgICAiXyIKICAgICAgICAgICAgKSArICIuVVRGLTgiLAogICAgICAgICAgICBfOiBkYSB8fCAiLi90aGlzLnByb2dyYW0iCiAgICAgICAgICB9LCBiOwogICAgICAgICAgZm9yIChiIGluIFBiKSB2b2lkIDAgPT09IFBiW2JdID8gZGVsZXRlIGFbYl0gOiBhW2JdID0gUGJbYl07CiAgICAgICAgICB2YXIgYyA9IFtdOwogICAgICAgICAgZm9yIChiIGluIGEpIGMucHVzaChgJHtifT0ke2FbYl19YCk7CiAgICAgICAgICBRYiA9IGM7CiAgICAgICAgfQogICAgICAgIHJldHVybiBRYjsKICAgICAgfSwgUWIsIFNiID0gW251bGwsIFtdLCBbXV0sIFRiID0gKCkgPT4gewogICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgY3J5cHRvICYmICJmdW5jdGlvbiIgPT0gdHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpCiAgICAgICAgICByZXR1cm4gKGEpID0+IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYSk7CiAgICAgICAgcmEoImluaXRSYW5kb21EZXZpY2UiKTsKICAgICAgfSwgVWIgPSAoYSkgPT4gKFViID0gVGIoKSkoYSksIFZiID0gKGEpID0+IDAgPT09IGEgJSA0ICYmICgwICE9PSBhICUgMTAwIHx8IDAgPT09IGEgJSA0MDApLCBXYiA9IFszMSwgMjksIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXSwgWGIgPSBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07CiAgICAgIGZ1bmN0aW9uIFliKGEpIHsKICAgICAgICB2YXIgYiA9IEFycmF5KERhKGEpICsgMSk7CiAgICAgICAgRWEoYSwgYiwgMCwgYi5sZW5ndGgpOwogICAgICAgIHJldHVybiBiOwogICAgICB9CiAgICAgIHZhciBaYiA9IChhLCBiLCBjLCBkKSA9PiB7CiAgICAgICAgZnVuY3Rpb24gZShnLCBxLCByKSB7CiAgICAgICAgICBmb3IgKGcgPSAibnVtYmVyIiA9PSB0eXBlb2YgZyA/IGcudG9TdHJpbmcoKSA6IGcgfHwgIiI7IGcubGVuZ3RoIDwgcTsgKSBnID0gclswXSArIGc7CiAgICAgICAgICByZXR1cm4gZzsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gZihnLCBxKSB7CiAgICAgICAgICByZXR1cm4gZShnLCBxLCAiMCIpOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBsKGcsIHEpIHsKICAgICAgICAgIGZ1bmN0aW9uIHIoTikgewogICAgICAgICAgICByZXR1cm4gMCA+IE4gPyAtMSA6IDAgPCBOID8gMSA6IDA7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgejsKICAgICAgICAgIDAgPT09ICh6ID0gcihnLmdldEZ1bGxZZWFyKCkgLSBxLmdldEZ1bGxZZWFyKCkpKSAmJiAwID09PSAoeiA9IHIoZy5nZXRNb250aCgpIC0gcS5nZXRNb250aCgpKSkgJiYgKHogPSByKGcuZ2V0RGF0ZSgpIC0gcS5nZXREYXRlKCkpKTsKICAgICAgICAgIHJldHVybiB6OwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBoKGcpIHsKICAgICAgICAgIHN3aXRjaCAoZy5nZXREYXkoKSkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGcuZ2V0RnVsbFllYXIoKSAtIDEsIDExLCAyOSk7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICByZXR1cm4gZzsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShnLmdldEZ1bGxZZWFyKCksIDAsIDMpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGcuZ2V0RnVsbFllYXIoKSwgMCwgMik7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZy5nZXRGdWxsWWVhcigpLCAwLCAxKTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShnLmdldEZ1bGxZZWFyKCkgLSAxLCAxMSwgMzEpOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGcuZ2V0RnVsbFllYXIoKSAtIDEsIDExLCAzMCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIG4oZykgewogICAgICAgICAgdmFyIHEgPSBnLklhOwogICAgICAgICAgZm9yIChnID0gbmV3IERhdGUobmV3IERhdGUoZy5KYSArIDE5MDAsIDAsIDEpLmdldFRpbWUoKSk7IDAgPCBxOyApIHsKICAgICAgICAgICAgdmFyIHIgPSBnLmdldE1vbnRoKCksIHogPSAoVmIoZy5nZXRGdWxsWWVhcigpKSA/IFdiIDogWGIpW3JdOwogICAgICAgICAgICBpZiAocSA+IHogLSBnLmdldERhdGUoKSkKICAgICAgICAgICAgICBxIC09IHogLSBnLmdldERhdGUoKSArIDEsIGcuc2V0RGF0ZSgxKSwgMTEgPiByID8gZy5zZXRNb250aChyICsgMSkgOiAoZy5zZXRNb250aCgwKSwgZy5zZXRGdWxsWWVhcihnLmdldEZ1bGxZZWFyKCkgKyAxKSk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGcuc2V0RGF0ZShnLmdldERhdGUoKSArIHEpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICByID0gbmV3IERhdGUoZy5nZXRGdWxsWWVhcigpICsgMSwgMCwgNCk7CiAgICAgICAgICBxID0gaChuZXcgRGF0ZShnLmdldEZ1bGxZZWFyKCksIDAsIDQpKTsKICAgICAgICAgIHIgPSBoKHIpOwogICAgICAgICAgcmV0dXJuIDAgPj0gbChxLCBnKSA/IDAgPj0gbChyLCBnKSA/IGcuZ2V0RnVsbFllYXIoKSArIDEgOiBnLmdldEZ1bGxZZWFyKCkgOiBnLmdldEZ1bGxZZWFyKCkgLSAxOwogICAgICAgIH0KICAgICAgICB2YXIgbSA9IEZbZCArIDQwID4+IDJdOwogICAgICAgIGQgPSB7CiAgICAgICAgICBzYjogRVtkID4+IDJdLAogICAgICAgICAgcmI6IEVbZCArIDQgPj4gMl0sCiAgICAgICAgICBSYTogRVtkICsgOCA+PiAyXSwKICAgICAgICAgIFZhOiBFW2QgKyAxMiA+PiAyXSwKICAgICAgICAgIFNhOiBFW2QgKyAxNiA+PiAyXSwKICAgICAgICAgIEphOiBFW2QgKyAyMCA+PiAyXSwKICAgICAgICAgIEdhOiBFW2QgKyAyNCA+PiAyXSwKICAgICAgICAgIElhOiBFW2QgKyAyOCA+PiAyXSwKICAgICAgICAgIHdiOiBFW2QgKyAzMiA+PiAyXSwKICAgICAgICAgIHFiOiBFW2QgKyAzNiA+PiAyXSwKICAgICAgICAgIHRiOiBtID8gbSA/IEooQSwgbSkgOiAiIiA6ICIiCiAgICAgICAgfTsKICAgICAgICBjID0gYyA/IEooQSwgYykgOiAiIjsKICAgICAgICBtID0gewogICAgICAgICAgIiVjIjogIiVhICViICVkICVIOiVNOiVTICVZIiwKICAgICAgICAgICIlRCI6ICIlbS8lZC8leSIsCiAgICAgICAgICAiJUYiOiAiJVktJW0tJWQiLAogICAgICAgICAgIiVoIjogIiViIiwKICAgICAgICAgICIlciI6ICIlSTolTTolUyAlcCIsCiAgICAgICAgICAiJVIiOiAiJUg6JU0iLAogICAgICAgICAgIiVUIjogIiVIOiVNOiVTIiwKICAgICAgICAgICIleCI6ICIlbS8lZC8leSIsCiAgICAgICAgICAiJVgiOiAiJUg6JU06JVMiLAogICAgICAgICAgIiVFYyI6ICIlYyIsCiAgICAgICAgICAiJUVDIjogIiVDIiwKICAgICAgICAgICIlRXgiOiAiJW0vJWQvJXkiLAogICAgICAgICAgIiVFWCI6ICIlSDolTTolUyIsCiAgICAgICAgICAiJUV5IjogIiV5IiwKICAgICAgICAgICIlRVkiOiAiJVkiLAogICAgICAgICAgIiVPZCI6ICIlZCIsCiAgICAgICAgICAiJU9lIjogIiVlIiwKICAgICAgICAgICIlT0giOiAiJUgiLAogICAgICAgICAgIiVPSSI6ICIlSSIsCiAgICAgICAgICAiJU9tIjogIiVtIiwKICAgICAgICAgICIlT00iOiAiJU0iLAogICAgICAgICAgIiVPUyI6ICIlUyIsCiAgICAgICAgICAiJU91IjogIiV1IiwKICAgICAgICAgICIlT1UiOiAiJVUiLAogICAgICAgICAgIiVPViI6ICIlViIsCiAgICAgICAgICAiJU93IjogIiV3IiwKICAgICAgICAgICIlT1ciOiAiJVciLAogICAgICAgICAgIiVPeSI6ICIleSIKICAgICAgICB9OwogICAgICAgIGZvciAodmFyIHAgaW4gbSkgYyA9IGMucmVwbGFjZShuZXcgUmVnRXhwKHAsICJnIiksIG1bcF0pOwogICAgICAgIHZhciB1ID0gIlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpLCB2ID0gIkphbnVhcnkgRmVicnVhcnkgTWFyY2ggQXByaWwgTWF5IEp1bmUgSnVseSBBdWd1c3QgU2VwdGVtYmVyIE9jdG9iZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIik7CiAgICAgICAgbSA9IHsKICAgICAgICAgICIlYSI6IChnKSA9PiB1W2cuR2FdLnN1YnN0cmluZygwLCAzKSwKICAgICAgICAgICIlQSI6IChnKSA9PiB1W2cuR2FdLAogICAgICAgICAgIiViIjogKGcpID0+IHZbZy5TYV0uc3Vic3RyaW5nKDAsIDMpLAogICAgICAgICAgIiVCIjogKGcpID0+IHZbZy5TYV0sCiAgICAgICAgICAiJUMiOiAoZykgPT4gZigoZy5KYSArIDE5MDApIC8gMTAwIHwgMCwgMiksCiAgICAgICAgICAiJWQiOiAoZykgPT4gZihnLlZhLCAyKSwKICAgICAgICAgICIlZSI6IChnKSA9PiBlKGcuVmEsIDIsICIgIiksCiAgICAgICAgICAiJWciOiAoZykgPT4gbihnKS50b1N0cmluZygpLnN1YnN0cmluZygyKSwKICAgICAgICAgICIlRyI6IG4sCiAgICAgICAgICAiJUgiOiAoZykgPT4gZihnLlJhLCAyKSwKICAgICAgICAgICIlSSI6IChnKSA9PiB7CiAgICAgICAgICAgIGcgPSBnLlJhOwogICAgICAgICAgICAwID09IGcgPyBnID0gMTIgOiAxMiA8IGcgJiYgKGcgLT0gMTIpOwogICAgICAgICAgICByZXR1cm4gZihnLCAyKTsKICAgICAgICAgIH0sCiAgICAgICAgICAiJWoiOiAoZykgPT4gewogICAgICAgICAgICBmb3IgKHZhciBxID0gMCwgciA9IDA7IHIgPD0gZy5TYSAtIDE7IHEgKz0gKFZiKGcuSmEgKyAxOTAwKSA/IFdiIDogWGIpW3IrK10pIDsKICAgICAgICAgICAgcmV0dXJuIGYoZy5WYSArIHEsIDMpOwogICAgICAgICAgfSwKICAgICAgICAgICIlbSI6IChnKSA9PiBmKGcuU2EgKyAxLCAyKSwKICAgICAgICAgICIlTSI6IChnKSA9PiBmKGcucmIsIDIpLAogICAgICAgICAgIiVuIjogKCkgPT4gIlxuIiwKICAgICAgICAgICIlcCI6IChnKSA9PiAwIDw9IGcuUmEgJiYgMTIgPiBnLlJhID8gIkFNIiA6ICJQTSIsCiAgICAgICAgICAiJVMiOiAoZykgPT4gZihnLnNiLCAyKSwKICAgICAgICAgICIldCI6ICgpID0+ICIJIiwKICAgICAgICAgICIldSI6IChnKSA9PiBnLkdhIHx8IDcsCiAgICAgICAgICAiJVUiOiAoZykgPT4gZihNYXRoLmZsb29yKChnLklhICsgNyAtIGcuR2EpIC8gNyksIDIpLAogICAgICAgICAgIiVWIjogKGcpID0+IHsKICAgICAgICAgICAgdmFyIHEgPSBNYXRoLmZsb29yKChnLklhICsgNyAtIChnLkdhICsgNikgJSA3KSAvIDcpOwogICAgICAgICAgICAyID49IChnLkdhICsgMzcxIC0gZy5JYSAtIDIpICUgNyAmJiBxKys7CiAgICAgICAgICAgIGlmIChxKSA1MyA9PSBxICYmIChyID0gKGcuR2EgKyAzNzEgLSBnLklhKSAlIDcsIDQgPT0gciB8fCAzID09IHIgJiYgVmIoZy5KYSkgfHwgKHEgPSAxKSk7CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIHEgPSA1MjsKICAgICAgICAgICAgICB2YXIgciA9IChnLkdhICsgNyAtIGcuSWEgLSAxKSAlIDc7CiAgICAgICAgICAgICAgKDQgPT0gciB8fCA1ID09IHIgJiYgVmIoZy5KYSAlIDQwMCAtIDEpKSAmJiBxKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGYocSwgMik7CiAgICAgICAgICB9LAogICAgICAgICAgIiV3IjogKGcpID0+IGcuR2EsCiAgICAgICAgICAiJVciOiAoZykgPT4gZihNYXRoLmZsb29yKChnLklhICsgNyAtIChnLkdhICsgNikgJSA3KSAvIDcpLCAyKSwKICAgICAgICAgICIleSI6IChnKSA9PiAoZy5KYSArIDE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLAogICAgICAgICAgIiVZIjogKGcpID0+IGcuSmEgKyAxOTAwLAogICAgICAgICAgIiV6IjogKGcpID0+IHsKICAgICAgICAgICAgZyA9IGcucWI7CiAgICAgICAgICAgIHZhciBxID0gMCA8PSBnOwogICAgICAgICAgICBnID0gTWF0aC5hYnMoZykgLyA2MDsKICAgICAgICAgICAgcmV0dXJuIChxID8gIisiIDogIi0iKSArIFN0cmluZygiMDAwMCIgKyAoZyAvIDYwICogMTAwICsgZyAlIDYwKSkuc2xpY2UoLTQpOwogICAgICAgICAgfSwKICAgICAgICAgICIlWiI6IChnKSA9PiBnLnRiLAogICAgICAgICAgIiUlIjogKCkgPT4gIiUiCiAgICAgICAgfTsKICAgICAgICBjID0gYy5yZXBsYWNlKC8lJS9nLCAiXDBcMCIpOwogICAgICAgIGZvciAocCBpbiBtKSBjLmluY2x1ZGVzKHApICYmIChjID0gYy5yZXBsYWNlKG5ldyBSZWdFeHAocCwgImciKSwgbVtwXShkKSkpOwogICAgICAgIGMgPSBjLnJlcGxhY2UoL1wwXDAvZywgIiUiKTsKICAgICAgICBwID0gWWIoYyk7CiAgICAgICAgaWYgKHAubGVuZ3RoID4gYikgcmV0dXJuIDA7CiAgICAgICAgeS5zZXQocCwgYSk7CiAgICAgICAgcmV0dXJuIHAubGVuZ3RoIC0gMTsKICAgICAgfTsKICAgICAgSWEgPSBrLkludGVybmFsRXJyb3IgPSBjbGFzcyBleHRlbmRzIEVycm9yIHsKICAgICAgICBjb25zdHJ1Y3RvcihhKSB7CiAgICAgICAgICBzdXBlcihhKTsKICAgICAgICAgIHRoaXMubmFtZSA9ICJJbnRlcm5hbEVycm9yIjsKICAgICAgICB9CiAgICAgIH07CiAgICAgIGZvciAodmFyICRiID0gQXJyYXkoMjU2KSwgYWMgPSAwOyAyNTYgPiBhYzsgKythYykgJGJbYWNdID0gU3RyaW5nLmZyb21DaGFyQ29kZShhYyk7CiAgICAgIEphID0gJGI7CiAgICAgIFIgPSBrLkJpbmRpbmdFcnJvciA9IGNsYXNzIGV4dGVuZHMgRXJyb3IgewogICAgICAgIGNvbnN0cnVjdG9yKGEpIHsKICAgICAgICAgIHN1cGVyKGEpOwogICAgICAgICAgdGhpcy5uYW1lID0gIkJpbmRpbmdFcnJvciI7CiAgICAgICAgfQogICAgICB9OwogICAgICBPYmplY3QuYXNzaWduKFlhLnByb3RvdHlwZSwgewogICAgICAgIGlzQWxpYXNPZjogZnVuY3Rpb24oYSkgewogICAgICAgICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFlhICYmIGEgaW5zdGFuY2VvZiBZYSkpIHJldHVybiBmYWxzZTsKICAgICAgICAgIHZhciBiID0gdGhpcy5tYS56YS54YSwgYyA9IHRoaXMubWEueWE7CiAgICAgICAgICBhLm1hID0gYS5tYTsKICAgICAgICAgIHZhciBkID0gYS5tYS56YS54YTsKICAgICAgICAgIGZvciAoYSA9IGEubWEueWE7IGIuQ2E7ICkgYyA9IGIuTmEoYyksIGIgPSBiLkNhOwogICAgICAgICAgZm9yICg7IGQuQ2E7ICkgYSA9IGQuTmEoYSksIGQgPSBkLkNhOwogICAgICAgICAgcmV0dXJuIGIgPT09IGQgJiYgYyA9PT0gYTsKICAgICAgICB9LAogICAgICAgIGNsb25lOiBmdW5jdGlvbigpIHsKICAgICAgICAgIHRoaXMubWEueWEgfHwgTGEodGhpcyk7CiAgICAgICAgICBpZiAodGhpcy5tYS5NYSkgcmV0dXJuIHRoaXMubWEuY291bnQudmFsdWUgKz0gMSwgdGhpczsKICAgICAgICAgIHZhciBhID0gV2EsIGIgPSBPYmplY3QsIGMgPSBiLmNyZWF0ZSwgZCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSwgZSA9IHRoaXMubWE7CiAgICAgICAgICBhID0gYSgKICAgICAgICAgICAgYy5jYWxsKGIsIGQsIHsKICAgICAgICAgICAgICBtYTogeyB2YWx1ZTogeyBjb3VudDogZS5jb3VudCwgS2E6IGUuS2EsIE1hOiBlLk1hLCB5YTogZS55YSwgemE6IGUuemEsIEFhOiBlLkFhLCBEYTogZS5EYSB9IH0KICAgICAgICAgICAgfSkKICAgICAgICAgICk7CiAgICAgICAgICBhLm1hLmNvdW50LnZhbHVlICs9IDE7CiAgICAgICAgICBhLm1hLkthID0gZmFsc2U7CiAgICAgICAgICByZXR1cm4gYTsKICAgICAgICB9LAogICAgICAgIFsiZGVsZXRlIl0oKSB7CiAgICAgICAgICB0aGlzLm1hLnlhIHx8IExhKHRoaXMpOwogICAgICAgICAgaWYgKHRoaXMubWEuS2EgJiYgIXRoaXMubWEuTWEpIHRocm93IG5ldyBSKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIik7CiAgICAgICAgICBPYSh0aGlzKTsKICAgICAgICAgIHZhciBhID0gdGhpcy5tYTsKICAgICAgICAgIC0tYS5jb3VudC52YWx1ZTsKICAgICAgICAgIDAgPT09IGEuY291bnQudmFsdWUgJiYgKGEuQWEgPyBhLkRhLkZhKGEuQWEpIDogYS56YS54YS5GYShhLnlhKSk7CiAgICAgICAgICB0aGlzLm1hLk1hIHx8ICh0aGlzLm1hLkFhID0gdm9pZCAwLCB0aGlzLm1hLnlhID0gdm9pZCAwKTsKICAgICAgICB9LAogICAgICAgIGlzRGVsZXRlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gIXRoaXMubWEueWE7CiAgICAgICAgfSwKICAgICAgICBkZWxldGVMYXRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICB0aGlzLm1hLnlhIHx8IExhKHRoaXMpOwogICAgICAgICAgaWYgKHRoaXMubWEuS2EgJiYgIXRoaXMubWEuTWEpIHRocm93IG5ldyBSKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIik7CiAgICAgICAgICBSYS5wdXNoKHRoaXMpOwogICAgICAgICAgMSA9PT0gUmEubGVuZ3RoICYmIFRhICYmIFRhKFNhKTsKICAgICAgICAgIHRoaXMubWEuS2EgPSB0cnVlOwogICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgay5nZXRJbmhlcml0ZWRJbnN0YW5jZUNvdW50ID0gKCkgPT4gT2JqZWN0LmtleXMoVWEpLmxlbmd0aDsKICAgICAgay5nZXRMaXZlSW5oZXJpdGVkSW5zdGFuY2VzID0gKCkgPT4gewogICAgICAgIHZhciBhID0gW10sIGI7CiAgICAgICAgZm9yIChiIGluIFVhKSBVYS5oYXNPd25Qcm9wZXJ0eShiKSAmJiBhLnB1c2goVWFbYl0pOwogICAgICAgIHJldHVybiBhOwogICAgICB9OwogICAgICBrLmZsdXNoUGVuZGluZ0RlbGV0ZXMgPSBTYTsKICAgICAgay5zZXREZWxheUZ1bmN0aW9uID0gKGEpID0+IHsKICAgICAgICBUYSA9IGE7CiAgICAgICAgUmEubGVuZ3RoICYmIFRhICYmIFRhKFNhKTsKICAgICAgfTsKICAgICAgT2JqZWN0LmFzc2lnbihqYi5wcm90b3R5cGUsIHsKICAgICAgICBlYihhKSB7CiAgICAgICAgICB0aGlzLlphICYmIChhID0gdGhpcy5aYShhKSk7CiAgICAgICAgICByZXR1cm4gYTsKICAgICAgICB9LAogICAgICAgIFhhKGEpIHsKICAgICAgICAgIHRoaXMuRmE/LihhKTsKICAgICAgICB9LAogICAgICAgIGFyZ1BhY2tBZHZhbmNlOiA4LAogICAgICAgIHJlYWRWYWx1ZUZyb21Qb2ludGVyOiBLLAogICAgICAgIGZyb21XaXJlVHlwZTogZnVuY3Rpb24oYSkgewogICAgICAgICAgZnVuY3Rpb24gYigpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuUWEgPyBYYSh0aGlzLnhhLkxhLCB7IHphOiB0aGlzLmpiLCB5YTogYywgRGE6IHRoaXMsIEFhOiBhIH0pIDogWGEodGhpcy54YS5MYSwgeyB6YTogdGhpcywgeWE6IGEgfSk7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgYyA9IHRoaXMuZWIoYSk7CiAgICAgICAgICBpZiAoIWMpIHJldHVybiB0aGlzLlhhKGEpLCBudWxsOwogICAgICAgICAgdmFyIGQgPSBWYSh0aGlzLnhhLCBjKTsKICAgICAgICAgIGlmICh2b2lkIDAgIT09IGQpIHsKICAgICAgICAgICAgaWYgKDAgPT09IGQubWEuY291bnQudmFsdWUpIHJldHVybiBkLm1hLnlhID0gYywgZC5tYS5BYSA9IGEsIGQuY2xvbmUoKTsKICAgICAgICAgICAgZCA9IGQuY2xvbmUoKTsKICAgICAgICAgICAgdGhpcy5YYShhKTsKICAgICAgICAgICAgcmV0dXJuIGQ7CiAgICAgICAgICB9CiAgICAgICAgICBkID0gdGhpcy54YS5jYihjKTsKICAgICAgICAgIGQgPSBRYVtkXTsKICAgICAgICAgIGlmICghZCkgcmV0dXJuIGIuY2FsbCh0aGlzKTsKICAgICAgICAgIGQgPSB0aGlzLlBhID8gZC4kYSA6IGQucG9pbnRlclR5cGU7CiAgICAgICAgICB2YXIgZSA9IFBhKGMsIHRoaXMueGEsIGQueGEpOwogICAgICAgICAgcmV0dXJuIG51bGwgPT09IGUgPyBiLmNhbGwodGhpcykgOiB0aGlzLlFhID8gWGEoZC54YS5MYSwgeyB6YTogZCwgeWE6IGUsIERhOiB0aGlzLCBBYTogYSB9KSA6IFhhKGQueGEuTGEsIHsgemE6IGQsIHlhOiBlIH0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIG5iID0gay5VbmJvdW5kVHlwZUVycm9yID0gKChhLCBiKSA9PiB7CiAgICAgICAgdmFyIGMgPSBaYShiLCBmdW5jdGlvbihkKSB7CiAgICAgICAgICB0aGlzLm5hbWUgPSBiOwogICAgICAgICAgdGhpcy5tZXNzYWdlID0gZDsKICAgICAgICAgIGQgPSBFcnJvcihkKS5zdGFjazsKICAgICAgICAgIHZvaWQgMCAhPT0gZCAmJiAodGhpcy5zdGFjayA9IHRoaXMudG9TdHJpbmcoKSArICJcbiIgKyBkLnJlcGxhY2UoL15FcnJvcig6W15cbl0qKT9cbi8sICIiKSk7CiAgICAgICAgfSk7CiAgICAgICAgYy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGEucHJvdG90eXBlKTsKICAgICAgICBjLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGM7CiAgICAgICAgYy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IHRoaXMubWVzc2FnZSA/IHRoaXMubmFtZSA6IGAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gYzsKICAgICAgfSkoRXJyb3IsICJVbmJvdW5kVHlwZUVycm9yIik7CiAgICAgIFYucHVzaCgwLCAxLCB2b2lkIDAsIDEsIG51bGwsIDEsIHRydWUsIDEsIGZhbHNlLCAxKTsKICAgICAgay5jb3VudF9lbXZhbF9oYW5kbGVzID0gKCkgPT4gVi5sZW5ndGggLyAyIC0gNSAtIHZiLmxlbmd0aDsKICAgICAgdmFyIG1jID0gewogICAgICAgIGM6IChhLCBiLCBjLCBkKSA9PiB7CiAgICAgICAgICByYSgKICAgICAgICAgICAgYEFzc2VydGlvbiBmYWlsZWQ6ICR7YSA/IEooQSwgYSkgOiAiIn0sIGF0OiBgICsgW2IgPyBiID8gSihBLCBiKSA6ICIiIDogInVua25vd24gZmlsZW5hbWUiLCBjLCBkID8gZCA/IEooQSwgZCkgOiAiIiA6ICJ1bmtub3duIGZ1bmN0aW9uIl0KICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgICBtOiAoYSwgYiwgYykgPT4gewogICAgICAgICAgdmFyIGQgPSBuZXcgQWEoYSk7CiAgICAgICAgICBGW2QueWEgKyAxNiA+PiAyXSA9IDA7CiAgICAgICAgICBGW2QueWEgKyA0ID4+IDJdID0gYjsKICAgICAgICAgIEZbZC55YSArIDggPj4gMl0gPSBjOwogICAgICAgICAgQmEgPSBhOwogICAgICAgICAgQ2ErKzsKICAgICAgICAgIHRocm93IEJhOwogICAgICAgIH0sCiAgICAgICAgQjogZnVuY3Rpb24oKSB7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIFA6ICgpID0+IHsKICAgICAgICB9LAogICAgICAgIE06ICgpID0+IHsKICAgICAgICB9LAogICAgICAgIFI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfSwKICAgICAgICBOOiAoKSA9PiB7CiAgICAgICAgfSwKICAgICAgICBBOiBmdW5jdGlvbigpIHsKICAgICAgICB9LAogICAgICAgIE86ICgpID0+IHsKICAgICAgICB9LAogICAgICAgIHY6IChhKSA9PiB7CiAgICAgICAgICB2YXIgYiA9IEZhW2FdOwogICAgICAgICAgZGVsZXRlIEZhW2FdOwogICAgICAgICAgdmFyIGMgPSBiLlVhLCBkID0gYi5GYSwgZSA9IGIuWWEsIGYgPSBlLm1hcCgobCkgPT4gbC5oYikuY29uY2F0KGUubWFwKChsKSA9PiBsLm5iKSk7CiAgICAgICAgICBQKFthXSwgZiwgKGwpID0+IHsKICAgICAgICAgICAgdmFyIGggPSB7fTsKICAgICAgICAgICAgZS5mb3JFYWNoKChuLCBtKSA9PiB7CiAgICAgICAgICAgICAgdmFyIHAgPSBsW21dLCB1ID0gbi5mYiwgdiA9IG4uZ2IsIGcgPSBsW20gKyBlLmxlbmd0aF0sIHEgPSBuLm1iLCByID0gbi5vYjsKICAgICAgICAgICAgICBoW24uYmJdID0gewogICAgICAgICAgICAgICAgcmVhZDogKHopID0+IHAuZnJvbVdpcmVUeXBlKHUodiwgeikpLAogICAgICAgICAgICAgICAgd3JpdGU6ICh6LCBOKSA9PiB7CiAgICAgICAgICAgICAgICAgIHZhciBEID0gW107CiAgICAgICAgICAgICAgICAgIHEociwgeiwgZy50b1dpcmVUeXBlKEQsIE4pKTsKICAgICAgICAgICAgICAgICAgR2EoRCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmFtZTogYi5uYW1lLAogICAgICAgICAgICAgICAgZnJvbVdpcmVUeXBlOiAobikgPT4gewogICAgICAgICAgICAgICAgICB2YXIgbSA9IHt9LCBwOwogICAgICAgICAgICAgICAgICBmb3IgKHAgaW4gaCkgbVtwXSA9IGhbcF0ucmVhZChuKTsKICAgICAgICAgICAgICAgICAgZChuKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIG07CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgdG9XaXJlVHlwZTogKG4sIG0pID0+IHsKICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBoKSBpZiAoIShwIGluIG0pKSB0aHJvdyBuZXcgVHlwZUVycm9yKGBNaXNzaW5nIGZpZWxkOiAiJHtwfSJgKTsKICAgICAgICAgICAgICAgICAgdmFyIHUgPSBjKCk7CiAgICAgICAgICAgICAgICAgIGZvciAocCBpbiBoKSBoW3BdLndyaXRlKHUsIG1bcF0pOwogICAgICAgICAgICAgICAgICBudWxsICE9PSBuICYmIG4ucHVzaChkLCB1KTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgYXJnUGFja0FkdmFuY2U6IDgsCiAgICAgICAgICAgICAgICByZWFkVmFsdWVGcm9tUG9pbnRlcjogSywKICAgICAgICAgICAgICAgIEVhOiBkCiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdOwogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBJOiAoKSA9PiB7CiAgICAgICAgfSwKICAgICAgICBZOiAoYSwgYiwgYywgZCkgPT4gewogICAgICAgICAgYiA9IFEoYik7CiAgICAgICAgICBPKGEsIHsKICAgICAgICAgICAgbmFtZTogYiwKICAgICAgICAgICAgZnJvbVdpcmVUeXBlOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgcmV0dXJuICEhZTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdG9XaXJlVHlwZTogZnVuY3Rpb24oZSwgZikgewogICAgICAgICAgICAgIHJldHVybiBmID8gYyA6IGQ7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFyZ1BhY2tBZHZhbmNlOiA4LAogICAgICAgICAgICByZWFkVmFsdWVGcm9tUG9pbnRlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLmZyb21XaXJlVHlwZShBW2VdKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRWE6IG51bGwKICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgcjogKGEsIGIsIGMsIGQsIGUsIGYsIGwsIGgsIG4sIG0sIHAsIHUsIHYpID0+IHsKICAgICAgICAgIHAgPSBRKHApOwogICAgICAgICAgZiA9IFQoZSwgZik7CiAgICAgICAgICBoICYmIChoID0gVChsLCBoKSk7CiAgICAgICAgICBtICYmIChtID0gVChuLCBtKSk7CiAgICAgICAgICB2ID0gVCh1LCB2KTsKICAgICAgICAgIHZhciBnID0gYmIocCk7CiAgICAgICAgICBhYihnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcWIoYENhbm5vdCBjb25zdHJ1Y3QgJHtwfSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsIFtkXSk7CiAgICAgICAgICB9KTsKICAgICAgICAgIFAoW2EsIGIsIGNdLCBkID8gW2RdIDogW10sIChxKSA9PiB7CiAgICAgICAgICAgIHEgPSBxWzBdOwogICAgICAgICAgICBpZiAoZCkgewogICAgICAgICAgICAgIHZhciByID0gcS54YTsKICAgICAgICAgICAgICB2YXIgeiA9IHIuTGE7CiAgICAgICAgICAgIH0gZWxzZSB6ID0gWWEucHJvdG90eXBlOwogICAgICAgICAgICBxID0gWmEocCwgZnVuY3Rpb24oLi4uTmEpIHsKICAgICAgICAgICAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpICE9PSBOKSB0aHJvdyBuZXcgUigiVXNlICduZXcnIHRvIGNvbnN0cnVjdCAiICsgcCk7CiAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0gRC5IYSkgdGhyb3cgbmV3IFIocCArICIgaGFzIG5vIGFjY2Vzc2libGUgY29uc3RydWN0b3IiKTsKICAgICAgICAgICAgICB2YXIgeGIgPSBELkhhW05hLmxlbmd0aF07CiAgICAgICAgICAgICAgaWYgKHZvaWQgMCA9PT0geGIpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUigKICAgICAgICAgICAgICAgICAgYFRyaWVkIHRvIGludm9rZSBjdG9yIG9mICR7cH0gd2l0aCBpbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzICgke05hLmxlbmd0aH0pIC0gZXhwZWN0ZWQgKCR7T2JqZWN0LmtleXMoRC5IYSkudG9TdHJpbmcoKX0pIHBhcmFtZXRlcnMgaW5zdGVhZCFgCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgIHJldHVybiB4Yi5hcHBseSh0aGlzLCBOYSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgTiA9IE9iamVjdC5jcmVhdGUoeiwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogcSB9IH0pOwogICAgICAgICAgICBxLnByb3RvdHlwZSA9IE47CiAgICAgICAgICAgIHZhciBEID0gbmV3IGNiKHAsIHEsIE4sIHYsIHIsIGYsIGgsIG0pOwogICAgICAgICAgICBpZiAoRC5DYSkgewogICAgICAgICAgICAgIHZhciBpYTsKICAgICAgICAgICAgICAoaWEgPSBELkNhKS5XYSA/PyAoaWEuV2EgPSBbXSk7CiAgICAgICAgICAgICAgRC5DYS5XYS5wdXNoKEQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHIgPSBuZXcgamIocCwgRCwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgICAgaWEgPSBuZXcgamIocCArICIqIiwgRCwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgIHogPSBuZXcgamIocCArICIgY29uc3QqIiwgRCwgZmFsc2UsIHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgUWFbYV0gPSB7IHBvaW50ZXJUeXBlOiBpYSwgJGE6IHogfTsKICAgICAgICAgICAga2IoZywgcSk7CiAgICAgICAgICAgIHJldHVybiBbciwgaWEsIHpdOwogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBxOiAoYSwgYiwgYywgZCwgZSwgZikgPT4gewogICAgICAgICAgdmFyIGwgPSByYihiLCBjKTsKICAgICAgICAgIGUgPSBUKGQsIGUpOwogICAgICAgICAgUChbXSwgW2FdLCAoaCkgPT4gewogICAgICAgICAgICBoID0gaFswXTsKICAgICAgICAgICAgdmFyIG4gPSBgY29uc3RydWN0b3IgJHtoLm5hbWV9YDsKICAgICAgICAgICAgdm9pZCAwID09PSBoLnhhLkhhICYmIChoLnhhLkhhID0gW10pOwogICAgICAgICAgICBpZiAodm9pZCAwICE9PSBoLnhhLkhhW2IgLSAxXSkKICAgICAgICAgICAgICB0aHJvdyBuZXcgUigKICAgICAgICAgICAgICAgIGBDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgY29uc3RydWN0b3JzIHdpdGggaWRlbnRpY2FsIG51bWJlciBvZiBwYXJhbWV0ZXJzICgke2IgLSAxfSkgZm9yIGNsYXNzICcke2gubmFtZX0nISBPdmVybG9hZCByZXNvbHV0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHBlcmZvcm1lZCB1c2luZyB0aGUgcGFyYW1ldGVyIGNvdW50LCBub3QgYWN0dWFsIHR5cGUgaW5mbyFgCiAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgaC54YS5IYVtiIC0gMV0gPSAoKSA9PiB7CiAgICAgICAgICAgICAgcWIoYENhbm5vdCBjb25zdHJ1Y3QgJHtoLm5hbWV9IGR1ZSB0byB1bmJvdW5kIHR5cGVzYCwgbCk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIFAoW10sIGwsIChtKSA9PiB7CiAgICAgICAgICAgICAgbS5zcGxpY2UoMSwgMCwgbnVsbCk7CiAgICAgICAgICAgICAgaC54YS5IYVtiIC0gMV0gPSB0YihuLCBtLCBudWxsLCBlLCBmKTsKICAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGY6IChhLCBiLCBjLCBkLCBlLCBmLCBsLCBoKSA9PiB7CiAgICAgICAgICB2YXIgbiA9IHJiKGMsIGQpOwogICAgICAgICAgYiA9IFEoYik7CiAgICAgICAgICBiID0gdWIoYik7CiAgICAgICAgICBmID0gVChlLCBmKTsKICAgICAgICAgIFAoW10sIFthXSwgKG0pID0+IHsKICAgICAgICAgICAgZnVuY3Rpb24gcCgpIHsKICAgICAgICAgICAgICBxYihgQ2Fubm90IGNhbGwgJHt1fSBkdWUgdG8gdW5ib3VuZCB0eXBlc2AsIG4pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG0gPSBtWzBdOwogICAgICAgICAgICB2YXIgdSA9IGAke20ubmFtZX0uJHtifWA7CiAgICAgICAgICAgIGIuc3RhcnRzV2l0aCgiQEAiKSAmJiAoYiA9IFN5bWJvbFtiLnN1YnN0cmluZygyKV0pOwogICAgICAgICAgICBoICYmIG0ueGEua2IucHVzaChiKTsKICAgICAgICAgICAgdmFyIHYgPSBtLnhhLkxhLCBnID0gdltiXTsKICAgICAgICAgICAgdm9pZCAwID09PSBnIHx8IHZvaWQgMCA9PT0gZy5CYSAmJiBnLmNsYXNzTmFtZSAhPT0gbS5uYW1lICYmIGcuT2EgPT09IGMgLSAyID8gKHAuT2EgPSBjIC0gMiwgcC5jbGFzc05hbWUgPSBtLm5hbWUsIHZbYl0gPSBwKSA6ICgkYSh2LCBiLCB1KSwgdltiXS5CYVtjIC0gMl0gPSBwKTsKICAgICAgICAgICAgUChbXSwgbiwgKHEpID0+IHsKICAgICAgICAgICAgICBxID0gdGIodSwgcSwgbSwgZiwgbCk7CiAgICAgICAgICAgICAgdm9pZCAwID09PSB2W2JdLkJhID8gKHEuT2EgPSBjIC0gMiwgdltiXSA9IHEpIDogdltiXS5CYVtjIC0gMl0gPSBxOwogICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgWDogKGEpID0+IE8oYSwgemIpLAogICAgICAgIHg6IChhLCBiLCBjLCBkKSA9PiB7CiAgICAgICAgICBmdW5jdGlvbiBlKCkgewogICAgICAgICAgfQogICAgICAgICAgYiA9IFEoYik7CiAgICAgICAgICBlLnZhbHVlcyA9IHt9OwogICAgICAgICAgTyhhLCB7CiAgICAgICAgICAgIG5hbWU6IGIsCiAgICAgICAgICAgIGNvbnN0cnVjdG9yOiBlLAogICAgICAgICAgICBmcm9tV2lyZVR5cGU6IGZ1bmN0aW9uKGYpIHsKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci52YWx1ZXNbZl07CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHRvV2lyZVR5cGU6IChmLCBsKSA9PiBsLnZhbHVlLAogICAgICAgICAgICBhcmdQYWNrQWR2YW5jZTogOCwKICAgICAgICAgICAgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IEFiKGIsIGMsIGQpLAogICAgICAgICAgICBFYTogbnVsbAogICAgICAgICAgfSk7CiAgICAgICAgICBhYihiLCBlKTsKICAgICAgICB9LAogICAgICAgIGs6IChhLCBiLCBjKSA9PiB7CiAgICAgICAgICB2YXIgZCA9IEJiKGEsICJlbnVtIik7CiAgICAgICAgICBiID0gUShiKTsKICAgICAgICAgIGEgPSBkLmNvbnN0cnVjdG9yOwogICAgICAgICAgZCA9IE9iamVjdC5jcmVhdGUoZC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHsKICAgICAgICAgICAgdmFsdWU6IHsgdmFsdWU6IGMgfSwKICAgICAgICAgICAgY29uc3RydWN0b3I6IHsgdmFsdWU6IFphKGAke2QubmFtZX1fJHtifWAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB9KSB9CiAgICAgICAgICB9KTsKICAgICAgICAgIGEudmFsdWVzW2NdID0gZDsKICAgICAgICAgIGFbYl0gPSBkOwogICAgICAgIH0sCiAgICAgICAgQzogKGEsIGIsIGMpID0+IHsKICAgICAgICAgIGIgPSBRKGIpOwogICAgICAgICAgTyhhLCB7CiAgICAgICAgICAgIG5hbWU6IGIsCiAgICAgICAgICAgIGZyb21XaXJlVHlwZTogKGQpID0+IGQsCiAgICAgICAgICAgIHRvV2lyZVR5cGU6IChkLCBlKSA9PiBlLAogICAgICAgICAgICBhcmdQYWNrQWR2YW5jZTogOCwKICAgICAgICAgICAgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IENiKGIsIGMpLAogICAgICAgICAgICBFYTogbnVsbAogICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBFOiAoYSwgYiwgYywgZCwgZSwgZikgPT4gewogICAgICAgICAgdmFyIGwgPSByYihiLCBjKTsKICAgICAgICAgIGEgPSBRKGEpOwogICAgICAgICAgYSA9IHViKGEpOwogICAgICAgICAgZSA9IFQoZCwgZSk7CiAgICAgICAgICBhYigKICAgICAgICAgICAgYSwKICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgcWIoYENhbm5vdCBjYWxsICR7YX0gZHVlIHRvIHVuYm91bmQgdHlwZXNgLCBsKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYiAtIDEKICAgICAgICAgICk7CiAgICAgICAgICBQKFtdLCBsLCAoaCkgPT4gewogICAgICAgICAgICBrYihhLCB0YihhLCBbaFswXSwgbnVsbF0uY29uY2F0KGguc2xpY2UoMSkpLCBudWxsLCBlLCBmKSwgYiAtIDEpOwogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGw6IChhLCBiLCBjLCBkLCBlKSA9PiB7CiAgICAgICAgICBiID0gUShiKTsKICAgICAgICAgIC0xID09PSBlICYmIChlID0gNDI5NDk2NzI5NSk7CiAgICAgICAgICBlID0gKGgpID0+IGg7CiAgICAgICAgICBpZiAoMCA9PT0gZCkgewogICAgICAgICAgICB2YXIgZiA9IDMyIC0gOCAqIGM7CiAgICAgICAgICAgIGUgPSAoaCkgPT4gaCA8PCBmID4+PiBmOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGwgPSBiLmluY2x1ZGVzKCJ1bnNpZ25lZCIpID8gZnVuY3Rpb24oaCwgbikgewogICAgICAgICAgICByZXR1cm4gbiA+Pj4gMDsKICAgICAgICAgIH0gOiBmdW5jdGlvbihoLCBuKSB7CiAgICAgICAgICAgIHJldHVybiBuOwogICAgICAgICAgfTsKICAgICAgICAgIE8oYSwgewogICAgICAgICAgICBuYW1lOiBiLAogICAgICAgICAgICBmcm9tV2lyZVR5cGU6IGUsCiAgICAgICAgICAgIHRvV2lyZVR5cGU6IGwsCiAgICAgICAgICAgIGFyZ1BhY2tBZHZhbmNlOiA4LAogICAgICAgICAgICByZWFkVmFsdWVGcm9tUG9pbnRlcjogRGIoYiwgYywgMCAhPT0gZCksCiAgICAgICAgICAgIEVhOiBudWxsCiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIGc6IChhLCBiLCBjKSA9PiB7CiAgICAgICAgICBmdW5jdGlvbiBkKGYpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBlKHkuYnVmZmVyLCBGW2YgKyA0ID4+IDJdLCBGW2YgPj4gMl0pOwogICAgICAgICAgfQogICAgICAgICAgdmFyIGUgPSBbSW50OEFycmF5LCBVaW50OEFycmF5LCBJbnQxNkFycmF5LCBVaW50MTZBcnJheSwgSW50MzJBcnJheSwgVWludDMyQXJyYXksIEZsb2F0MzJBcnJheSwgRmxvYXQ2NEFycmF5XVtiXTsKICAgICAgICAgIGMgPSBRKGMpOwogICAgICAgICAgTyhhLCB7IG5hbWU6IGMsIGZyb21XaXJlVHlwZTogZCwgYXJnUGFja0FkdmFuY2U6IDgsIHJlYWRWYWx1ZUZyb21Qb2ludGVyOiBkIH0sIHsgaWI6IHRydWUgfSk7CiAgICAgICAgfSwKICAgICAgICB3OiAoYSkgPT4gewogICAgICAgICAgTyhhLCB6Yik7CiAgICAgICAgfSwKICAgICAgICBjYTogKGEsIGIsIGMsIGQsIGUsIGYsIGwsIGgsIG4sIG0sIHAsIHUpID0+IHsKICAgICAgICAgIGMgPSBRKGMpOwogICAgICAgICAgZiA9IFQoZSwgZik7CiAgICAgICAgICBoID0gVChsLCBoKTsKICAgICAgICAgIG0gPSBUKG4sIG0pOwogICAgICAgICAgdSA9IFQocCwgdSk7CiAgICAgICAgICBQKFthXSwgW2JdLCAodikgPT4gewogICAgICAgICAgICB2ID0gdlswXTsKICAgICAgICAgICAgcmV0dXJuIFtuZXcgamIoYywgdi54YSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB2LCBkLCBmLCBoLCBtLCB1KV07CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIEQ6IChhLCBiKSA9PiB7CiAgICAgICAgICBiID0gUShiKTsKICAgICAgICAgIHZhciBjID0gInN0ZDo6c3RyaW5nIiA9PT0gYjsKICAgICAgICAgIE8oYSwgewogICAgICAgICAgICBuYW1lOiBiLAogICAgICAgICAgICBmcm9tV2lyZVR5cGU6IGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgICB2YXIgZSA9IEZbZCA+PiAyXSwgZiA9IGQgKyA0OwogICAgICAgICAgICAgIGlmIChjKQogICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IGYsIGggPSAwOyBoIDw9IGU7ICsraCkgewogICAgICAgICAgICAgICAgICB2YXIgbiA9IGYgKyBoOwogICAgICAgICAgICAgICAgICBpZiAoaCA9PSBlIHx8IDAgPT0gQVtuXSkgewogICAgICAgICAgICAgICAgICAgIGwgPSBsID8gSihBLCBsLCBuIC0gbCkgOiAiIjsKICAgICAgICAgICAgICAgICAgICBpZiAodm9pZCAwID09PSBtKSB2YXIgbSA9IGw7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBtICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMCksIG0gKz0gbDsKICAgICAgICAgICAgICAgICAgICBsID0gbiArIDE7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG0gPSBBcnJheShlKTsKICAgICAgICAgICAgICAgIGZvciAoaCA9IDA7IGggPCBlOyArK2gpIG1baF0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKEFbZiArIGhdKTsKICAgICAgICAgICAgICAgIG0gPSBtLmpvaW4oIiIpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBVKGQpOwogICAgICAgICAgICAgIHJldHVybiBtOwogICAgICAgICAgICB9LAogICAgICAgICAgICB0b1dpcmVUeXBlOiBmdW5jdGlvbihkLCBlKSB7CiAgICAgICAgICAgICAgZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyICYmIChlID0gbmV3IFVpbnQ4QXJyYXkoZSkpOwogICAgICAgICAgICAgIHZhciBmID0gInN0cmluZyIgPT0gdHlwZW9mIGU7CiAgICAgICAgICAgICAgaWYgKCEoZiB8fCBlIGluc3RhbmNlb2YgVWludDhBcnJheSB8fCBlIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkgfHwgZSBpbnN0YW5jZW9mIEludDhBcnJheSkpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUigiQ2Fubm90IHBhc3Mgbm9uLXN0cmluZyB0byBzdGQ6OnN0cmluZyIpOwogICAgICAgICAgICAgIHZhciBsID0gYyAmJiBmID8gRGEoZSkgOiBlLmxlbmd0aDsKICAgICAgICAgICAgICB2YXIgaCA9IGJjKDQgKyBsICsgMSksIG4gPSBoICsgNDsKICAgICAgICAgICAgICBGW2ggPj4gMl0gPSBsOwogICAgICAgICAgICAgIGlmIChjICYmIGYpIEVhKGUsIEEsIG4sIGwgKyAxKTsKICAgICAgICAgICAgICBlbHNlIGlmIChmKQogICAgICAgICAgICAgICAgZm9yIChmID0gMDsgZiA8IGw7ICsrZikgewogICAgICAgICAgICAgICAgICB2YXIgbSA9IGUuY2hhckNvZGVBdChmKTsKICAgICAgICAgICAgICAgICAgaWYgKDI1NSA8IG0pIHRocm93IFUobiksIG5ldyBSKCJTdHJpbmcgaGFzIFVURi0xNiBjb2RlIHVuaXRzIHRoYXQgZG8gbm90IGZpdCBpbiA4IGJpdHMiKTsKICAgICAgICAgICAgICAgICAgQVtuICsgZl0gPSBtOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgZm9yIChmID0gMDsgZiA8IGw7ICsrZikgQVtuICsgZl0gPSBlW2ZdOwogICAgICAgICAgICAgIG51bGwgIT09IGQgJiYgZC5wdXNoKFUsIGgpOwogICAgICAgICAgICAgIHJldHVybiBoOwogICAgICAgICAgICB9LAogICAgICAgICAgICBhcmdQYWNrQWR2YW5jZTogOCwKICAgICAgICAgICAgcmVhZFZhbHVlRnJvbVBvaW50ZXI6IEssCiAgICAgICAgICAgIEVhKGQpIHsKICAgICAgICAgICAgICBVKGQpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIHU6IChhLCBiLCBjKSA9PiB7CiAgICAgICAgICBjID0gUShjKTsKICAgICAgICAgIGlmICgyID09PSBiKSB7CiAgICAgICAgICAgIHZhciBkID0gRmI7CiAgICAgICAgICAgIHZhciBlID0gR2I7CiAgICAgICAgICAgIHZhciBmID0gSGI7CiAgICAgICAgICAgIHZhciBsID0gKGgpID0+IENbaCA+PiAxXTsKICAgICAgICAgIH0gZWxzZSA0ID09PSBiICYmIChkID0gSWIsIGUgPSBKYiwgZiA9IEtiLCBsID0gKGgpID0+IEZbaCA+PiAyXSk7CiAgICAgICAgICBPKGEsIHsKICAgICAgICAgICAgbmFtZTogYywKICAgICAgICAgICAgZnJvbVdpcmVUeXBlOiAoaCkgPT4gewogICAgICAgICAgICAgIGZvciAodmFyIG4gPSBGW2ggPj4gMl0sIG0sIHAgPSBoICsgNCwgdSA9IDA7IHUgPD0gbjsgKyt1KSB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IGggKyA0ICsgdSAqIGI7CiAgICAgICAgICAgICAgICBpZiAodSA9PSBuIHx8IDAgPT0gbCh2KSkKICAgICAgICAgICAgICAgICAgcCA9IGQocCwgdiAtIHApLCB2b2lkIDAgPT09IG0gPyBtID0gcCA6IChtICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMCksIG0gKz0gcCksIHAgPSB2ICsgYjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgVShoKTsKICAgICAgICAgICAgICByZXR1cm4gbTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgdG9XaXJlVHlwZTogKGgsIG4pID0+IHsKICAgICAgICAgICAgICBpZiAoInN0cmluZyIgIT0gdHlwZW9mIG4pIHRocm93IG5ldyBSKGBDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIEMrKyBzdHJpbmcgdHlwZSAke2N9YCk7CiAgICAgICAgICAgICAgdmFyIG0gPSBmKG4pLCBwID0gYmMoNCArIG0gKyBiKTsKICAgICAgICAgICAgICBGW3AgPj4gMl0gPSBtIC8gYjsKICAgICAgICAgICAgICBlKG4sIHAgKyA0LCBtICsgYik7CiAgICAgICAgICAgICAgbnVsbCAhPT0gaCAmJiBoLnB1c2goVSwgcCk7CiAgICAgICAgICAgICAgcmV0dXJuIHA7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGFyZ1BhY2tBZHZhbmNlOiA4LAogICAgICAgICAgICByZWFkVmFsdWVGcm9tUG9pbnRlcjogSywKICAgICAgICAgICAgRWEoaCkgewogICAgICAgICAgICAgIFUoaCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgczogKGEsIGIsIGMsIGQsIGUsIGYpID0+IHsKICAgICAgICAgIEZhW2FdID0geyBuYW1lOiBRKGIpLCBVYTogVChjLCBkKSwgRmE6IFQoZSwgZiksIFlhOiBbXSB9OwogICAgICAgIH0sCiAgICAgICAgajogKGEsIGIsIGMsIGQsIGUsIGYsIGwsIGgsIG4sIG0pID0+IHsKICAgICAgICAgIEZhW2FdLllhLnB1c2goeyBiYjogUShiKSwgaGI6IGMsIGZiOiBUKGQsIGUpLCBnYjogZiwgbmI6IGwsIG1iOiBUKGgsIG4pLCBvYjogbSB9KTsKICAgICAgICB9LAogICAgICAgIFo6IChhLCBiKSA9PiB7CiAgICAgICAgICBiID0gUShiKTsKICAgICAgICAgIE8oYSwgeyB1YjogdHJ1ZSwgbmFtZTogYiwgYXJnUGFja0FkdmFuY2U6IDAsIGZyb21XaXJlVHlwZTogKCkgPT4gewogICAgICAgICAgfSwgdG9XaXJlVHlwZTogKCkgPT4gewogICAgICAgICAgfSB9KTsKICAgICAgICB9LAogICAgICAgIEo6ICgpID0+IHsKICAgICAgICAgIHRocm93IEluZmluaXR5OwogICAgICAgIH0sCiAgICAgICAgYWE6IChhLCBiLCBjLCBkKSA9PiB7CiAgICAgICAgICBhID0gTGJbYV07CiAgICAgICAgICBiID0geWIoYik7CiAgICAgICAgICByZXR1cm4gYShudWxsLCBiLCBjLCBkKTsKICAgICAgICB9LAogICAgICAgIEY6IHdiLAogICAgICAgICQ6IChhLCBiLCBjKSA9PiB7CiAgICAgICAgICB2YXIgZCA9IE5iKGEsIGIpLCBlID0gZC5zaGlmdCgpOwogICAgICAgICAgYS0tOwogICAgICAgICAgdmFyIGYgPSBBcnJheShhKTsKICAgICAgICAgIGIgPSBgbWV0aG9kQ2FsbGVyPCgke2QubWFwKChsKSA9PiBsLm5hbWUpLmpvaW4oIiwgIil9KSA9PiAke2UubmFtZX0+YDsKICAgICAgICAgIHJldHVybiBNYigKICAgICAgICAgICAgWmEoYiwgKGwsIGgsIG4sIG0pID0+IHsKICAgICAgICAgICAgICBmb3IgKHZhciBwID0gMCwgdSA9IDA7IHUgPCBhOyArK3UpIGZbdV0gPSBkW3VdLnJlYWRWYWx1ZUZyb21Qb2ludGVyKG0gKyBwKSwgcCArPSBkW3VdLmFyZ1BhY2tBZHZhbmNlOwogICAgICAgICAgICAgIGggPSAxID09PSBjID8gT2IoaCwgZikgOiBoLmFwcGx5KGwsIGYpOwogICAgICAgICAgICAgIGwgPSBbXTsKICAgICAgICAgICAgICBoID0gZS50b1dpcmVUeXBlKGwsIGgpOwogICAgICAgICAgICAgIGwubGVuZ3RoICYmIChGW24gPj4gMl0gPSBoYihsKSk7CiAgICAgICAgICAgICAgcmV0dXJuIGg7CiAgICAgICAgICAgIH0pCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICAgYmE6IChhKSA9PiB7CiAgICAgICAgICA5IDwgYSAmJiAoVlthICsgMV0gKz0gMSk7CiAgICAgICAgfSwKICAgICAgICBfOiAoYSkgPT4gewogICAgICAgICAgdmFyIGIgPSB5YihhKTsKICAgICAgICAgIEdhKGIpOwogICAgICAgICAgd2IoYSk7CiAgICAgICAgfSwKICAgICAgICBvOiAoYSwgYikgPT4gewogICAgICAgICAgYSA9IEJiKGEsICJfZW12YWxfdGFrZV92YWx1ZSIpOwogICAgICAgICAgYSA9IGEucmVhZFZhbHVlRnJvbVBvaW50ZXIoYik7CiAgICAgICAgICByZXR1cm4gaGIoYSk7CiAgICAgICAgfSwKICAgICAgICBXOiAoKSA9PiB7CiAgICAgICAgICByYSgiIik7CiAgICAgICAgfSwKICAgICAgICBWOiAoKSA9PiBwZXJmb3JtYW5jZS5ub3coKSwKICAgICAgICBMOiAoYSkgPT4gewogICAgICAgICAgdmFyIGIgPSBBLmxlbmd0aDsKICAgICAgICAgIGEgPj4+PSAwOwogICAgICAgICAgaWYgKDIxNDc0ODM2NDggPCBhKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBjID0gMTsgNCA+PSBjOyBjICo9IDIpIHsKICAgICAgICAgICAgdmFyIGQgPSBiICogKDEgKyAwLjIgLyBjKTsKICAgICAgICAgICAgZCA9IE1hdGgubWluKGQsIGEgKyAxMDA2NjMyOTYpOwogICAgICAgICAgICB2YXIgZSA9IE1hdGg7CiAgICAgICAgICAgIGQgPSBNYXRoLm1heChhLCBkKTsKICAgICAgICAgICAgYTogewogICAgICAgICAgICAgIGUgPSAoZS5taW4uY2FsbChlLCAyMTQ3NDgzNjQ4LCBkICsgKDY1NTM2IC0gZCAlIDY1NTM2KSAlIDY1NTM2KSAtIGZhLmJ1ZmZlci5ieXRlTGVuZ3RoICsgNjU1MzUpIC8gNjU1MzY7CiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGZhLmdyb3coZSk7CiAgICAgICAgICAgICAgICBsYSgpOwogICAgICAgICAgICAgICAgdmFyIGYgPSAxOwogICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICB9IGNhdGNoIChsKSB7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGYgPSB2b2lkIDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGYpIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0sCiAgICAgICAgUzogKGEsIGIpID0+IHsKICAgICAgICAgIHZhciBjID0gMDsKICAgICAgICAgIFJiKCkuZm9yRWFjaCgoZCwgZSkgPT4gewogICAgICAgICAgICB2YXIgZiA9IGIgKyBjOwogICAgICAgICAgICBlID0gRlthICsgNCAqIGUgPj4gMl0gPSBmOwogICAgICAgICAgICBmb3IgKGYgPSAwOyBmIDwgZC5sZW5ndGg7ICsrZikgeVtlKytdID0gZC5jaGFyQ29kZUF0KGYpOwogICAgICAgICAgICB5W2VdID0gMDsKICAgICAgICAgICAgYyArPSBkLmxlbmd0aCArIDE7CiAgICAgICAgICB9KTsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0sCiAgICAgICAgVDogKGEsIGIpID0+IHsKICAgICAgICAgIHZhciBjID0gUmIoKTsKICAgICAgICAgIEZbYSA+PiAyXSA9IGMubGVuZ3RoOwogICAgICAgICAgdmFyIGQgPSAwOwogICAgICAgICAgYy5mb3JFYWNoKChlKSA9PiBkICs9IGUubGVuZ3RoICsgMSk7CiAgICAgICAgICBGW2IgPj4gMl0gPSBkOwogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfSwKICAgICAgICB0OiAoKSA9PiA1MiwKICAgICAgICB6OiAoKSA9PiA1MiwKICAgICAgICBIOiBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiA3MDsKICAgICAgICB9LAogICAgICAgIFE6IChhLCBiLCBjLCBkKSA9PiB7CiAgICAgICAgICBmb3IgKHZhciBlID0gMCwgZiA9IDA7IGYgPCBjOyBmKyspIHsKICAgICAgICAgICAgdmFyIGwgPSBGW2IgPj4gMl0sIGggPSBGW2IgKyA0ID4+IDJdOwogICAgICAgICAgICBiICs9IDg7CiAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgaDsgbisrKSB7CiAgICAgICAgICAgICAgdmFyIG0gPSBBW2wgKyBuXSwgcCA9IFNiW2FdOwogICAgICAgICAgICAgIDAgPT09IG0gfHwgMTAgPT09IG0gPyAoKDEgPT09IGEgPyBlYSA6IHcpKEoocCwgMCkpLCBwLmxlbmd0aCA9IDApIDogcC5wdXNoKG0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGUgKz0gaDsKICAgICAgICAgIH0KICAgICAgICAgIEZbZCA+PiAyXSA9IGU7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIFU6IChhLCBiKSA9PiB7CiAgICAgICAgICBVYihBLnN1YmFycmF5KGEsIGEgKyBiKSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9LAogICAgICAgIGk6IGNjLAogICAgICAgIGQ6IGRjLAogICAgICAgIGU6IGVjLAogICAgICAgIHA6IGZjLAogICAgICAgIHk6IGdjLAogICAgICAgIGI6IGhjLAogICAgICAgIGE6IGljLAogICAgICAgIGg6IGpjLAogICAgICAgIG46IGtjLAogICAgICAgIEc6IGxjLAogICAgICAgIEs6IChhLCBiLCBjLCBkKSA9PiBaYihhLCBiLCBjLCBkKQogICAgICB9LCBXID0gZnVuY3Rpb24oKSB7CiAgICAgICAgZnVuY3Rpb24gYShjKSB7CiAgICAgICAgICBXID0gYy5leHBvcnRzOwogICAgICAgICAgZmEgPSBXLmRhOwogICAgICAgICAgbGEoKTsKICAgICAgICAgIFMgPSBXLmhhOwogICAgICAgICAgbmEudW5zaGlmdChXLmVhKTsKICAgICAgICAgIEctLTsKICAgICAgICAgIGsubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKEcpOwogICAgICAgICAgMCA9PSBHICYmIChudWxsICE9PSBxYSAmJiAoY2xlYXJJbnRlcnZhbChxYSksIHFhID0gbnVsbCksIEggJiYgKGMgPSBILCBIID0gbnVsbCwgYygpKSk7CiAgICAgICAgICByZXR1cm4gVzsKICAgICAgICB9CiAgICAgICAgdmFyIGIgPSB7IGE6IG1jIH07CiAgICAgICAgRysrOwogICAgICAgIGsubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKEcpOwogICAgICAgIGlmIChrLmluc3RhbnRpYXRlV2FzbSkKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBrLmluc3RhbnRpYXRlV2FzbShiLCBhKTsKICAgICAgICAgIH0gY2F0Y2ggKGMpIHsKICAgICAgICAgICAgdyhgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtjfWApLCBiYShjKTsKICAgICAgICAgIH0KICAgICAgICB4YShiLCBmdW5jdGlvbihjKSB7CiAgICAgICAgICBhKGMuaW5zdGFuY2UpOwogICAgICAgIH0pLmNhdGNoKGJhKTsKICAgICAgICByZXR1cm4ge307CiAgICAgIH0oKSwgYmMgPSAoYSkgPT4gKGJjID0gVy5mYSkoYSksIG9iID0gKGEpID0+IChvYiA9IFcuZ2EpKGEpLCBVID0gKGEpID0+IChVID0gVy5pYSkoYSksIFggPSAoYSwgYikgPT4gKFggPSBXLmphKShhLCBiKSwgWSA9IChhKSA9PiAoWSA9IFcua2EpKGEpLCBaID0gKCkgPT4gKFogPSBXLmxhKSgpOwogICAgICBrLmR5bkNhbGxfaWlqaiA9IChhLCBiLCBjLCBkLCBlLCBmKSA9PiAoay5keW5DYWxsX2lpamogPSBXLm5hKShhLCBiLCBjLCBkLCBlLCBmKTsKICAgICAgay5keW5DYWxsX3ZpamogPSAoYSwgYiwgYywgZCwgZSwgZikgPT4gKGsuZHluQ2FsbF92aWpqID0gVy5vYSkoYSwgYiwgYywgZCwgZSwgZik7CiAgICAgIGsuZHluQ2FsbF9qaWlpID0gKGEsIGIsIGMsIGQpID0+IChrLmR5bkNhbGxfamlpaSA9IFcucGEpKGEsIGIsIGMsIGQpOwogICAgICBrLmR5bkNhbGxfamlpID0gKGEsIGIsIGMpID0+IChrLmR5bkNhbGxfamlpID0gVy5xYSkoYSwgYiwgYyk7CiAgICAgIHZhciBuYyA9IGsuZHluQ2FsbF92aWlpaiA9IChhLCBiLCBjLCBkLCBlLCBmKSA9PiAobmMgPSBrLmR5bkNhbGxfdmlpaWogPSBXLnJhKShhLCBiLCBjLCBkLCBlLCBmKTsKICAgICAgay5keW5DYWxsX2ppamkgPSAoYSwgYiwgYywgZCwgZSkgPT4gKGsuZHluQ2FsbF9qaWppID0gVy5zYSkoYSwgYiwgYywgZCwgZSk7CiAgICAgIGsuZHluQ2FsbF92aWlqaWkgPSAoYSwgYiwgYywgZCwgZSwgZiwgbCkgPT4gKGsuZHluQ2FsbF92aWlqaWkgPSBXLnRhKShhLCBiLCBjLCBkLCBlLCBmLCBsKTsKICAgICAgay5keW5DYWxsX2lpaWlpaiA9IChhLCBiLCBjLCBkLCBlLCBmLCBsKSA9PiAoay5keW5DYWxsX2lpaWlpaiA9IFcudWEpKGEsIGIsIGMsIGQsIGUsIGYsIGwpOwogICAgICBrLmR5bkNhbGxfaWlpaWlqaiA9IChhLCBiLCBjLCBkLCBlLCBmLCBsLCBoLCBuKSA9PiAoay5keW5DYWxsX2lpaWlpamogPSBXLnZhKShhLCBiLCBjLCBkLCBlLCBmLCBsLCBoLCBuKTsKICAgICAgay5keW5DYWxsX2lpaWlpaWpqID0gKGEsIGIsIGMsIGQsIGUsIGYsIGwsIGgsIG4sIG0pID0+IChrLmR5bkNhbGxfaWlpaWlpamogPSBXLndhKShhLCBiLCBjLCBkLCBlLCBmLCBsLCBoLCBuLCBtKTsKICAgICAgZnVuY3Rpb24gaGMoYSwgYikgewogICAgICAgIHZhciBjID0gWigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICBTLmdldChhKShiKTsKICAgICAgICB9IGNhdGNoIChkKSB7CiAgICAgICAgICBZKGMpOwogICAgICAgICAgaWYgKGQgIT09IGQgKyAwKSB0aHJvdyBkOwogICAgICAgICAgWCgxLCAwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gaWMoYSwgYiwgYykgewogICAgICAgIHZhciBkID0gWigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICBTLmdldChhKShiLCBjKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBZKGQpOwogICAgICAgICAgaWYgKGUgIT09IGUgKyAwKSB0aHJvdyBlOwogICAgICAgICAgWCgxLCAwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gZWMoYSwgYiwgYywgZCkgewogICAgICAgIHZhciBlID0gWigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICByZXR1cm4gUy5nZXQoYSkoYiwgYywgZCk7CiAgICAgICAgfSBjYXRjaCAoZikgewogICAgICAgICAgWShlKTsKICAgICAgICAgIGlmIChmICE9PSBmICsgMCkgdGhyb3cgZjsKICAgICAgICAgIFgoMSwgMCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIGRjKGEsIGIsIGMpIHsKICAgICAgICB2YXIgZCA9IFooKTsKICAgICAgICB0cnkgewogICAgICAgICAgcmV0dXJuIFMuZ2V0KGEpKGIsIGMpOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIFkoZCk7CiAgICAgICAgICBpZiAoZSAhPT0gZSArIDApIHRocm93IGU7CiAgICAgICAgICBYKDEsIDApOwogICAgICAgIH0KICAgICAgfQogICAgICBmdW5jdGlvbiBjYyhhLCBiKSB7CiAgICAgICAgdmFyIGMgPSBaKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHJldHVybiBTLmdldChhKShiKTsKICAgICAgICB9IGNhdGNoIChkKSB7CiAgICAgICAgICBZKGMpOwogICAgICAgICAgaWYgKGQgIT09IGQgKyAwKSB0aHJvdyBkOwogICAgICAgICAgWCgxLCAwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gZmMoYSwgYiwgYywgZCwgZSwgZikgewogICAgICAgIHZhciBsID0gWigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICByZXR1cm4gUy5nZXQoYSkoYiwgYywgZCwgZSwgZik7CiAgICAgICAgfSBjYXRjaCAoaCkgewogICAgICAgICAgWShsKTsKICAgICAgICAgIGlmIChoICE9PSBoICsgMCkgdGhyb3cgaDsKICAgICAgICAgIFgoMSwgMCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIGtjKGEsIGIsIGMsIGQsIGUpIHsKICAgICAgICB2YXIgZiA9IFooKTsKICAgICAgICB0cnkgewogICAgICAgICAgUy5nZXQoYSkoYiwgYywgZCwgZSk7CiAgICAgICAgfSBjYXRjaCAobCkgewogICAgICAgICAgWShmKTsKICAgICAgICAgIGlmIChsICE9PSBsICsgMCkgdGhyb3cgbDsKICAgICAgICAgIFgoMSwgMCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIGpjKGEsIGIsIGMsIGQpIHsKICAgICAgICB2YXIgZSA9IFooKTsKICAgICAgICB0cnkgewogICAgICAgICAgUy5nZXQoYSkoYiwgYywgZCk7CiAgICAgICAgfSBjYXRjaCAoZikgewogICAgICAgICAgWShlKTsKICAgICAgICAgIGlmIChmICE9PSBmICsgMCkgdGhyb3cgZjsKICAgICAgICAgIFgoMSwgMCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGZ1bmN0aW9uIGdjKGEpIHsKICAgICAgICB2YXIgYiA9IFooKTsKICAgICAgICB0cnkgewogICAgICAgICAgUy5nZXQoYSkoKTsKICAgICAgICB9IGNhdGNoIChjKSB7CiAgICAgICAgICBZKGIpOwogICAgICAgICAgaWYgKGMgIT09IGMgKyAwKSB0aHJvdyBjOwogICAgICAgICAgWCgxLCAwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZnVuY3Rpb24gbGMoYSwgYiwgYywgZCwgZSwgZikgewogICAgICAgIHZhciBsID0gWigpOwogICAgICAgIHRyeSB7CiAgICAgICAgICBuYyhhLCBiLCBjLCBkLCBlLCBmKTsKICAgICAgICB9IGNhdGNoIChoKSB7CiAgICAgICAgICBZKGwpOwogICAgICAgICAgaWYgKGggIT09IGggKyAwKSB0aHJvdyBoOwogICAgICAgICAgWCgxLCAwKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgdmFyIG9jOwogICAgICBIID0gZnVuY3Rpb24gcGMoKSB7CiAgICAgICAgb2MgfHwgcWMoKTsKICAgICAgICBvYyB8fCAoSCA9IHBjKTsKICAgICAgfTsKICAgICAgZnVuY3Rpb24gcWMoKSB7CiAgICAgICAgZnVuY3Rpb24gYSgpIHsKICAgICAgICAgIGlmICghb2MgJiYgKG9jID0gdHJ1ZSwgay5jYWxsZWRSdW4gPSB0cnVlLCAhaGEpKSB7CiAgICAgICAgICAgIHlhKG5hKTsKICAgICAgICAgICAgYWEoayk7CiAgICAgICAgICAgIGlmIChrLm9uUnVudGltZUluaXRpYWxpemVkKSBrLm9uUnVudGltZUluaXRpYWxpemVkKCk7CiAgICAgICAgICAgIGlmIChrLnBvc3RSdW4pCiAgICAgICAgICAgICAgZm9yICgiZnVuY3Rpb24iID09IHR5cGVvZiBrLnBvc3RSdW4gJiYgKGsucG9zdFJ1biA9IFtrLnBvc3RSdW5dKTsgay5wb3N0UnVuLmxlbmd0aDsgKSB7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGsucG9zdFJ1bi5zaGlmdCgpOwogICAgICAgICAgICAgICAgb2EudW5zaGlmdChiKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHlhKG9hKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCEoMCA8IEcpKSB7CiAgICAgICAgICBpZiAoay5wcmVSdW4pIGZvciAoImZ1bmN0aW9uIiA9PSB0eXBlb2Ygay5wcmVSdW4gJiYgKGsucHJlUnVuID0gW2sucHJlUnVuXSk7IGsucHJlUnVuLmxlbmd0aDsgKSBwYSgpOwogICAgICAgICAgeWEobWEpOwogICAgICAgICAgMCA8IEcgfHwgKGsuc2V0U3RhdHVzID8gKGsuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgay5zZXRTdGF0dXMoIiIpOwogICAgICAgICAgICB9LCAxKTsKICAgICAgICAgICAgYSgpOwogICAgICAgICAgfSwgMSkpIDogYSgpKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKGsucHJlSW5pdCkKICAgICAgICBmb3IgKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGsucHJlSW5pdCAmJiAoay5wcmVJbml0ID0gW2sucHJlSW5pdF0pOyAwIDwgay5wcmVJbml0Lmxlbmd0aDsgKSBrLnByZUluaXQucG9wKCkoKTsKICAgICAgcWMoKTsKICAgICAgcmV0dXJuIHJlYWR5UHJvbWlzZTsKICAgIH07CiAgfSkoKTsKICB2YXIgZG90bG90dGllX3BsYXllcl9kZWZhdWx0ID0gY3JlYXRlRG90TG90dGllUGxheWVyTW9kdWxlOwoKICAvLyBzcmMvY29yZS9kb3Rsb3R0aWUtd2FzbS1sb2FkZXIudHMKICB2YXIgRG90TG90dGllV2FzbUxvYWRlciA9IGNsYXNzIHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIlJlbmRlcmVyTG9hZGVyIGlzIGEgc3RhdGljIGNsYXNzIGFuZCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkLiIpOwogICAgfQogICAgc3RhdGljIGFzeW5jIF90cnlMb2FkKHVybCkgewogICAgICBjb25zdCBtb2R1bGUgPSBhd2FpdCBkb3Rsb3R0aWVfcGxheWVyX2RlZmF1bHQoeyBsb2NhdGVGaWxlOiAoKSA9PiB1cmwgfSk7CiAgICAgIHJldHVybiBtb2R1bGU7CiAgICB9CiAgICAvKioKICAgICAqIFRyaWVzIHRvIGxvYWQgdGhlIFdBU00gbW9kdWxlIGZyb20gdGhlIHByaW1hcnkgVVJMLCBmYWxsaW5nIGJhY2sgdG8gYSBiYWNrdXAgVVJMIGlmIG5lY2Vzc2FyeS4KICAgICAqIFRocm93cyBhbiBlcnJvciBpZiBib3RoIFVSTHMgZmFpbCB0byBsb2FkIHRoZSBtb2R1bGUuCiAgICAgKiBAcmV0dXJucyBQcm9taXNlPE1vZHVsZT4gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbG9hZGVkIG1vZHVsZS4KICAgICAqLwogICAgc3RhdGljIGFzeW5jIF9sb2FkV2l0aEJhY2t1cCgpIHsKICAgICAgaWYgKCF0aGlzLl9Nb2R1bGVQcm9taXNlKSB7CiAgICAgICAgdGhpcy5fTW9kdWxlUHJvbWlzZSA9IHRoaXMuX3RyeUxvYWQodGhpcy5fd2FzbVVSTCkuY2F0Y2goYXN5bmMgKGluaXRpYWxFcnJvcikgPT4gewogICAgICAgICAgY29uc3QgYmFja3VwVXJsID0gYGh0dHBzOi8vdW5wa2cuY29tLyR7UEFDS0FHRV9OQU1FfUAke1BBQ0tBR0VfVkVSU0lPTn0vZGlzdC9kb3Rsb3R0aWUtcGxheWVyLndhc21gOwogICAgICAgICAgY29uc29sZS53YXJuKGBQcmltYXJ5IFdBU00gbG9hZCBmYWlsZWQgZnJvbSAke3RoaXMuX3dhc21VUkx9LiBFcnJvcjogJHtpbml0aWFsRXJyb3IubWVzc2FnZX1gKTsKICAgICAgICAgIGNvbnNvbGUud2FybihgQXR0ZW1wdGluZyB0byBsb2FkIFdBU00gZnJvbSBiYWNrdXAgVVJMOiAke2JhY2t1cFVybH1gKTsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl90cnlMb2FkKGJhY2t1cFVybCk7CiAgICAgICAgICB9IGNhdGNoIChiYWNrdXBFcnJvcikgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKGBQcmltYXJ5IFdBU00gVVJMIGZhaWxlZDogJHtpbml0aWFsRXJyb3IubWVzc2FnZX1gKTsKICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQmFja3VwIFdBU00gVVJMIGZhaWxlZDogJHtiYWNrdXBFcnJvci5tZXNzYWdlfWApOwogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIldBU00gbG9hZGluZyBmYWlsZWQgZnJvbSBhbGwgc291cmNlcy4iKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5fTW9kdWxlUHJvbWlzZTsKICAgIH0KICAgIC8qKgogICAgICogUHVibGljIG1ldGhvZCB0byBsb2FkIHRoZSBXZWJBc3NlbWJseSBtb2R1bGUuCiAgICAgKiBVdGlsaXplcyBhIHByaW1hcnkgYW5kIGJhY2t1cCBVUkwgZm9yIHJvYnVzdG5lc3MuCiAgICAgKiBAcmV0dXJucyBQcm9taXNlPE1vZHVsZT4gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbG9hZGVkIG1vZHVsZS4KICAgICAqLwogICAgc3RhdGljIGFzeW5jIGxvYWQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9sb2FkV2l0aEJhY2t1cCgpOwogICAgfQogICAgLyoqCiAgICAgKiBTZXRzIGEgbmV3IFVSTCBmb3IgdGhlIFdBU00gZmlsZSBhbmQgaW52YWxpZGF0ZXMgdGhlIGN1cnJlbnQgbW9kdWxlIHByb21pc2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAtICBUaGUgbmV3IFVSTCBmb3IgdGhlIFdBU00gZmlsZS4KICAgICAqLwogICAgc3RhdGljIHNldFdhc21VcmwodXJsKSB7CiAgICAgIHRoaXMuX3dhc21VUkwgPSB1cmw7CiAgICAgIHRoaXMuX01vZHVsZVByb21pc2UgPSBudWxsOwogICAgfQogIH07CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbgogIF9fcHVibGljRmllbGQoRG90TG90dGllV2FzbUxvYWRlciwgIl9Nb2R1bGVQcm9taXNlIiwgbnVsbCk7CiAgLy8gVVJMIGZvciB0aGUgV0FTTSBmaWxlLCBjb25zdHJ1Y3RlZCB1c2luZyBwYWNrYWdlIGluZm9ybWF0aW9uCiAgX19wdWJsaWNGaWVsZChEb3RMb3R0aWVXYXNtTG9hZGVyLCAiX3dhc21VUkwiLCBgaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS8ke1BBQ0tBR0VfTkFNRX1AJHtQQUNLQUdFX1ZFUlNJT059L2Rpc3QvZG90bG90dGllLXBsYXllci53YXNtYCk7CgogIC8vIHNyYy9ldmVudC1tYW5hZ2VyLnRzCiAgdmFyIEV2ZW50TWFuYWdlciA9IGNsYXNzIHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfZXZlbnRMaXN0ZW5lcnMiLCAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpKTsKICAgIH0KICAgIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHsKICAgICAgbGV0IGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50TGlzdGVuZXJzLmdldCh0eXBlKTsKICAgICAgaWYgKCFsaXN0ZW5lcnMpIHsKICAgICAgICBsaXN0ZW5lcnMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldCgpOwogICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLnNldCh0eXBlLCBsaXN0ZW5lcnMpOwogICAgICB9CiAgICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpOwogICAgfQogICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikgewogICAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudExpc3RlbmVycy5nZXQodHlwZSk7CiAgICAgIGlmICghbGlzdGVuZXJzKSByZXR1cm47CiAgICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgIGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpOwogICAgICAgIGlmIChsaXN0ZW5lcnMuc2l6ZSA9PT0gMCkgewogICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMuZGVsZXRlKHR5cGUpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVycy5kZWxldGUodHlwZSk7CiAgICAgIH0KICAgIH0KICAgIGRpc3BhdGNoKGV2ZW50KSB7CiAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50TGlzdGVuZXJzLmdldChldmVudC50eXBlKTsKICAgICAgbGlzdGVuZXJzPy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoZXZlbnQpKTsKICAgIH0KICAgIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgewogICAgICB0aGlzLl9ldmVudExpc3RlbmVycy5jbGVhcigpOwogICAgfQogIH07CgogIC8vIHNyYy91dGlscy50cwogIGZ1bmN0aW9uIGlzSGV4Q29sb3IoY29sb3IpIHsKICAgIHJldHVybiAvXiMoW1xkYS1mXXs2fXxbXGRhLWZdezh9KSQvaXUudGVzdChjb2xvcik7CiAgfQogIGZ1bmN0aW9uIGhleFN0cmluZ1RvUkdCQUludChjb2xvckhleCkgewogICAgaWYgKCFpc0hleENvbG9yKGNvbG9ySGV4KSkgewogICAgICByZXR1cm4gMDsKICAgIH0KICAgIGxldCBoZXggPSBjb2xvckhleC5yZXBsYWNlKCIjIiwgIiIpOwogICAgaGV4ID0gaGV4Lmxlbmd0aCA9PT0gNiA/IGAke2hleH1mZmAgOiBoZXg7CiAgICByZXR1cm4gcGFyc2VJbnQoaGV4LCAxNik7CiAgfQogIGZ1bmN0aW9uIGlzRG90TG90dGllKGZpbGVEYXRhKSB7CiAgICBpZiAoZmlsZURhdGEuYnl0ZUxlbmd0aCA8IDQpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgY29uc3QgZmlsZVNpZ25hdHVyZSA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLnNsaWNlKDAsIFpJUF9TSUdOQVRVUkUuYnl0ZUxlbmd0aCkpOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBaSVBfU0lHTkFUVVJFLmxlbmd0aDsgaSArPSAxKSB7CiAgICAgIGlmIChaSVBfU0lHTkFUVVJFW2ldICE9PSBmaWxlU2lnbmF0dXJlW2ldKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgZnVuY3Rpb24gaXNMb3R0aWVKU09OKGpzb24pIHsKICAgIHJldHVybiBMT1RUSUVfSlNPTl9NQU5EQVRPUllfRklFTERTLmV2ZXJ5KChmaWVsZCkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGpzb24sIGZpZWxkKSk7CiAgfQogIGZ1bmN0aW9uIGlzTG90dGllKGZpbGVEYXRhKSB7CiAgICBpZiAodHlwZW9mIGZpbGVEYXRhID09PSAic3RyaW5nIikgewogICAgICB0cnkgewogICAgICAgIHJldHVybiBpc0xvdHRpZUpTT04oSlNPTi5wYXJzZShmaWxlRGF0YSkpOwogICAgICB9IGNhdGNoIChfZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIGlzTG90dGllSlNPTihmaWxlRGF0YSk7CiAgICB9CiAgfQoKICAvLyBzcmMvZG90bG90dGllLnRzCiAgdmFyIGNyZWF0ZUNvcmVNb2RlID0gKG1vZGUsIG1vZHVsZSkgPT4gewogICAgaWYgKG1vZGUgPT09ICJyZXZlcnNlIikgewogICAgICByZXR1cm4gbW9kdWxlLk1vZGUuUmV2ZXJzZTsKICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gImJvdW5jZSIpIHsKICAgICAgcmV0dXJuIG1vZHVsZS5Nb2RlLkJvdW5jZTsKICAgIH0gZWxzZSBpZiAobW9kZSA9PT0gInJldmVyc2UtYm91bmNlIikgewogICAgICByZXR1cm4gbW9kdWxlLk1vZGUuUmV2ZXJzZUJvdW5jZTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBtb2R1bGUuTW9kZS5Gb3J3YXJkOwogICAgfQogIH07CiAgdmFyIGNyZWF0ZUNvcmVGaXQgPSAoZml0LCBtb2R1bGUpID0+IHsKICAgIGlmIChmaXQgPT09ICJjb250YWluIikgewogICAgICByZXR1cm4gbW9kdWxlLkZpdC5Db250YWluOwogICAgfSBlbHNlIGlmIChmaXQgPT09ICJjb3ZlciIpIHsKICAgICAgcmV0dXJuIG1vZHVsZS5GaXQuQ292ZXI7CiAgICB9IGVsc2UgaWYgKGZpdCA9PT0gImZpbGwiKSB7CiAgICAgIHJldHVybiBtb2R1bGUuRml0LkZpbGw7CiAgICB9IGVsc2UgaWYgKGZpdCA9PT0gImZpdC1oZWlnaHQiKSB7CiAgICAgIHJldHVybiBtb2R1bGUuRml0LkZpdEhlaWdodDsKICAgIH0gZWxzZSBpZiAoZml0ID09PSAiZml0LXdpZHRoIikgewogICAgICByZXR1cm4gbW9kdWxlLkZpdC5GaXRXaWR0aDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBtb2R1bGUuRml0Lk5vbmU7CiAgICB9CiAgfTsKICB2YXIgY3JlYXRlQ29yZUFsaWduID0gKGFsaWduLCBtb2R1bGUpID0+IHsKICAgIGNvbnN0IGNvcmVBbGlnbiA9IG5ldyBtb2R1bGUuVmVjdG9yRmxvYXQoKTsKICAgIGNvcmVBbGlnbi5wdXNoX2JhY2soYWxpZ25bMF0pOwogICAgY29yZUFsaWduLnB1c2hfYmFjayhhbGlnblsxXSk7CiAgICByZXR1cm4gY29yZUFsaWduOwogIH07CiAgdmFyIGNyZWF0ZUNvcmVTZWdtZW50ID0gKHNlZ21lbnQsIG1vZHVsZSkgPT4gewogICAgY29uc3QgY29yZXNlZ21lbnQgPSBuZXcgbW9kdWxlLlZlY3RvckZsb2F0KCk7CiAgICBpZiAoc2VnbWVudC5sZW5ndGggIT09IDIpIHJldHVybiBjb3Jlc2VnbWVudDsKICAgIGNvcmVzZWdtZW50LnB1c2hfYmFjayhzZWdtZW50WzBdKTsKICAgIGNvcmVzZWdtZW50LnB1c2hfYmFjayhzZWdtZW50WzFdKTsKICAgIHJldHVybiBjb3Jlc2VnbWVudDsKICB9OwogIHZhciBfRG90TG90dGllID0gY2xhc3MgX0RvdExvdHRpZSB7CiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHsKICAgICAgX19wdWJsaWNGaWVsZCh0aGlzLCAiX2NhbnZhcyIpOwogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfY29udGV4dCIsIG51bGwpOwogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfZXZlbnRNYW5hZ2VyIik7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9hbmltYXRpb25GcmFtZUlkIiwgbnVsbCk7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9mcmFtZU1hbmFnZXIiKTsKICAgICAgX19wdWJsaWNGaWVsZCh0aGlzLCAiX2RvdExvdHRpZUNvcmUiLCBudWxsKTsKICAgICAgX19wdWJsaWNGaWVsZCh0aGlzLCAiX3JlbmRlckNvbmZpZyIsIHt9KTsKICAgICAgX19wdWJsaWNGaWVsZCh0aGlzLCAiX2lzRnJvemVuIiwgZmFsc2UpOwogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfYmFja2dyb3VuZENvbG9yIiwgbnVsbCk7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9wb2ludGVyVXBNZXRob2QiKTsKICAgICAgX19wdWJsaWNGaWVsZCh0aGlzLCAiX3BvaW50ZXJEb3duTWV0aG9kIik7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9wb2ludGVyTW92ZU1ldGhvZCIpOwogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfcG9pbnRlckVudGVyTWV0aG9kIik7CiAgICAgIF9fcHVibGljRmllbGQodGhpcywgIl9wb2ludGVyRXhpdE1ldGhvZCIpOwogICAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsICJfb25Db21wbGV0ZU1ldGhvZCIpOwogICAgICB0aGlzLl9jYW52YXMgPSBjb25maWcuY2FudmFzOwogICAgICB0aGlzLl9jb250ZXh0ID0gdGhpcy5fY2FudmFzLmdldENvbnRleHQoIjJkIik7CiAgICAgIHRoaXMuX2V2ZW50TWFuYWdlciA9IG5ldyBFdmVudE1hbmFnZXIoKTsKICAgICAgdGhpcy5fZnJhbWVNYW5hZ2VyID0gbmV3IEFuaW1hdGlvbkZyYW1lTWFuYWdlcigpOwogICAgICB0aGlzLl9yZW5kZXJDb25maWcgPSBjb25maWcucmVuZGVyQ29uZmlnID8/IHt9OwogICAgICBEb3RMb3R0aWVXYXNtTG9hZGVyLmxvYWQoKS50aGVuKChtb2R1bGUpID0+IHsKICAgICAgICBfRG90TG90dGllLl93YXNtTW9kdWxlID0gbW9kdWxlOwogICAgICAgIHRoaXMuX2RvdExvdHRpZUNvcmUgPSBuZXcgbW9kdWxlLkRvdExvdHRpZVBsYXllcih7CiAgICAgICAgICBhdXRvcGxheTogY29uZmlnLmF1dG9wbGF5ID8/IGZhbHNlLAogICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAwLAogICAgICAgICAgbG9vcEFuaW1hdGlvbjogY29uZmlnLmxvb3AgPz8gZmFsc2UsCiAgICAgICAgICBtb2RlOiBjcmVhdGVDb3JlTW9kZShjb25maWcubW9kZSA/PyAiZm9yd2FyZCIsIG1vZHVsZSksCiAgICAgICAgICBzZWdtZW50OiBjcmVhdGVDb3JlU2VnbWVudChjb25maWcuc2VnbWVudCA/PyBbXSwgbW9kdWxlKSwKICAgICAgICAgIHNwZWVkOiBjb25maWcuc3BlZWQgPz8gMSwKICAgICAgICAgIHVzZUZyYW1lSW50ZXJwb2xhdGlvbjogY29uZmlnLnVzZUZyYW1lSW50ZXJwb2xhdGlvbiA/PyB0cnVlLAogICAgICAgICAgbWFya2VyOiBjb25maWcubWFya2VyID8/ICIiLAogICAgICAgICAgbGF5b3V0OiBjb25maWcubGF5b3V0ID8gewogICAgICAgICAgICBhbGlnbjogY3JlYXRlQ29yZUFsaWduKGNvbmZpZy5sYXlvdXQuYWxpZ24sIG1vZHVsZSksCiAgICAgICAgICAgIGZpdDogY3JlYXRlQ29yZUZpdChjb25maWcubGF5b3V0LmZpdCwgbW9kdWxlKQogICAgICAgICAgfSA6IG1vZHVsZS5jcmVhdGVEZWZhdWx0TGF5b3V0KCkKICAgICAgICB9KTsKICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goeyB0eXBlOiAicmVhZHkiIH0pOwogICAgICAgIGlmIChjb25maWcuZGF0YSkgewogICAgICAgICAgdGhpcy5fbG9hZEZyb21EYXRhKGNvbmZpZy5kYXRhKTsKICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZy5zcmMpIHsKICAgICAgICAgIHRoaXMuX2xvYWRGcm9tU3JjKGNvbmZpZy5zcmMpOwogICAgICAgIH0KICAgICAgICBpZiAoY29uZmlnLmJhY2tncm91bmRDb2xvcikgewogICAgICAgICAgdGhpcy5zZXRCYWNrZ3JvdW5kQ29sb3IoY29uZmlnLmJhY2tncm91bmRDb2xvcik7CiAgICAgICAgfQogICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsKICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goewogICAgICAgICAgdHlwZTogImxvYWRFcnJvciIsCiAgICAgICAgICBlcnJvcjogbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCB3YXNtIG1vZHVsZTogJHtlcnJvcn1gKQogICAgICAgIH0pOwogICAgICB9KTsKICAgICAgdGhpcy5fcG9pbnRlclVwTWV0aG9kID0gdGhpcy5fb25Qb2ludGVyVXAuYmluZCh0aGlzKTsKICAgICAgdGhpcy5fcG9pbnRlckRvd25NZXRob2QgPSB0aGlzLl9vblBvaW50ZXJEb3duLmJpbmQodGhpcyk7CiAgICAgIHRoaXMuX3BvaW50ZXJNb3ZlTWV0aG9kID0gdGhpcy5fb25Qb2ludGVyTW92ZS5iaW5kKHRoaXMpOwogICAgICB0aGlzLl9wb2ludGVyRW50ZXJNZXRob2QgPSB0aGlzLl9vblBvaW50ZXJFbnRlci5iaW5kKHRoaXMpOwogICAgICB0aGlzLl9wb2ludGVyRXhpdE1ldGhvZCA9IHRoaXMuX29uUG9pbnRlckxlYXZlLmJpbmQodGhpcyk7CiAgICAgIHRoaXMuX29uQ29tcGxldGVNZXRob2QgPSB0aGlzLl9vbkNvbXBsZXRlLmJpbmQodGhpcyk7CiAgICB9CiAgICBfZGlzcGF0Y2hFcnJvcihtZXNzYWdlKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7CiAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7IHR5cGU6ICJsb2FkRXJyb3IiLCBlcnJvcjogbmV3IEVycm9yKG1lc3NhZ2UpIH0pOwogICAgfQogICAgYXN5bmMgX2ZldGNoRGF0YShzcmMpIHsKICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChzcmMpOwogICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggYW5pbWF0aW9uIGRhdGEgZnJvbSBVUkw6ICR7c3JjfS4gJHtyZXNwb25zZS5zdGF0dXN9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7CiAgICAgIH0KICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmFycmF5QnVmZmVyKCk7CiAgICAgIGlmIChpc0RvdExvdHRpZShkYXRhKSkgewogICAgICAgIHJldHVybiBkYXRhOwogICAgICB9CiAgICAgIHJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YSk7CiAgICB9CiAgICBfbG9hZEZyb21EYXRhKGRhdGEpIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwpIHJldHVybjsKICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLl9jYW52YXMud2lkdGg7CiAgICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuX2NhbnZhcy5oZWlnaHQ7CiAgICAgIGxldCBsb2FkZWQgPSBmYWxzZTsKICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAic3RyaW5nIikgewogICAgICAgIGlmICghaXNMb3R0aWUoZGF0YSkpIHsKICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoRXJyb3IoCiAgICAgICAgICAgICJJbnZhbGlkIExvdHRpZSBKU09OIHN0cmluZzogVGhlIHByb3ZpZGVkIHN0cmluZyBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBMb3R0aWUgSlNPTiBmb3JtYXQuIgogICAgICAgICAgKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgbG9hZGVkID0gdGhpcy5fZG90TG90dGllQ29yZS5sb2FkQW5pbWF0aW9uRGF0YShkYXRhLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHsKICAgICAgICBpZiAoIWlzRG90TG90dGllKGRhdGEpKSB7CiAgICAgICAgICB0aGlzLl9kaXNwYXRjaEVycm9yKAogICAgICAgICAgICAiSW52YWxpZCBkb3RMb3R0aWUgQXJyYXlCdWZmZXI6IFRoZSBwcm92aWRlZCBBcnJheUJ1ZmZlciBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBkb3RMb3R0aWUgZm9ybWF0LiIKICAgICAgICAgICk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGxvYWRlZCA9IHRoaXMuX2RvdExvdHRpZUNvcmUubG9hZERvdExvdHRpZURhdGEoZGF0YSwgd2lkdGgsIGhlaWdodCk7CiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICJvYmplY3QiKSB7CiAgICAgICAgaWYgKCFpc0xvdHRpZShkYXRhKSkgewogICAgICAgICAgdGhpcy5fZGlzcGF0Y2hFcnJvcigKICAgICAgICAgICAgIkludmFsaWQgTG90dGllIEpTT04gb2JqZWN0OiBUaGUgcHJvdmlkZWQgb2JqZWN0IGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIExvdHRpZSBKU09OIGZvcm1hdC4iCiAgICAgICAgICApOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBsb2FkZWQgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLmxvYWRBbmltYXRpb25EYXRhKEpTT04uc3RyaW5naWZ5KGRhdGEpLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9kaXNwYXRjaEVycm9yKAogICAgICAgICAgYFVuc3VwcG9ydGVkIGRhdGEgdHlwZSBmb3IgYW5pbWF0aW9uIGRhdGEuIEV4cGVjdGVkOiAKICAgICAgICAgIC0gc3RyaW5nIChMb3R0aWUgSlNPTiksCiAgICAgICAgICAtIEFycmF5QnVmZmVyIChkb3RMb3R0aWUpLAogICAgICAgICAgLSBvYmplY3QgKExvdHRpZSBKU09OKS4gCiAgICAgICAgICBSZWNlaXZlZDogJHt0eXBlb2YgZGF0YX1gCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKGxvYWRlZCkgewogICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7IHR5cGU6ICJsb2FkIiB9KTsKICAgICAgICBpZiAoSVNfQlJPV1NFUikgewogICAgICAgICAgdGhpcy5yZXNpemUoKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsKICAgICAgICAgIHR5cGU6ICJmcmFtZSIsCiAgICAgICAgICBjdXJyZW50RnJhbWU6IHRoaXMuX2RvdExvdHRpZUNvcmUuY3VycmVudEZyYW1lKCkKICAgICAgICB9KTsKICAgICAgICB0aGlzLl9yZW5kZXIoKTsKICAgICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZS5jb25maWcoKS5hdXRvcGxheSkgewogICAgICAgICAgdGhpcy5fZG90TG90dGllQ29yZS5wbGF5KCk7CiAgICAgICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZS5pc1BsYXlpbmcoKSkgewogICAgICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goeyB0eXBlOiAicGxheSIgfSk7CiAgICAgICAgICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lSWQgPSB0aGlzLl9mcmFtZU1hbmFnZXIucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2RyYXcuYmluZCh0aGlzKSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCJzb21ldGhpbmcgd2VudCB3cm9uZywgdGhlIGFuaW1hdGlvbiB3YXMgc3VwcG9zZSB0byBhdXRvcGxheSIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9kaXNwYXRjaEVycm9yKCJGYWlsZWQgdG8gbG9hZCBhbmltYXRpb24gZGF0YSIpOwogICAgICB9CiAgICB9CiAgICBfbG9hZEZyb21TcmMoc3JjKSB7CiAgICAgIHRoaXMuX2ZldGNoRGF0YShzcmMpLnRoZW4oKGRhdGEpID0+IHRoaXMuX2xvYWRGcm9tRGF0YShkYXRhKSkuY2F0Y2goKGVycm9yKSA9PiB0aGlzLl9kaXNwYXRjaEVycm9yKGBGYWlsZWQgdG8gbG9hZCBhbmltYXRpb24gZGF0YSBmcm9tIFVSTDogJHtzcmN9LiAke2Vycm9yfWApKTsKICAgIH0KICAgIGdldCBhY3RpdmVBbmltYXRpb25JZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LmFjdGl2ZUFuaW1hdGlvbklkKCk7CiAgICB9CiAgICBnZXQgYWN0aXZlVGhlbWVJZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LmFjdGl2ZVRoZW1lSWQoKTsKICAgIH0KICAgIGdldCBsYXlvdXQoKSB7CiAgICAgIGNvbnN0IGxheW91dCA9IHRoaXMuX2RvdExvdHRpZUNvcmU/LmNvbmZpZygpLmxheW91dDsKICAgICAgaWYgKGxheW91dCkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICBhbGlnbjogW2xheW91dC5hbGlnbi5nZXQoMCksIGxheW91dC5hbGlnbi5nZXQoMSldLAogICAgICAgICAgZml0OiAoKCkgPT4gewogICAgICAgICAgICBzd2l0Y2ggKGxheW91dC5maXQpIHsKICAgICAgICAgICAgICBjYXNlIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGU/LkZpdC5Db250YWluOgogICAgICAgICAgICAgICAgcmV0dXJuICJjb250YWluIjsKICAgICAgICAgICAgICBjYXNlIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGU/LkZpdC5Db3ZlcjoKICAgICAgICAgICAgICAgIHJldHVybiAiY292ZXIiOwogICAgICAgICAgICAgIGNhc2UgX0RvdExvdHRpZS5fd2FzbU1vZHVsZT8uRml0LkZpbGw6CiAgICAgICAgICAgICAgICByZXR1cm4gImZpbGwiOwogICAgICAgICAgICAgIGNhc2UgX0RvdExvdHRpZS5fd2FzbU1vZHVsZT8uRml0LkZpdEhlaWdodDoKICAgICAgICAgICAgICAgIHJldHVybiAiZml0LWhlaWdodCI7CiAgICAgICAgICAgICAgY2FzZSBfRG90TG90dGllLl93YXNtTW9kdWxlPy5GaXQuRml0V2lkdGg6CiAgICAgICAgICAgICAgICByZXR1cm4gImZpdC13aWR0aCI7CiAgICAgICAgICAgICAgY2FzZSBfRG90TG90dGllLl93YXNtTW9kdWxlPy5GaXQuTm9uZToKICAgICAgICAgICAgICAgIHJldHVybiAibm9uZSI7CiAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiAiY29udGFpbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pKCkKICAgICAgICB9OwogICAgICB9CiAgICAgIHJldHVybiB2b2lkIDA7CiAgICB9CiAgICBnZXQgbWFya2VyKCkgewogICAgICBjb25zdCBtYXJrZXIgPSB0aGlzLl9kb3RMb3R0aWVDb3JlPy5jb25maWcoKS5tYXJrZXI7CiAgICAgIHJldHVybiBtYXJrZXI7CiAgICB9CiAgICBnZXQgbWFuaWZlc3QoKSB7CiAgICAgIHRyeSB7CiAgICAgICAgY29uc3QgbWFuaWZlc3QgPSB0aGlzLl9kb3RMb3R0aWVDb3JlPy5tYW5pZmVzdFN0cmluZygpOwogICAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsIHx8ICFtYW5pZmVzdCkgcmV0dXJuIG51bGw7CiAgICAgICAgY29uc3QgbWFuaWZlc3RKc29uID0gSlNPTi5wYXJzZShtYW5pZmVzdCk7CiAgICAgICAgaWYgKE9iamVjdC5rZXlzKG1hbmlmZXN0SnNvbikubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDsKICAgICAgICByZXR1cm4gbWFuaWZlc3RKc29uOwogICAgICB9IGNhdGNoIChfZXJyKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgIH0KICAgIGdldCByZW5kZXJDb25maWcoKSB7CiAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJDb25maWc7CiAgICB9CiAgICBnZXQgc2VnbWVudCgpIHsKICAgICAgY29uc3Qgc2VnbWVudCA9IHRoaXMuX2RvdExvdHRpZUNvcmU/LmNvbmZpZygpLnNlZ21lbnQ7CiAgICAgIGlmIChzZWdtZW50ICYmIHNlZ21lbnQuc2l6ZSgpID09PSAyKSB7CiAgICAgICAgcmV0dXJuIFtzZWdtZW50LmdldCgwKSwgc2VnbWVudC5nZXQoMSldOwogICAgICB9CiAgICAgIHJldHVybiB2b2lkIDA7CiAgICB9CiAgICBnZXQgbG9vcCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LmNvbmZpZygpLmxvb3BBbmltYXRpb24gPz8gZmFsc2U7CiAgICB9CiAgICBnZXQgbW9kZSgpIHsKICAgICAgY29uc3QgbW9kZSA9IHRoaXMuX2RvdExvdHRpZUNvcmU/LmNvbmZpZygpLm1vZGU7CiAgICAgIGlmIChtb2RlID09PSBfRG90TG90dGllLl93YXNtTW9kdWxlPy5Nb2RlLlJldmVyc2UpIHsKICAgICAgICByZXR1cm4gInJldmVyc2UiOwogICAgICB9IGVsc2UgaWYgKG1vZGUgPT09IF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGU/Lk1vZGUuQm91bmNlKSB7CiAgICAgICAgcmV0dXJuICJib3VuY2UiOwogICAgICB9IGVsc2UgaWYgKG1vZGUgPT09IF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGU/Lk1vZGUuUmV2ZXJzZUJvdW5jZSkgewogICAgICAgIHJldHVybiAicmV2ZXJzZS1ib3VuY2UiOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAiZm9yd2FyZCI7CiAgICAgIH0KICAgIH0KICAgIGdldCBpc0Zyb3plbigpIHsKICAgICAgcmV0dXJuIHRoaXMuX2lzRnJvemVuOwogICAgfQogICAgZ2V0IGJhY2tncm91bmRDb2xvcigpIHsKICAgICAgcmV0dXJuIHRoaXMuX2JhY2tncm91bmRDb2xvciA/PyAiIjsKICAgIH0KICAgIGdldCBhdXRvcGxheSgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LmNvbmZpZygpLmF1dG9wbGF5ID8/IGZhbHNlOwogICAgfQogICAgZ2V0IHVzZUZyYW1lSW50ZXJwb2xhdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LmNvbmZpZygpLnVzZUZyYW1lSW50ZXJwb2xhdGlvbiA/PyBmYWxzZTsKICAgIH0KICAgIGdldCBzcGVlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LmNvbmZpZygpLnNwZWVkID8/IDA7CiAgICB9CiAgICBnZXQgaXNSZWFkeSgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmUgIT09IG51bGw7CiAgICB9CiAgICBnZXQgaXNMb2FkZWQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5pc0xvYWRlZCgpID8/IGZhbHNlOwogICAgfQogICAgZ2V0IGlzUGxheWluZygpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LmlzUGxheWluZygpID8/IGZhbHNlOwogICAgfQogICAgZ2V0IGlzUGF1c2VkKCkgewogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZT8uaXNQYXVzZWQoKSA/PyBmYWxzZTsKICAgIH0KICAgIGdldCBpc1N0b3BwZWQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5pc1N0b3BwZWQoKSA/PyBmYWxzZTsKICAgIH0KICAgIGdldCBjdXJyZW50RnJhbWUoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5jdXJyZW50RnJhbWUoKSA/PyAwOwogICAgfQogICAgZ2V0IGxvb3BDb3VudCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/Lmxvb3BDb3VudCgpID8/IDA7CiAgICB9CiAgICBnZXQgdG90YWxGcmFtZXMoKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy50b3RhbEZyYW1lcygpID8/IDA7CiAgICB9CiAgICBnZXQgZHVyYXRpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5kdXJhdGlvbigpID8/IDA7CiAgICB9CiAgICBnZXQgc2VnbWVudER1cmF0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZT8uc2VnbWVudER1cmF0aW9uKCkgPz8gMDsKICAgIH0KICAgIGdldCBjYW52YXMoKSB7CiAgICAgIHJldHVybiB0aGlzLl9jYW52YXM7CiAgICB9CiAgICBsb2FkKGNvbmZpZykgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCB8fCBfRG90TG90dGllLl93YXNtTW9kdWxlID09PSBudWxsKSByZXR1cm47CiAgICAgIHRoaXMuX2RvdExvdHRpZUNvcmUuc2V0Q29uZmlnKHsKICAgICAgICBhdXRvcGxheTogY29uZmlnLmF1dG9wbGF5ID8/IGZhbHNlLAogICAgICAgIGJhY2tncm91bmRDb2xvcjogMCwKICAgICAgICBsb29wQW5pbWF0aW9uOiBjb25maWcubG9vcCA/PyBmYWxzZSwKICAgICAgICBtb2RlOiBjcmVhdGVDb3JlTW9kZShjb25maWcubW9kZSA/PyAiZm9yd2FyZCIsIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGUpLAogICAgICAgIHNlZ21lbnQ6IGNyZWF0ZUNvcmVTZWdtZW50KGNvbmZpZy5zZWdtZW50ID8/IFtdLCBfRG90TG90dGllLl93YXNtTW9kdWxlKSwKICAgICAgICBzcGVlZDogY29uZmlnLnNwZWVkID8/IDEsCiAgICAgICAgdXNlRnJhbWVJbnRlcnBvbGF0aW9uOiBjb25maWcudXNlRnJhbWVJbnRlcnBvbGF0aW9uID8/IHRydWUsCiAgICAgICAgbWFya2VyOiBjb25maWcubWFya2VyID8/ICIiLAogICAgICAgIGxheW91dDogY29uZmlnLmxheW91dCA/IHsKICAgICAgICAgIGFsaWduOiBjcmVhdGVDb3JlQWxpZ24oY29uZmlnLmxheW91dC5hbGlnbiwgX0RvdExvdHRpZS5fd2FzbU1vZHVsZSksCiAgICAgICAgICBmaXQ6IGNyZWF0ZUNvcmVGaXQoY29uZmlnLmxheW91dC5maXQsIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGUpCiAgICAgICAgfSA6IF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGUuY3JlYXRlRGVmYXVsdExheW91dCgpCiAgICAgIH0pOwogICAgICBpZiAoY29uZmlnLmRhdGEpIHsKICAgICAgICB0aGlzLl9sb2FkRnJvbURhdGEoY29uZmlnLmRhdGEpOwogICAgICB9IGVsc2UgaWYgKGNvbmZpZy5zcmMpIHsKICAgICAgICB0aGlzLl9sb2FkRnJvbVNyYyhjb25maWcuc3JjKTsKICAgICAgfQogICAgICB0aGlzLnNldEJhY2tncm91bmRDb2xvcihjb25maWcuYmFja2dyb3VuZENvbG9yID8/ICIiKTsKICAgIH0KICAgIF9yZW5kZXIoKSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsIHx8IHRoaXMuX2NvbnRleHQgPT09IG51bGwpIHJldHVybiBmYWxzZTsKICAgICAgY29uc3QgcmVuZGVyZWQgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLnJlbmRlcigpOwogICAgICBpZiAocmVuZGVyZWQpIHsKICAgICAgICBjb25zdCBidWZmZXIgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLmJ1ZmZlcigpOwogICAgICAgIGNvbnN0IGNsYW1wZWRCdWZmZXIgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoYnVmZmVyLCAwLCB0aGlzLl9jYW52YXMud2lkdGggKiB0aGlzLl9jYW52YXMuaGVpZ2h0ICogNCk7CiAgICAgICAgbGV0IGltYWdlRGF0YSA9IG51bGw7CiAgICAgICAgaWYgKHR5cGVvZiBJbWFnZURhdGEgPT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICBpbWFnZURhdGEgPSB0aGlzLl9jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh0aGlzLl9jYW52YXMud2lkdGgsIHRoaXMuX2NhbnZhcy5oZWlnaHQpOwogICAgICAgICAgaW1hZ2VEYXRhLmRhdGEuc2V0KGNsYW1wZWRCdWZmZXIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpbWFnZURhdGEgPSBuZXcgSW1hZ2VEYXRhKGNsYW1wZWRCdWZmZXIsIHRoaXMuX2NhbnZhcy53aWR0aCwgdGhpcy5fY2FudmFzLmhlaWdodCk7CiAgICAgICAgfQogICAgICAgIHRoaXMuX2NvbnRleHQucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCk7CiAgICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsKICAgICAgICAgIHR5cGU6ICJyZW5kZXIiLAogICAgICAgICAgY3VycmVudEZyYW1lOiB0aGlzLl9kb3RMb3R0aWVDb3JlLmN1cnJlbnRGcmFtZSgpCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgX2RyYXcoKSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsIHx8IHRoaXMuX2NvbnRleHQgPT09IG51bGwgfHwgIXRoaXMuX2RvdExvdHRpZUNvcmUuaXNQbGF5aW5nKCkpIHJldHVybjsKICAgICAgY29uc3QgbmV4dEZyYW1lID0gdGhpcy5fZG90TG90dGllQ29yZS5yZXF1ZXN0RnJhbWUoKTsKICAgICAgY29uc3QgdXBkYXRlZCA9IHRoaXMuX2RvdExvdHRpZUNvcmUuc2V0RnJhbWUobmV4dEZyYW1lKTsKICAgICAgaWYgKHVwZGF0ZWQpIHsKICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goewogICAgICAgICAgdHlwZTogImZyYW1lIiwKICAgICAgICAgIGN1cnJlbnRGcmFtZTogdGhpcy5fZG90TG90dGllQ29yZS5jdXJyZW50RnJhbWUoKQogICAgICAgIH0pOwogICAgICAgIGNvbnN0IHJlbmRlcmVkID0gdGhpcy5fcmVuZGVyKCk7CiAgICAgICAgaWYgKHJlbmRlcmVkKSB7CiAgICAgICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZS5pc0NvbXBsZXRlKCkpIHsKICAgICAgICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUuY29uZmlnKCkubG9vcEFuaW1hdGlvbikgewogICAgICAgICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7CiAgICAgICAgICAgICAgICB0eXBlOiAibG9vcCIsCiAgICAgICAgICAgICAgICBsb29wQ291bnQ6IHRoaXMuX2RvdExvdHRpZUNvcmUubG9vcENvdW50KCkKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goeyB0eXBlOiAiY29tcGxldGUiIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lSWQgPSB0aGlzLl9mcmFtZU1hbmFnZXIucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2RyYXcuYmluZCh0aGlzKSk7CiAgICB9CiAgICBwbGF5KCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICBjb25zdCBvayA9IHRoaXMuX2RvdExvdHRpZUNvcmUucGxheSgpOwogICAgICBpZiAob2sgfHwgdGhpcy5fZG90TG90dGllQ29yZS5pc1BsYXlpbmcoKSkgewogICAgICAgIHRoaXMuX2lzRnJvemVuID0gZmFsc2U7CiAgICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsgdHlwZTogInBsYXkiIH0pOwogICAgICAgIHRoaXMuX2FuaW1hdGlvbkZyYW1lSWQgPSB0aGlzLl9mcmFtZU1hbmFnZXIucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2RyYXcuYmluZCh0aGlzKSk7CiAgICAgIH0KICAgIH0KICAgIHBhdXNlKCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICBjb25zdCBvayA9IHRoaXMuX2RvdExvdHRpZUNvcmUucGF1c2UoKTsKICAgICAgaWYgKG9rIHx8IHRoaXMuX2RvdExvdHRpZUNvcmUuaXNQYXVzZWQoKSkgewogICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7IHR5cGU6ICJwYXVzZSIgfSk7CiAgICAgIH0KICAgIH0KICAgIHN0b3AoKSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsKSByZXR1cm47CiAgICAgIGNvbnN0IG9rID0gdGhpcy5fZG90TG90dGllQ29yZS5zdG9wKCk7CiAgICAgIGlmIChvaykgewogICAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5kaXNwYXRjaCh7IHR5cGU6ICJmcmFtZSIsIGN1cnJlbnRGcmFtZTogdGhpcy5fZG90TG90dGllQ29yZS5jdXJyZW50RnJhbWUoKSB9KTsKICAgICAgICB0aGlzLl9yZW5kZXIoKTsKICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goeyB0eXBlOiAic3RvcCIgfSk7CiAgICAgIH0KICAgIH0KICAgIHNldEZyYW1lKGZyYW1lKSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsKSByZXR1cm47CiAgICAgIGlmIChmcmFtZSA8IDAgfHwgZnJhbWUgPiB0aGlzLl9kb3RMb3R0aWVDb3JlLnRvdGFsRnJhbWVzKCkpIHJldHVybjsKICAgICAgY29uc3Qgb2sgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLnNlZWsoZnJhbWUpOwogICAgICBpZiAob2spIHsKICAgICAgICB0aGlzLl9ldmVudE1hbmFnZXIuZGlzcGF0Y2goeyB0eXBlOiAiZnJhbWUiLCBjdXJyZW50RnJhbWU6IHRoaXMuX2RvdExvdHRpZUNvcmUuY3VycmVudEZyYW1lKCkgfSk7CiAgICAgICAgdGhpcy5fcmVuZGVyKCk7CiAgICAgIH0KICAgIH0KICAgIHNldFNwZWVkKHNwZWVkKSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsKSByZXR1cm47CiAgICAgIHRoaXMuX2RvdExvdHRpZUNvcmUuc2V0Q29uZmlnKHsKICAgICAgICAuLi50aGlzLl9kb3RMb3R0aWVDb3JlLmNvbmZpZygpLAogICAgICAgIHNwZWVkCiAgICAgIH0pOwogICAgfQogICAgc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsKSByZXR1cm47CiAgICAgIGlmIChJU19CUk9XU0VSICYmIHRoaXMuX2NhbnZhcyBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KSB7CiAgICAgICAgdGhpcy5fY2FudmFzLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuX2RvdExvdHRpZUNvcmUuc2V0Q29uZmlnKHsKICAgICAgICAgIC4uLnRoaXMuX2RvdExvdHRpZUNvcmUuY29uZmlnKCksCiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGhleFN0cmluZ1RvUkdCQUludChjb2xvcikKICAgICAgICB9KTsKICAgICAgfQogICAgICB0aGlzLl9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKICAgIH0KICAgIHNldExvb3AobG9vcCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICB0aGlzLl9kb3RMb3R0aWVDb3JlLnNldENvbmZpZyh7CiAgICAgICAgLi4udGhpcy5fZG90TG90dGllQ29yZS5jb25maWcoKSwKICAgICAgICBsb29wQW5pbWF0aW9uOiBsb29wCiAgICAgIH0pOwogICAgfQogICAgc2V0VXNlRnJhbWVJbnRlcnBvbGF0aW9uKHVzZUZyYW1lSW50ZXJwb2xhdGlvbikgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICB0aGlzLl9kb3RMb3R0aWVDb3JlLnNldENvbmZpZyh7CiAgICAgICAgLi4udGhpcy5fZG90TG90dGllQ29yZS5jb25maWcoKSwKICAgICAgICB1c2VGcmFtZUludGVycG9sYXRpb24KICAgICAgfSk7CiAgICB9CiAgICBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7CiAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKTsKICAgIH0KICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHsKICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpOwogICAgfQogICAgZGVzdHJveSgpIHsKICAgICAgdGhpcy5fZG90TG90dGllQ29yZT8uZGVsZXRlKCk7CiAgICAgIHRoaXMuX2RvdExvdHRpZUNvcmUgPSBudWxsOwogICAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDsKICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsKICAgICAgICB0eXBlOiAiZGVzdHJveSIKICAgICAgfSk7CiAgICAgIHRoaXMuX2V2ZW50TWFuYWdlci5yZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgICB0aGlzLl9jbGVhbnVwU3RhdGVNYWNoaW5lTGlzdGVuZXJzKCk7CiAgICB9CiAgICBmcmVlemUoKSB7CiAgICAgIGlmICh0aGlzLl9hbmltYXRpb25GcmFtZUlkID09PSBudWxsKSByZXR1cm47CiAgICAgIHRoaXMuX2ZyYW1lTWFuYWdlci5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9hbmltYXRpb25GcmFtZUlkKTsKICAgICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVJZCA9IG51bGw7CiAgICAgIHRoaXMuX2lzRnJvemVuID0gdHJ1ZTsKICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsgdHlwZTogImZyZWV6ZSIgfSk7CiAgICB9CiAgICB1bmZyZWV6ZSgpIHsKICAgICAgaWYgKHRoaXMuX2FuaW1hdGlvbkZyYW1lSWQgIT09IG51bGwpIHJldHVybjsKICAgICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVJZCA9IHRoaXMuX2ZyYW1lTWFuYWdlci5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fZHJhdy5iaW5kKHRoaXMpKTsKICAgICAgdGhpcy5faXNGcm96ZW4gPSBmYWxzZTsKICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsgdHlwZTogInVuZnJlZXplIiB9KTsKICAgIH0KICAgIHJlc2l6ZSgpIHsKICAgICAgaWYgKElTX0JST1dTRVIgJiYgdGhpcy5fY2FudmFzIGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpIHsKICAgICAgICBjb25zdCBkcHIgPSB0aGlzLl9yZW5kZXJDb25maWcuZGV2aWNlUGl4ZWxSYXRpbyB8fCB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxOwogICAgICAgIGNvbnN0IHsgaGVpZ2h0OiBjbGllbnRIZWlnaHQsIHdpZHRoOiBjbGllbnRXaWR0aCB9ID0gdGhpcy5fY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgIHRoaXMuX2NhbnZhcy53aWR0aCA9IGNsaWVudFdpZHRoICogZHByOwogICAgICAgIHRoaXMuX2NhbnZhcy5oZWlnaHQgPSBjbGllbnRIZWlnaHQgKiBkcHI7CiAgICAgIH0KICAgICAgY29uc3Qgb2sgPSB0aGlzLl9kb3RMb3R0aWVDb3JlPy5yZXNpemUodGhpcy5fY2FudmFzLndpZHRoLCB0aGlzLl9jYW52YXMuaGVpZ2h0KTsKICAgICAgaWYgKG9rKSB7CiAgICAgICAgdGhpcy5fcmVuZGVyKCk7CiAgICAgIH0KICAgIH0KICAgIHNldFNlZ21lbnQoc3RhcnRGcmFtZSwgZW5kRnJhbWUpIHsKICAgICAgaWYgKHRoaXMuX2RvdExvdHRpZUNvcmUgPT09IG51bGwgfHwgX0RvdExvdHRpZS5fd2FzbU1vZHVsZSA9PT0gbnVsbCkgcmV0dXJuOwogICAgICB0aGlzLl9kb3RMb3R0aWVDb3JlLnNldENvbmZpZyh7CiAgICAgICAgLi4udGhpcy5fZG90TG90dGllQ29yZS5jb25maWcoKSwKICAgICAgICBzZWdtZW50OiBjcmVhdGVDb3JlU2VnbWVudChbc3RhcnRGcmFtZSwgZW5kRnJhbWVdLCBfRG90TG90dGllLl93YXNtTW9kdWxlKQogICAgICB9KTsKICAgIH0KICAgIHNldE1vZGUobW9kZSkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCB8fCBfRG90TG90dGllLl93YXNtTW9kdWxlID09PSBudWxsKSByZXR1cm47CiAgICAgIHRoaXMuX2RvdExvdHRpZUNvcmUuc2V0Q29uZmlnKHsKICAgICAgICAuLi50aGlzLl9kb3RMb3R0aWVDb3JlLmNvbmZpZygpLAogICAgICAgIG1vZGU6IGNyZWF0ZUNvcmVNb2RlKG1vZGUsIF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGUpCiAgICAgIH0pOwogICAgfQogICAgc2V0UmVuZGVyQ29uZmlnKGNvbmZpZykgewogICAgICB0aGlzLl9yZW5kZXJDb25maWcgPSBjb25maWc7CiAgICB9CiAgICBsb2FkQW5pbWF0aW9uKGFuaW1hdGlvbklkKSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsIHx8IHRoaXMuX2RvdExvdHRpZUNvcmUuYWN0aXZlQW5pbWF0aW9uSWQoKSA9PT0gYW5pbWF0aW9uSWQpIHJldHVybjsKICAgICAgY29uc3QgbG9hZGVkID0gdGhpcy5fZG90TG90dGllQ29yZS5sb2FkQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0aGlzLl9jYW52YXMud2lkdGgsIHRoaXMuX2NhbnZhcy5oZWlnaHQpOwogICAgICBpZiAobG9hZGVkKSB7CiAgICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsgdHlwZTogImxvYWQiIH0pOwogICAgICAgIHRoaXMucmVzaXplKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5fZXZlbnRNYW5hZ2VyLmRpc3BhdGNoKHsKICAgICAgICAgIHR5cGU6ICJsb2FkRXJyb3IiLAogICAgICAgICAgZXJyb3I6IG5ldyBFcnJvcihgRmFpbGVkIHRvIGFuaW1hdGlvbiA6JHthbmltYXRpb25JZH1gKQogICAgICAgIH0pOwogICAgICB9CiAgICB9CiAgICBzZXRNYXJrZXIobWFya2VyKSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsKSByZXR1cm47CiAgICAgIHRoaXMuX2RvdExvdHRpZUNvcmUuc2V0Q29uZmlnKHsKICAgICAgICAuLi50aGlzLl9kb3RMb3R0aWVDb3JlLmNvbmZpZygpLAogICAgICAgIG1hcmtlcgogICAgICB9KTsKICAgIH0KICAgIG1hcmtlcnMoKSB7CiAgICAgIGNvbnN0IG1hcmtlcnMgPSB0aGlzLl9kb3RMb3R0aWVDb3JlPy5tYXJrZXJzKCk7CiAgICAgIGlmIChtYXJrZXJzKSB7CiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXJrZXJzLnNpemUoKTsgaSArPSAxKSB7CiAgICAgICAgICBjb25zdCBtYXJrZXIgPSBtYXJrZXJzLmdldChpKTsKICAgICAgICAgIHJlc3VsdC5wdXNoKHsKICAgICAgICAgICAgbmFtZTogbWFya2VyLm5hbWUsCiAgICAgICAgICAgIHRpbWU6IG1hcmtlci50aW1lLAogICAgICAgICAgICBkdXJhdGlvbjogbWFya2VyLmR1cmF0aW9uCiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgfQogICAgICByZXR1cm4gW107CiAgICB9CiAgICBsb2FkVGhlbWUodGhlbWVJZCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlOwogICAgICBjb25zdCBsb2FkZWQgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLmxvYWRUaGVtZSh0aGVtZUlkKTsKICAgICAgdGhpcy5fcmVuZGVyKCk7CiAgICAgIHJldHVybiBsb2FkZWQ7CiAgICB9CiAgICBsb2FkVGhlbWVEYXRhKHRoZW1lRGF0YSkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlOwogICAgICBjb25zdCBsb2FkZWQgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLmxvYWRUaGVtZURhdGEodGhlbWVEYXRhKTsKICAgICAgdGhpcy5fcmVuZGVyKCk7CiAgICAgIHJldHVybiBsb2FkZWQ7CiAgICB9CiAgICBzZXRMYXlvdXQobGF5b3V0KSB7CiAgICAgIGlmICh0aGlzLl9kb3RMb3R0aWVDb3JlID09PSBudWxsIHx8IF9Eb3RMb3R0aWUuX3dhc21Nb2R1bGUgPT09IG51bGwpIHJldHVybjsKICAgICAgdGhpcy5fZG90TG90dGllQ29yZS5zZXRDb25maWcoewogICAgICAgIC4uLnRoaXMuX2RvdExvdHRpZUNvcmUuY29uZmlnKCksCiAgICAgICAgbGF5b3V0OiB7CiAgICAgICAgICBhbGlnbjogY3JlYXRlQ29yZUFsaWduKGxheW91dC5hbGlnbiwgX0RvdExvdHRpZS5fd2FzbU1vZHVsZSksCiAgICAgICAgICBmaXQ6IGNyZWF0ZUNvcmVGaXQobGF5b3V0LmZpdCwgX0RvdExvdHRpZS5fd2FzbU1vZHVsZSkKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogICAgc2V0Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdodCkgewogICAgICBpZiAodGhpcy5fZG90TG90dGllQ29yZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlOwogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZS5zZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgIH0KICAgIHN0YXRpYyBzZXRXYXNtVXJsKHVybCkgewogICAgICBEb3RMb3R0aWVXYXNtTG9hZGVyLnNldFdhc21VcmwodXJsKTsKICAgIH0KICAgIGxvYWRTdGF0ZU1hY2hpbmUoc3RhdGVNYWNoaW5lSWQpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LmxvYWRTdGF0ZU1hY2hpbmUoc3RhdGVNYWNoaW5lSWQpID8/IGZhbHNlOwogICAgfQogICAgc3RhcnRTdGF0ZU1hY2hpbmUoKSB7CiAgICAgIGNvbnN0IHN0YXJ0ZWQgPSB0aGlzLl9kb3RMb3R0aWVDb3JlPy5zdGFydFN0YXRlTWFjaGluZSgpID8/IGZhbHNlOwogICAgICBpZiAoc3RhcnRlZCkgewogICAgICAgIHRoaXMuX3NldHVwU3RhdGVNYWNoaW5lTGlzdGVuZXJzKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHN0YXJ0ZWQ7CiAgICB9CiAgICBzdG9wU3RhdGVNYWNoaW5lKCkgewogICAgICBjb25zdCBzdG9wcGVkID0gdGhpcy5fZG90TG90dGllQ29yZT8uc3RvcFN0YXRlTWFjaGluZSgpID8/IGZhbHNlOwogICAgICBpZiAoc3RvcHBlZCkgewogICAgICAgIHRoaXMuX2NsZWFudXBTdGF0ZU1hY2hpbmVMaXN0ZW5lcnMoKTsKICAgICAgfQogICAgICByZXR1cm4gc3RvcHBlZDsKICAgIH0KICAgIF9nZXRQb2ludGVyUG9zaXRpb24oZXZlbnQpIHsKICAgICAgY29uc3QgcmVjdCA9IHRoaXMuX2NhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgY29uc3Qgc2NhbGVYID0gdGhpcy5fY2FudmFzLndpZHRoIC8gcmVjdC53aWR0aDsKICAgICAgY29uc3Qgc2NhbGVZID0gdGhpcy5fY2FudmFzLmhlaWdodCAvIHJlY3QuaGVpZ2h0OwogICAgICBjb25zdCBkZXZpY2VQaXhlbFJhdGlvID0gdGhpcy5fcmVuZGVyQ29uZmlnLmRldmljZVBpeGVsUmF0aW8gfHwgd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMTsKICAgICAgY29uc3QgeCA9IChldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0KSAqIHNjYWxlWCAvIGRldmljZVBpeGVsUmF0aW87CiAgICAgIGNvbnN0IHkgPSAoZXZlbnQuY2xpZW50WSAtIHJlY3QudG9wKSAqIHNjYWxlWSAvIGRldmljZVBpeGVsUmF0aW87CiAgICAgIHJldHVybiB7CiAgICAgICAgeCwKICAgICAgICB5CiAgICAgIH07CiAgICB9CiAgICBfb25Qb2ludGVyVXAoZXZlbnQpIHsKICAgICAgY29uc3QgeyB4LCB5IH0gPSB0aGlzLl9nZXRQb2ludGVyUG9zaXRpb24oZXZlbnQpOwogICAgICB0aGlzLnBvc3RTdGF0ZU1hY2hpbmVFdmVudChgT25Qb2ludGVyVXA6ICR7eH0gJHt5fWApOwogICAgfQogICAgX29uUG9pbnRlckRvd24oZXZlbnQpIHsKICAgICAgY29uc3QgeyB4LCB5IH0gPSB0aGlzLl9nZXRQb2ludGVyUG9zaXRpb24oZXZlbnQpOwogICAgICB0aGlzLnBvc3RTdGF0ZU1hY2hpbmVFdmVudChgT25Qb2ludGVyRG93bjogJHt4fSAke3l9YCk7CiAgICB9CiAgICBfb25Qb2ludGVyTW92ZShldmVudCkgewogICAgICBjb25zdCB7IHgsIHkgfSA9IHRoaXMuX2dldFBvaW50ZXJQb3NpdGlvbihldmVudCk7CiAgICAgIHRoaXMucG9zdFN0YXRlTWFjaGluZUV2ZW50KGBPblBvaW50ZXJNb3ZlOiAke3h9ICR7eX1gKTsKICAgIH0KICAgIF9vblBvaW50ZXJFbnRlcihldmVudCkgewogICAgICBjb25zdCB7IHgsIHkgfSA9IHRoaXMuX2dldFBvaW50ZXJQb3NpdGlvbihldmVudCk7CiAgICAgIHRoaXMucG9zdFN0YXRlTWFjaGluZUV2ZW50KGBPblBvaW50ZXJFbnRlcjogJHt4fSAke3l9YCk7CiAgICB9CiAgICBfb25Qb2ludGVyTGVhdmUoZXZlbnQpIHsKICAgICAgY29uc3QgeyB4LCB5IH0gPSB0aGlzLl9nZXRQb2ludGVyUG9zaXRpb24oZXZlbnQpOwogICAgICB0aGlzLnBvc3RTdGF0ZU1hY2hpbmVFdmVudChgT25Qb2ludGVyRXhpdDogJHt4fSAke3l9YCk7CiAgICB9CiAgICBfb25Db21wbGV0ZSgpIHsKICAgICAgdGhpcy5wb3N0U3RhdGVNYWNoaW5lRXZlbnQoIk9uQ29tcGxldGUiKTsKICAgIH0KICAgIC8qKgogICAgICogQGV4cGVyaW1lbnRhbAogICAgICogQHBhcmFtIGV2ZW50IC0gVGhlIGV2ZW50IHRvIGJlIHBvc3RlZCB0byB0aGUgc3RhdGUgbWFjaGluZQogICAgICogQHJldHVybnMgYm9vbGVhbiAtIHRydWUgaWYgdGhlIGV2ZW50IHdhcyBwb3N0ZWQgc3VjY2Vzc2Z1bGx5LCBmYWxzZSBvdGhlcndpc2UKICAgICAqLwogICAgcG9zdFN0YXRlTWFjaGluZUV2ZW50KGV2ZW50KSB7CiAgICAgIGNvbnN0IHJ0ID0gdGhpcy5fZG90TG90dGllQ29yZT8ucG9zdEV2ZW50UGF5bG9hZChldmVudCkgPz8gMTsKICAgICAgaWYgKHJ0ID09PSAyKSB7CiAgICAgICAgdGhpcy5wbGF5KCk7CiAgICAgIH0gZWxzZSBpZiAocnQgPT09IDMpIHsKICAgICAgICB0aGlzLnBhdXNlKCk7CiAgICAgIH0gZWxzZSBpZiAocnQgPT09IDQpIHsKICAgICAgICB0aGlzLl9yZW5kZXIoKTsKICAgICAgfQogICAgICByZXR1cm4gcnQ7CiAgICB9CiAgICBnZXRTdGF0ZU1hY2hpbmVMaXN0ZW5lcnMoKSB7CiAgICAgIGlmICghdGhpcy5fZG90TG90dGllQ29yZSkgcmV0dXJuIFtdOwogICAgICBjb25zdCBsaXN0ZW5lcnNWZWN0b3IgPSB0aGlzLl9kb3RMb3R0aWVDb3JlLnN0YXRlTWFjaGluZUZyYW1ld29ya1NldHVwKCk7CiAgICAgIGNvbnN0IGxpc3RlbmVycyA9IFtdOwogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RlbmVyc1ZlY3Rvci5zaXplKCk7IGkgKz0gMSkgewogICAgICAgIGxpc3RlbmVycy5wdXNoKGxpc3RlbmVyc1ZlY3Rvci5nZXQoaSkpOwogICAgICB9CiAgICAgIHJldHVybiBsaXN0ZW5lcnM7CiAgICB9CiAgICBfc2V0dXBTdGF0ZU1hY2hpbmVMaXN0ZW5lcnMoKSB7CiAgICAgIGlmIChJU19CUk9XU0VSICYmIHRoaXMuX2NhbnZhcyBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50ICYmIHRoaXMuX2RvdExvdHRpZUNvcmUgIT09IG51bGwgJiYgdGhpcy5pc0xvYWRlZCkgewogICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuZ2V0U3RhdGVNYWNoaW5lTGlzdGVuZXJzKCk7CiAgICAgICAgaWYgKGxpc3RlbmVycy5pbmNsdWRlcygiUG9pbnRlclVwIikpIHsKICAgICAgICAgIHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLCB0aGlzLl9wb2ludGVyVXBNZXRob2QpOwogICAgICAgIH0KICAgICAgICBpZiAobGlzdGVuZXJzLmluY2x1ZGVzKCJQb2ludGVyRG93biIpKSB7CiAgICAgICAgICB0aGlzLl9jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLCB0aGlzLl9wb2ludGVyRG93bk1ldGhvZCk7CiAgICAgICAgfQogICAgICAgIGlmIChsaXN0ZW5lcnMuaW5jbHVkZXMoIlBvaW50ZXJNb3ZlIikpIHsKICAgICAgICAgIHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVybW92ZSIsIHRoaXMuX3BvaW50ZXJNb3ZlTWV0aG9kKTsKICAgICAgICB9CiAgICAgICAgaWYgKGxpc3RlbmVycy5pbmNsdWRlcygiUG9pbnRlckVudGVyIikpIHsKICAgICAgICAgIHRoaXMuX2NhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZW50ZXIiLCB0aGlzLl9wb2ludGVyRW50ZXJNZXRob2QpOwogICAgICAgIH0KICAgICAgICBpZiAobGlzdGVuZXJzLmluY2x1ZGVzKCJQb2ludGVyRXhpdCIpKSB7CiAgICAgICAgICB0aGlzLl9jYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcmxlYXZlIiwgdGhpcy5fcG9pbnRlckV4aXRNZXRob2QpOwogICAgICAgIH0KICAgICAgICBpZiAobGlzdGVuZXJzLmluY2x1ZGVzKCJDb21wbGV0ZSIpKSB7CiAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNvbXBsZXRlIiwgdGhpcy5fb25Db21wbGV0ZU1ldGhvZCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBfY2xlYW51cFN0YXRlTWFjaGluZUxpc3RlbmVycygpIHsKICAgICAgaWYgKElTX0JST1dTRVIgJiYgdGhpcy5fY2FudmFzIGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpIHsKICAgICAgICB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIiwgdGhpcy5fcG9pbnRlclVwTWV0aG9kKTsKICAgICAgICB0aGlzLl9jYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcmRvd24iLCB0aGlzLl9wb2ludGVyRG93bk1ldGhvZCk7CiAgICAgICAgdGhpcy5fY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIiwgdGhpcy5fcG9pbnRlck1vdmVNZXRob2QpOwogICAgICAgIHRoaXMuX2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyZW50ZXIiLCB0aGlzLl9wb2ludGVyRW50ZXJNZXRob2QpOwogICAgICAgIHRoaXMuX2NhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVybGVhdmUiLCB0aGlzLl9wb2ludGVyRXhpdE1ldGhvZCk7CiAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCJjb21wbGV0ZSIsIHRoaXMuX29uQ29tcGxldGVNZXRob2QpOwogICAgICB9CiAgICB9CiAgICBsb2FkU3RhdGVNYWNoaW5lRGF0YShzdGF0ZU1hY2hpbmVEYXRhKSB7CiAgICAgIHJldHVybiB0aGlzLl9kb3RMb3R0aWVDb3JlPy5sb2FkU3RhdGVNYWNoaW5lRGF0YShzdGF0ZU1hY2hpbmVEYXRhKSA/PyBmYWxzZTsKICAgIH0KICAgIGFuaW1hdGlvblNpemUoKSB7CiAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5fZG90TG90dGllQ29yZT8uYW5pbWF0aW9uU2l6ZSgpLmdldCgwKSA/PyAwOwogICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLl9kb3RMb3R0aWVDb3JlPy5hbmltYXRpb25TaXplKCkuZ2V0KDEpID8/IDA7CiAgICAgIHJldHVybiB7CiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH07CiAgICB9CiAgICBzZXRTdGF0ZU1hY2hpbmVCb29sZWFuQ29udGV4dChuYW1lLCB2YWx1ZSkgewogICAgICByZXR1cm4gdGhpcy5fZG90TG90dGllQ29yZT8uc2V0U3RhdGVNYWNoaW5lQm9vbGVhbkNvbnRleHQobmFtZSwgdmFsdWUpID8/IGZhbHNlOwogICAgfQogICAgc2V0U3RhdGVNYWNoaW5lTnVtZXJpY0NvbnRleHQobmFtZSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LnNldFN0YXRlTWFjaGluZU51bWVyaWNDb250ZXh0KG5hbWUsIHZhbHVlKSA/PyBmYWxzZTsKICAgIH0KICAgIHNldFN0YXRlTWFjaGluZVN0cmluZ0NvbnRleHQobmFtZSwgdmFsdWUpIHsKICAgICAgcmV0dXJuIHRoaXMuX2RvdExvdHRpZUNvcmU/LnNldFN0YXRlTWFjaGluZVN0cmluZ0NvbnRleHQobmFtZSwgdmFsdWUpID8/IGZhbHNlOwogICAgfQogIH07CiAgX19wdWJsaWNGaWVsZChfRG90TG90dGllLCAiX3dhc21Nb2R1bGUiLCBudWxsKTsKICB2YXIgRG90TG90dGllID0gX0RvdExvdHRpZTsKCiAgLy8gc3JjL3dvcmtlci9kb3Rsb3R0aWUud29ya2VyLnRzCiAgdmFyIGluc3RhbmNlc01hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgdmFyIGV2ZW50SGFuZGxlck1hcCA9IHsKICAgIHJlYWR5OiAoaW5zdGFuY2VJZCkgPT4gKGV2ZW50KSA9PiB7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gewogICAgICAgIGlkOiAiIiwKICAgICAgICBtZXRob2Q6ICJvblJlYWR5IiwKICAgICAgICByZXN1bHQ6IHsKICAgICAgICAgIGluc3RhbmNlSWQsCiAgICAgICAgICBldmVudAogICAgICAgIH0KICAgICAgfTsKICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwb25zZSk7CiAgICB9LAogICAgY29tcGxldGU6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6ICIiLAogICAgICAgIG1ldGhvZDogIm9uQ29tcGxldGUiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50CiAgICAgICAgfQogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgIH0sCiAgICBsb2FkOiAoaW5zdGFuY2VJZCkgPT4gKGV2ZW50KSA9PiB7CiAgICAgIGNvbnN0IGxvYWRFdmVudCA9IGV2ZW50OwogICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICBpZDogIiIsCiAgICAgICAgbWV0aG9kOiAib25Mb2FkIiwKICAgICAgICByZXN1bHQ6IHsKICAgICAgICAgIGluc3RhbmNlSWQsCiAgICAgICAgICBldmVudDogbG9hZEV2ZW50CiAgICAgICAgfQogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgIH0sCiAgICBsb2FkRXJyb3I6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgbG9hZEVycm9yRXZlbnQgPSBldmVudDsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6ICIiLAogICAgICAgIG1ldGhvZDogIm9uTG9hZEVycm9yIiwKICAgICAgICByZXN1bHQ6IHsKICAgICAgICAgIGluc3RhbmNlSWQsCiAgICAgICAgICBldmVudDogbG9hZEVycm9yRXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfSwKICAgIGxvb3A6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgbG9vcEV2ZW50ID0gZXZlbnQ7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gewogICAgICAgIGlkOiAiIiwKICAgICAgICBtZXRob2Q6ICJvbkxvb3AiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50OiBsb29wRXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfSwKICAgIHBsYXk6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgcGxheUV2ZW50ID0gZXZlbnQ7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gewogICAgICAgIGlkOiAiIiwKICAgICAgICBtZXRob2Q6ICJvblBsYXkiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50OiBwbGF5RXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfSwKICAgIHBhdXNlOiAoaW5zdGFuY2VJZCkgPT4gKGV2ZW50KSA9PiB7CiAgICAgIGNvbnN0IHBhdXNlRXZlbnQgPSBldmVudDsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6ICIiLAogICAgICAgIG1ldGhvZDogIm9uUGF1c2UiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50OiBwYXVzZUV2ZW50CiAgICAgICAgfQogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgIH0sCiAgICBzdG9wOiAoaW5zdGFuY2VJZCkgPT4gKGV2ZW50KSA9PiB7CiAgICAgIGNvbnN0IHN0b3BFdmVudCA9IGV2ZW50OwogICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICBpZDogIiIsCiAgICAgICAgbWV0aG9kOiAib25TdG9wIiwKICAgICAgICByZXN1bHQ6IHsKICAgICAgICAgIGluc3RhbmNlSWQsCiAgICAgICAgICBldmVudDogc3RvcEV2ZW50CiAgICAgICAgfQogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgIH0sCiAgICBmcmFtZTogKGluc3RhbmNlSWQpID0+IChldmVudCkgPT4gewogICAgICBjb25zdCBmcmFtZUV2ZW50ID0gZXZlbnQ7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gewogICAgICAgIGlkOiAiIiwKICAgICAgICBtZXRob2Q6ICJvbkZyYW1lIiwKICAgICAgICByZXN1bHQ6IHsKICAgICAgICAgIGluc3RhbmNlSWQsCiAgICAgICAgICBldmVudDogZnJhbWVFdmVudAogICAgICAgIH0KICAgICAgfTsKICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwb25zZSk7CiAgICB9LAogICAgcmVuZGVyOiAoaW5zdGFuY2VJZCkgPT4gKGV2ZW50KSA9PiB7CiAgICAgIGNvbnN0IHJlbmRlckV2ZW50ID0gZXZlbnQ7CiAgICAgIGNvbnN0IHJlc3BvbnNlID0gewogICAgICAgIGlkOiAiIiwKICAgICAgICBtZXRob2Q6ICJvblJlbmRlciIsCiAgICAgICAgcmVzdWx0OiB7CiAgICAgICAgICBpbnN0YW5jZUlkLAogICAgICAgICAgZXZlbnQ6IHJlbmRlckV2ZW50CiAgICAgICAgfQogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgIH0sCiAgICBmcmVlemU6IChpbnN0YW5jZUlkKSA9PiAoZXZlbnQpID0+IHsKICAgICAgY29uc3QgZnJlZXplRXZlbnQgPSBldmVudDsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6ICIiLAogICAgICAgIG1ldGhvZDogIm9uRnJlZXplIiwKICAgICAgICByZXN1bHQ6IHsKICAgICAgICAgIGluc3RhbmNlSWQsCiAgICAgICAgICBldmVudDogZnJlZXplRXZlbnQKICAgICAgICB9CiAgICAgIH07CiAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UpOwogICAgfSwKICAgIHVuZnJlZXplOiAoaW5zdGFuY2VJZCkgPT4gKGV2ZW50KSA9PiB7CiAgICAgIGNvbnN0IHVuZnJlZXplRXZlbnQgPSBldmVudDsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6ICIiLAogICAgICAgIG1ldGhvZDogIm9uVW5mcmVlemUiLAogICAgICAgIHJlc3VsdDogewogICAgICAgICAgaW5zdGFuY2VJZCwKICAgICAgICAgIGV2ZW50OiB1bmZyZWV6ZUV2ZW50CiAgICAgICAgfQogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgIH0sCiAgICBkZXN0cm95OiAoaW5zdGFuY2VJZCkgPT4gKGV2ZW50KSA9PiB7CiAgICAgIGNvbnN0IGRlc3Ryb3lFdmVudCA9IGV2ZW50OwogICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICBpZDogIiIsCiAgICAgICAgbWV0aG9kOiAib25EZXN0cm95IiwKICAgICAgICByZXN1bHQ6IHsKICAgICAgICAgIGluc3RhbmNlSWQsCiAgICAgICAgICBldmVudDogZGVzdHJveUV2ZW50CiAgICAgICAgfQogICAgICB9OwogICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgIH0KICB9OwogIHZhciBjb21tYW5kcyA9IHsKICAgIGdldERvdExvdHRpZUluc3RhbmNlU3RhdGUocmVxdWVzdCkgewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgY29uc3Qgc3RhdGUgPSB7CiAgICAgICAgaXNMb2FkZWQ6IGluc3RhbmNlLmlzTG9hZGVkLAogICAgICAgIGlzUGF1c2VkOiBpbnN0YW5jZS5pc1BhdXNlZCwKICAgICAgICBpc1BsYXlpbmc6IGluc3RhbmNlLmlzUGxheWluZywKICAgICAgICBpc1N0b3BwZWQ6IGluc3RhbmNlLmlzU3RvcHBlZCwKICAgICAgICBpc0Zyb3plbjogaW5zdGFuY2UuaXNGcm96ZW4sCiAgICAgICAgbG9vcDogaW5zdGFuY2UubG9vcCwKICAgICAgICBtb2RlOiBpbnN0YW5jZS5tb2RlLAogICAgICAgIHNwZWVkOiBpbnN0YW5jZS5zcGVlZCwKICAgICAgICBjdXJyZW50RnJhbWU6IGluc3RhbmNlLmN1cnJlbnRGcmFtZSwKICAgICAgICB0b3RhbEZyYW1lczogaW5zdGFuY2UudG90YWxGcmFtZXMsCiAgICAgICAgZHVyYXRpb246IGluc3RhbmNlLmR1cmF0aW9uLAogICAgICAgIHVzZUZyYW1lSW50ZXJwb2xhdGlvbjogaW5zdGFuY2UudXNlRnJhbWVJbnRlcnBvbGF0aW9uLAogICAgICAgIHJlbmRlckNvbmZpZzogaW5zdGFuY2UucmVuZGVyQ29uZmlnLAogICAgICAgIG1hcmtlcjogaW5zdGFuY2UubWFya2VyLAogICAgICAgIGJhY2tncm91bmRDb2xvcjogaW5zdGFuY2UuYmFja2dyb3VuZENvbG9yLAogICAgICAgIG1hcmtlcnM6IGluc3RhbmNlLm1hcmtlcnMoKSwKICAgICAgICBhY3RpdmVBbmltYXRpb25JZDogaW5zdGFuY2UuYWN0aXZlQW5pbWF0aW9uSWQsCiAgICAgICAgYWN0aXZlVGhlbWVJZDogaW5zdGFuY2UuYWN0aXZlVGhlbWVJZCwKICAgICAgICBhdXRvcGxheTogaW5zdGFuY2UuYXV0b3BsYXksCiAgICAgICAgc2VnbWVudDogaW5zdGFuY2Uuc2VnbWVudCwKICAgICAgICBsYXlvdXQ6IGluc3RhbmNlLmxheW91dCwKICAgICAgICBzZWdtZW50RHVyYXRpb246IGluc3RhbmNlLnNlZ21lbnREdXJhdGlvbiwKICAgICAgICBpc1JlYWR5OiBpbnN0YW5jZS5pc1JlYWR5LAogICAgICAgIG1hbmlmZXN0OiBpbnN0YW5jZS5tYW5pZmVzdAogICAgICB9OwogICAgICByZXR1cm4gewogICAgICAgIHN0YXRlCiAgICAgIH07CiAgICB9LAogICAgc2V0TGF5b3V0KHJlcXVlc3QpIHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGxheW91dCA9IHJlcXVlc3QucGFyYW1zLmxheW91dDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2Uuc2V0TGF5b3V0KGxheW91dCk7CiAgICAgIHJldHVybiB7CiAgICAgICAgc3VjY2VzczogdHJ1ZQogICAgICB9OwogICAgfSwKICAgIGdldFN0YXRlTWFjaGluZUxpc3RlbmVycyhyZXF1ZXN0KSB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICByZXR1cm4gaW5zdGFuY2UuZ2V0U3RhdGVNYWNoaW5lTGlzdGVuZXJzKCk7CiAgICB9LAogICAgcG9zdFN0YXRlTWFjaGluZUV2ZW50KHJlcXVlc3QpIHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGV2ZW50ID0gcmVxdWVzdC5wYXJhbXMuZXZlbnQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIHJldHVybiBpbnN0YW5jZS5wb3N0U3RhdGVNYWNoaW5lRXZlbnQoZXZlbnQpOwogICAgfSwKICAgIHN0YXJ0U3RhdGVNYWNoaW5lKHJlcXVlc3QpIHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIHJldHVybiBpbnN0YW5jZS5zdGFydFN0YXRlTWFjaGluZSgpOwogICAgfSwKICAgIHN0b3BTdGF0ZU1hY2hpbmUocmVxdWVzdCkgewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGluc3RhbmNlLnN0b3BTdGF0ZU1hY2hpbmUoKTsKICAgIH0sCiAgICBsb2FkU3RhdGVNYWNoaW5lKHJlcXVlc3QpIHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IHN0YXRlTWFjaGluZUlkID0gcmVxdWVzdC5wYXJhbXMuc3RhdGVNYWNoaW5lSWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIHJldHVybiBpbnN0YW5jZS5sb2FkU3RhdGVNYWNoaW5lKHN0YXRlTWFjaGluZUlkKTsKICAgIH0sCiAgICBsb2FkU3RhdGVNYWNoaW5lRGF0YShyZXF1ZXN0KSB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBzdGF0ZU1hY2hpbmVEYXRhID0gcmVxdWVzdC5wYXJhbXMuc3RhdGVNYWNoaW5lRGF0YTsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGluc3RhbmNlLmxvYWRTdGF0ZU1hY2hpbmVEYXRhKHN0YXRlTWFjaGluZURhdGEpOwogICAgfSwKICAgIGNyZWF0ZTogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGNvbmZpZyA9IHJlcXVlc3QucGFyYW1zLmNvbmZpZzsKICAgICAgY29uc3Qgd2lkdGggPSByZXF1ZXN0LnBhcmFtcy53aWR0aDsKICAgICAgY29uc3QgaGVpZ2h0ID0gcmVxdWVzdC5wYXJhbXMuaGVpZ2h0OwogICAgICBpZiAoaW5zdGFuY2VzTWFwLmhhcyhpbnN0YW5jZUlkKSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGFscmVhZHkgZXhpc3RzLmApOwogICAgICB9CiAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IERvdExvdHRpZShjb25maWcpOwogICAgICBpbnN0YW5jZS5jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0OwogICAgICBpbnN0YW5jZS5jYW52YXMud2lkdGggPSB3aWR0aDsKICAgICAgaW5zdGFuY2VzTWFwLnNldChpbnN0YW5jZUlkLCBpbnN0YW5jZSk7CiAgICAgIGNvbnN0IGV2ZW50cyA9IFsKICAgICAgICAiY29tcGxldGUiLAogICAgICAgICJmcmFtZSIsCiAgICAgICAgImxvYWQiLAogICAgICAgICJsb2FkRXJyb3IiLAogICAgICAgICJsb29wIiwKICAgICAgICAicGF1c2UiLAogICAgICAgICJwbGF5IiwKICAgICAgICAic3RvcCIsCiAgICAgICAgImRlc3Ryb3kiLAogICAgICAgICJmcmVlemUiLAogICAgICAgICJ1bmZyZWV6ZSIsCiAgICAgICAgInJlbmRlciIsCiAgICAgICAgInJlYWR5IgogICAgICBdOwogICAgICBldmVudHMuZm9yRWFjaCgoZXZlbnQpID0+IHsKICAgICAgICBpbnN0YW5jZS5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBldmVudEhhbmRsZXJNYXBbZXZlbnRdKGluc3RhbmNlSWQpKTsKICAgICAgfSk7CiAgICAgIHJldHVybiB7CiAgICAgICAgaW5zdGFuY2VJZAogICAgICB9OwogICAgfSwKICAgIGRlc3Ryb3k6IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHJldHVybjsKICAgICAgaW5zdGFuY2UuZGVzdHJveSgpOwogICAgICBpbnN0YW5jZXNNYXAuZGVsZXRlKGluc3RhbmNlSWQpOwogICAgfSwKICAgIGZyZWV6ZTogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIGluc3RhbmNlLmZyZWV6ZSgpOwogICAgfSwKICAgIGxvYWQ6IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBjb25maWcgPSByZXF1ZXN0LnBhcmFtcy5jb25maWc7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIGluc3RhbmNlLmxvYWQoY29uZmlnKTsKICAgIH0sCiAgICBsb2FkQW5pbWF0aW9uOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgYW5pbWF0aW9uSWQgPSByZXF1ZXN0LnBhcmFtcy5hbmltYXRpb25JZDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2UubG9hZEFuaW1hdGlvbihhbmltYXRpb25JZCk7CiAgICB9LAogICAgbG9hZFRoZW1lOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgdGhlbWVJZCA9IHJlcXVlc3QucGFyYW1zLnRoZW1lSWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIHJldHVybiBpbnN0YW5jZS5sb2FkVGhlbWUodGhlbWVJZCk7CiAgICB9LAogICAgbG9hZFRoZW1lRGF0YTogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IHRoZW1lRGF0YSA9IHJlcXVlc3QucGFyYW1zLnRoZW1lRGF0YTsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgcmV0dXJuIGluc3RhbmNlLmxvYWRUaGVtZURhdGEodGhlbWVEYXRhKTsKICAgIH0sCiAgICBwYXVzZTogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIHJldHVybiBpbnN0YW5jZS5wYXVzZSgpOwogICAgfSwKICAgIHBsYXk6IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICByZXR1cm4gaW5zdGFuY2UucGxheSgpOwogICAgfSwKICAgIHJlc2l6ZTogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IHdpZHRoID0gcmVxdWVzdC5wYXJhbXMud2lkdGg7CiAgICAgIGNvbnN0IGhlaWdodCA9IHJlcXVlc3QucGFyYW1zLmhlaWdodDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2UuY2FudmFzLmhlaWdodCA9IGhlaWdodDsKICAgICAgaW5zdGFuY2UuY2FudmFzLndpZHRoID0gd2lkdGg7CiAgICAgIGluc3RhbmNlLnJlc2l6ZSgpOwogICAgICByZXR1cm4gewogICAgICAgIHN1Y2Nlc3M6IHRydWUKICAgICAgfTsKICAgIH0sCiAgICBzZXRCYWNrZ3JvdW5kQ29sb3I6IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSByZXF1ZXN0LnBhcmFtcy5iYWNrZ3JvdW5kQ29sb3I7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIGluc3RhbmNlLnNldEJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwogICAgfSwKICAgIHNldEZyYW1lOiAocmVxdWVzdCkgPT4gewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgZnJhbWUgPSByZXF1ZXN0LnBhcmFtcy5mcmFtZTsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2Uuc2V0RnJhbWUoZnJhbWUpOwogICAgfSwKICAgIHNldE1vZGU6IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBtb2RlID0gcmVxdWVzdC5wYXJhbXMubW9kZTsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2Uuc2V0TW9kZShtb2RlKTsKICAgIH0sCiAgICBzZXRSZW5kZXJDb25maWc6IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCByZW5kZXJDb25maWcgPSByZXF1ZXN0LnBhcmFtcy5yZW5kZXJDb25maWc7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIGluc3RhbmNlLnNldFJlbmRlckNvbmZpZyhyZW5kZXJDb25maWcpOwogICAgfSwKICAgIHNldFNlZ21lbnQ6IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBzZWdtZW50ID0gcmVxdWVzdC5wYXJhbXMuc2VnbWVudDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2Uuc2V0U2VnbWVudChzZWdtZW50WzBdLCBzZWdtZW50WzFdKTsKICAgIH0sCiAgICBzZXRTcGVlZDogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IHNwZWVkID0gcmVxdWVzdC5wYXJhbXMuc3BlZWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIGluc3RhbmNlLnNldFNwZWVkKHNwZWVkKTsKICAgIH0sCiAgICBzZXRVc2VGcmFtZUludGVycG9sYXRpb246IChyZXF1ZXN0KSA9PiB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCB1c2VGcmFtZUludGVycG9sYXRpb24gPSByZXF1ZXN0LnBhcmFtcy51c2VGcmFtZUludGVycG9sYXRpb247CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIGluc3RhbmNlLnNldFVzZUZyYW1lSW50ZXJwb2xhdGlvbih1c2VGcmFtZUludGVycG9sYXRpb24pOwogICAgfSwKICAgIHNldFdhc21Vcmw6IChyZXF1ZXN0KSA9PiB7CiAgICAgIERvdExvdHRpZS5zZXRXYXNtVXJsKHJlcXVlc3QucGFyYW1zLnVybCk7CiAgICB9LAogICAgc3RvcDogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIGluc3RhbmNlLnN0b3AoKTsKICAgIH0sCiAgICB1bmZyZWV6ZTogKHJlcXVlc3QpID0+IHsKICAgICAgY29uc3QgaW5zdGFuY2VJZCA9IHJlcXVlc3QucGFyYW1zLmluc3RhbmNlSWQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIGluc3RhbmNlLnVuZnJlZXplKCk7CiAgICB9LAogICAgc2V0Vmlld3BvcnQocmVxdWVzdCkgewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgeCA9IHJlcXVlc3QucGFyYW1zLng7CiAgICAgIGNvbnN0IHkgPSByZXF1ZXN0LnBhcmFtcy55OwogICAgICBjb25zdCB3aWR0aCA9IHJlcXVlc3QucGFyYW1zLndpZHRoOwogICAgICBjb25zdCBoZWlnaHQgPSByZXF1ZXN0LnBhcmFtcy5oZWlnaHQ7CiAgICAgIGNvbnN0IGluc3RhbmNlID0gaW5zdGFuY2VzTWFwLmdldChpbnN0YW5jZUlkKTsKICAgICAgaWYgKCFpbnN0YW5jZSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFuY2Ugd2l0aCBpZCAke2luc3RhbmNlSWR9IGRvZXMgbm90IGV4aXN0LmApOwogICAgICB9CiAgICAgIHJldHVybiBpbnN0YW5jZS5zZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgIH0sCiAgICBzZXRNYXJrZXIocmVxdWVzdCkgewogICAgICBjb25zdCBpbnN0YW5jZUlkID0gcmVxdWVzdC5wYXJhbXMuaW5zdGFuY2VJZDsKICAgICAgY29uc3QgbWFya2VyID0gcmVxdWVzdC5wYXJhbXMubWFya2VyOwogICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbmNlc01hcC5nZXQoaW5zdGFuY2VJZCk7CiAgICAgIGlmICghaW5zdGFuY2UpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluc3RhbmNlIHdpdGggaWQgJHtpbnN0YW5jZUlkfSBkb2VzIG5vdCBleGlzdC5gKTsKICAgICAgfQogICAgICBpbnN0YW5jZS5zZXRNYXJrZXIobWFya2VyKTsKICAgICAgcmV0dXJuIHsKICAgICAgICBzdWNjZXNzOiB0cnVlCiAgICAgIH07CiAgICB9LAogICAgc2V0TG9vcChyZXF1ZXN0KSB7CiAgICAgIGNvbnN0IGluc3RhbmNlSWQgPSByZXF1ZXN0LnBhcmFtcy5pbnN0YW5jZUlkOwogICAgICBjb25zdCBsb29wID0gcmVxdWVzdC5wYXJhbXMubG9vcDsKICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW5jZXNNYXAuZ2V0KGluc3RhbmNlSWQpOwogICAgICBpZiAoIWluc3RhbmNlKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnN0YW5jZSB3aXRoIGlkICR7aW5zdGFuY2VJZH0gZG9lcyBub3QgZXhpc3QuYCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2Uuc2V0TG9vcChsb29wKTsKICAgICAgcmV0dXJuIHsKICAgICAgICBzdWNjZXNzOiB0cnVlCiAgICAgIH07CiAgICB9CiAgfTsKICBmdW5jdGlvbiBleGVjdXRlQ29tbWFuZChycGNSZXF1ZXN0KSB7CiAgICBjb25zdCBtZXRob2QgPSBycGNSZXF1ZXN0Lm1ldGhvZDsKICAgIGlmICh0eXBlb2YgY29tbWFuZHNbbWV0aG9kXSA9PT0gImZ1bmN0aW9uIikgewogICAgICByZXR1cm4gY29tbWFuZHNbbWV0aG9kXShycGNSZXF1ZXN0KTsKICAgIH0gZWxzZSB7CiAgICAgIHRocm93IG5ldyBFcnJvcihgTWV0aG9kICR7bWV0aG9kfSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gY29tbWFuZHMuYCk7CiAgICB9CiAgfQogIHNlbGYub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7CiAgICB0cnkgewogICAgICBjb25zdCByZXN1bHQgPSBleGVjdXRlQ29tbWFuZChldmVudC5kYXRhKTsKICAgICAgY29uc3QgcmVzcG9uc2UgPSB7CiAgICAgICAgaWQ6IGV2ZW50LmRhdGEuaWQsCiAgICAgICAgbWV0aG9kOiBldmVudC5kYXRhLm1ldGhvZCwKICAgICAgICByZXN1bHQKICAgICAgfTsKICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXNwb25zZSk7CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBjb25zdCBlcnJvclJlc3BvbnNlID0gewogICAgICAgIGlkOiBldmVudC5kYXRhLmlkLAogICAgICAgIG1ldGhvZDogZXZlbnQuZGF0YS5tZXRob2QsCiAgICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UKICAgICAgfTsKICAgICAgc2VsZi5wb3N0TWVzc2FnZShlcnJvclJlc3BvbnNlKTsKICAgIH0KICB9OwogIHZhciBkdW1teSA9ICIiOwogIHZhciBkb3Rsb3R0aWVfd29ya2VyX2RlZmF1bHQgPSBkdW1teTsKfSkoKTsK",{type:"classic"})}};var RI=class{constructor(){Z(this,"_workers",new Map);Z(this,"_animationWorkerMap",new Map);}getWorker(C){return this._workers.has(C)||this._workers.set(C,new hI),this._workers.get(C)}assignAnimationToWorker(C,i){this._animationWorkerMap.set(C,i);}unassignAnimationFromWorker(C){this._animationWorkerMap.delete(C);}sendMessage(C,i,d){this.getWorker(C).postMessage(i,d||[]);}terminateWorker(C){let i=this._workers.get(C);i&&(i.terminate(),this._workers.delete(C));}};function Qg(r){if(r instanceof OffscreenCanvas)return {width:r.width,height:r.height};let{height:C,width:i}=r.getBoundingClientRect();return {width:i*window.devicePixelRatio,height:C*window.devicePixelRatio}}function jg(){return Date.now().toString(36)+Math.random().toString(36).substr(2,9)}var J=class J{constructor(C){Z(this,"_eventManager",new AI);Z(this,"_id");Z(this,"_worker");Z(this,"_canvas");Z(this,"_dotLottieInstanceState",{markers:[],autoplay:!1,backgroundColor:"",currentFrame:0,duration:0,loop:!1,mode:"forward",segment:[0,0],segmentDuration:0,speed:1,totalFrames:0,isLoaded:!1,isPlaying:!1,isPaused:!1,isStopped:!0,isFrozen:!1,useFrameInterpolation:!1,renderConfig:{devicePixelRatio:window.devicePixelRatio},activeAnimationId:"",activeThemeId:"",layout:void 0,marker:void 0,isReady:!1,manifest:null});Z(this,"_created",!1);Z(this,"_pointerUpMethod");Z(this,"_pointerDownMethod");Z(this,"_pointerMoveMethod");Z(this,"_pointerEnterMethod");Z(this,"_pointerExitMethod");Z(this,"_onCompleteMethod");this._canvas=C.canvas,this._id=`dotlottie-${jg()}`;let i=C.workerId||"defaultWorker";this._worker=J._workerManager.getWorker(i),J._workerManager.assignAnimationToWorker(this._id,i),J._wasmUrl&&this._sendMessage("setWasmUrl",{url:J._wasmUrl}),this._create(C),this._worker.addEventListener("message",this._handleWorkerEvent.bind(this)),this._pointerUpMethod=this._onPointerUp.bind(this),this._pointerDownMethod=this._onPointerDown.bind(this),this._pointerMoveMethod=this._onPointerMove.bind(this),this._pointerEnterMethod=this._onPointerEnter.bind(this),this._pointerExitMethod=this._onPointerLeave.bind(this),this._onCompleteMethod=this._onComplete.bind(this);}async _handleWorkerEvent(C){let i=C.data;i.id||(i.method==="onLoad"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onComplete"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onDestroy"&&i.result.instanceId===this._id&&this._eventManager.dispatch(i.result.event),i.method==="onUnfreeze"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._dotLottieInstanceState.isFrozen=!1,this._eventManager.dispatch(i.result.event)),i.method==="onFrame"&&i.result.instanceId===this._id&&(this._dotLottieInstanceState.currentFrame=i.result.event.currentFrame,this._eventManager.dispatch(i.result.event)),i.method==="onRender"&&i.result.instanceId===this._id&&this._eventManager.dispatch(i.result.event),i.method==="onFreeze"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onPause"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onPlay"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onStop"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onLoadError"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onReady"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)));}async _create(C){let i;this._canvas instanceof HTMLCanvasElement?i=this._canvas.transferControlToOffscreen():i=this._canvas;let{instanceId:d}=await this._sendMessage("create",{instanceId:this._id,config:{...C,canvas:i},...Qg(this._canvas)},[i]);if(d!==this._id)throw new Error("Instance ID mismatch");this._created=!0,await this._updateDotLottieInstanceState();}get isLoaded(){return this._dotLottieInstanceState.isLoaded}get isPlaying(){return this._dotLottieInstanceState.isPlaying}get isPaused(){return this._dotLottieInstanceState.isPaused}get isStopped(){return this._dotLottieInstanceState.isStopped}get currentFrame(){return this._dotLottieInstanceState.currentFrame}get isFrozen(){return this._dotLottieInstanceState.isFrozen}get segmentDuration(){return this._dotLottieInstanceState.segmentDuration}get totalFrames(){return this._dotLottieInstanceState.totalFrames}get segment(){return this._dotLottieInstanceState.segment}get speed(){return this._dotLottieInstanceState.speed}get duration(){return this._dotLottieInstanceState.duration}get isReady(){return this._dotLottieInstanceState.isReady}get mode(){return this._dotLottieInstanceState.mode}get canvas(){return this._canvas}get autoplay(){return this._dotLottieInstanceState.autoplay}get backgroundColor(){return this._dotLottieInstanceState.backgroundColor}get loop(){return this._dotLottieInstanceState.loop}get useFrameInterpolation(){return this._dotLottieInstanceState.useFrameInterpolation}get renderConfig(){return this._dotLottieInstanceState.renderConfig}get manifest(){return this._dotLottieInstanceState.manifest}get activeAnimationId(){return this._dotLottieInstanceState.activeAnimationId}get marker(){return this._dotLottieInstanceState.marker}get activeThemeId(){return this._dotLottieInstanceState.activeThemeId}get layout(){return this._dotLottieInstanceState.layout}async play(){this._created&&(await this._sendMessage("play",{instanceId:this._id}),await this._updateDotLottieInstanceState());}async pause(){this._created&&(await this._sendMessage("pause",{instanceId:this._id}),await this._updateDotLottieInstanceState());}async stop(){this._created&&(await this._sendMessage("stop",{instanceId:this._id}),await this._updateDotLottieInstanceState());}async setSpeed(C){this._created&&(await this._sendMessage("setSpeed",{instanceId:this._id,speed:C}),await this._updateDotLottieInstanceState());}async setMode(C){this._created&&(await this._sendMessage("setMode",{instanceId:this._id,mode:C}),await this._updateDotLottieInstanceState());}async setFrame(C){this._created&&(await this._sendMessage("setFrame",{frame:C,instanceId:this._id}),await this._updateDotLottieInstanceState());}async setSegment(C,i){this._created&&(await this._sendMessage("setSegment",{instanceId:this._id,segment:[C,i]}),await this._updateDotLottieInstanceState());}async setRenderConfig(C){this._created&&(await this._sendMessage("setRenderConfig",{instanceId:this._id,renderConfig:C}),await this._updateDotLottieInstanceState());}async setUseFrameInterpolation(C){this._created&&(await this._sendMessage("setUseFrameInterpolation",{instanceId:this._id,useFrameInterpolation:C}),await this._updateDotLottieInstanceState());}async loadTheme(C){if(!this._created)return !1;let i=this._sendMessage("loadTheme",{instanceId:this._id,themeId:C});return await this._updateDotLottieInstanceState(),i}async load(C){this._created&&(await this._sendMessage("load",{config:C,instanceId:this._id}),await this._updateDotLottieInstanceState());}async setLoop(C){this._created&&(await this._sendMessage("setLoop",{instanceId:this._id,loop:C}),await this._updateDotLottieInstanceState());}async resize(){if(!this._created)return;let{height:C,width:i}=Qg(this._canvas);this._canvas.width=i,this._canvas.height=C,await this._sendMessage("resize",{height:C,instanceId:this._id,width:i}),await this._updateDotLottieInstanceState();}async destroy(){this._created&&(this._created=!1,await this._sendMessage("destroy",{instanceId:this._id}),this._cleanupStateMachineListeners(),J._workerManager.unassignAnimationFromWorker(this._id),this._eventManager.removeAllEventListeners());}async freeze(){this._created&&(await this._sendMessage("freeze",{instanceId:this._id}),await this._updateDotLottieInstanceState());}async unfreeze(){this._created&&(await this._sendMessage("unfreeze",{instanceId:this._id}),await this._updateDotLottieInstanceState());}async setBackgroundColor(C){this._created&&(await this._sendMessage("setBackgroundColor",{instanceId:this._id,backgroundColor:C}),await this._updateDotLottieInstanceState());}async loadAnimation(C){this._created&&(await this._sendMessage("loadAnimation",{animationId:C,instanceId:this._id}),await this._updateDotLottieInstanceState());}async setLayout(C){this._created&&(await this._sendMessage("setLayout",{instanceId:this._id,layout:C}),await this._updateDotLottieInstanceState());}async _updateDotLottieInstanceState(){if(!this._created)return;let C=await this._sendMessage("getDotLottieInstanceState",{instanceId:this._id});this._dotLottieInstanceState=C.state;}markers(){return this._dotLottieInstanceState.markers}async setMarker(C){this._created&&(await this._sendMessage("setMarker",{instanceId:this._id,marker:C}),await this._updateDotLottieInstanceState());}async loadThemeData(C){if(!this._created)return !1;let i=await this._sendMessage("loadThemeData",{instanceId:this._id,themeData:C});return await this._updateDotLottieInstanceState(),i}async setViewport(C,i,d,B){return this._created?this._sendMessage("setViewport",{x:C,y:i,width:d,height:B,instanceId:this._id}):!1}async _sendMessage(C,i,d){let B={id:`dotlottie-request-${jg()}`,method:C,params:i};return this._worker.postMessage(B,d||[]),new Promise((f,P)=>{let T=v=>{let $=v.data;$.id===B.id&&(this._worker.removeEventListener("message",T),$.error?P(new Error(`Failed to execute method ${C}: ${$.error}`)):f($.result));};this._worker.addEventListener("message",T);})}addEventListener(C,i){this._eventManager.addEventListener(C,i);}removeEventListener(C,i){this._eventManager.removeEventListener(C,i);}static setWasmUrl(C){J._wasmUrl=C;}async loadStateMachine(C){if(!this._created)return !1;let i=await this._sendMessage("loadStateMachine",{instanceId:this._id,stateMachineId:C});return await this._updateDotLottieInstanceState(),i}async loadStateMachineData(C){if(!this._created)return !1;let i=await this._sendMessage("loadStateMachineData",{instanceId:this._id,stateMachineData:C});return await this._updateDotLottieInstanceState(),i}async startStateMachine(){if(!this._created)return !1;this._setupStateMachineListeners();let C=await this._sendMessage("startStateMachine",{instanceId:this._id});return await this._updateDotLottieInstanceState(),C}async stopStateMachine(){return this._created?(this._cleanupStateMachineListeners(),this._sendMessage("stopStateMachine",{instanceId:this._id})):!1}async postStateMachineEvent(C){return this._created?this._sendMessage("postStateMachineEvent",{event:C,instanceId:this._id}):1}async getStateMachineListeners(){return this._created?this._sendMessage("getStateMachineListeners",{instanceId:this._id}):[]}_getPointerPosition(C){let i=this._canvas.getBoundingClientRect(),d=this._canvas.width/i.width,B=this._canvas.height/i.height,f=this._dotLottieInstanceState.renderConfig.devicePixelRatio||window.devicePixelRatio||1,P=(C.clientX-i.left)*d/f,T=(C.clientY-i.top)*B/f;return {x:P,y:T}}_onPointerUp(C){let{x:i,y:d}=this._getPointerPosition(C);this.postStateMachineEvent(`OnPointerUp: ${i} ${d}`);}_onPointerDown(C){let{x:i,y:d}=this._getPointerPosition(C);this.postStateMachineEvent(`OnPointerDown: ${i} ${d}`);}_onPointerMove(C){let{x:i,y:d}=this._getPointerPosition(C);this.postStateMachineEvent(`OnPointerMove: ${i} ${d}`);}_onPointerEnter(C){let{x:i,y:d}=this._getPointerPosition(C);this.postStateMachineEvent(`OnPointerEnter: ${i} ${d}`);}_onPointerLeave(C){let{x:i,y:d}=this._getPointerPosition(C);this.postStateMachineEvent(`OnPointerExit: ${i} ${d}`);}_onComplete(){this.postStateMachineEvent("OnComplete");}async _setupStateMachineListeners(){if(M&&this._canvas instanceof HTMLCanvasElement&&this.isLoaded){let C=await this._sendMessage("getStateMachineListeners",{instanceId:this._id});C.includes("PointerUp")&&this._canvas.addEventListener("pointerup",this._pointerUpMethod),C.includes("PointerDown")&&this._canvas.addEventListener("pointerdown",this._pointerDownMethod),C.includes("PointerMove")&&this._canvas.addEventListener("pointermove",this._pointerMoveMethod),C.includes("PointerEnter")&&this._canvas.addEventListener("pointerenter",this._pointerEnterMethod),C.includes("PointerExit")&&this._canvas.addEventListener("pointerleave",this._pointerExitMethod),C.includes("Complete")&&this.addEventListener("complete",this._onCompleteMethod);}}_cleanupStateMachineListeners(){M&&this._canvas instanceof HTMLCanvasElement&&(this._canvas.removeEventListener("pointerup",this._pointerUpMethod),this._canvas.removeEventListener("pointerdown",this._pointerDownMethod),this._canvas.removeEventListener("pointermove",this._pointerMoveMethod),this._canvas.removeEventListener("pointerenter",this._pointerEnterMethod),this._canvas.removeEventListener("pointerleave",this._pointerExitMethod),this.removeEventListener("complete",this._onCompleteMethod));}};Z(J,"_workerManager",new RI),Z(J,"_wasmUrl","");var xg=J;
9
+ Received: ${typeof n}`);return}M?(this._eventManager.dispatch({type:"load"}),W&&this.resize(),this._eventManager.dispatch({type:"frame",currentFrame:this._dotLottieCore.currentFrame()}),this._render(),this._dotLottieCore.config().autoplay&&(this._dotLottieCore.play(),this._dotLottieCore.isPlaying()?(this._eventManager.dispatch({type:"play"}),this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this))):console.error("something went wrong, the animation was suppose to autoplay"))):this._dispatchError("Failed to load animation data");}_loadFromSrc(n){this._fetchData(n).then(i=>this._loadFromData(i)).catch(i=>this._dispatchError(`Failed to load animation data from URL: ${n}. ${i}`));}get activeAnimationId(){return this._dotLottieCore?.activeAnimationId()}get activeThemeId(){return this._dotLottieCore?.activeThemeId()}get layout(){let n=this._dotLottieCore?.config().layout;if(n)return {align:[n.align.get(0),n.align.get(1)],fit:(()=>{switch(n.fit){case b._wasmModule?.Fit.Contain:return "contain";case b._wasmModule?.Fit.Cover:return "cover";case b._wasmModule?.Fit.Fill:return "fill";case b._wasmModule?.Fit.FitHeight:return "fit-height";case b._wasmModule?.Fit.FitWidth:return "fit-width";case b._wasmModule?.Fit.None:return "none";default:return "contain"}})()}}get marker(){return this._dotLottieCore?.config().marker}get manifest(){try{let n=this._dotLottieCore?.manifestString();if(this._dotLottieCore===null||!n)return null;let i=JSON.parse(n);return Object.keys(i).length===0?null:i}catch{return null}}get renderConfig(){return this._renderConfig}get segment(){let n=this._dotLottieCore?.config().segment;if(n&&n.size()===2)return [n.get(0),n.get(1)]}get loop(){return this._dotLottieCore?.config().loopAnimation??!1}get mode(){let n=this._dotLottieCore?.config().mode;return n===b._wasmModule?.Mode.Reverse?"reverse":n===b._wasmModule?.Mode.Bounce?"bounce":n===b._wasmModule?.Mode.ReverseBounce?"reverse-bounce":"forward"}get isFrozen(){return this._isFrozen}get backgroundColor(){return this._backgroundColor??""}get autoplay(){return this._dotLottieCore?.config().autoplay??!1}get useFrameInterpolation(){return this._dotLottieCore?.config().useFrameInterpolation??!1}get speed(){return this._dotLottieCore?.config().speed??0}get isReady(){return this._dotLottieCore!==null}get isLoaded(){return this._dotLottieCore?.isLoaded()??!1}get isPlaying(){return this._dotLottieCore?.isPlaying()??!1}get isPaused(){return this._dotLottieCore?.isPaused()??!1}get isStopped(){return this._dotLottieCore?.isStopped()??!1}get currentFrame(){return this._dotLottieCore?.currentFrame()??0}get loopCount(){return this._dotLottieCore?.loopCount()??0}get totalFrames(){return this._dotLottieCore?.totalFrames()??0}get duration(){return this._dotLottieCore?.duration()??0}get segmentDuration(){return this._dotLottieCore?.segmentDuration()??0}get canvas(){return this._canvas}load(n){this._dotLottieCore===null||b._wasmModule===null||(this._dotLottieCore.setConfig({autoplay:n.autoplay??!1,backgroundColor:0,loopAnimation:n.loop??!1,mode:r2(n.mode??"forward",b._wasmModule),segment:o2(n.segment??[],b._wasmModule),speed:n.speed??1,useFrameInterpolation:n.useFrameInterpolation??!0,marker:n.marker??"",layout:n.layout?{align:a2(n.layout.align,b._wasmModule),fit:i2(n.layout.fit,b._wasmModule)}:b._wasmModule.createDefaultLayout()}),n.data?this._loadFromData(n.data):n.src&&this._loadFromSrc(n.src),this.setBackgroundColor(n.backgroundColor??""));}_render(){if(this._dotLottieCore===null||this._context===null)return !1;if(this._dotLottieCore.render()){let i=this._dotLottieCore.buffer(),h=new Uint8ClampedArray(i,0,this._canvas.width*this._canvas.height*4),M=null;return typeof ImageData>"u"?(M=this._context.createImageData(this._canvas.width,this._canvas.height),M.data.set(h)):M=new ImageData(h,this._canvas.width,this._canvas.height),this._context.putImageData(M,0,0),this._eventManager.dispatch({type:"render",currentFrame:this._dotLottieCore.currentFrame()}),!0}return !1}_draw(){if(this._dotLottieCore===null||this._context===null||!this._dotLottieCore.isPlaying())return;let n=this._dotLottieCore.requestFrame();this._dotLottieCore.setFrame(n)&&(this._eventManager.dispatch({type:"frame",currentFrame:this._dotLottieCore.currentFrame()}),this._render()&&this._dotLottieCore.isComplete()&&(this._dotLottieCore.config().loopAnimation?this._eventManager.dispatch({type:"loop",loopCount:this._dotLottieCore.loopCount()}):this._eventManager.dispatch({type:"complete"}))),this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this));}play(){if(this._dotLottieCore===null)return;(this._dotLottieCore.play()||this._dotLottieCore.isPlaying())&&(this._isFrozen=!1,this._eventManager.dispatch({type:"play"}),this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this)));}pause(){if(this._dotLottieCore===null)return;(this._dotLottieCore.pause()||this._dotLottieCore.isPaused())&&this._eventManager.dispatch({type:"pause"});}stop(){if(this._dotLottieCore===null)return;this._dotLottieCore.stop()&&(this._eventManager.dispatch({type:"frame",currentFrame:this._dotLottieCore.currentFrame()}),this._render(),this._eventManager.dispatch({type:"stop"}));}setFrame(n){if(this._dotLottieCore===null||n<0||n>this._dotLottieCore.totalFrames())return;this._dotLottieCore.seek(n)&&(this._eventManager.dispatch({type:"frame",currentFrame:this._dotLottieCore.currentFrame()}),this._render());}setSpeed(n){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),speed:n});}setBackgroundColor(n){this._dotLottieCore!==null&&(W&&this._canvas instanceof HTMLCanvasElement?this._canvas.style.backgroundColor=n:this._dotLottieCore.setConfig({...this._dotLottieCore.config(),backgroundColor:J2(n)}),this._backgroundColor=n);}setLoop(n){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),loopAnimation:n});}setUseFrameInterpolation(n){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),useFrameInterpolation:n});}addEventListener(n,i){this._eventManager.addEventListener(n,i);}removeEventListener(n,i){this._eventManager.removeEventListener(n,i);}destroy(){this._dotLottieCore?.delete(),this._dotLottieCore=null,this._context=null,this._eventManager.dispatch({type:"destroy"}),this._eventManager.removeAllEventListeners(),this._cleanupStateMachineListeners();}freeze(){this._animationFrameId!==null&&(this._frameManager.cancelAnimationFrame(this._animationFrameId),this._animationFrameId=null,this._isFrozen=!0,this._eventManager.dispatch({type:"freeze"}));}unfreeze(){this._animationFrameId===null&&(this._animationFrameId=this._frameManager.requestAnimationFrame(this._draw.bind(this)),this._isFrozen=!1,this._eventManager.dispatch({type:"unfreeze"}));}resize(){if(W&&this._canvas instanceof HTMLCanvasElement){let i=this._renderConfig.devicePixelRatio||window.devicePixelRatio||1,{height:h,width:M}=this._canvas.getBoundingClientRect();this._canvas.width=M*i,this._canvas.height=h*i;}this._dotLottieCore?.resize(this._canvas.width,this._canvas.height)&&this._render();}setSegment(n,i){this._dotLottieCore===null||b._wasmModule===null||this._dotLottieCore.setConfig({...this._dotLottieCore.config(),segment:o2([n,i],b._wasmModule)});}setMode(n){this._dotLottieCore===null||b._wasmModule===null||this._dotLottieCore.setConfig({...this._dotLottieCore.config(),mode:r2(n,b._wasmModule)});}setRenderConfig(n){this._renderConfig={...this._renderConfig,...n,devicePixelRatio:n.devicePixelRatio||Z()};}loadAnimation(n){if(this._dotLottieCore===null||this._dotLottieCore.activeAnimationId()===n)return;this._dotLottieCore.loadAnimation(n,this._canvas.width,this._canvas.height)?(this._eventManager.dispatch({type:"load"}),this.resize()):this._eventManager.dispatch({type:"loadError",error:new Error(`Failed to animation :${n}`)});}setMarker(n){this._dotLottieCore!==null&&this._dotLottieCore.setConfig({...this._dotLottieCore.config(),marker:n});}markers(){let n=this._dotLottieCore?.markers();if(n){let i=[];for(let h=0;h<n.size();h+=1){let M=n.get(h);i.push({name:M.name,time:M.time,duration:M.duration});}return i}return []}loadTheme(n){if(this._dotLottieCore===null)return !1;let i=this._dotLottieCore.loadTheme(n);return this._render(),i}loadThemeData(n){if(this._dotLottieCore===null)return !1;let i=this._dotLottieCore.loadThemeData(n);return this._render(),i}setLayout(n){this._dotLottieCore===null||b._wasmModule===null||this._dotLottieCore.setConfig({...this._dotLottieCore.config(),layout:{align:a2(n.align,b._wasmModule),fit:i2(n.fit,b._wasmModule)}});}setViewport(n,i,h,M){return this._dotLottieCore===null?!1:this._dotLottieCore.setViewport(n,i,h,M)}static setWasmUrl(n){X.setWasmUrl(n);}loadStateMachine(n){return this._dotLottieCore?.loadStateMachine(n)??!1}startStateMachine(){let n=this._dotLottieCore?.startStateMachine()??!1;return n&&this._setupStateMachineListeners(),n}stopStateMachine(){let n=this._dotLottieCore?.stopStateMachine()??!1;return n&&this._cleanupStateMachineListeners(),n}_getPointerPosition(n){let i=this._canvas.getBoundingClientRect(),h=this._canvas.width/i.width,M=this._canvas.height/i.height,B=this._renderConfig.devicePixelRatio||window.devicePixelRatio||1,N=(n.clientX-i.left)*h/B,j=(n.clientY-i.top)*M/B;return {x:N,y:j}}_onPointerUp(n){let{x:i,y:h}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerUp: ${i} ${h}`);}_onPointerDown(n){let{x:i,y:h}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerDown: ${i} ${h}`);}_onPointerMove(n){let{x:i,y:h}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerMove: ${i} ${h}`);}_onPointerEnter(n){let{x:i,y:h}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerEnter: ${i} ${h}`);}_onPointerLeave(n){let{x:i,y:h}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerExit: ${i} ${h}`);}_onComplete(){this.postStateMachineEvent("OnComplete");}postStateMachineEvent(n){let i=this._dotLottieCore?.postEventPayload(n)??1;return i===2?this.play():i===3?this.pause():i===4&&this._render(),i}getStateMachineListeners(){if(!this._dotLottieCore)return [];let n=this._dotLottieCore.stateMachineFrameworkSetup(),i=[];for(let h=0;h<n.size();h+=1)i.push(n.get(h));return i}_setupStateMachineListeners(){if(W&&this._canvas instanceof HTMLCanvasElement&&this._dotLottieCore!==null&&this.isLoaded){let n=this.getStateMachineListeners();n.includes("PointerUp")&&this._canvas.addEventListener("pointerup",this._pointerUpMethod),n.includes("PointerDown")&&this._canvas.addEventListener("pointerdown",this._pointerDownMethod),n.includes("PointerMove")&&this._canvas.addEventListener("pointermove",this._pointerMoveMethod),n.includes("PointerEnter")&&this._canvas.addEventListener("pointerenter",this._pointerEnterMethod),n.includes("PointerExit")&&this._canvas.addEventListener("pointerleave",this._pointerExitMethod),n.includes("Complete")&&this.addEventListener("complete",this._onCompleteMethod);}}_cleanupStateMachineListeners(){W&&this._canvas instanceof HTMLCanvasElement&&(this._canvas.removeEventListener("pointerup",this._pointerUpMethod),this._canvas.removeEventListener("pointerdown",this._pointerDownMethod),this._canvas.removeEventListener("pointermove",this._pointerMoveMethod),this._canvas.removeEventListener("pointerenter",this._pointerEnterMethod),this._canvas.removeEventListener("pointerleave",this._pointerExitMethod),this.removeEventListener("complete",this._onCompleteMethod));}loadStateMachineData(n){return this._dotLottieCore?.loadStateMachineData(n)??!1}animationSize(){let n=this._dotLottieCore?.animationSize().get(0)??0,i=this._dotLottieCore?.animationSize().get(1)??0;return {width:n,height:i}}setStateMachineBooleanContext(n,i){return this._dotLottieCore?.setStateMachineBooleanContext(n,i)??!1}setStateMachineNumericContext(n,i){return this._dotLottieCore?.setStateMachineNumericContext(n,i)??!1}setStateMachineStringContext(n,i){return this._dotLottieCore?.setStateMachineStringContext(n,i)??!1}};_(b,"_wasmModule",null);var G2=b;var s2=class{constructor(){if(typeof Worker>"u")throw new Error("Worker is not supported in this environment.");let n=new Blob([new Uint8Array([34,117,115,101,32,115,116,114,105,99,116,34,59,10,40,40,41,32,61,62,32,123,10,32,32,118,97,114,32,95,95,100,101,102,80,114,111,112,32,61,32,79,98,106,101,99,116,46,100,101,102,105,110,101,80,114,111,112,101,114,116,121,59,10,32,32,118,97,114,32,95,95,100,101,102,78,111,114,109,97,108,80,114,111,112,32,61,32,40,111,98,106,44,32,107,101,121,44,32,118,97,108,117,101,41,32,61,62,32,107,101,121,32,105,110,32,111,98,106,32,63,32,95,95,100,101,102,80,114,111,112,40,111,98,106,44,32,107,101,121,44,32,123,32,101,110,117,109,101,114,97,98,108,101,58,32,116,114,117,101,44,32,99,111,110,102,105,103,117,114,97,98,108,101,58,32,116,114,117,101,44,32,119,114,105,116,97,98,108,101,58,32,116,114,117,101,44,32,118,97,108,117,101,32,125,41,32,58,32,111,98,106,91,107,101,121,93,32,61,32,118,97,108,117,101,59,10,32,32,118,97,114,32,95,95,112,117,98,108,105,99,70,105,101,108,100,32,61,32,40,111,98,106,44,32,107,101,121,44,32,118,97,108,117,101,41,32,61,62,32,95,95,100,101,102,78,111,114,109,97,108,80,114,111,112,40,111,98,106,44,32,116,121,112,101,111,102,32,107,101,121,32,33,61,61,32,34,115,121,109,98,111,108,34,32,63,32,107,101,121,32,43,32,34,34,32,58,32,107,101,121,44,32,118,97,108,117,101,41,59,10,10,32,32,47,47,32,115,114,99,47,97,110,105,109,97,116,105,111,110,45,102,114,97,109,101,45,109,97,110,97,103,101,114,46,116,115,10,32,32,118,97,114,32,87,101,98,65,110,105,109,97,116,105,111,110,70,114,97,109,101,83,116,114,97,116,101,103,121,32,61,32,99,108,97,115,115,32,123,10,32,32,32,32,114,101,113,117,101,115,116,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,99,97,108,108,98,97,99,107,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,114,101,113,117,101,115,116,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,99,97,108,108,98,97,99,107,41,59,10,32,32,32,32,125,10,32,32,32,32,99,97,110,99,101,108,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,105,100,41,32,123,10,32,32,32,32,32,32,99,97,110,99,101,108,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,105,100,41,59,10,32,32,32,32,125,10,32,32,125,59,10,32,32,118,97,114,32,78,111,100,101,65,110,105,109,97,116,105,111,110,70,114,97,109,101,83,116,114,97,116,101,103,121,32,61,32,99,108,97,115,115,32,123,10,32,32,32,32,99,111,110,115,116,114,117,99,116,111,114,40,41,32,123,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,108,97,115,116,72,97,110,100,108,101,73,100,34,44,32,48,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,108,97,115,116,73,109,109,101,100,105,97,116,101,34,44,32,110,117,108,108,41,59,10,32,32,32,32,125,10,32,32,32,32,114,101,113,117,101,115,116,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,99,97,108,108,98,97,99,107,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,108,97,115,116,72,97,110,100,108,101,73,100,32,62,61,32,78,117,109,98,101,114,46,77,65,88,95,83,65,70,69,95,73,78,84,69,71,69,82,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,108,97,115,116,72,97,110,100,108,101,73,100,32,61,32,48,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,116,104,105,115,46,95,108,97,115,116,72,97,110,100,108,101,73,100,32,43,61,32,49,59,10,32,32,32,32,32,32,116,104,105,115,46,95,108,97,115,116,73,109,109,101,100,105,97,116,101,32,61,32,115,101,116,73,109,109,101,100,105,97,116,101,40,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,99,97,108,108,98,97,99,107,40,68,97,116,101,46,110,111,119,40,41,41,59,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,108,97,115,116,72,97,110,100,108,101,73,100,59,10,32,32,32,32,125,10,32,32,32,32,99,97,110,99,101,108,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,95,105,100,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,108,97,115,116,73,109,109,101,100,105,97,116,101,41,32,123,10,32,32,32,32,32,32,32,32,99,108,101,97,114,73,109,109,101,100,105,97,116,101,40,116,104,105,115,46,95,108,97,115,116,73,109,109,101,100,105,97,116,101,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,125,59,10,32,32,118,97,114,32,65,110,105,109,97,116,105,111,110,70,114,97,109,101,77,97,110,97,103,101,114,32,61,32,99,108,97,115,115,32,123,10,32,32,32,32,99,111,110,115,116,114,117,99,116,111,114,40,41,32,123,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,115,116,114,97,116,101,103,121,34,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,115,116,114,97,116,101,103,121,32,61,32,116,121,112,101,111,102,32,114,101,113,117,101,115,116,65,110,105,109,97,116,105,111,110,70,114,97,109,101,32,61,61,61,32,34,102,117,110,99,116,105,111,110,34,32,63,32,110,101,119,32,87,101,98,65,110,105,109,97,116,105,111,110,70,114,97,109,101,83,116,114,97,116,101,103,121,40,41,32,58,32,110,101,119,32,78,111,100,101,65,110,105,109,97,116,105,111,110,70,114,97,109,101,83,116,114,97,116,101,103,121,40,41,59,10,32,32,32,32,125,10,32,32,32,32,114,101,113,117,101,115,116,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,99,97,108,108,98,97,99,107,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,115,116,114,97,116,101,103,121,46,114,101,113,117,101,115,116,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,99,97,108,108,98,97,99,107,41,59,10,32,32,32,32,125,10,32,32,32,32,99,97,110,99,101,108,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,105,100,41,32,123,10,32,32,32,32,32,32,116,104,105,115,46,95,115,116,114,97,116,101,103,121,46,99,97,110,99,101,108,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,105,100,41,59,10,32,32,32,32,125,10,32,32,125,59,10,10,32,32,47,47,32,115,114,99,47,99,111,110,115,116,97,110,116,115,46,116,115,10,32,32,118,97,114,32,73,83,95,66,82,79,87,83,69,82,32,61,32,116,121,112,101,111,102,32,119,105,110,100,111,119,32,33,61,61,32,34,117,110,100,101,102,105,110,101,100,34,32,38,38,32,116,121,112,101,111,102,32,119,105,110,100,111,119,46,100,111,99,117,109,101,110,116,32,33,61,61,32,34,117,110,100,101,102,105,110,101,100,34,59,10,32,32,118,97,114,32,90,73,80,95,83,73,71,78,65,84,85,82,69,32,61,32,110,101,119,32,85,105,110,116,56,65,114,114,97,121,40,91,56,48,44,32,55,53,44,32,51,44,32,52,93,41,59,10,32,32,118,97,114,32,76,79,84,84,73,69,95,74,83,79,78,95,77,65,78,68,65,84,79,82,89,95,70,73,69,76,68,83,32,61,32,91,34,118,34,44,32,34,105,112,34,44,32,34,111,112,34,44,32,34,108,97,121,101,114,115,34,44,32,34,102,114,34,44,32,34,119,34,44,32,34,104,34,93,59,10,32,32,118,97,114,32,80,65,67,75,65,71,69,95,86,69,82,83,73,79,78,32,61,32,34,48,46,51,49,46,49,34,59,10,32,32,118,97,114,32,80,65,67,75,65,71,69,95,78,65,77,69,32,61,32,34,64,108,111,116,116,105,101,102,105,108,101,115,47,100,111,116,108,111,116,116,105,101,45,119,101,98,34,59,10,32,32,118,97,114,32,68,69,70,65,85,76,84,95,68,80,82,95,70,65,67,84,79,82,32,61,32,48,46,55,53,59,10,10,32,32,47,47,32,115,114,99,47,99,111,114,101,47,100,111,116,108,111,116,116,105,101,45,112,108,97,121,101,114,46,106,115,10,32,32,118,97,114,32,99,114,101,97,116,101,68,111,116,76,111,116,116,105,101,80,108,97,121,101,114,77,111,100,117,108,101,32,61,32,40,40,41,32,61,62,32,123,10,32,32,32,32,118,97,114,32,95,115,99,114,105,112,116,68,105,114,32,61,32,116,121,112,101,111,102,32,100,111,99,117,109,101,110,116,32,33,61,32,34,117,110,100,101,102,105,110,101,100,34,32,63,32,100,111,99,117,109,101,110,116,46,99,117,114,114,101,110,116,83,99,114,105,112,116,63,46,115,114,99,32,58,32,118,111,105,100,32,48,59,10,32,32,32,32,114,101,116,117,114,110,32,102,117,110,99,116,105,111,110,40,109,111,100,117,108,101,65,114,103,32,61,32,123,125,41,32,123,10,32,32,32,32,32,32,118,97,114,32,107,32,61,32,109,111,100,117,108,101,65,114,103,44,32,97,97,44,32,98,97,44,32,114,101,97,100,121,80,114,111,109,105,115,101,32,61,32,110,101,119,32,80,114,111,109,105,115,101,40,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,97,97,32,61,32,97,59,10,32,32,32,32,32,32,32,32,98,97,32,61,32,98,59,10,32,32,32,32,32,32,125,41,44,32,99,97,32,61,32,79,98,106,101,99,116,46,97,115,115,105,103,110,40,123,125,44,32,107,41,44,32,100,97,32,61,32,34,46,47,116,104,105,115,46,112,114,111,103,114,97,109,34,44,32,116,32,61,32,34,34,59,10,32,32,32,32,32,32,34,117,110,100,101,102,105,110,101,100,34,32,33,61,32,116,121,112,101,111,102,32,100,111,99,117,109,101,110,116,32,38,38,32,100,111,99,117,109,101,110,116,46,99,117,114,114,101,110,116,83,99,114,105,112,116,32,38,38,32,40,116,32,61,32,100,111,99,117,109,101,110,116,46,99,117,114,114,101,110,116,83,99,114,105,112,116,46,115,114,99,41,59,10,32,32,32,32,32,32,95,115,99,114,105,112,116,68,105,114,32,38,38,32,40,116,32,61,32,95,115,99,114,105,112,116,68,105,114,41,59,10,32,32,32,32,32,32,116,46,115,116,97,114,116,115,87,105,116,104,40,34,98,108,111,98,58,34,41,32,63,32,116,32,61,32,34,34,32,58,32,116,32,61,32,116,46,115,117,98,115,116,114,40,48,44,32,116,46,114,101,112,108,97,99,101,40,47,91,63,35,93,46,42,47,44,32,34,34,41,46,108,97,115,116,73,110,100,101,120,79,102,40,34,47,34,41,32,43,32,49,41,59,10,32,32,32,32,32,32,118,97,114,32,101,97,32,61,32,107,46,112,114,105,110,116,32,124,124,32,99,111,110,115,111,108,101,46,108,111,103,46,98,105,110,100,40,99,111,110,115,111,108,101,41,44,32,119,32,61,32,107,46,112,114,105,110,116,69,114,114,32,124,124,32,99,111,110,115,111,108,101,46,101,114,114,111,114,46,98,105,110,100,40,99,111,110,115,111,108,101,41,59,10,32,32,32,32,32,32,79,98,106,101,99,116,46,97,115,115,105,103,110,40,107,44,32,99,97,41,59,10,32,32,32,32,32,32,99,97,32,61,32,110,117,108,108,59,10,32,32,32,32,32,32,107,46,116,104,105,115,80,114,111,103,114,97,109,32,38,38,32,40,100,97,32,61,32,107,46,116,104,105,115,80,114,111,103,114,97,109,41,59,10,32,32,32,32,32,32,118,97,114,32,120,59,10,32,32,32,32,32,32,107,46,119,97,115,109,66,105,110,97,114,121,32,38,38,32,40,120,32,61,32,107,46,119,97,115,109,66,105,110,97,114,121,41,59,10,32,32,32,32,32,32,118,97,114,32,102,97,44,32,104,97,32,61,32,102,97,108,115,101,44,32,121,44,32,65,44,32,66,44,32,67,44,32,69,44,32,70,44,32,106,97,44,32,107,97,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,108,97,40,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,97,32,61,32,102,97,46,98,117,102,102,101,114,59,10,32,32,32,32,32,32,32,32,107,46,72,69,65,80,56,32,61,32,121,32,61,32,110,101,119,32,73,110,116,56,65,114,114,97,121,40,97,41,59,10,32,32,32,32,32,32,32,32,107,46,72,69,65,80,49,54,32,61,32,66,32,61,32,110,101,119,32,73,110,116,49,54,65,114,114,97,121,40,97,41,59,10,32,32,32,32,32,32,32,32,107,46,72,69,65,80,85,56,32,61,32,65,32,61,32,110,101,119,32,85,105,110,116,56,65,114,114,97,121,40,97,41,59,10,32,32,32,32,32,32,32,32,107,46,72,69,65,80,85,49,54,32,61,32,67,32,61,32,110,101,119,32,85,105,110,116,49,54,65,114,114,97,121,40,97,41,59,10,32,32,32,32,32,32,32,32,107,46,72,69,65,80,51,50,32,61,32,69,32,61,32,110,101,119,32,73,110,116,51,50,65,114,114,97,121,40,97,41,59,10,32,32,32,32,32,32,32,32,107,46,72,69,65,80,85,51,50,32,61,32,70,32,61,32,110,101,119,32,85,105,110,116,51,50,65,114,114,97,121,40,97,41,59,10,32,32,32,32,32,32,32,32,107,46,72,69,65,80,70,51,50,32,61,32,106,97,32,61,32,110,101,119,32,70,108,111,97,116,51,50,65,114,114,97,121,40,97,41,59,10,32,32,32,32,32,32,32,32,107,46,72,69,65,80,70,54,52,32,61,32,107,97,32,61,32,110,101,119,32,70,108,111,97,116,54,52,65,114,114,97,121,40,97,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,109,97,32,61,32,91,93,44,32,110,97,32,61,32,91,93,44,32,111,97,32,61,32,91,93,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,112,97,40,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,97,32,61,32,107,46,112,114,101,82,117,110,46,115,104,105,102,116,40,41,59,10,32,32,32,32,32,32,32,32,109,97,46,117,110,115,104,105,102,116,40,97,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,71,32,61,32,48,44,32,113,97,32,61,32,110,117,108,108,44,32,72,32,61,32,110,117,108,108,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,114,97,40,97,41,32,123,10,32,32,32,32,32,32,32,32,107,46,111,110,65,98,111,114,116,63,46,40,97,41,59,10,32,32,32,32,32,32,32,32,97,32,61,32,34,65,98,111,114,116,101,100,40,34,32,43,32,97,32,43,32,34,41,34,59,10,32,32,32,32,32,32,32,32,119,40,97,41,59,10,32,32,32,32,32,32,32,32,104,97,32,61,32,116,114,117,101,59,10,32,32,32,32,32,32,32,32,97,32,61,32,110,101,119,32,87,101,98,65,115,115,101,109,98,108,121,46,82,117,110,116,105,109,101,69,114,114,111,114,40,97,32,43,32,34,46,32,66,117,105,108,100,32,119,105,116,104,32,45,115,65,83,83,69,82,84,73,79,78,83,32,102,111,114,32,109,111,114,101,32,105,110,102,111,46,34,41,59,10,32,32,32,32,32,32,32,32,98,97,40,97,41,59,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,97,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,115,97,32,61,32,40,97,41,32,61,62,32,97,46,115,116,97,114,116,115,87,105,116,104,40,34,100,97,116,97,58,97,112,112,108,105,99,97,116,105,111,110,47,111,99,116,101,116,45,115,116,114,101,97,109,59,98,97,115,101,54,52,44,34,41,44,32,73,59,10,32,32,32,32,32,32,73,32,61,32,34,68,111,116,76,111,116,116,105,101,80,108,97,121,101,114,46,119,97,115,109,34,59,10,32,32,32,32,32,32,105,102,32,40,33,115,97,40,73,41,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,116,97,32,61,32,73,59,10,32,32,32,32,32,32,32,32,73,32,61,32,107,46,108,111,99,97,116,101,70,105,108,101,32,63,32,107,46,108,111,99,97,116,101,70,105,108,101,40,116,97,44,32,116,41,32,58,32,116,32,43,32,116,97,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,117,97,40,97,41,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,97,32,61,61,32,73,32,38,38,32,120,41,32,114,101,116,117,114,110,32,110,101,119,32,85,105,110,116,56,65,114,114,97,121,40,120,41,59,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,34,98,111,116,104,32,97,115,121,110,99,32,97,110,100,32,115,121,110,99,32,102,101,116,99,104,105,110,103,32,111,102,32,116,104,101,32,119,97,115,109,32,102,97,105,108,101,100,34,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,118,97,40,97,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,120,32,124,124,32,34,102,117,110,99,116,105,111,110,34,32,33,61,32,116,121,112,101,111,102,32,102,101,116,99,104,32,63,32,80,114,111,109,105,115,101,46,114,101,115,111,108,118,101,40,41,46,116,104,101,110,40,40,41,32,61,62,32,117,97,40,97,41,41,32,58,32,102,101,116,99,104,40,97,44,32,123,32,99,114,101,100,101,110,116,105,97,108,115,58,32,34,115,97,109,101,45,111,114,105,103,105,110,34,32,125,41,46,116,104,101,110,40,40,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,98,46,111,107,41,32,116,104,114,111,119,32,96,102,97,105,108,101,100,32,116,111,32,108,111,97,100,32,119,97,115,109,32,98,105,110,97,114,121,32,102,105,108,101,32,97,116,32,39,36,123,97,125,39,96,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,46,97,114,114,97,121,66,117,102,102,101,114,40,41,59,10,32,32,32,32,32,32,32,32,125,41,46,99,97,116,99,104,40,40,41,32,61,62,32,117,97,40,97,41,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,119,97,40,97,44,32,98,44,32,99,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,118,97,40,97,41,46,116,104,101,110,40,40,100,41,32,61,62,32,87,101,98,65,115,115,101,109,98,108,121,46,105,110,115,116,97,110,116,105,97,116,101,40,100,44,32,98,41,41,46,116,104,101,110,40,99,44,32,40,100,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,119,40,96,102,97,105,108,101,100,32,116,111,32,97,115,121,110,99,104,114,111,110,111,117,115,108,121,32,112,114,101,112,97,114,101,32,119,97,115,109,58,32,36,123,100,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,114,97,40,100,41,59,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,120,97,40,97,44,32,98,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,73,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,120,32,124,124,32,34,102,117,110,99,116,105,111,110,34,32,33,61,32,116,121,112,101,111,102,32,87,101,98,65,115,115,101,109,98,108,121,46,105,110,115,116,97,110,116,105,97,116,101,83,116,114,101,97,109,105,110,103,32,124,124,32,115,97,40,99,41,32,124,124,32,34,102,117,110,99,116,105,111,110,34,32,33,61,32,116,121,112,101,111,102,32,102,101,116,99,104,32,63,32,119,97,40,99,44,32,97,44,32,98,41,32,58,32,102,101,116,99,104,40,99,44,32,123,32,99,114,101,100,101,110,116,105,97,108,115,58,32,34,115,97,109,101,45,111,114,105,103,105,110,34,32,125,41,46,116,104,101,110,40,10,32,32,32,32,32,32,32,32,32,32,40,100,41,32,61,62,32,87,101,98,65,115,115,101,109,98,108,121,46,105,110,115,116,97,110,116,105,97,116,101,83,116,114,101,97,109,105,110,103,40,100,44,32,97,41,46,116,104,101,110,40,98,44,32,102,117,110,99,116,105,111,110,40,101,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,119,40,96,119,97,115,109,32,115,116,114,101,97,109,105,110,103,32,99,111,109,112,105,108,101,32,102,97,105,108,101,100,58,32,36,123,101,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,119,40,34,102,97,108,108,105,110,103,32,98,97,99,107,32,116,111,32,65,114,114,97,121,66,117,102,102,101,114,32,105,110,115,116,97,110,116,105,97,116,105,111,110,34,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,119,97,40,99,44,32,97,44,32,98,41,59,10,32,32,32,32,32,32,32,32,32,32,125,41,10,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,121,97,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,59,32,48,32,60,32,97,46,108,101,110,103,116,104,59,32,41,32,97,46,115,104,105,102,116,40,41,40,107,41,59,10,32,32,32,32,32,32,125,44,32,122,97,32,61,32,34,117,110,100,101,102,105,110,101,100,34,32,33,61,32,116,121,112,101,111,102,32,84,101,120,116,68,101,99,111,100,101,114,32,63,32,110,101,119,32,84,101,120,116,68,101,99,111,100,101,114,40,34,117,116,102,56,34,41,32,58,32,118,111,105,100,32,48,44,32,74,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,98,32,43,32,99,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,99,32,61,32,98,59,32,97,91,99,93,32,38,38,32,33,40,99,32,62,61,32,100,41,59,32,41,32,43,43,99,59,10,32,32,32,32,32,32,32,32,105,102,32,40,49,54,32,60,32,99,32,45,32,98,32,38,38,32,97,46,98,117,102,102,101,114,32,38,38,32,122,97,41,32,114,101,116,117,114,110,32,122,97,46,100,101,99,111,100,101,40,97,46,115,117,98,97,114,114,97,121,40,98,44,32,99,41,41,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,100,32,61,32,34,34,59,32,98,32,60,32,99,59,32,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,97,91,98,43,43,93,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,101,32,38,32,49,50,56,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,97,91,98,43,43,93,32,38,32,54,51,59,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,49,57,50,32,61,61,32,40,101,32,38,32,50,50,52,41,41,32,100,32,43,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,40,101,32,38,32,51,49,41,32,60,60,32,54,32,124,32,102,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,97,91,98,43,43,93,32,38,32,54,51,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,32,61,32,50,50,52,32,61,61,32,40,101,32,38,32,50,52,48,41,32,63,32,40,101,32,38,32,49,53,41,32,60,60,32,49,50,32,124,32,102,32,60,60,32,54,32,124,32,108,32,58,32,40,101,32,38,32,55,41,32,60,60,32,49,56,32,124,32,102,32,60,60,32,49,50,32,124,32,108,32,60,60,32,54,32,124,32,97,91,98,43,43,93,32,38,32,54,51,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,54,53,53,51,54,32,62,32,101,32,63,32,100,32,43,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,41,32,58,32,40,101,32,45,61,32,54,53,53,51,54,44,32,100,32,43,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,53,53,50,57,54,32,124,32,101,32,62,62,32,49,48,44,32,53,54,51,50,48,32,124,32,101,32,38,32,49,48,50,51,41,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,100,32,43,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,100,59,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,99,108,97,115,115,32,65,97,32,123,10,32,32,32,32,32,32,32,32,99,111,110,115,116,114,117,99,116,111,114,40,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,121,97,32,61,32,97,32,45,32,50,52,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,66,97,32,61,32,48,44,32,67,97,32,61,32,48,44,32,68,97,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,98,32,61,32,48,44,32,99,32,61,32,48,59,32,99,32,60,32,97,46,108,101,110,103,116,104,59,32,43,43,99,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,97,46,99,104,97,114,67,111,100,101,65,116,40,99,41,59,10,32,32,32,32,32,32,32,32,32,32,49,50,55,32,62,61,32,100,32,63,32,98,43,43,32,58,32,50,48,52,55,32,62,61,32,100,32,63,32,98,32,43,61,32,50,32,58,32,53,53,50,57,54,32,60,61,32,100,32,38,38,32,53,55,51,52,51,32,62,61,32,100,32,63,32,40,98,32,43,61,32,52,44,32,43,43,99,41,32,58,32,98,32,43,61,32,51,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,59,10,32,32,32,32,32,32,125,44,32,69,97,32,61,32,40,97,44,32,98,44,32,99,44,32,100,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,48,32,60,32,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,100,32,61,32,99,32,43,32,100,32,45,32,49,59,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,101,32,61,32,48,59,32,101,32,60,32,97,46,108,101,110,103,116,104,59,32,43,43,101,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,97,46,99,104,97,114,67,111,100,101,65,116,40,101,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,53,53,50,57,54,32,60,61,32,102,32,38,38,32,53,55,51,52,51,32,62,61,32,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,97,46,99,104,97,114,67,111,100,101,65,116,40,43,43,101,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,32,61,32,54,53,53,51,54,32,43,32,40,40,102,32,38,32,49,48,50,51,41,32,60,60,32,49,48,41,32,124,32,108,32,38,32,49,48,50,51,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,49,50,55,32,62,61,32,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,99,32,62,61,32,100,41,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,91,99,43,43,93,32,61,32,102,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,50,48,52,55,32,62,61,32,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,99,32,43,32,49,32,62,61,32,100,41,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,91,99,43,43,93,32,61,32,49,57,50,32,124,32,102,32,62,62,32,54,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,54,53,53,51,53,32,62,61,32,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,99,32,43,32,50,32,62,61,32,100,41,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,91,99,43,43,93,32,61,32,50,50,52,32,124,32,102,32,62,62,32,49,50,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,99,32,43,32,51,32,62,61,32,100,41,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,91,99,43,43,93,32,61,32,50,52,48,32,124,32,102,32,62,62,32,49,56,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,91,99,43,43,93,32,61,32,49,50,56,32,124,32,102,32,62,62,32,49,50,32,38,32,54,51,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,91,99,43,43,93,32,61,32,49,50,56,32,124,32,102,32,62,62,32,54,32,38,32,54,51,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,91,99,43,43,93,32,61,32,49,50,56,32,124,32,102,32,38,32,54,51,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,98,91,99,93,32,61,32,48,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,44,32,70,97,32,61,32,123,125,44,32,71,97,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,59,32,97,46,108,101,110,103,116,104,59,32,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,97,46,112,111,112,40,41,59,10,32,32,32,32,32,32,32,32,32,32,97,46,112,111,112,40,41,40,98,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,75,40,97,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,102,114,111,109,87,105,114,101,84,121,112,101,40,70,91,97,32,62,62,32,50,93,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,76,32,61,32,123,125,44,32,77,32,61,32,123,125,44,32,72,97,32,61,32,123,125,44,32,73,97,44,32,80,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,100,40,104,41,32,123,10,32,32,32,32,32,32,32,32,32,32,104,32,61,32,99,40,104,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,104,46,108,101,110,103,116,104,32,33,61,61,32,97,46,108,101,110,103,116,104,41,32,116,104,114,111,119,32,110,101,119,32,73,97,40,34,77,105,115,109,97,116,99,104,101,100,32,116,121,112,101,32,99,111,110,118,101,114,116,101,114,32,99,111,117,110,116,34,41,59,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,110,32,61,32,48,59,32,110,32,60,32,97,46,108,101,110,103,116,104,59,32,43,43,110,41,32,79,40,97,91,110,93,44,32,104,91,110,93,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,97,46,102,111,114,69,97,99,104,40,102,117,110,99,116,105,111,110,40,104,41,32,123,10,32,32,32,32,32,32,32,32,32,32,72,97,91,104,93,32,61,32,98,59,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,65,114,114,97,121,40,98,46,108,101,110,103,116,104,41,44,32,102,32,61,32,91,93,44,32,108,32,61,32,48,59,10,32,32,32,32,32,32,32,32,98,46,102,111,114,69,97,99,104,40,40,104,44,32,110,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,77,46,104,97,115,79,119,110,80,114,111,112,101,114,116,121,40,104,41,32,63,32,101,91,110,93,32,61,32,77,91,104,93,32,58,32,40,102,46,112,117,115,104,40,104,41,44,32,76,46,104,97,115,79,119,110,80,114,111,112,101,114,116,121,40,104,41,32,124,124,32,40,76,91,104,93,32,61,32,91,93,41,44,32,76,91,104,93,46,112,117,115,104,40,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,101,91,110,93,32,61,32,77,91,104,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,43,43,108,59,10,32,32,32,32,32,32,32,32,32,32,32,32,108,32,61,61,61,32,102,46,108,101,110,103,116,104,32,38,38,32,100,40,101,41,59,10,32,32,32,32,32,32,32,32,32,32,125,41,41,59,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,48,32,61,61,61,32,102,46,108,101,110,103,116,104,32,38,38,32,100,40,101,41,59,10,32,32,32,32,32,32,125,44,32,74,97,44,32,81,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,98,32,61,32,34,34,59,32,65,91,97,93,59,32,41,32,98,32,43,61,32,74,97,91,65,91,97,43,43,93,93,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,59,10,32,32,32,32,32,32,125,44,32,82,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,75,97,40,97,44,32,98,44,32,99,32,61,32,123,125,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,98,46,110,97,109,101,59,10,32,32,32,32,32,32,32,32,105,102,32,40,33,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,116,121,112,101,32,34,36,123,100,125,34,32,109,117,115,116,32,104,97,118,101,32,97,32,112,111,115,105,116,105,118,101,32,105,110,116,101,103,101,114,32,116,121,112,101,105,100,32,112,111,105,110,116,101,114,96,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,77,46,104,97,115,79,119,110,80,114,111,112,101,114,116,121,40,97,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,99,46,105,98,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,114,101,103,105,115,116,101,114,32,116,121,112,101,32,39,36,123,100,125,39,32,116,119,105,99,101,96,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,77,91,97,93,32,61,32,98,59,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,72,97,91,97,93,59,10,32,32,32,32,32,32,32,32,76,46,104,97,115,79,119,110,80,114,111,112,101,114,116,121,40,97,41,32,38,38,32,40,98,32,61,32,76,91,97,93,44,32,100,101,108,101,116,101,32,76,91,97,93,44,32,98,46,102,111,114,69,97,99,104,40,40,101,41,32,61,62,32,101,40,41,41,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,79,40,97,44,32,98,44,32,99,32,61,32,123,125,41,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,33,40,34,97,114,103,80,97,99,107,65,100,118,97,110,99,101,34,32,105,110,32,98,41,41,32,116,104,114,111,119,32,110,101,119,32,84,121,112,101,69,114,114,111,114,40,34,114,101,103,105,115,116,101,114,84,121,112,101,32,114,101,103,105,115,116,101,114,101,100,73,110,115,116,97,110,99,101,32,114,101,113,117,105,114,101,115,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,34,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,75,97,40,97,44,32,98,44,32,99,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,76,97,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,97,46,109,97,46,122,97,46,120,97,46,110,97,109,101,32,43,32,34,32,105,110,115,116,97,110,99,101,32,97,108,114,101,97,100,121,32,100,101,108,101,116,101,100,34,41,59,10,32,32,32,32,32,32,125,44,32,77,97,32,61,32,102,97,108,115,101,44,32,79,97,32,61,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,125,44,32,80,97,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,98,32,61,61,61,32,99,41,32,114,101,116,117,114,110,32,97,59,10,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,61,61,61,32,99,46,67,97,41,32,114,101,116,117,114,110,32,110,117,108,108,59,10,32,32,32,32,32,32,32,32,97,32,61,32,80,97,40,97,44,32,98,44,32,99,46,67,97,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,117,108,108,32,61,61,61,32,97,32,63,32,110,117,108,108,32,58,32,99,46,97,98,40,97,41,59,10,32,32,32,32,32,32,125,44,32,81,97,32,61,32,123,125,44,32,82,97,32,61,32,91,93,44,32,83,97,32,61,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,59,32,82,97,46,108,101,110,103,116,104,59,32,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,97,32,61,32,82,97,46,112,111,112,40,41,59,10,32,32,32,32,32,32,32,32,32,32,97,46,109,97,46,75,97,32,61,32,102,97,108,115,101,59,10,32,32,32,32,32,32,32,32,32,32,97,91,34,100,101,108,101,116,101,34,93,40,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,44,32,84,97,44,32,85,97,32,61,32,123,125,44,32,86,97,32,61,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,61,61,61,32,98,41,32,116,104,114,111,119,32,110,101,119,32,82,40,34,112,116,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,117,110,100,101,102,105,110,101,100,34,41,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,59,32,97,46,67,97,59,32,41,32,98,32,61,32,97,46,78,97,40,98,41,44,32,97,32,61,32,97,46,67,97,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,85,97,91,98,93,59,10,32,32,32,32,32,32,125,44,32,88,97,32,61,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,33,98,46,122,97,32,124,124,32,33,98,46,121,97,41,32,116,104,114,111,119,32,110,101,119,32,73,97,40,34,109,97,107,101,67,108,97,115,115,72,97,110,100,108,101,32,114,101,113,117,105,114,101,115,32,112,116,114,32,97,110,100,32,112,116,114,84,121,112,101,34,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,33,33,98,46,68,97,32,33,61,61,32,33,33,98,46,65,97,41,32,116,104,114,111,119,32,110,101,119,32,73,97,40,34,66,111,116,104,32,115,109,97,114,116,80,116,114,84,121,112,101,32,97,110,100,32,115,109,97,114,116,80,116,114,32,109,117,115,116,32,98,101,32,115,112,101,99,105,102,105,101,100,34,41,59,10,32,32,32,32,32,32,32,32,98,46,99,111,117,110,116,32,61,32,123,32,118,97,108,117,101,58,32,49,32,125,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,87,97,40,79,98,106,101,99,116,46,99,114,101,97,116,101,40,97,44,32,123,32,109,97,58,32,123,32,118,97,108,117,101,58,32,98,44,32,119,114,105,116,97,98,108,101,58,32,116,114,117,101,32,125,32,125,41,41,59,10,32,32,32,32,32,32,125,44,32,87,97,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,34,117,110,100,101,102,105,110,101,100,34,32,61,61,61,32,116,121,112,101,111,102,32,70,105,110,97,108,105,122,97,116,105,111,110,82,101,103,105,115,116,114,121,41,32,114,101,116,117,114,110,32,87,97,32,61,32,40,98,41,32,61,62,32,98,44,32,97,59,10,32,32,32,32,32,32,32,32,77,97,32,61,32,110,101,119,32,70,105,110,97,108,105,122,97,116,105,111,110,82,101,103,105,115,116,114,121,40,40,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,98,46,109,97,59,10,32,32,32,32,32,32,32,32,32,32,45,45,98,46,99,111,117,110,116,46,118,97,108,117,101,59,10,32,32,32,32,32,32,32,32,32,32,48,32,61,61,61,32,98,46,99,111,117,110,116,46,118,97,108,117,101,32,38,38,32,40,98,46,65,97,32,63,32,98,46,68,97,46,70,97,40,98,46,65,97,41,32,58,32,98,46,122,97,46,120,97,46,70,97,40,98,46,121,97,41,41,59,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,87,97,32,61,32,40,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,98,46,109,97,59,10,32,32,32,32,32,32,32,32,32,32,99,46,65,97,32,38,38,32,77,97,46,114,101,103,105,115,116,101,114,40,98,44,32,123,32,109,97,58,32,99,32,125,44,32,98,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,59,10,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,79,97,32,61,32,40,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,77,97,46,117,110,114,101,103,105,115,116,101,114,40,98,41,59,10,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,87,97,40,97,41,59,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,89,97,40,41,32,123,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,90,97,32,61,32,40,97,44,32,98,41,32,61,62,32,79,98,106,101,99,116,46,100,101,102,105,110,101,80,114,111,112,101,114,116,121,40,98,44,32,34,110,97,109,101,34,44,32,123,32,118,97,108,117,101,58,32,97,32,125,41,44,32,36,97,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,61,61,61,32,97,91,98,93,46,66,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,97,91,98,93,59,10,32,32,32,32,32,32,32,32,32,32,97,91,98,93,32,61,32,102,117,110,99,116,105,111,110,40,46,46,46,101,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,97,91,98,93,46,66,97,46,104,97,115,79,119,110,80,114,111,112,101,114,116,121,40,101,46,108,101,110,103,116,104,41,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,70,117,110,99,116,105,111,110,32,39,36,123,99,125,39,32,99,97,108,108,101,100,32,119,105,116,104,32,97,110,32,105,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,40,36,123,101,46,108,101,110,103,116,104,125,41,32,45,32,101,120,112,101,99,116,115,32,111,110,101,32,111,102,32,40,36,123,97,91,98,93,46,66,97,125,41,33,96,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,97,91,98,93,46,66,97,91,101,46,108,101,110,103,116,104,93,46,97,112,112,108,121,40,116,104,105,115,44,32,101,41,59,10,32,32,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,32,32,97,91,98,93,46,66,97,32,61,32,91,93,59,10,32,32,32,32,32,32,32,32,32,32,97,91,98,93,46,66,97,91,100,46,79,97,93,32,61,32,100,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,44,32,97,98,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,107,46,104,97,115,79,119,110,80,114,111,112,101,114,116,121,40,97,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,61,61,61,32,99,32,124,124,32,118,111,105,100,32,48,32,33,61,61,32,107,91,97,93,46,66,97,32,38,38,32,118,111,105,100,32,48,32,33,61,61,32,107,91,97,93,46,66,97,91,99,93,41,10,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,114,101,103,105,115,116,101,114,32,112,117,98,108,105,99,32,110,97,109,101,32,39,36,123,97,125,39,32,116,119,105,99,101,96,41,59,10,32,32,32,32,32,32,32,32,32,32,36,97,40,107,44,32,97,44,32,97,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,107,46,104,97,115,79,119,110,80,114,111,112,101,114,116,121,40,99,41,41,10,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,114,101,103,105,115,116,101,114,32,109,117,108,116,105,112,108,101,32,111,118,101,114,108,111,97,100,115,32,111,102,32,97,32,102,117,110,99,116,105,111,110,32,119,105,116,104,32,116,104,101,32,115,97,109,101,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,40,36,123,99,125,41,33,96,41,59,10,32,32,32,32,32,32,32,32,32,32,107,91,97,93,46,66,97,91,99,93,32,61,32,98,59,10,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,107,91,97,93,32,61,32,98,44,32,118,111,105,100,32,48,32,33,61,61,32,99,32,38,38,32,40,107,91,97,93,46,118,98,32,61,32,99,41,59,10,32,32,32,32,32,32,125,44,32,98,98,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,61,61,61,32,97,41,32,114,101,116,117,114,110,32,34,95,117,110,107,110,111,119,110,34,59,10,32,32,32,32,32,32,32,32,97,32,61,32,97,46,114,101,112,108,97,99,101,40,47,91,94,97,45,122,65,45,90,48,45,57,95,93,47,103,44,32,34,36,34,41,59,10,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,97,46,99,104,97,114,67,111,100,101,65,116,40,48,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,52,56,32,60,61,32,98,32,38,38,32,53,55,32,62,61,32,98,32,63,32,96,95,36,123,97,125,96,32,58,32,97,59,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,99,98,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,44,32,104,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,110,97,109,101,32,61,32,97,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,99,111,110,115,116,114,117,99,116,111,114,32,61,32,98,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,76,97,32,61,32,99,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,70,97,32,61,32,100,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,67,97,32,61,32,101,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,99,98,32,61,32,102,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,78,97,32,61,32,108,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,97,98,32,61,32,104,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,107,98,32,61,32,91,93,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,100,98,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,59,32,98,32,33,61,61,32,99,59,32,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,98,46,78,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,69,120,112,101,99,116,101,100,32,110,117,108,108,32,111,114,32,105,110,115,116,97,110,99,101,32,111,102,32,36,123,99,46,110,97,109,101,125,44,32,103,111,116,32,97,110,32,105,110,115,116,97,110,99,101,32,111,102,32,36,123,98,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,97,32,61,32,98,46,78,97,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,98,46,67,97,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,97,59,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,101,98,40,97,44,32,98,41,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,110,117,108,108,32,61,61,61,32,98,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,84,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,110,117,108,108,32,105,115,32,110,111,116,32,97,32,118,97,108,105,100,32,36,123,116,104,105,115,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,105,102,32,40,33,98,46,109,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,112,97,115,115,32,34,36,123,102,98,40,98,41,125,34,32,97,115,32,97,32,36,123,116,104,105,115,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,33,98,46,109,97,46,121,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,112,97,115,115,32,100,101,108,101,116,101,100,32,111,98,106,101,99,116,32,97,115,32,97,32,112,111,105,110,116,101,114,32,111,102,32,116,121,112,101,32,36,123,116,104,105,115,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,100,98,40,98,46,109,97,46,121,97,44,32,98,46,109,97,46,122,97,46,120,97,44,32,116,104,105,115,46,120,97,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,103,98,40,97,44,32,98,41,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,110,117,108,108,32,61,61,61,32,98,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,84,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,110,117,108,108,32,105,115,32,110,111,116,32,97,32,118,97,108,105,100,32,36,123,116,104,105,115,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,81,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,116,104,105,115,46,85,97,40,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,110,117,108,108,32,33,61,61,32,97,32,38,38,32,97,46,112,117,115,104,40,116,104,105,115,46,70,97,44,32,99,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,105,102,32,40,33,98,32,124,124,32,33,98,46,109,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,112,97,115,115,32,34,36,123,102,98,40,98,41,125,34,32,97,115,32,97,32,36,123,116,104,105,115,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,33,98,46,109,97,46,121,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,112,97,115,115,32,100,101,108,101,116,101,100,32,111,98,106,101,99,116,32,97,115,32,97,32,112,111,105,110,116,101,114,32,111,102,32,116,121,112,101,32,36,123,116,104,105,115,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,33,116,104,105,115,46,80,97,32,38,38,32,98,46,109,97,46,122,97,46,80,97,41,10,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,10,32,32,32,32,32,32,32,32,32,32,32,32,96,67,97,110,110,111,116,32,99,111,110,118,101,114,116,32,97,114,103,117,109,101,110,116,32,111,102,32,116,121,112,101,32,36,123,98,46,109,97,46,68,97,32,63,32,98,46,109,97,46,68,97,46,110,97,109,101,32,58,32,98,46,109,97,46,122,97,46,110,97,109,101,125,32,116,111,32,112,97,114,97,109,101,116,101,114,32,116,121,112,101,32,36,123,116,104,105,115,46,110,97,109,101,125,96,10,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,99,32,61,32,100,98,40,98,46,109,97,46,121,97,44,32,98,46,109,97,46,122,97,46,120,97,44,32,116,104,105,115,46,120,97,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,81,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,61,61,61,32,98,46,109,97,46,65,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,34,80,97,115,115,105,110,103,32,114,97,119,32,112,111,105,110,116,101,114,32,116,111,32,115,109,97,114,116,32,112,111,105,110,116,101,114,32,105,115,32,105,108,108,101,103,97,108,34,41,59,10,32,32,32,32,32,32,32,32,32,32,115,119,105,116,99,104,32,40,116,104,105,115,46,112,98,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,48,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,98,46,109,97,46,68,97,32,61,61,61,32,116,104,105,115,41,32,99,32,61,32,98,46,109,97,46,65,97,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,67,97,110,110,111,116,32,99,111,110,118,101,114,116,32,97,114,103,117,109,101,110,116,32,111,102,32,116,121,112,101,32,36,123,98,46,109,97,46,68,97,32,63,32,98,46,109,97,46,68,97,46,110,97,109,101,32,58,32,98,46,109,97,46,122,97,46,110,97,109,101,125,32,116,111,32,112,97,114,97,109,101,116,101,114,32,116,121,112,101,32,36,123,116,104,105,115,46,110,97,109,101,125,96,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,49,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,32,61,32,98,46,109,97,46,65,97,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,50,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,98,46,109,97,46,68,97,32,61,61,61,32,116,104,105,115,41,32,99,32,61,32,98,46,109,97,46,65,97,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,98,46,99,108,111,110,101,40,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,32,61,32,116,104,105,115,46,108,98,40,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,44,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,104,98,40,40,41,32,61,62,32,100,91,34,100,101,108,101,116,101,34,93,40,41,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,110,117,108,108,32,33,61,61,32,97,32,38,38,32,97,46,112,117,115,104,40,116,104,105,115,46,70,97,44,32,99,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,102,97,117,108,116,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,34,85,110,115,117,112,112,111,114,116,105,110,103,32,115,104,97,114,105,110,103,32,112,111,108,105,99,121,34,41,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,105,98,40,97,44,32,98,41,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,110,117,108,108,32,61,61,61,32,98,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,84,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,110,117,108,108,32,105,115,32,110,111,116,32,97,32,118,97,108,105,100,32,36,123,116,104,105,115,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,105,102,32,40,33,98,46,109,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,112,97,115,115,32,34,36,123,102,98,40,98,41,125,34,32,97,115,32,97,32,36,123,116,104,105,115,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,33,98,46,109,97,46,121,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,112,97,115,115,32,100,101,108,101,116,101,100,32,111,98,106,101,99,116,32,97,115,32,97,32,112,111,105,110,116,101,114,32,111,102,32,116,121,112,101,32,36,123,116,104,105,115,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,98,46,109,97,46,122,97,46,80,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,99,111,110,118,101,114,116,32,97,114,103,117,109,101,110,116,32,111,102,32,116,121,112,101,32,36,123,98,46,109,97,46,122,97,46,110,97,109,101,125,32,116,111,32,112,97,114,97,109,101,116,101,114,32,116,121,112,101,32,36,123,116,104,105,115,46,110,97,109,101,125,96,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,100,98,40,98,46,109,97,46,121,97,44,32,98,46,109,97,46,122,97,46,120,97,44,32,116,104,105,115,46,120,97,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,106,98,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,44,32,104,44,32,110,44,32,109,44,32,112,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,110,97,109,101,32,61,32,97,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,120,97,32,61,32,98,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,84,97,32,61,32,99,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,80,97,32,61,32,100,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,81,97,32,61,32,101,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,106,98,32,61,32,102,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,112,98,32,61,32,108,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,90,97,32,61,32,104,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,85,97,32,61,32,110,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,108,98,32,61,32,109,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,70,97,32,61,32,112,59,10,32,32,32,32,32,32,32,32,101,32,124,124,32,118,111,105,100,32,48,32,33,61,61,32,98,46,67,97,32,63,32,116,104,105,115,46,116,111,87,105,114,101,84,121,112,101,32,61,32,103,98,32,58,32,40,116,104,105,115,46,116,111,87,105,114,101,84,121,112,101,32,61,32,100,32,63,32,101,98,32,58,32,105,98,44,32,116,104,105,115,46,69,97,32,61,32,110,117,108,108,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,107,98,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,33,107,46,104,97,115,79,119,110,80,114,111,112,101,114,116,121,40,97,41,41,32,116,104,114,111,119,32,110,101,119,32,73,97,40,34,82,101,112,108,97,99,105,110,103,32,110,111,110,101,120,105,115,116,101,110,116,32,112,117,98,108,105,99,32,115,121,109,98,111,108,34,41,59,10,32,32,32,32,32,32,32,32,118,111,105,100,32,48,32,33,61,61,32,107,91,97,93,46,66,97,32,38,38,32,118,111,105,100,32,48,32,33,61,61,32,99,32,63,32,107,91,97,93,46,66,97,91,99,93,32,61,32,98,32,58,32,40,107,91,97,93,32,61,32,98,44,32,107,91,97,93,46,79,97,32,61,32,99,41,59,10,32,32,32,32,32,32,125,44,32,83,44,32,108,98,32,61,32,40,97,44,32,98,44,32,99,32,61,32,91,93,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,97,46,105,110,99,108,117,100,101,115,40,34,106,34,41,32,63,32,40,97,32,61,32,97,46,114,101,112,108,97,99,101,40,47,112,47,103,44,32,34,105,34,41,44,32,98,32,61,32,40,48,44,32,107,91,34,100,121,110,67,97,108,108,95,34,32,43,32,97,93,41,40,98,44,32,46,46,46,99,41,41,32,58,32,98,32,61,32,83,46,103,101,116,40,98,41,40,46,46,46,99,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,59,10,32,32,32,32,32,32,125,44,32,109,98,32,61,32,40,97,44,32,98,41,32,61,62,32,40,46,46,46,99,41,32,61,62,32,108,98,40,97,44,32,98,44,32,99,41,44,32,84,32,61,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,97,32,61,32,81,40,97,41,59,10,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,97,46,105,110,99,108,117,100,101,115,40,34,106,34,41,32,63,32,109,98,40,97,44,32,98,41,32,58,32,83,46,103,101,116,40,98,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,34,102,117,110,99,116,105,111,110,34,32,33,61,32,116,121,112,101,111,102,32,99,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,117,110,107,110,111,119,110,32,102,117,110,99,116,105,111,110,32,112,111,105,110,116,101,114,32,119,105,116,104,32,115,105,103,110,97,116,117,114,101,32,36,123,97,125,58,32,36,123,98,125,96,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,59,10,32,32,32,32,32,32,125,44,32,110,98,44,32,112,98,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,97,32,61,32,111,98,40,97,41,59,10,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,81,40,97,41,59,10,32,32,32,32,32,32,32,32,85,40,97,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,59,10,32,32,32,32,32,32,125,44,32,113,98,32,61,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,99,40,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,101,91,102,93,32,124,124,32,77,91,102,93,32,124,124,32,40,72,97,91,102,93,32,63,32,72,97,91,102,93,46,102,111,114,69,97,99,104,40,99,41,32,58,32,40,100,46,112,117,115,104,40,102,41,44,32,101,91,102,93,32,61,32,116,114,117,101,41,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,91,93,44,32,101,32,61,32,123,125,59,10,32,32,32,32,32,32,32,32,98,46,102,111,114,69,97,99,104,40,99,41,59,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,110,98,40,96,36,123,97,125,58,32,96,32,43,32,100,46,109,97,112,40,112,98,41,46,106,111,105,110,40,91,34,44,32,34,93,41,41,59,10,32,32,32,32,32,32,125,44,32,114,98,32,61,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,99,32,61,32,91,93,44,32,100,32,61,32,48,59,32,100,32,60,32,97,59,32,100,43,43,41,32,99,46,112,117,115,104,40,70,91,98,32,43,32,52,32,42,32,100,32,62,62,32,50,93,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,59,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,115,98,40,97,41,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,98,32,61,32,49,59,32,98,32,60,32,97,46,108,101,110,103,116,104,59,32,43,43,98,41,32,105,102,32,40,110,117,108,108,32,33,61,61,32,97,91,98,93,32,38,38,32,118,111,105,100,32,48,32,61,61,61,32,97,91,98,93,46,69,97,41,32,114,101,116,117,114,110,32,116,114,117,101,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,116,98,40,97,44,32,98,44,32,99,44,32,100,44,32,101,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,98,46,108,101,110,103,116,104,59,10,32,32,32,32,32,32,32,32,105,102,32,40,50,32,62,32,102,41,32,116,104,114,111,119,32,110,101,119,32,82,40,34,97,114,103,84,121,112,101,115,32,97,114,114,97,121,32,115,105,122,101,32,109,105,115,109,97,116,99,104,33,32,77,117,115,116,32,97,116,32,108,101,97,115,116,32,103,101,116,32,114,101,116,117,114,110,32,118,97,108,117,101,32,97,110,100,32,39,116,104,105,115,39,32,116,121,112,101,115,33,34,41,59,10,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,110,117,108,108,32,33,61,61,32,98,91,49,93,32,38,38,32,110,117,108,108,32,33,61,61,32,99,44,32,104,32,61,32,115,98,40,98,41,44,32,110,32,61,32,34,118,111,105,100,34,32,33,61,61,32,98,91,48,93,46,110,97,109,101,44,32,109,32,61,32,102,32,45,32,50,44,32,112,32,61,32,65,114,114,97,121,40,109,41,44,32,117,32,61,32,91,93,44,32,118,32,61,32,91,93,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,90,97,40,97,44,32,102,117,110,99,116,105,111,110,40,46,46,46,103,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,103,46,108,101,110,103,116,104,32,33,61,61,32,109,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,102,117,110,99,116,105,111,110,32,36,123,97,125,32,99,97,108,108,101,100,32,119,105,116,104,32,36,123,103,46,108,101,110,103,116,104,125,32,97,114,103,117,109,101,110,116,115,44,32,101,120,112,101,99,116,101,100,32,36,123,109,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,118,46,108,101,110,103,116,104,32,61,32,48,59,10,32,32,32,32,32,32,32,32,32,32,117,46,108,101,110,103,116,104,32,61,32,108,32,63,32,50,32,58,32,49,59,10,32,32,32,32,32,32,32,32,32,32,117,91,48,93,32,61,32,101,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,108,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,113,32,61,32,98,91,49,93,46,116,111,87,105,114,101,84,121,112,101,40,118,44,32,116,104,105,115,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,117,91,49,93,32,61,32,113,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,114,32,61,32,48,59,32,114,32,60,32,109,59,32,43,43,114,41,32,112,91,114,93,32,61,32,98,91,114,32,43,32,50,93,46,116,111,87,105,114,101,84,121,112,101,40,118,44,32,103,91,114,93,41,44,32,117,46,112,117,115,104,40,112,91,114,93,41,59,10,32,32,32,32,32,32,32,32,32,32,103,32,61,32,100,40,46,46,46,117,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,104,41,32,71,97,40,118,41,59,10,32,32,32,32,32,32,32,32,32,32,101,108,115,101,10,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,114,32,61,32,108,32,63,32,49,32,58,32,50,59,32,114,32,60,32,98,46,108,101,110,103,116,104,59,32,114,43,43,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,122,32,61,32,49,32,61,61,61,32,114,32,63,32,113,32,58,32,112,91,114,32,45,32,50,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,110,117,108,108,32,33,61,61,32,98,91,114,93,46,69,97,32,38,38,32,98,91,114,93,46,69,97,40,122,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,113,32,61,32,110,32,63,32,98,91,48,93,46,102,114,111,109,87,105,114,101,84,121,112,101,40,103,41,32,58,32,118,111,105,100,32,48,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,113,59,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,117,98,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,97,32,61,32,97,46,116,114,105,109,40,41,59,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,98,32,61,32,97,46,105,110,100,101,120,79,102,40,34,40,34,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,45,49,32,33,61,61,32,98,32,63,32,97,46,115,117,98,115,116,114,40,48,44,32,98,41,32,58,32,97,59,10,32,32,32,32,32,32,125,44,32,118,98,32,61,32,91,93,44,32,86,32,61,32,91,93,44,32,119,98,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,57,32,60,32,97,32,38,38,32,48,32,61,61,61,32,45,45,86,91,97,32,43,32,49,93,32,38,38,32,40,86,91,97,93,32,61,32,118,111,105,100,32,48,44,32,118,98,46,112,117,115,104,40,97,41,41,59,10,32,32,32,32,32,32,125,44,32,121,98,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,33,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,34,67,97,110,110,111,116,32,117,115,101,32,100,101,108,101,116,101,100,32,118,97,108,46,32,104,97,110,100,108,101,32,61,32,34,32,43,32,97,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,86,91,97,93,59,10,32,32,32,32,32,32,125,44,32,104,98,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,115,119,105,116,99,104,32,40,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,118,111,105,100,32,48,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,50,59,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,110,117,108,108,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,52,59,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,116,114,117,101,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,54,59,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,102,97,108,115,101,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,56,59,10,32,32,32,32,32,32,32,32,32,32,100,101,102,97,117,108,116,58,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,98,32,61,32,118,98,46,112,111,112,40,41,32,124,124,32,86,46,108,101,110,103,116,104,59,10,32,32,32,32,32,32,32,32,32,32,32,32,86,91,98,93,32,61,32,97,59,10,32,32,32,32,32,32,32,32,32,32,32,32,86,91,98,32,43,32,49,93,32,61,32,49,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,44,32,122,98,32,61,32,123,10,32,32,32,32,32,32,32,32,110,97,109,101,58,32,34,101,109,115,99,114,105,112,116,101,110,58,58,118,97,108,34,44,10,32,32,32,32,32,32,32,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,121,98,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,119,98,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,116,111,87,105,114,101,84,121,112,101,58,32,40,97,44,32,98,41,32,61,62,32,104,98,40,98,41,44,10,32,32,32,32,32,32,32,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,56,44,10,32,32,32,32,32,32,32,32,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,58,32,75,44,10,32,32,32,32,32,32,32,32,69,97,58,32,110,117,108,108,10,32,32,32,32,32,32,125,44,32,65,98,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,115,119,105,116,99,104,32,40,98,41,32,123,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,49,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,32,63,32,102,117,110,99,116,105,111,110,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,102,114,111,109,87,105,114,101,84,121,112,101,40,121,91,100,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,32,58,32,102,117,110,99,116,105,111,110,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,102,114,111,109,87,105,114,101,84,121,112,101,40,65,91,100,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,50,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,32,63,32,102,117,110,99,116,105,111,110,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,102,114,111,109,87,105,114,101,84,121,112,101,40,66,91,100,32,62,62,32,49,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,32,58,32,102,117,110,99,116,105,111,110,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,102,114,111,109,87,105,114,101,84,121,112,101,40,67,91,100,32,62,62,32,49,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,52,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,32,63,32,102,117,110,99,116,105,111,110,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,102,114,111,109,87,105,114,101,84,121,112,101,40,69,91,100,32,62,62,32,50,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,32,58,32,102,117,110,99,116,105,111,110,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,102,114,111,109,87,105,114,101,84,121,112,101,40,70,91,100,32,62,62,32,50,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,32,32,100,101,102,97,117,108,116,58,10,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,84,121,112,101,69,114,114,111,114,40,96,105,110,118,97,108,105,100,32,105,110,116,101,103,101,114,32,119,105,100,116,104,32,40,36,123,98,125,41,58,32,36,123,97,125,96,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,44,32,66,98,32,61,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,77,91,97,93,59,10,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,61,61,61,32,99,41,32,116,104,114,111,119,32,97,32,61,32,96,36,123,98,125,32,104,97,115,32,117,110,107,110,111,119,110,32,116,121,112,101,32,36,123,112,98,40,97,41,125,96,44,32,110,101,119,32,82,40,97,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,59,10,32,32,32,32,32,32,125,44,32,102,98,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,110,117,108,108,32,61,61,61,32,97,41,32,114,101,116,117,114,110,32,34,110,117,108,108,34,59,10,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,116,121,112,101,111,102,32,97,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,111,98,106,101,99,116,34,32,61,61,61,32,98,32,124,124,32,34,97,114,114,97,121,34,32,61,61,61,32,98,32,124,124,32,34,102,117,110,99,116,105,111,110,34,32,61,61,61,32,98,32,63,32,97,46,116,111,83,116,114,105,110,103,40,41,32,58,32,34,34,32,43,32,97,59,10,32,32,32,32,32,32,125,44,32,67,98,32,61,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,115,119,105,116,99,104,32,40,98,41,32,123,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,52,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,117,110,99,116,105,111,110,40,99,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,102,114,111,109,87,105,114,101,84,121,112,101,40,106,97,91,99,32,62,62,32,50,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,56,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,117,110,99,116,105,111,110,40,99,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,102,114,111,109,87,105,114,101,84,121,112,101,40,107,97,91,99,32,62,62,32,51,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,32,32,100,101,102,97,117,108,116,58,10,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,84,121,112,101,69,114,114,111,114,40,96,105,110,118,97,108,105,100,32,102,108,111,97,116,32,119,105,100,116,104,32,40,36,123,98,125,41,58,32,36,123,97,125,96,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,44,32,68,98,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,115,119,105,116,99,104,32,40,98,41,32,123,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,49,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,32,63,32,40,100,41,32,61,62,32,121,91,100,93,32,58,32,40,100,41,32,61,62,32,65,91,100,93,59,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,50,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,32,63,32,40,100,41,32,61,62,32,66,91,100,32,62,62,32,49,93,32,58,32,40,100,41,32,61,62,32,67,91,100,32,62,62,32,49,93,59,10,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,52,58,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,32,63,32,40,100,41,32,61,62,32,69,91,100,32,62,62,32,50,93,32,58,32,40,100,41,32,61,62,32,70,91,100,32,62,62,32,50,93,59,10,32,32,32,32,32,32,32,32,32,32,100,101,102,97,117,108,116,58,10,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,84,121,112,101,69,114,114,111,114,40,96,105,110,118,97,108,105,100,32,105,110,116,101,103,101,114,32,119,105,100,116,104,32,40,36,123,98,125,41,58,32,36,123,97,125,96,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,44,32,69,98,32,61,32,34,117,110,100,101,102,105,110,101,100,34,32,33,61,32,116,121,112,101,111,102,32,84,101,120,116,68,101,99,111,100,101,114,32,63,32,110,101,119,32,84,101,120,116,68,101,99,111,100,101,114,40,34,117,116,102,45,49,54,108,101,34,41,32,58,32,118,111,105,100,32,48,44,32,70,98,32,61,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,97,32,62,62,32,49,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,100,32,61,32,99,32,43,32,98,32,47,32,50,59,32,33,40,99,32,62,61,32,100,41,32,38,38,32,67,91,99,93,59,32,41,32,43,43,99,59,10,32,32,32,32,32,32,32,32,99,32,60,60,61,32,49,59,10,32,32,32,32,32,32,32,32,105,102,32,40,51,50,32,60,32,99,32,45,32,97,32,38,38,32,69,98,41,32,114,101,116,117,114,110,32,69,98,46,100,101,99,111,100,101,40,65,46,115,117,98,97,114,114,97,121,40,97,44,32,99,41,41,59,10,32,32,32,32,32,32,32,32,99,32,61,32,34,34,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,100,32,61,32,48,59,32,33,40,100,32,62,61,32,98,32,47,32,50,41,59,32,43,43,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,66,91,97,32,43,32,50,32,42,32,100,32,62,62,32,49,93,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,48,32,61,61,32,101,41,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,32,32,99,32,43,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,59,10,32,32,32,32,32,32,125,44,32,71,98,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,99,32,63,63,32,40,99,32,61,32,50,49,52,55,52,56,51,54,52,55,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,50,32,62,32,99,41,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,99,32,45,61,32,50,59,10,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,98,59,10,32,32,32,32,32,32,32,32,99,32,61,32,99,32,60,32,50,32,42,32,97,46,108,101,110,103,116,104,32,63,32,99,32,47,32,50,32,58,32,97,46,108,101,110,103,116,104,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,101,32,61,32,48,59,32,101,32,60,32,99,59,32,43,43,101,41,32,66,91,98,32,62,62,32,49,93,32,61,32,97,46,99,104,97,114,67,111,100,101,65,116,40,101,41,44,32,98,32,43,61,32,50,59,10,32,32,32,32,32,32,32,32,66,91,98,32,62,62,32,49,93,32,61,32,48,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,32,45,32,100,59,10,32,32,32,32,32,32,125,44,32,72,98,32,61,32,40,97,41,32,61,62,32,50,32,42,32,97,46,108,101,110,103,116,104,44,32,73,98,32,61,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,99,32,61,32,48,44,32,100,32,61,32,34,34,59,32,33,40,99,32,62,61,32,98,32,47,32,52,41,59,32,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,69,91,97,32,43,32,52,32,42,32,99,32,62,62,32,50,93,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,48,32,61,61,32,101,41,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,32,32,43,43,99,59,10,32,32,32,32,32,32,32,32,32,32,54,53,53,51,54,32,60,61,32,101,32,63,32,40,101,32,45,61,32,54,53,53,51,54,44,32,100,32,43,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,53,53,50,57,54,32,124,32,101,32,62,62,32,49,48,44,32,53,54,51,50,48,32,124,32,101,32,38,32,49,48,50,51,41,41,32,58,32,100,32,43,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,101,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,100,59,10,32,32,32,32,32,32,125,44,32,74,98,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,99,32,63,63,32,40,99,32,61,32,50,49,52,55,52,56,51,54,52,55,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,52,32,62,32,99,41,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,98,59,10,32,32,32,32,32,32,32,32,99,32,61,32,100,32,43,32,99,32,45,32,52,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,101,32,61,32,48,59,32,101,32,60,32,97,46,108,101,110,103,116,104,59,32,43,43,101,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,97,46,99,104,97,114,67,111,100,101,65,116,40,101,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,53,53,50,57,54,32,60,61,32,102,32,38,38,32,53,55,51,52,51,32,62,61,32,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,97,46,99,104,97,114,67,111,100,101,65,116,40,43,43,101,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,102,32,61,32,54,53,53,51,54,32,43,32,40,40,102,32,38,32,49,48,50,51,41,32,60,60,32,49,48,41,32,124,32,108,32,38,32,49,48,50,51,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,69,91,98,32,62,62,32,50,93,32,61,32,102,59,10,32,32,32,32,32,32,32,32,32,32,98,32,43,61,32,52,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,98,32,43,32,52,32,62,32,99,41,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,69,91,98,32,62,62,32,50,93,32,61,32,48,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,32,45,32,100,59,10,32,32,32,32,32,32,125,44,32,75,98,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,98,32,61,32,48,44,32,99,32,61,32,48,59,32,99,32,60,32,97,46,108,101,110,103,116,104,59,32,43,43,99,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,97,46,99,104,97,114,67,111,100,101,65,116,40,99,41,59,10,32,32,32,32,32,32,32,32,32,32,53,53,50,57,54,32,60,61,32,100,32,38,38,32,53,55,51,52,51,32,62,61,32,100,32,38,38,32,43,43,99,59,10,32,32,32,32,32,32,32,32,32,32,98,32,43,61,32,52,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,59,10,32,32,32,32,32,32,125,44,32,76,98,32,61,32,91,93,44,32,77,98,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,76,98,46,108,101,110,103,116,104,59,10,32,32,32,32,32,32,32,32,76,98,46,112,117,115,104,40,97,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,59,10,32,32,32,32,32,32,125,44,32,78,98,32,61,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,99,32,61,32,65,114,114,97,121,40,97,41,44,32,100,32,61,32,48,59,32,100,32,60,32,97,59,32,43,43,100,41,32,99,91,100,93,32,61,32,66,98,40,70,91,98,32,43,32,52,32,42,32,100,32,62,62,32,50,93,44,32,34,112,97,114,97,109,101,116,101,114,32,34,32,43,32,100,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,59,10,32,32,32,32,32,32,125,44,32,79,98,32,61,32,82,101,102,108,101,99,116,46,99,111,110,115,116,114,117,99,116,44,32,80,98,32,61,32,123,125,44,32,82,98,32,61,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,33,81,98,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,97,32,61,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,85,83,69,82,58,32,34,119,101,98,95,117,115,101,114,34,44,10,32,32,32,32,32,32,32,32,32,32,32,32,76,79,71,78,65,77,69,58,32,34,119,101,98,95,117,115,101,114,34,44,10,32,32,32,32,32,32,32,32,32,32,32,32,80,65,84,72,58,32,34,47,34,44,10,32,32,32,32,32,32,32,32,32,32,32,32,80,87,68,58,32,34,47,34,44,10,32,32,32,32,32,32,32,32,32,32,32,32,72,79,77,69,58,32,34,47,104,111,109,101,47,119,101,98,95,117,115,101,114,34,44,10,32,32,32,32,32,32,32,32,32,32,32,32,76,65,78,71,58,32,40,34,111,98,106,101,99,116,34,32,61,61,32,116,121,112,101,111,102,32,110,97,118,105,103,97,116,111,114,32,38,38,32,110,97,118,105,103,97,116,111,114,46,108,97,110,103,117,97,103,101,115,32,38,38,32,110,97,118,105,103,97,116,111,114,46,108,97,110,103,117,97,103,101,115,91,48,93,32,124,124,32,34,67,34,41,46,114,101,112,108,97,99,101,40,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,45,34,44,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,95,34,10,32,32,32,32,32,32,32,32,32,32,32,32,41,32,43,32,34,46,85,84,70,45,56,34,44,10,32,32,32,32,32,32,32,32,32,32,32,32,95,58,32,100,97,32,124,124,32,34,46,47,116,104,105,115,46,112,114,111,103,114,97,109,34,10,32,32,32,32,32,32,32,32,32,32,125,44,32,98,59,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,98,32,105,110,32,80,98,41,32,118,111,105,100,32,48,32,61,61,61,32,80,98,91,98,93,32,63,32,100,101,108,101,116,101,32,97,91,98,93,32,58,32,97,91,98,93,32,61,32,80,98,91,98,93,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,91,93,59,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,98,32,105,110,32,97,41,32,99,46,112,117,115,104,40,96,36,123,98,125,61,36,123,97,91,98,93,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,81,98,32,61,32,99,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,81,98,59,10,32,32,32,32,32,32,125,44,32,81,98,44,32,83,98,32,61,32,91,110,117,108,108,44,32,91,93,44,32,91,93,93,44,32,84,98,32,61,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,34,111,98,106,101,99,116,34,32,61,61,32,116,121,112,101,111,102,32,99,114,121,112,116,111,32,38,38,32,34,102,117,110,99,116,105,111,110,34,32,61,61,32,116,121,112,101,111,102,32,99,114,121,112,116,111,46,103,101,116,82,97,110,100,111,109,86,97,108,117,101,115,41,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,40,97,41,32,61,62,32,99,114,121,112,116,111,46,103,101,116,82,97,110,100,111,109,86,97,108,117,101,115,40,97,41,59,10,32,32,32,32,32,32,32,32,114,97,40,34,105,110,105,116,82,97,110,100,111,109,68,101,118,105,99,101,34,41,59,10,32,32,32,32,32,32,125,44,32,85,98,32,61,32,40,97,41,32,61,62,32,40,85,98,32,61,32,84,98,40,41,41,40,97,41,44,32,86,98,32,61,32,40,97,41,32,61,62,32,48,32,61,61,61,32,97,32,37,32,52,32,38,38,32,40,48,32,33,61,61,32,97,32,37,32,49,48,48,32,124,124,32,48,32,61,61,61,32,97,32,37,32,52,48,48,41,44,32,87,98,32,61,32,91,51,49,44,32,50,57,44,32,51,49,44,32,51,48,44,32,51,49,44,32,51,48,44,32,51,49,44,32,51,49,44,32,51,48,44,32,51,49,44,32,51,48,44,32,51,49,93,44,32,88,98,32,61,32,91,51,49,44,32,50,56,44,32,51,49,44,32,51,48,44,32,51,49,44,32,51,48,44,32,51,49,44,32,51,49,44,32,51,48,44,32,51,49,44,32,51,48,44,32,51,49,93,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,89,98,40,97,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,65,114,114,97,121,40,68,97,40,97,41,32,43,32,49,41,59,10,32,32,32,32,32,32,32,32,69,97,40,97,44,32,98,44,32,48,44,32,98,46,108,101,110,103,116,104,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,90,98,32,61,32,40,97,44,32,98,44,32,99,44,32,100,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,101,40,103,44,32,113,44,32,114,41,32,123,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,103,32,61,32,34,110,117,109,98,101,114,34,32,61,61,32,116,121,112,101,111,102,32,103,32,63,32,103,46,116,111,83,116,114,105,110,103,40,41,32,58,32,103,32,124,124,32,34,34,59,32,103,46,108,101,110,103,116,104,32,60,32,113,59,32,41,32,103,32,61,32,114,91,48,93,32,43,32,103,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,103,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,102,40,103,44,32,113,41,32,123,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,101,40,103,44,32,113,44,32,34,48,34,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,108,40,103,44,32,113,41,32,123,10,32,32,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,114,40,78,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,32,62,32,78,32,63,32,45,49,32,58,32,48,32,60,32,78,32,63,32,49,32,58,32,48,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,122,59,10,32,32,32,32,32,32,32,32,32,32,48,32,61,61,61,32,40,122,32,61,32,114,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,32,45,32,113,46,103,101,116,70,117,108,108,89,101,97,114,40,41,41,41,32,38,38,32,48,32,61,61,61,32,40,122,32,61,32,114,40,103,46,103,101,116,77,111,110,116,104,40,41,32,45,32,113,46,103,101,116,77,111,110,116,104,40,41,41,41,32,38,38,32,40,122,32,61,32,114,40,103,46,103,101,116,68,97,116,101,40,41,32,45,32,113,46,103,101,116,68,97,116,101,40,41,41,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,122,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,104,40,103,41,32,123,10,32,32,32,32,32,32,32,32,32,32,115,119,105,116,99,104,32,40,103,46,103,101,116,68,97,121,40,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,48,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,68,97,116,101,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,32,45,32,49,44,32,49,49,44,32,50,57,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,49,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,103,59,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,50,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,68,97,116,101,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,44,32,48,44,32,51,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,51,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,68,97,116,101,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,44,32,48,44,32,50,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,52,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,68,97,116,101,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,44,32,48,44,32,49,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,53,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,68,97,116,101,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,32,45,32,49,44,32,49,49,44,32,51,49,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,54,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,68,97,116,101,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,32,45,32,49,44,32,49,49,44,32,51,48,41,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,110,40,103,41,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,113,32,61,32,103,46,73,97,59,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,103,32,61,32,110,101,119,32,68,97,116,101,40,110,101,119,32,68,97,116,101,40,103,46,74,97,32,43,32,49,57,48,48,44,32,48,44,32,49,41,46,103,101,116,84,105,109,101,40,41,41,59,32,48,32,60,32,113,59,32,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,114,32,61,32,103,46,103,101,116,77,111,110,116,104,40,41,44,32,122,32,61,32,40,86,98,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,41,32,63,32,87,98,32,58,32,88,98,41,91,114,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,113,32,62,32,122,32,45,32,103,46,103,101,116,68,97,116,101,40,41,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,113,32,45,61,32,122,32,45,32,103,46,103,101,116,68,97,116,101,40,41,32,43,32,49,44,32,103,46,115,101,116,68,97,116,101,40,49,41,44,32,49,49,32,62,32,114,32,63,32,103,46,115,101,116,77,111,110,116,104,40,114,32,43,32,49,41,32,58,32,40,103,46,115,101,116,77,111,110,116,104,40,48,41,44,32,103,46,115,101,116,70,117,108,108,89,101,97,114,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,32,43,32,49,41,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,68,97,116,101,40,103,46,103,101,116,68,97,116,101,40,41,32,43,32,113,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,114,32,61,32,110,101,119,32,68,97,116,101,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,32,43,32,49,44,32,48,44,32,52,41,59,10,32,32,32,32,32,32,32,32,32,32,113,32,61,32,104,40,110,101,119,32,68,97,116,101,40,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,44,32,48,44,32,52,41,41,59,10,32,32,32,32,32,32,32,32,32,32,114,32,61,32,104,40,114,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,32,62,61,32,108,40,113,44,32,103,41,32,63,32,48,32,62,61,32,108,40,114,44,32,103,41,32,63,32,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,32,43,32,49,32,58,32,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,32,58,32,103,46,103,101,116,70,117,108,108,89,101,97,114,40,41,32,45,32,49,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,118,97,114,32,109,32,61,32,70,91,100,32,43,32,52,48,32,62,62,32,50,93,59,10,32,32,32,32,32,32,32,32,100,32,61,32,123,10,32,32,32,32,32,32,32,32,32,32,115,98,58,32,69,91,100,32,62,62,32,50,93,44,10,32,32,32,32,32,32,32,32,32,32,114,98,58,32,69,91,100,32,43,32,52,32,62,62,32,50,93,44,10,32,32,32,32,32,32,32,32,32,32,82,97,58,32,69,91,100,32,43,32,56,32,62,62,32,50,93,44,10,32,32,32,32,32,32,32,32,32,32,86,97,58,32,69,91,100,32,43,32,49,50,32,62,62,32,50,93,44,10,32,32,32,32,32,32,32,32,32,32,83,97,58,32,69,91,100,32,43,32,49,54,32,62,62,32,50,93,44,10,32,32,32,32,32,32,32,32,32,32,74,97,58,32,69,91,100,32,43,32,50,48,32,62,62,32,50,93,44,10,32,32,32,32,32,32,32,32,32,32,71,97,58,32,69,91,100,32,43,32,50,52,32,62,62,32,50,93,44,10,32,32,32,32,32,32,32,32,32,32,73,97,58,32,69,91,100,32,43,32,50,56,32,62,62,32,50,93,44,10,32,32,32,32,32,32,32,32,32,32,119,98,58,32,69,91,100,32,43,32,51,50,32,62,62,32,50,93,44,10,32,32,32,32,32,32,32,32,32,32,113,98,58,32,69,91,100,32,43,32,51,54,32,62,62,32,50,93,44,10,32,32,32,32,32,32,32,32,32,32,116,98,58,32,109,32,63,32,109,32,63,32,74,40,65,44,32,109,41,32,58,32,34,34,32,58,32,34,34,10,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,99,32,61,32,99,32,63,32,74,40,65,44,32,99,41,32,58,32,34,34,59,10,32,32,32,32,32,32,32,32,109,32,61,32,123,10,32,32,32,32,32,32,32,32,32,32,34,37,99,34,58,32,34,37,97,32,37,98,32,37,100,32,37,72,58,37,77,58,37,83,32,37,89,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,68,34,58,32,34,37,109,47,37,100,47,37,121,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,70,34,58,32,34,37,89,45,37,109,45,37,100,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,104,34,58,32,34,37,98,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,114,34,58,32,34,37,73,58,37,77,58,37,83,32,37,112,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,82,34,58,32,34,37,72,58,37,77,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,84,34,58,32,34,37,72,58,37,77,58,37,83,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,120,34,58,32,34,37,109,47,37,100,47,37,121,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,88,34,58,32,34,37,72,58,37,77,58,37,83,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,69,99,34,58,32,34,37,99,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,69,67,34,58,32,34,37,67,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,69,120,34,58,32,34,37,109,47,37,100,47,37,121,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,69,88,34,58,32,34,37,72,58,37,77,58,37,83,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,69,121,34,58,32,34,37,121,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,69,89,34,58,32,34,37,89,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,100,34,58,32,34,37,100,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,101,34,58,32,34,37,101,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,72,34,58,32,34,37,72,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,73,34,58,32,34,37,73,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,109,34,58,32,34,37,109,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,77,34,58,32,34,37,77,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,83,34,58,32,34,37,83,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,117,34,58,32,34,37,117,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,85,34,58,32,34,37,85,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,86,34,58,32,34,37,86,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,119,34,58,32,34,37,119,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,87,34,58,32,34,37,87,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,79,121,34,58,32,34,37,121,34,10,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,112,32,105,110,32,109,41,32,99,32,61,32,99,46,114,101,112,108,97,99,101,40,110,101,119,32,82,101,103,69,120,112,40,112,44,32,34,103,34,41,44,32,109,91,112,93,41,59,10,32,32,32,32,32,32,32,32,118,97,114,32,117,32,61,32,34,83,117,110,100,97,121,32,77,111,110,100,97,121,32,84,117,101,115,100,97,121,32,87,101,100,110,101,115,100,97,121,32,84,104,117,114,115,100,97,121,32,70,114,105,100,97,121,32,83,97,116,117,114,100,97,121,34,46,115,112,108,105,116,40,34,32,34,41,44,32,118,32,61,32,34,74,97,110,117,97,114,121,32,70,101,98,114,117,97,114,121,32,77,97,114,99,104,32,65,112,114,105,108,32,77,97,121,32,74,117,110,101,32,74,117,108,121,32,65,117,103,117,115,116,32,83,101,112,116,101,109,98,101,114,32,79,99,116,111,98,101,114,32,78,111,118,101,109,98,101,114,32,68,101,99,101,109,98,101,114,34,46,115,112,108,105,116,40,34,32,34,41,59,10,32,32,32,32,32,32,32,32,109,32,61,32,123,10,32,32,32,32,32,32,32,32,32,32,34,37,97,34,58,32,40,103,41,32,61,62,32,117,91,103,46,71,97,93,46,115,117,98,115,116,114,105,110,103,40,48,44,32,51,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,65,34,58,32,40,103,41,32,61,62,32,117,91,103,46,71,97,93,44,10,32,32,32,32,32,32,32,32,32,32,34,37,98,34,58,32,40,103,41,32,61,62,32,118,91,103,46,83,97,93,46,115,117,98,115,116,114,105,110,103,40,48,44,32,51,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,66,34,58,32,40,103,41,32,61,62,32,118,91,103,46,83,97,93,44,10,32,32,32,32,32,32,32,32,32,32,34,37,67,34,58,32,40,103,41,32,61,62,32,102,40,40,103,46,74,97,32,43,32,49,57,48,48,41,32,47,32,49,48,48,32,124,32,48,44,32,50,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,100,34,58,32,40,103,41,32,61,62,32,102,40,103,46,86,97,44,32,50,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,101,34,58,32,40,103,41,32,61,62,32,101,40,103,46,86,97,44,32,50,44,32,34,32,34,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,103,34,58,32,40,103,41,32,61,62,32,110,40,103,41,46,116,111,83,116,114,105,110,103,40,41,46,115,117,98,115,116,114,105,110,103,40,50,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,71,34,58,32,110,44,10,32,32,32,32,32,32,32,32,32,32,34,37,72,34,58,32,40,103,41,32,61,62,32,102,40,103,46,82,97,44,32,50,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,73,34,58,32,40,103,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,103,32,61,32,103,46,82,97,59,10,32,32,32,32,32,32,32,32,32,32,32,32,48,32,61,61,32,103,32,63,32,103,32,61,32,49,50,32,58,32,49,50,32,60,32,103,32,38,38,32,40,103,32,45,61,32,49,50,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,40,103,44,32,50,41,59,10,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,34,37,106,34,58,32,40,103,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,113,32,61,32,48,44,32,114,32,61,32,48,59,32,114,32,60,61,32,103,46,83,97,32,45,32,49,59,32,113,32,43,61,32,40,86,98,40,103,46,74,97,32,43,32,49,57,48,48,41,32,63,32,87,98,32,58,32,88,98,41,91,114,43,43,93,41,32,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,40,103,46,86,97,32,43,32,113,44,32,51,41,59,10,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,34,37,109,34,58,32,40,103,41,32,61,62,32,102,40,103,46,83,97,32,43,32,49,44,32,50,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,77,34,58,32,40,103,41,32,61,62,32,102,40,103,46,114,98,44,32,50,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,110,34,58,32,40,41,32,61,62,32,34,92,110,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,112,34,58,32,40,103,41,32,61,62,32,48,32,60,61,32,103,46,82,97,32,38,38,32,49,50,32,62,32,103,46,82,97,32,63,32,34,65,77,34,32,58,32,34,80,77,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,83,34,58,32,40,103,41,32,61,62,32,102,40,103,46,115,98,44,32,50,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,116,34,58,32,40,41,32,61,62,32,34,9,34,44,10,32,32,32,32,32,32,32,32,32,32,34,37,117,34,58,32,40,103,41,32,61,62,32,103,46,71,97,32,124,124,32,55,44,10,32,32,32,32,32,32,32,32,32,32,34,37,85,34,58,32,40,103,41,32,61,62,32,102,40,77,97,116,104,46,102,108,111,111,114,40,40,103,46,73,97,32,43,32,55,32,45,32,103,46,71,97,41,32,47,32,55,41,44,32,50,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,86,34,58,32,40,103,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,113,32,61,32,77,97,116,104,46,102,108,111,111,114,40,40,103,46,73,97,32,43,32,55,32,45,32,40,103,46,71,97,32,43,32,54,41,32,37,32,55,41,32,47,32,55,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,50,32,62,61,32,40,103,46,71,97,32,43,32,51,55,49,32,45,32,103,46,73,97,32,45,32,50,41,32,37,32,55,32,38,38,32,113,43,43,59,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,113,41,32,53,51,32,61,61,32,113,32,38,38,32,40,114,32,61,32,40,103,46,71,97,32,43,32,51,55,49,32,45,32,103,46,73,97,41,32,37,32,55,44,32,52,32,61,61,32,114,32,124,124,32,51,32,61,61,32,114,32,38,38,32,86,98,40,103,46,74,97,41,32,124,124,32,40,113,32,61,32,49,41,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,113,32,61,32,53,50,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,114,32,61,32,40,103,46,71,97,32,43,32,55,32,45,32,103,46,73,97,32,45,32,49,41,32,37,32,55,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,52,32,61,61,32,114,32,124,124,32,53,32,61,61,32,114,32,38,38,32,86,98,40,103,46,74,97,32,37,32,52,48,48,32,45,32,49,41,41,32,38,38,32,113,43,43,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,40,113,44,32,50,41,59,10,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,34,37,119,34,58,32,40,103,41,32,61,62,32,103,46,71,97,44,10,32,32,32,32,32,32,32,32,32,32,34,37,87,34,58,32,40,103,41,32,61,62,32,102,40,77,97,116,104,46,102,108,111,111,114,40,40,103,46,73,97,32,43,32,55,32,45,32,40,103,46,71,97,32,43,32,54,41,32,37,32,55,41,32,47,32,55,41,44,32,50,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,121,34,58,32,40,103,41,32,61,62,32,40,103,46,74,97,32,43,32,49,57,48,48,41,46,116,111,83,116,114,105,110,103,40,41,46,115,117,98,115,116,114,105,110,103,40,50,41,44,10,32,32,32,32,32,32,32,32,32,32,34,37,89,34,58,32,40,103,41,32,61,62,32,103,46,74,97,32,43,32,49,57,48,48,44,10,32,32,32,32,32,32,32,32,32,32,34,37,122,34,58,32,40,103,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,103,32,61,32,103,46,113,98,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,113,32,61,32,48,32,60,61,32,103,59,10,32,32,32,32,32,32,32,32,32,32,32,32,103,32,61,32,77,97,116,104,46,97,98,115,40,103,41,32,47,32,54,48,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,40,113,32,63,32,34,43,34,32,58,32,34,45,34,41,32,43,32,83,116,114,105,110,103,40,34,48,48,48,48,34,32,43,32,40,103,32,47,32,54,48,32,42,32,49,48,48,32,43,32,103,32,37,32,54,48,41,41,46,115,108,105,99,101,40,45,52,41,59,10,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,34,37,90,34,58,32,40,103,41,32,61,62,32,103,46,116,98,44,10,32,32,32,32,32,32,32,32,32,32,34,37,37,34,58,32,40,41,32,61,62,32,34,37,34,10,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,99,32,61,32,99,46,114,101,112,108,97,99,101,40,47,37,37,47,103,44,32,34,92,48,92,48,34,41,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,112,32,105,110,32,109,41,32,99,46,105,110,99,108,117,100,101,115,40,112,41,32,38,38,32,40,99,32,61,32,99,46,114,101,112,108,97,99,101,40,110,101,119,32,82,101,103,69,120,112,40,112,44,32,34,103,34,41,44,32,109,91,112,93,40,100,41,41,41,59,10,32,32,32,32,32,32,32,32,99,32,61,32,99,46,114,101,112,108,97,99,101,40,47,92,48,92,48,47,103,44,32,34,37,34,41,59,10,32,32,32,32,32,32,32,32,112,32,61,32,89,98,40,99,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,112,46,108,101,110,103,116,104,32,62,32,98,41,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,121,46,115,101,116,40,112,44,32,97,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,112,46,108,101,110,103,116,104,32,45,32,49,59,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,73,97,32,61,32,107,46,73,110,116,101,114,110,97,108,69,114,114,111,114,32,61,32,99,108,97,115,115,32,101,120,116,101,110,100,115,32,69,114,114,111,114,32,123,10,32,32,32,32,32,32,32,32,99,111,110,115,116,114,117,99,116,111,114,40,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,115,117,112,101,114,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,110,97,109,101,32,61,32,34,73,110,116,101,114,110,97,108,69,114,114,111,114,34,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,36,98,32,61,32,65,114,114,97,121,40,50,53,54,41,44,32,97,99,32,61,32,48,59,32,50,53,54,32,62,32,97,99,59,32,43,43,97,99,41,32,36,98,91,97,99,93,32,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,97,99,41,59,10,32,32,32,32,32,32,74,97,32,61,32,36,98,59,10,32,32,32,32,32,32,82,32,61,32,107,46,66,105,110,100,105,110,103,69,114,114,111,114,32,61,32,99,108,97,115,115,32,101,120,116,101,110,100,115,32,69,114,114,111,114,32,123,10,32,32,32,32,32,32,32,32,99,111,110,115,116,114,117,99,116,111,114,40,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,115,117,112,101,114,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,110,97,109,101,32,61,32,34,66,105,110,100,105,110,103,69,114,114,111,114,34,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,79,98,106,101,99,116,46,97,115,115,105,103,110,40,89,97,46,112,114,111,116,111,116,121,112,101,44,32,123,10,32,32,32,32,32,32,32,32,105,115,65,108,105,97,115,79,102,58,32,102,117,110,99,116,105,111,110,40,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,40,116,104,105,115,32,105,110,115,116,97,110,99,101,111,102,32,89,97,32,38,38,32,97,32,105,110,115,116,97,110,99,101,111,102,32,89,97,41,41,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,116,104,105,115,46,109,97,46,122,97,46,120,97,44,32,99,32,61,32,116,104,105,115,46,109,97,46,121,97,59,10,32,32,32,32,32,32,32,32,32,32,97,46,109,97,32,61,32,97,46,109,97,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,97,46,109,97,46,122,97,46,120,97,59,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,97,32,61,32,97,46,109,97,46,121,97,59,32,98,46,67,97,59,32,41,32,99,32,61,32,98,46,78,97,40,99,41,44,32,98,32,61,32,98,46,67,97,59,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,59,32,100,46,67,97,59,32,41,32,97,32,61,32,100,46,78,97,40,97,41,44,32,100,32,61,32,100,46,67,97,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,98,32,61,61,61,32,100,32,38,38,32,99,32,61,61,61,32,97,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,99,108,111,110,101,58,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,109,97,46,121,97,32,124,124,32,76,97,40,116,104,105,115,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,109,97,46,77,97,41,32,114,101,116,117,114,110,32,116,104,105,115,46,109,97,46,99,111,117,110,116,46,118,97,108,117,101,32,43,61,32,49,44,32,116,104,105,115,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,97,32,61,32,87,97,44,32,98,32,61,32,79,98,106,101,99,116,44,32,99,32,61,32,98,46,99,114,101,97,116,101,44,32,100,32,61,32,79,98,106,101,99,116,46,103,101,116,80,114,111,116,111,116,121,112,101,79,102,40,116,104,105,115,41,44,32,101,32,61,32,116,104,105,115,46,109,97,59,10,32,32,32,32,32,32,32,32,32,32,97,32,61,32,97,40,10,32,32,32,32,32,32,32,32,32,32,32,32,99,46,99,97,108,108,40,98,44,32,100,44,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,109,97,58,32,123,32,118,97,108,117,101,58,32,123,32,99,111,117,110,116,58,32,101,46,99,111,117,110,116,44,32,75,97,58,32,101,46,75,97,44,32,77,97,58,32,101,46,77,97,44,32,121,97,58,32,101,46,121,97,44,32,122,97,58,32,101,46,122,97,44,32,65,97,58,32,101,46,65,97,44,32,68,97,58,32,101,46,68,97,32,125,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,125,41,10,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,32,32,97,46,109,97,46,99,111,117,110,116,46,118,97,108,117,101,32,43,61,32,49,59,10,32,32,32,32,32,32,32,32,32,32,97,46,109,97,46,75,97,32,61,32,102,97,108,115,101,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,97,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,91,34,100,101,108,101,116,101,34,93,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,109,97,46,121,97,32,124,124,32,76,97,40,116,104,105,115,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,109,97,46,75,97,32,38,38,32,33,116,104,105,115,46,109,97,46,77,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,34,79,98,106,101,99,116,32,97,108,114,101,97,100,121,32,115,99,104,101,100,117,108,101,100,32,102,111,114,32,100,101,108,101,116,105,111,110,34,41,59,10,32,32,32,32,32,32,32,32,32,32,79,97,40,116,104,105,115,41,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,97,32,61,32,116,104,105,115,46,109,97,59,10,32,32,32,32,32,32,32,32,32,32,45,45,97,46,99,111,117,110,116,46,118,97,108,117,101,59,10,32,32,32,32,32,32,32,32,32,32,48,32,61,61,61,32,97,46,99,111,117,110,116,46,118,97,108,117,101,32,38,38,32,40,97,46,65,97,32,63,32,97,46,68,97,46,70,97,40,97,46,65,97,41,32,58,32,97,46,122,97,46,120,97,46,70,97,40,97,46,121,97,41,41,59,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,109,97,46,77,97,32,124,124,32,40,116,104,105,115,46,109,97,46,65,97,32,61,32,118,111,105,100,32,48,44,32,116,104,105,115,46,109,97,46,121,97,32,61,32,118,111,105,100,32,48,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,105,115,68,101,108,101,116,101,100,58,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,33,116,104,105,115,46,109,97,46,121,97,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,76,97,116,101,114,58,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,109,97,46,121,97,32,124,124,32,76,97,40,116,104,105,115,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,109,97,46,75,97,32,38,38,32,33,116,104,105,115,46,109,97,46,77,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,34,79,98,106,101,99,116,32,97,108,114,101,97,100,121,32,115,99,104,101,100,117,108,101,100,32,102,111,114,32,100,101,108,101,116,105,111,110,34,41,59,10,32,32,32,32,32,32,32,32,32,32,82,97,46,112,117,115,104,40,116,104,105,115,41,59,10,32,32,32,32,32,32,32,32,32,32,49,32,61,61,61,32,82,97,46,108,101,110,103,116,104,32,38,38,32,84,97,32,38,38,32,84,97,40,83,97,41,59,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,109,97,46,75,97,32,61,32,116,114,117,101,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,107,46,103,101,116,73,110,104,101,114,105,116,101,100,73,110,115,116,97,110,99,101,67,111,117,110,116,32,61,32,40,41,32,61,62,32,79,98,106,101,99,116,46,107,101,121,115,40,85,97,41,46,108,101,110,103,116,104,59,10,32,32,32,32,32,32,107,46,103,101,116,76,105,118,101,73,110,104,101,114,105,116,101,100,73,110,115,116,97,110,99,101,115,32,61,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,97,32,61,32,91,93,44,32,98,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,98,32,105,110,32,85,97,41,32,85,97,46,104,97,115,79,119,110,80,114,111,112,101,114,116,121,40,98,41,32,38,38,32,97,46,112,117,115,104,40,85,97,91,98,93,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,97,59,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,107,46,102,108,117,115,104,80,101,110,100,105,110,103,68,101,108,101,116,101,115,32,61,32,83,97,59,10,32,32,32,32,32,32,107,46,115,101,116,68,101,108,97,121,70,117,110,99,116,105,111,110,32,61,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,84,97,32,61,32,97,59,10,32,32,32,32,32,32,32,32,82,97,46,108,101,110,103,116,104,32,38,38,32,84,97,32,38,38,32,84,97,40,83,97,41,59,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,79,98,106,101,99,116,46,97,115,115,105,103,110,40,106,98,46,112,114,111,116,111,116,121,112,101,44,32,123,10,32,32,32,32,32,32,32,32,101,98,40,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,90,97,32,38,38,32,40,97,32,61,32,116,104,105,115,46,90,97,40,97,41,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,97,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,88,97,40,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,70,97,63,46,40,97,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,56,44,10,32,32,32,32,32,32,32,32,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,58,32,75,44,10,32,32,32,32,32,32,32,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,102,117,110,99,116,105,111,110,40,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,98,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,81,97,32,63,32,88,97,40,116,104,105,115,46,120,97,46,76,97,44,32,123,32,122,97,58,32,116,104,105,115,46,106,98,44,32,121,97,58,32,99,44,32,68,97,58,32,116,104,105,115,44,32,65,97,58,32,97,32,125,41,32,58,32,88,97,40,116,104,105,115,46,120,97,46,76,97,44,32,123,32,122,97,58,32,116,104,105,115,44,32,121,97,58,32,97,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,116,104,105,115,46,101,98,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,99,41,32,114,101,116,117,114,110,32,116,104,105,115,46,88,97,40,97,41,44,32,110,117,108,108,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,86,97,40,116,104,105,115,46,120,97,44,32,99,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,33,61,61,32,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,48,32,61,61,61,32,100,46,109,97,46,99,111,117,110,116,46,118,97,108,117,101,41,32,114,101,116,117,114,110,32,100,46,109,97,46,121,97,32,61,32,99,44,32,100,46,109,97,46,65,97,32,61,32,97,44,32,100,46,99,108,111,110,101,40,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,100,32,61,32,100,46,99,108,111,110,101,40,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,88,97,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,100,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,100,32,61,32,116,104,105,115,46,120,97,46,99,98,40,99,41,59,10,32,32,32,32,32,32,32,32,32,32,100,32,61,32,81,97,91,100,93,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,100,41,32,114,101,116,117,114,110,32,98,46,99,97,108,108,40,116,104,105,115,41,59,10,32,32,32,32,32,32,32,32,32,32,100,32,61,32,116,104,105,115,46,80,97,32,63,32,100,46,36,97,32,58,32,100,46,112,111,105,110,116,101,114,84,121,112,101,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,80,97,40,99,44,32,116,104,105,115,46,120,97,44,32,100,46,120,97,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,117,108,108,32,61,61,61,32,101,32,63,32,98,46,99,97,108,108,40,116,104,105,115,41,32,58,32,116,104,105,115,46,81,97,32,63,32,88,97,40,100,46,120,97,46,76,97,44,32,123,32,122,97,58,32,100,44,32,121,97,58,32,101,44,32,68,97,58,32,116,104,105,115,44,32,65,97,58,32,97,32,125,41,32,58,32,88,97,40,100,46,120,97,46,76,97,44,32,123,32,122,97,58,32,100,44,32,121,97,58,32,101,32,125,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,110,98,32,61,32,107,46,85,110,98,111,117,110,100,84,121,112,101,69,114,114,111,114,32,61,32,40,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,90,97,40,98,44,32,102,117,110,99,116,105,111,110,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,110,97,109,101,32,61,32,98,59,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,109,101,115,115,97,103,101,32,61,32,100,59,10,32,32,32,32,32,32,32,32,32,32,100,32,61,32,69,114,114,111,114,40,100,41,46,115,116,97,99,107,59,10,32,32,32,32,32,32,32,32,32,32,118,111,105,100,32,48,32,33,61,61,32,100,32,38,38,32,40,116,104,105,115,46,115,116,97,99,107,32,61,32,116,104,105,115,46,116,111,83,116,114,105,110,103,40,41,32,43,32,34,92,110,34,32,43,32,100,46,114,101,112,108,97,99,101,40,47,94,69,114,114,111,114,40,58,91,94,92,110,93,42,41,63,92,110,47,44,32,34,34,41,41,59,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,99,46,112,114,111,116,111,116,121,112,101,32,61,32,79,98,106,101,99,116,46,99,114,101,97,116,101,40,97,46,112,114,111,116,111,116,121,112,101,41,59,10,32,32,32,32,32,32,32,32,99,46,112,114,111,116,111,116,121,112,101,46,99,111,110,115,116,114,117,99,116,111,114,32,61,32,99,59,10,32,32,32,32,32,32,32,32,99,46,112,114,111,116,111,116,121,112,101,46,116,111,83,116,114,105,110,103,32,61,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,118,111,105,100,32,48,32,61,61,61,32,116,104,105,115,46,109,101,115,115,97,103,101,32,63,32,116,104,105,115,46,110,97,109,101,32,58,32,96,36,123,116,104,105,115,46,110,97,109,101,125,58,32,36,123,116,104,105,115,46,109,101,115,115,97,103,101,125,96,59,10,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,59,10,32,32,32,32,32,32,125,41,40,69,114,114,111,114,44,32,34,85,110,98,111,117,110,100,84,121,112,101,69,114,114,111,114,34,41,59,10,32,32,32,32,32,32,86,46,112,117,115,104,40,48,44,32,49,44,32,118,111,105,100,32,48,44,32,49,44,32,110,117,108,108,44,32,49,44,32,116,114,117,101,44,32,49,44,32,102,97,108,115,101,44,32,49,41,59,10,32,32,32,32,32,32,107,46,99,111,117,110,116,95,101,109,118,97,108,95,104,97,110,100,108,101,115,32,61,32,40,41,32,61,62,32,86,46,108,101,110,103,116,104,32,47,32,50,32,45,32,53,32,45,32,118,98,46,108,101,110,103,116,104,59,10,32,32,32,32,32,32,118,97,114,32,109,99,32,61,32,123,10,32,32,32,32,32,32,32,32,99,58,32,40,97,44,32,98,44,32,99,44,32,100,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,114,97,40,10,32,32,32,32,32,32,32,32,32,32,32,32,96,65,115,115,101,114,116,105,111,110,32,102,97,105,108,101,100,58,32,36,123,97,32,63,32,74,40,65,44,32,97,41,32,58,32,34,34,125,44,32,97,116,58,32,96,32,43,32,91,98,32,63,32,98,32,63,32,74,40,65,44,32,98,41,32,58,32,34,34,32,58,32,34,117,110,107,110,111,119,110,32,102,105,108,101,110,97,109,101,34,44,32,99,44,32,100,32,63,32,100,32,63,32,74,40,65,44,32,100,41,32,58,32,34,34,32,58,32,34,117,110,107,110,111,119,110,32,102,117,110,99,116,105,111,110,34,93,10,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,109,58,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,110,101,119,32,65,97,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,70,91,100,46,121,97,32,43,32,49,54,32,62,62,32,50,93,32,61,32,48,59,10,32,32,32,32,32,32,32,32,32,32,70,91,100,46,121,97,32,43,32,52,32,62,62,32,50,93,32,61,32,98,59,10,32,32,32,32,32,32,32,32,32,32,70,91,100,46,121,97,32,43,32,56,32,62,62,32,50,93,32,61,32,99,59,10,32,32,32,32,32,32,32,32,32,32,66,97,32,61,32,97,59,10,32,32,32,32,32,32,32,32,32,32,67,97,43,43,59,10,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,66,97,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,66,58,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,80,58,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,77,58,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,82,58,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,78,58,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,65,58,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,79,58,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,118,58,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,70,97,91,97,93,59,10,32,32,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,70,97,91,97,93,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,98,46,85,97,44,32,100,32,61,32,98,46,70,97,44,32,101,32,61,32,98,46,89,97,44,32,102,32,61,32,101,46,109,97,112,40,40,108,41,32,61,62,32,108,46,104,98,41,46,99,111,110,99,97,116,40,101,46,109,97,112,40,40,108,41,32,61,62,32,108,46,110,98,41,41,59,10,32,32,32,32,32,32,32,32,32,32,80,40,91,97,93,44,32,102,44,32,40,108,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,104,32,61,32,123,125,59,10,32,32,32,32,32,32,32,32,32,32,32,32,101,46,102,111,114,69,97,99,104,40,40,110,44,32,109,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,112,32,61,32,108,91,109,93,44,32,117,32,61,32,110,46,102,98,44,32,118,32,61,32,110,46,103,98,44,32,103,32,61,32,108,91,109,32,43,32,101,46,108,101,110,103,116,104,93,44,32,113,32,61,32,110,46,109,98,44,32,114,32,61,32,110,46,111,98,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,104,91,110,46,98,98,93,32,61,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,97,100,58,32,40,122,41,32,61,62,32,112,46,102,114,111,109,87,105,114,101,84,121,112,101,40,117,40,118,44,32,122,41,41,44,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,119,114,105,116,101,58,32,40,122,44,32,78,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,68,32,61,32,91,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,113,40,114,44,32,122,44,32,103,46,116,111,87,105,114,101,84,121,112,101,40,68,44,32,78,41,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,71,97,40,68,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,91,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,110,97,109,101,58,32,98,46,110,97,109,101,44,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,40,110,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,109,32,61,32,123,125,44,32,112,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,112,32,105,110,32,104,41,32,109,91,112,93,32,61,32,104,91,112,93,46,114,101,97,100,40,110,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,100,40,110,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,109,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,111,87,105,114,101,84,121,112,101,58,32,40,110,44,32,109,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,112,32,105,110,32,104,41,32,105,102,32,40,33,40,112,32,105,110,32,109,41,41,32,116,104,114,111,119,32,110,101,119,32,84,121,112,101,69,114,114,111,114,40,96,77,105,115,115,105,110,103,32,102,105,101,108,100,58,32,34,36,123,112,125,34,96,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,117,32,61,32,99,40,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,112,32,105,110,32,104,41,32,104,91,112,93,46,119,114,105,116,101,40,117,44,32,109,91,112,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,110,117,108,108,32,33,61,61,32,110,32,38,38,32,110,46,112,117,115,104,40,100,44,32,117,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,117,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,56,44,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,58,32,75,44,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,69,97,58,32,100,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,93,59,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,73,58,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,89,58,32,40,97,44,32,98,44,32,99,44,32,100,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,81,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,79,40,97,44,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,110,97,109,101,58,32,98,44,10,32,32,32,32,32,32,32,32,32,32,32,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,102,117,110,99,116,105,111,110,40,101,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,33,33,101,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,116,111,87,105,114,101,84,121,112,101,58,32,102,117,110,99,116,105,111,110,40,101,44,32,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,32,63,32,99,32,58,32,100,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,56,44,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,58,32,102,117,110,99,116,105,111,110,40,101,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,102,114,111,109,87,105,114,101,84,121,112,101,40,65,91,101,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,69,97,58,32,110,117,108,108,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,114,58,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,44,32,104,44,32,110,44,32,109,44,32,112,44,32,117,44,32,118,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,112,32,61,32,81,40,112,41,59,10,32,32,32,32,32,32,32,32,32,32,102,32,61,32,84,40,101,44,32,102,41,59,10,32,32,32,32,32,32,32,32,32,32,104,32,38,38,32,40,104,32,61,32,84,40,108,44,32,104,41,41,59,10,32,32,32,32,32,32,32,32,32,32,109,32,38,38,32,40,109,32,61,32,84,40,110,44,32,109,41,41,59,10,32,32,32,32,32,32,32,32,32,32,118,32,61,32,84,40,117,44,32,118,41,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,103,32,61,32,98,98,40,112,41,59,10,32,32,32,32,32,32,32,32,32,32,97,98,40,103,44,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,113,98,40,96,67,97,110,110,111,116,32,99,111,110,115,116,114,117,99,116,32,36,123,112,125,32,100,117,101,32,116,111,32,117,110,98,111,117,110,100,32,116,121,112,101,115,96,44,32,91,100,93,41,59,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,80,40,91,97,44,32,98,44,32,99,93,44,32,100,32,63,32,91,100,93,32,58,32,91,93,44,32,40,113,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,113,32,61,32,113,91,48,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,114,32,61,32,113,46,120,97,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,122,32,61,32,114,46,76,97,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,122,32,61,32,89,97,46,112,114,111,116,111,116,121,112,101,59,10,32,32,32,32,32,32,32,32,32,32,32,32,113,32,61,32,90,97,40,112,44,32,102,117,110,99,116,105,111,110,40,46,46,46,78,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,79,98,106,101,99,116,46,103,101,116,80,114,111,116,111,116,121,112,101,79,102,40,116,104,105,115,41,32,33,61,61,32,78,41,32,116,104,114,111,119,32,110,101,119,32,82,40,34,85,115,101,32,39,110,101,119,39,32,116,111,32,99,111,110,115,116,114,117,99,116,32,34,32,43,32,112,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,61,61,61,32,68,46,72,97,41,32,116,104,114,111,119,32,110,101,119,32,82,40,112,32,43,32,34,32,104,97,115,32,110,111,32,97,99,99,101,115,115,105,98,108,101,32,99,111,110,115,116,114,117,99,116,111,114,34,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,120,98,32,61,32,68,46,72,97,91,78,97,46,108,101,110,103,116,104,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,61,61,61,32,120,98,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,84,114,105,101,100,32,116,111,32,105,110,118,111,107,101,32,99,116,111,114,32,111,102,32,36,123,112,125,32,119,105,116,104,32,105,110,118,97,108,105,100,32,110,117,109,98,101,114,32,111,102,32,112,97,114,97,109,101,116,101,114,115,32,40,36,123,78,97,46,108,101,110,103,116,104,125,41,32,45,32,101,120,112,101,99,116,101,100,32,40,36,123,79,98,106,101,99,116,46,107,101,121,115,40,68,46,72,97,41,46,116,111,83,116,114,105,110,103,40,41,125,41,32,112,97,114,97,109,101,116,101,114,115,32,105,110,115,116,101,97,100,33,96,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,120,98,46,97,112,112,108,121,40,116,104,105,115,44,32,78,97,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,78,32,61,32,79,98,106,101,99,116,46,99,114,101,97,116,101,40,122,44,32,123,32,99,111,110,115,116,114,117,99,116,111,114,58,32,123,32,118,97,108,117,101,58,32,113,32,125,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,113,46,112,114,111,116,111,116,121,112,101,32,61,32,78,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,68,32,61,32,110,101,119,32,99,98,40,112,44,32,113,44,32,78,44,32,118,44,32,114,44,32,102,44,32,104,44,32,109,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,68,46,67,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,105,97,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,105,97,32,61,32,68,46,67,97,41,46,87,97,32,63,63,32,40,105,97,46,87,97,32,61,32,91,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,68,46,67,97,46,87,97,46,112,117,115,104,40,68,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,114,32,61,32,110,101,119,32,106,98,40,112,44,32,68,44,32,116,114,117,101,44,32,102,97,108,115,101,44,32,102,97,108,115,101,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,105,97,32,61,32,110,101,119,32,106,98,40,112,32,43,32,34,42,34,44,32,68,44,32,102,97,108,115,101,44,32,102,97,108,115,101,44,32,102,97,108,115,101,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,122,32,61,32,110,101,119,32,106,98,40,112,32,43,32,34,32,99,111,110,115,116,42,34,44,32,68,44,32,102,97,108,115,101,44,32,116,114,117,101,44,32,102,97,108,115,101,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,81,97,91,97,93,32,61,32,123,32,112,111,105,110,116,101,114,84,121,112,101,58,32,105,97,44,32,36,97,58,32,122,32,125,59,10,32,32,32,32,32,32,32,32,32,32,32,32,107,98,40,103,44,32,113,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,91,114,44,32,105,97,44,32,122,93,59,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,113,58,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,114,98,40,98,44,32,99,41,59,10,32,32,32,32,32,32,32,32,32,32,101,32,61,32,84,40,100,44,32,101,41,59,10,32,32,32,32,32,32,32,32,32,32,80,40,91,93,44,32,91,97,93,44,32,40,104,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,104,32,61,32,104,91,48,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,110,32,61,32,96,99,111,110,115,116,114,117,99,116,111,114,32,36,123,104,46,110,97,109,101,125,96,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,111,105,100,32,48,32,61,61,61,32,104,46,120,97,46,72,97,32,38,38,32,40,104,46,120,97,46,72,97,32,61,32,91,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,33,61,61,32,104,46,120,97,46,72,97,91,98,32,45,32,49,93,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,96,67,97,110,110,111,116,32,114,101,103,105,115,116,101,114,32,109,117,108,116,105,112,108,101,32,99,111,110,115,116,114,117,99,116,111,114,115,32,119,105,116,104,32,105,100,101,110,116,105,99,97,108,32,110,117,109,98,101,114,32,111,102,32,112,97,114,97,109,101,116,101,114,115,32,40,36,123,98,32,45,32,49,125,41,32,102,111,114,32,99,108,97,115,115,32,39,36,123,104,46,110,97,109,101,125,39,33,32,79,118,101,114,108,111,97,100,32,114,101,115,111,108,117,116,105,111,110,32,105,115,32,99,117,114,114,101,110,116,108,121,32,111,110,108,121,32,112,101,114,102,111,114,109,101,100,32,117,115,105,110,103,32,116,104,101,32,112,97,114,97,109,101,116,101,114,32,99,111,117,110,116,44,32,110,111,116,32,97,99,116,117,97,108,32,116,121,112,101,32,105,110,102,111,33,96,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,104,46,120,97,46,72,97,91,98,32,45,32,49,93,32,61,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,113,98,40,96,67,97,110,110,111,116,32,99,111,110,115,116,114,117,99,116,32,36,123,104,46,110,97,109,101,125,32,100,117,101,32,116,111,32,117,110,98,111,117,110,100,32,116,121,112,101,115,96,44,32,108,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,32,32,32,32,80,40,91,93,44,32,108,44,32,40,109,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,109,46,115,112,108,105,99,101,40,49,44,32,48,44,32,110,117,108,108,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,104,46,120,97,46,72,97,91,98,32,45,32,49,93,32,61,32,116,98,40,110,44,32,109,44,32,110,117,108,108,44,32,101,44,32,102,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,91,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,91,93,59,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,102,58,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,44,32,104,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,110,32,61,32,114,98,40,99,44,32,100,41,59,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,81,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,117,98,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,102,32,61,32,84,40,101,44,32,102,41,59,10,32,32,32,32,32,32,32,32,32,32,80,40,91,93,44,32,91,97,93,44,32,40,109,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,112,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,113,98,40,96,67,97,110,110,111,116,32,99,97,108,108,32,36,123,117,125,32,100,117,101,32,116,111,32,117,110,98,111,117,110,100,32,116,121,112,101,115,96,44,32,110,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,109,32,61,32,109,91,48,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,117,32,61,32,96,36,123,109,46,110,97,109,101,125,46,36,123,98,125,96,59,10,32,32,32,32,32,32,32,32,32,32,32,32,98,46,115,116,97,114,116,115,87,105,116,104,40,34,64,64,34,41,32,38,38,32,40,98,32,61,32,83,121,109,98,111,108,91,98,46,115,117,98,115,116,114,105,110,103,40,50,41,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,104,32,38,38,32,109,46,120,97,46,107,98,46,112,117,115,104,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,118,32,61,32,109,46,120,97,46,76,97,44,32,103,32,61,32,118,91,98,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,111,105,100,32,48,32,61,61,61,32,103,32,124,124,32,118,111,105,100,32,48,32,61,61,61,32,103,46,66,97,32,38,38,32,103,46,99,108,97,115,115,78,97,109,101,32,33,61,61,32,109,46,110,97,109,101,32,38,38,32,103,46,79,97,32,61,61,61,32,99,32,45,32,50,32,63,32,40,112,46,79,97,32,61,32,99,32,45,32,50,44,32,112,46,99,108,97,115,115,78,97,109,101,32,61,32,109,46,110,97,109,101,44,32,118,91,98,93,32,61,32,112,41,32,58,32,40,36,97,40,118,44,32,98,44,32,117,41,44,32,118,91,98,93,46,66,97,91,99,32,45,32,50,93,32,61,32,112,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,80,40,91,93,44,32,110,44,32,40,113,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,113,32,61,32,116,98,40,117,44,32,113,44,32,109,44,32,102,44,32,108,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,111,105,100,32,48,32,61,61,61,32,118,91,98,93,46,66,97,32,63,32,40,113,46,79,97,32,61,32,99,32,45,32,50,44,32,118,91,98,93,32,61,32,113,41,32,58,32,118,91,98,93,46,66,97,91,99,32,45,32,50,93,32,61,32,113,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,91,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,91,93,59,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,88,58,32,40,97,41,32,61,62,32,79,40,97,44,32,122,98,41,44,10,32,32,32,32,32,32,32,32,120,58,32,40,97,44,32,98,44,32,99,44,32,100,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,101,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,81,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,101,46,118,97,108,117,101,115,32,61,32,123,125,59,10,32,32,32,32,32,32,32,32,32,32,79,40,97,44,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,110,97,109,101,58,32,98,44,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,114,117,99,116,111,114,58,32,101,44,10,32,32,32,32,32,32,32,32,32,32,32,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,102,117,110,99,116,105,111,110,40,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,99,111,110,115,116,114,117,99,116,111,114,46,118,97,108,117,101,115,91,102,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,116,111,87,105,114,101,84,121,112,101,58,32,40,102,44,32,108,41,32,61,62,32,108,46,118,97,108,117,101,44,10,32,32,32,32,32,32,32,32,32,32,32,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,56,44,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,58,32,65,98,40,98,44,32,99,44,32,100,41,44,10,32,32,32,32,32,32,32,32,32,32,32,32,69,97,58,32,110,117,108,108,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,97,98,40,98,44,32,101,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,107,58,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,66,98,40,97,44,32,34,101,110,117,109,34,41,59,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,81,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,97,32,61,32,100,46,99,111,110,115,116,114,117,99,116,111,114,59,10,32,32,32,32,32,32,32,32,32,32,100,32,61,32,79,98,106,101,99,116,46,99,114,101,97,116,101,40,100,46,99,111,110,115,116,114,117,99,116,111,114,46,112,114,111,116,111,116,121,112,101,44,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,108,117,101,58,32,123,32,118,97,108,117,101,58,32,99,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,114,117,99,116,111,114,58,32,123,32,118,97,108,117,101,58,32,90,97,40,96,36,123,100,46,110,97,109,101,125,95,36,123,98,125,96,44,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,125,41,32,125,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,97,46,118,97,108,117,101,115,91,99,93,32,61,32,100,59,10,32,32,32,32,32,32,32,32,32,32,97,91,98,93,32,61,32,100,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,67,58,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,81,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,79,40,97,44,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,110,97,109,101,58,32,98,44,10,32,32,32,32,32,32,32,32,32,32,32,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,40,100,41,32,61,62,32,100,44,10,32,32,32,32,32,32,32,32,32,32,32,32,116,111,87,105,114,101,84,121,112,101,58,32,40,100,44,32,101,41,32,61,62,32,101,44,10,32,32,32,32,32,32,32,32,32,32,32,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,56,44,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,58,32,67,98,40,98,44,32,99,41,44,10,32,32,32,32,32,32,32,32,32,32,32,32,69,97,58,32,110,117,108,108,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,69,58,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,114,98,40,98,44,32,99,41,59,10,32,32,32,32,32,32,32,32,32,32,97,32,61,32,81,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,97,32,61,32,117,98,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,101,32,61,32,84,40,100,44,32,101,41,59,10,32,32,32,32,32,32,32,32,32,32,97,98,40,10,32,32,32,32,32,32,32,32,32,32,32,32,97,44,10,32,32,32,32,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,113,98,40,96,67,97,110,110,111,116,32,99,97,108,108,32,36,123,97,125,32,100,117,101,32,116,111,32,117,110,98,111,117,110,100,32,116,121,112,101,115,96,44,32,108,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,98,32,45,32,49,10,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,32,32,80,40,91,93,44,32,108,44,32,40,104,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,107,98,40,97,44,32,116,98,40,97,44,32,91,104,91,48,93,44,32,110,117,108,108,93,46,99,111,110,99,97,116,40,104,46,115,108,105,99,101,40,49,41,41,44,32,110,117,108,108,44,32,101,44,32,102,41,44,32,98,32,45,32,49,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,91,93,59,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,108,58,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,81,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,45,49,32,61,61,61,32,101,32,38,38,32,40,101,32,61,32,52,50,57,52,57,54,55,50,57,53,41,59,10,32,32,32,32,32,32,32,32,32,32,101,32,61,32,40,104,41,32,61,62,32,104,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,48,32,61,61,61,32,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,51,50,32,45,32,56,32,42,32,99,59,10,32,32,32,32,32,32,32,32,32,32,32,32,101,32,61,32,40,104,41,32,61,62,32,104,32,60,60,32,102,32,62,62,62,32,102,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,98,46,105,110,99,108,117,100,101,115,40,34,117,110,115,105,103,110,101,100,34,41,32,63,32,102,117,110,99,116,105,111,110,40,104,44,32,110,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,32,62,62,62,32,48,59,10,32,32,32,32,32,32,32,32,32,32,125,32,58,32,102,117,110,99,116,105,111,110,40,104,44,32,110,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,59,10,32,32,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,32,32,32,32,79,40,97,44,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,110,97,109,101,58,32,98,44,10,32,32,32,32,32,32,32,32,32,32,32,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,101,44,10,32,32,32,32,32,32,32,32,32,32,32,32,116,111,87,105,114,101,84,121,112,101,58,32,108,44,10,32,32,32,32,32,32,32,32,32,32,32,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,56,44,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,58,32,68,98,40,98,44,32,99,44,32,48,32,33,61,61,32,100,41,44,10,32,32,32,32,32,32,32,32,32,32,32,32,69,97,58,32,110,117,108,108,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,103,58,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,100,40,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,101,40,121,46,98,117,102,102,101,114,44,32,70,91,102,32,43,32,52,32,62,62,32,50,93,44,32,70,91,102,32,62,62,32,50,93,41,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,91,73,110,116,56,65,114,114,97,121,44,32,85,105,110,116,56,65,114,114,97,121,44,32,73,110,116,49,54,65,114,114,97,121,44,32,85,105,110,116,49,54,65,114,114,97,121,44,32,73,110,116,51,50,65,114,114,97,121,44,32,85,105,110,116,51,50,65,114,114,97,121,44,32,70,108,111,97,116,51,50,65,114,114,97,121,44,32,70,108,111,97,116,54,52,65,114,114,97,121,93,91,98,93,59,10,32,32,32,32,32,32,32,32,32,32,99,32,61,32,81,40,99,41,59,10,32,32,32,32,32,32,32,32,32,32,79,40,97,44,32,123,32,110,97,109,101,58,32,99,44,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,100,44,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,56,44,32,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,58,32,100,32,125,44,32,123,32,105,98,58,32,116,114,117,101,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,119,58,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,79,40,97,44,32,122,98,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,99,97,58,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,44,32,104,44,32,110,44,32,109,44,32,112,44,32,117,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,99,32,61,32,81,40,99,41,59,10,32,32,32,32,32,32,32,32,32,32,102,32,61,32,84,40,101,44,32,102,41,59,10,32,32,32,32,32,32,32,32,32,32,104,32,61,32,84,40,108,44,32,104,41,59,10,32,32,32,32,32,32,32,32,32,32,109,32,61,32,84,40,110,44,32,109,41,59,10,32,32,32,32,32,32,32,32,32,32,117,32,61,32,84,40,112,44,32,117,41,59,10,32,32,32,32,32,32,32,32,32,32,80,40,91,97,93,44,32,91,98,93,44,32,40,118,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,32,61,32,118,91,48,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,91,110,101,119,32,106,98,40,99,44,32,118,46,120,97,44,32,102,97,108,115,101,44,32,102,97,108,115,101,44,32,116,114,117,101,44,32,118,44,32,100,44,32,102,44,32,104,44,32,109,44,32,117,41,93,59,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,68,58,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,81,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,34,115,116,100,58,58,115,116,114,105,110,103,34,32,61,61,61,32,98,59,10,32,32,32,32,32,32,32,32,32,32,79,40,97,44,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,110,97,109,101,58,32,98,44,10,32,32,32,32,32,32,32,32,32,32,32,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,102,117,110,99,116,105,111,110,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,70,91,100,32,62,62,32,50,93,44,32,102,32,61,32,100,32,43,32,52,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,99,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,108,32,61,32,102,44,32,104,32,61,32,48,59,32,104,32,60,61,32,101,59,32,43,43,104,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,110,32,61,32,102,32,43,32,104,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,104,32,61,61,32,101,32,124,124,32,48,32,61,61,32,65,91,110,93,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108,32,61,32,108,32,63,32,74,40,65,44,32,108,44,32,110,32,45,32,108,41,32,58,32,34,34,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,118,111,105,100,32,48,32,61,61,61,32,109,41,32,118,97,114,32,109,32,61,32,108,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,109,32,43,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,48,41,44,32,109,32,43,61,32,108,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108,32,61,32,110,32,43,32,49,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,109,32,61,32,65,114,114,97,121,40,101,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,104,32,61,32,48,59,32,104,32,60,32,101,59,32,43,43,104,41,32,109,91,104,93,32,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,65,91,102,32,43,32,104,93,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,109,32,61,32,109,46,106,111,105,110,40,34,34,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,85,40,100,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,109,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,116,111,87,105,114,101,84,121,112,101,58,32,102,117,110,99,116,105,111,110,40,100,44,32,101,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,32,105,110,115,116,97,110,99,101,111,102,32,65,114,114,97,121,66,117,102,102,101,114,32,38,38,32,40,101,32,61,32,110,101,119,32,85,105,110,116,56,65,114,114,97,121,40,101,41,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,34,115,116,114,105,110,103,34,32,61,61,32,116,121,112,101,111,102,32,101,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,40,102,32,124,124,32,101,32,105,110,115,116,97,110,99,101,111,102,32,85,105,110,116,56,65,114,114,97,121,32,124,124,32,101,32,105,110,115,116,97,110,99,101,111,102,32,85,105,110,116,56,67,108,97,109,112,101,100,65,114,114,97,121,32,124,124,32,101,32,105,110,115,116,97,110,99,101,111,102,32,73,110,116,56,65,114,114,97,121,41,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,82,40,34,67,97,110,110,111,116,32,112,97,115,115,32,110,111,110,45,115,116,114,105,110,103,32,116,111,32,115,116,100,58,58,115,116,114,105,110,103,34,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,99,32,38,38,32,102,32,63,32,68,97,40,101,41,32,58,32,101,46,108,101,110,103,116,104,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,104,32,61,32,98,99,40,52,32,43,32,108,32,43,32,49,41,44,32,110,32,61,32,104,32,43,32,52,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,91,104,32,62,62,32,50,93,32,61,32,108,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,99,32,38,38,32,102,41,32,69,97,40,101,44,32,65,44,32,110,44,32,108,32,43,32,49,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,102,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,102,32,61,32,48,59,32,102,32,60,32,108,59,32,43,43,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,109,32,61,32,101,46,99,104,97,114,67,111,100,101,65,116,40,102,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,50,53,53,32,60,32,109,41,32,116,104,114,111,119,32,85,40,110,41,44,32,110,101,119,32,82,40,34,83,116,114,105,110,103,32,104,97,115,32,85,84,70,45,49,54,32,99,111,100,101,32,117,110,105,116,115,32,116,104,97,116,32,100,111,32,110,111,116,32,102,105,116,32,105,110,32,56,32,98,105,116,115,34,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,65,91,110,32,43,32,102,93,32,61,32,109,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,102,111,114,32,40,102,32,61,32,48,59,32,102,32,60,32,108,59,32,43,43,102,41,32,65,91,110,32,43,32,102,93,32,61,32,101,91,102,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,110,117,108,108,32,33,61,61,32,100,32,38,38,32,100,46,112,117,115,104,40,85,44,32,104,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,104,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,56,44,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,58,32,75,44,10,32,32,32,32,32,32,32,32,32,32,32,32,69,97,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,85,40,100,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,117,58,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,99,32,61,32,81,40,99,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,50,32,61,61,61,32,98,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,70,98,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,71,98,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,72,98,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,40,104,41,32,61,62,32,67,91,104,32,62,62,32,49,93,59,10,32,32,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,52,32,61,61,61,32,98,32,38,38,32,40,100,32,61,32,73,98,44,32,101,32,61,32,74,98,44,32,102,32,61,32,75,98,44,32,108,32,61,32,40,104,41,32,61,62,32,70,91,104,32,62,62,32,50,93,41,59,10,32,32,32,32,32,32,32,32,32,32,79,40,97,44,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,110,97,109,101,58,32,99,44,10,32,32,32,32,32,32,32,32,32,32,32,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,40,104,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,110,32,61,32,70,91,104,32,62,62,32,50,93,44,32,109,44,32,112,32,61,32,104,32,43,32,52,44,32,117,32,61,32,48,59,32,117,32,60,61,32,110,59,32,43,43,117,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,118,32,61,32,104,32,43,32,52,32,43,32,117,32,42,32,98,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,117,32,61,61,32,110,32,124,124,32,48,32,61,61,32,108,40,118,41,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,32,61,32,100,40,112,44,32,118,32,45,32,112,41,44,32,118,111,105,100,32,48,32,61,61,61,32,109,32,63,32,109,32,61,32,112,32,58,32,40,109,32,43,61,32,83,116,114,105,110,103,46,102,114,111,109,67,104,97,114,67,111,100,101,40,48,41,44,32,109,32,43,61,32,112,41,44,32,112,32,61,32,118,32,43,32,98,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,85,40,104,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,109,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,116,111,87,105,114,101,84,121,112,101,58,32,40,104,44,32,110,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,34,115,116,114,105,110,103,34,32,33,61,32,116,121,112,101,111,102,32,110,41,32,116,104,114,111,119,32,110,101,119,32,82,40,96,67,97,110,110,111,116,32,112,97,115,115,32,110,111,110,45,115,116,114,105,110,103,32,116,111,32,67,43,43,32,115,116,114,105,110,103,32,116,121,112,101,32,36,123,99,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,109,32,61,32,102,40,110,41,44,32,112,32,61,32,98,99,40,52,32,43,32,109,32,43,32,98,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,91,112,32,62,62,32,50,93,32,61,32,109,32,47,32,98,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,40,110,44,32,112,32,43,32,52,44,32,109,32,43,32,98,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,110,117,108,108,32,33,61,61,32,104,32,38,38,32,104,46,112,117,115,104,40,85,44,32,112,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,112,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,32,32,32,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,56,44,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,58,32,75,44,10,32,32,32,32,32,32,32,32,32,32,32,32,69,97,40,104,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,85,40,104,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,115,58,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,70,97,91,97,93,32,61,32,123,32,110,97,109,101,58,32,81,40,98,41,44,32,85,97,58,32,84,40,99,44,32,100,41,44,32,70,97,58,32,84,40,101,44,32,102,41,44,32,89,97,58,32,91,93,32,125,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,106,58,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,44,32,104,44,32,110,44,32,109,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,70,97,91,97,93,46,89,97,46,112,117,115,104,40,123,32,98,98,58,32,81,40,98,41,44,32,104,98,58,32,99,44,32,102,98,58,32,84,40,100,44,32,101,41,44,32,103,98,58,32,102,44,32,110,98,58,32,108,44,32,109,98,58,32,84,40,104,44,32,110,41,44,32,111,98,58,32,109,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,90,58,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,81,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,79,40,97,44,32,123,32,117,98,58,32,116,114,117,101,44,32,110,97,109,101,58,32,98,44,32,97,114,103,80,97,99,107,65,100,118,97,110,99,101,58,32,48,44,32,102,114,111,109,87,105,114,101,84,121,112,101,58,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,125,44,32,116,111,87,105,114,101,84,121,112,101,58,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,125,32,125,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,74,58,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,73,110,102,105,110,105,116,121,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,97,97,58,32,40,97,44,32,98,44,32,99,44,32,100,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,97,32,61,32,76,98,91,97,93,59,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,121,98,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,97,40,110,117,108,108,44,32,98,44,32,99,44,32,100,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,70,58,32,119,98,44,10,32,32,32,32,32,32,32,32,36,58,32,40,97,44,32,98,44,32,99,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,78,98,40,97,44,32,98,41,44,32,101,32,61,32,100,46,115,104,105,102,116,40,41,59,10,32,32,32,32,32,32,32,32,32,32,97,45,45,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,65,114,114,97,121,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,98,32,61,32,96,109,101,116,104,111,100,67,97,108,108,101,114,60,40,36,123,100,46,109,97,112,40,40,108,41,32,61,62,32,108,46,110,97,109,101,41,46,106,111,105,110,40,34,44,32,34,41,125,41,32,61,62,32,36,123,101,46,110,97,109,101,125,62,96,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,77,98,40,10,32,32,32,32,32,32,32,32,32,32,32,32,90,97,40,98,44,32,40,108,44,32,104,44,32,110,44,32,109,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,112,32,61,32,48,44,32,117,32,61,32,48,59,32,117,32,60,32,97,59,32,43,43,117,41,32,102,91,117,93,32,61,32,100,91,117,93,46,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,40,109,32,43,32,112,41,44,32,112,32,43,61,32,100,91,117,93,46,97,114,103,80,97,99,107,65,100,118,97,110,99,101,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,104,32,61,32,49,32,61,61,61,32,99,32,63,32,79,98,40,104,44,32,102,41,32,58,32,104,46,97,112,112,108,121,40,108,44,32,102,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108,32,61,32,91,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,104,32,61,32,101,46,116,111,87,105,114,101,84,121,112,101,40,108,44,32,104,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108,46,108,101,110,103,116,104,32,38,38,32,40,70,91,110,32,62,62,32,50,93,32,61,32,104,98,40,108,41,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,104,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,41,10,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,98,97,58,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,57,32,60,32,97,32,38,38,32,40,86,91,97,32,43,32,49,93,32,43,61,32,49,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,95,58,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,121,98,40,97,41,59,10,32,32,32,32,32,32,32,32,32,32,71,97,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,119,98,40,97,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,111,58,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,97,32,61,32,66,98,40,97,44,32,34,95,101,109,118,97,108,95,116,97,107,101,95,118,97,108,117,101,34,41,59,10,32,32,32,32,32,32,32,32,32,32,97,32,61,32,97,46,114,101,97,100,86,97,108,117,101,70,114,111,109,80,111,105,110,116,101,114,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,104,98,40,97,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,87,58,32,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,114,97,40,34,34,41,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,86,58,32,40,41,32,61,62,32,112,101,114,102,111,114,109,97,110,99,101,46,110,111,119,40,41,44,10,32,32,32,32,32,32,32,32,76,58,32,40,97,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,65,46,108,101,110,103,116,104,59,10,32,32,32,32,32,32,32,32,32,32,97,32,62,62,62,61,32,48,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,50,49,52,55,52,56,51,54,52,56,32,60,32,97,41,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,99,32,61,32,49,59,32,52,32,62,61,32,99,59,32,99,32,42,61,32,50,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,98,32,42,32,40,49,32,43,32,48,46,50,32,47,32,99,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,100,32,61,32,77,97,116,104,46,109,105,110,40,100,44,32,97,32,43,32,49,48,48,54,54,51,50,57,54,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,77,97,116,104,59,10,32,32,32,32,32,32,32,32,32,32,32,32,100,32,61,32,77,97,116,104,46,109,97,120,40,97,44,32,100,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,97,58,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,32,61,32,40,101,46,109,105,110,46,99,97,108,108,40,101,44,32,50,49,52,55,52,56,51,54,52,56,44,32,100,32,43,32,40,54,53,53,51,54,32,45,32,100,32,37,32,54,53,53,51,54,41,32,37,32,54,53,53,51,54,41,32,45,32,102,97,46,98,117,102,102,101,114,46,98,121,116,101,76,101,110,103,116,104,32,43,32,54,53,53,51,53,41,32,47,32,54,53,53,51,54,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,97,46,103,114,111,119,40,101,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108,97,40,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,49,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,32,97,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,108,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,32,61,32,118,111,105,100,32,48,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,102,41,32,114,101,116,117,114,110,32,116,114,117,101,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,83,58,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,48,59,10,32,32,32,32,32,32,32,32,32,32,82,98,40,41,46,102,111,114,69,97,99,104,40,40,100,44,32,101,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,98,32,43,32,99,59,10,32,32,32,32,32,32,32,32,32,32,32,32,101,32,61,32,70,91,97,32,43,32,52,32,42,32,101,32,62,62,32,50,93,32,61,32,102,59,10,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,102,32,61,32,48,59,32,102,32,60,32,100,46,108,101,110,103,116,104,59,32,43,43,102,41,32,121,91,101,43,43,93,32,61,32,100,46,99,104,97,114,67,111,100,101,65,116,40,102,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,121,91,101,93,32,61,32,48,59,10,32,32,32,32,32,32,32,32,32,32,32,32,99,32,43,61,32,100,46,108,101,110,103,116,104,32,43,32,49,59,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,84,58,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,82,98,40,41,59,10,32,32,32,32,32,32,32,32,32,32,70,91,97,32,62,62,32,50,93,32,61,32,99,46,108,101,110,103,116,104,59,10,32,32,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,48,59,10,32,32,32,32,32,32,32,32,32,32,99,46,102,111,114,69,97,99,104,40,40,101,41,32,61,62,32,100,32,43,61,32,101,46,108,101,110,103,116,104,32,43,32,49,41,59,10,32,32,32,32,32,32,32,32,32,32,70,91,98,32,62,62,32,50,93,32,61,32,100,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,116,58,32,40,41,32,61,62,32,53,50,44,10,32,32,32,32,32,32,32,32,122,58,32,40,41,32,61,62,32,53,50,44,10,32,32,32,32,32,32,32,32,72,58,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,55,48,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,81,58,32,40,97,44,32,98,44,32,99,44,32,100,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,101,32,61,32,48,44,32,102,32,61,32,48,59,32,102,32,60,32,99,59,32,102,43,43,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,70,91,98,32,62,62,32,50,93,44,32,104,32,61,32,70,91,98,32,43,32,52,32,62,62,32,50,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,98,32,43,61,32,56,59,10,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,118,97,114,32,110,32,61,32,48,59,32,110,32,60,32,104,59,32,110,43,43,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,109,32,61,32,65,91,108,32,43,32,110,93,44,32,112,32,61,32,83,98,91,97,93,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,48,32,61,61,61,32,109,32,124,124,32,49,48,32,61,61,61,32,109,32,63,32,40,40,49,32,61,61,61,32,97,32,63,32,101,97,32,58,32,119,41,40,74,40,112,44,32,48,41,41,44,32,112,46,108,101,110,103,116,104,32,61,32,48,41,32,58,32,112,46,112,117,115,104,40,109,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,101,32,43,61,32,104,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,70,91,100,32,62,62,32,50,93,32,61,32,101,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,85,58,32,40,97,44,32,98,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,85,98,40,65,46,115,117,98,97,114,114,97,121,40,97,44,32,97,32,43,32,98,41,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,32,32,32,32,125,44,10,32,32,32,32,32,32,32,32,105,58,32,99,99,44,10,32,32,32,32,32,32,32,32,100,58,32,100,99,44,10,32,32,32,32,32,32,32,32,101,58,32,101,99,44,10,32,32,32,32,32,32,32,32,112,58,32,102,99,44,10,32,32,32,32,32,32,32,32,121,58,32,103,99,44,10,32,32,32,32,32,32,32,32,98,58,32,104,99,44,10,32,32,32,32,32,32,32,32,97,58,32,105,99,44,10,32,32,32,32,32,32,32,32,104,58,32,106,99,44,10,32,32,32,32,32,32,32,32,110,58,32,107,99,44,10,32,32,32,32,32,32,32,32,71,58,32,108,99,44,10,32,32,32,32,32,32,32,32,75,58,32,40,97,44,32,98,44,32,99,44,32,100,41,32,61,62,32,90,98,40,97,44,32,98,44,32,99,44,32,100,41,10,32,32,32,32,32,32,125,44,32,87,32,61,32,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,97,40,99,41,32,123,10,32,32,32,32,32,32,32,32,32,32,87,32,61,32,99,46,101,120,112,111,114,116,115,59,10,32,32,32,32,32,32,32,32,32,32,102,97,32,61,32,87,46,100,97,59,10,32,32,32,32,32,32,32,32,32,32,108,97,40,41,59,10,32,32,32,32,32,32,32,32,32,32,83,32,61,32,87,46,104,97,59,10,32,32,32,32,32,32,32,32,32,32,110,97,46,117,110,115,104,105,102,116,40,87,46,101,97,41,59,10,32,32,32,32,32,32,32,32,32,32,71,45,45,59,10,32,32,32,32,32,32,32,32,32,32,107,46,109,111,110,105,116,111,114,82,117,110,68,101,112,101,110,100,101,110,99,105,101,115,63,46,40,71,41,59,10,32,32,32,32,32,32,32,32,32,32,48,32,61,61,32,71,32,38,38,32,40,110,117,108,108,32,33,61,61,32,113,97,32,38,38,32,40,99,108,101,97,114,73,110,116,101,114,118,97,108,40,113,97,41,44,32,113,97,32,61,32,110,117,108,108,41,44,32,72,32,38,38,32,40,99,32,61,32,72,44,32,72,32,61,32,110,117,108,108,44,32,99,40,41,41,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,87,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,123,32,97,58,32,109,99,32,125,59,10,32,32,32,32,32,32,32,32,71,43,43,59,10,32,32,32,32,32,32,32,32,107,46,109,111,110,105,116,111,114,82,117,110,68,101,112,101,110,100,101,110,99,105,101,115,63,46,40,71,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,107,46,105,110,115,116,97,110,116,105,97,116,101,87,97,115,109,41,10,32,32,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,107,46,105,110,115,116,97,110,116,105,97,116,101,87,97,115,109,40,98,44,32,97,41,59,10,32,32,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,99,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,119,40,96,77,111,100,117,108,101,46,105,110,115,116,97,110,116,105,97,116,101,87,97,115,109,32,99,97,108,108,98,97,99,107,32,102,97,105,108,101,100,32,119,105,116,104,32,101,114,114,111,114,58,32,36,123,99,125,96,41,44,32,98,97,40,99,41,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,120,97,40,98,44,32,102,117,110,99,116,105,111,110,40,99,41,32,123,10,32,32,32,32,32,32,32,32,32,32,97,40,99,46,105,110,115,116,97,110,99,101,41,59,10,32,32,32,32,32,32,32,32,125,41,46,99,97,116,99,104,40,98,97,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,123,125,59,10,32,32,32,32,32,32,125,40,41,44,32,98,99,32,61,32,40,97,41,32,61,62,32,40,98,99,32,61,32,87,46,102,97,41,40,97,41,44,32,111,98,32,61,32,40,97,41,32,61,62,32,40,111,98,32,61,32,87,46,103,97,41,40,97,41,44,32,85,32,61,32,40,97,41,32,61,62,32,40,85,32,61,32,87,46,105,97,41,40,97,41,44,32,88,32,61,32,40,97,44,32,98,41,32,61,62,32,40,88,32,61,32,87,46,106,97,41,40,97,44,32,98,41,44,32,89,32,61,32,40,97,41,32,61,62,32,40,89,32,61,32,87,46,107,97,41,40,97,41,44,32,90,32,61,32,40,41,32,61,62,32,40,90,32,61,32,87,46,108,97,41,40,41,59,10,32,32,32,32,32,32,107,46,100,121,110,67,97,108,108,95,105,105,106,106,32,61,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,32,61,62,32,40,107,46,100,121,110,67,97,108,108,95,105,105,106,106,32,61,32,87,46,110,97,41,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,59,10,32,32,32,32,32,32,107,46,100,121,110,67,97,108,108,95,118,105,106,106,32,61,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,32,61,62,32,40,107,46,100,121,110,67,97,108,108,95,118,105,106,106,32,61,32,87,46,111,97,41,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,59,10,32,32,32,32,32,32,107,46,100,121,110,67,97,108,108,95,106,105,105,105,32,61,32,40,97,44,32,98,44,32,99,44,32,100,41,32,61,62,32,40,107,46,100,121,110,67,97,108,108,95,106,105,105,105,32,61,32,87,46,112,97,41,40,97,44,32,98,44,32,99,44,32,100,41,59,10,32,32,32,32,32,32,107,46,100,121,110,67,97,108,108,95,106,105,105,32,61,32,40,97,44,32,98,44,32,99,41,32,61,62,32,40,107,46,100,121,110,67,97,108,108,95,106,105,105,32,61,32,87,46,113,97,41,40,97,44,32,98,44,32,99,41,59,10,32,32,32,32,32,32,118,97,114,32,110,99,32,61,32,107,46,100,121,110,67,97,108,108,95,118,105,105,105,106,32,61,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,32,61,62,32,40,110,99,32,61,32,107,46,100,121,110,67,97,108,108,95,118,105,105,105,106,32,61,32,87,46,114,97,41,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,59,10,32,32,32,32,32,32,107,46,100,121,110,67,97,108,108,95,106,105,106,105,32,61,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,41,32,61,62,32,40,107,46,100,121,110,67,97,108,108,95,106,105,106,105,32,61,32,87,46,115,97,41,40,97,44,32,98,44,32,99,44,32,100,44,32,101,41,59,10,32,32,32,32,32,32,107,46,100,121,110,67,97,108,108,95,118,105,105,106,105,105,32,61,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,41,32,61,62,32,40,107,46,100,121,110,67,97,108,108,95,118,105,105,106,105,105,32,61,32,87,46,116,97,41,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,41,59,10,32,32,32,32,32,32,107,46,100,121,110,67,97,108,108,95,105,105,105,105,105,106,32,61,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,41,32,61,62,32,40,107,46,100,121,110,67,97,108,108,95,105,105,105,105,105,106,32,61,32,87,46,117,97,41,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,41,59,10,32,32,32,32,32,32,107,46,100,121,110,67,97,108,108,95,105,105,105,105,105,106,106,32,61,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,44,32,104,44,32,110,41,32,61,62,32,40,107,46,100,121,110,67,97,108,108,95,105,105,105,105,105,106,106,32,61,32,87,46,118,97,41,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,44,32,104,44,32,110,41,59,10,32,32,32,32,32,32,107,46,100,121,110,67,97,108,108,95,105,105,105,105,105,105,106,106,32,61,32,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,44,32,104,44,32,110,44,32,109,41,32,61,62,32,40,107,46,100,121,110,67,97,108,108,95,105,105,105,105,105,105,106,106,32,61,32,87,46,119,97,41,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,44,32,108,44,32,104,44,32,110,44,32,109,41,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,104,99,40,97,44,32,98,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,90,40,41,59,10,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,83,46,103,101,116,40,97,41,40,98,41,59,10,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,89,40,99,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,100,32,33,61,61,32,100,32,43,32,48,41,32,116,104,114,111,119,32,100,59,10,32,32,32,32,32,32,32,32,32,32,88,40,49,44,32,48,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,105,99,40,97,44,32,98,44,32,99,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,90,40,41,59,10,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,83,46,103,101,116,40,97,41,40,98,44,32,99,41,59,10,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,101,41,32,123,10,32,32,32,32,32,32,32,32,32,32,89,40,100,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,101,32,33,61,61,32,101,32,43,32,48,41,32,116,104,114,111,119,32,101,59,10,32,32,32,32,32,32,32,32,32,32,88,40,49,44,32,48,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,101,99,40,97,44,32,98,44,32,99,44,32,100,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,90,40,41,59,10,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,83,46,103,101,116,40,97,41,40,98,44,32,99,44,32,100,41,59,10,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,89,40,101,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,102,32,33,61,61,32,102,32,43,32,48,41,32,116,104,114,111,119,32,102,59,10,32,32,32,32,32,32,32,32,32,32,88,40,49,44,32,48,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,100,99,40,97,44,32,98,44,32,99,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,100,32,61,32,90,40,41,59,10,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,83,46,103,101,116,40,97,41,40,98,44,32,99,41,59,10,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,101,41,32,123,10,32,32,32,32,32,32,32,32,32,32,89,40,100,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,101,32,33,61,61,32,101,32,43,32,48,41,32,116,104,114,111,119,32,101,59,10,32,32,32,32,32,32,32,32,32,32,88,40,49,44,32,48,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,99,99,40,97,44,32,98,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,99,32,61,32,90,40,41,59,10,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,83,46,103,101,116,40,97,41,40,98,41,59,10,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,89,40,99,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,100,32,33,61,61,32,100,32,43,32,48,41,32,116,104,114,111,119,32,100,59,10,32,32,32,32,32,32,32,32,32,32,88,40,49,44,32,48,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,102,99,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,90,40,41,59,10,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,83,46,103,101,116,40,97,41,40,98,44,32,99,44,32,100,44,32,101,44,32,102,41,59,10,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,104,41,32,123,10,32,32,32,32,32,32,32,32,32,32,89,40,108,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,104,32,33,61,61,32,104,32,43,32,48,41,32,116,104,114,111,119,32,104,59,10,32,32,32,32,32,32,32,32,32,32,88,40,49,44,32,48,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,107,99,40,97,44,32,98,44,32,99,44,32,100,44,32,101,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,102,32,61,32,90,40,41,59,10,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,83,46,103,101,116,40,97,41,40,98,44,32,99,44,32,100,44,32,101,41,59,10,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,108,41,32,123,10,32,32,32,32,32,32,32,32,32,32,89,40,102,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,108,32,33,61,61,32,108,32,43,32,48,41,32,116,104,114,111,119,32,108,59,10,32,32,32,32,32,32,32,32,32,32,88,40,49,44,32,48,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,106,99,40,97,44,32,98,44,32,99,44,32,100,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,101,32,61,32,90,40,41,59,10,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,83,46,103,101,116,40,97,41,40,98,44,32,99,44,32,100,41,59,10,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,102,41,32,123,10,32,32,32,32,32,32,32,32,32,32,89,40,101,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,102,32,33,61,61,32,102,32,43,32,48,41,32,116,104,114,111,119,32,102,59,10,32,32,32,32,32,32,32,32,32,32,88,40,49,44,32,48,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,103,99,40,97,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,90,40,41,59,10,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,83,46,103,101,116,40,97,41,40,41,59,10,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,99,41,32,123,10,32,32,32,32,32,32,32,32,32,32,89,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,99,32,33,61,61,32,99,32,43,32,48,41,32,116,104,114,111,119,32,99,59,10,32,32,32,32,32,32,32,32,32,32,88,40,49,44,32,48,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,108,99,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,32,123,10,32,32,32,32,32,32,32,32,118,97,114,32,108,32,61,32,90,40,41,59,10,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,110,99,40,97,44,32,98,44,32,99,44,32,100,44,32,101,44,32,102,41,59,10,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,104,41,32,123,10,32,32,32,32,32,32,32,32,32,32,89,40,108,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,104,32,33,61,61,32,104,32,43,32,48,41,32,116,104,114,111,119,32,104,59,10,32,32,32,32,32,32,32,32,32,32,88,40,49,44,32,48,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,118,97,114,32,111,99,59,10,32,32,32,32,32,32,72,32,61,32,102,117,110,99,116,105,111,110,32,112,99,40,41,32,123,10,32,32,32,32,32,32,32,32,111,99,32,124,124,32,113,99,40,41,59,10,32,32,32,32,32,32,32,32,111,99,32,124,124,32,40,72,32,61,32,112,99,41,59,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,113,99,40,41,32,123,10,32,32,32,32,32,32,32,32,102,117,110,99,116,105,111,110,32,97,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,111,99,32,38,38,32,40,111,99,32,61,32,116,114,117,101,44,32,107,46,99,97,108,108,101,100,82,117,110,32,61,32,116,114,117,101,44,32,33,104,97,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,121,97,40,110,97,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,97,97,40,107,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,107,46,111,110,82,117,110,116,105,109,101,73,110,105,116,105,97,108,105,122,101,100,41,32,107,46,111,110,82,117,110,116,105,109,101,73,110,105,116,105,97,108,105,122,101,100,40,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,107,46,112,111,115,116,82,117,110,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,34,102,117,110,99,116,105,111,110,34,32,61,61,32,116,121,112,101,111,102,32,107,46,112,111,115,116,82,117,110,32,38,38,32,40,107,46,112,111,115,116,82,117,110,32,61,32,91,107,46,112,111,115,116,82,117,110,93,41,59,32,107,46,112,111,115,116,82,117,110,46,108,101,110,103,116,104,59,32,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,97,114,32,98,32,61,32,107,46,112,111,115,116,82,117,110,46,115,104,105,102,116,40,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,111,97,46,117,110,115,104,105,102,116,40,98,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,121,97,40,111,97,41,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,105,102,32,40,33,40,48,32,60,32,71,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,107,46,112,114,101,82,117,110,41,32,102,111,114,32,40,34,102,117,110,99,116,105,111,110,34,32,61,61,32,116,121,112,101,111,102,32,107,46,112,114,101,82,117,110,32,38,38,32,40,107,46,112,114,101,82,117,110,32,61,32,91,107,46,112,114,101,82,117,110,93,41,59,32,107,46,112,114,101,82,117,110,46,108,101,110,103,116,104,59,32,41,32,112,97,40,41,59,10,32,32,32,32,32,32,32,32,32,32,121,97,40,109,97,41,59,10,32,32,32,32,32,32,32,32,32,32,48,32,60,32,71,32,124,124,32,40,107,46,115,101,116,83,116,97,116,117,115,32,63,32,40,107,46,115,101,116,83,116,97,116,117,115,40,34,82,117,110,110,105,110,103,46,46,46,34,41,44,32,115,101,116,84,105,109,101,111,117,116,40,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,115,101,116,84,105,109,101,111,117,116,40,102,117,110,99,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,107,46,115,101,116,83,116,97,116,117,115,40,34,34,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,44,32,49,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,97,40,41,59,10,32,32,32,32,32,32,32,32,32,32,125,44,32,49,41,41,32,58,32,97,40,41,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,102,32,40,107,46,112,114,101,73,110,105,116,41,10,32,32,32,32,32,32,32,32,102,111,114,32,40,34,102,117,110,99,116,105,111,110,34,32,61,61,32,116,121,112,101,111,102,32,107,46,112,114,101,73,110,105,116,32,38,38,32,40,107,46,112,114,101,73,110,105,116,32,61,32,91,107,46,112,114,101,73,110,105,116,93,41,59,32,48,32,60,32,107,46,112,114,101,73,110,105,116,46,108,101,110,103,116,104,59,32,41,32,107,46,112,114,101,73,110,105,116,46,112,111,112,40,41,40,41,59,10,32,32,32,32,32,32,113,99,40,41,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,114,101,97,100,121,80,114,111,109,105,115,101,59,10,32,32,32,32,125,59,10,32,32,125,41,40,41,59,10,32,32,118,97,114,32,100,111,116,108,111,116,116,105,101,95,112,108,97,121,101,114,95,100,101,102,97,117,108,116,32,61,32,99,114,101,97,116,101,68,111,116,76,111,116,116,105,101,80,108,97,121,101,114,77,111,100,117,108,101,59,10,10,32,32,47,47,32,115,114,99,47,99,111,114,101,47,100,111,116,108,111,116,116,105,101,45,119,97,115,109,45,108,111,97,100,101,114,46,116,115,10,32,32,118,97,114,32,68,111,116,76,111,116,116,105,101,87,97,115,109,76,111,97,100,101,114,32,61,32,99,108,97,115,115,32,123,10,32,32,32,32,99,111,110,115,116,114,117,99,116,111,114,40,41,32,123,10,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,82,101,110,100,101,114,101,114,76,111,97,100,101,114,32,105,115,32,97,32,115,116,97,116,105,99,32,99,108,97,115,115,32,97,110,100,32,99,97,110,110,111,116,32,98,101,32,105,110,115,116,97,110,116,105,97,116,101,100,46,34,41,59,10,32,32,32,32,125,10,32,32,32,32,115,116,97,116,105,99,32,97,115,121,110,99,32,95,116,114,121,76,111,97,100,40,117,114,108,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,109,111,100,117,108,101,32,61,32,97,119,97,105,116,32,100,111,116,108,111,116,116,105,101,95,112,108,97,121,101,114,95,100,101,102,97,117,108,116,40,123,32,108,111,99,97,116,101,70,105,108,101,58,32,40,41,32,61,62,32,117,114,108,32,125,41,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,59,10,32,32,32,32,125,10,32,32,32,32,47,42,42,10,32,32,32,32,32,42,32,84,114,105,101,115,32,116,111,32,108,111,97,100,32,116,104,101,32,87,65,83,77,32,109,111,100,117,108,101,32,102,114,111,109,32,116,104,101,32,112,114,105,109,97,114,121,32,85,82,76,44,32,102,97,108,108,105,110,103,32,98,97,99,107,32,116,111,32,97,32,98,97,99,107,117,112,32,85,82,76,32,105,102,32,110,101,99,101,115,115,97,114,121,46,10,32,32,32,32,32,42,32,84,104,114,111,119,115,32,97,110,32,101,114,114,111,114,32,105,102,32,98,111,116,104,32,85,82,76,115,32,102,97,105,108,32,116,111,32,108,111,97,100,32,116,104,101,32,109,111,100,117,108,101,46,10,32,32,32,32,32,42,32,64,114,101,116,117,114,110,115,32,80,114,111,109,105,115,101,60,77,111,100,117,108,101,62,32,45,32,65,32,112,114,111,109,105,115,101,32,116,104,97,116,32,114,101,115,111,108,118,101,115,32,116,111,32,116,104,101,32,108,111,97,100,101,100,32,109,111,100,117,108,101,46,10,32,32,32,32,32,42,47,10,32,32,32,32,115,116,97,116,105,99,32,97,115,121,110,99,32,95,108,111,97,100,87,105,116,104,66,97,99,107,117,112,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,33,116,104,105,115,46,95,77,111,100,117,108,101,80,114,111,109,105,115,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,77,111,100,117,108,101,80,114,111,109,105,115,101,32,61,32,116,104,105,115,46,95,116,114,121,76,111,97,100,40,116,104,105,115,46,95,119,97,115,109,85,82,76,41,46,99,97,116,99,104,40,97,115,121,110,99,32,40,105,110,105,116,105,97,108,69,114,114,111,114,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,98,97,99,107,117,112,85,114,108,32,61,32,96,104,116,116,112,115,58,47,47,117,110,112,107,103,46,99,111,109,47,36,123,80,65,67,75,65,71,69,95,78,65,77,69,125,64,36,123,80,65,67,75,65,71,69,95,86,69,82,83,73,79,78,125,47,100,105,115,116,47,100,111,116,108,111,116,116,105,101,45,112,108,97,121,101,114,46,119,97,115,109,96,59,10,32,32,32,32,32,32,32,32,32,32,99,111,110,115,111,108,101,46,119,97,114,110,40,96,80,114,105,109,97,114,121,32,87,65,83,77,32,108,111,97,100,32,102,97,105,108,101,100,32,102,114,111,109,32,36,123,116,104,105,115,46,95,119,97,115,109,85,82,76,125,46,32,69,114,114,111,114,58,32,36,123,105,110,105,116,105,97,108,69,114,114,111,114,46,109,101,115,115,97,103,101,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,99,111,110,115,111,108,101,46,119,97,114,110,40,96,65,116,116,101,109,112,116,105,110,103,32,116,111,32,108,111,97,100,32,87,65,83,77,32,102,114,111,109,32,98,97,99,107,117,112,32,85,82,76,58,32,36,123,98,97,99,107,117,112,85,114,108,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,97,119,97,105,116,32,116,104,105,115,46,95,116,114,121,76,111,97,100,40,98,97,99,107,117,112,85,114,108,41,59,10,32,32,32,32,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,98,97,99,107,117,112,69,114,114,111,114,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,111,108,101,46,101,114,114,111,114,40,96,80,114,105,109,97,114,121,32,87,65,83,77,32,85,82,76,32,102,97,105,108,101,100,58,32,36,123,105,110,105,116,105,97,108,69,114,114,111,114,46,109,101,115,115,97,103,101,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,111,108,101,46,101,114,114,111,114,40,96,66,97,99,107,117,112,32,87,65,83,77,32,85,82,76,32,102,97,105,108,101,100,58,32,36,123,98,97,99,107,117,112,69,114,114,111,114,46,109,101,115,115,97,103,101,125,96,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,34,87,65,83,77,32,108,111,97,100,105,110,103,32,102,97,105,108,101,100,32,102,114,111,109,32,97,108,108,32,115,111,117,114,99,101,115,46,34,41,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,77,111,100,117,108,101,80,114,111,109,105,115,101,59,10,32,32,32,32,125,10,32,32,32,32,47,42,42,10,32,32,32,32,32,42,32,80,117,98,108,105,99,32,109,101,116,104,111,100,32,116,111,32,108,111,97,100,32,116,104,101,32,87,101,98,65,115,115,101,109,98,108,121,32,109,111,100,117,108,101,46,10,32,32,32,32,32,42,32,85,116,105,108,105,122,101,115,32,97,32,112,114,105,109,97,114,121,32,97,110,100,32,98,97,99,107,117,112,32,85,82,76,32,102,111,114,32,114,111,98,117,115,116,110,101,115,115,46,10,32,32,32,32,32,42,32,64,114,101,116,117,114,110,115,32,80,114,111,109,105,115,101,60,77,111,100,117,108,101,62,32,45,32,65,32,112,114,111,109,105,115,101,32,116,104,97,116,32,114,101,115,111,108,118,101,115,32,116,111,32,116,104,101,32,108,111,97,100,101,100,32,109,111,100,117,108,101,46,10,32,32,32,32,32,42,47,10,32,32,32,32,115,116,97,116,105,99,32,97,115,121,110,99,32,108,111,97,100,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,108,111,97,100,87,105,116,104,66,97,99,107,117,112,40,41,59,10,32,32,32,32,125,10,32,32,32,32,47,42,42,10,32,32,32,32,32,42,32,83,101,116,115,32,97,32,110,101,119,32,85,82,76,32,102,111,114,32,116,104,101,32,87,65,83,77,32,102,105,108,101,32,97,110,100,32,105,110,118,97,108,105,100,97,116,101,115,32,116,104,101,32,99,117,114,114,101,110,116,32,109,111,100,117,108,101,32,112,114,111,109,105,115,101,46,10,32,32,32,32,32,42,10,32,32,32,32,32,42,32,64,112,97,114,97,109,32,115,116,114,105,110,103,32,45,32,32,84,104,101,32,110,101,119,32,85,82,76,32,102,111,114,32,116,104,101,32,87,65,83,77,32,102,105,108,101,46,10,32,32,32,32,32,42,47,10,32,32,32,32,115,116,97,116,105,99,32,115,101,116,87,97,115,109,85,114,108,40,117,114,108,41,32,123,10,32,32,32,32,32,32,116,104,105,115,46,95,119,97,115,109,85,82,76,32,61,32,117,114,108,59,10,32,32,32,32,32,32,116,104,105,115,46,95,77,111,100,117,108,101,80,114,111,109,105,115,101,32,61,32,110,117,108,108,59,10,32,32,32,32,125,10,32,32,125,59,10,32,32,47,47,32,101,115,108,105,110,116,45,100,105,115,97,98,108,101,45,110,101,120,116,45,108,105,110,101,32,64,116,121,112,101,115,99,114,105,112,116,45,101,115,108,105,110,116,47,110,97,109,105,110,103,45,99,111,110,118,101,110,116,105,111,110,10,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,68,111,116,76,111,116,116,105,101,87,97,115,109,76,111,97,100,101,114,44,32,34,95,77,111,100,117,108,101,80,114,111,109,105,115,101,34,44,32,110,117,108,108,41,59,10,32,32,47,47,32,85,82,76,32,102,111,114,32,116,104,101,32,87,65,83,77,32,102,105,108,101,44,32,99,111,110,115,116,114,117,99,116,101,100,32,117,115,105,110,103,32,112,97,99,107,97,103,101,32,105,110,102,111,114,109,97,116,105,111,110,10,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,68,111,116,76,111,116,116,105,101,87,97,115,109,76,111,97,100,101,114,44,32,34,95,119,97,115,109,85,82,76,34,44,32,96,104,116,116,112,115,58,47,47,99,100,110,46,106,115,100,101,108,105,118,114,46,110,101,116,47,110,112,109,47,36,123,80,65,67,75,65,71,69,95,78,65,77,69,125,64,36,123,80,65,67,75,65,71,69,95,86,69,82,83,73,79,78,125,47,100,105,115,116,47,100,111,116,108,111,116,116,105,101,45,112,108,97,121,101,114,46,119,97,115,109,96,41,59,10,10,32,32,47,47,32,115,114,99,47,101,118,101,110,116,45,109,97,110,97,103,101,114,46,116,115,10,32,32,118,97,114,32,69,118,101,110,116,77,97,110,97,103,101,114,32,61,32,99,108,97,115,115,32,123,10,32,32,32,32,99,111,110,115,116,114,117,99,116,111,114,40,41,32,123,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,101,118,101,110,116,76,105,115,116,101,110,101,114,115,34,44,32,47,42,32,64,95,95,80,85,82,69,95,95,32,42,47,32,110,101,119,32,77,97,112,40,41,41,59,10,32,32,32,32,125,10,32,32,32,32,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,40,116,121,112,101,44,32,108,105,115,116,101,110,101,114,41,32,123,10,32,32,32,32,32,32,108,101,116,32,108,105,115,116,101,110,101,114,115,32,61,32,116,104,105,115,46,95,101,118,101,110,116,76,105,115,116,101,110,101,114,115,46,103,101,116,40,116,121,112,101,41,59,10,32,32,32,32,32,32,105,102,32,40,33,108,105,115,116,101,110,101,114,115,41,32,123,10,32,32,32,32,32,32,32,32,108,105,115,116,101,110,101,114,115,32,61,32,47,42,32,64,95,95,80,85,82,69,95,95,32,42,47,32,110,101,119,32,83,101,116,40,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,76,105,115,116,101,110,101,114,115,46,115,101,116,40,116,121,112,101,44,32,108,105,115,116,101,110,101,114,115,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,108,105,115,116,101,110,101,114,115,46,97,100,100,40,108,105,115,116,101,110,101,114,41,59,10,32,32,32,32,125,10,32,32,32,32,114,101,109,111,118,101,69,118,101,110,116,76,105,115,116,101,110,101,114,40,116,121,112,101,44,32,108,105,115,116,101,110,101,114,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,108,105,115,116,101,110,101,114,115,32,61,32,116,104,105,115,46,95,101,118,101,110,116,76,105,115,116,101,110,101,114,115,46,103,101,116,40,116,121,112,101,41,59,10,32,32,32,32,32,32,105,102,32,40,33,108,105,115,116,101,110,101,114,115,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,105,102,32,40,108,105,115,116,101,110,101,114,41,32,123,10,32,32,32,32,32,32,32,32,108,105,115,116,101,110,101,114,115,46,100,101,108,101,116,101,40,108,105,115,116,101,110,101,114,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,108,105,115,116,101,110,101,114,115,46,115,105,122,101,32,61,61,61,32,48,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,76,105,115,116,101,110,101,114,115,46,100,101,108,101,116,101,40,116,121,112,101,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,76,105,115,116,101,110,101,114,115,46,100,101,108,101,116,101,40,116,121,112,101,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,100,105,115,112,97,116,99,104,40,101,118,101,110,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,108,105,115,116,101,110,101,114,115,32,61,32,116,104,105,115,46,95,101,118,101,110,116,76,105,115,116,101,110,101,114,115,46,103,101,116,40,101,118,101,110,116,46,116,121,112,101,41,59,10,32,32,32,32,32,32,108,105,115,116,101,110,101,114,115,63,46,102,111,114,69,97,99,104,40,40,108,105,115,116,101,110,101,114,41,32,61,62,32,108,105,115,116,101,110,101,114,40,101,118,101,110,116,41,41,59,10,32,32,32,32,125,10,32,32,32,32,114,101,109,111,118,101,65,108,108,69,118,101,110,116,76,105,115,116,101,110,101,114,115,40,41,32,123,10,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,76,105,115,116,101,110,101,114,115,46,99,108,101,97,114,40,41,59,10,32,32,32,32,125,10,32,32,125,59,10,10,32,32,47,47,32,115,114,99,47,117,116,105,108,115,46,116,115,10,32,32,102,117,110,99,116,105,111,110,32,105,115,72,101,120,67,111,108,111,114,40,99,111,108,111,114,41,32,123,10,32,32,32,32,114,101,116,117,114,110,32,47,94,35,40,91,92,100,97,45,102,93,123,54,125,124,91,92,100,97,45,102,93,123,56,125,41,36,47,105,117,46,116,101,115,116,40,99,111,108,111,114,41,59,10,32,32,125,10,32,32,102,117,110,99,116,105,111,110,32,104,101,120,83,116,114,105,110,103,84,111,82,71,66,65,73,110,116,40,99,111,108,111,114,72,101,120,41,32,123,10,32,32,32,32,105,102,32,40,33,105,115,72,101,120,67,111,108,111,114,40,99,111,108,111,114,72,101,120,41,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,10,32,32,32,32,125,10,32,32,32,32,108,101,116,32,104,101,120,32,61,32,99,111,108,111,114,72,101,120,46,114,101,112,108,97,99,101,40,34,35,34,44,32,34,34,41,59,10,32,32,32,32,104,101,120,32,61,32,104,101,120,46,108,101,110,103,116,104,32,61,61,61,32,54,32,63,32,96,36,123,104,101,120,125,102,102,96,32,58,32,104,101,120,59,10,32,32,32,32,114,101,116,117,114,110,32,112,97,114,115,101,73,110,116,40,104,101,120,44,32,49,54,41,59,10,32,32,125,10,32,32,102,117,110,99,116,105,111,110,32,105,115,68,111,116,76,111,116,116,105,101,40,102,105,108,101,68,97,116,97,41,32,123,10,32,32,32,32,105,102,32,40,102,105,108,101,68,97,116,97,46,98,121,116,101,76,101,110,103,116,104,32,60,32,52,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,99,111,110,115,116,32,102,105,108,101,83,105,103,110,97,116,117,114,101,32,61,32,110,101,119,32,85,105,110,116,56,65,114,114,97,121,40,102,105,108,101,68,97,116,97,46,115,108,105,99,101,40,48,44,32,90,73,80,95,83,73,71,78,65,84,85,82,69,46,98,121,116,101,76,101,110,103,116,104,41,41,59,10,32,32,32,32,102,111,114,32,40,108,101,116,32,105,32,61,32,48,59,32,105,32,60,32,90,73,80,95,83,73,71,78,65,84,85,82,69,46,108,101,110,103,116,104,59,32,105,32,43,61,32,49,41,32,123,10,32,32,32,32,32,32,105,102,32,40,90,73,80,95,83,73,71,78,65,84,85,82,69,91,105,93,32,33,61,61,32,102,105,108,101,83,105,103,110,97,116,117,114,101,91,105,93,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,114,101,116,117,114,110,32,116,114,117,101,59,10,32,32,125,10,32,32,102,117,110,99,116,105,111,110,32,105,115,76,111,116,116,105,101,74,83,79,78,40,106,115,111,110,41,32,123,10,32,32,32,32,114,101,116,117,114,110,32,76,79,84,84,73,69,95,74,83,79,78,95,77,65,78,68,65,84,79,82,89,95,70,73,69,76,68,83,46,101,118,101,114,121,40,40,102,105,101,108,100,41,32,61,62,32,79,98,106,101,99,116,46,112,114,111,116,111,116,121,112,101,46,104,97,115,79,119,110,80,114,111,112,101,114,116,121,46,99,97,108,108,40,106,115,111,110,44,32,102,105,101,108,100,41,41,59,10,32,32,125,10,32,32,102,117,110,99,116,105,111,110,32,105,115,76,111,116,116,105,101,40,102,105,108,101,68,97,116,97,41,32,123,10,32,32,32,32,105,102,32,40,116,121,112,101,111,102,32,102,105,108,101,68,97,116,97,32,61,61,61,32,34,115,116,114,105,110,103,34,41,32,123,10,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,105,115,76,111,116,116,105,101,74,83,79,78,40,74,83,79,78,46,112,97,114,115,101,40,102,105,108,101,68,97,116,97,41,41,59,10,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,95,101,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,115,76,111,116,116,105,101,74,83,79,78,40,102,105,108,101,68,97,116,97,41,59,10,32,32,32,32,125,10,32,32,125,10,32,32,102,117,110,99,116,105,111,110,32,103,101,116,68,101,102,97,117,108,116,68,80,82,40,41,32,123,10,32,32,32,32,99,111,110,115,116,32,100,112,114,32,61,32,73,83,95,66,82,79,87,83,69,82,32,63,32,119,105,110,100,111,119,46,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,32,58,32,49,59,10,32,32,32,32,114,101,116,117,114,110,32,49,32,43,32,40,100,112,114,32,45,32,49,41,32,42,32,68,69,70,65,85,76,84,95,68,80,82,95,70,65,67,84,79,82,59,10,32,32,125,10,10,32,32,47,47,32,115,114,99,47,100,111,116,108,111,116,116,105,101,46,116,115,10,32,32,118,97,114,32,99,114,101,97,116,101,67,111,114,101,77,111,100,101,32,61,32,40,109,111,100,101,44,32,109,111,100,117,108,101,41,32,61,62,32,123,10,32,32,32,32,105,102,32,40,109,111,100,101,32,61,61,61,32,34,114,101,118,101,114,115,101,34,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,46,77,111,100,101,46,82,101,118,101,114,115,101,59,10,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,109,111,100,101,32,61,61,61,32,34,98,111,117,110,99,101,34,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,46,77,111,100,101,46,66,111,117,110,99,101,59,10,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,109,111,100,101,32,61,61,61,32,34,114,101,118,101,114,115,101,45,98,111,117,110,99,101,34,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,46,77,111,100,101,46,82,101,118,101,114,115,101,66,111,117,110,99,101,59,10,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,46,77,111,100,101,46,70,111,114,119,97,114,100,59,10,32,32,32,32,125,10,32,32,125,59,10,32,32,118,97,114,32,99,114,101,97,116,101,67,111,114,101,70,105,116,32,61,32,40,102,105,116,44,32,109,111,100,117,108,101,41,32,61,62,32,123,10,32,32,32,32,105,102,32,40,102,105,116,32,61,61,61,32,34,99,111,110,116,97,105,110,34,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,46,70,105,116,46,67,111,110,116,97,105,110,59,10,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,102,105,116,32,61,61,61,32,34,99,111,118,101,114,34,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,46,70,105,116,46,67,111,118,101,114,59,10,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,102,105,116,32,61,61,61,32,34,102,105,108,108,34,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,46,70,105,116,46,70,105,108,108,59,10,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,102,105,116,32,61,61,61,32,34,102,105,116,45,104,101,105,103,104,116,34,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,46,70,105,116,46,70,105,116,72,101,105,103,104,116,59,10,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,102,105,116,32,61,61,61,32,34,102,105,116,45,119,105,100,116,104,34,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,46,70,105,116,46,70,105,116,87,105,100,116,104,59,10,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,111,100,117,108,101,46,70,105,116,46,78,111,110,101,59,10,32,32,32,32,125,10,32,32,125,59,10,32,32,118,97,114,32,99,114,101,97,116,101,67,111,114,101,65,108,105,103,110,32,61,32,40,97,108,105,103,110,44,32,109,111,100,117,108,101,41,32,61,62,32,123,10,32,32,32,32,99,111,110,115,116,32,99,111,114,101,65,108,105,103,110,32,61,32,110,101,119,32,109,111,100,117,108,101,46,86,101,99,116,111,114,70,108,111,97,116,40,41,59,10,32,32,32,32,99,111,114,101,65,108,105,103,110,46,112,117,115,104,95,98,97,99,107,40,97,108,105,103,110,91,48,93,41,59,10,32,32,32,32,99,111,114,101,65,108,105,103,110,46,112,117,115,104,95,98,97,99,107,40,97,108,105,103,110,91,49,93,41,59,10,32,32,32,32,114,101,116,117,114,110,32,99,111,114,101,65,108,105,103,110,59,10,32,32,125,59,10,32,32,118,97,114,32,99,114,101,97,116,101,67,111,114,101,83,101,103,109,101,110,116,32,61,32,40,115,101,103,109,101,110,116,44,32,109,111,100,117,108,101,41,32,61,62,32,123,10,32,32,32,32,99,111,110,115,116,32,99,111,114,101,115,101,103,109,101,110,116,32,61,32,110,101,119,32,109,111,100,117,108,101,46,86,101,99,116,111,114,70,108,111,97,116,40,41,59,10,32,32,32,32,105,102,32,40,115,101,103,109,101,110,116,46,108,101,110,103,116,104,32,33,61,61,32,50,41,32,114,101,116,117,114,110,32,99,111,114,101,115,101,103,109,101,110,116,59,10,32,32,32,32,99,111,114,101,115,101,103,109,101,110,116,46,112,117,115,104,95,98,97,99,107,40,115,101,103,109,101,110,116,91,48,93,41,59,10,32,32,32,32,99,111,114,101,115,101,103,109,101,110,116,46,112,117,115,104,95,98,97,99,107,40,115,101,103,109,101,110,116,91,49,93,41,59,10,32,32,32,32,114,101,116,117,114,110,32,99,111,114,101,115,101,103,109,101,110,116,59,10,32,32,125,59,10,32,32,118,97,114,32,95,68,111,116,76,111,116,116,105,101,32,61,32,99,108,97,115,115,32,95,68,111,116,76,111,116,116,105,101,32,123,10,32,32,32,32,99,111,110,115,116,114,117,99,116,111,114,40,99,111,110,102,105,103,41,32,123,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,99,97,110,118,97,115,34,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,99,111,110,116,101,120,116,34,44,32,110,117,108,108,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,101,118,101,110,116,77,97,110,97,103,101,114,34,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,97,110,105,109,97,116,105,111,110,70,114,97,109,101,73,100,34,44,32,110,117,108,108,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,102,114,97,109,101,77,97,110,97,103,101,114,34,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,100,111,116,76,111,116,116,105,101,67,111,114,101,34,44,32,110,117,108,108,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,114,101,110,100,101,114,67,111,110,102,105,103,34,44,32,123,125,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,105,115,70,114,111,122,101,110,34,44,32,102,97,108,115,101,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,34,44,32,110,117,108,108,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,112,111,105,110,116,101,114,85,112,77,101,116,104,111,100,34,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,112,111,105,110,116,101,114,68,111,119,110,77,101,116,104,111,100,34,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,112,111,105,110,116,101,114,77,111,118,101,77,101,116,104,111,100,34,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,112,111,105,110,116,101,114,69,110,116,101,114,77,101,116,104,111,100,34,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,112,111,105,110,116,101,114,69,120,105,116,77,101,116,104,111,100,34,41,59,10,32,32,32,32,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,116,104,105,115,44,32,34,95,111,110,67,111,109,112,108,101,116,101,77,101,116,104,111,100,34,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,32,61,32,99,111,110,102,105,103,46,99,97,110,118,97,115,59,10,32,32,32,32,32,32,116,104,105,115,46,95,99,111,110,116,101,120,116,32,61,32,116,104,105,115,46,95,99,97,110,118,97,115,46,103,101,116,67,111,110,116,101,120,116,40,34,50,100,34,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,32,61,32,110,101,119,32,69,118,101,110,116,77,97,110,97,103,101,114,40,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,102,114,97,109,101,77,97,110,97,103,101,114,32,61,32,110,101,119,32,65,110,105,109,97,116,105,111,110,70,114,97,109,101,77,97,110,97,103,101,114,40,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,114,101,110,100,101,114,67,111,110,102,105,103,32,61,32,123,10,32,32,32,32,32,32,32,32,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,58,32,99,111,110,102,105,103,46,114,101,110,100,101,114,67,111,110,102,105,103,63,46,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,32,124,124,32,103,101,116,68,101,102,97,117,108,116,68,80,82,40,41,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,68,111,116,76,111,116,116,105,101,87,97,115,109,76,111,97,100,101,114,46,108,111,97,100,40,41,46,116,104,101,110,40,40,109,111,100,117,108,101,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,32,61,32,109,111,100,117,108,101,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,32,110,101,119,32,109,111,100,117,108,101,46,68,111,116,76,111,116,116,105,101,80,108,97,121,101,114,40,123,10,32,32,32,32,32,32,32,32,32,32,97,117,116,111,112,108,97,121,58,32,99,111,110,102,105,103,46,97,117,116,111,112,108,97,121,32,63,63,32,102,97,108,115,101,44,10,32,32,32,32,32,32,32,32,32,32,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,58,32,48,44,10,32,32,32,32,32,32,32,32,32,32,108,111,111,112,65,110,105,109,97,116,105,111,110,58,32,99,111,110,102,105,103,46,108,111,111,112,32,63,63,32,102,97,108,115,101,44,10,32,32,32,32,32,32,32,32,32,32,109,111,100,101,58,32,99,114,101,97,116,101,67,111,114,101,77,111,100,101,40,99,111,110,102,105,103,46,109,111,100,101,32,63,63,32,34,102,111,114,119,97,114,100,34,44,32,109,111,100,117,108,101,41,44,10,32,32,32,32,32,32,32,32,32,32,115,101,103,109,101,110,116,58,32,99,114,101,97,116,101,67,111,114,101,83,101,103,109,101,110,116,40,99,111,110,102,105,103,46,115,101,103,109,101,110,116,32,63,63,32,91,93,44,32,109,111,100,117,108,101,41,44,10,32,32,32,32,32,32,32,32,32,32,115,112,101,101,100,58,32,99,111,110,102,105,103,46,115,112,101,101,100,32,63,63,32,49,44,10,32,32,32,32,32,32,32,32,32,32,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,58,32,99,111,110,102,105,103,46,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,32,63,63,32,116,114,117,101,44,10,32,32,32,32,32,32,32,32,32,32,109,97,114,107,101,114,58,32,99,111,110,102,105,103,46,109,97,114,107,101,114,32,63,63,32,34,34,44,10,32,32,32,32,32,32,32,32,32,32,108,97,121,111,117,116,58,32,99,111,110,102,105,103,46,108,97,121,111,117,116,32,63,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,97,108,105,103,110,58,32,99,114,101,97,116,101,67,111,114,101,65,108,105,103,110,40,99,111,110,102,105,103,46,108,97,121,111,117,116,46,97,108,105,103,110,44,32,109,111,100,117,108,101,41,44,10,32,32,32,32,32,32,32,32,32,32,32,32,102,105,116,58,32,99,114,101,97,116,101,67,111,114,101,70,105,116,40,99,111,110,102,105,103,46,108,97,121,111,117,116,46,102,105,116,44,32,109,111,100,117,108,101,41,10,32,32,32,32,32,32,32,32,32,32,125,32,58,32,109,111,100,117,108,101,46,99,114,101,97,116,101,68,101,102,97,117,108,116,76,97,121,111,117,116,40,41,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,114,101,97,100,121,34,32,125,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,99,111,110,102,105,103,46,100,97,116,97,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,108,111,97,100,70,114,111,109,68,97,116,97,40,99,111,110,102,105,103,46,100,97,116,97,41,59,10,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,99,111,110,102,105,103,46,115,114,99,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,108,111,97,100,70,114,111,109,83,114,99,40,99,111,110,102,105,103,46,115,114,99,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,105,102,32,40,99,111,110,102,105,103,46,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,115,101,116,66,97,99,107,103,114,111,117,110,100,67,111,108,111,114,40,99,111,110,102,105,103,46,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,41,46,99,97,116,99,104,40,40,101,114,114,111,114,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,10,32,32,32,32,32,32,32,32,32,32,116,121,112,101,58,32,34,108,111,97,100,69,114,114,111,114,34,44,10,32,32,32,32,32,32,32,32,32,32,101,114,114,111,114,58,32,110,101,119,32,69,114,114,111,114,40,96,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,119,97,115,109,32,109,111,100,117,108,101,58,32,36,123,101,114,114,111,114,125,96,41,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,112,111,105,110,116,101,114,85,112,77,101,116,104,111,100,32,61,32,116,104,105,115,46,95,111,110,80,111,105,110,116,101,114,85,112,46,98,105,110,100,40,116,104,105,115,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,112,111,105,110,116,101,114,68,111,119,110,77,101,116,104,111,100,32,61,32,116,104,105,115,46,95,111,110,80,111,105,110,116,101,114,68,111,119,110,46,98,105,110,100,40,116,104,105,115,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,112,111,105,110,116,101,114,77,111,118,101,77,101,116,104,111,100,32,61,32,116,104,105,115,46,95,111,110,80,111,105,110,116,101,114,77,111,118,101,46,98,105,110,100,40,116,104,105,115,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,112,111,105,110,116,101,114,69,110,116,101,114,77,101,116,104,111,100,32,61,32,116,104,105,115,46,95,111,110,80,111,105,110,116,101,114,69,110,116,101,114,46,98,105,110,100,40,116,104,105,115,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,112,111,105,110,116,101,114,69,120,105,116,77,101,116,104,111,100,32,61,32,116,104,105,115,46,95,111,110,80,111,105,110,116,101,114,76,101,97,118,101,46,98,105,110,100,40,116,104,105,115,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,111,110,67,111,109,112,108,101,116,101,77,101,116,104,111,100,32,61,32,116,104,105,115,46,95,111,110,67,111,109,112,108,101,116,101,46,98,105,110,100,40,116,104,105,115,41,59,10,32,32,32,32,125,10,32,32,32,32,95,100,105,115,112,97,116,99,104,69,114,114,111,114,40,109,101,115,115,97,103,101,41,32,123,10,32,32,32,32,32,32,99,111,110,115,111,108,101,46,101,114,114,111,114,40,109,101,115,115,97,103,101,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,108,111,97,100,69,114,114,111,114,34,44,32,101,114,114,111,114,58,32,110,101,119,32,69,114,114,111,114,40,109,101,115,115,97,103,101,41,32,125,41,59,10,32,32,32,32,125,10,32,32,32,32,97,115,121,110,99,32,95,102,101,116,99,104,68,97,116,97,40,115,114,99,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,97,119,97,105,116,32,102,101,116,99,104,40,115,114,99,41,59,10,32,32,32,32,32,32,105,102,32,40,33,114,101,115,112,111,110,115,101,46,111,107,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,70,97,105,108,101,100,32,116,111,32,102,101,116,99,104,32,97,110,105,109,97,116,105,111,110,32,100,97,116,97,32,102,114,111,109,32,85,82,76,58,32,36,123,115,114,99,125,46,32,36,123,114,101,115,112,111,110,115,101,46,115,116,97,116,117,115,125,58,32,36,123,114,101,115,112,111,110,115,101,46,115,116,97,116,117,115,84,101,120,116,125,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,99,111,110,115,116,32,100,97,116,97,32,61,32,97,119,97,105,116,32,114,101,115,112,111,110,115,101,46,97,114,114,97,121,66,117,102,102,101,114,40,41,59,10,32,32,32,32,32,32,105,102,32,40,105,115,68,111,116,76,111,116,116,105,101,40,100,97,116,97,41,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,100,97,116,97,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,84,101,120,116,68,101,99,111,100,101,114,40,41,46,100,101,99,111,100,101,40,100,97,116,97,41,59,10,32,32,32,32,125,10,32,32,32,32,95,108,111,97,100,70,114,111,109,68,97,116,97,40,100,97,116,97,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,99,111,110,115,116,32,119,105,100,116,104,32,61,32,116,104,105,115,46,95,99,97,110,118,97,115,46,119,105,100,116,104,59,10,32,32,32,32,32,32,99,111,110,115,116,32,104,101,105,103,104,116,32,61,32,116,104,105,115,46,95,99,97,110,118,97,115,46,104,101,105,103,104,116,59,10,32,32,32,32,32,32,108,101,116,32,108,111,97,100,101,100,32,61,32,102,97,108,115,101,59,10,32,32,32,32,32,32,105,102,32,40,116,121,112,101,111,102,32,100,97,116,97,32,61,61,61,32,34,115,116,114,105,110,103,34,41,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,33,105,115,76,111,116,116,105,101,40,100,97,116,97,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,100,105,115,112,97,116,99,104,69,114,114,111,114,40,10,32,32,32,32,32,32,32,32,32,32,32,32,34,73,110,118,97,108,105,100,32,76,111,116,116,105,101,32,74,83,79,78,32,115,116,114,105,110,103,58,32,84,104,101,32,112,114,111,118,105,100,101,100,32,115,116,114,105,110,103,32,100,111,101,115,32,110,111,116,32,99,111,110,102,111,114,109,32,116,111,32,116,104,101,32,76,111,116,116,105,101,32,74,83,79,78,32,102,111,114,109,97,116,46,34,10,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,108,111,97,100,101,100,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,108,111,97,100,65,110,105,109,97,116,105,111,110,68,97,116,97,40,100,97,116,97,44,32,119,105,100,116,104,44,32,104,101,105,103,104,116,41,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,100,97,116,97,32,105,110,115,116,97,110,99,101,111,102,32,65,114,114,97,121,66,117,102,102,101,114,41,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,33,105,115,68,111,116,76,111,116,116,105,101,40,100,97,116,97,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,100,105,115,112,97,116,99,104,69,114,114,111,114,40,10,32,32,32,32,32,32,32,32,32,32,32,32,34,73,110,118,97,108,105,100,32,100,111,116,76,111,116,116,105,101,32,65,114,114,97,121,66,117,102,102,101,114,58,32,84,104,101,32,112,114,111,118,105,100,101,100,32,65,114,114,97,121,66,117,102,102,101,114,32,100,111,101,115,32,110,111,116,32,99,111,110,102,111,114,109,32,116,111,32,116,104,101,32,100,111,116,76,111,116,116,105,101,32,102,111,114,109,97,116,46,34,10,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,108,111,97,100,101,100,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,108,111,97,100,68,111,116,76,111,116,116,105,101,68,97,116,97,40,100,97,116,97,44,32,119,105,100,116,104,44,32,104,101,105,103,104,116,41,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,116,121,112,101,111,102,32,100,97,116,97,32,61,61,61,32,34,111,98,106,101,99,116,34,41,32,123,10,32,32,32,32,32,32,32,32,105,102,32,40,33,105,115,76,111,116,116,105,101,40,100,97,116,97,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,100,105,115,112,97,116,99,104,69,114,114,111,114,40,10,32,32,32,32,32,32,32,32,32,32,32,32,34,73,110,118,97,108,105,100,32,76,111,116,116,105,101,32,74,83,79,78,32,111,98,106,101,99,116,58,32,84,104,101,32,112,114,111,118,105,100,101,100,32,111,98,106,101,99,116,32,100,111,101,115,32,110,111,116,32,99,111,110,102,111,114,109,32,116,111,32,116,104,101,32,76,111,116,116,105,101,32,74,83,79,78,32,102,111,114,109,97,116,46,34,10,32,32,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,108,111,97,100,101,100,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,108,111,97,100,65,110,105,109,97,116,105,111,110,68,97,116,97,40,74,83,79,78,46,115,116,114,105,110,103,105,102,121,40,100,97,116,97,41,44,32,119,105,100,116,104,44,32,104,101,105,103,104,116,41,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,100,105,115,112,97,116,99,104,69,114,114,111,114,40,10,32,32,32,32,32,32,32,32,32,32,96,85,110,115,117,112,112,111,114,116,101,100,32,100,97,116,97,32,116,121,112,101,32,102,111,114,32,97,110,105,109,97,116,105,111,110,32,100,97,116,97,46,32,69,120,112,101,99,116,101,100,58,32,10,32,32,32,32,32,32,32,32,32,32,45,32,115,116,114,105,110,103,32,40,76,111,116,116,105,101,32,74,83,79,78,41,44,10,32,32,32,32,32,32,32,32,32,32,45,32,65,114,114,97,121,66,117,102,102,101,114,32,40,100,111,116,76,111,116,116,105,101,41,44,10,32,32,32,32,32,32,32,32,32,32,45,32,111,98,106,101,99,116,32,40,76,111,116,116,105,101,32,74,83,79,78,41,46,32,10,32,32,32,32,32,32,32,32,32,32,82,101,99,101,105,118,101,100,58,32,36,123,116,121,112,101,111,102,32,100,97,116,97,125,96,10,32,32,32,32,32,32,32,32,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,102,32,40,108,111,97,100,101,100,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,108,111,97,100,34,32,125,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,73,83,95,66,82,79,87,83,69,82,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,114,101,115,105,122,101,40,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,10,32,32,32,32,32,32,32,32,32,32,116,121,112,101,58,32,34,102,114,97,109,101,34,44,10,32,32,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,70,114,97,109,101,58,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,117,114,114,101,110,116,70,114,97,109,101,40,41,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,114,101,110,100,101,114,40,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,111,110,102,105,103,40,41,46,97,117,116,111,112,108,97,121,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,112,108,97,121,40,41,59,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,105,115,80,108,97,121,105,110,103,40,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,112,108,97,121,34,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,97,110,105,109,97,116,105,111,110,70,114,97,109,101,73,100,32,61,32,116,104,105,115,46,95,102,114,97,109,101,77,97,110,97,103,101,114,46,114,101,113,117,101,115,116,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,116,104,105,115,46,95,100,114,97,119,46,98,105,110,100,40,116,104,105,115,41,41,59,10,32,32,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,111,108,101,46,101,114,114,111,114,40,34,115,111,109,101,116,104,105,110,103,32,119,101,110,116,32,119,114,111,110,103,44,32,116,104,101,32,97,110,105,109,97,116,105,111,110,32,119,97,115,32,115,117,112,112,111,115,101,32,116,111,32,97,117,116,111,112,108,97,121,34,41,59,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,100,105,115,112,97,116,99,104,69,114,114,111,114,40,34,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,97,110,105,109,97,116,105,111,110,32,100,97,116,97,34,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,95,108,111,97,100,70,114,111,109,83,114,99,40,115,114,99,41,32,123,10,32,32,32,32,32,32,116,104,105,115,46,95,102,101,116,99,104,68,97,116,97,40,115,114,99,41,46,116,104,101,110,40,40,100,97,116,97,41,32,61,62,32,116,104,105,115,46,95,108,111,97,100,70,114,111,109,68,97,116,97,40,100,97,116,97,41,41,46,99,97,116,99,104,40,40,101,114,114,111,114,41,32,61,62,32,116,104,105,115,46,95,100,105,115,112,97,116,99,104,69,114,114,111,114,40,96,70,97,105,108,101,100,32,116,111,32,108,111,97,100,32,97,110,105,109,97,116,105,111,110,32,100,97,116,97,32,102,114,111,109,32,85,82,76,58,32,36,123,115,114,99,125,46,32,36,123,101,114,114,111,114,125,96,41,41,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,97,99,116,105,118,101,65,110,105,109,97,116,105,111,110,73,100,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,97,99,116,105,118,101,65,110,105,109,97,116,105,111,110,73,100,40,41,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,97,99,116,105,118,101,84,104,101,109,101,73,100,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,97,99,116,105,118,101,84,104,101,109,101,73,100,40,41,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,108,97,121,111,117,116,40,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,108,97,121,111,117,116,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,99,111,110,102,105,103,40,41,46,108,97,121,111,117,116,59,10,32,32,32,32,32,32,105,102,32,40,108,97,121,111,117,116,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,123,10,32,32,32,32,32,32,32,32,32,32,97,108,105,103,110,58,32,91,108,97,121,111,117,116,46,97,108,105,103,110,46,103,101,116,40,48,41,44,32,108,97,121,111,117,116,46,97,108,105,103,110,46,103,101,116,40,49,41,93,44,10,32,32,32,32,32,32,32,32,32,32,102,105,116,58,32,40,40,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,115,119,105,116,99,104,32,40,108,97,121,111,117,116,46,102,105,116,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,63,46,70,105,116,46,67,111,110,116,97,105,110,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,99,111,110,116,97,105,110,34,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,63,46,70,105,116,46,67,111,118,101,114,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,99,111,118,101,114,34,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,63,46,70,105,116,46,70,105,108,108,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,102,105,108,108,34,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,63,46,70,105,116,46,70,105,116,72,101,105,103,104,116,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,102,105,116,45,104,101,105,103,104,116,34,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,63,46,70,105,116,46,70,105,116,87,105,100,116,104,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,102,105,116,45,119,105,100,116,104,34,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,63,46,70,105,116,46,78,111,110,101,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,110,111,110,101,34,59,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,100,101,102,97,117,108,116,58,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,99,111,110,116,97,105,110,34,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,125,41,40,41,10,32,32,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,118,111,105,100,32,48,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,109,97,114,107,101,114,40,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,109,97,114,107,101,114,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,99,111,110,102,105,103,40,41,46,109,97,114,107,101,114,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,109,97,114,107,101,114,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,109,97,110,105,102,101,115,116,40,41,32,123,10,32,32,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,109,97,110,105,102,101,115,116,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,109,97,110,105,102,101,115,116,83,116,114,105,110,103,40,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,32,124,124,32,33,109,97,110,105,102,101,115,116,41,32,114,101,116,117,114,110,32,110,117,108,108,59,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,109,97,110,105,102,101,115,116,74,115,111,110,32,61,32,74,83,79,78,46,112,97,114,115,101,40,109,97,110,105,102,101,115,116,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,79,98,106,101,99,116,46,107,101,121,115,40,109,97,110,105,102,101,115,116,74,115,111,110,41,46,108,101,110,103,116,104,32,61,61,61,32,48,41,32,114,101,116,117,114,110,32,110,117,108,108,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,109,97,110,105,102,101,115,116,74,115,111,110,59,10,32,32,32,32,32,32,125,32,99,97,116,99,104,32,40,95,101,114,114,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,117,108,108,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,114,101,110,100,101,114,67,111,110,102,105,103,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,114,101,110,100,101,114,67,111,110,102,105,103,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,115,101,103,109,101,110,116,40,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,115,101,103,109,101,110,116,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,99,111,110,102,105,103,40,41,46,115,101,103,109,101,110,116,59,10,32,32,32,32,32,32,105,102,32,40,115,101,103,109,101,110,116,32,38,38,32,115,101,103,109,101,110,116,46,115,105,122,101,40,41,32,61,61,61,32,50,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,91,115,101,103,109,101,110,116,46,103,101,116,40,48,41,44,32,115,101,103,109,101,110,116,46,103,101,116,40,49,41,93,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,118,111,105,100,32,48,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,108,111,111,112,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,99,111,110,102,105,103,40,41,46,108,111,111,112,65,110,105,109,97,116,105,111,110,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,109,111,100,101,40,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,109,111,100,101,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,99,111,110,102,105,103,40,41,46,109,111,100,101,59,10,32,32,32,32,32,32,105,102,32,40,109,111,100,101,32,61,61,61,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,63,46,77,111,100,101,46,82,101,118,101,114,115,101,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,114,101,118,101,114,115,101,34,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,109,111,100,101,32,61,61,61,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,63,46,77,111,100,101,46,66,111,117,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,98,111,117,110,99,101,34,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,109,111,100,101,32,61,61,61,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,63,46,77,111,100,101,46,82,101,118,101,114,115,101,66,111,117,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,114,101,118,101,114,115,101,45,98,111,117,110,99,101,34,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,34,102,111,114,119,97,114,100,34,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,105,115,70,114,111,122,101,110,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,105,115,70,114,111,122,101,110,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,32,63,63,32,34,34,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,97,117,116,111,112,108,97,121,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,99,111,110,102,105,103,40,41,46,97,117,116,111,112,108,97,121,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,99,111,110,102,105,103,40,41,46,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,115,112,101,101,100,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,99,111,110,102,105,103,40,41,46,115,112,101,101,100,32,63,63,32,48,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,105,115,82,101,97,100,121,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,33,61,61,32,110,117,108,108,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,105,115,76,111,97,100,101,100,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,105,115,76,111,97,100,101,100,40,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,105,115,80,108,97,121,105,110,103,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,105,115,80,108,97,121,105,110,103,40,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,105,115,80,97,117,115,101,100,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,105,115,80,97,117,115,101,100,40,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,105,115,83,116,111,112,112,101,100,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,105,115,83,116,111,112,112,101,100,40,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,99,117,114,114,101,110,116,70,114,97,109,101,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,99,117,114,114,101,110,116,70,114,97,109,101,40,41,32,63,63,32,48,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,108,111,111,112,67,111,117,110,116,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,108,111,111,112,67,111,117,110,116,40,41,32,63,63,32,48,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,116,111,116,97,108,70,114,97,109,101,115,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,116,111,116,97,108,70,114,97,109,101,115,40,41,32,63,63,32,48,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,100,117,114,97,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,100,117,114,97,116,105,111,110,40,41,32,63,63,32,48,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,115,101,103,109,101,110,116,68,117,114,97,116,105,111,110,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,115,101,103,109,101,110,116,68,117,114,97,116,105,111,110,40,41,32,63,63,32,48,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,32,99,97,110,118,97,115,40,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,99,97,110,118,97,115,59,10,32,32,32,32,125,10,32,32,32,32,108,111,97,100,40,99,111,110,102,105,103,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,32,124,124,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,67,111,110,102,105,103,40,123,10,32,32,32,32,32,32,32,32,97,117,116,111,112,108,97,121,58,32,99,111,110,102,105,103,46,97,117,116,111,112,108,97,121,32,63,63,32,102,97,108,115,101,44,10,32,32,32,32,32,32,32,32,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,58,32,48,44,10,32,32,32,32,32,32,32,32,108,111,111,112,65,110,105,109,97,116,105,111,110,58,32,99,111,110,102,105,103,46,108,111,111,112,32,63,63,32,102,97,108,115,101,44,10,32,32,32,32,32,32,32,32,109,111,100,101,58,32,99,114,101,97,116,101,67,111,114,101,77,111,100,101,40,99,111,110,102,105,103,46,109,111,100,101,32,63,63,32,34,102,111,114,119,97,114,100,34,44,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,41,44,10,32,32,32,32,32,32,32,32,115,101,103,109,101,110,116,58,32,99,114,101,97,116,101,67,111,114,101,83,101,103,109,101,110,116,40,99,111,110,102,105,103,46,115,101,103,109,101,110,116,32,63,63,32,91,93,44,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,41,44,10,32,32,32,32,32,32,32,32,115,112,101,101,100,58,32,99,111,110,102,105,103,46,115,112,101,101,100,32,63,63,32,49,44,10,32,32,32,32,32,32,32,32,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,58,32,99,111,110,102,105,103,46,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,32,63,63,32,116,114,117,101,44,10,32,32,32,32,32,32,32,32,109,97,114,107,101,114,58,32,99,111,110,102,105,103,46,109,97,114,107,101,114,32,63,63,32,34,34,44,10,32,32,32,32,32,32,32,32,108,97,121,111,117,116,58,32,99,111,110,102,105,103,46,108,97,121,111,117,116,32,63,32,123,10,32,32,32,32,32,32,32,32,32,32,97,108,105,103,110,58,32,99,114,101,97,116,101,67,111,114,101,65,108,105,103,110,40,99,111,110,102,105,103,46,108,97,121,111,117,116,46,97,108,105,103,110,44,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,41,44,10,32,32,32,32,32,32,32,32,32,32,102,105,116,58,32,99,114,101,97,116,101,67,111,114,101,70,105,116,40,99,111,110,102,105,103,46,108,97,121,111,117,116,46,102,105,116,44,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,41,10,32,32,32,32,32,32,32,32,125,32,58,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,46,99,114,101,97,116,101,68,101,102,97,117,108,116,76,97,121,111,117,116,40,41,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,105,102,32,40,99,111,110,102,105,103,46,100,97,116,97,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,108,111,97,100,70,114,111,109,68,97,116,97,40,99,111,110,102,105,103,46,100,97,116,97,41,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,99,111,110,102,105,103,46,115,114,99,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,108,111,97,100,70,114,111,109,83,114,99,40,99,111,110,102,105,103,46,115,114,99,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,116,104,105,115,46,115,101,116,66,97,99,107,103,114,111,117,110,100,67,111,108,111,114,40,99,111,110,102,105,103,46,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,32,63,63,32,34,34,41,59,10,32,32,32,32,125,10,32,32,32,32,95,114,101,110,100,101,114,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,32,124,124,32,116,104,105,115,46,95,99,111,110,116,101,120,116,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,110,100,101,114,101,100,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,114,101,110,100,101,114,40,41,59,10,32,32,32,32,32,32,105,102,32,40,114,101,110,100,101,114,101,100,41,32,123,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,98,117,102,102,101,114,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,98,117,102,102,101,114,40,41,59,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,99,108,97,109,112,101,100,66,117,102,102,101,114,32,61,32,110,101,119,32,85,105,110,116,56,67,108,97,109,112,101,100,65,114,114,97,121,40,98,117,102,102,101,114,44,32,48,44,32,116,104,105,115,46,95,99,97,110,118,97,115,46,119,105,100,116,104,32,42,32,116,104,105,115,46,95,99,97,110,118,97,115,46,104,101,105,103,104,116,32,42,32,52,41,59,10,32,32,32,32,32,32,32,32,108,101,116,32,105,109,97,103,101,68,97,116,97,32,61,32,110,117,108,108,59,10,32,32,32,32,32,32,32,32,105,102,32,40,116,121,112,101,111,102,32,73,109,97,103,101,68,97,116,97,32,61,61,61,32,34,117,110,100,101,102,105,110,101,100,34,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,109,97,103,101,68,97,116,97,32,61,32,116,104,105,115,46,95,99,111,110,116,101,120,116,46,99,114,101,97,116,101,73,109,97,103,101,68,97,116,97,40,116,104,105,115,46,95,99,97,110,118,97,115,46,119,105,100,116,104,44,32,116,104,105,115,46,95,99,97,110,118,97,115,46,104,101,105,103,104,116,41,59,10,32,32,32,32,32,32,32,32,32,32,105,109,97,103,101,68,97,116,97,46,100,97,116,97,46,115,101,116,40,99,108,97,109,112,101,100,66,117,102,102,101,114,41,59,10,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,105,109,97,103,101,68,97,116,97,32,61,32,110,101,119,32,73,109,97,103,101,68,97,116,97,40,99,108,97,109,112,101,100,66,117,102,102,101,114,44,32,116,104,105,115,46,95,99,97,110,118,97,115,46,119,105,100,116,104,44,32,116,104,105,115,46,95,99,97,110,118,97,115,46,104,101,105,103,104,116,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,111,110,116,101,120,116,46,112,117,116,73,109,97,103,101,68,97,116,97,40,105,109,97,103,101,68,97,116,97,44,32,48,44,32,48,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,10,32,32,32,32,32,32,32,32,32,32,116,121,112,101,58,32,34,114,101,110,100,101,114,34,44,10,32,32,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,70,114,97,109,101,58,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,117,114,114,101,110,116,70,114,97,109,101,40,41,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,114,117,101,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,95,100,114,97,119,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,32,124,124,32,116,104,105,115,46,95,99,111,110,116,101,120,116,32,61,61,61,32,110,117,108,108,32,124,124,32,33,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,105,115,80,108,97,121,105,110,103,40,41,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,99,111,110,115,116,32,110,101,120,116,70,114,97,109,101,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,114,101,113,117,101,115,116,70,114,97,109,101,40,41,59,10,32,32,32,32,32,32,99,111,110,115,116,32,117,112,100,97,116,101,100,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,70,114,97,109,101,40,110,101,120,116,70,114,97,109,101,41,59,10,32,32,32,32,32,32,105,102,32,40,117,112,100,97,116,101,100,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,10,32,32,32,32,32,32,32,32,32,32,116,121,112,101,58,32,34,102,114,97,109,101,34,44,10,32,32,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,70,114,97,109,101,58,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,117,114,114,101,110,116,70,114,97,109,101,40,41,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,114,101,110,100,101,114,101,100,32,61,32,116,104,105,115,46,95,114,101,110,100,101,114,40,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,114,101,110,100,101,114,101,100,41,32,123,10,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,105,115,67,111,109,112,108,101,116,101,40,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,111,110,102,105,103,40,41,46,108,111,111,112,65,110,105,109,97,116,105,111,110,41,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,121,112,101,58,32,34,108,111,111,112,34,44,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108,111,111,112,67,111,117,110,116,58,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,108,111,111,112,67,111,117,110,116,40,41,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,99,111,109,112,108,101,116,101,34,32,125,41,59,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,116,104,105,115,46,95,97,110,105,109,97,116,105,111,110,70,114,97,109,101,73,100,32,61,32,116,104,105,115,46,95,102,114,97,109,101,77,97,110,97,103,101,114,46,114,101,113,117,101,115,116,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,116,104,105,115,46,95,100,114,97,119,46,98,105,110,100,40,116,104,105,115,41,41,59,10,32,32,32,32,125,10,32,32,32,32,112,108,97,121,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,99,111,110,115,116,32,111,107,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,112,108,97,121,40,41,59,10,32,32,32,32,32,32,105,102,32,40,111,107,32,124,124,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,105,115,80,108,97,121,105,110,103,40,41,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,105,115,70,114,111,122,101,110,32,61,32,102,97,108,115,101,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,112,108,97,121,34,32,125,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,97,110,105,109,97,116,105,111,110,70,114,97,109,101,73,100,32,61,32,116,104,105,115,46,95,102,114,97,109,101,77,97,110,97,103,101,114,46,114,101,113,117,101,115,116,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,116,104,105,115,46,95,100,114,97,119,46,98,105,110,100,40,116,104,105,115,41,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,112,97,117,115,101,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,99,111,110,115,116,32,111,107,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,112,97,117,115,101,40,41,59,10,32,32,32,32,32,32,105,102,32,40,111,107,32,124,124,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,105,115,80,97,117,115,101,100,40,41,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,112,97,117,115,101,34,32,125,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,115,116,111,112,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,99,111,110,115,116,32,111,107,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,116,111,112,40,41,59,10,32,32,32,32,32,32,105,102,32,40,111,107,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,102,114,97,109,101,34,44,32,99,117,114,114,101,110,116,70,114,97,109,101,58,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,117,114,114,101,110,116,70,114,97,109,101,40,41,32,125,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,114,101,110,100,101,114,40,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,115,116,111,112,34,32,125,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,115,101,116,70,114,97,109,101,40,102,114,97,109,101,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,105,102,32,40,102,114,97,109,101,32,60,32,48,32,124,124,32,102,114,97,109,101,32,62,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,116,111,116,97,108,70,114,97,109,101,115,40,41,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,99,111,110,115,116,32,111,107,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,101,107,40,102,114,97,109,101,41,59,10,32,32,32,32,32,32,105,102,32,40,111,107,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,102,114,97,109,101,34,44,32,99,117,114,114,101,110,116,70,114,97,109,101,58,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,117,114,114,101,110,116,70,114,97,109,101,40,41,32,125,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,114,101,110,100,101,114,40,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,115,101,116,83,112,101,101,100,40,115,112,101,101,100,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,67,111,110,102,105,103,40,123,10,32,32,32,32,32,32,32,32,46,46,46,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,111,110,102,105,103,40,41,44,10,32,32,32,32,32,32,32,32,115,112,101,101,100,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,125,10,32,32,32,32,115,101,116,66,97,99,107,103,114,111,117,110,100,67,111,108,111,114,40,99,111,108,111,114,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,105,102,32,40,73,83,95,66,82,79,87,83,69,82,32,38,38,32,116,104,105,115,46,95,99,97,110,118,97,115,32,105,110,115,116,97,110,99,101,111,102,32,72,84,77,76,67,97,110,118,97,115,69,108,101,109,101,110,116,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,115,116,121,108,101,46,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,32,61,32,99,111,108,111,114,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,67,111,110,102,105,103,40,123,10,32,32,32,32,32,32,32,32,32,32,46,46,46,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,111,110,102,105,103,40,41,44,10,32,32,32,32,32,32,32,32,32,32,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,58,32,104,101,120,83,116,114,105,110,103,84,111,82,71,66,65,73,110,116,40,99,111,108,111,114,41,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,116,104,105,115,46,95,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,32,61,32,99,111,108,111,114,59,10,32,32,32,32,125,10,32,32,32,32,115,101,116,76,111,111,112,40,108,111,111,112,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,67,111,110,102,105,103,40,123,10,32,32,32,32,32,32,32,32,46,46,46,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,111,110,102,105,103,40,41,44,10,32,32,32,32,32,32,32,32,108,111,111,112,65,110,105,109,97,116,105,111,110,58,32,108,111,111,112,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,125,10,32,32,32,32,115,101,116,85,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,40,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,67,111,110,102,105,103,40,123,10,32,32,32,32,32,32,32,32,46,46,46,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,111,110,102,105,103,40,41,44,10,32,32,32,32,32,32,32,32,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,125,10,32,32,32,32,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,40,116,121,112,101,44,32,108,105,115,116,101,110,101,114,41,32,123,10,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,40,116,121,112,101,44,32,108,105,115,116,101,110,101,114,41,59,10,32,32,32,32,125,10,32,32,32,32,114,101,109,111,118,101,69,118,101,110,116,76,105,115,116,101,110,101,114,40,116,121,112,101,44,32,108,105,115,116,101,110,101,114,41,32,123,10,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,114,101,109,111,118,101,69,118,101,110,116,76,105,115,116,101,110,101,114,40,116,121,112,101,44,32,108,105,115,116,101,110,101,114,41,59,10,32,32,32,32,125,10,32,32,32,32,100,101,115,116,114,111,121,40,41,32,123,10,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,100,101,108,101,116,101,40,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,32,110,117,108,108,59,10,32,32,32,32,32,32,116,104,105,115,46,95,99,111,110,116,101,120,116,32,61,32,110,117,108,108,59,10,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,10,32,32,32,32,32,32,32,32,116,121,112,101,58,32,34,100,101,115,116,114,111,121,34,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,114,101,109,111,118,101,65,108,108,69,118,101,110,116,76,105,115,116,101,110,101,114,115,40,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,99,108,101,97,110,117,112,83,116,97,116,101,77,97,99,104,105,110,101,76,105,115,116,101,110,101,114,115,40,41,59,10,32,32,32,32,125,10,32,32,32,32,102,114,101,101,122,101,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,97,110,105,109,97,116,105,111,110,70,114,97,109,101,73,100,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,116,104,105,115,46,95,102,114,97,109,101,77,97,110,97,103,101,114,46,99,97,110,99,101,108,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,116,104,105,115,46,95,97,110,105,109,97,116,105,111,110,70,114,97,109,101,73,100,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,97,110,105,109,97,116,105,111,110,70,114,97,109,101,73,100,32,61,32,110,117,108,108,59,10,32,32,32,32,32,32,116,104,105,115,46,95,105,115,70,114,111,122,101,110,32,61,32,116,114,117,101,59,10,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,102,114,101,101,122,101,34,32,125,41,59,10,32,32,32,32,125,10,32,32,32,32,117,110,102,114,101,101,122,101,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,97,110,105,109,97,116,105,111,110,70,114,97,109,101,73,100,32,33,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,116,104,105,115,46,95,97,110,105,109,97,116,105,111,110,70,114,97,109,101,73,100,32,61,32,116,104,105,115,46,95,102,114,97,109,101,77,97,110,97,103,101,114,46,114,101,113,117,101,115,116,65,110,105,109,97,116,105,111,110,70,114,97,109,101,40,116,104,105,115,46,95,100,114,97,119,46,98,105,110,100,40,116,104,105,115,41,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,105,115,70,114,111,122,101,110,32,61,32,102,97,108,115,101,59,10,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,117,110,102,114,101,101,122,101,34,32,125,41,59,10,32,32,32,32,125,10,32,32,32,32,114,101,115,105,122,101,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,73,83,95,66,82,79,87,83,69,82,32,38,38,32,116,104,105,115,46,95,99,97,110,118,97,115,32,105,110,115,116,97,110,99,101,111,102,32,72,84,77,76,67,97,110,118,97,115,69,108,101,109,101,110,116,41,32,123,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,100,112,114,32,61,32,116,104,105,115,46,95,114,101,110,100,101,114,67,111,110,102,105,103,46,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,32,124,124,32,119,105,110,100,111,119,46,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,32,124,124,32,49,59,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,123,32,104,101,105,103,104,116,58,32,99,108,105,101,110,116,72,101,105,103,104,116,44,32,119,105,100,116,104,58,32,99,108,105,101,110,116,87,105,100,116,104,32,125,32,61,32,116,104,105,115,46,95,99,97,110,118,97,115,46,103,101,116,66,111,117,110,100,105,110,103,67,108,105,101,110,116,82,101,99,116,40,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,119,105,100,116,104,32,61,32,99,108,105,101,110,116,87,105,100,116,104,32,42,32,100,112,114,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,104,101,105,103,104,116,32,61,32,99,108,105,101,110,116,72,101,105,103,104,116,32,42,32,100,112,114,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,99,111,110,115,116,32,111,107,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,114,101,115,105,122,101,40,116,104,105,115,46,95,99,97,110,118,97,115,46,119,105,100,116,104,44,32,116,104,105,115,46,95,99,97,110,118,97,115,46,104,101,105,103,104,116,41,59,10,32,32,32,32,32,32,105,102,32,40,111,107,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,114,101,110,100,101,114,40,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,115,101,116,83,101,103,109,101,110,116,40,115,116,97,114,116,70,114,97,109,101,44,32,101,110,100,70,114,97,109,101,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,32,124,124,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,67,111,110,102,105,103,40,123,10,32,32,32,32,32,32,32,32,46,46,46,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,111,110,102,105,103,40,41,44,10,32,32,32,32,32,32,32,32,115,101,103,109,101,110,116,58,32,99,114,101,97,116,101,67,111,114,101,83,101,103,109,101,110,116,40,91,115,116,97,114,116,70,114,97,109,101,44,32,101,110,100,70,114,97,109,101,93,44,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,41,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,125,10,32,32,32,32,115,101,116,77,111,100,101,40,109,111,100,101,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,32,124,124,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,67,111,110,102,105,103,40,123,10,32,32,32,32,32,32,32,32,46,46,46,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,111,110,102,105,103,40,41,44,10,32,32,32,32,32,32,32,32,109,111,100,101,58,32,99,114,101,97,116,101,67,111,114,101,77,111,100,101,40,109,111,100,101,44,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,41,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,125,10,32,32,32,32,115,101,116,82,101,110,100,101,114,67,111,110,102,105,103,40,99,111,110,102,105,103,41,32,123,10,32,32,32,32,32,32,116,104,105,115,46,95,114,101,110,100,101,114,67,111,110,102,105,103,32,61,32,123,10,32,32,32,32,32,32,32,32,46,46,46,116,104,105,115,46,95,114,101,110,100,101,114,67,111,110,102,105,103,44,10,32,32,32,32,32,32,32,32,46,46,46,99,111,110,102,105,103,44,10,32,32,32,32,32,32,32,32,47,47,32,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,32,105,115,32,97,32,115,112,101,99,105,97,108,32,99,97,115,101,44,32,105,116,32,115,104,111,117,108,100,32,98,101,32,115,101,116,32,116,111,32,116,104,101,32,100,101,102,97,117,108,116,32,118,97,108,117,101,32,105,102,32,105,116,39,115,32,110,111,116,32,112,114,111,118,105,100,101,100,10,32,32,32,32,32,32,32,32,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,58,32,99,111,110,102,105,103,46,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,32,124,124,32,103,101,116,68,101,102,97,117,108,116,68,80,82,40,41,10,32,32,32,32,32,32,125,59,10,32,32,32,32,125,10,32,32,32,32,108,111,97,100,65,110,105,109,97,116,105,111,110,40,97,110,105,109,97,116,105,111,110,73,100,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,32,124,124,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,97,99,116,105,118,101,65,110,105,109,97,116,105,111,110,73,100,40,41,32,61,61,61,32,97,110,105,109,97,116,105,111,110,73,100,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,99,111,110,115,116,32,108,111,97,100,101,100,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,108,111,97,100,65,110,105,109,97,116,105,111,110,40,97,110,105,109,97,116,105,111,110,73,100,44,32,116,104,105,115,46,95,99,97,110,118,97,115,46,119,105,100,116,104,44,32,116,104,105,115,46,95,99,97,110,118,97,115,46,104,101,105,103,104,116,41,59,10,32,32,32,32,32,32,105,102,32,40,108,111,97,100,101,100,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,32,116,121,112,101,58,32,34,108,111,97,100,34,32,125,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,114,101,115,105,122,101,40,41,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,101,118,101,110,116,77,97,110,97,103,101,114,46,100,105,115,112,97,116,99,104,40,123,10,32,32,32,32,32,32,32,32,32,32,116,121,112,101,58,32,34,108,111,97,100,69,114,114,111,114,34,44,10,32,32,32,32,32,32,32,32,32,32,101,114,114,111,114,58,32,110,101,119,32,69,114,114,111,114,40,96,70,97,105,108,101,100,32,116,111,32,97,110,105,109,97,116,105,111,110,32,58,36,123,97,110,105,109,97,116,105,111,110,73,100,125,96,41,10,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,115,101,116,77,97,114,107,101,114,40,109,97,114,107,101,114,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,67,111,110,102,105,103,40,123,10,32,32,32,32,32,32,32,32,46,46,46,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,111,110,102,105,103,40,41,44,10,32,32,32,32,32,32,32,32,109,97,114,107,101,114,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,125,10,32,32,32,32,109,97,114,107,101,114,115,40,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,109,97,114,107,101,114,115,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,109,97,114,107,101,114,115,40,41,59,10,32,32,32,32,32,32,105,102,32,40,109,97,114,107,101,114,115,41,32,123,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,117,108,116,32,61,32,91,93,59,10,32,32,32,32,32,32,32,32,102,111,114,32,40,108,101,116,32,105,32,61,32,48,59,32,105,32,60,32,109,97,114,107,101,114,115,46,115,105,122,101,40,41,59,32,105,32,43,61,32,49,41,32,123,10,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,109,97,114,107,101,114,32,61,32,109,97,114,107,101,114,115,46,103,101,116,40,105,41,59,10,32,32,32,32,32,32,32,32,32,32,114,101,115,117,108,116,46,112,117,115,104,40,123,10,32,32,32,32,32,32,32,32,32,32,32,32,110,97,109,101,58,32,109,97,114,107,101,114,46,110,97,109,101,44,10,32,32,32,32,32,32,32,32,32,32,32,32,116,105,109,101,58,32,109,97,114,107,101,114,46,116,105,109,101,44,10,32,32,32,32,32,32,32,32,32,32,32,32,100,117,114,97,116,105,111,110,58,32,109,97,114,107,101,114,46,100,117,114,97,116,105,111,110,10,32,32,32,32,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,114,101,115,117,108,116,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,91,93,59,10,32,32,32,32,125,10,32,32,32,32,108,111,97,100,84,104,101,109,101,40,116,104,101,109,101,73,100,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,32,32,99,111,110,115,116,32,108,111,97,100,101,100,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,108,111,97,100,84,104,101,109,101,40,116,104,101,109,101,73,100,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,114,101,110,100,101,114,40,41,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,108,111,97,100,101,100,59,10,32,32,32,32,125,10,32,32,32,32,108,111,97,100,84,104,101,109,101,68,97,116,97,40,116,104,101,109,101,68,97,116,97,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,32,32,99,111,110,115,116,32,108,111,97,100,101,100,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,108,111,97,100,84,104,101,109,101,68,97,116,97,40,116,104,101,109,101,68,97,116,97,41,59,10,32,32,32,32,32,32,116,104,105,115,46,95,114,101,110,100,101,114,40,41,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,108,111,97,100,101,100,59,10,32,32,32,32,125,10,32,32,32,32,115,101,116,76,97,121,111,117,116,40,108,97,121,111,117,116,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,32,124,124,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,67,111,110,102,105,103,40,123,10,32,32,32,32,32,32,32,32,46,46,46,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,99,111,110,102,105,103,40,41,44,10,32,32,32,32,32,32,32,32,108,97,121,111,117,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,97,108,105,103,110,58,32,99,114,101,97,116,101,67,111,114,101,65,108,105,103,110,40,108,97,121,111,117,116,46,97,108,105,103,110,44,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,41,44,10,32,32,32,32,32,32,32,32,32,32,102,105,116,58,32,99,114,101,97,116,101,67,111,114,101,70,105,116,40,108,97,121,111,117,116,46,102,105,116,44,32,95,68,111,116,76,111,116,116,105,101,46,95,119,97,115,109,77,111,100,117,108,101,41,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,125,10,32,32,32,32,115,101,116,86,105,101,119,112,111,114,116,40,120,44,32,121,44,32,119,105,100,116,104,44,32,104,101,105,103,104,116,41,32,123,10,32,32,32,32,32,32,105,102,32,40,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,61,61,61,32,110,117,108,108,41,32,114,101,116,117,114,110,32,102,97,108,115,101,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,101,116,86,105,101,119,112,111,114,116,40,120,44,32,121,44,32,119,105,100,116,104,44,32,104,101,105,103,104,116,41,59,10,32,32,32,32,125,10,32,32,32,32,115,116,97,116,105,99,32,115,101,116,87,97,115,109,85,114,108,40,117,114,108,41,32,123,10,32,32,32,32,32,32,68,111,116,76,111,116,116,105,101,87,97,115,109,76,111,97,100,101,114,46,115,101,116,87,97,115,109,85,114,108,40,117,114,108,41,59,10,32,32,32,32,125,10,32,32,32,32,108,111,97,100,83,116,97,116,101,77,97,99,104,105,110,101,40,115,116,97,116,101,77,97,99,104,105,110,101,73,100,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,108,111,97,100,83,116,97,116,101,77,97,99,104,105,110,101,40,115,116,97,116,101,77,97,99,104,105,110,101,73,100,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,115,116,97,114,116,83,116,97,116,101,77,97,99,104,105,110,101,40,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,115,116,97,114,116,101,100,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,115,116,97,114,116,83,116,97,116,101,77,97,99,104,105,110,101,40,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,32,32,105,102,32,40,115,116,97,114,116,101,100,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,115,101,116,117,112,83,116,97,116,101,77,97,99,104,105,110,101,76,105,115,116,101,110,101,114,115,40,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,115,116,97,114,116,101,100,59,10,32,32,32,32,125,10,32,32,32,32,115,116,111,112,83,116,97,116,101,77,97,99,104,105,110,101,40,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,115,116,111,112,112,101,100,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,115,116,111,112,83,116,97,116,101,77,97,99,104,105,110,101,40,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,32,32,105,102,32,40,115,116,111,112,112,101,100,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,108,101,97,110,117,112,83,116,97,116,101,77,97,99,104,105,110,101,76,105,115,116,101,110,101,114,115,40,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,115,116,111,112,112,101,100,59,10,32,32,32,32,125,10,32,32,32,32,95,103,101,116,80,111,105,110,116,101,114,80,111,115,105,116,105,111,110,40,101,118,101,110,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,99,116,32,61,32,116,104,105,115,46,95,99,97,110,118,97,115,46,103,101,116,66,111,117,110,100,105,110,103,67,108,105,101,110,116,82,101,99,116,40,41,59,10,32,32,32,32,32,32,99,111,110,115,116,32,115,99,97,108,101,88,32,61,32,116,104,105,115,46,95,99,97,110,118,97,115,46,119,105,100,116,104,32,47,32,114,101,99,116,46,119,105,100,116,104,59,10,32,32,32,32,32,32,99,111,110,115,116,32,115,99,97,108,101,89,32,61,32,116,104,105,115,46,95,99,97,110,118,97,115,46,104,101,105,103,104,116,32,47,32,114,101,99,116,46,104,101,105,103,104,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,32,61,32,116,104,105,115,46,95,114,101,110,100,101,114,67,111,110,102,105,103,46,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,32,124,124,32,119,105,110,100,111,119,46,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,32,124,124,32,49,59,10,32,32,32,32,32,32,99,111,110,115,116,32,120,32,61,32,40,101,118,101,110,116,46,99,108,105,101,110,116,88,32,45,32,114,101,99,116,46,108,101,102,116,41,32,42,32,115,99,97,108,101,88,32,47,32,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,59,10,32,32,32,32,32,32,99,111,110,115,116,32,121,32,61,32,40,101,118,101,110,116,46,99,108,105,101,110,116,89,32,45,32,114,101,99,116,46,116,111,112,41,32,42,32,115,99,97,108,101,89,32,47,32,100,101,118,105,99,101,80,105,120,101,108,82,97,116,105,111,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,123,10,32,32,32,32,32,32,32,32,120,44,10,32,32,32,32,32,32,32,32,121,10,32,32,32,32,32,32,125,59,10,32,32,32,32,125,10,32,32,32,32,95,111,110,80,111,105,110,116,101,114,85,112,40,101,118,101,110,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,123,32,120,44,32,121,32,125,32,61,32,116,104,105,115,46,95,103,101,116,80,111,105,110,116,101,114,80,111,115,105,116,105,111,110,40,101,118,101,110,116,41,59,10,32,32,32,32,32,32,116,104,105,115,46,112,111,115,116,83,116,97,116,101,77,97,99,104,105,110,101,69,118,101,110,116,40,96,79,110,80,111,105,110,116,101,114,85,112,58,32,36,123,120,125,32,36,123,121,125,96,41,59,10,32,32,32,32,125,10,32,32,32,32,95,111,110,80,111,105,110,116,101,114,68,111,119,110,40,101,118,101,110,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,123,32,120,44,32,121,32,125,32,61,32,116,104,105,115,46,95,103,101,116,80,111,105,110,116,101,114,80,111,115,105,116,105,111,110,40,101,118,101,110,116,41,59,10,32,32,32,32,32,32,116,104,105,115,46,112,111,115,116,83,116,97,116,101,77,97,99,104,105,110,101,69,118,101,110,116,40,96,79,110,80,111,105,110,116,101,114,68,111,119,110,58,32,36,123,120,125,32,36,123,121,125,96,41,59,10,32,32,32,32,125,10,32,32,32,32,95,111,110,80,111,105,110,116,101,114,77,111,118,101,40,101,118,101,110,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,123,32,120,44,32,121,32,125,32,61,32,116,104,105,115,46,95,103,101,116,80,111,105,110,116,101,114,80,111,115,105,116,105,111,110,40,101,118,101,110,116,41,59,10,32,32,32,32,32,32,116,104,105,115,46,112,111,115,116,83,116,97,116,101,77,97,99,104,105,110,101,69,118,101,110,116,40,96,79,110,80,111,105,110,116,101,114,77,111,118,101,58,32,36,123,120,125,32,36,123,121,125,96,41,59,10,32,32,32,32,125,10,32,32,32,32,95,111,110,80,111,105,110,116,101,114,69,110,116,101,114,40,101,118,101,110,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,123,32,120,44,32,121,32,125,32,61,32,116,104,105,115,46,95,103,101,116,80,111,105,110,116,101,114,80,111,115,105,116,105,111,110,40,101,118,101,110,116,41,59,10,32,32,32,32,32,32,116,104,105,115,46,112,111,115,116,83,116,97,116,101,77,97,99,104,105,110,101,69,118,101,110,116,40,96,79,110,80,111,105,110,116,101,114,69,110,116,101,114,58,32,36,123,120,125,32,36,123,121,125,96,41,59,10,32,32,32,32,125,10,32,32,32,32,95,111,110,80,111,105,110,116,101,114,76,101,97,118,101,40,101,118,101,110,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,123,32,120,44,32,121,32,125,32,61,32,116,104,105,115,46,95,103,101,116,80,111,105,110,116,101,114,80,111,115,105,116,105,111,110,40,101,118,101,110,116,41,59,10,32,32,32,32,32,32,116,104,105,115,46,112,111,115,116,83,116,97,116,101,77,97,99,104,105,110,101,69,118,101,110,116,40,96,79,110,80,111,105,110,116,101,114,69,120,105,116,58,32,36,123,120,125,32,36,123,121,125,96,41,59,10,32,32,32,32,125,10,32,32,32,32,95,111,110,67,111,109,112,108,101,116,101,40,41,32,123,10,32,32,32,32,32,32,116,104,105,115,46,112,111,115,116,83,116,97,116,101,77,97,99,104,105,110,101,69,118,101,110,116,40,34,79,110,67,111,109,112,108,101,116,101,34,41,59,10,32,32,32,32,125,10,32,32,32,32,47,42,42,10,32,32,32,32,32,42,32,64,101,120,112,101,114,105,109,101,110,116,97,108,10,32,32,32,32,32,42,32,64,112,97,114,97,109,32,101,118,101,110,116,32,45,32,84,104,101,32,101,118,101,110,116,32,116,111,32,98,101,32,112,111,115,116,101,100,32,116,111,32,116,104,101,32,115,116,97,116,101,32,109,97,99,104,105,110,101,10,32,32,32,32,32,42,32,64,114,101,116,117,114,110,115,32,98,111,111,108,101,97,110,32,45,32,116,114,117,101,32,105,102,32,116,104,101,32,101,118,101,110,116,32,119,97,115,32,112,111,115,116,101,100,32,115,117,99,99,101,115,115,102,117,108,108,121,44,32,102,97,108,115,101,32,111,116,104,101,114,119,105,115,101,10,32,32,32,32,32,42,47,10,32,32,32,32,112,111,115,116,83,116,97,116,101,77,97,99,104,105,110,101,69,118,101,110,116,40,101,118,101,110,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,114,116,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,112,111,115,116,69,118,101,110,116,80,97,121,108,111,97,100,40,101,118,101,110,116,41,32,63,63,32,49,59,10,32,32,32,32,32,32,105,102,32,40,114,116,32,61,61,61,32,50,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,112,108,97,121,40,41,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,114,116,32,61,61,61,32,51,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,112,97,117,115,101,40,41,59,10,32,32,32,32,32,32,125,32,101,108,115,101,32,105,102,32,40,114,116,32,61,61,61,32,52,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,114,101,110,100,101,114,40,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,114,116,59,10,32,32,32,32,125,10,32,32,32,32,103,101,116,83,116,97,116,101,77,97,99,104,105,110,101,76,105,115,116,101,110,101,114,115,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,33,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,41,32,114,101,116,117,114,110,32,91,93,59,10,32,32,32,32,32,32,99,111,110,115,116,32,108,105,115,116,101,110,101,114,115,86,101,99,116,111,114,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,46,115,116,97,116,101,77,97,99,104,105,110,101,70,114,97,109,101,119,111,114,107,83,101,116,117,112,40,41,59,10,32,32,32,32,32,32,99,111,110,115,116,32,108,105,115,116,101,110,101,114,115,32,61,32,91,93,59,10,32,32,32,32,32,32,102,111,114,32,40,108,101,116,32,105,32,61,32,48,59,32,105,32,60,32,108,105,115,116,101,110,101,114,115,86,101,99,116,111,114,46,115,105,122,101,40,41,59,32,105,32,43,61,32,49,41,32,123,10,32,32,32,32,32,32,32,32,108,105,115,116,101,110,101,114,115,46,112,117,115,104,40,108,105,115,116,101,110,101,114,115,86,101,99,116,111,114,46,103,101,116,40,105,41,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,108,105,115,116,101,110,101,114,115,59,10,32,32,32,32,125,10,32,32,32,32,95,115,101,116,117,112,83,116,97,116,101,77,97,99,104,105,110,101,76,105,115,116,101,110,101,114,115,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,73,83,95,66,82,79,87,83,69,82,32,38,38,32,116,104,105,115,46,95,99,97,110,118,97,115,32,105,110,115,116,97,110,99,101,111,102,32,72,84,77,76,67,97,110,118,97,115,69,108,101,109,101,110,116,32,38,38,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,32,33,61,61,32,110,117,108,108,32,38,38,32,116,104,105,115,46,105,115,76,111,97,100,101,100,41,32,123,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,108,105,115,116,101,110,101,114,115,32,61,32,116,104,105,115,46,103,101,116,83,116,97,116,101,77,97,99,104,105,110,101,76,105,115,116,101,110,101,114,115,40,41,59,10,32,32,32,32,32,32,32,32,105,102,32,40,108,105,115,116,101,110,101,114,115,46,105,110,99,108,117,100,101,115,40,34,80,111,105,110,116,101,114,85,112,34,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,112,111,105,110,116,101,114,117,112,34,44,32,116,104,105,115,46,95,112,111,105,110,116,101,114,85,112,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,105,102,32,40,108,105,115,116,101,110,101,114,115,46,105,110,99,108,117,100,101,115,40,34,80,111,105,110,116,101,114,68,111,119,110,34,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,112,111,105,110,116,101,114,100,111,119,110,34,44,32,116,104,105,115,46,95,112,111,105,110,116,101,114,68,111,119,110,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,105,102,32,40,108,105,115,116,101,110,101,114,115,46,105,110,99,108,117,100,101,115,40,34,80,111,105,110,116,101,114,77,111,118,101,34,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,112,111,105,110,116,101,114,109,111,118,101,34,44,32,116,104,105,115,46,95,112,111,105,110,116,101,114,77,111,118,101,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,105,102,32,40,108,105,115,116,101,110,101,114,115,46,105,110,99,108,117,100,101,115,40,34,80,111,105,110,116,101,114,69,110,116,101,114,34,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,112,111,105,110,116,101,114,101,110,116,101,114,34,44,32,116,104,105,115,46,95,112,111,105,110,116,101,114,69,110,116,101,114,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,105,102,32,40,108,105,115,116,101,110,101,114,115,46,105,110,99,108,117,100,101,115,40,34,80,111,105,110,116,101,114,69,120,105,116,34,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,112,111,105,110,116,101,114,108,101,97,118,101,34,44,32,116,104,105,115,46,95,112,111,105,110,116,101,114,69,120,105,116,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,105,102,32,40,108,105,115,116,101,110,101,114,115,46,105,110,99,108,117,100,101,115,40,34,67,111,109,112,108,101,116,101,34,41,41,32,123,10,32,32,32,32,32,32,32,32,32,32,116,104,105,115,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,99,111,109,112,108,101,116,101,34,44,32,116,104,105,115,46,95,111,110,67,111,109,112,108,101,116,101,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,95,99,108,101,97,110,117,112,83,116,97,116,101,77,97,99,104,105,110,101,76,105,115,116,101,110,101,114,115,40,41,32,123,10,32,32,32,32,32,32,105,102,32,40,73,83,95,66,82,79,87,83,69,82,32,38,38,32,116,104,105,115,46,95,99,97,110,118,97,115,32,105,110,115,116,97,110,99,101,111,102,32,72,84,77,76,67,97,110,118,97,115,69,108,101,109,101,110,116,41,32,123,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,114,101,109,111,118,101,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,112,111,105,110,116,101,114,117,112,34,44,32,116,104,105,115,46,95,112,111,105,110,116,101,114,85,112,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,114,101,109,111,118,101,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,112,111,105,110,116,101,114,100,111,119,110,34,44,32,116,104,105,115,46,95,112,111,105,110,116,101,114,68,111,119,110,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,114,101,109,111,118,101,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,112,111,105,110,116,101,114,109,111,118,101,34,44,32,116,104,105,115,46,95,112,111,105,110,116,101,114,77,111,118,101,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,114,101,109,111,118,101,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,112,111,105,110,116,101,114,101,110,116,101,114,34,44,32,116,104,105,115,46,95,112,111,105,110,116,101,114,69,110,116,101,114,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,95,99,97,110,118,97,115,46,114,101,109,111,118,101,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,112,111,105,110,116,101,114,108,101,97,118,101,34,44,32,116,104,105,115,46,95,112,111,105,110,116,101,114,69,120,105,116,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,32,32,116,104,105,115,46,114,101,109,111,118,101,69,118,101,110,116,76,105,115,116,101,110,101,114,40,34,99,111,109,112,108,101,116,101,34,44,32,116,104,105,115,46,95,111,110,67,111,109,112,108,101,116,101,77,101,116,104,111,100,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,125,10,32,32,32,32,108,111,97,100,83,116,97,116,101,77,97,99,104,105,110,101,68,97,116,97,40,115,116,97,116,101,77,97,99,104,105,110,101,68,97,116,97,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,108,111,97,100,83,116,97,116,101,77,97,99,104,105,110,101,68,97,116,97,40,115,116,97,116,101,77,97,99,104,105,110,101,68,97,116,97,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,97,110,105,109,97,116,105,111,110,83,105,122,101,40,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,119,105,100,116,104,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,97,110,105,109,97,116,105,111,110,83,105,122,101,40,41,46,103,101,116,40,48,41,32,63,63,32,48,59,10,32,32,32,32,32,32,99,111,110,115,116,32,104,101,105,103,104,116,32,61,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,97,110,105,109,97,116,105,111,110,83,105,122,101,40,41,46,103,101,116,40,49,41,32,63,63,32,48,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,123,10,32,32,32,32,32,32,32,32,119,105,100,116,104,44,10,32,32,32,32,32,32,32,32,104,101,105,103,104,116,10,32,32,32,32,32,32,125,59,10,32,32,32,32,125,10,32,32,32,32,115,101,116,83,116,97,116,101,77,97,99,104,105,110,101,66,111,111,108,101,97,110,67,111,110,116,101,120,116,40,110,97,109,101,44,32,118,97,108,117,101,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,115,101,116,83,116,97,116,101,77,97,99,104,105,110,101,66,111,111,108,101,97,110,67,111,110,116,101,120,116,40,110,97,109,101,44,32,118,97,108,117,101,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,115,101,116,83,116,97,116,101,77,97,99,104,105,110,101,78,117,109,101,114,105,99,67,111,110,116,101,120,116,40,110,97,109,101,44,32,118,97,108,117,101,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,115,101,116,83,116,97,116,101,77,97,99,104,105,110,101,78,117,109,101,114,105,99,67,111,110,116,101,120,116,40,110,97,109,101,44,32,118,97,108,117,101,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,32,32,115,101,116,83,116,97,116,101,77,97,99,104,105,110,101,83,116,114,105,110,103,67,111,110,116,101,120,116,40,110,97,109,101,44,32,118,97,108,117,101,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,116,104,105,115,46,95,100,111,116,76,111,116,116,105,101,67,111,114,101,63,46,115,101,116,83,116,97,116,101,77,97,99,104,105,110,101,83,116,114,105,110,103,67,111,110,116,101,120,116,40,110,97,109,101,44,32,118,97,108,117,101,41,32,63,63,32,102,97,108,115,101,59,10,32,32,32,32,125,10,32,32,125,59,10,32,32,95,95,112,117,98,108,105,99,70,105,101,108,100,40,95,68,111,116,76,111,116,116,105,101,44,32,34,95,119,97,115,109,77,111,100,117,108,101,34,44,32,110,117,108,108,41,59,10,32,32,118,97,114,32,68,111,116,76,111,116,116,105,101,32,61,32,95,68,111,116,76,111,116,116,105,101,59,10,10,32,32,47,47,32,115,114,99,47,119,111,114,107,101,114,47,100,111,116,108,111,116,116,105,101,46,119,111,114,107,101,114,46,116,115,10,32,32,118,97,114,32,105,110,115,116,97,110,99,101,115,77,97,112,32,61,32,47,42,32,64,95,95,80,85,82,69,95,95,32,42,47,32,110,101,119,32,77,97,112,40,41,59,10,32,32,118,97,114,32,101,118,101,110,116,72,97,110,100,108,101,114,77,97,112,32,61,32,123,10,32,32,32,32,114,101,97,100,121,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,82,101,97,100,121,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,99,111,109,112,108,101,116,101,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,67,111,109,112,108,101,116,101,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,108,111,97,100,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,108,111,97,100,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,76,111,97,100,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,108,111,97,100,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,108,111,97,100,69,114,114,111,114,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,108,111,97,100,69,114,114,111,114,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,76,111,97,100,69,114,114,111,114,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,108,111,97,100,69,114,114,111,114,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,108,111,111,112,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,108,111,111,112,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,76,111,111,112,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,108,111,111,112,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,112,108,97,121,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,112,108,97,121,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,80,108,97,121,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,112,108,97,121,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,112,97,117,115,101,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,112,97,117,115,101,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,80,97,117,115,101,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,112,97,117,115,101,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,116,111,112,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,115,116,111,112,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,83,116,111,112,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,115,116,111,112,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,102,114,97,109,101,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,102,114,97,109,101,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,70,114,97,109,101,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,102,114,97,109,101,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,114,101,110,100,101,114,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,110,100,101,114,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,82,101,110,100,101,114,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,114,101,110,100,101,114,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,102,114,101,101,122,101,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,102,114,101,101,122,101,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,70,114,101,101,122,101,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,102,114,101,101,122,101,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,117,110,102,114,101,101,122,101,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,117,110,102,114,101,101,122,101,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,85,110,102,114,101,101,122,101,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,117,110,102,114,101,101,122,101,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,100,101,115,116,114,111,121,58,32,40,105,110,115,116,97,110,99,101,73,100,41,32,61,62,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,100,101,115,116,114,111,121,69,118,101,110,116,32,61,32,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,34,34,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,34,111,110,68,101,115,116,114,111,121,34,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,58,32,123,10,32,32,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,44,10,32,32,32,32,32,32,32,32,32,32,101,118,101,110,116,58,32,100,101,115,116,114,111,121,69,118,101,110,116,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,10,32,32,125,59,10,32,32,118,97,114,32,99,111,109,109,97,110,100,115,32,61,32,123,10,32,32,32,32,103,101,116,68,111,116,76,111,116,116,105,101,73,110,115,116,97,110,99,101,83,116,97,116,101,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,99,111,110,115,116,32,115,116,97,116,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,115,76,111,97,100,101,100,58,32,105,110,115,116,97,110,99,101,46,105,115,76,111,97,100,101,100,44,10,32,32,32,32,32,32,32,32,105,115,80,97,117,115,101,100,58,32,105,110,115,116,97,110,99,101,46,105,115,80,97,117,115,101,100,44,10,32,32,32,32,32,32,32,32,105,115,80,108,97,121,105,110,103,58,32,105,110,115,116,97,110,99,101,46,105,115,80,108,97,121,105,110,103,44,10,32,32,32,32,32,32,32,32,105,115,83,116,111,112,112,101,100,58,32,105,110,115,116,97,110,99,101,46,105,115,83,116,111,112,112,101,100,44,10,32,32,32,32,32,32,32,32,105,115,70,114,111,122,101,110,58,32,105,110,115,116,97,110,99,101,46,105,115,70,114,111,122,101,110,44,10,32,32,32,32,32,32,32,32,108,111,111,112,58,32,105,110,115,116,97,110,99,101,46,108,111,111,112,44,10,32,32,32,32,32,32,32,32,109,111,100,101,58,32,105,110,115,116,97,110,99,101,46,109,111,100,101,44,10,32,32,32,32,32,32,32,32,115,112,101,101,100,58,32,105,110,115,116,97,110,99,101,46,115,112,101,101,100,44,10,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,70,114,97,109,101,58,32,105,110,115,116,97,110,99,101,46,99,117,114,114,101,110,116,70,114,97,109,101,44,10,32,32,32,32,32,32,32,32,116,111,116,97,108,70,114,97,109,101,115,58,32,105,110,115,116,97,110,99,101,46,116,111,116,97,108,70,114,97,109,101,115,44,10,32,32,32,32,32,32,32,32,100,117,114,97,116,105,111,110,58,32,105,110,115,116,97,110,99,101,46,100,117,114,97,116,105,111,110,44,10,32,32,32,32,32,32,32,32,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,58,32,105,110,115,116,97,110,99,101,46,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,44,10,32,32,32,32,32,32,32,32,114,101,110,100,101,114,67,111,110,102,105,103,58,32,105,110,115,116,97,110,99,101,46,114,101,110,100,101,114,67,111,110,102,105,103,44,10,32,32,32,32,32,32,32,32,109,97,114,107,101,114,58,32,105,110,115,116,97,110,99,101,46,109,97,114,107,101,114,44,10,32,32,32,32,32,32,32,32,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,58,32,105,110,115,116,97,110,99,101,46,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,44,10,32,32,32,32,32,32,32,32,109,97,114,107,101,114,115,58,32,105,110,115,116,97,110,99,101,46,109,97,114,107,101,114,115,40,41,44,10,32,32,32,32,32,32,32,32,97,99,116,105,118,101,65,110,105,109,97,116,105,111,110,73,100,58,32,105,110,115,116,97,110,99,101,46,97,99,116,105,118,101,65,110,105,109,97,116,105,111,110,73,100,44,10,32,32,32,32,32,32,32,32,97,99,116,105,118,101,84,104,101,109,101,73,100,58,32,105,110,115,116,97,110,99,101,46,97,99,116,105,118,101,84,104,101,109,101,73,100,44,10,32,32,32,32,32,32,32,32,97,117,116,111,112,108,97,121,58,32,105,110,115,116,97,110,99,101,46,97,117,116,111,112,108,97,121,44,10,32,32,32,32,32,32,32,32,115,101,103,109,101,110,116,58,32,105,110,115,116,97,110,99,101,46,115,101,103,109,101,110,116,44,10,32,32,32,32,32,32,32,32,108,97,121,111,117,116,58,32,105,110,115,116,97,110,99,101,46,108,97,121,111,117,116,44,10,32,32,32,32,32,32,32,32,115,101,103,109,101,110,116,68,117,114,97,116,105,111,110,58,32,105,110,115,116,97,110,99,101,46,115,101,103,109,101,110,116,68,117,114,97,116,105,111,110,44,10,32,32,32,32,32,32,32,32,105,115,82,101,97,100,121,58,32,105,110,115,116,97,110,99,101,46,105,115,82,101,97,100,121,44,10,32,32,32,32,32,32,32,32,109,97,110,105,102,101,115,116,58,32,105,110,115,116,97,110,99,101,46,109,97,110,105,102,101,115,116,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,123,10,32,32,32,32,32,32,32,32,115,116,97,116,101,10,32,32,32,32,32,32,125,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,76,97,121,111,117,116,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,108,97,121,111,117,116,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,108,97,121,111,117,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,101,116,76,97,121,111,117,116,40,108,97,121,111,117,116,41,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,123,10,32,32,32,32,32,32,32,32,115,117,99,99,101,115,115,58,32,116,114,117,101,10,32,32,32,32,32,32,125,59,10,32,32,32,32,125,44,10,32,32,32,32,103,101,116,83,116,97,116,101,77,97,99,104,105,110,101,76,105,115,116,101,110,101,114,115,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,103,101,116,83,116,97,116,101,77,97,99,104,105,110,101,76,105,115,116,101,110,101,114,115,40,41,59,10,32,32,32,32,125,44,10,32,32,32,32,112,111,115,116,83,116,97,116,101,77,97,99,104,105,110,101,69,118,101,110,116,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,101,118,101,110,116,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,101,118,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,112,111,115,116,83,116,97,116,101,77,97,99,104,105,110,101,69,118,101,110,116,40,101,118,101,110,116,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,116,97,114,116,83,116,97,116,101,77,97,99,104,105,110,101,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,115,116,97,114,116,83,116,97,116,101,77,97,99,104,105,110,101,40,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,116,111,112,83,116,97,116,101,77,97,99,104,105,110,101,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,115,116,111,112,83,116,97,116,101,77,97,99,104,105,110,101,40,41,59,10,32,32,32,32,125,44,10,32,32,32,32,108,111,97,100,83,116,97,116,101,77,97,99,104,105,110,101,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,115,116,97,116,101,77,97,99,104,105,110,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,115,116,97,116,101,77,97,99,104,105,110,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,108,111,97,100,83,116,97,116,101,77,97,99,104,105,110,101,40,115,116,97,116,101,77,97,99,104,105,110,101,73,100,41,59,10,32,32,32,32,125,44,10,32,32,32,32,108,111,97,100,83,116,97,116,101,77,97,99,104,105,110,101,68,97,116,97,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,115,116,97,116,101,77,97,99,104,105,110,101,68,97,116,97,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,115,116,97,116,101,77,97,99,104,105,110,101,68,97,116,97,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,108,111,97,100,83,116,97,116,101,77,97,99,104,105,110,101,68,97,116,97,40,115,116,97,116,101,77,97,99,104,105,110,101,68,97,116,97,41,59,10,32,32,32,32,125,44,10,32,32,32,32,99,114,101,97,116,101,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,99,111,110,102,105,103,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,99,111,110,102,105,103,59,10,32,32,32,32,32,32,99,111,110,115,116,32,119,105,100,116,104,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,119,105,100,116,104,59,10,32,32,32,32,32,32,99,111,110,115,116,32,104,101,105,103,104,116,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,104,101,105,103,104,116,59,10,32,32,32,32,32,32,105,102,32,40,105,110,115,116,97,110,99,101,115,77,97,112,46,104,97,115,40,105,110,115,116,97,110,99,101,73,100,41,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,97,108,114,101,97,100,121,32,101,120,105,115,116,115,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,110,101,119,32,68,111,116,76,111,116,116,105,101,40,99,111,110,102,105,103,41,59,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,99,97,110,118,97,115,46,104,101,105,103,104,116,32,61,32,104,101,105,103,104,116,59,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,99,97,110,118,97,115,46,119,105,100,116,104,32,61,32,119,105,100,116,104,59,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,115,77,97,112,46,115,101,116,40,105,110,115,116,97,110,99,101,73,100,44,32,105,110,115,116,97,110,99,101,41,59,10,32,32,32,32,32,32,99,111,110,115,116,32,101,118,101,110,116,115,32,61,32,91,10,32,32,32,32,32,32,32,32,34,99,111,109,112,108,101,116,101,34,44,10,32,32,32,32,32,32,32,32,34,102,114,97,109,101,34,44,10,32,32,32,32,32,32,32,32,34,108,111,97,100,34,44,10,32,32,32,32,32,32,32,32,34,108,111,97,100,69,114,114,111,114,34,44,10,32,32,32,32,32,32,32,32,34,108,111,111,112,34,44,10,32,32,32,32,32,32,32,32,34,112,97,117,115,101,34,44,10,32,32,32,32,32,32,32,32,34,112,108,97,121,34,44,10,32,32,32,32,32,32,32,32,34,115,116,111,112,34,44,10,32,32,32,32,32,32,32,32,34,100,101,115,116,114,111,121,34,44,10,32,32,32,32,32,32,32,32,34,102,114,101,101,122,101,34,44,10,32,32,32,32,32,32,32,32,34,117,110,102,114,101,101,122,101,34,44,10,32,32,32,32,32,32,32,32,34,114,101,110,100,101,114,34,44,10,32,32,32,32,32,32,32,32,34,114,101,97,100,121,34,10,32,32,32,32,32,32,93,59,10,32,32,32,32,32,32,101,118,101,110,116,115,46,102,111,114,69,97,99,104,40,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,40,101,118,101,110,116,44,32,101,118,101,110,116,72,97,110,100,108,101,114,77,97,112,91,101,118,101,110,116,93,40,105,110,115,116,97,110,99,101,73,100,41,41,59,10,32,32,32,32,32,32,125,41,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,123,10,32,32,32,32,32,32,32,32,105,110,115,116,97,110,99,101,73,100,10,32,32,32,32,32,32,125,59,10,32,32,32,32,125,44,10,32,32,32,32,100,101,115,116,114,111,121,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,114,101,116,117,114,110,59,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,100,101,115,116,114,111,121,40,41,59,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,115,77,97,112,46,100,101,108,101,116,101,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,125,44,10,32,32,32,32,102,114,101,101,122,101,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,102,114,101,101,122,101,40,41,59,10,32,32,32,32,125,44,10,32,32,32,32,108,111,97,100,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,99,111,110,102,105,103,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,99,111,110,102,105,103,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,108,111,97,100,40,99,111,110,102,105,103,41,59,10,32,32,32,32,125,44,10,32,32,32,32,108,111,97,100,65,110,105,109,97,116,105,111,110,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,97,110,105,109,97,116,105,111,110,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,97,110,105,109,97,116,105,111,110,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,108,111,97,100,65,110,105,109,97,116,105,111,110,40,97,110,105,109,97,116,105,111,110,73,100,41,59,10,32,32,32,32,125,44,10,32,32,32,32,108,111,97,100,84,104,101,109,101,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,116,104,101,109,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,116,104,101,109,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,108,111,97,100,84,104,101,109,101,40,116,104,101,109,101,73,100,41,59,10,32,32,32,32,125,44,10,32,32,32,32,108,111,97,100,84,104,101,109,101,68,97,116,97,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,116,104,101,109,101,68,97,116,97,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,116,104,101,109,101,68,97,116,97,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,108,111,97,100,84,104,101,109,101,68,97,116,97,40,116,104,101,109,101,68,97,116,97,41,59,10,32,32,32,32,125,44,10,32,32,32,32,112,97,117,115,101,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,112,97,117,115,101,40,41,59,10,32,32,32,32,125,44,10,32,32,32,32,112,108,97,121,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,112,108,97,121,40,41,59,10,32,32,32,32,125,44,10,32,32,32,32,114,101,115,105,122,101,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,119,105,100,116,104,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,119,105,100,116,104,59,10,32,32,32,32,32,32,99,111,110,115,116,32,104,101,105,103,104,116,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,104,101,105,103,104,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,99,97,110,118,97,115,46,104,101,105,103,104,116,32,61,32,104,101,105,103,104,116,59,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,99,97,110,118,97,115,46,119,105,100,116,104,32,61,32,119,105,100,116,104,59,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,114,101,115,105,122,101,40,41,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,123,10,32,32,32,32,32,32,32,32,115,117,99,99,101,115,115,58,32,116,114,117,101,10,32,32,32,32,32,32,125,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,66,97,99,107,103,114,111,117,110,100,67,111,108,111,114,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,101,116,66,97,99,107,103,114,111,117,110,100,67,111,108,111,114,40,98,97,99,107,103,114,111,117,110,100,67,111,108,111,114,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,70,114,97,109,101,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,102,114,97,109,101,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,102,114,97,109,101,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,101,116,70,114,97,109,101,40,102,114,97,109,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,77,111,100,101,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,109,111,100,101,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,109,111,100,101,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,101,116,77,111,100,101,40,109,111,100,101,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,82,101,110,100,101,114,67,111,110,102,105,103,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,110,100,101,114,67,111,110,102,105,103,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,114,101,110,100,101,114,67,111,110,102,105,103,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,101,116,82,101,110,100,101,114,67,111,110,102,105,103,40,114,101,110,100,101,114,67,111,110,102,105,103,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,83,101,103,109,101,110,116,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,115,101,103,109,101,110,116,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,115,101,103,109,101,110,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,101,116,83,101,103,109,101,110,116,40,115,101,103,109,101,110,116,91,48,93,44,32,115,101,103,109,101,110,116,91,49,93,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,83,112,101,101,100,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,115,112,101,101,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,115,112,101,101,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,101,116,83,112,101,101,100,40,115,112,101,101,100,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,85,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,101,116,85,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,40,117,115,101,70,114,97,109,101,73,110,116,101,114,112,111,108,97,116,105,111,110,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,87,97,115,109,85,114,108,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,68,111,116,76,111,116,116,105,101,46,115,101,116,87,97,115,109,85,114,108,40,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,117,114,108,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,116,111,112,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,116,111,112,40,41,59,10,32,32,32,32,125,44,10,32,32,32,32,117,110,102,114,101,101,122,101,58,32,40,114,101,113,117,101,115,116,41,32,61,62,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,117,110,102,114,101,101,122,101,40,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,86,105,101,119,112,111,114,116,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,120,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,120,59,10,32,32,32,32,32,32,99,111,110,115,116,32,121,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,121,59,10,32,32,32,32,32,32,99,111,110,115,116,32,119,105,100,116,104,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,119,105,100,116,104,59,10,32,32,32,32,32,32,99,111,110,115,116,32,104,101,105,103,104,116,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,104,101,105,103,104,116,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,114,101,116,117,114,110,32,105,110,115,116,97,110,99,101,46,115,101,116,86,105,101,119,112,111,114,116,40,120,44,32,121,44,32,119,105,100,116,104,44,32,104,101,105,103,104,116,41,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,77,97,114,107,101,114,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,109,97,114,107,101,114,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,109,97,114,107,101,114,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,101,116,77,97,114,107,101,114,40,109,97,114,107,101,114,41,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,123,10,32,32,32,32,32,32,32,32,115,117,99,99,101,115,115,58,32,116,114,117,101,10,32,32,32,32,32,32,125,59,10,32,32,32,32,125,44,10,32,32,32,32,115,101,116,76,111,111,112,40,114,101,113,117,101,115,116,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,73,100,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,105,110,115,116,97,110,99,101,73,100,59,10,32,32,32,32,32,32,99,111,110,115,116,32,108,111,111,112,32,61,32,114,101,113,117,101,115,116,46,112,97,114,97,109,115,46,108,111,111,112,59,10,32,32,32,32,32,32,99,111,110,115,116,32,105,110,115,116,97,110,99,101,32,61,32,105,110,115,116,97,110,99,101,115,77,97,112,46,103,101,116,40,105,110,115,116,97,110,99,101,73,100,41,59,10,32,32,32,32,32,32,105,102,32,40,33,105,110,115,116,97,110,99,101,41,32,123,10,32,32,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,73,110,115,116,97,110,99,101,32,119,105,116,104,32,105,100,32,36,123,105,110,115,116,97,110,99,101,73,100,125,32,100,111,101,115,32,110,111,116,32,101,120,105,115,116,46,96,41,59,10,32,32,32,32,32,32,125,10,32,32,32,32,32,32,105,110,115,116,97,110,99,101,46,115,101,116,76,111,111,112,40,108,111,111,112,41,59,10,32,32,32,32,32,32,114,101,116,117,114,110,32,123,10,32,32,32,32,32,32,32,32,115,117,99,99,101,115,115,58,32,116,114,117,101,10,32,32,32,32,32,32,125,59,10,32,32,32,32,125,10,32,32,125,59,10,32,32,102,117,110,99,116,105,111,110,32,101,120,101,99,117,116,101,67,111,109,109,97,110,100,40,114,112,99,82,101,113,117,101,115,116,41,32,123,10,32,32,32,32,99,111,110,115,116,32,109,101,116,104,111,100,32,61,32,114,112,99,82,101,113,117,101,115,116,46,109,101,116,104,111,100,59,10,32,32,32,32,105,102,32,40,116,121,112,101,111,102,32,99,111,109,109,97,110,100,115,91,109,101,116,104,111,100,93,32,61,61,61,32,34,102,117,110,99,116,105,111,110,34,41,32,123,10,32,32,32,32,32,32,114,101,116,117,114,110,32,99,111,109,109,97,110,100,115,91,109,101,116,104,111,100,93,40,114,112,99,82,101,113,117,101,115,116,41,59,10,32,32,32,32,125,32,101,108,115,101,32,123,10,32,32,32,32,32,32,116,104,114,111,119,32,110,101,119,32,69,114,114,111,114,40,96,77,101,116,104,111,100,32,36,123,109,101,116,104,111,100,125,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,105,110,32,99,111,109,109,97,110,100,115,46,96,41,59,10,32,32,32,32,125,10,32,32,125,10,32,32,115,101,108,102,46,111,110,109,101,115,115,97,103,101,32,61,32,40,101,118,101,110,116,41,32,61,62,32,123,10,32,32,32,32,116,114,121,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,117,108,116,32,61,32,101,120,101,99,117,116,101,67,111,109,109,97,110,100,40,101,118,101,110,116,46,100,97,116,97,41,59,10,32,32,32,32,32,32,99,111,110,115,116,32,114,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,101,118,101,110,116,46,100,97,116,97,46,105,100,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,101,118,101,110,116,46,100,97,116,97,46,109,101,116,104,111,100,44,10,32,32,32,32,32,32,32,32,114,101,115,117,108,116,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,114,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,32,99,97,116,99,104,32,40,101,114,114,111,114,41,32,123,10,32,32,32,32,32,32,99,111,110,115,116,32,101,114,114,111,114,82,101,115,112,111,110,115,101,32,61,32,123,10,32,32,32,32,32,32,32,32,105,100,58,32,101,118,101,110,116,46,100,97,116,97,46,105,100,44,10,32,32,32,32,32,32,32,32,109,101,116,104,111,100,58,32,101,118,101,110,116,46,100,97,116,97,46,109,101,116,104,111,100,44,10,32,32,32,32,32,32,32,32,101,114,114,111,114,58,32,101,114,114,111,114,46,109,101,115,115,97,103,101,10,32,32,32,32,32,32,125,59,10,32,32,32,32,32,32,115,101,108,102,46,112,111,115,116,77,101,115,115,97,103,101,40,101,114,114,111,114,82,101,115,112,111,110,115,101,41,59,10,32,32,32,32,125,10,32,32,125,59,10,32,32,118,97,114,32,100,117,109,109,121,32,61,32,34,34,59,10,32,32,118,97,114,32,100,111,116,108,111,116,116,105,101,95,119,111,114,107,101,114,95,100,101,102,97,117,108,116,32,61,32,100,117,109,109,121,59,10,125,41,40,41,59,10])],{type:"application/javascript"}),i=URL.createObjectURL(n),h=new Worker(i);return URL.revokeObjectURL(i),h}},q2=s2;var x1=class{constructor(){_(this,"_workers",new Map);_(this,"_animationWorkerMap",new Map);}getWorker(n){return this._workers.has(n)||this._workers.set(n,new q2),this._workers.get(n)}assignAnimationToWorker(n,i){this._animationWorkerMap.set(n,i);}unassignAnimationFromWorker(n){this._animationWorkerMap.delete(n);}sendMessage(n,i,h){this.getWorker(n).postMessage(i,h||[]);}terminateWorker(n){let i=this._workers.get(n);i&&(i.terminate(),this._workers.delete(n));}};function K2(f){if(f instanceof OffscreenCanvas)return {width:f.width,height:f.height};let{height:n,width:i}=f.getBoundingClientRect();return {width:i*window.devicePixelRatio,height:n*window.devicePixelRatio}}function X2(){return Date.now().toString(36)+Math.random().toString(36).substr(2,9)}var U=class U{constructor(n){_(this,"_eventManager",new i1);_(this,"_id");_(this,"_worker");_(this,"_canvas");_(this,"_dotLottieInstanceState",{markers:[],autoplay:!1,backgroundColor:"",currentFrame:0,duration:0,loop:!1,mode:"forward",segment:[0,0],segmentDuration:0,speed:1,totalFrames:0,isLoaded:!1,isPlaying:!1,isPaused:!1,isStopped:!0,isFrozen:!1,useFrameInterpolation:!1,renderConfig:{devicePixelRatio:Z()},activeAnimationId:"",activeThemeId:"",layout:void 0,marker:void 0,isReady:!1,manifest:null});_(this,"_created",!1);_(this,"_pointerUpMethod");_(this,"_pointerDownMethod");_(this,"_pointerMoveMethod");_(this,"_pointerEnterMethod");_(this,"_pointerExitMethod");_(this,"_onCompleteMethod");this._canvas=n.canvas,this._id=`dotlottie-${X2()}`;let i=n.workerId||"defaultWorker";this._worker=U._workerManager.getWorker(i),U._workerManager.assignAnimationToWorker(this._id,i),U._wasmUrl&&this._sendMessage("setWasmUrl",{url:U._wasmUrl}),this._create({...n,renderConfig:{...n.renderConfig,devicePixelRatio:n.renderConfig?.devicePixelRatio||Z()}}),this._worker.addEventListener("message",this._handleWorkerEvent.bind(this)),this._pointerUpMethod=this._onPointerUp.bind(this),this._pointerDownMethod=this._onPointerDown.bind(this),this._pointerMoveMethod=this._onPointerMove.bind(this),this._pointerEnterMethod=this._onPointerEnter.bind(this),this._pointerExitMethod=this._onPointerLeave.bind(this),this._onCompleteMethod=this._onComplete.bind(this);}async _handleWorkerEvent(n){let i=n.data;i.id||(i.method==="onLoad"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onComplete"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onDestroy"&&i.result.instanceId===this._id&&this._eventManager.dispatch(i.result.event),i.method==="onUnfreeze"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._dotLottieInstanceState.isFrozen=!1,this._eventManager.dispatch(i.result.event)),i.method==="onFrame"&&i.result.instanceId===this._id&&(this._dotLottieInstanceState.currentFrame=i.result.event.currentFrame,this._eventManager.dispatch(i.result.event)),i.method==="onRender"&&i.result.instanceId===this._id&&this._eventManager.dispatch(i.result.event),i.method==="onFreeze"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onPause"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onPlay"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onStop"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onLoadError"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)),i.method==="onReady"&&i.result.instanceId===this._id&&(await this._updateDotLottieInstanceState(),this._eventManager.dispatch(i.result.event)));}async _create(n){let i;this._canvas instanceof HTMLCanvasElement?i=this._canvas.transferControlToOffscreen():i=this._canvas;let{instanceId:h}=await this._sendMessage("create",{instanceId:this._id,config:{...n,canvas:i},...K2(this._canvas)},[i]);if(h!==this._id)throw new Error("Instance ID mismatch");this._created=!0,await this._updateDotLottieInstanceState();}get isLoaded(){return this._dotLottieInstanceState.isLoaded}get isPlaying(){return this._dotLottieInstanceState.isPlaying}get isPaused(){return this._dotLottieInstanceState.isPaused}get isStopped(){return this._dotLottieInstanceState.isStopped}get currentFrame(){return this._dotLottieInstanceState.currentFrame}get isFrozen(){return this._dotLottieInstanceState.isFrozen}get segmentDuration(){return this._dotLottieInstanceState.segmentDuration}get totalFrames(){return this._dotLottieInstanceState.totalFrames}get segment(){return this._dotLottieInstanceState.segment}get speed(){return this._dotLottieInstanceState.speed}get duration(){return this._dotLottieInstanceState.duration}get isReady(){return this._dotLottieInstanceState.isReady}get mode(){return this._dotLottieInstanceState.mode}get canvas(){return this._canvas}get autoplay(){return this._dotLottieInstanceState.autoplay}get backgroundColor(){return this._dotLottieInstanceState.backgroundColor}get loop(){return this._dotLottieInstanceState.loop}get useFrameInterpolation(){return this._dotLottieInstanceState.useFrameInterpolation}get renderConfig(){return this._dotLottieInstanceState.renderConfig}get manifest(){return this._dotLottieInstanceState.manifest}get activeAnimationId(){return this._dotLottieInstanceState.activeAnimationId}get marker(){return this._dotLottieInstanceState.marker}get activeThemeId(){return this._dotLottieInstanceState.activeThemeId}get layout(){return this._dotLottieInstanceState.layout}async play(){this._created&&(await this._sendMessage("play",{instanceId:this._id}),await this._updateDotLottieInstanceState());}async pause(){this._created&&(await this._sendMessage("pause",{instanceId:this._id}),await this._updateDotLottieInstanceState());}async stop(){this._created&&(await this._sendMessage("stop",{instanceId:this._id}),await this._updateDotLottieInstanceState());}async setSpeed(n){this._created&&(await this._sendMessage("setSpeed",{instanceId:this._id,speed:n}),await this._updateDotLottieInstanceState());}async setMode(n){this._created&&(await this._sendMessage("setMode",{instanceId:this._id,mode:n}),await this._updateDotLottieInstanceState());}async setFrame(n){this._created&&(await this._sendMessage("setFrame",{frame:n,instanceId:this._id}),await this._updateDotLottieInstanceState());}async setSegment(n,i){this._created&&(await this._sendMessage("setSegment",{instanceId:this._id,segment:[n,i]}),await this._updateDotLottieInstanceState());}async setRenderConfig(n){this._created&&(await this._sendMessage("setRenderConfig",{instanceId:this._id,renderConfig:{...this._dotLottieInstanceState.renderConfig,...n,devicePixelRatio:n.devicePixelRatio||Z()}}),await this._updateDotLottieInstanceState());}async setUseFrameInterpolation(n){this._created&&(await this._sendMessage("setUseFrameInterpolation",{instanceId:this._id,useFrameInterpolation:n}),await this._updateDotLottieInstanceState());}async loadTheme(n){if(!this._created)return !1;let i=this._sendMessage("loadTheme",{instanceId:this._id,themeId:n});return await this._updateDotLottieInstanceState(),i}async load(n){this._created&&(await this._sendMessage("load",{config:n,instanceId:this._id}),await this._updateDotLottieInstanceState());}async setLoop(n){this._created&&(await this._sendMessage("setLoop",{instanceId:this._id,loop:n}),await this._updateDotLottieInstanceState());}async resize(){if(!this._created)return;let{height:n,width:i}=K2(this._canvas);await this._sendMessage("resize",{height:n,instanceId:this._id,width:i}),await this._updateDotLottieInstanceState();}async destroy(){this._created&&(this._created=!1,await this._sendMessage("destroy",{instanceId:this._id}),this._cleanupStateMachineListeners(),U._workerManager.unassignAnimationFromWorker(this._id),this._eventManager.removeAllEventListeners());}async freeze(){this._created&&(await this._sendMessage("freeze",{instanceId:this._id}),await this._updateDotLottieInstanceState());}async unfreeze(){this._created&&(await this._sendMessage("unfreeze",{instanceId:this._id}),await this._updateDotLottieInstanceState());}async setBackgroundColor(n){this._created&&(await this._sendMessage("setBackgroundColor",{instanceId:this._id,backgroundColor:n}),await this._updateDotLottieInstanceState());}async loadAnimation(n){this._created&&(await this._sendMessage("loadAnimation",{animationId:n,instanceId:this._id}),await this._updateDotLottieInstanceState());}async setLayout(n){this._created&&(await this._sendMessage("setLayout",{instanceId:this._id,layout:n}),await this._updateDotLottieInstanceState());}async _updateDotLottieInstanceState(){if(!this._created)return;let n=await this._sendMessage("getDotLottieInstanceState",{instanceId:this._id});this._dotLottieInstanceState=n.state;}markers(){return this._dotLottieInstanceState.markers}async setMarker(n){this._created&&(await this._sendMessage("setMarker",{instanceId:this._id,marker:n}),await this._updateDotLottieInstanceState());}async loadThemeData(n){if(!this._created)return !1;let i=await this._sendMessage("loadThemeData",{instanceId:this._id,themeData:n});return await this._updateDotLottieInstanceState(),i}async setViewport(n,i,h,M){return this._created?this._sendMessage("setViewport",{x:n,y:i,width:h,height:M,instanceId:this._id}):!1}async _sendMessage(n,i,h){let M={id:`dotlottie-request-${X2()}`,method:n,params:i};return this._worker.postMessage(M,h||[]),new Promise((B,N)=>{let j=k=>{let Q=k.data;Q.id===M.id&&(this._worker.removeEventListener("message",j),Q.error?N(new Error(`Failed to execute method ${n}: ${Q.error}`)):B(Q.result));};this._worker.addEventListener("message",j);})}addEventListener(n,i){this._eventManager.addEventListener(n,i);}removeEventListener(n,i){this._eventManager.removeEventListener(n,i);}static setWasmUrl(n){U._wasmUrl=n;}async loadStateMachine(n){if(!this._created)return !1;let i=await this._sendMessage("loadStateMachine",{instanceId:this._id,stateMachineId:n});return await this._updateDotLottieInstanceState(),i}async loadStateMachineData(n){if(!this._created)return !1;let i=await this._sendMessage("loadStateMachineData",{instanceId:this._id,stateMachineData:n});return await this._updateDotLottieInstanceState(),i}async startStateMachine(){if(!this._created)return !1;this._setupStateMachineListeners();let n=await this._sendMessage("startStateMachine",{instanceId:this._id});return await this._updateDotLottieInstanceState(),n}async stopStateMachine(){return this._created?(this._cleanupStateMachineListeners(),this._sendMessage("stopStateMachine",{instanceId:this._id})):!1}async postStateMachineEvent(n){return this._created?this._sendMessage("postStateMachineEvent",{event:n,instanceId:this._id}):1}async getStateMachineListeners(){return this._created?this._sendMessage("getStateMachineListeners",{instanceId:this._id}):[]}_getPointerPosition(n){let i=this._canvas.getBoundingClientRect(),h=this._canvas.width/i.width,M=this._canvas.height/i.height,B=this._dotLottieInstanceState.renderConfig.devicePixelRatio||window.devicePixelRatio||1,N=(n.clientX-i.left)*h/B,j=(n.clientY-i.top)*M/B;return {x:N,y:j}}_onPointerUp(n){let{x:i,y:h}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerUp: ${i} ${h}`);}_onPointerDown(n){let{x:i,y:h}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerDown: ${i} ${h}`);}_onPointerMove(n){let{x:i,y:h}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerMove: ${i} ${h}`);}_onPointerEnter(n){let{x:i,y:h}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerEnter: ${i} ${h}`);}_onPointerLeave(n){let{x:i,y:h}=this._getPointerPosition(n);this.postStateMachineEvent(`OnPointerExit: ${i} ${h}`);}_onComplete(){this.postStateMachineEvent("OnComplete");}async _setupStateMachineListeners(){if(W&&this._canvas instanceof HTMLCanvasElement&&this.isLoaded){let n=await this._sendMessage("getStateMachineListeners",{instanceId:this._id});n.includes("PointerUp")&&this._canvas.addEventListener("pointerup",this._pointerUpMethod),n.includes("PointerDown")&&this._canvas.addEventListener("pointerdown",this._pointerDownMethod),n.includes("PointerMove")&&this._canvas.addEventListener("pointermove",this._pointerMoveMethod),n.includes("PointerEnter")&&this._canvas.addEventListener("pointerenter",this._pointerEnterMethod),n.includes("PointerExit")&&this._canvas.addEventListener("pointerleave",this._pointerExitMethod),n.includes("Complete")&&this.addEventListener("complete",this._onCompleteMethod);}}_cleanupStateMachineListeners(){W&&this._canvas instanceof HTMLCanvasElement&&(this._canvas.removeEventListener("pointerup",this._pointerUpMethod),this._canvas.removeEventListener("pointerdown",this._pointerDownMethod),this._canvas.removeEventListener("pointermove",this._pointerMoveMethod),this._canvas.removeEventListener("pointerenter",this._pointerEnterMethod),this._canvas.removeEventListener("pointerleave",this._pointerExitMethod),this.removeEventListener("complete",this._onCompleteMethod));}};_(U,"_workerManager",new x1),_(U,"_wasmUrl","");var Z2=U;
10
10
 
11
- exports.DotLottie = zg;
12
- exports.DotLottieWorker = xg;
11
+ exports.DotLottie = G2;
12
+ exports.DotLottieWorker = Z2;
13
13
  //# sourceMappingURL=index.cjs.map
14
14
  //# sourceMappingURL=index.cjs.map