mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-07 17:07:19 +08:00
306 lines
2.3 MiB
306 lines
2.3 MiB
var jJ=Object.defineProperty,OJ=Object.defineProperties;var gJ=Object.getOwnPropertyDescriptors;var Xs=Object.getOwnPropertySymbols,KJ=Object.getPrototypeOf,Be=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable,HJ=Reflect.get;var oR=(V,t)=>(t=Symbol[V])?t:Symbol.for("Symbol."+V),m0=Math.pow,ue=(V,t,d)=>t in V?jJ(V,t,{enumerable:!0,configurable:!0,writable:!0,value:d}):V[t]=d,fl=(V,t)=>{for(var d in t||(t={}))Be.call(t,d)&&ue(V,d,t[d]);if(Xs)for(var d of Xs(t))oe.call(t,d)&&ue(V,d,t[d]);return V},Ld=(V,t)=>OJ(V,gJ(t));var ye=(V,t)=>{var d={};for(var n in V)Be.call(V,n)&&t.indexOf(n)<0&&(d[n]=V[n]);if(V!=null&&Xs)for(var n of Xs(V))t.indexOf(n)<0&&oe.call(V,n)&&(d[n]=V[n]);return d};var ze=(V,t,d)=>HJ(KJ(V),d,t);var Ul=(V,t,d)=>new Promise((n,i)=>{var N=J=>{try{M(d.next(J))}catch(X){i(X)}},b=J=>{try{M(d.throw(J))}catch(X){i(X)}},M=J=>J.done?n(J.value):Promise.resolve(J.value).then(N,b);M((d=d.apply(V,t)).next())}),Ys=function(V,t){this[0]=V,this[1]=t},yR=(V,t,d)=>{var n=(b,M,J,X)=>{try{var p=d[b](M),o=(M=p.value)instanceof Ys,y=p.done;Promise.resolve(o?M[0]:M).then(I=>o?n(b==="return"?b:"next",M[1]?{done:I.done,value:I.value}:I,J,X):J({value:I,done:y})).catch(I=>n("throw",I,J,X))}catch(I){X(I)}},i=b=>N[b]=M=>new Promise((J,X)=>n(b,M,J,X)),N={};return d=d.apply(V,t),N[oR("asyncIterator")]=()=>N,i("next"),i("throw"),i("return"),N};var Le=(V,t,d)=>(t=V[oR("asyncIterator")])?t.call(V):(V=V[oR("iterator")](),t={},d=(n,i)=>(i=V[n])&&(t[n]=N=>new Promise((b,M,J)=>(N=i.call(V,N),J=N.done,Promise.resolve(N.value).then(X=>b({value:X,done:J}),M)))),d("next"),d("return"),t);import{O as fW,P as vJ,Q as PJ,z as y2,d as z2,a as Pt,R as fJ,p as AJ,n as zR,f as sZ,k as Ft,F as _J,l as qJ,S as ke,g as AW,j as Ie,s as $J,U as lT,b as UT,w as Ht,e as e0,A as De,i as _Z,h as ps,B as LR,t as kR,u as Ee}from"./index-BZkriacA.js";var dT=Object.defineProperty,ZT=(V,t,d)=>t in V?dT(V,t,{enumerable:!0,configurable:!0,writable:!0,value:d}):V[t]=d,el=(V,t,d)=>(ZT(V,typeof t!="symbol"?t+"":t,d),d),ab=(V,t,d)=>{if(!t.has(V))throw TypeError("Cannot "+d)},F=(V,t,d)=>(ab(V,t,"read from private field"),d?d.call(V):t.get(V)),h=(V,t,d)=>{if(t.has(V))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(V):t.set(V,d)},S=(V,t,d,n)=>(ab(V,t,"write to private field"),t.set(V,d),d),PU=(V,t,d,n)=>({set _(i){S(V,t,i)},get _(){return F(V,t,n)}}),G=(V,t,d)=>(ab(V,t,"access private method"),d),tT={9306:(V,t,d)=>{var n=d(4901),i=d(6823),N=TypeError;V.exports=function(b){if(n(b))return b;throw new N(i(b)+" is not a function")}},3506:(V,t,d)=>{var n=d(3925),i=String,N=TypeError;V.exports=function(b){if(n(b))return b;throw new N("Can't set "+i(b)+" as a prototype")}},7080:(V,t,d)=>{var n=d(4402).has;V.exports=function(i){return n(i),i}},679:(V,t,d)=>{var n=d(1625),i=TypeError;V.exports=function(N,b){if(n(b,N))return N;throw new i("Incorrect invocation")}},8551:(V,t,d)=>{var n=d(34),i=String,N=TypeError;V.exports=function(b){if(n(b))return b;throw new N(i(b)+" is not an object")}},7811:V=>{V.exports=typeof ArrayBuffer<"u"&&typeof DataView<"u"},7394:(V,t,d)=>{var n=d(6706),i=d(4576),N=TypeError;V.exports=n(ArrayBuffer.prototype,"byteLength","get")||function(b){if(i(b)!=="ArrayBuffer")throw new N("ArrayBuffer expected");return b.byteLength}},3238:(V,t,d)=>{var n=d(9504),i=d(7394),N=n(ArrayBuffer.prototype.slice);V.exports=function(b){if(i(b)!==0)return!1;try{return N(b,0,0),!1}catch(M){return!0}}},5636:(V,t,d)=>{var n=d(4475),i=d(9504),N=d(6706),b=d(7696),M=d(3238),J=d(7394),X=d(4483),p=d(1548),o=n.structuredClone,y=n.ArrayBuffer,I=n.DataView,k=n.TypeError,w=Math.min,K=y.prototype,C=I.prototype,P=i(K.slice),r=N(K,"resizable","get"),A=N(K,"maxByteLength","get"),H=i(C.getInt8),x=i(C.setInt8);V.exports=(p||X)&&function(v,$,E){var O=J(v),_=$===void 0?O:b($),tl=!r||!r(v),Vl;if(M(v))throw new k("ArrayBuffer is detached");if(p&&(v=o(v,{transfer:[v]}),O===_&&(E||tl)))return v;if(O>=_&&(!E||tl))Vl=P(v,0,_);else{var Rl=E&&!tl&&A?{maxByteLength:A(v)}:void 0;Vl=new y(_,Rl);for(var sl=new I(v),g=new I(Vl),pl=w(_,O),Jl=0;Jl<pl;Jl++)x(g,Jl,H(sl,Jl))}return p||X(v),Vl}},4644:(V,t,d)=>{var n=d(7811),i=d(3724),N=d(4475),b=d(4901),M=d(34),J=d(9297),X=d(6955),p=d(6823),o=d(6699),y=d(6840),I=d(2106),k=d(1625),w=d(2787),K=d(2967),C=d(8227),P=d(3392),r=d(1181),A=r.enforce,H=r.get,x=N.Int8Array,v=x&&x.prototype,$=N.Uint8ClampedArray,E=$&&$.prototype,O=x&&w(x),_=v&&w(v),tl=Object.prototype,Vl=N.TypeError,Rl=C("toStringTag"),sl=P("TYPED_ARRAY_TAG"),g="TypedArrayConstructor",pl=n&&!!K&&X(N.opera)!=="Opera",Jl=!1,kl,FU,fU,uU={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},Rd={BigInt64Array:8,BigUint64Array:8},nt=function(Ql){if(!M(Ql))return!1;var Il=X(Ql);return Il==="DataView"||J(uU,Il)||J(Rd,Il)},st=function(Ql){var Il=w(Ql);if(M(Il)){var xl=H(Il);return xl&&J(xl,g)?xl[g]:st(Il)}},Wl=function(Ql){if(!M(Ql))return!1;var Il=X(Ql);return J(uU,Il)||J(Rd,Il)},dl=function(Ql){if(Wl(Ql))return Ql;throw new Vl("Target is not a typed array")},cl=function(Ql){if(b(Ql)&&(!K||k(O,Ql)))return Ql;throw new Vl(p(Ql)+" is not a typed array constructor")},Ml=function(Ql,Il,xl,BU){if(i){if(xl)for(var lU in uU){var Kl=N[lU];if(Kl&&J(Kl.prototype,Ql))try{delete Kl.prototype[Ql]}catch(hd){try{Kl.prototype[Ql]=Il}catch(iF){}}}(!_[Ql]||xl)&&y(_,Ql,xl?Il:pl&&v[Ql]||Il,BU)}},Ll=function(Ql,Il,xl){var BU,lU;if(i){if(K){if(xl){for(BU in uU)if(lU=N[BU],lU&&J(lU,Ql))try{delete lU[Ql]}catch(Kl){}}if(!O[Ql]||xl)try{return y(O,Ql,xl?Il:pl&&O[Ql]||Il)}catch(Kl){}else return}for(BU in uU)lU=N[BU],lU&&(!lU[Ql]||xl)&&y(lU,Ql,Il)}};for(kl in uU)FU=N[kl],fU=FU&&FU.prototype,fU?A(fU)[g]=FU:pl=!1;for(kl in Rd)FU=N[kl],fU=FU&&FU.prototype,fU&&(A(fU)[g]=FU);if((!pl||!b(O)||O===Function.prototype)&&(O=function(){throw new Vl("Incorrect invocation")},pl))for(kl in uU)N[kl]&&K(N[kl],O);if((!pl||!_||_===tl)&&(_=O.prototype,pl))for(kl in uU)N[kl]&&K(N[kl].prototype,_);if(pl&&w(E)!==_&&K(E,_),i&&!J(_,Rl)){Jl=!0,I(_,Rl,{configurable:!0,get:function(){return M(this)?this[sl]:void 0}});for(kl in uU)N[kl]&&o(N[kl],sl,kl)}V.exports={NATIVE_ARRAY_BUFFER_VIEWS:pl,TYPED_ARRAY_TAG:Jl&&sl,aTypedArray:dl,aTypedArrayConstructor:cl,exportTypedArrayMethod:Ml,exportTypedArrayStaticMethod:Ll,getTypedArrayConstructor:st,isView:nt,isTypedArray:Wl,TypedArray:O,TypedArrayPrototype:_}},5370:(V,t,d)=>{var n=d(6198);V.exports=function(i,N,b){for(var M=0,J=arguments.length>2?b:n(N),X=new i(J);J>M;)X[M]=N[M++];return X}},9617:(V,t,d)=>{var n=d(5397),i=d(5610),N=d(6198),b=function(M){return function(J,X,p){var o=n(J),y=N(o);if(y===0)return!M&&-1;var I=i(p,y),k;if(M&&X!==X){for(;y>I;)if(k=o[I++],k!==k)return!0}else for(;y>I;I++)if((M||I in o)&&o[I]===X)return M||I||0;return!M&&-1}};V.exports={includes:b(!0),indexOf:b(!1)}},4527:(V,t,d)=>{var n=d(3724),i=d(4376),N=TypeError,b=Object.getOwnPropertyDescriptor,M=n&&!function(){if(this!==void 0)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(J){return J instanceof TypeError}}();V.exports=M?function(J,X){if(i(J)&&!b(J,"length").writable)throw new N("Cannot set read only .length");return J.length=X}:function(J,X){return J.length=X}},7628:(V,t,d)=>{var n=d(6198);V.exports=function(i,N){for(var b=n(i),M=new N(b),J=0;J<b;J++)M[J]=i[b-J-1];return M}},9928:(V,t,d)=>{var n=d(6198),i=d(1291),N=RangeError;V.exports=function(b,M,J,X){var p=n(b),o=i(J),y=o<0?p+o:o;if(y>=p||y<0)throw new N("Incorrect index");for(var I=new M(p),k=0;k<p;k++)I[k]=k===y?X:b[k];return I}},6319:(V,t,d)=>{var n=d(8551),i=d(9539);V.exports=function(N,b,M,J){try{return J?b(n(M)[0],M[1]):b(M)}catch(X){i(N,"throw",X)}}},4576:(V,t,d)=>{var n=d(9504),i=n({}.toString),N=n("".slice);V.exports=function(b){return N(i(b),8,-1)}},6955:(V,t,d)=>{var n=d(2140),i=d(4901),N=d(4576),b=d(8227),M=b("toStringTag"),J=Object,X=N(function(){return arguments}())==="Arguments",p=function(o,y){try{return o[y]}catch(I){}};V.exports=n?N:function(o){var y,I,k;return o===void 0?"Undefined":o===null?"Null":typeof(I=p(y=J(o),M))=="string"?I:X?N(y):(k=N(y))==="Object"&&i(y.callee)?"Arguments":k}},7740:(V,t,d)=>{var n=d(9297),i=d(5031),N=d(7347),b=d(4913);V.exports=function(M,J,X){for(var p=i(J),o=b.f,y=N.f,I=0;I<p.length;I++){var k=p[I];!n(M,k)&&!(X&&n(X,k))&&o(M,k,y(J,k))}}},2211:(V,t,d)=>{var n=d(9039);V.exports=!n(function(){function i(){}return i.prototype.constructor=null,Object.getPrototypeOf(new i)!==i.prototype})},2529:V=>{V.exports=function(t,d){return{value:t,done:d}}},6699:(V,t,d)=>{var n=d(3724),i=d(4913),N=d(6980);V.exports=n?function(b,M,J){return i.f(b,M,N(1,J))}:function(b,M,J){return b[M]=J,b}},6980:V=>{V.exports=function(t,d){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:d}}},4659:(V,t,d)=>{var n=d(3724),i=d(4913),N=d(6980);V.exports=function(b,M,J){n?i.f(b,M,N(0,J)):b[M]=J}},2106:(V,t,d)=>{var n=d(283),i=d(4913);V.exports=function(N,b,M){return M.get&&n(M.get,b,{getter:!0}),M.set&&n(M.set,b,{setter:!0}),i.f(N,b,M)}},6840:(V,t,d)=>{var n=d(4901),i=d(4913),N=d(283),b=d(9433);V.exports=function(M,J,X,p){p||(p={});var o=p.enumerable,y=p.name!==void 0?p.name:J;if(n(X)&&N(X,y,p),p.global)o?M[J]=X:b(J,X);else{try{p.unsafe?M[J]&&(o=!0):delete M[J]}catch(I){}o?M[J]=X:i.f(M,J,{value:X,enumerable:!1,configurable:!p.nonConfigurable,writable:!p.nonWritable})}return M}},6279:(V,t,d)=>{var n=d(6840);V.exports=function(i,N,b){for(var M in N)n(i,M,N[M],b);return i}},9433:(V,t,d)=>{var n=d(4475),i=Object.defineProperty;V.exports=function(N,b){try{i(n,N,{value:b,configurable:!0,writable:!0})}catch(M){n[N]=b}return b}},3724:(V,t,d)=>{var n=d(9039);V.exports=!n(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})},4483:(V,t,d)=>{var n=d(4475),i=d(9714),N=d(1548),b=n.structuredClone,M=n.ArrayBuffer,J=n.MessageChannel,X=!1,p,o,y,I;if(N)X=function(k){b(k,{transfer:[k]})};else if(M)try{J||(p=i("worker_threads"),p&&(J=p.MessageChannel)),J&&(o=new J,y=new M(2),I=function(k){o.port1.postMessage(null,[k])},y.byteLength===2&&(I(y),y.byteLength===0&&(X=I)))}catch(k){}V.exports=X},4055:(V,t,d)=>{var n=d(4475),i=d(34),N=n.document,b=i(N)&&i(N.createElement);V.exports=function(M){return b?N.createElement(M):{}}},6837:V=>{var t=TypeError,d=9007199254740991;V.exports=function(n){if(n>d)throw t("Maximum allowed index exceeded");return n}},5002:V=>{V.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}},7290:(V,t,d)=>{var n=d(516),i=d(9088);V.exports=!n&&!i&&typeof window=="object"&&typeof document=="object"},516:V=>{V.exports=typeof Deno=="object"&&Deno&&typeof Deno.version=="object"},9088:(V,t,d)=>{var n=d(4475),i=d(4576);V.exports=i(n.process)==="process"},9392:V=>{V.exports=typeof navigator<"u"&&String(navigator.userAgent)||""},7388:(V,t,d)=>{var n=d(4475),i=d(9392),N=n.process,b=n.Deno,M=N&&N.versions||b&&b.version,J=M&&M.v8,X,p;J&&(X=J.split("."),p=X[0]>0&&X[0]<4?1:+(X[0]+X[1])),!p&&i&&(X=i.match(/Edge\/(\d+)/),(!X||X[1]>=74)&&(X=i.match(/Chrome\/(\d+)/),X&&(p=+X[1]))),V.exports=p},8727:V=>{V.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},6193:(V,t,d)=>{var n=d(9504),i=Error,N=n("".replace),b=function(X){return String(new i(X).stack)}("zxcasd"),M=/\n\s*at [^:]*:[^\n]*/,J=M.test(b);V.exports=function(X,p){if(J&&typeof X=="string"&&!i.prepareStackTrace)for(;p--;)X=N(X,M,"");return X}},6518:(V,t,d)=>{var n=d(4475),i=d(7347).f,N=d(6699),b=d(6840),M=d(9433),J=d(7740),X=d(2796);V.exports=function(p,o){var y=p.target,I=p.global,k=p.stat,w,K,C,P,r,A;if(I?K=n:k?K=n[y]||M(y,{}):K=n[y]&&n[y].prototype,K)for(C in o){if(r=o[C],p.dontCallGetSet?(A=i(K,C),P=A&&A.value):P=K[C],w=X(I?C:y+(k?".":"#")+C,p.forced),!w&&P!==void 0){if(typeof r==typeof P)continue;J(r,P)}(p.sham||P&&P.sham)&&N(r,"sham",!0),b(K,C,r,p)}}},9039:V=>{V.exports=function(t){try{return!!t()}catch(d){return!0}}},6080:(V,t,d)=>{var n=d(7476),i=d(9306),N=d(616),b=n(n.bind);V.exports=function(M,J){return i(M),J===void 0?M:N?b(M,J):function(){return M.apply(J,arguments)}}},616:(V,t,d)=>{var n=d(9039);V.exports=!n(function(){var i=function(){}.bind();return typeof i!="function"||i.hasOwnProperty("prototype")})},9565:(V,t,d)=>{var n=d(616),i=Function.prototype.call;V.exports=n?i.bind(i):function(){return i.apply(i,arguments)}},350:(V,t,d)=>{var n=d(3724),i=d(9297),N=Function.prototype,b=n&&Object.getOwnPropertyDescriptor,M=i(N,"name"),J=M&&function(){}.name==="something",X=M&&(!n||n&&b(N,"name").configurable);V.exports={EXISTS:M,PROPER:J,CONFIGURABLE:X}},6706:(V,t,d)=>{var n=d(9504),i=d(9306);V.exports=function(N,b,M){try{return n(i(Object.getOwnPropertyDescriptor(N,b)[M]))}catch(J){}}},7476:(V,t,d)=>{var n=d(4576),i=d(9504);V.exports=function(N){if(n(N)==="Function")return i(N)}},9504:(V,t,d)=>{var n=d(616),i=Function.prototype,N=i.call,b=n&&i.bind.bind(N,N);V.exports=n?b:function(M){return function(){return N.apply(M,arguments)}}},7751:(V,t,d)=>{var n=d(4475),i=d(4901),N=function(b){return i(b)?b:void 0};V.exports=function(b,M){return arguments.length<2?N(n[b]):n[b]&&n[b][M]}},1767:V=>{V.exports=function(t){return{iterator:t,next:t.next,done:!1}}},8646:(V,t,d)=>{var n=d(9565),i=d(8551),N=d(1767),b=d(851);V.exports=function(M,J){(!J||typeof M!="string")&&i(M);var X=b(M);return N(i(X!==void 0?n(X,M):M))}},851:(V,t,d)=>{var n=d(6955),i=d(5966),N=d(4117),b=d(6269),M=d(8227),J=M("iterator");V.exports=function(X){if(!N(X))return i(X,J)||i(X,"@@iterator")||b[n(X)]}},81:(V,t,d)=>{var n=d(9565),i=d(9306),N=d(8551),b=d(6823),M=d(851),J=TypeError;V.exports=function(X,p){var o=arguments.length<2?M(X):p;if(i(o))return N(n(o,X));throw new J(b(X)+" is not iterable")}},5966:(V,t,d)=>{var n=d(9306),i=d(4117);V.exports=function(N,b){var M=N[b];return i(M)?void 0:n(M)}},3789:(V,t,d)=>{var n=d(9306),i=d(8551),N=d(9565),b=d(1291),M=d(1767),J="Invalid size",X=RangeError,p=TypeError,o=Math.max,y=function(I,k){this.set=I,this.size=o(k,0),this.has=n(I.has),this.keys=n(I.keys)};y.prototype={getIterator:function(){return M(i(N(this.keys,this.set)))},includes:function(I){return N(this.has,this.set,I)}},V.exports=function(I){i(I);var k=+I.size;if(k!==k)throw new p(J);var w=b(k);if(w<0)throw new X(J);return new y(I,w)}},4475:function(V){var t=function(d){return d&&d.Math===Math&&d};V.exports=t(typeof globalThis=="object"&&globalThis)||t(typeof window=="object"&&window)||t(typeof self=="object"&&self)||t(typeof global=="object"&&global)||t(typeof this=="object"&&this)||function(){return this}()||Function("return this")()},9297:(V,t,d)=>{var n=d(9504),i=d(8981),N=n({}.hasOwnProperty);V.exports=Object.hasOwn||function(b,M){return N(i(b),M)}},421:V=>{V.exports={}},397:(V,t,d)=>{var n=d(7751);V.exports=n("document","documentElement")},5917:(V,t,d)=>{var n=d(3724),i=d(9039),N=d(4055);V.exports=!n&&!i(function(){return Object.defineProperty(N("div"),"a",{get:function(){return 7}}).a!==7})},7055:(V,t,d)=>{var n=d(9504),i=d(9039),N=d(4576),b=Object,M=n("".split);V.exports=i(function(){return!b("z").propertyIsEnumerable(0)})?function(J){return N(J)==="String"?M(J,""):b(J)}:b},3167:(V,t,d)=>{var n=d(4901),i=d(34),N=d(2967);V.exports=function(b,M,J){var X,p;return N&&n(X=M.constructor)&&X!==J&&i(p=X.prototype)&&p!==J.prototype&&N(b,p),b}},3706:(V,t,d)=>{var n=d(9504),i=d(4901),N=d(7629),b=n(Function.toString);i(N.inspectSource)||(N.inspectSource=function(M){return b(M)}),V.exports=N.inspectSource},1181:(V,t,d)=>{var n=d(8622),i=d(4475),N=d(34),b=d(6699),M=d(9297),J=d(7629),X=d(6119),p=d(421),o="Object already initialized",y=i.TypeError,I=i.WeakMap,k,w,K,C=function(H){return K(H)?w(H):k(H,{})},P=function(H){return function(x){var v;if(!N(x)||(v=w(x)).type!==H)throw new y("Incompatible receiver, "+H+" required");return v}};if(n||J.state){var r=J.state||(J.state=new I);r.get=r.get,r.has=r.has,r.set=r.set,k=function(H,x){if(r.has(H))throw new y(o);return x.facade=H,r.set(H,x),x},w=function(H){return r.get(H)||{}},K=function(H){return r.has(H)}}else{var A=X("state");p[A]=!0,k=function(H,x){if(M(H,A))throw new y(o);return x.facade=H,b(H,A,x),x},w=function(H){return M(H,A)?H[A]:{}},K=function(H){return M(H,A)}}V.exports={set:k,get:w,has:K,enforce:C,getterFor:P}},4209:(V,t,d)=>{var n=d(8227),i=d(6269),N=n("iterator"),b=Array.prototype;V.exports=function(M){return M!==void 0&&(i.Array===M||b[N]===M)}},4376:(V,t,d)=>{var n=d(4576);V.exports=Array.isArray||function(i){return n(i)==="Array"}},1108:(V,t,d)=>{var n=d(6955);V.exports=function(i){var N=n(i);return N==="BigInt64Array"||N==="BigUint64Array"}},4901:V=>{var t=typeof document=="object"&&document.all;V.exports=typeof t>"u"&&t!==void 0?function(d){return typeof d=="function"||d===t}:function(d){return typeof d=="function"}},2796:(V,t,d)=>{var n=d(9039),i=d(4901),N=/#|\.prototype\./,b=function(o,y){var I=J[M(o)];return I===p?!0:I===X?!1:i(y)?n(y):!!y},M=b.normalize=function(o){return String(o).replace(N,".").toLowerCase()},J=b.data={},X=b.NATIVE="N",p=b.POLYFILL="P";V.exports=b},4117:V=>{V.exports=function(t){return t==null}},34:(V,t,d)=>{var n=d(4901);V.exports=function(i){return typeof i=="object"?i!==null:n(i)}},3925:(V,t,d)=>{var n=d(34);V.exports=function(i){return n(i)||i===null}},6395:V=>{V.exports=!1},757:(V,t,d)=>{var n=d(7751),i=d(4901),N=d(1625),b=d(7040),M=Object;V.exports=b?function(J){return typeof J=="symbol"}:function(J){var X=n("Symbol");return i(X)&&N(X.prototype,M(J))}},507:(V,t,d)=>{var n=d(9565);V.exports=function(i,N,b){for(var M=b?i:i.iterator,J=i.next,X,p;!(X=n(J,M)).done;)if(p=N(X.value),p!==void 0)return p}},2652:(V,t,d)=>{var n=d(6080),i=d(9565),N=d(8551),b=d(6823),M=d(4209),J=d(6198),X=d(1625),p=d(81),o=d(851),y=d(9539),I=TypeError,k=function(K,C){this.stopped=K,this.result=C},w=k.prototype;V.exports=function(K,C,P){var r=P&&P.that,A=!!(P&&P.AS_ENTRIES),H=!!(P&&P.IS_RECORD),x=!!(P&&P.IS_ITERATOR),v=!!(P&&P.INTERRUPTED),$=n(C,r),E,O,_,tl,Vl,Rl,sl,g=function(Jl){return E&&y(E,"normal",Jl),new k(!0,Jl)},pl=function(Jl){return A?(N(Jl),v?$(Jl[0],Jl[1],g):$(Jl[0],Jl[1])):v?$(Jl,g):$(Jl)};if(H)E=K.iterator;else if(x)E=K;else{if(O=o(K),!O)throw new I(b(K)+" is not iterable");if(M(O)){for(_=0,tl=J(K);tl>_;_++)if(Vl=pl(K[_]),Vl&&X(w,Vl))return Vl;return new k(!1)}E=p(K,O)}for(Rl=H?K.next:E.next;!(sl=i(Rl,E)).done;){try{Vl=pl(sl.value)}catch(Jl){y(E,"throw",Jl)}if(typeof Vl=="object"&&Vl&&X(w,Vl))return Vl}return new k(!1)}},9539:(V,t,d)=>{var n=d(9565),i=d(8551),N=d(5966);V.exports=function(b,M,J){var X,p;i(b);try{if(X=N(b,"return"),!X){if(M==="throw")throw J;return J}X=n(X,b)}catch(o){p=!0,X=o}if(M==="throw")throw J;if(p)throw X;return i(X),J}},9462:(V,t,d)=>{var n=d(9565),i=d(2360),N=d(6699),b=d(6279),M=d(8227),J=d(1181),X=d(5966),p=d(7657).IteratorPrototype,o=d(2529),y=d(9539),I=M("toStringTag"),k="IteratorHelper",w="WrapForValidIterator",K=J.set,C=function(A){var H=J.getterFor(A?w:k);return b(i(p),{next:function(){var x=H(this);if(A)return x.nextHandler();try{var v=x.done?void 0:x.nextHandler();return o(v,x.done)}catch($){throw x.done=!0,$}},return:function(){var x=H(this),v=x.iterator;if(x.done=!0,A){var $=X(v,"return");return $?n($,v):o(void 0,!0)}if(x.inner)try{y(x.inner.iterator,"normal")}catch(E){return y(v,"throw",E)}return y(v,"normal"),o(void 0,!0)}})},P=C(!0),r=C(!1);N(r,I,"Iterator Helper"),V.exports=function(A,H){var x=function(v,$){$?($.iterator=v.iterator,$.next=v.next):$=v,$.type=H?w:k,$.nextHandler=A,$.counter=0,$.done=!1,K(this,$)};return x.prototype=H?P:r,x}},713:(V,t,d)=>{var n=d(9565),i=d(9306),N=d(8551),b=d(1767),M=d(9462),J=d(6319),X=M(function(){var p=this.iterator,o=N(n(this.next,p)),y=this.done=!!o.done;if(!y)return J(p,this.mapper,[o.value,this.counter++],!0)});V.exports=function(p){return N(this),i(p),new X(b(this),{mapper:p})}},7657:(V,t,d)=>{var n=d(9039),i=d(4901),N=d(34),b=d(2360),M=d(2787),J=d(6840),X=d(8227),p=d(6395),o=X("iterator"),y=!1,I,k,w;[].keys&&(w=[].keys(),"next"in w?(k=M(M(w)),k!==Object.prototype&&(I=k)):y=!0);var K=!N(I)||n(function(){var C={};return I[o].call(C)!==C});K?I={}:p&&(I=b(I)),i(I[o])||J(I,o,function(){return this}),V.exports={IteratorPrototype:I,BUGGY_SAFARI_ITERATORS:y}},6269:V=>{V.exports={}},6198:(V,t,d)=>{var n=d(8014);V.exports=function(i){return n(i.length)}},283:(V,t,d)=>{var n=d(9504),i=d(9039),N=d(4901),b=d(9297),M=d(3724),J=d(350).CONFIGURABLE,X=d(3706),p=d(1181),o=p.enforce,y=p.get,I=String,k=Object.defineProperty,w=n("".slice),K=n("".replace),C=n([].join),P=M&&!i(function(){return k(function(){},"length",{value:8}).length!==8}),r=String(String).split("String"),A=V.exports=function(H,x,v){w(I(x),0,7)==="Symbol("&&(x="["+K(I(x),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),v&&v.getter&&(x="get "+x),v&&v.setter&&(x="set "+x),(!b(H,"name")||J&&H.name!==x)&&(M?k(H,"name",{value:x,configurable:!0}):H.name=x),P&&v&&b(v,"arity")&&H.length!==v.arity&&k(H,"length",{value:v.arity});try{v&&b(v,"constructor")&&v.constructor?M&&k(H,"prototype",{writable:!1}):H.prototype&&(H.prototype=void 0)}catch(E){}var $=o(H);return b($,"source")||($.source=C(r,typeof x=="string"?x:"")),H};Function.prototype.toString=A(function(){return N(this)&&y(this).source||X(this)},"toString")},741:V=>{var t=Math.ceil,d=Math.floor;V.exports=Math.trunc||function(n){var i=+n;return(i>0?d:t)(i)}},6043:(V,t,d)=>{var n=d(9306),i=TypeError,N=function(b){var M,J;this.promise=new b(function(X,p){if(M!==void 0||J!==void 0)throw new i("Bad Promise constructor");M=X,J=p}),this.resolve=n(M),this.reject=n(J)};V.exports.f=function(b){return new N(b)}},2603:(V,t,d)=>{var n=d(655);V.exports=function(i,N){return i===void 0?arguments.length<2?"":N:n(i)}},2360:(V,t,d)=>{var n=d(8551),i=d(6801),N=d(8727),b=d(421),M=d(397),J=d(4055),X=d(6119),p=">",o="<",y="prototype",I="script",k=X("IE_PROTO"),w=function(){},K=function(H){return o+I+p+H+o+"/"+I+p},C=function(H){H.write(K("")),H.close();var x=H.parentWindow.Object;return H=null,x},P=function(){var H=J("iframe"),x="java"+I+":",v;return H.style.display="none",M.appendChild(H),H.src=String(x),v=H.contentWindow.document,v.open(),v.write(K("document.F=Object")),v.close(),v.F},r,A=function(){try{r=new ActiveXObject("htmlfile")}catch(x){}A=typeof document<"u"?document.domain&&r?C(r):P():C(r);for(var H=N.length;H--;)delete A[y][N[H]];return A()};b[k]=!0,V.exports=Object.create||function(H,x){var v;return H!==null?(w[y]=n(H),v=new w,w[y]=null,v[k]=H):v=A(),x===void 0?v:i.f(v,x)}},6801:(V,t,d)=>{var n=d(3724),i=d(8686),N=d(4913),b=d(8551),M=d(5397),J=d(1072);t.f=n&&!i?Object.defineProperties:function(X,p){b(X);for(var o=M(p),y=J(p),I=y.length,k=0,w;I>k;)N.f(X,w=y[k++],o[w]);return X}},4913:(V,t,d)=>{var n=d(3724),i=d(5917),N=d(8686),b=d(8551),M=d(6969),J=TypeError,X=Object.defineProperty,p=Object.getOwnPropertyDescriptor,o="enumerable",y="configurable",I="writable";t.f=n?N?function(k,w,K){if(b(k),w=M(w),b(K),typeof k=="function"&&w==="prototype"&&"value"in K&&I in K&&!K[I]){var C=p(k,w);C&&C[I]&&(k[w]=K.value,K={configurable:y in K?K[y]:C[y],enumerable:o in K?K[o]:C[o],writable:!1})}return X(k,w,K)}:X:function(k,w,K){if(b(k),w=M(w),b(K),i)try{return X(k,w,K)}catch(C){}if("get"in K||"set"in K)throw new J("Accessors not supported");return"value"in K&&(k[w]=K.value),k}},7347:(V,t,d)=>{var n=d(3724),i=d(9565),N=d(8773),b=d(6980),M=d(5397),J=d(6969),X=d(9297),p=d(5917),o=Object.getOwnPropertyDescriptor;t.f=n?o:function(y,I){if(y=M(y),I=J(I),p)try{return o(y,I)}catch(k){}if(X(y,I))return b(!i(N.f,y,I),y[I])}},8480:(V,t,d)=>{var n=d(1828),i=d(8727),N=i.concat("length","prototype");t.f=Object.getOwnPropertyNames||function(b){return n(b,N)}},3717:(V,t)=>{t.f=Object.getOwnPropertySymbols},2787:(V,t,d)=>{var n=d(9297),i=d(4901),N=d(8981),b=d(6119),M=d(2211),J=b("IE_PROTO"),X=Object,p=X.prototype;V.exports=M?X.getPrototypeOf:function(o){var y=N(o);if(n(y,J))return y[J];var I=y.constructor;return i(I)&&y instanceof I?I.prototype:y instanceof X?p:null}},1625:(V,t,d)=>{var n=d(9504);V.exports=n({}.isPrototypeOf)},1828:(V,t,d)=>{var n=d(9504),i=d(9297),N=d(5397),b=d(9617).indexOf,M=d(421),J=n([].push);V.exports=function(X,p){var o=N(X),y=0,I=[],k;for(k in o)!i(M,k)&&i(o,k)&&J(I,k);for(;p.length>y;)i(o,k=p[y++])&&(~b(I,k)||J(I,k));return I}},1072:(V,t,d)=>{var n=d(1828),i=d(8727);V.exports=Object.keys||function(N){return n(N,i)}},8773:(V,t)=>{var d={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,i=n&&!d.call({1:2},1);t.f=i?function(N){var b=n(this,N);return!!b&&b.enumerable}:d},2967:(V,t,d)=>{var n=d(6706),i=d(34),N=d(7750),b=d(3506);V.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var M=!1,J={},X;try{X=n(Object.prototype,"__proto__","set"),X(J,[]),M=J instanceof Array}catch(p){}return function(p,o){return N(p),b(o),i(p)&&(M?X(p,o):p.__proto__=o),p}}():void 0)},4270:(V,t,d)=>{var n=d(9565),i=d(4901),N=d(34),b=TypeError;V.exports=function(M,J){var X,p;if(J==="string"&&i(X=M.toString)&&!N(p=n(X,M))||i(X=M.valueOf)&&!N(p=n(X,M))||J!=="string"&&i(X=M.toString)&&!N(p=n(X,M)))return p;throw new b("Can't convert object to primitive value")}},5031:(V,t,d)=>{var n=d(7751),i=d(9504),N=d(8480),b=d(3717),M=d(8551),J=i([].concat);V.exports=n("Reflect","ownKeys")||function(X){var p=N.f(M(X)),o=b.f;return o?J(p,o(X)):p}},8235:(V,t,d)=>{var n=d(9504),i=d(9297),N=SyntaxError,b=parseInt,M=String.fromCharCode,J=n("".charAt),X=n("".slice),p=n(/./.exec),o={'\\"':'"',"\\\\":"\\","\\/":"/","\\b":"\b","\\f":"\f","\\n":`
|
||
`,"\\r":"\r","\\t":" "},y=/^[\da-f]{4}$/i,I=/^[\u0000-\u001F]$/;V.exports=function(k,w){for(var K=!0,C="";w<k.length;){var P=J(k,w);if(P==="\\"){var r=X(k,w,w+2);if(i(o,r))C+=o[r],w+=2;else if(r==="\\u"){w+=2;var A=X(k,w,w+4);if(!p(y,A))throw new N("Bad Unicode escape at: "+w);C+=M(b(A,16)),w+=4}else throw new N('Unknown escape sequence: "'+r+'"')}else if(P==='"'){K=!1,w++;break}else{if(p(I,P))throw new N("Bad control character in string literal at: "+w);C+=P,w++}}if(K)throw new N("Unterminated string at: "+w);return{value:C,end:w}}},7750:(V,t,d)=>{var n=d(4117),i=TypeError;V.exports=function(N){if(n(N))throw new i("Can't call method on "+N);return N}},9286:(V,t,d)=>{var n=d(4402),i=d(8469),N=n.Set,b=n.add;V.exports=function(M){var J=new N;return i(M,function(X){b(J,X)}),J}},3440:(V,t,d)=>{var n=d(7080),i=d(4402),N=d(9286),b=d(5170),M=d(3789),J=d(8469),X=d(507),p=i.has,o=i.remove;V.exports=function(y){var I=n(this),k=M(y),w=N(I);return b(I)<=k.size?J(I,function(K){k.includes(K)&&o(w,K)}):X(k.getIterator(),function(K){p(I,K)&&o(w,K)}),w}},4402:(V,t,d)=>{var n=d(9504),i=Set.prototype;V.exports={Set,add:n(i.add),has:n(i.has),remove:n(i.delete),proto:i}},8750:(V,t,d)=>{var n=d(7080),i=d(4402),N=d(5170),b=d(3789),M=d(8469),J=d(507),X=i.Set,p=i.add,o=i.has;V.exports=function(y){var I=n(this),k=b(y),w=new X;return N(I)>k.size?J(k.getIterator(),function(K){o(I,K)&&p(w,K)}):M(I,function(K){k.includes(K)&&p(w,K)}),w}},4449:(V,t,d)=>{var n=d(7080),i=d(4402).has,N=d(5170),b=d(3789),M=d(8469),J=d(507),X=d(9539);V.exports=function(p){var o=n(this),y=b(p);if(N(o)<=y.size)return M(o,function(k){if(y.includes(k))return!1},!0)!==!1;var I=y.getIterator();return J(I,function(k){if(i(o,k))return X(I,"normal",!1)})!==!1}},3838:(V,t,d)=>{var n=d(7080),i=d(5170),N=d(8469),b=d(3789);V.exports=function(M){var J=n(this),X=b(M);return i(J)>X.size?!1:N(J,function(p){if(!X.includes(p))return!1},!0)!==!1}},8527:(V,t,d)=>{var n=d(7080),i=d(4402).has,N=d(5170),b=d(3789),M=d(507),J=d(9539);V.exports=function(X){var p=n(this),o=b(X);if(N(p)<o.size)return!1;var y=o.getIterator();return M(y,function(I){if(!i(p,I))return J(y,"normal",!1)})!==!1}},8469:(V,t,d)=>{var n=d(9504),i=d(507),N=d(4402),b=N.Set,M=N.proto,J=n(M.forEach),X=n(M.keys),p=X(new b).next;V.exports=function(o,y,I){return I?i({iterator:X(o),next:p},y):J(o,y)}},4916:(V,t,d)=>{var n=d(7751),i=function(N){return{size:N,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}};V.exports=function(N){var b=n("Set");try{new b()[N](i(0));try{return new b()[N](i(-1)),!1}catch(M){return!0}}catch(M){return!1}}},5170:(V,t,d)=>{var n=d(6706),i=d(4402);V.exports=n(i.proto,"size","get")||function(N){return N.size}},3650:(V,t,d)=>{var n=d(7080),i=d(4402),N=d(9286),b=d(3789),M=d(507),J=i.add,X=i.has,p=i.remove;V.exports=function(o){var y=n(this),I=b(o).getIterator(),k=N(y);return M(I,function(w){X(y,w)?p(k,w):J(k,w)}),k}},4204:(V,t,d)=>{var n=d(7080),i=d(4402).add,N=d(9286),b=d(3789),M=d(507);V.exports=function(J){var X=n(this),p=b(J).getIterator(),o=N(X);return M(p,function(y){i(o,y)}),o}},6119:(V,t,d)=>{var n=d(5745),i=d(3392),N=n("keys");V.exports=function(b){return N[b]||(N[b]=i(b))}},7629:(V,t,d)=>{var n=d(6395),i=d(4475),N=d(9433),b="__core-js_shared__",M=V.exports=i[b]||N(b,{});(M.versions||(M.versions=[])).push({version:"3.37.1",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.37.1/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(V,t,d)=>{var n=d(7629);V.exports=function(i,N){return n[i]||(n[i]=N||{})}},1548:(V,t,d)=>{var n=d(4475),i=d(9039),N=d(7388),b=d(7290),M=d(516),J=d(9088),X=n.structuredClone;V.exports=!!X&&!i(function(){if(M&&N>92||J&&N>94||b&&N>97)return!1;var p=new ArrayBuffer(8),o=X(p,{transfer:[p]});return p.byteLength!==0||o.byteLength!==8})},4495:(V,t,d)=>{var n=d(7388),i=d(9039),N=d(4475),b=N.String;V.exports=!!Object.getOwnPropertySymbols&&!i(function(){var M=Symbol("symbol detection");return!b(M)||!(Object(M)instanceof Symbol)||!Symbol.sham&&n&&n<41})},5610:(V,t,d)=>{var n=d(1291),i=Math.max,N=Math.min;V.exports=function(b,M){var J=n(b);return J<0?i(J+M,0):N(J,M)}},5854:(V,t,d)=>{var n=d(2777),i=TypeError;V.exports=function(N){var b=n(N,"number");if(typeof b=="number")throw new i("Can't convert number to bigint");return BigInt(b)}},7696:(V,t,d)=>{var n=d(1291),i=d(8014),N=RangeError;V.exports=function(b){if(b===void 0)return 0;var M=n(b),J=i(M);if(M!==J)throw new N("Wrong length or index");return J}},5397:(V,t,d)=>{var n=d(7055),i=d(7750);V.exports=function(N){return n(i(N))}},1291:(V,t,d)=>{var n=d(741);V.exports=function(i){var N=+i;return N!==N||N===0?0:n(N)}},8014:(V,t,d)=>{var n=d(1291),i=Math.min;V.exports=function(N){var b=n(N);return b>0?i(b,9007199254740991):0}},8981:(V,t,d)=>{var n=d(7750),i=Object;V.exports=function(N){return i(n(N))}},2777:(V,t,d)=>{var n=d(9565),i=d(34),N=d(757),b=d(5966),M=d(4270),J=d(8227),X=TypeError,p=J("toPrimitive");V.exports=function(o,y){if(!i(o)||N(o))return o;var I=b(o,p),k;if(I){if(y===void 0&&(y="default"),k=n(I,o,y),!i(k)||N(k))return k;throw new X("Can't convert object to primitive value")}return y===void 0&&(y="number"),M(o,y)}},6969:(V,t,d)=>{var n=d(2777),i=d(757);V.exports=function(N){var b=n(N,"string");return i(b)?b:b+""}},2140:(V,t,d)=>{var n=d(8227),i=n("toStringTag"),N={};N[i]="z",V.exports=String(N)==="[object z]"},655:(V,t,d)=>{var n=d(6955),i=String;V.exports=function(N){if(n(N)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return i(N)}},9714:(V,t,d)=>{var n=d(9088);V.exports=function(i){try{if(n)return Function('return require("'+i+'")')()}catch(N){}}},6823:V=>{var t=String;V.exports=function(d){try{return t(d)}catch(n){return"Object"}}},3392:(V,t,d)=>{var n=d(9504),i=0,N=Math.random(),b=n(1 .toString);V.exports=function(M){return"Symbol("+(M===void 0?"":M)+")_"+b(++i+N,36)}},7040:(V,t,d)=>{var n=d(4495);V.exports=n&&!Symbol.sham&&typeof Symbol.iterator=="symbol"},8686:(V,t,d)=>{var n=d(3724),i=d(9039);V.exports=n&&i(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})},2812:V=>{var t=TypeError;V.exports=function(d,n){if(d<n)throw new t("Not enough arguments");return d}},8622:(V,t,d)=>{var n=d(4475),i=d(4901),N=n.WeakMap;V.exports=i(N)&&/native code/.test(String(N))},8227:(V,t,d)=>{var n=d(4475),i=d(5745),N=d(9297),b=d(3392),M=d(4495),J=d(7040),X=n.Symbol,p=i("wks"),o=J?X.for||X:X&&X.withoutSetter||b;V.exports=function(y){return N(p,y)||(p[y]=M&&N(X,y)?X[y]:o("Symbol."+y)),p[y]}},6573:(V,t,d)=>{var n=d(3724),i=d(2106),N=d(3238),b=ArrayBuffer.prototype;n&&!("detached"in b)&&i(b,"detached",{configurable:!0,get:function(){return N(this)}})},7936:(V,t,d)=>{var n=d(6518),i=d(5636);i&&n({target:"ArrayBuffer",proto:!0},{transferToFixedLength:function(){return i(this,arguments.length?arguments[0]:void 0,!1)}})},8100:(V,t,d)=>{var n=d(6518),i=d(5636);i&&n({target:"ArrayBuffer",proto:!0},{transfer:function(){return i(this,arguments.length?arguments[0]:void 0,!0)}})},4114:(V,t,d)=>{var n=d(6518),i=d(8981),N=d(6198),b=d(4527),M=d(6837),J=d(9039),X=J(function(){return[].push.call({length:4294967296},1)!==4294967297}),p=function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(y){return y instanceof TypeError}},o=X||!p();n({target:"Array",proto:!0,arity:1,forced:o},{push:function(y){var I=i(this),k=N(I),w=arguments.length;M(k+w);for(var K=0;K<w;K++)I[k]=arguments[K],k++;return b(I,k),k}})},4628:(V,t,d)=>{var n=d(6518),i=d(6043);n({target:"Promise",stat:!0},{withResolvers:function(){var N=i.f(this);return{promise:N.promise,resolve:N.resolve,reject:N.reject}}})},7642:(V,t,d)=>{var n=d(6518),i=d(3440),N=d(4916);n({target:"Set",proto:!0,real:!0,forced:!N("difference")},{difference:i})},8004:(V,t,d)=>{var n=d(6518),i=d(9039),N=d(8750),b=d(4916),M=!b("intersection")||i(function(){return String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))!=="3,2"});n({target:"Set",proto:!0,real:!0,forced:M},{intersection:N})},3853:(V,t,d)=>{var n=d(6518),i=d(4449),N=d(4916);n({target:"Set",proto:!0,real:!0,forced:!N("isDisjointFrom")},{isDisjointFrom:i})},5876:(V,t,d)=>{var n=d(6518),i=d(3838),N=d(4916);n({target:"Set",proto:!0,real:!0,forced:!N("isSubsetOf")},{isSubsetOf:i})},2475:(V,t,d)=>{var n=d(6518),i=d(8527),N=d(4916);n({target:"Set",proto:!0,real:!0,forced:!N("isSupersetOf")},{isSupersetOf:i})},5024:(V,t,d)=>{var n=d(6518),i=d(3650),N=d(4916);n({target:"Set",proto:!0,real:!0,forced:!N("symmetricDifference")},{symmetricDifference:i})},1698:(V,t,d)=>{var n=d(6518),i=d(4204),N=d(4916);n({target:"Set",proto:!0,real:!0,forced:!N("union")},{union:i})},7467:(V,t,d)=>{var n=d(7628),i=d(4644),N=i.aTypedArray,b=i.exportTypedArrayMethod,M=i.getTypedArrayConstructor;b("toReversed",function(){return n(N(this),M(this))})},4732:(V,t,d)=>{var n=d(4644),i=d(9504),N=d(9306),b=d(5370),M=n.aTypedArray,J=n.getTypedArrayConstructor,X=n.exportTypedArrayMethod,p=i(n.TypedArrayPrototype.sort);X("toSorted",function(o){o!==void 0&&N(o);var y=M(this),I=b(J(y),y);return p(I,o)})},9577:(V,t,d)=>{var n=d(9928),i=d(4644),N=d(1108),b=d(1291),M=d(5854),J=i.aTypedArray,X=i.getTypedArrayConstructor,p=i.exportTypedArrayMethod,o=!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(y){return y===8}}();p("with",function(y,I){var k=J(this),w=b(y),K=N(k)?M(I):+I;return n(k,X(k),w,K)},!o)},8992:(V,t,d)=>{var n=d(6518),i=d(4475),N=d(679),b=d(8551),M=d(4901),J=d(2787),X=d(2106),p=d(4659),o=d(9039),y=d(9297),I=d(8227),k=d(7657).IteratorPrototype,w=d(3724),K=d(6395),C="constructor",P="Iterator",r=I("toStringTag"),A=TypeError,H=i[P],x=K||!M(H)||H.prototype!==k||!o(function(){H({})}),v=function(){if(N(this,k),J(this)===k)throw new A("Abstract class Iterator not directly constructable")},$=function(E,O){w?X(k,E,{configurable:!0,get:function(){return O},set:function(_){if(b(this),this===k)throw new A("You can't redefine this property");y(this,E)?this[E]=_:p(this,E,_)}}):k[E]=O};y(k,r)||$(r,P),(x||!y(k,C)||k[C]===Object)&&$(C,v),v.prototype=k,n({global:!0,constructor:!0,forced:x},{Iterator:v})},3215:(V,t,d)=>{var n=d(6518),i=d(2652),N=d(9306),b=d(8551),M=d(1767);n({target:"Iterator",proto:!0,real:!0},{every:function(J){b(this),N(J);var X=M(this),p=0;return!i(X,function(o,y){if(!J(o,p++))return y()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},4520:(V,t,d)=>{var n=d(6518),i=d(9565),N=d(9306),b=d(8551),M=d(1767),J=d(9462),X=d(6319),p=d(6395),o=J(function(){for(var y=this.iterator,I=this.predicate,k=this.next,w,K,C;;){if(w=b(i(k,y)),K=this.done=!!w.done,K)return;if(C=w.value,X(y,I,[C,this.counter++],!0))return C}});n({target:"Iterator",proto:!0,real:!0,forced:p},{filter:function(y){return b(this),N(y),new o(M(this),{predicate:y})}})},670:(V,t,d)=>{var n=d(6518),i=d(9565),N=d(9306),b=d(8551),M=d(1767),J=d(8646),X=d(9462),p=d(9539),o=d(6395),y=X(function(){for(var I=this.iterator,k=this.mapper,w,K;;){if(K=this.inner)try{if(w=b(i(K.next,K.iterator)),!w.done)return w.value;this.inner=null}catch(C){p(I,"throw",C)}if(w=b(i(this.next,I)),this.done=!!w.done)return;try{this.inner=J(k(w.value,this.counter++),!1)}catch(C){p(I,"throw",C)}}});n({target:"Iterator",proto:!0,real:!0,forced:o},{flatMap:function(I){return b(this),N(I),new y(M(this),{mapper:I,inner:null})}})},1454:(V,t,d)=>{var n=d(6518),i=d(713),N=d(6395);n({target:"Iterator",proto:!0,real:!0,forced:N},{map:i})},7550:(V,t,d)=>{var n=d(6518),i=d(2652),N=d(9306),b=d(8551),M=d(1767);n({target:"Iterator",proto:!0,real:!0},{some:function(J){b(this),N(J);var X=M(this),p=0;return i(X,function(o,y){if(J(o,p++))return y()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})},8335:(V,t,d)=>{var n=d(6518),i=d(3724),N=d(4475),b=d(7751),M=d(9504),J=d(9565),X=d(4901),p=d(34),o=d(4376),y=d(9297),I=d(655),k=d(6198),w=d(4659),K=d(9039),C=d(8235),P=d(4495),r=N.JSON,A=N.Number,H=N.SyntaxError,x=r&&r.parse,v=b("Object","keys"),$=Object.getOwnPropertyDescriptor,E=M("".charAt),O=M("".slice),_=M(/./.exec),tl=M([].push),Vl=/^\d$/,Rl=/^[1-9]$/,sl=/^(?:-|\d)$/,g=/^[\t\n\r ]$/,pl=0,Jl=1,kl=function(Wl,dl){Wl=I(Wl);var cl=new Rd(Wl,0),Ml=cl.parse(),Ll=Ml.value,Ql=cl.skip(g,Ml.end);if(Ql<Wl.length)throw new H('Unexpected extra character: "'+E(Wl,Ql)+'" after the parsed data at: '+Ql);return X(dl)?FU({"":Ll},"",dl,Ml):Ll},FU=function(Wl,dl,cl,Ml){var Ll=Wl[dl],Ql=Ml&&Ll===Ml.value,Il=Ql&&typeof Ml.source=="string"?{source:Ml.source}:{},xl,BU,lU,Kl,hd;if(p(Ll)){var iF=o(Ll),hZ=Ql?Ml.nodes:iF?[]:{};if(iF)for(xl=hZ.length,lU=k(Ll),Kl=0;Kl<lU;Kl++)fU(Ll,Kl,FU(Ll,""+Kl,cl,Kl<xl?hZ[Kl]:void 0));else for(BU=v(Ll),lU=k(BU),Kl=0;Kl<lU;Kl++)hd=BU[Kl],fU(Ll,hd,FU(Ll,hd,cl,y(hZ,hd)?hZ[hd]:void 0))}return J(cl,Wl,dl,Ll,Il)},fU=function(Wl,dl,cl){if(i){var Ml=$(Wl,dl);if(Ml&&!Ml.configurable)return}cl===void 0?delete Wl[dl]:w(Wl,dl,cl)},uU=function(Wl,dl,cl,Ml){this.value=Wl,this.end=dl,this.source=cl,this.nodes=Ml},Rd=function(Wl,dl){this.source=Wl,this.index=dl};Rd.prototype={fork:function(Wl){return new Rd(this.source,Wl)},parse:function(){var Wl=this.source,dl=this.skip(g,this.index),cl=this.fork(dl),Ml=E(Wl,dl);if(_(sl,Ml))return cl.number();switch(Ml){case"{":return cl.object();case"[":return cl.array();case'"':return cl.string();case"t":return cl.keyword(!0);case"f":return cl.keyword(!1);case"n":return cl.keyword(null)}throw new H('Unexpected character: "'+Ml+'" at: '+dl)},node:function(Wl,dl,cl,Ml,Ll){return new uU(dl,Ml,Wl?null:O(this.source,cl,Ml),Ll)},object:function(){for(var Wl=this.source,dl=this.index+1,cl=!1,Ml={},Ll={};dl<Wl.length;){if(dl=this.until(['"',"}"],dl),E(Wl,dl)==="}"&&!cl){dl++;break}var Ql=this.fork(dl).string(),Il=Ql.value;dl=Ql.end,dl=this.until([":"],dl)+1,dl=this.skip(g,dl),Ql=this.fork(dl).parse(),w(Ll,Il,Ql),w(Ml,Il,Ql.value),dl=this.until([",","}"],Ql.end);var xl=E(Wl,dl);if(xl===",")cl=!0,dl++;else if(xl==="}"){dl++;break}}return this.node(Jl,Ml,this.index,dl,Ll)},array:function(){for(var Wl=this.source,dl=this.index+1,cl=!1,Ml=[],Ll=[];dl<Wl.length;){if(dl=this.skip(g,dl),E(Wl,dl)==="]"&&!cl){dl++;break}var Ql=this.fork(dl).parse();if(tl(Ll,Ql),tl(Ml,Ql.value),dl=this.until([",","]"],Ql.end),E(Wl,dl)===",")cl=!0,dl++;else if(E(Wl,dl)==="]"){dl++;break}}return this.node(Jl,Ml,this.index,dl,Ll)},string:function(){var Wl=this.index,dl=C(this.source,this.index+1);return this.node(pl,dl.value,Wl,dl.end)},number:function(){var Wl=this.source,dl=this.index,cl=dl;if(E(Wl,cl)==="-"&&cl++,E(Wl,cl)==="0")cl++;else if(_(Rl,E(Wl,cl)))cl=this.skip(Vl,++cl);else throw new H("Failed to parse number at: "+cl);if(E(Wl,cl)==="."&&(cl=this.skip(Vl,++cl)),E(Wl,cl)==="e"||E(Wl,cl)==="E"){cl++,(E(Wl,cl)==="+"||E(Wl,cl)==="-")&&cl++;var Ml=cl;if(cl=this.skip(Vl,cl),Ml===cl)throw new H("Failed to parse number's exponent value at: "+cl)}return this.node(pl,A(O(Wl,dl,cl)),dl,cl)},keyword:function(Wl){var dl=""+Wl,cl=this.index,Ml=cl+dl.length;if(O(this.source,cl,Ml)!==dl)throw new H("Failed to parse value at: "+cl);return this.node(pl,Wl,cl,Ml)},skip:function(Wl,dl){for(var cl=this.source;dl<cl.length&&_(Wl,E(cl,dl));dl++);return dl},until:function(Wl,dl){dl=this.skip(g,dl);for(var cl=E(this.source,dl),Ml=0;Ml<Wl.length;Ml++)if(Wl[Ml]===cl)return dl;throw new H('Unexpected character: "'+cl+'" at: '+dl)}};var nt=K(function(){var Wl="9007199254740993",dl;return x(Wl,function(cl,Ml,Ll){dl=Ll.source}),dl!==Wl}),st=P&&!K(function(){return 1/x("-0 ")!==-1/0});n({target:"JSON",stat:!0,forced:nt},{parse:function(Wl,dl){return st&&!X(dl)?x(Wl):kl(Wl,dl)}})},3375:(V,t,d)=>{d(7642)},9225:(V,t,d)=>{d(8004)},3972:(V,t,d)=>{d(3853)},9209:(V,t,d)=>{d(5876)},5714:(V,t,d)=>{d(2475)},7561:(V,t,d)=>{d(5024)},6197:(V,t,d)=>{d(1698)},4979:(V,t,d)=>{var n=d(6518),i=d(4475),N=d(7751),b=d(6980),M=d(4913).f,J=d(9297),X=d(679),p=d(3167),o=d(2603),y=d(5002),I=d(6193),k=d(3724),w=d(6395),K="DOMException",C=N("Error"),P=N(K),r=function(){X(this,A);var sl=arguments.length,g=o(sl<1?void 0:arguments[0]),pl=o(sl<2?void 0:arguments[1],"Error"),Jl=new P(g,pl),kl=new C(g);return kl.name=K,M(Jl,"stack",b(1,I(kl.stack,1))),p(Jl,this,r),Jl},A=r.prototype=P.prototype,H="stack"in new C(K),x="stack"in new P(1,2),v=P&&k&&Object.getOwnPropertyDescriptor(i,K),$=!!v&&!(v.writable&&v.configurable),E=H&&!$&&!x;n({global:!0,constructor:!0,forced:w||E},{DOMException:E?r:P});var O=N(K),_=O.prototype;if(_.constructor!==O){w||M(_,"constructor",b(1,O));for(var tl in y)if(J(y,tl)){var Vl=y[tl],Rl=Vl.s;J(O,Rl)||M(O,Rl,b(6,Vl.c))}}},4603:(V,t,d)=>{var n=d(6840),i=d(9504),N=d(655),b=d(2812),M=URLSearchParams,J=M.prototype,X=i(J.append),p=i(J.delete),o=i(J.forEach),y=i([].push),I=new M("a=1&a=2&b=3");I.delete("a",1),I.delete("b",void 0),I+""!="a=2"&&n(J,"delete",function(k){var w=arguments.length,K=w<2?void 0:arguments[1];if(w&&K===void 0)return p(this,k);var C=[];o(this,function(E,O){y(C,{key:O,value:E})}),b(w,1);for(var P=N(k),r=N(K),A=0,H=0,x=!1,v=C.length,$;A<v;)$=C[A++],x||$.key===P?(x=!0,p(this,$.key)):H++;for(;H<v;)$=C[H++],$.key===P&&$.value===r||X(this,$.key,$.value)},{enumerable:!0,unsafe:!0})},7566:(V,t,d)=>{var n=d(6840),i=d(9504),N=d(655),b=d(2812),M=URLSearchParams,J=M.prototype,X=i(J.getAll),p=i(J.has),o=new M("a=1");(o.has("a",2)||!o.has("a",void 0))&&n(J,"has",function(y){var I=arguments.length,k=I<2?void 0:arguments[1];if(I&&k===void 0)return p(this,y);var w=X(this,y);b(I,1);for(var K=N(k),C=0;C<w.length;)if(w[C++]===K)return!0;return!1},{enumerable:!0,unsafe:!0})},8721:(V,t,d)=>{var n=d(3724),i=d(9504),N=d(2106),b=URLSearchParams.prototype,M=i(b.forEach);n&&!("size"in b)&&N(b,"size",{get:function(){var J=0;return M(this,function(){J++}),J},configurable:!0,enumerable:!0})}},we={};function zl(V){var t=we[V];if(t!==void 0)return t.exports;var d=we[V]={exports:{}};return tT[V].call(d.exports,d,d.exports,zl),d.exports}zl.d=(V,t)=>{for(var d in t)zl.o(t,d)&&!zl.o(V,d)&&Object.defineProperty(V,d,{enumerable:!0,get:t[d]})};zl.o=(V,t)=>Object.prototype.hasOwnProperty.call(V,t);var hl=globalThis.pdfjsLib={};(()=>{var V,t,d,n,i,N,b,M,J,X,p,o,y,I,k,w,K,C,P,r,A,H,x,v,$,E,O,_,tl,Vl,Rl,sl,g,pl,Jl,kl,FU,fU,uU,Rd,nt,st,Wl,dl,cl,Ml,Ll,Ql,Il,xl,BU,lU,Kl,hd,iF,hZ,Qb,xQ,Na,rQ,IU,Ra,jQ,sU,Qt,ha,UU,OQ,ib,AU,cU,hU,v0,bZ,NF,bd,P0,RF,Ed,mZ,hF,ba,ma,wd,f0,it,md,gQ,Nt,ea,bF,Ma,A0,bU,Dl,eZ,mF,_0,Ga,Ja,Ta,Sa,Xa,Ya,pa,ua,Ba,oa,ya,za,La,Rt,Cd,MZ,ka,q0,Ia,KQ,Nb,HQ,Rb,$0,Da,vQ,hb,PQ,bb,fQ,mb,Ea,AQ,wa,_Q,Ca,qQ,xa,$Q,ra,li,mU,oU,xd,GZ,Ui,eb,di,Mb,ja,Zi,ti,Gb,eF,lc,Oa,Fi,JZ,TZ,ed,SZ,Md,Uc,XZ,ga,ci,Gd,DU,dc,MF,eU,GF,Zc,tc,yU,Ka,JF,rd,Ha,TF,YZ,jd,Fc,cc,_U,va,Wi,Pa,ai,fa,Vi,Aa,ni,si,Jb,Qi,Tb,_a,ii,qa,Ni,$a,Ri,hi,Sb,bi,Xb,mi,Yb,ei,pb,lV,Mi,SF,Wc,XF,MU,Gi,ub,UV,ac,dV,Ji,ZV,Ti,tV,FV,Si,Bb,Xi,ob,Vc,cV,YF,WV,aV,VV,nV,nc,ht,wl,sc,Qc,sV,Yi,yb,bt,KU,QV,iV,mt,pZ,NV,RV,pF,ic,Nc,et,Rc,hV,hc,uF,bV,mV,BF,oF,bc,pi,zb,ui,Lb,eV,Bi,mc,MV,oi,kb,yi,Mt,uZ,Gt,yF,ec,GV,zF,zi,Jt,Mc,JV,BZ,Od,Gc,Jc,gd,LF,Tc,Jd,TV,Li,Tt,kF,St,Sc,Xc,SV,ki,oZ,Xt,Ii,Ib,Di,Db,Yc,Ei,wi,pc,IF,Hl,yZ,DF,XV,YV,uc,zZ,Td,LZ,pV,kZ,uV,Yt,EF,Bc,BV,oV,Ci,xi,Eb,ri,wb,ji,Cb,Oi,xb,oc,yV,yc,zV,LV,gi,kV,IV,DV,EV,wV,CV,xV,Ki,rV,wF,zc,Hi,rb,jV,vi,OV,gV,KV,HV,vV,Sd,qU,PV,$U,Lc,Pi,jb,fi,Ob,Ai,gb,kc,fV,Ic,AV,Dc,_V,_i,Kb,qV,qi,$i,Hb,$V,pt,Xd,lN,vb,Ec,ln,UN,Pb,dN,fb,Un,ZN,dn,wc,Kd,IZ,Cc,xc,Hd,ul,CF,xF,Zn,tn,rc,jc,ut,Fn,tN,FN,cn,cN,Oc,rF,DZ,Wn,ld,an,Al,jF,gc,OF,Kc,WN,Ab,Vn,nn,Yd,gF,Hc,WU,sn,vc,Qn,Nn,Bt,Pc,Rn,aN,hn,VN,nN,_b,EZ,ot,sN,qb,vd,wZ,fc,bn,yt,KF,Ac,Fd,mn,en,HF,pd,EU,Ud,QN,_c,vF,aU,qc,Pd,Mn,Gn,iN,Jn,NN,RN,$b,hN,lm,bN,Um,Tn,mN,PF,$c,zt,fF,eN,dm,lW,Sn,AF,UW,MN,Zm,GN,tm,JN,Fm,TN,cm,_F,qF,Xn,Yn,pn,$F,fd,CZ,cd,l0,U0,d0,Z0,t0,Lt,SN,Wm,XN,am,YN,Vm,pN,nm,un,uN,BN,sm,Bn,oN,yN,Qm,zN,im,LN,Nm,kN,Rm,IN,hm,xZ,kt,on,DN,dW,yn,ZW,zn,It,F0,Ln,EN,tW,kn,wN,bm,In,CN,xN,mm,rN,em,Dn,jN,FW,En,c0,cW,GU,JU,Dt,rZ,Et,WW,Ad,W0,_d,ud,wn,a0,aW,V0,VW,nW,Cn,xn,ON,gN,Mm,KN,Gm,rn,HN,sW,jn,vN,Jm,n0,QW,qd,s0,jZ,OZ,gZ,dd,wt,iW,NW,wU,il,Ct,PN,Tm,On,fN,gn,AN,Kn,_N,RW,Hn,$d,vn,VU,xt,Pn,qN,fn,$N,lR,Sm;zl.d(hl,{AbortException:()=>jt,AnnotationEditorLayer:()=>CJ,AnnotationEditorParamsType:()=>ml,AnnotationEditorType:()=>Bl,AnnotationEditorUIManager:()=>MW,AnnotationLayer:()=>kJ,AnnotationMode:()=>KZ,CMapCompressionType:()=>ZR,ColorPicker:()=>Xe,DOMSVGFactory:()=>nR,DrawLayer:()=>xJ,FeatureTest:()=>CU,GlobalWorkerOptions:()=>vZ,ImageKind:()=>An,InvalidPDFException:()=>Ym,MissingPDFException:()=>rt,OPS:()=>Wd,Outliner:()=>uR,PDFDataRangeTransport:()=>ne,PDFDateString:()=>km,PDFWorker:()=>bs,PasswordResponses:()=>zM,PermissionFlag:()=>yM,PixelsPerInch:()=>i0,RenderingCancelledException:()=>sR,TextLayer:()=>hs,UnexpectedResponseException:()=>ls,Util:()=>nl,VerbosityLevel:()=>_n,XfaLayer:()=>Re,build:()=>iJ,createValidAbsoluteUrl:()=>DM,fetchData:()=>cs,getDocument:()=>dJ,getFilenameFromUrl:()=>HM,getPdfFilenameFromUrl:()=>vM,getXfaPageViewport:()=>PM,isDataScheme:()=>QR,isPdfFile:()=>iR,noContextMenu:()=>xU,normalizeUnicode:()=>jM,renderTextLayer:()=>vG,setLayerDimensions:()=>Ot,shadow:()=>yl,updateTextLayer:()=>PG,version:()=>QJ}),zl(4114),zl(6573),zl(8100),zl(7936),zl(7467),zl(4732),zl(9577),zl(4603),zl(7566),zl(8721);const TU=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),Xm=[1,0,0,1,0,0],UR=[.001,0,0,.001,0,0],BM=1e7,dR=1.35,Zd={ANY:1,DISPLAY:2,PRINT:4,SAVE:8,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,OPLIST:256},KZ={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},oM="pdfjs_internal_editor_",Bl={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15},ml={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_DEFAULT_COLOR:32,HIGHLIGHT_THICKNESS:33,HIGHLIGHT_FREE:34,HIGHLIGHT_SHOW_ALL:35},yM={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},SU={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_ADD_TO_PATH:4,STROKE_ADD_TO_PATH:5,FILL_STROKE_ADD_TO_PATH:6,ADD_TO_PATH:7,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},An={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},dU={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},hW={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},_n={ERRORS:0,WARNINGS:1,INFOS:5},ZR={NONE:0,BINARY:1},Wd={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91},zM={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let qn=_n.WARNINGS;function LM(a){Number.isInteger(a)&&(qn=a)}function kM(){return qn}function $n(a){qn>=_n.INFOS&&console.log(`Info: ${a}`)}function Tl(a){qn>=_n.WARNINGS&&console.log(`Warning: ${a}`)}function El(a){throw new Error(a)}function ZU(a,l){a||El(l)}function IM(a){switch(a==null?void 0:a.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function DM(a,l=null,U=null){if(!a)return null;try{if(U&&typeof a=="string"){if(U.addDefaultProtocol&&a.startsWith("www.")){const c=a.match(/\./g);(c==null?void 0:c.length)>=2&&(a=`http://${a}`)}if(U.tryConvertEncoding)try{a=rM(a)}catch(c){}}const Z=l?new URL(a,l):new URL(a);if(IM(Z))return Z}catch(Z){}return null}function yl(a,l,U,Z=!1){return Object.defineProperty(a,l,{value:U,enumerable:!Z,configurable:!0,writable:!1}),U}const HZ=function(){function a(l,U){this.constructor===a&&El("Cannot initialize BaseException."),this.message=l,this.name=U}return a.prototype=new Error,a.constructor=a,a}();class tR extends HZ{constructor(l,U){super(l,"PasswordException"),this.code=U}}class FR extends HZ{constructor(l,U){super(l,"UnknownErrorException"),this.details=U}}class Ym extends HZ{constructor(l){super(l,"InvalidPDFException")}}class rt extends HZ{constructor(l){super(l,"MissingPDFException")}}class ls extends HZ{constructor(l,U){super(l,"UnexpectedResponseException"),this.status=U}}class EM extends HZ{constructor(l){super(l,"FormatError")}}class jt extends HZ{constructor(l){super(l,"AbortException")}}function pm(a){(typeof a!="object"||(a==null?void 0:a.length)===void 0)&&El("Invalid argument for bytesToString");const l=a.length,U=8192;if(l<U)return String.fromCharCode.apply(null,a);const Z=[];for(let c=0;c<l;c+=U){const W=Math.min(c+U,l),s=a.subarray(c,W);Z.push(String.fromCharCode.apply(null,s))}return Z.join("")}function Us(a){typeof a!="string"&&El("Invalid argument for stringToBytes");const l=a.length,U=new Uint8Array(l);for(let Z=0;Z<l;++Z)U[Z]=a.charCodeAt(Z)&255;return U}function wM(a){return String.fromCharCode(a>>24&255,a>>16&255,a>>8&255,a&255)}function cR(a){const l=Object.create(null);for(const[U,Z]of a)l[U]=Z;return l}function CM(){const a=new Uint8Array(4);return a[0]=1,new Uint32Array(a.buffer,0,1)[0]===1}function xM(){try{return new Function(""),!0}catch(a){return!1}}class CU{static get isLittleEndian(){return yl(this,"isLittleEndian",CM())}static get isEvalSupported(){return yl(this,"isEvalSupported",xM())}static get isOffscreenCanvasSupported(){return yl(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get platform(){return typeof navigator<"u"&&typeof(navigator==null?void 0:navigator.platform)=="string"?yl(this,"platform",{isMac:navigator.platform.includes("Mac")}):yl(this,"platform",{isMac:!1})}static get isCSSRoundSupported(){var l,U;return yl(this,"isCSSRoundSupported",(U=(l=globalThis.CSS)==null?void 0:l.supports)==null?void 0:U.call(l,"width: round(1.5px, 1px)"))}}const WR=Array.from(Array(256).keys(),a=>a.toString(16).padStart(2,"0"));class nl{static makeHexColor(l,U,Z){return`#${WR[l]}${WR[U]}${WR[Z]}`}static scaleMinMax(l,U){let Z;l[0]?(l[0]<0&&(Z=U[0],U[0]=U[2],U[2]=Z),U[0]*=l[0],U[2]*=l[0],l[3]<0&&(Z=U[1],U[1]=U[3],U[3]=Z),U[1]*=l[3],U[3]*=l[3]):(Z=U[0],U[0]=U[1],U[1]=Z,Z=U[2],U[2]=U[3],U[3]=Z,l[1]<0&&(Z=U[1],U[1]=U[3],U[3]=Z),U[1]*=l[1],U[3]*=l[1],l[2]<0&&(Z=U[0],U[0]=U[2],U[2]=Z),U[0]*=l[2],U[2]*=l[2]),U[0]+=l[4],U[1]+=l[5],U[2]+=l[4],U[3]+=l[5]}static transform(l,U){return[l[0]*U[0]+l[2]*U[1],l[1]*U[0]+l[3]*U[1],l[0]*U[2]+l[2]*U[3],l[1]*U[2]+l[3]*U[3],l[0]*U[4]+l[2]*U[5]+l[4],l[1]*U[4]+l[3]*U[5]+l[5]]}static applyTransform(l,U){const Z=l[0]*U[0]+l[1]*U[2]+U[4],c=l[0]*U[1]+l[1]*U[3]+U[5];return[Z,c]}static applyInverseTransform(l,U){const Z=U[0]*U[3]-U[1]*U[2],c=(l[0]*U[3]-l[1]*U[2]+U[2]*U[5]-U[4]*U[3])/Z,W=(-l[0]*U[1]+l[1]*U[0]+U[4]*U[1]-U[5]*U[0])/Z;return[c,W]}static getAxialAlignedBoundingBox(l,U){const Z=this.applyTransform(l,U),c=this.applyTransform(l.slice(2,4),U),W=this.applyTransform([l[0],l[3]],U),s=this.applyTransform([l[2],l[1]],U);return[Math.min(Z[0],c[0],W[0],s[0]),Math.min(Z[1],c[1],W[1],s[1]),Math.max(Z[0],c[0],W[0],s[0]),Math.max(Z[1],c[1],W[1],s[1])]}static inverseTransform(l){const U=l[0]*l[3]-l[1]*l[2];return[l[3]/U,-l[1]/U,-l[2]/U,l[0]/U,(l[2]*l[5]-l[4]*l[3])/U,(l[4]*l[1]-l[5]*l[0])/U]}static singularValueDecompose2dScale(l){const U=[l[0],l[2],l[1],l[3]],Z=l[0]*U[0]+l[1]*U[2],c=l[0]*U[1]+l[1]*U[3],W=l[2]*U[0]+l[3]*U[2],s=l[2]*U[1]+l[3]*U[3],Q=(Z+s)/2,R=Math.sqrt(m0(Z+s,2)-4*(Z*s-W*c))/2,m=Q+R||1,e=Q-R||1;return[Math.sqrt(m),Math.sqrt(e)]}static normalizeRect(l){const U=l.slice(0);return l[0]>l[2]&&(U[0]=l[2],U[2]=l[0]),l[1]>l[3]&&(U[1]=l[3],U[3]=l[1]),U}static intersect(l,U){const Z=Math.max(Math.min(l[0],l[2]),Math.min(U[0],U[2])),c=Math.min(Math.max(l[0],l[2]),Math.max(U[0],U[2]));if(Z>c)return null;const W=Math.max(Math.min(l[1],l[3]),Math.min(U[1],U[3])),s=Math.min(Math.max(l[1],l[3]),Math.max(U[1],U[3]));return W>s?null:[Z,W,c,s]}static bezierBoundingBox(l,U,Z,c,W,s,Q,R,m){return m?(m[0]=Math.min(m[0],l,Q),m[1]=Math.min(m[1],U,R),m[2]=Math.max(m[2],l,Q),m[3]=Math.max(m[3],U,R)):m=[Math.min(l,Q),Math.min(U,R),Math.max(l,Q),Math.max(U,R)],G(this,d,n).call(this,l,Z,W,Q,U,c,s,R,3*(-l+3*(Z-W)+Q),6*(l-2*Z+W),3*(Z-l),m),G(this,d,n).call(this,l,Z,W,Q,U,c,s,R,3*(-U+3*(c-s)+R),6*(U-2*c+s),3*(c-U),m),m}}V=new WeakSet,t=function(a,l,U,Z,c,W,s,Q,R,m){if(R<=0||R>=1)return;const e=1-R,T=R*R,Y=T*R,u=e*(e*(e*a+3*R*l)+3*T*U)+Y*Z,B=e*(e*(e*c+3*R*W)+3*T*s)+Y*Q;m[0]=Math.min(m[0],u),m[1]=Math.min(m[1],B),m[2]=Math.max(m[2],u),m[3]=Math.max(m[3],B)},d=new WeakSet,n=function(a,l,U,Z,c,W,s,Q,R,m,e,T){if(Math.abs(R)<1e-12){Math.abs(m)>=1e-12&&G(this,V,t).call(this,a,l,U,Z,c,W,s,Q,-e/m,T);return}const Y=m0(m,2)-4*e*R;if(Y<0)return;const u=Math.sqrt(Y),B=2*R;G(this,V,t).call(this,a,l,U,Z,c,W,s,Q,(-m+u)/B,T),G(this,V,t).call(this,a,l,U,Z,c,W,s,Q,(-m-u)/B,T)},h(nl,V),h(nl,d);function rM(a){return decodeURIComponent(escape(a))}let aR=null,um=null;function jM(a){return aR||(aR=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,um=new Map([["ſt","ſt"]])),a.replaceAll(aR,(l,U,Z)=>U?U.normalize("NFKC"):um.get(Z))}function OM(){if(typeof crypto<"u"&&typeof(crypto==null?void 0:crypto.randomUUID)=="function")return crypto.randomUUID();const a=new Uint8Array(32);if(typeof crypto<"u"&&typeof(crypto==null?void 0:crypto.getRandomValues)=="function")crypto.getRandomValues(a);else for(let l=0;l<32;l++)a[l]=Math.floor(Math.random()*255);return pm(a)}const Bm="pdfjs_internal_id_",lZ={BEZIER_CURVE_TO:0,MOVE_TO:1,LINE_TO:2,QUADRATIC_CURVE_TO:3,RESTORE:4,SAVE:5,SCALE:6,TRANSFORM:7,TRANSLATE:8};zl(4628),zl(1454),zl(3375),zl(9225),zl(3972),zl(9209),zl(5714),zl(7561),zl(6197),zl(4979),zl(8992),zl(3215),zl(7550),zl(8335),zl(4520);class ds{constructor(){this.constructor===ds&&El("Cannot initialize BaseFilterFactory.")}addFilter(l){return"none"}addHCMFilter(l,U){return"none"}addAlphaFilter(l){return"none"}addLuminosityFilter(l){return"none"}addHighlightHCMFilter(l,U,Z,c,W){return"none"}destroy(l=!1){}}class Zs{constructor(){this.constructor===Zs&&El("Cannot initialize BaseCanvasFactory.")}create(l,U){if(l<=0||U<=0)throw new Error("Invalid canvas size");const Z=this._createCanvas(l,U);return{canvas:Z,context:Z.getContext("2d")}}reset(l,U,Z){if(!l.canvas)throw new Error("Canvas is not specified");if(U<=0||Z<=0)throw new Error("Invalid canvas size");l.canvas.width=U,l.canvas.height=Z}destroy(l){if(!l.canvas)throw new Error("Canvas is not specified");l.canvas.width=0,l.canvas.height=0,l.canvas=null,l.context=null}_createCanvas(l,U){El("Abstract method `_createCanvas` called.")}}class ts{constructor({baseUrl:l=null,isCompressed:U=!0}){this.constructor===ts&&El("Cannot initialize BaseCMapReaderFactory."),this.baseUrl=l,this.isCompressed=U}fetch(U){return Ul(this,arguments,function*({name:l}){if(!this.baseUrl)throw new Error('The CMap "baseUrl" parameter must be specified, ensure that the "cMapUrl" and "cMapPacked" API parameters are provided.');if(!l)throw new Error("CMap name must be specified.");const Z=this.baseUrl+l+(this.isCompressed?".bcmap":""),c=this.isCompressed?ZR.BINARY:ZR.NONE;return this._fetchData(Z,c).catch(W=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${Z}`)})})}_fetchData(l,U){El("Abstract method `_fetchData` called.")}}class Fs{constructor({baseUrl:l=null}){this.constructor===Fs&&El("Cannot initialize BaseStandardFontDataFactory."),this.baseUrl=l}fetch(U){return Ul(this,arguments,function*({filename:l}){if(!this.baseUrl)throw new Error('The standard font "baseUrl" parameter must be specified, ensure that the "standardFontDataUrl" API parameter is provided.');if(!l)throw new Error("Font filename must be specified.");const Z=`${this.baseUrl}${l}`;return this._fetchData(Z).catch(c=>{throw new Error(`Unable to load font data at: ${Z}`)})})}_fetchData(l){El("Abstract method `_fetchData` called.")}}class VR{constructor(){this.constructor===VR&&El("Cannot initialize BaseSVGFactory.")}create(l,U,Z=!1){if(l<=0||U<=0)throw new Error("Invalid SVG dimensions");const c=this._createSVG("svg:svg");return c.setAttribute("version","1.1"),Z||(c.setAttribute("width",`${l}px`),c.setAttribute("height",`${U}px`)),c.setAttribute("preserveAspectRatio","none"),c.setAttribute("viewBox",`0 0 ${l} ${U}`),c}createElement(l){if(typeof l!="string")throw new Error("Invalid SVG element type");return this._createSVG(l)}_createSVG(l){El("Abstract method `_createSVG` called.")}}const UZ="http://www.w3.org/2000/svg",Q0=class{};el(Q0,"CSS",96),el(Q0,"PDF",72),el(Q0,"PDF_TO_CSS_UNITS",Q0.CSS/Q0.PDF);let i0=Q0;class gM extends ds{constructor({docId:l,ownerDocument:U=globalThis.document}={}){super(),h(this,p),h(this,y),h(this,k),h(this,K),h(this,P),h(this,A),h(this,x),h(this,$),h(this,O),h(this,tl),h(this,Rl),h(this,i,void 0),h(this,N,void 0),h(this,b,void 0),h(this,M,void 0),h(this,J,void 0),h(this,X,0),S(this,b,l),S(this,M,U)}addFilter(l){if(!l)return"none";let U=F(this,p,o).get(l);if(U)return U;const[Z,c,W]=G(this,K,C).call(this,l),s=l.length===1?Z:`${Z}${c}${W}`;if(U=F(this,p,o).get(s),U)return F(this,p,o).set(l,U),U;const Q=`g_${F(this,b)}_transfer_map_${PU(this,X)._++}`,R=`url(#${Q})`;F(this,p,o).set(l,R),F(this,p,o).set(s,R);const m=G(this,x,v).call(this,Q);return G(this,O,_).call(this,Z,c,W,m),R}addHCMFilter(l,U){var Z;const c=`${l}-${U}`,W="base";let s=F(this,y,I).get(W);if((s==null?void 0:s.key)===c||(s?((Z=s.filter)==null||Z.remove(),s.key=c,s.url="none",s.filter=null):(s={key:c,url:"none",filter:null},F(this,y,I).set(W,s)),!l||!U))return s.url;const Q=G(this,Rl,sl).call(this,l);l=nl.makeHexColor(...Q);const R=G(this,Rl,sl).call(this,U);if(U=nl.makeHexColor(...R),F(this,k,w).style.color="",l==="#000000"&&U==="#ffffff"||l===U)return s.url;const m=new Array(256);for(let B=0;B<=255;B++){const z=B/255;m[B]=z<=.03928?z/12.92:m0((z+.055)/1.055,2.4)}const e=m.join(","),T=`g_${F(this,b)}_hcm_filter`,Y=s.filter=G(this,x,v).call(this,T);G(this,O,_).call(this,e,e,e,Y),G(this,A,H).call(this,Y);const u=(B,z)=>{const L=Q[B]/255,D=R[B]/255,f=new Array(z+1);for(let j=0;j<=z;j++)f[j]=L+j/z*(D-L);return f.join(",")};return G(this,O,_).call(this,u(0,5),u(1,5),u(2,5),Y),s.url=`url(#${T})`,s.url}addAlphaFilter(l){let U=F(this,p,o).get(l);if(U)return U;const[Z]=G(this,K,C).call(this,[l]),c=`alpha_${Z}`;if(U=F(this,p,o).get(c),U)return F(this,p,o).set(l,U),U;const W=`g_${F(this,b)}_alpha_map_${PU(this,X)._++}`,s=`url(#${W})`;F(this,p,o).set(l,s),F(this,p,o).set(c,s);const Q=G(this,x,v).call(this,W);return G(this,tl,Vl).call(this,Z,Q),s}addLuminosityFilter(l){let U=F(this,p,o).get(l||"luminosity");if(U)return U;let Z,c;if(l?([Z]=G(this,K,C).call(this,[l]),c=`luminosity_${Z}`):c="luminosity",U=F(this,p,o).get(c),U)return F(this,p,o).set(l,U),U;const W=`g_${F(this,b)}_luminosity_map_${PU(this,X)._++}`,s=`url(#${W})`;F(this,p,o).set(l,s),F(this,p,o).set(c,s);const Q=G(this,x,v).call(this,W);return G(this,P,r).call(this,Q),l&&G(this,tl,Vl).call(this,Z,Q),s}addHighlightHCMFilter(l,U,Z,c,W){var s;const Q=`${U}-${Z}-${c}-${W}`;let R=F(this,y,I).get(l);if((R==null?void 0:R.key)===Q||(R?((s=R.filter)==null||s.remove(),R.key=Q,R.url="none",R.filter=null):(R={key:Q,url:"none",filter:null},F(this,y,I).set(l,R)),!U||!Z))return R.url;const[m,e]=[U,Z].map(G(this,Rl,sl).bind(this));let T=Math.round(.2126*m[0]+.7152*m[1]+.0722*m[2]),Y=Math.round(.2126*e[0]+.7152*e[1]+.0722*e[2]),[u,B]=[c,W].map(G(this,Rl,sl).bind(this));Y<T&&([T,Y,u,B]=[Y,T,B,u]),F(this,k,w).style.color="";const z=(f,j,q)=>{const Zl=new Array(256),Fl=(Y-T)/q,al=f/255,bl=(j-f)/(255*q);let Sl=0;for(let Yl=0;Yl<=q;Yl++){const Xl=Math.round(T+Yl*Fl),vl=al+Yl*bl;for(let rl=Sl;rl<=Xl;rl++)Zl[rl]=vl;Sl=Xl+1}for(let Yl=Sl;Yl<256;Yl++)Zl[Yl]=Zl[Sl-1];return Zl.join(",")},L=`g_${F(this,b)}_hcm_${l}_filter`,D=R.filter=G(this,x,v).call(this,L);return G(this,A,H).call(this,D),G(this,O,_).call(this,z(u[0],B[0],5),z(u[1],B[1],5),z(u[2],B[2],5),D),R.url=`url(#${L})`,R.url}destroy(l=!1){l&&F(this,y,I).size!==0||(F(this,N)&&(F(this,N).parentNode.parentNode.remove(),S(this,N,null)),F(this,i)&&(F(this,i).clear(),S(this,i,null)),S(this,X,0))}}i=new WeakMap,N=new WeakMap,b=new WeakMap,M=new WeakMap,J=new WeakMap,X=new WeakMap,p=new WeakSet,o=function(){return F(this,i)||S(this,i,new Map)},y=new WeakSet,I=function(){return F(this,J)||S(this,J,new Map)},k=new WeakSet,w=function(){if(!F(this,N)){const a=F(this,M).createElement("div"),{style:l}=a;l.visibility="hidden",l.contain="strict",l.width=l.height=0,l.position="absolute",l.top=l.left=0,l.zIndex=-1;const U=F(this,M).createElementNS(UZ,"svg");U.setAttribute("width",0),U.setAttribute("height",0),S(this,N,F(this,M).createElementNS(UZ,"defs")),a.append(U),U.append(F(this,N)),F(this,M).body.append(a)}return F(this,N)},K=new WeakSet,C=function(a){if(a.length===1){const Q=a[0],R=new Array(256);for(let e=0;e<256;e++)R[e]=Q[e]/255;const m=R.join(",");return[m,m,m]}const[l,U,Z]=a,c=new Array(256),W=new Array(256),s=new Array(256);for(let Q=0;Q<256;Q++)c[Q]=l[Q]/255,W[Q]=U[Q]/255,s[Q]=Z[Q]/255;return[c.join(","),W.join(","),s.join(",")]},P=new WeakSet,r=function(a){const l=F(this,M).createElementNS(UZ,"feColorMatrix");l.setAttribute("type","matrix"),l.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),a.append(l)},A=new WeakSet,H=function(a){const l=F(this,M).createElementNS(UZ,"feColorMatrix");l.setAttribute("type","matrix"),l.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),a.append(l)},x=new WeakSet,v=function(a){const l=F(this,M).createElementNS(UZ,"filter");return l.setAttribute("color-interpolation-filters","sRGB"),l.setAttribute("id",a),F(this,k,w).append(l),l},$=new WeakSet,E=function(a,l,U){const Z=F(this,M).createElementNS(UZ,l);Z.setAttribute("type","discrete"),Z.setAttribute("tableValues",U),a.append(Z)},O=new WeakSet,_=function(a,l,U,Z){const c=F(this,M).createElementNS(UZ,"feComponentTransfer");Z.append(c),G(this,$,E).call(this,c,"feFuncR",a),G(this,$,E).call(this,c,"feFuncG",l),G(this,$,E).call(this,c,"feFuncB",U)},tl=new WeakSet,Vl=function(a,l){const U=F(this,M).createElementNS(UZ,"feComponentTransfer");l.append(U),G(this,$,E).call(this,U,"feFuncA",a)},Rl=new WeakSet,sl=function(a){return F(this,k,w).style.color=a,RR(getComputedStyle(F(this,k,w)).getPropertyValue("color"))};class KM extends Zs{constructor({ownerDocument:l=globalThis.document}={}){super(),this._document=l}_createCanvas(l,U){const Z=this._document.createElement("canvas");return Z.width=l,Z.height=U,Z}}function cs(a,l="text"){return Ul(this,null,function*(){if(mW(a,document.baseURI)){const U=yield fetch(a);if(!U.ok)throw new Error(U.statusText);switch(l){case"arraybuffer":return U.arrayBuffer();case"blob":return U.blob();case"json":return U.json()}return U.text()}return new Promise((U,Z)=>{const c=new XMLHttpRequest;c.open("GET",a,!0),c.responseType=l,c.onreadystatechange=()=>{if(c.readyState===XMLHttpRequest.DONE){if(c.status===200||c.status===0){switch(l){case"arraybuffer":case"blob":case"json":U(c.response);return}U(c.responseText);return}Z(new Error(c.statusText))}},c.send(null)})})}class om extends ts{_fetchData(l,U){return cs(l,this.isCompressed?"arraybuffer":"text").then(Z=>({cMapData:Z instanceof ArrayBuffer?new Uint8Array(Z):Us(Z),compressionType:U}))}}class ym extends Fs{_fetchData(l){return cs(l,"arraybuffer").then(U=>new Uint8Array(U))}}class nR extends VR{_createSVG(l){return document.createElementNS(UZ,l)}}class bW{constructor({viewBox:l,scale:U,rotation:Z,offsetX:c=0,offsetY:W=0,dontFlip:s=!1}){this.viewBox=l,this.scale=U,this.rotation=Z,this.offsetX=c,this.offsetY=W;const Q=(l[2]+l[0])/2,R=(l[3]+l[1])/2;let m,e,T,Y;switch(Z%=360,Z<0&&(Z+=360),Z){case 180:m=-1,e=0,T=0,Y=1;break;case 90:m=0,e=1,T=1,Y=0;break;case 270:m=0,e=-1,T=-1,Y=0;break;case 0:m=1,e=0,T=0,Y=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}s&&(T=-T,Y=-Y);let u,B,z,L;m===0?(u=Math.abs(R-l[1])*U+c,B=Math.abs(Q-l[0])*U+W,z=(l[3]-l[1])*U,L=(l[2]-l[0])*U):(u=Math.abs(Q-l[0])*U+c,B=Math.abs(R-l[1])*U+W,z=(l[2]-l[0])*U,L=(l[3]-l[1])*U),this.transform=[m*U,e*U,T*U,Y*U,u-m*U*Q-T*U*R,B-e*U*Q-Y*U*R],this.width=z,this.height=L}get rawDims(){const{viewBox:l}=this;return yl(this,"rawDims",{pageWidth:l[2]-l[0],pageHeight:l[3]-l[1],pageX:l[0],pageY:l[1]})}clone({scale:l=this.scale,rotation:U=this.rotation,offsetX:Z=this.offsetX,offsetY:c=this.offsetY,dontFlip:W=!1}={}){return new bW({viewBox:this.viewBox.slice(),scale:l,rotation:U,offsetX:Z,offsetY:c,dontFlip:W})}convertToViewportPoint(l,U){return nl.applyTransform([l,U],this.transform)}convertToViewportRectangle(l){const U=nl.applyTransform([l[0],l[1]],this.transform),Z=nl.applyTransform([l[2],l[3]],this.transform);return[U[0],U[1],Z[0],Z[1]]}convertToPdfPoint(l,U){return nl.applyInverseTransform([l,U],this.transform)}}class sR extends HZ{constructor(l,U=0){super(l,"RenderingCancelledException"),this.extraDelay=U}}function QR(a){const l=a.length;let U=0;for(;U<l&&a[U].trim()==="";)U++;return a.substring(U,U+5).toLowerCase()==="data:"}function iR(a){return typeof a=="string"&&/\.pdf$/i.test(a)}function HM(a){return[a]=a.split(/[#?]/,1),a.substring(a.lastIndexOf("/")+1)}function vM(a,l="document.pdf"){if(typeof a!="string")return l;if(QR(a))return Tl('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'),l;const U=/^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/,Z=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i,c=U.exec(a);let W=Z.exec(c[1])||Z.exec(c[2])||Z.exec(c[3]);if(W&&(W=W[0],W.includes("%")))try{W=Z.exec(decodeURIComponent(W))[0]}catch(s){}return W||l}class zm{constructor(){el(this,"started",Object.create(null)),el(this,"times",[])}time(l){l in this.started&&Tl(`Timer is already running for ${l}`),this.started[l]=Date.now()}timeEnd(l){l in this.started||Tl(`Timer has not been started for ${l}`),this.times.push({name:l,start:this.started[l],end:Date.now()}),delete this.started[l]}toString(){const l=[];let U=0;for(const{name:Z}of this.times)U=Math.max(Z.length,U);for(const{name:Z,start:c,end:W}of this.times)l.push(`${Z.padEnd(U)} ${W-c}ms
|
||
`);return l.join("")}}function mW(a,l){try{const{protocol:U}=l?new URL(a,l):new URL(a);return U==="http:"||U==="https:"}catch(U){return!1}}function xU(a){a.preventDefault()}function Lm(a){console.log("Deprecated API usage: "+a)}let NR;class km{static toDateObject(l){if(!l||typeof l!="string")return null;NR||(NR=new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));const U=NR.exec(l);if(!U)return null;const Z=parseInt(U[1],10);let c=parseInt(U[2],10);c=c>=1&&c<=12?c-1:0;let W=parseInt(U[3],10);W=W>=1&&W<=31?W:1;let s=parseInt(U[4],10);s=s>=0&&s<=23?s:0;let Q=parseInt(U[5],10);Q=Q>=0&&Q<=59?Q:0;let R=parseInt(U[6],10);R=R>=0&&R<=59?R:0;const m=U[7]||"Z";let e=parseInt(U[8],10);e=e>=0&&e<=23?e:0;let T=parseInt(U[9],10)||0;return T=T>=0&&T<=59?T:0,m==="-"?(s+=e,Q+=T):m==="+"&&(s-=e,Q-=T),new Date(Date.UTC(Z,c,W,s,Q,R))}}function PM(a,{scale:l=1,rotation:U=0}){const{width:Z,height:c}=a.attributes.style,W=[0,0,parseInt(Z),parseInt(c)];return new bW({viewBox:W,scale:l,rotation:U})}function RR(a){if(a.startsWith("#")){const l=parseInt(a.slice(1),16);return[(l&16711680)>>16,(l&65280)>>8,l&255]}return a.startsWith("rgb(")?a.slice(4,-1).split(",").map(l=>parseInt(l)):a.startsWith("rgba(")?a.slice(5,-1).split(",").map(l=>parseInt(l)).slice(0,3):(Tl(`Not a valid color format: "${a}"`),[0,0,0])}function fM(a){const l=document.createElement("span");l.style.visibility="hidden",document.body.append(l);for(const U of a.keys()){l.style.color=U;const Z=window.getComputedStyle(l).color;a.set(U,RR(Z))}l.remove()}function jl(a){const{a:l,b:U,c:Z,d:c,e:W,f:s}=a.getTransform();return[l,U,Z,c,W,s]}function dZ(a){const{a:l,b:U,c:Z,d:c,e:W,f:s}=a.getTransform().invertSelf();return[l,U,Z,c,W,s]}function Ot(a,l,U=!1,Z=!0){if(l instanceof bW){const{pageWidth:c,pageHeight:W}=l.rawDims,{style:s}=a,Q=CU.isCSSRoundSupported,R=`var(--scale-factor) * ${c}px`,m=`var(--scale-factor) * ${W}px`,e=Q?`round(${R}, 1px)`:`calc(${R})`,T=Q?`round(${m}, 1px)`:`calc(${m})`;!U||l.rotation%180===0?(s.width=e,s.height=T):(s.width=T,s.height=e)}Z&&a.setAttribute("data-main-rotation",l.rotation)}const Im=class L2{constructor(l){h(this,uU),h(this,nt),h(this,Wl),h(this,cl),h(this,Ll),h(this,g,null),h(this,pl,null),h(this,Jl,void 0),h(this,kl,null),S(this,Jl,l)}render(){const l=S(this,g,document.createElement("div"));l.className="editToolbar",l.setAttribute("role","toolbar"),l.addEventListener("contextmenu",xU),l.addEventListener("pointerdown",G(L2,FU,fU));const U=S(this,kl,document.createElement("div"));U.className="buttons",l.append(U);const Z=F(this,Jl).toolbarPosition;if(Z){const{style:c}=l,W=F(this,Jl)._uiManager.direction==="ltr"?1-Z[0]:Z[0];c.insetInlineEnd=`${100*W}%`,c.top=`calc(${100*Z[1]}% + var(--editor-toolbar-vert-offset))`}return G(this,cl,Ml).call(this),l}hide(){var l;F(this,g).classList.add("hidden"),(l=F(this,pl))==null||l.hideDropdown()}show(){F(this,g).classList.remove("hidden")}addAltTextButton(l){G(this,Wl,dl).call(this,l),F(this,kl).prepend(l,F(this,Ll,Ql))}addColorPicker(l){S(this,pl,l);const U=l.renderButton();G(this,Wl,dl).call(this,U),F(this,kl).prepend(U,F(this,Ll,Ql))}remove(){var l;F(this,g).remove(),(l=F(this,pl))==null||l.destroy(),S(this,pl,null)}};g=new WeakMap,pl=new WeakMap,Jl=new WeakMap,kl=new WeakMap,FU=new WeakSet,fU=function(a){a.stopPropagation()},uU=new WeakSet,Rd=function(a){F(this,Jl)._focusEventsAllowed=!1,a.preventDefault(),a.stopPropagation()},nt=new WeakSet,st=function(a){F(this,Jl)._focusEventsAllowed=!0,a.preventDefault(),a.stopPropagation()},Wl=new WeakSet,dl=function(a){a.addEventListener("focusin",G(this,uU,Rd).bind(this),{capture:!0}),a.addEventListener("focusout",G(this,nt,st).bind(this),{capture:!0}),a.addEventListener("contextmenu",xU)},cl=new WeakSet,Ml=function(){const a=document.createElement("button");a.className="delete",a.tabIndex=0,a.setAttribute("data-l10n-id",`pdfjs-editor-remove-${F(this,Jl).editorType}-button`),G(this,Wl,dl).call(this,a),a.addEventListener("click",l=>{F(this,Jl)._uiManager.delete()}),F(this,kl).append(a)},Ll=new WeakSet,Ql=function(){const a=document.createElement("div");return a.className="divider",a},h(Im,FU);let AM=Im;class _M{constructor(l){h(this,lU),h(this,hd),h(this,hZ),h(this,Il,null),h(this,xl,null),h(this,BU,void 0),S(this,BU,l)}show(l,U,Z){const[c,W]=G(this,hd,iF).call(this,U,Z),{style:s}=F(this,xl)||S(this,xl,G(this,lU,Kl).call(this));l.append(F(this,xl)),s.insetInlineEnd=`${100*c}%`,s.top=`calc(${100*W}% + var(--editor-toolbar-vert-offset))`}hide(){F(this,xl).remove()}}Il=new WeakMap,xl=new WeakMap,BU=new WeakMap,lU=new WeakSet,Kl=function(){const a=S(this,xl,document.createElement("div"));a.className="editToolbar",a.setAttribute("role","toolbar"),a.addEventListener("contextmenu",xU);const l=S(this,Il,document.createElement("div"));return l.className="buttons",a.append(l),G(this,hZ,Qb).call(this),a},hd=new WeakSet,iF=function(a,l){let U=0,Z=0;for(const c of a){const W=c.y+c.height;if(W<U)continue;const s=c.x+(l?c.width:0);if(W>U){Z=s,U=W;continue}l?s>Z&&(Z=s):s<Z&&(Z=s)}return[l?1-Z:Z,U]},hZ=new WeakSet,Qb=function(){const a=document.createElement("button");a.className="highlightButton",a.tabIndex=0,a.setAttribute("data-l10n-id","pdfjs-highlight-floating-button1");const l=document.createElement("span");a.append(l),l.className="visuallyHidden",l.setAttribute("data-l10n-id","pdfjs-highlight-floating-button-label"),a.addEventListener("contextmenu",xU),a.addEventListener("click",()=>{F(this,BU).highlightSelection("floating_button")}),F(this,Il).append(a)};function Ws(a,l,U){for(const Z of U)l.addEventListener(Z,a[Z].bind(a))}function qM(a){return Math.round(Math.min(255,Math.max(1,255*a))).toString(16).padStart(2,"0")}class $M{constructor(){h(this,xQ,0)}get id(){return`${oM}${PU(this,xQ)._++}`}}xQ=new WeakMap;const Dm=class{constructor(){h(this,Ra),h(this,Na,OM()),h(this,rQ,0),h(this,IU,null)}static get _isSVGFittingCanvas(){const l='data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 1 1" width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1" style="fill:red;"/></svg>',U=new OffscreenCanvas(1,3).getContext("2d"),Z=new Image;Z.src=l;const c=Z.decode().then(()=>(U.drawImage(Z,0,0,1,1,0,0,1,3),new Uint32Array(U.getImageData(0,0,1,1).data.buffer)[0]===0));return yl(this,"_isSVGFittingCanvas",c)}getFromFile(l){return Ul(this,null,function*(){const{lastModified:U,name:Z,size:c,type:W}=l;return G(this,Ra,jQ).call(this,`${U}_${Z}_${c}_${W}`,l)})}getFromUrl(l){return Ul(this,null,function*(){return G(this,Ra,jQ).call(this,l,l)})}getFromId(l){return Ul(this,null,function*(){F(this,IU)||S(this,IU,new Map);const U=F(this,IU).get(l);return U?U.bitmap?(U.refCounter+=1,U):U.file?this.getFromFile(U.file):this.getFromUrl(U.url):null})}getSvgUrl(l){const U=F(this,IU).get(l);return U!=null&&U.isSvg?U.svgUrl:null}deleteId(l){F(this,IU)||S(this,IU,new Map);const U=F(this,IU).get(l);U&&(U.refCounter-=1,U.refCounter===0&&(U.bitmap=null))}isValidId(l){return l.startsWith(`image_${F(this,Na)}_`)}};Na=new WeakMap,rQ=new WeakMap,IU=new WeakMap,Ra=new WeakSet,jQ=function(a,l){return Ul(this,null,function*(){F(this,IU)||S(this,IU,new Map);let U=F(this,IU).get(a);if(U===null)return null;if(U!=null&&U.bitmap)return U.refCounter+=1,U;try{U||(U={bitmap:null,id:`image_${F(this,Na)}_${PU(this,rQ)._++}`,refCounter:0,isSvg:!1});let Z;if(typeof l=="string"?(U.url=l,Z=yield cs(l,"blob")):Z=U.file=l,Z.type==="image/svg+xml"){const c=Dm._isSVGFittingCanvas,W=new FileReader,s=new Image,Q=new Promise((R,m)=>{s.onload=()=>{U.bitmap=s,U.isSvg=!0,R()},W.onload=()=>Ul(this,null,function*(){const e=U.svgUrl=W.result;s.src=(yield c)?`${e}#svgView(preserveAspectRatio(none))`:e}),s.onerror=W.onerror=m});W.readAsDataURL(Z),yield Q}else U.bitmap=yield createImageBitmap(Z);U.refCounter=1}catch(Z){console.error(Z),U=null}return F(this,IU).set(a,U),U&&F(this,IU).set(U.id,U),U})};let lG=Dm;class UG{constructor(l=128){h(this,sU,[]),h(this,Qt,!1),h(this,ha,void 0),h(this,UU,-1),S(this,ha,l)}add({cmd:l,undo:U,post:Z,mustExec:c,type:W=NaN,overwriteIfSameType:s=!1,keepUndo:Q=!1}){if(c&&l(),F(this,Qt))return;const R={cmd:l,undo:U,post:Z,type:W};if(F(this,UU)===-1){F(this,sU).length>0&&(F(this,sU).length=0),S(this,UU,0),F(this,sU).push(R);return}if(s&&F(this,sU)[F(this,UU)].type===W){Q&&(R.undo=F(this,sU)[F(this,UU)].undo),F(this,sU)[F(this,UU)]=R;return}const m=F(this,UU)+1;m===F(this,ha)?F(this,sU).splice(0,1):(S(this,UU,m),m<F(this,sU).length&&F(this,sU).splice(m)),F(this,sU).push(R)}undo(){if(F(this,UU)===-1)return;S(this,Qt,!0);const{undo:l,post:U}=F(this,sU)[F(this,UU)];l(),U==null||U(),S(this,Qt,!1),S(this,UU,F(this,UU)-1)}redo(){if(F(this,UU)<F(this,sU).length-1){S(this,UU,F(this,UU)+1),S(this,Qt,!0);const{cmd:l,post:U}=F(this,sU)[F(this,UU)];l(),U==null||U(),S(this,Qt,!1)}}hasSomethingToUndo(){return F(this,UU)!==-1}hasSomethingToRedo(){return F(this,UU)<F(this,sU).length-1}destroy(){S(this,sU,null)}}sU=new WeakMap,Qt=new WeakMap,ha=new WeakMap,UU=new WeakMap;class eW{constructor(l){h(this,OQ),this.buffer=[],this.callbacks=new Map,this.allKeys=new Set;const{isMac:U}=CU.platform;for(const[Z,c,W={}]of l)for(const s of Z){const Q=s.startsWith("mac+");U&&Q?(this.callbacks.set(s.slice(4),{callback:c,options:W}),this.allKeys.add(s.split("+").at(-1))):!U&&!Q&&(this.callbacks.set(s,{callback:c,options:W}),this.allKeys.add(s.split("+").at(-1)))}}exec(l,U){if(!this.allKeys.has(U.key))return;const Z=this.callbacks.get(G(this,OQ,ib).call(this,U));if(!Z)return;const{callback:c,options:{bubbles:W=!1,args:s=[],checker:Q=null}}=Z;Q&&!Q(l,U)||(c.bind(l,...s,U)(),W||(U.stopPropagation(),U.preventDefault()))}}OQ=new WeakSet,ib=function(a){a.altKey&&this.buffer.push("alt"),a.ctrlKey&&this.buffer.push("ctrl"),a.metaKey&&this.buffer.push("meta"),a.shiftKey&&this.buffer.push("shift"),this.buffer.push(a.key);const l=this.buffer.join("+");return this.buffer.length=0,l};const Em=class k2{get _colors(){const l=new Map([["CanvasText",null],["Canvas",null]]);return fM(l),yl(this,"_colors",l)}convert(l){const U=RR(l);if(!window.matchMedia("(forced-colors: active)").matches)return U;for(const[Z,c]of this._colors)if(c.every((W,s)=>W===U[s]))return k2._colorsMapping.get(Z);return U}getHexCode(l){const U=this._colors.get(l);return U?nl.makeHexColor(...U):l}};el(Em,"_colorsMapping",new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]));let dG=Em;const hR=class Fh{constructor(l,U,Z,c,W,s,Q,R,m){h(this,q0),h(this,KQ),h(this,HQ),h(this,$0),h(this,vQ),h(this,PQ),h(this,fQ),h(this,Ea),h(this,wa),h(this,Ca),h(this,xa),h(this,ra),h(this,mU),h(this,xd),h(this,Ui),h(this,di),h(this,ja),h(this,ti),h(this,eF),h(this,Oa),h(this,AU,null),h(this,cU,new Map),h(this,hU,new Map),h(this,v0,null),h(this,bZ,null),h(this,NF,null),h(this,bd,new UG),h(this,P0,0),h(this,RF,new Set),h(this,Ed,null),h(this,mZ,null),h(this,hF,new Set),h(this,ba,!1),h(this,ma,null),h(this,wd,null),h(this,f0,null),h(this,it,!1),h(this,md,null),h(this,gQ,new $M),h(this,Nt,!1),h(this,ea,!1),h(this,bF,null),h(this,Ma,null),h(this,A0,null),h(this,bU,Bl.NONE),h(this,Dl,new Set),h(this,eZ,null),h(this,mF,null),h(this,_0,null),h(this,Ga,this.blur.bind(this)),h(this,Ja,this.focus.bind(this)),h(this,Ta,this.copy.bind(this)),h(this,Sa,this.cut.bind(this)),h(this,Xa,this.paste.bind(this)),h(this,Ya,this.keydown.bind(this)),h(this,pa,this.keyup.bind(this)),h(this,ua,this.onEditingAction.bind(this)),h(this,Ba,this.onPageChanging.bind(this)),h(this,oa,this.onScaleChanging.bind(this)),h(this,ya,G(this,HQ,Rb).bind(this)),h(this,za,this.onRotationChanging.bind(this)),h(this,La,{isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1}),h(this,Rt,[0,0]),h(this,Cd,null),h(this,MZ,null),h(this,ka,null),S(this,MZ,l),S(this,ka,U),S(this,v0,Z),this._eventBus=c,this._eventBus._on("editingaction",F(this,ua)),this._eventBus._on("pagechanging",F(this,Ba)),this._eventBus._on("scalechanging",F(this,oa)),this._eventBus._on("rotationchanging",F(this,za)),G(this,vQ,hb).call(this),G(this,wa,_Q).call(this),S(this,bZ,W.annotationStorage),S(this,ma,W.filterFactory),S(this,mF,s),S(this,f0,Q||null),S(this,ba,R),S(this,A0,m||null),this.viewParameters={realScale:i0.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1}static get _keyboardManager(){const l=Fh.prototype,U=s=>F(s,MZ).contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&s.hasSomethingToControl(),Z=(s,{target:Q})=>{if(Q instanceof HTMLInputElement){const{type:R}=Q;return R!=="text"&&R!=="number"}return!0},c=this.TRANSLATE_SMALL,W=this.TRANSLATE_BIG;return yl(this,"_keyboardManager",new eW([[["ctrl+a","mac+meta+a"],l.selectAll,{checker:Z}],[["ctrl+z","mac+meta+z"],l.undo,{checker:Z}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],l.redo,{checker:Z}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],l.delete,{checker:Z}],[["Enter","mac+Enter"],l.addNewEditorFromKeyboard,{checker:(s,{target:Q})=>!(Q instanceof HTMLButtonElement)&&F(s,MZ).contains(Q)&&!s.isEnterHandled}],[[" ","mac+ "],l.addNewEditorFromKeyboard,{checker:(s,{target:Q})=>!(Q instanceof HTMLButtonElement)&&F(s,MZ).contains(document.activeElement)}],[["Escape","mac+Escape"],l.unselectAll],[["ArrowLeft","mac+ArrowLeft"],l.translateSelectedEditors,{args:[-c,0],checker:U}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],l.translateSelectedEditors,{args:[-W,0],checker:U}],[["ArrowRight","mac+ArrowRight"],l.translateSelectedEditors,{args:[c,0],checker:U}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],l.translateSelectedEditors,{args:[W,0],checker:U}],[["ArrowUp","mac+ArrowUp"],l.translateSelectedEditors,{args:[0,-c],checker:U}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],l.translateSelectedEditors,{args:[0,-W],checker:U}],[["ArrowDown","mac+ArrowDown"],l.translateSelectedEditors,{args:[0,c],checker:U}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],l.translateSelectedEditors,{args:[0,W],checker:U}]]))}destroy(){var l,U;G(this,Ca,qQ).call(this),G(this,Ea,AQ).call(this),this._eventBus._off("editingaction",F(this,ua)),this._eventBus._off("pagechanging",F(this,Ba)),this._eventBus._off("scalechanging",F(this,oa)),this._eventBus._off("rotationchanging",F(this,za));for(const Z of F(this,hU).values())Z.destroy();F(this,hU).clear(),F(this,cU).clear(),F(this,hF).clear(),S(this,AU,null),F(this,Dl).clear(),F(this,bd).destroy(),(l=F(this,v0))==null||l.destroy(),(U=F(this,md))==null||U.hide(),S(this,md,null),F(this,wd)&&(clearTimeout(F(this,wd)),S(this,wd,null)),F(this,Cd)&&(clearTimeout(F(this,Cd)),S(this,Cd,null)),G(this,PQ,bb).call(this)}mlGuess(l){return Ul(this,null,function*(){var U;return((U=F(this,A0))==null?void 0:U.guess(l))||null})}get hasMLManager(){return!!F(this,A0)}get hcmFilter(){return yl(this,"hcmFilter",F(this,mF)?F(this,ma).addHCMFilter(F(this,mF).foreground,F(this,mF).background):"none")}get direction(){return yl(this,"direction",getComputedStyle(F(this,MZ)).direction)}get highlightColors(){return yl(this,"highlightColors",F(this,f0)?new Map(F(this,f0).split(",").map(l=>l.split("=").map(U=>U.trim()))):null)}get highlightColorNames(){return yl(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,l=>l.reverse())):null)}setMainHighlightColorPicker(l){S(this,Ma,l)}editAltText(l){var U;(U=F(this,v0))==null||U.editAltText(this,l)}onPageChanging({pageNumber:l}){S(this,P0,l-1)}focusMainContainer(){F(this,MZ).focus()}findParent(l,U){for(const Z of F(this,hU).values()){const{x:c,y:W,width:s,height:Q}=Z.div.getBoundingClientRect();if(l>=c&&l<=c+s&&U>=W&&U<=W+Q)return Z}return null}disableUserSelect(l=!1){F(this,ka).classList.toggle("noUserSelect",l)}addShouldRescale(l){F(this,hF).add(l)}removeShouldRescale(l){F(this,hF).delete(l)}onScaleChanging({scale:l}){this.commitOrRemove(),this.viewParameters.realScale=l*i0.PDF_TO_CSS_UNITS;for(const U of F(this,hF))U.onScaleChanging()}onRotationChanging({pagesRotation:l}){this.commitOrRemove(),this.viewParameters.rotation=l}highlightSelection(l=""){const U=document.getSelection();if(!U||U.isCollapsed)return;const{anchorNode:Z,anchorOffset:c,focusNode:W,focusOffset:s}=U,Q=U.toString(),R=G(this,q0,Ia).call(this,U).closest(".textLayer"),m=this.getSelectionBoxes(R);if(m){U.empty(),F(this,bU)===Bl.NONE&&(this._eventBus.dispatch("showannotationeditorui",{source:this,mode:Bl.HIGHLIGHT}),this.showAllEditors("highlight",!0,!0));for(const e of F(this,hU).values())if(e.hasTextLayer(R)){e.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:l,boxes:m,anchorNode:Z,anchorOffset:c,focusNode:W,focusOffset:s,text:Q});break}}}addToAnnotationStorage(l){!l.isEmpty()&&F(this,bZ)&&!F(this,bZ).has(l.id)&&F(this,bZ).setValue(l.id,l)}blur(){if(this.isShiftKeyDown=!1,F(this,it)&&(S(this,it,!1),G(this,$0,Da).call(this,"main_toolbar")),!this.hasSelection)return;const{activeElement:l}=document;for(const U of F(this,Dl))if(U.div.contains(l)){S(this,bF,[U,l]),U._focusEventsAllowed=!1;break}}focus(){if(!F(this,bF))return;const[l,U]=F(this,bF);S(this,bF,null),U.addEventListener("focusin",()=>{l._focusEventsAllowed=!0},{once:!0}),U.focus()}addEditListeners(){G(this,wa,_Q).call(this),G(this,xa,$Q).call(this)}removeEditListeners(){G(this,Ca,qQ).call(this),G(this,ra,li).call(this)}copy(l){var U;if(l.preventDefault(),(U=F(this,AU))==null||U.commitOrRemove(),!this.hasSelection)return;const Z=[];for(const c of F(this,Dl)){const W=c.serialize(!0);W&&Z.push(W)}Z.length!==0&&l.clipboardData.setData("application/pdfjs",JSON.stringify(Z))}cut(l){this.copy(l),this.delete()}paste(l){l.preventDefault();const{clipboardData:U}=l;for(const W of U.items)for(const s of F(this,mZ))if(s.isHandlingMimeForPasting(W.type)){s.paste(W,this.currentLayer);return}let Z=U.getData("application/pdfjs");if(!Z)return;try{Z=JSON.parse(Z)}catch(W){Tl(`paste: "${W.message}".`);return}if(!Array.isArray(Z))return;this.unselectAll();const c=this.currentLayer;try{const W=[];for(const R of Z){const m=c.deserialize(R);if(!m)return;W.push(m)}const s=()=>{for(const R of W)G(this,ja,Zi).call(this,R);G(this,Oa,Fi).call(this,W)},Q=()=>{for(const R of W)R.remove()};this.addCommands({cmd:s,undo:Q,mustExec:!0})}catch(W){Tl(`paste: "${W.message}".`)}}keydown(l){!this.isShiftKeyDown&&l.key==="Shift"&&(this.isShiftKeyDown=!0),F(this,bU)!==Bl.NONE&&!this.isEditorHandlingKeyboard&&Fh._keyboardManager.exec(this,l)}keyup(l){this.isShiftKeyDown&&l.key==="Shift"&&(this.isShiftKeyDown=!1,F(this,it)&&(S(this,it,!1),G(this,$0,Da).call(this,"main_toolbar")))}onEditingAction({name:l}){switch(l){case"undo":case"redo":case"delete":case"selectAll":this[l]();break;case"highlightSelection":this.highlightSelection("context_menu");break}}setEditingState(l){l?(G(this,fQ,mb).call(this),G(this,xa,$Q).call(this),G(this,mU,oU).call(this,{isEditing:F(this,bU)!==Bl.NONE,isEmpty:G(this,eF,lc).call(this),hasSomethingToUndo:F(this,bd).hasSomethingToUndo(),hasSomethingToRedo:F(this,bd).hasSomethingToRedo(),hasSelectedEditor:!1})):(G(this,Ea,AQ).call(this),G(this,ra,li).call(this),G(this,mU,oU).call(this,{isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(l){if(!F(this,mZ)){S(this,mZ,l);for(const U of F(this,mZ))G(this,xd,GZ).call(this,U.defaultPropertiesToUpdate)}}getId(){return F(this,gQ).id}get currentLayer(){return F(this,hU).get(F(this,P0))}getLayer(l){return F(this,hU).get(l)}get currentPageIndex(){return F(this,P0)}addLayer(l){F(this,hU).set(l.pageIndex,l),F(this,Nt)?l.enable():l.disable()}removeLayer(l){F(this,hU).delete(l.pageIndex)}updateMode(l,U=null,Z=!1){if(F(this,bU)!==l){if(S(this,bU,l),l===Bl.NONE){this.setEditingState(!1),G(this,di,Mb).call(this);return}this.setEditingState(!0),G(this,Ui,eb).call(this),this.unselectAll();for(const c of F(this,hU).values())c.updateMode(l);if(!U&&Z){this.addNewEditorFromKeyboard();return}if(U){for(const c of F(this,cU).values())if(c.annotationElementId===U){this.setSelected(c),c.enterInEditMode();break}}}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(l){l!==F(this,bU)&&this._eventBus.dispatch("switchannotationeditormode",{source:this,mode:l})}updateParams(l,U){var Z;if(F(this,mZ)){switch(l){case ml.CREATE:this.currentLayer.addNewEditor();return;case ml.HIGHLIGHT_DEFAULT_COLOR:(Z=F(this,Ma))==null||Z.updateColor(U);break;case ml.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(F(this,_0)||S(this,_0,new Map)).set(l,U),this.showAllEditors("highlight",U);break}for(const c of F(this,Dl))c.updateParams(l,U);for(const c of F(this,mZ))c.updateDefaultParams(l,U)}}showAllEditors(l,U,Z=!1){var W;var c;for(const s of F(this,cU).values())s.editorType===l&&s.show(U);((W=(c=F(this,_0))==null?void 0:c.get(ml.HIGHLIGHT_SHOW_ALL))!=null?W:!0)!==U&&G(this,xd,GZ).call(this,[[ml.HIGHLIGHT_SHOW_ALL,U]])}enableWaiting(l=!1){if(F(this,ea)!==l){S(this,ea,l);for(const U of F(this,hU).values())l?U.disableClick():U.enableClick(),U.div.classList.toggle("waiting",l)}}getEditors(l){const U=[];for(const Z of F(this,cU).values())Z.pageIndex===l&&U.push(Z);return U}getEditor(l){return F(this,cU).get(l)}addEditor(l){F(this,cU).set(l.id,l)}removeEditor(l){var U;l.div.contains(document.activeElement)&&(F(this,wd)&&clearTimeout(F(this,wd)),S(this,wd,setTimeout(()=>{this.focusMainContainer(),S(this,wd,null)},0))),F(this,cU).delete(l.id),this.unselect(l),(!l.annotationElementId||!F(this,RF).has(l.annotationElementId))&&((U=F(this,bZ))==null||U.remove(l.id))}addDeletedAnnotationElement(l){F(this,RF).add(l.annotationElementId),this.addChangedExistingAnnotation(l),l.deleted=!0}isDeletedAnnotationElement(l){return F(this,RF).has(l)}removeDeletedAnnotationElement(l){F(this,RF).delete(l.annotationElementId),this.removeChangedExistingAnnotation(l),l.deleted=!1}setActiveEditor(l){F(this,AU)!==l&&(S(this,AU,l),l&&G(this,xd,GZ).call(this,l.propertiesToUpdate))}updateUI(l){F(this,ti,Gb)===l&&G(this,xd,GZ).call(this,l.propertiesToUpdate)}toggleSelected(l){if(F(this,Dl).has(l)){F(this,Dl).delete(l),l.unselect(),G(this,mU,oU).call(this,{hasSelectedEditor:this.hasSelection});return}F(this,Dl).add(l),l.select(),G(this,xd,GZ).call(this,l.propertiesToUpdate),G(this,mU,oU).call(this,{hasSelectedEditor:!0})}setSelected(l){for(const U of F(this,Dl))U!==l&&U.unselect();F(this,Dl).clear(),F(this,Dl).add(l),l.select(),G(this,xd,GZ).call(this,l.propertiesToUpdate),G(this,mU,oU).call(this,{hasSelectedEditor:!0})}isSelected(l){return F(this,Dl).has(l)}get firstSelectedEditor(){return F(this,Dl).values().next().value}unselect(l){l.unselect(),F(this,Dl).delete(l),G(this,mU,oU).call(this,{hasSelectedEditor:this.hasSelection})}get hasSelection(){return F(this,Dl).size!==0}get isEnterHandled(){return F(this,Dl).size===1&&this.firstSelectedEditor.isEnterHandled}undo(){F(this,bd).undo(),G(this,mU,oU).call(this,{hasSomethingToUndo:F(this,bd).hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:G(this,eF,lc).call(this)})}redo(){F(this,bd).redo(),G(this,mU,oU).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:F(this,bd).hasSomethingToRedo(),isEmpty:G(this,eF,lc).call(this)})}addCommands(l){F(this,bd).add(l),G(this,mU,oU).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:G(this,eF,lc).call(this)})}delete(){if(this.commitOrRemove(),!this.hasSelection)return;const l=[...F(this,Dl)],U=()=>{for(const c of l)c.remove()},Z=()=>{for(const c of l)G(this,ja,Zi).call(this,c)};this.addCommands({cmd:U,undo:Z,mustExec:!0})}commitOrRemove(){var l;(l=F(this,AU))==null||l.commitOrRemove()}hasSomethingToControl(){return F(this,AU)||this.hasSelection}selectAll(){for(const l of F(this,Dl))l.commit();G(this,Oa,Fi).call(this,F(this,cU).values())}unselectAll(){if(!(F(this,AU)&&(F(this,AU).commitOrRemove(),F(this,bU)!==Bl.NONE))&&this.hasSelection){for(const l of F(this,Dl))l.unselect();F(this,Dl).clear(),G(this,mU,oU).call(this,{hasSelectedEditor:!1})}}translateSelectedEditors(l,U,Z=!1){if(Z||this.commitOrRemove(),!this.hasSelection)return;F(this,Rt)[0]+=l,F(this,Rt)[1]+=U;const[c,W]=F(this,Rt),s=[...F(this,Dl)];F(this,Cd)&&clearTimeout(F(this,Cd)),S(this,Cd,setTimeout(()=>{S(this,Cd,null),F(this,Rt)[0]=F(this,Rt)[1]=0,this.addCommands({cmd:()=>{for(const R of s)F(this,cU).has(R.id)&&R.translateInPage(c,W)},undo:()=>{for(const R of s)F(this,cU).has(R.id)&&R.translateInPage(-c,-W)},mustExec:!1})},1e3));for(const R of s)R.translateInPage(l,U)}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),S(this,Ed,new Map);for(const l of F(this,Dl))F(this,Ed).set(l,{savedX:l.x,savedY:l.y,savedPageIndex:l.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!F(this,Ed))return!1;this.disableUserSelect(!1);const l=F(this,Ed);S(this,Ed,null);let U=!1;for(const[{x:c,y:W,pageIndex:s},Q]of l)Q.newX=c,Q.newY=W,Q.newPageIndex=s,U||(U=c!==Q.savedX||W!==Q.savedY||s!==Q.savedPageIndex);if(!U)return!1;const Z=(c,W,s,Q)=>{if(F(this,cU).has(c.id)){const R=F(this,hU).get(Q);R?c._setParentAndPosition(R,W,s):(c.pageIndex=Q,c.x=W,c.y=s)}};return this.addCommands({cmd:()=>{for(const[c,{newX:W,newY:s,newPageIndex:Q}]of l)Z(c,W,s,Q)},undo:()=>{for(const[c,{savedX:W,savedY:s,savedPageIndex:Q}]of l)Z(c,W,s,Q)},mustExec:!0}),!0}dragSelectedEditors(l,U){if(F(this,Ed))for(const Z of F(this,Ed).keys())Z.drag(l,U)}rebuild(l){if(l.parent===null){const U=this.getLayer(l.pageIndex);U?(U.changeParent(l),U.addOrRebuild(l)):(this.addEditor(l),this.addToAnnotationStorage(l),l.rebuild())}else l.parent.addOrRebuild(l)}get isEditorHandlingKeyboard(){var l;return((l=this.getActive())==null?void 0:l.shouldGetKeyboardEvents())||F(this,Dl).size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(l){return F(this,AU)===l}getActive(){return F(this,AU)}getMode(){return F(this,bU)}get imageManager(){return yl(this,"imageManager",new lG)}getSelectionBoxes(l){if(!l)return null;const U=document.getSelection();for(let m=0,e=U.rangeCount;m<e;m++)if(!l.contains(U.getRangeAt(m).commonAncestorContainer))return null;const{x:Z,y:c,width:W,height:s}=l.getBoundingClientRect();let Q;switch(l.getAttribute("data-main-rotation")){case"90":Q=(m,e,T,Y)=>({x:(e-c)/s,y:1-(m+T-Z)/W,width:Y/s,height:T/W});break;case"180":Q=(m,e,T,Y)=>({x:1-(m+T-Z)/W,y:1-(e+Y-c)/s,width:T/W,height:Y/s});break;case"270":Q=(m,e,T,Y)=>({x:1-(e+Y-c)/s,y:(m-Z)/W,width:Y/s,height:T/W});break;default:Q=(m,e,T,Y)=>({x:(m-Z)/W,y:(e-c)/s,width:T/W,height:Y/s});break}const R=[];for(let m=0,e=U.rangeCount;m<e;m++){const T=U.getRangeAt(m);if(!T.collapsed)for(const{x:Y,y:u,width:B,height:z}of T.getClientRects())B===0||z===0||R.push(Q(Y,u,B,z))}return R.length===0?null:R}addChangedExistingAnnotation({annotationElementId:l,id:U}){(F(this,NF)||S(this,NF,new Map)).set(l,U)}removeChangedExistingAnnotation({annotationElementId:l}){var U;(U=F(this,NF))==null||U.delete(l)}renderAnnotationElement(l){var U;const Z=(U=F(this,NF))==null?void 0:U.get(l.data.id);if(!Z)return;const c=F(this,bZ).getRawValue(Z);c&&(F(this,bU)===Bl.NONE&&!c.hasBeenModified||c.renderAnnotationElement(l))}};AU=new WeakMap,cU=new WeakMap,hU=new WeakMap,v0=new WeakMap,bZ=new WeakMap,NF=new WeakMap,bd=new WeakMap,P0=new WeakMap,RF=new WeakMap,Ed=new WeakMap,mZ=new WeakMap,hF=new WeakMap,ba=new WeakMap,ma=new WeakMap,wd=new WeakMap,f0=new WeakMap,it=new WeakMap,md=new WeakMap,gQ=new WeakMap,Nt=new WeakMap,ea=new WeakMap,bF=new WeakMap,Ma=new WeakMap,A0=new WeakMap,bU=new WeakMap,Dl=new WeakMap,eZ=new WeakMap,mF=new WeakMap,_0=new WeakMap,Ga=new WeakMap,Ja=new WeakMap,Ta=new WeakMap,Sa=new WeakMap,Xa=new WeakMap,Ya=new WeakMap,pa=new WeakMap,ua=new WeakMap,Ba=new WeakMap,oa=new WeakMap,ya=new WeakMap,za=new WeakMap,La=new WeakMap,Rt=new WeakMap,Cd=new WeakMap,MZ=new WeakMap,ka=new WeakMap,q0=new WeakSet,Ia=function({anchorNode:a}){return a.nodeType===Node.TEXT_NODE?a.parentElement:a},KQ=new WeakSet,Nb=function(){const a=document.getSelection();if(!a||a.isCollapsed)return;const l=G(this,q0,Ia).call(this,a).closest(".textLayer"),U=this.getSelectionBoxes(l);U&&(F(this,md)||S(this,md,new _M(this)),F(this,md).show(l,U,this.direction==="ltr"))},HQ=new WeakSet,Rb=function(){var a,l,U;const Z=document.getSelection();if(!Z||Z.isCollapsed){F(this,eZ)&&((a=F(this,md))==null||a.hide(),S(this,eZ,null),G(this,mU,oU).call(this,{hasSelectedText:!1}));return}const{anchorNode:c}=Z;if(c!==F(this,eZ)){if(!G(this,q0,Ia).call(this,Z).closest(".textLayer")){F(this,eZ)&&((l=F(this,md))==null||l.hide(),S(this,eZ,null),G(this,mU,oU).call(this,{hasSelectedText:!1}));return}if((U=F(this,md))==null||U.hide(),S(this,eZ,c),G(this,mU,oU).call(this,{hasSelectedText:!0}),!(F(this,bU)!==Bl.HIGHLIGHT&&F(this,bU)!==Bl.NONE)&&(F(this,bU)===Bl.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0),S(this,it,this.isShiftKeyDown),!this.isShiftKeyDown)){const W=s=>{s.type==="pointerup"&&s.button!==0||(window.removeEventListener("pointerup",W),window.removeEventListener("blur",W),s.type==="pointerup"&&G(this,$0,Da).call(this,"main_toolbar"))};window.addEventListener("pointerup",W),window.addEventListener("blur",W)}}},$0=new WeakSet,Da=function(a=""){F(this,bU)===Bl.HIGHLIGHT?this.highlightSelection(a):F(this,ba)&&G(this,KQ,Nb).call(this)},vQ=new WeakSet,hb=function(){document.addEventListener("selectionchange",F(this,ya))},PQ=new WeakSet,bb=function(){document.removeEventListener("selectionchange",F(this,ya))},fQ=new WeakSet,mb=function(){window.addEventListener("focus",F(this,Ja)),window.addEventListener("blur",F(this,Ga))},Ea=new WeakSet,AQ=function(){window.removeEventListener("focus",F(this,Ja)),window.removeEventListener("blur",F(this,Ga))},wa=new WeakSet,_Q=function(){window.addEventListener("keydown",F(this,Ya)),window.addEventListener("keyup",F(this,pa))},Ca=new WeakSet,qQ=function(){window.removeEventListener("keydown",F(this,Ya)),window.removeEventListener("keyup",F(this,pa))},xa=new WeakSet,$Q=function(){document.addEventListener("copy",F(this,Ta)),document.addEventListener("cut",F(this,Sa)),document.addEventListener("paste",F(this,Xa))},ra=new WeakSet,li=function(){document.removeEventListener("copy",F(this,Ta)),document.removeEventListener("cut",F(this,Sa)),document.removeEventListener("paste",F(this,Xa))},mU=new WeakSet,oU=function(a){Object.entries(a).some(([l,U])=>F(this,La)[l]!==U)&&(this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(F(this,La),a)}),F(this,bU)===Bl.HIGHLIGHT&&a.hasSelectedEditor===!1&&G(this,xd,GZ).call(this,[[ml.HIGHLIGHT_FREE,!0]]))},xd=new WeakSet,GZ=function(a){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:a})},Ui=new WeakSet,eb=function(){if(!F(this,Nt)){S(this,Nt,!0);for(const a of F(this,hU).values())a.enable();for(const a of F(this,cU).values())a.enable()}},di=new WeakSet,Mb=function(){if(this.unselectAll(),F(this,Nt)){S(this,Nt,!1);for(const a of F(this,hU).values())a.disable();for(const a of F(this,cU).values())a.disable()}},ja=new WeakSet,Zi=function(a){const l=F(this,hU).get(a.pageIndex);l?l.addOrRebuild(a):(this.addEditor(a),this.addToAnnotationStorage(a))},ti=new WeakSet,Gb=function(){let a=null;for(a of F(this,Dl));return a},eF=new WeakSet,lc=function(){if(F(this,cU).size===0)return!0;if(F(this,cU).size===1)for(const a of F(this,cU).values())return a.isEmpty();return!1},Oa=new WeakSet,Fi=function(a){for(const l of F(this,Dl))l.unselect();F(this,Dl).clear();for(const l of a)l.isEmpty()||(F(this,Dl).add(l),l.select());G(this,mU,oU).call(this,{hasSelectedEditor:this.hasSelection})},el(hR,"TRANSLATE_SMALL",1),el(hR,"TRANSLATE_BIG",10);let MW=hR;const as=class Ds{constructor(l){h(this,ga),h(this,JZ,""),h(this,TZ,!1),h(this,ed,null),h(this,SZ,null),h(this,Md,null),h(this,Uc,!1),h(this,XZ,null),S(this,XZ,l)}static initialize(l){Ds._l10nPromise||(Ds._l10nPromise=l)}render(){return Ul(this,null,function*(){const l=S(this,ed,document.createElement("button"));l.className="altText";const U=yield Ds._l10nPromise.get("pdfjs-editor-alt-text-button-label");l.textContent=U,l.setAttribute("aria-label",U),l.tabIndex="0",l.addEventListener("contextmenu",xU),l.addEventListener("pointerdown",c=>c.stopPropagation());const Z=c=>{c.preventDefault(),F(this,XZ)._uiManager.editAltText(F(this,XZ))};return l.addEventListener("click",Z,{capture:!0}),l.addEventListener("keydown",c=>{c.target===l&&c.key==="Enter"&&(S(this,Uc,!0),Z(c))}),yield G(this,ga,ci).call(this),l})}finish(){F(this,ed)&&(F(this,ed).focus({focusVisible:F(this,Uc)}),S(this,Uc,!1))}isEmpty(){return!F(this,JZ)&&!F(this,TZ)}get data(){return{altText:F(this,JZ),decorative:F(this,TZ)}}set data({altText:l,decorative:U}){F(this,JZ)===l&&F(this,TZ)===U||(S(this,JZ,l),S(this,TZ,U),G(this,ga,ci).call(this))}toggle(l=!1){F(this,ed)&&(!l&&F(this,Md)&&(clearTimeout(F(this,Md)),S(this,Md,null)),F(this,ed).disabled=!l)}destroy(){var l;(l=F(this,ed))==null||l.remove(),S(this,ed,null),S(this,SZ,null)}};JZ=new WeakMap,TZ=new WeakMap,ed=new WeakMap,SZ=new WeakMap,Md=new WeakMap,Uc=new WeakMap,XZ=new WeakMap,ga=new WeakSet,ci=function(){return Ul(this,null,function*(){var a;const l=F(this,ed);if(!l)return;if(!F(this,JZ)&&!F(this,TZ)){l.classList.remove("done"),(a=F(this,SZ))==null||a.remove();return}l.classList.add("done"),as._l10nPromise.get("pdfjs-editor-alt-text-edit-button-label").then(c=>{l.setAttribute("aria-label",c)});let U=F(this,SZ);if(!U){S(this,SZ,U=document.createElement("span")),U.className="tooltip",U.setAttribute("role","tooltip");const c=U.id=`alt-text-tooltip-${F(this,XZ).id}`;l.setAttribute("aria-describedby",c);const W=100;l.addEventListener("mouseenter",()=>{S(this,Md,setTimeout(()=>{S(this,Md,null),F(this,SZ).classList.add("show"),F(this,XZ)._reportTelemetry({action:"alt_text_tooltip"})},W))}),l.addEventListener("mouseleave",()=>{var s;F(this,Md)&&(clearTimeout(F(this,Md)),S(this,Md,null)),(s=F(this,SZ))==null||s.classList.remove("show")})}U.innerText=F(this,TZ)?yield as._l10nPromise.get("pdfjs-editor-alt-text-decorative-tooltip"):F(this,JZ),U.parentNode||l.append(U);const Z=F(this,XZ).getImageForAltText();Z==null||Z.setAttribute("aria-describedby",U.id)})},el(as,"_l10nPromise",null);let wm=as;const ZZ=class iU{constructor(l){h(this,Pa),h(this,Aa),h(this,si),h(this,Qi),h(this,_a),h(this,qa),h(this,$a),h(this,hi),h(this,bi),h(this,mi),h(this,ei),h(this,lV),h(this,SF),h(this,Gd,null),h(this,DU,null),h(this,dc,!1),h(this,MF,!1),h(this,eU,null),h(this,GF,null),h(this,Zc,this.focusin.bind(this)),h(this,tc,this.focusout.bind(this)),h(this,yU,null),h(this,Ka,""),h(this,JF,!1),h(this,rd,null),h(this,Ha,!1),h(this,TF,!1),h(this,YZ,!1),h(this,jd,null),h(this,Fc,0),h(this,cc,0),h(this,_U,null),el(this,"_initialOptions",Object.create(null)),el(this,"_isVisible",!0),el(this,"_uiManager",null),el(this,"_focusEventsAllowed",!0),el(this,"_l10nPromise",null),h(this,va,!1),h(this,Wi,iU._zIndex++),this.constructor===iU&&El("Cannot initialize AnnotationEditor."),this.parent=l.parent,this.id=l.id,this.width=this.height=null,this.pageIndex=l.parent.pageIndex,this.name=l.name,this.div=null,this._uiManager=l.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=l.isCentered,this._structTreeParentId=null;const{rotation:U,rawDims:{pageWidth:Z,pageHeight:c,pageX:W,pageY:s}}=this.parent.viewport;this.rotation=U,this.pageRotation=(360+U-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[Z,c],this.pageTranslation=[W,s];const[Q,R]=this.parentDimensions;this.x=l.x/Q,this.y=l.y/R,this.isAttachedToDOM=!1,this.deleted=!1}static get _resizerKeyboardManager(){const l=iU.prototype._resizeWithKeyboard,U=MW.TRANSLATE_SMALL,Z=MW.TRANSLATE_BIG;return yl(this,"_resizerKeyboardManager",new eW([[["ArrowLeft","mac+ArrowLeft"],l,{args:[-U,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],l,{args:[-Z,0]}],[["ArrowRight","mac+ArrowRight"],l,{args:[U,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],l,{args:[Z,0]}],[["ArrowUp","mac+ArrowUp"],l,{args:[0,-U]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],l,{args:[0,-Z]}],[["ArrowDown","mac+ArrowDown"],l,{args:[0,U]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],l,{args:[0,Z]}],[["Escape","mac+Escape"],iU.prototype._stopResizingWithKeyboard]]))}get editorType(){return Object.getPrototypeOf(this).constructor._type}static get _defaultLineColor(){return yl(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(l){const U=new ZG({id:l.parent.getNextId(),parent:l.parent,uiManager:l._uiManager});U.annotationElementId=l.annotationElementId,U.deleted=!0,U._uiManager.addToAnnotationStorage(U)}static initialize(l,U,Z){if(iU._l10nPromise||(iU._l10nPromise=new Map(["pdfjs-editor-alt-text-button-label","pdfjs-editor-alt-text-edit-button-label","pdfjs-editor-alt-text-decorative-tooltip","pdfjs-editor-resizer-label-topLeft","pdfjs-editor-resizer-label-topMiddle","pdfjs-editor-resizer-label-topRight","pdfjs-editor-resizer-label-middleRight","pdfjs-editor-resizer-label-bottomRight","pdfjs-editor-resizer-label-bottomMiddle","pdfjs-editor-resizer-label-bottomLeft","pdfjs-editor-resizer-label-middleLeft"].map(W=>[W,l.get(W.replaceAll(/([A-Z])/g,s=>`-${s.toLowerCase()}`))]))),Z!=null&&Z.strings)for(const W of Z.strings)iU._l10nPromise.set(W,l.get(W));if(iU._borderLineWidth!==-1)return;const c=getComputedStyle(document.documentElement);iU._borderLineWidth=parseFloat(c.getPropertyValue("--outline-width"))||0}static updateDefaultParams(l,U){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(l){return!1}static paste(l,U){El("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return F(this,va)}set _isDraggable(l){var U;S(this,va,l),(U=this.div)==null||U.classList.toggle("draggable",l)}get isEnterHandled(){return!0}center(){const[l,U]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*U/(l*2),this.y+=this.width*l/(U*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*U/(l*2),this.y-=this.width*l/(U*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(l){this._uiManager.addCommands(l)}get currentLayer(){return this._uiManager.currentLayer}setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=F(this,Wi)}setParent(l){l!==null?(this.pageIndex=l.pageIndex,this.pageDimensions=l.pageDimensions):G(this,SF,Wc).call(this),this.parent=l}focusin(l){this._focusEventsAllowed&&(F(this,JF)?S(this,JF,!1):this.parent.setSelected(this))}focusout(l){var U;if(!this._focusEventsAllowed||!this.isAttachedToDOM)return;const Z=l.relatedTarget;Z!=null&&Z.closest(`#${this.id}`)||(l.preventDefault(),(U=this.parent)!=null&&U.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(l,U,Z,c){const[W,s]=this.parentDimensions;[Z,c]=this.screenToPageTranslation(Z,c),this.x=(l+Z)/W,this.y=(U+c)/s,this.fixAndSetPosition()}translate(l,U){G(this,Pa,ai).call(this,this.parentDimensions,l,U)}translateInPage(l,U){F(this,rd)||S(this,rd,[this.x,this.y]),G(this,Pa,ai).call(this,this.pageDimensions,l,U),this.div.scrollIntoView({block:"nearest"})}drag(l,U){F(this,rd)||S(this,rd,[this.x,this.y]);const[Z,c]=this.parentDimensions;if(this.x+=l/Z,this.y+=U/c,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:m,y:e}=this.div.getBoundingClientRect();this.parent.findNewParent(this,m,e)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:W,y:s}=this;const[Q,R]=this.getBaseTranslation();W+=Q,s+=R,this.div.style.left=`${(100*W).toFixed(2)}%`,this.div.style.top=`${(100*s).toFixed(2)}%`,this.div.scrollIntoView({block:"nearest"})}get _hasBeenMoved(){return!!F(this,rd)&&(F(this,rd)[0]!==this.x||F(this,rd)[1]!==this.y)}getBaseTranslation(){const[l,U]=this.parentDimensions,{_borderLineWidth:Z}=iU,c=Z/l,W=Z/U;switch(this.rotation){case 90:return[-c,W];case 180:return[c,W];case 270:return[c,-W];default:return[-c,-W]}}get _mustFixPosition(){return!0}fixAndSetPosition(l=this.rotation){const[U,Z]=this.pageDimensions;let{x:c,y:W,width:s,height:Q}=this;if(s*=U,Q*=Z,c*=U,W*=Z,this._mustFixPosition)switch(l){case 0:c=Math.max(0,Math.min(U-s,c)),W=Math.max(0,Math.min(Z-Q,W));break;case 90:c=Math.max(0,Math.min(U-Q,c)),W=Math.min(Z,Math.max(s,W));break;case 180:c=Math.min(U,Math.max(s,c)),W=Math.min(Z,Math.max(Q,W));break;case 270:c=Math.min(U,Math.max(Q,c)),W=Math.max(0,Math.min(Z-s,W));break}this.x=c/=U,this.y=W/=Z;const[R,m]=this.getBaseTranslation();c+=R,W+=m;const{style:e}=this.div;e.left=`${(100*c).toFixed(2)}%`,e.top=`${(100*W).toFixed(2)}%`,this.moveInDOM()}screenToPageTranslation(l,U){var Z;return G(Z=iU,fa,Vi).call(Z,l,U,this.parentRotation)}pageTranslationToScreen(l,U){var Z;return G(Z=iU,fa,Vi).call(Z,l,U,360-this.parentRotation)}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:l,pageDimensions:[U,Z]}=this,c=U*l,W=Z*l;return CU.isCSSRoundSupported?[Math.round(c),Math.round(W)]:[c,W]}setDims(l,U){const[Z,c]=this.parentDimensions;this.div.style.width=`${(100*l/Z).toFixed(2)}%`,F(this,MF)||(this.div.style.height=`${(100*U/c).toFixed(2)}%`)}fixDims(){const{style:l}=this.div,{height:U,width:Z}=l,c=Z.endsWith("%"),W=!F(this,MF)&&U.endsWith("%");if(c&&W)return;const[s,Q]=this.parentDimensions;c||(l.width=`${(100*parseFloat(Z)/s).toFixed(2)}%`),!F(this,MF)&&!W&&(l.height=`${(100*parseFloat(U)/Q).toFixed(2)}%`)}getInitialTranslation(){return[0,0]}altTextFinish(){var l;(l=F(this,DU))==null||l.finish()}addEditToolbar(){return Ul(this,null,function*(){return F(this,yU)||F(this,TF)?F(this,yU):(S(this,yU,new AM(this)),this.div.append(F(this,yU).render()),F(this,DU)&&F(this,yU).addAltTextButton(yield F(this,DU).render()),F(this,yU))})}removeEditToolbar(){var l;F(this,yU)&&(F(this,yU).remove(),S(this,yU,null),(l=F(this,DU))==null||l.destroy())}getClientDimensions(){return this.div.getBoundingClientRect()}addAltTextButton(){return Ul(this,null,function*(){F(this,DU)||(wm.initialize(iU._l10nPromise),S(this,DU,new wm(this)),yield this.addEditToolbar())})}get altTextData(){var l;return(l=F(this,DU))==null?void 0:l.data}set altTextData(l){F(this,DU)&&(F(this,DU).data=l)}hasAltText(){var l;return!((l=F(this,DU))!=null&&l.isEmpty())}render(){this.div=document.createElement("div"),this.div.setAttribute("data-editor-rotation",(360-this.rotation)%360),this.div.className=this.name,this.div.setAttribute("id",this.id),this.div.tabIndex=F(this,dc)?-1:0,this._isVisible||this.div.classList.add("hidden"),this.setInForeground(),this.div.addEventListener("focusin",F(this,Zc)),this.div.addEventListener("focusout",F(this,tc));const[l,U]=this.parentDimensions;this.parentRotation%180!==0&&(this.div.style.maxWidth=`${(100*U/l).toFixed(2)}%`,this.div.style.maxHeight=`${(100*l/U).toFixed(2)}%`);const[Z,c]=this.getInitialTranslation();return this.translate(Z,c),Ws(this,this.div,["pointerdown"]),this.div}pointerdown(l){const{isMac:U}=CU.platform;if(l.button!==0||l.ctrlKey&&U){l.preventDefault();return}if(S(this,JF,!0),this._isDraggable){G(this,hi,Sb).call(this,l);return}G(this,$a,Ri).call(this,l)}moveInDOM(){F(this,jd)&&clearTimeout(F(this,jd)),S(this,jd,setTimeout(()=>{var l;S(this,jd,null),(l=this.parent)==null||l.moveEditorInDOM(this)},0))}_setParentAndPosition(l,U,Z){l.changeParent(this),this.x=U,this.y=Z,this.fixAndSetPosition()}getRect(l,U,Z=this.rotation){const c=this.parentScale,[W,s]=this.pageDimensions,[Q,R]=this.pageTranslation,m=l/c,e=U/c,T=this.x*W,Y=this.y*s,u=this.width*W,B=this.height*s;switch(Z){case 0:return[T+m+Q,s-Y-e-B+R,T+m+u+Q,s-Y-e+R];case 90:return[T+e+Q,s-Y+m+R,T+e+B+Q,s-Y+m+u+R];case 180:return[T-m-u+Q,s-Y+e+R,T-m+Q,s-Y+e+B+R];case 270:return[T-e-B+Q,s-Y-m-u+R,T-e+Q,s-Y-m+R];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(l,U){const[Z,c,W,s]=l,Q=W-Z,R=s-c;switch(this.rotation){case 0:return[Z,U-s,Q,R];case 90:return[Z,U-c,R,Q];case 180:return[W,U-c,Q,R];case 270:return[W,U-s,R,Q];default:throw new Error("Invalid rotation")}}onceAdded(){}isEmpty(){return!1}enableEditMode(){S(this,TF,!0)}disableEditMode(){S(this,TF,!1)}isInEditMode(){return F(this,TF)}shouldGetKeyboardEvents(){return F(this,YZ)}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}rebuild(){var l,U;(l=this.div)==null||l.addEventListener("focusin",F(this,Zc)),(U=this.div)==null||U.addEventListener("focusout",F(this,tc))}rotate(l){}serialize(l=!1,U=null){El("An editor must be serializable")}static deserialize(l,U,Z){const c=new this.prototype.constructor({parent:U,id:U.getNextId(),uiManager:Z});c.rotation=l.rotation;const[W,s]=c.pageDimensions,[Q,R,m,e]=c.getRectInCurrentCoords(l.rect,s);return c.x=Q/W,c.y=R/s,c.width=m/W,c.height=e/s,c}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){if(this.div.removeEventListener("focusin",F(this,Zc)),this.div.removeEventListener("focusout",F(this,tc)),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),F(this,jd)&&(clearTimeout(F(this,jd)),S(this,jd,null)),G(this,SF,Wc).call(this),this.removeEditToolbar(),F(this,_U)){for(const l of F(this,_U).values())clearTimeout(l);S(this,_U,null)}this.parent=null}get isResizable(){return!1}makeResizable(){this.isResizable&&(G(this,si,Jb).call(this),F(this,eU).classList.remove("hidden"),Ws(this,this.div,["keydown"]))}get toolbarPosition(){return null}keydown(l){if(!this.isResizable||l.target!==this.div||l.key!=="Enter")return;this._uiManager.setSelected(this),S(this,GF,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const U=F(this,eU).children;if(!F(this,Gd)){S(this,Gd,Array.from(U));const s=G(this,bi,Xb).bind(this),Q=G(this,mi,Yb).bind(this);for(const R of F(this,Gd)){const m=R.getAttribute("data-resizer-name");R.setAttribute("role","spinbutton"),R.addEventListener("keydown",s),R.addEventListener("blur",Q),R.addEventListener("focus",G(this,ei,pb).bind(this,m)),iU._l10nPromise.get(`pdfjs-editor-resizer-label-${m}`).then(e=>R.setAttribute("aria-label",e))}}const Z=F(this,Gd)[0];let c=0;for(const s of U){if(s===Z)break;c++}const W=(360-this.rotation+this.parentRotation)%360/90*(F(this,Gd).length/4);if(W!==c){if(W<c)for(let Q=0;Q<c-W;Q++)F(this,eU).append(F(this,eU).firstChild);else if(W>c)for(let Q=0;Q<W-c;Q++)F(this,eU).firstChild.before(F(this,eU).lastChild);let s=0;for(const Q of U){const R=F(this,Gd)[s++].getAttribute("data-resizer-name");iU._l10nPromise.get(`pdfjs-editor-resizer-label-${R}`).then(m=>Q.setAttribute("aria-label",m))}}G(this,lV,Mi).call(this,0),S(this,YZ,!0),F(this,eU).firstChild.focus({focusVisible:!0}),l.preventDefault(),l.stopImmediatePropagation()}_resizeWithKeyboard(l,U){F(this,YZ)&&G(this,qa,Ni).call(this,F(this,Ka),{movementX:l,movementY:U})}_stopResizingWithKeyboard(){G(this,SF,Wc).call(this),this.div.focus()}select(){var l,U;if(this.makeResizable(),(l=this.div)==null||l.classList.add("selectedEditor"),!F(this,yU)){this.addEditToolbar().then(()=>{var Z,c;(Z=this.div)!=null&&Z.classList.contains("selectedEditor")&&((c=F(this,yU))==null||c.show())});return}(U=F(this,yU))==null||U.show()}unselect(){var l,U,Z,c;(l=F(this,eU))==null||l.classList.add("hidden"),(U=this.div)==null||U.classList.remove("selectedEditor"),(Z=this.div)!=null&&Z.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),(c=F(this,yU))==null||c.hide()}updateParams(l,U){}disableEditing(){}enableEditing(){}enterInEditMode(){}getImageForAltText(){return null}get contentDiv(){return this.div}get isEditing(){return F(this,Ha)}set isEditing(l){S(this,Ha,l),this.parent&&(l?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}setAspectRatio(l,U){S(this,MF,!0);const Z=l/U,{style:c}=this.div;c.aspectRatio=Z,c.height="auto"}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(l,U=!1){if(U){F(this,_U)||S(this,_U,new Map);const{action:Z}=l;let c=F(this,_U).get(Z);c&&clearTimeout(c),c=setTimeout(()=>{this._reportTelemetry(l),F(this,_U).delete(Z),F(this,_U).size===0&&S(this,_U,null)},iU._telemetryTimeout),F(this,_U).set(Z,c);return}l.type||(l.type=this.editorType),this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:l}})}show(l=this._isVisible){this.div.classList.toggle("hidden",!l),this._isVisible=l}enable(){this.div&&(this.div.tabIndex=0),S(this,dc,!1)}disable(){this.div&&(this.div.tabIndex=-1),S(this,dc,!0)}renderAnnotationElement(l){let U=l.container.querySelector(".annotationContent");if(!U)U=document.createElement("div"),U.classList.add("annotationContent",this.editorType),l.container.prepend(U);else if(U.nodeName==="CANVAS"){const Z=U;U=document.createElement("div"),U.classList.add("annotationContent",this.editorType),Z.before(U)}return U}resetAnnotationElement(l){const{firstChild:U}=l.container;U.nodeName==="DIV"&&U.classList.contains("annotationContent")&&U.remove()}};Gd=new WeakMap,DU=new WeakMap,dc=new WeakMap,MF=new WeakMap,eU=new WeakMap,GF=new WeakMap,Zc=new WeakMap,tc=new WeakMap,yU=new WeakMap,Ka=new WeakMap,JF=new WeakMap,rd=new WeakMap,Ha=new WeakMap,TF=new WeakMap,YZ=new WeakMap,jd=new WeakMap,Fc=new WeakMap,cc=new WeakMap,_U=new WeakMap,va=new WeakMap,Wi=new WeakMap,Pa=new WeakSet,ai=function([a,l],U,Z){[U,Z]=this.screenToPageTranslation(U,Z),this.x+=U/a,this.y+=Z/l,this.fixAndSetPosition()},fa=new WeakSet,Vi=function(a,l,U){switch(U){case 90:return[l,-a];case 180:return[-a,-l];case 270:return[-l,a];default:return[a,l]}},Aa=new WeakSet,ni=function(a){switch(a){case 90:{const[l,U]=this.pageDimensions;return[0,-l/U,U/l,0]}case 180:return[-1,0,0,-1];case 270:{const[l,U]=this.pageDimensions;return[0,l/U,-U/l,0]}default:return[1,0,0,1]}},si=new WeakSet,Jb=function(){if(F(this,eU))return;S(this,eU,document.createElement("div")),F(this,eU).classList.add("resizers");const a=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"];for(const l of a){const U=document.createElement("div");F(this,eU).append(U),U.classList.add("resizer",l),U.setAttribute("data-resizer-name",l),U.addEventListener("pointerdown",G(this,Qi,Tb).bind(this,l)),U.addEventListener("contextmenu",xU),U.tabIndex=-1}this.div.prepend(F(this,eU))},Qi=new WeakSet,Tb=function(a,l){var U;l.preventDefault();const{isMac:Z}=CU.platform;if(l.button!==0||l.ctrlKey&&Z)return;(U=F(this,DU))==null||U.toggle(!1);const c=G(this,qa,Ni).bind(this,a),W=this._isDraggable;this._isDraggable=!1;const s={passive:!0,capture:!0};this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",c,s),window.addEventListener("contextmenu",xU);const Q=this.x,R=this.y,m=this.width,e=this.height,T=this.parent.div.style.cursor,Y=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(l.target).cursor;const u=()=>{var B;this.parent.togglePointerEvents(!0),(B=F(this,DU))==null||B.toggle(!0),this._isDraggable=W,window.removeEventListener("pointerup",u),window.removeEventListener("blur",u),window.removeEventListener("pointermove",c,s),window.removeEventListener("contextmenu",xU),this.parent.div.style.cursor=T,this.div.style.cursor=Y,G(this,_a,ii).call(this,Q,R,m,e)};window.addEventListener("pointerup",u),window.addEventListener("blur",u)},_a=new WeakSet,ii=function(a,l,U,Z){const c=this.x,W=this.y,s=this.width,Q=this.height;c===a&&W===l&&s===U&&Q===Z||this.addCommands({cmd:()=>{this.width=s,this.height=Q,this.x=c,this.y=W;const[R,m]=this.parentDimensions;this.setDims(R*s,m*Q),this.fixAndSetPosition()},undo:()=>{this.width=U,this.height=Z,this.x=a,this.y=l;const[R,m]=this.parentDimensions;this.setDims(R*U,m*Z),this.fixAndSetPosition()},mustExec:!0})},qa=new WeakSet,Ni=function(a,l){const[U,Z]=this.parentDimensions,c=this.x,W=this.y,s=this.width,Q=this.height,R=ZZ.MIN_SIZE/U,m=ZZ.MIN_SIZE/Z,e=Nl=>Math.round(Nl*1e4)/1e4,T=G(this,Aa,ni).call(this,this.rotation),Y=(Nl,Gl)=>[T[0]*Nl+T[2]*Gl,T[1]*Nl+T[3]*Gl],u=G(this,Aa,ni).call(this,360-this.rotation),B=(Nl,Gl)=>[u[0]*Nl+u[2]*Gl,u[1]*Nl+u[3]*Gl];let z,L,D=!1,f=!1;switch(a){case"topLeft":D=!0,z=(Nl,Gl)=>[0,0],L=(Nl,Gl)=>[Nl,Gl];break;case"topMiddle":z=(Nl,Gl)=>[Nl/2,0],L=(Nl,Gl)=>[Nl/2,Gl];break;case"topRight":D=!0,z=(Nl,Gl)=>[Nl,0],L=(Nl,Gl)=>[0,Gl];break;case"middleRight":f=!0,z=(Nl,Gl)=>[Nl,Gl/2],L=(Nl,Gl)=>[0,Gl/2];break;case"bottomRight":D=!0,z=(Nl,Gl)=>[Nl,Gl],L=(Nl,Gl)=>[0,0];break;case"bottomMiddle":z=(Nl,Gl)=>[Nl/2,Gl],L=(Nl,Gl)=>[Nl/2,0];break;case"bottomLeft":D=!0,z=(Nl,Gl)=>[0,Gl],L=(Nl,Gl)=>[Nl,0];break;case"middleLeft":f=!0,z=(Nl,Gl)=>[0,Gl/2],L=(Nl,Gl)=>[Nl,Gl/2];break}const j=z(s,Q),q=L(s,Q);let Zl=Y(...q);const Fl=e(c+Zl[0]),al=e(W+Zl[1]);let bl=1,Sl=1,[Yl,Xl]=this.screenToPageTranslation(l.movementX,l.movementY);if([Yl,Xl]=B(Yl/U,Xl/Z),D){const Nl=Math.hypot(s,Q);bl=Sl=Math.max(Math.min(Math.hypot(q[0]-j[0]-Yl,q[1]-j[1]-Xl)/Nl,1/s,1/Q),R/s,m/Q)}else f?bl=Math.max(R,Math.min(1,Math.abs(q[0]-j[0]-Yl)))/s:Sl=Math.max(m,Math.min(1,Math.abs(q[1]-j[1]-Xl)))/Q;const vl=e(s*bl),rl=e(Q*Sl);Zl=Y(...L(vl,rl));const LU=Fl-Zl[0],Pl=al-Zl[1];this.width=vl,this.height=rl,this.x=LU,this.y=Pl,this.setDims(U*vl,Z*rl),this.fixAndSetPosition()},$a=new WeakSet,Ri=function(a){const{isMac:l}=CU.platform;a.ctrlKey&&!l||a.shiftKey||a.metaKey&&l?this.parent.toggleSelected(this):this.parent.setSelected(this)},hi=new WeakSet,Sb=function(a){const l=this._uiManager.isSelected(this);this._uiManager.setUpDragSession();let U,Z;l&&(this.div.classList.add("moving"),U={passive:!0,capture:!0},S(this,Fc,a.clientX),S(this,cc,a.clientY),Z=W=>{const{clientX:s,clientY:Q}=W,[R,m]=this.screenToPageTranslation(s-F(this,Fc),Q-F(this,cc));S(this,Fc,s),S(this,cc,Q),this._uiManager.dragSelectedEditors(R,m)},window.addEventListener("pointermove",Z,U));const c=()=>{window.removeEventListener("pointerup",c),window.removeEventListener("blur",c),l&&(this.div.classList.remove("moving"),window.removeEventListener("pointermove",Z,U)),S(this,JF,!1),this._uiManager.endDragSession()||G(this,$a,Ri).call(this,a)};window.addEventListener("pointerup",c),window.addEventListener("blur",c)},bi=new WeakSet,Xb=function(a){ZZ._resizerKeyboardManager.exec(this,a)},mi=new WeakSet,Yb=function(a){var l;F(this,YZ)&&((l=a.relatedTarget)==null?void 0:l.parentNode)!==F(this,eU)&&G(this,SF,Wc).call(this)},ei=new WeakSet,pb=function(a){S(this,Ka,F(this,YZ)?a:"")},lV=new WeakSet,Mi=function(a){if(F(this,Gd))for(const l of F(this,Gd))l.tabIndex=a},SF=new WeakSet,Wc=function(){if(S(this,YZ,!1),G(this,lV,Mi).call(this,-1),F(this,GF)){const{savedX:a,savedY:l,savedWidth:U,savedHeight:Z}=F(this,GF);G(this,_a,ii).call(this,a,l,U,Z),S(this,GF,null)}},h(ZZ,fa),el(ZZ,"_borderLineWidth",-1),el(ZZ,"_colorManager",new dG),el(ZZ,"_zIndex",1),el(ZZ,"_telemetryTimeout",1e3);let Cl=ZZ;class ZG extends Cl{constructor(l){super(l),this.annotationElementId=l.annotationElementId,this.deleted=!0}serialize(){return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex}}}const Cm=3285377520,td=4294901760,Bd=65535;class xm{constructor(l){this.h1=l?l&4294967295:Cm,this.h2=l?l&4294967295:Cm}update(l){let U,Z;if(typeof l=="string"){U=new Uint8Array(l.length*2),Z=0;for(let z=0,L=l.length;z<L;z++){const D=l.charCodeAt(z);D<=255?U[Z++]=D:(U[Z++]=D>>>8,U[Z++]=D&255)}}else if(ArrayBuffer.isView(l))U=l.slice(),Z=U.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const c=Z>>2,W=Z-c*4,s=new Uint32Array(U.buffer,0,c);let Q=0,R=0,m=this.h1,e=this.h2;const T=3432918353,Y=461845907,u=T&Bd,B=Y&Bd;for(let z=0;z<c;z++)z&1?(Q=s[z],Q=Q*T&td|Q*u&Bd,Q=Q<<15|Q>>>17,Q=Q*Y&td|Q*B&Bd,m^=Q,m=m<<13|m>>>19,m=m*5+3864292196):(R=s[z],R=R*T&td|R*u&Bd,R=R<<15|R>>>17,R=R*Y&td|R*B&Bd,e^=R,e=e<<13|e>>>19,e=e*5+3864292196);switch(Q=0,W){case 3:Q^=U[c*4+2]<<16;case 2:Q^=U[c*4+1]<<8;case 1:Q^=U[c*4],Q=Q*T&td|Q*u&Bd,Q=Q<<15|Q>>>17,Q=Q*Y&td|Q*B&Bd,c&1?m^=Q:e^=Q}this.h1=m,this.h2=e}hexdigest(){let l=this.h1,U=this.h2;return l^=U>>>1,l=l*3981806797&td|l*36045&Bd,U=U*4283543511&td|((U<<16|l>>>16)*2950163797&td)>>>16,l^=U>>>1,l=l*444984403&td|l*60499&Bd,U=U*3301882366&td|((U<<16|l>>>16)*3120437893&td)>>>16,l^=U>>>1,(l>>>0).toString(16).padStart(8,"0")+(U>>>0).toString(16).padStart(8,"0")}}const bR=Object.freeze({map:null,hash:"",transfer:void 0});class mR{constructor(){h(this,Gi),h(this,XF,!1),h(this,MU,new Map),this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(l,U){const Z=F(this,MU).get(l);return Z===void 0?U:Object.assign(U,Z)}getRawValue(l){return F(this,MU).get(l)}remove(l){if(F(this,MU).delete(l),F(this,MU).size===0&&this.resetModified(),typeof this.onAnnotationEditor=="function"){for(const U of F(this,MU).values())if(U instanceof Cl)return;this.onAnnotationEditor(null)}}setValue(l,U){const Z=F(this,MU).get(l);let c=!1;if(Z!==void 0)for(const[W,s]of Object.entries(U))Z[W]!==s&&(c=!0,Z[W]=s);else c=!0,F(this,MU).set(l,U);c&&G(this,Gi,ub).call(this),U instanceof Cl&&typeof this.onAnnotationEditor=="function"&&this.onAnnotationEditor(U.constructor._type)}has(l){return F(this,MU).has(l)}getAll(){return F(this,MU).size>0?cR(F(this,MU)):null}setAll(l){for(const[U,Z]of Object.entries(l))this.setValue(U,Z)}get size(){return F(this,MU).size}resetModified(){F(this,XF)&&(S(this,XF,!1),typeof this.onResetModified=="function"&&this.onResetModified())}get print(){return new rm(this)}get serializable(){if(F(this,MU).size===0)return bR;const l=new Map,U=new xm,Z=[],c=Object.create(null);let W=!1;for(const[s,Q]of F(this,MU)){const R=Q instanceof Cl?Q.serialize(!1,c):Q;R&&(l.set(s,R),U.update(`${s}:${JSON.stringify(R)}`),W||(W=!!R.bitmap))}if(W)for(const s of l.values())s.bitmap&&Z.push(s.bitmap);return l.size>0?{map:l,hash:U.hexdigest(),transfer:Z}:bR}get editorStats(){var Z;let l=null;const U=new Map;for(const c of F(this,MU).values()){if(!(c instanceof Cl))continue;const W=c.telemetryFinalData;if(!W)continue;const{type:s}=W;U.has(s)||U.set(s,Object.getPrototypeOf(c).constructor),l||(l=Object.create(null));const Q=l[s]||(l[s]=new Map);for(const[R,m]of Object.entries(W)){if(R==="type")continue;let e=Q.get(R);e||(e=new Map,Q.set(R,e));const T=(Z=e.get(m))!=null?Z:0;e.set(m,T+1)}}for(const[c,W]of U)l[c]=W.computeTelemetryFinalData(l[c]);return l}}XF=new WeakMap,MU=new WeakMap,Gi=new WeakSet,ub=function(){F(this,XF)||(S(this,XF,!0),typeof this.onSetModified=="function"&&this.onSetModified())};class rm extends mR{constructor(l){super(),h(this,UV,void 0);const{map:U,hash:Z,transfer:c}=l.serializable,W=structuredClone(U,c?{transfer:c}:null);S(this,UV,{map:W,hash:Z,transfer:c})}get print(){El("Should not call PrintAnnotationStorage.print")}get serializable(){return F(this,UV)}}UV=new WeakMap;class tG{constructor({ownerDocument:l=globalThis.document,styleElement:U=null}){h(this,ac,new Set),this._document=l,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(l){this.nativeFontFaces.add(l),this._document.fonts.add(l)}removeNativeFontFace(l){this.nativeFontFaces.delete(l),this._document.fonts.delete(l)}insertRule(l){this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));const U=this.styleElement.sheet;U.insertRule(l,U.cssRules.length)}clear(){for(const l of this.nativeFontFaces)this._document.fonts.delete(l);this.nativeFontFaces.clear(),F(this,ac).clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}loadSystemFont(Z){return Ul(this,arguments,function*({systemFontInfo:l,_inspectFont:U}){if(!(!l||F(this,ac).has(l.loadedName))){if(ZU(!this.disableFontFace,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:c,src:W,style:s}=l,Q=new FontFace(c,W,s);this.addNativeFontFace(Q);try{yield Q.load(),F(this,ac).add(c),U==null||U(l)}catch(R){Tl(`Cannot load system font: ${l.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(Q)}return}El("Not implemented: loadSystemFont without the Font Loading API.")}})}bind(l){return Ul(this,null,function*(){if(l.attached||l.missingFile&&!l.systemFontInfo)return;if(l.attached=!0,l.systemFontInfo){yield this.loadSystemFont(l);return}if(this.isFontLoadingAPISupported){const Z=l.createNativeFontFace();if(Z){this.addNativeFontFace(Z);try{yield Z.loaded}catch(c){throw Tl(`Failed to load font '${Z.family}': '${c}'.`),l.disableFontFace=!0,c}}return}const U=l.createFontFaceRule();if(U){if(this.insertRule(U),this.isSyncFontLoadingSupported)return;yield new Promise(Z=>{const c=this._queueLoadingCallback(Z);this._prepareFontLoadEvent(l,c)})}})}get isFontLoadingAPISupported(){var l;const U=!!((l=this._document)!=null&&l.fonts);return yl(this,"isFontLoadingAPISupported",U)}get isSyncFontLoadingSupported(){let l=!1;return(TU||typeof navigator<"u"&&typeof(navigator==null?void 0:navigator.userAgent)=="string"&&/Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent))&&(l=!0),yl(this,"isSyncFontLoadingSupported",l)}_queueLoadingCallback(l){function U(){for(ZU(!c.done,"completeRequest() cannot be called twice."),c.done=!0;Z.length>0&&Z[0].done;){const W=Z.shift();setTimeout(W.callback,0)}}const{loadingRequests:Z}=this,c={done:!1,complete:U,callback:l};return Z.push(c),c}get _loadTestFont(){const l=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return yl(this,"_loadTestFont",l)}_prepareFontLoadEvent(l,U){function Z(j,q){return j.charCodeAt(q)<<24|j.charCodeAt(q+1)<<16|j.charCodeAt(q+2)<<8|j.charCodeAt(q+3)&255}function c(j,q,Zl,Fl){const al=j.substring(0,q),bl=j.substring(q+Zl);return al+Fl+bl}let W,s;const Q=this._document.createElement("canvas");Q.width=1,Q.height=1;const R=Q.getContext("2d");let m=0;function e(j,q){if(++m>30){Tl("Load test font never loaded."),q();return}if(R.font="30px "+j,R.fillText(".",0,20),R.getImageData(0,0,1,1).data[3]>0){q();return}setTimeout(e.bind(null,j,q))}const T=`lt${Date.now()}${this.loadTestFontId++}`;let Y=this._loadTestFont;Y=c(Y,976,T.length,T);const u=16,B=1482184792;let z=Z(Y,u);for(W=0,s=T.length-3;W<s;W+=4)z=z-B+Z(T,W)|0;W<T.length&&(z=z-B+Z(T+"XXX",W)|0),Y=c(Y,u,4,wM(z));const L=`url(data:font/opentype;base64,${btoa(Y)});`,D=`@font-face {font-family:"${T}";src:${L}}`;this.insertRule(D);const f=this._document.createElement("div");f.style.visibility="hidden",f.style.width=f.style.height="10px",f.style.position="absolute",f.style.top=f.style.left="0px";for(const j of[l.loadedName,T]){const q=this._document.createElement("span");q.textContent="Hi",q.style.fontFamily=j,f.append(q)}this._document.body.append(f),e(T,()=>{f.remove(),U.complete()})}}ac=new WeakMap;class FG{constructor(l,{disableFontFace:U=!1,inspectFont:Z=null}){this.compiledGlyphs=Object.create(null);for(const c in l)this[c]=l[c];this.disableFontFace=U===!0,this._inspectFont=Z}createNativeFontFace(){var l;if(!this.data||this.disableFontFace)return null;let U;if(!this.cssFontInfo)U=new FontFace(this.loadedName,this.data,{});else{const Z={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(Z.style=`oblique ${this.cssFontInfo.italicAngle}deg`),U=new FontFace(this.cssFontInfo.fontFamily,this.data,Z)}return(l=this._inspectFont)==null||l.call(this,this),U}createFontFaceRule(){var l;if(!this.data||this.disableFontFace)return null;const U=pm(this.data),Z=`url(data:${this.mimetype};base64,${btoa(U)});`;let c;if(!this.cssFontInfo)c=`@font-face {font-family:"${this.loadedName}";src:${Z}}`;else{let W=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(W+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),c=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${W}src:${Z}}`}return(l=this._inspectFont)==null||l.call(this,this,Z),c}getPathGenerator(l,U){if(this.compiledGlyphs[U]!==void 0)return this.compiledGlyphs[U];let Z;try{Z=l.get(this.loadedName+"_path_"+U)}catch(W){Tl(`getPathGenerator - ignoring character: "${W}".`)}if(!Array.isArray(Z)||Z.length===0)return this.compiledGlyphs[U]=function(W,s){};const c=[];for(let W=0,s=Z.length;W<s;)switch(Z[W++]){case lZ.BEZIER_CURVE_TO:{const[Q,R,m,e,T,Y]=Z.slice(W,W+6);c.push(u=>u.bezierCurveTo(Q,R,m,e,T,Y)),W+=6}break;case lZ.MOVE_TO:{const[Q,R]=Z.slice(W,W+2);c.push(m=>m.moveTo(Q,R)),W+=2}break;case lZ.LINE_TO:{const[Q,R]=Z.slice(W,W+2);c.push(m=>m.lineTo(Q,R)),W+=2}break;case lZ.QUADRATIC_CURVE_TO:{const[Q,R,m,e]=Z.slice(W,W+4);c.push(T=>T.quadraticCurveTo(Q,R,m,e)),W+=4}break;case lZ.RESTORE:c.push(Q=>Q.restore());break;case lZ.SAVE:c.push(Q=>Q.save());break;case lZ.SCALE:ZU(c.length===2,"Scale command is only valid at the third position.");break;case lZ.TRANSFORM:{const[Q,R,m,e,T,Y]=Z.slice(W,W+6);c.push(u=>u.transform(Q,R,m,e,T,Y)),W+=6}break;case lZ.TRANSLATE:{const[Q,R]=Z.slice(W,W+2);c.push(m=>m.translate(Q,R)),W+=2}break}return this.compiledGlyphs[U]=function(W,s){c[0](W),c[1](W),W.scale(s,-s);for(let Q=2,R=c.length;Q<R;Q++)c[Q](W)}}}if(TU){var eR=Promise.withResolvers(),Vs=null;Ul(void 0,null,function*(){const a=yield Promise.resolve().then(()=>zW),l=yield Promise.resolve().then(()=>zW),U=yield Promise.resolve().then(()=>zW),Z=yield Promise.resolve().then(()=>zW);let c,W;try{c=yield Promise.resolve().then(()=>zW)}catch(s){}try{W=yield Promise.resolve().then(()=>wX)}catch(s){}return new Map(Object.entries({fs:a,http:l,https:U,url:Z,canvas:c,path2d:W}))}).then(a=>{var l,U,Z,c;if(Vs=a,eR.resolve(),!globalThis.DOMMatrix){const W=(l=a.get("canvas"))==null?void 0:l.DOMMatrix;W?globalThis.DOMMatrix=W:Tl("Cannot polyfill `DOMMatrix`, rendering may be broken.")}if(!globalThis.Path2D){const W=(U=a.get("canvas"))==null?void 0:U.CanvasRenderingContext2D,s=(Z=a.get("path2d"))==null?void 0:Z.applyPath2DToCanvasRenderingContext,Q=(c=a.get("path2d"))==null?void 0:c.Path2D;W&&s&&Q?(s(W),globalThis.Path2D=Q):Tl("Cannot polyfill `Path2D`, rendering may be broken.")}},a=>{Tl(`loadPackages: ${a}`),Vs=new Map,eR.resolve()})}class od{static get promise(){return eR.promise}static get(l){return Vs==null?void 0:Vs.get(l)}}const jm=function(a){return od.get("fs").promises.readFile(a).then(l=>new Uint8Array(l))};class cG extends ds{}class WG extends Zs{_createCanvas(l,U){return od.get("canvas").createCanvas(l,U)}}class aG extends ts{_fetchData(l,U){return jm(l).then(Z=>({cMapData:Z,compressionType:U}))}}class VG extends Fs{_fetchData(l){return jm(l)}}const zU={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function MR(a,l){if(!l)return;const U=l[2]-l[0],Z=l[3]-l[1],c=new Path2D;c.rect(l[0],l[1],U,Z),a.clip(c)}class GW{constructor(){this.constructor===GW&&El("Cannot initialize BaseShadingPattern.")}getPattern(){El("Abstract method `getPattern` called.")}}class nG extends GW{constructor(l){super(),this._type=l[1],this._bbox=l[2],this._colorStops=l[3],this._p0=l[4],this._p1=l[5],this._r0=l[6],this._r1=l[7],this.matrix=null}_createGradient(l){let U;this._type==="axial"?U=l.createLinearGradient(this._p0[0],this._p0[1],this._p1[0],this._p1[1]):this._type==="radial"&&(U=l.createRadialGradient(this._p0[0],this._p0[1],this._r0,this._p1[0],this._p1[1],this._r1));for(const Z of this._colorStops)U.addColorStop(Z[0],Z[1]);return U}getPattern(l,U,Z,c){let W;if(c===zU.STROKE||c===zU.FILL){const s=U.current.getClippedPathBoundingBox(c,jl(l))||[0,0,0,0],Q=Math.ceil(s[2]-s[0])||1,R=Math.ceil(s[3]-s[1])||1,m=U.cachedCanvases.getCanvas("pattern",Q,R,!0),e=m.context;e.clearRect(0,0,e.canvas.width,e.canvas.height),e.beginPath(),e.rect(0,0,e.canvas.width,e.canvas.height),e.translate(-s[0],-s[1]),Z=nl.transform(Z,[1,0,0,1,s[0],s[1]]),e.transform(...U.baseTransform),this.matrix&&e.transform(...this.matrix),MR(e,this._bbox),e.fillStyle=this._createGradient(e),e.fill(),W=l.createPattern(m.canvas,"no-repeat");const T=new DOMMatrix(Z);W.setTransform(T)}else MR(l,this._bbox),W=this._createGradient(l);return W}}function GR(a,l,U,Z,c,W,s,Q){const R=l.coords,m=l.colors,e=a.data,T=a.width*4;let Y;R[U+1]>R[Z+1]&&(Y=U,U=Z,Z=Y,Y=W,W=s,s=Y),R[Z+1]>R[c+1]&&(Y=Z,Z=c,c=Y,Y=s,s=Q,Q=Y),R[U+1]>R[Z+1]&&(Y=U,U=Z,Z=Y,Y=W,W=s,s=Y);const u=(R[U]+l.offsetX)*l.scaleX,B=(R[U+1]+l.offsetY)*l.scaleY,z=(R[Z]+l.offsetX)*l.scaleX,L=(R[Z+1]+l.offsetY)*l.scaleY,D=(R[c]+l.offsetX)*l.scaleX,f=(R[c+1]+l.offsetY)*l.scaleY;if(B>=f)return;const j=m[W],q=m[W+1],Zl=m[W+2],Fl=m[s],al=m[s+1],bl=m[s+2],Sl=m[Q],Yl=m[Q+1],Xl=m[Q+2],vl=Math.round(B),rl=Math.round(f);let LU,Pl,Nl,Gl,h0,Js,Ts,b0;for(let vU=vl;vU<=rl;vU++){if(vU<L){const ql=vU<B?0:(B-vU)/(B-L);LU=u-(u-z)*ql,Pl=j-(j-Fl)*ql,Nl=q-(q-al)*ql,Gl=Zl-(Zl-bl)*ql}else{let ql;vU>f?ql=1:L===f?ql=0:ql=(L-vU)/(L-f),LU=z-(z-D)*ql,Pl=Fl-(Fl-Sl)*ql,Nl=al-(al-Yl)*ql,Gl=bl-(bl-Xl)*ql}let QU;vU<B?QU=0:vU>f?QU=1:QU=(B-vU)/(B-f),h0=u-(u-D)*QU,Js=j-(j-Sl)*QU,Ts=q-(q-Yl)*QU,b0=Zl-(Zl-Xl)*QU;const pW=Math.round(Math.min(LU,h0)),Ss=Math.round(Math.max(LU,h0));let zd=T*vU+pW*4;for(let ql=pW;ql<=Ss;ql++)QU=(LU-ql)/(LU-h0),QU<0?QU=0:QU>1&&(QU=1),e[zd++]=Pl-(Pl-Js)*QU|0,e[zd++]=Nl-(Nl-Ts)*QU|0,e[zd++]=Gl-(Gl-b0)*QU|0,e[zd++]=255}}function sG(a,l,U){const Z=l.coords,c=l.colors;let W,s;switch(l.type){case"lattice":const Q=l.verticesPerRow,R=Math.floor(Z.length/Q)-1,m=Q-1;for(W=0;W<R;W++){let e=W*Q;for(let T=0;T<m;T++,e++)GR(a,U,Z[e],Z[e+1],Z[e+Q],c[e],c[e+1],c[e+Q]),GR(a,U,Z[e+Q+1],Z[e+1],Z[e+Q],c[e+Q+1],c[e+1],c[e+Q])}break;case"triangles":for(W=0,s=Z.length;W<s;W+=3)GR(a,U,Z[W],Z[W+1],Z[W+2],c[W],c[W+1],c[W+2]);break;default:throw new Error("illegal figure")}}class QG extends GW{constructor(l){super(),this._coords=l[2],this._colors=l[3],this._figures=l[4],this._bounds=l[5],this._bbox=l[7],this._background=l[8],this.matrix=null}_createMeshCanvas(l,U,Z){const c=Math.floor(this._bounds[0]),W=Math.floor(this._bounds[1]),s=Math.ceil(this._bounds[2])-c,Q=Math.ceil(this._bounds[3])-W,R=Math.min(Math.ceil(Math.abs(s*l[0]*1.1)),3e3),m=Math.min(Math.ceil(Math.abs(Q*l[1]*1.1)),3e3),e=s/R,T=Q/m,Y={coords:this._coords,colors:this._colors,offsetX:-c,offsetY:-W,scaleX:1/e,scaleY:1/T},u=R+2*2,B=m+2*2,z=Z.getCanvas("mesh",u,B,!1),L=z.context,D=L.createImageData(R,m);if(U){const f=D.data;for(let j=0,q=f.length;j<q;j+=4)f[j]=U[0],f[j+1]=U[1],f[j+2]=U[2],f[j+3]=255}for(const f of this._figures)sG(D,f,Y);return L.putImageData(D,2,2),{canvas:z.canvas,offsetX:c-2*e,offsetY:W-2*T,scaleX:e,scaleY:T}}getPattern(l,U,Z,c){MR(l,this._bbox);let W;if(c===zU.SHADING)W=nl.singularValueDecompose2dScale(jl(l));else if(W=nl.singularValueDecompose2dScale(U.baseTransform),this.matrix){const Q=nl.singularValueDecompose2dScale(this.matrix);W=[W[0]*Q[0],W[1]*Q[1]]}const s=this._createMeshCanvas(W,c===zU.SHADING?null:this._background,U.cachedCanvases);return c!==zU.SHADING&&(l.setTransform(...U.baseTransform),this.matrix&&l.transform(...this.matrix)),l.translate(s.offsetX,s.offsetY),l.scale(s.scaleX,s.scaleY),l.createPattern(s.canvas,"no-repeat")}}class iG extends GW{getPattern(){return"hotpink"}}function NG(a){switch(a[0]){case"RadialAxial":return new nG(a);case"Mesh":return new QG(a);case"Dummy":return new iG}throw new Error(`Unknown IR type: ${a[0]}`)}const Om={COLORED:1,UNCOLORED:2},gm=class I2{constructor(l,U,Z,c,W){this.operatorList=l[2],this.matrix=l[3],this.bbox=l[4],this.xstep=l[5],this.ystep=l[6],this.paintType=l[7],this.tilingType=l[8],this.color=U,this.ctx=Z,this.canvasGraphicsFactory=c,this.baseTransform=W}createPatternCanvas(l){const U=this.operatorList,Z=this.bbox,c=this.xstep,W=this.ystep,s=this.paintType,Q=this.tilingType,R=this.color,m=this.canvasGraphicsFactory;$n("TilingType: "+Q);const e=Z[0],T=Z[1],Y=Z[2],u=Z[3],B=nl.singularValueDecompose2dScale(this.matrix),z=nl.singularValueDecompose2dScale(this.baseTransform),L=[B[0]*z[0],B[1]*z[1]],D=this.getSizeAndScale(c,this.ctx.canvas.width,L[0]),f=this.getSizeAndScale(W,this.ctx.canvas.height,L[1]),j=l.cachedCanvases.getCanvas("pattern",D.size,f.size,!0),q=j.context,Zl=m.createCanvasGraphics(q);Zl.groupLevel=l.groupLevel,this.setFillAndStrokeStyleToContext(Zl,s,R);let Fl=e,al=T,bl=Y,Sl=u;return e<0&&(Fl=0,bl+=Math.abs(e)),T<0&&(al=0,Sl+=Math.abs(T)),q.translate(-(D.scale*Fl),-(f.scale*al)),Zl.transform(D.scale,0,0,f.scale,0,0),q.save(),this.clipBbox(Zl,Fl,al,bl,Sl),Zl.baseTransform=jl(Zl.ctx),Zl.executeOperatorList(U),Zl.endDrawing(),{canvas:j.canvas,scaleX:D.scale,scaleY:f.scale,offsetX:Fl,offsetY:al}}getSizeAndScale(l,U,Z){l=Math.abs(l);const c=Math.max(I2.MAX_PATTERN_SIZE,U);let W=Math.ceil(l*Z);return W>=c?W=c:Z=W/l,{scale:Z,size:W}}clipBbox(l,U,Z,c,W){const s=c-U,Q=W-Z;l.ctx.rect(U,Z,s,Q),l.current.updateRectMinMax(jl(l.ctx),[U,Z,c,W]),l.clip(),l.endPath()}setFillAndStrokeStyleToContext(l,U,Z){const c=l.ctx,W=l.current;switch(U){case Om.COLORED:const s=this.ctx;c.fillStyle=s.fillStyle,c.strokeStyle=s.strokeStyle,W.fillColor=s.fillStyle,W.strokeColor=s.strokeStyle;break;case Om.UNCOLORED:const Q=nl.makeHexColor(Z[0],Z[1],Z[2]);c.fillStyle=Q,c.strokeStyle=Q,W.fillColor=Q,W.strokeColor=Q;break;default:throw new EM(`Unsupported paint type: ${U}`)}}getPattern(l,U,Z,c){let W=Z;c!==zU.SHADING&&(W=nl.transform(W,U.baseTransform),this.matrix&&(W=nl.transform(W,this.matrix)));const s=this.createPatternCanvas(U);let Q=new DOMMatrix(W);Q=Q.translate(s.offsetX,s.offsetY),Q=Q.scale(1/s.scaleX,1/s.scaleY);const R=l.createPattern(s.canvas,"repeat");return R.setTransform(Q),R}};el(gm,"MAX_PATTERN_SIZE",3e3);let RG=gm;function hG({src:a,srcPos:l=0,dest:U,width:Z,height:c,nonBlackColor:W=4294967295,inverseDecode:s=!1}){const Q=CU.isLittleEndian?4278190080:255,[R,m]=s?[W,Q]:[Q,W],e=Z>>3,T=Z&7,Y=a.length;U=new Uint32Array(U.buffer);let u=0;for(let B=0;B<c;B++){for(const L=l+e;l<L;l++){const D=l<Y?a[l]:255;U[u++]=D&128?m:R,U[u++]=D&64?m:R,U[u++]=D&32?m:R,U[u++]=D&16?m:R,U[u++]=D&8?m:R,U[u++]=D&4?m:R,U[u++]=D&2?m:R,U[u++]=D&1?m:R}if(T===0)continue;const z=l<Y?a[l++]:255;for(let L=0;L<T;L++)U[u++]=z&1<<7-L?m:R}return{srcPos:l,destPos:u}}const Km=16,Hm=100,bG=15,vm=10,Pm=1e3,rU=16;function mG(a,l){if(a._removeMirroring)throw new Error("Context is already forwarding operations.");a.__originalSave=a.save,a.__originalRestore=a.restore,a.__originalRotate=a.rotate,a.__originalScale=a.scale,a.__originalTranslate=a.translate,a.__originalTransform=a.transform,a.__originalSetTransform=a.setTransform,a.__originalResetTransform=a.resetTransform,a.__originalClip=a.clip,a.__originalMoveTo=a.moveTo,a.__originalLineTo=a.lineTo,a.__originalBezierCurveTo=a.bezierCurveTo,a.__originalRect=a.rect,a.__originalClosePath=a.closePath,a.__originalBeginPath=a.beginPath,a._removeMirroring=()=>{a.save=a.__originalSave,a.restore=a.__originalRestore,a.rotate=a.__originalRotate,a.scale=a.__originalScale,a.translate=a.__originalTranslate,a.transform=a.__originalTransform,a.setTransform=a.__originalSetTransform,a.resetTransform=a.__originalResetTransform,a.clip=a.__originalClip,a.moveTo=a.__originalMoveTo,a.lineTo=a.__originalLineTo,a.bezierCurveTo=a.__originalBezierCurveTo,a.rect=a.__originalRect,a.closePath=a.__originalClosePath,a.beginPath=a.__originalBeginPath,delete a._removeMirroring},a.save=function(){l.save(),this.__originalSave()},a.restore=function(){l.restore(),this.__originalRestore()},a.translate=function(U,Z){l.translate(U,Z),this.__originalTranslate(U,Z)},a.scale=function(U,Z){l.scale(U,Z),this.__originalScale(U,Z)},a.transform=function(U,Z,c,W,s,Q){l.transform(U,Z,c,W,s,Q),this.__originalTransform(U,Z,c,W,s,Q)},a.setTransform=function(U,Z,c,W,s,Q){l.setTransform(U,Z,c,W,s,Q),this.__originalSetTransform(U,Z,c,W,s,Q)},a.resetTransform=function(){l.resetTransform(),this.__originalResetTransform()},a.rotate=function(U){l.rotate(U),this.__originalRotate(U)},a.clip=function(U){l.clip(U),this.__originalClip(U)},a.moveTo=function(U,Z){l.moveTo(U,Z),this.__originalMoveTo(U,Z)},a.lineTo=function(U,Z){l.lineTo(U,Z),this.__originalLineTo(U,Z)},a.bezierCurveTo=function(U,Z,c,W,s,Q){l.bezierCurveTo(U,Z,c,W,s,Q),this.__originalBezierCurveTo(U,Z,c,W,s,Q)},a.rect=function(U,Z,c,W){l.rect(U,Z,c,W),this.__originalRect(U,Z,c,W)},a.closePath=function(){l.closePath(),this.__originalClosePath()},a.beginPath=function(){l.beginPath(),this.__originalBeginPath()}}class eG{constructor(l){this.canvasFactory=l,this.cache=Object.create(null)}getCanvas(l,U,Z){let c;return this.cache[l]!==void 0?(c=this.cache[l],this.canvasFactory.reset(c,U,Z)):(c=this.canvasFactory.create(U,Z),this.cache[l]=c),c}delete(l){delete this.cache[l]}clear(){for(const l in this.cache){const U=this.cache[l];this.canvasFactory.destroy(U),delete this.cache[l]}}}function ns(a,l,U,Z,c,W,s,Q,R,m){const[e,T,Y,u,B,z]=jl(a);if(T===0&&Y===0){const f=s*e+B,j=Math.round(f),q=Q*u+z,Zl=Math.round(q),Fl=(s+R)*e+B,al=Math.abs(Math.round(Fl)-j)||1,bl=(Q+m)*u+z,Sl=Math.abs(Math.round(bl)-Zl)||1;return a.setTransform(Math.sign(e),0,0,Math.sign(u),j,Zl),a.drawImage(l,U,Z,c,W,0,0,al,Sl),a.setTransform(e,T,Y,u,B,z),[al,Sl]}if(e===0&&u===0){const f=Q*Y+B,j=Math.round(f),q=s*T+z,Zl=Math.round(q),Fl=(Q+m)*Y+B,al=Math.abs(Math.round(Fl)-j)||1,bl=(s+R)*T+z,Sl=Math.abs(Math.round(bl)-Zl)||1;return a.setTransform(0,Math.sign(T),Math.sign(Y),0,j,Zl),a.drawImage(l,U,Z,c,W,0,0,Sl,al),a.setTransform(e,T,Y,u,B,z),[Sl,al]}a.drawImage(l,U,Z,c,W,s,Q,R,m);const L=Math.hypot(e,T),D=Math.hypot(Y,u);return[L*R,D*m]}function MG(a){const{width:l,height:U}=a;if(l>Pm||U>Pm)return null;const Z=1e3,c=new Uint8Array([0,2,4,0,1,0,5,4,8,10,0,8,0,2,1,0]),W=l+1;let s=new Uint8Array(W*(U+1)),Q,R,m;const e=l+7&-8;let T=new Uint8Array(e*U),Y=0;for(const L of a.data){let D=128;for(;D>0;)T[Y++]=L&D?0:255,D>>=1}let u=0;for(Y=0,T[Y]!==0&&(s[0]=1,++u),R=1;R<l;R++)T[Y]!==T[Y+1]&&(s[R]=T[Y]?2:1,++u),Y++;for(T[Y]!==0&&(s[R]=2,++u),Q=1;Q<U;Q++){Y=Q*e,m=Q*W,T[Y-e]!==T[Y]&&(s[m]=T[Y]?1:8,++u);let L=(T[Y]?4:0)+(T[Y-e]?8:0);for(R=1;R<l;R++)L=(L>>2)+(T[Y+1]?4:0)+(T[Y-e+1]?8:0),c[L]&&(s[m+R]=c[L],++u),Y++;if(T[Y-e]!==T[Y]&&(s[m+R]=T[Y]?2:4,++u),u>Z)return null}for(Y=e*(U-1),m=Q*W,T[Y]!==0&&(s[m]=8,++u),R=1;R<l;R++)T[Y]!==T[Y+1]&&(s[m+R]=T[Y]?4:8,++u),Y++;if(T[Y]!==0&&(s[m+R]=4,++u),u>Z)return null;const B=new Int32Array([0,W,-1,0,-W,0,0,0,1]),z=new Path2D;for(Q=0;u&&Q<=U;Q++){let L=Q*W;const D=L+l;for(;L<D&&!s[L];)L++;if(L===D)continue;z.moveTo(L%W,Q);const f=L;let j=s[L];do{const q=B[j];do L+=q;while(!s[L]);const Zl=s[L];Zl!==5&&Zl!==10?(j=Zl,s[L]=0):(j=Zl&51*j>>4,s[L]&=j>>2|j<<2),z.lineTo(L%W,L/W|0),s[L]||--u}while(f!==L);--Q}return T=null,s=null,function(L){L.save(),L.scale(1/l,-1/U),L.translate(0,-U),L.fill(z),L.beginPath(),L.restore()}}class fm{constructor(l,U){this.alphaIsShape=!1,this.fontSize=0,this.fontSizeScale=1,this.textMatrix=Xm,this.textMatrixScale=1,this.fontMatrix=UR,this.leading=0,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRenderingMode=SU.FILL,this.textRise=0,this.fillColor="#000000",this.strokeColor="#000000",this.patternFill=!1,this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.activeSMask=null,this.transferMaps="none",this.startNewPathAndClipBox([0,0,l,U])}clone(){const l=Object.create(this);return l.clipBox=this.clipBox.slice(),l}setCurrentPoint(l,U){this.x=l,this.y=U}updatePathMinMax(l,U,Z){[U,Z]=nl.applyTransform([U,Z],l),this.minX=Math.min(this.minX,U),this.minY=Math.min(this.minY,Z),this.maxX=Math.max(this.maxX,U),this.maxY=Math.max(this.maxY,Z)}updateRectMinMax(l,U){const Z=nl.applyTransform(U,l),c=nl.applyTransform(U.slice(2),l),W=nl.applyTransform([U[0],U[3]],l),s=nl.applyTransform([U[2],U[1]],l);this.minX=Math.min(this.minX,Z[0],c[0],W[0],s[0]),this.minY=Math.min(this.minY,Z[1],c[1],W[1],s[1]),this.maxX=Math.max(this.maxX,Z[0],c[0],W[0],s[0]),this.maxY=Math.max(this.maxY,Z[1],c[1],W[1],s[1])}updateScalingPathMinMax(l,U){nl.scaleMinMax(l,U),this.minX=Math.min(this.minX,U[0]),this.minY=Math.min(this.minY,U[1]),this.maxX=Math.max(this.maxX,U[2]),this.maxY=Math.max(this.maxY,U[3])}updateCurvePathMinMax(l,U,Z,c,W,s,Q,R,m,e){const T=nl.bezierBoundingBox(U,Z,c,W,s,Q,R,m,e);e||this.updateRectMinMax(l,T)}getPathBoundingBox(l=zU.FILL,U=null){const Z=[this.minX,this.minY,this.maxX,this.maxY];if(l===zU.STROKE){U||El("Stroke bounding box must include transform.");const c=nl.singularValueDecompose2dScale(U),W=c[0]*this.lineWidth/2,s=c[1]*this.lineWidth/2;Z[0]-=W,Z[1]-=s,Z[2]+=W,Z[3]+=s}return Z}updateClipFromPath(){const l=nl.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(l||[0,0,0,0])}isEmptyClip(){return this.minX===1/0}startNewPathAndClipBox(l){this.clipBox=l,this.minX=1/0,this.minY=1/0,this.maxX=0,this.maxY=0}getClippedPathBoundingBox(l=zU.FILL,U=null){return nl.intersect(this.clipBox,this.getPathBoundingBox(l,U))}}function Am(a,l){if(typeof ImageData<"u"&&l instanceof ImageData){a.putImageData(l,0,0);return}const U=l.height,Z=l.width,c=U%rU,W=(U-c)/rU,s=c===0?W:W+1,Q=a.createImageData(Z,rU);let R=0,m;const e=l.data,T=Q.data;let Y,u,B,z;if(l.kind===An.GRAYSCALE_1BPP){const L=e.byteLength,D=new Uint32Array(T.buffer,0,T.byteLength>>2),f=D.length,j=Z+7>>3,q=4294967295,Zl=CU.isLittleEndian?4278190080:255;for(Y=0;Y<s;Y++){for(B=Y<W?rU:c,m=0,u=0;u<B;u++){const Fl=L-R;let al=0;const bl=Fl>j?Z:Fl*8-7,Sl=bl&-8;let Yl=0,Xl=0;for(;al<Sl;al+=8)Xl=e[R++],D[m++]=Xl&128?q:Zl,D[m++]=Xl&64?q:Zl,D[m++]=Xl&32?q:Zl,D[m++]=Xl&16?q:Zl,D[m++]=Xl&8?q:Zl,D[m++]=Xl&4?q:Zl,D[m++]=Xl&2?q:Zl,D[m++]=Xl&1?q:Zl;for(;al<bl;al++)Yl===0&&(Xl=e[R++],Yl=128),D[m++]=Xl&Yl?q:Zl,Yl>>=1}for(;m<f;)D[m++]=0;a.putImageData(Q,0,Y*rU)}}else if(l.kind===An.RGBA_32BPP){for(u=0,z=Z*rU*4,Y=0;Y<W;Y++)T.set(e.subarray(R,R+z)),R+=z,a.putImageData(Q,0,u),u+=rU;Y<s&&(z=Z*c*4,T.set(e.subarray(R,R+z)),a.putImageData(Q,0,u))}else if(l.kind===An.RGB_24BPP)for(B=rU,z=Z*B,Y=0;Y<s;Y++){for(Y>=W&&(B=c,z=Z*B),m=0,u=z;u--;)T[m++]=e[R++],T[m++]=e[R++],T[m++]=e[R++],T[m++]=255;a.putImageData(Q,0,Y*rU)}else throw new Error(`bad image kind: ${l.kind}`)}function _m(a,l){if(l.bitmap){a.drawImage(l.bitmap,0,0);return}const U=l.height,Z=l.width,c=U%rU,W=(U-c)/rU,s=c===0?W:W+1,Q=a.createImageData(Z,rU);let R=0;const m=l.data,e=Q.data;for(let T=0;T<s;T++){const Y=T<W?rU:c;({srcPos:R}=hG({src:m,srcPos:R,dest:e,width:Z,height:Y,nonBlackColor:0})),a.putImageData(Q,0,T*rU)}}function JW(a,l){const U=["strokeStyle","fillStyle","fillRule","globalAlpha","lineWidth","lineCap","lineJoin","miterLimit","globalCompositeOperation","font","filter"];for(const Z of U)a[Z]!==void 0&&(l[Z]=a[Z]);a.setLineDash!==void 0&&(l.setLineDash(a.getLineDash()),l.lineDashOffset=a.lineDashOffset)}function ss(a){if(a.strokeStyle=a.fillStyle="#000000",a.fillRule="nonzero",a.globalAlpha=1,a.lineWidth=1,a.lineCap="butt",a.lineJoin="miter",a.miterLimit=10,a.globalCompositeOperation="source-over",a.font="10px sans-serif",a.setLineDash!==void 0&&(a.setLineDash([]),a.lineDashOffset=0),!TU){const{filter:l}=a;l!=="none"&&l!==""&&(a.filter="none")}}function qm(a,l){if(l)return!0;const U=nl.singularValueDecompose2dScale(a);U[0]=Math.fround(U[0]),U[1]=Math.fround(U[1]);const Z=Math.fround((globalThis.devicePixelRatio||1)*i0.PDF_TO_CSS_UNITS);return U[0]<=Z&&U[1]<=Z}const GG=["butt","round","square"],JG=["miter","round","bevel"],TG={},$m={},SG=class D2{constructor(l,U,Z,c,W,{optionalContentConfig:s,markedContentStack:Q=null},R,m){h(this,dV),h(this,ZV),this.ctx=l,this.current=new fm(this.ctx.canvas.width,this.ctx.canvas.height),this.stateStack=[],this.pendingClip=null,this.pendingEOFill=!1,this.res=null,this.xobjs=null,this.commonObjs=U,this.objs=Z,this.canvasFactory=c,this.filterFactory=W,this.groupStack=[],this.processingType3=null,this.baseTransform=null,this.baseTransformStack=[],this.groupLevel=0,this.smaskStack=[],this.smaskCounter=0,this.tempSMask=null,this.suspendedCtx=null,this.contentVisible=!0,this.markedContentStack=Q||[],this.optionalContentConfig=s,this.cachedCanvases=new eG(this.canvasFactory),this.cachedPatterns=new Map,this.annotationCanvasMap=R,this.viewportScale=1,this.outputScaleX=1,this.outputScaleY=1,this.pageColors=m,this._cachedScaleForStroking=[-1,0],this._cachedGetSinglePixelWidth=null,this._cachedBitmapsMap=new Map}getObject(l,U=null){return typeof l=="string"?l.startsWith("g_")?this.commonObjs.get(l):this.objs.get(l):U}beginDrawing({transform:l,viewport:U,transparency:Z=!1,background:c=null}){const W=this.ctx.canvas.width,s=this.ctx.canvas.height,Q=this.ctx.fillStyle;if(this.ctx.fillStyle=c||"#ffffff",this.ctx.fillRect(0,0,W,s),this.ctx.fillStyle=Q,Z){const R=this.cachedCanvases.getCanvas("transparent",W,s);this.compositeCtx=this.ctx,this.transparentCanvas=R.canvas,this.ctx=R.context,this.ctx.save(),this.ctx.transform(...jl(this.compositeCtx))}this.ctx.save(),ss(this.ctx),l&&(this.ctx.transform(...l),this.outputScaleX=l[0],this.outputScaleY=l[0]),this.ctx.transform(...U.transform),this.viewportScale=U.scale,this.baseTransform=jl(this.ctx)}executeOperatorList(l,U,Z,c){const W=l.argsArray,s=l.fnArray;let Q=U||0;const R=W.length;if(R===Q)return Q;const m=R-Q>vm&&typeof Z=="function",e=m?Date.now()+bG:0;let T=0;const Y=this.commonObjs,u=this.objs;let B;for(;;){if(c!==void 0&&Q===c.nextBreakPoint)return c.breakIt(Q,Z),Q;if(B=s[Q],B!==Wd.dependency)this[B].apply(this,W[Q]);else for(const z of W[Q]){const L=z.startsWith("g_")?Y:u;if(!L.has(z))return L.get(z,Z),Q}if(Q++,Q===R)return Q;if(m&&++T>vm){if(Date.now()>e)return Z(),Q;T=0}}}endDrawing(){G(this,dV,Ji).call(this),this.cachedCanvases.clear(),this.cachedPatterns.clear();for(const l of this._cachedBitmapsMap.values()){for(const U of l.values())typeof HTMLCanvasElement<"u"&&U instanceof HTMLCanvasElement&&(U.width=U.height=0);l.clear()}this._cachedBitmapsMap.clear(),G(this,ZV,Ti).call(this)}_scaleImage(l,U){const Z=l.width,c=l.height;let W=Math.max(Math.hypot(U[0],U[1]),1),s=Math.max(Math.hypot(U[2],U[3]),1),Q=Z,R=c,m="prescale1",e,T;for(;W>2&&Q>1||s>2&&R>1;){let Y=Q,u=R;W>2&&Q>1&&(Y=Q>=16384?Math.floor(Q/2)-1||1:Math.ceil(Q/2),W/=Q/Y),s>2&&R>1&&(u=R>=16384?Math.floor(R/2)-1||1:Math.ceil(R)/2,s/=R/u),e=this.cachedCanvases.getCanvas(m,Y,u),T=e.context,T.clearRect(0,0,Y,u),T.drawImage(l,0,0,Q,R,0,0,Y,u),l=e.canvas,Q=Y,R=u,m=m==="prescale1"?"prescale2":"prescale1"}return{img:l,paintWidth:Q,paintHeight:R}}_createMaskCanvas(l){const U=this.ctx,{width:Z,height:c}=l,W=this.current.fillColor,s=this.current.patternFill,Q=jl(U);let R,m,e,T;if((l.bitmap||l.data)&&l.count>1){const bl=l.bitmap||l.data.buffer;m=JSON.stringify(s?Q:[Q.slice(0,4),W]),R=this._cachedBitmapsMap.get(bl),R||(R=new Map,this._cachedBitmapsMap.set(bl,R));const Sl=R.get(m);if(Sl&&!s){const Yl=Math.round(Math.min(Q[0],Q[2])+Q[4]),Xl=Math.round(Math.min(Q[1],Q[3])+Q[5]);return{canvas:Sl,offsetX:Yl,offsetY:Xl}}e=Sl}e||(T=this.cachedCanvases.getCanvas("maskCanvas",Z,c),_m(T.context,l));let Y=nl.transform(Q,[1/Z,0,0,-1/c,0,0]);Y=nl.transform(Y,[1,0,0,1,0,-c]);const[u,B,z,L]=nl.getAxialAlignedBoundingBox([0,0,Z,c],Y),D=Math.round(z-u)||1,f=Math.round(L-B)||1,j=this.cachedCanvases.getCanvas("fillCanvas",D,f),q=j.context,Zl=u,Fl=B;q.translate(-Zl,-Fl),q.transform(...Y),e||(e=this._scaleImage(T.canvas,dZ(q)),e=e.img,R&&s&&R.set(m,e)),q.imageSmoothingEnabled=qm(jl(q),l.interpolate),ns(q,e,0,0,e.width,e.height,0,0,Z,c),q.globalCompositeOperation="source-in";const al=nl.transform(dZ(q),[1,0,0,1,-Zl,-Fl]);return q.fillStyle=s?W.getPattern(U,this,al,zU.FILL):W,q.fillRect(0,0,Z,c),R&&!s&&(this.cachedCanvases.delete("fillCanvas"),R.set(m,j.canvas)),{canvas:j.canvas,offsetX:Math.round(Zl),offsetY:Math.round(Fl)}}setLineWidth(l){l!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=l,this.ctx.lineWidth=l}setLineCap(l){this.ctx.lineCap=GG[l]}setLineJoin(l){this.ctx.lineJoin=JG[l]}setMiterLimit(l){this.ctx.miterLimit=l}setDash(l,U){const Z=this.ctx;Z.setLineDash!==void 0&&(Z.setLineDash(l),Z.lineDashOffset=U)}setRenderingIntent(l){}setFlatness(l){}setGState(l){for(const[U,Z]of l)switch(U){case"LW":this.setLineWidth(Z);break;case"LC":this.setLineCap(Z);break;case"LJ":this.setLineJoin(Z);break;case"ML":this.setMiterLimit(Z);break;case"D":this.setDash(Z[0],Z[1]);break;case"RI":this.setRenderingIntent(Z);break;case"FL":this.setFlatness(Z);break;case"Font":this.setFont(Z[0],Z[1]);break;case"CA":this.current.strokeAlpha=Z;break;case"ca":this.current.fillAlpha=Z,this.ctx.globalAlpha=Z;break;case"BM":this.ctx.globalCompositeOperation=Z;break;case"SMask":this.current.activeSMask=Z?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(Z);break}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const l=this.inSMaskMode;this.current.activeSMask&&!l?this.beginSMaskMode():!this.current.activeSMask&&l&&this.endSMaskMode()}beginSMaskMode(){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const l=this.ctx.canvas.width,U=this.ctx.canvas.height,Z="smaskGroupAt"+this.groupLevel,c=this.cachedCanvases.getCanvas(Z,l,U);this.suspendedCtx=this.ctx,this.ctx=c.context;const W=this.ctx;W.setTransform(...jl(this.suspendedCtx)),JW(this.suspendedCtx,W),mG(W,this.suspendedCtx),this.setGState([["BM","source-over"],["ca",1],["CA",1]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),JW(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}compose(l){if(!this.current.activeSMask)return;l?(l[0]=Math.floor(l[0]),l[1]=Math.floor(l[1]),l[2]=Math.ceil(l[2]),l[3]=Math.ceil(l[3])):l=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const U=this.current.activeSMask,Z=this.suspendedCtx;this.composeSMask(Z,U,this.ctx,l),this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore()}composeSMask(l,U,Z,c){const W=c[0],s=c[1],Q=c[2]-W,R=c[3]-s;Q===0||R===0||(this.genericComposeSMask(U.context,Z,Q,R,U.subtype,U.backdrop,U.transferMap,W,s,U.offsetX,U.offsetY),l.save(),l.globalAlpha=1,l.globalCompositeOperation="source-over",l.setTransform(1,0,0,1,0,0),l.drawImage(Z.canvas,0,0),l.restore())}genericComposeSMask(l,U,Z,c,W,s,Q,R,m,e,T){let Y=l.canvas,u=R-e,B=m-T;if(s){if(u<0||B<0||u+Z>Y.width||B+c>Y.height){const L=this.cachedCanvases.getCanvas("maskExtension",Z,c),D=L.context;D.drawImage(Y,-u,-B),s.some(f=>f!==0)&&(D.globalCompositeOperation="destination-atop",D.fillStyle=nl.makeHexColor(...s),D.fillRect(0,0,Z,c),D.globalCompositeOperation="source-over"),Y=L.canvas,u=B=0}else if(s.some(L=>L!==0)){l.save(),l.globalAlpha=1,l.setTransform(1,0,0,1,0,0);const L=new Path2D;L.rect(u,B,Z,c),l.clip(L),l.globalCompositeOperation="destination-atop",l.fillStyle=nl.makeHexColor(...s),l.fillRect(u,B,Z,c),l.restore()}}U.save(),U.globalAlpha=1,U.setTransform(1,0,0,1,0,0),W==="Alpha"&&Q?U.filter=this.filterFactory.addAlphaFilter(Q):W==="Luminosity"&&(U.filter=this.filterFactory.addLuminosityFilter(Q));const z=new Path2D;z.rect(R,m,Z,c),U.clip(z),U.globalCompositeOperation="destination-in",U.drawImage(Y,u,B,Z,c,R,m,Z,c),U.restore()}save(){this.inSMaskMode?(JW(this.ctx,this.suspendedCtx),this.suspendedCtx.save()):this.ctx.save();const l=this.current;this.stateStack.push(l),this.current=l.clone()}restore(){this.stateStack.length===0&&this.inSMaskMode&&this.endSMaskMode(),this.stateStack.length!==0&&(this.current=this.stateStack.pop(),this.inSMaskMode?(this.suspendedCtx.restore(),JW(this.suspendedCtx,this.ctx)):this.ctx.restore(),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null)}transform(l,U,Z,c,W,s){this.ctx.transform(l,U,Z,c,W,s),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(l,U,Z){const c=this.ctx,W=this.current;let s=W.x,Q=W.y,R,m;const e=jl(c),T=e[0]===0&&e[3]===0||e[1]===0&&e[2]===0,Y=T?Z.slice(0):null;for(let u=0,B=0,z=l.length;u<z;u++)switch(l[u]|0){case Wd.rectangle:s=U[B++],Q=U[B++];const L=U[B++],D=U[B++],f=s+L,j=Q+D;c.moveTo(s,Q),L===0||D===0?c.lineTo(f,j):(c.lineTo(f,Q),c.lineTo(f,j),c.lineTo(s,j)),T||W.updateRectMinMax(e,[s,Q,f,j]),c.closePath();break;case Wd.moveTo:s=U[B++],Q=U[B++],c.moveTo(s,Q),T||W.updatePathMinMax(e,s,Q);break;case Wd.lineTo:s=U[B++],Q=U[B++],c.lineTo(s,Q),T||W.updatePathMinMax(e,s,Q);break;case Wd.curveTo:R=s,m=Q,s=U[B+4],Q=U[B+5],c.bezierCurveTo(U[B],U[B+1],U[B+2],U[B+3],s,Q),W.updateCurvePathMinMax(e,R,m,U[B],U[B+1],U[B+2],U[B+3],s,Q,Y),B+=6;break;case Wd.curveTo2:R=s,m=Q,c.bezierCurveTo(s,Q,U[B],U[B+1],U[B+2],U[B+3]),W.updateCurvePathMinMax(e,R,m,s,Q,U[B],U[B+1],U[B+2],U[B+3],Y),s=U[B+2],Q=U[B+3],B+=4;break;case Wd.curveTo3:R=s,m=Q,s=U[B+2],Q=U[B+3],c.bezierCurveTo(U[B],U[B+1],s,Q,s,Q),W.updateCurvePathMinMax(e,R,m,U[B],U[B+1],s,Q,s,Q,Y),B+=4;break;case Wd.closePath:c.closePath();break}T&&W.updateScalingPathMinMax(e,Y),W.setCurrentPoint(s,Q)}closePath(){this.ctx.closePath()}stroke(l=!0){const U=this.ctx,Z=this.current.strokeColor;U.globalAlpha=this.current.strokeAlpha,this.contentVisible&&(typeof Z=="object"&&Z!=null&&Z.getPattern?(U.save(),U.strokeStyle=Z.getPattern(U,this,dZ(U),zU.STROKE),this.rescaleAndStroke(!1),U.restore()):this.rescaleAndStroke(!0)),l&&this.consumePath(this.current.getClippedPathBoundingBox()),U.globalAlpha=this.current.fillAlpha}closeStroke(){this.closePath(),this.stroke()}fill(l=!0){const U=this.ctx,Z=this.current.fillColor,c=this.current.patternFill;let W=!1;c&&(U.save(),U.fillStyle=Z.getPattern(U,this,dZ(U),zU.FILL),W=!0);const s=this.current.getClippedPathBoundingBox();this.contentVisible&&s!==null&&(this.pendingEOFill?(U.fill("evenodd"),this.pendingEOFill=!1):U.fill()),W&&U.restore(),l&&this.consumePath(s)}eoFill(){this.pendingEOFill=!0,this.fill()}fillStroke(){this.fill(!1),this.stroke(!1),this.consumePath()}eoFillStroke(){this.pendingEOFill=!0,this.fillStroke()}closeFillStroke(){this.closePath(),this.fillStroke()}closeEOFillStroke(){this.pendingEOFill=!0,this.closePath(),this.fillStroke()}endPath(){this.consumePath()}clip(){this.pendingClip=TG}eoClip(){this.pendingClip=$m}beginText(){this.current.textMatrix=Xm,this.current.textMatrixScale=1,this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}endText(){const l=this.pendingTextPaths,U=this.ctx;if(l===void 0){U.beginPath();return}U.save(),U.beginPath();for(const Z of l)U.setTransform(...Z.transform),U.translate(Z.x,Z.y),Z.addToPath(U,Z.fontSize);U.restore(),U.clip(),U.beginPath(),delete this.pendingTextPaths}setCharSpacing(l){this.current.charSpacing=l}setWordSpacing(l){this.current.wordSpacing=l}setHScale(l){this.current.textHScale=l/100}setLeading(l){this.current.leading=-l}setFont(l,U){var Z;const c=this.commonObjs.get(l),W=this.current;if(!c)throw new Error(`Can't find font for ${l}`);if(W.fontMatrix=c.fontMatrix||UR,(W.fontMatrix[0]===0||W.fontMatrix[3]===0)&&Tl("Invalid font matrix for font "+l),U<0?(U=-U,W.fontDirection=-1):W.fontDirection=1,this.current.font=c,this.current.fontSize=U,c.isType3Font)return;const s=c.loadedName||"sans-serif",Q=((Z=c.systemFontInfo)==null?void 0:Z.css)||`"${s}", ${c.fallbackName}`;let R="normal";c.black?R="900":c.bold&&(R="bold");const m=c.italic?"italic":"normal";let e=U;U<Km?e=Km:U>Hm&&(e=Hm),this.current.fontSizeScale=U/e,this.ctx.font=`${m} ${R} ${e}px ${Q}`}setTextRenderingMode(l){this.current.textRenderingMode=l}setTextRise(l){this.current.textRise=l}moveText(l,U){this.current.x=this.current.lineX+=l,this.current.y=this.current.lineY+=U}setLeadingMoveText(l,U){this.setLeading(-U),this.moveText(l,U)}setTextMatrix(l,U,Z,c,W,s){this.current.textMatrix=[l,U,Z,c,W,s],this.current.textMatrixScale=Math.hypot(l,U),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0}nextLine(){this.moveText(0,this.current.leading)}paintChar(l,U,Z,c){const W=this.ctx,s=this.current,Q=s.font,R=s.textRenderingMode,m=s.fontSize/s.fontSizeScale,e=R&SU.FILL_STROKE_MASK,T=!!(R&SU.ADD_TO_PATH_FLAG),Y=s.patternFill&&!Q.missingFile;let u;(Q.disableFontFace||T||Y)&&(u=Q.getPathGenerator(this.commonObjs,l)),Q.disableFontFace||Y?(W.save(),W.translate(U,Z),W.beginPath(),u(W,m),c&&W.setTransform(...c),(e===SU.FILL||e===SU.FILL_STROKE)&&W.fill(),(e===SU.STROKE||e===SU.FILL_STROKE)&&W.stroke(),W.restore()):((e===SU.FILL||e===SU.FILL_STROKE)&&W.fillText(l,U,Z),(e===SU.STROKE||e===SU.FILL_STROKE)&&W.strokeText(l,U,Z)),T&&(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:jl(W),x:U,y:Z,fontSize:m,addToPath:u})}get isFontSubpixelAAEnabled(){const{context:l}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);l.scale(1.5,1),l.fillText("I",0,10);const U=l.getImageData(0,0,10,10).data;let Z=!1;for(let c=3;c<U.length;c+=4)if(U[c]>0&&U[c]<255){Z=!0;break}return yl(this,"isFontSubpixelAAEnabled",Z)}showText(l){const U=this.current,Z=U.font;if(Z.isType3Font)return this.showType3Text(l);const c=U.fontSize;if(c===0)return;const W=this.ctx,s=U.fontSizeScale,Q=U.charSpacing,R=U.wordSpacing,m=U.fontDirection,e=U.textHScale*m,T=l.length,Y=Z.vertical,u=Y?1:-1,B=Z.defaultVMetrics,z=c*U.fontMatrix[0],L=U.textRenderingMode===SU.FILL&&!Z.disableFontFace&&!U.patternFill;W.save(),W.transform(...U.textMatrix),W.translate(U.x,U.y+U.textRise),m>0?W.scale(e,-1):W.scale(e,1);let D;if(U.patternFill){W.save();const Fl=U.fillColor.getPattern(W,this,dZ(W),zU.FILL);D=jl(W),W.restore(),W.fillStyle=Fl}let f=U.lineWidth;const j=U.textMatrixScale;if(j===0||f===0){const Fl=U.textRenderingMode&SU.FILL_STROKE_MASK;(Fl===SU.STROKE||Fl===SU.FILL_STROKE)&&(f=this.getSinglePixelWidth())}else f/=j;if(s!==1&&(W.scale(s,s),f/=s),W.lineWidth=f,Z.isInvalidPDFjsFont){const Fl=[];let al=0;for(const bl of l)Fl.push(bl.unicode),al+=bl.width;W.fillText(Fl.join(""),0,0),U.x+=al*z*e,W.restore(),this.compose();return}let q=0,Zl;for(Zl=0;Zl<T;++Zl){const Fl=l[Zl];if(typeof Fl=="number"){q+=u*Fl*c/1e3;continue}let al=!1;const bl=(Fl.isSpace?R:0)+Q,Sl=Fl.fontChar,Yl=Fl.accent;let Xl,vl,rl=Fl.width;if(Y){const Pl=Fl.vmetric||B,Nl=-(Fl.vmetric?Pl[1]:rl*.5)*z,Gl=Pl[2]*z;rl=Pl?-Pl[0]:rl,Xl=Nl/s,vl=(q+Gl)/s}else Xl=q/s,vl=0;if(Z.remeasure&&rl>0){const Pl=W.measureText(Sl).width*1e3/c*s;if(rl<Pl&&this.isFontSubpixelAAEnabled){const Nl=rl/Pl;al=!0,W.save(),W.scale(Nl,1),Xl/=Nl}else rl!==Pl&&(Xl+=(rl-Pl)/2e3*c/s)}if(this.contentVisible&&(Fl.isInFont||Z.missingFile)){if(L&&!Yl)W.fillText(Sl,Xl,vl);else if(this.paintChar(Sl,Xl,vl,D),Yl){const Pl=Xl+c*Yl.offset.x/s,Nl=vl-c*Yl.offset.y/s;this.paintChar(Yl.fontChar,Pl,Nl,D)}}const LU=Y?rl*z-bl*m:rl*z+bl*m;q+=LU,al&&W.restore()}Y?U.y-=q:U.x+=q*e,W.restore(),this.compose()}showType3Text(l){const U=this.ctx,Z=this.current,c=Z.font,W=Z.fontSize,s=Z.fontDirection,Q=c.vertical?1:-1,R=Z.charSpacing,m=Z.wordSpacing,e=Z.textHScale*s,T=Z.fontMatrix||UR,Y=l.length,u=Z.textRenderingMode===SU.INVISIBLE;let B,z,L,D;if(!(u||W===0)){for(this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,U.save(),U.transform(...Z.textMatrix),U.translate(Z.x,Z.y),U.scale(e,s),B=0;B<Y;++B){if(z=l[B],typeof z=="number"){D=Q*z*W/1e3,this.ctx.translate(D,0),Z.x+=D*e;continue}const f=(z.isSpace?m:0)+R,j=c.charProcOperatorList[z.operatorListId];if(!j){Tl(`Type3 character "${z.operatorListId}" is not available.`);continue}this.contentVisible&&(this.processingType3=z,this.save(),U.scale(W,W),U.transform(...T),this.executeOperatorList(j),this.restore()),L=nl.applyTransform([z.width,0],T)[0]*W+f,U.translate(L,0),Z.x+=L*e}U.restore(),this.processingType3=null}}setCharWidth(l,U){}setCharWidthAndBounds(l,U,Z,c,W,s){this.ctx.rect(Z,c,W-Z,s-c),this.ctx.clip(),this.endPath()}getColorN_Pattern(l){let U;if(l[0]==="TilingPattern"){const Z=l[1],c=this.baseTransform||jl(this.ctx),W={createCanvasGraphics:s=>new D2(s,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack})};U=new RG(l,Z,this.ctx,W,c)}else U=this._getPattern(l[1],l[2]);return U}setStrokeColorN(){this.current.strokeColor=this.getColorN_Pattern(arguments)}setFillColorN(){this.current.fillColor=this.getColorN_Pattern(arguments),this.current.patternFill=!0}setStrokeRGBColor(l,U,Z){const c=nl.makeHexColor(l,U,Z);this.ctx.strokeStyle=c,this.current.strokeColor=c}setFillRGBColor(l,U,Z){const c=nl.makeHexColor(l,U,Z);this.ctx.fillStyle=c,this.current.fillColor=c,this.current.patternFill=!1}_getPattern(l,U=null){let Z;return this.cachedPatterns.has(l)?Z=this.cachedPatterns.get(l):(Z=NG(this.getObject(l)),this.cachedPatterns.set(l,Z)),U&&(Z.matrix=U),Z}shadingFill(l){if(!this.contentVisible)return;const U=this.ctx;this.save();const Z=this._getPattern(l);U.fillStyle=Z.getPattern(U,this,dZ(U),zU.SHADING);const c=dZ(U);if(c){const{width:W,height:s}=U.canvas,[Q,R,m,e]=nl.getAxialAlignedBoundingBox([0,0,W,s],c);this.ctx.fillRect(Q,R,m-Q,e-R)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);this.compose(this.current.getClippedPathBoundingBox()),this.restore()}beginInlineImage(){El("Should not call beginInlineImage")}beginImageData(){El("Should not call beginImageData")}paintFormXObjectBegin(l,U){if(this.contentVisible&&(this.save(),this.baseTransformStack.push(this.baseTransform),l&&this.transform(...l),this.baseTransform=jl(this.ctx),U)){const Z=U[2]-U[0],c=U[3]-U[1];this.ctx.rect(U[0],U[1],Z,c),this.current.updateRectMinMax(jl(this.ctx),U),this.clip(),this.endPath()}}paintFormXObjectEnd(){this.contentVisible&&(this.restore(),this.baseTransform=this.baseTransformStack.pop())}beginGroup(l){if(!this.contentVisible)return;this.save(),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);const U=this.ctx;l.isolated||$n("TODO: Support non-isolated groups."),l.knockout&&Tl("Knockout groups not supported.");const Z=jl(U);if(l.matrix&&U.transform(...l.matrix),!l.bbox)throw new Error("Bounding box is required.");let c=nl.getAxialAlignedBoundingBox(l.bbox,jl(U));const W=[0,0,U.canvas.width,U.canvas.height];c=nl.intersect(c,W)||[0,0,0,0];const s=Math.floor(c[0]),Q=Math.floor(c[1]),R=Math.max(Math.ceil(c[2])-s,1),m=Math.max(Math.ceil(c[3])-Q,1);this.current.startNewPathAndClipBox([0,0,R,m]);let e="groupAt"+this.groupLevel;l.smask&&(e+="_smask_"+this.smaskCounter++%2);const T=this.cachedCanvases.getCanvas(e,R,m),Y=T.context;Y.translate(-s,-Q),Y.transform(...Z),l.smask?this.smaskStack.push({canvas:T.canvas,context:Y,offsetX:s,offsetY:Q,subtype:l.smask.subtype,backdrop:l.smask.backdrop,transferMap:l.smask.transferMap||null,startTransformInverse:null}):(U.setTransform(1,0,0,1,0,0),U.translate(s,Q),U.save()),JW(U,Y),this.ctx=Y,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(U),this.groupLevel++}endGroup(l){if(!this.contentVisible)return;this.groupLevel--;const U=this.ctx,Z=this.groupStack.pop();if(this.ctx=Z,this.ctx.imageSmoothingEnabled=!1,l.smask)this.tempSMask=this.smaskStack.pop(),this.restore();else{this.ctx.restore();const c=jl(this.ctx);this.restore(),this.ctx.save(),this.ctx.setTransform(...c);const W=nl.getAxialAlignedBoundingBox([0,0,U.canvas.width,U.canvas.height],c);this.ctx.drawImage(U.canvas,0,0),this.ctx.restore(),this.compose(W)}}beginAnnotation(l,U,Z,c,W){if(G(this,dV,Ji).call(this),ss(this.ctx),this.ctx.save(),this.save(),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),U){const s=U[2]-U[0],Q=U[3]-U[1];if(W&&this.annotationCanvasMap){Z=Z.slice(),Z[4]-=U[0],Z[5]-=U[1],U=U.slice(),U[0]=U[1]=0,U[2]=s,U[3]=Q;const[R,m]=nl.singularValueDecompose2dScale(jl(this.ctx)),{viewportScale:e}=this,T=Math.ceil(s*this.outputScaleX*e),Y=Math.ceil(Q*this.outputScaleY*e);this.annotationCanvas=this.canvasFactory.create(T,Y);const{canvas:u,context:B}=this.annotationCanvas;this.annotationCanvasMap.set(l,u),this.annotationCanvas.savedCtx=this.ctx,this.ctx=B,this.ctx.save(),this.ctx.setTransform(R,0,0,-m,0,Q*m),ss(this.ctx)}else ss(this.ctx),this.ctx.rect(U[0],U[1],s,Q),this.ctx.clip(),this.endPath()}this.current=new fm(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(...Z),this.transform(...c)}endAnnotation(){this.annotationCanvas&&(this.ctx.restore(),G(this,ZV,Ti).call(this),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}paintImageMaskXObject(l){if(!this.contentVisible)return;const U=l.count;l=this.getObject(l.data,l),l.count=U;const Z=this.ctx,c=this.processingType3;if(c&&(c.compiled===void 0&&(c.compiled=MG(l)),c.compiled)){c.compiled(Z);return}const W=this._createMaskCanvas(l),s=W.canvas;Z.save(),Z.setTransform(1,0,0,1,0,0),Z.drawImage(s,W.offsetX,W.offsetY),Z.restore(),this.compose()}paintImageMaskXObjectRepeat(l,U,Z=0,c=0,W,s){if(!this.contentVisible)return;l=this.getObject(l.data,l);const Q=this.ctx;Q.save();const R=jl(Q);Q.transform(U,Z,c,W,0,0);const m=this._createMaskCanvas(l);Q.setTransform(1,0,0,1,m.offsetX-R[4],m.offsetY-R[5]);for(let e=0,T=s.length;e<T;e+=2){const Y=nl.transform(R,[U,Z,c,W,s[e],s[e+1]]),[u,B]=nl.applyTransform([0,0],Y);Q.drawImage(m.canvas,u,B)}Q.restore(),this.compose()}paintImageMaskXObjectGroup(l){if(!this.contentVisible)return;const U=this.ctx,Z=this.current.fillColor,c=this.current.patternFill;for(const W of l){const{data:s,width:Q,height:R,transform:m}=W,e=this.cachedCanvases.getCanvas("maskCanvas",Q,R),T=e.context;T.save();const Y=this.getObject(s,W);_m(T,Y),T.globalCompositeOperation="source-in",T.fillStyle=c?Z.getPattern(T,this,dZ(U),zU.FILL):Z,T.fillRect(0,0,Q,R),T.restore(),U.save(),U.transform(...m),U.scale(1,-1),ns(U,e.canvas,0,0,Q,R,0,-1,1,1),U.restore()}this.compose()}paintImageXObject(l){if(!this.contentVisible)return;const U=this.getObject(l);if(!U){Tl("Dependent image isn't ready yet");return}this.paintInlineImageXObject(U)}paintImageXObjectRepeat(l,U,Z,c){if(!this.contentVisible)return;const W=this.getObject(l);if(!W){Tl("Dependent image isn't ready yet");return}const s=W.width,Q=W.height,R=[];for(let m=0,e=c.length;m<e;m+=2)R.push({transform:[U,0,0,Z,c[m],c[m+1]],x:0,y:0,w:s,h:Q});this.paintInlineImageXObjectGroup(W,R)}applyTransferMapsToCanvas(l){return this.current.transferMaps!=="none"&&(l.filter=this.current.transferMaps,l.drawImage(l.canvas,0,0),l.filter="none"),l.canvas}applyTransferMapsToBitmap(l){if(this.current.transferMaps==="none")return l.bitmap;const{bitmap:U,width:Z,height:c}=l,W=this.cachedCanvases.getCanvas("inlineImage",Z,c),s=W.context;return s.filter=this.current.transferMaps,s.drawImage(U,0,0),s.filter="none",W.canvas}paintInlineImageXObject(l){if(!this.contentVisible)return;const U=l.width,Z=l.height,c=this.ctx;if(this.save(),!TU){const{filter:Q}=c;Q!=="none"&&Q!==""&&(c.filter="none")}c.scale(1/U,-1/Z);let W;if(l.bitmap)W=this.applyTransferMapsToBitmap(l);else if(typeof HTMLElement=="function"&&l instanceof HTMLElement||!l.data)W=l;else{const Q=this.cachedCanvases.getCanvas("inlineImage",U,Z).context;Am(Q,l),W=this.applyTransferMapsToCanvas(Q)}const s=this._scaleImage(W,dZ(c));c.imageSmoothingEnabled=qm(jl(c),l.interpolate),ns(c,s.img,0,0,s.paintWidth,s.paintHeight,0,-Z,U,Z),this.compose(),this.restore()}paintInlineImageXObjectGroup(l,U){if(!this.contentVisible)return;const Z=this.ctx;let c;if(l.bitmap)c=l.bitmap;else{const W=l.width,s=l.height,Q=this.cachedCanvases.getCanvas("inlineImage",W,s).context;Am(Q,l),c=this.applyTransferMapsToCanvas(Q)}for(const W of U)Z.save(),Z.transform(...W.transform),Z.scale(1,-1),ns(Z,c,W.x,W.y,W.w,W.h,0,-1,1,1),Z.restore();this.compose()}paintSolidColorImageMask(){this.contentVisible&&(this.ctx.fillRect(0,0,1,1),this.compose())}markPoint(l){}markPointProps(l,U){}beginMarkedContent(l){this.markedContentStack.push({visible:!0})}beginMarkedContentProps(l,U){l==="OC"?this.markedContentStack.push({visible:this.optionalContentConfig.isVisible(U)}):this.markedContentStack.push({visible:!0}),this.contentVisible=this.isContentVisible()}endMarkedContent(){this.markedContentStack.pop(),this.contentVisible=this.isContentVisible()}beginCompat(){}endCompat(){}consumePath(l){const U=this.current.isEmptyClip();this.pendingClip&&this.current.updateClipFromPath(),this.pendingClip||this.compose(l);const Z=this.ctx;this.pendingClip&&(U||(this.pendingClip===$m?Z.clip("evenodd"):Z.clip()),this.pendingClip=null),this.current.startNewPathAndClipBox(this.current.clipBox),Z.beginPath()}getSinglePixelWidth(){if(!this._cachedGetSinglePixelWidth){const l=jl(this.ctx);if(l[1]===0&&l[2]===0)this._cachedGetSinglePixelWidth=1/Math.min(Math.abs(l[0]),Math.abs(l[3]));else{const U=Math.abs(l[0]*l[3]-l[2]*l[1]),Z=Math.hypot(l[0],l[2]),c=Math.hypot(l[1],l[3]);this._cachedGetSinglePixelWidth=Math.max(Z,c)/U}}return this._cachedGetSinglePixelWidth}getScaleForStroking(){if(this._cachedScaleForStroking[0]===-1){const{lineWidth:l}=this.current,{a:U,b:Z,c,d:W}=this.ctx.getTransform();let s,Q;if(Z===0&&c===0){const R=Math.abs(U),m=Math.abs(W);if(R===m)if(l===0)s=Q=1/R;else{const e=R*l;s=Q=e<1?1/e:1}else if(l===0)s=1/R,Q=1/m;else{const e=R*l,T=m*l;s=e<1?1/e:1,Q=T<1?1/T:1}}else{const R=Math.abs(U*W-Z*c),m=Math.hypot(U,Z),e=Math.hypot(c,W);if(l===0)s=e/R,Q=m/R;else{const T=l*R;s=e>T?e/T:1,Q=m>T?m/T:1}}this._cachedScaleForStroking[0]=s,this._cachedScaleForStroking[1]=Q}return this._cachedScaleForStroking}rescaleAndStroke(l){const{ctx:U}=this,{lineWidth:Z}=this.current,[c,W]=this.getScaleForStroking();if(U.lineWidth=Z||1,c===1&&W===1){U.stroke();return}const s=U.getLineDash();if(l&&U.save(),U.scale(c,W),s.length>0){const Q=Math.max(c,W);U.setLineDash(s.map(R=>R/Q)),U.lineDashOffset/=Q}U.stroke(),l&&U.restore()}isContentVisible(){for(let l=this.markedContentStack.length-1;l>=0;l--)if(!this.markedContentStack[l].visible)return!1;return!0}};dV=new WeakSet,Ji=function(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)},ZV=new WeakSet,Ti=function(){if(this.pageColors){const a=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(a!=="none"){const l=this.ctx.filter;this.ctx.filter=a,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=l}}};let Qs=SG;for(const a in Wd)Qs.prototype[a]!==void 0&&(Qs.prototype[Wd[a]]=Qs.prototype[a]);class vZ{static get workerPort(){return F(this,tV)}static set workerPort(l){if(!(typeof Worker<"u"&&l instanceof Worker)&&l!==null)throw new Error("Invalid `workerPort` type.");S(this,tV,l)}static get workerSrc(){return F(this,FV)}static set workerSrc(l){if(typeof l!="string")throw new Error("Invalid `workerSrc` type.");S(this,FV,l)}}tV=new WeakMap,FV=new WeakMap,h(vZ,tV,null),h(vZ,FV,"");const is={UNKNOWN:0,DATA:1,ERROR:2},_l={UNKNOWN:0,CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function HU(a){switch(a instanceof Error||typeof a=="object"&&a!==null||El('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),a.name){case"AbortException":return new jt(a.message);case"MissingPDFException":return new rt(a.message);case"PasswordException":return new tR(a.message,a.code);case"UnexpectedResponseException":return new ls(a.message,a.status);case"UnknownErrorException":return new FR(a.message,a.details);default:return new FR(a.message,a.toString())}}class TW{constructor(l,U,Z){h(this,Si),h(this,Xi),h(this,Vc),this.sourceName=l,this.targetName=U,this.comObj=Z,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),this._onComObjOnMessage=c=>{const W=c.data;if(W.targetName!==this.sourceName)return;if(W.stream){G(this,Xi,ob).call(this,W);return}if(W.callback){const Q=W.callbackId,R=this.callbackCapabilities[Q];if(!R)throw new Error(`Cannot resolve callback ${Q}`);if(delete this.callbackCapabilities[Q],W.callback===is.DATA)R.resolve(W.data);else if(W.callback===is.ERROR)R.reject(HU(W.reason));else throw new Error("Unexpected callback case");return}const s=this.actionHandler[W.action];if(!s)throw new Error(`Unknown action from worker: ${W.action}`);if(W.callbackId){const Q=this.sourceName,R=W.sourceName;new Promise(function(m){m(s(W.data))}).then(function(m){Z.postMessage({sourceName:Q,targetName:R,callback:is.DATA,callbackId:W.callbackId,data:m})},function(m){Z.postMessage({sourceName:Q,targetName:R,callback:is.ERROR,callbackId:W.callbackId,reason:HU(m)})});return}if(W.streamId){G(this,Si,Bb).call(this,W);return}s(W.data)},Z.addEventListener("message",this._onComObjOnMessage)}on(l,U){const Z=this.actionHandler;if(Z[l])throw new Error(`There is already an actionName called "${l}"`);Z[l]=U}send(l,U,Z){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:l,data:U},Z)}sendWithPromise(l,U,Z){const c=this.callbackId++,W=Promise.withResolvers();this.callbackCapabilities[c]=W;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:l,callbackId:c,data:U},Z)}catch(s){W.reject(s)}return W.promise}sendWithStream(l,U,Z,c){const W=this.streamId++,s=this.sourceName,Q=this.targetName,R=this.comObj;return new ReadableStream({start:m=>{const e=Promise.withResolvers();return this.streamControllers[W]={controller:m,startCall:e,pullCall:null,cancelCall:null,isClosed:!1},R.postMessage({sourceName:s,targetName:Q,action:l,streamId:W,data:U,desiredSize:m.desiredSize},c),e.promise},pull:m=>{const e=Promise.withResolvers();return this.streamControllers[W].pullCall=e,R.postMessage({sourceName:s,targetName:Q,stream:_l.PULL,streamId:W,desiredSize:m.desiredSize}),e.promise},cancel:m=>{ZU(m instanceof Error,"cancel must have a valid reason");const e=Promise.withResolvers();return this.streamControllers[W].cancelCall=e,this.streamControllers[W].isClosed=!0,R.postMessage({sourceName:s,targetName:Q,stream:_l.CANCEL,streamId:W,reason:HU(m)}),e.promise}},Z)}destroy(){this.comObj.removeEventListener("message",this._onComObjOnMessage)}}Si=new WeakSet,Bb=function(a){const l=a.streamId,U=this.sourceName,Z=a.sourceName,c=this.comObj,W=this,s=this.actionHandler[a.action],Q={enqueue(R,m=1,e){if(this.isCancelled)return;const T=this.desiredSize;this.desiredSize-=m,T>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),c.postMessage({sourceName:U,targetName:Z,stream:_l.ENQUEUE,streamId:l,chunk:R},e)},close(){this.isCancelled||(this.isCancelled=!0,c.postMessage({sourceName:U,targetName:Z,stream:_l.CLOSE,streamId:l}),delete W.streamSinks[l])},error(R){ZU(R instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,c.postMessage({sourceName:U,targetName:Z,stream:_l.ERROR,streamId:l,reason:HU(R)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:a.desiredSize,ready:null};Q.sinkCapability.resolve(),Q.ready=Q.sinkCapability.promise,this.streamSinks[l]=Q,new Promise(function(R){R(s(a.data,Q))}).then(function(){c.postMessage({sourceName:U,targetName:Z,stream:_l.START_COMPLETE,streamId:l,success:!0})},function(R){c.postMessage({sourceName:U,targetName:Z,stream:_l.START_COMPLETE,streamId:l,reason:HU(R)})})},Xi=new WeakSet,ob=function(a){const l=a.streamId,U=this.sourceName,Z=a.sourceName,c=this.comObj,W=this.streamControllers[l],s=this.streamSinks[l];switch(a.stream){case _l.START_COMPLETE:a.success?W.startCall.resolve():W.startCall.reject(HU(a.reason));break;case _l.PULL_COMPLETE:a.success?W.pullCall.resolve():W.pullCall.reject(HU(a.reason));break;case _l.PULL:if(!s){c.postMessage({sourceName:U,targetName:Z,stream:_l.PULL_COMPLETE,streamId:l,success:!0});break}s.desiredSize<=0&&a.desiredSize>0&&s.sinkCapability.resolve(),s.desiredSize=a.desiredSize,new Promise(function(Q){var R;Q((R=s.onPull)==null?void 0:R.call(s))}).then(function(){c.postMessage({sourceName:U,targetName:Z,stream:_l.PULL_COMPLETE,streamId:l,success:!0})},function(Q){c.postMessage({sourceName:U,targetName:Z,stream:_l.PULL_COMPLETE,streamId:l,reason:HU(Q)})});break;case _l.ENQUEUE:if(ZU(W,"enqueue should have stream controller"),W.isClosed)break;W.controller.enqueue(a.chunk);break;case _l.CLOSE:if(ZU(W,"close should have stream controller"),W.isClosed)break;W.isClosed=!0,W.controller.close(),G(this,Vc,cV).call(this,W,l);break;case _l.ERROR:ZU(W,"error should have stream controller"),W.controller.error(HU(a.reason)),G(this,Vc,cV).call(this,W,l);break;case _l.CANCEL_COMPLETE:a.success?W.cancelCall.resolve():W.cancelCall.reject(HU(a.reason)),G(this,Vc,cV).call(this,W,l);break;case _l.CANCEL:if(!s)break;new Promise(function(Q){var R;Q((R=s.onCancel)==null?void 0:R.call(s,HU(a.reason)))}).then(function(){c.postMessage({sourceName:U,targetName:Z,stream:_l.CANCEL_COMPLETE,streamId:l,success:!0})},function(Q){c.postMessage({sourceName:U,targetName:Z,stream:_l.CANCEL_COMPLETE,streamId:l,reason:HU(Q)})}),s.sinkCapability.reject(HU(a.reason)),s.isCancelled=!0,delete this.streamSinks[l];break;default:throw new Error("Unexpected stream case")}},Vc=new WeakSet,cV=function(a,l){return Ul(this,null,function*(){var U,Z,c;yield Promise.allSettled([(U=a.startCall)==null?void 0:U.promise,(Z=a.pullCall)==null?void 0:Z.promise,(c=a.cancelCall)==null?void 0:c.promise]),delete this.streamControllers[l]})};class XG{constructor({parsedData:l,rawData:U}){h(this,YF,void 0),h(this,WV,void 0),S(this,YF,l),S(this,WV,U)}getRaw(){return F(this,WV)}get(l){var U;return(U=F(this,YF).get(l))!=null?U:null}getAll(){return cR(F(this,YF))}has(l){return F(this,YF).has(l)}}YF=new WeakMap,WV=new WeakMap;const PZ=Symbol("INTERNAL");class YG{constructor(l,{name:U,intent:Z,usage:c}){h(this,aV,!1),h(this,VV,!1),h(this,nV,!1),h(this,nc,!0),S(this,aV,!!(l&Zd.DISPLAY)),S(this,VV,!!(l&Zd.PRINT)),this.name=U,this.intent=Z,this.usage=c}get visible(){if(F(this,nV))return F(this,nc);if(!F(this,nc))return!1;const{print:l,view:U}=this.usage;return F(this,aV)?(U==null?void 0:U.viewState)!=="OFF":F(this,VV)?(l==null?void 0:l.printState)!=="OFF":!0}_setVisible(l,U,Z=!1){l!==PZ&&El("Internal method `_setVisible` called."),S(this,nV,Z),S(this,nc,U)}}aV=new WeakMap,VV=new WeakMap,nV=new WeakMap,nc=new WeakMap;class pG{constructor(l,U=Zd.DISPLAY){if(h(this,sV),h(this,ht,null),h(this,wl,new Map),h(this,sc,null),h(this,Qc,null),this.renderingIntent=U,this.name=null,this.creator=null,l!==null){this.name=l.name,this.creator=l.creator,S(this,Qc,l.order);for(const Z of l.groups)F(this,wl).set(Z.id,new YG(U,Z));if(l.baseState==="OFF")for(const Z of F(this,wl).values())Z._setVisible(PZ,!1);for(const Z of l.on)F(this,wl).get(Z)._setVisible(PZ,!0);for(const Z of l.off)F(this,wl).get(Z)._setVisible(PZ,!1);S(this,sc,this.getHash())}}isVisible(l){if(F(this,wl).size===0)return!0;if(!l)return $n("Optional content group not defined."),!0;if(l.type==="OCG")return F(this,wl).has(l.id)?F(this,wl).get(l.id).visible:(Tl(`Optional content group not found: ${l.id}`),!0);if(l.type==="OCMD"){if(l.expression)return G(this,sV,Yi).call(this,l.expression);if(!l.policy||l.policy==="AnyOn"){for(const U of l.ids){if(!F(this,wl).has(U))return Tl(`Optional content group not found: ${U}`),!0;if(F(this,wl).get(U).visible)return!0}return!1}else if(l.policy==="AllOn"){for(const U of l.ids){if(!F(this,wl).has(U))return Tl(`Optional content group not found: ${U}`),!0;if(!F(this,wl).get(U).visible)return!1}return!0}else if(l.policy==="AnyOff"){for(const U of l.ids){if(!F(this,wl).has(U))return Tl(`Optional content group not found: ${U}`),!0;if(!F(this,wl).get(U).visible)return!0}return!1}else if(l.policy==="AllOff"){for(const U of l.ids){if(!F(this,wl).has(U))return Tl(`Optional content group not found: ${U}`),!0;if(F(this,wl).get(U).visible)return!1}return!0}return Tl(`Unknown optional content policy ${l.policy}.`),!0}return Tl(`Unknown group type ${l.type}.`),!0}setVisibility(l,U=!0){const Z=F(this,wl).get(l);if(!Z){Tl(`Optional content group not found: ${l}`);return}Z._setVisible(PZ,!!U,!0),S(this,ht,null)}setOCGState({state:l,preserveRB:U}){let Z;for(const c of l){switch(c){case"ON":case"OFF":case"Toggle":Z=c;continue}const W=F(this,wl).get(c);if(W)switch(Z){case"ON":W._setVisible(PZ,!0);break;case"OFF":W._setVisible(PZ,!1);break;case"Toggle":W._setVisible(PZ,!W.visible);break}}S(this,ht,null)}get hasInitialVisibility(){return F(this,sc)===null||this.getHash()===F(this,sc)}getOrder(){return F(this,wl).size?F(this,Qc)?F(this,Qc).slice():[...F(this,wl).keys()]:null}getGroups(){return F(this,wl).size>0?cR(F(this,wl)):null}getGroup(l){return F(this,wl).get(l)||null}getHash(){if(F(this,ht)!==null)return F(this,ht);const l=new xm;for(const[U,Z]of F(this,wl))l.update(`${U}:${Z.visible}`);return S(this,ht,l.hexdigest())}}ht=new WeakMap,wl=new WeakMap,sc=new WeakMap,Qc=new WeakMap,sV=new WeakSet,Yi=function(a){const l=a.length;if(l<2)return!0;const U=a[0];for(let Z=1;Z<l;Z++){const c=a[Z];let W;if(Array.isArray(c))W=G(this,sV,Yi).call(this,c);else if(F(this,wl).has(c))W=F(this,wl).get(c).visible;else return Tl(`Optional content group not found: ${c}`),!0;switch(U){case"And":if(!W)return!1;break;case"Or":if(W)return!0;break;case"Not":return!W;default:return!0}}return U==="And"};class uG{constructor(l,{disableRange:U=!1,disableStream:Z=!1}){ZU(l,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');const{length:c,initialData:W,progressiveDone:s,contentDispositionFilename:Q}=l;if(this._queuedChunks=[],this._progressiveDone=s,this._contentDispositionFilename=Q,(W==null?void 0:W.length)>0){const R=W instanceof Uint8Array&&W.byteLength===W.buffer.byteLength?W.buffer:new Uint8Array(W).buffer;this._queuedChunks.push(R)}this._pdfDataRangeTransport=l,this._isStreamingSupported=!Z,this._isRangeSupported=!U,this._contentLength=c,this._fullRequestReader=null,this._rangeReaders=[],l.addRangeListener((R,m)=>{this._onReceiveData({begin:R,chunk:m})}),l.addProgressListener((R,m)=>{this._onProgress({loaded:R,total:m})}),l.addProgressiveReadListener(R=>{this._onReceiveData({chunk:R})}),l.addProgressiveDoneListener(()=>{this._onProgressiveDone()}),l.transportReady()}_onReceiveData({begin:l,chunk:U}){const Z=U instanceof Uint8Array&&U.byteLength===U.buffer.byteLength?U.buffer:new Uint8Array(U).buffer;if(l===void 0)this._fullRequestReader?this._fullRequestReader._enqueue(Z):this._queuedChunks.push(Z);else{const c=this._rangeReaders.some(function(W){return W._begin!==l?!1:(W._enqueue(Z),!0)});ZU(c,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){var U;var l;return(U=(l=this._fullRequestReader)==null?void 0:l._loaded)!=null?U:0}_onProgress(l){var U,Z,c,W;l.total===void 0?(Z=(U=this._rangeReaders[0])==null?void 0:U.onProgress)==null||Z.call(U,{loaded:l.loaded}):(W=(c=this._fullRequestReader)==null?void 0:c.onProgress)==null||W.call(c,{loaded:l.loaded,total:l.total})}_onProgressiveDone(){var l;(l=this._fullRequestReader)==null||l.progressiveDone(),this._progressiveDone=!0}_removeRangeReader(l){const U=this._rangeReaders.indexOf(l);U>=0&&this._rangeReaders.splice(U,1)}getFullReader(){ZU(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const l=this._queuedChunks;return this._queuedChunks=null,new BG(this,l,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(l,U){if(U<=this._progressiveDataLength)return null;const Z=new oG(this,l,U);return this._pdfDataRangeTransport.requestDataRange(l,U),this._rangeReaders.push(Z),Z}cancelAllRequests(l){var U;(U=this._fullRequestReader)==null||U.cancel(l);for(const Z of this._rangeReaders.slice(0))Z.cancel(l);this._pdfDataRangeTransport.abort()}}class BG{constructor(l,U,Z=!1,c=null){this._stream=l,this._done=Z||!1,this._filename=iR(c)?c:null,this._queuedChunks=U||[],this._loaded=0;for(const W of this._queuedChunks)this._loaded+=W.byteLength;this._requests=[],this._headersReady=Promise.resolve(),l._fullRequestReader=this,this.onProgress=null}_enqueue(l){this._done||(this._requests.length>0?this._requests.shift().resolve({value:l,done:!1}):this._queuedChunks.push(l),this._loaded+=l.byteLength)}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}read(){return Ul(this,null,function*(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise})}cancel(l){this._done=!0;for(const U of this._requests)U.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class oG{constructor(l,U,Z){this._stream=l,this._begin=U,this._end=Z,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}_enqueue(l){if(!this._done){if(this._requests.length===0)this._queuedChunk=l;else{this._requests.shift().resolve({value:l,done:!1});for(const U of this._requests)U.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}read(){return Ul(this,null,function*(){if(this._queuedChunk){const U=this._queuedChunk;return this._queuedChunk=null,{value:U,done:!1}}if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise})}cancel(l){this._done=!0;for(const U of this._requests)U.resolve({value:void 0,done:!0});this._requests.length=0,this._stream._removeRangeReader(this)}}function yG(a){let l=!0,U=Z("filename\\*","i").exec(a);if(U){U=U[1];let e=Q(U);return e=unescape(e),e=R(e),e=m(e),W(e)}if(U=s(a),U){const e=m(U);return W(e)}if(U=Z("filename","i").exec(a),U){U=U[1];let e=Q(U);return e=m(e),W(e)}function Z(e,T){return new RegExp("(?:^|;)\\s*"+e+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',T)}function c(e,T){if(e){if(!/^[\x00-\xFF]+$/.test(T))return T;try{const Y=new TextDecoder(e,{fatal:!0}),u=Us(T);T=Y.decode(u),l=!1}catch(Y){}}return T}function W(e){return l&&/[\x80-\xff]/.test(e)&&(e=c("utf-8",e),l&&(e=c("iso-8859-1",e))),e}function s(e){const T=[];let Y;const u=Z("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;(Y=u.exec(e))!==null;){let[,z,L,D]=Y;if(z=parseInt(z,10),z in T){if(z===0)break;continue}T[z]=[L,D]}const B=[];for(let z=0;z<T.length&&z in T;++z){let[L,D]=T[z];D=Q(D),L&&(D=unescape(D),z===0&&(D=R(D))),B.push(D)}return B.join("")}function Q(e){if(e.startsWith('"')){const T=e.slice(1).split('\\"');for(let Y=0;Y<T.length;++Y){const u=T[Y].indexOf('"');u!==-1&&(T[Y]=T[Y].slice(0,u),T.length=Y+1),T[Y]=T[Y].replaceAll(/\\(.)/g,"$1")}e=T.join('"')}return e}function R(e){const T=e.indexOf("'");if(T===-1)return e;const Y=e.slice(0,T),u=e.slice(T+1).replace(/^[^']*'/,"");return c(Y,u)}function m(e){return!e.startsWith("=?")||/[\x00-\x19\x80-\xff]/.test(e)?e:e.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g,function(T,Y,u,B){if(u==="q"||u==="Q")return B=B.replaceAll("_"," "),B=B.replaceAll(/=([0-9a-fA-F]{2})/g,function(z,L){return String.fromCharCode(parseInt(L,16))}),c(Y,B);try{B=atob(B)}catch(z){}return c(Y,B)})}return""}function JR({getResponseHeader:a,isHttp:l,rangeChunkSize:U,disableRange:Z}){const c={allowRangeRequests:!1,suggestedLength:void 0},W=parseInt(a("Content-Length"),10);return!Number.isInteger(W)||(c.suggestedLength=W,W<=2*U)||Z||!l||a("Accept-Ranges")!=="bytes"||(a("Content-Encoding")||"identity")!=="identity"||(c.allowRangeRequests=!0),c}function TR(a){const l=a("Content-Disposition");if(l){let U=yG(l);if(U.includes("%"))try{U=decodeURIComponent(U)}catch(Z){}if(iR(U))return U}return null}function Ns(a,l){return a===404||a===0&&l.startsWith("file:")?new rt('Missing PDF "'+l+'".'):new ls(`Unexpected server response (${a}) while retrieving PDF "${l}".`,a)}function le(a){return a===200||a===206}function Ue(a,l,U){return{method:"GET",headers:a,signal:U.signal,mode:"cors",credentials:l?"include":"same-origin",redirect:"follow"}}function de(a){const l=new Headers;for(const U in a){const Z=a[U];Z!==void 0&&l.append(U,Z)}return l}function Ze(a){return a instanceof Uint8Array?a.buffer:a instanceof ArrayBuffer?a:(Tl(`getArrayBuffer - unexpected data format: ${a}`),new Uint8Array(a).buffer)}class te{constructor(l){this.source=l,this.isHttp=/^https?:/i.test(l.url),this.httpHeaders=this.isHttp&&l.httpHeaders||{},this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var U;var l;return(U=(l=this._fullRequestReader)==null?void 0:l._loaded)!=null?U:0}getFullReader(){return ZU(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once."),this._fullRequestReader=new zG(this),this._fullRequestReader}getRangeReader(l,U){if(U<=this._progressiveDataLength)return null;const Z=new LG(this,l,U);return this._rangeRequestReaders.push(Z),Z}cancelAllRequests(l){var U;(U=this._fullRequestReader)==null||U.cancel(l);for(const Z of this._rangeRequestReaders.slice(0))Z.cancel(l)}}class zG{constructor(l){this._stream=l,this._reader=null,this._loaded=0,this._filename=null;const U=l.source;this._withCredentials=U.withCredentials||!1,this._contentLength=U.length,this._headersCapability=Promise.withResolvers(),this._disableRange=U.disableRange||!1,this._rangeChunkSize=U.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._abortController=new AbortController,this._isStreamingSupported=!U.disableStream,this._isRangeSupported=!U.disableRange,this._headers=de(this._stream.httpHeaders);const Z=U.url;fetch(Z,Ue(this._headers,this._withCredentials,this._abortController)).then(c=>{if(!le(c.status))throw Ns(c.status,Z);this._reader=c.body.getReader(),this._headersCapability.resolve();const W=R=>c.headers.get(R),{allowRangeRequests:s,suggestedLength:Q}=JR({getResponseHeader:W,isHttp:this._stream.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=s,this._contentLength=Q||this._contentLength,this._filename=TR(W),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new jt("Streaming is disabled."))}).catch(this._headersCapability.reject),this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}read(){return Ul(this,null,function*(){var l;yield this._headersCapability.promise;const{value:U,done:Z}=yield this._reader.read();return Z?{value:U,done:Z}:(this._loaded+=U.byteLength,(l=this.onProgress)==null||l.call(this,{loaded:this._loaded,total:this._contentLength}),{value:Ze(U),done:!1})})}cancel(l){var U;(U=this._reader)==null||U.cancel(l),this._abortController.abort()}}class LG{constructor(l,U,Z){this._stream=l,this._reader=null,this._loaded=0;const c=l.source;this._withCredentials=c.withCredentials||!1,this._readCapability=Promise.withResolvers(),this._isStreamingSupported=!c.disableStream,this._abortController=new AbortController,this._headers=de(this._stream.httpHeaders),this._headers.append("Range",`bytes=${U}-${Z-1}`);const W=c.url;fetch(W,Ue(this._headers,this._withCredentials,this._abortController)).then(s=>{if(!le(s.status))throw Ns(s.status,W);this._readCapability.resolve(),this._reader=s.body.getReader()}).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}read(){return Ul(this,null,function*(){var l;yield this._readCapability.promise;const{value:U,done:Z}=yield this._reader.read();return Z?{value:U,done:Z}:(this._loaded+=U.byteLength,(l=this.onProgress)==null||l.call(this,{loaded:this._loaded}),{value:Ze(U),done:!1})})}cancel(l){var U;(U=this._reader)==null||U.cancel(l),this._abortController.abort()}}const SR=200,XR=206;function kG(a){const l=a.response;return typeof l!="string"?l:Us(l).buffer}class IG{constructor(l,U={}){this.url=l,this.isHttp=/^https?:/i.test(l),this.httpHeaders=this.isHttp&&U.httpHeaders||Object.create(null),this.withCredentials=U.withCredentials||!1,this.currXhrId=0,this.pendingRequests=Object.create(null)}requestRange(l,U,Z){const c={begin:l,end:U};for(const W in Z)c[W]=Z[W];return this.request(c)}requestFull(l){return this.request(l)}request(l){const U=new XMLHttpRequest,Z=this.currXhrId++,c=this.pendingRequests[Z]={xhr:U};U.open("GET",this.url),U.withCredentials=this.withCredentials;for(const W in this.httpHeaders){const s=this.httpHeaders[W];s!==void 0&&U.setRequestHeader(W,s)}return this.isHttp&&"begin"in l&&"end"in l?(U.setRequestHeader("Range",`bytes=${l.begin}-${l.end-1}`),c.expectedStatus=XR):c.expectedStatus=SR,U.responseType="arraybuffer",l.onError&&(U.onerror=function(W){l.onError(U.status)}),U.onreadystatechange=this.onStateChange.bind(this,Z),U.onprogress=this.onProgress.bind(this,Z),c.onHeadersReceived=l.onHeadersReceived,c.onDone=l.onDone,c.onError=l.onError,c.onProgress=l.onProgress,U.send(null),Z}onProgress(l,U){var Z;const c=this.pendingRequests[l];c&&((Z=c.onProgress)==null||Z.call(c,U))}onStateChange(l,U){var Z,c,W;const s=this.pendingRequests[l];if(!s)return;const Q=s.xhr;if(Q.readyState>=2&&s.onHeadersReceived&&(s.onHeadersReceived(),delete s.onHeadersReceived),Q.readyState!==4||!(l in this.pendingRequests))return;if(delete this.pendingRequests[l],Q.status===0&&this.isHttp){(Z=s.onError)==null||Z.call(s,Q.status);return}const R=Q.status||SR;if(!(R===SR&&s.expectedStatus===XR)&&R!==s.expectedStatus){(c=s.onError)==null||c.call(s,Q.status);return}const m=kG(Q);if(R===XR){const e=Q.getResponseHeader("Content-Range"),T=/bytes (\d+)-(\d+)\/(\d+)/.exec(e);s.onDone({begin:parseInt(T[1],10),chunk:m})}else m?s.onDone({begin:0,chunk:m}):(W=s.onError)==null||W.call(s,Q.status)}getRequestXhr(l){return this.pendingRequests[l].xhr}isPendingRequest(l){return l in this.pendingRequests}abortRequest(l){const U=this.pendingRequests[l].xhr;delete this.pendingRequests[l],U.abort()}}class DG{constructor(l){this._source=l,this._manager=new IG(l.url,{httpHeaders:l.httpHeaders,withCredentials:l.withCredentials}),this._rangeChunkSize=l.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(l){const U=this._rangeRequestReaders.indexOf(l);U>=0&&this._rangeRequestReaders.splice(U,1)}getFullReader(){return ZU(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new EG(this._manager,this._source),this._fullRequestReader}getRangeReader(l,U){const Z=new wG(this._manager,l,U);return Z.onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(Z),Z}cancelAllRequests(l){var U;(U=this._fullRequestReader)==null||U.cancel(l);for(const Z of this._rangeRequestReaders.slice(0))Z.cancel(l)}}class EG{constructor(l,U){this._manager=l;const Z={onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=U.url,this._fullRequestId=l.requestFull(Z),this._headersReceivedCapability=Promise.withResolvers(),this._disableRange=U.disableRange||!1,this._contentLength=U.length,this._rangeChunkSize=U.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}_onHeadersReceived(){const l=this._fullRequestId,U=this._manager.getRequestXhr(l),Z=s=>U.getResponseHeader(s),{allowRangeRequests:c,suggestedLength:W}=JR({getResponseHeader:Z,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});c&&(this._isRangeSupported=!0),this._contentLength=W||this._contentLength,this._filename=TR(Z),this._isRangeSupported&&this._manager.abortRequest(l),this._headersReceivedCapability.resolve()}_onDone(l){if(l&&(this._requests.length>0?this._requests.shift().resolve({value:l.chunk,done:!1}):this._cachedChunks.push(l.chunk)),this._done=!0,!(this._cachedChunks.length>0)){for(const U of this._requests)U.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(l){this._storedError=Ns(l,this._url),this._headersReceivedCapability.reject(this._storedError);for(const U of this._requests)U.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}_onProgress(l){var U;(U=this.onProgress)==null||U.call(this,{loaded:l.loaded,total:l.lengthComputable?l.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersReceivedCapability.promise}read(){return Ul(this,null,function*(){if(this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise})}cancel(l){this._done=!0,this._headersReceivedCapability.reject(l);for(const U of this._requests)U.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}class wG{constructor(l,U,Z){this._manager=l;const c={onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)};this._url=l.url,this._requestId=l.requestRange(U,Z,c),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}_close(){var l;(l=this.onClosed)==null||l.call(this,this)}_onDone(l){const U=l.chunk;this._requests.length>0?this._requests.shift().resolve({value:U,done:!1}):this._queuedChunk=U,this._done=!0;for(const Z of this._requests)Z.resolve({value:void 0,done:!0});this._requests.length=0,this._close()}_onError(l){this._storedError=Ns(l,this._url);for(const U of this._requests)U.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}_onProgress(l){var U;this.isStreamingSupported||(U=this.onProgress)==null||U.call(this,{loaded:l.loaded})}get isStreamingSupported(){return!1}read(){return Ul(this,null,function*(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){const U=this._queuedChunk;return this._queuedChunk=null,{value:U,done:!1}}if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise})}cancel(l){this._done=!0;for(const U of this._requests)U.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}const Fe=/^file:\/\/\/[a-zA-Z]:\//;function CG(a){const l=od.get("url"),U=l.parse(a);return U.protocol==="file:"||U.host?U:/^[a-z]:[/\\]/i.test(a)?l.parse(`file:///${a}`):(U.host||(U.protocol="file:"),U)}class xG{constructor(l){this.source=l,this.url=CG(l.url),this.isHttp=this.url.protocol==="http:"||this.url.protocol==="https:",this.isFsUrl=this.url.protocol==="file:",this.httpHeaders=this.isHttp&&l.httpHeaders||{},this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var U;var l;return(U=(l=this._fullRequestReader)==null?void 0:l._loaded)!=null?U:0}getFullReader(){return ZU(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=this.isFsUrl?new OG(this):new rG(this),this._fullRequestReader}getRangeReader(l,U){if(U<=this._progressiveDataLength)return null;const Z=this.isFsUrl?new gG(this,l,U):new jG(this,l,U);return this._rangeRequestReaders.push(Z),Z}cancelAllRequests(l){var U;(U=this._fullRequestReader)==null||U.cancel(l);for(const Z of this._rangeRequestReaders.slice(0))Z.cancel(l)}}class ce{constructor(l){this._url=l.url,this._done=!1,this._storedError=null,this.onProgress=null;const U=l.source;this._contentLength=U.length,this._loaded=0,this._filename=null,this._disableRange=U.disableRange||!1,this._rangeChunkSize=U.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!U.disableStream,this._isRangeSupported=!U.disableRange,this._readableStream=null,this._readCapability=Promise.withResolvers(),this._headersCapability=Promise.withResolvers()}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}read(){return Ul(this,null,function*(){var l;if(yield this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const U=this._readableStream.read();return U===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=U.length,(l=this.onProgress)==null||l.call(this,{loaded:this._loaded,total:this._contentLength}),{value:new Uint8Array(U).buffer,done:!1})})}cancel(l){if(!this._readableStream){this._error(l);return}this._readableStream.destroy(l)}_error(l){this._storedError=l,this._readCapability.resolve()}_setReadableStream(l){this._readableStream=l,l.on("readable",()=>{this._readCapability.resolve()}),l.on("end",()=>{l.destroy(),this._done=!0,this._readCapability.resolve()}),l.on("error",U=>{this._error(U)}),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new jt("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class We{constructor(l){this._url=l.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=Promise.withResolvers();const U=l.source;this._isStreamingSupported=!U.disableStream}get isStreamingSupported(){return this._isStreamingSupported}read(){return Ul(this,null,function*(){var l;if(yield this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const U=this._readableStream.read();return U===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=U.length,(l=this.onProgress)==null||l.call(this,{loaded:this._loaded}),{value:new Uint8Array(U).buffer,done:!1})})}cancel(l){if(!this._readableStream){this._error(l);return}this._readableStream.destroy(l)}_error(l){this._storedError=l,this._readCapability.resolve()}_setReadableStream(l){this._readableStream=l,l.on("readable",()=>{this._readCapability.resolve()}),l.on("end",()=>{l.destroy(),this._done=!0,this._readCapability.resolve()}),l.on("error",U=>{this._error(U)}),this._storedError&&this._readableStream.destroy(this._storedError)}}function Rs(a,l){return{protocol:a.protocol,auth:a.auth,host:a.hostname,port:a.port,path:a.path,method:"GET",headers:l}}class rG extends ce{constructor(l){super(l);const U=Z=>{if(Z.statusCode===404){const Q=new rt(`Missing PDF "${this._url}".`);this._storedError=Q,this._headersCapability.reject(Q);return}this._headersCapability.resolve(),this._setReadableStream(Z);const c=Q=>this._readableStream.headers[Q.toLowerCase()],{allowRangeRequests:W,suggestedLength:s}=JR({getResponseHeader:c,isHttp:l.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=W,this._contentLength=s||this._contentLength,this._filename=TR(c)};if(this._request=null,this._url.protocol==="http:"){const Z=od.get("http");this._request=Z.request(Rs(this._url,l.httpHeaders),U)}else{const Z=od.get("https");this._request=Z.request(Rs(this._url,l.httpHeaders),U)}this._request.on("error",Z=>{this._storedError=Z,this._headersCapability.reject(Z)}),this._request.end()}}class jG extends We{constructor(l,U,Z){super(l),this._httpHeaders={};for(const W in l.httpHeaders){const s=l.httpHeaders[W];s!==void 0&&(this._httpHeaders[W]=s)}this._httpHeaders.Range=`bytes=${U}-${Z-1}`;const c=W=>{if(W.statusCode===404){const s=new rt(`Missing PDF "${this._url}".`);this._storedError=s;return}this._setReadableStream(W)};if(this._request=null,this._url.protocol==="http:"){const W=od.get("http");this._request=W.request(Rs(this._url,this._httpHeaders),c)}else{const W=od.get("https");this._request=W.request(Rs(this._url,this._httpHeaders),c)}this._request.on("error",W=>{this._storedError=W}),this._request.end()}}class OG extends ce{constructor(l){super(l);let U=decodeURIComponent(this._url.path);Fe.test(this._url.href)&&(U=U.replace(/^\//,""));const Z=od.get("fs");Z.promises.lstat(U).then(c=>{this._contentLength=c.size,this._setReadableStream(Z.createReadStream(U)),this._headersCapability.resolve()},c=>{c.code==="ENOENT"&&(c=new rt(`Missing PDF "${U}".`)),this._storedError=c,this._headersCapability.reject(c)})}}class gG extends We{constructor(l,U,Z){super(l);let c=decodeURIComponent(this._url.path);Fe.test(this._url.href)&&(c=c.replace(/^\//,""));const W=od.get("fs");this._setReadableStream(W.createReadStream(c,{start:U,end:Z-1}))}}const KG=1e5,jU=30,HG=.8,fZ=class Es{constructor({textContentSource:l,container:U,viewport:Z}){if(h(this,pi),h(this,ui),h(this,eV),h(this,bt,Promise.withResolvers()),h(this,KU,null),h(this,QV,!1),h(this,iV,!!((yb=globalThis.FontInspector)!=null&&yb.enabled)),h(this,mt,null),h(this,pZ,null),h(this,NV,0),h(this,RV,0),h(this,pF,null),h(this,ic,null),h(this,Nc,0),h(this,et,0),h(this,Rc,Object.create(null)),h(this,hV,[]),h(this,hc,null),h(this,uF,[]),h(this,bV,new WeakMap),h(this,mV,null),l instanceof ReadableStream)S(this,hc,l);else if(typeof l=="object")S(this,hc,new ReadableStream({start(R){R.enqueue(l),R.close()}}));else throw new Error('No "textContentSource" parameter specified.');S(this,KU,S(this,ic,U)),S(this,et,Z.scale*(globalThis.devicePixelRatio||1)),S(this,Nc,Z.rotation),S(this,pZ,{prevFontSize:null,prevFontFamily:null,div:null,properties:null,ctx:null});const{pageWidth:c,pageHeight:W,pageX:s,pageY:Q}=Z.rawDims;S(this,mV,[1,0,0,-1,-s,Q+W]),S(this,RV,c),S(this,NV,W),Ot(U,Z),F(this,bt).promise.catch(()=>{}).then(()=>{F(Es,bc).delete(this),S(this,pZ,null),S(this,Rc,null)})}render(){const l=()=>{F(this,pF).read().then(({value:U,done:Z})=>{var c;if(Z){F(this,bt).resolve();return}(c=F(this,mt))!=null||S(this,mt,U.lang),Object.assign(F(this,Rc),U.styles),G(this,pi,zb).call(this,U.items),l()},F(this,bt).reject)};return S(this,pF,F(this,hc).getReader()),F(Es,bc).add(this),l(),F(this,bt).promise}update({viewport:l,onBefore:U=null}){var Z;const c=l.scale*(globalThis.devicePixelRatio||1),W=l.rotation;if(W!==F(this,Nc)&&(U==null||U(),S(this,Nc,W),Ot(F(this,ic),{rotation:W})),c!==F(this,et)){U==null||U(),S(this,et,c);const s={prevFontSize:null,prevFontFamily:null,div:null,properties:null,ctx:G(Z=Es,mc,MV).call(Z,F(this,mt))};for(const Q of F(this,uF))s.properties=F(this,bV).get(Q),s.div=Q,G(this,eV,Bi).call(this,s)}}cancel(){var l;const U=new jt("TextLayer task cancelled.");(l=F(this,pF))==null||l.cancel(U).catch(()=>{}),S(this,pF,null),F(this,bt).reject(U)}get textDivs(){return F(this,uF)}get textContentItemsStr(){return F(this,hV)}static cleanup(){if(!(F(this,bc).size>0)){F(this,BF).clear();for(const{canvas:l}of F(this,oF).values())l.remove();F(this,oF).clear()}}};bt=new WeakMap,KU=new WeakMap,QV=new WeakMap,iV=new WeakMap,mt=new WeakMap,pZ=new WeakMap,NV=new WeakMap,RV=new WeakMap,pF=new WeakMap,ic=new WeakMap,Nc=new WeakMap,et=new WeakMap,Rc=new WeakMap,hV=new WeakMap,hc=new WeakMap,uF=new WeakMap,bV=new WeakMap,mV=new WeakMap,BF=new WeakMap,oF=new WeakMap,bc=new WeakMap,pi=new WeakSet,zb=function(a){var l,U;if(F(this,QV))return;(U=F(this,pZ)).ctx||(U.ctx=G(l=fZ,mc,MV).call(l,F(this,mt)));const Z=F(this,uF),c=F(this,hV);for(const W of a){if(Z.length>KG){Tl("Ignoring additional textDivs for performance reasons."),S(this,QV,!0);return}if(W.str===void 0){if(W.type==="beginMarkedContentProps"||W.type==="beginMarkedContent"){const s=F(this,KU);S(this,KU,document.createElement("span")),F(this,KU).classList.add("markedContent"),W.id!==null&&F(this,KU).setAttribute("id",`${W.id}`),s.append(F(this,KU))}else W.type==="endMarkedContent"&&S(this,KU,F(this,KU).parentNode);continue}c.push(W.str),G(this,ui,Lb).call(this,W)}},ui=new WeakSet,Lb=function(a){var l;const U=document.createElement("span"),Z={angle:0,canvasWidth:0,hasText:a.str!=="",hasEOL:a.hasEOL,fontSize:0};F(this,uF).push(U);const c=nl.transform(F(this,mV),a.transform);let W=Math.atan2(c[1],c[0]);const s=F(this,Rc)[a.fontName];s.vertical&&(W+=Math.PI/2);const Q=F(this,iV)&&s.fontSubstitution||s.fontFamily,R=Math.hypot(c[2],c[3]),m=R*G(l=fZ,oi,kb).call(l,Q,F(this,mt));let e,T;W===0?(e=c[4],T=c[5]-m):(e=c[4]+m*Math.sin(W),T=c[5]-m*Math.cos(W));const Y="calc(var(--scale-factor)*",u=U.style;F(this,KU)===F(this,ic)?(u.left=`${(100*e/F(this,RV)).toFixed(2)}%`,u.top=`${(100*T/F(this,NV)).toFixed(2)}%`):(u.left=`${Y}${e.toFixed(2)}px)`,u.top=`${Y}${T.toFixed(2)}px)`),u.fontSize=`${Y}${R.toFixed(2)}px)`,u.fontFamily=Q,Z.fontSize=R,U.setAttribute("role","presentation"),U.textContent=a.str,U.dir=a.dir,F(this,iV)&&(U.dataset.fontName=s.fontSubstitutionLoadedName||a.fontName),W!==0&&(Z.angle=W*(180/Math.PI));let B=!1;if(a.str.length>1)B=!0;else if(a.str!==" "&&a.transform[0]!==a.transform[3]){const z=Math.abs(a.transform[0]),L=Math.abs(a.transform[3]);z!==L&&Math.max(z,L)/Math.min(z,L)>1.5&&(B=!0)}if(B&&(Z.canvasWidth=s.vertical?a.height:a.width),F(this,bV).set(U,Z),F(this,pZ).div=U,F(this,pZ).properties=Z,G(this,eV,Bi).call(this,F(this,pZ)),Z.hasText&&F(this,KU).append(U),Z.hasEOL){const z=document.createElement("br");z.setAttribute("role","presentation"),F(this,KU).append(z)}},eV=new WeakSet,Bi=function(a){const{div:l,properties:U,ctx:Z,prevFontSize:c,prevFontFamily:W}=a,{style:s}=l;let Q="";if(U.canvasWidth!==0&&U.hasText){const{fontFamily:R}=s,{canvasWidth:m,fontSize:e}=U;(c!==e||W!==R)&&(Z.font=`${e*F(this,et)}px ${R}`,a.prevFontSize=e,a.prevFontFamily=R);const{width:T}=Z.measureText(l.textContent);T>0&&(Q=`scaleX(${m*F(this,et)/T})`)}U.angle!==0&&(Q=`rotate(${U.angle}deg) ${Q}`),Q.length>0&&(s.transform=Q)},mc=new WeakSet,MV=function(a=null){let l=F(this,oF).get(a||(a=""));if(!l){const U=document.createElement("canvas");U.className="hiddenCanvasElement",U.lang=a,document.body.append(U),l=U.getContext("2d",{alpha:!1}),F(this,oF).set(a,l)}return l},oi=new WeakSet,kb=function(a,l){const U=F(this,BF).get(a);if(U)return U;const Z=G(this,mc,MV).call(this,l),c=Z.font;Z.canvas.width=Z.canvas.height=jU,Z.font=`${jU}px ${a}`;const W=Z.measureText("");let s=W.fontBoundingBoxAscent,Q=Math.abs(W.fontBoundingBoxDescent);if(s){const e=s/(s+Q);return F(this,BF).set(a,e),Z.canvas.width=Z.canvas.height=0,Z.font=c,e}Z.strokeStyle="red",Z.clearRect(0,0,jU,jU),Z.strokeText("g",0,0);let R=Z.getImageData(0,0,jU,jU).data;Q=0;for(let e=R.length-1-3;e>=0;e-=4)if(R[e]>0){Q=Math.ceil(e/4/jU);break}Z.clearRect(0,0,jU,jU),Z.strokeText("A",0,jU),R=Z.getImageData(0,0,jU,jU).data,s=0;for(let e=0,T=R.length;e<T;e+=4)if(R[e]>0){s=jU-Math.floor(e/4/jU);break}Z.canvas.width=Z.canvas.height=0,Z.font=c;const m=s?s/(s+Q):HG;return F(this,BF).set(a,m),m},h(fZ,mc),h(fZ,oi),h(fZ,BF,new Map),h(fZ,oF,new Map),h(fZ,bc,new Set);let hs=fZ;function vG(){Lm("`renderTextLayer`, please use `TextLayer` instead.");const R=arguments[0],{textContentSource:a,container:l,viewport:U}=R,Z=ye(R,["textContentSource","container","viewport"]),c=Object.keys(Z);c.length>0&&Tl("Ignoring `renderTextLayer` parameters: "+c.join(", "));const W=new hs({textContentSource:a,container:l,viewport:U}),{textDivs:s,textContentItemsStr:Q}=W;return{promise:W.render(),textDivs:s,textContentItemsStr:Q}}function PG(){Lm("`updateTextLayer`, please use `TextLayer` instead.")}class SW{static textContent(l){const U=[],Z={items:U,styles:Object.create(null)};function c(W){var s;if(!W)return;let Q=null;const R=W.name;if(R==="#text")Q=W.value;else if(SW.shouldBuildText(R))(s=W==null?void 0:W.attributes)!=null&&s.textContent?Q=W.attributes.textContent:W.value&&(Q=W.value);else return;if(Q!==null&&U.push({str:Q}),!!W.children)for(const m of W.children)c(m)}return c(l),Z}static shouldBuildText(l){return!(l==="textarea"||l==="input"||l==="option"||l==="select")}}const fG=65536,AG=100,_G=5e3,qG=TU?WG:KM,$G=TU?aG:om,lJ=TU?cG:gM,UJ=TU?VG:ym;function dJ(a){var pW,Ss;if(typeof a=="string"||a instanceof URL?a={url:a}:(a instanceof ArrayBuffer||ArrayBuffer.isView(a))&&(a={data:a}),typeof a!="object")throw new Error("Invalid parameter in getDocument, need parameter object.");if(!a.url&&!a.data&&!a.range)throw new Error("Invalid parameter object: need either .data, .range or .url");const l=new FJ,{docId:U}=l,Z=a.url?ZJ(a.url):null,c=a.data?tJ(a.data):null,W=a.httpHeaders||null,s=a.withCredentials===!0,Q=(pW=a.password)!=null?pW:null,R=a.range instanceof ne?a.range:null,m=Number.isInteger(a.rangeChunkSize)&&a.rangeChunkSize>0?a.rangeChunkSize:fG;let e=a.worker instanceof bs?a.worker:null;const T=a.verbosity,Y=typeof a.docBaseUrl=="string"&&!QR(a.docBaseUrl)?a.docBaseUrl:null,u=typeof a.cMapUrl=="string"?a.cMapUrl:null,B=a.cMapPacked!==!1,z=a.CMapReaderFactory||$G,L=typeof a.standardFontDataUrl=="string"?a.standardFontDataUrl:null,D=a.StandardFontDataFactory||UJ,f=a.stopAtErrors!==!0,j=Number.isInteger(a.maxImageSize)&&a.maxImageSize>-1?a.maxImageSize:-1,q=a.isEvalSupported!==!1,Zl=typeof a.isOffscreenCanvasSupported=="boolean"?a.isOffscreenCanvasSupported:!TU,Fl=Number.isInteger(a.canvasMaxAreaInBytes)?a.canvasMaxAreaInBytes:-1,al=typeof a.disableFontFace=="boolean"?a.disableFontFace:TU,bl=a.fontExtraProperties===!0,Sl=a.enableXfa===!0,Yl=a.ownerDocument||globalThis.document,Xl=a.disableRange===!0,vl=a.disableStream===!0,rl=a.disableAutoFetch===!0,LU=a.pdfBug===!0,Pl=R?R.length:(Ss=a.length)!=null?Ss:NaN,Nl=typeof a.useSystemFonts=="boolean"?a.useSystemFonts:!TU&&!al,Gl=typeof a.useWorkerFetch=="boolean"?a.useWorkerFetch:z===om&&D===ym&&u&&L&&mW(u,document.baseURI)&&mW(L,document.baseURI),h0=a.canvasFactory||new qG({ownerDocument:Yl}),Js=a.filterFactory||new lJ({docId:U,ownerDocument:Yl}),Ts=null;LM(T);const b0={canvasFactory:h0,filterFactory:Js};if(Gl||(b0.cMapReaderFactory=new z({baseUrl:u,isCompressed:B}),b0.standardFontDataFactory=new D({baseUrl:L})),!e){const zd={verbosity:T,port:vZ.workerPort};e=zd.port?bs.fromPort(zd):new bs(zd),l._worker=e}const vU={docId:U,apiVersion:"4.3.136",data:c,password:Q,disableAutoFetch:rl,rangeChunkSize:m,length:Pl,docBaseUrl:Y,enableXfa:Sl,evaluatorOptions:{maxImageSize:j,disableFontFace:al,ignoreErrors:f,isEvalSupported:q,isOffscreenCanvasSupported:Zl,canvasMaxAreaInBytes:Fl,fontExtraProperties:bl,useSystemFonts:Nl,cMapUrl:Gl?u:null,standardFontDataUrl:Gl?L:null}},QU={disableFontFace:al,fontExtraProperties:bl,ownerDocument:Yl,pdfBug:LU,styleElement:Ts,loadingParams:{disableAutoFetch:rl,enableXfa:Sl}};return e.promise.then(function(){if(l.destroyed)throw new Error("Loading aborted");if(e.destroyed)throw new Error("Worker was destroyed");const zd=e.messageHandler.sendWithPromise("GetDocRequest",vU,c?[c.buffer]:null);let ql;return R?ql=new uG(R,{disableRange:Xl,disableStream:vl}):c||(ql=(AZ=>TU?function(){return typeof fetch<"u"&&typeof Response<"u"&&"body"in Response.prototype}()&&mW(AZ.url)?new te(AZ):new xG(AZ):mW(AZ.url)?new te(AZ):new DG(AZ))({url:Z,length:Pl,httpHeaders:W,withCredentials:s,rangeChunkSize:m,disableRange:Xl,disableStream:vl})),zd.then(AZ=>{if(l.destroyed)throw new Error("Loading aborted");if(e.destroyed)throw new Error("Worker was destroyed");const pe=new TW(U,AZ,e.port),rJ=new VJ(pe,l,ql,QU,b0);l._transport=rJ,pe.send("Ready",null)})}).catch(l._capability.reject),l}function ZJ(a){if(a instanceof URL)return a.href;try{return new URL(a,window.location).href}catch(l){if(TU&&typeof a=="string")return a}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function tJ(a){if(TU&&typeof Buffer<"u"&&a instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(a instanceof Uint8Array&&a.byteLength===a.buffer.byteLength)return a;if(typeof a=="string")return Us(a);if(a instanceof ArrayBuffer||ArrayBuffer.isView(a)||typeof a=="object"&&!isNaN(a==null?void 0:a.length))return new Uint8Array(a);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}function ae(a){return typeof a=="object"&&Number.isInteger(a==null?void 0:a.num)&&a.num>=0&&Number.isInteger(a==null?void 0:a.gen)&&a.gen>=0}const Ve=class E2{constructor(){this._capability=Promise.withResolvers(),this._transport=null,this._worker=null,this.docId=`d${PU(E2,yi)._++}`,this.destroyed=!1,this.onPassword=null,this.onProgress=null}get promise(){return this._capability.promise}destroy(){return Ul(this,null,function*(){var l,U,Z;this.destroyed=!0;try{(l=this._worker)!=null&&l.port&&(this._worker._pendingDestroy=!0),yield(U=this._transport)==null?void 0:U.destroy()}catch(c){throw(Z=this._worker)!=null&&Z.port&&delete this._worker._pendingDestroy,c}this._transport=null,this._worker&&(this._worker.destroy(),this._worker=null)})}};yi=new WeakMap,h(Ve,yi,0);let FJ=Ve;class ne{constructor(l,U,Z=!1,c=null){this.length=l,this.initialData=U,this.progressiveDone=Z,this.contentDispositionFilename=c,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._progressiveDoneListeners=[],this._readyCapability=Promise.withResolvers()}addRangeListener(l){this._rangeListeners.push(l)}addProgressListener(l){this._progressListeners.push(l)}addProgressiveReadListener(l){this._progressiveReadListeners.push(l)}addProgressiveDoneListener(l){this._progressiveDoneListeners.push(l)}onDataRange(l,U){for(const Z of this._rangeListeners)Z(l,U)}onDataProgress(l,U){this._readyCapability.promise.then(()=>{for(const Z of this._progressListeners)Z(l,U)})}onDataProgressiveRead(l){this._readyCapability.promise.then(()=>{for(const U of this._progressiveReadListeners)U(l)})}onDataProgressiveDone(){this._readyCapability.promise.then(()=>{for(const l of this._progressiveDoneListeners)l()})}transportReady(){this._readyCapability.resolve()}requestDataRange(l,U){El("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}class cJ{constructor(l,U){this._pdfInfo=l,this._transport=U}get annotationStorage(){return this._transport.annotationStorage}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return yl(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(l){return this._transport.getPage(l)}getPageIndex(l){return this._transport.getPageIndex(l)}getDestinations(){return this._transport.getDestinations()}getDestination(l){return this._transport.getDestination(l)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:l="display"}={}){const{renderingIntent:U}=this._transport.getRenderingIntent(l);return this._transport.getOptionalContentConfig(U)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(l=!1){return this._transport.startCleanup(l||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}cachedPageNumber(l){return this._transport.cachedPageNumber(l)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}class WJ{constructor(l,U,Z,c=!1){h(this,Gt),h(this,ec),h(this,Mt,null),h(this,uZ,!1),this._pageIndex=l,this._pageInfo=U,this._transport=Z,this._stats=c?new zm:null,this._pdfBug=c,this.commonObjs=Z.commonObjs,this.objs=new se,this._maybeCleanupAfterRender=!1,this._intentStates=new Map,this.destroyed=!1}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:l,rotation:U=this.rotate,offsetX:Z=0,offsetY:c=0,dontFlip:W=!1}={}){return new bW({viewBox:this.view,scale:l,rotation:U,offsetX:Z,offsetY:c,dontFlip:W})}getAnnotations({intent:l="display"}={}){const{renderingIntent:U}=this._transport.getRenderingIntent(l);return this._transport.getAnnotations(this._pageIndex,U)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return yl(this,"isPureXfa",!!this._transport._htmlForXfa)}getXfa(){return Ul(this,null,function*(){var l;return((l=this._transport._htmlForXfa)==null?void 0:l.children[this._pageIndex])||null})}render({canvasContext:l,viewport:U,intent:Z="display",annotationMode:c=KZ.ENABLE,transform:W=null,background:s=null,optionalContentConfigPromise:Q=null,annotationCanvasMap:R=null,pageColors:m=null,printAnnotationStorage:e=null}){var T,Y;(T=this._stats)==null||T.time("Overall");const u=this._transport.getRenderingIntent(Z,c,e),{renderingIntent:B,cacheKey:z}=u;S(this,uZ,!1),G(this,ec,GV).call(this),Q||(Q=this._transport.getOptionalContentConfig(B));let L=this._intentStates.get(z);L||(L=Object.create(null),this._intentStates.set(z,L)),L.streamReaderCancelTimeout&&(clearTimeout(L.streamReaderCancelTimeout),L.streamReaderCancelTimeout=null);const D=!!(B&Zd.PRINT);L.displayReadyCapability||(L.displayReadyCapability=Promise.withResolvers(),L.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(Y=this._stats)==null||Y.time("Page Request"),this._pumpOperatorList(u));const f=Zl=>{var Fl;L.renderTasks.delete(j),(this._maybeCleanupAfterRender||D)&&S(this,uZ,!0),G(this,Gt,yF).call(this,!D),Zl?(j.capability.reject(Zl),this._abortOperatorList({intentState:L,reason:Zl instanceof Error?Zl:new Error(Zl)})):j.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),(Fl=globalThis.Stats)!=null&&Fl.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},j=new sJ({callback:f,params:{canvasContext:l,viewport:U,transform:W,background:s},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:R,operatorList:L.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!D,pdfBug:this._pdfBug,pageColors:m});(L.renderTasks||(L.renderTasks=new Set)).add(j);const q=j.task;return Promise.all([L.displayReadyCapability.promise,Q]).then(([Zl,Fl])=>{var al;if(this.destroyed){f();return}if((al=this._stats)==null||al.time("Rendering"),!(Fl.renderingIntent&B))throw new Error("Must use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");j.initializeGraphics({transparency:Zl,optionalContentConfig:Fl}),j.operatorListChanged()}).catch(f),q}getOperatorList({intent:l="display",annotationMode:U=KZ.ENABLE,printAnnotationStorage:Z=null}={}){var c;function W(){Q.operatorList.lastChunk&&(Q.opListReadCapability.resolve(Q.operatorList),Q.renderTasks.delete(R))}const s=this._transport.getRenderingIntent(l,U,Z,!0);let Q=this._intentStates.get(s.cacheKey);Q||(Q=Object.create(null),this._intentStates.set(s.cacheKey,Q));let R;return Q.opListReadCapability||(R=Object.create(null),R.operatorListChanged=W,Q.opListReadCapability=Promise.withResolvers(),(Q.renderTasks||(Q.renderTasks=new Set)).add(R),Q.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(c=this._stats)==null||c.time("Page Request"),this._pumpOperatorList(s)),Q.opListReadCapability.promise}streamTextContent({includeMarkedContent:l=!1,disableNormalization:U=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:l===!0,disableNormalization:U===!0},{highWaterMark:100,size(Z){return Z.items.length}})}getTextContent(l={}){if(this._transport._htmlForXfa)return this.getXfa().then(Z=>SW.textContent(Z));const U=this.streamTextContent(l);return new Promise(function(Z,c){function W(){s.read().then(function({value:R,done:m}){var e;if(m){Z(Q);return}(e=Q.lang)!=null||(Q.lang=R.lang),Object.assign(Q.styles,R.styles),Q.items.push(...R.items),W()},c)}const s=U.getReader(),Q={items:[],styles:Object.create(null),lang:null};W()})}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const l=[];for(const U of this._intentStates.values())if(this._abortOperatorList({intentState:U,reason:new Error("Page was destroyed."),force:!0}),!U.opListReadCapability)for(const Z of U.renderTasks)l.push(Z.completed),Z.cancel();return this.objs.clear(),S(this,uZ,!1),G(this,ec,GV).call(this),Promise.all(l)}cleanup(l=!1){S(this,uZ,!0);const U=G(this,Gt,yF).call(this,!1);return l&&U&&this._stats&&(this._stats=new zm),U}_startRenderPage(l,U){var Z,c;const W=this._intentStates.get(U);W&&((Z=this._stats)==null||Z.timeEnd("Page Request"),(c=W.displayReadyCapability)==null||c.resolve(l))}_renderPageChunk(l,U){for(let Z=0,c=l.length;Z<c;Z++)U.operatorList.fnArray.push(l.fnArray[Z]),U.operatorList.argsArray.push(l.argsArray[Z]);U.operatorList.lastChunk=l.lastChunk,U.operatorList.separateAnnots=l.separateAnnots;for(const Z of U.renderTasks)Z.operatorListChanged();l.lastChunk&&G(this,Gt,yF).call(this,!0)}_pumpOperatorList({renderingIntent:l,cacheKey:U,annotationStorageSerializable:Z}){const{map:c,transfer:W}=Z,s=this._transport.messageHandler.sendWithStream("GetOperatorList",{pageIndex:this._pageIndex,intent:l,cacheKey:U,annotationStorage:c},W).getReader(),Q=this._intentStates.get(U);Q.streamReader=s;const R=()=>{s.read().then(({value:m,done:e})=>{if(e){Q.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(m,Q),R())},m=>{if(Q.streamReader=null,!this._transport.destroyed){if(Q.operatorList){Q.operatorList.lastChunk=!0;for(const e of Q.renderTasks)e.operatorListChanged();G(this,Gt,yF).call(this,!0)}if(Q.displayReadyCapability)Q.displayReadyCapability.reject(m);else if(Q.opListReadCapability)Q.opListReadCapability.reject(m);else throw m}})};R()}_abortOperatorList({intentState:l,reason:U,force:Z=!1}){if(l.streamReader){if(l.streamReaderCancelTimeout&&(clearTimeout(l.streamReaderCancelTimeout),l.streamReaderCancelTimeout=null),!Z){if(l.renderTasks.size>0)return;if(U instanceof sR){let c=AG;U.extraDelay>0&&U.extraDelay<1e3&&(c+=U.extraDelay),l.streamReaderCancelTimeout=setTimeout(()=>{l.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:l,reason:U,force:!0})},c);return}}if(l.streamReader.cancel(new jt(U.message)).catch(()=>{}),l.streamReader=null,!this._transport.destroyed){for(const[c,W]of this._intentStates)if(W===l){this._intentStates.delete(c);break}this.cleanup()}}}get stats(){return this._stats}}Mt=new WeakMap,uZ=new WeakMap,Gt=new WeakSet,yF=function(a=!1){if(G(this,ec,GV).call(this),!F(this,uZ)||this.destroyed)return!1;if(a)return S(this,Mt,setTimeout(()=>{S(this,Mt,null),G(this,Gt,yF).call(this,!1)},_G)),!1;for(const{renderTasks:l,operatorList:U}of this._intentStates.values())if(l.size>0||!U.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),S(this,uZ,!1),!0},ec=new WeakSet,GV=function(){F(this,Mt)&&(clearTimeout(F(this,Mt)),S(this,Mt,null))};class aJ{constructor(){h(this,zF,new Set),h(this,zi,Promise.resolve())}postMessage(l,U){const Z={data:structuredClone(l,U?{transfer:U}:null)};F(this,zi).then(()=>{for(const c of F(this,zF))c.call(this,Z)})}addEventListener(l,U){F(this,zF).add(U)}removeEventListener(l,U){F(this,zF).delete(U)}terminate(){F(this,zF).clear()}}zF=new WeakMap,zi=new WeakMap;const tZ={isWorkerDisabled:!1,fakeWorkerId:0};TU&&(tZ.isWorkerDisabled=!0,vZ.workerSrc||(vZ.workerSrc="./pdf.worker.mjs")),tZ.isSameOrigin=function(a,l){let U;try{if(U=new URL(a),!U.origin||U.origin==="null")return!1}catch(c){return!1}const Z=new URL(l,U);return U.origin===Z.origin},tZ.createCDNWrapper=function(a){const l=`await import("${a}");`;return URL.createObjectURL(new Blob([l],{type:"text/javascript"}))};const YR=class cZ{constructor({name:l=null,port:U=null,verbosity:Z=kM()}={}){var c;if(this.name=l,this.destroyed=!1,this.verbosity=Z,this._readyCapability=Promise.withResolvers(),this._port=null,this._webWorker=null,this._messageHandler=null,U){if((c=F(cZ,Jt))!=null&&c.has(U))throw new Error("Cannot use more than one PDFWorker per port.");(F(cZ,Jt)||S(cZ,Jt,new WeakMap)).set(U,this),this._initializeFromPort(U);return}this._initialize()}get promise(){return TU?Promise.all([od.promise,this._readyCapability.promise]):this._readyCapability.promise}get port(){return this._port}get messageHandler(){return this._messageHandler}_initializeFromPort(l){this._port=l,this._messageHandler=new TW("main","worker",l),this._messageHandler.on("ready",function(){}),this._readyCapability.resolve(),this._messageHandler.send("configure",{verbosity:this.verbosity})}_initialize(){if(!tZ.isWorkerDisabled&&!F(cZ,Mc,JV)){let{workerSrc:l}=cZ;try{tZ.isSameOrigin(window.location.href,l)||(l=tZ.createCDNWrapper(new URL(l,window.location).href));const U=new Worker(l,{type:"module"}),Z=new TW("main","worker",U),c=()=>{U.removeEventListener("error",W),Z.destroy(),U.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()},W=()=>{this._webWorker||c()};U.addEventListener("error",W),Z.on("test",Q=>{if(U.removeEventListener("error",W),this.destroyed){c();return}Q?(this._messageHandler=Z,this._port=U,this._webWorker=U,this._readyCapability.resolve(),Z.send("configure",{verbosity:this.verbosity})):(this._setupFakeWorker(),Z.destroy(),U.terminate())}),Z.on("ready",Q=>{if(U.removeEventListener("error",W),this.destroyed){c();return}try{s()}catch(R){this._setupFakeWorker()}});const s=()=>{const Q=new Uint8Array;Z.send("test",Q,[Q.buffer])};s();return}catch(U){$n("The worker has been disabled.")}}this._setupFakeWorker()}_setupFakeWorker(){tZ.isWorkerDisabled||(Tl("Setting up fake worker."),tZ.isWorkerDisabled=!0),cZ._setupFakeWorkerGlobal.then(l=>{if(this.destroyed){this._readyCapability.reject(new Error("Worker was destroyed"));return}const U=new aJ;this._port=U;const Z=`fake${tZ.fakeWorkerId++}`,c=new TW(Z+"_worker",Z,U);l.setup(c,U);const W=new TW(Z,Z+"_worker",U);this._messageHandler=W,this._readyCapability.resolve(),W.send("configure",{verbosity:this.verbosity})}).catch(l=>{this._readyCapability.reject(new Error(`Setting up fake worker failed: "${l.message}".`))})}destroy(){var l;this.destroyed=!0,this._webWorker&&(this._webWorker.terminate(),this._webWorker=null),(l=F(cZ,Jt))==null||l.delete(this._port),this._port=null,this._messageHandler&&(this._messageHandler.destroy(),this._messageHandler=null)}static fromPort(l){var U;if(!(l!=null&&l.port))throw new Error("PDFWorker.fromPort - invalid method signature.");const Z=(U=F(this,Jt))==null?void 0:U.get(l.port);if(Z){if(Z._pendingDestroy)throw new Error("PDFWorker.fromPort - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return Z}return new cZ(l)}static get workerSrc(){if(vZ.workerSrc)return vZ.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return yl(this,"_setupFakeWorkerGlobal",Ul(this,null,function*(){return F(this,Mc,JV)?F(this,Mc,JV):(yield import(this.workerSrc)).WorkerMessageHandler}))}};Jt=new WeakMap,Mc=new WeakSet,JV=function(){var a;try{return((a=globalThis.pdfjsWorker)==null?void 0:a.WorkerMessageHandler)||null}catch(l){return null}},h(YR,Mc),h(YR,Jt,void 0);let bs=YR;class VJ{constructor(l,U,Z,c,W){h(this,LF),h(this,BZ,new Map),h(this,Od,new Map),h(this,Gc,new Map),h(this,Jc,new Map),h(this,gd,null),this.messageHandler=l,this.loadingTask=U,this.commonObjs=new se,this.fontLoader=new tG({ownerDocument:c.ownerDocument,styleElement:c.styleElement}),this.loadingParams=c.loadingParams,this._params=c,this.canvasFactory=W.canvasFactory,this.filterFactory=W.filterFactory,this.cMapReaderFactory=W.cMapReaderFactory,this.standardFontDataFactory=W.standardFontDataFactory,this.destroyed=!1,this.destroyCapability=null,this._networkStream=Z,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=Promise.withResolvers(),this.setupMessageHandler()}get annotationStorage(){return yl(this,"annotationStorage",new mR)}getRenderingIntent(l,U=KZ.ENABLE,Z=null,c=!1){let W=Zd.DISPLAY,s=bR;switch(l){case"any":W=Zd.ANY;break;case"display":break;case"print":W=Zd.PRINT;break;default:Tl(`getRenderingIntent - invalid intent: ${l}`)}switch(U){case KZ.DISABLE:W+=Zd.ANNOTATIONS_DISABLE;break;case KZ.ENABLE:break;case KZ.ENABLE_FORMS:W+=Zd.ANNOTATIONS_FORMS;break;case KZ.ENABLE_STORAGE:W+=Zd.ANNOTATIONS_STORAGE,s=(W&Zd.PRINT&&Z instanceof rm?Z:this.annotationStorage).serializable;break;default:Tl(`getRenderingIntent - invalid annotationMode: ${U}`)}return c&&(W+=Zd.OPLIST),{renderingIntent:W,cacheKey:`${W}_${s.hash}`,annotationStorageSerializable:s}}destroy(){var l;if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),(l=F(this,gd))==null||l.reject(new Error("Worker was destroyed during onPassword callback"));const U=[];for(const c of F(this,Od).values())U.push(c._destroy());F(this,Od).clear(),F(this,Gc).clear(),F(this,Jc).clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const Z=this.messageHandler.sendWithPromise("Terminate",null);return U.push(Z),Promise.all(U).then(()=>{var c;this.commonObjs.clear(),this.fontLoader.clear(),F(this,BZ).clear(),this.filterFactory.destroy(),hs.cleanup(),(c=this._networkStream)==null||c.cancelAllRequests(new jt("Worker was terminated.")),this.messageHandler&&(this.messageHandler.destroy(),this.messageHandler=null),this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:l,loadingTask:U}=this;l.on("GetReader",(Z,c)=>{ZU(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=W=>{this._lastProgress={loaded:W.loaded,total:W.total}},c.onPull=()=>{this._fullReader.read().then(function({value:W,done:s}){if(s){c.close();return}ZU(W instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),c.enqueue(new Uint8Array(W),1,[W])}).catch(W=>{c.error(W)})},c.onCancel=W=>{this._fullReader.cancel(W),c.ready.catch(s=>{if(!this.destroyed)throw s})}}),l.on("ReaderHeadersReady",Z=>{const c=Promise.withResolvers(),W=this._fullReader;return W.headersReady.then(()=>{var s;(!W.isStreamingSupported||!W.isRangeSupported)&&(this._lastProgress&&((s=U.onProgress)==null||s.call(U,this._lastProgress)),W.onProgress=Q=>{var R;(R=U.onProgress)==null||R.call(U,{loaded:Q.loaded,total:Q.total})}),c.resolve({isStreamingSupported:W.isStreamingSupported,isRangeSupported:W.isRangeSupported,contentLength:W.contentLength})},c.reject),c.promise}),l.on("GetRangeReader",(Z,c)=>{ZU(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const W=this._networkStream.getRangeReader(Z.begin,Z.end);if(!W){c.close();return}c.onPull=()=>{W.read().then(function({value:s,done:Q}){if(Q){c.close();return}ZU(s instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),c.enqueue(new Uint8Array(s),1,[s])}).catch(s=>{c.error(s)})},c.onCancel=s=>{W.cancel(s),c.ready.catch(Q=>{if(!this.destroyed)throw Q})}}),l.on("GetDoc",({pdfInfo:Z})=>{this._numPages=Z.numPages,this._htmlForXfa=Z.htmlForXfa,delete Z.htmlForXfa,U._capability.resolve(new cJ(Z,this))}),l.on("DocException",function(Z){let c;switch(Z.name){case"PasswordException":c=new tR(Z.message,Z.code);break;case"InvalidPDFException":c=new Ym(Z.message);break;case"MissingPDFException":c=new rt(Z.message);break;case"UnexpectedResponseException":c=new ls(Z.message,Z.status);break;case"UnknownErrorException":c=new FR(Z.message,Z.details);break;default:El("DocException - expected a valid Error.")}U._capability.reject(c)}),l.on("PasswordRequest",Z=>{if(S(this,gd,Promise.withResolvers()),U.onPassword){const c=W=>{W instanceof Error?F(this,gd).reject(W):F(this,gd).resolve({password:W})};try{U.onPassword(c,Z.code)}catch(W){F(this,gd).reject(W)}}else F(this,gd).reject(new tR(Z.message,Z.code));return F(this,gd).promise}),l.on("DataLoaded",Z=>{var c;(c=U.onProgress)==null||c.call(U,{loaded:Z.length,total:Z.length}),this.downloadInfoCapability.resolve(Z)}),l.on("StartRenderPage",Z=>{this.destroyed||F(this,Od).get(Z.pageIndex)._startRenderPage(Z.transparency,Z.cacheKey)}),l.on("commonobj",([Z,c,W])=>{var s;if(this.destroyed||this.commonObjs.has(Z))return null;switch(c){case"Font":const{disableFontFace:Q,fontExtraProperties:R,pdfBug:m}=this._params;if("error"in W){const u=W.error;Tl(`Error during font loading: ${u}`),this.commonObjs.resolve(Z,u);break}const e=m&&(s=globalThis.FontInspector)!=null&&s.enabled?(u,B)=>globalThis.FontInspector.fontAdded(u,B):null,T=new FG(W,{disableFontFace:Q,inspectFont:e});this.fontLoader.bind(T).catch(()=>l.sendWithPromise("FontFallback",{id:Z})).finally(()=>{!R&&T.data&&(T.data=null),this.commonObjs.resolve(Z,T)});break;case"CopyLocalImage":const{imageRef:Y}=W;ZU(Y,"The imageRef must be defined.");for(const u of F(this,Od).values())for(const[,B]of u.objs)if((B==null?void 0:B.ref)===Y)return B.dataLen?(this.commonObjs.resolve(Z,structuredClone(B)),B.dataLen):null;break;case"FontPath":case"Image":case"Pattern":this.commonObjs.resolve(Z,W);break;default:throw new Error(`Got unknown common object type ${c}`)}return null}),l.on("obj",([Z,c,W,s])=>{var Q;if(this.destroyed)return;const R=F(this,Od).get(c);if(!R.objs.has(Z)){if(R._intentStates.size===0){(Q=s==null?void 0:s.bitmap)==null||Q.close();return}switch(W){case"Image":R.objs.resolve(Z,s),(s==null?void 0:s.dataLen)>BM&&(R._maybeCleanupAfterRender=!0);break;case"Pattern":R.objs.resolve(Z,s);break;default:throw new Error(`Got unknown object type ${W}`)}}}),l.on("DocProgress",Z=>{var c;this.destroyed||(c=U.onProgress)==null||c.call(U,{loaded:Z.loaded,total:Z.total})}),l.on("FetchBuiltInCMap",Z=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.cMapReaderFactory?this.cMapReaderFactory.fetch(Z):Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."))),l.on("FetchStandardFontData",Z=>this.destroyed?Promise.reject(new Error("Worker was destroyed.")):this.standardFontDataFactory?this.standardFontDataFactory.fetch(Z):Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.")))}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){var c;var l;this.annotationStorage.size<=0&&Tl("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:U,transfer:Z}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:U,filename:(c=(l=this._fullReader)==null?void 0:l.filename)!=null?c:null},Z).finally(()=>{this.annotationStorage.resetModified()})}getPage(l){if(!Number.isInteger(l)||l<=0||l>this._numPages)return Promise.reject(new Error("Invalid page request."));const U=l-1,Z=F(this,Gc).get(U);if(Z)return Z;const c=this.messageHandler.sendWithPromise("GetPage",{pageIndex:U}).then(W=>{if(this.destroyed)throw new Error("Transport destroyed");W.refStr&&F(this,Jc).set(W.refStr,l);const s=new WJ(U,W,this,this._params.pdfBug);return F(this,Od).set(U,s),s});return F(this,Gc).set(U,c),c}getPageIndex(l){return ae(l)?this.messageHandler.sendWithPromise("GetPageIndex",{num:l.num,gen:l.gen}):Promise.reject(new Error("Invalid pageIndex request."))}getAnnotations(l,U){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:l,intent:U})}getFieldObjects(){return G(this,LF,Tc).call(this,"GetFieldObjects")}hasJSActions(){return G(this,LF,Tc).call(this,"HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(l){return typeof l!="string"?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:l})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getDocJSActions(){return G(this,LF,Tc).call(this,"GetDocJSActions")}getPageJSActions(l){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:l})}getStructTree(l){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:l})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(l){return G(this,LF,Tc).call(this,"GetOptionalContentConfig").then(U=>new pG(U,l))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const l="GetMetadata",U=F(this,BZ).get(l);if(U)return U;const Z=this.messageHandler.sendWithPromise(l,null).then(c=>{var Q,R;var W,s;return{info:c[0],metadata:c[1]?new XG(c[1]):null,contentDispositionFilename:(Q=(W=this._fullReader)==null?void 0:W.filename)!=null?Q:null,contentLength:(R=(s=this._fullReader)==null?void 0:s.contentLength)!=null?R:null}});return F(this,BZ).set(l,Z),Z}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}startCleanup(l=!1){return Ul(this,null,function*(){if(!this.destroyed){yield this.messageHandler.sendWithPromise("Cleanup",null);for(const U of F(this,Od).values())if(!U.cleanup())throw new Error(`startCleanup: Page ${U.pageNumber} is currently rendering.`);this.commonObjs.clear(),l||this.fontLoader.clear(),F(this,BZ).clear(),this.filterFactory.destroy(!0),hs.cleanup()}})}cachedPageNumber(l){var Z;if(!ae(l))return null;const U=l.gen===0?`${l.num}R`:`${l.num}R${l.gen}`;return(Z=F(this,Jc).get(U))!=null?Z:null}}BZ=new WeakMap,Od=new WeakMap,Gc=new WeakMap,Jc=new WeakMap,gd=new WeakMap,LF=new WeakSet,Tc=function(a,l=null){const U=F(this,BZ).get(a);if(U)return U;const Z=this.messageHandler.sendWithPromise(a,l);return F(this,BZ).set(a,Z),Z};const ms=Symbol("INITIAL_DATA");class se{constructor(){h(this,TV),h(this,Jd,Object.create(null))}get(l,U=null){if(U){const c=G(this,TV,Li).call(this,l);return c.promise.then(()=>U(c.data)),null}const Z=F(this,Jd)[l];if(!Z||Z.data===ms)throw new Error(`Requesting object that isn't resolved yet ${l}.`);return Z.data}has(l){const U=F(this,Jd)[l];return!!U&&U.data!==ms}resolve(l,U=null){const Z=G(this,TV,Li).call(this,l);Z.data=U,Z.resolve()}clear(){var l;for(const U in F(this,Jd)){const{data:Z}=F(this,Jd)[U];(l=Z==null?void 0:Z.bitmap)==null||l.close()}S(this,Jd,Object.create(null))}*[Symbol.iterator](){for(const l in F(this,Jd)){const{data:U}=F(this,Jd)[l];U!==ms&&(yield[l,U])}}}Jd=new WeakMap,TV=new WeakSet,Li=function(a){var l;return(l=F(this,Jd))[a]||(l[a]=Ld(fl({},Promise.withResolvers()),{data:ms}))};class nJ{constructor(l){h(this,Tt,null),S(this,Tt,l),this.onContinue=null}get promise(){return F(this,Tt).capability.promise}cancel(l=0){F(this,Tt).cancel(null,l)}get separateAnnots(){const{separateAnnots:l}=F(this,Tt).operatorList;if(!l)return!1;const{annotationCanvasMap:U}=F(this,Tt);return l.form||l.canvas&&(U==null?void 0:U.size)>0}}Tt=new WeakMap;const Qe=class kW{constructor({callback:l,params:U,objs:Z,commonObjs:c,annotationCanvasMap:W,operatorList:s,pageIndex:Q,canvasFactory:R,filterFactory:m,useRequestAnimationFrame:e=!1,pdfBug:T=!1,pageColors:Y=null}){this.callback=l,this.params=U,this.objs=Z,this.commonObjs=c,this.annotationCanvasMap=W,this.operatorListIdx=null,this.operatorList=s,this._pageIndex=Q,this.canvasFactory=R,this.filterFactory=m,this._pdfBug=T,this.pageColors=Y,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=e===!0&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new nJ(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=U.canvasContext.canvas}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:l=!1,optionalContentConfig:U}){var Z,c;if(this.cancelled)return;if(this._canvas){if(F(kW,kF).has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");F(kW,kF).add(this._canvas)}this._pdfBug&&(Z=globalThis.StepperManager)!=null&&Z.enabled&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{canvasContext:W,viewport:s,transform:Q,background:R}=this.params;this.gfx=new Qs(W,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:U},this.annotationCanvasMap,this.pageColors),this.gfx.beginDrawing({transform:Q,viewport:s,transparency:l,background:R}),this.operatorListIdx=0,this.graphicsReady=!0,(c=this.graphicsReadyCallback)==null||c.call(this)}cancel(l=null,U=0){var Z;this.running=!1,this.cancelled=!0,(Z=this.gfx)==null||Z.endDrawing(),F(kW,kF).delete(this._canvas),this.callback(l||new sR(`Rendering cancelled, page ${this._pageIndex+1}`,U))}operatorListChanged(){var l;if(!this.graphicsReady){this.graphicsReadyCallback||(this.graphicsReadyCallback=this._continueBound);return}(l=this.stepper)==null||l.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?window.requestAnimationFrame(()=>{this._nextBound().catch(this._cancelBound)}):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}_next(){return Ul(this,null,function*(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),F(kW,kF).delete(this._canvas),this.callback())))})}};kF=new WeakMap,h(Qe,kF,new WeakSet);let sJ=Qe;const QJ="4.3.136",iJ="0cec64437";zl(670);function ie(a){return Math.floor(Math.max(0,Math.min(1,a))*255).toString(16).padStart(2,"0")}function XW(a){return Math.max(0,Math.min(255,255*a))}class Ne{static CMYK_G([l,U,Z,c]){return["G",1-Math.min(1,.3*l+.59*Z+.11*U+c)]}static G_CMYK([l]){return["CMYK",0,0,0,1-l]}static G_RGB([l]){return["RGB",l,l,l]}static G_rgb([l]){return l=XW(l),[l,l,l]}static G_HTML([l]){const U=ie(l);return`#${U}${U}${U}`}static RGB_G([l,U,Z]){return["G",.3*l+.59*U+.11*Z]}static RGB_rgb(l){return l.map(XW)}static RGB_HTML(l){return`#${l.map(ie).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([l,U,Z,c]){return["RGB",1-Math.min(1,l+c),1-Math.min(1,Z+c),1-Math.min(1,U+c)]}static CMYK_rgb([l,U,Z,c]){return[XW(1-Math.min(1,l+c)),XW(1-Math.min(1,Z+c)),XW(1-Math.min(1,U+c))]}static CMYK_HTML(l){const U=this.CMYK_RGB(l).slice(1);return this.RGB_HTML(U)}static RGB_CMYK([l,U,Z]){const c=1-l,W=1-U,s=1-Z,Q=Math.min(c,W,s);return["CMYK",c,W,s,Q]}}class Re{static setupStorage(l,U,Z,c,W){const s=c.getValue(U,{value:null});switch(Z.name){case"textarea":if(s.value!==null&&(l.textContent=s.value),W==="print")break;l.addEventListener("input",Q=>{c.setValue(U,{value:Q.target.value})});break;case"input":if(Z.attributes.type==="radio"||Z.attributes.type==="checkbox"){if(s.value===Z.attributes.xfaOn?l.setAttribute("checked",!0):s.value===Z.attributes.xfaOff&&l.removeAttribute("checked"),W==="print")break;l.addEventListener("change",Q=>{c.setValue(U,{value:Q.target.checked?Q.target.getAttribute("xfaOn"):Q.target.getAttribute("xfaOff")})})}else{if(s.value!==null&&l.setAttribute("value",s.value),W==="print")break;l.addEventListener("input",Q=>{c.setValue(U,{value:Q.target.value})})}break;case"select":if(s.value!==null){l.setAttribute("value",s.value);for(const Q of Z.children)Q.attributes.value===s.value?Q.attributes.selected=!0:Q.attributes.hasOwnProperty("selected")&&delete Q.attributes.selected}l.addEventListener("input",Q=>{const R=Q.target.options,m=R.selectedIndex===-1?"":R[R.selectedIndex].value;c.setValue(U,{value:m})});break}}static setAttributes({html:l,element:U,storage:Z=null,intent:c,linkService:W}){const{attributes:s}=U,Q=l instanceof HTMLAnchorElement;s.type==="radio"&&(s.name=`${s.name}-${c}`);for(const[R,m]of Object.entries(s))if(m!=null)switch(R){case"class":m.length&&l.setAttribute(R,m.join(" "));break;case"dataId":break;case"id":l.setAttribute("data-element-id",m);break;case"style":Object.assign(l.style,m);break;case"textContent":l.textContent=m;break;default:(!Q||R!=="href"&&R!=="newWindow")&&l.setAttribute(R,m)}Q&&W.addLinkAttributes(l,s.href,s.newWindow),Z&&s.dataId&&this.setupStorage(l,s.dataId,U,Z)}static render(l){var U,Z;const c=l.annotationStorage,W=l.linkService,s=l.xfaHtml,Q=l.intent||"display",R=document.createElement(s.name);s.attributes&&this.setAttributes({html:R,element:s,intent:Q,linkService:W});const m=Q!=="richText",e=l.div;if(e.append(R),l.viewport){const u=`matrix(${l.viewport.transform.join(",")})`;e.style.transform=u}m&&e.setAttribute("class","xfaLayer xfaFont");const T=[];if(s.children.length===0){if(s.value){const u=document.createTextNode(s.value);R.append(u),m&&SW.shouldBuildText(s.name)&&T.push(u)}return{textDivs:T}}const Y=[[s,-1,R]];for(;Y.length>0;){const[u,B,z]=Y.at(-1);if(B+1===u.children.length){Y.pop();continue}const L=u.children[++Y.at(-1)[1]];if(L===null)continue;const{name:D}=L;if(D==="#text"){const j=document.createTextNode(L.value);T.push(j),z.append(j);continue}const f=(U=L==null?void 0:L.attributes)!=null&&U.xmlns?document.createElementNS(L.attributes.xmlns,D):document.createElement(D);if(z.append(f),L.attributes&&this.setAttributes({html:f,element:L,storage:c,intent:Q,linkService:W}),((Z=L.children)==null?void 0:Z.length)>0)Y.push([L,-1,f]);else if(L.value){const j=document.createTextNode(L.value);m&&SW.shouldBuildText(D)&&T.push(j),f.append(j)}}for(const u of e.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))u.setAttribute("readOnly",!0);return{textDivs:T}}static update(l){const U=`matrix(${l.viewport.transform.join(",")})`;l.div.style.transform=U,l.div.hidden=!1}}const YW=1e3,NJ=9,gt=new WeakSet;function FZ(a){return{width:a[2]-a[0],height:a[3]-a[1]}}class RJ{static create(l){switch(l.data.annotationType){case dU.LINK:return new he(l);case dU.TEXT:return new bJ(l);case dU.WIDGET:switch(l.data.fieldType){case"Tx":return new mJ(l);case"Btn":return l.data.radioButton?new be(l):l.data.checkBox?new MJ(l):new GJ(l);case"Ch":return new JJ(l);case"Sig":return new eJ(l)}return new Kt(l);case dU.POPUP:return new pR(l);case dU.FREETEXT:return new me(l);case dU.LINE:return new SJ(l);case dU.SQUARE:return new XJ(l);case dU.CIRCLE:return new YJ(l);case dU.POLYLINE:return new ee(l);case dU.CARET:return new uJ(l);case dU.INK:return new Me(l);case dU.POLYGON:return new pJ(l);case dU.HIGHLIGHT:return new BJ(l);case dU.UNDERLINE:return new oJ(l);case dU.SQUIGGLY:return new yJ(l);case dU.STRIKEOUT:return new zJ(l);case dU.STAMP:return new Ge(l);case dU.FILEATTACHMENT:return new LJ(l);default:return new tU(l)}}}const hJ=class w2{constructor(l,{isRenderable:U=!1,ignoreBorder:Z=!1,createQuadrilaterals:c=!1}={}){h(this,SV),h(this,St,null),h(this,Sc,!1),h(this,Xc,null),this.isRenderable=U,this.data=l.data,this.layer=l.layer,this.linkService=l.linkService,this.downloadManager=l.downloadManager,this.imageResourcesPath=l.imageResourcesPath,this.renderForms=l.renderForms,this.svgFactory=l.svgFactory,this.annotationStorage=l.annotationStorage,this.enableScripting=l.enableScripting,this.hasJSActions=l.hasJSActions,this._fieldObjects=l.fieldObjects,this.parent=l.parent,U&&(this.container=this._createContainer(Z)),c&&this._createQuadrilaterals()}static _hasPopupData({titleObj:l,contentsObj:U,richText:Z}){return!!(l!=null&&l.str||U!=null&&U.str||Z!=null&&Z.str)}get hasPopupData(){return w2._hasPopupData(this.data)}updateEdited(l){var U;if(!this.container)return;F(this,St)||S(this,St,{rect:this.data.rect.slice(0)});const{rect:Z}=l;Z&&G(this,SV,ki).call(this,Z),(U=F(this,Xc))==null||U.popup.updateEdited(l)}resetEdited(){var l;F(this,St)&&(G(this,SV,ki).call(this,F(this,St).rect),(l=F(this,Xc))==null||l.popup.resetEdited(),S(this,St,null))}_createContainer(l){const{data:U,parent:{page:Z,viewport:c}}=this,W=document.createElement("section");W.setAttribute("data-annotation-id",U.id),this instanceof Kt||(W.tabIndex=YW);const{style:s}=W;if(s.zIndex=this.parent.zIndex++,U.popupRef&&W.setAttribute("aria-haspopup","dialog"),U.alternativeText&&(W.title=U.alternativeText),U.noRotate&&W.classList.add("norotate"),!U.rect||this instanceof pR){const{rotation:z}=U;return!U.hasOwnCanvas&&z!==0&&this.setRotation(z,W),W}const{width:Q,height:R}=FZ(U.rect);if(!l&&U.borderStyle.width>0){s.borderWidth=`${U.borderStyle.width}px`;const z=U.borderStyle.horizontalCornerRadius,L=U.borderStyle.verticalCornerRadius;if(z>0||L>0){const f=`calc(${z}px * var(--scale-factor)) / calc(${L}px * var(--scale-factor))`;s.borderRadius=f}else if(this instanceof be){const f=`calc(${Q}px * var(--scale-factor)) / calc(${R}px * var(--scale-factor))`;s.borderRadius=f}switch(U.borderStyle.style){case hW.SOLID:s.borderStyle="solid";break;case hW.DASHED:s.borderStyle="dashed";break;case hW.BEVELED:Tl("Unimplemented border style: beveled");break;case hW.INSET:Tl("Unimplemented border style: inset");break;case hW.UNDERLINE:s.borderBottomStyle="solid";break}const D=U.borderColor||null;D?(S(this,Sc,!0),s.borderColor=nl.makeHexColor(D[0]|0,D[1]|0,D[2]|0)):s.borderWidth=0}const m=nl.normalizeRect([U.rect[0],Z.view[3]-U.rect[1]+Z.view[1],U.rect[2],Z.view[3]-U.rect[3]+Z.view[1]]),{pageWidth:e,pageHeight:T,pageX:Y,pageY:u}=c.rawDims;s.left=`${100*(m[0]-Y)/e}%`,s.top=`${100*(m[1]-u)/T}%`;const{rotation:B}=U;return U.hasOwnCanvas||B===0?(s.width=`${100*Q/e}%`,s.height=`${100*R/T}%`):this.setRotation(B,W),W}setRotation(l,U=this.container){if(!this.data.rect)return;const{pageWidth:Z,pageHeight:c}=this.parent.viewport.rawDims,{width:W,height:s}=FZ(this.data.rect);let Q,R;l%180===0?(Q=100*W/Z,R=100*s/c):(Q=100*s/Z,R=100*W/c),U.style.width=`${Q}%`,U.style.height=`${R}%`,U.setAttribute("data-main-rotation",(360-l)%360)}get _commonActions(){const l=(U,Z,c)=>{const W=c.detail[U],s=W[0],Q=W.slice(1);c.target.style[Z]=Ne[`${s}_HTML`](Q),this.annotationStorage.setValue(this.data.id,{[Z]:Ne[`${s}_rgb`](Q)})};return yl(this,"_commonActions",{display:U=>{const{display:Z}=U.detail,c=Z%2===1;this.container.style.visibility=c?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:c,noPrint:Z===1||Z===2})},print:U=>{this.annotationStorage.setValue(this.data.id,{noPrint:!U.detail.print})},hidden:U=>{const{hidden:Z}=U.detail;this.container.style.visibility=Z?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:Z,noView:Z})},focus:U=>{setTimeout(()=>U.target.focus({preventScroll:!1}),0)},userName:U=>{U.target.title=U.detail.userName},readonly:U=>{U.target.disabled=U.detail.readonly},required:U=>{this._setRequired(U.target,U.detail.required)},bgColor:U=>{l("bgColor","backgroundColor",U)},fillColor:U=>{l("fillColor","backgroundColor",U)},fgColor:U=>{l("fgColor","color",U)},textColor:U=>{l("textColor","color",U)},borderColor:U=>{l("borderColor","borderColor",U)},strokeColor:U=>{l("strokeColor","borderColor",U)},rotation:U=>{const Z=U.detail.rotation;this.setRotation(Z),this.annotationStorage.setValue(this.data.id,{rotation:Z})}})}_dispatchEventFromSandbox(l,U){const Z=this._commonActions;for(const c of Object.keys(U.detail)){const W=l[c]||Z[c];W==null||W(U)}}_setDefaultPropertiesFromJS(l){if(!this.enableScripting)return;const U=this.annotationStorage.getRawValue(this.data.id);if(!U)return;const Z=this._commonActions;for(const[c,W]of Object.entries(U)){const s=Z[c];if(s){const Q={detail:{[c]:W},target:l};s(Q),delete U[c]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:l}=this.data;if(!l)return;const[U,Z,c,W]=this.data.rect;if(l.length===1){const[,{x:z,y:L},{x:D,y:f}]=l[0];if(c===z&&W===L&&U===D&&Z===f)return}const{style:s}=this.container;let Q;if(F(this,Sc)){const{borderColor:z,borderWidth:L}=s;s.borderWidth=0,Q=["url('data:image/svg+xml;utf8,",'<svg xmlns="http://www.w3.org/2000/svg"',' preserveAspectRatio="none" viewBox="0 0 1 1">',`<g fill="transparent" stroke="${z}" stroke-width="${L}">`],this.container.classList.add("hasBorder")}const R=c-U,m=W-Z,{svgFactory:e}=this,T=e.createElement("svg");T.classList.add("quadrilateralsContainer"),T.setAttribute("width",0),T.setAttribute("height",0);const Y=e.createElement("defs");T.append(Y);const u=e.createElement("clipPath"),B=`clippath_${this.data.id}`;u.setAttribute("id",B),u.setAttribute("clipPathUnits","objectBoundingBox"),Y.append(u);for(const[,{x:z,y:L},{x:D,y:f}]of l){const j=e.createElement("rect"),q=(D-U)/R,Zl=(W-L)/m,Fl=(z-D)/R,al=(L-f)/m;j.setAttribute("x",q),j.setAttribute("y",Zl),j.setAttribute("width",Fl),j.setAttribute("height",al),u.append(j),Q==null||Q.push(`<rect vector-effect="non-scaling-stroke" x="${q}" y="${Zl}" width="${Fl}" height="${al}"/>`)}F(this,Sc)&&(Q.push("</g></svg>')"),s.backgroundImage=Q.join("")),this.container.append(T),this.container.style.clipPath=`url(#${B})`}_createPopup(){const{container:l,data:U}=this;l.setAttribute("aria-haspopup","dialog");const Z=S(this,Xc,new pR({data:{color:U.color,titleObj:U.titleObj,modificationDate:U.modificationDate,contentsObj:U.contentsObj,richText:U.richText,parentRect:U.rect,borderStyle:0,id:`popup_${U.id}`,rotation:U.rotation},parent:this.parent,elements:[this]}));this.parent.div.append(Z.render())}render(){El("Abstract method `AnnotationElement.render` called")}_getElementsByName(l,U=null){const Z=[];if(this._fieldObjects){const c=this._fieldObjects[l];if(c)for(const{page:W,id:s,exportValues:Q}of c){if(W===-1||s===U)continue;const R=typeof Q=="string"?Q:null,m=document.querySelector(`[data-element-id="${s}"]`);if(m&&!gt.has(m)){Tl(`_getElementsByName - element not allowed: ${s}`);continue}Z.push({id:s,exportValue:R,domElement:m})}return Z}for(const c of document.getElementsByName(l)){const{exportValue:W}=c,s=c.getAttribute("data-element-id");s!==U&>.has(c)&&Z.push({id:s,exportValue:W,domElement:c})}return Z}show(){var l;this.container&&(this.container.hidden=!1),(l=this.popup)==null||l.maybeShow()}hide(){var l;this.container&&(this.container.hidden=!0),(l=this.popup)==null||l.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const l=this.getElementsToTriggerPopup();if(Array.isArray(l))for(const U of l)U.classList.add("highlightArea");else l.classList.add("highlightArea")}get _isEditable(){return!1}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:l,data:{id:U}}=this;this.container.addEventListener("dblclick",()=>{var Z;(Z=this.linkService.eventBus)==null||Z.dispatch("switchannotationeditormode",{source:this,mode:l,editId:U})})}};St=new WeakMap,Sc=new WeakMap,Xc=new WeakMap,SV=new WeakSet,ki=function(a){const{container:{style:l},data:{rect:U,rotation:Z},parent:{viewport:{rawDims:{pageWidth:c,pageHeight:W,pageX:s,pageY:Q}}}}=this;U==null||U.splice(0,4,...a);const{width:R,height:m}=FZ(a);l.left=`${100*(a[0]-s)/c}%`,l.top=`${100*(W-a[3]+Q)/W}%`,Z===0?(l.width=`${100*R/c}%`,l.height=`${100*m/W}%`):this.setRotation(Z)};let tU=hJ;class he extends tU{constructor(l,U=null){super(l,{isRenderable:!0,ignoreBorder:!!(U!=null&&U.ignoreBorder),createQuadrilaterals:!0}),h(this,oZ),h(this,Ii),h(this,Di),this.isTooltipOnly=l.data.isTooltipOnly}render(){const{data:l,linkService:U}=this,Z=document.createElement("a");Z.setAttribute("data-element-id",l.id);let c=!1;return l.url?(U.addLinkAttributes(Z,l.url,l.newWindow),c=!0):l.action?(this._bindNamedAction(Z,l.action),c=!0):l.attachment?(G(this,Ii,Ib).call(this,Z,l.attachment,l.attachmentDest),c=!0):l.setOCGState?(G(this,Di,Db).call(this,Z,l.setOCGState),c=!0):l.dest?(this._bindLink(Z,l.dest),c=!0):(l.actions&&(l.actions.Action||l.actions["Mouse Up"]||l.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(Z,l),c=!0),l.resetForm?(this._bindResetFormAction(Z,l.resetForm),c=!0):this.isTooltipOnly&&!c&&(this._bindLink(Z,""),c=!0)),this.container.classList.add("linkAnnotation"),c&&this.container.append(Z),this.container}_bindLink(l,U){l.href=this.linkService.getDestinationHash(U),l.onclick=()=>(U&&this.linkService.goToDestination(U),!1),(U||U==="")&&G(this,oZ,Xt).call(this)}_bindNamedAction(l,U){l.href=this.linkService.getAnchorUrl(""),l.onclick=()=>(this.linkService.executeNamedAction(U),!1),G(this,oZ,Xt).call(this)}_bindJSAction(l,U){l.href=this.linkService.getAnchorUrl("");const Z=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const c of Object.keys(U.actions)){const W=Z.get(c);W&&(l[W]=()=>{var s;return(s=this.linkService.eventBus)==null||s.dispatch("dispatcheventinsandbox",{source:this,detail:{id:U.id,name:c}}),!1})}l.onclick||(l.onclick=()=>!1),G(this,oZ,Xt).call(this)}_bindResetFormAction(l,U){const Z=l.onclick;if(Z||(l.href=this.linkService.getAnchorUrl("")),G(this,oZ,Xt).call(this),!this._fieldObjects){Tl('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),Z||(l.onclick=()=>!1);return}l.onclick=()=>{var c;Z==null||Z();const{fields:W,refs:s,include:Q}=U,R=[];if(W.length!==0||s.length!==0){const T=new Set(s);for(const Y of W){const u=this._fieldObjects[Y]||[];for(const{id:B}of u)T.add(B)}for(const Y of Object.values(this._fieldObjects))for(const u of Y)T.has(u.id)===Q&&R.push(u)}else for(const T of Object.values(this._fieldObjects))R.push(...T);const m=this.annotationStorage,e=[];for(const T of R){const{id:Y}=T;switch(e.push(Y),T.type){case"text":{const B=T.defaultValue||"";m.setValue(Y,{value:B});break}case"checkbox":case"radiobutton":{const B=T.defaultValue===T.exportValues;m.setValue(Y,{value:B});break}case"combobox":case"listbox":{const B=T.defaultValue||"";m.setValue(Y,{value:B});break}default:continue}const u=document.querySelector(`[data-element-id="${Y}"]`);if(u){if(!gt.has(u)){Tl(`_bindResetFormAction - element not allowed: ${Y}`);continue}}else continue;u.dispatchEvent(new Event("resetform"))}return this.enableScripting&&((c=this.linkService.eventBus)==null||c.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:e,name:"ResetForm"}})),!1}}}oZ=new WeakSet,Xt=function(){this.container.setAttribute("data-internal-link","")},Ii=new WeakSet,Ib=function(a,l,U=null){a.href=this.linkService.getAnchorUrl(""),l.description&&(a.title=l.description),a.onclick=()=>{var Z;return(Z=this.downloadManager)==null||Z.openOrDownloadData(l.content,l.filename,U),!1},G(this,oZ,Xt).call(this)},Di=new WeakSet,Db=function(a,l){a.href=this.linkService.getAnchorUrl(""),a.onclick=()=>(this.linkService.executeSetOCGState(l),!1),G(this,oZ,Xt).call(this)};class bJ extends tU{constructor(l){super(l,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const l=document.createElement("img");return l.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",l.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),l.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.append(l),this.container}}class Kt extends tU{render(){return this.container}showElementAndHideCanvas(l){var U;this.data.hasOwnCanvas&&(((U=l.previousSibling)==null?void 0:U.nodeName)==="CANVAS"&&(l.previousSibling.hidden=!0),l.hidden=!1)}_getKeyModifier(l){return CU.platform.isMac?l.metaKey:l.ctrlKey}_setEventListener(l,U,Z,c,W){Z.includes("mouse")?l.addEventListener(Z,s=>{var Q;(Q=this.linkService.eventBus)==null||Q.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:c,value:W(s),shift:s.shiftKey,modifier:this._getKeyModifier(s)}})}):l.addEventListener(Z,s=>{var Q;if(Z==="blur"){if(!U.focused||!s.relatedTarget)return;U.focused=!1}else if(Z==="focus"){if(U.focused)return;U.focused=!0}W&&((Q=this.linkService.eventBus)==null||Q.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:c,value:W(s)}}))})}_setEventListeners(l,U,Z,c){var W,s,Q;for(const[R,m]of Z)(m==="Action"||(W=this.data.actions)!=null&&W[m])&&((m==="Focus"||m==="Blur")&&(U||(U={focused:!1})),this._setEventListener(l,U,R,m,c),m==="Focus"&&!((s=this.data.actions)!=null&&s.Blur)?this._setEventListener(l,U,"blur","Blur",null):m==="Blur"&&!((Q=this.data.actions)!=null&&Q.Focus)&&this._setEventListener(l,U,"focus","Focus",null))}_setBackgroundColor(l){const U=this.data.backgroundColor||null;l.style.backgroundColor=U===null?"transparent":nl.makeHexColor(U[0],U[1],U[2])}_setTextStyle(l){const U=["left","center","right"],{fontColor:Z}=this.data.defaultAppearanceData,c=this.data.defaultAppearanceData.fontSize||NJ,W=l.style;let s;const Q=2,R=m=>Math.round(10*m)/10;if(this.data.multiLine){const m=Math.abs(this.data.rect[3]-this.data.rect[1]-Q),e=Math.round(m/(dR*c))||1,T=m/e;s=Math.min(c,R(T/dR))}else{const m=Math.abs(this.data.rect[3]-this.data.rect[1]-Q);s=Math.min(c,R(m/dR))}W.fontSize=`calc(${s}px * var(--scale-factor))`,W.color=nl.makeHexColor(Z[0],Z[1],Z[2]),this.data.textAlignment!==null&&(W.textAlign=U[this.data.textAlignment])}_setRequired(l,U){U?l.setAttribute("required",!0):l.removeAttribute("required"),l.setAttribute("aria-required",U)}}class mJ extends Kt{constructor(l){const U=l.renderForms||l.data.hasOwnCanvas||!l.data.hasAppearance&&!!l.data.fieldValue;super(l,{isRenderable:U})}setPropertyOnSiblings(l,U,Z,c){const W=this.annotationStorage;for(const s of this._getElementsByName(l.name,l.id))s.domElement&&(s.domElement[U]=Z),W.setValue(s.id,{[c]:Z})}render(){var l,U;const Z=this.annotationStorage,c=this.data.id;this.container.classList.add("textWidgetAnnotation");let W=null;if(this.renderForms){const s=Z.getValue(c,{value:this.data.fieldValue});let Q=s.value||"";const R=Z.getValue(c,{charLimit:this.data.maxLen}).charLimit;R&&Q.length>R&&(Q=Q.slice(0,R));let m=s.formattedValue||((l=this.data.textContent)==null?void 0:l.join(`
|
||
`))||null;m&&this.data.comb&&(m=m.replaceAll(/\s+/g,""));const e={userValue:Q,formattedValue:m,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(W=document.createElement("textarea"),W.textContent=m!=null?m:Q,this.data.doNotScroll&&(W.style.overflowY="hidden")):(W=document.createElement("input"),W.type="text",W.setAttribute("value",m!=null?m:Q),this.data.doNotScroll&&(W.style.overflowX="hidden")),this.data.hasOwnCanvas&&(W.hidden=!0),gt.add(W),W.setAttribute("data-element-id",c),W.disabled=this.data.readOnly,W.name=this.data.fieldName,W.tabIndex=YW,this._setRequired(W,this.data.required),R&&(W.maxLength=R),W.addEventListener("input",Y=>{Z.setValue(c,{value:Y.target.value}),this.setPropertyOnSiblings(W,"value",Y.target.value,"value"),e.formattedValue=null}),W.addEventListener("resetform",Y=>{var B;const u=(B=this.data.defaultFieldValue)!=null?B:"";W.value=e.userValue=u,e.formattedValue=null});let T=Y=>{const{formattedValue:u}=e;u!=null&&(Y.target.value=u),Y.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){W.addEventListener("focus",u=>{var B;if(e.focused)return;const{target:z}=u;e.userValue&&(z.value=e.userValue),e.lastCommittedValue=z.value,e.commitKey=1,(B=this.data.actions)!=null&&B.Focus||(e.focused=!0)}),W.addEventListener("updatefromsandbox",u=>{this.showElementAndHideCanvas(u.target);const B={value(z){var L;e.userValue=(L=z.detail.value)!=null?L:"",Z.setValue(c,{value:e.userValue.toString()}),z.target.value=e.userValue},formattedValue(z){const{formattedValue:L}=z.detail;e.formattedValue=L,L!=null&&z.target!==document.activeElement&&(z.target.value=L),Z.setValue(c,{formattedValue:L})},selRange(z){z.target.setSelectionRange(...z.detail.selRange)},charLimit:z=>{var L;const{charLimit:D}=z.detail,{target:f}=z;if(D===0){f.removeAttribute("maxLength");return}f.setAttribute("maxLength",D);let j=e.userValue;!j||j.length<=D||(j=j.slice(0,D),f.value=e.userValue=j,Z.setValue(c,{value:j}),(L=this.linkService.eventBus)==null||L.dispatch("dispatcheventinsandbox",{source:this,detail:{id:c,name:"Keystroke",value:j,willCommit:!0,commitKey:1,selStart:f.selectionStart,selEnd:f.selectionEnd}}))}};this._dispatchEventFromSandbox(B,u)}),W.addEventListener("keydown",u=>{var B;e.commitKey=1;let z=-1;if(u.key==="Escape"?z=0:u.key==="Enter"&&!this.data.multiLine?z=2:u.key==="Tab"&&(e.commitKey=3),z===-1)return;const{value:L}=u.target;e.lastCommittedValue!==L&&(e.lastCommittedValue=L,e.userValue=L,(B=this.linkService.eventBus)==null||B.dispatch("dispatcheventinsandbox",{source:this,detail:{id:c,name:"Keystroke",value:L,willCommit:!0,commitKey:z,selStart:u.target.selectionStart,selEnd:u.target.selectionEnd}}))});const Y=T;T=null,W.addEventListener("blur",u=>{var B,z;if(!e.focused||!u.relatedTarget)return;(B=this.data.actions)!=null&&B.Blur||(e.focused=!1);const{value:L}=u.target;e.userValue=L,e.lastCommittedValue!==L&&((z=this.linkService.eventBus)==null||z.dispatch("dispatcheventinsandbox",{source:this,detail:{id:c,name:"Keystroke",value:L,willCommit:!0,commitKey:e.commitKey,selStart:u.target.selectionStart,selEnd:u.target.selectionEnd}})),Y(u)}),(U=this.data.actions)!=null&&U.Keystroke&&W.addEventListener("beforeinput",u=>{var B;e.lastCommittedValue=null;const{data:z,target:L}=u,{value:D,selectionStart:f,selectionEnd:j}=L;let q=f,Zl=j;switch(u.inputType){case"deleteWordBackward":{const Fl=D.substring(0,f).match(/\w*[^\w]*$/);Fl&&(q-=Fl[0].length);break}case"deleteWordForward":{const Fl=D.substring(f).match(/^[^\w]*\w*/);Fl&&(Zl+=Fl[0].length);break}case"deleteContentBackward":f===j&&(q-=1);break;case"deleteContentForward":f===j&&(Zl+=1);break}u.preventDefault(),(B=this.linkService.eventBus)==null||B.dispatch("dispatcheventinsandbox",{source:this,detail:{id:c,name:"Keystroke",value:D,change:z||"",willCommit:!1,selStart:q,selEnd:Zl}})}),this._setEventListeners(W,e,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],u=>u.target.value)}if(T&&W.addEventListener("blur",T),this.data.comb){const Y=(this.data.rect[2]-this.data.rect[0])/R;W.classList.add("comb"),W.style.letterSpacing=`calc(${Y}px * var(--scale-factor) - 1ch)`}}else W=document.createElement("div"),W.textContent=this.data.fieldValue,W.style.verticalAlign="middle",W.style.display="table-cell",this.data.hasOwnCanvas&&(W.hidden=!0);return this._setTextStyle(W),this._setBackgroundColor(W),this._setDefaultPropertiesFromJS(W),this.container.append(W),this.container}}class eJ extends Kt{constructor(l){super(l,{isRenderable:!!l.data.hasOwnCanvas})}}class MJ extends Kt{constructor(l){super(l,{isRenderable:l.renderForms})}render(){const l=this.annotationStorage,U=this.data,Z=U.id;let c=l.getValue(Z,{value:U.exportValue===U.fieldValue}).value;typeof c=="string"&&(c=c!=="Off",l.setValue(Z,{value:c})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const W=document.createElement("input");return gt.add(W),W.setAttribute("data-element-id",Z),W.disabled=U.readOnly,this._setRequired(W,this.data.required),W.type="checkbox",W.name=U.fieldName,c&&W.setAttribute("checked",!0),W.setAttribute("exportValue",U.exportValue),W.tabIndex=YW,W.addEventListener("change",s=>{const{name:Q,checked:R}=s.target;for(const m of this._getElementsByName(Q,Z)){const e=R&&m.exportValue===U.exportValue;m.domElement&&(m.domElement.checked=e),l.setValue(m.id,{value:e})}l.setValue(Z,{value:R})}),W.addEventListener("resetform",s=>{const Q=U.defaultFieldValue||"Off";s.target.checked=Q===U.exportValue}),this.enableScripting&&this.hasJSActions&&(W.addEventListener("updatefromsandbox",s=>{const Q={value(R){R.target.checked=R.detail.value!=="Off",l.setValue(Z,{value:R.target.checked})}};this._dispatchEventFromSandbox(Q,s)}),this._setEventListeners(W,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],s=>s.target.checked)),this._setBackgroundColor(W),this._setDefaultPropertiesFromJS(W),this.container.append(W),this.container}}class be extends Kt{constructor(l){super(l,{isRenderable:l.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const l=this.annotationStorage,U=this.data,Z=U.id;let c=l.getValue(Z,{value:U.fieldValue===U.buttonValue}).value;if(typeof c=="string"&&(c=c!==U.buttonValue,l.setValue(Z,{value:c})),c)for(const s of this._getElementsByName(U.fieldName,Z))l.setValue(s.id,{value:!1});const W=document.createElement("input");if(gt.add(W),W.setAttribute("data-element-id",Z),W.disabled=U.readOnly,this._setRequired(W,this.data.required),W.type="radio",W.name=U.fieldName,c&&W.setAttribute("checked",!0),W.tabIndex=YW,W.addEventListener("change",s=>{const{name:Q,checked:R}=s.target;for(const m of this._getElementsByName(Q,Z))l.setValue(m.id,{value:!1});l.setValue(Z,{value:R})}),W.addEventListener("resetform",s=>{const Q=U.defaultFieldValue;s.target.checked=Q!=null&&Q===U.buttonValue}),this.enableScripting&&this.hasJSActions){const s=U.buttonValue;W.addEventListener("updatefromsandbox",Q=>{const R={value:m=>{const e=s===m.detail.value;for(const T of this._getElementsByName(m.target.name)){const Y=e&&T.id===Z;T.domElement&&(T.domElement.checked=Y),l.setValue(T.id,{value:Y})}}};this._dispatchEventFromSandbox(R,Q)}),this._setEventListeners(W,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],Q=>Q.target.checked)}return this._setBackgroundColor(W),this._setDefaultPropertiesFromJS(W),this.container.append(W),this.container}}class GJ extends he{constructor(l){super(l,{ignoreBorder:l.data.hasAppearance})}render(){const l=super.render();l.classList.add("buttonWidgetAnnotation","pushButton");const U=l.lastChild;return this.enableScripting&&this.hasJSActions&&U&&(this._setDefaultPropertiesFromJS(U),U.addEventListener("updatefromsandbox",Z=>{this._dispatchEventFromSandbox({},Z)})),l}}class JJ extends Kt{constructor(l){super(l,{isRenderable:l.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const l=this.annotationStorage,U=this.data.id,Z=l.getValue(U,{value:this.data.fieldValue}),c=document.createElement("select");gt.add(c),c.setAttribute("data-element-id",U),c.disabled=this.data.readOnly,this._setRequired(c,this.data.required),c.name=this.data.fieldName,c.tabIndex=YW;let W=this.data.combo&&this.data.options.length>0;this.data.combo||(c.size=this.data.options.length,this.data.multiSelect&&(c.multiple=!0)),c.addEventListener("resetform",e=>{const T=this.data.defaultFieldValue;for(const Y of c.options)Y.selected=Y.value===T});for(const e of this.data.options){const T=document.createElement("option");T.textContent=e.displayValue,T.value=e.exportValue,Z.value.includes(e.exportValue)&&(T.setAttribute("selected",!0),W=!1),c.append(T)}let s=null;if(W){const e=document.createElement("option");e.value=" ",e.setAttribute("hidden",!0),e.setAttribute("selected",!0),c.prepend(e),s=()=>{e.remove(),c.removeEventListener("input",s),s=null},c.addEventListener("input",s)}const Q=e=>{const T=e?"value":"textContent",{options:Y,multiple:u}=c;return u?Array.prototype.filter.call(Y,B=>B.selected).map(B=>B[T]):Y.selectedIndex===-1?null:Y[Y.selectedIndex][T]};let R=Q(!1);const m=e=>{const T=e.target.options;return Array.prototype.map.call(T,Y=>({displayValue:Y.textContent,exportValue:Y.value}))};return this.enableScripting&&this.hasJSActions?(c.addEventListener("updatefromsandbox",e=>{const T={value(Y){s==null||s();const u=Y.detail.value,B=new Set(Array.isArray(u)?u:[u]);for(const z of c.options)z.selected=B.has(z.value);l.setValue(U,{value:Q(!0)}),R=Q(!1)},multipleSelection(Y){c.multiple=!0},remove(Y){const u=c.options,B=Y.detail.remove;u[B].selected=!1,c.remove(B),u.length>0&&Array.prototype.findIndex.call(u,z=>z.selected)===-1&&(u[0].selected=!0),l.setValue(U,{value:Q(!0),items:m(Y)}),R=Q(!1)},clear(Y){for(;c.length!==0;)c.remove(0);l.setValue(U,{value:null,items:[]}),R=Q(!1)},insert(Y){const{index:u,displayValue:B,exportValue:z}=Y.detail.insert,L=c.children[u],D=document.createElement("option");D.textContent=B,D.value=z,L?L.before(D):c.append(D),l.setValue(U,{value:Q(!0),items:m(Y)}),R=Q(!1)},items(Y){const{items:u}=Y.detail;for(;c.length!==0;)c.remove(0);for(const B of u){const{displayValue:z,exportValue:L}=B,D=document.createElement("option");D.textContent=z,D.value=L,c.append(D)}c.options.length>0&&(c.options[0].selected=!0),l.setValue(U,{value:Q(!0),items:m(Y)}),R=Q(!1)},indices(Y){const u=new Set(Y.detail.indices);for(const B of Y.target.options)B.selected=u.has(B.index);l.setValue(U,{value:Q(!0)}),R=Q(!1)},editable(Y){Y.target.disabled=!Y.detail.editable}};this._dispatchEventFromSandbox(T,e)}),c.addEventListener("input",e=>{var T;const Y=Q(!0),u=Q(!1);l.setValue(U,{value:Y}),e.preventDefault(),(T=this.linkService.eventBus)==null||T.dispatch("dispatcheventinsandbox",{source:this,detail:{id:U,name:"Keystroke",value:R,change:u,changeEx:Y,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(c,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],e=>e.target.value)):c.addEventListener("input",function(e){l.setValue(U,{value:Q(!0)})}),this.data.combo&&this._setTextStyle(c),this._setBackgroundColor(c),this._setDefaultPropertiesFromJS(c),this.container.append(c),this.container}}class pR extends tU{constructor(l){const{data:U,elements:Z}=l;super(l,{isRenderable:tU._hasPopupData(U)}),this.elements=Z,this.popup=null}render(){this.container.classList.add("popupAnnotation");const l=this.popup=new TJ({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open}),U=[];for(const Z of this.elements)Z.popup=l,U.push(Z.data.id),Z.addHighlightArea();return this.container.setAttribute("aria-controls",U.map(Z=>`${Bm}${Z}`).join(",")),this.container}}class TJ{constructor({container:l,color:U,elements:Z,titleObj:c,modificationDate:W,contentsObj:s,richText:Q,parent:R,rect:m,parentRect:e,open:T}){h(this,Bc),h(this,oV),h(this,xi),h(this,ri),h(this,ji),h(this,Oi),h(this,oc),h(this,yc),h(this,LV),h(this,Yc,G(this,ji,Cb).bind(this)),h(this,Ei,G(this,LV,gi).bind(this)),h(this,wi,G(this,yc,zV).bind(this)),h(this,pc,G(this,oc,yV).bind(this)),h(this,IF,null),h(this,Hl,null),h(this,yZ,null),h(this,DF,null),h(this,XV,null),h(this,YV,null),h(this,uc,null),h(this,zZ,!1),h(this,Td,null),h(this,LZ,null),h(this,pV,null),h(this,kZ,null),h(this,uV,null),h(this,Yt,null),h(this,EF,!1);var Y;S(this,Hl,l),S(this,uV,c),S(this,yZ,s),S(this,kZ,Q),S(this,YV,R),S(this,IF,U),S(this,pV,m),S(this,uc,e),S(this,XV,Z),S(this,DF,km.toDateObject(W)),this.trigger=Z.flatMap(u=>u.getElementsToTriggerPopup());for(const u of this.trigger)u.addEventListener("click",F(this,pc)),u.addEventListener("mouseenter",F(this,wi)),u.addEventListener("mouseleave",F(this,Ei)),u.classList.add("popupTriggerArea");for(const u of Z)(Y=u.container)==null||Y.addEventListener("keydown",F(this,Yc));F(this,Hl).hidden=!0,T&&G(this,oc,yV).call(this)}render(){if(F(this,Td))return;const l=S(this,Td,document.createElement("div"));if(l.className="popup",F(this,IF)){const W=l.style.outlineColor=nl.makeHexColor(...F(this,IF));CSS.supports("background-color","color-mix(in srgb, red 30%, white)")?l.style.backgroundColor=`color-mix(in srgb, ${W} 30%, white)`:l.style.backgroundColor=nl.makeHexColor(...F(this,IF).map(s=>Math.floor(.7*(255-s)+s)))}const U=document.createElement("span");U.className="header";const Z=document.createElement("h1");if(U.append(Z),{dir:Z.dir,str:Z.textContent}=F(this,uV),l.append(U),F(this,DF)){const W=document.createElement("span");W.classList.add("popupDate"),W.setAttribute("data-l10n-id","pdfjs-annotation-date-string"),W.setAttribute("data-l10n-args",JSON.stringify({date:F(this,DF).toLocaleDateString(),time:F(this,DF).toLocaleTimeString()})),U.append(W)}const c=F(this,Bc,BV);if(c)Re.render({xfaHtml:c,intent:"richText",div:l}),l.lastChild.classList.add("richText","popupContent");else{const W=this._formatContents(F(this,yZ));l.append(W)}F(this,Hl).append(l)}_formatContents({str:l,dir:U}){const Z=document.createElement("p");Z.classList.add("popupContent"),Z.dir=U;const c=l.split(/(?:\r\n?|\n)/);for(let W=0,s=c.length;W<s;++W){const Q=c[W];Z.append(document.createTextNode(Q)),W<s-1&&Z.append(document.createElement("br"))}return Z}updateEdited({rect:l,popupContent:U}){var Z;F(this,Yt)||S(this,Yt,{contentsObj:F(this,yZ),richText:F(this,kZ)}),l&&S(this,LZ,null),U&&(S(this,kZ,G(this,ri,wb).call(this,U)),S(this,yZ,null)),(Z=F(this,Td))==null||Z.remove(),S(this,Td,null)}resetEdited(){var l;F(this,Yt)&&({contentsObj:PU(this,yZ)._,richText:PU(this,kZ)._}=F(this,Yt),S(this,Yt,null),(l=F(this,Td))==null||l.remove(),S(this,Td,null),S(this,LZ,null))}forceHide(){S(this,EF,this.isVisible),F(this,EF)&&(F(this,Hl).hidden=!0)}maybeShow(){F(this,EF)&&(F(this,Td)||G(this,yc,zV).call(this),S(this,EF,!1),F(this,Hl).hidden=!1)}get isVisible(){return F(this,Hl).hidden===!1}}Yc=new WeakMap,Ei=new WeakMap,wi=new WeakMap,pc=new WeakMap,IF=new WeakMap,Hl=new WeakMap,yZ=new WeakMap,DF=new WeakMap,XV=new WeakMap,YV=new WeakMap,uc=new WeakMap,zZ=new WeakMap,Td=new WeakMap,LZ=new WeakMap,pV=new WeakMap,kZ=new WeakMap,uV=new WeakMap,Yt=new WeakMap,EF=new WeakMap,Bc=new WeakSet,BV=function(){const a=F(this,kZ),l=F(this,yZ);return a!=null&&a.str&&(!(l!=null&&l.str)||l.str===a.str)&&F(this,kZ).html||null},oV=new WeakSet,Ci=function(){var a,l,U;return((U=(l=(a=F(this,Bc,BV))==null?void 0:a.attributes)==null?void 0:l.style)==null?void 0:U.fontSize)||0},xi=new WeakSet,Eb=function(){var a,l,U;return((U=(l=(a=F(this,Bc,BV))==null?void 0:a.attributes)==null?void 0:l.style)==null?void 0:U.color)||null},ri=new WeakSet,wb=function(a){const l=[],U={str:a,html:{name:"div",attributes:{dir:"auto"},children:[{name:"p",children:l}]}},Z={style:{color:F(this,xi,Eb),fontSize:F(this,oV,Ci)?`calc(${F(this,oV,Ci)}px * var(--scale-factor))`:""}};for(const c of a.split(`
|
||
`))l.push({name:"span",value:c,attributes:Z});return U},ji=new WeakSet,Cb=function(a){a.altKey||a.shiftKey||a.ctrlKey||a.metaKey||(a.key==="Enter"||a.key==="Escape"&&F(this,zZ))&&G(this,oc,yV).call(this)},Oi=new WeakSet,xb=function(){if(F(this,LZ)!==null)return;const{page:{view:a},viewport:{rawDims:{pageWidth:l,pageHeight:U,pageX:Z,pageY:c}}}=F(this,YV);let W=!!F(this,uc),s=W?F(this,uc):F(this,pV);for(const u of F(this,XV))if(!s||nl.intersect(u.data.rect,s)!==null){s=u.data.rect,W=!0;break}const Q=nl.normalizeRect([s[0],a[3]-s[1]+a[1],s[2],a[3]-s[3]+a[1]]),R=5,m=W?s[2]-s[0]+R:0,e=Q[0]+m,T=Q[1];S(this,LZ,[100*(e-Z)/l,100*(T-c)/U]);const{style:Y}=F(this,Hl);Y.left=`${F(this,LZ)[0]}%`,Y.top=`${F(this,LZ)[1]}%`},oc=new WeakSet,yV=function(){S(this,zZ,!F(this,zZ)),F(this,zZ)?(G(this,yc,zV).call(this),F(this,Hl).addEventListener("click",F(this,pc)),F(this,Hl).addEventListener("keydown",F(this,Yc))):(G(this,LV,gi).call(this),F(this,Hl).removeEventListener("click",F(this,pc)),F(this,Hl).removeEventListener("keydown",F(this,Yc)))},yc=new WeakSet,zV=function(){F(this,Td)||this.render(),this.isVisible?F(this,zZ)&&F(this,Hl).classList.add("focused"):(G(this,Oi,xb).call(this),F(this,Hl).hidden=!1,F(this,Hl).style.zIndex=parseInt(F(this,Hl).style.zIndex)+1e3)},LV=new WeakSet,gi=function(){F(this,Hl).classList.remove("focused"),!(F(this,zZ)||!this.isVisible)&&(F(this,Hl).hidden=!0,F(this,Hl).style.zIndex=parseInt(F(this,Hl).style.zIndex)-1e3)};class me extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),this.textContent=l.data.textContent,this.textPosition=l.data.textPosition,this.annotationEditorType=Bl.FREETEXT}render(){if(this.container.classList.add("freeTextAnnotation"),this.textContent){const l=document.createElement("div");l.classList.add("annotationTextContent"),l.setAttribute("role","comment");for(const U of this.textContent){const Z=document.createElement("span");Z.textContent=U,l.append(Z)}this.container.append(l)}return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this._editOnDoubleClick(),this.container}get _isEditable(){return this.data.hasOwnCanvas}}class SJ extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),h(this,kV,null)}render(){this.container.classList.add("lineAnnotation");const l=this.data,{width:U,height:Z}=FZ(l.rect),c=this.svgFactory.create(U,Z,!0),W=S(this,kV,this.svgFactory.createElement("svg:line"));return W.setAttribute("x1",l.rect[2]-l.lineCoordinates[0]),W.setAttribute("y1",l.rect[3]-l.lineCoordinates[1]),W.setAttribute("x2",l.rect[2]-l.lineCoordinates[2]),W.setAttribute("y2",l.rect[3]-l.lineCoordinates[3]),W.setAttribute("stroke-width",l.borderStyle.width||1),W.setAttribute("stroke","transparent"),W.setAttribute("fill","transparent"),c.append(W),this.container.append(c),!l.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return F(this,kV)}addHighlightArea(){this.container.classList.add("highlightArea")}}kV=new WeakMap;class XJ extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),h(this,IV,null)}render(){this.container.classList.add("squareAnnotation");const l=this.data,{width:U,height:Z}=FZ(l.rect),c=this.svgFactory.create(U,Z,!0),W=l.borderStyle.width,s=S(this,IV,this.svgFactory.createElement("svg:rect"));return s.setAttribute("x",W/2),s.setAttribute("y",W/2),s.setAttribute("width",U-W),s.setAttribute("height",Z-W),s.setAttribute("stroke-width",W||1),s.setAttribute("stroke","transparent"),s.setAttribute("fill","transparent"),c.append(s),this.container.append(c),!l.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return F(this,IV)}addHighlightArea(){this.container.classList.add("highlightArea")}}IV=new WeakMap;class YJ extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),h(this,DV,null)}render(){this.container.classList.add("circleAnnotation");const l=this.data,{width:U,height:Z}=FZ(l.rect),c=this.svgFactory.create(U,Z,!0),W=l.borderStyle.width,s=S(this,DV,this.svgFactory.createElement("svg:ellipse"));return s.setAttribute("cx",U/2),s.setAttribute("cy",Z/2),s.setAttribute("rx",U/2-W/2),s.setAttribute("ry",Z/2-W/2),s.setAttribute("stroke-width",W||1),s.setAttribute("stroke","transparent"),s.setAttribute("fill","transparent"),c.append(s),this.container.append(c),!l.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return F(this,DV)}addHighlightArea(){this.container.classList.add("highlightArea")}}DV=new WeakMap;class ee extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),h(this,EV,null),this.containerClassName="polylineAnnotation",this.svgElementName="svg:polyline"}render(){this.container.classList.add(this.containerClassName);const l=this.data,{width:U,height:Z}=FZ(l.rect),c=this.svgFactory.create(U,Z,!0);let W=[];for(const Q of l.vertices){const R=Q.x-l.rect[0],m=l.rect[3]-Q.y;W.push(R+","+m)}W=W.join(" ");const s=S(this,EV,this.svgFactory.createElement(this.svgElementName));return s.setAttribute("points",W),s.setAttribute("stroke-width",l.borderStyle.width||1),s.setAttribute("stroke","transparent"),s.setAttribute("fill","transparent"),c.append(s),this.container.append(c),!l.popupRef&&this.hasPopupData&&this._createPopup(),this.container}getElementsToTriggerPopup(){return F(this,EV)}addHighlightArea(){this.container.classList.add("highlightArea")}}EV=new WeakMap;class pJ extends ee{constructor(l){super(l),this.containerClassName="polygonAnnotation",this.svgElementName="svg:polygon"}}class uJ extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0})}render(){return this.container.classList.add("caretAnnotation"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container}}class Me extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),h(this,wV,[]),this.containerClassName="inkAnnotation",this.svgElementName="svg:polyline",this.annotationEditorType=Bl.INK}render(){this.container.classList.add(this.containerClassName);const l=this.data,{width:U,height:Z}=FZ(l.rect),c=this.svgFactory.create(U,Z,!0);for(const W of l.inkLists){let s=[];for(const R of W){const m=R.x-l.rect[0],e=l.rect[3]-R.y;s.push(`${m},${e}`)}s=s.join(" ");const Q=this.svgFactory.createElement(this.svgElementName);F(this,wV).push(Q),Q.setAttribute("points",s),Q.setAttribute("stroke-width",l.borderStyle.width||1),Q.setAttribute("stroke","transparent"),Q.setAttribute("fill","transparent"),!l.popupRef&&this.hasPopupData&&this._createPopup(),c.append(Q)}return this.container.append(c),this.container}getElementsToTriggerPopup(){return F(this,wV)}addHighlightArea(){this.container.classList.add("highlightArea")}}wV=new WeakMap;class BJ extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("highlightAnnotation"),this.container}}class oJ extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("underlineAnnotation"),this.container}}class yJ extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("squigglyAnnotation"),this.container}}class zJ extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){return!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container.classList.add("strikeoutAnnotation"),this.container}}class Ge extends tU{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0})}render(){return this.container.classList.add("stampAnnotation"),!this.data.popupRef&&this.hasPopupData&&this._createPopup(),this.container}}class LJ extends tU{constructor(l){var U;super(l,{isRenderable:!0}),h(this,xV),h(this,CV,null);const{file:Z}=this.data;this.filename=Z.filename,this.content=Z.content,(U=this.linkService.eventBus)==null||U.dispatch("fileattachmentannotation",fl({source:this},Z))}render(){this.container.classList.add("fileAttachmentAnnotation");const{container:l,data:U}=this;let Z;U.hasAppearance||U.fillAlpha===0?Z=document.createElement("div"):(Z=document.createElement("img"),Z.src=`${this.imageResourcesPath}annotation-${/paperclip/i.test(U.name)?"paperclip":"pushpin"}.svg`,U.fillAlpha&&U.fillAlpha<1&&(Z.style=`filter: opacity(${Math.round(U.fillAlpha*100)}%);`)),Z.addEventListener("dblclick",G(this,xV,Ki).bind(this)),S(this,CV,Z);const{isMac:c}=CU.platform;return l.addEventListener("keydown",W=>{W.key==="Enter"&&(c?W.metaKey:W.ctrlKey)&&G(this,xV,Ki).call(this)}),!U.popupRef&&this.hasPopupData?this._createPopup():Z.classList.add("popupTriggerArea"),l.append(Z),l}getElementsToTriggerPopup(){return F(this,CV)}addHighlightArea(){this.container.classList.add("highlightArea")}}CV=new WeakMap,xV=new WeakSet,Ki=function(){var a;(a=this.downloadManager)==null||a.openOrDownloadData(this.content,this.filename)};class kJ{constructor({div:l,accessibilityManager:U,annotationCanvasMap:Z,annotationEditorUIManager:c,page:W,viewport:s}){h(this,Hi),h(this,jV),h(this,rV,null),h(this,wF,null),h(this,zc,new Map),this.div=l,S(this,rV,U),S(this,wF,Z),this.page=W,this.viewport=s,this.zIndex=0,this._annotationEditorUIManager=c}render(l){return Ul(this,null,function*(){var U;const{annotations:Z}=l,c=this.div;Ot(c,this.viewport);const W=new Map,s={data:null,layer:c,linkService:l.linkService,downloadManager:l.downloadManager,imageResourcesPath:l.imageResourcesPath||"",renderForms:l.renderForms!==!1,svgFactory:new nR,annotationStorage:l.annotationStorage||new mR,enableScripting:l.enableScripting===!0,hasJSActions:l.hasJSActions,fieldObjects:l.fieldObjects,parent:this,elements:null};for(const Q of Z){if(Q.noHTML)continue;const R=Q.annotationType===dU.POPUP;if(R){const T=W.get(Q.id);if(!T)continue;s.elements=T}else{const{width:T,height:Y}=FZ(Q.rect);if(T<=0||Y<=0)continue}s.data=Q;const m=RJ.create(s);if(!m.isRenderable)continue;if(!R&&Q.popupRef){const T=W.get(Q.popupRef);T?T.push(m):W.set(Q.popupRef,[m])}const e=m.render();Q.hidden&&(e.style.visibility="hidden"),G(this,Hi,rb).call(this,e,Q.id),m.annotationEditorType>0&&(F(this,zc).set(m.data.id,m),(U=this._annotationEditorUIManager)==null||U.renderAnnotationElement(m))}G(this,jV,vi).call(this)})}update({viewport:l}){const U=this.div;this.viewport=l,Ot(U,{rotation:l.rotation}),G(this,jV,vi).call(this),U.hidden=!1}getEditableAnnotations(){return Array.from(F(this,zc).values())}getEditableAnnotation(l){return F(this,zc).get(l)}}rV=new WeakMap,wF=new WeakMap,zc=new WeakMap,Hi=new WeakSet,rb=function(a,l){var U;const Z=a.firstChild||a;Z.id=`${Bm}${l}`,this.div.append(a),(U=F(this,rV))==null||U.moveElementInDOM(this.div,a,Z,!1)},jV=new WeakSet,vi=function(){if(!F(this,wF))return;const a=this.div;for(const[l,U]of F(this,wF)){const Z=a.querySelector(`[data-annotation-id="${l}"]`);if(!Z)continue;U.className="annotationContent";const{firstChild:c}=Z;c?c.nodeName==="CANVAS"?c.replaceWith(U):c.classList.contains("annotationContent")?c.after(U):c.before(U):Z.append(U)}F(this,wF).clear()};const es=/\r\n?|\n/g,yd=class NU extends Cl{constructor(l){super(Ld(fl({},l),{name:"freeTextEditor"})),h(this,Pi),h(this,fi),h(this,Ai),h(this,kc),h(this,Dc),h(this,_i),h(this,$i),h(this,OV,this.editorDivBlur.bind(this)),h(this,gV,this.editorDivFocus.bind(this)),h(this,KV,this.editorDivInput.bind(this)),h(this,HV,this.editorDivKeydown.bind(this)),h(this,vV,this.editorDivPaste.bind(this)),h(this,Sd,void 0),h(this,qU,""),h(this,PV,`${this.id}-editor`),h(this,$U,void 0),h(this,Lc,null),S(this,Sd,l.color||NU._defaultColor||Cl._defaultLineColor),S(this,$U,l.fontSize||NU._defaultFontSize)}static get _keyboardManager(){const l=NU.prototype,U=W=>W.isEmpty(),Z=MW.TRANSLATE_SMALL,c=MW.TRANSLATE_BIG;return yl(this,"_keyboardManager",new eW([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],l.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],l.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],l._translateEmpty,{args:[-Z,0],checker:U}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],l._translateEmpty,{args:[-c,0],checker:U}],[["ArrowRight","mac+ArrowRight"],l._translateEmpty,{args:[Z,0],checker:U}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],l._translateEmpty,{args:[c,0],checker:U}],[["ArrowUp","mac+ArrowUp"],l._translateEmpty,{args:[0,-Z],checker:U}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],l._translateEmpty,{args:[0,-c],checker:U}],[["ArrowDown","mac+ArrowDown"],l._translateEmpty,{args:[0,Z],checker:U}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],l._translateEmpty,{args:[0,c],checker:U}]]))}static initialize(l,U){Cl.initialize(l,U,{strings:["pdfjs-free-text-default-content"]});const Z=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(Z.getPropertyValue("--freetext-padding"))}static updateDefaultParams(l,U){switch(l){case ml.FREETEXT_SIZE:NU._defaultFontSize=U;break;case ml.FREETEXT_COLOR:NU._defaultColor=U;break}}updateParams(l,U){switch(l){case ml.FREETEXT_SIZE:G(this,Pi,jb).call(this,U);break;case ml.FREETEXT_COLOR:G(this,fi,Ob).call(this,U);break}}static get defaultPropertiesToUpdate(){return[[ml.FREETEXT_SIZE,NU._defaultFontSize],[ml.FREETEXT_COLOR,NU._defaultColor||Cl._defaultLineColor]]}get propertiesToUpdate(){return[[ml.FREETEXT_SIZE,F(this,$U)],[ml.FREETEXT_COLOR,F(this,Sd)]]}_translateEmpty(l,U){this._uiManager.translateSelectedEditors(l,U,!0)}getInitialTranslation(){const l=this.parentScale;return[-NU._internalPadding*l,-(NU._internalPadding+F(this,$U))*l]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){this.isInEditMode()||(this.parent.setEditingState(!1),this.parent.updateToolbar(Bl.FREETEXT),super.enableEditMode(),this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),this.editorDiv.addEventListener("keydown",F(this,HV)),this.editorDiv.addEventListener("focus",F(this,gV)),this.editorDiv.addEventListener("blur",F(this,OV)),this.editorDiv.addEventListener("input",F(this,KV)),this.editorDiv.addEventListener("paste",F(this,vV)))}disableEditMode(){this.isInEditMode()&&(this.parent.setEditingState(!0),super.disableEditMode(),this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",F(this,PV)),this._isDraggable=!0,this.editorDiv.removeEventListener("keydown",F(this,HV)),this.editorDiv.removeEventListener("focus",F(this,gV)),this.editorDiv.removeEventListener("blur",F(this,OV)),this.editorDiv.removeEventListener("input",F(this,KV)),this.editorDiv.removeEventListener("paste",F(this,vV)),this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"))}focusin(l){this._focusEventsAllowed&&(super.focusin(l),l.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(){var l;this.width||(this.enableEditMode(),this.editorDiv.focus(),(l=this._initialOptions)!=null&&l.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===""}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const l=F(this,qU),U=S(this,qU,G(this,Ai,gb).call(this).trimEnd());if(l===U)return;const Z=c=>{if(S(this,qU,c),!c){this.remove();return}G(this,Dc,_V).call(this),this._uiManager.rebuild(this),G(this,kc,fV).call(this)};this.addCommands({cmd:()=>{Z(U)},undo:()=>{Z(l)},mustExec:!1}),G(this,kc,fV).call(this)}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}dblclick(l){this.enterInEditMode()}keydown(l){l.target===this.div&&l.key==="Enter"&&(this.enterInEditMode(),l.preventDefault())}editorDivKeydown(l){NU._keyboardManager.exec(this,l)}editorDivFocus(l){this.isEditing=!0}editorDivBlur(l){this.isEditing=!1}editorDivInput(l){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}render(){if(this.div)return this.div;let l,U;this.width&&(l=this.x,U=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",F(this,PV)),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text"),this.enableEditing(),Cl._l10nPromise.get("pdfjs-free-text-default-content").then(c=>{var W;return(W=this.editorDiv)==null?void 0:W.setAttribute("default-content",c)}),this.editorDiv.contentEditable=!0;const{style:Z}=this.editorDiv;if(Z.fontSize=`calc(${F(this,$U)}px * var(--scale-factor))`,Z.color=F(this,Sd),this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),Ws(this,this.div,["dblclick","keydown"]),this.width){const[c,W]=this.parentDimensions;if(this.annotationElementId){const{position:s}=F(this,Lc);let[Q,R]=this.getInitialTranslation();[Q,R]=this.pageTranslationToScreen(Q,R);const[m,e]=this.pageDimensions,[T,Y]=this.pageTranslation;let u,B;switch(this.rotation){case 0:u=l+(s[0]-T)/m,B=U+this.height-(s[1]-Y)/e;break;case 90:u=l+(s[0]-T)/m,B=U-(s[1]-Y)/e,[Q,R]=[R,-Q];break;case 180:u=l-this.width+(s[0]-T)/m,B=U-(s[1]-Y)/e,[Q,R]=[-Q,-R];break;case 270:u=l+(s[0]-T-this.height*e)/m,B=U+(s[1]-Y-this.width*m)/e,[Q,R]=[-R,Q];break}this.setAt(u*c,B*W,Q,R)}else this.setAt(l*c,U*W,this.width*c,this.height*W);G(this,Dc,_V).call(this),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}editorDivPaste(l){var U,Z,c;const W=l.clipboardData||window.clipboardData,{types:s}=W;if(s.length===1&&s[0]==="text/plain")return;l.preventDefault();const Q=G(U=NU,qV,qi).call(U,W.getData("text")||"").replaceAll(es,`
|
||
`);if(!Q)return;const R=window.getSelection();if(!R.rangeCount)return;this.editorDiv.normalize(),R.deleteFromDocument();const m=R.getRangeAt(0);if(!Q.includes(`
|
||
`)){m.insertNode(document.createTextNode(Q)),this.editorDiv.normalize(),R.collapseToStart();return}const{startContainer:e,startOffset:T}=m,Y=[],u=[];if(e.nodeType===Node.TEXT_NODE){const L=e.parentElement;if(u.push(e.nodeValue.slice(T).replaceAll(es,"")),L!==this.editorDiv){let D=Y;for(const f of this.editorDiv.childNodes){if(f===L){D=u;continue}D.push(G(Z=NU,Ic,AV).call(Z,f))}}Y.push(e.nodeValue.slice(0,T).replaceAll(es,""))}else if(e===this.editorDiv){let L=Y,D=0;for(const f of this.editorDiv.childNodes)D++===T&&(L=u),L.push(G(c=NU,Ic,AV).call(c,f))}S(this,qU,`${Y.join(`
|
||
`)}${Q}${u.join(`
|
||
`)}`),G(this,Dc,_V).call(this);const B=new Range;let z=Y.reduce((L,D)=>L+D.length,0);for(const{firstChild:L}of this.editorDiv.childNodes)if(L.nodeType===Node.TEXT_NODE){const D=L.nodeValue.length;if(z<=D){B.setStart(L,z),B.setEnd(L,z);break}z-=D}R.removeAllRanges(),R.addRange(B)}get contentDiv(){return this.editorDiv}static deserialize(l,U,Z){var c;let W=null;if(l instanceof me){const{data:{defaultAppearanceData:{fontSize:Q,fontColor:R},rect:m,rotation:e,id:T},textContent:Y,textPosition:u,parent:{page:{pageNumber:B}}}=l;if(!Y||Y.length===0)return null;W=l={annotationType:Bl.FREETEXT,color:Array.from(R),fontSize:Q,value:Y.join(`
|
||
`),position:u,pageIndex:B-1,rect:m.slice(0),rotation:e,id:T,deleted:!1}}const s=super.deserialize(l,U,Z);return S(s,$U,l.fontSize),S(s,Sd,nl.makeHexColor(...l.color)),S(s,qU,G(c=NU,qV,qi).call(c,l.value)),s.annotationElementId=l.id||null,S(s,Lc,W),s}serialize(l=!1){if(this.isEmpty())return null;if(this.deleted)return{pageIndex:this.pageIndex,id:this.annotationElementId,deleted:!0};const U=NU._internalPadding*this.parentScale,Z=this.getRect(U,U),c=Cl._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:F(this,Sd)),W={annotationType:Bl.FREETEXT,color:c,fontSize:F(this,$U),value:G(this,_i,Kb).call(this),pageIndex:this.pageIndex,rect:Z,rotation:this.rotation,structTreeParentId:this._structTreeParentId};return l?W:this.annotationElementId&&!G(this,$i,Hb).call(this,W)?null:(W.id=this.annotationElementId,W)}renderAnnotationElement(l){const U=super.renderAnnotationElement(l);if(this.deleted)return U;const{style:Z}=U;Z.fontSize=`calc(${F(this,$U)}px * var(--scale-factor))`,Z.color=F(this,Sd),U.replaceChildren();for(const W of F(this,qU).split(`
|
||
`)){const s=document.createElement("div");s.append(W?document.createTextNode(W):document.createElement("br")),U.append(s)}const c=NU._internalPadding*this.parentScale;return l.updateEdited({rect:this.getRect(c,c),popupContent:F(this,qU)}),U}resetAnnotationElement(l){super.resetAnnotationElement(l),l.resetEdited()}};OV=new WeakMap,gV=new WeakMap,KV=new WeakMap,HV=new WeakMap,vV=new WeakMap,Sd=new WeakMap,qU=new WeakMap,PV=new WeakMap,$U=new WeakMap,Lc=new WeakMap,Pi=new WeakSet,jb=function(a){const l=Z=>{this.editorDiv.style.fontSize=`calc(${Z}px * var(--scale-factor))`,this.translate(0,-(Z-F(this,$U))*this.parentScale),S(this,$U,Z),G(this,kc,fV).call(this)},U=F(this,$U);this.addCommands({cmd:l.bind(this,a),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ml.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})},fi=new WeakSet,Ob=function(a){const l=Z=>{S(this,Sd,this.editorDiv.style.color=Z)},U=F(this,Sd);this.addCommands({cmd:l.bind(this,a),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ml.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})},Ai=new WeakSet,gb=function(){var a;const l=[];this.editorDiv.normalize();for(const U of this.editorDiv.childNodes)l.push(G(a=yd,Ic,AV).call(a,U));return l.join(`
|
||
`)},kc=new WeakSet,fV=function(){const[a,l]=this.parentDimensions;let U;if(this.isAttachedToDOM)U=this.div.getBoundingClientRect();else{const{currentLayer:Z,div:c}=this,W=c.style.display,s=c.classList.contains("hidden");c.classList.remove("hidden"),c.style.display="hidden",Z.div.append(this.div),U=c.getBoundingClientRect(),c.remove(),c.style.display=W,c.classList.toggle("hidden",s)}this.rotation%180===this.parentRotation%180?(this.width=U.width/a,this.height=U.height/l):(this.width=U.height/a,this.height=U.width/l),this.fixAndSetPosition()},Ic=new WeakSet,AV=function(a){return(a.nodeType===Node.TEXT_NODE?a.nodeValue:a.innerText).replaceAll(es,"")},Dc=new WeakSet,_V=function(){if(this.editorDiv.replaceChildren(),!!F(this,qU))for(const a of F(this,qU).split(`
|
||
`)){const l=document.createElement("div");l.append(a?document.createTextNode(a):document.createElement("br")),this.editorDiv.append(l)}},_i=new WeakSet,Kb=function(){return F(this,qU).replaceAll(" "," ")},qV=new WeakSet,qi=function(a){return a.replaceAll(" "," ")},$i=new WeakSet,Hb=function(a){const{value:l,fontSize:U,color:Z,pageIndex:c}=F(this,Lc);return this._hasBeenMoved||a.value!==l||a.fontSize!==U||a.color.some((W,s)=>W!==Z[s])||a.pageIndex!==c},h(yd,Ic),h(yd,qV),el(yd,"_freeTextDefaultContent",""),el(yd,"_internalPadding",0),el(yd,"_defaultColor",null),el(yd,"_defaultFontSize",10),el(yd,"_type","freetext"),el(yd,"_editorType",Bl.FREETEXT);let IJ=yd;class uR{constructor(l,U=0,Z=0,c=!0){h(this,lN),h(this,Ec),h(this,UN),h(this,dN),h(this,Un),h(this,$V,void 0),h(this,pt,[]),h(this,Xd,[]);let W=1/0,s=-1/0,Q=1/0,R=-1/0;const m=m0(10,-4);for(const{x:L,y:D,width:f,height:j}of l){const q=Math.floor((L-U)/m)*m,Zl=Math.ceil((L+f+U)/m)*m,Fl=Math.floor((D-U)/m)*m,al=Math.ceil((D+j+U)/m)*m,bl=[q,Fl,al,!0],Sl=[Zl,Fl,al,!1];F(this,pt).push(bl,Sl),W=Math.min(W,q),s=Math.max(s,Zl),Q=Math.min(Q,Fl),R=Math.max(R,al)}const e=s-W+2*Z,T=R-Q+2*Z,Y=W-Z,u=Q-Z,B=F(this,pt).at(c?-1:-2),z=[B[0],B[2]];for(const L of F(this,pt)){const[D,f,j]=L;L[0]=(D-Y)/e,L[1]=(f-u)/T,L[2]=(j-u)/T}S(this,$V,{x:Y,y:u,width:e,height:T,lastPoint:z})}getOutlines(){F(this,pt).sort((U,Z)=>U[0]-Z[0]||U[1]-Z[1]||U[2]-Z[2]);const l=[];for(const U of F(this,pt))U[3]?(l.push(...G(this,Un,ZN).call(this,U)),G(this,UN,Pb).call(this,U)):(G(this,dN,fb).call(this,U),l.push(...G(this,Un,ZN).call(this,U)));return G(this,lN,vb).call(this,l)}}$V=new WeakMap,pt=new WeakMap,Xd=new WeakMap,lN=new WeakSet,vb=function(a){const l=[],U=new Set;for(const W of a){const[s,Q,R]=W;l.push([s,Q,W],[s,R,W])}l.sort((W,s)=>W[1]-s[1]||W[0]-s[0]);for(let W=0,s=l.length;W<s;W+=2){const Q=l[W][2],R=l[W+1][2];Q.push(R),R.push(Q),U.add(Q),U.add(R)}const Z=[];let c;for(;U.size>0;){const W=U.values().next().value;let[s,Q,R,m,e]=W;U.delete(W);let T=s,Y=Q;for(c=[s,R],Z.push(c);;){let u;if(U.has(m))u=m;else if(U.has(e))u=e;else break;U.delete(u),[s,Q,R,m,e]=u,T!==s&&(c.push(T,Y,s,Y===Q?Q:R),T=s),Y=Y===Q?R:Q}c.push(T,Y)}return new DJ(Z,F(this,$V))},Ec=new WeakSet,ln=function(a){const l=F(this,Xd);let U=0,Z=l.length-1;for(;U<=Z;){const c=U+Z>>1,W=l[c][0];if(W===a)return c;W<a?U=c+1:Z=c-1}return Z+1},UN=new WeakSet,Pb=function([,a,l]){const U=G(this,Ec,ln).call(this,a);F(this,Xd).splice(U,0,[a,l])},dN=new WeakSet,fb=function([,a,l]){const U=G(this,Ec,ln).call(this,a);for(let Z=U;Z<F(this,Xd).length;Z++){const[c,W]=F(this,Xd)[Z];if(c!==a)break;if(c===a&&W===l){F(this,Xd).splice(Z,1);return}}for(let Z=U-1;Z>=0;Z--){const[c,W]=F(this,Xd)[Z];if(c!==a)break;if(c===a&&W===l){F(this,Xd).splice(Z,1);return}}},Un=new WeakSet,ZN=function(a){const[l,U,Z]=a,c=[[l,U,Z]],W=G(this,Ec,ln).call(this,Z);for(let s=0;s<W;s++){const[Q,R]=F(this,Xd)[s];for(let m=0,e=c.length;m<e;m++){const[,T,Y]=c[m];if(!(R<=T||Y<=Q)){if(T>=Q){if(Y>R)c[m][1]=R;else{if(e===1)return[];c.splice(m,1),m--,e--}continue}c[m][2]=Q,Y>R&&c.push([l,R,Y])}}}return c};class Je{toSVGPath(){throw new Error("Abstract method `toSVGPath` must be implemented.")}get box(){throw new Error("Abstract getter `box` must be implemented.")}serialize(l,U){throw new Error("Abstract method `serialize` must be implemented.")}get free(){return this instanceof BR}}class DJ extends Je{constructor(l,U){super(),h(this,dn,void 0),h(this,wc,void 0),S(this,wc,l),S(this,dn,U)}toSVGPath(){const l=[];for(const U of F(this,wc)){let[Z,c]=U;l.push(`M${Z} ${c}`);for(let W=2;W<U.length;W+=2){const s=U[W],Q=U[W+1];s===Z?(l.push(`V${Q}`),c=Q):Q===c&&(l.push(`H${s}`),Z=s)}l.push("Z")}return l.join(" ")}serialize([l,U,Z,c],W){const s=[],Q=Z-l,R=c-U;for(const m of F(this,wc)){const e=new Array(m.length);for(let T=0;T<m.length;T+=2)e[T]=l+m[T]*Q,e[T+1]=c-m[T+1]*R;s.push(e)}return s}get box(){return F(this,dn)}}dn=new WeakMap,wc=new WeakMap;const N0=class ch{constructor({x:l,y:U},Z,c,W,s,Q=0){h(this,cn),h(this,Kd,void 0),h(this,IZ,[]),h(this,Cc,void 0),h(this,xc,void 0),h(this,Hd,[]),h(this,ul,new Float64Array(18)),h(this,CF,void 0),h(this,xF,void 0),h(this,Zn,void 0),h(this,tn,void 0),h(this,rc,void 0),h(this,jc,void 0),h(this,ut,[]),S(this,Kd,Z),S(this,jc,W*c),S(this,xc,s),F(this,ul).set([NaN,NaN,NaN,NaN,l,U],6),S(this,Cc,Q),S(this,tn,F(ch,Fn)*c),S(this,Zn,F(ch,FN)*c),S(this,rc,c),F(this,ut).push(l,U)}get free(){return!0}isEmpty(){return isNaN(F(this,ul)[8])}add({x:l,y:U}){var Z;S(this,CF,l),S(this,xF,U);const[c,W,s,Q]=F(this,Kd);let[R,m,e,T]=F(this,ul).subarray(8,12);const Y=l-e,u=U-T,B=Math.hypot(Y,u);if(B<F(this,Zn))return!1;const z=B-F(this,tn),L=z/B,D=L*Y,f=L*u;let j=R,q=m;R=e,m=T,e+=D,T+=f,(Z=F(this,ut))==null||Z.push(l,U);const Zl=-f/z,Fl=D/z,al=Zl*F(this,jc),bl=Fl*F(this,jc);return F(this,ul).set(F(this,ul).subarray(2,8),0),F(this,ul).set([e+al,T+bl],4),F(this,ul).set(F(this,ul).subarray(14,18),12),F(this,ul).set([e-al,T-bl],16),isNaN(F(this,ul)[6])?(F(this,Hd).length===0&&(F(this,ul).set([R+al,m+bl],2),F(this,Hd).push(NaN,NaN,NaN,NaN,(R+al-c)/s,(m+bl-W)/Q),F(this,ul).set([R-al,m-bl],14),F(this,IZ).push(NaN,NaN,NaN,NaN,(R-al-c)/s,(m-bl-W)/Q)),F(this,ul).set([j,q,R,m,e,T],6),!this.isEmpty()):(F(this,ul).set([j,q,R,m,e,T],6),Math.abs(Math.atan2(q-m,j-R)-Math.atan2(f,D))<Math.PI/2?([R,m,e,T]=F(this,ul).subarray(2,6),F(this,Hd).push(NaN,NaN,NaN,NaN,((R+e)/2-c)/s,((m+T)/2-W)/Q),[R,m,j,q]=F(this,ul).subarray(14,18),F(this,IZ).push(NaN,NaN,NaN,NaN,((j+R)/2-c)/s,((q+m)/2-W)/Q),!0):([j,q,R,m,e,T]=F(this,ul).subarray(0,6),F(this,Hd).push(((j+5*R)/6-c)/s,((q+5*m)/6-W)/Q,((5*R+e)/6-c)/s,((5*m+T)/6-W)/Q,((R+e)/2-c)/s,((m+T)/2-W)/Q),[e,T,R,m,j,q]=F(this,ul).subarray(12,18),F(this,IZ).push(((j+5*R)/6-c)/s,((q+5*m)/6-W)/Q,((5*R+e)/6-c)/s,((5*m+T)/6-W)/Q,((R+e)/2-c)/s,((m+T)/2-W)/Q),!0))}toSVGPath(){if(this.isEmpty())return"";const l=F(this,Hd),U=F(this,IZ),Z=F(this,ul).subarray(4,6),c=F(this,ul).subarray(16,18),[W,s,Q,R]=F(this,Kd),[m,e,T,Y]=G(this,cn,cN).call(this);if(isNaN(F(this,ul)[6])&&!this.isEmpty())return`M${(F(this,ul)[2]-W)/Q} ${(F(this,ul)[3]-s)/R} L${(F(this,ul)[4]-W)/Q} ${(F(this,ul)[5]-s)/R} L${m} ${e} L${T} ${Y} L${(F(this,ul)[16]-W)/Q} ${(F(this,ul)[17]-s)/R} L${(F(this,ul)[14]-W)/Q} ${(F(this,ul)[15]-s)/R} Z`;const u=[];u.push(`M${l[4]} ${l[5]}`);for(let B=6;B<l.length;B+=6)isNaN(l[B])?u.push(`L${l[B+4]} ${l[B+5]}`):u.push(`C${l[B]} ${l[B+1]} ${l[B+2]} ${l[B+3]} ${l[B+4]} ${l[B+5]}`);u.push(`L${(Z[0]-W)/Q} ${(Z[1]-s)/R} L${m} ${e} L${T} ${Y} L${(c[0]-W)/Q} ${(c[1]-s)/R}`);for(let B=U.length-6;B>=6;B-=6)isNaN(U[B])?u.push(`L${U[B+4]} ${U[B+5]}`):u.push(`C${U[B]} ${U[B+1]} ${U[B+2]} ${U[B+3]} ${U[B+4]} ${U[B+5]}`);return u.push(`L${U[4]} ${U[5]} Z`),u.join(" ")}getOutlines(){var f;var l;const U=F(this,Hd),Z=F(this,IZ),c=F(this,ul),W=c.subarray(4,6),s=c.subarray(16,18),[Q,R,m,e]=F(this,Kd),T=new Float64Array(((f=(l=F(this,ut))==null?void 0:l.length)!=null?f:0)+2);for(let j=0,q=T.length-2;j<q;j+=2)T[j]=(F(this,ut)[j]-Q)/m,T[j+1]=(F(this,ut)[j+1]-R)/e;T[T.length-2]=(F(this,CF)-Q)/m,T[T.length-1]=(F(this,xF)-R)/e;const[Y,u,B,z]=G(this,cn,cN).call(this);if(isNaN(c[6])&&!this.isEmpty()){const j=new Float64Array(36);return j.set([NaN,NaN,NaN,NaN,(c[2]-Q)/m,(c[3]-R)/e,NaN,NaN,NaN,NaN,(c[4]-Q)/m,(c[5]-R)/e,NaN,NaN,NaN,NaN,Y,u,NaN,NaN,NaN,NaN,B,z,NaN,NaN,NaN,NaN,(c[16]-Q)/m,(c[17]-R)/e,NaN,NaN,NaN,NaN,(c[14]-Q)/m,(c[15]-R)/e],0),new BR(j,T,F(this,Kd),F(this,rc),F(this,Cc),F(this,xc))}const L=new Float64Array(F(this,Hd).length+24+F(this,IZ).length);let D=U.length;for(let j=0;j<D;j+=2){if(isNaN(U[j])){L[j]=L[j+1]=NaN;continue}L[j]=U[j],L[j+1]=U[j+1]}L.set([NaN,NaN,NaN,NaN,(W[0]-Q)/m,(W[1]-R)/e,NaN,NaN,NaN,NaN,Y,u,NaN,NaN,NaN,NaN,B,z,NaN,NaN,NaN,NaN,(s[0]-Q)/m,(s[1]-R)/e],D),D+=24;for(let j=Z.length-6;j>=6;j-=6)for(let q=0;q<6;q+=2){if(isNaN(Z[j+q])){L[D]=L[D+1]=NaN,D+=2;continue}L[D]=Z[j+q],L[D+1]=Z[j+q+1],D+=2}return L.set([NaN,NaN,NaN,NaN,Z[4],Z[5]],D),new BR(L,T,F(this,Kd),F(this,rc),F(this,Cc),F(this,xc))}};Kd=new WeakMap,IZ=new WeakMap,Cc=new WeakMap,xc=new WeakMap,Hd=new WeakMap,ul=new WeakMap,CF=new WeakMap,xF=new WeakMap,Zn=new WeakMap,tn=new WeakMap,rc=new WeakMap,jc=new WeakMap,ut=new WeakMap,Fn=new WeakMap,tN=new WeakMap,FN=new WeakMap,cn=new WeakSet,cN=function(){const a=F(this,ul).subarray(4,6),l=F(this,ul).subarray(16,18),[U,Z,c,W]=F(this,Kd);return[(F(this,CF)+(a[0]-l[0])/2-U)/c,(F(this,xF)+(a[1]-l[1])/2-Z)/W,(F(this,CF)+(l[0]-a[0])/2-U)/c,(F(this,xF)+(l[1]-a[1])/2-Z)/W]},h(N0,Fn,8),h(N0,tN,2),h(N0,FN,F(N0,Fn)+F(N0,tN));let Te=N0;class BR extends Je{constructor(l,U,Z,c,W,s){super(),h(this,jF),h(this,OF),h(this,WN),h(this,Oc,void 0),h(this,rF,null),h(this,DZ,void 0),h(this,Wn,void 0),h(this,ld,void 0),h(this,an,void 0),h(this,Al,void 0),S(this,Al,l),S(this,ld,U),S(this,Oc,Z),S(this,an,c),S(this,DZ,W),S(this,Wn,s),G(this,WN,Ab).call(this,s);const{x:Q,y:R,width:m,height:e}=F(this,rF);for(let T=0,Y=l.length;T<Y;T+=2)l[T]=(l[T]-Q)/m,l[T+1]=(l[T+1]-R)/e;for(let T=0,Y=U.length;T<Y;T+=2)U[T]=(U[T]-Q)/m,U[T+1]=(U[T+1]-R)/e}toSVGPath(){const l=[`M${F(this,Al)[4]} ${F(this,Al)[5]}`];for(let U=6,Z=F(this,Al).length;U<Z;U+=6){if(isNaN(F(this,Al)[U])){l.push(`L${F(this,Al)[U+4]} ${F(this,Al)[U+5]}`);continue}l.push(`C${F(this,Al)[U]} ${F(this,Al)[U+1]} ${F(this,Al)[U+2]} ${F(this,Al)[U+3]} ${F(this,Al)[U+4]} ${F(this,Al)[U+5]}`)}return l.push("Z"),l.join(" ")}serialize([l,U,Z,c],W){const s=Z-l,Q=c-U;let R,m;switch(W){case 0:R=G(this,jF,gc).call(this,F(this,Al),l,c,s,-Q),m=G(this,jF,gc).call(this,F(this,ld),l,c,s,-Q);break;case 90:R=G(this,OF,Kc).call(this,F(this,Al),l,U,s,Q),m=G(this,OF,Kc).call(this,F(this,ld),l,U,s,Q);break;case 180:R=G(this,jF,gc).call(this,F(this,Al),Z,U,-s,Q),m=G(this,jF,gc).call(this,F(this,ld),Z,U,-s,Q);break;case 270:R=G(this,OF,Kc).call(this,F(this,Al),Z,c,-s,-Q),m=G(this,OF,Kc).call(this,F(this,ld),Z,c,-s,-Q);break}return{outline:Array.from(R),points:[Array.from(m)]}}get box(){return F(this,rF)}getNewOutline(l,U){const{x:Z,y:c,width:W,height:s}=F(this,rF),[Q,R,m,e]=F(this,Oc),T=W*m,Y=s*e,u=Z*m+Q,B=c*e+R,z=new Te({x:F(this,ld)[0]*T+u,y:F(this,ld)[1]*Y+B},F(this,Oc),F(this,an),l,F(this,Wn),U!=null?U:F(this,DZ));for(let L=2;L<F(this,ld).length;L+=2)z.add({x:F(this,ld)[L]*T+u,y:F(this,ld)[L+1]*Y+B});return z.getOutlines()}}Oc=new WeakMap,rF=new WeakMap,DZ=new WeakMap,Wn=new WeakMap,ld=new WeakMap,an=new WeakMap,Al=new WeakMap,jF=new WeakSet,gc=function(a,l,U,Z,c){const W=new Float64Array(a.length);for(let s=0,Q=a.length;s<Q;s+=2)W[s]=l+a[s]*Z,W[s+1]=U+a[s+1]*c;return W},OF=new WeakSet,Kc=function(a,l,U,Z,c){const W=new Float64Array(a.length);for(let s=0,Q=a.length;s<Q;s+=2)W[s]=l+a[s+1]*Z,W[s+1]=U+a[s]*c;return W},WN=new WeakSet,Ab=function(a){const l=F(this,Al);let U=l[4],Z=l[5],c=U,W=Z,s=U,Q=Z,R=U,m=Z;const e=a?Math.max:Math.min;for(let z=6,L=l.length;z<L;z+=6){if(isNaN(l[z]))c=Math.min(c,l[z+4]),W=Math.min(W,l[z+5]),s=Math.max(s,l[z+4]),Q=Math.max(Q,l[z+5]),m<l[z+5]?(R=l[z+4],m=l[z+5]):m===l[z+5]&&(R=e(R,l[z+4]));else{const D=nl.bezierBoundingBox(U,Z,...l.slice(z,z+6));c=Math.min(c,D[0]),W=Math.min(W,D[1]),s=Math.max(s,D[2]),Q=Math.max(Q,D[3]),m<D[3]?(R=D[2],m=D[3]):m===D[3]&&(R=e(R,D[2]))}U=l[z+4],Z=l[z+5]}const T=c-F(this,DZ),Y=W-F(this,DZ),u=s-c+2*F(this,DZ),B=Q-W+2*F(this,DZ);S(this,rF,{x:T,y:Y,width:u,height:B,lastPoint:[R,m]})};const Se=class ft{constructor({editor:l=null,uiManager:U=null}){h(this,Rn),h(this,hn),h(this,nN),h(this,EZ),h(this,sN),h(this,vd),h(this,Vn,G(this,nN,_b).bind(this)),h(this,nn,G(this,sN,qb).bind(this)),h(this,Yd,null),h(this,gF,null),h(this,Hc,void 0),h(this,WU,null),h(this,sn,!1),h(this,vc,!1),h(this,Qn,null),h(this,Nn,void 0),h(this,Bt,null),h(this,Pc,void 0);var Z;l?(S(this,vc,!1),S(this,Pc,ml.HIGHLIGHT_COLOR),S(this,Qn,l)):(S(this,vc,!0),S(this,Pc,ml.HIGHLIGHT_DEFAULT_COLOR)),S(this,Bt,(l==null?void 0:l._uiManager)||U),S(this,Nn,F(this,Bt)._eventBus),S(this,Hc,(l==null?void 0:l.color)||((Z=F(this,Bt))==null?void 0:Z.highlightColors.values().next().value)||"#FFFF98")}static get _keyboardManager(){return yl(this,"_keyboardManager",new eW([[["Escape","mac+Escape"],ft.prototype._hideDropdownFromKeyboard],[[" ","mac+ "],ft.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight","mac+ArrowDown","mac+ArrowRight"],ft.prototype._moveToNext],[["ArrowUp","ArrowLeft","mac+ArrowUp","mac+ArrowLeft"],ft.prototype._moveToPrevious],[["Home","mac+Home"],ft.prototype._moveToBeginning],[["End","mac+End"],ft.prototype._moveToEnd]]))}renderButton(){const l=S(this,Yd,document.createElement("button"));l.className="colorPicker",l.tabIndex="0",l.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button"),l.setAttribute("aria-haspopup",!0),l.addEventListener("click",G(this,EZ,ot).bind(this)),l.addEventListener("keydown",F(this,Vn));const U=S(this,gF,document.createElement("span"));return U.className="swatch",U.setAttribute("aria-hidden",!0),U.style.backgroundColor=F(this,Hc),l.append(U),l}renderMainDropdown(){const l=S(this,WU,G(this,Rn,aN).call(this));return l.setAttribute("aria-orientation","horizontal"),l.setAttribute("aria-labelledby","highlightColorPickerLabel"),l}_colorSelectFromKeyboard(l){if(l.target===F(this,Yd)){G(this,EZ,ot).call(this,l);return}const U=l.target.getAttribute("data-color");U&&G(this,hn,VN).call(this,U,l)}_moveToNext(l){var U,Z;if(!F(this,vd,wZ)){G(this,EZ,ot).call(this,l);return}if(l.target===F(this,Yd)){(U=F(this,WU).firstChild)==null||U.focus();return}(Z=l.target.nextSibling)==null||Z.focus()}_moveToPrevious(l){var U,Z;if(l.target===((U=F(this,WU))==null?void 0:U.firstChild)||l.target===F(this,Yd)){F(this,vd,wZ)&&this._hideDropdownFromKeyboard();return}F(this,vd,wZ)||G(this,EZ,ot).call(this,l),(Z=l.target.previousSibling)==null||Z.focus()}_moveToBeginning(l){var U;if(!F(this,vd,wZ)){G(this,EZ,ot).call(this,l);return}(U=F(this,WU).firstChild)==null||U.focus()}_moveToEnd(l){var U;if(!F(this,vd,wZ)){G(this,EZ,ot).call(this,l);return}(U=F(this,WU).lastChild)==null||U.focus()}hideDropdown(){var l;(l=F(this,WU))==null||l.classList.add("hidden"),window.removeEventListener("pointerdown",F(this,nn))}_hideDropdownFromKeyboard(){var l;if(!F(this,vc)){if(!F(this,vd,wZ)){(l=F(this,Qn))==null||l.unselect();return}this.hideDropdown(),F(this,Yd).focus({preventScroll:!0,focusVisible:F(this,sn)})}}updateColor(l){if(F(this,gF)&&(F(this,gF).style.backgroundColor=l),!F(this,WU))return;const U=F(this,Bt).highlightColors.values();for(const Z of F(this,WU).children)Z.setAttribute("aria-selected",U.next().value===l)}destroy(){var l,U;(l=F(this,Yd))==null||l.remove(),S(this,Yd,null),S(this,gF,null),(U=F(this,WU))==null||U.remove(),S(this,WU,null)}};Vn=new WeakMap,nn=new WeakMap,Yd=new WeakMap,gF=new WeakMap,Hc=new WeakMap,WU=new WeakMap,sn=new WeakMap,vc=new WeakMap,Qn=new WeakMap,Nn=new WeakMap,Bt=new WeakMap,Pc=new WeakMap,Rn=new WeakSet,aN=function(){const a=document.createElement("div");a.addEventListener("contextmenu",xU),a.className="dropdown",a.role="listbox",a.setAttribute("aria-multiselectable",!1),a.setAttribute("aria-orientation","vertical"),a.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown");for(const[l,U]of F(this,Bt).highlightColors){const Z=document.createElement("button");Z.tabIndex="0",Z.role="option",Z.setAttribute("data-color",U),Z.title=l,Z.setAttribute("data-l10n-id",`pdfjs-editor-colorpicker-${l}`);const c=document.createElement("span");Z.append(c),c.className="swatch",c.style.backgroundColor=U,Z.setAttribute("aria-selected",U===F(this,Hc)),Z.addEventListener("click",G(this,hn,VN).bind(this,U)),a.append(Z)}return a.addEventListener("keydown",F(this,Vn)),a},hn=new WeakSet,VN=function(a,l){l.stopPropagation(),F(this,Nn).dispatch("switchannotationeditorparams",{source:this,type:F(this,Pc),value:a})},nN=new WeakSet,_b=function(a){Se._keyboardManager.exec(this,a)},EZ=new WeakSet,ot=function(a){if(F(this,vd,wZ)){this.hideDropdown();return}if(S(this,sn,a.detail===0),window.addEventListener("pointerdown",F(this,nn)),F(this,WU)){F(this,WU).classList.remove("hidden");return}const l=S(this,WU,G(this,Rn,aN).call(this));F(this,Yd).append(l)},sN=new WeakSet,qb=function(a){var l;(l=F(this,WU))!=null&&l.contains(a.target)||this.hideDropdown()},vd=new WeakSet,wZ=function(){return F(this,WU)&&!F(this,WU).classList.contains("hidden")};let Xe=Se;const XU=class RU extends Cl{constructor(l){super(Ld(fl({},l),{name:"highlightEditor"})),h(this,Gn),h(this,Jn),h(this,RN),h(this,hN),h(this,bN),h(this,Tn),h(this,PF),h(this,eN),h(this,lW),h(this,AF),h(this,MN),h(this,GN),h(this,fc,null),h(this,bn,0),h(this,yt,void 0),h(this,KF,null),h(this,Ac,null),h(this,Fd,null),h(this,mn,null),h(this,en,0),h(this,HF,null),h(this,pd,null),h(this,EU,null),h(this,Ud,!1),h(this,QN,G(this,eN,dm).bind(this)),h(this,_c,null),h(this,vF,void 0),h(this,aU,null),h(this,qc,""),h(this,Pd,void 0),h(this,Mn,""),this.color=l.color||RU._defaultColor,S(this,Pd,l.thickness||RU._defaultThickness),S(this,vF,l.opacity||RU._defaultOpacity),S(this,yt,l.boxes||null),S(this,Mn,l.methodOfCreation||""),S(this,qc,l.text||""),this._isDraggable=!1,l.highlightId>-1?(S(this,Ud,!0),G(this,Jn,NN).call(this,l),G(this,PF,$c).call(this)):(S(this,fc,l.anchorNode),S(this,bn,l.anchorOffset),S(this,mn,l.focusNode),S(this,en,l.focusOffset),G(this,Gn,iN).call(this),G(this,PF,$c).call(this),this.rotate(this.rotation))}static get _keyboardManager(){const l=RU.prototype;return yl(this,"_keyboardManager",new eW([[["ArrowLeft","mac+ArrowLeft"],l._moveCaret,{args:[0]}],[["ArrowRight","mac+ArrowRight"],l._moveCaret,{args:[1]}],[["ArrowUp","mac+ArrowUp"],l._moveCaret,{args:[2]}],[["ArrowDown","mac+ArrowDown"],l._moveCaret,{args:[3]}]]))}get telemetryInitialData(){return{action:"added",type:F(this,Ud)?"free_highlight":"highlight",color:this._uiManager.highlightColorNames.get(this.color),thickness:F(this,Pd),methodOfCreation:F(this,Mn)}}get telemetryFinalData(){return{type:"highlight",color:this._uiManager.highlightColorNames.get(this.color)}}static computeTelemetryFinalData(l){return{numberOfColors:l.get("color").size}}static initialize(l,U){var Z;Cl.initialize(l,U),RU._defaultColor||(RU._defaultColor=((Z=U.highlightColors)==null?void 0:Z.values().next().value)||"#fff066")}static updateDefaultParams(l,U){switch(l){case ml.HIGHLIGHT_DEFAULT_COLOR:RU._defaultColor=U;break;case ml.HIGHLIGHT_THICKNESS:RU._defaultThickness=U;break}}translateInPage(l,U){}get toolbarPosition(){return F(this,_c)}updateParams(l,U){switch(l){case ml.HIGHLIGHT_COLOR:G(this,RN,$b).call(this,U);break;case ml.HIGHLIGHT_THICKNESS:G(this,hN,lm).call(this,U);break}}static get defaultPropertiesToUpdate(){return[[ml.HIGHLIGHT_DEFAULT_COLOR,RU._defaultColor],[ml.HIGHLIGHT_THICKNESS,RU._defaultThickness]]}get propertiesToUpdate(){return[[ml.HIGHLIGHT_COLOR,this.color||RU._defaultColor],[ml.HIGHLIGHT_THICKNESS,F(this,Pd)||RU._defaultThickness],[ml.HIGHLIGHT_FREE,F(this,Ud)]]}addEditToolbar(){return Ul(this,null,function*(){const l=yield ze(RU.prototype,this,"addEditToolbar").call(this);return l?(this._uiManager.highlightColors&&(S(this,Ac,new Xe({editor:this})),l.addColorPicker(F(this,Ac))),l):null})}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(G(this,AF,UW).call(this))}getBaseTranslation(){return[0,0]}getRect(l,U){return super.getRect(l,U,G(this,AF,UW).call(this))}onceAdded(){this.parent.addUndoableEditor(this),this.div.focus()}remove(){G(this,Tn,mN).call(this),this._reportTelemetry({action:"deleted"}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(G(this,PF,$c).call(this),this.isAttachedToDOM||this.parent.add(this)))}setParent(l){var U;let Z=!1;this.parent&&!l?G(this,Tn,mN).call(this):l&&(G(this,PF,$c).call(this,l),Z=!this.parent&&((U=this.div)==null?void 0:U.classList.contains("selectedEditor"))),super.setParent(l),this.show(this._isVisible),Z&&this.select()}rotate(l){var U,Z,c;const{drawLayer:W}=this.parent;let s;F(this,Ud)?(l=(l-this.rotation+360)%360,s=G(U=RU,zt,fF).call(U,F(this,pd).box,l)):s=G(Z=RU,zt,fF).call(Z,this,l),W.rotate(F(this,EU),l),W.rotate(F(this,aU),l),W.updateBox(F(this,EU),s),W.updateBox(F(this,aU),G(c=RU,zt,fF).call(c,F(this,Fd).box,l))}render(){if(this.div)return this.div;const l=super.render();F(this,qc)&&(l.setAttribute("aria-label",F(this,qc)),l.setAttribute("role","mark")),F(this,Ud)?l.classList.add("free"):this.div.addEventListener("keydown",F(this,QN));const U=S(this,HF,document.createElement("div"));l.append(U),U.setAttribute("aria-hidden","true"),U.className="internal",U.style.clipPath=F(this,KF);const[Z,c]=this.parentDimensions;return this.setDims(this.width*Z,this.height*c),Ws(this,F(this,HF),["pointerover","pointerleave"]),this.enableEditing(),l}pointerover(){this.parent.drawLayer.addClass(F(this,aU),"hovered")}pointerleave(){this.parent.drawLayer.removeClass(F(this,aU),"hovered")}_moveCaret(l){switch(this.parent.unselect(this),l){case 0:case 2:G(this,lW,Sn).call(this,!0);break;case 1:case 3:G(this,lW,Sn).call(this,!1);break}}select(){var l,U;super.select(),F(this,aU)&&((l=this.parent)==null||l.drawLayer.removeClass(F(this,aU),"hovered"),(U=this.parent)==null||U.drawLayer.addClass(F(this,aU),"selected"))}unselect(){var l;super.unselect(),F(this,aU)&&((l=this.parent)==null||l.drawLayer.removeClass(F(this,aU),"selected"),F(this,Ud)||G(this,lW,Sn).call(this,!1))}get _mustFixPosition(){return!F(this,Ud)}show(l=this._isVisible){super.show(l),this.parent&&(this.parent.drawLayer.show(F(this,EU),l),this.parent.drawLayer.show(F(this,aU),l))}static startHighlighting(l,U,{target:Z,x:c,y:W}){const{x:s,y:Q,width:R,height:m}=Z.getBoundingClientRect(),e=B=>{G(this,JN,Fm).call(this,l,B)},T={capture:!0,passive:!1},Y=B=>{B.preventDefault(),B.stopPropagation()},u=B=>{Z.removeEventListener("pointermove",e),window.removeEventListener("blur",u),window.removeEventListener("pointerup",u),window.removeEventListener("pointerdown",Y,T),window.removeEventListener("contextmenu",xU),G(this,TN,cm).call(this,l,B)};window.addEventListener("blur",u),window.addEventListener("pointerup",u),window.addEventListener("pointerdown",Y,T),window.addEventListener("contextmenu",xU),Z.addEventListener("pointermove",e),this._freeHighlight=new Te({x:c,y:W},[s,Q,R,m],l.scale,this._defaultThickness/2,U,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=l.drawLayer.highlight(this._freeHighlight,this._defaultColor,this._defaultOpacity,!0)}static deserialize(l,U,Z){var c;const W=super.deserialize(l,U,Z),{rect:[s,Q,R,m],color:e,quadPoints:T}=l;W.color=nl.makeHexColor(...e),S(W,vF,l.opacity);const[Y,u]=W.pageDimensions;W.width=(R-s)/Y,W.height=(m-Q)/u;const B=S(W,yt,[]);for(let z=0;z<T.length;z+=8)B.push({x:(T[4]-R)/Y,y:(m-(1-T[z+5]))/u,width:(T[z+2]-T[z])/Y,height:(T[z+5]-T[z+1])/u});return G(c=W,Gn,iN).call(c),W}serialize(l=!1){if(this.isEmpty()||l)return null;const U=this.getRect(0,0),Z=Cl._colorManager.convert(this.color);return{annotationType:Bl.HIGHLIGHT,color:Z,opacity:F(this,vF),thickness:F(this,Pd),quadPoints:G(this,MN,Zm).call(this),outlines:G(this,GN,tm).call(this,U),pageIndex:this.pageIndex,rect:U,rotation:G(this,AF,UW).call(this),structTreeParentId:this._structTreeParentId}}static canCreateNewEmptyEditor(){return!1}};fc=new WeakMap,bn=new WeakMap,yt=new WeakMap,KF=new WeakMap,Ac=new WeakMap,Fd=new WeakMap,mn=new WeakMap,en=new WeakMap,HF=new WeakMap,pd=new WeakMap,EU=new WeakMap,Ud=new WeakMap,QN=new WeakMap,_c=new WeakMap,vF=new WeakMap,aU=new WeakMap,qc=new WeakMap,Pd=new WeakMap,Mn=new WeakMap,Gn=new WeakSet,iN=function(){const a=new uR(F(this,yt),.001);S(this,pd,a.getOutlines()),{x:this.x,y:this.y,width:this.width,height:this.height}=F(this,pd).box;const l=new uR(F(this,yt),.0025,.001,this._uiManager.direction==="ltr");S(this,Fd,l.getOutlines());const{lastPoint:U}=F(this,Fd).box;S(this,_c,[(U[0]-this.x)/this.width,(U[1]-this.y)/this.height])},Jn=new WeakSet,NN=function({highlightOutlines:a,highlightId:l,clipPathId:U}){var Z,c;if(S(this,pd,a),S(this,Fd,a.getNewOutline(F(this,Pd)/2+1.5,.0025)),l>=0)S(this,EU,l),S(this,KF,U),this.parent.drawLayer.finalizeLine(l,a),S(this,aU,this.parent.drawLayer.highlightOutline(F(this,Fd)));else if(this.parent){const T=this.parent.viewport.rotation;this.parent.drawLayer.updateLine(F(this,EU),a),this.parent.drawLayer.updateBox(F(this,EU),G(Z=XU,zt,fF).call(Z,F(this,pd).box,(T-this.rotation+360)%360)),this.parent.drawLayer.updateLine(F(this,aU),F(this,Fd)),this.parent.drawLayer.updateBox(F(this,aU),G(c=XU,zt,fF).call(c,F(this,Fd).box,T))}const{x:s,y:Q,width:R,height:m}=a.box;switch(this.rotation){case 0:this.x=s,this.y=Q,this.width=R,this.height=m;break;case 90:{const[T,Y]=this.parentDimensions;this.x=Q,this.y=1-s,this.width=R*Y/T,this.height=m*T/Y;break}case 180:this.x=1-s,this.y=1-Q,this.width=R,this.height=m;break;case 270:{const[T,Y]=this.parentDimensions;this.x=1-Q,this.y=s,this.width=R*Y/T,this.height=m*T/Y;break}}const{lastPoint:e}=F(this,Fd).box;S(this,_c,[(e[0]-s)/R,(e[1]-Q)/m])},RN=new WeakSet,$b=function(a){const l=Z=>{var c,W;this.color=Z,(c=this.parent)==null||c.drawLayer.changeColor(F(this,EU),Z),(W=F(this,Ac))==null||W.updateColor(Z)},U=this.color;this.addCommands({cmd:l.bind(this,a),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ml.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"color_changed",color:this._uiManager.highlightColorNames.get(a)},!0)},hN=new WeakSet,lm=function(a){const l=F(this,Pd),U=Z=>{S(this,Pd,Z),G(this,bN,Um).call(this,Z)};this.addCommands({cmd:U.bind(this,a),undo:U.bind(this,l),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ml.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"thickness_changed",thickness:a},!0)},bN=new WeakSet,Um=function(a){if(!F(this,Ud))return;G(this,Jn,NN).call(this,{highlightOutlines:F(this,pd).getNewOutline(a/2)}),this.fixAndSetPosition();const[l,U]=this.parentDimensions;this.setDims(this.width*l,this.height*U)},Tn=new WeakSet,mN=function(){F(this,EU)===null||!this.parent||(this.parent.drawLayer.remove(F(this,EU)),S(this,EU,null),this.parent.drawLayer.remove(F(this,aU)),S(this,aU,null))},PF=new WeakSet,$c=function(a=this.parent){F(this,EU)===null&&({id:PU(this,EU)._,clipPathId:PU(this,KF)._}=a.drawLayer.highlight(F(this,pd),this.color,F(this,vF)),S(this,aU,a.drawLayer.highlightOutline(F(this,Fd))),F(this,HF)&&(F(this,HF).style.clipPath=F(this,KF)))},zt=new WeakSet,fF=function({x:a,y:l,width:U,height:Z},c){switch(c){case 90:return{x:1-l-Z,y:a,width:Z,height:U};case 180:return{x:1-a-U,y:1-l-Z,width:U,height:Z};case 270:return{x:l,y:1-a-U,width:Z,height:U}}return{x:a,y:l,width:U,height:Z}},eN=new WeakSet,dm=function(a){XU._keyboardManager.exec(this,a)},lW=new WeakSet,Sn=function(a){if(!F(this,fc))return;const l=window.getSelection();a?l.setPosition(F(this,fc),F(this,bn)):l.setPosition(F(this,mn),F(this,en))},AF=new WeakSet,UW=function(){return F(this,Ud)?this.rotation:0},MN=new WeakSet,Zm=function(){if(F(this,Ud))return null;const[a,l]=this.pageDimensions,U=F(this,yt),Z=new Array(U.length*8);let c=0;for(const{x:W,y:s,width:Q,height:R}of U){const m=W*a,e=(1-s-R)*l;Z[c]=Z[c+4]=m,Z[c+1]=Z[c+3]=e,Z[c+2]=Z[c+6]=m+Q*a,Z[c+5]=Z[c+7]=e+R*l,c+=8}return Z},GN=new WeakSet,tm=function(a){return F(this,pd).serialize(a,G(this,AF,UW).call(this))},JN=new WeakSet,Fm=function(a,l){this._freeHighlight.add(l)&&a.drawLayer.updatePath(this._freeHighlightId,this._freeHighlight)},TN=new WeakSet,cm=function(a,l){this._freeHighlight.isEmpty()?a.drawLayer.removeFreeHighlight(this._freeHighlightId):a.createAndAddNewEditor(l,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:"main_toolbar"}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=""},h(XU,zt),h(XU,JN),h(XU,TN),el(XU,"_defaultColor",null),el(XU,"_defaultOpacity",1),el(XU,"_defaultThickness",12),el(XU,"_l10nPromise"),el(XU,"_type","highlight"),el(XU,"_editorType",Bl.HIGHLIGHT),el(XU,"_freeHighlightId",-1),el(XU,"_freeHighlight",null),el(XU,"_freeHighlightClipId","");let Ye=XU;const OU=class nd extends Cl{constructor(l){super(Ld(fl({},l),{name:"inkEditor"})),h(this,SN),h(this,XN),h(this,YN),h(this,pN),h(this,un),h(this,BN),h(this,Bn),h(this,yN),h(this,zN),h(this,LN),h(this,kN),h(this,IN),h(this,xZ),h(this,on),h(this,dW),h(this,ZW),h(this,It),h(this,Ln),h(this,tW),h(this,rN),h(this,Dn),h(this,FW),h(this,c0),h(this,_F,0),h(this,qF,0),h(this,Xn,this.canvasPointermove.bind(this)),h(this,Yn,this.canvasPointerleave.bind(this)),h(this,pn,this.canvasPointerup.bind(this)),h(this,$F,this.canvasPointerdown.bind(this)),h(this,fd,null),h(this,CZ,new Path2D),h(this,cd,!1),h(this,l0,!1),h(this,U0,!1),h(this,d0,null),h(this,Z0,0),h(this,t0,0),h(this,Lt,null),this.color=l.color||null,this.thickness=l.thickness||null,this.opacity=l.opacity||null,this.paths=[],this.bezierPath2D=[],this.allRawPaths=[],this.currentPath=[],this.scaleFactor=1,this.translationX=this.translationY=0,this.x=0,this.y=0,this._willKeepAspectRatio=!0}static initialize(l,U){Cl.initialize(l,U)}static updateDefaultParams(l,U){switch(l){case ml.INK_THICKNESS:nd._defaultThickness=U;break;case ml.INK_COLOR:nd._defaultColor=U;break;case ml.INK_OPACITY:nd._defaultOpacity=U/100;break}}updateParams(l,U){switch(l){case ml.INK_THICKNESS:G(this,SN,Wm).call(this,U);break;case ml.INK_COLOR:G(this,XN,am).call(this,U);break;case ml.INK_OPACITY:G(this,YN,Vm).call(this,U);break}}static get defaultPropertiesToUpdate(){return[[ml.INK_THICKNESS,nd._defaultThickness],[ml.INK_COLOR,nd._defaultColor||Cl._defaultLineColor],[ml.INK_OPACITY,Math.round(nd._defaultOpacity*100)]]}get propertiesToUpdate(){var l;return[[ml.INK_THICKNESS,this.thickness||nd._defaultThickness],[ml.INK_COLOR,this.color||nd._defaultColor||Cl._defaultLineColor],[ml.INK_OPACITY,Math.round(100*((l=this.opacity)!=null?l:nd._defaultOpacity))]]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.canvas||(G(this,dW,yn).call(this),G(this,ZW,zn).call(this)),this.isAttachedToDOM||(this.parent.add(this),G(this,It,F0).call(this)),G(this,c0,cW).call(this)))}remove(){this.canvas!==null&&(this.isEmpty()||this.commit(),this.canvas.width=this.canvas.height=0,this.canvas.remove(),this.canvas=null,F(this,fd)&&(clearTimeout(F(this,fd)),S(this,fd,null)),F(this,d0).disconnect(),S(this,d0,null),super.remove())}setParent(l){!this.parent&&l?this._uiManager.removeShouldRescale(this):this.parent&&l===null&&this._uiManager.addShouldRescale(this),super.setParent(l)}onScaleChanging(){const[l,U]=this.parentDimensions,Z=this.width*l,c=this.height*U;this.setDimensions(Z,c)}enableEditMode(){F(this,cd)||this.canvas===null||(super.enableEditMode(),this._isDraggable=!1,this.canvas.addEventListener("pointerdown",F(this,$F)))}disableEditMode(){!this.isInEditMode()||this.canvas===null||(super.disableEditMode(),this._isDraggable=!this.isEmpty(),this.div.classList.remove("editing"),this.canvas.removeEventListener("pointerdown",F(this,$F)))}onceAdded(){this._isDraggable=!this.isEmpty()}isEmpty(){return this.paths.length===0||this.paths.length===1&&this.paths[0].length===0}commit(){F(this,cd)||(super.commit(),this.isEditing=!1,this.disableEditMode(),this.setInForeground(),S(this,cd,!0),this.div.classList.add("disabled"),G(this,c0,cW).call(this,!0),this.select(),this.parent.addInkEditorIfNeeded(!0),this.moveInDOM(),this.div.focus({preventScroll:!0}))}focusin(l){this._focusEventsAllowed&&(super.focusin(l),this.enableEditMode())}canvasPointerdown(l){l.button!==0||!this.isInEditMode()||F(this,cd)||(this.setInForeground(),l.preventDefault(),this.div.contains(document.activeElement)||this.div.focus({preventScroll:!0}),G(this,BN,sm).call(this,l.offsetX,l.offsetY))}canvasPointermove(l){l.preventDefault(),G(this,Bn,oN).call(this,l.offsetX,l.offsetY)}canvasPointerup(l){l.preventDefault(),G(this,on,DN).call(this,l)}canvasPointerleave(l){G(this,on,DN).call(this,l)}get isResizable(){return!this.isEmpty()&&F(this,cd)}render(){if(this.div)return this.div;let l,U;this.width&&(l=this.x,U=this.y),super.render(),this.div.setAttribute("data-l10n-id","pdfjs-ink");const[Z,c,W,s]=G(this,pN,nm).call(this);if(this.setAt(Z,c,0,0),this.setDims(W,s),G(this,dW,yn).call(this),this.width){const[Q,R]=this.parentDimensions;this.setAspectRatio(this.width*Q,this.height*R),this.setAt(l*Q,U*R,this.width*Q,this.height*R),S(this,U0,!0),G(this,It,F0).call(this),this.setDims(this.width*Q,this.height*R),G(this,xZ,kt).call(this),this.div.classList.add("disabled")}else this.div.classList.add("editing"),this.enableEditMode();return G(this,ZW,zn).call(this),this.div}setDimensions(l,U){const Z=Math.round(l),c=Math.round(U);if(F(this,Z0)===Z&&F(this,t0)===c)return;S(this,Z0,Z),S(this,t0,c),this.canvas.style.visibility="hidden";const[W,s]=this.parentDimensions;this.width=l/W,this.height=U/s,this.fixAndSetPosition(),F(this,cd)&&G(this,Ln,EN).call(this,l,U),G(this,It,F0).call(this),G(this,xZ,kt).call(this),this.canvas.style.visibility="visible",this.fixDims()}static deserialize(l,U,Z){var c,W,s;if(l instanceof Me)return null;const Q=super.deserialize(l,U,Z);Q.thickness=l.thickness,Q.color=nl.makeHexColor(...l.color),Q.opacity=l.opacity;const[R,m]=Q.pageDimensions,e=Q.width*R,T=Q.height*m,Y=Q.parentScale,u=l.thickness/2;S(Q,cd,!0),S(Q,Z0,Math.round(e)),S(Q,t0,Math.round(T));const{paths:B,rect:z,rotation:L}=l;for(let{bezier:f}of B){f=G(c=nd,xN,mm).call(c,f,z,L);const j=[];Q.paths.push(j);let q=Y*(f[0]-u),Zl=Y*(f[1]-u);for(let al=2,bl=f.length;al<bl;al+=6){const Sl=Y*(f[al]-u),Yl=Y*(f[al+1]-u),Xl=Y*(f[al+2]-u),vl=Y*(f[al+3]-u),rl=Y*(f[al+4]-u),LU=Y*(f[al+5]-u);j.push([[q,Zl],[Sl,Yl],[Xl,vl],[rl,LU]]),q=rl,Zl=LU}const Fl=G(this,wN,bm).call(this,j);Q.bezierPath2D.push(Fl)}const D=G(W=Q,Dn,jN).call(W);return S(Q,qF,Math.max(Cl.MIN_SIZE,D[2]-D[0])),S(Q,_F,Math.max(Cl.MIN_SIZE,D[3]-D[1])),G(s=Q,Ln,EN).call(s,e,T),Q}serialize(){if(this.isEmpty())return null;const l=this.getRect(0,0),U=Cl._colorManager.convert(this.ctx.strokeStyle);return{annotationType:Bl.INK,color:U,thickness:this.thickness,opacity:this.opacity,paths:G(this,rN,em).call(this,this.scaleFactor/this.parentScale,this.translationX,this.translationY,l),pageIndex:this.pageIndex,rect:l,rotation:this.rotation,structTreeParentId:this._structTreeParentId}}};_F=new WeakMap,qF=new WeakMap,Xn=new WeakMap,Yn=new WeakMap,pn=new WeakMap,$F=new WeakMap,fd=new WeakMap,CZ=new WeakMap,cd=new WeakMap,l0=new WeakMap,U0=new WeakMap,d0=new WeakMap,Z0=new WeakMap,t0=new WeakMap,Lt=new WeakMap,SN=new WeakSet,Wm=function(a){const l=Z=>{this.thickness=Z,G(this,c0,cW).call(this)},U=this.thickness;this.addCommands({cmd:l.bind(this,a),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ml.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0})},XN=new WeakSet,am=function(a){const l=Z=>{this.color=Z,G(this,xZ,kt).call(this)},U=this.color;this.addCommands({cmd:l.bind(this,a),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ml.INK_COLOR,overwriteIfSameType:!0,keepUndo:!0})},YN=new WeakSet,Vm=function(a){const l=Z=>{this.opacity=Z,G(this,xZ,kt).call(this)};a/=100;const U=this.opacity;this.addCommands({cmd:l.bind(this,a),undo:l.bind(this,U),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:ml.INK_OPACITY,overwriteIfSameType:!0,keepUndo:!0})},pN=new WeakSet,nm=function(){const{parentRotation:a,parentDimensions:[l,U]}=this;switch(a){case 90:return[0,U,U,l];case 180:return[l,U,l,U];case 270:return[l,0,U,l];default:return[0,0,l,U]}},un=new WeakSet,uN=function(){const{ctx:a,color:l,opacity:U,thickness:Z,parentScale:c,scaleFactor:W}=this;a.lineWidth=Z*c/W,a.lineCap="round",a.lineJoin="round",a.miterLimit=10,a.strokeStyle=`${l}${qM(U)}`},BN=new WeakSet,sm=function(a,l){var U;this.canvas.addEventListener("contextmenu",xU),this.canvas.addEventListener("pointerleave",F(this,Yn)),this.canvas.addEventListener("pointermove",F(this,Xn)),this.canvas.addEventListener("pointerup",F(this,pn)),this.canvas.removeEventListener("pointerdown",F(this,$F)),this.isEditing=!0,F(this,U0)||(S(this,U0,!0),G(this,It,F0).call(this),this.thickness||(this.thickness=OU._defaultThickness),this.color||(this.color=OU._defaultColor||Cl._defaultLineColor),(U=this.opacity)!=null||(this.opacity=OU._defaultOpacity)),this.currentPath.push([a,l]),S(this,l0,!1),G(this,un,uN).call(this),S(this,Lt,()=>{G(this,LN,Nm).call(this),F(this,Lt)&&window.requestAnimationFrame(F(this,Lt))}),window.requestAnimationFrame(F(this,Lt))},Bn=new WeakSet,oN=function(a,l){const[U,Z]=this.currentPath.at(-1);if(this.currentPath.length>1&&a===U&&l===Z)return;const c=this.currentPath;let W=F(this,CZ);if(c.push([a,l]),S(this,l0,!0),c.length<=2){W.moveTo(...c[0]),W.lineTo(a,l);return}c.length===3&&(S(this,CZ,W=new Path2D),W.moveTo(...c[0])),G(this,kN,Rm).call(this,W,...c.at(-3),...c.at(-2),a,l)},yN=new WeakSet,Qm=function(){if(this.currentPath.length===0)return;const a=this.currentPath.at(-1);F(this,CZ).lineTo(...a)},zN=new WeakSet,im=function(a,l){S(this,Lt,null),a=Math.min(Math.max(a,0),this.canvas.width),l=Math.min(Math.max(l,0),this.canvas.height),G(this,Bn,oN).call(this,a,l),G(this,yN,Qm).call(this);let U;if(this.currentPath.length!==1)U=G(this,IN,hm).call(this);else{const Q=[a,l];U=[[Q,Q.slice(),Q.slice(),Q]]}const Z=F(this,CZ),c=this.currentPath;this.currentPath=[],S(this,CZ,new Path2D);const W=()=>{this.allRawPaths.push(c),this.paths.push(U),this.bezierPath2D.push(Z),this._uiManager.rebuild(this)},s=()=>{this.allRawPaths.pop(),this.paths.pop(),this.bezierPath2D.pop(),this.paths.length===0?this.remove():(this.canvas||(G(this,dW,yn).call(this),G(this,ZW,zn).call(this)),G(this,c0,cW).call(this))};this.addCommands({cmd:W,undo:s,mustExec:!0})},LN=new WeakSet,Nm=function(){if(!F(this,l0))return;S(this,l0,!1);const a=Math.ceil(this.thickness*this.parentScale),l=this.currentPath.slice(-3),U=l.map(W=>W[0]),Z=l.map(W=>W[1]);Math.min(...U)-a,Math.max(...U)+a,Math.min(...Z)-a,Math.max(...Z)+a;const{ctx:c}=this;c.save(),c.clearRect(0,0,this.canvas.width,this.canvas.height);for(const W of this.bezierPath2D)c.stroke(W);c.stroke(F(this,CZ)),c.restore()},kN=new WeakSet,Rm=function(a,l,U,Z,c,W,s){const Q=(l+Z)/2,R=(U+c)/2,m=(Z+W)/2,e=(c+s)/2;a.bezierCurveTo(Q+2*(Z-Q)/3,R+2*(c-R)/3,m+2*(Z-m)/3,e+2*(c-e)/3,m,e)},IN=new WeakSet,hm=function(){const a=this.currentPath;if(a.length<=2)return[[a[0],a[0],a.at(-1),a.at(-1)]];const l=[];let U,[Z,c]=a[0];for(U=1;U<a.length-2;U++){const[T,Y]=a[U],[u,B]=a[U+1],z=(T+u)/2,L=(Y+B)/2,D=[Z+2*(T-Z)/3,c+2*(Y-c)/3],f=[z+2*(T-z)/3,L+2*(Y-L)/3];l.push([[Z,c],D,f,[z,L]]),[Z,c]=[z,L]}const[W,s]=a[U],[Q,R]=a[U+1],m=[Z+2*(W-Z)/3,c+2*(s-c)/3],e=[Q+2*(W-Q)/3,R+2*(s-R)/3];return l.push([[Z,c],m,e,[Q,R]]),l},xZ=new WeakSet,kt=function(){if(this.isEmpty()){G(this,tW,kn).call(this);return}G(this,un,uN).call(this);const{canvas:a,ctx:l}=this;l.setTransform(1,0,0,1,0,0),l.clearRect(0,0,a.width,a.height),G(this,tW,kn).call(this);for(const U of this.bezierPath2D)l.stroke(U)},on=new WeakSet,DN=function(a){this.canvas.removeEventListener("pointerleave",F(this,Yn)),this.canvas.removeEventListener("pointermove",F(this,Xn)),this.canvas.removeEventListener("pointerup",F(this,pn)),this.canvas.addEventListener("pointerdown",F(this,$F)),F(this,fd)&&clearTimeout(F(this,fd)),S(this,fd,setTimeout(()=>{S(this,fd,null),this.canvas.removeEventListener("contextmenu",xU)},10)),G(this,zN,im).call(this,a.offsetX,a.offsetY),this.addToAnnotationStorage(),this.setInBackground()},dW=new WeakSet,yn=function(){this.canvas=document.createElement("canvas"),this.canvas.width=this.canvas.height=0,this.canvas.className="inkEditorCanvas",this.canvas.setAttribute("data-l10n-id","pdfjs-ink-canvas"),this.div.append(this.canvas),this.ctx=this.canvas.getContext("2d")},ZW=new WeakSet,zn=function(){S(this,d0,new ResizeObserver(a=>{const l=a[0].contentRect;l.width&&l.height&&this.setDimensions(l.width,l.height)})),F(this,d0).observe(this.div)},It=new WeakSet,F0=function(){if(!F(this,U0))return;const[a,l]=this.parentDimensions;this.canvas.width=Math.ceil(this.width*a),this.canvas.height=Math.ceil(this.height*l),G(this,tW,kn).call(this)},Ln=new WeakSet,EN=function(a,l){const U=G(this,FW,En).call(this),Z=(a-U)/F(this,qF),c=(l-U)/F(this,_F);this.scaleFactor=Math.min(Z,c)},tW=new WeakSet,kn=function(){const a=G(this,FW,En).call(this)/2;this.ctx.setTransform(this.scaleFactor,0,0,this.scaleFactor,this.translationX*this.scaleFactor+a,this.translationY*this.scaleFactor+a)},wN=new WeakSet,bm=function(a){const l=new Path2D;for(let U=0,Z=a.length;U<Z;U++){const[c,W,s,Q]=a[U];U===0&&l.moveTo(...c),l.bezierCurveTo(W[0],W[1],s[0],s[1],Q[0],Q[1])}return l},In=new WeakSet,CN=function(a,l,U){const[Z,c,W,s]=l;switch(U){case 0:for(let Q=0,R=a.length;Q<R;Q+=2)a[Q]+=Z,a[Q+1]=s-a[Q+1];break;case 90:for(let Q=0,R=a.length;Q<R;Q+=2){const m=a[Q];a[Q]=a[Q+1]+Z,a[Q+1]=m+c}break;case 180:for(let Q=0,R=a.length;Q<R;Q+=2)a[Q]=W-a[Q],a[Q+1]+=c;break;case 270:for(let Q=0,R=a.length;Q<R;Q+=2){const m=a[Q];a[Q]=W-a[Q+1],a[Q+1]=s-m}break;default:throw new Error("Invalid rotation")}return a},xN=new WeakSet,mm=function(a,l,U){const[Z,c,W,s]=l;switch(U){case 0:for(let Q=0,R=a.length;Q<R;Q+=2)a[Q]-=Z,a[Q+1]=s-a[Q+1];break;case 90:for(let Q=0,R=a.length;Q<R;Q+=2){const m=a[Q];a[Q]=a[Q+1]-c,a[Q+1]=m-Z}break;case 180:for(let Q=0,R=a.length;Q<R;Q+=2)a[Q]=W-a[Q],a[Q+1]-=c;break;case 270:for(let Q=0,R=a.length;Q<R;Q+=2){const m=a[Q];a[Q]=s-a[Q+1],a[Q+1]=W-m}break;default:throw new Error("Invalid rotation")}return a},rN=new WeakSet,em=function(a,l,U,Z){var c,W;const s=[],Q=this.thickness/2,R=a*l+Q,m=a*U+Q;for(const e of this.paths){const T=[],Y=[];for(let u=0,B=e.length;u<B;u++){const[z,L,D,f]=e[u];if(z[0]===f[0]&&z[1]===f[1]&&B===1){const Xl=a*z[0]+R,vl=a*z[1]+m;T.push(Xl,vl),Y.push(Xl,vl);break}const j=a*z[0]+R,q=a*z[1]+m,Zl=a*L[0]+R,Fl=a*L[1]+m,al=a*D[0]+R,bl=a*D[1]+m,Sl=a*f[0]+R,Yl=a*f[1]+m;u===0&&(T.push(j,q),Y.push(j,q)),T.push(Zl,Fl,al,bl,Sl,Yl),Y.push(Zl,Fl),u===B-1&&Y.push(Sl,Yl)}s.push({bezier:G(c=OU,In,CN).call(c,T,Z,this.rotation),points:G(W=OU,In,CN).call(W,Y,Z,this.rotation)})}return s},Dn=new WeakSet,jN=function(){let a=1/0,l=-1/0,U=1/0,Z=-1/0;for(const c of this.paths)for(const[W,s,Q,R]of c){const m=nl.bezierBoundingBox(...W,...s,...Q,...R);a=Math.min(a,m[0]),U=Math.min(U,m[1]),l=Math.max(l,m[2]),Z=Math.max(Z,m[3])}return[a,U,l,Z]},FW=new WeakSet,En=function(){return F(this,cd)?Math.ceil(this.thickness*this.parentScale):0},c0=new WeakSet,cW=function(a=!1){if(this.isEmpty())return;if(!F(this,cd)){G(this,xZ,kt).call(this);return}const l=G(this,Dn,jN).call(this),U=G(this,FW,En).call(this);S(this,qF,Math.max(Cl.MIN_SIZE,l[2]-l[0])),S(this,_F,Math.max(Cl.MIN_SIZE,l[3]-l[1]));const Z=Math.ceil(U+F(this,qF)*this.scaleFactor),c=Math.ceil(U+F(this,_F)*this.scaleFactor),[W,s]=this.parentDimensions;this.width=Z/W,this.height=c/s,this.setAspectRatio(Z,c);const Q=this.translationX,R=this.translationY;this.translationX=-l[0],this.translationY=-l[1],G(this,It,F0).call(this),G(this,xZ,kt).call(this),S(this,Z0,Z),S(this,t0,c),this.setDims(Z,c);const m=a?U/this.scaleFactor/2:0;this.translate(Q-this.translationX-m,R-this.translationY-m)},h(OU,wN),h(OU,In),h(OU,xN),el(OU,"_defaultColor",null),el(OU,"_defaultOpacity",1),el(OU,"_defaultThickness",1),el(OU,"_type","ink"),el(OU,"_editorType",Bl.INK);let EJ=OU;const Ms=class extends Cl{constructor(l){super(Ld(fl({},l),{name:"stampEditor"})),h(this,a0),h(this,V0),h(this,nW),h(this,xn),h(this,gN),h(this,KN),h(this,rn),h(this,sW),h(this,vN),h(this,GU,null),h(this,JU,null),h(this,Dt,null),h(this,rZ,null),h(this,Et,null),h(this,WW,""),h(this,Ad,null),h(this,W0,null),h(this,_d,null),h(this,ud,!1),h(this,wn,!1),S(this,rZ,l.bitmapUrl),S(this,Et,l.bitmapFile)}static initialize(l,U){Cl.initialize(l,U)}static get supportedTypes(){return yl(this,"supportedTypes",["apng","avif","bmp","gif","jpeg","png","svg+xml","webp","x-icon"].map(l=>`image/${l}`))}static get supportedTypesStr(){return yl(this,"supportedTypesStr",this.supportedTypes.join(","))}static isHandlingMimeForPasting(l){return this.supportedTypes.includes(l)}static paste(l,U){U.pasteEditor(Bl.STAMP,{bitmapFile:l.getAsFile()})}remove(){var l,U;F(this,JU)&&(S(this,GU,null),this._uiManager.imageManager.deleteId(F(this,JU)),(l=F(this,Ad))==null||l.remove(),S(this,Ad,null),(U=F(this,W0))==null||U.disconnect(),S(this,W0,null),F(this,_d)&&(clearTimeout(F(this,_d)),S(this,_d,null))),super.remove()}rebuild(){if(!this.parent){F(this,JU)&&G(this,nW,Cn).call(this);return}super.rebuild(),this.div!==null&&(F(this,JU)&&F(this,Ad)===null&&G(this,nW,Cn).call(this),this.isAttachedToDOM||this.parent.add(this))}onceAdded(){this._isDraggable=!0,this.div.focus()}isEmpty(){return!(F(this,Dt)||F(this,GU)||F(this,rZ)||F(this,Et)||F(this,JU))}get isResizable(){return!0}render(){if(this.div)return this.div;let l,U;if(this.width&&(l=this.x,U=this.y),super.render(),this.div.hidden=!0,this.addAltTextButton(),F(this,GU)?G(this,xn,ON).call(this):G(this,nW,Cn).call(this),this.width){const[Z,c]=this.parentDimensions;this.setAt(l*Z,U*c,this.width*Z,this.height*c)}return this.div}getImageForAltText(){return F(this,Ad)}static deserialize(l,U,Z){if(l instanceof Ge)return null;const c=super.deserialize(l,U,Z),{rect:W,bitmapUrl:s,bitmapId:Q,isSvg:R,accessibilityData:m}=l;Q&&Z.imageManager.isValidId(Q)?S(c,JU,Q):S(c,rZ,s),S(c,ud,R);const[e,T]=c.pageDimensions;return c.width=(W[2]-W[0])/e,c.height=(W[3]-W[1])/T,m&&(c.altTextData=m),c}serialize(l=!1,U=null){if(this.isEmpty())return null;const Z={annotationType:Bl.STAMP,bitmapId:F(this,JU),pageIndex:this.pageIndex,rect:this.getRect(0,0),rotation:this.rotation,isSvg:F(this,ud),structTreeParentId:this._structTreeParentId};if(l)return Z.bitmapUrl=G(this,sW,jn).call(this,!0),Z.accessibilityData=this.altTextData,Z;const{decorative:c,altText:W}=this.altTextData;if(!c&&W&&(Z.accessibilityData={type:"Figure",alt:W}),U===null)return Z;U.stamps||(U.stamps=new Map);const s=F(this,ud)?(Z.rect[2]-Z.rect[0])*(Z.rect[3]-Z.rect[1]):null;if(!U.stamps.has(F(this,JU)))U.stamps.set(F(this,JU),{area:s,serialized:Z}),Z.bitmap=G(this,sW,jn).call(this,!1);else if(F(this,ud)){const Q=U.stamps.get(F(this,JU));s>Q.area&&(Q.area=s,Q.serialized.bitmap.close(),Q.serialized.bitmap=G(this,sW,jn).call(this,!1))}return Z}};GU=new WeakMap,JU=new WeakMap,Dt=new WeakMap,rZ=new WeakMap,Et=new WeakMap,WW=new WeakMap,Ad=new WeakMap,W0=new WeakMap,_d=new WeakMap,ud=new WeakMap,wn=new WeakMap,a0=new WeakSet,aW=function(a,l=!1){if(!a){this.remove();return}S(this,GU,a.bitmap),l||(S(this,JU,a.id),S(this,ud,a.isSvg)),a.file&&S(this,WW,a.file.name),G(this,xn,ON).call(this)},V0=new WeakSet,VW=function(){S(this,Dt,null),this._uiManager.enableWaiting(!1),F(this,Ad)&&this.div.focus()},nW=new WeakSet,Cn=function(){if(F(this,JU)){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(F(this,JU)).then(l=>G(this,a0,aW).call(this,l,!0)).finally(()=>G(this,V0,VW).call(this));return}if(F(this,rZ)){const l=F(this,rZ);S(this,rZ,null),this._uiManager.enableWaiting(!0),S(this,Dt,this._uiManager.imageManager.getFromUrl(l).then(U=>G(this,a0,aW).call(this,U)).finally(()=>G(this,V0,VW).call(this)));return}if(F(this,Et)){const l=F(this,Et);S(this,Et,null),this._uiManager.enableWaiting(!0),S(this,Dt,this._uiManager.imageManager.getFromFile(l).then(U=>G(this,a0,aW).call(this,U)).finally(()=>G(this,V0,VW).call(this)));return}const a=document.createElement("input");a.type="file",a.accept=Ms.supportedTypesStr,S(this,Dt,new Promise(l=>{a.addEventListener("change",()=>Ul(this,null,function*(){if(!a.files||a.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);const U=yield this._uiManager.imageManager.getFromFile(a.files[0]);G(this,a0,aW).call(this,U)}l()})),a.addEventListener("cancel",()=>{this.remove(),l()})}).finally(()=>G(this,V0,VW).call(this))),a.click()},xn=new WeakSet,ON=function(){const{div:a}=this;let{width:l,height:U}=F(this,GU);const[Z,c]=this.pageDimensions,W=.75;if(this.width)l=this.width*Z,U=this.height*c;else if(l>W*Z||U>W*c){const m=Math.min(W*Z/l,W*c/U);l*=m,U*=m}const[s,Q]=this.parentDimensions;this.setDims(l*s/Z,U*Q/c),this._uiManager.enableWaiting(!1);const R=S(this,Ad,document.createElement("canvas"));a.append(R),a.hidden=!1,G(this,rn,HN).call(this,l,U),G(this,vN,Jm).call(this),F(this,wn)||(this.parent.addUndoableEditor(this),S(this,wn,!0)),this._reportTelemetry({action:"inserted_image"}),F(this,WW)&&R.setAttribute("aria-label",F(this,WW))},gN=new WeakSet,Mm=function(a,l){var U;const[Z,c]=this.parentDimensions;this.width=a/Z,this.height=l/c,this.setDims(a,l),(U=this._initialOptions)!=null&&U.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,F(this,_d)!==null&&clearTimeout(F(this,_d)),S(this,_d,setTimeout(()=>{S(this,_d,null),G(this,rn,HN).call(this,a,l)},200))},KN=new WeakSet,Gm=function(a,l){const{width:U,height:Z}=F(this,GU);let c=U,W=Z,s=F(this,GU);for(;c>2*a||W>2*l;){const Q=c,R=W;c>2*a&&(c=c>=16384?Math.floor(c/2)-1:Math.ceil(c/2)),W>2*l&&(W=W>=16384?Math.floor(W/2)-1:Math.ceil(W/2));const m=new OffscreenCanvas(c,W);m.getContext("2d").drawImage(s,0,0,Q,R,0,0,c,W),s=m.transferToImageBitmap()}return s},rn=new WeakSet,HN=function(a,l){a=Math.ceil(a),l=Math.ceil(l);const U=F(this,Ad);if(!U||U.width===a&&U.height===l)return;U.width=a,U.height=l;const Z=F(this,ud)?F(this,GU):G(this,KN,Gm).call(this,a,l);if(this._uiManager.hasMLManager&&!this.hasAltText()){const W=new OffscreenCanvas(a,l).getContext("2d");W.drawImage(Z,0,0,Z.width,Z.height,0,0,a,l),this._uiManager.mlGuess({service:"image-to-text",request:{data:W.getImageData(0,0,a,l).data,width:a,height:l,channels:4}}).then(s=>{const Q=(s==null?void 0:s.output)||"";this.parent&&Q&&!this.hasAltText()&&(this.altTextData={altText:Q,decorative:!1})})}const c=U.getContext("2d");c.filter=this._uiManager.hcmFilter,c.drawImage(Z,0,0,Z.width,Z.height,0,0,a,l)},sW=new WeakSet,jn=function(a){if(a){if(F(this,ud)){const U=this._uiManager.imageManager.getSvgUrl(F(this,JU));if(U)return U}const l=document.createElement("canvas");return{width:l.width,height:l.height}=F(this,GU),l.getContext("2d").drawImage(F(this,GU),0,0),l.toDataURL()}if(F(this,ud)){const[l,U]=this.pageDimensions,Z=Math.round(this.width*l*i0.PDF_TO_CSS_UNITS),c=Math.round(this.height*U*i0.PDF_TO_CSS_UNITS),W=new OffscreenCanvas(Z,c);return W.getContext("2d").drawImage(F(this,GU),0,0,F(this,GU).width,F(this,GU).height,0,0,Z,c),W.transferToImageBitmap()}return structuredClone(F(this,GU))},vN=new WeakSet,Jm=function(){S(this,W0,new ResizeObserver(a=>{const l=a[0].contentRect;l.width&&l.height&&G(this,gN,Mm).call(this,l.width,l.height)})),F(this,W0).observe(this.div)},el(Ms,"_type","stamp"),el(Ms,"_editorType",Bl.STAMP);let wJ=Ms;const Gs=class At{constructor({uiManager:l,pageIndex:U,div:Z,accessibilityManager:c,annotationLayer:W,drawLayer:s,textLayer:Q,viewport:R,l10n:m}){h(this,PN),h(this,On),h(this,gn),h(this,Kn),h(this,RW),h(this,n0,void 0),h(this,QW,!1),h(this,qd,null),h(this,s0,null),h(this,jZ,null),h(this,OZ,null),h(this,gZ,null),h(this,dd,new Map),h(this,wt,!1),h(this,iW,!1),h(this,NW,!1),h(this,wU,null),h(this,il,void 0);const e=[...F(At,Ct).values()];if(!At._initialized){At._initialized=!0;for(const T of e)T.initialize(m,l)}l.registerEditorTypes(e),S(this,il,l),this.pageIndex=U,this.div=Z,S(this,n0,c),S(this,qd,W),this.viewport=R,S(this,wU,Q),this.drawLayer=s,F(this,il).addLayer(this)}get isEmpty(){return F(this,dd).size===0}get isInvisible(){return this.isEmpty&&F(this,il).getMode()===Bl.NONE}updateToolbar(l){F(this,il).updateToolbar(l)}updateMode(l=F(this,il).getMode()){switch(G(this,RW,Hn).call(this),l){case Bl.NONE:this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case Bl.INK:this.addInkEditorIfNeeded(!1),this.disableTextSelection(),this.togglePointerEvents(!0),this.disableClick();break;case Bl.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:U}=this.div;for(const Z of F(At,Ct).values())U.toggle(`${Z._type}Editing`,l===Z._editorType);this.div.hidden=!1}hasTextLayer(l){var U;return l===((U=F(this,wU))==null?void 0:U.div)}addInkEditorIfNeeded(l){if(F(this,il).getMode()===Bl.INK){if(!l){for(const U of F(this,dd).values())if(U.isEmpty()){U.setInBackground();return}}this.createAndAddNewEditor({offsetX:0,offsetY:0},!1).setInBackground()}}setEditingState(l){F(this,il).setEditingState(l)}addCommands(l){F(this,il).addCommands(l)}togglePointerEvents(l=!1){this.div.classList.toggle("disabled",!l)}toggleAnnotationLayerPointerEvents(l=!1){var U;(U=F(this,qd))==null||U.div.classList.toggle("disabled",!l)}enable(){this.div.tabIndex=0,this.togglePointerEvents(!0);const l=new Set;for(const Z of F(this,dd).values())Z.enableEditing(),Z.show(!0),Z.annotationElementId&&(F(this,il).removeChangedExistingAnnotation(Z),l.add(Z.annotationElementId));if(!F(this,qd))return;const U=F(this,qd).getEditableAnnotations();for(const Z of U){if(Z.hide(),F(this,il).isDeletedAnnotationElement(Z.data.id)||l.has(Z.data.id))continue;const c=this.deserialize(Z);c&&(this.addOrRebuild(c),c.enableEditing())}}disable(){var l;S(this,NW,!0),this.div.tabIndex=-1,this.togglePointerEvents(!1);const U=new Map,Z=new Map;for(const W of F(this,dd).values())if(W.disableEditing(),!!W.annotationElementId){if(W.serialize()!==null){U.set(W.annotationElementId,W);continue}else Z.set(W.annotationElementId,W);(l=this.getEditableAnnotation(W.annotationElementId))==null||l.show(),W.remove()}if(F(this,qd)){const W=F(this,qd).getEditableAnnotations();for(const s of W){const{id:Q}=s.data;if(F(this,il).isDeletedAnnotationElement(Q))continue;let R=Z.get(Q);if(R){R.resetAnnotationElement(s),R.show(!1),s.show();continue}R=U.get(Q),R&&(F(this,il).addChangedExistingAnnotation(R),R.renderAnnotationElement(s),R.show(!1)),s.show()}}G(this,RW,Hn).call(this),this.isEmpty&&(this.div.hidden=!0);const{classList:c}=this.div;for(const W of F(At,Ct).values())c.remove(`${W._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),S(this,NW,!1)}getEditableAnnotation(l){var U;return((U=F(this,qd))==null?void 0:U.getEditableAnnotation(l))||null}setActiveEditor(l){F(this,il).getActive()!==l&&F(this,il).setActiveEditor(l)}enableTextSelection(){var l;this.div.tabIndex=-1,(l=F(this,wU))!=null&&l.div&&!F(this,OZ)&&(S(this,OZ,G(this,PN,Tm).bind(this)),F(this,wU).div.addEventListener("pointerdown",F(this,OZ)),F(this,wU).div.classList.add("highlighting"))}disableTextSelection(){var l;this.div.tabIndex=0,(l=F(this,wU))!=null&&l.div&&F(this,OZ)&&(F(this,wU).div.removeEventListener("pointerdown",F(this,OZ)),S(this,OZ,null),F(this,wU).div.classList.remove("highlighting"))}enableClick(){F(this,jZ)||(S(this,jZ,this.pointerdown.bind(this)),S(this,s0,this.pointerup.bind(this)),this.div.addEventListener("pointerdown",F(this,jZ)),this.div.addEventListener("pointerup",F(this,s0)))}disableClick(){F(this,jZ)&&(this.div.removeEventListener("pointerdown",F(this,jZ)),this.div.removeEventListener("pointerup",F(this,s0)),S(this,jZ,null),S(this,s0,null))}attach(l){F(this,dd).set(l.id,l);const{annotationElementId:U}=l;U&&F(this,il).isDeletedAnnotationElement(U)&&F(this,il).removeDeletedAnnotationElement(l)}detach(l){var U;F(this,dd).delete(l.id),(U=F(this,n0))==null||U.removePointerInTextLayer(l.contentDiv),!F(this,NW)&&l.annotationElementId&&F(this,il).addDeletedAnnotationElement(l)}remove(l){this.detach(l),F(this,il).removeEditor(l),l.div.remove(),l.isAttachedToDOM=!1,F(this,iW)||this.addInkEditorIfNeeded(!1)}changeParent(l){var U;l.parent!==this&&(l.parent&&l.annotationElementId&&(F(this,il).addDeletedAnnotationElement(l.annotationElementId),Cl.deleteAnnotationElement(l),l.annotationElementId=null),this.attach(l),(U=l.parent)==null||U.detach(l),l.setParent(this),l.div&&l.isAttachedToDOM&&(l.div.remove(),this.div.append(l.div)))}add(l){if(!(l.parent===this&&l.isAttachedToDOM)){if(this.changeParent(l),F(this,il).addEditor(l),this.attach(l),!l.isAttachedToDOM){const U=l.render();this.div.append(U),l.isAttachedToDOM=!0}l.fixAndSetPosition(),l.onceAdded(),F(this,il).addToAnnotationStorage(l),l._reportTelemetry(l.telemetryInitialData)}}moveEditorInDOM(l){var U;if(!l.isAttachedToDOM)return;const{activeElement:Z}=document;l.div.contains(Z)&&!F(this,gZ)&&(l._focusEventsAllowed=!1,S(this,gZ,setTimeout(()=>{S(this,gZ,null),l.div.contains(document.activeElement)?l._focusEventsAllowed=!0:(l.div.addEventListener("focusin",()=>{l._focusEventsAllowed=!0},{once:!0}),Z.focus())},0))),l._structTreeParentId=(U=F(this,n0))==null?void 0:U.moveElementInDOM(this.div,l.div,l.contentDiv,!0)}addOrRebuild(l){l.needsToBeRebuilt()?(l.parent||(l.parent=this),l.rebuild(),l.show()):this.add(l)}addUndoableEditor(l){const U=()=>l._uiManager.rebuild(l),Z=()=>{l.remove()};this.addCommands({cmd:U,undo:Z,mustExec:!1})}getNextId(){return F(this,il).getId()}canCreateNewEmptyEditor(){var l;return(l=F(this,On,fN))==null?void 0:l.canCreateNewEmptyEditor()}pasteEditor(l,U){F(this,il).updateToolbar(l),F(this,il).updateMode(l);const{offsetX:Z,offsetY:c}=G(this,Kn,_N).call(this),W=this.getNextId(),s=G(this,gn,AN).call(this,fl({parent:this,id:W,x:Z,y:c,uiManager:F(this,il),isCentered:!0},U));s&&this.add(s)}deserialize(l){var Z;var U;return((U=F(At,Ct).get((Z=l.annotationType)!=null?Z:l.annotationEditorType))==null?void 0:U.deserialize(l,this,F(this,il)))||null}createAndAddNewEditor(l,U,Z={}){const c=this.getNextId(),W=G(this,gn,AN).call(this,fl({parent:this,id:c,x:l.offsetX,y:l.offsetY,uiManager:F(this,il),isCentered:U},Z));return W&&this.add(W),W}addNewEditor(){this.createAndAddNewEditor(G(this,Kn,_N).call(this),!0)}setSelected(l){F(this,il).setSelected(l)}toggleSelected(l){F(this,il).toggleSelected(l)}isSelected(l){return F(this,il).isSelected(l)}unselect(l){F(this,il).unselect(l)}pointerup(l){const{isMac:U}=CU.platform;if(!(l.button!==0||l.ctrlKey&&U)&&l.target===this.div&&F(this,wt)){if(S(this,wt,!1),!F(this,QW)){S(this,QW,!0);return}if(F(this,il).getMode()===Bl.STAMP){F(this,il).unselectAll();return}this.createAndAddNewEditor(l,!1)}}pointerdown(l){if(F(this,il).getMode()===Bl.HIGHLIGHT&&this.enableTextSelection(),F(this,wt)){S(this,wt,!1);return}const{isMac:U}=CU.platform;if(l.button!==0||l.ctrlKey&&U||l.target!==this.div)return;S(this,wt,!0);const Z=F(this,il).getActive();S(this,QW,!Z||Z.isEmpty())}findNewParent(l,U,Z){const c=F(this,il).findParent(U,Z);return c===null||c===this?!1:(c.changeParent(l),!0)}destroy(){var l,U;((l=F(this,il).getActive())==null?void 0:l.parent)===this&&(F(this,il).commitOrRemove(),F(this,il).setActiveEditor(null)),F(this,gZ)&&(clearTimeout(F(this,gZ)),S(this,gZ,null));for(const Z of F(this,dd).values())(U=F(this,n0))==null||U.removePointerInTextLayer(Z.contentDiv),Z.setParent(null),Z.isAttachedToDOM=!1,Z.div.remove();this.div=null,F(this,dd).clear(),F(this,il).removeLayer(this)}render({viewport:l}){this.viewport=l,Ot(this.div,l);for(const U of F(this,il).getEditors(this.pageIndex))this.add(U),U.rebuild();this.updateMode()}update({viewport:l}){F(this,il).commitOrRemove(),G(this,RW,Hn).call(this);const U=this.viewport.rotation,Z=l.rotation;if(this.viewport=l,Ot(this.div,{rotation:Z}),U!==Z)for(const c of F(this,dd).values())c.rotate(Z);this.addInkEditorIfNeeded(!1)}get pageDimensions(){const{pageWidth:l,pageHeight:U}=this.viewport.rawDims;return[l,U]}get scale(){return F(this,il).viewParameters.realScale}};n0=new WeakMap,QW=new WeakMap,qd=new WeakMap,s0=new WeakMap,jZ=new WeakMap,OZ=new WeakMap,gZ=new WeakMap,dd=new WeakMap,wt=new WeakMap,iW=new WeakMap,NW=new WeakMap,wU=new WeakMap,il=new WeakMap,Ct=new WeakMap,PN=new WeakSet,Tm=function(a){if(F(this,il).unselectAll(),a.target===F(this,wU).div){const{isMac:l}=CU.platform;if(a.button!==0||a.ctrlKey&&l)return;F(this,il).showAllEditors("highlight",!0,!0),F(this,wU).div.classList.add("free"),Ye.startHighlighting(this,F(this,il).direction==="ltr",a),F(this,wU).div.addEventListener("pointerup",()=>{F(this,wU).div.classList.remove("free")},{once:!0}),a.preventDefault()}},On=new WeakSet,fN=function(){return F(Gs,Ct).get(F(this,il).getMode())},gn=new WeakSet,AN=function(a){const l=F(this,On,fN);return l?new l.prototype.constructor(a):null},Kn=new WeakSet,_N=function(){const{x:a,y:l,width:U,height:Z}=this.div.getBoundingClientRect(),c=Math.max(0,a),W=Math.max(0,l),s=Math.min(window.innerWidth,a+U),Q=Math.min(window.innerHeight,l+Z),R=(c+s)/2-a,m=(W+Q)/2-l,[e,T]=this.viewport.rotation%180===0?[R,m]:[m,R];return{offsetX:e,offsetY:T}},RW=new WeakSet,Hn=function(){S(this,iW,!0);for(const a of F(this,dd).values())a.isEmpty()&&a.remove();S(this,iW,!1)},el(Gs,"_initialized",!1),h(Gs,Ct,new Map([IJ,EJ,wJ,Ye].map(a=>[a._editorType,a])));let CJ=Gs;const R0=class sd{constructor({pageIndex:l}){h(this,fn),h(this,lR),h(this,$d,null),h(this,vn,0),h(this,VU,new Map),h(this,xt,new Map),this.pageIndex=l}setParent(l){if(!F(this,$d)){S(this,$d,l);return}if(F(this,$d)!==l){if(F(this,VU).size>0)for(const U of F(this,VU).values())U.remove(),l.append(U);S(this,$d,l)}}static get _svgFactory(){return yl(this,"_svgFactory",new nR)}highlight(l,U,Z,c=!1){const W=PU(this,vn)._++,s=G(this,fn,$N).call(this,l.box);s.classList.add("highlight"),l.free&&s.classList.add("free");const Q=sd._svgFactory.createElement("defs");s.append(Q);const R=sd._svgFactory.createElement("path");Q.append(R);const m=`path_p${this.pageIndex}_${W}`;R.setAttribute("id",m),R.setAttribute("d",l.toSVGPath()),c&&F(this,xt).set(W,R);const e=G(this,lR,Sm).call(this,Q,m),T=sd._svgFactory.createElement("use");return s.append(T),s.setAttribute("fill",U),s.setAttribute("fill-opacity",Z),T.setAttribute("href",`#${m}`),F(this,VU).set(W,s),{id:W,clipPathId:`url(#${e})`}}highlightOutline(l){const U=PU(this,vn)._++,Z=G(this,fn,$N).call(this,l.box);Z.classList.add("highlightOutline");const c=sd._svgFactory.createElement("defs");Z.append(c);const W=sd._svgFactory.createElement("path");c.append(W);const s=`path_p${this.pageIndex}_${U}`;W.setAttribute("id",s),W.setAttribute("d",l.toSVGPath()),W.setAttribute("vector-effect","non-scaling-stroke");let Q;if(l.free){Z.classList.add("free");const e=sd._svgFactory.createElement("mask");c.append(e),Q=`mask_p${this.pageIndex}_${U}`,e.setAttribute("id",Q),e.setAttribute("maskUnits","objectBoundingBox");const T=sd._svgFactory.createElement("rect");e.append(T),T.setAttribute("width","1"),T.setAttribute("height","1"),T.setAttribute("fill","white");const Y=sd._svgFactory.createElement("use");e.append(Y),Y.setAttribute("href",`#${s}`),Y.setAttribute("stroke","none"),Y.setAttribute("fill","black"),Y.setAttribute("fill-rule","nonzero"),Y.classList.add("mask")}const R=sd._svgFactory.createElement("use");Z.append(R),R.setAttribute("href",`#${s}`),Q&&R.setAttribute("mask",`url(#${Q})`);const m=R.cloneNode();return Z.append(m),R.classList.add("mainOutline"),m.classList.add("secondaryOutline"),F(this,VU).set(U,Z),U}finalizeLine(l,U){const Z=F(this,xt).get(l);F(this,xt).delete(l),this.updateBox(l,U.box),Z.setAttribute("d",U.toSVGPath())}updateLine(l,U){F(this,VU).get(l).firstChild.firstChild.setAttribute("d",U.toSVGPath())}removeFreeHighlight(l){this.remove(l),F(this,xt).delete(l)}updatePath(l,U){F(this,xt).get(l).setAttribute("d",U.toSVGPath())}updateBox(l,U){var Z;G(Z=sd,Pn,qN).call(Z,F(this,VU).get(l),U)}show(l,U){F(this,VU).get(l).classList.toggle("hidden",!U)}rotate(l,U){F(this,VU).get(l).setAttribute("data-main-rotation",U)}changeColor(l,U){F(this,VU).get(l).setAttribute("fill",U)}changeOpacity(l,U){F(this,VU).get(l).setAttribute("fill-opacity",U)}addClass(l,U){F(this,VU).get(l).classList.add(U)}removeClass(l,U){F(this,VU).get(l).classList.remove(U)}remove(l){F(this,$d)!==null&&(F(this,VU).get(l).remove(),F(this,VU).delete(l))}destroy(){S(this,$d,null);for(const l of F(this,VU).values())l.remove();F(this,VU).clear()}};$d=new WeakMap,vn=new WeakMap,VU=new WeakMap,xt=new WeakMap,Pn=new WeakSet,qN=function(a,{x:l=0,y:U=0,width:Z=1,height:c=1}={}){const{style:W}=a;W.top=`${100*U}%`,W.left=`${100*l}%`,W.width=`${100*Z}%`,W.height=`${100*c}%`},fn=new WeakSet,$N=function(a){var l;const U=R0._svgFactory.create(1,1,!0);return F(this,$d).append(U),U.setAttribute("aria-hidden",!0),G(l=R0,Pn,qN).call(l,U,a),U},lR=new WeakSet,Sm=function(a,l){const U=R0._svgFactory.createElement("clipPath");a.append(U);const Z=`clip_${l}`;U.setAttribute("id",Z),U.setAttribute("clipPathUnits","objectBoundingBox");const c=R0._svgFactory.createElement("use");return U.append(c),c.setAttribute("href",`#${l}`),c.classList.add("clip"),Z},h(R0,Pn);let xJ=R0})();hl.AbortException;hl.AnnotationEditorLayer;hl.AnnotationEditorParamsType;hl.AnnotationEditorType;hl.AnnotationEditorUIManager;var FT=hl.AnnotationLayer;hl.AnnotationMode;hl.CMapCompressionType;hl.ColorPicker;hl.DOMSVGFactory;hl.DrawLayer;hl.FeatureTest;var IR=hl.GlobalWorkerOptions;hl.ImageKind;hl.InvalidPDFException;hl.MissingPDFException;hl.OPS;hl.Outliner;hl.PDFDataRangeTransport;hl.PDFDateString;hl.PDFWorker;var cT=hl.PasswordResponses;hl.PermissionFlag;hl.PixelsPerInch;hl.RenderingCancelledException;var WT=hl.TextLayer;hl.UnexpectedResponseException;hl.Util;hl.VerbosityLevel;hl.XfaLayer;hl.build;hl.createValidAbsoluteUrl;hl.fetchData;var aT=hl.getDocument;hl.getFilenameFromUrl;hl.getPdfFilenameFromUrl;hl.getXfaPageViewport;hl.isDataScheme;hl.isPdfFile;hl.noContextMenu;hl.normalizeUnicode;hl.renderTextLayer;hl.setLayerDimensions;hl.shadow;hl.updateTextLayer;hl.version;const VT="data:application/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDIzIE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi92YXIgZT17OTMwNjooZSx0LGkpPT57dmFyIGE9aSg0OTAxKSxyPWkoNjgyMykscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGEoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IHMocihlKSsiIGlzIG5vdCBhIGZ1bmN0aW9uIil9fSwzNTA2OihlLHQsaSk9Pnt2YXIgYT1pKDM5MjUpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKCJDYW4ndCBzZXQgIityKGUpKyIgYXMgYSBwcm90b3R5cGUiKX19LDcwODA6KGUsdCxpKT0+e3ZhciBhPWkoNDQwMikuaGFzO2UuZXhwb3J0cz1mdW5jdGlvbihlKXthKGUpO3JldHVybiBlfX0sNjc5OihlLHQsaSk9Pnt2YXIgYT1pKDE2MjUpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGEodCxlKSlyZXR1cm4gZTt0aHJvdyBuZXcgcigiSW5jb3JyZWN0IGludm9jYXRpb24iKX19LDg1NTE6KGUsdCxpKT0+e3ZhciBhPWkoMzQpLHI9U3RyaW5nLHM9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXJldHVybiBlO3Rocm93IG5ldyBzKHIoZSkrIiBpcyBub3QgYW4gb2JqZWN0Iil9fSw3ODExOmU9PntlLmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBEYXRhVmlld30sNzM5NDooZSx0LGkpPT57dmFyIGE9aSg2NzA2KSxyPWkoNDU3Nikscz1UeXBlRXJyb3I7ZS5leHBvcnRzPWEoQXJyYXlCdWZmZXIucHJvdG90eXBlLCJieXRlTGVuZ3RoIiwiZ2V0Iil8fGZ1bmN0aW9uKGUpe2lmKCJBcnJheUJ1ZmZlciIhPT1yKGUpKXRocm93IG5ldyBzKCJBcnJheUJ1ZmZlciBleHBlY3RlZCIpO3JldHVybiBlLmJ5dGVMZW5ndGh9fSwzMjM4OihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9aSg3Mzk0KSxzPWEoQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoMCE9PXIoZSkpcmV0dXJuITE7dHJ5e3MoZSwwLDApO3JldHVybiExfWNhdGNoKGUpe3JldHVybiEwfX19LDU2MzY6KGUsdCxpKT0+e3ZhciBhPWkoNDQ3NSkscj1pKDk1MDQpLHM9aSg2NzA2KSxuPWkoNzY5Niksbz1pKDMyMzgpLGc9aSg3Mzk0KSxjPWkoNDQ4MyksaD1pKDE1NDgpLGw9YS5zdHJ1Y3R1cmVkQ2xvbmUsQz1hLkFycmF5QnVmZmVyLFE9YS5EYXRhVmlldyxFPWEuVHlwZUVycm9yLHU9TWF0aC5taW4sZD1DLnByb3RvdHlwZSxmPVEucHJvdG90eXBlLHA9cihkLnNsaWNlKSxtPXMoZCwicmVzaXphYmxlIiwiZ2V0IikseT1zKGQsIm1heEJ5dGVMZW5ndGgiLCJnZXQiKSx3PXIoZi5nZXRJbnQ4KSxiPXIoZi5zZXRJbnQ4KTtlLmV4cG9ydHM9KGh8fGMpJiZmdW5jdGlvbihlLHQsaSl7dmFyIGEscj1nKGUpLHM9dm9pZCAwPT09dD9yOm4odCksZD0hbXx8IW0oZSk7aWYobyhlKSl0aHJvdyBuZXcgRSgiQXJyYXlCdWZmZXIgaXMgZGV0YWNoZWQiKTtpZihoKXtlPWwoZSx7dHJhbnNmZXI6W2VdfSk7aWYocj09PXMmJihpfHxkKSlyZXR1cm4gZX1pZihyPj1zJiYoIWl8fGQpKWE9cChlLDAscyk7ZWxzZXt2YXIgZj1pJiYhZCYmeT97bWF4Qnl0ZUxlbmd0aDp5KGUpfTp2b2lkIDA7YT1uZXcgQyhzLGYpO2Zvcih2YXIgRD1uZXcgUShlKSxTPW5ldyBRKGEpLGs9dShzLHIpLFI9MDtSPGs7UisrKWIoUyxSLHcoRCxSKSl9aHx8YyhlKTtyZXR1cm4gYX19LDQ2NDQ6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoNzgxMSksbz1pKDM3MjQpLGc9aSg0NDc1KSxjPWkoNDkwMSksaD1pKDM0KSxsPWkoOTI5NyksQz1pKDY5NTUpLFE9aSg2ODIzKSxFPWkoNjY5OSksdT1pKDY4NDApLGQ9aSgyMTA2KSxmPWkoMTYyNSkscD1pKDI3ODcpLG09aSgyOTY3KSx5PWkoODIyNyksdz1pKDMzOTIpLGI9aSgxMTgxKSxEPWIuZW5mb3JjZSxTPWIuZ2V0LGs9Zy5JbnQ4QXJyYXksUj1rJiZrLnByb3RvdHlwZSxOPWcuVWludDhDbGFtcGVkQXJyYXksRz1OJiZOLnByb3RvdHlwZSx4PWsmJnAoayksTT1SJiZwKFIpLFU9T2JqZWN0LnByb3RvdHlwZSxMPWcuVHlwZUVycm9yLEo9eSgidG9TdHJpbmdUYWciKSxIPXcoIlRZUEVEX0FSUkFZX1RBRyIpLHY9IlR5cGVkQXJyYXlDb25zdHJ1Y3RvciIsWT1uJiYhIW0mJiJPcGVyYSIhPT1DKGcub3BlcmEpLEs9ITEsVD17SW50OEFycmF5OjEsVWludDhBcnJheToxLFVpbnQ4Q2xhbXBlZEFycmF5OjEsSW50MTZBcnJheToyLFVpbnQxNkFycmF5OjIsSW50MzJBcnJheTo0LFVpbnQzMkFycmF5OjQsRmxvYXQzMkFycmF5OjQsRmxvYXQ2NEFycmF5Ojh9LHE9e0JpZ0ludDY0QXJyYXk6OCxCaWdVaW50NjRBcnJheTo4fSxnZXRUeXBlZEFycmF5Q29uc3RydWN0b3I9ZnVuY3Rpb24oZSl7dmFyIHQ9cChlKTtpZihoKHQpKXt2YXIgaT1TKHQpO3JldHVybiBpJiZsKGksdik/aVt2XTpnZXRUeXBlZEFycmF5Q29uc3RydWN0b3IodCl9fSxpc1R5cGVkQXJyYXk9ZnVuY3Rpb24oZSl7aWYoIWgoZSkpcmV0dXJuITE7dmFyIHQ9QyhlKTtyZXR1cm4gbChULHQpfHxsKHEsdCl9O2ZvcihhIGluIFQpKHM9KHI9Z1thXSkmJnIucHJvdG90eXBlKT9EKHMpW3ZdPXI6WT0hMTtmb3IoYSBpbiBxKShzPShyPWdbYV0pJiZyLnByb3RvdHlwZSkmJihEKHMpW3ZdPXIpO2lmKCFZfHwhYyh4KXx8eD09PUZ1bmN0aW9uLnByb3RvdHlwZSl7eD1mdW5jdGlvbiBUeXBlZEFycmF5KCl7dGhyb3cgbmV3IEwoIkluY29ycmVjdCBpbnZvY2F0aW9uIil9O2lmKFkpZm9yKGEgaW4gVClnW2FdJiZtKGdbYV0seCl9aWYoIVl8fCFNfHxNPT09VSl7TT14LnByb3RvdHlwZTtpZihZKWZvcihhIGluIFQpZ1thXSYmbShnW2FdLnByb3RvdHlwZSxNKX1ZJiZwKEcpIT09TSYmbShHLE0pO2lmKG8mJiFsKE0sSikpe0s9ITA7ZChNLEose2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaCh0aGlzKT90aGlzW0hdOnZvaWQgMH19KTtmb3IoYSBpbiBUKWdbYV0mJkUoZ1thXSxILGEpfWUuZXhwb3J0cz17TkFUSVZFX0FSUkFZX0JVRkZFUl9WSUVXUzpZLFRZUEVEX0FSUkFZX1RBRzpLJiZILGFUeXBlZEFycmF5OmZ1bmN0aW9uKGUpe2lmKGlzVHlwZWRBcnJheShlKSlyZXR1cm4gZTt0aHJvdyBuZXcgTCgiVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5Iil9LGFUeXBlZEFycmF5Q29uc3RydWN0b3I6ZnVuY3Rpb24oZSl7aWYoYyhlKSYmKCFtfHxmKHgsZSkpKXJldHVybiBlO3Rocm93IG5ldyBMKFEoZSkrIiBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciIpfSxleHBvcnRUeXBlZEFycmF5TWV0aG9kOmZ1bmN0aW9uKGUsdCxpLGEpe2lmKG8pe2lmKGkpZm9yKHZhciByIGluIFQpe3ZhciBzPWdbcl07aWYocyYmbChzLnByb3RvdHlwZSxlKSl0cnl7ZGVsZXRlIHMucHJvdG90eXBlW2VdfWNhdGNoKGkpe3RyeXtzLnByb3RvdHlwZVtlXT10fWNhdGNoKGUpe319fU1bZV0mJiFpfHx1KE0sZSxpP3Q6WSYmUltlXXx8dCxhKX19LGV4cG9ydFR5cGVkQXJyYXlTdGF0aWNNZXRob2Q6ZnVuY3Rpb24oZSx0LGkpe3ZhciBhLHI7aWYobyl7aWYobSl7aWYoaSlmb3IoYSBpbiBUKWlmKChyPWdbYV0pJiZsKHIsZSkpdHJ5e2RlbGV0ZSByW2VdfWNhdGNoKGUpe31pZih4W2VdJiYhaSlyZXR1cm47dHJ5e3JldHVybiB1KHgsZSxpP3Q6WSYmeFtlXXx8dCl9Y2F0Y2goZSl7fX1mb3IoYSBpbiBUKSEocj1nW2FdKXx8cltlXSYmIWl8fHUocixlLHQpfX0sZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLGlzVmlldzpmdW5jdGlvbiBpc1ZpZXcoZSl7aWYoIWgoZSkpcmV0dXJuITE7dmFyIHQ9QyhlKTtyZXR1cm4iRGF0YVZpZXciPT09dHx8bChULHQpfHxsKHEsdCl9LGlzVHlwZWRBcnJheSxUeXBlZEFycmF5OngsVHlwZWRBcnJheVByb3RvdHlwZTpNfX0sNTM3MDooZSx0LGkpPT57dmFyIGE9aSg2MTk4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2Zvcih2YXIgcj0wLHM9YXJndW1lbnRzLmxlbmd0aD4yP2k6YSh0KSxuPW5ldyBlKHMpO3M+cjspbltyXT10W3IrK107cmV0dXJuIG59fSw5NjE3OihlLHQsaSk9Pnt2YXIgYT1pKDUzOTcpLHI9aSg1NjEwKSxzPWkoNjE5OCksY3JlYXRlTWV0aG9kPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LGksbil7dmFyIG89YSh0KSxnPXMobyk7aWYoMD09PWcpcmV0dXJuIWUmJi0xO3ZhciBjLGg9cihuLGcpO2lmKGUmJmkhPWkpe2Zvcig7Zz5oOylpZigoYz1vW2grK10pIT1jKXJldHVybiEwfWVsc2UgZm9yKDtnPmg7aCsrKWlmKChlfHxoIGluIG8pJiZvW2hdPT09aSlyZXR1cm4gZXx8aHx8MDtyZXR1cm4hZSYmLTF9fTtlLmV4cG9ydHM9e2luY2x1ZGVzOmNyZWF0ZU1ldGhvZCghMCksaW5kZXhPZjpjcmVhdGVNZXRob2QoITEpfX0sNDUyNzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNDM3Nikscz1UeXBlRXJyb3Isbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG89YSYmIWZ1bmN0aW9uKCl7aWYodm9pZCAwIT09dGhpcylyZXR1cm4hMDt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLmxlbmd0aD0xfWNhdGNoKGUpe3JldHVybiBlIGluc3RhbmNlb2YgVHlwZUVycm9yfX0oKTtlLmV4cG9ydHM9bz9mdW5jdGlvbihlLHQpe2lmKHIoZSkmJiFuKGUsImxlbmd0aCIpLndyaXRhYmxlKXRocm93IG5ldyBzKCJDYW5ub3Qgc2V0IHJlYWQgb25seSAubGVuZ3RoIik7cmV0dXJuIGUubGVuZ3RoPXR9OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoPXR9fSw3NjI4OihlLHQsaSk9Pnt2YXIgYT1pKDYxOTgpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgaT1hKGUpLHI9bmV3IHQoaSkscz0wO3M8aTtzKyspcltzXT1lW2ktcy0xXTtyZXR1cm4gcn19LDk5Mjg6KGUsdCxpKT0+e3ZhciBhPWkoNjE5OCkscj1pKDEyOTEpLHM9UmFuZ2VFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGksbil7dmFyIG89YShlKSxnPXIoaSksYz1nPDA/bytnOmc7aWYoYz49b3x8YzwwKXRocm93IG5ldyBzKCJJbmNvcnJlY3QgaW5kZXgiKTtmb3IodmFyIGg9bmV3IHQobyksbD0wO2w8bztsKyspaFtsXT1sPT09Yz9uOmVbbF07cmV0dXJuIGh9fSw2MzE5OihlLHQsaSk9Pnt2YXIgYT1pKDg1NTEpLHI9aSg5NTM5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkscyl7dHJ5e3JldHVybiBzP3QoYShpKVswXSxpWzFdKTp0KGkpfWNhdGNoKHQpe3IoZSwidGhyb3ciLHQpfX19LDQ1NzY6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1hKHt9LnRvU3RyaW5nKSxzPWEoIiIuc2xpY2UpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcyhyKGUpLDgsLTEpfX0sNjk1NTooZSx0LGkpPT57dmFyIGE9aSgyMTQwKSxyPWkoNDkwMSkscz1pKDQ1NzYpLG49aSg4MjI3KSgidG9TdHJpbmdUYWciKSxvPU9iamVjdCxnPSJBcmd1bWVudHMiPT09cyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpO2UuZXhwb3J0cz1hP3M6ZnVuY3Rpb24oZSl7dmFyIHQsaSxhO3JldHVybiB2b2lkIDA9PT1lPyJVbmRlZmluZWQiOm51bGw9PT1lPyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKGk9ZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIGVbdF19Y2F0Y2goZSl7fX0odD1vKGUpLG4pKT9pOmc/cyh0KToiT2JqZWN0Ij09PShhPXModCkpJiZyKHQuY2FsbGVlKT8iQXJndW1lbnRzIjphfX0sNzc0MDooZSx0LGkpPT57dmFyIGE9aSg5Mjk3KSxyPWkoNTAzMSkscz1pKDczNDcpLG49aSg0OTEzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2Zvcih2YXIgbz1yKHQpLGc9bi5mLGM9cy5mLGg9MDtoPG8ubGVuZ3RoO2grKyl7dmFyIGw9b1toXTthKGUsbCl8fGkmJmEoaSxsKXx8ZyhlLGwsYyh0LGwpKX19fSwyMjExOihlLHQsaSk9Pnt2YXIgYT1pKDkwMzkpO2UuZXhwb3J0cz0hYSgoZnVuY3Rpb24oKXtmdW5jdGlvbiBGKCl7fUYucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGw7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRikhPT1GLnByb3RvdHlwZX0pKX0sMjUyOTplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3ZhbHVlOmUsZG9uZTp0fX19LDY2OTk6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDQ5MTMpLHM9aSg2OTgwKTtlLmV4cG9ydHM9YT9mdW5jdGlvbihlLHQsaSl7cmV0dXJuIHIuZihlLHQscygxLGkpKX06ZnVuY3Rpb24oZSx0LGkpe2VbdF09aTtyZXR1cm4gZX19LDY5ODA6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybntlbnVtZXJhYmxlOiEoMSZlKSxjb25maWd1cmFibGU6ISgyJmUpLHdyaXRhYmxlOiEoNCZlKSx2YWx1ZTp0fX19LDQ2NTk6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDQ5MTMpLHM9aSg2OTgwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2E/ci5mKGUsdCxzKDAsaSkpOmVbdF09aX19LDIxMDY6KGUsdCxpKT0+e3ZhciBhPWkoMjgzKSxyPWkoNDkxMyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtpLmdldCYmYShpLmdldCx0LHtnZXR0ZXI6ITB9KTtpLnNldCYmYShpLnNldCx0LHtzZXR0ZXI6ITB9KTtyZXR1cm4gci5mKGUsdCxpKX19LDY4NDA6KGUsdCxpKT0+e3ZhciBhPWkoNDkwMSkscj1pKDQ5MTMpLHM9aSgyODMpLG49aSg5NDMzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGksbyl7b3x8KG89e30pO3ZhciBnPW8uZW51bWVyYWJsZSxjPXZvaWQgMCE9PW8ubmFtZT9vLm5hbWU6dDthKGkpJiZzKGksYyxvKTtpZihvLmdsb2JhbClnP2VbdF09aTpuKHQsaSk7ZWxzZXt0cnl7by51bnNhZmU/ZVt0XSYmKGc9ITApOmRlbGV0ZSBlW3RdfWNhdGNoKGUpe31nP2VbdF09aTpyLmYoZSx0LHt2YWx1ZTppLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiFvLm5vbkNvbmZpZ3VyYWJsZSx3cml0YWJsZTohby5ub25Xcml0YWJsZX0pfXJldHVybiBlfX0sNjI3OTooZSx0LGkpPT57dmFyIGE9aSg2ODQwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2Zvcih2YXIgciBpbiB0KWEoZSxyLHRbcl0saSk7cmV0dXJuIGV9fSw5NDMzOihlLHQsaSk9Pnt2YXIgYT1pKDQ0NzUpLHI9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3RyeXtyKGEsZSx7dmFsdWU6dCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaChpKXthW2VdPXR9cmV0dXJuIHR9fSwzNzI0OihlLHQsaSk9Pnt2YXIgYT1pKDkwMzkpO2UuZXhwb3J0cz0hYSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwxLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KVsxXX0pKX0sNDQ4MzooZSx0LGkpPT57dmFyIGEscixzLG4sbz1pKDQ0NzUpLGc9aSg5NzE0KSxjPWkoMTU0OCksaD1vLnN0cnVjdHVyZWRDbG9uZSxsPW8uQXJyYXlCdWZmZXIsQz1vLk1lc3NhZ2VDaGFubmVsLFE9ITE7aWYoYylRPWZ1bmN0aW9uKGUpe2goZSx7dHJhbnNmZXI6W2VdfSl9O2Vsc2UgaWYobCl0cnl7Q3x8KGE9Zygid29ya2VyX3RocmVhZHMiKSkmJihDPWEuTWVzc2FnZUNoYW5uZWwpO2lmKEMpe3I9bmV3IEM7cz1uZXcgbCgyKTtuPWZ1bmN0aW9uKGUpe3IucG9ydDEucG9zdE1lc3NhZ2UobnVsbCxbZV0pfTtpZigyPT09cy5ieXRlTGVuZ3RoKXtuKHMpOzA9PT1zLmJ5dGVMZW5ndGgmJihRPW4pfX19Y2F0Y2goZSl7fWUuZXhwb3J0cz1RfSw0MDU1OihlLHQsaSk9Pnt2YXIgYT1pKDQ0NzUpLHI9aSgzNCkscz1hLmRvY3VtZW50LG49cihzKSYmcihzLmNyZWF0ZUVsZW1lbnQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbj9zLmNyZWF0ZUVsZW1lbnQoZSk6e319fSw2ODM3OmU9Pnt2YXIgdD1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGU+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyB0KCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtyZXR1cm4gZX19LDUwMDI6ZT0+e2UuZXhwb3J0cz17SW5kZXhTaXplRXJyb3I6e3M6IklOREVYX1NJWkVfRVJSIixjOjEsbToxfSxET01TdHJpbmdTaXplRXJyb3I6e3M6IkRPTVNUUklOR19TSVpFX0VSUiIsYzoyLG06MH0sSGllcmFyY2h5UmVxdWVzdEVycm9yOntzOiJISUVSQVJDSFlfUkVRVUVTVF9FUlIiLGM6MyxtOjF9LFdyb25nRG9jdW1lbnRFcnJvcjp7czoiV1JPTkdfRE9DVU1FTlRfRVJSIixjOjQsbToxfSxJbnZhbGlkQ2hhcmFjdGVyRXJyb3I6e3M6IklOVkFMSURfQ0hBUkFDVEVSX0VSUiIsYzo1LG06MX0sTm9EYXRhQWxsb3dlZEVycm9yOntzOiJOT19EQVRBX0FMTE9XRURfRVJSIixjOjYsbTowfSxOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjp7czoiTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIixjOjcsbToxfSxOb3RGb3VuZEVycm9yOntzOiJOT1RfRk9VTkRfRVJSIixjOjgsbToxfSxOb3RTdXBwb3J0ZWRFcnJvcjp7czoiTk9UX1NVUFBPUlRFRF9FUlIiLGM6OSxtOjF9LEluVXNlQXR0cmlidXRlRXJyb3I6e3M6IklOVVNFX0FUVFJJQlVURV9FUlIiLGM6MTAsbToxfSxJbnZhbGlkU3RhdGVFcnJvcjp7czoiSU5WQUxJRF9TVEFURV9FUlIiLGM6MTEsbToxfSxTeW50YXhFcnJvcjp7czoiU1lOVEFYX0VSUiIsYzoxMixtOjF9LEludmFsaWRNb2RpZmljYXRpb25FcnJvcjp7czoiSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSIixjOjEzLG06MX0sTmFtZXNwYWNlRXJyb3I6e3M6Ik5BTUVTUEFDRV9FUlIiLGM6MTQsbToxfSxJbnZhbGlkQWNjZXNzRXJyb3I6e3M6IklOVkFMSURfQUNDRVNTX0VSUiIsYzoxNSxtOjF9LFZhbGlkYXRpb25FcnJvcjp7czoiVkFMSURBVElPTl9FUlIiLGM6MTYsbTowfSxUeXBlTWlzbWF0Y2hFcnJvcjp7czoiVFlQRV9NSVNNQVRDSF9FUlIiLGM6MTcsbToxfSxTZWN1cml0eUVycm9yOntzOiJTRUNVUklUWV9FUlIiLGM6MTgsbToxfSxOZXR3b3JrRXJyb3I6e3M6Ik5FVFdPUktfRVJSIixjOjE5LG06MX0sQWJvcnRFcnJvcjp7czoiQUJPUlRfRVJSIixjOjIwLG06MX0sVVJMTWlzbWF0Y2hFcnJvcjp7czoiVVJMX01JU01BVENIX0VSUiIsYzoyMSxtOjF9LFF1b3RhRXhjZWVkZWRFcnJvcjp7czoiUVVPVEFfRVhDRUVERURfRVJSIixjOjIyLG06MX0sVGltZW91dEVycm9yOntzOiJUSU1FT1VUX0VSUiIsYzoyMyxtOjF9LEludmFsaWROb2RlVHlwZUVycm9yOntzOiJJTlZBTElEX05PREVfVFlQRV9FUlIiLGM6MjQsbToxfSxEYXRhQ2xvbmVFcnJvcjp7czoiREFUQV9DTE9ORV9FUlIiLGM6MjUsbToxfX19LDcyOTA6KGUsdCxpKT0+e3ZhciBhPWkoNTE2KSxyPWkoOTA4OCk7ZS5leHBvcnRzPSFhJiYhciYmIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJiJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnR9LDUxNjplPT57ZS5leHBvcnRzPSJvYmplY3QiPT10eXBlb2YgRGVubyYmRGVubyYmIm9iamVjdCI9PXR5cGVvZiBEZW5vLnZlcnNpb259LDkwODg6KGUsdCxpKT0+e3ZhciBhPWkoNDQ3NSkscj1pKDQ1NzYpO2UuZXhwb3J0cz0icHJvY2VzcyI9PT1yKGEucHJvY2Vzcyl9LDkzOTI6ZT0+e2UuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmU3RyaW5nKG5hdmlnYXRvci51c2VyQWdlbnQpfHwiIn0sNzM4ODooZSx0LGkpPT57dmFyIGEscixzPWkoNDQ3NSksbj1pKDkzOTIpLG89cy5wcm9jZXNzLGc9cy5EZW5vLGM9byYmby52ZXJzaW9uc3x8ZyYmZy52ZXJzaW9uLGg9YyYmYy52ODtoJiYocj0oYT1oLnNwbGl0KCIuIikpWzBdPjAmJmFbMF08ND8xOisoYVswXSthWzFdKSk7IXImJm4mJighKGE9bi5tYXRjaCgvRWRnZVwvKFxkKykvKSl8fGFbMV0+PTc0KSYmKGE9bi5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pKSYmKHI9K2FbMV0pO2UuZXhwb3J0cz1yfSw4NzI3OmU9PntlLmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sNjE5MzooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPUVycm9yLHM9YSgiIi5yZXBsYWNlKSxuPVN0cmluZyhuZXcgcigienhjYXNkIikuc3RhY2spLG89L1xuXHMqYXQgW146XSo6W15cbl0qLyxnPW8udGVzdChuKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihnJiYic3RyaW5nIj09dHlwZW9mIGUmJiFyLnByZXBhcmVTdGFja1RyYWNlKWZvcig7dC0tOyllPXMoZSxvLCIiKTtyZXR1cm4gZX19LDY1MTg6KGUsdCxpKT0+e3ZhciBhPWkoNDQ3NSkscj1pKDczNDcpLmYscz1pKDY2OTkpLG49aSg2ODQwKSxvPWkoOTQzMyksZz1pKDc3NDApLGM9aSgyNzk2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgaSxoLGwsQyxRLEU9ZS50YXJnZXQsdT1lLmdsb2JhbCxkPWUuc3RhdDtpZihpPXU/YTpkP2FbRV18fG8oRSx7fSk6YVtFXSYmYVtFXS5wcm90b3R5cGUpZm9yKGggaW4gdCl7Qz10W2hdO2w9ZS5kb250Q2FsbEdldFNldD8oUT1yKGksaCkpJiZRLnZhbHVlOmlbaF07aWYoIWModT9oOkUrKGQ/Ii4iOiIjIikraCxlLmZvcmNlZCkmJnZvaWQgMCE9PWwpe2lmKHR5cGVvZiBDPT10eXBlb2YgbCljb250aW51ZTtnKEMsbCl9KGUuc2hhbXx8bCYmbC5zaGFtKSYmcyhDLCJzaGFtIiwhMCk7bihpLGgsQyxlKX19fSw5MDM5OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiEhZSgpfWNhdGNoKGUpe3JldHVybiEwfX19LDYwODA6KGUsdCxpKT0+e3ZhciBhPWkoNzQ3Nikscj1pKDkzMDYpLHM9aSg2MTYpLG49YShhLmJpbmQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3IoZSk7cmV0dXJuIHZvaWQgMD09PXQ/ZTpzP24oZSx0KTpmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19fSw2MTY6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSk7ZS5leHBvcnRzPSFhKChmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7fS5iaW5kKCk7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIGV8fGUuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpfSkpfSw5NTY1OihlLHQsaSk9Pnt2YXIgYT1pKDYxNikscj1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtlLmV4cG9ydHM9YT9yLmJpbmQocik6ZnVuY3Rpb24oKXtyZXR1cm4gci5hcHBseShyLGFyZ3VtZW50cyl9fSwzNTA6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkyOTcpLHM9RnVuY3Rpb24ucHJvdG90eXBlLG49YSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPXIocywibmFtZSIpLGc9byYmInNvbWV0aGluZyI9PT1mdW5jdGlvbiBzb21ldGhpbmcoKXt9Lm5hbWUsYz1vJiYoIWF8fGEmJm4ocywibmFtZSIpLmNvbmZpZ3VyYWJsZSk7ZS5leHBvcnRzPXtFWElTVFM6byxQUk9QRVI6ZyxDT05GSUdVUkFCTEU6Y319LDY3MDY6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkzMDYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7dHJ5e3JldHVybiBhKHIoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpW2ldKSl9Y2F0Y2goZSl7fX19LDc0NzY6KGUsdCxpKT0+e3ZhciBhPWkoNDU3Nikscj1pKDk1MDQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigiRnVuY3Rpb24iPT09YShlKSlyZXR1cm4gcihlKX19LDk1MDQ6KGUsdCxpKT0+e3ZhciBhPWkoNjE2KSxyPUZ1bmN0aW9uLnByb3RvdHlwZSxzPXIuY2FsbCxuPWEmJnIuYmluZC5iaW5kKHMscyk7ZS5leHBvcnRzPWE/bjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcy5hcHBseShlLGFyZ3VtZW50cyl9fX0sNzc1MTooZSx0LGkpPT57dmFyIGE9aSg0NDc1KSxyPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj8oaT1hW2VdLHIoaSk/aTp2b2lkIDApOmFbZV0mJmFbZV1bdF07dmFyIGl9fSwxNzY3OmU9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJue2l0ZXJhdG9yOmUsbmV4dDplLm5leHQsZG9uZTohMX19fSw4NTE6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSkscj1pKDU5NjYpLHM9aSg0MTE3KSxuPWkoNjI2OSksbz1pKDgyMjcpKCJpdGVyYXRvciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighcyhlKSlyZXR1cm4gcihlLG8pfHxyKGUsIkBAaXRlcmF0b3IiKXx8blthKGUpXX19LDgxOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSg5MzA2KSxzPWkoODU1MSksbj1pKDY4MjMpLG89aSg4NTEpLGc9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWFyZ3VtZW50cy5sZW5ndGg8Mj9vKGUpOnQ7aWYocihpKSlyZXR1cm4gcyhhKGksZSkpO3Rocm93IG5ldyBnKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKX19LDU5NjY6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1pKDQxMTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWVbdF07cmV0dXJuIHIoaSk/dm9pZCAwOmEoaSl9fSwzNzg5OihlLHQsaSk9Pnt2YXIgYT1pKDkzMDYpLHI9aSg4NTUxKSxzPWkoOTU2NSksbj1pKDEyOTEpLG89aSgxNzY3KSxnPSJJbnZhbGlkIHNpemUiLGM9UmFuZ2VFcnJvcixoPVR5cGVFcnJvcixsPU1hdGgubWF4LFNldFJlY29yZD1mdW5jdGlvbihlLHQpe3RoaXMuc2V0PWU7dGhpcy5zaXplPWwodCwwKTt0aGlzLmhhcz1hKGUuaGFzKTt0aGlzLmtleXM9YShlLmtleXMpfTtTZXRSZWNvcmQucHJvdG90eXBlPXtnZXRJdGVyYXRvcjpmdW5jdGlvbigpe3JldHVybiBvKHIocyh0aGlzLmtleXMsdGhpcy5zZXQpKSl9LGluY2x1ZGVzOmZ1bmN0aW9uKGUpe3JldHVybiBzKHRoaXMuaGFzLHRoaXMuc2V0LGUpfX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3IoZSk7dmFyIHQ9K2Uuc2l6ZTtpZih0IT10KXRocm93IG5ldyBoKGcpO3ZhciBpPW4odCk7aWYoaTwwKXRocm93IG5ldyBjKGcpO3JldHVybiBuZXcgU2V0UmVjb3JkKGUsaSl9fSw0NDc1OmZ1bmN0aW9uKGUpe3ZhciBjaGVjaz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5NYXRoPT09TWF0aCYmZX07ZS5leHBvcnRzPWNoZWNrKCJvYmplY3QiPT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyl8fGNoZWNrKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYpfHxjaGVjaygib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsKXx8Y2hlY2soIm9iamVjdCI9PXR5cGVvZiB0aGlzJiZ0aGlzKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0sOTI5NzooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoODk4MSkscz1hKHt9Lmhhc093blByb3BlcnR5KTtlLmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24gaGFzT3duKGUsdCl7cmV0dXJuIHMocihlKSx0KX19LDQyMTplPT57ZS5leHBvcnRzPXt9fSwzOTc6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MSk7ZS5leHBvcnRzPWEoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LDU5MTc6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkwMzkpLHM9aSg0MDU1KTtlLmV4cG9ydHM9IWEmJiFyKChmdW5jdGlvbigpe3JldHVybiA3IT09T2JqZWN0LmRlZmluZVByb3BlcnR5KHMoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKX0sNzA1NTooZSx0LGkpPT57dmFyIGE9aSg5NTA0KSxyPWkoOTAzOSkscz1pKDQ1NzYpLG49T2JqZWN0LG89YSgiIi5zcGxpdCk7ZS5leHBvcnRzPXIoKGZ1bmN0aW9uKCl7cmV0dXJuIW4oInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09PXMoZSk/byhlLCIiKTpuKGUpfTpufSwzMTY3OihlLHQsaSk9Pnt2YXIgYT1pKDQ5MDEpLHI9aSgzNCkscz1pKDI5NjcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7dmFyIG4sbztzJiZhKG49dC5jb25zdHJ1Y3RvcikmJm4hPT1pJiZyKG89bi5wcm90b3R5cGUpJiZvIT09aS5wcm90b3R5cGUmJnMoZSxvKTtyZXR1cm4gZX19LDM3MDY6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDQ5MDEpLHM9aSg3NjI5KSxuPWEoRnVuY3Rpb24udG9TdHJpbmcpO3Iocy5pbnNwZWN0U291cmNlKXx8KHMuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gbihlKX0pO2UuZXhwb3J0cz1zLmluc3BlY3RTb3VyY2V9LDExODE6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoODYyMiksbz1pKDQ0NzUpLGc9aSgzNCksYz1pKDY2OTkpLGg9aSg5Mjk3KSxsPWkoNzYyOSksQz1pKDYxMTkpLFE9aSg0MjEpLEU9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIix1PW8uVHlwZUVycm9yLGQ9by5XZWFrTWFwO2lmKG58fGwuc3RhdGUpe3ZhciBmPWwuc3RhdGV8fChsLnN0YXRlPW5ldyBkKTtmLmdldD1mLmdldDtmLmhhcz1mLmhhcztmLnNldD1mLnNldDthPWZ1bmN0aW9uKGUsdCl7aWYoZi5oYXMoZSkpdGhyb3cgbmV3IHUoRSk7dC5mYWNhZGU9ZTtmLnNldChlLHQpO3JldHVybiB0fTtyPWZ1bmN0aW9uKGUpe3JldHVybiBmLmdldChlKXx8e319O3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGYuaGFzKGUpfX1lbHNle3ZhciBwPUMoInN0YXRlIik7UVtwXT0hMDthPWZ1bmN0aW9uKGUsdCl7aWYoaChlLHApKXRocm93IG5ldyB1KEUpO3QuZmFjYWRlPWU7YyhlLHAsdCk7cmV0dXJuIHR9O3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGgoZSxwKT9lW3BdOnt9fTtzPWZ1bmN0aW9uKGUpe3JldHVybiBoKGUscCl9fWUuZXhwb3J0cz17c2V0OmEsZ2V0OnIsaGFzOnMsZW5mb3JjZTpmdW5jdGlvbihlKXtyZXR1cm4gcyhlKT9yKGUpOmEoZSx7fSl9LGdldHRlckZvcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGk7aWYoIWcodCl8fChpPXIodCkpLnR5cGUhPT1lKXRocm93IG5ldyB1KCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrZSsiIHJlcXVpcmVkIik7cmV0dXJuIGl9fX19LDQyMDk6KGUsdCxpKT0+e3ZhciBhPWkoODIyNykscj1pKDYyNjkpLHM9YSgiaXRlcmF0b3IiKSxuPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUmJihyLkFycmF5PT09ZXx8bltzXT09PWUpfX0sNDM3NjooZSx0LGkpPT57dmFyIGE9aSg0NTc2KTtlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24gaXNBcnJheShlKXtyZXR1cm4iQXJyYXkiPT09YShlKX19LDExMDg6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIkJpZ0ludDY0QXJyYXkiPT09dHx8IkJpZ1VpbnQ2NEFycmF5Ij09PXR9fSw0OTAxOmU9Pnt2YXIgdD0ib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5hbGw7ZS5leHBvcnRzPXZvaWQgMD09PXQmJnZvaWQgMCE9PXQ/ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGV8fGU9PT10fTpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX19LDI3OTY6KGUsdCxpKT0+e3ZhciBhPWkoOTAzOSkscj1pKDQ5MDEpLHM9LyN8XC5wcm90b3R5cGVcLi8saXNGb3JjZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgaT1vW24oZSldO3JldHVybiBpPT09Y3x8aSE9PWcmJihyKHQpP2EodCk6ISF0KX0sbj1pc0ZvcmNlZC5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKHMsIi4iKS50b0xvd2VyQ2FzZSgpfSxvPWlzRm9yY2VkLmRhdGE9e30sZz1pc0ZvcmNlZC5OQVRJVkU9Ik4iLGM9aXNGb3JjZWQuUE9MWUZJTEw9IlAiO2UuZXhwb3J0cz1pc0ZvcmNlZH0sNDExNzplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfX0sMzQ6KGUsdCxpKT0+e3ZhciBhPWkoNDkwMSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZT9udWxsIT09ZTphKGUpfX0sMzkyNTooZSx0LGkpPT57dmFyIGE9aSgzNCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfHxudWxsPT09ZX19LDYzOTU6ZT0+e2UuZXhwb3J0cz0hMX0sNzU3OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg0OTAxKSxzPWkoMTYyNSksbj1pKDcwNDApLG89T2JqZWN0O2UuZXhwb3J0cz1uP2Z1bmN0aW9uKGUpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgZX06ZnVuY3Rpb24oZSl7dmFyIHQ9YSgiU3ltYm9sIik7cmV0dXJuIHIodCkmJnModC5wcm90b3R5cGUsbyhlKSl9fSw1MDc6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXtmb3IodmFyIHIscyxuPWk/ZTplLml0ZXJhdG9yLG89ZS5uZXh0OyEocj1hKG8sbikpLmRvbmU7KWlmKHZvaWQgMCE9PShzPXQoci52YWx1ZSkpKXJldHVybiBzfX0sMjY1MjooZSx0LGkpPT57dmFyIGE9aSg2MDgwKSxyPWkoOTU2NSkscz1pKDg1NTEpLG49aSg2ODIzKSxvPWkoNDIwOSksZz1pKDYxOTgpLGM9aSgxNjI1KSxoPWkoODEpLGw9aSg4NTEpLEM9aSg5NTM5KSxRPVR5cGVFcnJvcixSZXN1bHQ9ZnVuY3Rpb24oZSx0KXt0aGlzLnN0b3BwZWQ9ZTt0aGlzLnJlc3VsdD10fSxFPVJlc3VsdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXt2YXIgdSxkLGYscCxtLHksdyxiPWkmJmkudGhhdCxEPSEoIWl8fCFpLkFTX0VOVFJJRVMpLFM9ISghaXx8IWkuSVNfUkVDT1JEKSxrPSEoIWl8fCFpLklTX0lURVJBVE9SKSxSPSEoIWl8fCFpLklOVEVSUlVQVEVEKSxOPWEodCxiKSxzdG9wPWZ1bmN0aW9uKGUpe3UmJkModSwibm9ybWFsIixlKTtyZXR1cm4gbmV3IFJlc3VsdCghMCxlKX0sY2FsbEZuPWZ1bmN0aW9uKGUpe2lmKEQpe3MoZSk7cmV0dXJuIFI/TihlWzBdLGVbMV0sc3RvcCk6TihlWzBdLGVbMV0pfXJldHVybiBSP04oZSxzdG9wKTpOKGUpfTtpZihTKXU9ZS5pdGVyYXRvcjtlbHNlIGlmKGspdT1lO2Vsc2V7aWYoIShkPWwoZSkpKXRocm93IG5ldyBRKG4oZSkrIiBpcyBub3QgaXRlcmFibGUiKTtpZihvKGQpKXtmb3IoZj0wLHA9ZyhlKTtwPmY7ZisrKWlmKChtPWNhbGxGbihlW2ZdKSkmJmMoRSxtKSlyZXR1cm4gbTtyZXR1cm4gbmV3IFJlc3VsdCghMSl9dT1oKGUsZCl9eT1TP2UubmV4dDp1Lm5leHQ7Zm9yKDshKHc9cih5LHUpKS5kb25lOyl7dHJ5e209Y2FsbEZuKHcudmFsdWUpfWNhdGNoKGUpe0ModSwidGhyb3ciLGUpfWlmKCJvYmplY3QiPT10eXBlb2YgbSYmbSYmYyhFLG0pKXJldHVybiBtfXJldHVybiBuZXcgUmVzdWx0KCExKX19LDk1Mzk6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDg1NTEpLHM9aSg1OTY2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3ZhciBuLG87cihlKTt0cnl7aWYoIShuPXMoZSwicmV0dXJuIikpKXtpZigidGhyb3ciPT09dCl0aHJvdyBpO3JldHVybiBpfW49YShuLGUpfWNhdGNoKGUpe289ITA7bj1lfWlmKCJ0aHJvdyI9PT10KXRocm93IGk7aWYobyl0aHJvdyBuO3Iobik7cmV0dXJuIGl9fSw5NDYyOihlLHQsaSk9Pnt2YXIgYT1pKDk1NjUpLHI9aSgyMzYwKSxzPWkoNjY5OSksbj1pKDYyNzkpLG89aSg4MjI3KSxnPWkoMTE4MSksYz1pKDU5NjYpLGg9aSg3NjU3KS5JdGVyYXRvclByb3RvdHlwZSxsPWkoMjUyOSksQz1pKDk1MzkpLFE9bygidG9TdHJpbmdUYWciKSxFPSJJdGVyYXRvckhlbHBlciIsdT0iV3JhcEZvclZhbGlkSXRlcmF0b3IiLGQ9Zy5zZXQsY3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZT1mdW5jdGlvbihlKXt2YXIgdD1nLmdldHRlckZvcihlP3U6RSk7cmV0dXJuIG4ocihoKSx7bmV4dDpmdW5jdGlvbiBuZXh0KCl7dmFyIGk9dCh0aGlzKTtpZihlKXJldHVybiBpLm5leHRIYW5kbGVyKCk7dHJ5e3ZhciBhPWkuZG9uZT92b2lkIDA6aS5uZXh0SGFuZGxlcigpO3JldHVybiBsKGEsaS5kb25lKX1jYXRjaChlKXtpLmRvbmU9ITA7dGhyb3cgZX19LHJldHVybjpmdW5jdGlvbigpe3ZhciBpPXQodGhpcykscj1pLml0ZXJhdG9yO2kuZG9uZT0hMDtpZihlKXt2YXIgcz1jKHIsInJldHVybiIpO3JldHVybiBzP2EocyxyKTpsKHZvaWQgMCwhMCl9aWYoaS5pbm5lcil0cnl7QyhpLmlubmVyLml0ZXJhdG9yLCJub3JtYWwiKX1jYXRjaChlKXtyZXR1cm4gQyhyLCJ0aHJvdyIsZSl9QyhyLCJub3JtYWwiKTtyZXR1cm4gbCh2b2lkIDAsITApfX0pfSxmPWNyZWF0ZUl0ZXJhdG9yUHJveHlQcm90b3R5cGUoITApLHA9Y3JlYXRlSXRlcmF0b3JQcm94eVByb3RvdHlwZSghMSk7cyhwLFEsIkl0ZXJhdG9yIEhlbHBlciIpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWZ1bmN0aW9uIEl0ZXJhdG9yKGksYSl7aWYoYSl7YS5pdGVyYXRvcj1pLml0ZXJhdG9yO2EubmV4dD1pLm5leHR9ZWxzZSBhPWk7YS50eXBlPXQ/dTpFO2EubmV4dEhhbmRsZXI9ZTthLmNvdW50ZXI9MDthLmRvbmU9ITE7ZCh0aGlzLGEpfTtpLnByb3RvdHlwZT10P2Y6cDtyZXR1cm4gaX19LDcxMzooZSx0LGkpPT57dmFyIGE9aSg5NTY1KSxyPWkoOTMwNikscz1pKDg1NTEpLG49aSgxNzY3KSxvPWkoOTQ2MiksZz1pKDYzMTkpLGM9bygoZnVuY3Rpb24oKXt2YXIgZT10aGlzLml0ZXJhdG9yLHQ9cyhhKHRoaXMubmV4dCxlKSk7aWYoISh0aGlzLmRvbmU9ISF0LmRvbmUpKXJldHVybiBnKGUsdGhpcy5tYXBwZXIsW3QudmFsdWUsdGhpcy5jb3VudGVyKytdLCEwKX0pKTtlLmV4cG9ydHM9ZnVuY3Rpb24gbWFwKGUpe3ModGhpcyk7cihlKTtyZXR1cm4gbmV3IGMobih0aGlzKSx7bWFwcGVyOmV9KX19LDc2NTc6KGUsdCxpKT0+e3ZhciBhLHIscyxuPWkoOTAzOSksbz1pKDQ5MDEpLGc9aSgzNCksYz1pKDIzNjApLGg9aSgyNzg3KSxsPWkoNjg0MCksQz1pKDgyMjcpLFE9aSg2Mzk1KSxFPUMoIml0ZXJhdG9yIiksdT0hMTtbXS5rZXlzJiYoIm5leHQiaW4ocz1bXS5rZXlzKCkpPyhyPWgoaChzKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKGE9cik6dT0hMCk7IWcoYSl8fG4oKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGFbRV0uY2FsbChlKSE9PWV9KSk/YT17fTpRJiYoYT1jKGEpKTtvKGFbRV0pfHxsKGEsRSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTtlLmV4cG9ydHM9e0l0ZXJhdG9yUHJvdG90eXBlOmEsQlVHR1lfU0FGQVJJX0lURVJBVE9SUzp1fX0sNjI2OTplPT57ZS5leHBvcnRzPXt9fSw2MTk4OihlLHQsaSk9Pnt2YXIgYT1pKDgwMTQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYShlLmxlbmd0aCl9fSwyODM6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkwMzkpLHM9aSg0OTAxKSxuPWkoOTI5Nyksbz1pKDM3MjQpLGc9aSgzNTApLkNPTkZJR1VSQUJMRSxjPWkoMzcwNiksaD1pKDExODEpLGw9aC5lbmZvcmNlLEM9aC5nZXQsUT1TdHJpbmcsRT1PYmplY3QuZGVmaW5lUHJvcGVydHksdT1hKCIiLnNsaWNlKSxkPWEoIiIucmVwbGFjZSksZj1hKFtdLmpvaW4pLHA9byYmIXIoKGZ1bmN0aW9uKCl7cmV0dXJuIDghPT1FKChmdW5jdGlvbigpe30pLCJsZW5ndGgiLHt2YWx1ZTo4fSkubGVuZ3RofSkpLG09U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpLHk9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxpKXsiU3ltYm9sKCI9PT11KFEodCksMCw3KSYmKHQ9IlsiK2QoUSh0KSwvXlN5bWJvbFwoKFteKV0qKVwpLiokLywiJDEiKSsiXSIpO2kmJmkuZ2V0dGVyJiYodD0iZ2V0ICIrdCk7aSYmaS5zZXR0ZXImJih0PSJzZXQgIit0KTsoIW4oZSwibmFtZSIpfHxnJiZlLm5hbWUhPT10KSYmKG8/RShlLCJuYW1lIix7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KTplLm5hbWU9dCk7cCYmaSYmbihpLCJhcml0eSIpJiZlLmxlbmd0aCE9PWkuYXJpdHkmJkUoZSwibGVuZ3RoIix7dmFsdWU6aS5hcml0eX0pO3RyeXtpJiZuKGksImNvbnN0cnVjdG9yIikmJmkuY29uc3RydWN0b3I/byYmRShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pOmUucHJvdG90eXBlJiYoZS5wcm90b3R5cGU9dm9pZCAwKX1jYXRjaChlKXt9dmFyIGE9bChlKTtuKGEsInNvdXJjZSIpfHwoYS5zb3VyY2U9ZihtLCJzdHJpbmciPT10eXBlb2YgdD90OiIiKSk7cmV0dXJuIGV9O0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz15KChmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBzKHRoaXMpJiZDKHRoaXMpLnNvdXJjZXx8Yyh0aGlzKX0pLCJ0b1N0cmluZyIpfSw3NDE6ZT0+e3ZhciB0PU1hdGguY2VpbCxpPU1hdGguZmxvb3I7ZS5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uIHRydW5jKGUpe3ZhciBhPStlO3JldHVybihhPjA/aTp0KShhKX19LDYwNDM6KGUsdCxpKT0+e3ZhciBhPWkoOTMwNikscj1UeXBlRXJyb3IsUHJvbWlzZUNhcGFiaWxpdHk9ZnVuY3Rpb24oZSl7dmFyIHQsaTt0aGlzLnByb21pc2U9bmV3IGUoKGZ1bmN0aW9uKGUsYSl7aWYodm9pZCAwIT09dHx8dm9pZCAwIT09aSl0aHJvdyBuZXcgcigiQmFkIFByb21pc2UgY29uc3RydWN0b3IiKTt0PWU7aT1hfSkpO3RoaXMucmVzb2x2ZT1hKHQpO3RoaXMucmVqZWN0PWEoaSl9O2UuZXhwb3J0cy5mPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoZSl9fSwyNjAzOihlLHQsaSk9Pnt2YXIgYT1pKDY1NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PWU/YXJndW1lbnRzLmxlbmd0aDwyPyIiOnQ6YShlKX19LDIzNjA6KGUsdCxpKT0+e3ZhciBhLHI9aSg4NTUxKSxzPWkoNjgwMSksbj1pKDg3MjcpLG89aSg0MjEpLGc9aSgzOTcpLGM9aSg0MDU1KSxoPWkoNjExOSksbD0icHJvdG90eXBlIixDPSJzY3JpcHQiLFE9aCgiSUVfUFJPVE8iKSxFbXB0eUNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7fSxzY3JpcHRUYWc9ZnVuY3Rpb24oZSl7cmV0dXJuIjwiK0MrIj4iK2UrIjwvIitDKyI+In0sTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWD1mdW5jdGlvbihlKXtlLndyaXRlKHNjcmlwdFRhZygiIikpO2UuY2xvc2UoKTt2YXIgdD1lLnBhcmVudFdpbmRvdy5PYmplY3Q7ZT1udWxsO3JldHVybiB0fSxOdWxsUHJvdG9PYmplY3Q9ZnVuY3Rpb24oKXt0cnl7YT1uZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaChlKXt9TnVsbFByb3RvT2JqZWN0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuZG9tYWluJiZhP051bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk6ZnVuY3Rpb24oKXt2YXIgZSx0PWMoImlmcmFtZSIpLGk9ImphdmEiK0MrIjoiO3Quc3R5bGUuZGlzcGxheT0ibm9uZSI7Zy5hcHBlbmRDaGlsZCh0KTt0LnNyYz1TdHJpbmcoaSk7KGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCk7ZS53cml0ZShzY3JpcHRUYWcoImRvY3VtZW50LkY9T2JqZWN0IikpO2UuY2xvc2UoKTtyZXR1cm4gZS5GfSgpOk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYSk7Zm9yKHZhciBlPW4ubGVuZ3RoO2UtLTspZGVsZXRlIE51bGxQcm90b09iamVjdFtsXVtuW2VdXTtyZXR1cm4gTnVsbFByb3RvT2JqZWN0KCl9O29bUV09ITA7ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uIGNyZWF0ZShlLHQpe3ZhciBpO2lmKG51bGwhPT1lKXtFbXB0eUNvbnN0cnVjdG9yW2xdPXIoZSk7aT1uZXcgRW1wdHlDb25zdHJ1Y3RvcjtFbXB0eUNvbnN0cnVjdG9yW2xdPW51bGw7aVtRXT1lfWVsc2UgaT1OdWxsUHJvdG9PYmplY3QoKTtyZXR1cm4gdm9pZCAwPT09dD9pOnMuZihpLHQpfX0sNjgwMTooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoODY4Nikscz1pKDQ5MTMpLG49aSg4NTUxKSxvPWkoNTM5NyksZz1pKDEwNzIpO3QuZj1hJiYhcj9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGUsdCl7bihlKTtmb3IodmFyIGksYT1vKHQpLHI9Zyh0KSxjPXIubGVuZ3RoLGg9MDtjPmg7KXMuZihlLGk9cltoKytdLGFbaV0pO3JldHVybiBlfX0sNDkxMzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoNTkxNykscz1pKDg2ODYpLG49aSg4NTUxKSxvPWkoNjk2OSksZz1UeXBlRXJyb3IsYz1PYmplY3QuZGVmaW5lUHJvcGVydHksaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGw9ImVudW1lcmFibGUiLEM9ImNvbmZpZ3VyYWJsZSIsUT0id3JpdGFibGUiO3QuZj1hP3M/ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoZSx0LGkpe24oZSk7dD1vKHQpO24oaSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJwcm90b3R5cGUiPT09dCYmInZhbHVlImluIGkmJlEgaW4gaSYmIWlbUV0pe3ZhciBhPWgoZSx0KTtpZihhJiZhW1FdKXtlW3RdPWkudmFsdWU7aT17Y29uZmlndXJhYmxlOkMgaW4gaT9pW0NdOmFbQ10sZW51bWVyYWJsZTpsIGluIGk/aVtsXTphW2xdLHdyaXRhYmxlOiExfX19cmV0dXJuIGMoZSx0LGkpfTpjOmZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGUsdCxpKXtuKGUpO3Q9byh0KTtuKGkpO2lmKHIpdHJ5e3JldHVybiBjKGUsdCxpKX1jYXRjaChlKXt9aWYoImdldCJpbiBpfHwic2V0ImluIGkpdGhyb3cgbmV3IGcoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIik7InZhbHVlImluIGkmJihlW3RdPWkudmFsdWUpO3JldHVybiBlfX0sNzM0NzooZSx0LGkpPT57dmFyIGE9aSgzNzI0KSxyPWkoOTU2NSkscz1pKDg3NzMpLG49aSg2OTgwKSxvPWkoNTM5NyksZz1pKDY5NjkpLGM9aSg5Mjk3KSxoPWkoNTkxNyksbD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1hP2w6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCl7ZT1vKGUpO3Q9Zyh0KTtpZihoKXRyeXtyZXR1cm4gbChlLHQpfWNhdGNoKGUpe31pZihjKGUsdCkpcmV0dXJuIG4oIXIocy5mLGUsdCksZVt0XSl9fSw4NDgwOihlLHQsaSk9Pnt2YXIgYT1pKDE4MjgpLHI9aSg4NzI3KS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhlKXtyZXR1cm4gYShlLHIpfX0sMzcxNzooZSx0KT0+e3QuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSwyNzg3OihlLHQsaSk9Pnt2YXIgYT1pKDkyOTcpLHI9aSg0OTAxKSxzPWkoODk4MSksbj1pKDYxMTkpLG89aSgyMjExKSxnPW4oIklFX1BST1RPIiksYz1PYmplY3QsaD1jLnByb3RvdHlwZTtlLmV4cG9ydHM9bz9jLmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3ZhciB0PXMoZSk7aWYoYSh0LGcpKXJldHVybiB0W2ddO3ZhciBpPXQuY29uc3RydWN0b3I7cmV0dXJuIHIoaSkmJnQgaW5zdGFuY2VvZiBpP2kucHJvdG90eXBlOnQgaW5zdGFuY2VvZiBjP2g6bnVsbH19LDE2MjU6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCk7ZS5leHBvcnRzPWEoe30uaXNQcm90b3R5cGVPZil9LDE4Mjg6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDkyOTcpLHM9aSg1Mzk3KSxuPWkoOTYxNykuaW5kZXhPZixvPWkoNDIxKSxnPWEoW10ucHVzaCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksYT1zKGUpLGM9MCxoPVtdO2ZvcihpIGluIGEpIXIobyxpKSYmcihhLGkpJiZnKGgsaSk7Zm9yKDt0Lmxlbmd0aD5jOylyKGEsaT10W2MrK10pJiYofm4oaCxpKXx8ZyhoLGkpKTtyZXR1cm4gaH19LDEwNzI6KGUsdCxpKT0+e3ZhciBhPWkoMTgyOCkscj1pKDg3MjcpO2UuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24ga2V5cyhlKXtyZXR1cm4gYShlLHIpfX0sODc3MzooZSx0KT0+e3ZhciBpPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixyPWEmJiFpLmNhbGwoezE6Mn0sMSk7dC5mPXI/ZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoZSl7dmFyIHQ9YSh0aGlzLGUpO3JldHVybiEhdCYmdC5lbnVtZXJhYmxlfTppfSwyOTY3OihlLHQsaSk9Pnt2YXIgYT1pKDY3MDYpLHI9aSgzNCkscz1pKDc3NTApLG49aSgzNTA2KTtlLmV4cG9ydHM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoIl9fcHJvdG9fXyJpbnt9P2Z1bmN0aW9uKCl7dmFyIGUsdD0hMSxpPXt9O3RyeXsoZT1hKE9iamVjdC5wcm90b3R5cGUsIl9fcHJvdG9fXyIsInNldCIpKShpLFtdKTt0PWkgaW5zdGFuY2VvZiBBcnJheX1jYXRjaChlKXt9cmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKGksYSl7cyhpKTtuKGEpO2lmKCFyKGkpKXJldHVybiBpO3Q/ZShpLGEpOmkuX19wcm90b19fPWE7cmV0dXJuIGl9fSgpOnZvaWQgMCl9LDQyNzA6KGUsdCxpKT0+e3ZhciBhPWkoOTU2NSkscj1pKDQ5MDEpLHM9aSgzNCksbj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGksbztpZigic3RyaW5nIj09PXQmJnIoaT1lLnRvU3RyaW5nKSYmIXMobz1hKGksZSkpKXJldHVybiBvO2lmKHIoaT1lLnZhbHVlT2YpJiYhcyhvPWEoaSxlKSkpcmV0dXJuIG87aWYoInN0cmluZyIhPT10JiZyKGk9ZS50b1N0cmluZykmJiFzKG89YShpLGUpKSlyZXR1cm4gbzt0aHJvdyBuZXcgbigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSw1MDMxOihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLHI9aSg5NTA0KSxzPWkoODQ4MCksbj1pKDM3MTcpLG89aSg4NTUxKSxnPXIoW10uY29uY2F0KTtlLmV4cG9ydHM9YSgiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24gb3duS2V5cyhlKXt2YXIgdD1zLmYobyhlKSksaT1uLmY7cmV0dXJuIGk/Zyh0LGkoZSkpOnR9fSw3OTc5OihlLHQsaSk9Pnt2YXIgYT1pKDg1NTEpO2UuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciBlPWEodGhpcyksdD0iIjtlLmhhc0luZGljZXMmJih0Kz0iZCIpO2UuZ2xvYmFsJiYodCs9ImciKTtlLmlnbm9yZUNhc2UmJih0Kz0iaSIpO2UubXVsdGlsaW5lJiYodCs9Im0iKTtlLmRvdEFsbCYmKHQrPSJzIik7ZS51bmljb2RlJiYodCs9InUiKTtlLnVuaWNvZGVTZXRzJiYodCs9InYiKTtlLnN0aWNreSYmKHQrPSJ5Iik7cmV0dXJuIHR9fSw3NzUwOihlLHQsaSk9Pnt2YXIgYT1pKDQxMTcpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihhKGUpKXRocm93IG5ldyByKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK2UpO3JldHVybiBlfX0sOTI4NjooZSx0LGkpPT57dmFyIGE9aSg0NDAyKSxyPWkoODQ2OSkscz1hLlNldCxuPWEuYWRkO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgcztyKGUsKGZ1bmN0aW9uKGUpe24odCxlKX0pKTtyZXR1cm4gdH19LDM0NDA6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLHM9aSg5Mjg2KSxuPWkoNTE3MCksbz1pKDM3ODkpLGc9aSg4NDY5KSxjPWkoNTA3KSxoPXIuaGFzLGw9ci5yZW1vdmU7ZS5leHBvcnRzPWZ1bmN0aW9uIGRpZmZlcmVuY2UoZSl7dmFyIHQ9YSh0aGlzKSxpPW8oZSkscj1zKHQpO24odCk8PWkuc2l6ZT9nKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmwocixlKX0pKTpjKGkuZ2V0SXRlcmF0b3IoKSwoZnVuY3Rpb24oZSl7aCh0LGUpJiZsKHIsZSl9KSk7cmV0dXJuIHJ9fSw0NDAyOihlLHQsaSk9Pnt2YXIgYT1pKDk1MDQpLHI9U2V0LnByb3RvdHlwZTtlLmV4cG9ydHM9e1NldCxhZGQ6YShyLmFkZCksaGFzOmEoci5oYXMpLHJlbW92ZTphKHIuZGVsZXRlKSxwcm90bzpyfX0sODc1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDUxNzApLG49aSgzNzg5KSxvPWkoODQ2OSksZz1pKDUwNyksYz1yLlNldCxoPXIuYWRkLGw9ci5oYXM7ZS5leHBvcnRzPWZ1bmN0aW9uIGludGVyc2VjdGlvbihlKXt2YXIgdD1hKHRoaXMpLGk9bihlKSxyPW5ldyBjO3ModCk+aS5zaXplP2coaS5nZXRJdGVyYXRvcigpLChmdW5jdGlvbihlKXtsKHQsZSkmJmgocixlKX0pKTpvKHQsKGZ1bmN0aW9uKGUpe2kuaW5jbHVkZXMoZSkmJmgocixlKX0pKTtyZXR1cm4gcn19LDQ0NDk6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg4NDY5KSxnPWkoNTA3KSxjPWkoOTUzOSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzRGlzam9pbnRGcm9tKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8PWkuc2l6ZSlyZXR1cm4hMSE9PW8odCwoZnVuY3Rpb24oZSl7aWYoaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKTt2YXIgaD1pLmdldEl0ZXJhdG9yKCk7cmV0dXJuITEhPT1nKGgsKGZ1bmN0aW9uKGUpe2lmKHIodCxlKSlyZXR1cm4gYyhoLCJub3JtYWwiLCExKX0pKX19LDM4Mzg6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDUxNzApLHM9aSg4NDY5KSxuPWkoMzc4OSk7ZS5leHBvcnRzPWZ1bmN0aW9uIGlzU3Vic2V0T2YoZSl7dmFyIHQ9YSh0aGlzKSxpPW4oZSk7cmV0dXJuIShyKHQpPmkuc2l6ZSkmJiExIT09cyh0LChmdW5jdGlvbihlKXtpZighaS5pbmNsdWRlcyhlKSlyZXR1cm4hMX0pLCEwKX19LDg1Mjc6KGUsdCxpKT0+e3ZhciBhPWkoNzA4MCkscj1pKDQ0MDIpLmhhcyxzPWkoNTE3MCksbj1pKDM3ODkpLG89aSg1MDcpLGc9aSg5NTM5KTtlLmV4cG9ydHM9ZnVuY3Rpb24gaXNTdXBlcnNldE9mKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpO2lmKHModCk8aS5zaXplKXJldHVybiExO3ZhciBjPWkuZ2V0SXRlcmF0b3IoKTtyZXR1cm4hMSE9PW8oYywoZnVuY3Rpb24oZSl7aWYoIXIodCxlKSlyZXR1cm4gZyhjLCJub3JtYWwiLCExKX0pKX19LDg0Njk6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj1pKDUwNykscz1pKDQ0MDIpLG49cy5TZXQsbz1zLnByb3RvLGc9YShvLmZvckVhY2gpLGM9YShvLmtleXMpLGg9YyhuZXcgbikubmV4dDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe3JldHVybiBpP3Ioe2l0ZXJhdG9yOmMoZSksbmV4dDpofSx0KTpnKGUsdCl9fSw0OTE2OihlLHQsaSk9Pnt2YXIgYT1pKDc3NTEpLGNyZWF0ZVNldExpa2U9ZnVuY3Rpb24oZSl7cmV0dXJue3NpemU6ZSxoYXM6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sa2V5czpmdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ITB9fX19fX07ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoIlNldCIpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoMCkpO3RyeXsobmV3IHQpW2VdKGNyZWF0ZVNldExpa2UoLTEpKTtyZXR1cm4hMX1jYXRjaChlKXtyZXR1cm4hMH19Y2F0Y2goZSl7cmV0dXJuITF9fX0sNTE3MDooZSx0LGkpPT57dmFyIGE9aSg2NzA2KSxyPWkoNDQwMik7ZS5leHBvcnRzPWEoci5wcm90bywic2l6ZSIsImdldCIpfHxmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfX0sMzY1MDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikscz1pKDkyODYpLG49aSgzNzg5KSxvPWkoNTA3KSxnPXIuYWRkLGM9ci5oYXMsaD1yLnJlbW92ZTtlLmV4cG9ydHM9ZnVuY3Rpb24gc3ltbWV0cmljRGlmZmVyZW5jZShlKXt2YXIgdD1hKHRoaXMpLGk9bihlKS5nZXRJdGVyYXRvcigpLHI9cyh0KTtvKGksKGZ1bmN0aW9uKGUpe2ModCxlKT9oKHIsZSk6ZyhyLGUpfSkpO3JldHVybiByfX0sNDIwNDooZSx0LGkpPT57dmFyIGE9aSg3MDgwKSxyPWkoNDQwMikuYWRkLHM9aSg5Mjg2KSxuPWkoMzc4OSksbz1pKDUwNyk7ZS5leHBvcnRzPWZ1bmN0aW9uIHVuaW9uKGUpe3ZhciB0PWEodGhpcyksaT1uKGUpLmdldEl0ZXJhdG9yKCksZz1zKHQpO28oaSwoZnVuY3Rpb24oZSl7cihnLGUpfSkpO3JldHVybiBnfX0sNjExOTooZSx0LGkpPT57dmFyIGE9aSg1NzQ1KSxyPWkoMzM5Mikscz1hKCJrZXlzIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBzW2VdfHwoc1tlXT1yKGUpKX19LDc2Mjk6KGUsdCxpKT0+e3ZhciBhPWkoNjM5NSkscj1pKDQ0NzUpLHM9aSg5NDMzKSxuPSJfX2NvcmUtanNfc2hhcmVkX18iLG89ZS5leHBvcnRzPXJbbl18fHMobix7fSk7KG8udmVyc2lvbnN8fChvLnZlcnNpb25zPVtdKSkucHVzaCh7dmVyc2lvbjoiMy4zNy4xIixtb2RlOmE/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpIixsaWNlbnNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM3LjEvTElDRU5TRSIsc291cmNlOiJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcyJ9KX0sNTc0NTooZSx0LGkpPT57dmFyIGE9aSg3NjI5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYVtlXXx8KGFbZV09dHx8e30pfX0sMTU0ODooZSx0LGkpPT57dmFyIGE9aSg0NDc1KSxyPWkoOTAzOSkscz1pKDczODgpLG49aSg3MjkwKSxvPWkoNTE2KSxnPWkoOTA4OCksYz1hLnN0cnVjdHVyZWRDbG9uZTtlLmV4cG9ydHM9ISFjJiYhcigoZnVuY3Rpb24oKXtpZihvJiZzPjkyfHxnJiZzPjk0fHxuJiZzPjk3KXJldHVybiExO3ZhciBlPW5ldyBBcnJheUJ1ZmZlcig4KSx0PWMoZSx7dHJhbnNmZXI6W2VdfSk7cmV0dXJuIDAhPT1lLmJ5dGVMZW5ndGh8fDghPT10LmJ5dGVMZW5ndGh9KSl9LDQ0OTU6KGUsdCxpKT0+e3ZhciBhPWkoNzM4OCkscj1pKDkwMzkpLHM9aSg0NDc1KS5TdHJpbmc7ZS5leHBvcnRzPSEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmIXIoKGZ1bmN0aW9uKCl7dmFyIGU9U3ltYm9sKCJzeW1ib2wgZGV0ZWN0aW9uIik7cmV0dXJuIXMoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJmEmJmE8NDF9KSl9LDU2MTA6KGUsdCxpKT0+e3ZhciBhPWkoMTI5MSkscj1NYXRoLm1heCxzPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWEoZSk7cmV0dXJuIGk8MD9yKGkrdCwwKTpzKGksdCl9fSw1ODU0OihlLHQsaSk9Pnt2YXIgYT1pKDI3NzcpLHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1hKGUsIm51bWJlciIpO2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgcigiQ2FuJ3QgY29udmVydCBudW1iZXIgdG8gYmlnaW50Iik7cmV0dXJuIEJpZ0ludCh0KX19LDc2OTY6KGUsdCxpKT0+e3ZhciBhPWkoMTI5MSkscj1pKDgwMTQpLHM9UmFuZ2VFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSlyZXR1cm4gMDt2YXIgdD1hKGUpLGk9cih0KTtpZih0IT09aSl0aHJvdyBuZXcgcygiV3JvbmcgbGVuZ3RoIG9yIGluZGV4Iik7cmV0dXJuIGl9fSw1Mzk3OihlLHQsaSk9Pnt2YXIgYT1pKDcwNTUpLHI9aSg3NzUwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGEocihlKSl9fSwxMjkxOihlLHQsaSk9Pnt2YXIgYT1pKDc0MSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PStlO3JldHVybiB0IT10fHwwPT09dD8wOmEodCl9fSw4MDE0OihlLHQsaSk9Pnt2YXIgYT1pKDEyOTEpLHI9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIHQ+MD9yKHQsOTAwNzE5OTI1NDc0MDk5MSk6MH19LDg5ODE6KGUsdCxpKT0+e3ZhciBhPWkoNzc1MCkscj1PYmplY3Q7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKGEoZSkpfX0sMjc3NzooZSx0LGkpPT57dmFyIGE9aSg5NTY1KSxyPWkoMzQpLHM9aSg3NTcpLG49aSg1OTY2KSxvPWkoNDI3MCksZz1pKDgyMjcpLGM9VHlwZUVycm9yLGg9ZygidG9QcmltaXRpdmUiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighcihlKXx8cyhlKSlyZXR1cm4gZTt2YXIgaSxnPW4oZSxoKTtpZihnKXt2b2lkIDA9PT10JiYodD0iZGVmYXVsdCIpO2k9YShnLGUsdCk7aWYoIXIoaSl8fHMoaSkpcmV0dXJuIGk7dGhyb3cgbmV3IGMoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfXZvaWQgMD09PXQmJih0PSJudW1iZXIiKTtyZXR1cm4gbyhlLHQpfX0sNjk2OTooZSx0LGkpPT57dmFyIGE9aSgyNzc3KSxyPWkoNzU3KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9YShlLCJzdHJpbmciKTtyZXR1cm4gcih0KT90OnQrIiJ9fSwyMTQwOihlLHQsaSk9Pnt2YXIgYT17fTthW2koODIyNykoInRvU3RyaW5nVGFnIildPSJ6IjtlLmV4cG9ydHM9IltvYmplY3Qgel0iPT09U3RyaW5nKGEpfSw2NTU6KGUsdCxpKT0+e3ZhciBhPWkoNjk1NSkscj1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKCJTeW1ib2wiPT09YShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyIpO3JldHVybiByKGUpfX0sOTcxNDooZSx0LGkpPT57dmFyIGE9aSg5MDg4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e2lmKGEpcmV0dXJuIEZ1bmN0aW9uKCdyZXR1cm4gcmVxdWlyZSgiJytlKyciKScpKCl9Y2F0Y2goZSl7fX19LDY4MjM6ZT0+e3ZhciB0PVN0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiB0KGUpfWNhdGNoKGUpe3JldHVybiJPYmplY3QifX19LDMzOTI6KGUsdCxpKT0+e3ZhciBhPWkoOTUwNCkscj0wLHM9TWF0aC5yYW5kb20oKSxuPWEoMS4udG9TdHJpbmcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4iU3ltYm9sKCIrKHZvaWQgMD09PWU/IiI6ZSkrIilfIituKCsrcitzLDM2KX19LDcwNDA6KGUsdCxpKT0+e3ZhciBhPWkoNDQ5NSk7ZS5leHBvcnRzPWEmJiFTeW1ib2wuc2hhbSYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3J9LDg2ODY6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDkwMzkpO2UuZXhwb3J0cz1hJiZyKChmdW5jdGlvbigpe3JldHVybiA0MiE9PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSgoZnVuY3Rpb24oKXt9KSwicHJvdG90eXBlIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGV9KSl9LDI4MTI6ZT0+e3ZhciB0PVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSxpKXtpZihlPGkpdGhyb3cgbmV3IHQoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7cmV0dXJuIGV9fSw4NjIyOihlLHQsaSk9Pnt2YXIgYT1pKDQ0NzUpLHI9aSg0OTAxKSxzPWEuV2Vha01hcDtlLmV4cG9ydHM9cihzKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhzKSl9LDgyMjc6KGUsdCxpKT0+e3ZhciBhPWkoNDQ3NSkscj1pKDU3NDUpLHM9aSg5Mjk3KSxuPWkoMzM5Miksbz1pKDQ0OTUpLGc9aSg3MDQwKSxjPWEuU3ltYm9sLGg9cigid2tzIiksbD1nP2MuZm9yfHxjOmMmJmMud2l0aG91dFNldHRlcnx8bjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cyhoLGUpfHwoaFtlXT1vJiZzKGMsZSk/Y1tlXTpsKCJTeW1ib2wuIitlKSk7cmV0dXJuIGhbZV19fSw2NTczOihlLHQsaSk9Pnt2YXIgYT1pKDM3MjQpLHI9aSgyMTA2KSxzPWkoMzIzOCksbj1BcnJheUJ1ZmZlci5wcm90b3R5cGU7YSYmISgiZGV0YWNoZWQiaW4gbikmJnIobiwiZGV0YWNoZWQiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uIGRldGFjaGVkKCl7cmV0dXJuIHModGhpcyl9fSl9LDc5MzY6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDU2MzYpO3ImJmEoe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwfSx7dHJhbnNmZXJUb0ZpeGVkTGVuZ3RoOmZ1bmN0aW9uIHRyYW5zZmVyVG9GaXhlZExlbmd0aCgpe3JldHVybiByKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCExKX19KX0sODEwMDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoNTYzNik7ciYmYSh7dGFyZ2V0OiJBcnJheUJ1ZmZlciIscHJvdG86ITB9LHt0cmFuc2ZlcjpmdW5jdGlvbiB0cmFuc2Zlcigpe3JldHVybiByKHRoaXMsYXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06dm9pZCAwLCEwKX19KX0sNDExNDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoODk4MSkscz1pKDYxOTgpLG49aSg0NTI3KSxvPWkoNjgzNyk7YSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsYXJpdHk6MSxmb3JjZWQ6aSg5MDM5KSgoZnVuY3Rpb24oKXtyZXR1cm4gNDI5NDk2NzI5NyE9PVtdLnB1c2guY2FsbCh7bGVuZ3RoOjQyOTQ5NjcyOTZ9LDEpfSkpfHwhZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KFtdLCJsZW5ndGgiLHt3cml0YWJsZTohMX0pLnB1c2goKX1jYXRjaChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFR5cGVFcnJvcn19KCl9LHtwdXNoOmZ1bmN0aW9uIHB1c2goZSl7dmFyIHQ9cih0aGlzKSxpPXModCksYT1hcmd1bWVudHMubGVuZ3RoO28oaSthKTtmb3IodmFyIGc9MDtnPGE7ZysrKXt0W2ldPWFyZ3VtZW50c1tnXTtpKyt9bih0LGkpO3JldHVybiBpfX0pfSw0NjI4OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg2MDQzKTthKHt0YXJnZXQ6IlByb21pc2UiLHN0YXQ6ITB9LHt3aXRoUmVzb2x2ZXJzOmZ1bmN0aW9uIHdpdGhSZXNvbHZlcnMoKXt2YXIgZT1yLmYodGhpcyk7cmV0dXJue3Byb21pc2U6ZS5wcm9taXNlLHJlc29sdmU6ZS5yZXNvbHZlLHJlamVjdDplLnJlamVjdH19fSl9LDk0Nzk6KGUsdCxpKT0+e3ZhciBhPWkoNDQ3NSkscj1pKDM3MjQpLHM9aSgyMTA2KSxuPWkoNzk3OSksbz1pKDkwMzkpLGc9YS5SZWdFeHAsYz1nLnByb3RvdHlwZTtyJiZvKChmdW5jdGlvbigpe3ZhciBlPSEwO3RyeXtnKCIuIiwiZCIpfWNhdGNoKHQpe2U9ITF9dmFyIHQ9e30saT0iIixhPWU/ImRnaW1zeSI6ImdpbXN5IixhZGRHZXR0ZXI9ZnVuY3Rpb24oZSxhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHtnZXQ6ZnVuY3Rpb24oKXtpKz1hO3JldHVybiEwfX0pfSxyPXtkb3RBbGw6InMiLGdsb2JhbDoiZyIsaWdub3JlQ2FzZToiaSIsbXVsdGlsaW5lOiJtIixzdGlja3k6InkifTtlJiYoci5oYXNJbmRpY2VzPSJkIik7Zm9yKHZhciBzIGluIHIpYWRkR2V0dGVyKHMscltzXSk7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYywiZmxhZ3MiKS5nZXQuY2FsbCh0KSE9PWF8fGkhPT1hfSkpJiZzKGMsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDpufSl9LDc2NDI6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDM0NDApO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohaSg0OTE2KSgiZGlmZmVyZW5jZSIpfSx7ZGlmZmVyZW5jZTpyfSl9LDgwMDQ6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDkwMzkpLHM9aSg4NzUwKTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImludGVyc2VjdGlvbiIpfHxyKChmdW5jdGlvbigpe3JldHVybiIzLDIiIT09U3RyaW5nKEFycmF5LmZyb20obmV3IFNldChbMSwyLDNdKS5pbnRlcnNlY3Rpb24obmV3IFNldChbMywyXSkpKSl9KSl9LHtpbnRlcnNlY3Rpb246c30pfSwzODUzOihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg0NDQ5KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoImlzRGlzam9pbnRGcm9tIil9LHtpc0Rpc2pvaW50RnJvbTpyfSl9LDU4NzY6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDM4MzgpO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohaSg0OTE2KSgiaXNTdWJzZXRPZiIpfSx7aXNTdWJzZXRPZjpyfSl9LDI0NzU6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDg1MjcpO2Eoe3RhcmdldDoiU2V0Iixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDohaSg0OTE2KSgiaXNTdXBlcnNldE9mIil9LHtpc1N1cGVyc2V0T2Y6cn0pfSw1MDI0OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgzNjUwKTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoInN5bW1ldHJpY0RpZmZlcmVuY2UiKX0se3N5bW1ldHJpY0RpZmZlcmVuY2U6cn0pfSwxNjk4OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg0MjA0KTthKHt0YXJnZXQ6IlNldCIscHJvdG86ITAscmVhbDohMCxmb3JjZWQ6IWkoNDkxNikoInVuaW9uIil9LHt1bmlvbjpyfSl9LDc0Njc6KGUsdCxpKT0+e3ZhciBhPWkoNzYyOCkscj1pKDQ2NDQpLHM9ci5hVHlwZWRBcnJheSxuPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxvPXIuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yO24oInRvUmV2ZXJzZWQiLChmdW5jdGlvbiB0b1JldmVyc2VkKCl7cmV0dXJuIGEocyh0aGlzKSxvKHRoaXMpKX0pKX0sNDczMjooZSx0LGkpPT57dmFyIGE9aSg0NjQ0KSxyPWkoOTUwNCkscz1pKDkzMDYpLG49aSg1MzcwKSxvPWEuYVR5cGVkQXJyYXksZz1hLmdldFR5cGVkQXJyYXlDb25zdHJ1Y3RvcixjPWEuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxoPXIoYS5UeXBlZEFycmF5UHJvdG90eXBlLnNvcnQpO2MoInRvU29ydGVkIiwoZnVuY3Rpb24gdG9Tb3J0ZWQoZSl7dm9pZCAwIT09ZSYmcyhlKTt2YXIgdD1vKHRoaXMpLGk9bihnKHQpLHQpO3JldHVybiBoKGksZSl9KSl9LDk1Nzc6KGUsdCxpKT0+e3ZhciBhPWkoOTkyOCkscj1pKDQ2NDQpLHM9aSgxMTA4KSxuPWkoMTI5MSksbz1pKDU4NTQpLGc9ci5hVHlwZWRBcnJheSxjPXIuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yLGg9ci5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGw9ISFmdW5jdGlvbigpe3RyeXtuZXcgSW50OEFycmF5KDEpLndpdGgoMix7dmFsdWVPZjpmdW5jdGlvbigpe3Rocm93IDh9fSl9Y2F0Y2goZSl7cmV0dXJuIDg9PT1lfX0oKTtoKCJ3aXRoIix7d2l0aDpmdW5jdGlvbihlLHQpe3ZhciBpPWcodGhpcykscj1uKGUpLGg9cyhpKT9vKHQpOit0O3JldHVybiBhKGksYyhpKSxyLGgpfX0ud2l0aCwhbCl9LDg5OTI6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDQ0NzUpLHM9aSg2NzkpLG49aSg4NTUxKSxvPWkoNDkwMSksZz1pKDI3ODcpLGM9aSgyMTA2KSxoPWkoNDY1OSksbD1pKDkwMzkpLEM9aSg5Mjk3KSxRPWkoODIyNyksRT1pKDc2NTcpLkl0ZXJhdG9yUHJvdG90eXBlLHU9aSgzNzI0KSxkPWkoNjM5NSksZj0iY29uc3RydWN0b3IiLHA9Ikl0ZXJhdG9yIixtPVEoInRvU3RyaW5nVGFnIikseT1UeXBlRXJyb3Isdz1yW3BdLGI9ZHx8IW8odyl8fHcucHJvdG90eXBlIT09RXx8IWwoKGZ1bmN0aW9uKCl7dyh7fSl9KSksRD1mdW5jdGlvbiBJdGVyYXRvcigpe3ModGhpcyxFKTtpZihnKHRoaXMpPT09RSl0aHJvdyBuZXcgeSgiQWJzdHJhY3QgY2xhc3MgSXRlcmF0b3Igbm90IGRpcmVjdGx5IGNvbnN0cnVjdGFibGUiKX0sZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3Nvcj1mdW5jdGlvbihlLHQpe3U/YyhFLGUse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sc2V0OmZ1bmN0aW9uKHQpe24odGhpcyk7aWYodGhpcz09PUUpdGhyb3cgbmV3IHkoIllvdSBjYW4ndCByZWRlZmluZSB0aGlzIHByb3BlcnR5Iik7Qyh0aGlzLGUpP3RoaXNbZV09dDpoKHRoaXMsZSx0KX19KTpFW2VdPXR9O0MoRSxtKXx8ZGVmaW5lSXRlcmF0b3JQcm90b3R5cGVBY2Nlc3NvcihtLHApOyFiJiZDKEUsZikmJkVbZl0hPT1PYmplY3R8fGRlZmluZUl0ZXJhdG9yUHJvdG90eXBlQWNjZXNzb3IoZixEKTtELnByb3RvdHlwZT1FO2Eoe2dsb2JhbDohMCxjb25zdHJ1Y3RvcjohMCxmb3JjZWQ6Yn0se0l0ZXJhdG9yOkR9KX0sMzIxNTooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se2V2ZXJ5OmZ1bmN0aW9uIGV2ZXJ5KGUpe24odGhpcyk7cyhlKTt2YXIgdD1vKHRoaXMpLGk9MDtyZXR1cm4hcih0LChmdW5jdGlvbih0LGEpe2lmKCFlKHQsaSsrKSlyZXR1cm4gYSgpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSl9LDQ1MjA6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDk1NjUpLHM9aSg5MzA2KSxuPWkoODU1MSksbz1pKDE3NjcpLGc9aSg5NDYyKSxjPWkoNjMxOSksaD1pKDYzOTUpLGw9ZygoZnVuY3Rpb24oKXtmb3IodmFyIGUsdCxpPXRoaXMuaXRlcmF0b3IsYT10aGlzLnByZWRpY2F0ZSxzPXRoaXMubmV4dDs7KXtlPW4ocihzLGkpKTtpZih0aGlzLmRvbmU9ISFlLmRvbmUpcmV0dXJuO3Q9ZS52YWx1ZTtpZihjKGksYSxbdCx0aGlzLmNvdW50ZXIrK10sITApKXJldHVybiB0fX0pKTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwLGZvcmNlZDpofSx7ZmlsdGVyOmZ1bmN0aW9uIGZpbHRlcihlKXtuKHRoaXMpO3MoZSk7cmV0dXJuIG5ldyBsKG8odGhpcykse3ByZWRpY2F0ZTplfSl9fSl9LDI1Nzc6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDI2NTIpLHM9aSg5MzA2KSxuPWkoODU1MSksbz1pKDE3NjcpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITB9LHtmaW5kOmZ1bmN0aW9uIGZpbmQoZSl7bih0aGlzKTtzKGUpO3ZhciB0PW8odGhpcyksaT0wO3JldHVybiByKHQsKGZ1bmN0aW9uKHQsYSl7aWYoZSh0LGkrKykpcmV0dXJuIGEodCl9KSx7SVNfUkVDT1JEOiEwLElOVEVSUlVQVEVEOiEwfSkucmVzdWx0fX0pfSwzOTQ5OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KTthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7Zm9yRWFjaDpmdW5jdGlvbiBmb3JFYWNoKGUpe24odGhpcyk7cyhlKTt2YXIgdD1vKHRoaXMpLGk9MDtyKHQsKGZ1bmN0aW9uKHQpe2UodCxpKyspfSkse0lTX1JFQ09SRDohMH0pfX0pfSwxNDU0OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg3MTMpO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOmkoNjM5NSl9LHttYXA6cn0pfSw4ODcyOihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSgyNjUyKSxzPWkoOTMwNiksbj1pKDg1NTEpLG89aSgxNzY3KSxnPVR5cGVFcnJvcjthKHt0YXJnZXQ6Ikl0ZXJhdG9yIixwcm90bzohMCxyZWFsOiEwfSx7cmVkdWNlOmZ1bmN0aW9uIHJlZHVjZShlKXtuKHRoaXMpO3MoZSk7dmFyIHQ9byh0aGlzKSxpPWFyZ3VtZW50cy5sZW5ndGg8MixhPWk/dm9pZCAwOmFyZ3VtZW50c1sxXSxjPTA7cih0LChmdW5jdGlvbih0KXtpZihpKXtpPSExO2E9dH1lbHNlIGE9ZShhLHQsYyk7YysrfSkse0lTX1JFQ09SRDohMH0pO2lmKGkpdGhyb3cgbmV3IGcoIlJlZHVjZSBvZiBlbXB0eSBpdGVyYXRvciB3aXRoIG5vIGluaXRpYWwgdmFsdWUiKTtyZXR1cm4gYX19KX0sNzU1MDooZSx0LGkpPT57dmFyIGE9aSg2NTE4KSxyPWkoMjY1Mikscz1pKDkzMDYpLG49aSg4NTUxKSxvPWkoMTc2Nyk7YSh7dGFyZ2V0OiJJdGVyYXRvciIscHJvdG86ITAscmVhbDohMH0se3NvbWU6ZnVuY3Rpb24gc29tZShlKXtuKHRoaXMpO3MoZSk7dmFyIHQ9byh0aGlzKSxpPTA7cmV0dXJuIHIodCwoZnVuY3Rpb24odCxhKXtpZihlKHQsaSsrKSlyZXR1cm4gYSgpfSkse0lTX1JFQ09SRDohMCxJTlRFUlJVUFRFRDohMH0pLnN0b3BwZWR9fSl9LDE3OTU6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDg1NTEpLHM9aSgyNjUyKSxuPWkoMTc2Nyksbz1bXS5wdXNoO2Eoe3RhcmdldDoiSXRlcmF0b3IiLHByb3RvOiEwLHJlYWw6ITB9LHt0b0FycmF5OmZ1bmN0aW9uIHRvQXJyYXkoKXt2YXIgZT1bXTtzKG4ocih0aGlzKSksbyx7dGhhdDplLElTX1JFQ09SRDohMH0pO3JldHVybiBlfX0pfSwzMzc1OihlLHQsaSk9PntpKDc2NDIpfSw5MjI1OihlLHQsaSk9PntpKDgwMDQpfSwzOTcyOihlLHQsaSk9PntpKDM4NTMpfSw5MjA5OihlLHQsaSk9PntpKDU4NzYpfSw1NzE0OihlLHQsaSk9PntpKDI0NzUpfSw3NTYxOihlLHQsaSk9PntpKDUwMjQpfSw2MTk3OihlLHQsaSk9PntpKDE2OTgpfSw0OTc5OihlLHQsaSk9Pnt2YXIgYT1pKDY1MTgpLHI9aSg0NDc1KSxzPWkoNzc1MSksbj1pKDY5ODApLG89aSg0OTEzKS5mLGc9aSg5Mjk3KSxjPWkoNjc5KSxoPWkoMzE2NyksbD1pKDI2MDMpLEM9aSg1MDAyKSxRPWkoNjE5MyksRT1pKDM3MjQpLHU9aSg2Mzk1KSxkPSJET01FeGNlcHRpb24iLGY9cygiRXJyb3IiKSxwPXMoZCksbT1mdW5jdGlvbiBET01FeGNlcHRpb24oKXtjKHRoaXMseSk7dmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PWwoZTwxP3ZvaWQgMDphcmd1bWVudHNbMF0pLGk9bChlPDI/dm9pZCAwOmFyZ3VtZW50c1sxXSwiRXJyb3IiKSxhPW5ldyBwKHQsaSkscj1uZXcgZih0KTtyLm5hbWU9ZDtvKGEsInN0YWNrIixuKDEsUShyLnN0YWNrLDEpKSk7aChhLHRoaXMsbSk7cmV0dXJuIGF9LHk9bS5wcm90b3R5cGU9cC5wcm90b3R5cGUsdz0ic3RhY2siaW4gbmV3IGYoZCksYj0ic3RhY2siaW4gbmV3IHAoMSwyKSxEPXAmJkUmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixkKSxTPSEoIUR8fEQud3JpdGFibGUmJkQuY29uZmlndXJhYmxlKSxrPXcmJiFTJiYhYjthKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsZm9yY2VkOnV8fGt9LHtET01FeGNlcHRpb246az9tOnB9KTt2YXIgUj1zKGQpLE49Ui5wcm90b3R5cGU7aWYoTi5jb25zdHJ1Y3RvciE9PVIpe3V8fG8oTiwiY29uc3RydWN0b3IiLG4oMSxSKSk7Zm9yKHZhciBHIGluIEMpaWYoZyhDLEcpKXt2YXIgeD1DW0ddLE09eC5zO2coUixNKXx8byhSLE0sbig2LHguYykpfX19LDM2MTE6KGUsdCxpKT0+e3ZhciBhPWkoNjUxOCkscj1pKDQ0NzUpLHM9aSgyMTA2KSxuPWkoMzcyNCksbz1UeXBlRXJyb3IsZz1PYmplY3QuZGVmaW5lUHJvcGVydHksYz1yLnNlbGYhPT1yO3RyeXtpZihuKXt2YXIgaD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsInNlbGYiKTshYyYmaCYmaC5nZXQmJmguZW51bWVyYWJsZXx8cyhyLCJzZWxmIix7Z2V0OmZ1bmN0aW9uIHNlbGYoKXtyZXR1cm4gcn0sc2V0OmZ1bmN0aW9uIHNlbGYoZSl7aWYodGhpcyE9PXIpdGhyb3cgbmV3IG8oIklsbGVnYWwgaW52b2NhdGlvbiIpO2cociwic2VsZiIse3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KX1lbHNlIGEoe2dsb2JhbDohMCxzaW1wbGU6ITAsZm9yY2VkOmN9LHtzZWxmOnJ9KX1jYXRjaChlKXt9fSw0NjAzOihlLHQsaSk9Pnt2YXIgYT1pKDY4NDApLHI9aSg5NTA0KSxzPWkoNjU1KSxuPWkoMjgxMiksbz1VUkxTZWFyY2hQYXJhbXMsZz1vLnByb3RvdHlwZSxjPXIoZy5hcHBlbmQpLGg9cihnLmRlbGV0ZSksbD1yKGcuZm9yRWFjaCksQz1yKFtdLnB1c2gpLFE9bmV3IG8oImE9MSZhPTImYj0zIik7US5kZWxldGUoImEiLDEpO1EuZGVsZXRlKCJiIix2b2lkIDApO1ErIiIhPSJhPTIiJiZhKGcsImRlbGV0ZSIsKGZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGgsaT10PDI/dm9pZCAwOmFyZ3VtZW50c1sxXTtpZih0JiZ2b2lkIDA9PT1pKXJldHVybiBoKHRoaXMsZSk7dmFyIGE9W107bCh0aGlzLChmdW5jdGlvbihlLHQpe0MoYSx7a2V5OnQsdmFsdWU6ZX0pfSkpO24odCwxKTtmb3IodmFyIHIsbz1zKGUpLGc9cyhpKSxRPTAsRT0wLHU9ITEsZD1hLmxlbmd0aDtRPGQ7KXtyPWFbUSsrXTtpZih1fHxyLmtleT09PW8pe3U9ITA7aCh0aGlzLHIua2V5KX1lbHNlIEUrK31mb3IoO0U8ZDspKHI9YVtFKytdKS5rZXk9PT1vJiZyLnZhbHVlPT09Z3x8Yyh0aGlzLHIua2V5LHIudmFsdWUpfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LDc1NjY6KGUsdCxpKT0+e3ZhciBhPWkoNjg0MCkscj1pKDk1MDQpLHM9aSg2NTUpLG49aSgyODEyKSxvPVVSTFNlYXJjaFBhcmFtcyxnPW8ucHJvdG90eXBlLGM9cihnLmdldEFsbCksaD1yKGcuaGFzKSxsPW5ldyBvKCJhPTEiKTshbC5oYXMoImEiLDIpJiZsLmhhcygiYSIsdm9pZCAwKXx8YShnLCJoYXMiLChmdW5jdGlvbiBoYXMoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxpPXQ8Mj92b2lkIDA6YXJndW1lbnRzWzFdO2lmKHQmJnZvaWQgMD09PWkpcmV0dXJuIGgodGhpcyxlKTt2YXIgYT1jKHRoaXMsZSk7bih0LDEpO2Zvcih2YXIgcj1zKGkpLG89MDtvPGEubGVuZ3RoOylpZihhW28rK109PT1yKXJldHVybiEwO3JldHVybiExfSkse2VudW1lcmFibGU6ITAsdW5zYWZlOiEwfSl9LDg3MjE6KGUsdCxpKT0+e3ZhciBhPWkoMzcyNCkscj1pKDk1MDQpLHM9aSgyMTA2KSxuPVVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUsbz1yKG4uZm9yRWFjaCk7YSYmISgic2l6ZSJpbiBuKSYmcyhuLCJzaXplIix7Z2V0OmZ1bmN0aW9uIHNpemUoKXt2YXIgZT0wO28odGhpcywoZnVuY3Rpb24oKXtlKyt9KSk7cmV0dXJuIGV9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSl9fSx0PXt9O2Z1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18oaSl7dmFyIGE9dFtpXTtpZih2b2lkIDAhPT1hKXJldHVybiBhLmV4cG9ydHM7dmFyIHI9dFtpXT17ZXhwb3J0czp7fX07ZVtpXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKTtyZXR1cm4gci5leHBvcnRzfV9fd2VicGFja19yZXF1aXJlX18uZD0oZSx0KT0+e2Zvcih2YXIgaSBpbiB0KV9fd2VicGFja19yZXF1aXJlX18ubyh0LGkpJiYhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGUsaSkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLGkse2VudW1lcmFibGU6ITAsZ2V0OnRbaV19KX07X193ZWJwYWNrX3JlcXVpcmVfXy5vPShlLHQpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KTt2YXIgX193ZWJwYWNrX2V4cG9ydHNfXz17fTsoKCk9PntfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXyx7V29ya2VyTWVzc2FnZUhhbmRsZXI6KCk9Pldvcmtlck1lc3NhZ2VIYW5kbGVyfSk7X193ZWJwYWNrX3JlcXVpcmVfXyg0MTE0KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDY1NzMpLF9fd2VicGFja19yZXF1aXJlX18oODEwMCksX193ZWJwYWNrX3JlcXVpcmVfXyg3OTM2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2MjgpLF9fd2VicGFja19yZXF1aXJlX18oNzQ2NyksX193ZWJwYWNrX3JlcXVpcmVfXyg0NzMyKSxfX3dlYnBhY2tfcmVxdWlyZV9fKDk1NzcpLF9fd2VicGFja19yZXF1aXJlX18oODk5MiksX193ZWJwYWNrX3JlcXVpcmVfXygzOTQ5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDE0NTQpLF9fd2VicGFja19yZXF1aXJlX18oNzU1MCksX193ZWJwYWNrX3JlcXVpcmVfXygzMzc1KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDkyMjUpLF9fd2VicGFja19yZXF1aXJlX18oMzk3MiksX193ZWJwYWNrX3JlcXVpcmVfXyg5MjA5KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDU3MTQpLF9fd2VicGFja19yZXF1aXJlX18oNzU2MSksX193ZWJwYWNrX3JlcXVpcmVfXyg2MTk3KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDM2MTEpLF9fd2VicGFja19yZXF1aXJlX18oNDYwMyksX193ZWJwYWNrX3JlcXVpcmVfXyg3NTY2KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDg3MjEpO2NvbnN0IGU9ISgib2JqZWN0IiE9dHlwZW9mIHByb2Nlc3N8fHByb2Nlc3MrIiIhPSJbb2JqZWN0IHByb2Nlc3NdInx8cHJvY2Vzcy52ZXJzaW9ucy5ud3x8cHJvY2Vzcy52ZXJzaW9ucy5lbGVjdHJvbiYmcHJvY2Vzcy50eXBlJiYiYnJvd3NlciIhPT1wcm9jZXNzLnR5cGUpLHQ9WzEsMCwwLDEsMCwwXSxpPVsuMDAxLDAsMCwuMDAxLDAsMF0sYT0xLjM1LHI9LjM1LHM9LjI1OTI1OTI1OTI1OTI1OTI0LG49MSxvPTIsZz00LGM9OCxoPTE2LGw9NjQsQz0yNTYsUT0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyIsRT0zLHU9OSxkPTEzLGY9MTUscD17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fSxtPTAseT00LHc9MSxiPTIsRD0zLFM9MSxrPTIsUj0zLE49NCxHPTUseD02LE09NyxVPTgsTD05LEo9MTAsSD0xMSx2PTEyLFk9MTMsSz0xNCxUPTE1LHE9MTYsTz0xNyxXPTIwLGo9Ikdyb3VwIixYPSJSIixaPTEsVj0yLF89NCx6PTE2LCQ9MzIsQUE9MTI4LGVBPTUxMix0QT0xLGlBPTIsYUE9NDA5NixyQT04MTkyLHNBPTMyNzY4LG5BPTY1NTM2LG9BPTEzMTA3MixnQT0xMDQ4NTc2LGNBPTIwOTcxNTIsSUE9ODM4ODYwOCxoQT0xNjc3NzIxNixsQT0xLENBPTIsQkE9MyxRQT00LEVBPTUsdUE9e0U6Ik1vdXNlIEVudGVyIixYOiJNb3VzZSBFeGl0IixEOiJNb3VzZSBEb3duIixVOiJNb3VzZSBVcCIsRm86IkZvY3VzIixCbDoiQmx1ciIsUE86IlBhZ2VPcGVuIixQQzoiUGFnZUNsb3NlIixQVjoiUGFnZVZpc2libGUiLFBJOiJQYWdlSW52aXNpYmxlIixLOiJLZXlzdHJva2UiLEY6IkZvcm1hdCIsVjoiVmFsaWRhdGUiLEM6IkNhbGN1bGF0ZSJ9LGRBPXtXQzoiV2lsbENsb3NlIixXUzoiV2lsbFNhdmUiLERTOiJEaWRTYXZlIixXUDoiV2lsbFByaW50IixEUDoiRGlkUHJpbnQifSxmQT17TzoiUGFnZU9wZW4iLEM6IlBhZ2VDbG9zZSJ9LHBBPXtFUlJPUlM6MCxXQVJOSU5HUzoxLElORk9TOjV9LG1BPXtOT05FOjAsQklOQVJZOjF9LHlBPTEsd0E9MixiQT0zLERBPTQsRkE9NSxTQT02LGtBPTcsUkE9OCxOQT05LEdBPTEwLHhBPTExLE1BPTEyLFVBPTEzLExBPTE0LEpBPTE1LEhBPTE2LHZBPTE3LFlBPTE4LEtBPTE5LFRBPTIwLHFBPTIxLE9BPTIyLFBBPTIzLFdBPTI0LGpBPTI1LFhBPTI2LFpBPTI3LFZBPTI4LF9BPTI5LHpBPTMwLCRBPTMxLEFlPTMyLGVlPTMzLHRlPTM0LGllPTM1LGFlPTM2LHJlPTM3LHNlPTM4LG5lPTM5LG9lPTQwLGdlPTQxLGNlPTQyLEllPTQzLGhlPTQ0LGxlPTQ1LENlPTQ2LEJlPTQ3LFFlPTQ4LEVlPTQ5LHVlPTUwLGRlPTUxLGZlPTUyLHBlPTUzLG1lPTU0LHllPTU1LHdlPTU2LGJlPTU3LERlPTU4LEZlPTU5LFNlPTYwLGtlPTYxLFJlPTYyLE5lPTYzLEdlPTY0LHhlPTY1LE1lPTY2LFVlPTY3LExlPTY4LEplPTY5LEhlPTcwLHZlPTcxLFllPTcyLEtlPTczLFRlPTc0LHFlPTc1LE9lPTc2LFBlPTc3LFdlPTgwLGplPTgxLFhlPTgzLFplPTg0LFZlPTg1LF9lPTg2LHplPTg3LCRlPTg4LEF0PTg5LGV0PTkwLHR0PTkxLGl0PTEsYXQ9MjtsZXQgcnQ9cEEuV0FSTklOR1M7ZnVuY3Rpb24gZ2V0VmVyYm9zaXR5TGV2ZWwoKXtyZXR1cm4gcnR9ZnVuY3Rpb24gaW5mbyhlKXtydD49cEEuSU5GT1MmJmNvbnNvbGUubG9nKGBJbmZvOiAke2V9YCl9ZnVuY3Rpb24gd2FybihlKXtydD49cEEuV0FSTklOR1MmJmNvbnNvbGUubG9nKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIGFzc2VydChlLHQpe2V8fHVucmVhY2hhYmxlKHQpfWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSx0PW51bGwsaT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDt0cnl7aWYoaSYmInN0cmluZyI9PXR5cGVvZiBlKXtpZihpLmFkZERlZmF1bHRQcm90b2NvbCYmZS5zdGFydHNXaXRoKCJ3d3cuIikpe2NvbnN0IHQ9ZS5tYXRjaCgvXC4vZyk7dD8ubGVuZ3RoPj0yJiYoZT1gaHR0cDovLyR7ZX1gKX1pZihpLnRyeUNvbnZlcnRFbmNvZGluZyl0cnl7ZT1zdHJpbmdUb1VURjhTdHJpbmcoZSl9Y2F0Y2h7fX1jb25zdCBhPXQ/bmV3IFVSTChlLHQpOm5ldyBVUkwoZSk7aWYoZnVuY3Rpb24gX2lzVmFsaWRQcm90b2NvbChlKXtzd2l0Y2goZT8ucHJvdG9jb2wpe2Nhc2UiaHR0cDoiOmNhc2UiaHR0cHM6IjpjYXNlImZ0cDoiOmNhc2UibWFpbHRvOiI6Y2FzZSJ0ZWw6IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0oYSkpcmV0dXJuIGF9Y2F0Y2h7fXJldHVybiBudWxsfWZ1bmN0aW9uIHNoYWRvdyhlLHQsaSxhPSExKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTppLGVudW1lcmFibGU6IWEsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiExfSk7cmV0dXJuIGl9Y29uc3Qgc3Q9ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbkNsb3N1cmUoKXtmdW5jdGlvbiBCYXNlRXhjZXB0aW9uKGUsdCl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VFeGNlcHRpb24mJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlRXhjZXB0aW9uLiIpO3RoaXMubWVzc2FnZT1lO3RoaXMubmFtZT10fUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7Y2xhc3MgUGFzc3dvcmRFeGNlcHRpb24gZXh0ZW5kcyBzdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlBhc3N3b3JkRXhjZXB0aW9uIik7dGhpcy5jb2RlPXR9fWNsYXNzIFVua25vd25FcnJvckV4Y2VwdGlvbiBleHRlbmRzIHN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5rbm93bkVycm9yRXhjZXB0aW9uIik7dGhpcy5kZXRhaWxzPXR9fWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBzdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJJbnZhbGlkUERGRXhjZXB0aW9uIil9fWNsYXNzIE1pc3NpbmdQREZFeGNlcHRpb24gZXh0ZW5kcyBzdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJNaXNzaW5nUERGRXhjZXB0aW9uIil9fWNsYXNzIFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIHN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9dH19Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBzdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJGb3JtYXRFcnJvciIpfX1jbGFzcyBBYm9ydEV4Y2VwdGlvbiBleHRlbmRzIHN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkFib3J0RXhjZXB0aW9uIil9fWZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmcoZSl7Im9iamVjdCI9PXR5cGVvZiBlJiZ2b2lkIDAhPT1lPy5sZW5ndGh8fHVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7Y29uc3QgdD1lLmxlbmd0aCxpPTgxOTI7aWYodDxpKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Y29uc3QgYT1bXTtmb3IobGV0IHI9MDtyPHQ7cis9aSl7Y29uc3Qgcz1NYXRoLm1pbihyK2ksdCksbj1lLnN1YmFycmF5KHIscyk7YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxuKSl9cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhlKXsic3RyaW5nIiE9dHlwZW9mIGUmJnVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Y29uc3QgdD1lLmxlbmd0aCxpPW5ldyBVaW50OEFycmF5KHQpO2ZvcihsZXQgYT0wO2E8dDsrK2EpaVthXT0yNTUmZS5jaGFyQ29kZUF0KGEpO3JldHVybiBpfWZ1bmN0aW9uIHN0cmluZzMyKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIG9iamVjdFNpemUoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aH1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KDQpO2VbMF09MTtyZXR1cm4gMT09PW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciwwLDEpWzBdfSgpKX1zdGF0aWMgZ2V0IGlzRXZhbFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNFdmFsU3VwcG9ydGVkIixmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKXt0cnl7bmV3IEZ1bmN0aW9uKCIiKTtyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX19KCkpfXN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9c3RhdGljIGdldCBwbGF0Zm9ybSgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvcj8ucGxhdGZvcm0/c2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNNYWM6bmF2aWdhdG9yLnBsYXRmb3JtLmluY2x1ZGVzKCJNYWMiKX0pOnNoYWRvdyh0aGlzLCJwbGF0Zm9ybSIse2lzTWFjOiExfSl9c3RhdGljIGdldCBpc0NTU1JvdW5kU3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0NTU1JvdW5kU3VwcG9ydGVkIixnbG9iYWxUaGlzLkNTUz8uc3VwcG9ydHM/Ligid2lkdGg6IHJvdW5kKDEuNXB4LCAxcHgpIikpfX1jb25zdCBudD1BcnJheS5mcm9tKEFycmF5KDI1Nikua2V5cygpLChlPT5lLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpKTtjbGFzcyBVdGlse3N0YXRpYyBtYWtlSGV4Q29sb3IoZSx0LGkpe3JldHVybmAjJHtudFtlXX0ke250W3RdfSR7bnRbaV19YH1zdGF0aWMgc2NhbGVNaW5NYXgoZSx0KXtsZXQgaTtpZihlWzBdKXtpZihlWzBdPDApe2k9dFswXTt0WzBdPXRbMl07dFsyXT1pfXRbMF0qPWVbMF07dFsyXSo9ZVswXTtpZihlWzNdPDApe2k9dFsxXTt0WzFdPXRbM107dFszXT1pfXRbMV0qPWVbM107dFszXSo9ZVszXX1lbHNle2k9dFswXTt0WzBdPXRbMV07dFsxXT1pO2k9dFsyXTt0WzJdPXRbM107dFszXT1pO2lmKGVbMV08MCl7aT10WzFdO3RbMV09dFszXTt0WzNdPWl9dFsxXSo9ZVsxXTt0WzNdKj1lWzFdO2lmKGVbMl08MCl7aT10WzBdO3RbMF09dFsyXTt0WzJdPWl9dFswXSo9ZVsyXTt0WzJdKj1lWzJdfXRbMF0rPWVbNF07dFsxXSs9ZVs1XTt0WzJdKz1lWzRdO3RbM10rPWVbNV19c3RhdGljIHRyYW5zZm9ybShlLHQpe3JldHVybltlWzBdKnRbMF0rZVsyXSp0WzFdLGVbMV0qdFswXStlWzNdKnRbMV0sZVswXSp0WzJdK2VbMl0qdFszXSxlWzFdKnRbMl0rZVszXSp0WzNdLGVbMF0qdFs0XStlWzJdKnRbNV0rZVs0XSxlWzFdKnRbNF0rZVszXSp0WzVdK2VbNV1dfXN0YXRpYyBhcHBseVRyYW5zZm9ybShlLHQpe3JldHVybltlWzBdKnRbMF0rZVsxXSp0WzJdK3RbNF0sZVswXSp0WzFdK2VbMV0qdFszXSt0WzVdXX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKGUsdCl7Y29uc3QgaT10WzBdKnRbM10tdFsxXSp0WzJdO3JldHVyblsoZVswXSp0WzNdLWVbMV0qdFsyXSt0WzJdKnRbNV0tdFs0XSp0WzNdKS9pLCgtZVswXSp0WzFdK2VbMV0qdFswXSt0WzRdKnRbMV0tdFs1XSp0WzBdKS9pXX1zdGF0aWMgZ2V0QXhpYWxBbGlnbmVkQm91bmRpbmdCb3goZSx0KXtjb25zdCBpPXRoaXMuYXBwbHlUcmFuc2Zvcm0oZSx0KSxhPXRoaXMuYXBwbHlUcmFuc2Zvcm0oZS5zbGljZSgyLDQpLHQpLHI9dGhpcy5hcHBseVRyYW5zZm9ybShbZVswXSxlWzNdXSx0KSxzPXRoaXMuYXBwbHlUcmFuc2Zvcm0oW2VbMl0sZVsxXV0sdCk7cmV0dXJuW01hdGgubWluKGlbMF0sYVswXSxyWzBdLHNbMF0pLE1hdGgubWluKGlbMV0sYVsxXSxyWzFdLHNbMV0pLE1hdGgubWF4KGlbMF0sYVswXSxyWzBdLHNbMF0pLE1hdGgubWF4KGlbMV0sYVsxXSxyWzFdLHNbMV0pXX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybShlKXtjb25zdCB0PWVbMF0qZVszXS1lWzFdKmVbMl07cmV0dXJuW2VbM10vdCwtZVsxXS90LC1lWzJdL3QsZVswXS90LChlWzJdKmVbNV0tZVs0XSplWzNdKS90LChlWzRdKmVbMV0tZVs1XSplWzBdKS90XX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZSl7Y29uc3QgdD1bZVswXSxlWzJdLGVbMV0sZVszXV0saT1lWzBdKnRbMF0rZVsxXSp0WzJdLGE9ZVswXSp0WzFdK2VbMV0qdFszXSxyPWVbMl0qdFswXStlWzNdKnRbMl0scz1lWzJdKnRbMV0rZVszXSp0WzNdLG49KGkrcykvMixvPU1hdGguc3FydCgoaStzKSoqMi00KihpKnMtciphKSkvMixnPW4rb3x8MSxjPW4tb3x8MTtyZXR1cm5bTWF0aC5zcXJ0KGcpLE1hdGguc3FydChjKV19c3RhdGljIG5vcm1hbGl6ZVJlY3QoZSl7Y29uc3QgdD1lLnNsaWNlKDApO2lmKGVbMF0+ZVsyXSl7dFswXT1lWzJdO3RbMl09ZVswXX1pZihlWzFdPmVbM10pe3RbMV09ZVszXTt0WzNdPWVbMV19cmV0dXJuIHR9c3RhdGljIGludGVyc2VjdChlLHQpe2NvbnN0IGk9TWF0aC5tYXgoTWF0aC5taW4oZVswXSxlWzJdKSxNYXRoLm1pbih0WzBdLHRbMl0pKSxhPU1hdGgubWluKE1hdGgubWF4KGVbMF0sZVsyXSksTWF0aC5tYXgodFswXSx0WzJdKSk7aWYoaT5hKXJldHVybiBudWxsO2NvbnN0IHI9TWF0aC5tYXgoTWF0aC5taW4oZVsxXSxlWzNdKSxNYXRoLm1pbih0WzFdLHRbM10pKSxzPU1hdGgubWluKE1hdGgubWF4KGVbMV0sZVszXSksTWF0aC5tYXgodFsxXSx0WzNdKSk7cmV0dXJuIHI+cz9udWxsOltpLHIsYSxzXX1zdGF0aWMjQShlLHQsaSxhLHIscyxuLG8sZyxjKXtpZihnPD0wfHxnPj0xKXJldHVybjtjb25zdCBoPTEtZyxsPWcqZyxDPWwqZyxRPWgqKGgqKGgqZSszKmcqdCkrMypsKmkpK0MqYSxFPWgqKGgqKGgqciszKmcqcykrMypsKm4pK0MqbztjWzBdPU1hdGgubWluKGNbMF0sUSk7Y1sxXT1NYXRoLm1pbihjWzFdLEUpO2NbMl09TWF0aC5tYXgoY1syXSxRKTtjWzNdPU1hdGgubWF4KGNbM10sRSl9c3RhdGljI2UoZSx0LGksYSxyLHMsbixvLGcsYyxoLGwpe2lmKE1hdGguYWJzKGcpPDFlLTEyKXtNYXRoLmFicyhjKT49MWUtMTImJnRoaXMuI0EoZSx0LGksYSxyLHMsbixvLC1oL2MsbCk7cmV0dXJufWNvbnN0IEM9YyoqMi00KmgqZztpZihDPDApcmV0dXJuO2NvbnN0IFE9TWF0aC5zcXJ0KEMpLEU9MipnO3RoaXMuI0EoZSx0LGksYSxyLHMsbixvLCgtYytRKS9FLGwpO3RoaXMuI0EoZSx0LGksYSxyLHMsbixvLCgtYy1RKS9FLGwpfXN0YXRpYyBiZXppZXJCb3VuZGluZ0JveChlLHQsaSxhLHIscyxuLG8sZyl7aWYoZyl7Z1swXT1NYXRoLm1pbihnWzBdLGUsbik7Z1sxXT1NYXRoLm1pbihnWzFdLHQsbyk7Z1syXT1NYXRoLm1heChnWzJdLGUsbik7Z1szXT1NYXRoLm1heChnWzNdLHQsbyl9ZWxzZSBnPVtNYXRoLm1pbihlLG4pLE1hdGgubWluKHQsbyksTWF0aC5tYXgoZSxuKSxNYXRoLm1heCh0LG8pXTt0aGlzLiNlKGUsaSxyLG4sdCxhLHMsbywzKigzKihpLXIpLWUrbiksNiooZS0yKmkrciksMyooaS1lKSxnKTt0aGlzLiNlKGUsaSxyLG4sdCxhLHMsbywzKigzKihhLXMpLXQrbyksNioodC0yKmErcyksMyooYS10KSxnKTtyZXR1cm4gZ319Y29uc3Qgb3Q9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcyOCw3MTEsNzEwLDcyOSw3MzMsNzMxLDczMCw3MzIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODIyNiw4MjI0LDgyMjUsODIzMCw4MjEyLDgyMTEsNDAyLDgyNjAsODI0OSw4MjUwLDg3MjIsODI0MCw4MjIyLDgyMjAsODIyMSw4MjE2LDgyMTcsODIxOCw4NDgyLDY0MjU3LDY0MjU4LDMyMSwzMzgsMzUyLDM3NiwzODEsMzA1LDMyMiwzMzksMzUzLDM4MiwwLDgzNjRdO2Z1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUpe2lmKGVbMF0+PSLDryIpe2xldCB0O2lmKCLDviI9PT1lWzBdJiYiw78iPT09ZVsxXSl7dD0idXRmLTE2YmUiO2UubGVuZ3RoJTI9PTEmJihlPWUuc2xpY2UoMCwtMSkpfWVsc2UgaWYoIsO/Ij09PWVbMF0mJiLDviI9PT1lWzFdKXt0PSJ1dGYtMTZsZSI7ZS5sZW5ndGglMj09MSYmKGU9ZS5zbGljZSgwLC0xKSl9ZWxzZSLDryI9PT1lWzBdJiYiwrsiPT09ZVsxXSYmIsK/Ij09PWVbMl0mJih0PSJ1dGYtOCIpO2lmKHQpdHJ5e2NvbnN0IGk9bmV3IFRleHREZWNvZGVyKHQse2ZhdGFsOiEwfSksYT1zdHJpbmdUb0J5dGVzKGUpLHI9aS5kZWNvZGUoYSk7cmV0dXJuIHIuaW5jbHVkZXMoIhsiKT9yLnJlcGxhY2VBbGwoL1x4MWJbXlx4MWJdKig/Olx4MWJ8JCkvZywiIik6cn1jYXRjaChlKXt3YXJuKGBzdHJpbmdUb1BERlN0cmluZzogIiR7ZX0iLmApfX1jb25zdCB0PVtdO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl7Y29uc3Qgcj1lLmNoYXJDb2RlQXQoaSk7aWYoMjc9PT1yKXtmb3IoOysraTxhJiYyNyE9PWUuY2hhckNvZGVBdChpKTspO2NvbnRpbnVlfWNvbnN0IHM9b3Rbcl07dC5wdXNoKHM/U3RyaW5nLmZyb21DaGFyQ29kZShzKTplLmNoYXJBdChpKSl9cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9VVEY4U3RyaW5nKGUpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGUpKX1mdW5jdGlvbiB1dGY4U3RyaW5nVG9TdHJpbmcoZSl7cmV0dXJuIHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlKSl9ZnVuY3Rpb24gaXNBcnJheUVxdWFsKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspaWYoZVtpXSE9PXRbaV0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZ2V0TW9kaWZpY2F0aW9uRGF0ZShlPW5ldyBEYXRlKXtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfWxldCBndD1udWxsLGN0PW51bGw7Y29uc3QgSXQ9MCxodD0xLGx0PTIsQ3Q9MyxCdD00LFF0PTUsRXQ9Nix1dD03LGR0PTg7X193ZWJwYWNrX3JlcXVpcmVfXygzMjE1KTtjb25zdCBmdD1TeW1ib2woIkNJUkNVTEFSX1JFRiIpLHB0PVN5bWJvbCgiRU9GIik7bGV0IG10PU9iamVjdC5jcmVhdGUobnVsbCkseXQ9T2JqZWN0LmNyZWF0ZShudWxsKSx3dD1PYmplY3QuY3JlYXRlKG51bGwpO2NsYXNzIE5hbWV7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWV9c3RhdGljIGdldChlKXtyZXR1cm4geXRbZV18fD1uZXcgTmFtZShlKX19Y2xhc3MgQ21ke2NvbnN0cnVjdG9yKGUpe3RoaXMuY21kPWV9c3RhdGljIGdldChlKXtyZXR1cm4gbXRbZV18fD1uZXcgQ21kKGUpfX1jb25zdCBidD1mdW5jdGlvbiBub25TZXJpYWxpemFibGVDbG9zdXJlKCl7cmV0dXJuIGJ0fTtjbGFzcyBEaWN0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fbWFwPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy54cmVmPWU7dGhpcy5vYmpJZD1udWxsO3RoaXMuc3VwcHJlc3NFbmNyeXB0aW9uPSExO3RoaXMuX19ub25TZXJpYWxpemFibGVfXz1idH1hc3NpZ25YcmVmKGUpe3RoaXMueHJlZj1lfWdldCBzaXplKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX21hcCkubGVuZ3RofWdldChlLHQsaSl7bGV0IGE9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PWEmJnZvaWQgMCE9PWkmJihhPXRoaXMuX21hcFtpXSl9cmV0dXJuIGEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2goYSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6YX1hc3luYyBnZXRBc3luYyhlLHQsaSl7bGV0IGE9dGhpcy5fbWFwW2VdO2lmKHZvaWQgMD09PWEmJnZvaWQgMCE9PXQpe2E9dGhpcy5fbWFwW3RdO3ZvaWQgMD09PWEmJnZvaWQgMCE9PWkmJihhPXRoaXMuX21hcFtpXSl9cmV0dXJuIGEgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2hBc3luYyhhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKTphfWdldEFycmF5KGUsdCxpKXtsZXQgYT10aGlzLl9tYXBbZV07aWYodm9pZCAwPT09YSYmdm9pZCAwIT09dCl7YT10aGlzLl9tYXBbdF07dm9pZCAwPT09YSYmdm9pZCAwIT09aSYmKGE9dGhpcy5fbWFwW2ldKX1hIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWYmJihhPXRoaXMueHJlZi5mZXRjaChhLHRoaXMuc3VwcHJlc3NFbmNyeXB0aW9uKSk7aWYoQXJyYXkuaXNBcnJheShhKSl7YT1hLnNsaWNlKCk7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKWFbZV1pbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYoYVtlXT10aGlzLnhyZWYuZmV0Y2goYVtlXSx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpfXJldHVybiBhfWdldFJhdyhlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWdldEtleXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbWFwKX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9tYXApfXNldChlLHQpe3RoaXMuX21hcFtlXT10fWhhcyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLmdldCh0KSl9c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9Pnt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4gc2hhZG93KHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6dCxtZXJnZVN1YkRpY3RzOmk9ITF9KXtjb25zdCBhPW5ldyBEaWN0KGUpLHI9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgT2JqZWN0LmVudHJpZXMoZS5fbWFwKSl7bGV0IGU9ci5nZXQodCk7aWYodm9pZCAwPT09ZSl7ZT1bXTtyLnNldCh0LGUpfWVsc2UgaWYoIShpJiZhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7ZS5wdXNoKGEpfWZvcihjb25zdFt0LGldb2Ygcil7aWYoMT09PWkubGVuZ3RofHwhKGlbMF1pbnN0YW5jZW9mIERpY3QpKXthLl9tYXBbdF09aVswXTtjb250aW51ZX1jb25zdCByPW5ldyBEaWN0KGUpO2Zvcihjb25zdCBlIG9mIGkpZm9yKGNvbnN0W3QsaV1vZiBPYmplY3QuZW50cmllcyhlLl9tYXApKXZvaWQgMD09PXIuX21hcFt0XSYmKHIuX21hcFt0XT1pKTtyLnNpemU+MCYmKGEuX21hcFt0XT1yKX1yLmNsZWFyKCk7cmV0dXJuIGEuc2l6ZT4wP2E6RGljdC5lbXB0eX1jbG9uZSgpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtmb3IoY29uc3QgdCBvZiB0aGlzLmdldEtleXMoKSllLnNldCh0LHRoaXMuZ2V0UmF3KHQpKTtyZXR1cm4gZX19Y2xhc3MgUmVme2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5udW09ZTt0aGlzLmdlbj10fXRvU3RyaW5nKCl7cmV0dXJuIDA9PT10aGlzLmdlbj9gJHt0aGlzLm51bX1SYDpgJHt0aGlzLm51bX1SJHt0aGlzLmdlbn1gfXN0YXRpYyBmcm9tU3RyaW5nKGUpe2NvbnN0IHQ9d3RbZV07aWYodClyZXR1cm4gdDtjb25zdCBpPS9eKFxkKylSKFxkKikkLy5leGVjKGUpO3JldHVybiBpJiYiMCIhPT1pWzFdP3d0W2VdPW5ldyBSZWYocGFyc2VJbnQoaVsxXSksaVsyXT9wYXJzZUludChpWzJdKTowKTpudWxsfXN0YXRpYyBnZXQoZSx0KXtjb25zdCBpPTA9PT10P2Ake2V9UmA6YCR7ZX1SJHt0fWA7cmV0dXJuIHd0W2ldfHw9bmV3IFJlZihlLHQpfX1jbGFzcyBSZWZTZXR7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9zZXQ9bmV3IFNldChlPy5fc2V0KX1oYXMoZSl7cmV0dXJuIHRoaXMuX3NldC5oYXMoZS50b1N0cmluZygpKX1wdXQoZSl7dGhpcy5fc2V0LmFkZChlLnRvU3RyaW5nKCkpfXJlbW92ZShlKXt0aGlzLl9zZXQuZGVsZXRlKGUudG9TdHJpbmcoKSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fc2V0LnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fc2V0LmNsZWFyKCl9fWNsYXNzIFJlZlNldENhY2hle2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXB9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fbWFwLnNpemV9Z2V0KGUpe3JldHVybiB0aGlzLl9tYXAuZ2V0KGUudG9TdHJpbmcoKSl9aGFzKGUpe3JldHVybiB0aGlzLl9tYXAuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdCl9cHV0QWxpYXMoZSx0KXt0aGlzLl9tYXAuc2V0KGUudG9TdHJpbmcoKSx0aGlzLmdldCh0KSl9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpcy5fbWFwLnZhbHVlcygpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9Kml0ZW1zKCl7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9tYXApeWllbGRbUmVmLmZyb21TdHJpbmcoZSksdF19fWZ1bmN0aW9uIGlzTmFtZShlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgTmFtZSYmKHZvaWQgMD09PXR8fGUubmFtZT09PXQpfWZ1bmN0aW9uIGlzQ21kKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDbWQmJih2b2lkIDA9PT10fHxlLmNtZD09PXQpfWZ1bmN0aW9uIGlzRGljdChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgRGljdCYmKHZvaWQgMD09PXR8fGlzTmFtZShlLmdldCgiVHlwZSIpLHQpKX1mdW5jdGlvbiBpc1JlZnNFcXVhbChlLHQpe3JldHVybiBlLm51bT09PXQubnVtJiZlLmdlbj09PXQuZ2VufWNsYXNzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVN0cmVhbSYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIEJhc2VTdHJlYW0uIil9Z2V0IGxlbmd0aCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGxlbmd0aGAgYWNjZXNzZWQiKX1nZXQgaXNFbXB0eSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBnZXR0ZXIgYGlzRW1wdHlgIGFjY2Vzc2VkIil9Z2V0IGlzRGF0YUxvYWRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNEYXRhTG9hZGVkIiwhMCl9Z2V0Qnl0ZSgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVgIGNhbGxlZCIpfWdldEJ5dGVzKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldEJ5dGVzYCBjYWxsZWQiKX1wZWVrQnl0ZSgpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCk7LTEhPT1lJiZ0aGlzLnBvcy0tO3JldHVybiBlfXBlZWtCeXRlcyhlKXtjb25zdCB0PXRoaXMuZ2V0Qnl0ZXMoZSk7dGhpcy5wb3MtPXQubGVuZ3RoO3JldHVybiB0fWdldFVpbnQxNigpe2NvbnN0IGU9dGhpcy5nZXRCeXRlKCksdD10aGlzLmdldEJ5dGUoKTtyZXR1cm4tMT09PWV8fC0xPT09dD8tMTooZTw8OCkrdH1nZXRJbnQzMigpe3JldHVybih0aGlzLmdldEJ5dGUoKTw8MjQpKyh0aGlzLmdldEJ5dGUoKTw8MTYpKyh0aGlzLmdldEJ5dGUoKTw8OCkrdGhpcy5nZXRCeXRlKCl9Z2V0Qnl0ZVJhbmdlKGUsdCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgZ2V0Qnl0ZVJhbmdlYCBjYWxsZWQiKX1nZXRTdHJpbmcoZSl7cmV0dXJuIGJ5dGVzVG9TdHJpbmcodGhpcy5nZXRCeXRlcyhlKSl9c2tpcChlKXt0aGlzLnBvcys9ZXx8MX1yZXNldCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlc2V0YCBjYWxsZWQiKX1tb3ZlU3RhcnQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBtb3ZlU3RhcnRgIGNhbGxlZCIpfW1ha2VTdWJTdHJlYW0oZSx0LGk9bnVsbCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgbWFrZVN1YlN0cmVhbWAgY2FsbGVkIil9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm4gbnVsbH19Y29uc3QgRHQ9L15bMS05XVwuXGQkLztmdW5jdGlvbiBnZXRMb29rdXBUYWJsZUZhY3RvcnkoZSl7bGV0IHQ7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoZSl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2UodCk7ZT1udWxsfXJldHVybiB0fX1jbGFzcyBNaXNzaW5nRGF0YUV4Y2VwdGlvbiBleHRlbmRzIHN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoYE1pc3NpbmcgZGF0YSBbJHtlfSwgJHt0fSlgLCJNaXNzaW5nRGF0YUV4Y2VwdGlvbiIpO3RoaXMuYmVnaW49ZTt0aGlzLmVuZD10fX1jbGFzcyBQYXJzZXJFT0ZFeGNlcHRpb24gZXh0ZW5kcyBzdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJQYXJzZXJFT0ZFeGNlcHRpb24iKX19Y2xhc3MgWFJlZkVudHJ5RXhjZXB0aW9uIGV4dGVuZHMgc3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiWFJlZkVudHJ5RXhjZXB0aW9uIil9fWNsYXNzIFhSZWZQYXJzZUV4Y2VwdGlvbiBleHRlbmRzIHN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZQYXJzZUV4Y2VwdGlvbiIpfX1mdW5jdGlvbiBhcnJheUJ1ZmZlcnNUb0J5dGVzKGUpe2NvbnN0IHQ9ZS5sZW5ndGg7aWYoMD09PXQpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2lmKDE9PT10KXJldHVybiBuZXcgVWludDhBcnJheShlWzBdKTtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspaSs9ZVthXS5ieXRlTGVuZ3RoO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoaSk7bGV0IHI9MDtmb3IobGV0IGk9MDtpPHQ7aSsrKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KGVbaV0pO2Euc2V0KHQscik7cis9dC5ieXRlTGVuZ3RofXJldHVybiBhfWZ1bmN0aW9uIGdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZSxrZXk6dCxnZXRBcnJheTppPSExLHN0b3BXaGVuRm91bmQ6YT0hMH0pe2xldCByO2NvbnN0IHM9bmV3IFJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBEaWN0JiYoIWUub2JqSWR8fCFzLmhhcyhlLm9iaklkKSk7KXtlLm9iaklkJiZzLnB1dChlLm9iaklkKTtjb25zdCBuPWk/ZS5nZXRBcnJheSh0KTplLmdldCh0KTtpZih2b2lkIDAhPT1uKXtpZihhKXJldHVybiBuOyhyfHw9W10pLnB1c2gobil9ZT1lLmdldCgiUGFyZW50Iil9cmV0dXJuIHJ9Y29uc3QgRnQ9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXthc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgaT1bXTtsZXQgYTtmb3IoO2U+PTFlMzspe2UtPTFlMztpLnB1c2goIk0iKX1hPWUvMTAwfDA7ZSU9MTAwO2kucHVzaChGdFthXSk7YT1lLzEwfDA7ZSU9MTA7aS5wdXNoKEZ0WzEwK2FdKTtpLnB1c2goRnRbMjArZV0pO2NvbnN0IHI9aS5qb2luKCIiKTtyZXR1cm4gdD9yLnRvTG93ZXJDYXNlKCk6cn1mdW5jdGlvbiBsb2cyKGUpe3JldHVybiBlPD0wPzA6TWF0aC5jZWlsKE1hdGgubG9nMihlKSl9ZnVuY3Rpb24gcmVhZEludDgoZSx0KXtyZXR1cm4gZVt0XTw8MjQ+PjI0fWZ1bmN0aW9uIHJlYWRVaW50MTYoZSx0KXtyZXR1cm4gZVt0XTw8OHxlW3QrMV19ZnVuY3Rpb24gcmVhZFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH1mdW5jdGlvbiBpc1doaXRlU3BhY2UoZSl7cmV0dXJuIDMyPT09ZXx8OT09PWV8fDEzPT09ZXx8MTA9PT1lfWZ1bmN0aW9uIGlzTnVtYmVyQXJyYXkoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmKG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KChlPT4ibnVtYmVyIj09dHlwZW9mIGUpKX1mdW5jdGlvbiBsb29rdXBNYXRyaXgoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDYpP2U6dH1mdW5jdGlvbiBsb29rdXBSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9lOnR9ZnVuY3Rpb24gbG9va3VwTm9ybWFsUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/VXRpbC5ub3JtYWxpemVSZWN0KGUpOnR9ZnVuY3Rpb24gcGFyc2VYRkFQYXRoKGUpe2NvbnN0IHQ9LyguKylcWyhcZCspXF0kLztyZXR1cm4gZS5zcGxpdCgiLiIpLm1hcCgoZT0+e2NvbnN0IGk9ZS5tYXRjaCh0KTtyZXR1cm4gaT97bmFtZTppWzFdLHBvczpwYXJzZUludChpWzJdLDEwKX06e25hbWU6ZSxwb3M6MH19KSl9ZnVuY3Rpb24gZXNjYXBlUERGTmFtZShlKXtjb25zdCB0PVtdO2xldCBpPTA7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWUuY2hhckNvZGVBdChhKTtpZihyPDMzfHxyPjEyNnx8MzU9PT1yfHw0MD09PXJ8fDQxPT09cnx8NjA9PT1yfHw2Mj09PXJ8fDkxPT09cnx8OTM9PT1yfHwxMjM9PT1yfHwxMjU9PT1yfHw0Nz09PXJ8fDM3PT09cil7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKGAjJHtyLnRvU3RyaW5nKDE2KX1gKTtpPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2k8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhpLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gZXNjYXBlU3RyaW5nKGUpe3JldHVybiBlLnJlcGxhY2VBbGwoLyhbKClcXFxuXHJdKS9nLChlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCkpfWZ1bmN0aW9uIF9jb2xsZWN0SlMoZSx0LGksYSl7aWYoIWUpcmV0dXJuO2xldCByPW51bGw7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoYS5oYXMoZSkpcmV0dXJuO3I9ZTthLnB1dChyKTtlPXQuZmV0Y2goZSl9aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKV9jb2xsZWN0SlMocix0LGksYSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgRGljdCl7aWYoaXNOYW1lKGUuZ2V0KCJTIiksIkphdmFTY3JpcHQiKSl7Y29uc3QgdD1lLmdldCgiSlMiKTtsZXQgYTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbT9hPXQuZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiB0JiYoYT10KTthJiY9c3RyaW5nVG9QREZTdHJpbmcoYSkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiZpLnB1c2goYSl9X2NvbGxlY3RKUyhlLmdldFJhdygiTmV4dCIpLHQsaSxhKX1yJiZhLnJlbW92ZShyKX1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsaSl7Y29uc3QgYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihyKWZvcihsZXQgdD1yLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCBzPXJbdF07aWYocyBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IHQgb2Ygcy5nZXRLZXlzKCkpe2NvbnN0IHI9aVt0XTtpZighciljb250aW51ZTtjb25zdCBuPVtdO19jb2xsZWN0SlMocy5nZXRSYXcodCksZSxuLG5ldyBSZWZTZXQpO24ubGVuZ3RoPjAmJihhW3JdPW4pfX1pZih0LmhhcygiQSIpKXtjb25zdCBpPVtdO19jb2xsZWN0SlModC5nZXQoIkEiKSxlLGksbmV3IFJlZlNldCk7aS5sZW5ndGg+MCYmKGEuQWN0aW9uPWkpfXJldHVybiBvYmplY3RTaXplKGEpPjA/YTpudWxsfWNvbnN0IFN0PXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uKmNvZGVQb2ludEl0ZXIoZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWUuY29kZVBvaW50QXQodCk7aT41NTI5NSYmKGk8NTczNDR8fGk+NjU1MzMpJiZ0Kys7eWllbGQgaX19ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgaT0wO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lLmNvZGVQb2ludEF0KGEpO2lmKDMyPD1yJiZyPD0xMjYpe2NvbnN0IHM9U3Rbcl07aWYocyl7aTxhJiZ0LnB1c2goZS5zdWJzdHJpbmcoaSxhKSk7dC5wdXNoKHMpO2k9YSsxfX1lbHNle2k8YSYmdC5wdXNoKGUuc3Vic3RyaW5nKGksYSkpO3QucHVzaChgJiN4JHtyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtyPjU1Mjk1JiYocjw1NzM0NHx8cj42NTUzMykmJmErKztpPWErMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2k8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhpLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlLHQ9ITEpe2NvbnN0IGk9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGkmJmlbMV09PT1pWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHtpWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7aVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGkgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oXGR8KC0oXGR8LSkpKS8udGVzdChpKXx8IS9eW1x3LVxcXSskLy50ZXN0KGkpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTppLGZvbnRXZWlnaHQ6YSxpdGFsaWNBbmdsZTpyfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGksITApKXJldHVybiExO2NvbnN0IHM9YT9hLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKHMpP3M6IjQwMCI7Y29uc3Qgbj1wYXJzZUZsb2F0KHIpO2UuaXRhbGljQW5nbGU9aXNOYU4obil8fG48LTkwfHxuPjkwPyIxNCI6ci50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7aWYodD8uWzJdKXtjb25zdCBlPXRbMl07bGV0IGk9ITE7InRydWUiPT09dFszXSYmImFwcC5sYXVuY2hVUkwiPT09dFsxXSYmKGk9ITApO3JldHVybnt1cmw6ZSxuZXdXaW5kb3c6aX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFtpLGFdb2YgZSl7aWYoIWkuc3RhcnRzV2l0aChRKSljb250aW51ZTtsZXQgZT10LmdldChhLnBhZ2VJbmRleCk7aWYoIWUpe2U9W107dC5zZXQoYS5wYWdlSW5kZXgsZSl9ZS5wdXNoKGEpfXJldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gaXNBc2NpaShlKXtyZXR1cm4vXltceDAwLVx4N0ZdKiQvLnRlc3QoZSl9ZnVuY3Rpb24gc3RyaW5nVG9VVEYxNkhleFN0cmluZyhlKXtjb25zdCB0PVtdO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl7Y29uc3QgYT1lLmNoYXJDb2RlQXQoaSk7dC5wdXNoKChhPj44JjI1NSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSwoMjU1JmEpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZTdHJpbmcoZSx0PSExKXtjb25zdCBpPVtdO3QmJmkucHVzaCgiw77DvyIpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1lLmNoYXJDb2RlQXQodCk7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYT4+OCYyNTUpLFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmEpKX1yZXR1cm4gaS5qb2luKCIiKX1mdW5jdGlvbiBnZXRSb3RhdGlvbk1hdHJpeChlLHQsaSl7c3dpdGNoKGUpe2Nhc2UgOTA6cmV0dXJuWzAsMSwtMSwwLHQsMF07Y2FzZSAxODA6cmV0dXJuWy0xLDAsMCwtMSx0LGldO2Nhc2UgMjcwOnJldHVyblswLC0xLDEsMCwwLGldO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJvdGF0aW9uIil9fWZ1bmN0aW9uIGdldFNpemVJbkJ5dGVzKGUpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5jZWlsKE1hdGgubG9nMigxK2UpKS84KX1jbGFzcyBTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpLGEpe3N1cGVyKCk7dGhpcy5ieXRlcz1lIGluc3RhbmNlb2YgVWludDhBcnJheT9lOm5ldyBVaW50OEFycmF5KGUpO3RoaXMuc3RhcnQ9dHx8MDt0aGlzLnBvcz10aGlzLnN0YXJ0O3RoaXMuZW5kPXQraXx8dGhpcy5ieXRlcy5sZW5ndGg7dGhpcy5kaWN0PWF9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZC10aGlzLnN0YXJ0fWdldCBpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLmxlbmd0aH1nZXRCeXRlKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLmVuZD8tMTp0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxpPXRoaXMucG9zLGE9dGhpcy5lbmQ7aWYoIWUpcmV0dXJuIHQuc3ViYXJyYXkoaSxhKTtsZXQgcj1pK2U7cj5hJiYocj1hKTt0aGlzLnBvcz1yO3JldHVybiB0LnN1YmFycmF5KGkscil9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7cmV0dXJuIHRoaXMuYnl0ZXMuc3ViYXJyYXkoZSx0KX1yZXNldCgpe3RoaXMucG9zPXRoaXMuc3RhcnR9bW92ZVN0YXJ0KCl7dGhpcy5zdGFydD10aGlzLnBvc31tYWtlU3ViU3RyZWFtKGUsdCxpPW51bGwpe3JldHVybiBuZXcgU3RyZWFtKHRoaXMuYnl0ZXMuYnVmZmVyLGUsdCxpKX19Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKHN0cmluZ1RvQnl0ZXMoZSkpfX1jbGFzcyBOdWxsU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoMCkpfX1jbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcihuZXcgVWludDhBcnJheShlKSwwLGUsbnVsbCk7dGhpcy5jaHVua1NpemU9dDt0aGlzLl9sb2FkZWRDaHVua3M9bmV3IFNldDt0aGlzLm51bUNodW5rcz1NYXRoLmNlaWwoZS90KTt0aGlzLm1hbmFnZXI9aTt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9LTF9Z2V0TWlzc2luZ0NodW5rcygpe2NvbnN0IGU9W107Zm9yKGxldCB0PTAsaT10aGlzLm51bUNodW5rczt0PGk7Kyt0KXRoaXMuX2xvYWRlZENodW5rcy5oYXModCl8fGUucHVzaCh0KTtyZXR1cm4gZX1nZXQgbnVtQ2h1bmtzTG9hZGVkKCl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5zaXplfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc31vblJlY2VpdmVEYXRhKGUsdCl7Y29uc3QgaT10aGlzLmNodW5rU2l6ZTtpZihlJWkhPTApdGhyb3cgbmV3IEVycm9yKGBCYWQgYmVnaW4gb2Zmc2V0OiAke2V9YCk7Y29uc3QgYT1lK3QuYnl0ZUxlbmd0aDtpZihhJWkhPTAmJmEhPT10aGlzLmJ5dGVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYEJhZCBlbmQgb2Zmc2V0OiAke2F9YCk7dGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkodCksZSk7Y29uc3Qgcj1NYXRoLmZsb29yKGUvaSkscz1NYXRoLmZsb29yKChhLTEpL2kpKzE7Zm9yKGxldCBlPXI7ZTxzOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfW9uUmVjZWl2ZVByb2dyZXNzaXZlRGF0YShlKXtsZXQgdD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aDtjb25zdCBpPU1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7dGhpcy5ieXRlcy5zZXQobmV3IFVpbnQ4QXJyYXkoZSksdCk7dCs9ZS5ieXRlTGVuZ3RoO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPXQ7Y29uc3QgYT10Pj10aGlzLmVuZD90aGlzLm51bUNodW5rczpNYXRoLmZsb29yKHQvdGhpcy5jaHVua1NpemUpO2ZvcihsZXQgZT1pO2U8YTsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmFkZChlKX1lbnN1cmVCeXRlKGUpe2lmKGU8dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuO2NvbnN0IHQ9TWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKTtpZighKHQ+dGhpcy5udW1DaHVua3MpJiZ0IT09dGhpcy5sYXN0U3VjY2Vzc2Z1bEVuc3VyZUJ5dGVDaHVuayl7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXModCkpdGhyb3cgbmV3IE1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsZSsxKTt0aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rPXR9fWVuc3VyZVJhbmdlKGUsdCl7aWYoZT49dClyZXR1cm47aWYodDw9dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgpcmV0dXJuO2NvbnN0IGk9TWF0aC5mbG9vcihlL3RoaXMuY2h1bmtTaXplKTtpZihpPnRoaXMubnVtQ2h1bmtzKXJldHVybjtjb25zdCBhPU1hdGgubWluKE1hdGguZmxvb3IoKHQtMSkvdGhpcy5jaHVua1NpemUpKzEsdGhpcy5udW1DaHVua3MpO2ZvcihsZXQgcj1pO3I8YTsrK3IpaWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMocikpdGhyb3cgbmV3IE1pc3NpbmdEYXRhRXhjZXB0aW9uKGUsdCl9bmV4dEVtcHR5Q2h1bmsoZSl7Y29uc3QgdD10aGlzLm51bUNodW5rcztmb3IobGV0IGk9MDtpPHQ7KytpKXtjb25zdCBhPShlK2kpJXQ7aWYoIXRoaXMuX2xvYWRlZENodW5rcy5oYXMoYSkpcmV0dXJuIGF9cmV0dXJuIG51bGx9aGFzQ2h1bmsoZSl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5oYXMoZSl9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7aWYoZT49dGhpcy5lbmQpcmV0dXJuLTE7ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtyZXR1cm4gdGhpcy5ieXRlc1t0aGlzLnBvcysrXX1nZXRCeXRlcyhlKXtjb25zdCB0PXRoaXMuYnl0ZXMsaT10aGlzLnBvcyxhPXRoaXMuZW5kO2lmKCFlKXthPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGksYSk7cmV0dXJuIHQuc3ViYXJyYXkoaSxhKX1sZXQgcj1pK2U7cj5hJiYocj1hKTtyPnRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZVJhbmdlKGkscik7dGhpcy5wb3M9cjtyZXR1cm4gdC5zdWJhcnJheShpLHIpfWdldEJ5dGVSYW5nZShlLHQpe2U8MCYmKGU9MCk7dD50aGlzLmVuZCYmKHQ9dGhpcy5lbmQpO3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSx0KTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfW1ha2VTdWJTdHJlYW0oZSx0LGk9bnVsbCl7dD9lK3Q+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoZSxlK3QpOmU+PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoJiZ0aGlzLmVuc3VyZUJ5dGUoZSk7ZnVuY3Rpb24gQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbSgpe31DaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHRoaXMpO0NodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlLmdldE1pc3NpbmdDaHVua3M9ZnVuY3Rpb24oKXtjb25zdCBlPXRoaXMuY2h1bmtTaXplLHQ9TWF0aC5mbG9vcih0aGlzLnN0YXJ0L2UpLGk9TWF0aC5mbG9vcigodGhpcy5lbmQtMSkvZSkrMSxhPVtdO2ZvcihsZXQgZT10O2U8aTsrK2UpdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKXx8YS5wdXNoKGUpO3JldHVybiBhfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUsImlzRGF0YUxvYWRlZCIse2dldCgpe3JldHVybiB0aGlzLm51bUNodW5rc0xvYWRlZD09PXRoaXMubnVtQ2h1bmtzfHwwPT09dGhpcy5nZXRNaXNzaW5nQ2h1bmtzKCkubGVuZ3RofSxjb25maWd1cmFibGU6ITB9KTtjb25zdCBhPW5ldyBDaHVua2VkU3RyZWFtU3Vic3RyZWFtO2EucG9zPWEuc3RhcnQ9ZTthLmVuZD1lK3R8fHRoaXMuZW5kO2EuZGljdD1pO3JldHVybiBhfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuW3RoaXNdfX1jbGFzcyBDaHVua2VkU3RyZWFtTWFuYWdlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubGVuZ3RoPXQubGVuZ3RoO3RoaXMuY2h1bmtTaXplPXQucmFuZ2VDaHVua1NpemU7dGhpcy5zdHJlYW09bmV3IENodW5rZWRTdHJlYW0odGhpcy5sZW5ndGgsdGhpcy5jaHVua1NpemUsdGhpcyk7dGhpcy5wZGZOZXR3b3JrU3RyZWFtPWU7dGhpcy5kaXNhYmxlQXV0b0ZldGNoPXQuZGlzYWJsZUF1dG9GZXRjaDt0aGlzLm1zZ0hhbmRsZXI9dC5tc2dIYW5kbGVyO3RoaXMuY3VyclJlcXVlc3RJZD0wO3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdD1uZXcgTWFwO3RoaXMuX3JlcXVlc3RzQnlDaHVuaz1uZXcgTWFwO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9MDt0aGlzLmFib3J0ZWQ9ITE7dGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKX1zZW5kUmVxdWVzdChlLHQpe2NvbnN0IGk9dGhpcy5wZGZOZXR3b3JrU3RyZWFtLmdldFJhbmdlUmVhZGVyKGUsdCk7aS5pc1N0cmVhbWluZ1N1cHBvcnRlZHx8KGkub25Qcm9ncmVzcz10aGlzLm9uUHJvZ3Jlc3MuYmluZCh0aGlzKSk7bGV0IGE9W10scj0wO3JldHVybiBuZXcgUHJvbWlzZSgoKGUsdCk9Pntjb25zdCByZWFkQ2h1bms9KHt2YWx1ZTpzLGRvbmU6bn0pPT57dHJ5e2lmKG4pe2NvbnN0IHQ9YXJyYXlCdWZmZXJzVG9CeXRlcyhhKTthPW51bGw7ZSh0KTtyZXR1cm59cis9cy5ieXRlTGVuZ3RoO2kuaXNTdHJlYW1pbmdTdXBwb3J0ZWQmJnRoaXMub25Qcm9ncmVzcyh7bG9hZGVkOnJ9KTthLnB1c2gocyk7aS5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9Y2F0Y2goZSl7dChlKX19O2kucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkpLnRoZW4oKHQ9Pnt0aGlzLmFib3J0ZWR8fHRoaXMub25SZWNlaXZlRGF0YSh7Y2h1bms6dCxiZWdpbjplfSl9KSl9cmVxdWVzdEFsbENodW5rcyhlPSExKXtpZighZSl7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRNaXNzaW5nQ2h1bmtzKCk7dGhpcy5fcmVxdWVzdENodW5rcyhlKX1yZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtQ2FwYWJpbGl0eS5wcm9taXNlfV9yZXF1ZXN0Q2h1bmtzKGUpe2NvbnN0IHQ9dGhpcy5jdXJyUmVxdWVzdElkKyssaT1uZXcgU2V0O3RoaXMuX2NodW5rc05lZWRlZEJ5UmVxdWVzdC5zZXQodCxpKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHxpLmFkZCh0KTtpZigwPT09aS5zaXplKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtjb25zdCBhPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnNldCh0LGEpO2NvbnN0IHI9W107Zm9yKGNvbnN0IGUgb2YgaSl7bGV0IGk9dGhpcy5fcmVxdWVzdHNCeUNodW5rLmdldChlKTtpZighaSl7aT1bXTt0aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuc2V0KGUsaSk7ci5wdXNoKGUpfWkucHVzaCh0KX1pZihyLmxlbmd0aD4wKXtjb25zdCBlPXRoaXMuZ3JvdXBDaHVua3Mocik7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10LmJlZ2luQ2h1bmsqdGhpcy5jaHVua1NpemUsaT1NYXRoLm1pbih0LmVuZENodW5rKnRoaXMuY2h1bmtTaXplLHRoaXMubGVuZ3RoKTt0aGlzLnNlbmRSZXF1ZXN0KGUsaSkuY2F0Y2goYS5yZWplY3QpfX1yZXR1cm4gYS5wcm9taXNlLmNhdGNoKChlPT57aWYoIXRoaXMuYWJvcnRlZCl0aHJvdyBlfSkpfWdldFN0cmVhbSgpe3JldHVybiB0aGlzLnN0cmVhbX1yZXF1ZXN0UmFuZ2UoZSx0KXt0PU1hdGgubWluKHQsdGhpcy5sZW5ndGgpO2NvbnN0IGk9dGhpcy5nZXRCZWdpbkNodW5rKGUpLGE9dGhpcy5nZXRFbmRDaHVuayh0KSxyPVtdO2ZvcihsZXQgZT1pO2U8YTsrK2Upci5wdXNoKGUpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKHIpfXJlcXVlc3RSYW5nZXMoZT1bXSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPXRoaXMuZ2V0QmVnaW5DaHVuayhpLmJlZ2luKSxhPXRoaXMuZ2V0RW5kQ2h1bmsoaS5lbmQpO2ZvcihsZXQgaT1lO2k8YTsrK2kpdC5pbmNsdWRlcyhpKXx8dC5wdXNoKGkpfXQuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKHQpfWdyb3VwQ2h1bmtzKGUpe2NvbnN0IHQ9W107bGV0IGk9LTEsYT0tMTtmb3IobGV0IHI9MCxzPWUubGVuZ3RoO3I8czsrK3Ipe2NvbnN0IHM9ZVtyXTtpPDAmJihpPXMpO2lmKGE+PTAmJmErMSE9PXMpe3QucHVzaCh7YmVnaW5DaHVuazppLGVuZENodW5rOmErMX0pO2k9c31yKzE9PT1lLmxlbmd0aCYmdC5wdXNoKHtiZWdpbkNodW5rOmksZW5kQ2h1bms6cysxfSk7YT1zfXJldHVybiB0fW9uUHJvZ3Jlc3MoZSl7dGhpcy5tc2dIYW5kbGVyLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnRoaXMuc3RyZWFtLm51bUNodW5rc0xvYWRlZCp0aGlzLmNodW5rU2l6ZStlLmxvYWRlZCx0b3RhbDp0aGlzLmxlbmd0aH0pfW9uUmVjZWl2ZURhdGEoZSl7Y29uc3QgdD1lLmNodW5rLGk9dm9pZCAwPT09ZS5iZWdpbixhPWk/dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg6ZS5iZWdpbixyPWErdC5ieXRlTGVuZ3RoLHM9TWF0aC5mbG9vcihhL3RoaXMuY2h1bmtTaXplKSxuPXI8dGhpcy5sZW5ndGg/TWF0aC5mbG9vcihyL3RoaXMuY2h1bmtTaXplKTpNYXRoLmNlaWwoci90aGlzLmNodW5rU2l6ZSk7aWYoaSl7dGhpcy5zdHJlYW0ub25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKHQpO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPXJ9ZWxzZSB0aGlzLnN0cmVhbS5vblJlY2VpdmVEYXRhKGEsdCk7dGhpcy5zdHJlYW0uaXNEYXRhTG9hZGVkJiZ0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlc29sdmUodGhpcy5zdHJlYW0pO2NvbnN0IG89W107Zm9yKGxldCBlPXM7ZTxuOysrZSl7Y29uc3QgdD10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKHQpe3RoaXMuX3JlcXVlc3RzQnlDaHVuay5kZWxldGUoZSk7Zm9yKGNvbnN0IGkgb2YgdCl7Y29uc3QgdD10aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3QuZ2V0KGkpO3QuaGFzKGUpJiZ0LmRlbGV0ZShlKTt0LnNpemU+MHx8by5wdXNoKGkpfX19aWYoIXRoaXMuZGlzYWJsZUF1dG9GZXRjaCYmMD09PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5zaXplKXtsZXQgZTtpZigxPT09dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKXtjb25zdCB0PXRoaXMuc3RyZWFtLm51bUNodW5rcy0xO3RoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHwoZT10KX1lbHNlIGU9dGhpcy5zdHJlYW0ubmV4dEVtcHR5Q2h1bmsobik7TnVtYmVyLmlzSW50ZWdlcihlKSYmdGhpcy5fcmVxdWVzdENodW5rcyhbZV0pfWZvcihjb25zdCBlIG9mIG8pe2NvbnN0IHQ9dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZ2V0KGUpO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmRlbGV0ZShlKTt0LnJlc29sdmUoKX10aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplLHRvdGFsOnRoaXMubGVuZ3RofSl9b25FcnJvcihlKXt0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlamVjdChlKX1nZXRCZWdpbkNodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpfWdldEVuZENodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTEpL3RoaXMuY2h1bmtTaXplKSsxfWFib3J0KGUpe3RoaXMuYWJvcnRlZD0hMDt0aGlzLnBkZk5ldHdvcmtTdHJlYW0/LmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDQ1MjApLF9fd2VicGFja19yZXF1aXJlX18oOTQ3OSksX193ZWJwYWNrX3JlcXVpcmVfXygyNTc3KSxfX3dlYnBhY2tfcmVxdWlyZV9fKDg4NzIpO2NsYXNzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmNvbnN0cnVjdG9yPT09Q29sb3JTcGFjZSYmdW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIENvbG9yU3BhY2UuIik7dGhpcy5uYW1lPWU7dGhpcy5udW1Db21wcz10fWdldFJnYihlLHQpe2NvbnN0IGk9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO3RoaXMuZ2V0UmdiSXRlbShlLHQsaSwwKTtyZXR1cm4gaX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JJdGVtIil9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRSZ2JCdWZmZXIiKX1nZXRPdXRwdXRMZW5ndGgoZSx0KXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIENvbG9yU3BhY2UuZ2V0T3V0cHV0TGVuZ3RoIil9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4hMX1pc0RlZmF1bHREZWNvZGUoZSx0KXtyZXR1cm4gQ29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUoZSx0aGlzLm51bUNvbXBzKX1maWxsUmdiKGUsdCxpLGEscixzLG4sbyxnKXtjb25zdCBjPXQqaTtsZXQgaD1udWxsO2NvbnN0IGw9MTw8bixDPWkhPT1yfHx0IT09YTtpZih0aGlzLmlzUGFzc3Rocm91Z2gobikpaD1vO2Vsc2UgaWYoMT09PXRoaXMubnVtQ29tcHMmJmM+bCYmIkRldmljZUdyYXkiIT09dGhpcy5uYW1lJiYiRGV2aWNlUkdCIiE9PXRoaXMubmFtZSl7Y29uc3QgdD1uPD04P25ldyBVaW50OEFycmF5KGwpOm5ldyBVaW50MTZBcnJheShsKTtmb3IobGV0IGU9MDtlPGw7ZSsrKXRbZV09ZTtjb25zdCBpPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmwpO3RoaXMuZ2V0UmdiQnVmZmVyKHQsMCxsLGksMCxuLDApO2lmKEMpe2g9bmV3IFVpbnQ4QXJyYXkoMypjKTtsZXQgZT0wO2ZvcihsZXQgdD0wO3Q8YzsrK3Qpe2NvbnN0IGE9MypvW3RdO2hbZSsrXT1pW2FdO2hbZSsrXT1pW2ErMV07aFtlKytdPWlbYSsyXX19ZWxzZXtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8YzsrK2Epe2NvbnN0IHI9MypvW2FdO2VbdCsrXT1pW3JdO2VbdCsrXT1pW3IrMV07ZVt0KytdPWlbcisyXTt0Kz1nfX19ZWxzZSBpZihDKXtoPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmMpO3RoaXMuZ2V0UmdiQnVmZmVyKG8sMCxjLGgsMCxuLDApfWVsc2UgdGhpcy5nZXRSZ2JCdWZmZXIobywwLGEqcyxlLDAsbixnKTtpZihoKWlmKEMpIWZ1bmN0aW9uIHJlc2l6ZVJnYkltYWdlKGUsdCxpLGEscixzLG4pe249MSE9PW4/MDpuO2NvbnN0IG89aS9yLGc9YS9zO2xldCBjLGg9MDtjb25zdCBsPW5ldyBVaW50MTZBcnJheShyKSxDPTMqaTtmb3IobGV0IGU9MDtlPHI7ZSsrKWxbZV09MypNYXRoLmZsb29yKGUqbyk7Zm9yKGxldCBpPTA7aTxzO2krKyl7Y29uc3QgYT1NYXRoLmZsb29yKGkqZykqQztmb3IobGV0IGk9MDtpPHI7aSsrKXtjPWErbFtpXTt0W2grK109ZVtjKytdO3RbaCsrXT1lW2MrK107dFtoKytdPWVbYysrXTtoKz1ufX19KGgsZSx0LGksYSxyLGcpO2Vsc2V7bGV0IHQ9MCxpPTA7Zm9yKGxldCByPTAsbj1hKnM7cjxuO3IrKyl7ZVt0KytdPWhbaSsrXTtlW3QrK109aFtpKytdO2VbdCsrXT1oW2krK107dCs9Z319fWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITApfXN0YXRpYyBfY2FjaGUoZSx0LGksYSl7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLl9jYWNoZSAtIGV4cGVjdGVkICJwYXJzZWRDb2xvclNwYWNlIiBhcmd1bWVudC4nKTtsZXQgcixzO2lmKGUgaW5zdGFuY2VvZiBSZWYpe3M9ZTtlPXQuZmV0Y2goZSl9ZSBpbnN0YW5jZW9mIE5hbWUmJihyPWUubmFtZSk7KHJ8fHMpJiZpLnNldChyLHMsYSl9c3RhdGljIGdldENhY2hlZChlLHQsaSl7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCdDb2xvclNwYWNlLmdldENhY2hlZCAtIGV4cGVjdGVkICJsb2NhbENvbG9yU3BhY2VDYWNoZSIgYXJndW1lbnQuJyk7aWYoZSBpbnN0YW5jZW9mIFJlZil7Y29uc3QgYT1pLmdldEJ5UmVmKGUpO2lmKGEpcmV0dXJuIGE7dHJ5e2U9dC5mZXRjaChlKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZX19aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IHQ9aS5nZXRCeU5hbWUoZS5uYW1lKTtpZih0KXJldHVybiB0fXJldHVybiBudWxsfXN0YXRpYyBhc3luYyBwYXJzZUFzeW5jKHtjczplLHhyZWY6dCxyZXNvdXJjZXM6aT1udWxsLHBkZkZ1bmN0aW9uRmFjdG9yeTphLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnJ9KXtjb25zdCBzPXRoaXMuX3BhcnNlKGUsdCxpLGEpO3RoaXMuX2NhY2hlKGUsdCxyLHMpO3JldHVybiBzfXN0YXRpYyBwYXJzZSh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmk9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSl7Y29uc3Qgcz10aGlzLmdldENhY2hlZChlLHQscik7aWYocylyZXR1cm4gcztjb25zdCBuPXRoaXMuX3BhcnNlKGUsdCxpLGEpO3RoaXMuX2NhY2hlKGUsdCxyLG4pO3JldHVybiBufXN0YXRpYyBfcGFyc2UoZSx0LGk9bnVsbCxhKXtpZigoZT10LmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiRyI6Y2FzZSJEZXZpY2VHcmF5IjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmdyYXk7Y2FzZSJSR0IiOmNhc2UiRGV2aWNlUkdCIjpyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5jbXlrO2Nhc2UiUGF0dGVybiI6cmV0dXJuIG5ldyBQYXR0ZXJuQ1MobnVsbCk7ZGVmYXVsdDppZihpIGluc3RhbmNlb2YgRGljdCl7Y29uc3Qgcj1pLmdldCgiQ29sb3JTcGFjZSIpO2lmKHIgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBzPXIuZ2V0KGUubmFtZSk7aWYocyl7aWYocyBpbnN0YW5jZW9mIE5hbWUpcmV0dXJuIHRoaXMuX3BhcnNlKHMsdCxpLGEpO2U9czticmVha319fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5yZWNvZ25pemVkIENvbG9yU3BhY2U6ICR7ZS5uYW1lfWApfWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9dC5mZXRjaElmUmVmKGVbMF0pLm5hbWU7bGV0IHMsbixvLGcsYyxoO3N3aXRjaChyKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5ncmF5O2Nhc2UiUkdCIjpjYXNlIkRldmljZVJHQiI6cmV0dXJuIHRoaXMuc2luZ2xldG9ucy5yZ2I7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLnNpbmdsZXRvbnMuY215aztjYXNlIkNhbEdyYXkiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2c9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2g9cy5nZXQoIkdhbW1hIik7cmV0dXJuIG5ldyBDYWxHcmF5Q1MoZyxjLGgpO2Nhc2UiQ2FsUkdCIjpzPXQuZmV0Y2hJZlJlZihlWzFdKTtnPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtjPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTtoPXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgbD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IENhbFJHQkNTKGcsYyxoLGwpO2Nhc2UiSUNDQmFzZWQiOmNvbnN0IEM9dC5mZXRjaElmUmVmKGVbMV0pLmRpY3Q7bj1DLmdldCgiTiIpO2NvbnN0IFE9Qy5nZXQoIkFsdGVybmF0ZSIpO2lmKFEpe2NvbnN0IGU9dGhpcy5fcGFyc2UoUSx0LGksYSk7aWYoZS5udW1Db21wcz09PW4pcmV0dXJuIGU7d2FybigiSUNDQmFzZWQgY29sb3Igc3BhY2U6IElnbm9yaW5nIGluY29ycmVjdCAvQWx0ZXJuYXRlIGVudHJ5LiIpfWlmKDE9PT1uKXJldHVybiB0aGlzLnNpbmdsZXRvbnMuZ3JheTtpZigzPT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLnJnYjtpZig0PT09bilyZXR1cm4gdGhpcy5zaW5nbGV0b25zLmNteWs7YnJlYWs7Y2FzZSJQYXR0ZXJuIjpvPWVbMV18fG51bGw7byYmKG89dGhpcy5fcGFyc2Uobyx0LGksYSkpO3JldHVybiBuZXcgUGF0dGVybkNTKG8pO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjpvPXRoaXMuX3BhcnNlKGVbMV0sdCxpLGEpO2NvbnN0IEU9dC5mZXRjaElmUmVmKGVbMl0pKzEsdT10LmZldGNoSWZSZWYoZVszXSk7cmV0dXJuIG5ldyBJbmRleGVkQ1MobyxFLHUpO2Nhc2UiU2VwYXJhdGlvbiI6Y2FzZSJEZXZpY2VOIjpjb25zdCBkPXQuZmV0Y2hJZlJlZihlWzFdKTtuPUFycmF5LmlzQXJyYXkoZCk/ZC5sZW5ndGg6MTtvPXRoaXMuX3BhcnNlKGVbMl0sdCxpLGEpO2NvbnN0IGY9YS5jcmVhdGUoZVszXSk7cmV0dXJuIG5ldyBBbHRlcm5hdGVDUyhuLG8sZik7Y2FzZSJMYWIiOnM9dC5mZXRjaElmUmVmKGVbMV0pO2c9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2M9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO2NvbnN0IHA9cy5nZXRBcnJheSgiUmFuZ2UiKTtyZXR1cm4gbmV3IExhYkNTKGcsYyxwKTtkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5pbXBsZW1lbnRlZCBDb2xvclNwYWNlIG9iamVjdDogJHtyfWApfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVucmVjb2duaXplZCBDb2xvclNwYWNlIG9iamVjdDogJHtlfWApfXN0YXRpYyBpc0RlZmF1bHREZWNvZGUoZSx0KXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4hMDtpZigyKnQhPT1lLmxlbmd0aCl7d2FybigiVGhlIGRlY29kZSBtYXAgaXMgbm90IHRoZSBjb3JyZWN0IGxlbmd0aCIpO3JldHVybiEwfWZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTIpaWYoMCE9PWVbdF18fDEhPT1lW3QrMV0pcmV0dXJuITE7cmV0dXJuITB9c3RhdGljIGdldCBzaW5nbGV0b25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJzaW5nbGV0b25zIix7Z2V0IGdyYXkoKXtyZXR1cm4gc2hhZG93KHRoaXMsImdyYXkiLG5ldyBEZXZpY2VHcmF5Q1MpfSxnZXQgcmdiKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJyZ2IiLG5ldyBEZXZpY2VSZ2JDUyl9LGdldCBjbXlrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgRGV2aWNlQ215a0NTKX19KX19Y2xhc3MgQWx0ZXJuYXRlQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcigiQWx0ZXJuYXRlIixlKTt0aGlzLmJhc2U9dDt0aGlzLnRpbnRGbj1pO3RoaXMudG1wQnVmPW5ldyBGbG9hdDMyQXJyYXkodC5udW1Db21wcyl9Z2V0UmdiSXRlbShlLHQsaSxhKXtjb25zdCByPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxyLDApO3RoaXMuYmFzZS5nZXRSZ2JJdGVtKHIsMCxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPXRoaXMudGludEZuLGc9dGhpcy5iYXNlLGM9MS8oKDE8PHMpLTEpLGg9Zy5udW1Db21wcyxsPWcudXNlc1plcm9Ub09uZVJhbmdlLEM9KGcuaXNQYXNzdGhyb3VnaCg4KXx8IWwpJiYwPT09bjtsZXQgUT1DP3I6MDtjb25zdCBFPUM/YTpuZXcgVWludDhDbGFtcGVkQXJyYXkoaCppKSx1PXRoaXMubnVtQ29tcHMsZD1uZXcgRmxvYXQzMkFycmF5KHUpLGY9bmV3IEZsb2F0MzJBcnJheShoKTtsZXQgcCxtO2ZvcihwPTA7cDxpO3ArKyl7Zm9yKG09MDttPHU7bSsrKWRbbV09ZVt0KytdKmM7byhkLDAsZiwwKTtpZihsKWZvcihtPTA7bTxoO20rKylFW1ErK109MjU1KmZbbV07ZWxzZXtnLmdldFJnYkl0ZW0oZiwwLEUsUSk7USs9aH19Q3x8Zy5nZXRSZ2JCdWZmZXIoRSwwLGksYSxyLDgsbil9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgUGF0dGVybkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigiUGF0dGVybiIsbnVsbCk7dGhpcy5iYXNlPWV9aXNEZWZhdWx0RGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBQYXR0ZXJuQ1MuaXNEZWZhdWx0RGVjb2RlIil9fWNsYXNzIEluZGV4ZWRDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJJbmRleGVkIiwxKTt0aGlzLmJhc2U9ZTt0aGlzLmhpZ2hWYWw9dDtjb25zdCBhPWUubnVtQ29tcHMqdDt0aGlzLmxvb2t1cD1uZXcgVWludDhBcnJheShhKTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgZT1pLmdldEJ5dGVzKGEpO3RoaXMubG9va3VwLnNldChlKX1lbHNle2lmKCJzdHJpbmciIT10eXBlb2YgaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEluZGV4ZWRDUyAtIHVucmVjb2duaXplZCBsb29rdXAgdGFibGU6ICR7aX1gKTtmb3IobGV0IGU9MDtlPGE7KytlKXRoaXMubG9va3VwW2VdPTI1NSZpLmNoYXJDb2RlQXQoZSl9fWdldFJnYkl0ZW0oZSx0LGksYSl7Y29uc3Qgcj10aGlzLmJhc2UubnVtQ29tcHMscz1lW3RdKnI7dGhpcy5iYXNlLmdldFJnYkJ1ZmZlcih0aGlzLmxvb2t1cCxzLDEsaSxhLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89dGhpcy5iYXNlLGc9by5udW1Db21wcyxjPW8uZ2V0T3V0cHV0TGVuZ3RoKGcsbiksaD10aGlzLmxvb2t1cDtmb3IobGV0IHM9MDtzPGk7KytzKXtjb25zdCBpPWVbdCsrXSpnO28uZ2V0UmdiQnVmZmVyKGgsaSwxLGEsciw4LG4pO3IrPWN9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiB0aGlzLmJhc2UuZ2V0T3V0cHV0TGVuZ3RoKGUqdGhpcy5iYXNlLm51bUNvbXBzLHQpfWlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIhPT1lLmxlbmd0aCl7d2FybigiRGVjb2RlIG1hcCBsZW5ndGggaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1pZighTnVtYmVyLmlzSW50ZWdlcih0KXx8dDwxKXt3YXJuKCJCaXRzIHBlciBjb21wb25lbnQgaXMgbm90IGNvcnJlY3QiKTtyZXR1cm4hMH1yZXR1cm4gMD09PWVbMF0mJmVbMV09PT0oMTw8dCktMX19Y2xhc3MgRGV2aWNlR3JheUNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VHcmF5IiwxKX1nZXRSZ2JJdGVtKGUsdCxpLGEpe2NvbnN0IHI9MjU1KmVbdF07aVthXT1pW2ErMV09aVthKzJdPXJ9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89MjU1LygoMTw8cyktMSk7bGV0IGc9dCxjPXI7Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1vKmVbZysrXTthW2MrK109dDthW2MrK109dDthW2MrK109dDtjKz1ufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgRGV2aWNlUmdiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZVJHQiIsMyl9Z2V0UmdiSXRlbShlLHQsaSxhKXtpW2FdPTI1NSplW3RdO2lbYSsxXT0yNTUqZVt0KzFdO2lbYSsyXT0yNTUqZVt0KzJdfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtpZig4PT09cyYmMD09PW4pe2Euc2V0KGUuc3ViYXJyYXkodCx0KzMqaSkscik7cmV0dXJufWNvbnN0IG89MjU1LygoMTw8cyktMSk7bGV0IGc9dCxjPXI7Zm9yKGxldCB0PTA7dDxpOysrdCl7YVtjKytdPW8qZVtnKytdO2FbYysrXT1vKmVbZysrXTthW2MrK109byplW2crK107Yys9bn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzUGFzc3Rocm91Z2goZSl7cmV0dXJuIDg9PT1lfX1jbGFzcyBEZXZpY2VDbXlrQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUNNWUsiLDQpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz1lW3RdKmksbj1lW3QrMV0qaSxvPWVbdCsyXSppLGc9ZVt0KzNdKmk7YVtyXT0yNTUrcyooLTQuMzg3MzMyMzg0NjA5OTg4KnMrNTQuNDg2MTUxOTQxODkxNzYqbisxOC44MjI5MDUwMjE2NTMwMipvKzIxMi4yNTY2MjQ1MTYzOTU4NSpnLTI4NS4yMzMxMDI2MTM3MDA0KStuKigxLjcxNDk3NjM0NzczNjIxMzQqbi01LjYwOTY3MzY5MDQwNDczMTUqbystMTcuODczODcwODYxNDE1NDQ0KmctNS40OTcwMDY0MjcxOTYzNjYpK28qKC0yLjUyMTczNDAxMzE2ODMwMzMqby0yMS4yNDg5MjMzMzczNTMwNzMqZysxNy41MTE5MjcwODQxODEzKStnKigtMjEuODYxMjIxNDc0NjM2MDUqZy0xODkuNDgxODA4MzU5MjI3NDcpO2FbcisxXT0yNTUrcyooOC44NDEwNDE0MjIwMzYxNDkqcys2MC4xMTgwMjcwNDU1OTczNjYqbis2Ljg3MTQyNTU5MjA0OTAwNypvKzMxLjE1OTEwMDEzMDA1NTkyMipnLTc5LjI5NzA4NDQ4MTY1NDgpK24qKC0xNS4zMTAzNjEzMDY5Njc4MTcqbisxNy41NzUyNTEyNjExMDk0ODIqbysxMzEuMzUyNTA5MTI0OTM5NzYqZy0xOTAuOTQ1MzMwMjU4ODk1MSkrbyooNC40NDQzMzkxMDI4NTI3Mzkqbys5Ljg2MzI4NjE0OTM0MDUqZy0yNC44Njc0MTU4MjU1NTg3OCkrZyooLTIwLjczNzMyNTQ3MTE4MTAzNCpnLTE4Ny44MDQ1MzcwOTcxOTU3OCk7YVtyKzJdPTI1NStzKiguODg0MjUyMjQzMDAwMzI5NipzKzguMDc4Njc3NTAzMTEyOTI4Km4rMzAuODk5NzgzMDk3MDM3Mjkqby0uMjM4ODMyMzg2ODkxNzg5MzQqZy0xNC4xODM1NzY3OTk2NzMyODYpK24qKDEwLjQ5NTkzMjczNDMyMDcyKm4rNjMuMDIzNzg0OTQ3NTQwNTIqbys1MC42MDY5NTc2NTYzNjA3MzQqZy0xMTIuMjM4ODQyNTM3MTkyNDgpK28qKC4wMzI5NjA0MTExNDg3MzIxNypvKzExNS42MDM4NDQ0OTY0NjY0MSpnLTE5My41ODIwOTM1Njg2MTUwNSkrZyooLTIyLjMzODE2ODA3MzA5ODg2KmctMTgwLjEyNjEzOTc0NzA4MzY3KX1nZXRSZ2JJdGVtKGUsdCxpLGEpe3RoaXMuI3QoZSx0LDEsaSxhKX1nZXRSZ2JCdWZmZXIoZSx0LGksYSxyLHMsbil7Y29uc3Qgbz0xLygoMTw8cyktMSk7Zm9yKGxldCBzPTA7czxpO3MrKyl7dGhpcy4jdChlLHQsbyxhLHIpO3QrPTQ7cis9MytufX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZS80KigzK3QpfDB9fWNsYXNzIENhbEdyYXlDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJDYWxHcmF5IiwxKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxHcmF5Iik7W3RoaXMuWFcsdGhpcy5ZVyx0aGlzLlpXXT1lO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTt0aGlzLkc9aXx8MTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZih0aGlzLlhCPDB8fHRoaXMuWUI8MHx8dGhpcy5aQjwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5YQj10aGlzLllCPXRoaXMuWkI9MH0wPT09dGhpcy5YQiYmMD09PXRoaXMuWUImJjA9PT10aGlzLlpCfHx3YXJuKGAke3RoaXMubmFtZX0sIEJsYWNrUG9pbnQ6IFhCOiAke3RoaXMuWEJ9LCBZQjogJHt0aGlzLllCfSwgWkI6ICR7dGhpcy5aQn0sIG9ubHkgZGVmYXVsdCB2YWx1ZXMgYXJlIHN1cHBvcnRlZC5gKTtpZih0aGlzLkc8MSl7aW5mbyhgSW52YWxpZCBHYW1tYTogJHt0aGlzLkd9IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuRz0xfX0jdChlLHQsaSxhLHIpe2NvbnN0IHM9KGVbdF0qcikqKnRoaXMuRyxuPXRoaXMuWVcqcyxvPU1hdGgubWF4KDI5NS44Km4qKi4zMzMzMzMzMzMzMzMzMzMzLTQwLjgsMCk7aVthXT1vO2lbYSsxXT1vO2lbYSsyXT1vfWdldFJnYkl0ZW0oZSx0LGksYSl7dGhpcy4jdChlLHQsaSxhLDEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPTEvKCgxPDxzKS0xKTtmb3IobGV0IHM9MDtzPGk7KytzKXt0aGlzLiN0KGUsdCxhLHIsbyk7dCs9MTtyKz0zK259fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBDYWxSR0JDUyBleHRlbmRzIENvbG9yU3BhY2V7c3RhdGljI2k9bmV3IEZsb2F0MzJBcnJheShbLjg5NTEsLjI2NjQsLS4xNjE0LC0uNzUwMiwxLjcxMzUsLjAzNjcsLjAzODksLS4wNjg1LDEuMDI5Nl0pO3N0YXRpYyNhPW5ldyBGbG9hdDMyQXJyYXkoWy45ODY5OTI5LC0uMTQ3MDU0MywuMTU5OTYyNywuNDMyMzA1MywuNTE4MzYwMywuMDQ5MjkxMiwtLjAwODUyODcsLjA0MDA0MjgsLjk2ODQ4NjddKTtzdGF0aWMjcj1uZXcgRmxvYXQzMkFycmF5KFszLjI0MDQ1NDIsLTEuNTM3MTM4NSwtLjQ5ODUzMTQsLS45NjkyNjYsMS44NzYwMTA4LC4wNDE1NTYsLjA1NTY0MzQsLS4yMDQwMjU5LDEuMDU3MjI1Ml0pO3N0YXRpYyNzPW5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7c3RhdGljI249bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjbz1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNnPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI2M9KDI0LzExNikqKjMvODtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcigiQ2FsUkdCIiwzKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBDYWxSR0IiKTtjb25zdFtyLHMsbl09dGhpcy53aGl0ZVBvaW50PWUsW28sZyxjXT10aGlzLmJsYWNrUG9pbnQ9dHx8bmV3IEZsb2F0MzJBcnJheSgzKTtbdGhpcy5HUix0aGlzLkdHLHRoaXMuR0JdPWl8fG5ldyBGbG9hdDMyQXJyYXkoWzEsMSwxXSk7W3RoaXMuTVhBLHRoaXMuTVlBLHRoaXMuTVpBLHRoaXMuTVhCLHRoaXMuTVlCLHRoaXMuTVpCLHRoaXMuTVhDLHRoaXMuTVlDLHRoaXMuTVpDXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDAsMCwwLDEsMCwwLDAsMV0pO2lmKHI8MHx8bjwwfHwxIT09cyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgV2hpdGVQb2ludCBjb21wb25lbnRzIGZvciAke3RoaXMubmFtZX0sIG5vIGZhbGxiYWNrIGF2YWlsYWJsZWApO2lmKG88MHx8ZzwwfHxjPDApe2luZm8oYEludmFsaWQgQmxhY2tQb2ludCBmb3IgJHt0aGlzLm5hbWV9IFske299LCAke2d9LCAke2N9XSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5ibGFja1BvaW50PW5ldyBGbG9hdDMyQXJyYXkoMyl9aWYodGhpcy5HUjwwfHx0aGlzLkdHPDB8fHRoaXMuR0I8MCl7aW5mbyhgSW52YWxpZCBHYW1tYSBbJHt0aGlzLkdSfSwgJHt0aGlzLkdHfSwgJHt0aGlzLkdCfV0gZm9yICR7dGhpcy5uYW1lfSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQuYCk7dGhpcy5HUj10aGlzLkdHPXRoaXMuR0I9MX19I0koZSx0LGkpe2lbMF09ZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl07aVsxXT1lWzNdKnRbMF0rZVs0XSp0WzFdK2VbNV0qdFsyXTtpWzJdPWVbNl0qdFswXStlWzddKnRbMV0rZVs4XSp0WzJdfSNoKGUsdCxpKXtpWzBdPTEqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xKnRbMl0vZVsyXX0jbChlLHQsaSl7aVswXT0uOTUwNDcqdFswXS9lWzBdO2lbMV09MSp0WzFdL2VbMV07aVsyXT0xLjA4ODgzKnRbMl0vZVsyXX0jQyhlKXtyZXR1cm4gZTw9LjAwMzEzMDg/dGhpcy4jQigwLDEsMTIuOTIqZSk6ZT49Ljk5NTU0NTI1PzE6dGhpcy4jQigwLDEsMS4wNTUqZSoqKDEvMi40KS0uMDU1KX0jQihlLHQsaSl7cmV0dXJuIE1hdGgubWF4KGUsTWF0aC5taW4odCxpKSl9I1EoZSl7cmV0dXJuIGU8MD8tdGhpcy4jUSgtZSk6ZT44PygoZSsxNikvMTE2KSoqMzplKkNhbFJHQkNTLiNjfSNFKGUsdCxpKXtpZigwPT09ZVswXSYmMD09PWVbMV0mJjA9PT1lWzJdKXtpWzBdPXRbMF07aVsxXT10WzFdO2lbMl09dFsyXTtyZXR1cm59Y29uc3QgYT10aGlzLiNRKDApLHI9KDEtYSkvKDEtdGhpcy4jUShlWzBdKSkscz0xLXIsbj0oMS1hKS8oMS10aGlzLiNRKGVbMV0pKSxvPTEtbixnPSgxLWEpLygxLXRoaXMuI1EoZVsyXSkpLGM9MS1nO2lbMF09dFswXSpyK3M7aVsxXT10WzFdKm4rbztpWzJdPXRbMl0qZytjfSN1KGUsdCxpKXtpZigxPT09ZVswXSYmMT09PWVbMl0pe2lbMF09dFswXTtpWzFdPXRbMV07aVsyXT10WzJdO3JldHVybn1jb25zdCBhPWk7dGhpcy4jSShDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jaChlLGEscik7dGhpcy4jSShDYWxSR0JDUy4jYSxyLGkpfSNkKGUsdCxpKXtjb25zdCBhPWk7dGhpcy4jSShDYWxSR0JDUy4jaSx0LGEpO2NvbnN0IHI9Q2FsUkdCQ1MuI247dGhpcy4jbChlLGEscik7dGhpcy4jSShDYWxSR0JDUy4jYSxyLGkpfSN0KGUsdCxpLGEscil7Y29uc3Qgcz10aGlzLiNCKDAsMSxlW3RdKnIpLG49dGhpcy4jQigwLDEsZVt0KzFdKnIpLG89dGhpcy4jQigwLDEsZVt0KzJdKnIpLGc9MT09PXM/MTpzKip0aGlzLkdSLGM9MT09PW4/MTpuKip0aGlzLkdHLGg9MT09PW8/MTpvKip0aGlzLkdCLGw9dGhpcy5NWEEqZyt0aGlzLk1YQipjK3RoaXMuTVhDKmgsQz10aGlzLk1ZQSpnK3RoaXMuTVlCKmMrdGhpcy5NWUMqaCxRPXRoaXMuTVpBKmcrdGhpcy5NWkIqYyt0aGlzLk1aQypoLEU9Q2FsUkdCQ1MuI287RVswXT1sO0VbMV09QztFWzJdPVE7Y29uc3QgdT1DYWxSR0JDUy4jZzt0aGlzLiN1KHRoaXMud2hpdGVQb2ludCxFLHUpO2NvbnN0IGQ9Q2FsUkdCQ1MuI287dGhpcy4jRSh0aGlzLmJsYWNrUG9pbnQsdSxkKTtjb25zdCBmPUNhbFJHQkNTLiNnO3RoaXMuI2QoQ2FsUkdCQ1MuI3MsZCxmKTtjb25zdCBwPUNhbFJHQkNTLiNvO3RoaXMuI0koQ2FsUkdCQ1MuI3IsZixwKTtpW2FdPTI1NSp0aGlzLiNDKHBbMF0pO2lbYSsxXT0yNTUqdGhpcy4jQyhwWzFdKTtpW2ErMl09MjU1KnRoaXMuI0MocFsyXSl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCxpLGEsMSl9Z2V0UmdiQnVmZmVyKGUsdCxpLGEscixzLG4pe2NvbnN0IG89MS8oKDE8PHMpLTEpO2ZvcihsZXQgcz0wO3M8aTsrK3Mpe3RoaXMuI3QoZSx0LGEscixvKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfX1jbGFzcyBMYWJDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJMYWIiLDMpO2lmKCFlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiV2hpdGVQb2ludCBtaXNzaW5nIC0gcmVxdWlyZWQgZm9yIGNvbG9yIHNwYWNlIExhYiIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5hbWluLHRoaXMuYW1heCx0aGlzLmJtaW4sdGhpcy5ibWF4XT1pfHxbLTEwMCwxMDAsLTEwMCwxMDBdO1t0aGlzLlhCLHRoaXMuWUIsdGhpcy5aQl09dHx8WzAsMCwwXTtpZih0aGlzLlhXPDB8fHRoaXMuWlc8MHx8MSE9PXRoaXMuWVcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cywgbm8gZmFsbGJhY2sgYXZhaWxhYmxlIik7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbygiSW52YWxpZCBCbGFja1BvaW50LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdCIpO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9aWYodGhpcy5hbWluPnRoaXMuYW1heHx8dGhpcy5ibWluPnRoaXMuYm1heCl7aW5mbygiSW52YWxpZCBSYW5nZSwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHRzIik7dGhpcy5hbWluPS0xMDA7dGhpcy5hbWF4PTEwMDt0aGlzLmJtaW49LTEwMDt0aGlzLmJtYXg9MTAwfX0jZihlKXtyZXR1cm4gZT49Ni8yOT9lKiozOjEwOC84NDEqKGUtNC8yOSl9I3AoZSx0LGksYSl7cmV0dXJuIGkrZSooYS1pKS90fSN0KGUsdCxpLGEscil7bGV0IHM9ZVt0XSxuPWVbdCsxXSxvPWVbdCsyXTtpZighMSE9PWkpe3M9dGhpcy4jcChzLGksMCwxMDApO249dGhpcy4jcChuLGksdGhpcy5hbWluLHRoaXMuYW1heCk7bz10aGlzLiNwKG8saSx0aGlzLmJtaW4sdGhpcy5ibWF4KX1uPnRoaXMuYW1heD9uPXRoaXMuYW1heDpuPHRoaXMuYW1pbiYmKG49dGhpcy5hbWluKTtvPnRoaXMuYm1heD9vPXRoaXMuYm1heDpvPHRoaXMuYm1pbiYmKG89dGhpcy5ibWluKTtjb25zdCBnPShzKzE2KS8xMTYsYz1nK24vNTAwLGg9Zy1vLzIwMCxsPXRoaXMuWFcqdGhpcy4jZihjKSxDPXRoaXMuWVcqdGhpcy4jZihnKSxRPXRoaXMuWlcqdGhpcy4jZihoKTtsZXQgRSx1LGQ7aWYodGhpcy5aVzwxKXtFPTMuMTMzOSpsKy0xLjYxNypDKy0uNDkwNipRO3U9LS45Nzg1KmwrMS45MTYqQysuMDMzMypRO2Q9LjA3MipsKy0uMjI5KkMrMS40MDU3KlF9ZWxzZXtFPTMuMjQwNipsKy0xLjUzNzIqQystLjQ5ODYqUTt1PS0uOTY4OSpsKzEuODc1OCpDKy4wNDE1KlE7ZD0uMDU1NypsKy0uMjA0KkMrMS4wNTcqUX1hW3JdPTI1NSpNYXRoLnNxcnQoRSk7YVtyKzFdPTI1NSpNYXRoLnNxcnQodSk7YVtyKzJdPTI1NSpNYXRoLnNxcnQoZCl9Z2V0UmdiSXRlbShlLHQsaSxhKXt0aGlzLiN0KGUsdCwhMSxpLGEpfWdldFJnYkJ1ZmZlcihlLHQsaSxhLHIscyxuKXtjb25zdCBvPSgxPDxzKS0xO2ZvcihsZXQgcz0wO3M8aTtzKyspe3RoaXMuI3QoZSx0LG8sYSxyKTt0Kz0zO3IrPTMrbn19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUqKDMrdCkvM3wwfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiEwfWdldCB1c2VzWmVyb1RvT25lUmFuZ2UoKXtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXNaZXJvVG9PbmVSYW5nZSIsITEpfX1mdW5jdGlvbiBoZXhUb0ludChlLHQpe2xldCBpPTA7Zm9yKGxldCBhPTA7YTw9dDthKyspaT1pPDw4fGVbYV07cmV0dXJuIGk+Pj4wfWZ1bmN0aW9uIGhleFRvU3RyKGUsdCl7cmV0dXJuIDE9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdKTozPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSxlWzJdLGVbM10pOlN0cmluZy5mcm9tQ2hhckNvZGUoLi4uZS5zdWJhcnJheSgwLHQrMSkpfWZ1bmN0aW9uIGFkZEhleChlLHQsaSl7bGV0IGE9MDtmb3IobGV0IHI9aTtyPj0wO3ItLSl7YSs9ZVtyXSt0W3JdO2Vbcl09MjU1JmE7YT4+PTh9fWZ1bmN0aW9uIGluY0hleChlLHQpe2xldCBpPTE7Zm9yKGxldCBhPXQ7YT49MCYmaT4wO2EtLSl7aSs9ZVthXTtlW2FdPTI1NSZpO2k+Pj04fX1jb25zdCBrdD0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgaT10aGlzLnJlYWRCeXRlKCk7aWYoaTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtlPSEoMTI4JmkpO3Q9dDw8N3wxMjcmaX13aGlsZSghZSk7cmV0dXJuIHR9cmVhZFNpZ25lZCgpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIDEmZT9+KGU+Pj4xKTplPj4+MX1yZWFkSGV4KGUsdCl7ZS5zZXQodGhpcy5idWZmZXIuc3ViYXJyYXkodGhpcy5wb3MsdGhpcy5wb3MrdCsxKSk7dGhpcy5wb3MrPXQrMX1yZWFkSGV4TnVtYmVyKGUsdCl7bGV0IGk7Y29uc3QgYT10aGlzLnRtcEJ1ZjtsZXQgcj0wO2Rve2NvbnN0IGU9dGhpcy5yZWFkQnl0ZSgpO2lmKGU8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuZXhwZWN0ZWQgRU9GIGluIGJjbWFwIik7aT0hKDEyOCZlKTthW3IrK109MTI3JmV9d2hpbGUoIWkpO2xldCBzPXQsbj0wLG89MDtmb3IoO3M+PTA7KXtmb3IoO288OCYmYS5sZW5ndGg+MDspe258PWFbLS1yXTw8bztvKz03fWVbc109MjU1Jm47cy0tO24+Pj04O28tPTh9fXJlYWRIZXhTaWduZWQoZSx0KXt0aGlzLnJlYWRIZXhOdW1iZXIoZSx0KTtjb25zdCBpPTEmZVt0XT8yNTU6MDtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8PXQ7cisrKXthPSgxJmEpPDw4fGVbcl07ZVtyXT1hPj4xXml9fXJlYWRTdHJpbmcoKXtjb25zdCBlPXRoaXMucmVhZE51bWJlcigpLHQ9bmV3IEFycmF5KGUpO2ZvcihsZXQgaT0wO2k8ZTtpKyspdFtpXT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSguLi50KX19Y2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKGUsdCxpKXtjb25zdCBhPW5ldyBCaW5hcnlDTWFwU3RyZWFtKGUpLHI9YS5yZWFkQnl0ZSgpO3QudmVydGljYWw9ISEoMSZyKTtsZXQgcz1udWxsO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoa3QpLG89bmV3IFVpbnQ4QXJyYXkoa3QpLGc9bmV3IFVpbnQ4QXJyYXkoa3QpLGM9bmV3IFVpbnQ4QXJyYXkoa3QpLGg9bmV3IFVpbnQ4QXJyYXkoa3QpO2xldCBsLEM7Zm9yKDsoQz1hLnJlYWRCeXRlKCkpPj0wOyl7Y29uc3QgZT1DPj41O2lmKDc9PT1lKXtzd2l0Y2goMzEmQyl7Y2FzZSAwOmEucmVhZFN0cmluZygpO2JyZWFrO2Nhc2UgMTpzPWEucmVhZFN0cmluZygpfWNvbnRpbnVlfWNvbnN0IGk9ISEoMTYmQykscj0xNSZDO2lmKHIrMT5rdCl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBRPTEsRT1hLnJlYWROdW1iZXIoKTtzd2l0Y2goZSl7Y2FzZSAwOmEucmVhZEhleChuLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7dC5hZGRDb2Rlc3BhY2VSYW5nZShyKzEsaGV4VG9JbnQobixyKSxoZXhUb0ludChvLHIpKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxyKTthLnJlYWRIZXhOdW1iZXIobixyKTthZGRIZXgobixvLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7dC5hZGRDb2Rlc3BhY2VSYW5nZShyKzEsaGV4VG9JbnQobixyKSxoZXhUb0ludChvLHIpKX1icmVhaztjYXNlIDE6YS5yZWFkSGV4KG4scik7YS5yZWFkSGV4TnVtYmVyKG8scik7YWRkSGV4KG8sbixyKTthLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxyKTthLnJlYWRIZXhOdW1iZXIobixyKTthZGRIZXgobixvLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7YS5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOmEucmVhZEhleChnLHIpO2w9YS5yZWFkTnVtYmVyKCk7dC5tYXBPbmUoaGV4VG9JbnQoZyxyKSxsKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgoZyxyKTtpZighaSl7YS5yZWFkSGV4TnVtYmVyKGgscik7YWRkSGV4KGcsaCxyKX1sPWEucmVhZFNpZ25lZCgpKyhsKzEpO3QubWFwT25lKGhleFRvSW50KGcsciksbCl9YnJlYWs7Y2FzZSAzOmEucmVhZEhleChuLHIpO2EucmVhZEhleE51bWJlcihvLHIpO2FkZEhleChvLG4scik7bD1hLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KG4sciksaGV4VG9JbnQobyxyKSxsKTtmb3IobGV0IGU9MTtlPEU7ZSsrKXtpbmNIZXgobyxyKTtpZihpKW4uc2V0KG8pO2Vsc2V7YS5yZWFkSGV4TnVtYmVyKG4scik7YWRkSGV4KG4sbyxyKX1hLnJlYWRIZXhOdW1iZXIobyxyKTthZGRIZXgobyxuLHIpO2w9YS5yZWFkTnVtYmVyKCk7dC5tYXBDaWRSYW5nZShoZXhUb0ludChuLHIpLGhleFRvSW50KG8sciksbCl9YnJlYWs7Y2FzZSA0OmEucmVhZEhleChnLFEpO2EucmVhZEhleChjLHIpO3QubWFwT25lKGhleFRvSW50KGcsUSksaGV4VG9TdHIoYyxyKSk7Zm9yKGxldCBlPTE7ZTxFO2UrKyl7aW5jSGV4KGcsUSk7aWYoIWkpe2EucmVhZEhleE51bWJlcihoLFEpO2FkZEhleChnLGgsUSl9aW5jSGV4KGMscik7YS5yZWFkSGV4U2lnbmVkKGgscik7YWRkSGV4KGMsaCxyKTt0Lm1hcE9uZShoZXhUb0ludChnLFEpLGhleFRvU3RyKGMscikpfWJyZWFrO2Nhc2UgNTphLnJlYWRIZXgobixRKTthLnJlYWRIZXhOdW1iZXIobyxRKTthZGRIZXgobyxuLFEpO2EucmVhZEhleChjLHIpO3QubWFwQmZSYW5nZShoZXhUb0ludChuLFEpLGhleFRvSW50KG8sUSksaGV4VG9TdHIoYyxyKSk7Zm9yKGxldCBlPTE7ZTxFO2UrKyl7aW5jSGV4KG8sUSk7aWYoaSluLnNldChvKTtlbHNle2EucmVhZEhleE51bWJlcihuLFEpO2FkZEhleChuLG8sUSl9YS5yZWFkSGV4TnVtYmVyKG8sUSk7YWRkSGV4KG8sbixRKTthLnJlYWRIZXgoYyxyKTt0Lm1hcEJmUmFuZ2UoaGV4VG9JbnQobixRKSxoZXhUb0ludChvLFEpLGhleFRvU3RyKGMscikpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7ZX1gKX19cmV0dXJuIHM/aShzKTp0fX1jb25zdCBSdD1uZXcgVWludDhBcnJheSgwKTtjbGFzcyBEZWNvZGVTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fcmF3TWluQnVmZmVyTGVuZ3RoPWV8fDA7dGhpcy5wb3M9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZW9mPSExO3RoaXMuYnVmZmVyPVJ0O3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybiB0O2xldCBpPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7aTxlOylpKj0yO2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoaSk7YS5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPWF9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUsdD0hMSl7Y29uc3QgaT10aGlzLnBvcztsZXQgYTtpZihlKXt0aGlzLmVuc3VyZUJ1ZmZlcihpK2UpO2E9aStlO2Zvcig7IXRoaXMuZW9mJiZ0aGlzLmJ1ZmZlckxlbmd0aDxhOyl0aGlzLnJlYWRCbG9jayh0KTtjb25zdCByPXRoaXMuYnVmZmVyTGVuZ3RoO2E+ciYmKGE9cil9ZWxzZXtmb3IoOyF0aGlzLmVvZjspdGhpcy5yZWFkQmxvY2sodCk7YT10aGlzLmJ1ZmZlckxlbmd0aH10aGlzLnBvcz1hO3JldHVybiB0aGlzLmJ1ZmZlci5zdWJhcnJheShpLGEpfXJlc2V0KCl7dGhpcy5wb3M9MH1tYWtlU3ViU3RyZWFtKGUsdCxpPW51bGwpe2lmKHZvaWQgMD09PXQpZm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCk7ZWxzZXtjb25zdCBpPWUrdDtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1pJiYhdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCl9cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5idWZmZXIsZSx0LGkpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIHRoaXMuc3RyP3RoaXMuc3RyLmdldEJhc2VTdHJlYW1zKCk6bnVsbH19Y2xhc3MgU3RyZWFtc1NlcXVlbmNlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdD1udWxsKXtsZXQgaT0wO2Zvcihjb25zdCB0IG9mIGUpaSs9dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbT90Ll9yYXdNaW5CdWZmZXJMZW5ndGg6dC5sZW5ndGg7c3VwZXIoaSk7dGhpcy5zdHJlYW1zPWU7dGhpcy5fb25FcnJvcj10fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW1zO2lmKDA9PT1lLmxlbmd0aCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IHQ9ZS5zaGlmdCgpO2xldCBpO3RyeXtpPXQuZ2V0Qnl0ZXMoKX1jYXRjaChlKXtpZih0aGlzLl9vbkVycm9yKXt0aGlzLl9vbkVycm9yKGUsdC5kaWN0Py5vYmpJZCk7cmV0dXJufXRocm93IGV9Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWEraS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGksYSk7dGhpcy5idWZmZXJMZW5ndGg9cn1nZXRCYXNlU3RyZWFtcygpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpcy5zdHJlYW1zKXtjb25zdCBpPXQuZ2V0QmFzZVN0cmVhbXMoKTtpJiZlLnB1c2goLi4uaSl9cmV0dXJuIGUubGVuZ3RoPjA/ZTpudWxsfX1jbGFzcyBBc2NpaTg1U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGg7bGV0IGEscjtpZigxMjI9PT10KXthPXRoaXMuZW5zdXJlQnVmZmVyKGkrNCk7Zm9yKHI9MDtyPDQ7KytyKWFbaStyXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgcz10aGlzLmlucHV0O3NbMF09dDtmb3Iocj0xO3I8NTsrK3Ipe3Q9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7c1tyXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31hPXRoaXMuZW5zdXJlQnVmZmVyKGkrci0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9ci0xO2lmKHI8NSl7Zm9yKDtyPDU7KytyKXNbcl09MTE3O3RoaXMuZW9mPSEwfWxldCBuPTA7Zm9yKHI9MDtyPDU7KytyKW49ODUqbisoc1tyXS0zMyk7Zm9yKHI9MztyPj0wOy0tcil7YVtpK3JdPTI1NSZuO24+Pj04fX19fWNsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHIuZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsaT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYocjwwKXI9ZTtlbHNle2lbYSsrXT1yPDw0fGU7cj0tMX19aWYocj49MCYmdGhpcy5lb2Ype2lbYSsrXT1yPDw0O3I9LTF9dGhpcy5maXJzdERpZ2l0PXI7dGhpcy5idWZmZXJMZW5ndGg9YX19Y29uc3QgTnQ9LTEsR3Q9W1stMSwtMV0sWy0xLC0xXSxbNyw4XSxbNyw3XSxbNiw2XSxbNiw2XSxbNiw1XSxbNiw1XSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXV0seHQ9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxNdD1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdLFs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sVXQ9W1stMSwtMV0sWy0xLC0xXSxbMTIsLTJdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTIsMjMwNF0sWzExLDE4NTZdLFsxMSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNDk2XSxbMTIsMjU2MF0sWzEyLDI1NjBdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTIsNTJdLFsxMiw1Ml0sWzEzLDY0MF0sWzEzLDcwNF0sWzEzLDc2OF0sWzEzLDgzMl0sWzEyLDU1XSxbMTIsNTVdLFsxMiw1Nl0sWzEyLDU2XSxbMTMsMTI4MF0sWzEzLDEzNDRdLFsxMywxNDA4XSxbMTMsMTQ3Ml0sWzEyLDU5XSxbMTIsNTldLFsxMiw2MF0sWzEyLDYwXSxbMTMsMTUzNl0sWzEzLDE2MDBdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTMsMTY2NF0sWzEzLDE3MjhdLFsxMiwzMjBdLFsxMiwzMjBdLFsxMiwzODRdLFsxMiwzODRdLFsxMiw0NDhdLFsxMiw0NDhdLFsxMyw1MTJdLFsxMyw1NzZdLFsxMiw1M10sWzEyLDUzXSxbMTIsNTRdLFsxMiw1NF0sWzEzLDg5Nl0sWzEzLDk2MF0sWzEzLDEwMjRdLFsxMywxMDg4XSxbMTMsMTE1Ml0sWzEzLDEyMTZdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XV0sTHQ9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0sSnQ9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO2NsYXNzIENDSVRURmF4RGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQ9e30pe2lmKCFlfHwiZnVuY3Rpb24iIT10eXBlb2YgZS5uZXh0KXRocm93IG5ldyBFcnJvcignQ0NJVFRGYXhEZWNvZGVyIC0gaW52YWxpZCAic291cmNlIiBwYXJhbWV0ZXIuJyk7dGhpcy5zb3VyY2U9ZTt0aGlzLmVvZj0hMTt0aGlzLmVuY29kaW5nPXQuS3x8MDt0aGlzLmVvbGluZT10LkVuZE9mTGluZXx8ITE7dGhpcy5ieXRlQWxpZ249dC5FbmNvZGVkQnl0ZUFsaWdufHwhMTt0aGlzLmNvbHVtbnM9dC5Db2x1bW5zfHwxNzI4O3RoaXMucm93cz10LlJvd3N8fDA7dGhpcy5lb2Jsb2NrPXQuRW5kT2ZCbG9jaz8/ITA7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7bGV0IGk7Zm9yKDswPT09KGk9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09aSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGk9dGhpcy5jb2x1bW5zO2xldCBhLHIscyxuLG87aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgcyxvLGc7aWYodGhpcy5uZXh0TGluZTJEKXtmb3Iobj0wO3Rbbl08aTsrK24pZVtuXT10W25dO2VbbisrXT1pO2Vbbl09aTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDthPTA7cj0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108aTspe3M9dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaChzKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbYSsxXSxyKTtlW2ErMV08aSYmKGErPTIpO2JyZWFrO2Nhc2UgMTpzPW89MDtpZihyKXtkb3tzKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtkb3tvKz1nPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGc+PTY0KX1lbHNle2Rve3MrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO2Rve28rPWc9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoZz49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStzLHIpO3RbdGhpcy5jb2RpbmdQb3NdPGkmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLDFecik7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVthXSszLHIpO3JePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108aSl7KythO2Zvcig7ZVthXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbYV08aTspYSs9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbYV0rMixyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW2FdKzEscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXsrK2E7Zm9yKDtlW2FdPD10W3RoaXMuY29kaW5nUG9zXSYmZVthXTxpOylhKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVthXSxyKTtyXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGkpeysrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTMscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTIscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW2FdLTEscik7cl49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXthPjA/LS1hOisrYTtmb3IoO2VbYV08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW2FdPGk7KWErPTJ9YnJlYWs7Y2FzZSBOdDp0aGlzLl9hZGRQaXhlbHMoaSwwKTt0aGlzLmVvZj0hMDticmVhaztkZWZhdWx0OmluZm8oImJhZCAyZCBjb2RlIik7dGhpcy5fYWRkUGl4ZWxzKGksMCk7dGhpcy5lcnI9ITB9fX1lbHNle3RbMF09MDt0aGlzLmNvZGluZ1Bvcz0wO3I9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGk7KXtzPTA7aWYocilkb3tzKz1nPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGc+PTY0KTtlbHNlIGRve3MrPWc9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoZz49NjQpO3RoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStzLHIpO3JePTF9fWxldCBjPSExO3RoaXMuYnl0ZUFsaWduJiYodGhpcy5pbnB1dEJpdHMmPS04KTtpZih0aGlzLmVvYmxvY2t8fHRoaXMucm93IT09dGhpcy5yb3dzLTEpe3M9dGhpcy5fbG9va0JpdHMoMTIpO2lmKHRoaXMuZW9saW5lKWZvcig7cyE9PU50JiYxIT09czspe3RoaXMuX2VhdEJpdHMoMSk7cz10aGlzLl9sb29rQml0cygxMil9ZWxzZSBmb3IoOzA9PT1zOyl7dGhpcy5fZWF0Qml0cygxKTtzPXRoaXMuX2xvb2tCaXRzKDEyKX1pZigxPT09cyl7dGhpcy5fZWF0Qml0cygxMik7Yz0hMH1lbHNlIHM9PT1OdCYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZjJiZ0aGlzLmJ5dGVBbGlnbil7cz10aGlzLl9sb29rQml0cygxMik7aWYoMT09PXMpe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihuPTA7bjw0Oysrbil7cz10aGlzLl9sb29rQml0cygxMik7MSE9PXMmJmluZm8oImJhZCBydGMgY29kZTogIitzKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtzPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihzPT09TnQpe3RoaXMuZW9mPSEwO3JldHVybi0xfWlmKHM+PjE9PTEpYnJlYWs7dGhpcy5fZWF0Qml0cygxKX10aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2VhdEJpdHMoMSk7dGhpcy5uZXh0TGluZTJEPSEoMSZzKX19dGhpcy5vdXRwdXRCaXRzPXRbMF0+MD90W3RoaXMuY29kaW5nUG9zPTBdOnRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe289MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmdFt0aGlzLmNvZGluZ1Bvc108aSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtzPTg7bz0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcignSW52YWxpZCAvQ0NJVFRGYXhEZWNvZGUgZGF0YSwgIm91dHB1dEJpdHMiIG11c3QgYmUgYSBudW1iZXIuJyk7aWYodGhpcy5vdXRwdXRCaXRzPnMpe288PD1zOzEmdGhpcy5jb2RpbmdQb3N8fChvfD0yNTU+Pjgtcyk7dGhpcy5vdXRwdXRCaXRzLT1zO3M9MH1lbHNle288PD10aGlzLm91dHB1dEJpdHM7MSZ0aGlzLmNvZGluZ1Bvc3x8KG98PTI1NT4+OC10aGlzLm91dHB1dEJpdHMpO3MtPXRoaXMub3V0cHV0Qml0czt0aGlzLm91dHB1dEJpdHM9MDtpZih0W3RoaXMuY29kaW5nUG9zXTxpKXt0aGlzLmNvZGluZ1BvcysrO3RoaXMub3V0cHV0Qml0cz10W3RoaXMuY29kaW5nUG9zXS10W3RoaXMuY29kaW5nUG9zLTFdfWVsc2UgaWYocz4wKXtvPDw9cztzPTB9fX13aGlsZShzKX10aGlzLmJsYWNrJiYob149MjU1KTtyZXR1cm4gb31fYWRkUGl4ZWxzKGUsdCl7Y29uc3QgaT10aGlzLmNvZGluZ0xpbmU7bGV0IGE9dGhpcy5jb2RpbmdQb3M7aWYoZT5pW2FdKXtpZihlPnRoaXMuY29sdW1ucyl7aW5mbygicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmYV50JiYrK2E7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2FkZFBpeGVsc05lZyhlLHQpe2NvbnN0IGk9dGhpcy5jb2RpbmdMaW5lO2xldCBhPXRoaXMuY29kaW5nUG9zO2lmKGU+aVthXSl7aWYoZT50aGlzLmNvbHVtbnMpe2luZm8oInJvdyBpcyB3cm9uZyBsZW5ndGgiKTt0aGlzLmVycj0hMDtlPXRoaXMuY29sdW1uc30xJmFedCYmKythO2lbYV09ZX1lbHNlIGlmKGU8aVthXSl7aWYoZTwwKXtpbmZvKCJpbnZhbGlkIGNvZGUiKTt0aGlzLmVycj0hMDtlPTB9Zm9yKDthPjAmJmU8aVthLTFdOyktLWE7aVthXT1lfXRoaXMuY29kaW5nUG9zPWF9X2ZpbmRUYWJsZUNvZGUoZSx0LGksYSl7Y29uc3Qgcj1hfHwwO2ZvcihsZXQgYT1lO2E8PXQ7KythKXtsZXQgZT10aGlzLl9sb29rQml0cyhhKTtpZihlPT09TnQpcmV0dXJuWyEwLDEsITFdO2E8dCYmKGU8PD10LWEpO2lmKCFyfHxlPj1yKXtjb25zdCB0PWlbZS1yXTtpZih0WzBdPT09YSl7dGhpcy5fZWF0Qml0cyhhKTtyZXR1cm5bITAsdFsxXSwhMF19fX1yZXR1cm5bITEsMCwhMV19X2dldFR3b0RpbUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDcpO2U9R3RbdF07aWYoZT8uWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7Y29uc3QgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxHdCk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX1pbmZvKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIE50fV9nZXRXaGl0ZUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDEyKTtpZih0PT09TnQpcmV0dXJuIDE7ZT10Pj41PT0wP3h0W3RdOk10W3Q+PjNdO2lmKGVbMF0+MCl7dGhpcy5fZWF0Qml0cyhlWzBdKTtyZXR1cm4gZVsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsOSxNdCk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTEsMTIseHQpO2lmKGVbMF0pcmV0dXJuIGVbMV19aW5mbygiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PU50KXJldHVybiAxO3Q9ZT4+Nz09MD9VdFtlXTplPj45PT0wJiZlPj43IT0wP0x0WyhlPj4xKS02NF06SnRbZT4+N107aWYodFswXT4wKXt0aGlzLl9lYXRCaXRzKHRbMF0pO3JldHVybiB0WzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMiw2LEp0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSg3LDEyLEx0LDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxVdCk7aWYoZVswXSlyZXR1cm4gZVsxXX1pbmZvKCJiYWQgYmxhY2sgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2xvb2tCaXRzKGUpe2xldCB0O2Zvcig7dGhpcy5pbnB1dEJpdHM8ZTspe2lmKC0xPT09KHQ9dGhpcy5zb3VyY2UubmV4dCgpKSlyZXR1cm4gMD09PXRoaXMuaW5wdXRCaXRzP050OnRoaXMuaW5wdXRCdWY8PGUtdGhpcy5pbnB1dEJpdHMmNjU1MzU+PjE2LWU7dGhpcy5pbnB1dEJ1Zj10aGlzLmlucHV0QnVmPDw4fHQ7dGhpcy5pbnB1dEJpdHMrPTh9cmV0dXJuIHRoaXMuaW5wdXRCdWY+PnRoaXMuaW5wdXRCaXRzLWUmNjU1MzU+PjE2LWV9X2VhdEJpdHMoZSl7KHRoaXMuaW5wdXRCaXRzLT1lKTwwJiYodGhpcy5pbnB1dEJpdHM9MCl9fWNsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7aSBpbnN0YW5jZW9mIERpY3R8fChpPURpY3QuZW1wdHkpO2NvbnN0IGE9e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKGEse0s6aS5nZXQoIksiKSxFbmRPZkxpbmU6aS5nZXQoIkVuZE9mTGluZSIpLEVuY29kZWRCeXRlQWxpZ246aS5nZXQoIkVuY29kZWRCeXRlQWxpZ24iKSxDb2x1bW5zOmkuZ2V0KCJDb2x1bW5zIiksUm93czppLmdldCgiUm93cyIpLEVuZE9mQmxvY2s6aS5nZXQoIkVuZE9mQmxvY2siKSxCbGFja0lzMTppLmdldCgiQmxhY2tJczEiKX0pfXJlYWRCbG9jaygpe2Zvcig7IXRoaXMuZW9mOyl7Y29uc3QgZT10aGlzLmNjaXR0RmF4RGVjb2Rlci5yZWFkTmV4dENoYXIoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCsxKTt0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lfX19Y29uc3QgSHQ9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSx2dD1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSxZdD1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLEt0PVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxOCw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSxUdD1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIEZsYXRlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IGk9ZS5nZXRCeXRlKCksYT1lLmdldEJ5dGUoKTtpZigtMT09PWl8fC0xPT09YSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDghPSgxNSZpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKCgoaTw8OCkrYSklMzEhPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgRkNIRUNLIGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO2lmKDMyJmEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHtpfSwgJHthfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHI7bGV0IGksYT10aGlzLmNvZGVTaXplLHI9dGhpcy5jb2RlQnVmO2Zvcig7YTxlOyl7aWYoLTE9PT0oaT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7cnw9aTw8YTthKz04fWk9ciYoMTw8ZSktMTt0aGlzLmNvZGVCdWY9cj4+ZTt0aGlzLmNvZGVTaXplPWEtPWU7cmV0dXJuIGl9Z2V0Q29kZShlKXtjb25zdCB0PXRoaXMuc3RyLGk9ZVswXSxhPWVbMV07bGV0IHIscz10aGlzLmNvZGVTaXplLG49dGhpcy5jb2RlQnVmO2Zvcig7czxhJiYtMSE9PShyPXQuZ2V0Qnl0ZSgpKTspe258PXI8PHM7cys9OH1jb25zdCBvPWlbbiYoMTw8YSktMV0sZz1vPj4xNixjPTY1NTM1Jm87aWYoZzwxfHxzPGcpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPW4+Pmc7dGhpcy5jb2RlU2l6ZT1zLWc7cmV0dXJuIGN9Z2VuZXJhdGVIdWZmbWFuVGFibGUoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgaSxhPTA7Zm9yKGk9MDtpPHQ7KytpKWVbaV0+YSYmKGE9ZVtpXSk7Y29uc3Qgcj0xPDxhLHM9bmV3IEludDMyQXJyYXkocik7Zm9yKGxldCBuPTEsbz0wLGc9MjtuPD1hOysrbixvPDw9MSxnPDw9MSlmb3IobGV0IGE9MDthPHQ7KythKWlmKGVbYV09PT1uKXtsZXQgZT0wLHQ9bztmb3IoaT0wO2k8bjsrK2kpe2U9ZTw8MXwxJnQ7dD4+PTF9Zm9yKGk9ZTtpPHI7aSs9ZylzW2ldPW48PDE2fGE7KytvfXJldHVybltzLGFdfSNtKGUpe2luZm8oZSk7dGhpcy5lb2Y9ITB9cmVhZEJsb2NrKCl7bGV0IGUsdDtjb25zdCBpPXRoaXMuc3RyO2xldCBhLHIscz10aGlzLmdldEJpdHMoMyk7MSZzJiYodGhpcy5lb2Y9ITApO3M+Pj0xO2lmKDA9PT1zKXtsZXQgdDtpZigtMT09PSh0PWkuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IGE9dDtpZigtMT09PSh0PWkuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59YXw9dDw8ODtpZigtMT09PSh0PWkuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IHI9dDtpZigtMT09PSh0PWkuZ2V0Qnl0ZSgpKSl7dGhpcy4jbSgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59cnw9dDw8ODtpZihyIT09KDY1NTM1Jn5hKSYmKDAhPT1hfHwwIT09cikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgcz10aGlzLmJ1ZmZlckxlbmd0aCxuPXMrYTtlPXRoaXMuZW5zdXJlQnVmZmVyKG4pO3RoaXMuYnVmZmVyTGVuZ3RoPW47aWYoMD09PWEpLTE9PT1pLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PWkuZ2V0Qnl0ZXMoYSk7ZS5zZXQodCxzKTt0Lmxlbmd0aDxhJiYodGhpcy5lb2Y9ITApfXJldHVybn1pZigxPT09cyl7YT1LdDtyPVR0fWVsc2V7aWYoMiE9PXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGJsb2NrIHR5cGUgaW4gZmxhdGUgc3RyZWFtIik7e2NvbnN0IGU9dGhpcy5nZXRCaXRzKDUpKzI1NyxpPXRoaXMuZ2V0Qml0cyg1KSsxLHM9dGhpcy5nZXRCaXRzKDQpKzQsbj1uZXcgVWludDhBcnJheShIdC5sZW5ndGgpO2xldCBvO2ZvcihvPTA7bzxzOysrbyluW0h0W29dXT10aGlzLmdldEJpdHMoMyk7Y29uc3QgZz10aGlzLmdlbmVyYXRlSHVmZm1hblRhYmxlKG4pO3Q9MDtvPTA7Y29uc3QgYz1lK2ksaD1uZXcgVWludDhBcnJheShjKTtsZXQgbCxDLFE7Zm9yKDtvPGM7KXtjb25zdCBlPXRoaXMuZ2V0Q29kZShnKTtpZigxNj09PWUpe2w9MjtDPTM7UT10fWVsc2UgaWYoMTc9PT1lKXtsPTM7Qz0zO1E9dD0wfWVsc2V7aWYoMTghPT1lKXtoW28rK109dD1lO2NvbnRpbnVlfWw9NztDPTExO1E9dD0wfWxldCBpPXRoaXMuZ2V0Qml0cyhsKStDO2Zvcig7aS0tID4wOyloW28rK109UX1hPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoaC5zdWJhcnJheSgwLGUpKTtyPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUoaC5zdWJhcnJheShlLGMpKX19ZT10aGlzLmJ1ZmZlcjtsZXQgbj1lP2UubGVuZ3RoOjAsbz10aGlzLmJ1ZmZlckxlbmd0aDtmb3IoOzspe2xldCBpPXRoaXMuZ2V0Q29kZShhKTtpZihpPDI1Nil7aWYobysxPj1uKXtlPXRoaXMuZW5zdXJlQnVmZmVyKG8rMSk7bj1lLmxlbmd0aH1lW28rK109aTtjb250aW51ZX1pZigyNTY9PT1pKXt0aGlzLmJ1ZmZlckxlbmd0aD1vO3JldHVybn1pLT0yNTc7aT12dFtpXTtsZXQgcz1pPj4xNjtzPjAmJihzPXRoaXMuZ2V0Qml0cyhzKSk7dD0oNjU1MzUmaSkrcztpPXRoaXMuZ2V0Q29kZShyKTtpPVl0W2ldO3M9aT4+MTY7cz4wJiYocz10aGlzLmdldEJpdHMocykpO2NvbnN0IGc9KDY1NTM1JmkpK3M7aWYobyt0Pj1uKXtlPXRoaXMuZW5zdXJlQnVmZmVyKG8rdCk7bj1lLmxlbmd0aH1mb3IobGV0IGk9MDtpPHQ7KytpLCsrbyllW29dPWVbby1nXX19fWNvbnN0IHF0PVt7cWU6MjIwMTcsbm1wczoxLG5scHM6MSxzd2l0Y2hGbGFnOjF9LHtxZToxMzMxMyxubXBzOjIsbmxwczo2LHN3aXRjaEZsYWc6MH0se3FlOjYxNDUsbm1wczozLG5scHM6OSxzd2l0Y2hGbGFnOjB9LHtxZToyNzUzLG5tcHM6NCxubHBzOjEyLHN3aXRjaEZsYWc6MH0se3FlOjEzMTMsbm1wczo1LG5scHM6Mjksc3dpdGNoRmxhZzowfSx7cWU6NTQ1LG5tcHM6MzgsbmxwczozMyxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjcsbmxwczo2LHN3aXRjaEZsYWc6MX0se3FlOjIxNTA1LG5tcHM6OCxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjE4NDMzLG5tcHM6OSxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjE0MzM3LG5tcHM6MTAsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToxMjI4OSxubXBzOjExLG5scHM6MTcsc3dpdGNoRmxhZzowfSx7cWU6OTIxNyxubXBzOjEyLG5scHM6MTgsc3dpdGNoRmxhZzowfSx7cWU6NzE2OSxubXBzOjEzLG5scHM6MjAsc3dpdGNoRmxhZzowfSx7cWU6NTYzMyxubXBzOjI5LG5scHM6MjEsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczoxNSxubHBzOjE0LHN3aXRjaEZsYWc6MX0se3FlOjIxNTA1LG5tcHM6MTYsbmxwczoxNCxzd2l0Y2hGbGFnOjB9LHtxZToyMDczNyxubXBzOjE3LG5scHM6MTUsc3dpdGNoRmxhZzowfSx7cWU6MTg0MzMsbm1wczoxOCxubHBzOjE2LHN3aXRjaEZsYWc6MH0se3FlOjE0MzM3LG5tcHM6MTksbmxwczoxNyxzd2l0Y2hGbGFnOjB9LHtxZToxMzMxMyxubXBzOjIwLG5scHM6MTgsc3dpdGNoRmxhZzowfSx7cWU6MTIyODksbm1wczoyMSxubHBzOjE5LHN3aXRjaEZsYWc6MH0se3FlOjEwMjQxLG5tcHM6MjIsbmxwczoxOSxzd2l0Y2hGbGFnOjB9LHtxZTo5MjE3LG5tcHM6MjMsbmxwczoyMCxzd2l0Y2hGbGFnOjB9LHtxZTo4NzA1LG5tcHM6MjQsbmxwczoyMSxzd2l0Y2hGbGFnOjB9LHtxZTo3MTY5LG5tcHM6MjUsbmxwczoyMixzd2l0Y2hGbGFnOjB9LHtxZTo2MTQ1LG5tcHM6MjYsbmxwczoyMyxzd2l0Y2hGbGFnOjB9LHtxZTo1NjMzLG5tcHM6MjcsbmxwczoyNCxzd2l0Y2hGbGFnOjB9LHtxZTo1MTIxLG5tcHM6MjgsbmxwczoyNSxzd2l0Y2hGbGFnOjB9LHtxZTo0NjA5LG5tcHM6MjksbmxwczoyNixzd2l0Y2hGbGFnOjB9LHtxZTo0MzUzLG5tcHM6MzAsbmxwczoyNyxzd2l0Y2hGbGFnOjB9LHtxZToyNzUzLG5tcHM6MzEsbmxwczoyOCxzd2l0Y2hGbGFnOjB9LHtxZToyNDk3LG5tcHM6MzIsbmxwczoyOSxzd2l0Y2hGbGFnOjB9LHtxZToyMjA5LG5tcHM6MzMsbmxwczozMCxzd2l0Y2hGbGFnOjB9LHtxZToxMzEzLG5tcHM6MzQsbmxwczozMSxzd2l0Y2hGbGFnOjB9LHtxZToxMDg5LG5tcHM6MzUsbmxwczozMixzd2l0Y2hGbGFnOjB9LHtxZTo2NzMsbm1wczozNixubHBzOjMzLHN3aXRjaEZsYWc6MH0se3FlOjU0NSxubXBzOjM3LG5scHM6MzQsc3dpdGNoRmxhZzowfSx7cWU6MzIxLG5tcHM6MzgsbmxwczozNSxzd2l0Y2hGbGFnOjB9LHtxZToyNzMsbm1wczozOSxubHBzOjM2LHN3aXRjaEZsYWc6MH0se3FlOjEzMyxubXBzOjQwLG5scHM6Mzcsc3dpdGNoRmxhZzowfSx7cWU6NzMsbm1wczo0MSxubHBzOjM4LHN3aXRjaEZsYWc6MH0se3FlOjM3LG5tcHM6NDIsbmxwczozOSxzd2l0Y2hGbGFnOjB9LHtxZToyMSxubXBzOjQzLG5scHM6NDAsc3dpdGNoRmxhZzowfSx7cWU6OSxubXBzOjQ0LG5scHM6NDEsc3dpdGNoRmxhZzowfSx7cWU6NSxubXBzOjQ1LG5scHM6NDIsc3dpdGNoRmxhZzowfSx7cWU6MSxubXBzOjQ1LG5scHM6NDMsc3dpdGNoRmxhZzowfSx7cWU6MjIwMTcsbm1wczo0NixubHBzOjQ2LHN3aXRjaEZsYWc6MH1dO2NsYXNzIEFyaXRobWV0aWNEZWNvZGVye2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLmJwPXQ7dGhpcy5kYXRhRW5kPWk7dGhpcy5jaGlnaD1lW3RdO3RoaXMuY2xvdz0wO3RoaXMuYnl0ZUluKCk7dGhpcy5jaGlnaD10aGlzLmNoaWdoPDw3JjY1NTM1fHRoaXMuY2xvdz4+OSYxMjc7dGhpcy5jbG93PXRoaXMuY2xvdzw8NyY2NTUzNTt0aGlzLmN0LT03O3RoaXMuYT0zMjc2OH1ieXRlSW4oKXtjb25zdCBlPXRoaXMuZGF0YTtsZXQgdD10aGlzLmJwO2lmKDI1NT09PWVbdF0paWYoZVt0KzFdPjE0Myl7dGhpcy5jbG93Kz02NTI4MDt0aGlzLmN0PTh9ZWxzZXt0Kys7dGhpcy5jbG93Kz1lW3RdPDw5O3RoaXMuY3Q9Nzt0aGlzLmJwPXR9ZWxzZXt0Kys7dGhpcy5jbG93Kz10PHRoaXMuZGF0YUVuZD9lW3RdPDw4OjY1MjgwO3RoaXMuY3Q9ODt0aGlzLmJwPXR9aWYodGhpcy5jbG93PjY1NTM1KXt0aGlzLmNoaWdoKz10aGlzLmNsb3c+PjE2O3RoaXMuY2xvdyY9NjU1MzV9fXJlYWRCaXQoZSx0KXtsZXQgaT1lW3RdPj4xLGE9MSZlW3RdO2NvbnN0IHI9cXRbaV0scz1yLnFlO2xldCBuLG89dGhpcy5hLXM7aWYodGhpcy5jaGlnaDxzKWlmKG88cyl7bz1zO249YTtpPXIubm1wc31lbHNle289cztuPTFeYTsxPT09ci5zd2l0Y2hGbGFnJiYoYT1uKTtpPXIubmxwc31lbHNle3RoaXMuY2hpZ2gtPXM7aWYoMCE9KDMyNzY4Jm8pKXt0aGlzLmE9bztyZXR1cm4gYX1pZihvPHMpe249MV5hOzE9PT1yLnN3aXRjaEZsYWcmJihhPW4pO2k9ci5ubHBzfWVsc2V7bj1hO2k9ci5ubXBzfX1kb3swPT09dGhpcy5jdCYmdGhpcy5ieXRlSW4oKTtvPDw9MTt0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDEmNjU1MzV8dGhpcy5jbG93Pj4xNSYxO3RoaXMuY2xvdz10aGlzLmNsb3c8PDEmNjU1MzU7dGhpcy5jdC0tfXdoaWxlKDA9PSgzMjc2OCZvKSk7dGhpcy5hPW87ZVt0XT1pPDwxfGE7cmV0dXJuIG59fWNsYXNzIEpiaWcyRXJyb3IgZXh0ZW5kcyBzdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKYmlnMkVycm9yIil9fWNsYXNzIENvbnRleHRDYWNoZXtnZXRDb250ZXh0cyhlKXtyZXR1cm4gZSBpbiB0aGlzP3RoaXNbZV06dGhpc1tlXT1uZXcgSW50OEFycmF5KDY1NTM2KX19Y2xhc3MgRGVjb2RpbmdDb250ZXh0e2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9aX1nZXQgZGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiZGVjb2RlciIsbmV3IEFyaXRobWV0aWNEZWNvZGVyKHRoaXMuZGF0YSx0aGlzLnN0YXJ0LHRoaXMuZW5kKSl9Z2V0IGNvbnRleHRDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiY29udGV4dENhY2hlIixuZXcgQ29udGV4dENhY2hlKX19Y29uc3QgT3Q9MioqMzEtMSxQdD0tKDIqKjMxKTtmdW5jdGlvbiBkZWNvZGVJbnRlZ2VyKGUsdCxpKXtjb25zdCBhPWUuZ2V0Q29udGV4dHModCk7bGV0IHI9MTtmdW5jdGlvbiByZWFkQml0cyhlKXtsZXQgdD0wO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2NvbnN0IGU9aS5yZWFkQml0KGEscik7cj1yPDI1Nj9yPDwxfGU6NTExJihyPDwxfGUpfDI1Njt0PXQ8PDF8ZX1yZXR1cm4gdD4+PjB9Y29uc3Qgcz1yZWFkQml0cygxKSxuPXJlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDEpP3JlYWRCaXRzKDMyKSs0NDM2OnJlYWRCaXRzKDEyKSszNDA6cmVhZEJpdHMoOCkrODQ6cmVhZEJpdHMoNikrMjA6cmVhZEJpdHMoNCkrNDpyZWFkQml0cygyKTtsZXQgbzswPT09cz9vPW46bj4wJiYobz0tbik7cmV0dXJuIG8+PVB0JiZvPD1PdD9vOm51bGx9ZnVuY3Rpb24gZGVjb2RlSUFJRChlLHQsaSl7Y29uc3QgYT1lLmdldENvbnRleHRzKCJJQUlEIik7bGV0IHI9MTtmb3IobGV0IGU9MDtlPGk7ZSsrKXtyPXI8PDF8dC5yZWFkQml0KGEscil9cmV0dXJuIGk8MzE/ciYoMTw8aSktMToyMTQ3NDgzNjQ3JnJ9Y29uc3QgV3Q9WyJTeW1ib2xEaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlVGV4dFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlVGV4dFJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzVGV4dFJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJQYXR0ZXJuRGljdGlvbmFyeSIsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUhhbGZ0b25lUmVnaW9uIixudWxsLCJJbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbiIsIkltbWVkaWF0ZUxvc3NsZXNzSGFsZnRvbmVSZWdpb24iLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVnaW9uIixudWxsLCJJbW1lZGlhdGVHZW5lcmljUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uIiwiSW50ZXJtZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWZpbmVtZW50UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCwiUGFnZUluZm9ybWF0aW9uIiwiRW5kT2ZQYWdlIiwiRW5kT2ZTdHJpcGUiLCJFbmRPZkZpbGUiLCJQcm9maWxlcyIsIlRhYmxlcyIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJFeHRlbnNpb24iXSxqdD1bW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6Mix5Oi0xfSx7eDotNCx5OjB9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4OjIseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4OjIseTotMX0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0zLHk6LTF9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotNCx5OjB9LHt4Oi0zLHk6MH0se3g6LTIseTowfSx7eDotMSx5OjB9XV0sWHQ9W3tjb2Rpbmc6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9XSxyZWZlcmVuY2U6W3t4OjAseTotMX0se3g6MSx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6LTEseToxfSx7eDowLHk6MX0se3g6MSx5OjF9XX0se2NvZGluZzpbe3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDotMSx5OjB9LHt4OjAseTowfSx7eDoxLHk6MH0se3g6MCx5OjF9LHt4OjEseToxfV19XSxadD1bMzk3MTcsMTk0MSwyMjksNDA1XSxWdD1bMzIsOF07ZnVuY3Rpb24gZGVjb2RlQml0bWFwKGUsdCxpLGEscixzLG4sbyl7aWYoZSl7cmV0dXJuIGRlY29kZU1NUkJpdG1hcChuZXcgUmVhZGVyKG8uZGF0YSxvLnN0YXJ0LG8uZW5kKSx0LGksITEpfWlmKDA9PT1hJiYhcyYmIXImJjQ9PT1uLmxlbmd0aCYmMz09PW5bMF0ueCYmLTE9PT1uWzBdLnkmJi0zPT09blsxXS54JiYtMT09PW5bMV0ueSYmMj09PW5bMl0ueCYmLTI9PT1uWzJdLnkmJi0yPT09blszXS54JiYtMj09PW5bM10ueSlyZXR1cm4gZnVuY3Rpb24gZGVjb2RlQml0bWFwVGVtcGxhdGUwKGUsdCxpKXtjb25zdCBhPWkuZGVjb2RlcixyPWkuY29udGV4dENhY2hlLmdldENvbnRleHRzKCJHQiIpLHM9W107bGV0IG4sbyxnLGMsaCxsLEM7Zm9yKG89MDtvPHQ7bysrKXtoPXNbb109bmV3IFVpbnQ4QXJyYXkoZSk7bD1vPDE/aDpzW28tMV07Qz1vPDI/aDpzW28tMl07bj1DWzBdPDwxM3xDWzFdPDwxMnxDWzJdPDwxMXxsWzBdPDw3fGxbMV08PDZ8bFsyXTw8NXxsWzNdPDw0O2ZvcihnPTA7ZzxlO2crKyl7aFtnXT1jPWEucmVhZEJpdChyLG4pO249KDMxNzM1Jm4pPDwxfChnKzM8ZT9DW2crM108PDExOjApfChnKzQ8ZT9sW2crNF08PDQ6MCl8Y319cmV0dXJuIHN9KHQsaSxvKTtjb25zdCBnPSEhcyxjPWp0W2FdLmNvbmNhdChuKTtjLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueS10Lnl8fGUueC10Lnh9KSk7Y29uc3QgaD1jLmxlbmd0aCxsPW5ldyBJbnQ4QXJyYXkoaCksQz1uZXcgSW50OEFycmF5KGgpLFE9W107bGV0IEUsdSxkPTAsZj0wLHA9MCxtPTA7Zm9yKHU9MDt1PGg7dSsrKXtsW3VdPWNbdV0ueDtDW3VdPWNbdV0ueTtmPU1hdGgubWluKGYsY1t1XS54KTtwPU1hdGgubWF4KHAsY1t1XS54KTttPU1hdGgubWluKG0sY1t1XS55KTt1PGgtMSYmY1t1XS55PT09Y1t1KzFdLnkmJmNbdV0ueD09PWNbdSsxXS54LTE/ZHw9MTw8aC0xLXU6US5wdXNoKHUpfWNvbnN0IHk9US5sZW5ndGgsdz1uZXcgSW50OEFycmF5KHkpLGI9bmV3IEludDhBcnJheSh5KSxEPW5ldyBVaW50MTZBcnJheSh5KTtmb3IoRT0wO0U8eTtFKyspe3U9UVtFXTt3W0VdPWNbdV0ueDtiW0VdPWNbdV0ueTtEW0VdPTE8PGgtMS11fWNvbnN0IFM9LWYsaz0tbSxSPXQtcCxOPVp0W2FdO2xldCBHPW5ldyBVaW50OEFycmF5KHQpO2NvbnN0IHg9W10sTT1vLmRlY29kZXIsVT1vLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKTtsZXQgTCxKLEgsdixZLEs9MCxUPTA7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7aWYocil7S149TS5yZWFkQml0KFUsTik7aWYoSyl7eC5wdXNoKEcpO2NvbnRpbnVlfX1HPW5ldyBVaW50OEFycmF5KEcpO3gucHVzaChHKTtmb3IoTD0wO0w8dDtMKyspe2lmKGcmJnNbZV1bTF0pe0dbTF09MDtjb250aW51ZX1pZihMPj1TJiZMPFImJmU+PWspe1Q9VDw8MSZkO2Zvcih1PTA7dTx5O3UrKyl7Sj1lK2JbdV07SD1MK3dbdV07dj14W0pdW0hdO2lmKHYpe3Y9RFt1XTtUfD12fX19ZWxzZXtUPTA7WT1oLTE7Zm9yKHU9MDt1PGg7dSsrLFktLSl7SD1MK2xbdV07aWYoSD49MCYmSDx0KXtKPWUrQ1t1XTtpZihKPj0wKXt2PXhbSl1bSF07diYmKFR8PXY8PFkpfX19fWNvbnN0IGk9TS5yZWFkQml0KFUsVCk7R1tMXT1pfX1yZXR1cm4geH1mdW5jdGlvbiBkZWNvZGVSZWZpbmVtZW50KGUsdCxpLGEscixzLG4sbyxnKXtsZXQgYz1YdFtpXS5jb2Rpbmc7MD09PWkmJihjPWMuY29uY2F0KFtvWzBdXSkpO2NvbnN0IGg9Yy5sZW5ndGgsbD1uZXcgSW50MzJBcnJheShoKSxDPW5ldyBJbnQzMkFycmF5KGgpO2xldCBRO2ZvcihRPTA7UTxoO1ErKyl7bFtRXT1jW1FdLng7Q1tRXT1jW1FdLnl9bGV0IEU9WHRbaV0ucmVmZXJlbmNlOzA9PT1pJiYoRT1FLmNvbmNhdChbb1sxXV0pKTtjb25zdCB1PUUubGVuZ3RoLGQ9bmV3IEludDMyQXJyYXkodSksZj1uZXcgSW50MzJBcnJheSh1KTtmb3IoUT0wO1E8dTtRKyspe2RbUV09RVtRXS54O2ZbUV09RVtRXS55fWNvbnN0IHA9YVswXS5sZW5ndGgsbT1hLmxlbmd0aCx5PVZ0W2ldLHc9W10sYj1nLmRlY29kZXIsRD1nLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR1IiKTtsZXQgUz0wO2ZvcihsZXQgaT0wO2k8dDtpKyspe2lmKG4pe1NePWIucmVhZEJpdChELHkpO2lmKFMpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInByZWRpY3Rpb24gaXMgbm90IHN1cHBvcnRlZCIpfWNvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoZSk7dy5wdXNoKHQpO2ZvcihsZXQgbj0wO248ZTtuKyspe2xldCBvLGcsYz0wO2ZvcihRPTA7UTxoO1ErKyl7bz1pK0NbUV07Zz1uK2xbUV07bzwwfHxnPDB8fGc+PWU/Yzw8PTE6Yz1jPDwxfHdbb11bZ119Zm9yKFE9MDtRPHU7USsrKXtvPWkrZltRXS1zO2c9bitkW1FdLXI7bzwwfHxvPj1tfHxnPDB8fGc+PXA/Yzw8PTE6Yz1jPDwxfGFbb11bZ119Y29uc3QgRT1iLnJlYWRCaXQoRCxjKTt0W25dPUV9fXJldHVybiB3fWZ1bmN0aW9uIGRlY29kZVRleHRSZWdpb24oZSx0LGksYSxyLHMsbixvLGcsYyxoLGwsQyxRLEUsdSxkLGYscCl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IG09W107bGV0IHksdztmb3IoeT0wO3k8YTt5Kyspe3c9bmV3IFVpbnQ4QXJyYXkoaSk7aWYocilmb3IobGV0IGU9MDtlPGk7ZSsrKXdbZV09cjttLnB1c2godyl9Y29uc3QgYj1kLmRlY29kZXIsRD1kLmNvbnRleHRDYWNoZTtsZXQgUz1lPy1RLnRhYmxlRGVsdGFULmRlY29kZShwKTotZGVjb2RlSW50ZWdlcihELCJJQURUIixiKSxrPTA7eT0wO2Zvcig7eTxzOyl7Uys9ZT9RLnRhYmxlRGVsdGFULmRlY29kZShwKTpkZWNvZGVJbnRlZ2VyKEQsIklBRFQiLGIpO2srPWU/US50YWJsZUZpcnN0Uy5kZWNvZGUocCk6ZGVjb2RlSW50ZWdlcihELCJJQUZTIixiKTtsZXQgYT1rO2Zvcig7Oyl7bGV0IHI9MDtuPjEmJihyPWU/cC5yZWFkQml0cyhmKTpkZWNvZGVJbnRlZ2VyKEQsIklBSVQiLGIpKTtjb25zdCBzPW4qUytyLGs9ZT9RLnN5bWJvbElEVGFibGUuZGVjb2RlKHApOmRlY29kZUlBSUQoRCxiLGcpLFI9dCYmKGU/cC5yZWFkQml0KCk6ZGVjb2RlSW50ZWdlcihELCJJQVJJIixiKSk7bGV0IE49b1trXSxHPU5bMF0ubGVuZ3RoLHg9Ti5sZW5ndGg7aWYoUil7Y29uc3QgZT1kZWNvZGVJbnRlZ2VyKEQsIklBUkRXIixiKSx0PWRlY29kZUludGVnZXIoRCwiSUFSREgiLGIpO0crPWU7eCs9dDtOPWRlY29kZVJlZmluZW1lbnQoRyx4LEUsTiwoZT4+MSkrZGVjb2RlSW50ZWdlcihELCJJQVJEWCIsYiksKHQ+PjEpK2RlY29kZUludGVnZXIoRCwiSUFSRFkiLGIpLCExLHUsZCl9bGV0IE09MDtjPzEmbD9NPXgtMTphKz14LTE6bD4xP2ErPUctMTpNPUctMTtjb25zdCBVPXMtKDEmbD8wOngtMSksTD1hLSgyJmw/Ry0xOjApO2xldCBKLEgsdjtpZihjKWZvcihKPTA7Sjx4O0orKyl7dz1tW0wrSl07aWYoIXcpY29udGludWU7dj1OW0pdO2NvbnN0IGU9TWF0aC5taW4oaS1VLEcpO3N3aXRjaChDKXtjYXNlIDA6Zm9yKEg9MDtIPGU7SCsrKXdbVStIXXw9dltIXTticmVhaztjYXNlIDI6Zm9yKEg9MDtIPGU7SCsrKXdbVStIXV49dltIXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke0N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19ZWxzZSBmb3IoSD0wO0g8eDtIKyspe3c9bVtVK0hdO2lmKHcpe3Y9TltIXTtzd2l0Y2goQyl7Y2FzZSAwOmZvcihKPTA7SjxHO0orKyl3W0wrSl18PXZbSl07YnJlYWs7Y2FzZSAyOmZvcihKPTA7SjxHO0orKyl3W0wrSl1ePXZbSl07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtDfSBpcyBub3Qgc3VwcG9ydGVkYCl9fX15Kys7Y29uc3QgWT1lP1EudGFibGVEZWx0YVMuZGVjb2RlKHApOmRlY29kZUludGVnZXIoRCwiSUFEUyIsYik7aWYobnVsbD09PVkpYnJlYWs7YSs9TStZK2h9fXJldHVybiBtfWZ1bmN0aW9uIHJlYWRTZWdtZW50SGVhZGVyKGUsdCl7Y29uc3QgaT17fTtpLm51bWJlcj1yZWFkVWludDMyKGUsdCk7Y29uc3QgYT1lW3QrNF0scj02MyZhO2lmKCFXdFtyXSl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBzZWdtZW50IHR5cGU6ICIrcik7aS50eXBlPXI7aS50eXBlTmFtZT1XdFtyXTtpLmRlZmVycmVkTm9uUmV0YWluPSEhKDEyOCZhKTtjb25zdCBzPSEhKDY0JmEpLG49ZVt0KzVdO2xldCBvPW4+PjUmNztjb25zdCBnPVszMSZuXTtsZXQgYz10KzY7aWYoNz09PW4pe289NTM2ODcwOTExJnJlYWRVaW50MzIoZSxjLTEpO2MrPTM7bGV0IHQ9bys3Pj4zO2dbMF09ZVtjKytdO2Zvcig7LS10PjA7KWcucHVzaChlW2MrK10pfWVsc2UgaWYoNT09PW58fDY9PT1uKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHJlZmVycmVkLXRvIGZsYWdzIik7aS5yZXRhaW5CaXRzPWc7bGV0IGg9NDtpLm51bWJlcjw9MjU2P2g9MTppLm51bWJlcjw9NjU1MzYmJihoPTIpO2NvbnN0IGw9W107bGV0IEMsUTtmb3IoQz0wO0M8bztDKyspe2xldCB0O3Q9MT09PWg/ZVtjXToyPT09aD9yZWFkVWludDE2KGUsYyk6cmVhZFVpbnQzMihlLGMpO2wucHVzaCh0KTtjKz1ofWkucmVmZXJyZWRUbz1sO2lmKHMpe2kucGFnZUFzc29jaWF0aW9uPXJlYWRVaW50MzIoZSxjKTtjKz00fWVsc2UgaS5wYWdlQXNzb2NpYXRpb249ZVtjKytdO2kubGVuZ3RoPXJlYWRVaW50MzIoZSxjKTtjKz00O2lmKDQyOTQ5NjcyOTU9PT1pLmxlbmd0aCl7aWYoMzghPT1yKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHVua25vd24gc2VnbWVudCBsZW5ndGgiKTt7Y29uc3QgdD1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGUsYyksYT0hISgxJmVbYytfdF0pLHI9NixzPW5ldyBVaW50OEFycmF5KHIpO2lmKCFhKXtzWzBdPTI1NTtzWzFdPTE3Mn1zWzJdPXQuaGVpZ2h0Pj4+MjQmMjU1O3NbM109dC5oZWlnaHQ+PjE2JjI1NTtzWzRdPXQuaGVpZ2h0Pj44JjI1NTtzWzVdPTI1NSZ0LmhlaWdodDtmb3IoQz1jLFE9ZS5sZW5ndGg7QzxRO0MrKyl7bGV0IHQ9MDtmb3IoO3Q8ciYmc1t0XT09PWVbQyt0XTspdCsrO2lmKHQ9PT1yKXtpLmxlbmd0aD1DK3I7YnJlYWt9fWlmKDQyOTQ5NjcyOTU9PT1pLmxlbmd0aCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic2VnbWVudCBlbmQgd2FzIG5vdCBmb3VuZCIpfX1pLmhlYWRlckVuZD1jO3JldHVybiBpfWZ1bmN0aW9uIHJlYWRTZWdtZW50cyhlLHQsaSxhKXtjb25zdCByPVtdO2xldCBzPWk7Zm9yKDtzPGE7KXtjb25zdCBpPXJlYWRTZWdtZW50SGVhZGVyKHQscyk7cz1pLmhlYWRlckVuZDtjb25zdCBhPXtoZWFkZXI6aSxkYXRhOnR9O2lmKCFlLnJhbmRvbUFjY2Vzcyl7YS5zdGFydD1zO3MrPWkubGVuZ3RoO2EuZW5kPXN9ci5wdXNoKGEpO2lmKDUxPT09aS50eXBlKWJyZWFrfWlmKGUucmFuZG9tQWNjZXNzKWZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyl7cltlXS5zdGFydD1zO3MrPXJbZV0uaGVhZGVyLmxlbmd0aDtyW2VdLmVuZD1zfXJldHVybiByfWZ1bmN0aW9uIHJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSx0KXtyZXR1cm57d2lkdGg6cmVhZFVpbnQzMihlLHQpLGhlaWdodDpyZWFkVWludDMyKGUsdCs0KSx4OnJlYWRVaW50MzIoZSx0KzgpLHk6cmVhZFVpbnQzMihlLHQrMTIpLGNvbWJpbmF0aW9uT3BlcmF0b3I6NyZlW3QrMTZdfX1jb25zdCBfdD0xNztmdW5jdGlvbiBwcm9jZXNzU2VnbWVudChlLHQpe2NvbnN0IGk9ZS5oZWFkZXIsYT1lLmRhdGEscj1lLmVuZDtsZXQgcyxuLG8sZyxjPWUuc3RhcnQ7c3dpdGNoKGkudHlwZSl7Y2FzZSAwOmNvbnN0IGU9e30sdD1yZWFkVWludDE2KGEsYyk7ZS5odWZmbWFuPSEhKDEmdCk7ZS5yZWZpbmVtZW50PSEhKDImdCk7ZS5odWZmbWFuREhTZWxlY3Rvcj10Pj4yJjM7ZS5odWZmbWFuRFdTZWxlY3Rvcj10Pj40JjM7ZS5iaXRtYXBTaXplU2VsZWN0b3I9dD4+NiYxO2UuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj10Pj43JjE7ZS5iaXRtYXBDb2RpbmdDb250ZXh0VXNlZD0hISgyNTYmdCk7ZS5iaXRtYXBDb2RpbmdDb250ZXh0UmV0YWluZWQ9ISEoNTEyJnQpO2UudGVtcGxhdGU9dD4+MTAmMztlLnJlZmluZW1lbnRUZW1wbGF0ZT10Pj4xMiYxO2MrPTI7aWYoIWUuaHVmZm1hbil7Zz0wPT09ZS50ZW1wbGF0ZT80OjE7bj1bXTtmb3Iobz0wO288ZztvKyspe24ucHVzaCh7eDpyZWFkSW50OChhLGMpLHk6cmVhZEludDgoYSxjKzEpfSk7Yys9Mn1lLmF0PW59aWYoZS5yZWZpbmVtZW50JiYhZS5yZWZpbmVtZW50VGVtcGxhdGUpe249W107Zm9yKG89MDtvPDI7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9ZS5yZWZpbmVtZW50QXQ9bn1lLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzPXJlYWRVaW50MzIoYSxjKTtjKz00O2UubnVtYmVyT2ZOZXdTeW1ib2xzPXJlYWRVaW50MzIoYSxjKTtjKz00O3M9W2UsaS5udW1iZXIsaS5yZWZlcnJlZFRvLGEsYyxyXTticmVhaztjYXNlIDY6Y2FzZSA3OmNvbnN0IGg9e307aC5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oYSxjKTtjKz1fdDtjb25zdCBsPXJlYWRVaW50MTYoYSxjKTtjKz0yO2guaHVmZm1hbj0hISgxJmwpO2gucmVmaW5lbWVudD0hISgyJmwpO2gubG9nU3RyaXBTaXplPWw+PjImMztoLnN0cmlwU2l6ZT0xPDxoLmxvZ1N0cmlwU2l6ZTtoLnJlZmVyZW5jZUNvcm5lcj1sPj40JjM7aC50cmFuc3Bvc2VkPSEhKDY0JmwpO2guY29tYmluYXRpb25PcGVyYXRvcj1sPj43JjM7aC5kZWZhdWx0UGl4ZWxWYWx1ZT1sPj45JjE7aC5kc09mZnNldD1sPDwxNz4+Mjc7aC5yZWZpbmVtZW50VGVtcGxhdGU9bD4+MTUmMTtpZihoLmh1ZmZtYW4pe2NvbnN0IGU9cmVhZFVpbnQxNihhLGMpO2MrPTI7aC5odWZmbWFuRlM9MyZlO2guaHVmZm1hbkRTPWU+PjImMztoLmh1ZmZtYW5EVD1lPj40JjM7aC5odWZmbWFuUmVmaW5lbWVudERXPWU+PjYmMztoLmh1ZmZtYW5SZWZpbmVtZW50REg9ZT4+OCYzO2guaHVmZm1hblJlZmluZW1lbnREWD1lPj4xMCYzO2guaHVmZm1hblJlZmluZW1lbnREWT1lPj4xMiYzO2guaHVmZm1hblJlZmluZW1lbnRTaXplU2VsZWN0b3I9ISEoMTYzODQmZSl9aWYoaC5yZWZpbmVtZW50JiYhaC5yZWZpbmVtZW50VGVtcGxhdGUpe249W107Zm9yKG89MDtvPDI7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9aC5yZWZpbmVtZW50QXQ9bn1oLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzPXJlYWRVaW50MzIoYSxjKTtjKz00O3M9W2gsaS5yZWZlcnJlZFRvLGEsYyxyXTticmVhaztjYXNlIDE2OmNvbnN0IEM9e30sUT1hW2MrK107Qy5tbXI9ISEoMSZRKTtDLnRlbXBsYXRlPVE+PjEmMztDLnBhdHRlcm5XaWR0aD1hW2MrK107Qy5wYXR0ZXJuSGVpZ2h0PWFbYysrXTtDLm1heFBhdHRlcm5JbmRleD1yZWFkVWludDMyKGEsYyk7Yys9NDtzPVtDLGkubnVtYmVyLGEsYyxyXTticmVhaztjYXNlIDIyOmNhc2UgMjM6Y29uc3QgRT17fTtFLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihhLGMpO2MrPV90O2NvbnN0IHU9YVtjKytdO0UubW1yPSEhKDEmdSk7RS50ZW1wbGF0ZT11Pj4xJjM7RS5lbmFibGVTa2lwPSEhKDgmdSk7RS5jb21iaW5hdGlvbk9wZXJhdG9yPXU+PjQmNztFLmRlZmF1bHRQaXhlbFZhbHVlPXU+PjcmMTtFLmdyaWRXaWR0aD1yZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRIZWlnaHQ9cmVhZFVpbnQzMihhLGMpO2MrPTQ7RS5ncmlkT2Zmc2V0WD00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoYSxjKTtjKz00O0UuZ3JpZE9mZnNldFk9NDI5NDk2NzI5NSZyZWFkVWludDMyKGEsYyk7Yys9NDtFLmdyaWRWZWN0b3JYPXJlYWRVaW50MTYoYSxjKTtjKz0yO0UuZ3JpZFZlY3Rvclk9cmVhZFVpbnQxNihhLGMpO2MrPTI7cz1bRSxpLnJlZmVycmVkVG8sYSxjLHJdO2JyZWFrO2Nhc2UgMzg6Y2FzZSAzOTpjb25zdCBkPXt9O2QuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKGEsYyk7Yys9X3Q7Y29uc3QgZj1hW2MrK107ZC5tbXI9ISEoMSZmKTtkLnRlbXBsYXRlPWY+PjEmMztkLnByZWRpY3Rpb249ISEoOCZmKTtpZighZC5tbXIpe2c9MD09PWQudGVtcGxhdGU/NDoxO249W107Zm9yKG89MDtvPGc7bysrKXtuLnB1c2goe3g6cmVhZEludDgoYSxjKSx5OnJlYWRJbnQ4KGEsYysxKX0pO2MrPTJ9ZC5hdD1ufXM9W2QsYSxjLHJdO2JyZWFrO2Nhc2UgNDg6Y29uc3QgcD17d2lkdGg6cmVhZFVpbnQzMihhLGMpLGhlaWdodDpyZWFkVWludDMyKGEsYys0KSxyZXNvbHV0aW9uWDpyZWFkVWludDMyKGEsYys4KSxyZXNvbHV0aW9uWTpyZWFkVWludDMyKGEsYysxMil9OzQyOTQ5NjcyOTU9PT1wLmhlaWdodCYmZGVsZXRlIHAuaGVpZ2h0O2NvbnN0IG09YVtjKzE2XTtyZWFkVWludDE2KGEsYysxNyk7cC5sb3NzbGVzcz0hISgxJm0pO3AucmVmaW5lbWVudD0hISgyJm0pO3AuZGVmYXVsdFBpeGVsVmFsdWU9bT4+MiYxO3AuY29tYmluYXRpb25PcGVyYXRvcj1tPj4zJjM7cC5yZXF1aXJlc0J1ZmZlcj0hISgzMiZtKTtwLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT0hISg2NCZtKTtzPVtwXTticmVhaztjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDYyOmJyZWFrO2Nhc2UgNTM6cz1baS5udW1iZXIsYSxjLHJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYHNlZ21lbnQgdHlwZSAke2kudHlwZU5hbWV9KCR7aS50eXBlfSkgaXMgbm90IGltcGxlbWVudGVkYCl9Y29uc3QgaD0ib24iK2kudHlwZU5hbWU7aCBpbiB0JiZ0W2hdLmFwcGx5KHQscyl9ZnVuY3Rpb24gcHJvY2Vzc1NlZ21lbnRzKGUsdCl7Zm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXByb2Nlc3NTZWdtZW50KGVbaV0sdCl9Y2xhc3MgU2ltcGxlU2VnbWVudFZpc2l0b3J7b25QYWdlSW5mb3JtYXRpb24oZSl7dGhpcy5jdXJyZW50UGFnZUluZm89ZTtjb25zdCB0PWUud2lkdGgrNz4+MyxpPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmUuaGVpZ2h0KTtlLmRlZmF1bHRQaXhlbFZhbHVlJiZpLmZpbGwoMjU1KTt0aGlzLmJ1ZmZlcj1pfWRyYXdCaXRtYXAoZSx0KXtjb25zdCBpPXRoaXMuY3VycmVudFBhZ2VJbmZvLGE9ZS53aWR0aCxyPWUuaGVpZ2h0LHM9aS53aWR0aCs3Pj4zLG49aS5jb21iaW5hdGlvbk9wZXJhdG9yT3ZlcnJpZGU/ZS5jb21iaW5hdGlvbk9wZXJhdG9yOmkuY29tYmluYXRpb25PcGVyYXRvcixvPXRoaXMuYnVmZmVyLGc9MTI4Pj4oNyZlLngpO2xldCBjLGgsbCxDLFE9ZS55KnMrKGUueD4+Myk7c3dpdGNoKG4pe2Nhc2UgMDpmb3IoYz0wO2M8cjtjKyspe2w9ZztDPVE7Zm9yKGg9MDtoPGE7aCsrKXt0W2NdW2hdJiYob1tDXXw9bCk7bD4+PTE7aWYoIWwpe2w9MTI4O0MrK319USs9c31icmVhaztjYXNlIDI6Zm9yKGM9MDtjPHI7YysrKXtsPWc7Qz1RO2ZvcihoPTA7aDxhO2grKyl7dFtjXVtoXSYmKG9bQ11ePWwpO2w+Pj0xO2lmKCFsKXtsPTEyODtDKyt9fVErPXN9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgJHtufSBpcyBub3Qgc3VwcG9ydGVkYCl9fW9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbihlLHQsaSxhKXtjb25zdCByPWUuaW5mbyxzPW5ldyBEZWNvZGluZ0NvbnRleHQodCxpLGEpLG49ZGVjb2RlQml0bWFwKGUubW1yLHIud2lkdGgsci5oZWlnaHQsZS50ZW1wbGF0ZSxlLnByZWRpY3Rpb24sbnVsbCxlLmF0LHMpO3RoaXMuZHJhd0JpdG1hcChyLG4pfW9uSW1tZWRpYXRlTG9zc2xlc3NHZW5lcmljUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUdlbmVyaWNSZWdpb24oLi4uYXJndW1lbnRzKX1vblN5bWJvbERpY3Rpb25hcnkoZSx0LGksYSxyLHMpe2xldCBuLG87aWYoZS5odWZmbWFuKXtuPWZ1bmN0aW9uIGdldFN5bWJvbERpY3Rpb25hcnlIdWZmbWFuVGFibGVzKGUsdCxpKXtsZXQgYSxyLHMsbixvPTA7c3dpdGNoKGUuaHVmZm1hbkRIU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6YT1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRIU2VsZWN0b3IrNCk7YnJlYWs7Y2FzZSAzOmE9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTtvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERIIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRXU2VsZWN0b3Ipe2Nhc2UgMDpjYXNlIDE6cj1nZXRTdGFuZGFyZFRhYmxlKGUuaHVmZm1hbkRXU2VsZWN0b3IrMik7YnJlYWs7Y2FzZSAzOnI9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTtvKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERXIHNlbGVjdG9yIil9aWYoZS5iaXRtYXBTaXplU2VsZWN0b3Ipe3M9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTtvKyt9ZWxzZSBzPWdldFN0YW5kYXJkVGFibGUoMSk7bj1lLmFnZ3JlZ2F0aW9uSW5zdGFuY2VzU2VsZWN0b3I/Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKG8sdCxpKTpnZXRTdGFuZGFyZFRhYmxlKDEpO3JldHVybnt0YWJsZURlbHRhSGVpZ2h0OmEsdGFibGVEZWx0YVdpZHRoOnIsdGFibGVCaXRtYXBTaXplOnMsdGFibGVBZ2dyZWdhdGVJbnN0YW5jZXM6bn19KGUsaSx0aGlzLmN1c3RvbVRhYmxlcyk7bz1uZXcgUmVhZGVyKGEscixzKX1sZXQgZz10aGlzLnN5bWJvbHM7Z3x8KHRoaXMuc3ltYm9scz1nPXt9KTtjb25zdCBjPVtdO2Zvcihjb25zdCBlIG9mIGkpe2NvbnN0IHQ9Z1tlXTt0JiZjLnB1c2goLi4udCl9Y29uc3QgaD1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixzKTtnW3RdPWZ1bmN0aW9uIGRlY29kZVN5bWJvbERpY3Rpb25hcnkoZSx0LGksYSxyLHMsbixvLGcsYyxoLGwpe2lmKGUmJnQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInN5bWJvbCByZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7Y29uc3QgQz1bXTtsZXQgUT0wLEU9bG9nMihpLmxlbmd0aCthKTtjb25zdCB1PWguZGVjb2RlcixkPWguY29udGV4dENhY2hlO2xldCBmLHA7aWYoZSl7Zj1nZXRTdGFuZGFyZFRhYmxlKDEpO3A9W107RT1NYXRoLm1heChFLDEpfWZvcig7Qy5sZW5ndGg8YTspe1ErPWU/cy50YWJsZURlbHRhSGVpZ2h0LmRlY29kZShsKTpkZWNvZGVJbnRlZ2VyKGQsIklBREgiLHUpO2xldCBhPTAscj0wO2NvbnN0IGY9ZT9wLmxlbmd0aDowO2Zvcig7Oyl7Y29uc3QgZj1lP3MudGFibGVEZWx0YVdpZHRoLmRlY29kZShsKTpkZWNvZGVJbnRlZ2VyKGQsIklBRFciLHUpO2lmKG51bGw9PT1mKWJyZWFrO2ErPWY7cis9YTtsZXQgbTtpZih0KXtjb25zdCByPWRlY29kZUludGVnZXIoZCwiSUFBSSIsdSk7aWYocj4xKW09ZGVjb2RlVGV4dFJlZ2lvbihlLHQsYSxRLDAsciwxLGkuY29uY2F0KEMpLEUsMCwwLDEsMCxzLGcsYyxoLDAsbCk7ZWxzZXtjb25zdCBlPWRlY29kZUlBSUQoZCx1LEUpLHQ9ZGVjb2RlSW50ZWdlcihkLCJJQVJEWCIsdSkscj1kZWNvZGVJbnRlZ2VyKGQsIklBUkRZIix1KTttPWRlY29kZVJlZmluZW1lbnQoYSxRLGcsZTxpLmxlbmd0aD9pW2VdOkNbZS1pLmxlbmd0aF0sdCxyLCExLGMsaCl9Qy5wdXNoKG0pfWVsc2UgaWYoZSlwLnB1c2goYSk7ZWxzZXttPWRlY29kZUJpdG1hcCghMSxhLFEsbiwhMSxudWxsLG8saCk7Qy5wdXNoKG0pfX1pZihlJiYhdCl7Y29uc3QgZT1zLnRhYmxlQml0bWFwU2l6ZS5kZWNvZGUobCk7bC5ieXRlQWxpZ24oKTtsZXQgdDtpZigwPT09ZSl0PXJlYWRVbmNvbXByZXNzZWRCaXRtYXAobCxyLFEpO2Vsc2V7Y29uc3QgaT1sLmVuZCxhPWwucG9zaXRpb24rZTtsLmVuZD1hO3Q9ZGVjb2RlTU1SQml0bWFwKGwscixRLCExKTtsLmVuZD1pO2wucG9zaXRpb249YX1jb25zdCBpPXAubGVuZ3RoO2lmKGY9PT1pLTEpQy5wdXNoKHQpO2Vsc2V7bGV0IGUsYSxyLHMsbixvPTA7Zm9yKGU9ZjtlPGk7ZSsrKXtzPXBbZV07cj1vK3M7bj1bXTtmb3IoYT0wO2E8UTthKyspbi5wdXNoKHRbYV0uc3ViYXJyYXkobyxyKSk7Qy5wdXNoKG4pO289cn19fX1jb25zdCBtPVtdLHk9W107bGV0IHcsYixEPSExO2NvbnN0IFM9aS5sZW5ndGgrYTtmb3IoO3kubGVuZ3RoPFM7KXtsZXQgdD1lP2YuZGVjb2RlKGwpOmRlY29kZUludGVnZXIoZCwiSUFFWCIsdSk7Zm9yKDt0LS07KXkucHVzaChEKTtEPSFEfWZvcih3PTAsYj1pLmxlbmd0aDt3PGI7dysrKXlbd10mJm0ucHVzaChpW3ddKTtmb3IobGV0IGU9MDtlPGE7dysrLGUrKyl5W3ddJiZtLnB1c2goQ1tlXSk7cmV0dXJuIG19KGUuaHVmZm1hbixlLnJlZmluZW1lbnQsYyxlLm51bWJlck9mTmV3U3ltYm9scyxlLm51bWJlck9mRXhwb3J0ZWRTeW1ib2xzLG4sZS50ZW1wbGF0ZSxlLmF0LGUucmVmaW5lbWVudFRlbXBsYXRlLGUucmVmaW5lbWVudEF0LGgsbyl9b25JbW1lZGlhdGVUZXh0UmVnaW9uKGUsdCxpLGEscil7Y29uc3Qgcz1lLmluZm87bGV0IG4sbztjb25zdCBnPXRoaXMuc3ltYm9scyxjPVtdO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9Z1tlXTt0JiZjLnB1c2goLi4udCl9Y29uc3QgaD1sb2cyKGMubGVuZ3RoKTtpZihlLmh1ZmZtYW4pe289bmV3IFJlYWRlcihpLGEscik7bj1mdW5jdGlvbiBnZXRUZXh0UmVnaW9uSHVmZm1hblRhYmxlcyhlLHQsaSxhLHIpe2NvbnN0IHM9W107Zm9yKGxldCBlPTA7ZTw9MzQ7ZSsrKXtjb25zdCB0PXIucmVhZEJpdHMoNCk7cy5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKX1jb25zdCBuPW5ldyBIdWZmbWFuVGFibGUocywhMSk7cy5sZW5ndGg9MDtmb3IobGV0IGU9MDtlPGE7KXtjb25zdCB0PW4uZGVjb2RlKHIpO2lmKHQ+PTMyKXtsZXQgaSxhLG47c3dpdGNoKHQpe2Nhc2UgMzI6aWYoMD09PWUpdGhyb3cgbmV3IEpiaWcyRXJyb3IoIm5vIHByZXZpb3VzIHZhbHVlIGluIHN5bWJvbCBJRCB0YWJsZSIpO2E9ci5yZWFkQml0cygyKSszO2k9c1tlLTFdLnByZWZpeExlbmd0aDticmVhaztjYXNlIDMzOmE9ci5yZWFkQml0cygzKSszO2k9MDticmVhaztjYXNlIDM0OmE9ci5yZWFkQml0cyg3KSsxMTtpPTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBjb2RlIGxlbmd0aCBpbiBzeW1ib2wgSUQgdGFibGUiKX1mb3Iobj0wO248YTtuKyspe3MucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsaSwwLDBdKSk7ZSsrfX1lbHNle3MucHVzaChuZXcgSHVmZm1hbkxpbmUoW2UsdCwwLDBdKSk7ZSsrfX1yLmJ5dGVBbGlnbigpO2NvbnN0IG89bmV3IEh1ZmZtYW5UYWJsZShzLCExKTtsZXQgZyxjLGgsbD0wO3N3aXRjaChlLmh1ZmZtYW5GUyl7Y2FzZSAwOmNhc2UgMTpnPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRlMrNik7YnJlYWs7Y2FzZSAzOmc9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKGwsdCxpKTtsKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIEZTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRTKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpjPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFMrOCk7YnJlYWs7Y2FzZSAzOmM9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKGwsdCxpKTtsKys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERTIHNlbGVjdG9yIil9c3dpdGNoKGUuaHVmZm1hbkRUKXtjYXNlIDA6Y2FzZSAxOmNhc2UgMjpoPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFQrMTEpO2JyZWFrO2Nhc2UgMzpoPWdldEN1c3RvbUh1ZmZtYW5UYWJsZShsLHQsaSk7bCsrO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBEVCBzZWxlY3RvciIpfWlmKGUucmVmaW5lbWVudCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO3JldHVybntzeW1ib2xJRFRhYmxlOm8sdGFibGVGaXJzdFM6Zyx0YWJsZURlbHRhUzpjLHRhYmxlRGVsdGFUOmh9fShlLHQsdGhpcy5jdXN0b21UYWJsZXMsYy5sZW5ndGgsbyl9Y29uc3QgbD1uZXcgRGVjb2RpbmdDb250ZXh0KGksYSxyKSxDPWRlY29kZVRleHRSZWdpb24oZS5odWZmbWFuLGUucmVmaW5lbWVudCxzLndpZHRoLHMuaGVpZ2h0LGUuZGVmYXVsdFBpeGVsVmFsdWUsZS5udW1iZXJPZlN5bWJvbEluc3RhbmNlcyxlLnN0cmlwU2l6ZSxjLGgsZS50cmFuc3Bvc2VkLGUuZHNPZmZzZXQsZS5yZWZlcmVuY2VDb3JuZXIsZS5jb21iaW5hdGlvbk9wZXJhdG9yLG4sZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsbCxlLmxvZ1N0cmlwU2l6ZSxvKTt0aGlzLmRyYXdCaXRtYXAocyxDKX1vbkltbWVkaWF0ZUxvc3NsZXNzVGV4dFJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVUZXh0UmVnaW9uKC4uLmFyZ3VtZW50cyl9b25QYXR0ZXJuRGljdGlvbmFyeShlLHQsaSxhLHIpe2xldCBzPXRoaXMucGF0dGVybnM7c3x8KHRoaXMucGF0dGVybnM9cz17fSk7Y29uc3Qgbj1uZXcgRGVjb2RpbmdDb250ZXh0KGksYSxyKTtzW3RdPWZ1bmN0aW9uIGRlY29kZVBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxpLGEscixzKXtjb25zdCBuPVtdO2lmKCFlKXtuLnB1c2goe3g6LXQseTowfSk7MD09PXImJm4ucHVzaCh7eDotMyx5Oi0xfSx7eDoyLHk6LTJ9LHt4Oi0yLHk6LTJ9KX1jb25zdCBvPWRlY29kZUJpdG1hcChlLChhKzEpKnQsaSxyLCExLG51bGwsbixzKSxnPVtdO2ZvcihsZXQgZT0wO2U8PWE7ZSsrKXtjb25zdCBhPVtdLHI9dCplLHM9cit0O2ZvcihsZXQgZT0wO2U8aTtlKyspYS5wdXNoKG9bZV0uc3ViYXJyYXkocixzKSk7Zy5wdXNoKGEpfXJldHVybiBnfShlLm1tcixlLnBhdHRlcm5XaWR0aCxlLnBhdHRlcm5IZWlnaHQsZS5tYXhQYXR0ZXJuSW5kZXgsZS50ZW1wbGF0ZSxuKX1vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKGUsdCxpLGEscil7Y29uc3Qgcz10aGlzLnBhdHRlcm5zW3RbMF1dLG49ZS5pbmZvLG89bmV3IERlY29kaW5nQ29udGV4dChpLGEsciksZz1mdW5jdGlvbiBkZWNvZGVIYWxmdG9uZVJlZ2lvbihlLHQsaSxhLHIscyxuLG8sZyxjLGgsbCxDLFEsRSl7aWYobil0aHJvdyBuZXcgSmJpZzJFcnJvcigic2tpcCBpcyBub3Qgc3VwcG9ydGVkIik7aWYoMCE9PW8pdGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICIke299IiBpcyBub3Qgc3VwcG9ydGVkIGluIGhhbGZ0b25lIHJlZ2lvbmApO2NvbnN0IHU9W107bGV0IGQsZixwO2ZvcihkPTA7ZDxyO2QrKyl7cD1uZXcgVWludDhBcnJheShhKTtpZihzKWZvcihmPTA7ZjxhO2YrKylwW2ZdPXM7dS5wdXNoKHApfWNvbnN0IG09dC5sZW5ndGgseT10WzBdLHc9eVswXS5sZW5ndGgsYj15Lmxlbmd0aCxEPWxvZzIobSksUz1bXTtpZighZSl7Uy5wdXNoKHt4Omk8PTE/MzoyLHk6LTF9KTswPT09aSYmUy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IGs9W107bGV0IFIsTixHLHgsTSxVLEwsSixILHYsWTtlJiYoUj1uZXcgUmVhZGVyKEUuZGF0YSxFLnN0YXJ0LEUuZW5kKSk7Zm9yKGQ9RC0xO2Q+PTA7ZC0tKXtOPWU/ZGVjb2RlTU1SQml0bWFwKFIsZyxjLCEwKTpkZWNvZGVCaXRtYXAoITEsZyxjLGksITEsbnVsbCxTLEUpO2tbZF09Tn1mb3IoRz0wO0c8YztHKyspZm9yKHg9MDt4PGc7eCsrKXtNPTA7VT0wO2ZvcihmPUQtMTtmPj0wO2YtLSl7TV49a1tmXVtHXVt4XTtVfD1NPDxmfUw9dFtVXTtKPWgrRypRK3gqQz4+ODtIPWwrRypDLXgqUT4+ODtpZihKPj0wJiZKK3c8PWEmJkg+PTAmJkgrYjw9cilmb3IoZD0wO2Q8YjtkKyspe1k9dVtIK2RdO3Y9TFtkXTtmb3IoZj0wO2Y8dztmKyspWVtKK2ZdfD12W2ZdfWVsc2V7bGV0IGUsdDtmb3IoZD0wO2Q8YjtkKyspe3Q9SCtkO2lmKCEodDwwfHx0Pj1yKSl7WT11W3RdO3Y9TFtkXTtmb3IoZj0wO2Y8dztmKyspe2U9SitmO2U+PTAmJmU8YSYmKFlbZV18PXZbZl0pfX19fX1yZXR1cm4gdX0oZS5tbXIscyxlLnRlbXBsYXRlLG4ud2lkdGgsbi5oZWlnaHQsZS5kZWZhdWx0UGl4ZWxWYWx1ZSxlLmVuYWJsZVNraXAsZS5jb21iaW5hdGlvbk9wZXJhdG9yLGUuZ3JpZFdpZHRoLGUuZ3JpZEhlaWdodCxlLmdyaWRPZmZzZXRYLGUuZ3JpZE9mZnNldFksZS5ncmlkVmVjdG9yWCxlLmdyaWRWZWN0b3JZLG8pO3RoaXMuZHJhd0JpdG1hcChuLGcpfW9uSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbigpe3RoaXMub25JbW1lZGlhdGVIYWxmdG9uZVJlZ2lvbiguLi5hcmd1bWVudHMpfW9uVGFibGVzKGUsdCxpLGEpe2xldCByPXRoaXMuY3VzdG9tVGFibGVzO3J8fCh0aGlzLmN1c3RvbVRhYmxlcz1yPXt9KTtyW2VdPWZ1bmN0aW9uIGRlY29kZVRhYmxlc1NlZ21lbnQoZSx0LGkpe2NvbnN0IGE9ZVt0XSxyPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihlLHQrMSkscz00Mjk0OTY3Mjk1JnJlYWRVaW50MzIoZSx0KzUpLG49bmV3IFJlYWRlcihlLHQrOSxpKSxvPTErKGE+PjEmNyksZz0xKyhhPj40JjcpLGM9W107bGV0IGgsbCxDPXI7ZG97aD1uLnJlYWRCaXRzKG8pO2w9bi5yZWFkQml0cyhnKTtjLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtDLGgsbCwwXSkpO0MrPTE8PGx9d2hpbGUoQzxzKTtoPW4ucmVhZEJpdHMobyk7Yy5wdXNoKG5ldyBIdWZmbWFuTGluZShbci0xLGgsMzIsMCwibG93ZXIiXSkpO2g9bi5yZWFkQml0cyhvKTtjLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtzLGgsMzIsMF0pKTtpZigxJmEpe2g9bi5yZWFkQml0cyhvKTtjLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtoLDBdKSl9cmV0dXJuIG5ldyBIdWZmbWFuVGFibGUoYywhMSl9KHQsaSxhKX19Y2xhc3MgSHVmZm1hbkxpbmV7Y29uc3RydWN0b3IoZSl7aWYoMj09PWUubGVuZ3RoKXt0aGlzLmlzT09CPSEwO3RoaXMucmFuZ2VMb3c9MDt0aGlzLnByZWZpeExlbmd0aD1lWzBdO3RoaXMucmFuZ2VMZW5ndGg9MDt0aGlzLnByZWZpeENvZGU9ZVsxXTt0aGlzLmlzTG93ZXJSYW5nZT0hMX1lbHNle3RoaXMuaXNPT0I9ITE7dGhpcy5yYW5nZUxvdz1lWzBdO3RoaXMucHJlZml4TGVuZ3RoPWVbMV07dGhpcy5yYW5nZUxlbmd0aD1lWzJdO3RoaXMucHJlZml4Q29kZT1lWzNdO3RoaXMuaXNMb3dlclJhbmdlPSJsb3dlciI9PT1lWzRdfX19Y2xhc3MgSHVmZm1hblRyZWVOb2Rle2NvbnN0cnVjdG9yKGUpe3RoaXMuY2hpbGRyZW49W107aWYoZSl7dGhpcy5pc0xlYWY9ITA7dGhpcy5yYW5nZUxlbmd0aD1lLnJhbmdlTGVuZ3RoO3RoaXMucmFuZ2VMb3c9ZS5yYW5nZUxvdzt0aGlzLmlzTG93ZXJSYW5nZT1lLmlzTG93ZXJSYW5nZTt0aGlzLmlzT09CPWUuaXNPT0J9ZWxzZSB0aGlzLmlzTGVhZj0hMX1idWlsZFRyZWUoZSx0KXtjb25zdCBpPWUucHJlZml4Q29kZT4+dCYxO2lmKHQ8PTApdGhpcy5jaGlsZHJlbltpXT1uZXcgSHVmZm1hblRyZWVOb2RlKGUpO2Vsc2V7bGV0IGE9dGhpcy5jaGlsZHJlbltpXTthfHwodGhpcy5jaGlsZHJlbltpXT1hPW5ldyBIdWZmbWFuVHJlZU5vZGUobnVsbCkpO2EuYnVpbGRUcmVlKGUsdC0xKX19ZGVjb2RlTm9kZShlKXtpZih0aGlzLmlzTGVhZil7aWYodGhpcy5pc09PQilyZXR1cm4gbnVsbDtjb25zdCB0PWUucmVhZEJpdHModGhpcy5yYW5nZUxlbmd0aCk7cmV0dXJuIHRoaXMucmFuZ2VMb3crKHRoaXMuaXNMb3dlclJhbmdlPy10OnQpfWNvbnN0IHQ9dGhpcy5jaGlsZHJlbltlLnJlYWRCaXQoKV07aWYoIXQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgSHVmZm1hbiBkYXRhIik7cmV0dXJuIHQuZGVjb2RlTm9kZShlKX19Y2xhc3MgSHVmZm1hblRhYmxle2NvbnN0cnVjdG9yKGUsdCl7dHx8dGhpcy5hc3NpZ25QcmVmaXhDb2RlcyhlKTt0aGlzLnJvb3ROb2RlPW5ldyBIdWZmbWFuVHJlZU5vZGUobnVsbCk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPWVbdF07aS5wcmVmaXhMZW5ndGg+MCYmdGhpcy5yb290Tm9kZS5idWlsZFRyZWUoaSxpLnByZWZpeExlbmd0aC0xKX19ZGVjb2RlKGUpe3JldHVybiB0aGlzLnJvb3ROb2RlLmRlY29kZU5vZGUoZSl9YXNzaWduUHJlZml4Q29kZXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgaT0wO2ZvcihsZXQgYT0wO2E8dDthKyspaT1NYXRoLm1heChpLGVbYV0ucHJlZml4TGVuZ3RoKTtjb25zdCBhPW5ldyBVaW50MzJBcnJheShpKzEpO2ZvcihsZXQgaT0wO2k8dDtpKyspYVtlW2ldLnByZWZpeExlbmd0aF0rKztsZXQgcixzLG4sbz0xLGc9MDthWzBdPTA7Zm9yKDtvPD1pOyl7Zz1nK2Fbby0xXTw8MTtyPWc7cz0wO2Zvcig7czx0Oyl7bj1lW3NdO2lmKG4ucHJlZml4TGVuZ3RoPT09byl7bi5wcmVmaXhDb2RlPXI7cisrfXMrK31vKyt9fX1jb25zdCB6dD17fTtmdW5jdGlvbiBnZXRTdGFuZGFyZFRhYmxlKGUpe2xldCB0LGk9enRbZV07aWYoaSlyZXR1cm4gaTtzd2l0Y2goZSl7Y2FzZSAxOnQ9W1swLDEsNCwwXSxbMTYsMiw4LDJdLFsyNzIsMywxNiw2XSxbNjU4MDgsMywzMiw3XV07YnJlYWs7Y2FzZSAyOnQ9W1swLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWzc1LDYsMzIsNjJdLFs2LDYzXV07YnJlYWs7Y2FzZSAzOnQ9W1stMjU2LDgsOCwyNTRdLFswLDEsMCwwXSxbMSwyLDAsMl0sWzIsMywwLDZdLFszLDQsMywxNF0sWzExLDUsNiwzMF0sWy0yNTcsOCwzMiwyNTUsImxvd2VyIl0sWzc1LDcsMzIsMTI2XSxbNiw2Ml1dO2JyZWFrO2Nhc2UgNDp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMCw2XSxbNCw0LDMsMTRdLFsxMiw1LDYsMzBdLFs3Niw1LDMyLDMxXV07YnJlYWs7Y2FzZSA1OnQ9W1stMjU1LDcsOCwxMjZdLFsxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWy0yNTYsNywzMiwxMjcsImxvd2VyIl0sWzc2LDYsMzIsNjJdXTticmVhaztjYXNlIDY6dD1bWy0yMDQ4LDUsMTAsMjhdLFstMTAyNCw0LDksOF0sWy01MTIsNCw4LDldLFstMjU2LDQsNywxMF0sWy0xMjgsNSw2LDI5XSxbLTY0LDUsNSwzMF0sWy0zMiw0LDUsMTFdLFswLDIsNywwXSxbMTI4LDMsNywyXSxbMjU2LDMsOCwzXSxbNTEyLDQsOSwxMl0sWzEwMjQsNCwxMCwxM10sWy0yMDQ5LDYsMzIsNjIsImxvd2VyIl0sWzIwNDgsNiwzMiw2M11dO2JyZWFrO2Nhc2UgNzp0PVtbLTEwMjQsNCw5LDhdLFstNTEyLDMsOCwwXSxbLTI1Niw0LDcsOV0sWy0xMjgsNSw2LDI2XSxbLTY0LDUsNSwyN10sWy0zMiw0LDUsMTBdLFswLDQsNSwxMV0sWzMyLDUsNSwyOF0sWzY0LDUsNiwyOV0sWzEyOCw0LDcsMTJdLFsyNTYsMyw4LDFdLFs1MTIsMyw5LDJdLFsxMDI0LDMsMTAsM10sWy0xMDI1LDUsMzIsMzAsImxvd2VyIl0sWzIwNDgsNSwzMiwzMV1dO2JyZWFrO2Nhc2UgODp0PVtbLTE1LDgsMywyNTJdLFstNyw5LDEsNTA4XSxbLTUsOCwxLDI1M10sWy0zLDksMCw1MDldLFstMiw3LDAsMTI0XSxbLTEsNCwwLDEwXSxbMCwyLDEsMF0sWzIsNSwwLDI2XSxbMyw2LDAsNThdLFs0LDMsNCw0XSxbMjAsNiwxLDU5XSxbMjIsNCw0LDExXSxbMzgsNCw1LDEyXSxbNzAsNSw2LDI3XSxbMTM0LDUsNywyOF0sWzI2Miw2LDcsNjBdLFszOTAsNyw4LDEyNV0sWzY0Niw2LDEwLDYxXSxbLTE2LDksMzIsNTEwLCJsb3dlciJdLFsxNjcwLDksMzIsNTExXSxbMiwxXV07YnJlYWs7Y2FzZSA5OnQ9W1stMzEsOCw0LDI1Ml0sWy0xNSw5LDIsNTA4XSxbLTExLDgsMiwyNTNdLFstNyw5LDEsNTA5XSxbLTUsNywxLDEyNF0sWy0zLDQsMSwxMF0sWy0xLDMsMSwyXSxbMSwzLDEsM10sWzMsNSwxLDI2XSxbNSw2LDEsNThdLFs3LDMsNSw0XSxbMzksNiwyLDU5XSxbNDMsNCw1LDExXSxbNzUsNCw2LDEyXSxbMTM5LDUsNywyN10sWzI2Nyw1LDgsMjhdLFs1MjMsNiw4LDYwXSxbNzc5LDcsOSwxMjVdLFsxMjkxLDYsMTEsNjFdLFstMzIsOSwzMiw1MTAsImxvd2VyIl0sWzMzMzksOSwzMiw1MTFdLFsyLDBdXTticmVhaztjYXNlIDEwOnQ9W1stMjEsNyw0LDEyMl0sWy01LDgsMCwyNTJdLFstNCw3LDAsMTIzXSxbLTMsNSwwLDI0XSxbLTIsMiwyLDBdLFsyLDUsMCwyNV0sWzMsNiwwLDU0XSxbNCw3LDAsMTI0XSxbNSw4LDAsMjUzXSxbNiwyLDYsMV0sWzcwLDUsNSwyNl0sWzEwMiw2LDUsNTVdLFsxMzQsNiw2LDU2XSxbMTk4LDYsNyw1N10sWzMyNiw2LDgsNThdLFs1ODIsNiw5LDU5XSxbMTA5NCw2LDEwLDYwXSxbMjExOCw3LDExLDEyNV0sWy0yMiw4LDMyLDI1NCwibG93ZXIiXSxbNDE2Niw4LDMyLDI1NV0sWzIsMl1dO2JyZWFrO2Nhc2UgMTE6dD1bWzEsMSwwLDBdLFsyLDIsMSwyXSxbNCw0LDAsMTJdLFs1LDQsMSwxM10sWzcsNSwxLDI4XSxbOSw1LDIsMjldLFsxMyw2LDIsNjBdLFsxNyw3LDIsMTIyXSxbMjEsNywzLDEyM10sWzI5LDcsNCwxMjRdLFs0NSw3LDUsMTI1XSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTI6dD1bWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDEsNl0sWzUsNSwwLDI4XSxbNiw1LDEsMjldLFs4LDYsMSw2MF0sWzEwLDcsMCwxMjJdLFsxMSw3LDEsMTIzXSxbMTMsNywyLDEyNF0sWzE3LDcsMywxMjVdLFsyNSw3LDQsMTI2XSxbNDEsOCw1LDI1NF0sWzczLDgsMzIsMjU1XV07YnJlYWs7Y2FzZSAxMzp0PVtbMSwxLDAsMF0sWzIsMywwLDRdLFszLDQsMCwxMl0sWzQsNSwwLDI4XSxbNSw0LDEsMTNdLFs3LDMsMyw1XSxbMTUsNiwxLDU4XSxbMTcsNiwyLDU5XSxbMjEsNiwzLDYwXSxbMjksNiw0LDYxXSxbNDUsNiw1LDYyXSxbNzcsNyw2LDEyNl0sWzE0MSw3LDMyLDEyN11dO2JyZWFrO2Nhc2UgMTQ6dD1bWy0yLDMsMCw0XSxbLTEsMywwLDVdLFswLDEsMCwwXSxbMSwzLDAsNl0sWzIsMywwLDddXTticmVhaztjYXNlIDE1OnQ9W1stMjQsNyw0LDEyNF0sWy04LDYsMiw2MF0sWy00LDUsMSwyOF0sWy0yLDQsMCwxMl0sWy0xLDMsMCw0XSxbMCwxLDAsMF0sWzEsMywwLDVdLFsyLDQsMCwxM10sWzMsNSwxLDI5XSxbNSw2LDIsNjFdLFs5LDcsNCwxMjVdLFstMjUsNywzMiwxMjYsImxvd2VyIl0sWzI1LDcsMzIsMTI3XV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc3RhbmRhcmQgdGFibGUgQi4ke2V9IGRvZXMgbm90IGV4aXN0YCl9Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXRbZV09bmV3IEh1ZmZtYW5MaW5lKHRbZV0pO2k9bmV3IEh1ZmZtYW5UYWJsZSh0LCEwKTt6dFtlXT1pO3JldHVybiBpfWNsYXNzIFJlYWRlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWk7dGhpcy5wb3NpdGlvbj10O3RoaXMuc2hpZnQ9LTE7dGhpcy5jdXJyZW50Qnl0ZT0wfXJlYWRCaXQoKXtpZih0aGlzLnNoaWZ0PDApe2lmKHRoaXMucG9zaXRpb24+PXRoaXMuZW5kKXRocm93IG5ldyBKYmlnMkVycm9yKCJlbmQgb2YgZGF0YSB3aGlsZSByZWFkaW5nIGJpdCIpO3RoaXMuY3VycmVudEJ5dGU9dGhpcy5kYXRhW3RoaXMucG9zaXRpb24rK107dGhpcy5zaGlmdD03fWNvbnN0IGU9dGhpcy5jdXJyZW50Qnl0ZT4+dGhpcy5zaGlmdCYxO3RoaXMuc2hpZnQtLTtyZXR1cm4gZX1yZWFkQml0cyhlKXtsZXQgdCxpPTA7Zm9yKHQ9ZS0xO3Q+PTA7dC0tKWl8PXRoaXMucmVhZEJpdCgpPDx0O3JldHVybiBpfWJ5dGVBbGlnbigpe3RoaXMuc2hpZnQ9LTF9bmV4dCgpe3JldHVybiB0aGlzLnBvc2l0aW9uPj10aGlzLmVuZD8tMTp0aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXX19ZnVuY3Rpb24gZ2V0Q3VzdG9tSHVmZm1hblRhYmxlKGUsdCxpKXtsZXQgYT0wO2ZvcihsZXQgcj0wLHM9dC5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz1pW3Rbcl1dO2lmKHMpe2lmKGU9PT1hKXJldHVybiBzO2ErK319dGhyb3cgbmV3IEpiaWcyRXJyb3IoImNhbid0IGZpbmQgY3VzdG9tIEh1ZmZtYW4gdGFibGUiKX1mdW5jdGlvbiByZWFkVW5jb21wcmVzc2VkQml0bWFwKGUsdCxpKXtjb25zdCBhPVtdO2ZvcihsZXQgcj0wO3I8aTtyKyspe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7YS5wdXNoKGkpO2ZvcihsZXQgYT0wO2E8dDthKyspaVthXT1lLnJlYWRCaXQoKTtlLmJ5dGVBbGlnbigpfXJldHVybiBhfWZ1bmN0aW9uIGRlY29kZU1NUkJpdG1hcChlLHQsaSxhKXtjb25zdCByPW5ldyBDQ0lUVEZheERlY29kZXIoZSx7SzotMSxDb2x1bW5zOnQsUm93czppLEJsYWNrSXMxOiEwLEVuZE9mQmxvY2s6YX0pLHM9W107bGV0IG4sbz0hMTtmb3IobGV0IGU9MDtlPGk7ZSsrKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQpO3MucHVzaChlKTtsZXQgaT0tMTtmb3IobGV0IGE9MDthPHQ7YSsrKXtpZihpPDApe249ci5yZWFkTmV4dENoYXIoKTtpZigtMT09PW4pe249MDtvPSEwfWk9N31lW2FdPW4+PmkmMTtpLS19fWlmKGEmJiFvKXtjb25zdCBlPTU7Zm9yKGxldCB0PTA7dDxlJiYtMSE9PXIucmVhZE5leHRDaGFyKCk7dCsrKTt9cmV0dXJuIHN9Y2xhc3MgSmJpZzJJbWFnZXtwYXJzZUNodW5rcyhlKXtyZXR1cm4gZnVuY3Rpb24gcGFyc2VKYmlnMkNodW5rcyhlKXtjb25zdCB0PW5ldyBTaW1wbGVTZWdtZW50VmlzaXRvcjtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKyspe2NvbnN0IGE9ZVtpXTtwcm9jZXNzU2VnbWVudHMocmVhZFNlZ21lbnRzKHt9LGEuZGF0YSxhLnN0YXJ0LGEuZW5kKSx0KX1yZXR1cm4gdC5idWZmZXJ9KGUpfXBhcnNlKGUpe3Rocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVudGVkOiBKYmlnMkltYWdlLnBhcnNlIil9fWNsYXNzIEpiaWcyU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWl9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKCl7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IGU9bmV3IEpiaWcySW1hZ2UsdD1bXTtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dGhpcy5wYXJhbXMuZ2V0KCJKQklHMkdsb2JhbHMiKTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgaT1lLmdldEJ5dGVzKCk7dC5wdXNoKHtkYXRhOmksc3RhcnQ6MCxlbmQ6aS5sZW5ndGh9KX19dC5wdXNoKHtkYXRhOnRoaXMuYnl0ZXMsc3RhcnQ6MCxlbmQ6dGhpcy5ieXRlcy5sZW5ndGh9KTtjb25zdCBpPWUucGFyc2VDaHVua3ModCksYT1pLmxlbmd0aDtmb3IobGV0IGU9MDtlPGE7ZSsrKWlbZV1ePTI1NTt0aGlzLmJ1ZmZlcj1pO3RoaXMuYnVmZmVyTGVuZ3RoPWE7dGhpcy5lb2Y9ITB9fWZ1bmN0aW9uIGNvbnZlcnRUb1JHQkEoZSl7c3dpdGNoKGUua2luZCl7Y2FzZSB3OnJldHVybiBjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQShlKTtjYXNlIGI6cmV0dXJuIGZ1bmN0aW9uIGNvbnZlcnRSR0JUb1JHQkEoe3NyYzplLHNyY1Bvczp0PTAsZGVzdDppLGRlc3RQb3M6YT0wLHdpZHRoOnIsaGVpZ2h0OnN9KXtsZXQgbj0wO2NvbnN0IG89ZS5sZW5ndGg+PjIsZz1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIsdCxvKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7Zm9yKDtuPG8tMjtuKz0zLGErPTQpe2NvbnN0IGU9Z1tuXSx0PWdbbisxXSxyPWdbbisyXTtpW2FdPTQyNzgxOTAwODB8ZTtpW2ErMV09ZT4+PjI0fHQ8PDh8NDI3ODE5MDA4MDtpW2ErMl09dD4+PjE2fHI8PDE2fDQyNzgxOTAwODA7aVthKzNdPXI+Pj44fDQyNzgxOTAwODB9Zm9yKGxldCB0PTQqbixyPWUubGVuZ3RoO3Q8cjt0Kz0zKWlbYSsrXT1lW3RdfGVbdCsxXTw8OHxlW3QrMl08PDE2fDQyNzgxOTAwODB9ZWxzZXtmb3IoO248by0yO24rPTMsYSs9NCl7Y29uc3QgZT1nW25dLHQ9Z1tuKzFdLHI9Z1tuKzJdO2lbYV09MjU1fGU7aVthKzFdPWU8PDI0fHQ+Pj44fDI1NTtpW2ErMl09dDw8MTZ8cj4+PjE2fDI1NTtpW2ErM109cjw8OHwyNTV9Zm9yKGxldCB0PTQqbixyPWUubGVuZ3RoO3Q8cjt0Kz0zKWlbYSsrXT1lW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHwyNTV9cmV0dXJue3NyY1Bvczp0LGRlc3RQb3M6YX19KGUpfXJldHVybiBudWxsfWZ1bmN0aW9uIGNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6aSx3aWR0aDphLGhlaWdodDpyLG5vbkJsYWNrQ29sb3I6cz00Mjk0OTY3Mjk1LGludmVyc2VEZWNvZGU6bj0hMX0pe2NvbnN0IG89RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2csY109bj9bcyxvXTpbbyxzXSxoPWE+PjMsbD03JmEsQz1lLmxlbmd0aDtpPW5ldyBVaW50MzJBcnJheShpLmJ1ZmZlcik7bGV0IFE9MDtmb3IobGV0IGE9MDthPHI7YSsrKXtmb3IoY29uc3QgYT10K2g7dDxhO3QrKyl7Y29uc3QgYT10PEM/ZVt0XToyNTU7aVtRKytdPTEyOCZhP2M6ZztpW1ErK109NjQmYT9jOmc7aVtRKytdPTMyJmE/YzpnO2lbUSsrXT0xNiZhP2M6ZztpW1ErK109OCZhP2M6ZztpW1ErK109NCZhP2M6ZztpW1ErK109MiZhP2M6ZztpW1ErK109MSZhP2M6Z31pZigwPT09bCljb250aW51ZTtjb25zdCBhPXQ8Qz9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8bDtlKyspaVtRKytdPWEmMTw8Ny1lP2M6Z31yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpRfX1jbGFzcyBKcGVnRXJyb3IgZXh0ZW5kcyBzdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKcGVnRXJyb3IiKX19Y2xhc3MgRE5MTWFya2VyRXJyb3IgZXh0ZW5kcyBzdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIkROTE1hcmtlckVycm9yIik7dGhpcy5zY2FuTGluZXM9dH19Y2xhc3MgRU9JTWFya2VyRXJyb3IgZXh0ZW5kcyBzdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJFT0lNYXJrZXJFcnJvciIpfX1jb25zdCAkdD1uZXcgVWludDhBcnJheShbMCwxLDgsMTYsOSwyLDMsMTAsMTcsMjQsMzIsMjUsMTgsMTEsNCw1LDEyLDE5LDI2LDMzLDQwLDQ4LDQxLDM0LDI3LDIwLDEzLDYsNywxNCwyMSwyOCwzNSw0Miw0OSw1Niw1Nyw1MCw0MywzNiwyOSwyMiwxNSwyMywzMCwzNyw0NCw1MSw1OCw1OSw1Miw0NSwzOCwzMSwzOSw0Niw1Myw2MCw2MSw1NCw0Nyw1NSw2Miw2M10pLEFpPTQwMTcsZWk9Nzk5LHRpPTM0MDYsaWk9MjI3NixhaT0xNTY3LHJpPTM3ODQsc2k9NTc5MyxuaT0yODk2O2Z1bmN0aW9uIGJ1aWxkSHVmZm1hblRhYmxlKGUsdCl7bGV0IGksYSxyPTAscz0xNjtmb3IoO3M+MCYmIWVbcy0xXTspcy0tO2NvbnN0IG49W3tjaGlsZHJlbjpbXSxpbmRleDowfV07bGV0IG8sZz1uWzBdO2ZvcihpPTA7aTxzO2krKyl7Zm9yKGE9MDthPGVbaV07YSsrKXtnPW4ucG9wKCk7Zy5jaGlsZHJlbltnLmluZGV4XT10W3JdO2Zvcig7Zy5pbmRleD4wOylnPW4ucG9wKCk7Zy5pbmRleCsrO24ucHVzaChnKTtmb3IoO24ubGVuZ3RoPD1pOyl7bi5wdXNoKG89e2NoaWxkcmVuOltdLGluZGV4OjB9KTtnLmNoaWxkcmVuW2cuaW5kZXhdPW8uY2hpbGRyZW47Zz1vfXIrK31pZihpKzE8cyl7bi5wdXNoKG89e2NoaWxkcmVuOltdLGluZGV4OjB9KTtnLmNoaWxkcmVuW2cuaW5kZXhdPW8uY2hpbGRyZW47Zz1vfX1yZXR1cm4gblswXS5jaGlsZHJlbn1mdW5jdGlvbiBnZXRCbG9ja0J1ZmZlck9mZnNldChlLHQsaSl7cmV0dXJuIDY0KigoZS5ibG9ja3NQZXJMaW5lKzEpKnQraSl9ZnVuY3Rpb24gZGVjb2RlU2NhbihlLHQsaSxhLHIscyxuLG8sZyxjPSExKXtjb25zdCBoPWkubWN1c1BlckxpbmUsbD1pLnByb2dyZXNzaXZlLEM9dDtsZXQgUT0wLEU9MDtmdW5jdGlvbiByZWFkQml0KCl7aWYoRT4wKXtFLS07cmV0dXJuIFE+PkUmMX1RPWVbdCsrXTtpZigyNTU9PT1RKXtjb25zdCBhPWVbdCsrXTtpZihhKXtpZigyMjA9PT1hJiZjKXtjb25zdCBhPXJlYWRVaW50MTYoZSx0Kz0yKTt0Kz0yO2lmKGE+MCYmYSE9PWkuc2NhbkxpbmVzKXRocm93IG5ldyBETkxNYXJrZXJFcnJvcigiRm91bmQgRE5MIG1hcmtlciAoMHhGRkRDKSB3aGlsZSBwYXJzaW5nIHNjYW4gZGF0YSIsYSl9ZWxzZSBpZigyMTc9PT1hKXtpZihjKXtjb25zdCBlPXAqKDg9PT1pLnByZWNpc2lvbj84OjApO2lmKGU+MCYmTWF0aC5yb3VuZChpLnNjYW5MaW5lcy9lKT49NSl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEsIHBvc3NpYmx5IGNhdXNlZCBieSBpbmNvcnJlY3QgYHNjYW5MaW5lc2AgcGFyYW1ldGVyIixlKX10aHJvdyBuZXcgRU9JTWFya2VyRXJyb3IoIkZvdW5kIEVPSSBtYXJrZXIgKDB4RkZEOSkgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiKX10aHJvdyBuZXcgSnBlZ0Vycm9yKGB1bmV4cGVjdGVkIG1hcmtlciAkeyhRPDw4fGEpLnRvU3RyaW5nKDE2KX1gKX19RT03O3JldHVybiBRPj4+N31mdW5jdGlvbiBkZWNvZGVIdWZmbWFuKGUpe2xldCB0PWU7Zm9yKDs7KXt0PXRbcmVhZEJpdCgpXTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UibnVtYmVyIjpyZXR1cm4gdDtjYXNlIm9iamVjdCI6Y29udGludWV9dGhyb3cgbmV3IEpwZWdFcnJvcigiaW52YWxpZCBodWZmbWFuIHNlcXVlbmNlIil9fWZ1bmN0aW9uIHJlY2VpdmUoZSl7bGV0IHQ9MDtmb3IoO2U+MDspe3Q9dDw8MXxyZWFkQml0KCk7ZS0tfXJldHVybiB0fWZ1bmN0aW9uIHJlY2VpdmVBbmRFeHRlbmQoZSl7aWYoMT09PWUpcmV0dXJuIDE9PT1yZWFkQml0KCk/MTotMTtjb25zdCB0PXJlY2VpdmUoZSk7cmV0dXJuIHQ+PTE8PGUtMT90OnQrKC0xPDxlKSsxfWxldCB1PTA7bGV0IGQsZj0wO2xldCBwPTA7ZnVuY3Rpb24gZGVjb2RlTWN1KGUsdCxpLGEscil7Y29uc3Qgcz1pJWg7cD0oaS9ofDApKmUudithO2NvbnN0IG49cyplLmgrcjt0KGUsZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSxwLG4pKX1mdW5jdGlvbiBkZWNvZGVCbG9jayhlLHQsaSl7cD1pL2UuYmxvY2tzUGVyTGluZXwwO2NvbnN0IGE9aSVlLmJsb2Nrc1BlckxpbmU7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUscCxhKSl9Y29uc3QgbT1hLmxlbmd0aDtsZXQgeSx3LGIsRCxTLGs7az1sPzA9PT1zPzA9PT1vP2Z1bmN0aW9uIGRlY29kZURDRmlyc3QoZSx0KXtjb25zdCBpPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQyksYT0wPT09aT8wOnJlY2VpdmVBbmRFeHRlbmQoaSk8PGc7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1hfTpmdW5jdGlvbiBkZWNvZGVEQ1N1Y2Nlc3NpdmUoZSx0KXtlLmJsb2NrRGF0YVt0XXw9cmVhZEJpdCgpPDxnfTowPT09bz9mdW5jdGlvbiBkZWNvZGVBQ0ZpcnN0KGUsdCl7aWYodT4wKXt1LS07cmV0dXJufWxldCBpPXM7Y29uc3QgYT1uO2Zvcig7aTw9YTspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxyPTE1JmEscz1hPj40O2lmKDA9PT1yKXtpZihzPDE1KXt1PXJlY2VpdmUocykrKDE8PHMpLTE7YnJlYWt9aSs9MTY7Y29udGludWV9aSs9cztjb25zdCBuPSR0W2ldO2UuYmxvY2tEYXRhW3Qrbl09cmVjZWl2ZUFuZEV4dGVuZChyKSooMTw8Zyk7aSsrfX06ZnVuY3Rpb24gZGVjb2RlQUNTdWNjZXNzaXZlKGUsdCl7bGV0IGk9cztjb25zdCBhPW47bGV0IHIsbyxjPTA7Zm9yKDtpPD1hOyl7Y29uc3QgYT10KyR0W2ldLHM9ZS5ibG9ja0RhdGFbYV08MD8tMToxO3N3aXRjaChmKXtjYXNlIDA6bz1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpO3I9MTUmbztjPW8+PjQ7aWYoMD09PXIpaWYoYzwxNSl7dT1yZWNlaXZlKGMpKygxPDxjKTtmPTR9ZWxzZXtjPTE2O2Y9MX1lbHNle2lmKDEhPT1yKXRocm93IG5ldyBKcGVnRXJyb3IoImludmFsaWQgQUNuIGVuY29kaW5nIik7ZD1yZWNlaXZlQW5kRXh0ZW5kKHIpO2Y9Yz8yOjN9Y29udGludWU7Y2FzZSAxOmNhc2UgMjppZihlLmJsb2NrRGF0YVthXSllLmJsb2NrRGF0YVthXSs9cyoocmVhZEJpdCgpPDxnKTtlbHNle2MtLTswPT09YyYmKGY9Mj09PWY/MzowKX1icmVhaztjYXNlIDM6aWYoZS5ibG9ja0RhdGFbYV0pZS5ibG9ja0RhdGFbYV0rPXMqKHJlYWRCaXQoKTw8Zyk7ZWxzZXtlLmJsb2NrRGF0YVthXT1kPDxnO2Y9MH1icmVhaztjYXNlIDQ6ZS5ibG9ja0RhdGFbYV0mJihlLmJsb2NrRGF0YVthXSs9cyoocmVhZEJpdCgpPDxnKSl9aSsrfWlmKDQ9PT1mKXt1LS07MD09PXUmJihmPTApfX06ZnVuY3Rpb24gZGVjb2RlQmFzZWxpbmUoZSx0KXtjb25zdCBpPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVEQyksYT0wPT09aT8wOnJlY2VpdmVBbmRFeHRlbmQoaSk7ZS5ibG9ja0RhdGFbdF09ZS5wcmVkKz1hO2xldCByPTE7Zm9yKDtyPDY0Oyl7Y29uc3QgaT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlQUMpLGE9MTUmaSxzPWk+PjQ7aWYoMD09PWEpe2lmKHM8MTUpYnJlYWs7cis9MTY7Y29udGludWV9cis9cztjb25zdCBuPSR0W3JdO2UuYmxvY2tEYXRhW3Qrbl09cmVjZWl2ZUFuZEV4dGVuZChhKTtyKyt9fTtsZXQgUixOPTA7Y29uc3QgRz0xPT09bT9hWzBdLmJsb2Nrc1BlckxpbmUqYVswXS5ibG9ja3NQZXJDb2x1bW46aCppLm1jdXNQZXJDb2x1bW47bGV0IHgsTTtmb3IoO048PUc7KXtjb25zdCBpPXI/TWF0aC5taW4oRy1OLHIpOkc7aWYoaT4wKXtmb3Iodz0wO3c8bTt3KyspYVt3XS5wcmVkPTA7dT0wO2lmKDE9PT1tKXt5PWFbMF07Zm9yKFM9MDtTPGk7UysrKXtkZWNvZGVCbG9jayh5LGssTik7TisrfX1lbHNlIGZvcihTPTA7UzxpO1MrKyl7Zm9yKHc9MDt3PG07dysrKXt5PWFbd107eD15Lmg7TT15LnY7Zm9yKGI9MDtiPE07YisrKWZvcihEPTA7RDx4O0QrKylkZWNvZGVNY3UoeSxrLE4sYixEKX1OKyt9fUU9MDtSPWZpbmROZXh0RmlsZU1hcmtlcihlLHQpO2lmKCFSKWJyZWFrO2lmKFIuaW52YWxpZCl7d2FybihgZGVjb2RlU2NhbiAtICR7aT4wPyJ1bmV4cGVjdGVkIjoiZXhjZXNzaXZlIn0gTUNVIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAke1IuaW52YWxpZH1gKTt0PVIub2Zmc2V0fWlmKCEoUi5tYXJrZXI+PTY1NDg4JiZSLm1hcmtlcjw9NjU0OTUpKWJyZWFrO3QrPTJ9cmV0dXJuIHQtQ31mdW5jdGlvbiBxdWFudGl6ZUFuZEludmVyc2UoZSx0LGkpe2NvbnN0IGE9ZS5xdWFudGl6YXRpb25UYWJsZSxyPWUuYmxvY2tEYXRhO2xldCBzLG4sbyxnLGMsaCxsLEMsUSxFLHUsZCxmLHAsbSx5LHc7aWYoIWEpdGhyb3cgbmV3IEpwZWdFcnJvcigibWlzc2luZyByZXF1aXJlZCBRdWFudGl6YXRpb24gVGFibGUuIik7Zm9yKGxldCBlPTA7ZTw2NDtlKz04KXtRPXJbdCtlXTtFPXJbdCtlKzFdO3U9clt0K2UrMl07ZD1yW3QrZSszXTtmPXJbdCtlKzRdO3A9clt0K2UrNV07bT1yW3QrZSs2XTt5PXJbdCtlKzddO1EqPWFbZV07aWYoMCE9KEV8dXxkfGZ8cHxtfHkpKXtFKj1hW2UrMV07dSo9YVtlKzJdO2QqPWFbZSszXTtmKj1hW2UrNF07cCo9YVtlKzVdO20qPWFbZSs2XTt5Kj1hW2UrN107cz1zaSpRKzEyOD4+ODtuPXNpKmYrMTI4Pj44O289dTtnPW07Yz1uaSooRS15KSsxMjg+Pjg7Qz1uaSooRSt5KSsxMjg+Pjg7aD1kPDw0O2w9cDw8NDtzPXMrbisxPj4xO249cy1uO3c9bypyaStnKmFpKzEyOD4+ODtvPW8qYWktZypyaSsxMjg+Pjg7Zz13O2M9YytsKzE+PjE7bD1jLWw7Qz1DK2grMT4+MTtoPUMtaDtzPXMrZysxPj4xO2c9cy1nO249bitvKzE+PjE7bz1uLW87dz1jKmlpK0MqdGkrMjA0OD4+MTI7Yz1jKnRpLUMqaWkrMjA0OD4+MTI7Qz13O3c9aCplaStsKkFpKzIwNDg+PjEyO2g9aCpBaS1sKmVpKzIwNDg+PjEyO2w9dztpW2VdPXMrQztpW2UrN109cy1DO2lbZSsxXT1uK2w7aVtlKzZdPW4tbDtpW2UrMl09bytoO2lbZSs1XT1vLWg7aVtlKzNdPWcrYztpW2UrNF09Zy1jfWVsc2V7dz1zaSpRKzUxMj4+MTA7aVtlXT13O2lbZSsxXT13O2lbZSsyXT13O2lbZSszXT13O2lbZSs0XT13O2lbZSs1XT13O2lbZSs2XT13O2lbZSs3XT13fX1mb3IobGV0IGU9MDtlPDg7KytlKXtRPWlbZV07RT1pW2UrOF07dT1pW2UrMTZdO2Q9aVtlKzI0XTtmPWlbZSszMl07cD1pW2UrNDBdO209aVtlKzQ4XTt5PWlbZSs1Nl07aWYoMCE9KEV8dXxkfGZ8cHxtfHkpKXtzPXNpKlErMjA0OD4+MTI7bj1zaSpmKzIwNDg+PjEyO289dTtnPW07Yz1uaSooRS15KSsyMDQ4Pj4xMjtDPW5pKihFK3kpKzIwNDg+PjEyO2g9ZDtsPXA7cz00MTEyKyhzK24rMT4+MSk7bj1zLW47dz1vKnJpK2cqYWkrMjA0OD4+MTI7bz1vKmFpLWcqcmkrMjA0OD4+MTI7Zz13O2M9YytsKzE+PjE7bD1jLWw7Qz1DK2grMT4+MTtoPUMtaDtzPXMrZysxPj4xO2c9cy1nO249bitvKzE+PjE7bz1uLW87dz1jKmlpK0MqdGkrMjA0OD4+MTI7Yz1jKnRpLUMqaWkrMjA0OD4+MTI7Qz13O3c9aCplaStsKkFpKzIwNDg+PjEyO2g9aCpBaS1sKmVpKzIwNDg+PjEyO2w9dztRPXMrQzt5PXMtQztFPW4rbDttPW4tbDt1PW8raDtwPW8taDtkPWcrYztmPWctYztRPDE2P1E9MDpRPj00MDgwP1E9MjU1OlE+Pj00O0U8MTY/RT0wOkU+PTQwODA/RT0yNTU6RT4+PTQ7dTwxNj91PTA6dT49NDA4MD91PTI1NTp1Pj49NDtkPDE2P2Q9MDpkPj00MDgwP2Q9MjU1OmQ+Pj00O2Y8MTY/Zj0wOmY+PTQwODA/Zj0yNTU6Zj4+PTQ7cDwxNj9wPTA6cD49NDA4MD9wPTI1NTpwPj49NDttPDE2P209MDptPj00MDgwP209MjU1Om0+Pj00O3k8MTY/eT0wOnk+PTQwODA/eT0yNTU6eT4+PTQ7clt0K2VdPVE7clt0K2UrOF09RTtyW3QrZSsxNl09dTtyW3QrZSsyNF09ZDtyW3QrZSszMl09ZjtyW3QrZSs0MF09cDtyW3QrZSs0OF09bTtyW3QrZSs1Nl09eX1lbHNle3c9c2kqUSs4MTkyPj4xNDt3PXc8LTIwNDA/MDp3Pj0yMDI0PzI1NTp3KzIwNTY+PjQ7clt0K2VdPXc7clt0K2UrOF09dztyW3QrZSsxNl09dztyW3QrZSsyNF09dztyW3QrZSszMl09dztyW3QrZSs0MF09dztyW3QrZSs0OF09dztyW3QrZSs1Nl09d319fWZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShlLHQpe2NvbnN0IGk9dC5ibG9ja3NQZXJMaW5lLGE9dC5ibG9ja3NQZXJDb2x1bW4scj1uZXcgSW50MTZBcnJheSg2NCk7Zm9yKGxldCBlPTA7ZTxhO2UrKylmb3IobGV0IGE9MDthPGk7YSsrKXtxdWFudGl6ZUFuZEludmVyc2UodCxnZXRCbG9ja0J1ZmZlck9mZnNldCh0LGUsYSkscil9cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIGZpbmROZXh0RmlsZU1hcmtlcihlLHQsaT10KXtjb25zdCBhPWUubGVuZ3RoLTE7bGV0IHI9aTx0P2k6dDtpZih0Pj1hKXJldHVybiBudWxsO2NvbnN0IHM9cmVhZFVpbnQxNihlLHQpO2lmKHM+PTY1NDcyJiZzPD02NTUzNClyZXR1cm57aW52YWxpZDpudWxsLG1hcmtlcjpzLG9mZnNldDp0fTtsZXQgbj1yZWFkVWludDE2KGUscik7Zm9yKDshKG4+PTY1NDcyJiZuPD02NTUzNCk7KXtpZigrK3I+PWEpcmV0dXJuIG51bGw7bj1yZWFkVWludDE2KGUscil9cmV0dXJue2ludmFsaWQ6cy50b1N0cmluZygxNiksbWFya2VyOm4sb2Zmc2V0OnJ9fWNsYXNzIEpwZWdJbWFnZXtjb25zdHJ1Y3Rvcih7ZGVjb2RlVHJhbnNmb3JtOmU9bnVsbCxjb2xvclRyYW5zZm9ybTp0PS0xfT17fSl7dGhpcy5fZGVjb2RlVHJhbnNmb3JtPWU7dGhpcy5fY29sb3JUcmFuc2Zvcm09dH1wYXJzZShlLHtkbmxTY2FuTGluZXM6dD1udWxsfT17fSl7ZnVuY3Rpb24gcmVhZERhdGFCbG9jaygpe2NvbnN0IHQ9cmVhZFVpbnQxNihlLHIpO3IrPTI7bGV0IGk9cit0LTI7Y29uc3QgYT1maW5kTmV4dEZpbGVNYXJrZXIoZSxpLHIpO2lmKGE/LmludmFsaWQpe3dhcm4oInJlYWREYXRhQmxvY2sgLSBpbmNvcnJlY3QgbGVuZ3RoLCBjdXJyZW50IG1hcmtlciBpczogIithLmludmFsaWQpO2k9YS5vZmZzZXR9Y29uc3Qgcz1lLnN1YmFycmF5KHIsaSk7cis9cy5sZW5ndGg7cmV0dXJuIHN9ZnVuY3Rpb24gcHJlcGFyZUNvbXBvbmVudHMoZSl7Y29uc3QgdD1NYXRoLmNlaWwoZS5zYW1wbGVzUGVyTGluZS84L2UubWF4SCksaT1NYXRoLmNlaWwoZS5zY2FuTGluZXMvOC9lLm1heFYpO2Zvcihjb25zdCBhIG9mIGUuY29tcG9uZW50cyl7Y29uc3Qgcj1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOCkqYS5oL2UubWF4SCkscz1NYXRoLmNlaWwoTWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgpKmEudi9lLm1heFYpLG49dCphLmgsbz02NCooaSphLnYpKihuKzEpO2EuYmxvY2tEYXRhPW5ldyBJbnQxNkFycmF5KG8pO2EuYmxvY2tzUGVyTGluZT1yO2EuYmxvY2tzUGVyQ29sdW1uPXN9ZS5tY3VzUGVyTGluZT10O2UubWN1c1BlckNvbHVtbj1pfWxldCBpLGEscj0wLHM9bnVsbCxuPW51bGwsbz0wO2NvbnN0IGc9W10sYz1bXSxoPVtdO2xldCBsPXJlYWRVaW50MTYoZSxyKTtyKz0yO2lmKDY1NDk2IT09bCl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7bD1yZWFkVWludDE2KGUscik7cis9MjtBOmZvcig7NjU0OTchPT1sOyl7bGV0IEMsUSxFO3N3aXRjaChsKXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNjpjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3QgdT1yZWFkRGF0YUJsb2NrKCk7NjU1MDQ9PT1sJiY3ND09PXVbMF0mJjcwPT09dVsxXSYmNzM9PT11WzJdJiY3MD09PXVbM10mJjA9PT11WzRdJiYocz17dmVyc2lvbjp7bWFqb3I6dVs1XSxtaW5vcjp1WzZdfSxkZW5zaXR5VW5pdHM6dVs3XSx4RGVuc2l0eTp1WzhdPDw4fHVbOV0seURlbnNpdHk6dVsxMF08PDh8dVsxMV0sdGh1bWJXaWR0aDp1WzEyXSx0aHVtYkhlaWdodDp1WzEzXSx0aHVtYkRhdGE6dS5zdWJhcnJheSgxNCwxNCszKnVbMTJdKnVbMTNdKX0pOzY1NTE4PT09bCYmNjU9PT11WzBdJiYxMDA9PT11WzFdJiYxMTE9PT11WzJdJiY5OD09PXVbM10mJjEwMT09PXVbNF0mJihuPXt2ZXJzaW9uOnVbNV08PDh8dVs2XSxmbGFnczA6dVs3XTw8OHx1WzhdLGZsYWdzMTp1WzldPDw4fHVbMTBdLHRyYW5zZm9ybUNvZGU6dVsxMV19KTticmVhaztjYXNlIDY1NDk5OmNvbnN0IGQ9cmVhZFVpbnQxNihlLHIpO3IrPTI7Y29uc3QgZj1kK3ItMjtsZXQgcDtmb3IoO3I8Zjspe2NvbnN0IHQ9ZVtyKytdLGk9bmV3IFVpbnQxNkFycmF5KDY0KTtpZih0Pj40PT0wKWZvcihRPTA7UTw2NDtRKyspe3A9JHRbUV07aVtwXT1lW3IrK119ZWxzZXtpZih0Pj40IT0xKXRocm93IG5ldyBKcGVnRXJyb3IoIkRRVCAtIGludmFsaWQgdGFibGUgc3BlYyIpO2ZvcihRPTA7UTw2NDtRKyspe3A9JHRbUV07aVtwXT1yZWFkVWludDE2KGUscik7cis9Mn19Z1sxNSZ0XT1pfWJyZWFrO2Nhc2UgNjU0NzI6Y2FzZSA2NTQ3MzpjYXNlIDY1NDc0OmlmKGkpdGhyb3cgbmV3IEpwZWdFcnJvcigiT25seSBzaW5nbGUgZnJhbWUgSlBFR3Mgc3VwcG9ydGVkIik7cis9MjtpPXt9O2kuZXh0ZW5kZWQ9NjU0NzM9PT1sO2kucHJvZ3Jlc3NpdmU9NjU0NzQ9PT1sO2kucHJlY2lzaW9uPWVbcisrXTtjb25zdCBtPXJlYWRVaW50MTYoZSxyKTtyKz0yO2kuc2NhbkxpbmVzPXR8fG07aS5zYW1wbGVzUGVyTGluZT1yZWFkVWludDE2KGUscik7cis9MjtpLmNvbXBvbmVudHM9W107aS5jb21wb25lbnRJZHM9e307Y29uc3QgeT1lW3IrK107bGV0IHc9MCxiPTA7Zm9yKEM9MDtDPHk7QysrKXtjb25zdCB0PWVbcl0sYT1lW3IrMV0+PjQscz0xNSZlW3IrMV07dzxhJiYodz1hKTtiPHMmJihiPXMpO2NvbnN0IG49ZVtyKzJdO0U9aS5jb21wb25lbnRzLnB1c2goe2g6YSx2OnMscXVhbnRpemF0aW9uSWQ6bixxdWFudGl6YXRpb25UYWJsZTpudWxsfSk7aS5jb21wb25lbnRJZHNbdF09RS0xO3IrPTN9aS5tYXhIPXc7aS5tYXhWPWI7cHJlcGFyZUNvbXBvbmVudHMoaSk7YnJlYWs7Y2FzZSA2NTQ3Njpjb25zdCBEPXJlYWRVaW50MTYoZSxyKTtyKz0yO2ZvcihDPTI7QzxEOyl7Y29uc3QgdD1lW3IrK10saT1uZXcgVWludDhBcnJheSgxNik7bGV0IGE9MDtmb3IoUT0wO1E8MTY7USsrLHIrKylhKz1pW1FdPWVbcl07Y29uc3Qgcz1uZXcgVWludDhBcnJheShhKTtmb3IoUT0wO1E8YTtRKysscisrKXNbUV09ZVtyXTtDKz0xNythOyh0Pj40PT0wP2g6YylbMTUmdF09YnVpbGRIdWZmbWFuVGFibGUoaSxzKX1icmVhaztjYXNlIDY1NTAxOnIrPTI7YT1yZWFkVWludDE2KGUscik7cis9MjticmVhaztjYXNlIDY1NDk4OmNvbnN0IFM9MT09KytvJiYhdDtyKz0yO2NvbnN0IGs9ZVtyKytdLFI9W107Zm9yKEM9MDtDPGs7QysrKXtjb25zdCB0PWVbcisrXSxhPWkuY29tcG9uZW50SWRzW3RdLHM9aS5jb21wb25lbnRzW2FdO3MuaW5kZXg9dDtjb25zdCBuPWVbcisrXTtzLmh1ZmZtYW5UYWJsZURDPWhbbj4+NF07cy5odWZmbWFuVGFibGVBQz1jWzE1Jm5dO1IucHVzaChzKX1jb25zdCBOPWVbcisrXSxHPWVbcisrXSx4PWVbcisrXTt0cnl7Y29uc3QgdD1kZWNvZGVTY2FuKGUscixpLFIsYSxOLEcseD4+NCwxNSZ4LFMpO3IrPXR9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIEROTE1hcmtlckVycm9yKXt3YXJuKGAke3QubWVzc2FnZX0gLS0gYXR0ZW1wdGluZyB0byByZS1wYXJzZSB0aGUgSlBFRyBpbWFnZS5gKTtyZXR1cm4gdGhpcy5wYXJzZShlLHtkbmxTY2FuTGluZXM6dC5zY2FuTGluZXN9KX1pZih0IGluc3RhbmNlb2YgRU9JTWFya2VyRXJyb3Ipe3dhcm4oYCR7dC5tZXNzYWdlfSAtLSBpZ25vcmluZyB0aGUgcmVzdCBvZiB0aGUgaW1hZ2UgZGF0YS5gKTticmVhayBBfXRocm93IHR9YnJlYWs7Y2FzZSA2NTUwMDpyKz00O2JyZWFrO2Nhc2UgNjU1MzU6MjU1IT09ZVtyXSYmci0tO2JyZWFrO2RlZmF1bHQ6Y29uc3QgTT1maW5kTmV4dEZpbGVNYXJrZXIoZSxyLTIsci0zKTtpZihNPy5pbnZhbGlkKXt3YXJuKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmV4cGVjdGVkIGRhdGEsIGN1cnJlbnQgbWFya2VyIGlzOiAiK00uaW52YWxpZCk7cj1NLm9mZnNldDticmVha31pZighTXx8cj49ZS5sZW5ndGgtMSl7d2FybigiSnBlZ0ltYWdlLnBhcnNlIC0gcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbWFnZSBkYXRhIHdpdGhvdXQgZmluZGluZyBhbiBFT0kgbWFya2VyICgweEZGRDkpLiIpO2JyZWFrIEF9dGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gdW5rbm93biBtYXJrZXI6ICIrbC50b1N0cmluZygxNikpfWw9cmVhZFVpbnQxNihlLHIpO3IrPTJ9aWYoIWkpdGhyb3cgbmV3IEpwZWdFcnJvcigiSnBlZ0ltYWdlLnBhcnNlIC0gbm8gZnJhbWUgZGF0YSBmb3VuZC4iKTt0aGlzLndpZHRoPWkuc2FtcGxlc1BlckxpbmU7dGhpcy5oZWlnaHQ9aS5zY2FuTGluZXM7dGhpcy5qZmlmPXM7dGhpcy5hZG9iZT1uO3RoaXMuY29tcG9uZW50cz1bXTtmb3IoY29uc3QgZSBvZiBpLmNvbXBvbmVudHMpe2NvbnN0IHQ9Z1tlLnF1YW50aXphdGlvbklkXTt0JiYoZS5xdWFudGl6YXRpb25UYWJsZT10KTt0aGlzLmNvbXBvbmVudHMucHVzaCh7aW5kZXg6ZS5pbmRleCxvdXRwdXQ6YnVpbGRDb21wb25lbnREYXRhKDAsZSksc2NhbGVYOmUuaC9pLm1heEgsc2NhbGVZOmUudi9pLm1heFYsYmxvY2tzUGVyTGluZTplLmJsb2Nrc1BlckxpbmUsYmxvY2tzUGVyQ29sdW1uOmUuYmxvY2tzUGVyQ29sdW1ufSl9dGhpcy5udW1Db21wb25lbnRzPXRoaXMuY29tcG9uZW50cy5sZW5ndGh9X2dldExpbmVhcml6ZWRCbG9ja0RhdGEoZSx0LGk9ITEpe2NvbnN0IGE9dGhpcy53aWR0aC9lLHI9dGhpcy5oZWlnaHQvdDtsZXQgcyxuLG8sZyxjLGgsbCxDLFEsRSx1LGQ9MDtjb25zdCBmPXRoaXMuY29tcG9uZW50cy5sZW5ndGgscD1lKnQqZixtPW5ldyBVaW50OENsYW1wZWRBcnJheShwKSx5PW5ldyBVaW50MzJBcnJheShlKSx3PTQyOTQ5NjcyODg7bGV0IGI7Zm9yKGw9MDtsPGY7bCsrKXtzPXRoaXMuY29tcG9uZW50c1tsXTtuPXMuc2NhbGVYKmE7bz1zLnNjYWxlWSpyO2Q9bDt1PXMub3V0cHV0O2c9cy5ibG9ja3NQZXJMaW5lKzE8PDM7aWYobiE9PWIpe2ZvcihjPTA7YzxlO2MrKyl7Qz0wfGMqbjt5W2NdPShDJncpPDwzfDcmQ31iPW59Zm9yKGg9MDtoPHQ7aCsrKXtDPTB8aCpvO0U9ZyooQyZ3KXwoNyZDKTw8Mztmb3IoYz0wO2M8ZTtjKyspe21bZF09dVtFK3lbY11dO2QrPWZ9fX1sZXQgRD10aGlzLl9kZWNvZGVUcmFuc2Zvcm07aXx8NCE9PWZ8fER8fChEPW5ldyBJbnQzMkFycmF5KFstMjU2LDI1NSwtMjU2LDI1NSwtMjU2LDI1NSwtMjU2LDI1NV0pKTtpZihEKWZvcihsPTA7bDxwOylmb3IoQz0wLFE9MDtDPGY7QysrLGwrKyxRKz0yKW1bbF09KG1bbF0qRFtRXT4+OCkrRFtRKzFdO3JldHVybiBtfWdldCBfaXNDb2xvckNvbnZlcnNpb25OZWVkZWQoKXtyZXR1cm4gdGhpcy5hZG9iZT8hIXRoaXMuYWRvYmUudHJhbnNmb3JtQ29kZTozPT09dGhpcy5udW1Db21wb25lbnRzPzAhPT10aGlzLl9jb2xvclRyYW5zZm9ybSYmKDgyIT09dGhpcy5jb21wb25lbnRzWzBdLmluZGV4fHw3MSE9PXRoaXMuY29tcG9uZW50c1sxXS5pbmRleHx8NjYhPT10aGlzLmNvbXBvbmVudHNbMl0uaW5kZXgpOjE9PT10aGlzLl9jb2xvclRyYW5zZm9ybX1fY29udmVydFljY1RvUmdiKGUpe2xldCB0LGksYTtmb3IobGV0IHI9MCxzPWUubGVuZ3RoO3I8cztyKz0zKXt0PWVbcl07aT1lW3IrMV07YT1lW3IrMl07ZVtyXT10LTE3OS40NTYrMS40MDIqYTtlW3IrMV09dCsxMzUuNDU5LS4zNDQqaS0uNzE0KmE7ZVtyKzJdPXQtMjI2LjgxNisxLjc3MippfXJldHVybiBlfV9jb252ZXJ0WWNjVG9SZ2JhKGUsdCl7Zm9yKGxldCBpPTAsYT0wLHI9ZS5sZW5ndGg7aTxyO2krPTMsYSs9NCl7Y29uc3Qgcj1lW2ldLHM9ZVtpKzFdLG49ZVtpKzJdO3RbYV09ci0xNzkuNDU2KzEuNDAyKm47dFthKzFdPXIrMTM1LjQ1OS0uMzQ0KnMtLjcxNCpuO3RbYSsyXT1yLTIyNi44MTYrMS43NzIqczt0W2ErM109MjU1fXJldHVybiB0fV9jb252ZXJ0WWNja1RvUmdiKGUpe2xldCB0LGksYSxyLHM9MDtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKz00KXt0PWVbbl07aT1lW24rMV07YT1lW24rMl07cj1lW24rM107ZVtzKytdPWkqKC02NjA2MzU2Njk0MjAzNjRlLTE5KmkrLjAwMDQzNzEzMDQ3NTkyNjIzMiphLTU0MDgwNjEwMDY0NTk5ZS0xOCp0Ky4wMDA0ODQ0OTc5NzEyMDI4MSpyLS4xNTQzNjIxNTE4NzExMjYpLTEyMi42NzE5NTQwNjg5NCthKigtLjAwMDk1Nzk2NDM3ODQ0NTc3MyphKy4wMDA4MTcwNzY5MTEzNDY2MjUqdC0uMDA0NzcyNzE0MDU0MDg3NDcqcisxLjUzMzgwMjUzMjIxNzM0KSt0KiguMDAwOTYxMjUwMTg0MTMwNjg4KnQtLjAwMjY2MjU3MzMyMjgzOTMzKnIrLjQ4MzU3MDg4NDUxMjY1KStyKigtLjAwMDMzNjE5NzE3NzYxODM5NCpyKy40ODQ3OTE1NjE0OTA3NzYpO2VbcysrXT0xMDcuMjY4MDM5Mzk3NzI0K2kqKDIxOTkyNzEwNDUyNTc0MWUtMTkqaS0uMDAwNjQwOTkyMDE4Mjk3OTQ1KmErLjAwMDY1OTM5NzAwMTI0NTU3Nyp0Ky4wMDA0MjYxMDU2NTI5Mzg4Mzcqci0uMTc2NDkxNzkyNDYyODc1KSthKigtLjAwMDc3ODI2OTk0MTUxMzY4MyphKy4wMDEzMDg3MjI2MTQwODI3NSp0Ky4wMDA3NzA0ODI2MzE4MDExMzIqci0uMTUxMDUxNDkyNzc1NTYyKSt0KiguMDAxMjY5MzUzNjgxMTQ4NDMqdC0uMDAyNjUwOTAxODkwMTA4OTgqcisuMjU4MDI5MTAyMDY4NDUpK3IqKC0uMDAwMzE4OTEzMTE3NTg4MzI4KnItLjIxMzc0MjQwMDMyMzY2NSk7ZVtzKytdPWkqKC0uMDAwNTcwMTE1MTk2OTczNjc3KmktMjYzNDA5MDUxMDA0NTg5ZS0xOSphKy4wMDIwNzQxMDg4MTE1MDEyKnQtLjAwMjg4MjYwMjM2ODUzNDQyKnIrLjgxNDI3Mjk2ODM1OTI5NSktMjAuODEwMDEyNTQ2OTQ3K2EqKC0xNTM0OTYwNTc0NDA5NzVlLTE5KmEtLjAwMDEzMjY4OTA0Mzk2MTQ0Nip0Ky4wMDA1NjA4MzM2OTEyNDI4MTIqci0uMTk1MTUyMDI3NTM0MDQ5KSt0KiguMDAxNzQ0MTgxMzI5Mjc1ODIqdC0uMDAyNTUyNDMzMjE0MzkzNDcqcisuMTE2OTM1MDIwNDY1MTQ1KStyKigtLjAwMDM0MzUzMTk5NjUxMDU1NSpyKy4yNDE2NTI2MDIzMjQwNyl9cmV0dXJuIGUuc3ViYXJyYXkoMCxzKX1fY29udmVydFljY2tUb1JnYmEoZSl7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCs9NCl7Y29uc3QgaT1lW3RdLGE9ZVt0KzFdLHI9ZVt0KzJdLHM9ZVt0KzNdO2VbdF09YSooLTY2MDYzNTY2OTQyMDM2NGUtMTkqYSsuMDAwNDM3MTMwNDc1OTI2MjMyKnItNTQwODA2MTAwNjQ1OTllLTE4KmkrLjAwMDQ4NDQ5Nzk3MTIwMjgxKnMtLjE1NDM2MjE1MTg3MTEyNiktMTIyLjY3MTk1NDA2ODk0K3IqKC0uMDAwOTU3OTY0Mzc4NDQ1NzczKnIrLjAwMDgxNzA3NjkxMTM0NjYyNSppLS4wMDQ3NzI3MTQwNTQwODc0NypzKzEuNTMzODAyNTMyMjE3MzQpK2kqKC4wMDA5NjEyNTAxODQxMzA2ODgqaS0uMDAyNjYyNTczMzIyODM5MzMqcysuNDgzNTcwODg0NTEyNjUpK3MqKC0uMDAwMzM2MTk3MTc3NjE4Mzk0KnMrLjQ4NDc5MTU2MTQ5MDc3Nik7ZVt0KzFdPTEwNy4yNjgwMzkzOTc3MjQrYSooMjE5OTI3MTA0NTI1NzQxZS0xOSphLS4wMDA2NDA5OTIwMTgyOTc5NDUqcisuMDAwNjU5Mzk3MDAxMjQ1NTc3KmkrLjAwMDQyNjEwNTY1MjkzODgzNypzLS4xNzY0OTE3OTI0NjI4NzUpK3IqKC0uMDAwNzc4MjY5OTQxNTEzNjgzKnIrLjAwMTMwODcyMjYxNDA4Mjc1KmkrLjAwMDc3MDQ4MjYzMTgwMTEzMipzLS4xNTEwNTE0OTI3NzU1NjIpK2kqKC4wMDEyNjkzNTM2ODExNDg0MyppLS4wMDI2NTA5MDE4OTAxMDg5OCpzKy4yNTgwMjkxMDIwNjg0NSkrcyooLS4wMDAzMTg5MTMxMTc1ODgzMjgqcy0uMjEzNzQyNDAwMzIzNjY1KTtlW3QrMl09YSooLS4wMDA1NzAxMTUxOTY5NzM2NzcqYS0yNjM0MDkwNTEwMDQ1ODllLTE5KnIrLjAwMjA3NDEwODgxMTUwMTIqaS0uMDAyODgyNjAyMzY4NTM0NDIqcysuODE0MjcyOTY4MzU5Mjk1KS0yMC44MTAwMTI1NDY5NDcrciooLTE1MzQ5NjA1NzQ0MDk3NWUtMTkqci0uMDAwMTMyNjg5MDQzOTYxNDQ2KmkrLjAwMDU2MDgzMzY5MTI0MjgxMipzLS4xOTUxNTIwMjc1MzQwNDkpK2kqKC4wMDE3NDQxODEzMjkyNzU4MippLS4wMDI1NTI0MzMyMTQzOTM0NypzKy4xMTY5MzUwMjA0NjUxNDUpK3MqKC0uMDAwMzQzNTMxOTk2NTEwNTU1KnMrLjI0MTY1MjYwMjMyNDA3KTtlW3QrM109MjU1fXJldHVybiBlfV9jb252ZXJ0WWNja1RvQ215ayhlKXtsZXQgdCxpLGE7Zm9yKGxldCByPTAscz1lLmxlbmd0aDtyPHM7cis9NCl7dD1lW3JdO2k9ZVtyKzFdO2E9ZVtyKzJdO2Vbcl09NDM0LjQ1Ni10LTEuNDAyKmE7ZVtyKzFdPTExOS41NDEtdCsuMzQ0KmkrLjcxNCphO2VbcisyXT00ODEuODE2LXQtMS43NzIqaX1yZXR1cm4gZX1fY29udmVydENteWtUb1JnYihlKXtsZXQgdCxpLGEscixzPTA7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bis9NCl7dD1lW25dO2k9ZVtuKzFdO2E9ZVtuKzJdO3I9ZVtuKzNdO2VbcysrXT0yNTUrdCooLTY3NDcxNDcwNzM2MDI0NDFlLTIwKnQrLjAwMDgzNzkyNjIxMjEwMTM3MjcqaSsuMDAwMjg5NDcxODE4ODY0MzI5NCphKy4wMDMyNjQyMzEwNTc1Mzc4MDYqci0xLjExODU2MTE4NjcyMDM5MzcpK2kqKDI2Mzc0MTA3NjE2MDg5NDA1ZS0yMSppLTg2MjY5NDkxNTg2Mzg1NzJlLTIwKmEtLjAwMDI3NDg3NjkwNjc0OTk0OTEqci0uMDIxNTU2ODg3OTQ5Nzg5NjcpK2EqKC0zODc4MDk5MjEyODY5MzYzZS0yMCphLS4wMDAzMjY3ODA4Mjc5NDg1Mjg2KnIrLjA2ODY3NDIyMzg1OTUzNDUpLXIqKC4wMDAzMzYxOTcxNzc2MTgzOTM3KnIrLjc0MzA2NTkxNTEzNDIyNTQpO2VbcysrXT0yNTUrdCooLjAwMDEzNTk2MzcyODEzNTg4ODQ4KnQrLjAwMDkyNDUzNzEzMjU3MzU4NSppKy4wMDAxMDU2NzM1OTYxODY4MzU5MyphKy4wMDA0NzkxODY0Njg3NDM2NTEyKnItLjMxMDk2ODk1ODc1MTU4NzUpK2kqKC0uMDAwMjM1NDUzNDYxMDgzNzAzNDQqaSsuMDAwMjcwMjg0NTI1MzUzNDcxNCphKy4wMDIwMjAwMzA4OTc3MzA3MTU2KnItLjc0ODgwNTIxNjcwMTU0OTQpK2EqKDY4MzQ4MTU5OTgyMzU2NjJlLTIwKmErLjAwMDE1MTY4NDUyMzYzNDYwOTczKnItLjA5NzUxOTI3Nzc0NzI4OTMzKS1yKiguMDAwMzE4OTEzMTE3NTg4MzI4MSpyKy43MzY0ODgzODA3NzMzMTY4KTtlW3MrK109MjU1K3QqKDEzNTk4NjUwNDExMzg1MzA3ZS0yMSp0Ky4wMDAxMjQyMzk1NjE3NTQ5MDg1MSppKy4wMDA0NzUxOTg1MDk3NTgzNTg5KmEtMzY3MjkzMTc0NzY2MzA0MjJlLTIyKnItLjA1NTYyMTg2OTgwMjY0MDM0KStpKiguMDAwMTYxNDEzODA1OTg3MjQ2NzYqaSsuMDAwOTY5MjIzOTEzMDcyNTE4NiphKy4wMDA3NzgyNjkyNDUwMDM2MjUzKnItLjQ0MDE1MjMyMzY3NTI2NDYzKSthKig1LjA2ODg4MjkxNDA2ODc2OWUtNyphKy4wMDE3Nzc4MzY5MDExMzc1MDcxKnItLjc1OTE0NTQ2NDk3NDk2MDkpLXIqKC4wMDAzNDM1MzE5OTY1MTA1NTUzKnIrLjcwNjM3NzAxODYxNjAxNDQpfXJldHVybiBlLnN1YmFycmF5KDAscyl9X2NvbnZlcnRDbXlrVG9SZ2JhKGUpe2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrPTQpe2NvbnN0IGk9ZVt0XSxhPWVbdCsxXSxyPWVbdCsyXSxzPWVbdCszXTtlW3RdPTI1NStpKigtNjc0NzE0NzA3MzYwMjQ0MWUtMjAqaSsuMDAwODM3OTI2MjEyMTAxMzcyNyphKy4wMDAyODk0NzE4MTg4NjQzMjk0KnIrLjAwMzI2NDIzMTA1NzUzNzgwNipzLTEuMTE4NTYxMTg2NzIwMzkzNykrYSooMjYzNzQxMDc2MTYwODk0MDVlLTIxKmEtODYyNjk0OTE1ODYzODU3MmUtMjAqci0uMDAwMjc0ODc2OTA2NzQ5OTQ5MSpzLS4wMjE1NTY4ODc5NDk3ODk2NykrciooLTM4NzgwOTkyMTI4NjkzNjNlLTIwKnItLjAwMDMyNjc4MDgyNzk0ODUyODYqcysuMDY4Njc0MjIzODU5NTM0NSktcyooLjAwMDMzNjE5NzE3NzYxODM5MzcqcysuNzQzMDY1OTE1MTM0MjI1NCk7ZVt0KzFdPTI1NStpKiguMDAwMTM1OTYzNzI4MTM1ODg4NDgqaSsuMDAwOTI0NTM3MTMyNTczNTg1KmErLjAwMDEwNTY3MzU5NjE4NjgzNTkzKnIrLjAwMDQ3OTE4NjQ2ODc0MzY1MTIqcy0uMzEwOTY4OTU4NzUxNTg3NSkrYSooLS4wMDAyMzU0NTM0NjEwODM3MDM0NCphKy4wMDAyNzAyODQ1MjUzNTM0NzE0KnIrLjAwMjAyMDAzMDg5NzczMDcxNTYqcy0uNzQ4ODA1MjE2NzAxNTQ5NCkrciooNjgzNDgxNTk5ODIzNTY2MmUtMjAqcisuMDAwMTUxNjg0NTIzNjM0NjA5NzMqcy0uMDk3NTE5Mjc3NzQ3Mjg5MzMpLXMqKC4wMDAzMTg5MTMxMTc1ODgzMjgxKnMrLjczNjQ4ODM4MDc3MzMxNjgpO2VbdCsyXT0yNTUraSooMTM1OTg2NTA0MTEzODUzMDdlLTIxKmkrLjAwMDEyNDIzOTU2MTc1NDkwODUxKmErLjAwMDQ3NTE5ODUwOTc1ODM1ODkqci0zNjcyOTMxNzQ3NjYzMDQyMmUtMjIqcy0uMDU1NjIxODY5ODAyNjQwMzQpK2EqKC4wMDAxNjE0MTM4MDU5ODcyNDY3NiphKy4wMDA5NjkyMjM5MTMwNzI1MTg2KnIrLjAwMDc3ODI2OTI0NTAwMzYyNTMqcy0uNDQwMTUyMzIzNjc1MjY0NjMpK3IqKDUuMDY4ODgyOTE0MDY4NzY5ZS03KnIrLjAwMTc3NzgzNjkwMTEzNzUwNzEqcy0uNzU5MTQ1NDY0OTc0OTYwOSktcyooLjAwMDM0MzUzMTk5NjUxMDU1NTMqcysuNzA2Mzc3MDE4NjE2MDE0NCk7ZVt0KzNdPTI1NX1yZXR1cm4gZX1nZXREYXRhKHt3aWR0aDplLGhlaWdodDp0LGZvcmNlUkdCQTppPSExLGZvcmNlUkdCOmE9ITEsaXNTb3VyY2VQREY6cj0hMX0pe2lmKHRoaXMubnVtQ29tcG9uZW50cz40KXRocm93IG5ldyBKcGVnRXJyb3IoIlVuc3VwcG9ydGVkIGNvbG9yIG1vZGUiKTtjb25zdCBzPXRoaXMuX2dldExpbmVhcml6ZWRCbG9ja0RhdGEoZSx0LHIpO2lmKDE9PT10aGlzLm51bUNvbXBvbmVudHMmJihpfHxhKSl7Y29uc3QgZT1zLmxlbmd0aCooaT80OjMpLHQ9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGUpO2xldCBhPTA7aWYoaSkhZnVuY3Rpb24gZ3JheVRvUkdCQShlLHQpe2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKWZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl0W2ldPTY1NzkzKmVbaV18NDI3ODE5MDA4MDtlbHNlIGZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl0W2ldPTE2ODQzMDA4KmVbaV18MjU1fShzLG5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlcikpO2Vsc2UgZm9yKGNvbnN0IGUgb2Ygcyl7dFthKytdPWU7dFthKytdPWU7dFthKytdPWV9cmV0dXJuIHR9aWYoMz09PXRoaXMubnVtQ29tcG9uZW50cyYmdGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpe2lmKGkpe2NvbnN0IGU9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHMubGVuZ3RoLzMqNCk7cmV0dXJuIHRoaXMuX2NvbnZlcnRZY2NUb1JnYmEocyxlKX1yZXR1cm4gdGhpcy5fY29udmVydFljY1RvUmdiKHMpfWlmKDQ9PT10aGlzLm51bUNvbXBvbmVudHMpe2lmKHRoaXMuX2lzQ29sb3JDb252ZXJzaW9uTmVlZGVkKXJldHVybiBpP3RoaXMuX2NvbnZlcnRZY2NrVG9SZ2JhKHMpOmE/dGhpcy5fY29udmVydFljY2tUb1JnYihzKTp0aGlzLl9jb252ZXJ0WWNja1RvQ215ayhzKTtpZihpKXJldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiYShzKTtpZihhKXJldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiKHMpfXJldHVybiBzfX1jbGFzcyBKcGVnU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtsZXQgYTtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpOylpZigyNTU9PT1hKXtlLnNraXAoLTEpO2JyZWFrfXN1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9aX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYoKHRoaXMuZm9yY2VSR0JBfHx0aGlzLmZvcmNlUkdCKSYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgaT10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgsYT10Lmxlbmd0aCxyPW5ldyBJbnQzMkFycmF5KGEpO2xldCBzPSExO2NvbnN0IG49KDE8PGkpLTE7Zm9yKGxldCBlPTA7ZTxhO2UrPTIpe3JbZV09MjU2Kih0W2UrMV0tdFtlXSl8MDtyW2UrMV09dFtlXSpufDA7MjU2PT09cltlXSYmMD09PXJbZSsxXXx8KHM9ITApfXMmJihlLmRlY29kZVRyYW5zZm9ybT1yKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9dGhpcy5wYXJhbXMuZ2V0KCJDb2xvclRyYW5zZm9ybSIpO051bWJlci5pc0ludGVnZXIodCkmJihlLmNvbG9yVHJhbnNmb3JtPXQpfWNvbnN0IGk9bmV3IEpwZWdJbWFnZShlKTtpLnBhcnNlKHRoaXMuYnl0ZXMpO2NvbnN0IGE9aS5nZXREYXRhKHt3aWR0aDp0aGlzLmRyYXdXaWR0aCxoZWlnaHQ6dGhpcy5kcmF3SGVpZ2h0LGZvcmNlUkdCQTp0aGlzLmZvcmNlUkdCQSxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1hLmxlbmd0aDt0aGlzLmVvZj0hMH19X193ZWJwYWNrX3JlcXVpcmVfXyg0OTc5KTt2YXIgb2ksZ2k9KG9pPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuY3VycmVudFNjcmlwdD8uc3JjOnZvaWQgMCxmdW5jdGlvbihlPXt9KXt2YXIgdCxpLGE9T2JqZWN0LmFzc2lnbih7fSxlKTtuZXcgUHJvbWlzZSgoKGUsYSk9Pnt0PWU7aT1hfSkpO2EuZGVjb2RlPWZ1bmN0aW9uKGUsdCl7Y29uc3QgaT1lLmxlbmd0aCxyPWEuX21hbGxvYyhpKTthLkhFQVBVOC5zZXQoZSxyKTtjb25zdCBzPWEuX2pwMl9kZWNvZGUocixpLHQ/MTowKTthLl9mcmVlKHIpO2lmKHMpe2NvbnN0e2Vycm9yTWVzc2FnZXM6ZX09YTtpZihlKXtkZWxldGUgYS5lcnJvck1lc3NhZ2VzO3JldHVybiBlfXJldHVybiJVbmtub3duIGVycm9yIn1jb25zdHtpbWFnZURhdGE6bn09YTthLmltYWdlRGF0YT1udWxsO3JldHVybiBufTt2YXIgcixzPU9iamVjdC5hc3NpZ24oe30sYSksbj0iLi90aGlzLnByb2dyYW0iLG89IiI7InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmKG89ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpO29pJiYobz1vaSk7bz1vLnN0YXJ0c1dpdGgoImJsb2I6Iik/IiI6by5zdWJzdHIoMCxvLnJlcGxhY2UoL1s/I10uKi8sIiIpLmxhc3RJbmRleE9mKCIvIikrMSk7dmFyIGcsYyxoLGwsQyxRPWEucHJpbnR8fGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksRT1hLnByaW50RXJyfHxjb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSk7T2JqZWN0LmFzc2lnbihhLHMpO3M9bnVsbDthLmFyZ3VtZW50cyYmYS5hcmd1bWVudHM7YS50aGlzUHJvZ3JhbSYmKG49YS50aGlzUHJvZ3JhbSk7YS5xdWl0JiZhLnF1aXQ7YS53YXNtQmluYXJ5JiYoZz1hLndhc21CaW5hcnkpO2Z1bmN0aW9uIHRyeVBhcnNlQXNEYXRhVVJJKGUpe2lmKGlzRGF0YVVSSShlKSlyZXR1cm4gZnVuY3Rpb24gaW50QXJyYXlGcm9tQmFzZTY0KGUpe2Zvcih2YXIgdD1hdG9iKGUpLGk9bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgpLGE9MDthPHQubGVuZ3RoOysrYSlpW2FdPXQuY2hhckNvZGVBdChhKTtyZXR1cm4gaX0oZS5zbGljZShiLmxlbmd0aCkpfWZ1bmN0aW9uIHVwZGF0ZU1lbW9yeVZpZXdzKCl7dmFyIGU9Yy5idWZmZXI7YS5IRUFQOD1oPW5ldyBJbnQ4QXJyYXkoZSk7YS5IRUFQMTY9bmV3IEludDE2QXJyYXkoZSk7YS5IRUFQVTg9bD1uZXcgVWludDhBcnJheShlKTthLkhFQVBVMTY9bmV3IFVpbnQxNkFycmF5KGUpO2EuSEVBUDMyPW5ldyBJbnQzMkFycmF5KGUpO2EuSEVBUFUzMj1DPW5ldyBVaW50MzJBcnJheShlKTthLkhFQVBGMzI9bmV3IEZsb2F0MzJBcnJheShlKTthLkhFQVBGNjQ9bmV3IEZsb2F0NjRBcnJheShlKX12YXIgdSxkPVtdLGY9W10scD1bXSxtPTAseT1udWxsLHc9bnVsbCxiPSJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIixpc0RhdGFVUkk9ZT0+ZS5zdGFydHNXaXRoKGIpO2Z1bmN0aW9uIGluc3RhbnRpYXRlU3luYyhlLHQpe3ZhciBpLGE9ZnVuY3Rpb24gZ2V0QmluYXJ5U3luYyhlKXtpZihlPT11JiZnKXJldHVybiBuZXcgVWludDhBcnJheShnKTt2YXIgdD10cnlQYXJzZUFzRGF0YVVSSShlKTtpZih0KXJldHVybiB0O2lmKHIpcmV0dXJuIHIoZSk7dGhyb3cnc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQ6IHlvdSBjYW4gcHJlbG9hZCBpdCB0byBNb2R1bGVbIndhc21CaW5hcnkiXSBtYW51YWxseSwgb3IgZW1jYy5weSB3aWxsIGRvIHRoYXQgZm9yIHlvdSB3aGVuIGdlbmVyYXRpbmcgSFRNTCAoYnV0IG5vdCBKUyknfShlKTtpPW5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYSk7cmV0dXJuW25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShpLHQpLGldfXZhciBELGNhbGxSdW50aW1lQ2FsbGJhY2tzPWU9Pntmb3IoO2UubGVuZ3RoPjA7KWUuc2hpZnQoKShhKX0sUz0oYS5ub0V4aXRSdW50aW1lLGU9Pnt2YXIgdD0oZS1jLmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNjt0cnl7Yy5ncm93KHQpO3VwZGF0ZU1lbW9yeVZpZXdzKCk7cmV0dXJuIDF9Y2F0Y2goZSl7fX0pLGs9e30sZ2V0RW52U3RyaW5ncz0oKT0+e2lmKCFnZXRFbnZTdHJpbmdzLnN0cmluZ3Mpe3ZhciBlPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3VzZXIiLExBTkc6KCJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzpufHwiLi90aGlzLnByb2dyYW0ifTtmb3IodmFyIHQgaW4gayl2b2lkIDA9PT1rW3RdP2RlbGV0ZSBlW3RdOmVbdF09a1t0XTt2YXIgaT1bXTtmb3IodmFyIHQgaW4gZSlpLnB1c2goYCR7dH09JHtlW3RdfWApO2dldEVudlN0cmluZ3Muc3RyaW5ncz1pfXJldHVybiBnZXRFbnZTdHJpbmdzLnN0cmluZ3N9LFI9W251bGwsW10sW11dLE49InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2Rlcj9uZXcgVGV4dERlY29kZXIoInV0ZjgiKTp2b2lkIDAsVVRGOEFycmF5VG9TdHJpbmc9KGUsdCxpKT0+e2Zvcih2YXIgYT10K2kscj10O2Vbcl0mJiEocj49YSk7KSsrcjtpZihyLXQ+MTYmJmUuYnVmZmVyJiZOKXJldHVybiBOLmRlY29kZShlLnN1YmFycmF5KHQscikpO2Zvcih2YXIgcz0iIjt0PHI7KXt2YXIgbj1lW3QrK107aWYoMTI4Jm4pe3ZhciBvPTYzJmVbdCsrXTtpZigxOTIhPSgyMjQmbikpe3ZhciBnPTYzJmVbdCsrXTtpZigobj0yMjQ9PSgyNDAmbik/KDE1Jm4pPDwxMnxvPDw2fGc6KDcmbik8PDE4fG88PDEyfGc8PDZ8NjMmZVt0KytdKTw2NTUzNilzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pO2Vsc2V7dmFyIGM9bi02NTUzNjtzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGM+PjEwLDU2MzIwfDEwMjMmYyl9fWVsc2Ugcys9U3RyaW5nLmZyb21DaGFyQ29kZSgoMzEmbik8PDZ8byl9ZWxzZSBzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4pfXJldHVybiBzfSxwcmludENoYXI9KGUsdCk9Pnt2YXIgaT1SW2VdO2lmKDA9PT10fHwxMD09PXQpeygxPT09ZT9ROkUpKFVURjhBcnJheVRvU3RyaW5nKGksMCkpO2kubGVuZ3RoPTB9ZWxzZSBpLnB1c2godCl9LFVURjhUb1N0cmluZz0oZSx0KT0+ZT9VVEY4QXJyYXlUb1N0cmluZyhsLGUsdCk6IiIsRz17ZjooZSx0LGkpPT5sLmNvcHlXaXRoaW4oZSx0LHQraSksYjplPT57dmFyIHQ9bC5sZW5ndGgsaT0yMTQ3NDgzNjQ4O2lmKChlPj4+PTApPmkpcmV0dXJuITE7Zm9yKHZhciBhLHIscz0xO3M8PTQ7cyo9Mil7dmFyIG49dCooMSsuMi9zKTtuPU1hdGgubWluKG4sZSsxMDA2NjMyOTYpO3ZhciBvPU1hdGgubWluKGksKGE9TWF0aC5tYXgoZSxuKSkrKChyPTY1NTM2KS1hJXIpJXIpO2lmKFMobykpcmV0dXJuITB9cmV0dXJuITF9LGM6KGUsdCk9Pnt2YXIgaT0wO2dldEVudlN0cmluZ3MoKS5mb3JFYWNoKCgoYSxyKT0+e3ZhciBzPXQraTtDW2UrNCpyPj4yXT1zOygoZSx0KT0+e2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7KytpKWhbdCsrXT1lLmNoYXJDb2RlQXQoaSk7aFt0XT0wfSkoYSxzKTtpKz1hLmxlbmd0aCsxfSkpO3JldHVybiAwfSxkOihlLHQpPT57dmFyIGk9Z2V0RW52U3RyaW5ncygpO0NbZT4+Ml09aS5sZW5ndGg7dmFyIGE9MDtpLmZvckVhY2goKGU9PmErPWUubGVuZ3RoKzEpKTtDW3Q+PjJdPWE7cmV0dXJuIDB9LGU6KGUsdCxpLGEpPT57Zm9yKHZhciByPTAscz0wO3M8aTtzKyspe3ZhciBuPUNbdD4+Ml0sbz1DW3QrND4+Ml07dCs9ODtmb3IodmFyIGc9MDtnPG87ZysrKXByaW50Q2hhcihlLGxbbitnXSk7cis9b31DW2E+PjJdPXI7cmV0dXJuIDB9LGc6ZnVuY3Rpb24gX2pzUHJpbnRXYXJuaW5nKGUpe2NvbnN0IHQ9VVRGOFRvU3RyaW5nKGUpOyhhLndhcm58fGNvbnNvbGUud2FybikoYE9wZW5KUEVHOiAke3R9YCl9LGg6ZnVuY3Rpb24gX3NldEltYWdlRGF0YShlLHQpe2EuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheShhLkhFQVBVOC5zdWJhcnJheShlLGUrdCkpfSxhOmZ1bmN0aW9uIF9zdG9yZUVycm9yTWVzc2FnZShlKXtjb25zdCB0PVVURjhUb1N0cmluZyhlKTthLmVycm9yTWVzc2FnZXM/YS5lcnJvck1lc3NhZ2VzKz0iXG4iK3Q6YS5lcnJvck1lc3NhZ2VzPXR9fSx4PWZ1bmN0aW9uIGNyZWF0ZVdhc20oKXt2YXIgZT1mdW5jdGlvbiBnZXRXYXNtSW1wb3J0cygpe3JldHVybnthOkd9fSgpO2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShlLHQpe3g9ZS5leHBvcnRzO2M9eC5pO3VwZGF0ZU1lbW9yeVZpZXdzKCk7IWZ1bmN0aW9uIGFkZE9uSW5pdChlKXtmLnVuc2hpZnQoZSl9KHguaik7IWZ1bmN0aW9uIHJlbW92ZVJ1bkRlcGVuZGVuY3koZSl7bS0tO2EubW9uaXRvclJ1bkRlcGVuZGVuY2llcz8uKG0pO2lmKDA9PW0pe2lmKG51bGwhPT15KXtjbGVhckludGVydmFsKHkpO3k9bnVsbH1pZih3KXt2YXIgdD13O3c9bnVsbDt0KCl9fX0oKTtyZXR1cm4geH0hZnVuY3Rpb24gYWRkUnVuRGVwZW5kZW5jeShlKXttKys7YS5tb25pdG9yUnVuRGVwZW5kZW5jaWVzPy4obSl9KCk7aWYoYS5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBhLmluc3RhbnRpYXRlV2FzbShlLHJlY2VpdmVJbnN0YW5jZSl9Y2F0Y2goZSl7RShgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtlfWApO2koZSl9dXx8KHU9ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxBR0Z6YlFFQUFBQUJ6Z0VhWUFOL2YzOEJmMkFFZjM5L2Z3Ri9ZQUYvQUdBQ2YzOEFZQUYvQVg5Z0EzOS9md0JnQW45L0FYOWdCSDkvZjM4QVlBTi9mbjhCZm1BQ2ZuOEJmMkFGZjM5L2YzOEJmMkFDZm44QmZtQURmMzUvQVg5Z0FBRi9ZQWQvZjM5L2YzOS9BWDlnQlg5L2YzOS9BR0FKZjM5L2YzOS9mMzkvQVg5Z0MzOS9mMzkvZjM5L2YzOS9BWDlnQm45L2YzOS9md0YvWUFaL2ZIOS9mMzhCZjJBSWYzOS9mMzkvZjM4QVlBaC9mMzkvZjM5L2Z3Ri9ZQUFBWUFaL2YzOS9mMzhBWUFkL2YzOS9mMzkvQUdBQ2ZIOEJmQUl4Q0FGaEFXRUFBZ0ZoQVdJQUJBRmhBV01BQmdGaEFXUUFCZ0ZoQVdVQUFRRmhBV1lBQlFGaEFXY0FBZ0ZoQVdnQUF3TytBYndCQndJRkFBWUVBQVVHQlFFRUR3VUVGQUlHQWdZQ0FnQVFFUVFDQ1JJQ0JRSUNBZ1FIQkFJTkRBWUNGUU1IQUFBRUF3RVdDZ29EQUFvR0FRUUVCUVVORGdFQkF3QURCZ0lRQkJjWUFnY0dBd2NIQVFFQ0FBUUVHUVlIQkE0UEFBUUNBZ0lBQmdBR0FRRUJBUUVCQVFFQUFBQUFBQVlEQWdJQ0F3TURBd01BQXhNSUJBMEFBd01BQkFnSkN3Z0FBQUVCQVFFQkFRRUJEQUVBQkFRRkNnNEJFaEVCQUFBR0F3TUJCUVVGQlFVRkJRVUJDd0VCQVFFQkFRRUJBUWtFQlFGd0FXeHNCUWNCQVlJQ2dJQUNCZ2dCZndGQmdOZ0ZDd2NiQmdGcEFnQUJhZ0E2QVdzQWp3RUJiQUFKQVcwQkFBRnVBSTRCQ2JJQkFRQkJBUXRyU3NNQnVRRnNiQytlQVpNQmtBR0VBWU1CZ2dHQkFZQUJmMzU5UzNwNWVIZDJkWFJ6Y25Gd2IyN0NBY0VCd0FHL0FiNEJ2UUU1dkFHN0FUazV1Z0c0QWJjQnRnRzFBYlFCc3dHeUFiRUJzQUdxQVo4Qm5RR2NBWnNCbWdHWkFaZ0Jsd0dXQVpVQmxBR1NBWkVCUWtORlMwRjhUREZKZTBnK1AwY2tJS0lCb1FHakFhc0Jyd0dzQWFZQm9BR2tBYVVCclFHdUFXbW5BYWdCcVFGS2pRR01BWVVCaHdHR0FZa0Jpd0dJQVFxQXVBMjhBWUlDQVFOL0l3QkJrQVJySWdRa0FBSkFJQUJGRFFBQ1FBSkFBa0FDUUNBQlFRRnJEZ1FBQVFRQ0JBc2dBRUVNYWlFQkRBSUxJQUJCRUdvaEFTQUFRUVJxSVFBTUFRc2dBRUVVYWlFQklBQkJDR29oQUFzZ0FTZ0NBQ0lGUlEwQUlBSkZEUUFnQUNnQ0FDRUdJQVJCQUVHQUJCQU9JZ0VnQXpZQ2pBUWpBRUdnQVdzaUFDUUFJQUFnQVRZQ2xBRWdBRUgvQXpZQ21BRWdBRUVBUVpBQkVBNGlBRUYvTmdKTUlBQkI1Z0EyQWlRZ0FFRi9OZ0pRSUFBZ0FFR2ZBV28yQWl3Z0FDQUFRWlFCYWpZQ1ZDQUJRUUE2QUFBZ0FDQUNJQU5CNXdCQjZBQVFaQ0FBUWFBQmFpUUFJQUZCQURvQS93TWdBU0FHSUFVUkF3QUxJQVJCa0FScUpBQUwwQUlCQlg4Z0FBUkFJQUJCQkdzaUF5Z0NBQ0lFSVFFZ0F5RUNJQUJCQ0dzb0FnQWlBQ0FBUVg1eElnQkhCRUFnQWlBQWF5SUNLQUlFSWdFZ0FpZ0NDQ0lGTmdJSUlBVWdBVFlDQkNBQUlBUnFJUUVMSUFNZ0JHb2lBQ2dDQUNJRElBQWdBMnBCQkdzb0FnQkhCRUFnQUNnQ0JDSUVJQUFvQWdnaUFEWUNDQ0FBSUFRMkFnUWdBU0FEYWlFQkN5QUNJQUUyQWdBZ0FpQUJRWHh4YWtFRWF5QUJRUUZ5TmdJQUlBSUNmeUFDS0FJQVFRaHJJZ0JCL3dCTkJFQWdBRUVEZGtFQmF3d0JDeUFBWnlFRElBQkJIU0FEYTNaQkJITWdBMEVDZEd0QjdnQnFJQUJCL3g5TkRRQWFRVDhnQUVFZUlBTnJka0VDY3lBRFFRRjBhMEhIQUdvaUFDQUFRVDlQR3dzaUFVRUVkQ0lBUWFER0FXbzJBZ1FnQWlBQVFhakdBV29pQUNnQ0FEWUNDQ0FBSUFJMkFnQWdBaWdDQ0NBQ05nSUVRYWpPQVVHb3pnRXBBd0JDQVNBQnJZYUVOd01BQ3d2SkFnRUVmeUFCUVFBMkFnQUNRQ0FDUlEwQUlBRWdBbW9oQXdKQUlBSkJFRWtFUUNBQUlRRU1BUXNDUUNBQUlBSnFJQUZORFFBZ0FDQURUdzBBSUFBaEFRd0JDeUFEUVJCcklRWWdBQ0FDUVhCeElnVnFJUUVnQXlBRmF5RURBMEFnQmlBRWF5QUFJQVJxL1FBQUFQME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQME5EdzROREFzS0NRZ0hCZ1VFQXdJQkFQMExBQUFnQkVFUWFpSUVJQVZIRFFBTElBSWdCVVlOQVFzQ1FDQUNRUU54SWdaRkJFQWdCU0VFREFFTFFRQWhBQ0FGSVFRRFFDQURRUUZySWdNZ0FTMEFBRG9BQUNBRVFRRnFJUVFnQVVFQmFpRUJJQUJCQVdvaUFDQUdSdzBBQ3dzZ0JTQUNhMEY4U3cwQUEwQWdBMEVCYXlBQkxRQUFPZ0FBSUFOQkFtc2dBUzBBQVRvQUFDQURRUU5ySUFFdEFBSTZBQUFnQTBFRWF5SURJQUV0QUFNNkFBQWdBVUVFYWlFQklBUkJCR29pQkNBQ1J3MEFDd3NMZ0FRQkEzOGdBa0dBQkU4RVFDQUFJQUVnQWhBRklBQVBDeUFBSUFKcUlRTUNRQ0FBSUFGelFRTnhSUVJBQWtBZ0FFRURjVVVFUUNBQUlRSU1BUXNnQWtVRVFDQUFJUUlNQVFzZ0FDRUNBMEFnQWlBQkxRQUFPZ0FBSUFGQkFXb2hBU0FDUVFGcUlnSkJBM0ZGRFFFZ0FpQURTUTBBQ3dzQ1FDQURRWHh4SWdSQndBQkpEUUFnQWlBRVFVQnFJZ1ZMRFFBRFFDQUNJQUVvQWdBMkFnQWdBaUFCS0FJRU5nSUVJQUlnQVNnQ0NEWUNDQ0FDSUFFb0FndzJBZ3dnQWlBQktBSVFOZ0lRSUFJZ0FTZ0NGRFlDRkNBQ0lBRW9BaGcyQWhnZ0FpQUJLQUljTmdJY0lBSWdBU2dDSURZQ0lDQUNJQUVvQWlRMkFpUWdBaUFCS0FJb05nSW9JQUlnQVNnQ0xEWUNMQ0FDSUFFb0FqQTJBakFnQWlBQktBSTBOZ0kwSUFJZ0FTZ0NPRFlDT0NBQ0lBRW9BancyQWp3Z0FVRkFheUVCSUFKQlFHc2lBaUFGVFEwQUN3c2dBaUFFVHcwQkEwQWdBaUFCS0FJQU5nSUFJQUZCQkdvaEFTQUNRUVJxSWdJZ0JFa05BQXNNQVFzZ0EwRUVTUVJBSUFBaEFnd0JDeUFBSUFOQkJHc2lCRXNFUUNBQUlRSU1BUXNnQUNFQ0EwQWdBaUFCTFFBQU9nQUFJQUlnQVMwQUFUb0FBU0FDSUFFdEFBSTZBQUlnQWlBQkxRQURPZ0FESUFGQkJHb2hBU0FDUVFScUlnSWdCRTBOQUFzTElBSWdBMGtFUUFOQUlBSWdBUzBBQURvQUFDQUJRUUZxSVFFZ0FrRUJhaUlDSUFOSERRQUxDeUFBQ3pBQkFYOENRQ0FBUlEwQUlBRkZEUUJCQ0NBQUlBRnNJZ0VRR3lJQUJFQWdBRUVBSUFFUURob0xJQUFoQWdzZ0Fnc1JBQ0FBUlFSQVFRQVBDMEVJSUFBUUd3dnlBZ0lDZndGK0FrQWdBa1VOQUNBQUlBRTZBQUFnQUNBQ2FpSURRUUZySUFFNkFBQWdBa0VEU1EwQUlBQWdBVG9BQWlBQUlBRTZBQUVnQTBFRGF5QUJPZ0FBSUFOQkFtc2dBVG9BQUNBQ1FRZEpEUUFnQUNBQk9nQURJQU5CQkdzZ0FUb0FBQ0FDUVFsSkRRQWdBRUVBSUFCclFRTnhJZ1JxSWdNZ0FVSC9BWEZCZ1lLRUNHd2lBVFlDQUNBRElBSWdCR3RCZkhFaUJHb2lBa0VFYXlBQk5nSUFJQVJCQ1VrTkFDQURJQUUyQWdnZ0F5QUJOZ0lFSUFKQkNHc2dBVFlDQUNBQ1FReHJJQUUyQWdBZ0JFRVpTUTBBSUFNZ0FUWUNHQ0FESUFFMkFoUWdBeUFCTmdJUUlBTWdBVFlDRENBQ1FSQnJJQUUyQWdBZ0FrRVVheUFCTmdJQUlBSkJHR3NnQVRZQ0FDQUNRUnhySUFFMkFnQWdCQ0FEUVFSeFFSaHlJZ1JySWdKQklFa05BQ0FCclVLQmdJQ0FFSDRoQlNBRElBUnFJUUVEUUNBQklBVTNBeGdnQVNBRk53TVFJQUVnQlRjRENDQUJJQVUzQXdBZ0FVRWdhaUVCSUFKQklHc2lBa0VmU3cwQUN3c2dBQXNuQVFGL0l3QkJFR3NpQXlRQUlBTWdBallDRENBQUlBRWdBa0VBUVFBUVpDQURRUkJxSkFBTDZBVUJDWDhnQVVVRVFFRUFEd3NDZnlBQVJRUkFRUWdnQVJBYkRBRUxJQUZGQkVBZ0FCQUpRUUFNQVFzQ1FDQUJRVWRMRFFBZ0FBSi9RUWdnQVVFRGFrRjhjU0FCUVFoTkd5SUhRUWhxSVFFQ1FBSi9Ba0FnQUVFRWF5SUtJZ1FvQWdBaUJTQUVhaUlDS0FJQUlna2dBaUFKYWlJSVFRUnJLQUlBUndSQUlBZ2dBU0FFYWlJRFFSQnFUd1JBSUFJb0FnUWlCU0FDS0FJSUlnSTJBZ2dnQWlBRk5nSUVJQU1nQ0NBRGF5SUNOZ0lBSUFNZ0FrRjhjV3BCQkdzZ0FrRUJjallDQUNBREFuOGdBeWdDQUVFSWF5SUNRZjhBVFFSQUlBSkJBM1pCQVdzTUFRc2dBa0VkSUFKbklnVnJka0VFY3lBRlFRSjBhMEh1QUdvZ0FrSC9IMDBOQUJwQlB5QUNRUjRnQld0MlFRSnpJQVZCQVhSclFjY0FhaUlDSUFKQlAwOGJDeUlDUVFSMElnVkJvTVlCYWpZQ0JDQURJQVZCcU1ZQmFpSUZLQUlBTmdJSUlBVWdBellDQUNBREtBSUlJQU0yQWdSQnFNNEJRYWpPQVNrREFFSUJJQUt0aG9RM0F3QWdCQ0FCTmdJQURBUUxJQU1nQ0VzTkFTQUNLQUlFSWdFZ0FpZ0NDQ0lETmdJSUlBTWdBVFlDQkNBRUlBVWdDV29pQVRZQ0FBd0RDeUFGSUFGQkVHcFBCRUFnQkNBQk5nSUFJQVFnQVVGOGNXcEJCR3NnQVRZQ0FDQUJJQVJxSWdNZ0JTQUJheUlCTmdJQUlBTWdBVUY4Y1dwQkJHc2dBVUVCY2pZQ0FDQURBbjhnQXlnQ0FFRUlheUlCUWY4QVRRUkFJQUZCQTNaQkFXc01BUXNnQVVFZElBRm5JZ1JyZGtFRWN5QUVRUUowYTBIdUFHb2dBVUgvSDAwTkFCcEJQeUFCUVI0Z0JHdDJRUUp6SUFSQkFYUnJRY2NBYWlJQklBRkJQMDhiQ3lJQlFRUjBJZ1JCb01ZQmFqWUNCQ0FESUFSQnFNWUJhaUlFS0FJQU5nSUlJQVFnQXpZQ0FDQURLQUlJSUFNMkFnUkJxTTRCUWFqT0FTa0RBRUlCSUFHdGhvUTNBd0JCQVF3RUMwRUJJQUVnQlUwTkFSb0xRUUFMREFFTElBUWdBVUY4Y1dwQkJHc2dBVFlDQUVFQkN3MEJHa0VJSUFjUUd5SUJSUTBBSUFFZ0FDQUhJQW9vQWdCQkNHc2lCaUFHSUFkTEd4QUxHaUFBRUFrZ0FTRUdDeUFHQ3dzWEFDQUFMUUFBUVNCeFJRUkFJQUVnQWlBQUVEWWFDd3U4QkFFRmZ5QUNJQUFvQWpBaUJVMEVRQ0FCSUFBb0FpUWdBaEFMR2lBQUlBQW9BaVFnQW1vMkFpUWdBQ0FBS0FJd0lBSnJOZ0l3SUFBZ0FDa0RPQ0FDclh3M0F6Z2dBZzhMSUFBdEFFUkJCSEVFUUNBQklBQW9BaVFnQlJBTEdpQUFLQUl3SVFFZ0FFRUFOZ0l3SUFBZ0FTQUFLQUlrYWpZQ0pDQUFJQUFwQXpnZ0FhMThOd000SUFWQmZ5QUZHdzhMQWtBZ0JRUkFJQUVnQUNnQ0pDQUZFQXNoQkNBQUlBQW9BaUFpQnpZQ0pDQUFLQUl3SVFFZ0FFRUFOZ0l3SUFBZ0FDa0RPQ0FCclh3M0F6Z2dBaUFCYXlFQ0lBRWdCR29oQVF3QkN5QUFJQUFvQWlBaUJ6WUNKQXNDUUFKQUEwQUNRQ0FBS0FJQUlRUWdBQ2dDRUNFR0FrQWdBQ2dDUUNJSUlBSkxCRUFnQUNBSElBZ2dCQ0FHRVFBQUlnWTJBakFnQmtGL1JnUkFEQVlMSUFJZ0JrME5BaUFCSUFBb0FpUWdCaEFMR2lBQUlBQW9BaUFpQnpZQ0pDQUFLQUl3SVFRTUFRc2dBQ0FCSUFJZ0JDQUdFUUFBSWdRMkFqQWdCRUYvUmdSQURBVUxJQUlnQkUwTkF5QUFJQUFvQWlBaUJ6WUNKQ0FFSVFZTElBQkJBRFlDTUNBQUlBQXBBemdnQksxOE53TTRJQUVnQkdvaEFTQUNJQVJySVFJZ0JTQUdhaUVGREFFTEN5QUJJQUFvQWlRZ0FoQUxHaUFBSUFBb0FpUWdBbW8yQWlRZ0FDQUFLQUl3SUFKck5nSXdJQUFnQUNrRE9DQUNyWHczQXpnZ0FpQUZhZzhMSUFCQkFEWUNNQ0FBSUFBb0FpQTJBaVFnQUNBQUtRTTRJQVN0ZkRjRE9DQUVJQVZxRHdzZ0EwRUVRYXYxQUVFQUVBZ2dBRUVBTmdJd0lBQWdBQ2dDUkVFRWNqWUNSQ0FGUVg4Z0JSc0xpd2NDRFg4QmZpQUFLQUlRSWdkQklFOEVRQ0FBS1FNSXB3OExBa0FnQUNnQ0dDSUNRUVJPQkVBZ0FDZ0NBQ0lCS0FJQUlRUWdBQ0FDUVFScklnVTJBaGdnQUNBQlFRUnFOZ0lBREFFTFFYOUJBQ0FBS0FJY0d5RUVJQUpCQUV3RVFDQUNJUVVNQVFzZ0FrRUJjU0VNSUFBb0FnQWhBUUpBSUFKQkFVWUVRQ0FCSVFZTUFRc2dBa0grLy8vL0IzRWhDZ05BSUFBZ0FVRUJhallDQUNBQkxRQUFJUWtnQUNBQlFRSnFJZ1kyQWdBZ0FDQUNRUUZyTmdJWUlBRXRBQUVoQVNBQUlBSkJBbXNpQWpZQ0dDQUVRZjhCSUFOMFFYOXpjU0FKSUFOMGNrR0EvZ01nQTNSQmYzTnhJQUVnQTBFSWNuUnlJUVFnQTBFUWFpRURJQVloQVNBRlFRSnFJZ1VnQ2tjTkFBc0xRUUFoQlNBTVJRMEFJQUFnQmtFQmFqWUNBQ0FHTFFBQUlRRWdBQ0FDUVFGck5nSVlJQVJCL3dFZ0EzUkJmM054SUFFZ0EzUnlJUVFMSUFBb0FoUWhBU0FBSUFSQkdIWWlDa0gvQVVZMkFoUWdBRUVIUVFnZ0FSc2lBVUVIUVFnZ0JFSC9BWEVpQmtIL0FVWWJhaUlDUVFkQkNDQUVRUWgyUWY4QmNTSURRZjhCUmh0cUlnbEJCMEVJSUFSQkVIWkIvd0Z4SWdSQi93RkdHeUFIYW1vaUNEWUNFQ0FBSUFBcEF3Z2dBeUFCZENBRUlBSjBjaUFLSUFsMGNpQUdjcTBnQjYyR2hDSU9Od01JSUFoQkgwMEVRQUpBSUFWQkJFNEVRQ0FBS0FJQUlnRW9BZ0FoQWlBQUlBVkJCR3MyQWhnZ0FDQUJRUVJxTmdJQURBRUxRUUFoQTBGL1FRQWdBQ2dDSEJzaEFpQUZRUUJNRFFBZ0JVRUJjU0VOSUFBb0FnQWhBUUpBSUFWQkFVWUVRQ0FCSVFRTUFRc2dCVUgrLy8vL0IzRWhDVUVBSVFZRFFDQUFJQUZCQVdvMkFnQWdBUzBBQUNFTElBQWdBVUVDYWlJRU5nSUFJQUFnQlVFQmF6WUNHQ0FCTFFBQklRRWdBQ0FGUVFKcklnVTJBaGdnQWtIL0FTQURkRUYvYzNFZ0N5QURkSEpCZ1A0RElBTjBRWDl6Y1NBQklBTkJDSEowY2lFQ0lBTkJFR29oQXlBRUlRRWdCa0VDYWlJR0lBbEhEUUFMQ3lBTlJRMEFJQUFnQkVFQmFqWUNBQ0FFTFFBQUlRRWdBQ0FGUVFGck5nSVlJQUpCL3dFZ0EzUkJmM054SUFFZ0EzUnlJUUlMSUFBZ0FrRVlkaUlCUWY4QlJqWUNGQ0FBUVFkQkNDQUtRZjhCUmhzaUJFRUhRUWdnQWtIL0FYRWlCa0gvQVVZYmFpSUZRUWRCQ0NBQ1FRaDJRZjhCY1NJRFFmOEJSaHRxSWdkQkIwRUlJQUpCRUhaQi93RnhJZ0pCL3dGR0d5QUlhbW8yQWhBZ0FDQURJQVIwSUFJZ0JYUnlJQUVnQjNSeUlBWnlyU0FJcllZZ0RvUWlEamNEQ0FzZ0RxY0xhd0VCZnlNQVFZQUNheUlGSkFBQ1FDQUNJQU5NRFFBZ0JFR0F3QVJ4RFFBZ0JTQUJJQUlnQTJzaUEwR0FBaUFEUVlBQ1NTSUJHeEFPR2lBQlJRUkFBMEFnQUNBRlFZQUNFQkVnQTBHQUFtc2lBMEgvQVVzTkFBc0xJQUFnQlNBREVCRUxJQVZCZ0FKcUpBQUxNUUFnQVFKL0lBSW9Ba3hCQUVnRVFDQUFJQUVnQWhBMkRBRUxJQUFnQVNBQ0VEWUxJZ0JHQkVBUEN5QUFJQUZ1R2dzM0FRSi9Jd0JCRUdzaUFTUUFJQUFFZnlBQlFReHFRUkFnQUJCbElRQkJBQ0FCS0FJTUlBQWJCVUVBQ3lFQ0lBRkJFR29rQUNBQ0N4Y0FJQUFnQVNBQ0lBTWdCQ0FGSUFZZ0IwRUJFQjhhQzJvQkEzOGdBQVJBSUFBb0FoZ2lBUVJBSUFBb0FoQWlBZ1IvUVFBaEFRTkFJQUFvQWhnZ0FVRTBiR29vQWl3aUF3UkFJQU1RQ1NBQUtBSVFJUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUlZQlNBQkN4QUpDeUFBS0FJY0lnRUVRQ0FCRUFrTElBQVFDUXNMb1FFQkJIOGdBVUVBVEFSQVFRQVBDeUFBS0FJTUlRSWdBQ2dDRUNFREEwQWdBU0VGQWtBZ0F3MEFJQUFnQWtFSWRFR0EvZ054SWdJMkFnd2dBRUVIUVFnZ0FrR0EvZ05HR3lJRE5nSVFJQUFvQWdnaUFTQUFLQUlFVHcwQUlBQWdBVUVCYWpZQ0NDQUFJQUlnQVMwQUFISWlBallDREFzZ0FDQURRUUZySWdNMkFoQWdBaUFEZGtFQmNTQUZRUUZySWdGMElBUnlJUVFnQlVFQlN3MEFDeUFFQ3g0QUlBQW9BZ3dFUUNBQVFRQTJBaWdEUUNBQUtBSVlRUUJLRFFBTEN3dVRCQUlHZndKK0FrQUNRQU5BSUFBZ0FFRUJhM0VOQVNBQlFVZExEUUVnQUVFSUlBQkJDRXNpQnhzaEFFR296Z0VwQXdBaUNBSi9RUWdnQVVFRGFrRjhjU0FCUVFoTkd5SUJRZjhBVFFSQUlBRkJBM1pCQVdzTUFRc2dBV2NoQXlBQlFSMGdBMnQyUVFSeklBTkJBblJyUWU0QWFpQUJRZjhmVFEwQUdrRS9JQUZCSGlBRGEzWkJBbk1nQTBFQmRHdEJ4d0JxSWdNZ0EwRS9UeHNMSWdPdGlDSUpRZ0JTQkVBRFFDQUpJQWw2SWdpSUlRa0NmaUFESUFpbmFpSURRUVIwSWdSQnFNWUJhaWdDQUNJQ0lBUkJvTVlCYWlJRlJ3UkFJQUlnQUNBQkVEVWlCQTBHSUFJb0FnUWlCQ0FDS0FJSUlnWTJBZ2dnQmlBRU5nSUVJQUlnQlRZQ0NDQUNJQVVvQWdRMkFnUWdCU0FDTmdJRUlBSW9BZ1FnQWpZQ0NDQURRUUZxSVFNZ0NVSUJpQXdCQzBHb3pnRkJxTTRCS1FNQVFuNGdBNjJKZ3pjREFDQUpRZ0dGQ3lJSlFnQlNEUUFMUWFqT0FTa0RBQ0VJQzBFL0lBaDVwMnNoQlFKQUlBaFFCRUJCQUNFQ0RBRUxJQVZCQkhRaUJFR294Z0ZxS0FJQUlRSWdDRUtBZ0lDQUJGUU5BRUhqQUNFRElBSWdCRUdneGdGcUlnWkdEUUFEUUNBRFJRMEJJQUlnQUNBQkVEVWlCQTBFSUFOQkFXc2hBeUFDS0FJSUlnSWdCa2NOQUFzTElBRWdBRUV3YWtFd0lBY2JhaEJtRFFBTElBSkZEUUFnQWlBRlFRUjBRYURHQVdvaUEwWU5BQU5BSUFJZ0FDQUJFRFVpQkEwQ0lBSW9BZ2dpQWlBRFJ3MEFDd3RCQUNFRUN5QUVDNUlWQVE5L0FrQUNRQ0FBS0FJTVJRUkFRUUVoRHlBQUtBSUVRUUJLRFFFZ0FDZ0NDRUVCU2cwQkRBSUxRUUVoRFNBQUtBSUlRUUJLRFFBZ0FDZ0NCRUVDU0EwQkN5QUFLQUlBSWdnZ0RVRUZkR29oQkFKQUlBQW9BaEFpQnlBQUtBSVVJZ3BQRFFBZ0JDQUhRUVowYWlFQkFrQWdDaUFIYTBFRGNTSUdSUVJBSUFjaEFnd0JDeUFISVFJRFFDQUJJQUg5QUFRQS9ReFlkcDAvV0hhZFAxaDJuVDlZZHAwLy9lWUIvUXNFQUNBQklBSDlBQVFRL1F4WWRwMC9XSGFkUDFoMm5UOVlkcDAvL2VZQi9Rc0VFQ0FCUVVCcklRRWdBa0VCYWlFQ0lBTkJBV29pQXlBR1J3MEFDd3NnQnlBS2EwRjhTdzBBQTBBZ0FTQUIvUUFFQVAwTVdIYWRQMWgyblQ5WWRwMC9XSGFkUC8zbUFmMExCQUFnQVNBQi9RQUVFUDBNV0hhZFAxaDJuVDlZZHAwL1dIYWRQLzNtQWYwTEJCQWdBU0FCL1FBRVFQME1XSGFkUDFoMm5UOVlkcDAvV0hhZFAvM21BZjBMQkVBZ0FTQUIvUUFFVVAwTVdIYWRQMWgyblQ5WWRwMC9XSGFkUC8zbUFmMExCRkFnQVNBQi9RQUVnQUg5REZoMm5UOVlkcDAvV0hhZFAxaDJuVC85NWdIOUN3U0FBU0FCSUFIOUFBU1FBZjBNV0hhZFAxaDJuVDlZZHAwL1dIYWRQLzNtQWYwTEJKQUJJQUVnQWYwQUJNQUIvUXhZZHAwL1dIYWRQMWgyblQ5WWRwMC8vZVlCL1FzRXdBRWdBU0FCL1FBRTBBSDlERmgyblQ5WWRwMC9XSGFkUDFoMm5ULzk1Z0g5Q3dUUUFTQUJRWUFDYWlFQklBSkJCR29pQWlBS1J3MEFDd3NnQ0NBUFFRVjBhaUVGQWtBZ0FDZ0NHQ0lHSUFBb0Fod2lDMDhOQUNBRklBWkJCblJxSVFFQ1FDQUxJQVpyUVFOeElnaEZCRUFnQmlFQ0RBRUxRUUFoQXlBR0lRSURRQ0FCSUFIOUFBUUEvUXdBR05BL0FCalFQd0FZMEQ4QUdOQS8vZVlCL1FzRUFDQUJJQUg5QUFRUS9Rd0FHTkEvQUJqUVB3QVkwRDhBR05BLy9lWUIvUXNFRUNBQlFVQnJJUUVnQWtFQmFpRUNJQU5CQVdvaUF5QUlSdzBBQ3dzZ0JpQUxhMEY4U3cwQUEwQWdBU0FCL1FBRUFQME1BQmpRUHdBWTBEOEFHTkEvQUJqUVAvM21BZjBMQkFBZ0FTQUIvUUFFRVAwTUFCalFQd0FZMEQ4QUdOQS9BQmpRUC8zbUFmMExCQkFnQVNBQi9RQUVRUDBNQUJqUVB3QVkwRDhBR05BL0FCalFQLzNtQWYwTEJFQWdBU0FCL1FBRVVQME1BQmpRUHdBWTBEOEFHTkEvQUJqUVAvM21BZjBMQkZBZ0FTQUIvUUFFZ0FIOURBQVkwRDhBR05BL0FCalFQd0FZMEQvOTVnSDlDd1NBQVNBQklBSDlBQVNRQWYwTUFCalFQd0FZMEQ4QUdOQS9BQmpRUC8zbUFmMExCSkFCSUFFZ0FmMEFCTUFCL1F3QUdOQS9BQmpRUHdBWTBEOEFHTkEvL2VZQi9Rc0V3QUVnQVNBQi9RQUUwQUg5REFBWTBEOEFHTkEvQUJqUVB3QVkwRC85NWdIOUN3VFFBU0FCUVlBQ2FpRUJJQUpCQkdvaUFpQUxSdzBBQ3dzZ0NpQUFLQUlJSWdrZ0FDZ0NCQ0lPSUExcklnQWdBQ0FKU2hzaUNDQUlJQXBMR3lFTUlBUkJJR29oQVFKL0lBZEZCRUFnREVVRVFFRUFJUU1nQVF3Q0N5QUVJQVQ5QUFRQUlBWDlBQVFBSUFUOUFBUWcvZVFCL1F4VkUrTStWUlBqUGxVVDR6NVZFK00rL2VZQi9lVUIvUXNFQUNBRUlBVDlBQVFRSUFYOUFBUVFJQVQ5QUFRdy9lUUIvUXhWRStNK1ZSUGpQbFVUNHo1VkUrTSsvZVlCL2VVQi9Rc0VFRUVCSVFNZ0JFSGdBR29NQVFzZ0FTQUhJZ05CQm5ScUN5RUNJQU1nREVrRVFBTkFJQUpCSUdzaUFDQUEvUUFFQUNBQ1FVQnEvUUFFQUNBQy9RQUVBUDNrQWYwTVZSUGpQbFVUNHo1VkUrTStWUlBqUHYzbUFmM2xBZjBMQkFBZ0FrRVFheUlBSUFEOUFBUUFJQUpCTUd2OUFBUUFJQUw5QUFRUS9lUUIvUXhWRStNK1ZSUGpQbFVUNHo1VkUrTSsvZVlCL2VVQi9Rc0VBQ0FDUVVCcklRSWdBMEVCYWlJRElBeEhEUUFMQ3lBSUlBcFBJZzFGQkVBZ0FrRWdheUlBSUFEOUFBUUFJQUpCUUdyOUFBUUEvUXhWRTJNL1ZSTmpQMVVUWXo5VkUyTS8vZVlCL2VVQi9Rc0VBQ0FDUVJCcklnQWdBUDBBQkFBZ0FrRXdhLzBBQkFEOURGVVRZejlWRTJNL1ZSTmpQMVVUWXovOTVnSDk1UUg5Q3dRQUN5QUxJQTRnQ1NBUGF5SUFJQUFnRGtvYklnNGdDeUFPU1JzaENTQUZRU0JxSVFJZ0NRSi9JQVpGQkVBZ0NVVUVRQ0FDSVFOQkFBd0NDeUFGSUFYOUFBUUFJQVQ5QUFRQUlBWDlBQVFnL2VRQi9ReDJCbUkvZGdaaVAzWUdZajkyQm1JLy9lWUIvZVVCL1FzRUFDQUZJQVg5QUFRUUlBVDlBQVFRSUFYOUFBUXcvZVFCL1F4MkJtSS9kZ1ppUDNZR1lqOTJCbUkvL2VZQi9lVUIvUXNFRUNBRlFlQUFhaUVEUVFFTUFRc2dBaUFHUVFaMGFpRURJQVlMSWdCTEJFQURRQ0FEUVNCcklnZ2dDUDBBQkFBZ0EwRkFhdjBBQkFBZ0EvMEFCQUQ5NUFIOURIWUdZajkyQm1JL2RnWmlQM1lHWWovOTVnSDk1UUg5Q3dRQUlBTkJFR3NpQ0NBSS9RQUVBQ0FEUVRCci9RQUVBQ0FEL1FBRUVQM2tBZjBNZGdaaVAzWUdZajkyQm1JL2RnWmlQLzNtQWYzbEFmMExCQUFnQTBGQWF5RURJQUJCQVdvaUFDQUpSdzBBQ3dzZ0N5QU9UU0lJUlFSQUlBTkJJR3NpQUNBQS9RQUVBQ0FEUVVCcS9RQUVBUDBNZGdiaVAzWUc0ajkyQnVJL2RnYmlQLzNtQWYzbEFmMExCQUFnQTBFUWF5SUFJQUQ5QUFRQUlBTkJNR3Y5QUFRQS9ReDJCdUkvZGdiaVAzWUc0ajkyQnVJLy9lWUIvZVVCL1FzRUFBc0NRQ0FIUlFSQUlBeEZCRUJCQUNFSERBSUxJQVFnQlAwQUJBQWdCZjBBQkFBZ0JQMEFCQ0Q5NUFIOURLNEJXVDJ1QVZrOXJnRlpQYTRCV1QzOTVnSDk1QUg5Q3dRQUlBUWdCUDBBQkJBZ0JmMEFCQkFnQlAwQUJERDk1QUg5REs0QldUMnVBVms5cmdGWlBhNEJXVDM5NWdIOTVBSDlDd1FRSUFSQjRBQnFJUUZCQVNFSERBRUxJQUVnQjBFR2RHb2hBUXNnQnlBTVNRUkFBMEFnQVVFZ2F5SUFJQUQ5QUFRQUlBRkJRR3I5QUFRQUlBSDlBQVFBL2VRQi9ReXVBVms5cmdGWlBhNEJXVDJ1QVZrOS9lWUIvZVFCL1FzRUFDQUJRUkJySWdBZ0FQMEFCQUFnQVVFd2EvMEFCQUFnQWYwQUJCRDk1QUg5REs0QldUMnVBVms5cmdGWlBhNEJXVDM5NWdIOTVBSDlDd1FBSUFGQlFHc2hBU0FIUVFGcUlnY2dERWNOQUFzTElBMUZCRUFnQVVFZ2F5SUFJQUQ5QUFRQUlBRkJRR3I5QUFRQS9ReXVBZGs5cmdIWlBhNEIyVDJ1QWRrOS9lWUIvZVFCL1FzRUFDQUJRUkJySWdBZ0FQMEFCQUFnQVVFd2EvMEFCQUQ5REs0QjJUMnVBZGs5cmdIWlBhNEIyVDM5NWdIOTVBSDlDd1FBQ3dKQUlBWkZCRUFnQ1VVRVFFRUFJUVlNQWdzZ0JTQUYvUUFFQUNBRS9RQUVBQ0FGL1FBRUlQM2tBZjBNY3diTFAzTUd5ejl6QnNzL2N3YkxQLzNtQWYza0FmMExCQUFnQlNBRi9RQUVFQ0FFL1FBRUVDQUYvUUFFTVAza0FmME1jd2JMUDNNR3l6OXpCc3MvY3diTFAvM21BZjNrQWYwTEJCQWdCVUhnQUdvaEFrRUJJUVlNQVFzZ0FpQUdRUVowYWlFQ0N5QUdJQWxKQkVBRFFDQUNRU0JySWdBZ0FQMEFCQUFnQWtGQWF2MEFCQUFnQXYwQUJBRDk1QUg5REhNR3l6OXpCc3MvY3diTFAzTUd5ei85NWdIOTVBSDlDd1FBSUFKQkVHc2lBQ0FBL1FBRUFDQUNRVEJyL1FBRUFDQUMvUUFFRVAza0FmME1jd2JMUDNNR3l6OXpCc3MvY3diTFAvM21BZjNrQWYwTEJBQWdBa0ZBYXlFQ0lBWkJBV29pQmlBSlJ3MEFDd3NnQ0EwQUlBSkJJR3NpQUNBQS9RQUVBQ0FDUVVCcS9RQUVBUDBNY3daTFFITUdTMEJ6Qmt0QWN3WkxRUDNtQWYza0FmMExCQUFnQWtFUWF5SUFJQUQ5QUFRQUlBSkJNR3Y5QUFRQS9ReHpCa3RBY3daTFFITUdTMEJ6Qmt0QS9lWUIvZVFCL1FzRUFBc0xYUUVFZnlBQUJFQWdBQ2dDRkNJQklBQW9BaEFpQW13RVFBTkFJQUFvQWhnZ0EwRUNkR29vQWdBaUJBUkFJQVFRQ1NBQUtBSVFJUUlnQUNnQ0ZDRUJDeUFEUVFGcUlnTWdBU0FDYkVrTkFBc0xJQUFvQWhnUUNTQUFFQWtMQzRVQkFRSi9Ba0FDUUNBQUtBSUVJZ01nQUNnQ0FDSUVSd1JBSUFBb0FnZ2hBd3dCQ3lBQUlBTkJDbW9pQkRZQ0JDQUFLQUlJSUFSQkFuUVFFQ0lEUlEwQklBQWdBellDQ0NBQUtBSUFJUVFMSUFNZ0JFRUNkR29nQVRZQ0FDQUFJQVJCQVdvMkFnQkJBUThMSUFBb0FnZ1FDU0FBUWdBM0FnQWdBa0VCUWRJdVFRQVFDRUVBQzlnakFpcC9BM3NDUUNBQUtBSUFJZ2tnQTBrTkFDQUJJQU5QRFFBZ0FTQUpUdzBBSUFBb0FnUWlDU0FFU1EwQUlBSWdCRThOQUNBQ0lBbFBEUUFnQlVFY2F5RW9JQUFvQWdnaUdVRUNkQ0VSSUFkQkFuUWhEeUFHUVFKMElSOGdCVUVFYXlFcElBSWdBQ2dDREc0aEhpQUJJQmx1SVNNZ0JrRUlSeUVrSUFJaEhRTkFJQUFvQWd3aUNTRUtJQUlnSFVZRVFDQUpJQUlnQ1hCcklRb0xJQW9nQkNBZGF5SU1JQW9nREVrYkloTkJmSEVoR3lBVFFRTnhJUllnRTBGNGNTRXFJQk5CQjNFaEpTQVRRUUZySVJvZ0dTQUpRUUowSUFwQkFuUnJRUVJxYkNFZ0lBWkJBa1lnRTBFQlJuRWhLeUFKSUFwcklCbHNJU1lnS0NBUElCMGdBbXNpREd3aUNXb2hKeUFKSUNscUlTd2dCU0FKYWlFdElBVWdCeUFNYkVFQ2RHb2hIQ0FqSVNFZ0FTRVlBMEFnR1NBWklDTnNJQUZyYWlBWklBRWdHRVliSWd3Z0F5QVlheUlKSUFrZ0RFc2JJUkFnR1NBTWF5RUpJQ0ZCQW5RaURTQUFLQUlZSUFBb0FoQWdIbXhCQW5ScWFpZ0NBQ0VTQWtBQ1FDQUlCRUFDUUFKQUFrQUNRQUpBSUJJRVFDQVNJQ1pCQW5ScUlBbEJBblJxSVFvZ0dDQUJheUVOSUFaQkFVWU5CQ0FjSUFZZ0RXeEJBblJxSVFzZ0VFRUJSZzBESUNzTkFpQWtEUUVnRUVFSFRRMEJJQk5GRFFnZ0p5QU5JQjlzYWlBUVFRVjBhaUVWSUJJZ0lDQVFRUUowYWlBTVFRSjBhMm9oSWlBUVFYeHhJUTFCQUNFU0RBVUxJQVpCQVVjRVFDQVRSUTBJSUJCQmZIRWhEU0FRUVFOeElRd2dIQ0FZSUFGcklBWnNRUUowYWlFTFFRQWhFaUFRUVFGclFRTkpJUlFEUUFKQUlCQkZEUUJCQUNFSlFRQWhDa0VBSVE0Z0ZFVUVRQU5BSUFzZ0JpQUtiRUVDZEdwQkFEWUNBQ0FMSUFwQkFYSWdCbXhCQW5ScVFRQTJBZ0FnQ3lBS1FRSnlJQVpzUVFKMGFrRUFOZ0lBSUFzZ0NrRURjaUFHYkVFQ2RHcEJBRFlDQUNBS1FRUnFJUW9nRGtFRWFpSU9JQTFIRFFBTEN5QU1SUTBBQTBBZ0N5QUdJQXBzUVFKMGFrRUFOZ0lBSUFwQkFXb2hDaUFKUVFGcUlna2dERWNOQUFzTElBc2dEMm9oQ3lBVElCSkJBV29pRWtjTkFBc01DQXNnRTBVTkJ5QVFRUUowSVF3Z0hDQVlJQUZyUVFKMGFpRUxRUUFoQ1NBYVFRZFBCRUFEUUNBTFFRQWdEQkFPSUE5cVFRQWdEQkFPSUE5cVFRQWdEQkFPSUE5cVFRQWdEQkFPSUE5cVFRQWdEQkFPSUE5cVFRQWdEQkFPSUE5cVFRQWdEQkFPSUE5cVFRQWdEQkFPSUE5cUlRc2dDVUVJYWlJSklDcEhEUUFMQzBFQUlRa2dKVVVOQndOQUlBdEJBQ0FNRUE0Z0Qyb2hDeUFKUVFGcUlna2dKVWNOQUFzTUJ3c2dFMFVOQmlBUVFYeHhJUlFnRUVFRGNTRVNRUUFoRFNBUVFRRnJRUU5KSVJjTUJRdEJBQ0VKSUJCQmZIRWlEZ1JBQTBBZ0N5QUpRUU4wYWlBS0lBbEJBblJxS0FJQU5nSUFJQXNnQ1VFQmNpSVVRUU4wYWlBS0lCUkJBblJxS0FJQU5nSUFJQXNnQ1VFQ2NpSVVRUU4wYWlBS0lCUkJBblJxS0FJQU5nSUFJQXNnQ1VFRGNpSVVRUU4wYWlBS0lCUkJBblJxS0FJQU5nSUFJQWxCQkdvaUNTQU9TUTBBQ3dzZ0NTQVFUdzBGQWtBZ0VDQUpheUlVUVJCSkRRQWdMU0FOSUI5c0lnMXFJQWxCQTNScUlCSWdJR29pRGlBUUlBeHJRUUowYWtrRVFDQU9JQWtnREd0QkFuUnFJQTBnTEdvZ0VFRURkR3BKRFFFTElBb2dDVUVDZEdvaERTQUovUkg5REFBQUFBQUJBQUFBQWdBQUFBTUFBQUQ5cmdFaE15QUpJQlJCZkhFaURHb2hDVUVBSVE0RFFDQUxJRE5CQWYyckFTSTAvUnNBUVFKMGFpQU5JQTVCQW5ScS9RQUNBQ0kxL1ZvQ0FBQWdDeUEwL1JzQlFRSjBhaUExL1ZvQ0FBRWdDeUEwL1JzQ1FRSjBhaUExL1ZvQ0FBSWdDeUEwL1JzRFFRSjBhaUExL1ZvQ0FBTWdNLzBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFeklBNUJCR29pRGlBTVJ3MEFDeUFNSUJSR0RRWUxRUUFoRENBSklRNGdFQ0FKYTBFRGNTSU5CRUFEUUNBTElBNUJBM1JxSUFvZ0RrRUNkR29vQWdBMkFnQWdEa0VCYWlFT0lBeEJBV29pRENBTlJ3MEFDd3NnQ1NBUWEwRjhTdzBGQTBBZ0N5QU9RUU4wYWlBS0lBNUJBblJxS0FJQU5nSUFJQXNnRGtFQmFpSUpRUU4wYWlBS0lBbEJBblJxS0FJQU5nSUFJQXNnRGtFQ2FpSUpRUU4wYWlBS0lBbEJBblJxS0FJQU5nSUFJQXNnRGtFRGFpSUpRUU4wYWlBS0lBbEJBblJxS0FJQU5nSUFJQTVCQkdvaURpQVFSdzBBQ3d3RkN5QVRSUTBFUVFBaENTQWFRUU5QQkVBRFFDQUxJQW9vQWdBMkFnQWdDeUFQYWlJTUlBb2dFV29pRFNnQ0FEWUNBQ0FNSUE5cUlnd2dEU0FSYWlJTktBSUFOZ0lBSUF3Z0Qyb2lEQ0FOSUJGcUlnMG9BZ0EyQWdBZ0RTQVJhaUVLSUF3Z0Qyb2hDeUFKUVFScUlna2dHMGNOQUFzTFFRQWhDU0FXUlEwRUEwQWdDeUFLS0FJQU5nSUFJQW9nRVdvaENpQUxJQTlxSVFzZ0NVRUJhaUlKSUJaSERRQUxEQVFMSUJ3Z0RVRUNkR29oQ3lBUVFRUkhCRUFnRTBVTkJDQVFRUUowSVFsQkFDRU9JQnBCQTA4RVFBTkFJQXNnQ2lBSkVBc2hMeUFLSUJGcUlnMGdFV29pQ3lBUmFpSVNJQkZxSVFvZ0x5QVBhaUFOSUFrUUN5QVBhaUFMSUFrUUN5QVBhaUFTSUFrUUN5QVBhaUVMSUE1QkJHb2lEaUFiUncwQUN3dEJBQ0VPSUJaRkRRUURRQ0FMSUFvZ0NSQUxJVEFnQ2lBUmFpRUtJREFnRDJvaEN5QU9RUUZxSWc0Z0ZrY05BQXNNQkFzZ0UwVU5BMEVBSVFrZ0drRURUd1JBQTBBZ0N5QUsvUUFDQVAwTEFnQWdDeUFQYWlJTUlBb2dFV29pRGYwQUFnRDlDd0lBSUF3Z0Qyb2lEQ0FOSUJGcUlnMzlBQUlBL1FzQ0FDQU1JQTlxSWd3Z0RTQVJhaUlOL1FBQ0FQMExBZ0FnRFNBUmFpRUtJQXdnRDJvaEN5QUpRUVJxSWdrZ0cwY05BQXNMUVFBaENTQVdSUTBEQTBBZ0N5QUsvUUFDQVAwTEFnQWdDaUFSYWlFS0lBc2dEMm9oQ3lBSlFRRnFJZ2tnRmtjTkFBc01Bd3NEUUVFQUlRa2dEUVJBQTBBZ0N5QUpRUVYwYWlBS0lBbEJBblJxS0FJQU5nSUFJQXNnQ1VFQmNpSU1RUVYwYWlBS0lBeEJBblJxS0FJQU5nSUFJQXNnQ1VFQ2NpSU1RUVYwYWlBS0lBeEJBblJxS0FJQU5nSUFJQXNnQ1VFRGNpSU1RUVYwYWlBS0lBeEJBblJxS0FJQU5nSUFJQWxCQkdvaUNTQU5TUTBBQ3dzQ1FDQUpJQkJQRFFBQ1FDQVFJQWxySWhSQkNFOEVRQUpBSUFzZ0NVRUZkR29nSWlBUklCSnNhazhOQUNBS0lBbEJBblJxSUJVZ0R5QVNiR3BQRFFBZ0NTRU1EQUlMSUFuOUVmME1BQUFBQUFFQUFBQUNBQUFBQXdBQUFQMnVBU0V6SUFrZ0ZFRjhjU0lYYWlFTVFRQWhEZ05BSUFzZ00wRUQvYXNCSWpUOUd3QkJBblJxSUFvZ0NTQU9ha0VDZEdyOUFBSUFJalg5V2dJQUFDQUxJRFQ5R3dGQkFuUnFJRFg5V2dJQUFTQUxJRFQ5R3dKQkFuUnFJRFg5V2dJQUFpQUxJRFQ5R3dOQkFuUnFJRFg5V2dJQUF5QXovUXdFQUFBQUJBQUFBQVFBQUFBRUFBQUEvYTRCSVRNZ0RrRUVhaUlPSUJkSERRQUxJQlFnRjBZTkFnd0JDeUFKSVF3TFFRQWhEaUFRSUF3aUNXdEJBM0VpRkFSQUEwQWdDeUFKUVFWMGFpQUtJQWxCQW5ScUtBSUFOZ0lBSUFsQkFXb2hDU0FPUVFGcUlnNGdGRWNOQUFzTElBd2dFR3RCZkVzTkFBTkFJQXNnQ1VFRmRHb2dDaUFKUVFKMGFpZ0NBRFlDQUNBTElBbEJBV29pREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBbW9pREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBTElBbEJBMm9pREVFRmRHb2dDaUFNUVFKMGFpZ0NBRFlDQUNBSlFRUnFJZ2tnRUVjTkFBc0xJQW9nRVdvaENpQUxJQTlxSVFzZ0V5QVNRUUZxSWhKSERRQUxEQUlMSUJKRkJFQkJBU0FBS0FJSUlBQW9BZ3hzUVFKMEVBd2lFa1VFUUVFQUR3c2dBQ2dDR0NBQUtBSVFJQjVzUVFKMGFpQU5haUFTTmdJQUN5QVNJQ1pCQW5ScUlBbEJBblJxSVFzZ0dDQUJheUVKQWtBQ1FBSkFBa0FnQmtFQlJ3UkFJQndnQmlBSmJFRUNkR29oQ2lBUVFRRkdEUUVnSkEwQ0lCQkJCMDBOQWlBVFJRMEdJQ2NnQ1NBZmJHb2dFRUVGZEdvaElpQWdJQkJCQW5ScUlBeEJBblJySVM0Z0VFRjhjU0VVUVFBaERBTkFRUUFoQ1NBVUJFQURRQ0FMSUFsQkFuUnFJQW9nQ1VFRmRHb29BZ0EyQWdBZ0N5QUpRUUZ5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUUp5SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0N5QUpRUU55SWcxQkFuUnFJQW9nRFVFRmRHb29BZ0EyQWdBZ0NVRUVhaUlKSUJSSkRRQUxDd0pBSUFrZ0VFOE5BQUpBSUJBZ0NXc2lGMEVJVHdSQUFrQWdDeUFKUVFKMGFpQWlJQXdnRDJ4cVR3MEFJQW9nQ1VFRmRHb2dFaUF1SUF3Z0VXeHFhazhOQUNBSklRME1BZ3NnQ2YwUi9Rd0FBQUFBQVFBQUFBSUFBQUFEQUFBQS9hNEJJVE1nQ1NBWFFYeHhJaFZxSVExQkFDRU9BMEFnQ3lBSklBNXFRUUowYWlBS0lETkJBLzJyQVNJMC9Sc0RRUUowYWlBS0lEVDlHd0pCQW5ScUlBb2dOUDBiQVVFQ2RHb2dDaUEwL1JzQVFRSjBhdjBKQWdEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlEUDlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoTXlBT1FRUnFJZzRnRlVjTkFBc2dGU0FYUmcwQ0RBRUxJQWtoRFF0QkFDRU9JQkFnRFNJSmEwRURjU0lYQkVBRFFDQUxJQWxCQW5ScUlBb2dDVUVGZEdvb0FnQTJBZ0FnQ1VFQmFpRUpJQTVCQVdvaURpQVhSdzBBQ3dzZ0RTQVFhMEY4U3cwQUEwQWdDeUFKUVFKMGFpQUtJQWxCQlhScUtBSUFOZ0lBSUFzZ0NVRUJhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRUNhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFzZ0NVRURhaUlOUVFKMGFpQUtJQTFCQlhScUtBSUFOZ0lBSUFsQkJHb2lDU0FRUncwQUN3c2dDeUFSYWlFTElBb2dEMm9oQ2lBVElBeEJBV29pREVjTkFBc01CZ3NnSENBSlFRSjBhaUVLSUJCQkJFWU5BaUFUUlEwRklCQkJBblFoQ1VFQUlRNGdHa0VEVHdSQUEwQWdDeUFLSUFrUUN5RXhJQW9nRDJvaURTQVBhaUlMSUE5cUloSWdEMm9oQ2lBeElCRnFJQTBnQ1JBTElCRnFJQXNnQ1JBTElCRnFJQklnQ1JBTElCRnFJUXNnRGtFRWFpSU9JQnRIRFFBTEMwRUFJUTRnRmtVTkJRTkFJQXNnQ2lBSkVBc2hNaUFLSUE5cUlRb2dNaUFSYWlFTElBNUJBV29pRGlBV1J3MEFDd3dGQ3lBVFJRMEVRUUFoQ1NBYVFRTlBCRUFEUUNBTElBb29BZ0EyQWdBZ0N5QVJhaUlNSUFvZ0Qyb2lEU2dDQURZQ0FDQU1JQkZxSWd3Z0RTQVBhaUlOS0FJQU5nSUFJQXdnRVdvaURDQU5JQTlxSWcwb0FnQTJBZ0FnRENBUmFpRUxJQTBnRDJvaENpQUpRUVJxSWdrZ0cwY05BQXNMUVFBaENTQVdSUTBFQTBBZ0N5QUtLQUlBTmdJQUlBc2dFV29oQ3lBS0lBOXFJUW9nQ1VFQmFpSUpJQlpIRFFBTERBUUxJQk5GRFFNZ0VFRjhjU0VVSUJCQkEzRWhFa0VBSVEwZ0VFRUJhMEVEU1NFWERBRUxJQk5GRFFKQkFDRUpJQnBCQTA4RVFBTkFJQXNnQ3YwQUFnRDlDd0lBSUFzZ0VXb2lEQ0FLSUE5cUlnMzlBQUlBL1FzQ0FDQU1JQkZxSWd3Z0RTQVBhaUlOL1FBQ0FQMExBZ0FnRENBUmFpSU1JQTBnRDJvaURmMEFBZ0Q5Q3dJQUlBMGdEMm9oQ2lBTUlCRnFJUXNnQ1VFRWFpSUpJQnRIRFFBTEMwRUFJUWtnRmtVTkFnTkFJQXNnQ3YwQUFnRDlDd0lBSUFvZ0Qyb2hDaUFMSUJGcUlRc2dDVUVCYWlJSklCWkhEUUFMREFJTEEwQUNRQ0FRUlEwQVFRQWhEa0VBSVFsQkFDRU1JQmRGQkVBRFFDQUxJQWxCQW5ScUlBb2dCaUFKYkVFQ2RHb29BZ0EyQWdBZ0N5QUpRUUZ5SWhWQkFuUnFJQW9nQmlBVmJFRUNkR29vQWdBMkFnQWdDeUFKUVFKeUloVkJBblJxSUFvZ0JpQVZiRUVDZEdvb0FnQTJBZ0FnQ3lBSlFRTnlJaFZCQW5ScUlBb2dCaUFWYkVFQ2RHb29BZ0EyQWdBZ0NVRUVhaUVKSUF4QkJHb2lEQ0FVUncwQUN3c2dFa1VOQUFOQUlBc2dDVUVDZEdvZ0NpQUdJQWxzUVFKMGFpZ0NBRFlDQUNBSlFRRnFJUWtnRGtFQmFpSU9JQkpIRFFBTEN5QUxJQkZxSVFzZ0NpQVBhaUVLSUJNZ0RVRUJhaUlOUncwQUN3d0JDd05BQWtBZ0VFVU5BRUVBSVE1QkFDRUpRUUFoRENBWFJRUkFBMEFnQ3lBR0lBbHNRUUowYWlBS0lBbEJBblJxS0FJQU5nSUFJQXNnQ1VFQmNpSVZJQVpzUVFKMGFpQUtJQlZCQW5ScUtBSUFOZ0lBSUFzZ0NVRUNjaUlWSUFac1FRSjBhaUFLSUJWQkFuUnFLQUlBTmdJQUlBc2dDVUVEY2lJVklBWnNRUUowYWlBS0lCVkJBblJxS0FJQU5nSUFJQWxCQkdvaENTQU1RUVJxSWd3Z0ZFY05BQXNMSUJKRkRRQURRQ0FMSUFZZ0NXeEJBblJxSUFvZ0NVRUNkR29vQWdBMkFnQWdDVUVCYWlFSklBNUJBV29pRGlBU1J3MEFDd3NnQ2lBUmFpRUtJQXNnRDJvaEN5QU5RUUZxSWcwZ0UwY05BQXNMSUNGQkFXb2hJU0FRSUJocUloZ2dBMGtOQUFzZ0hrRUJhaUVlSUJNZ0hXb2lIU0FFU1EwQUN3dEJBUXZJTXdVbWZ3OStBWHNCZlFGOEl3QkIwQUJySWc4a0FDQVBRWkQvQXpZQ0tDQUFLQUpzSUFBb0FtaHNJUmNDZndKQUFrQUNRQ0FBS0FJSUlndEJDRWNFUUVFQUlBdEJnQUpIRFFRYUlBOUIyZjhETmdJb0RBRUxJQUF0QUVSQkFYRU5BQ0FYUVFGeElTSWdGMEY4Y1NFTklCZEJBV3V0UW93c2ZpSXhRaUNJcDBFQVJ5RWpJREduSVNRZ0QwSE5BR29oSlNBUFFjd0FhaUVvSUE5QnlBQnFJU2tnRjBFa1NTRXFRWkQvQXlFTEFrQUNRQUpBQTBBQ1FDQUxRWlAvQTBZTkFBSkFBMEFnQ1NrRENDSXhVQVIrUWdBRklERWdDU2tET0gwTFVBUkFJQUJCd0FBMkFnZ01Bd3NnQ1NBQUtBSVFRUUlnQ2hBU1FRSkhCRUFnQ2tFQlFaWVNRUUFRQ0VFQURBc0xJQUFvQWhBZ0QwRWtha0VDRUFvZ0R5Z0NKQ0lMUVFGTkJFQWdDa0VCUVljdVFRQVFDRUVBREFzTEFrQWdEeWdDS0VHQWdRSkdCRUFnQ1NrRENDSXhVQVIrUWdBRklERWdDU2tET0gwTFVBMEJJQThvQWlRaEN3c2dBQ2dDQ0NJVVFSQnhCRUFnQUNBQUtBSVlJQXRyUVFKck5nSVlDeUFQSUF0QkFtc2lFallDSkVId3ZRRWhEQ0FQS0FJb0lRNERRQ0FNSWdzb0FnQWlHQVJBSUF0QkRHb2hEQ0FPSUJoSERRRUxDeUFMS0FJRUlCUnhSUVJBSUFwQkFVSDhLRUVBRUFoQkFBd01Dd0pBSUFBb0FoUWdFazhFUUNBQUtBSVFJUXdNQVFzZ0NTa0RDQ0l4VUFSK1FnQUZJREVnQ1NrRE9IMExJQkt0VXdSQUlBcEJBVUdNTEVFQUVBaEJBQXdOQ3lBQUtBSVFJQThvQWlRUUVDSU1SUVJBSUFBb0FoQVFDU0FBUWdBM0F4QWdDa0VCUWRRbFFRQVFDRUVBREEwTElBQWdERFlDRUNBQUlBOG9BaVFpRWpZQ0ZBc2dDU0FNSUJJZ0NoQVNJZ3dnRHlnQ0pFY0VRQ0FLUVFGQmxoSkJBQkFJUVFBTURBc2dDeWdDQ0NJTFJRUkFJQXBCQVVIcTFnQkJBQkFJUVFBTURBc2dBQ0FBS0FJUUlBd2dDaUFMRVFFQVJRUkFJQThnRHlnQ0tEWUNJQ0FLUVFGQnBPZ0FJQTlCSUdvUUNFRUFEQXdMSUFrcEF6Z2hNU0FQS0FJa0lSRWdBQ2dDeUFFaUZDZ0NLQ0lTSUFBb0Fzd0JJZ3hCS0d3aURtb2lGaWdDRkNJY1FRRnFJaDBnRmlnQ0hDSUxTd1JBSUJZQ2Z5QUxzME1BQU1oQ2tpSkJRd0FBZ0U5ZElFRkRBQUFBQUdCeEJFQWdRYWtNQVF0QkFBc2lDellDSENBV0tBSVlJQXRCR0d3UUVDRUxJQlFvQWlnaUVpQU9haUVXSUF0RkRRTWdGaUFMTmdJWUlCWW9BaFFpSEVFQmFpRWRDeUFPSUJKcUlnNG9BaGdnSEVFWWJHb2lDeUFSUVFScU5nSVFJQXNnTWFjZ0VXdEJCR3NpREt3M0F3Z2dDeUFZT3dFQUlBNGdIVFlDRkFKQUlCaEJrUDhEUncwQUlBNG9BaEFpQ3dSQUlBc2dEaWdDREVFWWJHb2dESzAzQXdBTElBa3BBemluSUE4b0FpUnJRUVJyclNJeElBQXBBekJYRFFBZ0FDQXhOd013Q3lBQUxRQkVRUVJ4QkVBZ0NTQUFOUUlZSUFvZ0NTZ0NLQkVJQUNBQU5RSVlVZ1JBSUFwQkFVR1dFa0VBRUFoQkFBd05DeUFQUVpQL0F6WUNLQXdFQ3lBSklBQW9BaEJCQWlBS0VCSkJBa2NFUUNBS1FRRkJsaEpCQUJBSVFRQU1EQXNnQUNnQ0VDQVBRU2hxUVFJUUNpQVBLQUlvUVpQL0EwY05BUXdEQ3dzZ0FFSEFBRFlDQ0F3QkN5QVdLQUlZRUFrZ0ZDZ0NLQ0FNUVNoc2FpSUFRUUEyQWh3Z0FFSUFOd0lVSUFwQkFVR0ZIVUVBRUFoQkFBd0lDd0pBSUFrcEF3Z2lNVkFFZmtJQUJTQXhJQWtwQXpoOUMxQUVRQ0FBS0FJSVFjQUFSZzBCQ3dKQUFrQWdBQzBBUkNJTFFRUnhSUVJBSUFBb0Fzd0JRWXdzYkNFTUlBQW9BcHdCSVM0Q1FBSkFJQUFvQWpnRVFDQUpLUU1JSWpGUUJINUNBQVVnTVNBSktRTTRmUXVuSVJNTUFRc2dBQ2dDR0NJVFFRSkpEUUVMSUFBZ0UwRUNheUlUTmdJWUN5QXVJQXhxSVJnZ0UwVU5BU0FKS1FNSUlqRlFCSDVDQUFVZ01TQUpLUU00ZlFzZ0U2MVRCRUFnQUNnQ3VBRUVRQ0FLUVFGQnVTeEJBQkFJUVFBTURRc2dDa0VDUWJrc1FRQVFDQXNnQUNnQ0dDSU9RWDVQQkVBZ0NrRUJRZjRLUVFBUUNFRUFEQXdMQWtBZ0dDZ0MzQ3NpREFSQUlCZ29BdUFySWd0QmZTQU9hMHNFUUNBS1FRRkJ1d2xCQUJBSVFRQU1EZ3NnRENBTElBNXFRUUpxRUJBaUN3UkFJQmdnQ3pZQzNDc01CQXNnR0NnQzNDc1FDU0FZUVFBMkF0d3JEQUVMSUJnZ0RrRUNhaEFOSWdzMkF0d3JJQXNOQWdzZ0NrRUJRWWN2UVFBUUNFRUFEQXNMSUFCQkNEWUNDQ0FBSUF0QitnRnhPZ0JFREFFTElBQW9Bc2dCSWhZRVFDQVdLQUlvSWhJZ0FDZ0N6QUVpRkVFb2JDSVJhaUlNS0FJUUlBd29BZ3hCR0d4cUlnc2dDU2tET0NJeVFnSjlJakUzQXdnZ0N5QXlJQUExQWhoOE53TVFJQUFvQWhnaERnSkFJQXdvQWhRaUhFRUJhaUlkSUF3b0Fod2lDMDBFUUNBTUtBSVlJUXdNQVFzZ0RBSi9JQXV6UXdBQXlFS1NJa0ZEQUFDQVQxMGdRVU1BQUFBQVlIRUVRQ0JCcVF3QkMwRUFDeUlMTmdJY0lBd29BaGdnQzBFWWJCQVFJUXdnRmlnQ0tDSVNJQkZxSVFzZ0RFVU5CaUFMSUF3MkFoZ2dDeWdDRkNJY1FRRnFJUjBMSUF3Z0hFRVliR29pQ3lBT1FRSnFOZ0lRSUFzZ01jUTNBd2dnQzBHVC93TTdBUUFnRVNBU2FpQWROZ0lVQ3lBQUtBSVlJUXdDUUNBVFJRUkFRUUFoRXd3QkN5QUpJQmdvQXR3cklCZ29BdUFyYWlBTUlBb1FFaUVUSUFBb0FoZ2hEQXNnQUVFSVFjQUFJQXdnRTBZYk5nSUlJQmdnR0NnQzRDc2dFMm8yQXVBcklBQXRBRVFpQzBFSmNVRUJSdzBBSUFBZ0MwRUljam9BUkNBQUtBTE1BU0VPSUFrb0FoeEJBa1lOQUNBSktRTTRJakZDZjFFTkFBSkFBMEJCQUNFTUlBa2dEMEhHQUdvaUMwRUNJQW9RRWtFQ1J3MEJJQXNnRDBGQWEwRUNFQW9nRHlnQ1FFR1Evd05IRFFGQmxoSWhFaUFKSUF0QkFpQUtFQkpCQWtjTkNTQUxJQTlCUEdwQkFoQUtJQThvQWp4QkNrY0VRRUdITGlFU0RBb0xJQTlCQ0RZQ1BDQUpJQTlCeGdCcVFRZ2dDaEFTSWdzZ0R5Z0NQRWNOQ1NBTFFRaEhCRUJCdlI0aEVnd0tDeUFQUWNZQWFpQVBRVGhxUVFJUUNpQXBJQTlCTkdwQkJCQUtJQ2dnRDBFd2FrRUJFQW9nSlNBUFFTeHFRUUVRQ2lBT0lBOG9BamhIQkVBZ0R5Z0NOQ0lMUVE1SkRRSWdEeUFMUVF4cklnczJBalFnQ1NBTHJTQUtJQWtvQWlnUkNBQWdEelVDTkZFTkFRd0NDd3NnRHlnQ01DQVBLQUlzUmlFTUN5QUpJREVnQ2lBSktBSXNFUXdBUlEwSUlBeEZEUUFnQUNBQUxRQkVRZTRCY1VFUWNqb0FSQUpBSUJkRkRRQWdBQ2dDbkFFaEUwRUFJUXNDUUNBcURRQWdFMEhZSzJvaURDQWthaUFNU1NBamNnMEFBMEFnRXlBTFFZd3NiR29pSENnQzJDc2lIZjBSSUJNZ0MwRUJja0dNTEd4cUloZ29BdGdySWhiOUhBRWdFeUFMUVFKeVFZd3NiR29pRVNnQzJDc2lGUDBjQWlBVElBdEJBM0pCakN4c2FpSU9LQUxZS3lJTS9Sd0QvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUEvVGdpUVAwYkFFRUJjUVJBSUJ4QjJDdHFJQjFCQVdvMkFnQUxJRUQ5R3dGQkFYRUVRQ0FZUWRncmFpQVdRUUZxTmdJQUN5QkEvUnNDUVFGeEJFQWdFVUhZSzJvZ0ZFRUJhallDQUFzZ1FQMGJBMEVCY1FSQUlBNUIyQ3RxSUF4QkFXbzJBZ0FMSUF0QkJHb2lDeUFOUncwQUN5QVhJQTBpQzBZTkFRc2dDMEVCY2lFTUlDSUVRQ0FUSUF0QmpDeHNhaUlPS0FMWUt5SUxCRUFnRGtIWUsyb2dDMEVCYWpZQ0FBc2dEQ0VMQ3lBTUlCZEdEUUFEUUNBVElBdEJqQ3hzYWlJT0tBTFlLeUlNQkVBZ0RrSFlLMm9nREVFQmFqWUNBQXNnRGtIazF3QnFJZzRvQWdBaURBUkFJQTRnREVFQmFqWUNBQXNnQzBFQ2FpSUxJQmRIRFFBTEN5QUtRUUpCbGNNQVFRQVFDQXNnQUMwQVJFRUJjUTBBSUFrZ0FDZ0NFRUVDSUFvUUVrRUNSd1JBQWtBZ0FDZ0N6QUZCQVdvZ0YwY05BQ0FYUlEwQUlBQW9BcHdCSVF4QkFDRUxBMEFnRENBTFFZd3NiR29pQ1NnQzFDdEZCRUFnQ1NnQzJDdEZEUWdMSUF0QkFXb2lDeUFYUncwQUN3c2dDa0VCUVpZU1FRQVFDRUVBREFrTElBQW9BaEFnRDBFb2FrRUNFQW9nRHlnQ0tDRUxJQUF0QUVSQkFYRU5BaUFMUWRuL0EwY05BUXdDQ3dzZ0R5Z0NLQ0VMQ3lBTFFkbi9BMGNOQWlBQUtBSUlRWUFDUmcwQ0lBQkJnQUkyQWdnZ0FFRUFOZ0xNQVF3Q0N5QUxLQUlZRUFrZ0ZpZ0NLQ0FVUVNoc2FpSUFRUUEyQWh3Z0FFSUFOd0lVSUFwQkFVR0ZIVUVBRUFoQkFBd0VDeUFQSUFzMkFoQWdDa0VFUWNMUkFDQVBRUkJxRUFnZ0FDQUxOZ0xNQVNBUFFkbi9BellDS0NBQVFZQUNOZ0lJQ3lBQUtBTE1BU0VMSUFBb0Fwd0JJUWtDUUFKQUlBQXRBRVJCQVhFTkFBSkFBa0FnQ3lBWFR3MEFJQWtnQzBHTUxHeHFJUk1EUUNBVEtBTGNLdzBCSUFBZ0MwRUJhaUlMTmdMTUFTQVRRWXdzYWlFVElBc2dGMGNOQUFzTUFRc2dDeUFYUncwQkN5QUlRUUEyQWdBTUFRc0NRQUpBSUFwQkFTQUpJQXRCakN4c2FpSVJLQUswS0FSL1FadzBCU0FSTFFDSUxFRUNjVVVOQWdKQUlCRW9BcWdvSWcxRkJFQkJBQ0VNREFFTElCRW9BcXdvSVFsQkFDRU1RUUFoQ3lBTlFRUlBCRUFnRFVGOGNTRUwvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJVUJCQUNFU0EwQWdDU0FTUVFOMGFpSU1RUnhxSUF4QkZHb2dERUVNYWlBTS9Ra0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QkEvYTRCSVVBZ0VrRUVhaUlTSUF0SERRQUxJRUFnUUNCQS9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJa0FnUUNCQS9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVF3Z0N5QU5SZzBCQ3dOQUlBa2dDMEVEZEdvb0FnUWdER29oRENBTFFRRnFJZ3NnRFVjTkFBc0xJQkVnREJBTklnazJBclFvSUFrTkFVR1hIZ3RCQUJBSUlBcEJBVUgxUEVFQUVBaEJBQXdGQ3lBUklBdzJBcndvSUJFb0Fxd29JUWtnRVNnQ3FDZ2lEQVJBUVFBaEVrRUFJUXNEUUNBSklBdEJBM1FpRkdvaURpZ0NBQ0lOQkVBZ0VTZ0N0Q2dnRW1vZ0RTQU9LQUlFRUFzYUlCRW9BcXdvSUJScUlna29BZ1FoTHlBSktBSUFFQWtnRVNnQ3JDZ2lDU0FVYWtJQU53SUFJQzhnRW1vaEVpQVJLQUtvS0NFTUN5QUxRUUZxSWdzZ0RFa05BQXNMSUJGQkFEWUNxQ2dnQ1JBSklCRkJBRFlDckNnZ0VTQVJLQUswS0RZQ3NDZ2dFU0FSS0FLOEtEWUN1Q2dMQW45QkFDRW9JQUFvQXRBQklnc29BaHdpSmlnQ1RDQUFLQUxNQVNJSlFZd3NiR29vQXRBcklSc2dDeWdDR0NJVUtBSVlJU2NnQ3lnQ0ZDZ0NBQ0llSUNZb0FnUWdKaWdDRENJTElBa2dDU0FtS0FJWUlnbHVJZ3dnQ1d4cmJHb2lEaUFVS0FJQUlna2dDU0FPU1JzaURUWUNBQ0FlUVg4Z0N5QU9haUlKSUFrZ0Rra2JJZ3NnRkNnQ0NDSUpJQWtnQzBzYklnazJBZ2dDUUNBSklBMUtJQTFCQUU1eFJRUkFJQXBCQVVHQk0wRUFFQWdNQVFzZ0hpZ0NGQ0VRSUI0Z0ppZ0NDQ0FNSUNZb0FoQWlDMnhxSWcwZ0ZDZ0NCQ0lKSUFrZ0RVa2JJZ3cyQWdRZ0hrRi9JQXNnRFdvaUNTQUpJQTFKR3lJTElCUW9BZ3dpQ1NBSklBdExHeUlKTmdJTUlBa2dERW9nREVFQVRuRkZCRUFnQ2tFQlFkc3lRUUFRQ0F3QkN3SkFJQnNvQWdRRVFDQWVLQUlRRFFGQkFRd0RDeUFLUVFGQjFTaEJBQkFJREFFTEFrQUNRQU5BSUNkQkFEWUNKQ0FRSUNjMEFnQWlOVUlCZlNJeElCNDBBZ0I4SURWL1BnSUFJQkFnSnpRQ0JDSTBRZ0Y5SWpJZ0hqUUNCSHdnTkg4K0FnUWdFQ0F4SUI0MEFnaDhJRFYvUGdJSUlCNDBBZ3doTVNBUUlDZzJBaEFnRUNBeElESjhJRFIvUGdJTUlCQWdHeWdDQkNJTE5nSVVJQkJCQVNBTElDWW9BbEFpQ1dzZ0NTQUxTeHMyQWhnZ0VDZ0NOQkFKSUJCQkFEWUNSQ0FRL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1FzQ05DQUxRWmdCYkNFTUFrQWdFQ2dDSENJSlJRUkFJQkFnREJBTklnazJBaHdnQ1VVTkJTQVFJQXcyQWlBZ0NVRUFJQXdRRGhvTUFRc2dEQ0FRS0FJZ1RRMEFJQWtnREJBUUlndEZCRUFnQ2tFQlFZQVhRUUFRQ0NBUUtBSWNFQWtnRUVJQU53SWNEQVVMSUJBZ0N6WUNIQ0FMSUJBb0FpQWlDV3BCQUNBTUlBbHJFQTRhSUJBZ0REWUNJQXNnRUNnQ0ZDSUxCRUFnRzBHd0Iyb2hIU0FiUWF3R2FpRVlJQnRCSEdvaEt5QVFLQUljSVJwQkFDRXNBMEFnR2tKL0lBdEJBV3NpQ2EwaU00WkNmNFVpTWlBUU5BSUFmQ0F6aDZjaUZqWUNBQ0FhSURJZ0VEUUNCSHdnTTRlbkloRTJBZ1FnR2lBeUlCQTBBZ2g4SURPSElqR25JaFEyQWdnZ0dpQXlJQkEwQWd4OElET0hJalNuSWc0MkFnd2dNY1JDQVNBWUlDeEJBblFpREdvb0FnQWlINjBpTVlaOFFnRjlJREdIcHlBZmRDSU5RUUJJRFFRZ05NUkNmeUFNSUIxcUtBSUFJaUN0SWpHR1FuK0ZmQ0F4aDZjZ0lIUWlERUVBU0EwRUlCb2dERUYvSUNCMElCRnhJaE5ySUNCMVFRQWdEaUFSUnhzaUREWUNGQ0FhSUExQmZ5QWZkQ0FXY1NJaWF5QWZkVUVBSUJRZ0ZrY2JJZzAyQWhBQ1FDQU5SUTBBSUEydElBeXRma0lnaUZBTkFBd0VDeUFNSUExc0lpTkI1OHlaTTA4TkF5QWpRU2hzSVNFZ0dpQXNCSDhnSUVFQmF5RWdJQjlCQVdzaEh5QVRyRUlCZkVJQmlLY2hFeUFpckVJQmZFSUJpS2NoSWtFREJVRUJDellDR0NBYVFSeHFJUlZDQVNBTHJTSTJoaUUzUW44Z0d5Z0NEQ0lMSUNBZ0N5QWdTUnNpTGEwaVBJWkNmNFVoUFVKL0lCc29BZ2dpQ3lBZklBc2dIMGtiSWhLdElqNkdRbitGSVQ5QkFDRXBBMEFDZmlBc1JRUkFJRElnRURRQ0JId2dNNGNoT0NBeUlCQTBBZ0I4SURPSElUbEJBQ0VMSURJaU1TRTZJRE1NQVFzZ055QXBRUUZxSWd0QkFYYXRJRE9HUW4rRmZDSTZJQkEwQWdSOElEYUhJVGdnTnlBTFFRRnhyU0F6aGtKL2hYd2lNU0FRTkFJQWZDQTJoeUU1SURZTElUc2dFRFFDQ0NFMUlCQTBBZ3doTkNBVklEZytBZ1FnRlNBNVBnSUFJQlVnQ3pZQ0VDQVZJRFFnT253Z080YytBZ3dnRlNBeElEVjhJRHVIUGdJSVFRQWhEUUpBSUJzb0FoUkZEUUFnQzBVTkFFRUNRUUVnQzBFRFJoc2hEUXNnS3lnQ0JDRU1SQUFBQUFBQUFQQS9JVUlDUUNBbktBSVlJQTFxSUNzb0FnQnJJZ3RCZ0FoT0JFQkVBQUFBQUFBQTRIOGhRaUFMUWY4UFNRUkFJQXRCL3dkcklRc01BZ3RFQUFBQUFBQUE4SDhoUWtIOUZ5QUxJQXRCL1JkUEcwSCtEMnNoQ3d3QkN5QUxRWUY0U2cwQVJBQUFBQUFBQUdBRElVSWdDMEc0Y0VzRVFDQUxRY2tIYWlFTERBRUxSQUFBQUFBQUFBQUFJVUpCOEdnZ0N5QUxRZkJvVFJ0QmtnOXFJUXNMSUJVZ1FpQUxRZjhIYXExQ05JYS9vaUFNdDBRQUFBQUFBQUJBUDZKRUFBQUFBQUFBOEQrZ29yWTRBaUFnRlNBcktBSUFJQnNvQXFRR2FrRUJhellDSENBVktBSVVJUXNDUUFKQUFrQWdJMFVOQUNBTERRQWdGU0FoRUEwaUN6WUNGQ0FMUlFSQUlBcEJBVUdVRlVFQUVBZ01DZ3NnQzBFQUlDRVFEaG9nRlNBaE5nSVlEQUVMSUNFZ0ZTZ0NHRXNFUUNBTElDRVFFQ0lNUlFSQUlBcEJBVUdVRlVFQUVBZ2dGU2dDRkJBSklCVkNBRGNDRkF3S0N5QVZJQXcyQWhRZ0RDQVZLQUlZSWd0cVFRQWdJU0FMYXhBT0dpQVZJQ0UyQWhnTElDTkZEUUVMSUJVb0FoUWhDMEVBSVNRRFFDQUxJQ1FnSkNBYUtBSVFJZ3h1SWhZZ0RHeHJJZzRnSDNRZ0ltb2lEU0FWS0FJQUlnd2dEQ0FOU0JzaUVUWUNBQ0FMSUJZZ0lIUWdFMm9pRFNBVktBSUVJZ3dnRENBTlNCc2lGRFlDQkNBTElBNUJBV29nSDNRZ0ltb2lEU0FWS0FJSUlnd2dEQ0FOU2hzaURqWUNDQ0FMSUJaQkFXb2dJSFFnRTJvaURTQVZLQUlNSWd3Z0RDQU5TaHNpRERZQ0RDQUxJRDhnRHF4OElENkhweUFSSUJKMUloWnJJQkowSUJKMUlnMDJBaEFnQ3lBOUlBeXNmQ0E4aDZjZ0ZDQXRkU0lSYXlBdGRDQXRkU0lNTmdJVUlBd2dEV3dpSmExQ0JvWkNJSWhDQUZJRVFDQUtRUUZCNVJWQkFCQUlEQWtMSUNWQkJuUWhEZ0pBQW44Q1FDQUxLQUlZSWd3TkFDQWxSUTBBSUFzZ0RoQU5JZ3cyQWhnZ0RFVU5DeUFNUVFBZ0RoQU9HaUFMUVJ4cURBRUxJQTRnQ3lnQ0hFME5BU0FNSUE0UUVDSU5SUVJBSUFzb0FoZ1FDU0FMUWdBM0FoZ2dDa0VCUWVNU1FRQVFDQXdMQ3lBTElBMDJBaGdnRFNBTEtBSWNJZ3hxUVFBZ0RpQU1heEFPR2lBTFFSeHFDeUFPTmdJQUN5QUxLQUlVSVE0Z0N5Z0NFQ0VOSUFzQ2Z5QUxLQUlnSWd4RkJFQWdEU0FPSUFvUVhBd0JDeUFNSUEwZ0RpQUtFRm9MTmdJZ0lBc29BaFFoRGlBTEtBSVFJUTBnQ3dKL0lBc29BaVFpREVVRVFDQU5JQTRnQ2hCY0RBRUxJQXdnRFNBT0lBb1FXZ3MyQWlRZ0pRUkFRUUFoRndOQUlCY2dDeWdDRUNJT2JpRWNBa0FnQ3lnQ0dDQVhRUVowYWlJWktBSUFJaFFFUUNBWktBSTRJUTBnR1NnQ0JDRU1JQmtvQWpBaEtpQVpLQUk4RUFrZ0dmME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMExBaWdnR1VJQU53STRJQm45REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5Q3dJWUlCbjlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlDd0lJSUJrZ0ZEWUNBQ0FaSUNvMkFqQWdLZ1JBSUJSQkFDQXFRUmhzRUE0YUN5QVpJQTAyQWpnZ0dTQU1OZ0lFREFFTElCbEJDa0VZRUF3aUREWUNBQ0FNUlEwTElCbEJDallDTUFzZ0dTQVhJQTRnSEd4cklCWnFJaFFnRW5RaURTQUxLQUlBSWd3Z0RDQU5TQnMyQWdnZ0dTQVJJQnhxSWc0Z0xYUWlEU0FMS0FJRUlnd2dEQ0FOU0JzMkFnd2dHU0FVUVFGcUlCSjBJZzBnQ3lnQ0NDSU1JQXdnRFVvYk5nSVFJQmtnRGtFQmFpQXRkQ0lOSUFzb0Fnd2lEQ0FNSUExS0d6WUNGQ0FYUVFGcUloY2dKVWNOQUFzTElBdEJLR29oQ3lBa1FRRnFJaVFnSTBjTkFBc0xJQ3RCQ0dvaEt5QVZRU1JxSVJVZ0tVRUJhaUlwSUJvb0FoaEpEUUFMSUJwQm1BRnFJUm9nQ1NFTElDeEJBV29pTENBUUtBSVVTUTBBQ3dzZ0owRTBhaUVuSUJCQnpBQnFJUkFnRzBHNENHb2hHeUFvUVFGcUlpZ2dIaWdDRUVrTkFBdEJBUXdEQ3lBS1FRRkJsQlpCQUJBSURBRUxJQXBCQVVHekVVRUFFQWdMUVFBTFJRUkFJQXBCQVVIQ0cwRUFFQWhCQUF3RUN5QUFLQUxNQVNFSklBOGdBQ2dDYUNBQUtBSnNiRFlDQkNBUElBbEJBV28yQWdBZ0NrRUVRYzdYQUNBUEVBZ2dBU0FBS0FMTUFUWUNBQ0FJUVFFMkFnQWdBZ1JBSUFJZ0FDZ0MwQUZCQUJCTklnRTJBZ0JCQUNBQlFYOUdEUVFhQ3lBRElBQW9BdEFCS0FJVUtBSUFJZ0VvQWdBMkFnQWdCQ0FCS0FJRU5nSUFJQVVnQVNnQ0NEWUNBQ0FHSUFFb0FndzJBZ0FnQnlBQktBSVFOZ0lBSUFBZ0FDZ0NDRUdBQVhJMkFnZ0xRUUVNQWdzZ0NrRUJJQkpCQUJBSUN5QUtRUUZCNUJ0QkFCQUlRUUFMSVRBZ0QwSFFBR29rQUNBd0M5NFFBZzEvQW40Q1FDQUFLQUlnSWdVTkFBSkFJQUFvQWhBaUNVRUZTZ1JBSUFraEF3d0JDd0pBQWtBZ0FDZ0NGQ0lDUVFWT0JFQWdBQ2dDQUNJQktBSUFJUVVnQUNBQlFRUnFOZ0lBSUFKQkJHc2hCd3dCQ3lBQ1FRQk1CRUJCZnlFRkRBSUxJQUFvQWdBaEFRSi9JQUpCQVVZRVFFRi9JUVpCQUF3QkMwRi9JUVlnQWtFQmF5SURRUUZ4SVEwQ1FDQUNRUUpHQkVCQkFDRUZJQUloQkF3QkN5QURRWDV4SVF0QkFDRUZJQUVoQXlBQ0lRUURRQ0FBSUFOQkFXbzJBZ0FnQXkwQUFDRU1JQUFnQTBFQ2FpSUJOZ0lBSUFBZ0JFRUJhellDRkNBRExRQUJJUU1nQUNBRVFRSnJJZ1EyQWhRZ0JrSC9BU0FGZEVGL2MzRWdEQ0FGZEhKQmdQNERJQVYwUVg5emNTQURJQVZCQ0hKMGNpRUdJQVZCRUdvaEJTQUJJUU1nQ0VFQ2FpSUlJQXRIRFFBTEN5QU5CRUFnQUNBQlFRRnFJZ00yQWdBZ0FTMEFBQ0VCSUFBZ0JFRUJhellDRkNBR1FmOEJJQVYwUVg5emNTQUJJQVYwY2lFR0lBTWhBUXNnQWtFRGRFRUlhd3NoQlNBQUlBRkJBV28yQWdBZ0JrSC9BU0FGZEVGL2MzRWdBUzBBQUVFUGNpQUZkSEloQlFzZ0FDQUhOZ0lVQ3lBQUtBSVlJUUVnQUNBRlFSaDJJZ2RCL3dGR05nSVlJQUFnQ1NBRlFSQjJRZjhCY1NJSVFmOEJSaUlLSUFWQkNIWkIvd0Z4SWd0Qi93RkdJZ3dnQVNBRlFmOEJjU0lFUWY4QlJpSUNhbXBxSWdGclFTQnFJZ00yQWhBZ0FDQUFLUU1JSUFSQkIwRUlJQUliZENBTGNrRUhRUWdnREJ0MElBaHlRUWRCQ0NBS0czUWdCM0t0SUFFZ0NXdEJJR3F0aG9RM0F3aEJBQ0VGSUFOQkJrZ05BUXNnQUNnQ0hDSUJRUUowUWJDZEFXb29BZ0FoQWdKK0lBQXBBd2dpRGtJQVV3UkFRUXdnQVVFQmFpQUJRUXRPR3lFRUlBTkJBV3NoQTBGL0lBSjBRWDl6UVFGMElRRkNBUXdCQ3lBQlFRRnJRUUFnQVVFQlNoc2hCQ0FPUVQ4Z0FtdXRpS2RCZnlBQ2RFRi9jM0ZCQVhSQkFYSWhBU0FESUFKQkFXb2lBbXNoQXlBQ3JRc2hEeUFBSUFNMkFoQWdBQ0FFTmdJY0lBQWdEaUFQaGpjRENDQUFJQUdzSUFBcEF5aENRSU9FTndNb1FRRWhCU0FEUVFaSURRQWdBQ2dDSENJQlFRSjBRYkNkQVdvb0FnQWhBZ0orSUFBcEF3Z2lEa0lBVXdSQVFRd2dBVUVCYWlBQlFRdE9HeUVFSUFOQkFXc2hBMEYvSUFKMFFYOXpRUUYwSVFGQ0FRd0JDeUFCUVFGclFRQWdBVUVCU2hzaEJDQU9RVDhnQW11dGlLZEJmeUFDZEVGL2MzRkJBWFJCQVhJaEFTQURJQUpCQVdvaUFtc2hBeUFDclFzaER5QUFJQU0yQWhBZ0FDQUVOZ0ljSUFBZ0RpQVBoamNEQ0NBQUlBQXBBeWhDLzBDRElBR3NRZ2VHaERjREtFRUNJUVVnQTBFR1NBMEFJQUFvQWh3aUFVRUNkRUd3blFGcUtBSUFJUUlDZmlBQUtRTUlJZzVDQUZNRVFFRU1JQUZCQVdvZ0FVRUxUaHNoQkNBRFFRRnJJUU5CZnlBQ2RFRi9jMEVCZENFQlFnRU1BUXNnQVVFQmEwRUFJQUZCQVVvYklRUWdEa0UvSUFKcnJZaW5RWDhnQW5SQmYzTnhRUUYwUVFGeUlRRWdBeUFDUVFGcUlnSnJJUU1nQXEwTElROGdBQ0FETmdJUUlBQWdCRFlDSENBQUlBNGdENFkzQXdnZ0FDQUFLUU1vUXYvL1FJTWdBYXhDRG9hRU53TW9RUU1oQlNBRFFRWklEUUFnQUNnQ0hDSUJRUUowUWJDZEFXb29BZ0FoQWdKK0lBQXBBd2dpRGtJQVV3UkFRUXdnQVVFQmFpQUJRUXRPR3lFRUlBTkJBV3NoQTBGL0lBSjBRWDl6UVFGMElRRkNBUXdCQ3lBQlFRRnJRUUFnQVVFQlNoc2hCQ0FPUVQ4Z0FtdXRpS2RCZnlBQ2RFRi9jM0ZCQVhSQkFYSWhBU0FESUFKQkFXb2lBbXNoQXlBQ3JRc2hEeUFBSUFNMkFoQWdBQ0FFTmdJY0lBQWdEaUFQaGpjRENDQUFJQUFwQXloQy8vLy9RSU1nQWF4Q0ZZYUVOd01vUVFRaEJTQURRUVpJRFFBZ0FDZ0NIQ0lCUVFKMFFiQ2RBV29vQWdBaEFnSitJQUFwQXdnaURrSUFVd1JBUVF3Z0FVRUJhaUFCUVF0T0d5RUVJQU5CQVdzaEEwRi9JQUowUVg5elFRRjBJUUZDQVF3QkN5QUJRUUZyUVFBZ0FVRUJTaHNoQkNBT1FUOGdBbXV0aUtkQmZ5QUNkRUYvYzNGQkFYUkJBWEloQVNBRElBSkJBV29pQW1zaEF5QUNyUXNoRHlBQUlBTTJBaEFnQUNBRU5nSWNJQUFnRGlBUGhqY0RDQ0FBSUFBcEF5aEMvLy8vLzBDRElBR3NRaHlHaERjREtFRUZJUVVnQTBFR1NBMEFJQUFvQWh3aUFVRUNkRUd3blFGcUtBSUFJUUlDZmlBQUtRTUlJZzVDQUZNRVFFRU1JQUZCQVdvZ0FVRUxUaHNoQkNBRFFRRnJJUU5CZnlBQ2RFRi9jMEVCZENFQlFnRU1BUXNnQVVFQmEwRUFJQUZCQVVvYklRUWdEa0UvSUFKcnJZaW5RWDhnQW5SQmYzTnhRUUYwUVFGeUlRRWdBeUFDUVFGcUlnSnJJUU1nQXEwTElROGdBQ0FETmdJUUlBQWdCRFlDSENBQUlBNGdENFkzQXdnZ0FDQUFLUU1vUXYvLy8vLy9RSU1nQWExQ0k0YUVOd01vUVFZaEJTQURRUVpJRFFBZ0FDZ0NIQ0lCUVFKMFFiQ2RBV29vQWdBaEFnSitJQUFwQXdnaURrSUFVd1JBUVF3Z0FVRUJhaUFCUVF0T0d5RUVJQU5CQVdzaEEwRi9JQUowUVg5elFRRjBJUUZDQVF3QkN5QUJRUUZyUVFBZ0FVRUJTaHNoQkNBT1FUOGdBbXV0aUtkQmZ5QUNkRUYvYzNGQkFYUkJBWEloQVNBRElBSkJBV29pQW1zaEF5QUNyUXNoRHlBQUlBTTJBaEFnQUNBRU5nSWNJQUFnRGlBUGhqY0RDQ0FBSUFBcEF5aEMvLy8vLy8vL1FJTWdBYTFDS29hRU53TW9RUWNoQlNBRFFRWklEUUFnQUNnQ0hDSUJRUUowUWJDZEFXb29BZ0FoQWdKK0lBQXBBd2dpRGtJQVV3UkFRUXdnQVVFQmFpQUJRUXRPR3lFRUlBTkJBV3NoQTBGL0lBSjBRWDl6UVFGMElRRkNBUXdCQ3lBQlFRRnJRUUFnQVVFQlNoc2hCQ0FPUVQ4Z0FtdXRpS2RCZnlBQ2RFRi9jM0ZCQVhSQkFYSWhBU0FESUFKQkFXb2lBbXNoQXlBQ3JRc2hEeUFBSUFNMkFoQWdBQ0FFTmdJY0lBQWdEaUFQaGpjRENDQUFJQUFwQXloQy8vLy8vLy8vLzBDRElBR3RRakdHaERjREtFRUlJUVVMSUFBZ0JVRUJhellDSUNBQUlBQXBBeWdpRGtJSGlEY0RLQ0FPcDBIL0FIRUxJZ0VCZnlBQUJFQWdBQ2dDRENJQkJFQWdBUkFKSUFCQkFEWUNEQXNnQUJBSkN3dUZBUUlGZndGK0FrQWdBRUtBZ0lDQUVGUUVRQ0FBSVFjTUFRc0RRQ0FCUVFGcklnRWdBRUlLZ0NJSFF2WUJmaUFBZktkQk1ISTZBQUFnQUVMLy8vLy9ud0ZXSVFVZ0J5RUFJQVVOQUFzTElBZW5JZ0lFUUFOQUlBRkJBV3NpQVNBQ1FRcHVJZ05COWdGc0lBSnFRVEJ5T2dBQUlBSkJDVXNoQmlBRElRSWdCZzBBQ3dzZ0FRdjU0Z0VFZW44R2V3aCtBWDBqQUVFUWF5Sk9KQUFDUUNBQUxRQUlRWUFCY1VVTkFDQUFLQUxNQVNBQlJ3MEFJQUFvQXB3QklBRkJqQ3hzYWlKUEtBTGNLeUlWUlFSQUlFOFFLUXdCQ3lBQUtBTElBUm9nQUNnQzBBRWhHU0FBS0FKTUlnZEZCRUFnQUNnQ1NDRUhDeUFIS0FJQUlRWWdCeWdDQkNFTElBY29BZ2doQ1NBSEtBSU1JUTBnQUNnQ1BDRUhJQUFvQWtBaENDQlBLQUxnS3lFS0l3QkJFR3NpUUNRQUlCa2dBVFlDSkNBWktBSWNLQUpNSVF3Z0dVRUJOZ0pBSUJrZ0RUWUNQQ0FaSUFrMkFqZ2dHU0FMTmdJMElCa2dCallDTUNBWklBd2dBVUdNTEd4cU5nSWdJQmtvQWtRUUNVRUFJUXNnR1VFQU5nSkVBa0FnQndSQVFRUWdHU2dDR0NnQ0VCQU1JZ3RGQkVBTUFndEJBQ0VOUVFBaENTQUhRUVJQQkVBZ0IwRjhjU0VNUVFBaEFRTkFJQXNnQ0NBSlFRSjBhaUlHS0FJQVFRSjBha0VCTmdJQUlBc2dCaWdDQkVFQ2RHcEJBVFlDQUNBTElBWW9BZ2hCQW5ScVFRRTJBZ0FnQ3lBR0tBSU1RUUowYWtFQk5nSUFJQWxCQkdvaENTQUJRUVJxSWdFZ0RFY05BQXNMSUFkQkEzRWlBUVJBQTBBZ0N5QUlJQWxCQW5ScUtBSUFRUUowYWtFQk5nSUFJQWxCQVdvaENTQU5RUUZxSWcwZ0FVY05BQXNMSUJrZ0N6WUNSQXNDUUFKQUlCa29BaGdpQmlnQ0VDSU5SUTBBUVFBaENRSkFBMEFDUUNBTEJFQWdDeUFKUVFKMGFpZ0NBRVVOQVFzZ0JpZ0NHQ0FKUVRSc2FpSUJOUUlFSW9ZQlFnRjlJb29CSUJrMUFqeDhJSVlCZ0NHTEFTQUJOUUlBSW9jQlFnRjlJb2dCSUJrMUFqaDhJSWNCZ0NHTUFTQ0tBU0FaTlFJMGZDQ0dBWUFoaGdFZ0dTZ0NGQ2dDQUNnQ0ZDQUpRY3dBYkdvaUFTZ0NGQ0FCS0FJWWF5SUhRUjlMRFFBQ1FDQ0lBU0FaTlFJd2ZDQ0hBWUNuSWdnZ0FTZ0NBR3NpREVFQUlBZ2dERThiSUFkMkRRQWdoZ0duSWdnZ0FTZ0NCR3NpREVFQUlBZ2dERThiSUFkMkRRQWdBU2dDQ0NJSUlJd0JwMnNpREVFQUlBZ2dERThiSUFkMkRRQWdBU2dDRENJQklJc0JwMnNpQ0VFQUlBRWdDRThiSUFkMlJRMEJDeUFaUVFBMkFrQU1BZ3NnQ1VFQmFpSUpJQTFIRFFBTElCa29Ba0JGRFFBZ0RVVU5BVUVBSVEwRFFDQVpLQUlVS0FJQUtBSVVJQTFCekFCc2FpSUJLQUljSUFFb0FoaEJtQUZzYWlJSFFaUUJheWdDQUNFR0lBZEJqQUZyS0FJQUlRc2dCMEdZQVdzb0FnQWhDU0FIUVpBQmF5Z0NBQ0VJQWtBZ0dTZ0NSQ0lIQkVBZ0J5QU5RUUowYWlnQ0FFVU5BUXNnQ3lBR2F5RUhJQWdnQ1dzaENRSkFJQVlnQzBZTkFDQUhyU0FKclg1Q0lJaFFEUUFnQlVFQlFaUVdRUUFRQ0F3R0N5QUhJQWxzSWdkQmdJQ0FnQVJQQkVBZ0JVRUJRWlFXUVFBUUNBd0dDeUFCSUFkQkFuUWlCellDTEFKL0FrQUNRQUpBSUFFb0FpUWlCZ1JBSUFjZ0FTZ0NNRTBOQlNBQktBSW9EUUVMSUFFZ0J4QVdJZ2MyQWlRZ0IwRUJJQUVvQWl3aUJ4dEZEUUVnQVNBSE5nSXdJQUZCS0dvTUF3c2dCaEFKSUFFZ0FTZ0NMQkFXSWdjMkFpUWdCdzBCSUFGQkFEWUNNQ0FCUWdBM0FpZ0xJQVZCQVVHVUZrRUFFQWdNQndzZ0FTQUJLQUlzTmdJd0lBRkJLR29MUVFFMkFnQUxJQTFCQVdvaURTQVpLQUlZSWdZb0FoQkpEUUFMREFFTElBMUZEUUFnQmlnQ0dDRVBJQmtvQWhRb0FnQW9BaFFoRmtFQUlRRURRQUpBSUFzRVFDQUxJQUZCQW5ScUtBSUFSUTBCQ3lBV0lBRkJ6QUJzYWlJSElBY29BZ0FpQ1NBUElBRkJOR3hxSWdnMUFnQWloZ0ZDQVgwaWlnRWdHVFVDTUh3Z2hnR0FweUlNSUFrZ0RFc2JJZ2syQWpnZ0J5QUhLQUlFSWd3Z0NEVUNCQ0tIQVVJQmZTS0xBU0FaTlFJMGZDQ0hBWUNuSWdnZ0NDQU1TUnNpQ0RZQ1BDQUhJQWNvQWdnaURDQ0tBU0FaTlFJNGZDQ0dBWUNuSWhjZ0RDQVhTUnNpRERZQ1FDQUhJQWNvQWd3aUZ5Q0xBU0FaTlFJOGZDQ0hBWUNuSWc0Z0RpQVhTeHNpRnpZQ1JDQUpJQXhMRFFNZ0NDQVhTdzBESUFjb0FoUWlEa1VOQUNBT3JTR0xBU0FYclNHSUFTQU1yU0dNQVNBSXJTR05BU0FKclNHSkFTQUhLQUljSVFsQ0FDR0hBUU5BSUFrZ2h3R25JZ2hCbUFGc2FpSUhRbjhnRGlBSVFYOXphcTBpaGdHR1FuK0ZJb29CSUlnQmZDQ0dBWWcrQXBRQklBY2dpZ0VnakFGOElJWUJpRDRDa0FFZ0J5Q0tBU0NOQVh3Z2hnR0lQZ0tNQVNBSElJa0JJSW9CZkNDR0FZZytBb2dCSUljQlFnRjhJb2NCSUlzQlVnMEFDd3NnQVVFQmFpSUJJQTFIRFFBTEN5QkFRUUEyQWdnZ0dTZ0NIQ0VCUVFGQkNCQU1JaHNFUUNBYklBRTJBZ1FnR3lBR05nSUFDeUFiUlEwQklCa29BaVFoRVNBWktBSVVLQUlBSVNBakFFSHdBR3NpRXlRQUlCRkJqQ3hzSWdFZ0d5Z0NCQ0lJS0FKTWFpSWNLQUtrQXlFb0FuOGdHeWdDQUNJZUlSY2dCU0V6UVFBaERTTUFRU0JySWc4a0FDQUJJQWdvQWt4cUloMG9BcVFESVJnQ1FDQVhLQUlRSWhaQmtBUnNFQTBpREVVTkFBSkFJQlpCQW5RUURTSUxSUVJBSUF3aEN3d0JDd0ovSUFnb0Frd2dFVUdNTEd4cUlna29BcVFESWhwQkFXb2lBVUh3QVJBTUlnY0VRQUpBSUFFRVFDQVhLQUlRSVE0Z0J5RUJBMEFnQVNBek5nTHNBU0FCSUE1QkVCQU1JZ1kyQXNnQklBWkZEUUlnQVNBWEtBSVFJaDgyQXNRQlFRQWhCa0VBSVE0Z0h3UkFBMEFnQVNnQ3lBRWdCa0VFZEdvaURpQUpLQUxRS3lBR1FiZ0liR29pSHlnQ0JFRVFFQXdpSVRZQ0RDQWhSUTBFSUE0Z0h5Z0NCRFlDQ0NBR1FRRnFJZ1lnRnlnQ0VDSU9TUTBBQ3dzZ0FVSHdBV29oQVNBU0lCcEdJWE1nRWtFQmFpRVNJSE5GRFFBTEN5QUhEQUlMSUFjb0FnUWlBUVJBSUFFUUNTQUhRUUEyQWdRTElBY2hBVUVBSVFrRFFDQUJLQUxJQVNJR0JFQkJBQ0VPSUFFb0FzUUJJaElFZndOQUlBWW9BZ3dpSHdSQUlCOFFDU0FHUVFBMkFnd2dBU2dDeEFFaEVnc2dCa0VRYWlFR0lBNUJBV29pRGlBU1NRMEFDeUFCS0FMSUFRVWdCZ3NRQ1NBQlFRQTJBc2dCQ3lBQlFmQUJhaUVCSUFrZ0drWWhkQ0FKUVFGcUlRa2dkRVVOQUFzZ0J4QUpDMEVBQ3lJSEJFQUNRQ0FXUlEwQVFRQWhDU0FNSVFZZ0ZrRUVUd1JBSUFZZ0ZrRjhjU0lKUVpBRWJHb2hCaUFNSVFFRFFDQUxJQkJCQW5ScUlBSDlFZjBNQUFBQUFCQUNBQUFnQkFBQU1BWUFBUDJ1QWYwTEFnQWdBVUhBRUdvaEFTQVFRUVJxSWhBZ0NVY05BQXNnQ1NBV1JnMEJDd05BSUFzZ0NVRUNkR29nQmpZQ0FDQUdRWkFFYWlFR0lBbEJBV29pQ1NBV1J3MEFDd3NnQ3lFT1FRQWhFaUFJS0FKTUlCRkJqQ3hzYWlnQzBDc2hBU0FYS0FJWUlRa2dEeUFJS0FJRUlBZ29BZ3dnRVNBUklBZ29BaGdpQm00aUN5QUdiR3RzYWlJR0lCY29BZ0FpRUNBR0lCQkxHellDRkNBUFFYOGdCaUFJS0FJTWFpSVFJQVlnRUVzYklnWWdGeWdDQ0NJUUlBWWdFRWtiTmdJUUlBOGdDQ2dDQ0NBSUtBSVFJQXRzYWlJR0lCY29BZ1FpQ3lBR0lBdExHellDRENBUFFYOGdCaUFJS0FJUWFpSUxJQVlnQzBzYklnWWdGeWdDRENJTElBWWdDMGtiTmdJSUlBOUJBRFlDR0NBUFFRQTJBaHdnRDBILy8vLy9CellDQkNBUFFmLy8vLzhITmdJQUlCY29BaEFFUUFOQUlBNEVmeUFPSUJKQkFuUnFLQUlBQlVFQUN5RUxJQWsxQWdRaWhnRkNBWDBpaWdFZ0R6VUNDSHdnaGdHQUlZc0JJQWsxQWdBaWh3RkNBWDBpaUFFZ0R6VUNFSHdnaHdHQUlZd0JJSW9CSUE4MUFneDhJSVlCZ0NHR0FTQ0lBU0FQTlFJVWZDQ0hBWUFoaHdFZ0FTZ0NCQ0lJSUE4b0FoeExCRUFnRHlBSU5nSWNJQUVvQWdRaENBc2dDQVJBSUlzQlF2Ly8vLzhQZ3lHS0FTQ01BVUwvLy8vL0Q0TWhpd0VnaGdGQy8vLy8vdytESVlnQklJY0JRdi8vLy84UGd5R01BU0FCUWJBSGFpRWZJQUZCckFacUlTRkJBQ0VhQTBBZ0h5QWFRUUowSWhCcUtBSUFJUVlnRUNBaGFpZ0NBQ0VSUVFBaEVDQUxCRUFnQ3lBR05nSUVJQXNnRVRZQ0FDQUxRUWhxSVJBTEFrQWdFU0FJUVFGcklnaHFJZ3RCSDBzTkFDQUpLQUlBSWlKQmZ5QUxka3NOQUNBUElBOG9BZ1FpSnlBaUlBdDBJZ3NnQ3lBblN4czJBZ1FMQWtBZ0JpQUlhaUlMUVI5TERRQWdDU2dDQkNJaVFYOGdDM1pMRFFBZ0R5QVBLQUlBSWljZ0lpQUxkQ0lMSUFzZ0owc2JOZ0lBQzBFQUlRc2dpZ0ZDZnlBSXJTS0dBWVpDZjRVaWh3RjhJSVlCaUNLTkFVTC8vLy8vRDROQ0FTQUdyU0tKQVlaOFFnRjlJSWtCaUtjZ2h3RWdpQUY4SUlZQmlLY2lJaUFHZG10QmZ5QUdkbkZCQUNBaUlJMEJwMGNiSVFZZ2h3RWdpd0Y4SUlZQmlDS05BVUwvLy8vL0Q0TkNBU0FSclNLSkFZWjhRZ0Y5SUlrQmlLY2dod0VnakFGOElJWUJpS2NpSWlBUmRtdEJmeUFSZG5GQkFDQWlJSTBCcDBjYklSRWdFQVJBSUJBZ0JqWUNCQ0FRSUJFMkFnQWdFRUVJYWlFTEN5QUdJQkZzSWdZZ0R5Z0NHRXNFUUNBUElBWTJBaGdMSUJwQkFXb2lHaUFCS0FJRVNRMEFDd3NnQ1VFMGFpRUpJQUZCdUFocUlRRWdFa0VCYWlJU0lCY29BaEJKRFFBTEN5QVlRUUZxSVNFZ0R5Z0NIQ0VSSUE4b0FoZ2hFaUFIUVFBMkFnUUNRQ0FkS0FJSVFRRnFJZ0d0SUJFZ0VpQVdiQ0lpYkNJYXJYNUNJSWhRQkVBZ0J5QUJJQnBzSWdFMkFnZ2dCeUFCUVFJUURDSUJOZ0lFSUFFTkFRc2dEQkFKSUE0UUNTQUhLQUlFSWdFRVFDQUJFQWtnQjBFQU5nSUVDeUFoUlFSQUlBY2hDd3dEQzBFQUlRc2dCeUVCQTBBZ0FTZ0N5QUVpQ1FSQVFRQWhCaUFCS0FMRUFTSVFCSDhEUUNBSktBSU1JZ2dFUUNBSUVBa2dDVUVBTmdJTUlBRW9Bc1FCSVJBTElBbEJFR29oQ1NBR1FRRnFJZ1lnRUVrTkFBc2dBU2dDeUFFRklBa0xFQWtnQVVFQU5nTElBUXNnQVVId0FXb2hBU0FMSUJoR0lYVWdDMEVCYWlFTElIVkZEUUFMSUFjaEN3d0NDeUFYS0FJWUlSY2dCeUFQS0FJVUlpYzJBc3dCSUFjZ0R5Z0NEQ0l3TmdMUUFTQUhJQThvQWhBaUxUWUMxQUVnQnlBUEtBSUlJaXMyQXRnQklBY2dHallDRENBSElDSTJBaEFnQnlBU05nSVVRUUVoSHlBSFFRRTJBaGdnRmdSQUlBY29Bc2dCSVFGQkFDRUlJQmNoQ3dOQUlBNGdDRUVDZEdvb0FnQWhDU0FCSUFzb0FnQTJBZ0FnQVNBTEtBSUVOZ0lFQWtBZ0FTZ0NDQ0lOUlEwQUlBRW9BZ3doQmlBTlFRRkhCRUFnRFVGK2NTRXZRUUFoRUFOQUlBWWdDU2dDQURZQ0FDQUdJQWtvQWdRMkFnUWdCaUFKS0FJSU5nSUlJQVlnQ1NnQ0REWUNEQ0FHSUFrb0FoQTJBaEFnQmlBSktBSVVOZ0lVSUFZZ0NTZ0NHRFlDR0NBR0lBa29BaHcyQWh3Z0JrRWdhaUVHSUFsQklHb2hDU0FRUVFKcUloQWdMMGNOQUFzTElBMUJBWEZGRFFBZ0JpQUpLQUlBTmdJQUlBWWdDU2dDQkRZQ0JDQUdJQWtvQWdnMkFnZ2dCaUFKS0FJTU5nSU1DeUFMUVRScUlRc2dBVUVRYWlFQklBaEJBV29pQ0NBV1J3MEFDd3NnSVVFQlN3UkFJQWNoRFFOQUlBMGdLellDeUFNZ0RTQXROZ0xFQXlBTklEQTJBc0FESUEwZ0p6WUN2QU1nRFVFQk5nS0lBaUFOSUJJMkFvUUNJQTBnSWpZQ2dBSWdEU0FhTmdMOEFTQVdCRUFnRFNnQ3VBTWhBVUVBSVFnZ0Z5RUxBMEFnRGlBSVFRSjBhaWdDQUNFSklBRWdDeWdDQURZQ0FDQUJJQXNvQWdRMkFnUUNRQ0FCS0FJSUlpRkZEUUFnQVNnQ0RDRUdJQ0ZCQVVjRVFDQWhRWDV4SVM5QkFDRVFBMEFnQmlBSktBSUFOZ0lBSUFZZ0NTZ0NCRFlDQkNBR0lBa29BZ2cyQWdnZ0JpQUpLQUlNTmdJTUlBWWdDU2dDRURZQ0VDQUdJQWtvQWhRMkFoUWdCaUFKS0FJWU5nSVlJQVlnQ1NnQ0hEWUNIQ0FHUVNCcUlRWWdDVUVnYWlFSklCQkJBbW9pRUNBdlJ3MEFDd3NnSVVFQmNVVU5BQ0FHSUFrb0FnQTJBZ0FnQmlBSktBSUVOZ0lFSUFZZ0NTZ0NDRFlDQ0NBR0lBa29BZ3cyQWd3TElBdEJOR29oQ3lBQlFSQnFJUUVnQ0VFQmFpSUlJQlpIRFFBTEN5QU5JQTBwQWdRM0F2UUJJQmdnSDBjaGRpQU5RZkFCYWlFTklCOUJBV29oSHlCMkRRQUxDeUFNRUFrZ0RoQUpJQjBvQXFRRElRc0NRQ0FkTFFDSUxFRUVjUVJBSUF0QmYwWU5BU0FkUWFnRGFpRUdJQjBvQWdnaEFVRUFJUkFnQnlFSkEwQWdCaWdDSkNFTklBbEJBVFlDTENBSklBMDJBbFFnQ1NBR0tBSUFOZ0l3SUFZb0FnUWhEU0FKUWdBM0FrUWdDU0FOTmdJMElBa2dCaWdDRERZQ1BDQUpJQVlvQWhBMkFrQWdCaWdDQ0NFTklBa2dFallDVENBSklBMGdBU0FCSUExTEd6WUNPQ0FHUVpRQmFpRUdJQWxCOEFGcUlRa2dDeUFRUmlGM0lCQkJBV29oRUNCM1JRMEFDd3dCQ3lBTFFYOUdEUUFnSFNnQ0NDRUdJQjBvQWdRaERTQUhJUWtnQ3dSQUlBdEJBV3BCZm5FaENFRUFJUUVEUUNBSlFnQTNBa1FnQ1VFQU5nSTBJQWxDQVRjQ0xDQUpJQTAyQWxRZ0NTQVJOZ0k4SUFrZ0RUWUN4QUlnQ1NBU05nSk1JQWtnQmpZQ09DQUpRZ0EzQXJRQ0lBbEJBRFlDcEFJZ0NVSUJOd0tjQWlBSklCRTJBcXdDSUFrZ0JqWUNxQUlnQ1NBU05nSzhBaUFKSUFrb0FzUUJOZ0pBSUFrZ0NTZ0N0QU0yQXJBQ0lBbEI0QU5xSVFrZ0FVRUNhaUlCSUFoSERRQUxDeUFMUVFGeERRQWdDVUlBTndKRUlBbEJBRFlDTkNBSlFnRTNBaXdnQ1NBTk5nSlVJQWtnRVRZQ1BDQUpJQkkyQWt3Z0NTQUdOZ0k0SUFrZ0NTZ0N4QUUyQWtBTElBY2hEUXdDQ3lBTUVBa0xJQXNRQ1FzZ0QwRWdhaVFBUVFBZ0RTSUhSUTBBR2lBb1FRRnFJUTRnRlNFZElBY2hDd0pBQWtBRFFDQUxLQUpVUVg5R0RRSWdIaWdDRUVFQ2RCQU5JZ0ZGRFFJZ0FVRUJJQjRvQWhCQkFuUVFEaUVKSUFzUVVBUkFBMEFnSUNnQ0ZDRUlBa0FDUUNBTEtBSW9JQndvQWd4UERRQWdDeWdDSUNJQklBZ2dDeWdDSEVITUFHeHFJZ1lvQWhoUERRQWdCaWdDSENBQlFaZ0JiR29pRFNnQ0dFVU5BQ0FOUVJ4cUlRaEJBQ0VCQWtBRFFDQVpJQXNvQWh3Z0N5Z0NJQ0FJSUFGQkpHeHFJZ1lvQWhBZ0JpZ0NGQ0FMS0FJa1FTaHNhaUlHS0FJQUlBWW9BZ1FnQmlnQ0NDQUdLQUlNRURKRkJFQWdBVUVCYWlJQklBMG9BaGhKRFFFTUFnc0xJQWtnQ3lnQ0hFRUNkR3BCQURZQ0FDQVRRUUEyQW1nZ0d5Z0NCQ0FnS0FJVUlCd2dDeUFUUWV3QWFpQWRJQk5CNkFCcUlBb2dNeEJQUlEwR0lBc29BaUFoQ0NBTEtBSWNJUllnRXlnQ2FDRWFJQk1vQW13RVFDQVRRUUEyQW1nZ0lDZ0NGQ0FXUWN3QWJHb29BaHdnQ0VHWUFXeHFJaDhvQWhnaUFRUi9JQW9nR21zaEdDQUtJQjFxSVNFZ0gwRWNhaUVNUVFBaEVVRUFJUThnR2lBZGFpSWlJUklEUUFKQUlBd29BZ2dnRENnQ0FFWU5BQ0FNS0FJTUlBd29BZ1JHRFFBZ0RDZ0NGQ0FMS0FJa1FTaHNhaUlHS0FJVUlBWW9BaEJzSWloRkRRQWdCaWdDR0NFQlFRQWhGZ05BSUE4RVFDQUJRUUEyQWpRTElBRW9BaVFpRndSQUlBRW9BZ0FoQ0FKQUlBRWdBU2dDS0NJR0JIOGdDQ0FHUVJoc2FpSUlRUlJyS0FJQUlBaEJER3NvQWdCSEJFQWdDRUVZYXlFSURBSUxJQVpCQVdvRlFRRUxOZ0lvQ3dKQUEwQUNRQUpBQWtBZ0NDZ0NGQ0lOSUJKQmYzTkxEUUFnRHcwQUlBMGdFbW9nSVUwTkFRc2dDeWdDSENFR0lBc29BaUFoRnlBTEtBSWtJUThnR3lnQ0JDZ0NhQVJBSUJNZ0JqWUNXQ0FUSUJjMkFsUWdFeUFSTmdKUUlCTWdEellDVENBVElCWTJBa2dnRXlBWU5nSkVJQk1nRFRZQ1FDQXpRUUZCZ3U0QUlCTkJRR3NRQ0F3UkN5QVRJQVkyQWpnZ0V5QVhOZ0kwSUJNZ0VUWUNNQ0FUSUE4MkFpd2dFeUFXTmdJb0lCTWdHRFlDSkNBVElBMDJBaUFnTTBFQ1FZTHVBQ0FUUVNCcUVBZ2dBVUVBTmdJMElBZ2dDQ2dDRUNJR0lBZ29BZ1JxTmdJRUlBRWdBU2dDSkNJTklBWnJJaGMyQWlSQkFTRVBJQVlnRFVZTkFTQUJJQUVvQWloQkFXb2lDRFlDS0F3REN5QUJLQUlFSVJBZ0FTZ0NOQ0lQSUFFb0FqaEhCSDhnRndVZ0VDQVBRUUYwUVFGeUlnWkJBM1FRRUNJUVJRUkFJRE5CQVVHQUNFRUFFQWdNRVFzZ0FTQUdOZ0k0SUFFZ0VEWUNCQ0FCS0FJMElROGdDQ2dDRkNFTklBRW9BaVFMSVFZZ0VDQVBRUU4wYWlJWElBMDJBZ1FnRnlBU05nSUFJQUVnRDBFQmFqWUNOQ0FJSUFnb0FnQWdEV28yQWdBZ0NDQUlLQUlRSWhBZ0NDZ0NCR29pRHpZQ0JDQUJJQVlnRUdzaUZ6WUNKQ0FJSUE4MkFnZ2dEU0FTYWlFU1FRQWhEeUFHSUJCR0RRQWdBU0FCS0FJb1FRRnFOZ0lvSUFoQkdHb2hDQXNnRncwQUN5QUJLQUlvSVFnTElBRWdDRFlDTEFzZ0FVRkFheUVCSUJaQkFXb2lGaUFvUncwQUN5QWZLQUlZSVFFTElBeEJKR29oRENBUlFRRnFJaEVnQVVrTkFBc2dDeWdDSENFV0lBc29BaUFoQ0NBWUlCSWdJbXNnRHhzRlFRQUxJQnBxSVJvTElCNG9BaGdnRmtFMGJHb2lBU0FJSUFFb0FpUWlBU0FCSUFoSkd6WUNKQXdDQ3lBZ0tBSVVJUWdMSUJOQkFEWUNhQ0FiS0FJRUlBZ2dIQ0FMSUJOQjdBQnFJQjBnRTBIb0FHb2dDaUF6RUU5RkRRUWdDeWdDSENFV0lCTW9BbWdoR2lBVEtBSnNSUTBBQWtBZ0lDZ0NGQ0FXUWN3QWJHb29BaHdnQ3lnQ0lDSWlRWmdCYkdvaUFTZ0NHQ0lvUlFSQVFRQWhGd3dCQ3lBS0lCcHJJUkFnQVVFY2FpRU1JQXNvQWlRaElVRUFJUmRCQUNFWUEwQUNRQ0FNS0FJSUlBd29BZ0JHRFFBZ0RDZ0NEQ0FNS0FJRVJnMEFJQXdvQWhRZ0lVRW9iR29pQVNnQ0ZDQUJLQUlRYkNJblJRMEFJQUVvQWhnaEVVRUFJUjhEUUNBUktBSWtJZ0VFUUNBUktBSUFJUWdDUUNBUklCRW9BaWdpRWdSL0lBZ2dFa0VZYkdvaUNFRVVheWdDQUNBSVFReHJLQUlBUndSQUlBaEJHR3NoQ0F3Q0N5QVNRUUZxQlVFQkN5SVNOZ0lvQ3dKQUFrQWdDQ2dDRkNJUElCZHFJZzBnRDBrTkFDQU5JQkJMRFFBRFFDQU5JUmNnQ0NBSUtBSVFJZzBnQ0NnQ0JHbzJBZ1FnQVNBTmF5RUdJQUVnRFVZTkFpQVJJQkpCQVdvaUVqWUNLQ0FJS0FJc0lnOGdGMm9pRFNBUFR3UkFJQWhCR0dvaENDQUdJUUVnRFNBUVRRMEJDd3NnRVNBR05nSWtDeUFiS0FJRUtBSm9JUUVnRXlBV05nSVlJQk1nSWpZQ0ZDQVRJQmcyQWhBZ0V5QWhOZ0lNSUJNZ0h6WUNDQ0FUSUJBMkFnUWdFeUFQTmdJQUlETkJBVUVDSUFFYlFhM3RBQ0FURUFnZ0FRMEtJQXNvQWh3aEZnd0ZDeUFSSUFZMkFpUUxJQkZCUUdzaEVTQWZRUUZxSWg4Z0owY05BQXNMSUF4QkpHb2hEQ0FZUVFGcUloZ2dLRWNOQUFzTElCY2dHbW9oR2dzQ1FDQUpJQlpCQW5ScUtBSUFSUTBBSUI0b0FoZ2dGa0UwYkdvaUFTZ0NKQTBBSUFFZ0lDZ0NGQ0FXUWN3QWJHb29BaGhCQVdzMkFpUUxJQW9nR21zaENpQWFJQjFxSVIwZ0N4QlFEUUFMQ3lBSkVBa2dDMEh3QVdvaEN5QWpRUUZxSWlNZ0hDZ0NwQU5ORFFBTElBY2dEaEF6SUVBZ0hTQVZhellDQ0VFQkRBSUxJQWNnRGhBeklBa1FDVUVBREFFTElBY2dEaEF6UVFBTElYZ2dFMEh3QUdva0FDQWJFQ1VnZUVVTkFTQVpLQUlnS0FMUUt5RUpJQmtvQWhRb0FnQWlGaWdDRkNFZElFQkJBVFlDREVFQUlRMUJBQ0VWSUJrb0FpQWlBU2dDRENBQktBSUlSZ1JBSUFrb0FoQkJCSFpCQVhFaEZRc0NRQ0FXS0FJUUlqRkZEUUFEUUFKQUlCa29Ba1FpQVFSQUlBRWdEVUVDZEdvb0FnQkZEUUVMSUVCQkRHb2hFMEVBSVRFQ1FDQWRLQUlZSWdGRkRRQWdHU2dDTENFUUEwQWdIU2dDSENBeFFaZ0JiR29pRENnQ0dDSUxCRUFnREVFY2FpRVNJQXdvQWhRaEFTQU1LQUlRSVJkQkFDRU9BMEFnQVNBWGJBUkFJQklnRGtFa2JHb2hEMEVBSVFnRFFDQVpJQjBvQWhBZ01TQVBLQUlRSUE4b0FoUWdDRUVvYkdvaUJ5Z0NBQ0FIS0FJRUlBY29BZ2dnQnlnQ0RCQXlJUVlnQnlnQ0ZDSUxJQWNvQWhBaUNtd2hBUUpBSUFZRVFDQUJSUTBCUVFBaENnTkFBa0FnR1NBZEtBSVFJREVnRHlnQ0VDQUhLQUlZSUFwQkJuUnFJZ1lvQWdnZ0JpZ0NEQ0FHS0FJUUlBWW9BaFFRTWtVRVFDQUdLQUk4SWdGRkRRRWdBUkFKSUFaQkFEWUNQQXdCQ3lBWktBSkFSUVJBSUFZb0Fqd05BU0FHS0FJUUlBWW9BZ2hHRFFFZ0JpZ0NGQ0FHS0FJTVJnMEJDMEVCUVN3UURDSUJSUVJBSUVCQkFEWUNEQXdLQ3lBWktBSkFJUXNnQVVFQU5nSWtJQUVnRXpZQ0hDQUJJQWsyQWhRZ0FTQWROZ0lRSUFFZ0R6WUNEQ0FCSUFZMkFnZ2dBU0F4TmdJRUlBRWdDellDQUNBQklCVTJBaWdnQVNBek5nSWdJQUVnRUNnQ0JFRUJTallDR0NBUVFRNGdBUkFtSUVBb0FneEZEUWtMSUFwQkFXb2lDaUFIS0FJVUlBY29BaEJzU1EwQUN3d0JDeUFCUlEwQVFRQWhGd05BSUFjb0FoZ2dGMEVHZEdvaUFTZ0NQQ0lHQkVBZ0JoQUpJQUZCQURZQ1BDQUhLQUlRSVFvZ0J5Z0NGQ0VMQ3lBWFFRRnFJaGNnQ2lBTGJFa05BQXNMSUFoQkFXb2lDQ0FNS0FJVUlnRWdEQ2dDRUNJWGJFa05BQXNnRENnQ0dDRUxDeUFPUVFGcUlnNGdDMGtOQUFzZ0hTZ0NHQ0VCQ3lBeFFRRnFJakVnQVVrTkFBc0xJRUFvQWd4RkRRSWdGaWdDRUNFeEN5QUpRYmdJYWlFSklCMUJ6QUJxSVIwZ0RVRUJhaUlOSURGSkRRQUxDMEVBSVRFZ0dTZ0NMQkFhSUVBb0FneEZEUUVDUUNBWktBSkFEUUFnR1NnQ0dDSWRLQUlRUlEwQVFRQWhDUU5BSUJrb0FoUW9BZ0FvQWhRZ0NVSE1BR3hxSWdFb0Fod2dIU2dDR0NBSlFUUnNhaWdDSkVHWUFXeHFJZ2NvQW9nQklRWWdCeWdDa0FFaEN5QUhLQUtNQVNFS0lBY29BcFFCSVFjZ0FTZ0NOQkFKSUFGQkFEWUNOQUpBSUJrb0FrUWlEUVJBSUEwZ0NVRUNkR29vQWdCRkRRRUxJQVlnQzBZTkFDQUhJQXBHRFFBZ0J5QUtheUlIclNBTElBWnJJZ2F0ZmtJZ2lFSUFVZ1JBSUROQkFVR1VGa0VBRUFnTUJRc2dCaUFIYkNJSFFZQ0FnSUFFVHdSQUlETkJBVUdVRmtFQUVBZ01CUXNnQVNBSFFRSjBFQllpQVRZQ05DQUJEUUFnTTBFQlFaUVdRUUFRQ0F3RUN5QUpRUUZxSWdrZ0dTZ0NHQ0lkS0FJUVNRMEFDd3NnR1NnQ0lDRWRJQmtvQWhRb0FnQWlGeWdDRUFSQUlCY29BaFFoQ1NBZEtBTFFLeUVkSUJrb0FoZ29BaGdoRFVFQUlRc0RRQUpBSUJrb0FrUWlBUVJBSUFFZ0MwRUNkR29vQWdCRkRRRUxJQTBvQWlSQkFXb2hBU0FkS0FJVVFRRkdCRUFnQVNFZVFRQWhCa0VBSVF6OURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBaGdBRWpBRUVnYXlJbEpBQUNRQUpBSUJrb0FrQUVRRUVCSVFjZ0FVRUJSZzBDSUFrb0Fod2lEQ0FKS0FJWVFaZ0JiR29pQVVHUUFXc29BZ0FpRUNBQlFaZ0JheWdDQUNJVFJnMENJQXdvQWdRaEVTQU1LQUlNSVJnZ0RDZ0NBQ0VhSUF3b0FnZ2hHeUFaS0FJc0lnNG9BZ1FoRmlBZVFRRnJJZ29oRlNBTUlRY0NRQ0FLUVFSUEJFQWdDa0VEY1NFVklBY2dDa0Y4Y1NJSVFaZ0JiR29oQjBFQUlRRURRQ0NBQVNBTUlBRkJtQUZzYWlJR1FlZ0VhaUFHUWRBRGFpQUdRYmdDYWlBRy9Ra0NvQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBTWdCa0hnQkdvZ0JrSElBMm9nQmtHd0Ftb2dCdjBKQXBnQi9WWUNBQUg5VmdJQUF2MVdBZ0FEL2JFQi9ia0JJQVpCN0FScUlBWkIxQU5xSUFaQnZBSnFJQWI5Q1FLa0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBR1FlUUVhaUFHUWN3RGFpQUdRYlFDYWlBRy9Ra0NuQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFaGdBRWdBVUVFYWlJQklBaEhEUUFMSUlBQklJQUJJSUFCL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2JrQklvQUJJSUFCSUlBQi9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9ia0IvUnNBSVFZZ0NDQUtSZzBCQ3dOQUlBWWdCeWdDb0FFZ0J5Z0NtQUZySWdFZ0FTQUdTUnNpQVNBSEtBS2tBU0FIS0FLY0FXc2lCaUFCSUFaTEd5RUdJQWRCbUFGcUlRY2dGVUVCYXlJVkRRQUxDMEVBSVFjZ0JrSC8vLzgvU3cwQ0lDVWdCa0VGZENJU0VDd2lEellDRUNBUFJRMENJQ1VnRHpZQ0FDQUtCRUFnRUNBVGF5RVFJQmdnRVdzaENDQWJJQnBySVFFRFFDQUpLQUlrSVJNZ0pTQUlJaFUyQWdnZ0pTQUJJZ2MyQWhnZ0RDZ0NuQUVoQmlBTUtBS2tBU0VJSUF3b0FxQUJJUUVnSlNBTUtBS1lBU0lSUVFKdk5nSWNJQ1VnQVNBUmF5SUJJQWRyTmdJVUFrQWdGa0VDU0NJYVJTQUlJQVpySWdoQkFVdHhSUVJBUVFBaEJpQUlSUTBCQTBBZ0pVRVFhaUFUSUFZZ0VHeEJBblJxRUZZZ0JrRUJhaUlHSUFoSERRQUxEQUVMSUFnZ0ZpQUlJQlpKR3lJUlFRRnJJUnNnQ0NBUmJpRVlRUUFoQndOQVFTUVFEU0lHUlEwRklDWDlBQUlRSVlBQklBWWdFellDR0NBR0lCQTJBaFFnQmlBQk5nSVFJQVlnZ0FIOUN3SUFJQVlnQnlBWWJEWUNIQ0FISUJ0R0lSOGdCaUFJSUFkQkFXb2lCeUFZYkNBZkd6WUNJQ0FHSUJJUUxDSWZOZ0lBSUI5RkJFQkJBQ0VISUE0UUdpQUdFQWtnRHhBSkRBY0xJQTVCQ2lBR0VDWWdCeUFSUncwQUN5QU9FQm9MSUNVZ0NDQVZhellDQkNBbElBd29BcHdCUVFKdk5nSU1Ba0FnR2tVZ0FVRUJTM0ZGQkVCQkNDRUhRUUFoQmlBQlFRaFBCRUFEUUNBbElCTWdCa0VDZEdvZ0VFRUlFQ3NnQnlJR1FRaHFJZ2NnQVUwTkFBc0xJQUVnQmswTkFTQWxJQk1nQmtFQ2RHb2dFQ0FCSUFackVDc01BUXNnQVNBV0lBRWdGa2tiSWhWQkFXc2hHQ0FCSUJWdUlSRkJBQ0VIQTBCQkpCQU5JZ1pGRFFVZ0pmMEFBZ0FoZ0FFZ0JpQVROZ0lZSUFZZ0VEWUNGQ0FHSUFnMkFoQWdCaUNBQWYwTEFnQWdCaUFISUJGc05nSWNJQWNnR0VZaEdpQUdJQUVnQjBFQmFpSUhJQkZzSUJvYk5nSWdJQVlnRWhBc0lobzJBZ0FnR2tVRVFFRUFJUWNnRGhBYUlBWVFDU0FQRUFrTUJ3c2dEa0VMSUFZUUppQUhJQlZIRFFBTElBNFFHZ3NnREVHWUFXb2hEQ0FLUVFGcklnb05BQXNMUVFFaEJ5QVBFQWtNQWd0QkFTRUhJQWtvQWh3aUNDQWVRWmdCYkdvaU5VR1lBV3NpWHlnQ0FDQTFRWkFCYXlnQ0FFWU5BU0ExUVpRQmF5SmdLQUlBSURWQmpBRnJLQUlBUmcwQklBZ29BZ1FoRGlBSUtBSU1JUThnQ0NnQ0FDRVdJQWdvQWdnaEVDQUpLQUpFSVNFZ0NTZ0NRQ0VpSUFrb0Fqd2hLQ0FKS0FJNElUQWdDU0FlRUZVaU9VVUVRRUVBSVFjTUFnc0NRQUpBSUI1QkFVY0VRQUpBQWtBZ0hrRUJheUlLUVFSSkJFQWdDaUVCSUFnaEJ3d0JDeUFLUVFOeElRRWdDQ0FLUVh4eEloVkJtQUZzYWlFSEEwQWdnQUVnQ0NBTVFaZ0JiR29pQmtIb0JHb2dCa0hRQTJvZ0JrRzRBbW9nQnYwSkFxQUIvVllDQUFIOVZnSUFBdjFXQWdBRElBWkI0QVJxSUFaQnlBTnFJQVpCc0FKcUlBYjlDUUtZQWYxV0FnQUIvVllDQUFMOVZnSUFBLzJ4QWYyNUFTQUdRZXdFYWlBR1FkUURhaUFHUWJ3Q2FpQUcvUWtDcEFIOVZnSUFBZjFXQWdBQy9WWUNBQU1nQmtIa0JHb2dCa0hNQTJvZ0JrRzBBbW9nQnYwSkFwd0IvVllDQUFIOVZnSUFBdjFXQWdBRC9iRUIvYmtCSVlBQklBeEJCR29pRENBVlJ3MEFDeUNBQVNDQUFTQ0FBZjBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzI1QVNLQUFTQ0FBU0NBQWYwTkJBVUdCd0FCQWdNQUFRSURBQUVDQS8yNUFmMGJBQ0VHSUFvZ0ZVWU5BUXNEUUNBR0lBY29BcUFCSUFjb0FwZ0JheUlLSUFZZ0Nrc2JJZ1lnQnlnQ3BBRWdCeWdDbkFGcklnb2dCaUFLU3hzaEJpQUhRWmdCYWlFSElBRkJBV3NpQVEwQUN3c2dCa0dBZ0lDQUFVOE5BaUFHUVFSMEVDd2lGRVVOQWdKQUlCNUZEUUFnRHlBT2F5RVNJQkFnRm1zaEdpQVVRUVJySVRzZ0ZFRUVhaUVrSUJSQkRHb2hLU0FVUVJ4cUlVTWdGRUVZYWlFZklCUkJGR29oSUNBVVFReHJJVVFnRkVFSWFpRXFJQlJCRUdvaE5pQVVRUkJySVRjZ0ZFRUlheUZCSUNHdElZWUJJQ0t0SVljQklDaXRJWW9CSURDdElZc0JRUUVoUmdOQUlBZ29BcHdCSWdGQkFtOGhSeUFJS0FLWUFTSUhRUUp2SVR3Z0NDZ0NwQUVnQVdzaUp5QVNheUVzSUFnb0FxQUJJQWRySWkwZ0dtc2hMaUF3SWd3aEJ5QW9JZ1loQ2lBaUlnRWhPaUFoSWc4aEVRSkFJQWtvQWhRaUZTQkdSZzBBSUJVZ1Jtc2hGVUVBSVFwQkFDRUhJQXdFUUVKL0lCV3RJb2dCaGtKL2hTQ0xBWHdnaUFHSXB5RUhDeUFvQkVCQ2Z5QVZyU0tJQVlaQ2Y0VWdpZ0Y4SUlnQmlLY2hDZ3RCQUNFUFFRQWhBU0FpQkVCQ2Z5QVZyU0tJQVlaQ2Y0VWdod0Y4SUlnQmlLY2hBUXNnSVFSQVFuOGdGYTBpaUFHR1FuK0ZJSVlCZkNDSUFZaW5JUThMUVFBaE9rRUFJUXhCQVNBVlFRRnJkQ0lPSURCSkJFQWdNQ0FPYTYxQ2Z5QVZyU0tJQVlaQ2Y0VjhJSWdCaUtjaERBc2dEaUFpU1FSQUlDSWdEbXV0UW44Z0ZhMGlpQUdHUW4rRmZDQ0lBWWluSVRvTFFRQWhFVUVBSVFZZ0RpQW9TUVJBSUNnZ0RtdXRRbjhnRmEwaWlBR0dRbitGZkNDSUFZaW5JUVlMSUE0Z0lVOE5BQ0FoSUE1cnJVSi9JQld0SW9nQmhrSi9oWHdnaUFHSXB5RVJDMEYvSURvZ0NDZ0N0QUVpRldzaURrRUFJQTRnT2swYklnNUJBbW9pRmlBT0lCWkxHeUlPSUM0Z0RpQXVTUnNpTkVGL0lBRWdDQ2dDMkFFaUUyc2lEa0VBSUFFZ0RrOGJJZ0ZCQW1vaURpQUJJQTVMR3lJQklCb2dBU0FhU1JzaUppQThHMEVCZENJQklDWWdOQ0E4RzBFQmRFRUJjaUlPSUFFZ0Rrc2JJa2dnTFVraEdDQU1JQlZySWdGQkFDQUJJQXhOR3lJQlFRSnJJZ3hCQUNBQklBeFBHeUlRSUFjZ0Uyc2lBVUVBSUFFZ0IwMGJJZ0ZCQW1zaURFRUFJQUVnREU4YkloWWdQQnRCQVhRaURDQVdJQkFnUEJ0QkFYUkJBWElpSzBraEx5QUtJQWdvQXJnQklodHJJaFZCQUNBS0lCVlBHeUlLUVFKckloVkJBQ0FLSUJWUEd5SVZJU01nQmlBSUtBTGNBU0lLYXlJT1FRQWdCaUFPVHhzaUJrRUNheUlPUVFBZ0JpQU9UeHNpRGlFOVFYOGdEeUFiYXlJR1FRQWdCaUFQVFJzaUJrRUNhaUlQSUFZZ0Qwc2JJZ1lnRWlBR0lCSkpHeUliSVQ1QmZ5QVJJQXBySWdaQkFDQUdJQkZOR3lJR1FRSnFJZ29nQmlBS1N4c2lCaUFzSUFZZ0xFa2JJaHdoUHlCSEJFQWdGU0U5SUJ3aFBpQWJJVDhnRGlFakN5QklJQzBnR0JzaFNTQU1JQ3NnTHhzaEdDQVNJQnhxSVZBZ0RpQVNhaUZSSUNjRVFDQVVJQlpCQTNRaUJtb2lSVUVFYWlBN0lDNUJBM1FpQ21vaVVpQVdJQzVJSWd3YklWTWdCaUFrYWlJR0lDWWdMaUFtSUM1SUd5SVBJQWNnRXlBSElCTkpHMEVDSUFFZ0FVRUNUeHRxSWdGcUloTWdCMnRCQW1zaUVVRURkQ0lyYWlBR1NTQXBJQWNnQVd0QkEzUnFJZ0VnSzJvZ0FVbHlJQkZCLy8vLy93RkxjaUZVSURRZ0drRUJheUFhSURSS0d5RXZRUUFoRVNBYVFRRktJQzVCQUVweUlWVWdKQ0E4UVFKMElnRnJJQkJCQTNScUlWWWdBU0JGYWlGWElCWWdCMEYvY3lBVGFpSktRWHh4SWpKcUlUZ2dGa0VCYWlJVElESnFJVUlnR2lBMGFpRllJQkFnR21vaFdTQVcvUkg5REFBQUFBQUJBQUFBQWdBQUFBTUFBQUQ5cmdFaGd3RWdGQ0FZUVFKMGFpRmFJRUVnR2tFRGRDSUJhaUZMSUFFZ08yb2hUQ0FLSUVGcUlVMGdHa1VnTGtFQlJuRWhXeUFVSUVsQkFuUWlBV29oWENBQklEdHFJVjBnRS8wUi9Rd0FBQUFBQVFBQUFBSUFBQUFEQUFBQS9hNEJJWVFCSURzZ0ZpQXVJQXdiUVFOMGFpRmVBMEFDUUFKQUlCRWdHMGtnRVNBVlQzRU5BQ0FSSUZCSklCRWdVVTl4RFFBZ0VVRUJhaUVyREFFTElDMGdTRXNFUUNCZFFRQTJBZ0FnWEVFQU5nSUFDeUE1SUJZZ0VTQW1JQkZCQVdvaUt5QlhRUUpCQUJBWElEa2dXU0FSSUZnZ0t5QldRUUpCQUJBWEFrQUNRQUpBSUR4RkJFQWdWVVVOQXlBV0lDWk9EUUlDUUFKQUlCWkJBRW9FUUNCZUtBSUFJUWNNQVFzZ0pDZ0NBQ0lISVFFZ0ZrRUFTQTBCQ3lBSElRRWdVeWdDQUNFSEN5QkZJRVVvQWdBZ0FTQUhha0VDYWtFQ2RXczJBZ0FnRXlJSElBOU9EUUZCQUNFSElJUUJJWUFCSUlNQklZSUJJQk1oQVNBV0lRb2dTa0VVU1NCVWNrVUVRQU5BSUJRZ2dBRkJBZjJyQVNLQkFmMGJBRUVDZEdvaUFTQVVJSUVCL1JzRFFRSjBhaUlHSUJRZ2dRSDlHd0pCQW5ScUlnb2dGQ0NCQWYwYkFVRUNkR29pRENBQi9Ra0NBUDFXQWdBQi9WWUNBQUw5VmdJQUF5QVVJSUlCUVFIOXF3SDlEQUVBQUFBQkFBQUFBUUFBQUFFQUFBRDlVQ0tGQWYwYkEwRUNkR29nRkNDRkFmMGJBa0VDZEdvZ0ZDQ0ZBZjBiQVVFQ2RHb2dGQ0NGQWYwYkFFRUNkR3I5Q1FJQS9WWUNBQUg5VmdJQUF2MVdBZ0FESUJRZ2dRSDlEQUVBQUFBQkFBQUFBUUFBQUFFQUFBRDlVQ0tCQWYwYkEwRUNkR29nRkNDQkFmMGJBa0VDZEdvZ0ZDQ0JBZjBiQVVFQ2RHb2dGQ0NCQWYwYkFFRUNkR3I5Q1FJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRRWlnUUg5V2dJQUFDQU1JSUVCL1ZvQ0FBRWdDaUNCQWYxYUFnQUNJQVlnZ1FIOVdnSUFBeUNDQWYwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTR0NBU0NBQWYwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTR0FBU0FIUVFScUlnY2dNa2NOQUFzZ1FpRUJJRGdoQ2lBUElRY2dNaUJLUmcwQ0N3TkFJQlFnQVVFRGRHb2lCeUFIS0FJQUlCUWdDa0VEZEdvb0FnUWdCeWdDQkdwQkFtcEJBblZyTmdJQUlBRWlDa0VCYWlJQklBOUhEUUFMSUE4aEJ3d0JDd0pBSUZ0RkJFQWdGaUlISUNaT0RRRURRQ0FVSUFkQkEzUnFJZ0VvQWdRaEJpQUJJQVlDZndKQUlBZEJBRTRFUUNBQklFMGdCeUF1U0Jzb0FnQWhPaUFIUVFGcUlRRU1BUXNnRkNnQ0FDRTZRUUFoQVNBVUlBZEJBV29pQncwQkdnc2dBU0F1VGdSQUlBRWhCeUJOREFFTElCUWdBU0lIUVFOMGFnc29BZ0FnT21wQkFtcEJBblZyTmdJRUlBY2dKa2dOQUFzTUFRc2dGQ0FVS0FJQVFRSnROZ0lBREFNTElCQWlCeUEwVGcwQ0EwQWdGQ0FIUVFOMGFpSUJLQUlBSVFvQ2Z5QUhRUUJJQkVBZ0pDZ0NBQ0VHSUNRTUFRc2dGQ0FIUVFOMGFrRUVhaUJNSUFjZ0drZ2JLQUlBSVFZZ0pDQUhSUTBBR2lCTUlBRkJCR3NnQnlBYVNoc0xJUXdnQVNBTUtBSUFJQVpxUVFGMUlBcHFOZ0lBSUFkQkFXb2lCeUEwUncwQUN3d0NDeUFISUNaT0RRQURRQ0FVSUFkQkEzUnFJZ0VnQVNnQ0FBSi9Ba0FnQjBFQVNnUkFJRHNnQnlBdUlBY2dMa2diUVFOMGFpZ0NBQ0VLREFFTElDUW9BZ0FoQ2lBa0lBZEJBRWdOQVJvTElGSWdCeUF1VGcwQUdpQVVJQWRCQTNScVFRUnFDeWdDQUNBS2FrRUNha0VDZFdzMkFnQWdCMEVCYWlJSElDWkhEUUFMQ3lBUUlEUk9EUUFnTHlBUUlnRWlCMG9FUUFOQUlCUWdCMEVEZEdvaUFTQUJLQUlFSUJRZ0IwRUJhaUlIUVFOMGFpZ0NBQ0FCS0FJQWFrRUJkV28yQWdRZ0J5QXZSdzBBQ3lBdklRRUxJQUVnTkU0TkFBTkFBbjhDUUNBQklnZEJBRTRFUUNBVUlBRkJBM1JxSUVzZ0FTQWFTQnNvQWdBaERDQUJRUUZxSVFvTUFRc2dGQ2dDQUNFTVFRQWhDaUFVSUFkQkFXb2lBUTBCR2dzZ0NpQWFUZ1JBSUFvaEFTQkxEQUVMSUJRZ0NpSUJRUU4wYWdzaEJpQVVJQWRCQTNScUlnY2dCeWdDQkNBR0tBSUFJQXhxUVFGMWFqWUNCQ0FCSURSSURRQUxDeUE1SUJnZ0VTQkpJQ3NnV2tFQlFRQkJBQkFmUlEwR0N5QXJJaEVnSjBjTkFBc0xJQWhCbUFGcUlRZ2dQa0VCZENJQklEOUJBWFJCQVhJaUJ5QUJJQWRMR3lJQklDY2dBU0FuU1JzaFNDQkRJQlZCQlhRaUFXb2dPeUFzUVFWMElnZHFJQlVnTEVnaUJoc2hTaUFCSUI5cUlBY2dRV29nQmhzaFN5QUJJQ0JxSUFjZ1JHb2dCaHNoVENBQklEWnFJQWNnTjJvZ0Joc2hUU0FjSUJKQkFXc2dFaUFjU2hzaERDQXNRUUJLSWc4Z0VrRUJTbkloVWlBQklCUnFJaXNnUjBFRWRHb2hVeUFwSUJKQkEzUWlHa0VJYXlJK1FRQWdFa0VBVEJ0QkFuUWlDbW9oVkNBS0lDcHFJVlVnQ2lBa2FpRldJQW9nRkdvaFZ5QXBRUUFnTEVFRGRDSUtRUWhySWo4Z0R4dEJBblFpRDJvaFdDQVBJQ3BxSVZrZ0R5QWthaUZhSUE4Z0ZHb2hXeUFVUVFRZ1IwRUNkR3RCQW5ScUlBNUJCWFJxSVZ3Z0d5QXNJQnNnTEVnYklROGdGVUVCYWlFUUlCUWdJMEVCZENJV0lEMUJBWFJCQVhJaUV5QVRJQlpMR3lKZFFRUjBhaUZlSUFFZ0tXb2hQU0FCSUNwcUlTTWdBU0FrYWlFdklCcEJBV3NoT0NBYVFRSnJJVUlnR2tFRGF5RXVJQlFnRWtFRmRHb2hZU0FhUVFScklUUWdDa0VGYXlGaUlBcEJCbXNoWXlBS1FRZHJJV1FnRWtVZ0xFRUJSbkVoWlNBcElBZEJFR3NpQVdvaEppQUJJQ3BxSVRvZ0FTQWthaUU4SUFFZ0ZHb2hSU0FwSUQ1QkFuUWlBV29oYUNBQklDcHFJV2tnQVNBa2FpRnFJQUVnRkdvaGF5QTdJQlVnTENBR0cwRUZkQ0lCYWlGc0lBRWdRV29oRXlBQklFUnFJUkVnQVNBM2FpRnRJQ2tnUDBFQ2RDSUJhaUZ1SUFFZ0ttb2hieUFCSUNScUlYQWdBU0FVYWlGeEEwQUNRQUpBQW44Q1FDQVlJaFlnU1VrRVFDQTVJQllnRlVFRUlFa2dGbXNpQVNBQlFRUlBHeUFXYWlJWUlCc2dVMEVCUVFnUUZ5QTVJQllnVVNBWUlGQWdYRUVCUVFnUUZ5QkhSUVJBSUZKRkRRVWdGU0FiVGcwRUFuOGdGVUVBU2dSQUlHMG9BZ0FoQnlBVElRWWdFU0VLSUd3TUFRc2dOaWdDQUNFSElCVkJBRWdOQXlBZklRWWdJQ0VLSUVNTElYa2dLeUFyS0FJQUlBY2dUU2dDQUdwQkFtcEJBblZyTmdJQUlDOGdMeWdDQUNBS0tBSUFJRXdvQWdCcVFRSnFRUUoxYXpZQ0FDQWpJQ01vQWdBZ0JpZ0NBQ0JMS0FJQWFrRUNha0VDZFdzMkFnQWdTaWdDQUNFSElIa29BZ0FNQXdzZ1pRUkFJQlFnRkNnQ0FFRUNiVFlDQUNBa0lDUW9BZ0JCQW0wMkFnQWdLaUFxS0FJQVFRSnROZ0lBSUNrZ0tTZ0NBRUVDYlRZQ0FBd0ZDeUFiSUJVaUIwb0VRQU5BSUFkQkEzUWhBUUovQWtBZ0IwRUFTQVJBSUFkQmYwWU5BU0FVSUFGQkFuUnFJZ0VnQVNnQ0VDQVVLQUlBUVFGMFFRSnFRUUoxYXpZQ0VDQUJJQUVvQWhRZ0pDZ0NBRUVCZEVFQ2FrRUNkV3MyQWhRZ0FTQUJLQUlZSUNvb0FnQkJBWFJCQW1wQkFuVnJOZ0lZSUNrb0FnQkJBWFJCQW1vaEJpQUJRUnhxREFJTElDd2dCMEVCYWlJR1RBUkFJQlFnQVVFQ2RHb2lDaUFLS0FJUUlCUWdBU0EvSUFjZ0xFZ2lCaHRCQW5ScUtBSUFJSEVvQWdCcVFRSnFRUUoxYXpZQ0VDQUtJQW9vQWhRZ0ZDQUJRUUZ5SUdRZ0JodEJBblJxS0FJQUlIQW9BZ0JxUVFKcVFRSjFhellDRkNBS0lBb29BaGdnRkNBQlFRSnlJR01nQmh0QkFuUnFLQUlBSUc4b0FnQnFRUUpxUVFKMWF6WUNHQ0FVSUFGQkEzSWdZaUFHRzBFQ2RHb29BZ0FnYmlnQ0FHcEJBbW9oQmlBS1FSeHFEQUlMSUJRZ0FVRUNkR29pQVNBQktBSVFJQUVvQWdBZ0ZDQUdRUVYwYWlJR0tBSUFha0VDYWtFQ2RXczJBaEFnQVNBQktBSVVJQUVvQWdRZ0JpZ0NCR3BCQW1wQkFuVnJOZ0lVSUFFZ0FTZ0NHQ0FCS0FJSUlBWW9BZ2hxUVFKcVFRSjFhellDR0NBQktBSU1JQVlvQWd4cVFRSnFJUVlnQVVFY2Fnd0JDeUEzSURjb0FnQWdGQ2dDQUNCYktBSUFha0VDYWtFQ2RXczJBZ0FnUkNCRUtBSUFJQ1FvQWdBZ1dpZ0NBR3BCQW1wQkFuVnJOZ0lBSUVFZ1FTZ0NBQ0FxS0FJQUlGa29BZ0JxUVFKcVFRSjFhellDQUNBcEtBSUFJRmdvQWdCcVFRSnFJUVlnT3dzaUFTQUJLQUlBSUFaQkFuVnJOZ0lBSUFkQkFXb2lCeUFiUncwQUN3c2dIQ0FPSWdkTURRUURRQ0FIUVFOMElRRUNmeUFIUVFCSUJFQWdGQ0FCUVFKMGFpSUJJQUVvQWdBZ05pZ0NBRUVCZEVFQmRXbzJBZ0FnQVNBQktBSUVJQlFvQWhSQkFYUkJBWFZxTmdJRUlBRWdBU2dDQ0NBVUtBSVlRUUYwUVFGMWFqWUNDQ0FVS0FJY1FRRjBJUW9nQVVFTWFnd0JDeUFIQkVBZ0ZDQUJRUUowYWlJR0lBWW9BZ0FnWVNBR0lBY2dFa29pTWh0QkVHc29BZ0FnRkNBQlFRUnlJRFFnQnlBU1NDSUtHMEVDZEdvb0FnQnFRUUYxYWpZQ0FDQUdJQVlvQWdRZ1JDQWFJQUVnTWh0QkFuUWlNbW9vQWdBZ0ZDQUJRUVZ5SUM0Z0NodEJBblJxS0FJQWFrRUJkV28yQWdRZ0JpQUdLQUlJSURJZ1FXb29BZ0FnRkNBQlFRWnlJRUlnQ2h0QkFuUnFLQUlBYWtFQmRXbzJBZ2dnTWlBN2FpZ0NBQ0FVSUFGQkIzSWdPQ0FLRzBFQ2RHb29BZ0JxSVFvZ0JrRU1hZ3dCQ3lBVUlCUW9BZ0FnTmlnQ0FDQVVRUVFnTkNBSElCSklJZ0ViUVFKMGFpZ0NBR3BCQVhWcU5nSUFJQ1FnSkNnQ0FDQVVLQUlVSUJSQkJTQXVJQUViUVFKMGFpZ0NBR3BCQVhWcU5nSUFJQ29nS2lnQ0FDQVVLQUlZSUJSQkJpQkNJQUViUVFKMGFpZ0NBR3BCQVhWcU5nSUFJQlFvQWh3Z0ZFRUhJRGdnQVJ0QkFuUnFLQUlBYWlFS0lDa0xJZ0VnQVNnQ0FDQUtRUUYxYWpZQ0FDQUhRUUZxSWdjZ0hFY05BQXNNQkFzZ0xTRWFJQ2NoRWlCR1FRRnFJa1lnSGtjTkJRd0dDeUFySUNzb0FnQWdCMEVCZEVFQ2FrRUNkV3MyQWdBZ0x5QXZLQUlBSUNBb0FnQkJBWFJCQW1wQkFuVnJOZ0lBSUNNZ0l5Z0NBQ0FmS0FJQVFRRjBRUUpxUVFKMWF6WUNBQ0JES0FJQUlnY0xJUUVnUFNBOUtBSUFJQUVnQjJwQkFtcEJBblZyTmdJQUlCVWhCaUFRSWdFaUJ5QVBTQVJBQTBBZ0ZDQUJRUVYwYWlJSElBZjlBQUlBSURZZ0JrRUZkR3I5QUFJQUlBZjlBQUlRL2E0Qi9Rd0NBQUFBQWdBQUFBSUFBQUFDQUFBQS9hNEJRUUw5ckFIOXNRSDlDd0lBSUFFaUJrRUJhaUlCSUE5SERRQUxJQThoQndzZ0J5QWJUZzBBQTBBZ0IwRURkQ0VCSUFjZ0xFZ2hCZ0pBSUFkQkFFd0VRQ0EyS0FJQUlRb2dCMEVBVGdSQUlCUWdBVUVDZENJQmFpSXlJRElvQWdBZ0NpQUJJRFpxSUVVZ0Joc29BZ0JxUVFKcVFRSjFhellDQUNBQklDUnFJZ29nQ2lnQ0FDQWdLQUlBSUFFZ0lHb2dQQ0FHR3lnQ0FHcEJBbXBCQW5Wck5nSUFJQUVnS21vaUNpQUtLQUlBSUI4b0FnQWdBU0FmYWlBNklBWWJLQUlBYWtFQ2FrRUNkV3MyQWdBZ1F5Z0NBQ0FCSUVOcUlDWWdCaHNvQWdCcVFRSnFJUVlnQVNBcGFpRUJEQUlMSUJRZ0FVRUNkQ0lCYWlJR0lBWW9BZ0FnQ2tFQmRFRUNha0VDZFdzMkFnQWdBU0FrYWlJR0lBWW9BZ0FnRkNnQ0ZFRUJkRUVDYWtFQ2RXczJBZ0FnQVNBcWFpSUdJQVlvQWdBZ0ZDZ0NHRUVCZEVFQ2FrRUNkV3MyQWdBZ0FTQXBhaUVCSUJRb0FoeEJBWFJCQW1vaEJnd0JDeUFVSUFjZ0xDQUdHMEVEZEVFRWEwRUNkQ0lLYWlnQ0FDRXlJQVpGQkVBZ0ZDQUJRUUowSWdGcUlnWWdCaWdDQUNBeUlFVW9BZ0JxUVFKcVFRSjFhellDQUNBQklDUnFJZ1lnQmlnQ0FDQUtJQ1JxS0FJQUlEd29BZ0JxUVFKcVFRSjFhellDQUNBQklDcHFJZ1lnQmlnQ0FDQUtJQ3BxS0FJQUlEb29BZ0JxUVFKcVFRSjFhellDQUNBQklDbHFJUUVnQ2lBcGFpZ0NBQ0FtS0FJQWFrRUNhaUVHREFFTElCUWdBVUVDZENJQmFpSUdJQVlvQWdBZ01pQUdLQUlRYWtFQ2FrRUNkV3MyQWdBZ0FTQWthaUlHSUFZb0FnQWdDaUFrYWlnQ0FDQUdLQUlRYWtFQ2FrRUNkV3MyQWdBZ0FTQXFhaUlHSUFZb0FnQWdDaUFxYWlnQ0FDQUdLQUlRYWtFQ2FrRUNkV3MyQWdBZ0NpQXBhaWdDQUNBQklDbHFJZ0VvQWhCcVFRSnFJUVlMSUFFZ0FTZ0NBQ0FHUVFKMWF6WUNBQ0FIUVFGcUlnY2dHMGNOQUFzTElBNGdIRTROQUNBTUlBNGlBU0lIU2dSQUEwQWdGQ0FCUVFWMGFpSUhJQWY5QUFJZ0lBZjlBQUlBL2E0QlFRSDlyQUVnQi8wQUFoRDlyZ0g5Q3dJUUlBRkJBV29pQVNBTVJ3MEFDeUFNSVFjTElBY2dIRTROQUFOQUlFTWdCMEVEZENJQlFRSjBhaUl5QW44Z0IwRUFTQVJBSUJRb0FnQWhCaUFIUVg5SEJFQWdOaUFCUVFKMElnRnFJZ29nQ2lnQ0FDQUdhallDQUNBQklDQnFJZ1lnQmlnQ0FDQWtLQUlBYWpZQ0FDQUJJQjlxSWdFZ0FTZ0NBQ0FxS0FJQWFqWUNBQ0FwS0FJQURBSUxJRFlnQVVFQ2RDSUJhaUlLSUFvb0FnQWdWeWdDQUNBR2FrRUJkV28yQWdBZ0FTQWdhaUlHSUFZb0FnQWdWaWdDQUNBa0tBSUFha0VCZFdvMkFnQWdBU0FmYWlJQklBRW9BZ0FnVlNnQ0FDQXFLQUlBYWtFQmRXbzJBZ0FnVkNnQ0FDQXBLQUlBYWtFQmRRd0JDeUFCSUQ0Z0J5QVNTQnNoQmlBU0lBZEJBV29pWmt3RVFDQTJJQUZCQW5RaUNtb2lBU0FCS0FJQUlHc29BZ0FnRkNBR1FRSjBhaUlCS0FJQWFrRUJkV28yQWdBZ0NpQWdhaUlHSUFZb0FnQWdhaWdDQUNBQktBSUVha0VCZFdvMkFnQWdDaUFmYWlJR0lBWW9BZ0FnYVNnQ0FDQUJLQUlJYWtFQmRXbzJBZ0FnYUNnQ0FDQUJLQUlNYWtFQmRRd0JDeUEySUFGQkFuUWlDbW9pQVNBQktBSUFJQlFnWmtFRmRHb2lBU2dDQUNBVUlBWkJBblJxSWdZb0FnQnFRUUYxYWpZQ0FDQUtJQ0JxSW1ZZ1ppZ0NBQ0FCS0FJRUlBWW9BZ1JxUVFGMWFqWUNBQ0FLSUI5cUlnb2dDaWdDQUNBQktBSUlJQVlvQWdocVFRRjFhallDQUNBQktBSU1JQVlvQWd4cVFRRjFDeUF5S0FJQWFqWUNBQ0FIUVFGcUlnY2dIRWNOQUFzTElEa2dGaUJkSUJnZ1NDQmVRUUZCQkVFQUVCOE5BQXNMREFJTElCUVFDVUVCSVFjTElEa2dOVUVRYXlnQ0FDSUJJRjhvQWdBaUJtc2dOVUVNYXlnQ0FDQmdLQUlBSWdwcklEVkJDR3NvQWdBaUNDQUdheUExUVFScktBSUFJQXBySUFrb0FqUkJBU0FJSUFGckVCY2dPUkFkREFNTElEa1FIU0FVRUFsQkFDRUhEQUlMSURrUUhVRUFJUWNNQVF0QkFDRUhJQTRRR2lBUEVBa0xJQ1ZCSUdva0FDQUhEUUVNQlFzZ0FTRUlRUUFoRHYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNHQUFTTUFRVUJxSWh3a0FBSkFBbjhDUUNBWktBSkFCRUFnQ1NnQ0hDSVZJQWtvQWhoQm1BRnNhaUlCUVpnQmF5Z0NBQ0VhSUFGQmtBRnJLQUlBSVJzZ0ZTZ0NCQ0VNSUJVb0Fnd2hlaUFWS0FJQUlSQWdGU2dDQ0NFVFFRRWhCeUFaS0FJc0loOG9BZ1FoS3lBSVFRRkdEUU5CQUNFR0lBaEJBV3NpRmlFSUlCVWhBUUpBSUJaQkJFOEVRQ0FXUVFOeElRZ2dBU0FXUVh4eElncEJtQUZzYWlFQlFRQWhCd05BSUlBQklCVWdCMEdZQVd4cUlnWkI2QVJxSUFaQjBBTnFJQVpCdUFKcUlBYjlDUUtnQWYxV0FnQUIvVllDQUFMOVZnSUFBeUFHUWVBRWFpQUdRY2dEYWlBR1FiQUNhaUFHL1FrQ21BSDlWZ0lBQWYxV0FnQUMvVllDQUFQOXNRSDl1UUVnQmtIc0JHb2dCa0hVQTJvZ0JrRzhBbW9nQnYwSkFxUUIvVllDQUFIOVZnSUFBdjFXQWdBRElBWkI1QVJxSUFaQnpBTnFJQVpCdEFKcUlBYjlDUUtjQWYxV0FnQUIvVllDQUFMOVZnSUFBLzJ4QWYyNUFTR0FBU0FIUVFScUlnY2dDa2NOQUFzZ2dBRWdnQUVnZ0FIOURRZ0pDZ3NNRFE0UEFBRUNBd0FCQWdQOXVRRWlnQUVnZ0FFZ2dBSDlEUVFGQmdjQUFRSURBQUVDQXdBQkFnUDl1UUg5R3dBaEJpQUtJQlpHRFFFTEEwQWdCaUFCS0FLZ0FTQUJLQUtZQVdzaUJ5QUdJQWRMR3lJSElBRW9BcVFCSUFFb0Fwd0JheUlHSUFZZ0Iwa2JJUVlnQVVHWUFXb2hBU0FJUVFGcklnZ05BQXNMUVFBaEJ5QUdRZi8vL3o5TERRTWdIQ0FHUVFWMElrWVFGaUlCTmdJZ0lBRkZEUU1nSENBQk5nSUFJQlpGQkVCQkFTRUhJQUVRQ1F3RUN5QjZJQXhySVE4Z0V5QVFheUVPUVFJZ0swRUJkaUlCSUFGQkFrMGJJVWNnQ1NnQ0pDSUtJQnRCSEd3aVRTQWFRUnhzSWw5cmFpRXZJQW9nRzBFWWJDSmdJQnBCR0d3aVVtdHFJVDBnQ2lBYlFSUnNJbE1nR2tFVWJDSlVhMm9oUGlBS0lCdEJCSFFpVlNBYVFRUjBJbFpyYWlFL0lBb2dHMEVNYkNKWElCcEJER3dpV0d0cUlUZ2dHeUFhYXlJUVFRZHNJVWtnRUVFR2JDRkZJQkJCQld3aE1pQVFRUU5zSVVnZ0VFRUJkQ0ZRSUFvZ0VFRURkQ0pSYWlGQ0lBb2dFRUVDZENKQmFpRVVJQkJCQlhRaFdTQVEvUkVoaEFFRFFDQWNJQTgyQWdnZ0hDQU9JZ0UyQWlnZ0ZTZ0NuQUVoSkNBVktBS2tBU0VwSUJVb0FxQUJJUjRnRlNnQ21BRWhJQ0FjUVFBMkFqZ2dIQ0FCTmdJMElCeEJBRFlDTUNBY0lDQkJBbThpR0RZQ0xDQWNJQjRnSUdzaURpQUJheUlUTmdJOElCd2dFellDSkFKQUlDdEJBa2dpV2tVZ0tTQWtheUlQUVE5TGNVVUVRRUVBSVFjZ0NpRUdJQTlCQ0VrTkFTQS9JQVlnVXlBZVFRSjBJZ0ZxSUZRZ0lFRUNkQ0lJYW10cUlqcEpJRDRnQmlBQklGVnFJQWdnVm1wcmFpSkRTWEVnUFNCRFNTQS9JQVlnQVNCZ2FpQUlJRkpxYTJvaVBFbHhjaUF2SUVOSklEOGdCaUFCSUUxcUlBZ2dYMnByYWlKRVNYRnlJVnNnUFNCRVNTQXZJRHhKY1NGY0lENGdSRWtnTHlBNlNYRWhYU0E4SUQ1TElEb2dQVXR4SVY0Z1FpQUdJQUVnVjJvZ0NDQllhbXRxSWtwSklEZ2dCaUFCSUZGcUlBaHJhaUpMU1hFaFlTQVVJRXBKSURnZ0JpQWJJQjVxSUJvZ0lHcHJRUUowYWlKTVNYRWhZaUFVSUV0SklFSWdURWx4SVdNZ0JpQUJJQWhyYWlFcUlBNUJmSEVoQ0NBY0tBSWdJaE1nRGtFRmRHb2lFVUVRYXlFbElCRkJGR3NoTENBUlFSaHJJUzRnRVVFY2F5RTJJQkZCQkdzaE9TQVJRUWhySVRzZ0VVRU1heUUwUVFBaEdDQVRRUXhxSWlNZ0hpQWdRWDl6YWlJTVFRVjBJZ0ZxSUNOSklBeEIvLy8vUDBzaURDQVRRUVJxSWlFZ0FXb2dJVWtnQVNBVGFpQVRTWEp5SUJOQkNHb2lJaUFCYWlBaVNYSnlJQTVCeUFKSmNpRmtJQk5CRkdvaUtDQUJhaUFvU1NBVFFSQnFJaWNnQVdvZ0owbHlJQXh5SUJOQkdHb2lNQ0FCYWlBd1NYSWdFMEVjYWlJdElBRnFJQzFKY2lBT1FkUUFTWEloWlFOQUlBY2hEQ0FjUVNCcUlnRWdCaUFRUVFnUU5DQUJFQndDUUNBT1JRMEFJQmdnV1d3aEIwRUFJUUVDUUFKQUlHUU5BQ0JoSUFZZ05ra2dFeUFISUNwcUlqZEpjU0FHSUFjZ1Ntb2lFa2tnS2lBNFMzRWdGQ0FxU1NBR0lBY2dUR29pSmtseElBWWdCeUJMYWlJMVNTQXFJRUpMY1hKeWNpQUdJQzVKSUNFZ04wbHhjaUFHSUN4SklDSWdOMGx4Y2lBR0lDVkpJQ01nTjBseGNpQmpjaUJpY2lBVElDWkpJQWNnRkdvaU55QTJTWEZ5SUNFZ0pra2dMaUEzUzNGeUlDSWdKa2tnTENBM1MzRnlJQ01nSmtrZ0pTQTNTM0Z5Y2cwQUlCTWdOVWtnQnlCQ2FpSW1JRFpKY1EwQUlDRWdOVWtnSmlBdVNYRU5BQ0FpSURWSklDWWdMRWx4RFFBZ0l5QTFTU0FsSUNaTGNRMEFJQWNnT0dvaUppQTJTU0FTSUJOTGNRMEFJQ1lnTGtrZ0VpQWhTM0VOQUNBbUlDeEpJQklnSWt0eERRQWdFaUFqU3lBbElDWkxjUTBBQTBBZ0JpQUJRUUowYWlBVElBRkJCWFJxSWhMOUNRSUFJQklxQWlEOUlBRWdFa0ZBYXlvQ0FQMGdBaUFTS2dKZy9TQUQvUXNDQUNBR0lBRWdFR3BCQW5ScUlCTDlDUUlFSUJJcUFpVDlJQUVnRWlvQ1JQMGdBaUFTS2dKay9TQUQvUXNDQUNBR0lBRWdVR3BCQW5ScUlCTDlDUUlJSUJJcUFpajlJQUVnRWlvQ1NQMGdBaUFTS2dKby9TQUQvUXNDQUNBR0lBRWdTR3BCQW5ScUlCTDlDUUlNSUJJcUFpejlJQUVnRWlvQ1RQMGdBaUFTS2dKcy9TQUQvUXNDQUNBQlFRUnFJZ0VnQ0VjTkFBc2dDQ0lCSUE1R0RRRUxBMEFnQmlBQlFRSjBhaUFUSUFGQkJYUnFJaElxQWdBNEFnQWdCaUFCSUJCcVFRSjBhaUFTS2dJRU9BSUFJQVlnQVNCUWFrRUNkR29nRWlvQ0NEZ0NBQ0FHSUFFZ1NHcEJBblJxSUJJcUFndzRBZ0FnQVVFQmFpSUJJQTVIRFFBTEMwRUFJUUVDUUNCbERRQWdYQ0FISUQ1cUloSWdORWtnSnlBSElEcHFJaVpKY1NCYklBY2dQMm9pTlNBMFNTQW5JQWNnUTJvaU4wbHhjaUFvSURkSklEVWdPMGx4Y2lBd0lEZEpJRFVnT1VseGNpQXRJRGRKSUJFZ05VdHhjaUJlY2lCZGNuSWdFaUE3U1NBbUlDaExjWElnRWlBNVNTQW1JREJMY1hJZ0ppQXRTeUFSSUJKTGNYSnlEUUFnQnlBOWFpSVNJRFJKSUNjZ0J5QThhaUltU1hFTkFDQVNJRHRKSUNZZ0tFdHhEUUFnRWlBNVNTQW1JREJMY1EwQUlDWWdMVXNnRVNBU1MzRU5BQ0FISUM5cUloSWdORWtnSnlBSElFUnFJZ2RKY1EwQUlCSWdPMGtnQnlBb1MzRU5BQ0FTSURsSklBY2dNRXR4RFFBZ0J5QXRTeUFSSUJKTGNRMEFBMEFnQmlBQklFRnFRUUowYWlBVElBRkJCWFJxSWdmOUNRSVFJQWNxQWpEOUlBRWdCeW9DVVAwZ0FpQUhLZ0p3L1NBRC9Rc0NBQ0FHSUFFZ01tcEJBblJxSUFmOUNRSVVJQWNxQWpUOUlBRWdCeW9DVlAwZ0FpQUhLZ0owL1NBRC9Rc0NBQ0FHSUFFZ1JXcEJBblJxSUFmOUNRSVlJQWNxQWpqOUlBRWdCeW9DV1AwZ0FpQUhLZ0o0L1NBRC9Rc0NBQ0FHSUFFZ1NXcEJBblJxSUFmOUNRSWNJQWNxQWp6OUlBRWdCeW9DWFAwZ0FpQUhLZ0o4L1NBRC9Rc0NBQ0FCUVFScUlnRWdDRWNOQUFzZ0NDSUJJQTVHRFFFTEEwQWdCaUFCSUVGcVFRSjBhaUFUSUFGQkJYUnFJZ2NxQWhBNEFnQWdCaUFCSURKcVFRSjBhaUFIS2dJVU9BSUFJQVlnQVNCRmFrRUNkR29nQnlvQ0dEZ0NBQ0FHSUFFZ1NXcEJBblJxSUFjcUFodzRBZ0FnQVVFQmFpSUJJQTVIRFFBTEN5QVlRUUZxSVJnZ0RFRUlhaUVISUFZZ1VVRUNkR29oQmlBTVFROXFJQTlKRFFBTERBRUxJQThnRDBFRGRpSUhJQ3NnQnlBclNSc2lFbTVCZUhFaEVTQVBRWGh4SVFkQkFDRUlJQW9oQmdOQVFUQVFEU0lNUlEwRUlBd2dSaEFXSWlNMkFnQWdJMFVFUUNBZkVCb2dEQkFKUVFBTUJnc2dEQ0FHTmdJb0lBd2dFRFlDSkNBTUlBNDJBaUFnRENBVE5nSWNJQXhCQURZQ0dDQU1JQUUyQWhRZ0RFRUFOZ0lRSUF3Z0dEWUNEQ0FNSUFFMkFnZ2dEQ0FUTmdJRUlBd2dCeUFJSUJGc2F5QVJJQWhCQVdvaUNDQVNSaHNpSXpZQ0xDQWZRUXdnREJBbUlBWWdFQ0FqYkVFQ2RHb2hCaUFJSUJKSERRQUxJQjhRR2dzQ1FDQUhJQTlQRFFBZ0hFRWdhaUlCSUFZZ0VDQVBJQWRySWhnUU5DQUJFQndnRGtVTkFDQWNLQUlnSWlNZ0hrRUZkRUVCSUJnZ0dFRUJUUnNpRWtFQ2RHb2dJRUVGZEd0cVFTQnJJUjRnRWtFRGNTRWdJQkpCZkhFaERDQkJJQkpCQVd0c0lTRkJBQ0VJQTBBZ0l5QUlRUVYwYWlFVFFRQWhCd0pBQWtBZ0dFRUVTUTBBSUI0Z0JpQUlRUUowSWhGcUlnRWdCaUFSSUNGcWFpSVJJQUVnRVVrYlN3UkFJQ01nQVNBUklBRWdFVXNiUVFScVNRMEJDeUFJL1JFaGdRSDlEQUFBQUFBQkFBQUFBZ0FBQUFNQUFBQWhnQUZCQUNFQkEwQWdCaUNBQVNDRUFmMjFBU0NCQWYydUFTS0NBZjBiQUVFQ2RHb2dFeUFCUVFKMGF2MEFBZ0FpZ3dIOUh3QTRBZ0FnQmlDQ0FmMGJBVUVDZEdvZ2d3SDlId0U0QWdBZ0JpQ0NBZjBiQWtFQ2RHb2dnd0g5SHdJNEFnQWdCaUNDQWYwYkEwRUNkR29nZ3dIOUh3TTRBZ0FnZ0FIOURBUUFBQUFFQUFBQUJBQUFBQVFBQUFEOXJnRWhnQUVnQVVFRWFpSUJJQXhIRFFBTElBd2lCeUFTUmcwQkMwRUFJUkVnQnlFQklDQUVRQU5BSUFZZ0FTQVFiQ0FJYWtFQ2RHb2dFeUFCUVFKMGFpb0NBRGdDQUNBQlFRRnFJUUVnRVVFQmFpSVJJQ0JIRFFBTEN5QUhJQkpyUVh4TERRQURRQ0FHSUFFZ0VHd2dDR3BCQW5ScUlCTWdBVUVDZEdvcUFnQTRBZ0FnQmlBQlFRRnFJZ2NnRUd3Z0NHcEJBblJxSUJNZ0IwRUNkR29xQWdBNEFnQWdCaUFCUVFKcUlnY2dFR3dnQ0dwQkFuUnFJQk1nQjBFQ2RHb3FBZ0E0QWdBZ0JpQUJRUU5xSWdjZ0VHd2dDR3BCQW5ScUlCTWdCMEVDZEdvcUFnQTRBZ0FnR0NBQlFRUnFJZ0ZIRFFBTEN5QUlRUUZxSWdnZ0RrY05BQXNMSUJ3Z0R5QWNLQUlJSWd4ckloTTJBZ1FnRlNnQ25BRWhBU0FjUVFBMkFoQWdIQ0FNTmdJVUlCeEJBRFlDR0NBY0lCTTJBaHdnSENBQlFRSnZJaGcyQWd3Q1FDQmFSU0FPUVE5TGNVVUVRQ0FLSVFFZ0RrRUlTUTBCSUE5QmZuRWhJU0FQUVFGeElTSWdFMEYrY1NFb0lCTkJBWEVoSnlBTVFYNXhJVEFnREVFQmNTRXRJQ2tnSkVGL2Myb2hJeUFjS0FJQUloSWdHRUVGZENJSGFpRWdJQklnQjJ0QklHb2hIaUFNSUJCc1FRSjBJU29nRGlFSUEwQkJBQ0VHUVFBaEJ3SkFBa0FDUUNBTURnSUNBUUFMQTBBZ0lDQUdRUVowYWlJUklBRWdCaUFRYkVFQ2RHb2lKZjBBQWdEOUN3SUFJQkVnSmYwQUFoRDlDd0lRSUNBZ0JrRUJjaUlSUVFaMGFpSWxJQUVnRUNBUmJFRUNkR29pRWYwQUFoRDlDd0lRSUNVZ0VmMEFBZ0Q5Q3dJQUlBWkJBbW9oQmlBSFFRSnFJZ2NnTUVjTkFBc0xJQzFGRFFBZ0lDQUdRUVowYWlJSElBRWdCaUFRYkVFQ2RHb2lCdjBBQWdEOUN3SUFJQWNnQnYwQUFoRDlDd0lRQ3dKQUlBd2dEMFlOQUNBQklDcHFJUWRCQUNFR1FRQWhFU0FNSUNOSEJFQURRQ0FlSUFaQkJuUnFJaVVnQnlBR0lCQnNRUUowYWlJcy9RQUNBUDBMQWdBZ0pTQXMvUUFDRVAwTEFoQWdIaUFHUVFGeUlpVkJCblJxSWl3Z0J5QVFJQ1ZzUVFKMGFpSWwvUUFDRVAwTEFoQWdMQ0FsL1FBQ0FQMExBZ0FnQmtFQ2FpRUdJQkZCQW1vaUVTQW9SdzBBQ3dzZ0owVU5BQ0FlSUFaQkJuUnFJaEVnQnlBR0lCQnNRUUowYWlJSC9RQUNBUDBMQWdBZ0VTQUgvUUFDRVAwTEFoQUxJQndRSEFKQUlBOUZEUUJCQUNFR1FRQWhCeUFqQkVBRFFDQUJJQVlnRUd4QkFuUnFJaEVnRWlBR1FRVjBhaUlsL1FBQ0FQMExBZ0FnRVNBbC9RQUNFUDBMQWhBZ0FTQUdRUUZ5SWhFZ0VHeEJBblJxSWlVZ0VpQVJRUVYwYWlJUi9RQUNFUDBMQWhBZ0pTQVIvUUFDQVAwTEFnQWdCa0VDYWlFR0lBZEJBbW9pQnlBaFJ3MEFDd3NnSWtVTkFDQUJJQVlnRUd4QkFuUnFJZ2NnRWlBR1FRVjBhaUlHL1FBQ0FQMExBZ0FnQnlBRy9RQUNFUDBMQWhBTElBRkJJR29oQVNBSVFRaHJJZ2hCQjBzTkFBc01BUXRCQVNBT1FRTjJJZ0VnUnlBQklFZEpHeUlJSUFoQkFVMGJJUkVnRGlBSWJrRjRjU0VTSUE1QmVIRWhJRUVBSVFjZ0NpRUJBMEJCTUJBTklnWkZEUVFnQmlCR0VCWWlIallDQUNBZVJRUkFJQjhRR2lBR0VBbEJBQXdHQ3lBR0lBRTJBaWdnQmlBUU5nSWtJQVlnRHpZQ0lDQUdJQk0yQWh3Z0JrRUFOZ0lZSUFZZ0REWUNGQ0FHUVFBMkFoQWdCaUFZTmdJTUlBWWdERFlDQ0NBR0lCTTJBZ1FnQmlBZ0lBY2dFbXhySUJJZ0IwRUJhaUlISUFoR0d5SWVOZ0lzSUI5QkRTQUdFQ1lnQVNBZVFRSjBhaUVCSUFjZ0VVY05BQXNnSHhBYUN3SkFJQTVCQjNFaUVrVU5BQ0FZUVFWMElTQWdIQ2dDQUNFSUFrQWdERVVOQUNBSUlDQnFJUkVnRWtFQ2RDRVlRUUFoQmlBTVFRRkhCRUFnREVGK2NTRWVRUUFoQndOQUlCRWdCa0VHZEdvZ0FTQUdJQkJzUVFKMGFpQVlFQXNhSUJFZ0JrRUJjaUlqUVFaMGFpQUJJQkFnSTJ4QkFuUnFJQmdRQ3hvZ0JrRUNhaUVHSUFkQkFtb2lCeUFlUncwQUN3c2dERUVCY1VVTkFDQVJJQVpCQm5ScUlBRWdCaUFRYkVFQ2RHb2dHQkFMR2dzQ1FDQU1JQTlHRFFBZ0NDQWdhMEVnYWlFSElBRWdEQ0FRYkVFQ2RHb2hFU0FTUVFKMElSaEJBQ0VHSUF3Z0tTQWtRWDl6YWtjRVFDQVRRWDV4SVNCQkFDRU1BMEFnQnlBR1FRWjBhaUFSSUFZZ0VHeEJBblJxSUJnUUN4b2dCeUFHUVFGeUloNUJCblJxSUJFZ0VDQWViRUVDZEdvZ0dCQUxHaUFHUVFKcUlRWWdERUVDYWlJTUlDQkhEUUFMQ3lBVFFRRnhSUTBBSUFjZ0JrRUdkR29nRVNBR0lCQnNRUUowYWlBWUVBc2FDeUFjRUJ3Z0QwVU5BQ0FTUVFKMElRZEJBQ0VHSUNSQkFXb2dLVWNFUUNBUFFYNXhJUXhCQUNFUkEwQWdBU0FHSUJCc1FRSjBhaUFJSUFaQkJYUnFJQWNRQ3hvZ0FTQUdRUUZ5SWhNZ0VHeEJBblJxSUFnZ0UwRUZkR29nQnhBTEdpQUdRUUpxSVFZZ0VVRUNhaUlSSUF4SERRQUxDeUFQUVFGeFJRMEFJQUVnQmlBUWJFRUNkR29nQ0NBR1FRVjBhaUFIRUFzYUN5QVZRWmdCYWlFVklCWkJBV3NpRmcwQUMwRUJEQUlMUVFFaEJ5QUpLQUljSWd3Z0NFR1lBV3hxSWlOQm1BRnJJaThvQWdBZ0kwR1FBV3NvQWdCR0RRSWdJMEdVQVdzaVBTZ0NBQ0FqUVl3QmF5Z0NBRVlOQWlBTUtBSUVJUThnRENnQ0RDRVdJQXdvQWdBaEVDQU1LQUlJSVJNZ0NTZ0NSQ0VTSUFrb0FrQWhFU0FKS0FJOElSb2dDU2dDT0NFZklBa2dDQkJWSWg1RkJFQkJBQ0VIREFNTElBaEJBVVlFUUNBZUlDTkJFR3NvQWdBaUFTQXZLQUlBSWdacklDTkJER3NvQWdBZ1BTZ0NBQ0lLYXlBalFRaHJLQUlBSWdnZ0Jtc2dJMEVFYXlnQ0FDQUtheUFKS0FJMFFRRWdDQ0FCYXhBWElCNFFIUXdEQzBFQUlRWUNRQUpBSUFoQkFXc2lDa0VFU1FSQUlBb2hCeUFNSVFFTUFRc2dDa0VEY1NFSElBd2dDa0Y4Y1NJVlFaZ0JiR29oQVFOQUlJQUJJQXdnRGtHWUFXeHFJZ1pCNkFScUlBWkIwQU5xSUFaQnVBSnFJQWI5Q1FLZ0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBR1FlQUVhaUFHUWNnRGFpQUdRYkFDYWlBRy9Ra0NtQUg5VmdJQUFmMVdBZ0FDL1ZZQ0FBUDlzUUg5dVFFZ0JrSHNCR29nQmtIVUEyb2dCa0c4QW1vZ0J2MEpBcVFCL1ZZQ0FBSDlWZ0lBQXYxV0FnQURJQVpCNUFScUlBWkJ6QU5xSUFaQnRBSnFJQWI5Q1FLY0FmMVdBZ0FCL1ZZQ0FBTDlWZ0lBQS8yeEFmMjVBU0dBQVNBT1FRUnFJZzRnRlVjTkFBc2dnQUVnZ0FFZ2dBSDlEUWdKQ2dzTURRNFBBQUVDQXdBQkFnUDl1UUVpZ0FFZ2dBRWdnQUg5RFFRRkJnY0FBUUlEQUFFQ0F3QUJBZ1A5dVFIOUd3QWhCaUFLSUJWR0RRRUxBMEFnQmlBQktBS2dBU0FCS0FLWUFXc2lDaUFHSUFwTEd5SUdJQUVvQXFRQklBRW9BcHdCYXlJS0lBWWdDa3NiSVFZZ0FVR1lBV29oQVNBSFFRRnJJZ2NOQUFzTEFrQWdCa0dBZ0lEQUFFOE5BQ0FjSUFaQkJYUVFGaUloTmdJZ0lDRkZEUUFnSENBaE5nSUFBa0FnQ0FSQUlCWWdEMnNoQ2lBVElCQnJJUVlnSVVFZ2FpRStJQWl0SVljQklCS3RJWW9CSUJHdElZc0JJQnF0SVlnQklCK3RJWXdCSUFrb0FoUWlRcTBoalFGQ0FTR0dBUU5BSUJ3Z0NqWUNDQ0FjSUFZMkFpZ2dEQ2dDcEFFaEJ5QU1LQUtnQVNFSUlBd29BcHdCSVFFZ0hDQU1LQUtZQVNJVlFRSnZJaUkyQWl3Z0hDQUJRUUp2SWo4MkFnd2dIQ0FJSUJWcklpQWdCbXNpS0RZQ0pDQWNJQWNnQVdzaUV5QUtheUk0TmdJRUlCOGlGaUVJSUJvaUFTRU9JQkVpQnlFWUlCSWlGU0VQQWtBZ2hnRWdqUUZSRFFBZ1FpQ0dBYWRySVJCQkFDRU9RUUFoQ0NBV0JFQkNmeUFRclNLSkFZWkNmNFVnakFGOElJa0JpS2NoQ0FzZ0dnUkFRbjhnRUswaWlRR0dRbitGSUlnQmZDQ0pBWWluSVE0TFFRQWhGVUVBSVFjZ0VRUkFRbjhnRUswaWlRR0dRbitGSUlzQmZDQ0pBWWluSVFjTElCSUVRRUovSUJDdElva0Joa0ovaFNDS0FYd2dpUUdJcHlFVkMwRUFJUmhCQUNFV1FRRWdFRUVCYTNRaUd5QWZTUVJBSUI4Z0cydXRRbjhnRUswaWlRR0dRbitGZkNDSkFZaW5JUllMSUJFZ0cwc0VRQ0FSSUJ0cnJVSi9JQkN0SW9rQmhrSi9oWHdnaVFHSXB5RVlDMEVBSVE5QkFDRUJJQm9nRzBzRVFDQWFJQnRyclVKL0lCQ3RJb2tCaGtKL2hYd2dpUUdJcHlFQkN5QVNJQnRORFFBZ0VpQWJhNjFDZnlBUXJTS0pBWVpDZjRWOElJa0JpS2NoRHd0QmZ5QVlJQXdvQXJRQkloQnJJaHRCQUNBWUlCdFBHeUlZUVFScUloc2dHQ0FiU3hzaUdDQW9JQmdnS0VrYklpMUJmeUFISUF3b0F0Z0JJaGhySWh0QkFDQUhJQnRQR3lJSFFRUnFJaHNnQnlBYlN4c2lCeUFHSUFZZ0Iwc2JJaXNnSWh0QkFYUWlCeUFySUMwZ0lodEJBWFJCQVhJaUd5QUhJQnRMR3lJb0lDQkpJUlFnRmlBUWF5SUhRUUFnQnlBV1RSc2lCMEVFYXlJV1FRQWdCeUFXVHhzaUp5QUlJQmhySWdkQkFDQUhJQWhOR3lJSFFRUnJJZ2hCQUNBSElBaFBHeUl3SUNJYlFRRjBJaGdnTUNBbklDSWJRUUYwUVFGeUlpUkpJU2tnRGlBTUtBSzRBU0lXYXlJSFFRQWdCeUFPVFJzaUIwRUVheUlJUVFBZ0J5QUlUeHNpQ0NFUUlBRWdEQ2dDM0FFaURtc2lCMEVBSUFFZ0IwOGJJZ0ZCQkdzaUIwRUFJQUVnQjA4YklnRWhCMEYvSUJVZ0Ztc2lGa0VBSUJVZ0ZrOGJJaFZCQkdvaUZpQVZJQlpMR3lJVklBb2dDaUFWU3hzaUZpRVZRWDhnRHlBT2F5SU9RUUFnRGlBUFRSc2lEa0VFYWlJUElBNGdEMHNiSWc0Z09DQU9JRGhKR3lJYklROGdQd1JBSUFFaEVDQVdJUThnR3lFVklBZ2hCd3NnS0NBZ0lCUWJJU2dnR0NBa0lDa2JJUmdnSENBdE5nSThJQndnSnpZQ09DQWNJQ3MyQWpRZ0hDQXdOZ0l3QWtBZ0UwRUlTUVJBUVFjaEJrRUFJUTRNQVFzZ1BpQWlRUVYwSWc1cklDZEJCblJxSVRnZ0RpQWhhaUF3UVFaMGFpRVVJQVlnTFdvaExTQUdJQ2RxSVNjZ0NpQWJhaUVrSUFFZ0Ntb2hLU0FoSUJoQkJYUnFJU3BCQUNFT0EwQUNRQUpBSUE0Z0Zra2dEa0VIY2lJR0lBaFBjUTBBSUE0Z0pFa2dCaUFwVDNFTkFDQU9RUWhxSVE0TUFRdEJDQ0FUSUE1cklnWWdCa0VJVHhzaEpVRUFJUVlEUUNBZUlEQWdCaUFPYWlJaUlDc2dJa0VCYWlJc0lCUWdCa0VDZENJdWFrRVFRUUFRRnlBZUlDY2dJaUF0SUN3Z0xpQTRha0VRUVFBUUZ5QUdRUUZxSWdZZ0pVY05BQXNnSEVFZ2FoQWNJQjRnR0NBT0lDZ2dEa0VJYWlJT0lDcEJDRUVCUVFBUUgwVU5CUXNnRGtFSGNpSUdJQk5KRFFBTEN3SkFJQTRnRTA4TkFDQU9JQlpKSUFZZ0NFOXhSUVJBSUE0Z0NpQWJhazhOQVNBR0lBRWdDbXBKRFFFTElCeEJJR29oQmtFQUlTSWdFeUFPYXlJd0JFQURRQ0FlSUFZb0FoQWlMU0FPSUNKcUlpY2dCaWdDRkNBblFRRnFJaXNnSWtFQ2RDSTRJQVlvQWdBZ0JpZ0NERUVGZEdvZ0xVRUdkR3BxUVJCQkFCQVhJQjRnQmlnQ0dDSXRJQVlvQWdnaUZHb2dKeUFHS0FJY0lCUnFJQ3NnQmlnQ0FDQUdLQUlNUVFWMGF5QXRRUVowYWlBNGFrRWdha0VRUVFBUUZ5QWlRUUZxSWlJZ01FY05BQXNMSUFZUUhDQWVJQmdnRGlBb0lCTWdJU0FZUVFWMGFrRUlRUUZCQUJBZlJRMERDeUFjSUJzMkFod2dIQ0FCTmdJWUlCd2dGallDRkNBY0lBZzJBaEFnR0NBb1NRUkFJQlZCQVhRaUJpQVBRUUYwUVFGeUloVWdCaUFWU3hzaUJpQVRJQVlnRTBrYklRWWdQaUEvUVFWMEloVnJJQUZCQm5ScUlRNGdGU0FoYWlBSVFRWjBhaUVWSUFvZ0cyb2hEeUFCSUFwcUlRb2dJU0FRUVFGMElnRWdCMEVCZEVFQmNpSUhJQUVnQjBrYklnZEJCWFJxSVJBRFFDQWVJQmdnQ0VFSUlDZ2dHR3NpQVNBQlFRaFBHeUFZYWlJQklCWWdGVUVCUVJBUUZ5QWVJQmdnQ2lBQklBOGdEa0VCUVJBUUZ5QWNFQndnSGlBWUlBY2dBU0FHSUJCQkFVRUlRUUFRSDBVTkJDQVlRUWhxSWhnZ0tFa05BQXNMSUF4Qm1BRnFJUXdnSUNFR0lCTWhDaUNHQVVJQmZDS0dBU0NIQVZJTkFBc0xRUUVoQnlBZUlDTkJFR3NvQWdBaUFTQXZLQUlBSWdacklDTkJER3NvQWdBZ1BTZ0NBQ0lLYXlBalFRaHJLQUlBSWdnZ0Jtc2dJMEVFYXlnQ0FDQUtheUFKS0FJMFFRRWdDQ0FCYXhBWElCNFFIU0FoRUFrTUJBc2dIaEFkSUNFUUNVRUFJUWNNQXdzZ0hoQWRRUUFoQnd3Q0N5QWZFQnBCQUFzaEJ5QWNLQUlnRUFrTElCeEJRR3NrQUNBSERRQU1CQXNnSFVHNENHb2hIU0FOUVRScUlRMGdDVUhNQUdvaENTQUxRUUZxSWdzZ0Z5Z0NFRWtOQUFzZ0dTZ0NJQ0VkSUJrb0FoUW9BZ0FoRndzQ1FDQWRLQUlRSWdsRkRRQWdHU2dDUkEwQUlCY29BaFFpRFNnQ0hDRUJBa0FDUUFKQUlCa29Ba0FpQmdSQUlCY29BaEFpQzBFRFNRMENBa0FnRFNnQ0dDSUhJQTBvQW1SR0JFQWdCeUFOS0FLd0FVWU5BUXNnTTBFQlFhL0tBRUVBRUFnTUJ3c0NRQ0FaS0FJWUtBSVlJZ29vQWlRaUNDQUtLQUpZUncwQUlBZ2dDaWdDakFGSERRQWdBU0FIUVpnQmJDSUthaUlCUVl3QmF5Z0NBQ0FCUVpRQmF5Z0NBR3NnQVVHUUFXc29BZ0FnQVVHWUFXc29BZ0JyYkNJQklBMG9BbWdnQ21vaUIwR01BV3NvQWdBZ0IwR1VBV3NvQWdCcklBZEJrQUZyS0FJQUlBZEJtQUZyS0FJQWEyeEhEUUFnRFNnQ3RBRWdDbW9pQjBHTUFXc29BZ0FnQjBHVUFXc29BZ0JySUFkQmtBRnJLQUlBSUFkQm1BRnJLQUlBYTJ3Z0FVWU5BZ3NnTTBFQlFhL0tBRUVBRUFnTUJnc2dGeWdDRUNJTFFRTkpEUUVDUUNBWktBSVlLQUlZSWdjb0FpUWlDaUFIS0FKWVJ3MEFJQW9nQnlnQ2pBRWlDRWNOQUNBQklBcEJtQUZzSWdkcUlnRW9BcFFCSUFFb0Fvd0JheUFCS0FLUUFTQUJLQUtJQVd0c0lnRWdCeUFOS0FKb2FpSUhLQUtVQVNBSEtBS01BV3NnQnlnQ2tBRWdCeWdDaUFGcmJFY05BQ0FOS0FLMEFTQUlRWmdCYkdvaUJ5Z0NsQUVnQnlnQ2pBRnJJQWNvQXBBQklBY29Bb2dCYTJ3Z0FVWU5BUXNnTTBFQlFhL0tBRUVBRUFnTUJRc2dDVUVDUmdSQUlCMG9BdWdyUlEwRElBdEJBblFRRFNJTFJRMEZJQmNvQWhBaUNFVU5BaUFaS0FKQUJFQkJBQ0VYQWtBZ0NFRU1TUVJBUVFBaEJnd0JDeUFOUVNScUlRb0NRQ0FMSUEwZ0NFSE1BR3hxUVNSclR3MEFJQW9nQ3lBSVFRSjBhazhOQUVFQUlRWU1BUXNnRFVHSUFtb2hEQ0FOUWJ3QmFpRVZJQTFCOEFCcUlRNGdEU0FJUVh4eElnWkJ6QUJzYWlFTlFRQWhDUU5BSUFzZ0NVRUNkR29nRENBSlFjd0FiQ0lIYWlBSElCVnFJQWNnRG1vZ0J5QUthdjBKQWdEOVZnSUFBZjFXQWdBQy9WWUNBQVA5Q3dJQUlBbEJCR29pQ1NBR1J3MEFDeUFHSUFoR0RRUUxBa0FnQ0VFRGNTSUhSUVJBSUFZaENRd0JDeUFHSVFrRFFDQUxJQWxCQW5ScUlBMG9BaVEyQWdBZ0NVRUJhaUVKSUExQnpBQnFJUTBnRjBFQmFpSVhJQWRIRFFBTEN5QUdJQWhyUVh4TERRTWdDMEVNYWlFR0lBdEJDR29oQ2lBTFFRUnFJUXdEUUNBTElBbEJBblFpQjJvZ0RTZ0NKRFlDQUNBSElBeHFJQTBvQW5BMkFnQWdCeUFLYWlBTktBSzhBVFlDQUNBR0lBZHFJQTBvQW9nQ05nSUFJQTFCc0FKcUlRMGdDVUVFYWlJSklBaEhEUUFMREFNTFFRQWhGd0pBSUFoQkRFa0VRRUVBSVFZTUFRc2dEVUUwYWlFS0FrQWdDeUFOSUFoQnpBQnNha0VVYTA4TkFDQUtJQXNnQ0VFQ2RHcFBEUUJCQUNFR0RBRUxJQTFCbUFKcUlRd2dEVUhNQVdvaEZTQU5RWUFCYWlFT0lBMGdDRUY4Y1NJR1Fjd0FiR29oRFVFQUlRa0RRQ0FMSUFsQkFuUnFJQXdnQ1VITUFHd2lCMm9nQnlBVmFpQUhJQTVxSUFjZ0NtcjlDUUlBL1ZZQ0FBSDlWZ0lBQXYxV0FnQUQvUXNDQUNBSlFRUnFJZ2tnQmtjTkFBc2dCaUFJUmcwREN3SkFJQWhCQTNFaUIwVUVRQ0FHSVFrTUFRc2dCaUVKQTBBZ0N5QUpRUUowYWlBTktBSTBOZ0lBSUFsQkFXb2hDU0FOUWN3QWFpRU5JQmRCQVdvaUZ5QUhSdzBBQ3dzZ0JpQUlhMEY4U3cwQ0lBdEJER29oQmlBTFFRaHFJUW9nQzBFRWFpRU1BMEFnQ3lBSlFRSjBJZ2RxSUEwb0FqUTJBZ0FnQnlBTWFpQU5LQUtBQVRZQ0FDQUhJQXBxSUEwb0Fzd0JOZ0lBSUFZZ0Iyb2dEU2dDbUFJMkFnQWdEVUd3QW1vaERTQUpRUVJxSWdrZ0NFY05BQXNNQWdzZ0hTZ0MwQ3NvQWhSQkFVWUVRQ0FHQkVBZ0RTZ0NKQ0FOS0FKd0lBMG9BcndCSUFFUVdBd0VDeUFOS0FJMElBMG9Bb0FCSUEwb0Fzd0JJQUVRV0F3REN5QUdCRUFnRFNnQ0pDQU5LQUp3SUEwb0Fyd0JJQUVRVnd3REN5QU5LQUkwSUEwb0FvQUJJQTBvQXN3QklBRVFWd3dDQ3lCQUlBczJBZ0FnTTBFQlFlektBQ0JBRUFnTUFRc2dHU2dDR0NnQ0dDZ0NJQm9DZnlBZEtBTG9LeUVIUVFBaERrRUFJQWhCQTNRUURTSU5SUTBBR2dKQUlBRkZEUUFnQ0VVTkFDQU5JQWhCQW5ScUlSTWdDRUY4Y1NFUElBaEJBM0VoRENBSVFRRnJJUkFEUUVFQUlSZEJBQ0VKSUJCQkEwOEVRQU5BSUEwZ0YwRUNkQ0lHYWlBR0lBdHFLQUlBS2dJQU9BSUFJQTBnQmtFRWNpSUthaUFLSUF0cUtBSUFLZ0lBT0FJQUlBMGdCa0VJY2lJS2FpQUtJQXRxS0FJQUtnSUFPQUlBSUEwZ0JrRU1jaUlHYWlBR0lBdHFLQUlBS2dJQU9BSUFJQmRCQkdvaEZ5QUpRUVJxSWdrZ0QwY05BQXNMUVFBaENpQU1CRUFEUUNBTklCZEJBblFpQm1vZ0JpQUxhaWdDQUNvQ0FEZ0NBQ0FYUVFGcUlSY2dDa0VCYWlJS0lBeEhEUUFMQzBFQUlRWWdCeUVYQTBBZ0V5QUdRUUowSWhKcUlnbEJBRFlDQUVNQUFBQUFJWTRCUVFBaENrRUFJUllnRUVFQ1N3UkFBMEFnQ1NBWEtnSUFJQTBnQ2tFQ2RHb2lGU29DQUpRZ2pnR1NJbzRCT0FJQUlBa2dGeW9DQkNBVktnSUVsQ0NPQVpJaWpnRTRBZ0FnQ1NBWEtnSUlJQlVxQWdpVUlJNEJraUtPQVRnQ0FDQUpJQmNxQWd3Z0ZTb0NESlFnamdHU0lvNEJPQUlBSUFwQkJHb2hDaUFYUVJCcUlSY2dGa0VFYWlJV0lBOUhEUUFMQzBFQUlSVWdEQVJBQTBBZ0NTQVhLZ0lBSUEwZ0NrRUNkR29xQWdDVUlJNEJraUtPQVRnQ0FDQUtRUUZxSVFvZ0YwRUVhaUVYSUJWQkFXb2lGU0FNUncwQUN3c2dDeUFTYWlJS0lBb29BZ0FpQ2tFRWFqWUNBQ0FLSUk0Qk9BSUFJQVpCQVdvaUJpQUlSdzBBQ3lBT1FRRnFJZzRnQVVjTkFBc0xJQTBRQ1VFQkN5RjdJQXNRQ1NCN1JRMENDeUFaS0FJVUtBSUFJaFlvQWhCRkJFQkJBU0V4REFJTElCa29BaUFvQXRBckloZEJ1QWhxSVJNZ0YwRzBDR29oRWlBWktBSkVJUkFnRmlnQ0ZDRUhJQmtvQWhnb0FoZ2hDa0VBSVFnRFFBSkFJQkFFUUNBUUlBaEJBblJxS0FJQVJRMEJDeUFIS0FJY0lnRWdDaWdDSkVHWUFXeHFJUXNDZnlBWktBSkFSUVJBSUFzb0FwUUJJQXNvQW93QmF5RUdJQXNvQXBBQklBc29Bb2dCYXlFQlFRQWhERUUwREFFTElBRWdCeWdDR0VHWUFXeHFJZ1pCa0FGcktBSUFJQXNvQWdnZ0N5Z0NBR3NpQVNBR1FaZ0JheWdDQUdwcklRd2dDeWdDRENBTEtBSUVheUVHUVNRTElRa2dDaWdDR0NFTEFuOGdDaWdDSUFSQVFRRWdDMEVCYTNRaUMwRUJheUVkUVFBZ0Myc01BUXRCZnlBTGRFRi9jeUVkUVFBTElROGdBVVVOQUNBR1JRMEFJQWNnQ1dvb0FnQWhDU0FYS0FJVVFRRkdCRUFnRXlBSVFiZ0liQ0lMYWlFUklBc2dFbW9oR0NBQlFRRnhJUm9nQVVFQ2RDRXpJQUZCZkhFaURrRUNkQ0ViSUIzOUVTR0NBU0FQL1JFaGdBRkJBQ0VWSUFGQkJFa2hId05BQWtBQ1FBSkFJQjhOQUNBSklCRkpJQmdnQ1NBemFrbHhEUUFnQ1NBYmFpRU5JQmY5Q1FLMENDR0RBVUVBSVFzRFFDQUpJQXRCQW5ScUlpQWdnQUVnZ3dFZ0lQMEFBZ0Q5cmdFaWhBRWdnZ0g5dGdFZ2hBRWdnQUg5T2YxUy9Rc0NBQ0FMUVFScUlnc2dEa2NOQUFzZ0RpSUxJQUZHRFFJTUFRc2dDU0VOUVFBaEN3c2dDMEVCY2lFSklCb0VRQ0FOSUE4Z0Z5Z0N0QWdnRFNnQ0FHb2lDeUFkSUFzZ0hVZ2JJQXNnRDBnYk5nSUFJQTFCQkdvaERTQUpJUXNMSUFFZ0NVWU5BQU5BSUEwZ0R5QVhLQUswQ0NBTktBSUFhaUlKSUIwZ0NTQWRTQnNnQ1NBUFNCczJBZ0FnRFNBUElCY29BclFJSUEwb0FnUnFJZ2tnSFNBSklCMUlHeUFKSUE5SUd6WUNCQ0FOUVFocUlRMGdDMEVDYWlJTElBRkhEUUFMQ3lBTklBeEJBblJxSVFrZ0ZVRUJhaUlWSUFaSERRQUxEQUVMSUIyc0lZWUJJQStzSVljQlFRQWhGUU5BUVFBaEN3TkFJQWtDZnlBZElBa3FBZ0FpamdGREFBQUFUMTROQUJvZ0R5Q09BVU1BQUFEUFhRMEFHaUNIQVNBWE5BSzBDQUovSUk0QmtDS09BWXREQUFBQVQxMEVRQ0NPQWFnTUFRdEJnSUNBZ0hnTHJId2lpZ0VnaGdFZ2hnRWdpZ0ZWR3lDSEFTQ0tBVlVicHdzMkFnQWdDVUVFYWlFSklBdEJBV29pQ3lBQlJ3MEFDeUFKSUF4QkFuUnFJUWtnRlVFQmFpSVZJQVpIRFFBTEN5QUhRY3dBYWlFSElCZEJ1QWhxSVJjZ0NrRTBhaUVLUVFFaE1TQUlRUUZxSWdnZ0ZpZ0NFRWtOQUFzTUFRc2dCVUVCUVpvWlFRQVFDQXNnUUVFUWFpUUFJREZGQkVBZ1R4QXBJQUFnQUNnQ0NFR0FnQUp5TmdJSUlBVkJBVUhMMUFCQkFCQUlEQUVMQWtBZ0FrVU5BQUovSUFJaEIwRUFJUVlDUUNBQUtBTFFBU0lWUVFFUVRTSUJRWDlHRFFBZ0FTQURTdzBBUVFFZ0ZTZ0NHQ0lCS0FJUVJRMEJHaUFCS0FJWUlRZ2dGU2dDRkNnQ0FDZ0NGQ0VYQTBBZ0NDZ0NHQ0lCUVFkeElRSWdBVUVEZGlFRElCY29BaHdpQmlBSUtBSWtRWmdCYkdvaEFRSi9JQlVvQWtBRVFDQUdJQmNvQWhoQm1BRnNhaUlHUVpBQmF5Z0NBQ0FCS0FJSUlBRW9BZ0JySWdzZ0JrR1lBV3NvQWdCcWF5RU1JQUVvQWd3Z0FTZ0NCR3NoQ1VFa0RBRUxJQUVvQXBRQklBRW9Bb3dCYXlFSklBRW9BcEFCSUFFb0FvZ0JheUVMUVFBaERFRTBDeUFYYWlnQ0FDRUJBa0FDUUFKQUFrQUNRRUVFSUFNZ0FrRUFSMm9pQWlBQ1FRTkdHMEVCYXc0RUFRSUVBQVFMSUFsRkRRTWdDeUFNYWlFR0lBdEJBblFoQWlBSlFRUlBCRUFnQ1VGOGNTRUtRUUFoQ3dOQUlBY2dBU0FDRUFzaEJ5QUJJQVpCQW5RaUEyb2lEU0FEYWlJTUlBTnFJZzRnQTJvaEFTQUNJQWRxSUEwZ0FoQUxJQUpxSUF3Z0FoQUxJQUpxSUE0Z0FoQUxJQUpxSVFjZ0MwRUVhaUlMSUFwSERRQUxDMEVBSVFzZ0NVRURjU0lEUlEwREEwQWdCeUFCSUFJUUN5RUhJQUVnQmtFQ2RHb2hBU0FDSUFkcUlRY2dDMEVCYWlJTElBTkhEUUFMREFNTElBbEZJQXRGY2lFQ0lBZ29BaUJGRFFFZ0FnMENJQXRCQW5RaERpQUxRWHh4SWdOQkFuUWhEMEVBSVEwRFFBSkFBa0FDUUNBTFFRUkpEUUFnQVNBSElBdHFTU0FCSUE1cUlBZExjUTBBSUFNZ0Iyb2hmQ0FCSUE5cUlRWkJBQ0VLQTBBZ0J5QUthaUFCSUFwQkFuUnEvUUFDQVAwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAwTkFBUUlEQUFBQUFBQUFBQUFBQUFBQVAxYUFBQUFJQXBCQkdvaUNpQURSdzBBQ3lCOElRY2dBeUlDSUF0R0RRSU1BUXNnQVNFR1FRQWhBZ3RCQUNFS0lBc2dBaUlCYTBFSGNTSVdCRUFEUUNBSElBWW9BZ0E2QUFBZ0FVRUJhaUVCSUFkQkFXb2hCeUFHUVFScUlRWWdDa0VCYWlJS0lCWkhEUUFMQ3lBQ0lBdHJRWGhMRFFBRFFDQUhJQVlvQWdBNkFBQWdCeUFHS0FJRU9nQUJJQWNnQmlnQ0NEb0FBaUFISUFZb0FndzZBQU1nQnlBR0tBSVFPZ0FFSUFjZ0JpZ0NGRG9BQlNBSElBWW9BaGc2QUFZZ0J5QUdLQUljT2dBSElBZEJDR29oQnlBR1FTQnFJUVlnQVVFSWFpSUJJQXRIRFFBTEN5QUdJQXhCQW5ScUlRRWdEVUVCYWlJTklBbEhEUUFMREFJTElBbEZJQXRGY2lFQ0lBZ29BaUFFUUNBQ0RRSWdDMEVDZENFT0lBdEJBWFFoRHlBTFFYeHhJZ05CQW5RaEZpQURRUUYwSVJCQkFDRU5BMEFDUUFKQUFrQWdDMEVFU1EwQUlBRWdCeUFQYWtrZ0FTQU9haUFIUzNFTkFDQUJJQlpxSVFZZ0J5QVFhaUY5UVFBaENnTkFJQWNnQ2tFQmRHb2dBU0FLUVFKMGF2MEFBZ0Q5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5RFFBQkJBVUlDUXdOQUFFQUFRQUJBQUg5V3dFQUFDQUtRUVJxSWdvZ0EwY05BQXNnZlNFSElBTWlBaUFMUmcwQ0RBRUxJQUVoQmtFQUlRSUxRUUFoQ2lBTElBSWlBV3RCQjNFaUV3UkFBMEFnQnlBR0tBSUFPd0VBSUFGQkFXb2hBU0FIUVFKcUlRY2dCa0VFYWlFR0lBcEJBV29pQ2lBVFJ3MEFDd3NnQWlBTGEwRjRTdzBBQTBBZ0J5QUdLQUlBT3dFQUlBY2dCaWdDQkRzQkFpQUhJQVlvQWdnN0FRUWdCeUFHS0FJTU93RUdJQWNnQmlnQ0VEc0JDQ0FISUFZb0FoUTdBUW9nQnlBR0tBSVlPd0VNSUFjZ0JpZ0NIRHNCRGlBSFFSQnFJUWNnQmtFZ2FpRUdJQUZCQ0dvaUFTQUxSdzBBQ3dzZ0JpQU1RUUowYWlFQklBMUJBV29pRFNBSlJ3MEFDd3dDQ3lBQ0RRRWdDMEVDZENFT0lBdEJBWFFoRHlBTFFYeHhJZ05CQW5RaEZpQURRUUYwSVJCQkFDRU5BMEFDUUFKQUFrQWdDMEVFU1EwQUlBRWdCeUFQYWtrZ0FTQU9haUFIUzNFTkFDQUJJQlpxSVFZZ0J5QVFhaUYrUVFBaENnTkFJQWNnQ2tFQmRHb2dBU0FLUVFKMGF2MEFBZ0Q5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5RFFBQkJBVUlDUXdOQUFFQUFRQUJBQUg5V3dFQUFDQUtRUVJxSWdvZ0EwY05BQXNnZmlFSElBTWlBaUFMUmcwQ0RBRUxJQUVoQmtFQUlRSUxRUUFoQ2lBTElBSWlBV3RCQjNFaUV3UkFBMEFnQnlBR0tBSUFPd0VBSUFGQkFXb2hBU0FIUVFKcUlRY2dCa0VFYWlFR0lBcEJBV29pQ2lBVFJ3MEFDd3NnQWlBTGEwRjRTdzBBQTBBZ0J5QUdLQUlBT3dFQUlBY2dCaWdDQkRzQkFpQUhJQVlvQWdnN0FRUWdCeUFHS0FJTU93RUdJQWNnQmlnQ0VEc0JDQ0FISUFZb0FoUTdBUW9nQnlBR0tBSVlPd0VNSUFjZ0JpZ0NIRHNCRGlBSFFSQnFJUWNnQmtFZ2FpRUdJQUZCQ0dvaUFTQUxSdzBBQ3dzZ0JpQU1RUUowYWlFQklBMUJBV29pRFNBSlJ3MEFDd3dCQ3lBQ0RRQWdDMEVDZENFT0lBdEJmSEVpQTBFQ2RDRVBRUUFoRFFOQUFrQUNRQUpBSUF0QkJFa05BQ0FCSUFjZ0MycEpJQUVnRG1vZ0IwdHhEUUFnQXlBSGFpRi9JQUVnRDJvaEJrRUFJUW9EUUNBSElBcHFJQUVnQ2tFQ2RHcjlBQUlBL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBL1EwQUJBZ01BQUFBQUFBQUFBQUFBQUFBL1ZvQUFBQWdDa0VFYWlJS0lBTkhEUUFMSUg4aEJ5QURJZ0lnQzBZTkFnd0JDeUFCSVFaQkFDRUNDMEVBSVFvZ0N5QUNJZ0ZyUVFkeEloWUVRQU5BSUFjZ0JpZ0NBRG9BQUNBQlFRRnFJUUVnQjBFQmFpRUhJQVpCQkdvaEJpQUtRUUZxSWdvZ0ZrY05BQXNMSUFJZ0MydEJlRXNOQUFOQUlBY2dCaWdDQURvQUFDQUhJQVlvQWdRNkFBRWdCeUFHS0FJSU9nQUNJQWNnQmlnQ0REb0FBeUFISUFZb0FoQTZBQVFnQnlBR0tBSVVPZ0FGSUFjZ0JpZ0NHRG9BQmlBSElBWW9BaHc2QUFjZ0IwRUlhaUVISUFaQklHb2hCaUFCUVFocUlnRWdDMGNOQUFzTElBWWdERUVDZEdvaEFTQU5RUUZxSWcwZ0NVY05BQXNMSUJkQnpBQnFJUmNnQ0VFMGFpRUlRUUVoQmlCeVFRRnFJbklnRlNnQ0dDZ0NFRWtOQUFzTElBWUxSUTBCSUU4b0F0d3JJZ0ZGRFFBZ0FSQUpJRTlDQURjQzNDc0xJQUFnQUMwQVJFSCtBWEU2QUVRZ0FDQUFLQUlJUWY5K2NUWUNDRUVCSVdjZ0JDa0RDQ0tHQVZBRWZrSUFCU0NHQVNBRUtRTTRmUXRRSUFBb0FnZ2lBVUhBQUVaeERRQWdBVUdBQWtZTkFDQUVJRTVCQ21wQkFpQUZFQkpCQWtjRVFDQUZRUUZCQWlBQUtBSzRBUnRCbGhKQkFCQUlJQUFvQXJnQlJTRm5EQUVMSUU1QkNtb2dUa0VNYWtFQ0VBb2dUaWdDRENJQlFaRC9BMFlOQUNBQlFkbi9BMFlFUUNBQVFZQUNOZ0lJSUFCQkFEWUN6QUVNQVFzZ0JDa0RDQ0tHQVZBRWZrSUFCU0NHQVNBRUtRTTRmUXRRQkVBZ0FFSEFBRFlDQ0NBRlFRSkJyVDVCQUJBSURBRUxRUUFoWnlBRlFRRkI3VDFCQUJBSUN5Qk9RUkJxSkFBZ1p3c0xBQ0FBQkVBZ0FCQUpDd3UwQVFFQmZ5QUFLQUlNUlFSQUlBSWdBQ2dDSkNBQkVRTUFEd3NDUUVFSUVBMGlBMFVOQUNBRElBSTJBZ1FnQXlBQk5nSUFRUWdRRFNJQlJRUkFJQU1RQ1E4TElBRWdBellDQUNBQUlBQW9BZ1JCNUFCc0lnSTJBaWdEUUNBQUtBSVlJQUpLRFFBTElBRWdBQ2dDRkRZQ0JDQUFJQUUyQWhRZ0FDQUFLQUlZUVFGcU5nSVlJQUFvQWh3aUFVVU5BQ0FCS0FJQVFRQTJBZ2dnQUNBQktBSUVOZ0ljSUFBZ0FDZ0NJRUVCYXpZQ0lDQUJFQWtMQ3k4QkFYOGdBQVJBSUFBb0FnUWlBUVJBSUFBb0FnQWdBUkVDQUFzZ0FDZ0NJQkFKSUFCQkFEWUNJQ0FBRUFrTEN5b0FJQUFFUUNBQUtBSXdJQUJCRkVFUUlBQW9Ba3diYWlnQ0FCRUNBQ0FBUVFBMkFqQWdBQkFKQ3d2NkFnRUVmd0pBSUFCRkRRQWdBQ2dDckNnaUFRUkFJQUFvQXFnb0lnSUVRRUVBSVFFRFFDQUFLQUtzS0NBQlFRTjBhaWdDQUNJREJFQWdBeEFKSUFBb0FxZ29JUUlMSUFGQkFXb2lBU0FDU1EwQUN5QUFLQUtzS0NFQkN5QUFRUUEyQXFnb0lBRVFDU0FBUVFBMkFxd29DeUFBS0FLMEtDSUJCRUFnQVJBSklBQkJBRFlDdENnTElBQW9BdEFySWdFRVFDQUJFQWtnQUVFQU5nTFFLd3NnQUNnQzdDc2lBUVJBSUFFUUNTQUFRUUEyQXV3ckN5QUFLQUxvS3lJQkJFQWdBUkFKSUFCQkFEWUM2Q3NMSUFBb0F2d3JJZ0VFUUNBQkVBa2dBRUVBTmdLRUxDQUFRZ0EzQXZ3ckN5QUFLQUx3S3lJQkJFQWdBQ2dDOUNzaUF3Ui9RUUFoQWdOQUlBRW9BZ3dpQkFSQUlBUVFDU0FCUVFBMkFnd2dBQ2dDOUNzaEF3c2dBVUVVYWlFQklBSkJBV29pQWlBRFNRMEFDeUFBS0FMd0t3VWdBUXNRQ1NBQVFRQTJBdkFyQ3lBQUtBTGtLeUlCQkVBZ0FSQUpJQUJCQURZQzVDc0xJQUFvQXR3cklnRkZEUUFnQVJBSklBQkNBRGNDM0NzTEM4Z0hBaEYvQVg0Z0FDZ0NFQ0lJUVNCUEJFQWdBQ2tEQ0tjUEN3SkFJQUFvQWhRaUEwRUVUZ1JBSUFBb0FnQWlBa0VEYXlnQ0FDRUJJQUFnQTBFRWF5SUROZ0lVSUFBZ0FrRUVhellDQUF3QkN5QURRUUJNQkVBTUFRc2dBMEVCY1NFTklBQW9BZ0FoQWdKQUlBTkJBVVlFUUVFWUlRUU1BUXNnQTBIKy8vLy9CM0VoQ1VFWUlRUURRQ0FBSUFKQkFXc2lCallDQUNBQ0xRQUFJUXdnQUNBQ1FRSnJJZ0kyQWdBZ0FDQURRUUZyTmdJVUlBWXRBQUFoQmlBQUlBTkJBbXNpQXpZQ0ZDQU1JQVIwSUFGeUlBWWdCRUVJYTNSeUlRRWdCRUVRYXlFRUlBVkJBbW9pQlNBSlJ3MEFDd3NnRFFSQUlBQWdBa0VCYXpZQ0FDQUNMUUFBSVE0Z0FDQURRUUZyTmdJVUlBNGdCSFFnQVhJaEFRdEJBQ0VEQ3lBQUtBSVlJUUlnQUNBQlFmOEJjU0lKUVk4QlN6WUNHQ0FBUVFkQkNDQUJRWUNBZ1BnSGNVR0FnSUQ0QjBZYlFRZ2dBaHNpQWtFSVFRZEJDQ0FCUVlDQS9BTnhRWUNBL0FOR0d5QUJRZi8vLy85NFRSdHFJZ1JCQ0VFSFFRZ2dBVUdBL2dGeFFZRCtBVVliSUFGQkVIWkIvd0Z4SWdWQmp3Rk5HMm9pQmtFSVFRZEJDQ0FCUWY4QWNVSC9BRVliSUFGQkNIWkIvd0Z4SWdkQmp3Rk5HeUFJYW1vaUNqWUNFQ0FBSUFBcEF3Z2dCU0FDZENBQlFSaDJjaUFISUFSMGNpQUpJQVowY3EwZ0NLMkdoQ0lTTndNSUlBcEJIMDBFUUFKQUlBTkJCRTRFUUNBQUtBSUFJZ0pCQTJzb0FnQWhBU0FBSUFOQkJHczJBaFFnQUNBQ1FRUnJOZ0lBREFFTElBTkJBRXdFUUVFQUlRRU1BUXNnQTBFQmNTRVFJQUFvQWdBaEFnSkFJQU5CQVVZRVFFRVlJUVJCQUNFQkRBRUxJQU5CL3YvLy93ZHhJUVpCR0NFRVFRQWhBVUVBSVFVRFFDQUFJQUpCQVdzaUJ6WUNBQ0FDTFFBQUlROGdBQ0FDUVFKcklnSTJBZ0FnQUNBRFFRRnJOZ0lVSUFjdEFBQWhCeUFBSUFOQkFtc2lBellDRkNBUElBUjBJQUZ5SUFjZ0JFRUlhM1J5SVFFZ0JFRVFheUVFSUFWQkFtb2lCU0FHUncwQUN3c2dFRVVOQUNBQUlBSkJBV3MyQWdBZ0FpMEFBQ0VSSUFBZ0EwRUJhellDRkNBUklBUjBJQUZ5SVFFTElBQWdBVUgvQVhFaUFrR1BBVXMyQWhnZ0FFRUlRUWRCQ0NBQlFZQ0FnUGdIY1VHQWdJRDRCMFliSUFsQmp3Rk5HeUlEUVFoQkIwRUlJQUZCZ0lEOEEzRkJnSUQ4QTBZYklBRkIvLy8vLzNoTkcyb2lCRUVJUVFkQkNDQUJRWUQrQVhGQmdQNEJSaHNnQVVFUWRrSC9BWEVpQlVHUEFVMGJhaUlJUVFoQkIwRUlJQUZCL3dCeFFmOEFSaHNnQVVFSWRrSC9BWEVpQ1VHUEFVMGJJQXBxYWpZQ0VDQUFJQVVnQTNRZ0FVRVlkbklnQ1NBRWRISWdBaUFJZEhLdElBcXRoaUFTaENJU053TUlDeUFTcHd2SkZBSWRmd1o3SUFBb0FnZ2lDaUFBS0FJRWFpRUlBa0FnQUNnQ0RFVUVRQ0FJUVFKSURRRWdBMEVBVEEwQklBQW9BZ0FpQlNBSVFRUnJJZ1pCQVhZaURFRUNkQ0lKSUFFZ0NrRUNkR29pQnlBRFFRSjBJZ1JxYWtFRWFra2dCU0FNUVFOMGFrRUlhaUlBSUFkQkJHcExjU0FGSUFFZ0JHb2dDV3BCQkdwSklBRkJCR29nQUVseGNpRVNJQWhCQkVraUZDQUNRUUZIY2lFVklBSkJBVVlnQmtFRlMzRWhGaUFJUWZ6Ly8vOEhjU0VUSUFoQkFYRWhGeUFLUVFGcUlROGdDRUVEY1NFUklBRWdCV3NoR0NBRklBaEJBblJxSVJrZ0JTQUlRUUZySWdCQkFuUnFJUm9nREVFQmFpSWJRWHh4SWhCQkFYUWhDeUFDSUFwc1FRSjBJUndnQUVFQmRpQUNiRUVDZENFZEEwQWdBU2dDQUNBQklCeHFLQUlBSWdsQkFXcEJBWFZySVFjQ1FDQVVCRUFnQ1NFRVFRQWhCZ3dCQzBFQUlRWUNRQUovUVFBZ0ZrVU5BQnBCQUNBU0RRQWFJQW45RVNFaUlBZjlFU0VoL1F3QUFBQUFBZ0FBQUFRQUFBQUdBQUFBSVNWQkFDRUFBMEFnQVNBQVFRSjBhdjBBQWdRaEpDQUJJQUFnRDJwQkFuUnEvUUFDQUNFaklBVWdBRUVEZEdvaUJDQWgvVm9DQUFNZ0JFRUlhaUFrSUNNZ0lpQWovUTBNRFE0UEVCRVNFeFFWRmhjWUdSb2JJaVQ5cmdIOURBSUFBQUFDQUFBQUFnQUFBQUlBQUFEOXJnRkJBdjJzQWYyeEFTSWkvVm9DQUFBZ0JFRVFhaUFpL1ZvQ0FBRWdCRUVZYWlBaS9Wb0NBQUlnQlNBbC9Rd0JBQUFBQVFBQUFBRUFBQUFCQUFBQS9WQWlKdjBiQUVFQ2RHb2dJaUFoSUNMOURRd05EZzhRRVJJVEZCVVdGeGdaR2h2OXJnRkJBZjJzQVNBay9hNEJJaUg5V2dJQUFDQUZJQ2I5R3dGQkFuUnFJQ0g5V2dJQUFTQUZJQ2I5R3dKQkFuUnFJQ0g5V2dJQUFpQUZJQ2I5R3dOQkFuUnFJQ0g5V2dJQUF5QWwvUXdJQUFBQUNBQUFBQWdBQUFBSUFBQUEvYTRCSVNVZ0lpRWhJQ01oSWlBQVFRUnFJZ0FnRUVjTkFBc2dJdjBiQXlFRUlDSDlHd01oQnlBUUlCdEdEUUVnQ3lFR0lBUWhDU0FRQ3lFQUEwQWdBU0FBUVFGcUlnb2dBbXhCQW5ScUtBSUFJUjRnQVNBQUlBOXFJQUpzUVFKMGFpZ0NBQ0VFSUFVZ0JrRUNkR29pRGlBSE5nSUFJQTRnQnlBZUlBUWdDV3BCQW1wQkFuVnJJZ2RxUVFGMUlBbHFOZ0lFSUFaQkFtb2hCaUFBSUF4SElSOGdCQ0VKSUFvaEFDQWZEUUFMREFFTElBc2hCZ3NnQlNBR1FRSjBhaUFITmdJQVFYd2hBQ0FYQkg4Z0dpQUJJQjFxS0FJQUlBUkJBV3BCQVhWcklnQTJBZ0FnQUNBSGFrRUJkU0VIUVhnRlFYd0xJQmxxSUFRZ0IybzJBZ0JCQUNFR1FRQWhBRUVBSVFRQ1FDQVZJQmdnRFVFQ2RHcEJFRWx5UlFSQUEwQWdBU0FBUVFKMElnUnFJQVFnQldyOUFBSUEvUXNDQUNBQVFRUnFJZ0FnRTBjTkFBc2dFeUlFSUFoR0RRRUxJQVFoQUNBUkJFQURRQ0FCSUFBZ0FteEJBblJxSUFVZ0FFRUNkR29vQWdBMkFnQWdBRUVCYWlFQUlBWkJBV29pQmlBUlJ3MEFDd3NnQkNBSWEwRjhTdzBBQTBBZ0FTQUFJQUpzUVFKMGFpQUZJQUJCQW5ScUtBSUFOZ0lBSUFFZ0FFRUJhaUlFSUFKc1FRSjBhaUFGSUFSQkFuUnFLQUlBTmdJQUlBRWdBRUVDYWlJRUlBSnNRUUowYWlBRklBUkJBblJxS0FJQU5nSUFJQUVnQUVFRGFpSUVJQUpzUVFKMGFpQUZJQVJCQW5ScUtBSUFOZ0lBSUFCQkJHb2lBQ0FJUncwQUN3c2dBVUVFYWlFQklBMUJBV29pRFNBRFJ3MEFDd3dCQ3dKQUFrQUNRQ0FJUVFGckRnSUFBUUlMSUFOQkFFd05Ba0VBSVFJQ1FDQURRUVJKQkVBZ0FTRUFEQUVMSUFFZ0EwSDgvLy8vQjNFaUFrRUNkR29oQUFOQUlBRWdCa0VDZEdvaUJDQUUvUUFDQUNJaC9Sc0FRUUp0L1JFZ0lmMGJBVUVDYmYwY0FTQWgvUnNDUVFKdC9Sd0NJQ0g5R3dOQkFtMzlIQVA5Q3dJQUlBWkJCR29pQmlBQ1J3MEFDeUFDSUFOR0RRTUxBMEFnQUNBQUtBSUFRUUp0TmdJQUlBQkJCR29oQUNBQ1FRRnFJZ0lnQTBjTkFBc01BZ3NnQTBFQVRBMEJJQUFvQWdBaENTQUNJQXBzUVFKMElRY0RRQ0FKSUFFb0FnQWdBU0FIYWlJRUtBSUFRUUZxUVFGMWF5SUFOZ0lFSUFrZ0FDQUVLQUlBYWlJQU5nSUFJQUVnQURZQ0FDQUJJQUpCQW5ScUlBa29BZ1EyQWdBZ0FVRUVhaUVCSUFaQkFXb2lCaUFEUncwQUN3d0JDeUFJUVFOSURRQWdBMEVBVEEwQUlBQW9BZ0FpQlNBSUlBaEJBWEVpRkVVaUJtdEJCR3NpQ1VFQmRpSUxRUUowSWdjZ0FTQURRUUowSWdCcWFra2dCU0FMUVFOMGFrRU1haUlFSUFGQkJHcExjU0FGUVFScUlBQWdBU0FLUVFKMGFpSUFhaUFIYWtFSWFra2dBRUVJYWlBRVNYRnlJUlVnQWtFQlJ5QUlRUVJKY2lFV0lBSkJBVVlnQ1VFRlMzRWhGeUFJUWZ6Ly8vOEhjU0VRSUFoQkEzRWhFU0FCSUFWcklSZ2dCU0FJUVFKMGFrRUVheUVaSUFVZ0NFRUNheUlBUVFKMGFpRWFJQXRCQVdvaUVrRjhjU0lNUVFGeUlSTWdERUVCZEVFQmNpRUxJQUlnQ214QkFuUWhHeUFBSUFaclFRSkpJUndnQ0VFQmRrRUJheUFDYkVFQ2RDRWRBMEFnQlNBQktBSUFJQUVnRzJvaUR5QUNRUUowYWlnQ0FDSUpJQThvQWdBaUFHcEJBbXBCQW5WcklnY2dBR28yQWdCQkFTRUVBa0FnSEFSQUlBa2hCZ3dCQ3dKQUFuOUJBU0FYUlEwQUdrRUJJQlVOQUJvZ0NmMFJJU0VnQi8wUklTSkJBQ0VBQTBBZ0JTQUFRUU4wYWlJSElBRWdBRUVDZENJRWF2MEFBZ1FnSVNBRUlBOXEvUUFDQ0NJaC9RME1EUTRQRUJFU0V4UVZGaGNZR1JvYklpUWdJZjJ1QWYwTUFnQUFBQUlBQUFBQ0FBQUFBZ0FBQVAydUFVRUMvYXdCL2JFQklpTWdJeUFpSUNQOURRd05EZzhRRVJJVEZCVVdGeGdaR2h2OXJnRkJBZjJzQVNBay9hNEJJaVQ5RFFRRkJnY1lHUm9iQ0FrS0N4d2RIaC85Q3dJVUlBY2dJaUFrL1EwTURRNFBFQkVTRXdBQkFnTVVGUllYSUNQOURRQUJBZ01FQlFZSEVCRVNFd3dORGcvOUN3SUVJQ01oSWlBQVFRUnFJZ0FnREVjTkFBc2dJZjBiQXlFR0lDTDlHd01oQnlBTUlCSkdEUUVnQ3lFRUlBWWhDU0FUQ3lFQUEwQWdBU0FBSUFKc1FRSjBhaWdDQUNFZUlBOGdBRUVCYWlJS0lBSnNRUUowYWlnQ0FDRUdJQVVnQkVFQ2RHb2lEaUFITmdJQUlBNGdCeUFlSUFZZ0NXcEJBbXBCQW5WcklnZHFRUUYxSUFscU5nSUVJQVJCQW1vaEJDQUFJQkpISVNBZ0NpRUFJQVloQ1NBZ0RRQUxEQUVMSUFzaEJBc2dHQ0FOUVFKMGFpRUpJQVVnQkVFQ2RHb2dCellDQUFKQUlCUkZCRUFnR2lBQklCMXFLQUlBSUFaQkFXcEJBWFZySWdBZ0IycEJBWFVnQm1vMkFnQU1BUXNnQmlBSGFpRUFDeUFaSUFBMkFnQkJBQ0VHUVFBaEFFRUFJUVFDUUNBV0lBbEJFRWx5UlFSQUEwQWdBU0FBUVFKMElnUnFJQVFnQldyOUFBSUEvUXNDQUNBQVFRUnFJZ0FnRUVjTkFBc2dFQ0lFSUFoR0RRRUxJQVFoQUNBUkJFQURRQ0FCSUFBZ0FteEJBblJxSUFVZ0FFRUNkR29vQWdBMkFnQWdBRUVCYWlFQUlBWkJBV29pQmlBUlJ3MEFDd3NnQkNBSWEwRjhTdzBBQTBBZ0FTQUFJQUpzUVFKMGFpQUZJQUJCQW5ScUtBSUFOZ0lBSUFFZ0FFRUJhaUlFSUFKc1FRSjBhaUFGSUFSQkFuUnFLQUlBTmdJQUlBRWdBRUVDYWlJRUlBSnNRUUowYWlBRklBUkJBblJxS0FJQU5nSUFJQUVnQUVFRGFpSUVJQUpzUVFKMGFpQUZJQVJCQW5ScUtBSUFOZ0lBSUFCQkJHb2lBQ0FJUncwQUN3c2dBVUVFYWlFQklBMUJBV29pRFNBRFJ3MEFDd3NMTndFQ2Z5TUFRUkJySWdFa0FDQUFCSDhnQVVFTWFrRWdJQUFRWlNFQVFRQWdBU2dDRENBQUd3VkJBQXNoQWlBQlFSQnFKQUFnQWdzYkFRRi9JQUFFUUNBQUtBSUlJZ0VFUUNBQkVBa0xJQUFRQ1FzTE1RRUNmMEVCUVF3UURDSUFCRUFnQUVFS05nSUVJQUJCQ2tFRUVBd2lBVFlDQ0NBQkJFQWdBQThMSUFBUUNRdEJBQXRUQVFKL0lBQkJBRFlDTUNBQUlBQW9BaUEyQWlRZ0FTQUFLQUlBSUFBb0Fod1JDUUFoQkNBQUtBSkVJUUlnQkVVRVFDQUFJQUpCQkhJMkFrUkJBQThMSUFBZ0FUY0RPQ0FBSUFKQmUzRTJBa1JCQVF1R0F3SUZmd3ArSXdCQklHc2lBeVFBQWtBZ0FDZ0NFQ0lGUlFSQVFRRWhBZ3dCQ3dKQUlBQTBBZ0FpQjBJQVV3MEFJQUEwQWdRaUNFSUFVdzBBSUFBMEFnZ2lDVUlBVXcwQUlBQTBBZ3dpQ2tJQVV3MEFJQUFvQWhnaEFDQUhRZ0Y5SVF3Z0NFSUJmU0VOSUFsQ0FYMGhDU0FLUWdGOUlRb0RRQ0FBSUF3Z0FDZ0NBQ0lDclNJSGZDQUhnQ0lMUGdJUUlBQWdEU0FBS0FJRUlnYXRJZ2Q4SUFlQUlnNCtBaFJDQVNBQU5RSW9JZ2VHSWc5Q0FYMGlDQ0FKSUFLc0loQjhJQkIveEh3Z0I0ZW5JQWdnQzhSOElBZUhwMnNpQWtFQVNBUkFJQU1nQWpZQ0JDQURJQVEyQWdBZ0FVRUJRZVBrQUNBREVBaEJBQ0VDREFNTElBQWdBallDQ0NBSUlBb2dCcXdpQzN3Z0MzL0VmQ0FIaDZjZ0RzUWdEM3hDQVgwZ0I0ZW5heUlDUVFCSUJFQWdBeUFDTmdJVUlBTWdCRFlDRUNBQlFRRkJxT1VBSUFOQkVHb1FDRUVBSVFJTUF3c2dBQ0FDTmdJTUlBQkJOR29oQUVFQklRSWdCRUVCYWlJRUlBVkhEUUFMREFFTElBRkJBVUduTTBFQUVBZ0xJQU5CSUdva0FDQUNDOWNHQVFaL0lBQUVRQUpBSUFBb0FnQUVRQ0FBS0FJTUlnRUVRQ0FCRUNrZ0FDZ0NEQkFKSUFCQkFEWUNEQXNnQUNnQ0VDSUJCRUFnQVJBSklBQkNBRGNERUFzZ0FDZ0NRQkFKSUFCQ0FEY0NQQXdCQ3lBQUtBSXNJZ0VFUUNBQkVBa2dBRUVBTmdJc0N5QUFLQUlnSWdFRVFDQUJFQWtnQUVJQU53TWdDeUFBS0FJMElnRkZEUUFnQVJBSklBQkNBRGNDTkFzZ0FDZ0MwQUVRVGlBQUtBS2NBU0lCQkVBZ0FDZ0NhQ0FBS0FKc2JDSURCSDhEUUNBQkVDa2dBVUdNTEdvaEFTQUNRUUZxSWdJZ0EwY05BQXNnQUNnQ25BRUZJQUVMRUFrZ0FFRUFOZ0tjQVFzZ0FDZ0NkQ0lCQkVBZ0FDZ0NjQ0lDQkVCQkFDRUJBMEFnQUNnQ2RDQUJRUU4wYWlnQ0FDSURCRUFnQXhBSklBQW9BbkFoQWdzZ0FVRUJhaUlCSUFKSkRRQUxJQUFvQW5RaEFRc2dBRUVBTmdKd0lBRVFDU0FBUVFBMkFuUUxJQUFvQW9nQkVBa2dBRUVBTmdKNElBQkJBRFlDaUFFZ0FDZ0NaQkFKSUFCQkFEWUNaQ0FBTFFDOEFVRUNjVVVFUUNBQUtBS29BUkFKQ3lBQVFkQUFha0VBUWZBQUVBNGFJQUFvQXNBQkVDMGdBRUVBTmdMQUFTQUFLQUxFQVJBdElBQkJBRFlDd0FFZ0FDZ0N5QUVpQVFSQUlBRW9BaHdpQWdSQUlBSVFDU0FCUVFBMkFod0xJQUVvQWlnaUFnUkFJQUVvQWlRRVFBTkFJQUlnQlVFb2JDSURhaWdDSkNJRUJFQWdCQkFKSUFFb0FpZ2lBaUFEYWtFQU5nSWtDeUFDSUFOcUtBSVFJZ1FFUUNBRUVBa2dBU2dDS0NJQ0lBTnFRUUEyQWhBTElBSWdBMm9vQWhnaUJBUkFJQVFRQ1NBQktBSW9JZ0lnQTJwQkFEWUNHQXNnQlVFQmFpSUZJQUVvQWlSSkRRQUxDeUFDRUFrZ0FVRUFOZ0lvQ3lBQkVBa0xJQUJCQURZQ3lBRWdBQ2dDU0JBWUlBQkJBRFlDU0NBQUtBSk1FQmdnQUVFQU5nSk1JQUFvQXRRQklnTUVRQUpBSUFNb0FnaEZEUUFnQXlnQ0RBUkFJQU5CQURZQ0tBTkFJQU1vQWhoQkFFb05BQXNMSUFOQkFUWUNFQ0FES0FJQUVBa2dBeWdDSENJQ1JRMEFBMEFnQWlnQ0JDRUJJQUlRQ1NBRElBRTJBaHdnQVNJQ0RRQUxDeUFES0FJa0lnSUVRQ0FDS0FJRUlnVkJBRW9FUUVFQUlRRURRQ0FDS0FJQUlBRkJER3hxSWdRb0FnZ2lCZ1JBSUFRb0FnUWdCaEVDQUNBQ0tBSUVJUVVMSUFGQkFXb2lBU0FGU0EwQUN3c2dBaWdDQUJBSklBSVFDUXNnQXhBSkN5QUFRUUEyQXRRQklBQVFDUXNMNWdNQ0NIOEVmaUFBS0FJVUtBSUFLQUlVSUFGQnpBQnNhaUlKS0FJTUlnZ2dBQ2dDR0NnQ0dDQUJRVFJzYWlJS05RSUVJaEJDQVgwaUVpQUFOUUk4ZkNBUWdLY2lDeUFJSUF0Skd5RU1JQWtvQWdnaUNDQUtOUUlBSWhGQ0FYMGlFeUFBTlFJNGZDQVJnS2NpQ2lBSUlBcEpHeUVLSUFrb0FnUWlDQ0FTSUFBMUFqUjhJQkNBcHlJTElBZ2dDMHNiSVFzZ0NTZ0NBQ0lJSUJNZ0FEVUNNSHdnRVlDbklnMGdDQ0FOU3hzaERVRUFJUWdnQUNnQ0lDZ0MwQ3NnQVVHNENHeHFLQUlVSVE0Q1FDQUpLQUlVUVFBZ0FtdEJmeUFDRzJvaUFrVUVRQ0FLSVFBZ0RTRUlJQXNoQVF3QkN5QURRUUZ4SUFKQkFXc2lEM1FpQ1NBTlNRUkFJQTBnQ1d1dFFuOGdBcTBpRUlaQ2Y0VjhJQkNJcHlFSUMwRUFJUUJCQUNFQklBTkJBWFlnRDNRaUF5QUxTUVJBSUFzZ0EydXRRbjhnQXEwaUVJWkNmNFY4SUJDSXB5RUJDeUFKSUFwSkJFQWdDaUFKYTYxQ2Z5QUNyU0lRaGtKL2hYd2dFSWluSVFBTElBTWdERThFUUVFQUlRd01BUXNnRENBRGE2MUNmeUFDclNJUWhrSi9oWHdnRUlpbklRd0xRWDhnQUVFQ1FRTWdEa0VCUmhzaUFtb2lBeUFBSUFOTEd5QUVTMEYvSUFJZ0RHb2lBQ0FBSUF4Skd5QUZTM0VnQ0NBQ2F5SUFRUUFnQUNBSVRSc2dCa2x4SUFFZ0Ftc2lBRUVBSUFBZ0FVMGJJQWRKY1F1aUFRRUdmeUFBQkVBZ0FDZ0NCQ0lDQkVBZ0FoQUpJQUJCQURZQ0JBc2dBUVJBSUFBaEFnTkFJQUlvQXNnQklnTUVRRUVBSVFVZ0FpZ0N4QUVpQkFSL0EwQWdBeWdDRENJR0JFQWdCaEFKSUFOQkFEWUNEQ0FDS0FMRUFTRUVDeUFEUVJCcUlRTWdCVUVCYWlJRklBUkpEUUFMSUFJb0FzZ0JCU0FEQ3hBSklBSkJBRFlDeUFFTElBSkI4QUZxSVFJZ0IwRUJhaUlISUFGSERRQUxDeUFBRUFrTEM5VVpBaE4vQTNzZ0FDZ0NBQ0lLSUFBb0Fnd2lEVUVGZENJRmFpRUdJQW9nQldzaEZpQUFLQUlRSVFVZ0FDZ0NIQ0VMSUFBb0FoUWhDU0FBS0FJSUlRNENRQUpBQWtBQ1FDQURRUWhKRFFBZ0FVRVBjUTBBSUFaQkQzRkZEUUVMSUFVZ0NVOE5BZ0pBQWtBZ0EwRUJhdzRDQUFFREN3SkFJQWtnQldzaUNFRVlTUTBBSUFFZ0JVRUNkR29oQnlBTlFRVjBJZ1FnQ2lBRlFRWjBhbW9nQVNBSlFRSjBha2tFUUNBSElBb2dDVUVHZEdvZ0JHcEJQR3RKRFFFTElBWDlFZjBNQUFBQUFBRUFBQUFDQUFBQUF3QUFBUDJ1QVNFWUlBVWdDRUY4Y1NJUGFpRUZRUUFoQkFOQUlBWWdHRUVFL2FzQkloZjlHd0JCQW5ScUlBY2dCRUVDZEdyOUFBSUFJaG45SHdBNEFnQWdCaUFYL1JzQlFRSjBhaUFaL1I4Qk9BSUFJQVlnRi8wYkFrRUNkR29nR2YwZkFqZ0NBQ0FHSUJmOUd3TkJBblJxSUJuOUh3TTRBZ0FnR1AwTUJBQUFBQVFBQUFBRUFBQUFCQUFBQVAydUFTRVlJQVJCQkdvaUJDQVBSdzBBQ3lBSUlBOUdEUVFMSUFVaEJDQUpJQVZyUVFOeElnY0VRRUVBSVFnRFFDQUdJQVJCQm5ScUlBRWdCRUVDZEdvcUFnQTRBZ0FnQkVFQmFpRUVJQWhCQVdvaUNDQUhSdzBBQ3dzZ0JTQUphMEY4U3cwREEwQWdCaUFFUVFaMGFpQUJJQVJCQW5ScUtnSUFPQUlBSUFZZ0JFRUJhaUlGUVFaMGFpQUJJQVZCQW5ScUtnSUFPQUlBSUFZZ0JFRUNhaUlGUVFaMGFpQUJJQVZCQW5ScUtnSUFPQUlBSUFZZ0JFRURhaUlGUVFaMGFpQUJJQVZCQW5ScUtnSUFPQUlBSUFSQkJHb2lCQ0FKUncwQUN3d0RDeUFCSUFKQkFuUnFJUWdDUUNBSklBVnJJZzlCUEVrRVFDQUZJUVFNQVFzZ0NpQUZRUVowSUExQkJYUnFhaUlFSUFrZ0JVRi9jMm9pQjBFR2RDSVFhaUFFU1FSQUlBVWhCQXdCQ3lBRVFRUnFJZ1FnRUdvZ0JFa0VRQ0FGSVFRTUFRc2dCMEgvLy84ZlN3UkFJQVVoQkF3QkN5QU5RUVYwSWdRZ0NpQUZRUVowYW1vaUJ5QUJJQUlnQ1dwQkFuUnFTU0FLSUFsQkJuUnFJQVJxUVRocklnUWdBU0FDSUFWcVFRSjBha3R4QkVBZ0JTRUVEQUVMSUFjZ0FTQUpRUUowYWtrZ0FTQUZRUUowYWlBRVNYRUVRQ0FGSVFRTUFRc2dCZjBSL1F3QUFBQUFBUUFBQUFJQUFBQURBQUFBL2E0QklSZ2dCU0FQUVh4eEloQnFJUVJCQUNFSEEwQWdCaUFZUVFUOXF3RWlGLzBiQUVFQ2RHb2lFU0FCSUFVZ0IycEJBblFpREdyOUFBSUFJaG45SHdBNEFnQWdCaUFYL1JzQlFRSjBhaUlUSUJuOUh3RTRBZ0FnQmlBWC9Sc0NRUUowYWlJVUlCbjlId0k0QWdBZ0JpQVgvUnNEUVFKMGFpSVZJQm45SHdNNEFnQWdFU0FJSUF4cS9RQUNBQ0lYL1I4QU9BSUVJQk1nRi8wZkFUZ0NCQ0FVSUJmOUh3STRBZ1FnRlNBWC9SOERPQUlFSUJqOURBUUFBQUFFQUFBQUJBQUFBQVFBQUFEOXJnRWhHQ0FIUVFScUlnY2dFRWNOQUFzZ0R5QVFSZzBEQ3lBRVFRRnFJUVVnQ1NBRWEwRUJjUVJBSUFZZ0JFRUdkR29pQnlBQklBUkJBblFpQkdvcUFnQTRBZ0FnQnlBRUlBaHFLZ0lBT0FJRUlBVWhCQXNnQlNBSlJnMENBMEFnQmlBRVFRWjBhaUlGSUFFZ0JFRUNkQ0lIYWlvQ0FEZ0NBQ0FGSUFjZ0NHb3FBZ0E0QWdRZ0JpQUVRUUZxSWdWQkJuUnFJZ2NnQVNBRlFRSjBJZ1ZxS2dJQU9BSUFJQWNnQlNBSWFpb0NBRGdDQkNBRVFRSnFJZ1FnQ1VjTkFBc01BZ3NnQlNBSlR3MEJJQUVnQWtFQ2RHb2hDQU5BSUFZZ0JVRUdkR29pQkNBQklBVkJBblJxS2dJQU9BSUFJQVFnQVNBQ0lBVnFJZ2RCQW5ScUtnSUFPQUlFSUFRZ0FTQUNJQWRxSWdkQkFuUnFLZ0lBT0FJSUlBUWdBU0FDSUFkcUlnZEJBblJxS2dJQU9BSU1JQVFnQVNBQ0lBZHFJZ2RCQW5ScUtnSUFPQUlRSUFRZ0FTQUNJQWRxSWdkQkFuUnFLZ0lBT0FJVUlBUWdBU0FDSUFkcVFRSjBJZ2RxS2dJQU9BSVlJQVFnQnlBSWFpb0NBRGdDSENBRlFRRnFJZ1VnQ1VjTkFBc01BUXNnQVNBQ1FRSjBhaUVJSUFOQkEwWWhCeUFEUVFSR0lROGdBMEVGUmlFUUlBTkJCMFloRVFOQUlBWWdCVUVHZEdvaUJDQUJJQVZCQW5ScUtnSUFPQUlBSUFRZ0FTQUNJQVZxSWd4QkFuUnFLZ0lBT0FJRUlBUWdBU0FDSUF4cUlneEJBblJxS2dJQU9BSUlBa0FnQncwQUlBUWdBU0FDSUF4cUlneEJBblJxS2dJQU9BSU1JQThOQUNBRUlBRWdBaUFNYWlJTVFRSjBhaW9DQURnQ0VDQVFEUUFnQkNBQklBSWdER29pREVFQ2RHb3FBZ0E0QWhRZ0EwRUdSZzBBSUFRZ0FTQUNJQXhxUVFKMElneHFLZ0lBT0FJWUlCRU5BQ0FFSUFnZ0RHb3FBZ0E0QWh3TElBVkJBV29pQlNBSlJ3MEFDd3NnRmtFZ2FpRUdJQUVnRGtFQ2RHb2hCQ0FBS0FJWUlRVUNRQUpBQWtBZ0EwRUlTUTBBSUFSQkQzRU5BQ0FHUVE5eFJRMEJDeUFGSUF0UERRRUNRQUpBQWtBZ0EwRUJhdzRDQUFFQ0N3SkFJQXNnQldzaUFFRWNTUTBBSUFvZ0JVRUdkRUVnY2lBTlFRVjBJZ0pyYWlBQklBc2dEbXBCQW5ScVNRUkFJQUVnQlNBT2FrRUNkR29nQzBFR2RDQUNheUFLYWtFY2Ewa05BUXNnQkNBRlFRSjBhaUVESUFYOUVmME1BQUFBQUFFQUFBQUNBQUFBQXdBQUFQMnVBU0VZSUFVZ0FFRjhjU0lCYWlFRlFRQWhBZ05BSUFZZ0dFRUUvYXNCSWhmOUd3QkJBblJxSUFNZ0FrRUNkR3I5QUFJQUlobjlId0E0QWdBZ0JpQVgvUnNCUVFKMGFpQVovUjhCT0FJQUlBWWdGLzBiQWtFQ2RHb2dHZjBmQWpnQ0FDQUdJQmY5R3dOQkFuUnFJQm45SHdNNEFnQWdHUDBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFWUlBSkJCR29pQWlBQlJ3MEFDeUFBSUFGR0RRUUxJQVVoQWlBTElBVnJRUU54SWdBRVFFRUFJUUVEUUNBR0lBSkJCblJxSUFRZ0FrRUNkR29xQWdBNEFnQWdBa0VCYWlFQ0lBRkJBV29pQVNBQVJ3MEFDd3NnQlNBTGEwRjhTdzBEQTBBZ0JpQUNRUVowYWlBRUlBSkJBblJxS2dJQU9BSUFJQVlnQWtFQmFpSUFRUVowYWlBRUlBQkJBblJxS2dJQU9BSUFJQVlnQWtFQ2FpSUFRUVowYWlBRUlBQkJBblJxS2dJQU9BSUFJQVlnQWtFRGFpSUFRUVowYWlBRUlBQkJBblJxS2dJQU9BSUFJQUpCQkdvaUFpQUxSdzBBQ3d3REN5QUVJQUpCQW5ScUlRTUNRQ0FMSUFWcklnQkJ4QUJKQkVBZ0JTRUNEQUVMSUFvZ0JVRUdkQ0lKUVNCeUlBMUJCWFFpQ0d0cUlnY2dDeUFGUVg5emFpSVBRUVowSWhCcUlBZEpCRUFnQlNFQ0RBRUxJQW9nQ1VFa2NpQUlhMm9pQ1NBUWFpQUpTUVJBSUFVaEFnd0JDeUFQUWYvLy94OUxCRUFnQlNFQ0RBRUxJQW9nQlVFR2RFRWdjaUFOUVFWMElnbHJhaUlOSUFFZ0N5QU9haUlJSUFKcVFRSjBha2tnQzBFR2RDQUpheUFLYWtFWWF5SUpJQUVnRGtFQ2RHb2dCVUVDZEdvaUNpQUNRUUowYWt0eEJFQWdCU0VDREFFTElBMGdBU0FJUVFKMGFra2dDU0FLUzNFRVFDQUZJUUlNQVFzZ0JmMFIvUXdBQUFBQUFRQUFBQUlBQUFBREFBQUEvYTRCSVJnZ0JTQUFRWHh4SWdscUlRSkJBQ0VCQTBBZ0JpQVlRUVQ5cXdFaUYvMGJBRUVDZEdvaUNpQUVJQUVnQldwQkFuUWlEV3I5QUFJQUlobjlId0E0QWdBZ0JpQVgvUnNCUVFKMGFpSU9JQm45SHdFNEFnQWdCaUFYL1JzQ1FRSjBhaUlJSUJuOUh3STRBZ0FnQmlBWC9Sc0RRUUowYWlJSElCbjlId000QWdBZ0NpQURJQTFxL1FBQ0FDSVgvUjhBT0FJRUlBNGdGLzBmQVRnQ0JDQUlJQmY5SHdJNEFnUWdCeUFYL1I4RE9BSUVJQmo5REFRQUFBQUVBQUFBQkFBQUFBUUFBQUQ5cmdFaEdDQUJRUVJxSWdFZ0NVY05BQXNnQUNBSlJnMERDeUFDUVFGcUlRQWdDeUFDYTBFQmNRUkFJQVlnQWtFR2RHb2lBU0FFSUFKQkFuUWlBbW9xQWdBNEFnQWdBU0FDSUFOcUtnSUFPQUlFSUFBaEFnc2dBQ0FMUmcwQ0EwQWdCaUFDUVFaMGFpSUFJQVFnQWtFQ2RDSUJhaW9DQURnQ0FDQUFJQUVnQTJvcUFnQTRBZ1FnQmlBQ1FRRnFJZ0JCQm5ScUlnRWdCQ0FBUVFKMElnQnFLZ0lBT0FJQUlBRWdBQ0FEYWlvQ0FEZ0NCQ0FDUVFKcUlnSWdDMGNOQUFzTUFnc2dCQ0FDUVFKMGFpRUJJQU5CQTBZaENTQURRUVJHSVFvZ0EwRUZSaUVOSUFOQkIwWWhEZ05BSUFZZ0JVRUdkR29pQUNBRUlBVkJBblJxS2dJQU9BSUFJQUFnQkNBQ0lBVnFJZ2hCQW5ScUtnSUFPQUlFSUFBZ0JDQUNJQWhxSWdoQkFuUnFLZ0lBT0FJSUFrQWdDUTBBSUFBZ0JDQUNJQWhxSWdoQkFuUnFLZ0lBT0FJTUlBb05BQ0FBSUFRZ0FpQUlhaUlJUVFKMGFpb0NBRGdDRUNBTkRRQWdBQ0FFSUFJZ0NHb2lDRUVDZEdvcUFnQTRBaFFnQTBFR1JnMEFJQUFnQkNBQ0lBaHFRUUowSWdocUtnSUFPQUlZSUE0TkFDQUFJQUVnQ0dvcUFnQTRBaHdMSUFWQkFXb2lCU0FMUncwQUN3d0JDeUFGSUF0UERRQWdCQ0FDUVFKMGFpRUJBMEFnQmlBRlFRWjBhaUlBSUFRZ0JVRUNkR29xQWdBNEFnQWdBQ0FFSUFJZ0JXb2lBMEVDZEdvcUFnQTRBZ1FnQUNBRUlBSWdBMm9pQTBFQ2RHb3FBZ0E0QWdnZ0FDQUVJQUlnQTJvaUEwRUNkR29xQWdBNEFnd2dBQ0FFSUFJZ0Eyb2lBMEVDZEdvcUFnQTRBaEFnQUNBRUlBSWdBMm9pQTBFQ2RHb3FBZ0E0QWhRZ0FDQUVJQUlnQTJwQkFuUWlBMm9xQWdBNEFoZ2dBQ0FCSUFOcUtnSUFPQUljSUFWQkFXb2lCU0FMUncwQUN3c0xtd01CQkg4Z0FTQUFRUVJxSWdScVFRRnJRUUFnQVd0eElnVWdBbW9nQUNBQUtBSUFJZ0ZxUVFSclRRUi9JQUFvQWdRaUF5QUFLQUlJSWdZMkFnZ2dCaUFETmdJRUlBUWdCVWNFUUNBQUlBQkJCR3NvQWdCQmZuRnJJZ01nQlNBRWF5SUVJQU1vQWdCcUlnVTJBZ0FnQXlBRlFYeHhha0VFYXlBRk5nSUFJQUFnQkdvaUFDQUJJQVJySWdFMkFnQUxBbjhnQVNBQ1FSaHFUd1JBSUFBZ0FtcEJDR29pQXlBQklBSnJRUWhySWdFMkFnQWdBeUFCUVh4eGFrRUVheUFCUVFGeU5nSUFJQU1DZnlBREtBSUFRUWhySWdGQi93Qk5CRUFnQVVFRGRrRUJhd3dCQ3lBQlp5RUVJQUZCSFNBRWEzWkJCSE1nQkVFQ2RHdEI3Z0JxSUFGQi94OU5EUUFhUVQ4Z0FVRWVJQVJyZGtFQ2N5QUVRUUYwYTBISEFHb2lBU0FCUVQ5UEd3c2lBVUVFZENJRVFhREdBV28yQWdRZ0F5QUVRYWpHQVdvaUJDZ0NBRFlDQ0NBRUlBTTJBZ0FnQXlnQ0NDQUROZ0lFUWFqT0FVR296Z0VwQXdCQ0FTQUJyWWFFTndNQUlBQWdBa0VJYWlJQk5nSUFJQUFnQVVGOGNXb01BUXNnQUNBQmFndEJCR3NnQVRZQ0FDQUFRUVJxQlVFQUN3dkNBUUVEZndKQUlBRWdBaWdDRUNJREJIOGdBd1VnQWhBM0RRRWdBaWdDRUFzZ0FpZ0NGQ0lFYTBzRVFDQUNJQUFnQVNBQ0tBSWtFUUFBRHdzQ1FBSkFJQUlvQWxCQkFFZ05BQ0FCUlEwQUlBRWhBd05BSUFBZ0Eyb2lCVUVCYXkwQUFFRUtSd1JBSUFOQkFXc2lBdzBCREFJTEN5QUNJQUFnQXlBQ0tBSWtFUUFBSWdRZ0Ewa05BaUFCSUFOcklRRWdBaWdDRkNFRURBRUxJQUFoQlVFQUlRTUxJQVFnQlNBQkVBc2FJQUlnQWlnQ0ZDQUJhallDRkNBQklBTnFJUVFMSUFRTFdRRUJmeUFBSUFBb0FrZ2lBVUVCYXlBQmNqWUNTQ0FBS0FJQUlnRkJDSEVFUUNBQUlBRkJJSEkyQWdCQmZ3OExJQUJDQURjQ0JDQUFJQUFvQWl3aUFUWUNIQ0FBSUFFMkFoUWdBQ0FCSUFBb0FqQnFOZ0lRUVFBTHpBSUJCSDhnQVNBQS9RQUNBUDBMQWdBZ0FTZ0NHQ0lDQkVBZ0FTZ0NFQ0lEQkg5QkFDRUNBMEFnQVNnQ0dDQUNRVFJzYWlnQ0xDSUVCRUFnQkJBSklBRW9BaEFoQXdzZ0FrRUJhaUlDSUFOSkRRQUxJQUVvQWhnRklBSUxFQWtnQVVFQU5nSVlDeUFCSUFBb0FoQWlBallDRUNBQklBSkJOR3dRRFNJQ05nSVlJQUlFUUNBQktBSVFCRUJCQUNFREEwQWdBaUFEUVRSc0lnVnFJZ0lnQUNnQ0dDQUZhaUlFL1FBQ0FQMExBZ0FnQWlBRUtBSXdOZ0l3SUFJZ0JQMEFBaUQ5Q3dJZ0lBSWdCUDBBQWhEOUN3SVFJQUVvQWhnaUFpQUZha0VBTmdJc0lBTkJBV29pQXlBQktBSVFTUTBBQ3dzZ0FTQUFLQUlVTmdJVUlBRWdBQ2dDSUNJQ05nSWdJQUlFUUNBQklBSVFEU0lDTmdJY0lBSkZCRUFnQVVJQU53SWNEd3NnQWlBQUtBSWNJQUFvQWlBUUN4b1BDeUFCUVFBMkFod1BDeUFCUVFBMkFoQWdBVUVBTmdJWUN3UUFRUUVMeGdFQkEzOERRQ0FBUVFSMElnRkJwTVlCYWlBQlFhREdBV29pQWpZQ0FDQUJRYWpHQVdvZ0FqWUNBQ0FBUVFGcUlnQkJ3QUJIRFFBTFFUQVFaaG9qQUVFUWF5SUFKQUFDUUNBQVFReHFJQUJCQ0dvUUF3MEFRYkRPQVVFSUlBQW9BZ3hCQW5SQkJHb1FHeUlCTmdJQUlBRkZEUUJCQ0NBQUtBSUlFQnNpQVFSQVFiRE9BU2dDQUNJQ0lBQW9BZ3hCQW5ScVFRQTJBZ0FnQWlBQkVBSkZEUUVMUWJET0FVRUFOZ0lBQ3lBQVFSQnFKQUJCek00QlFTbzJBZ0JCbE04QlFkalBBVFlDQUF1UUJnSUZmd043SXdCQkVHc2lCaVFBQW44Z0FDZ0NDRUVRUmdSQUlBQW9BcHdCSUFBb0Fzd0JRWXdzYkdvTUFRc2dBQ2dDREFzaEFBSkFJQU1vQWdBaUJVVUVRRUVBSVFJZ0JFRUJRY0FUUVFBUUNBd0JDeUFBS0FMUUt5RUpJQU1nQlVFQmF6WUNBQ0FDSUFaQkRHcEJBUkFLSUFrZ0FVRzRDR3hxSWdjZ0JpZ0NEQ0lBUVFWMk5nS2tCaUFISUFCQkgzRWlBVFlDR0NBQ1FRRnFJUUFnQXdKL0FuOENRQUovQWtBQ1FDQUJEZ0lBQXdFTElBTW9BZ0FNQVFzZ0F5Z0NBRUVCZGdzaUJVSGlBRThFZnlBR1F1R0FnSUNRRERjQ0JDQUdJQVUyQWdBZ0JFRUNRZFg0QUNBR0VBZ2dCeWdDR0FVZ0FRc0VRQ0FGSWdFTkFVRUFEQUlMSUFVRVFDQUhRUnhxSVFGQkFDRUNBMEFnQUNBR1FReHFRUUVRQ2lBQ1FlQUFUUVJBSUFZb0Fnd2hCQ0FCSUFKQkEzUnFJZ2hCQURZQ0JDQUlJQVJCQTNZMkFnQUxJQUJCQVdvaEFDQUNRUUZxSWdJZ0JVY05BQXNMUVFBaEFpQURLQUlBSWdBZ0JVa05BeUFBSUFWckRBSUxJQWRCSEdvaEJFRUFJUUlEUUNBQUlBWkJER3BCQWhBS0lBSkI0QUJOQkVBZ0JDQUNRUU4wYWlJRklBWW9BZ3dpQ0VIL0QzRTJBZ1FnQlNBSVFRdDJOZ0lBQ3lBQVFRSnFJUUFnQWtFQmFpSUNJQUZIRFFBTElBRkJBWFFMSVFCQkFDRUNJQU1vQWdBaUFTQUFTUTBCSUFFZ0FHc0xOZ0lBUVFFaEFpQUhLQUlZUVFGSERRQWdCMEVjYWlFRUlBZjlDUUljSVF3Z0J5Z0NJQ0VEL1F3QkFBQUFBZ0FBQUFNQUFBQUVBQUFBSVF0QkFDRUJBMEFnQkNBQlFRTjBhaUlBUVJocUlBd2dDLzBNLy8vLy8vLy8vLy8vLy8vLy8vLy8vLzJ1QVNJSy9Sc0FRUU51L1JFZ0N2MGJBVUVEYnYwY0FTQUsvUnNDUVFOdS9Sd0NJQXI5R3dOQkEyNzlIQVA5c1FIOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOXVBRWlDdjFhQWdBQ0lBQkJFR29nQ3YxYUFnQUJJQUJCQ0dvZ0N2MWFBZ0FBSUFRZ0FVRUVhaUlCUVFOMGFpSUZJQXI5V2dJQUF5QUFJQU0yQWh3Z0FDQUROZ0lVSUFBZ0F6WUNEQ0FGSUFNMkFnUWdDLzBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFTElBRkI0QUJIRFFBTEN5QUdRUkJxSkFBZ0FndWZCZ0VHZnlNQVFTQnJJZ1lrQUFKL0lBQW9BZ2hCRUVZRVFDQUFLQUtjQVNBQUtBTE1BVUdNTEd4cURBRUxJQUFvQWd3TElRVUNRQ0FES0FJQVFRUk5CRUJCQUNFQUlBUkJBVUdkRTBFQUVBZ01BUXNnQWlBRktBTFFLeUFCUWJnSWJHb2lCU0lKUVFScVFRRVFDaUFGSUFVb0FnUkJBV29pQnpZQ0JDQUhRU0pQQkVBZ0JrRWhOZ0lFSUFZZ0J6WUNBQ0FFUVFGQitUa2dCaEFJUVFBaEFBd0JDeUFISUFBb0FxQUJJZ2hOQkVBZ0JpQUhOZ0lZSUFZZ0NEWUNGQ0FHSUFFMkFoQWdCRUVCUWNUN0FDQUdRUkJxRUFnZ0FDQUFLQUlJUVlDQUFuSTJBZ2hCQUNFQURBRUxJQUpCQVdvZ0JVRUlha0VCRUFvZ0JTQUZLQUlJUVFKcU5nSUlJQUpCQW1vZ0JVRU1ha0VCRUFvZ0JTQUZLQUlNUVFKcUlnQTJBZ3dDUUFKQUlBVW9BZ2dpQVVFS1N3MEFJQUJCQ2tzTkFDQUFJQUZxUVExSkRRRUxRUUFoQUNBRVFRRkJ3eWxCQUJBSURBRUxJQUpCQTJvZ0JVRVFha0VCRUFvZ0JTMEFFRUdBQVhFRVFFRUFJUUFnQkVFQlFZc3lRUUFRQ0F3QkN5QUNRUVJxSUFWQkZHcEJBUkFLSUFVb0FoUkJBazhFUUVFQUlRQWdCRUVCUWNveFFRQVFDQXdCQ3lBRElBTW9BZ0JCQldzaUJ6WUNBRUVCSVFBZ0JTZ0NCQ0VCSUFVdEFBQkJBWEZGQkVBZ0FVVU5BU0FGUWJBSGFpRUJJQVZCckFacUlRSkJBQ0VGQTBBZ0FpQUZRUUowSWdCcVFRODJBZ0FnQUNBQmFrRVBOZ0lBUVFFaEFDQUZRUUZxSWdVZ0NTZ0NCRWtOQUFzTUFRc2dBU0FIVFFSQUFrQWdBVVVFUUVFQUlRRU1BUXNnQWtFRmFpQUdRUnhxUVFFUUNpQUZJQVlvQWh3aUFFRUVkallDc0FjZ0JTQUFRUTl4TmdLc0JpQUZLQUlFSWdGQkFrOEVRQ0FGUWJBSGFpRUhJQVZCckFacUlRZ2dBa0VHYWlFQVFRRWhCUU5BSUFBZ0JrRWNha0VCRUFvQ1FDQUdLQUljSWdGQkVFOEVRQ0FCUVE5eElnSU5BUXRCQUNFQUlBUkJBVUh3TFVFQUVBZ01CUXNnQ0NBRlFRSjBJZ3BxSUFJMkFnQWdCeUFLYWlBQlFRUjJOZ0lBSUFCQkFXb2hBQ0FGUVFGcUlnVWdDU2dDQkNJQlNRMEFDd3NnQXlnQ0FDRUhDeUFESUFjZ0FXczJBZ0JCQVNFQURBRUxRUUFoQUNBRVFRRkJuUk5CQUJBSUN5QUdRU0JxSkFBZ0FBdFNBQ0FCSUFBdEFBQTZBQWNnQVNBQUxRQUJPZ0FHSUFFZ0FDMEFBam9BQlNBQklBQXRBQU02QUFRZ0FTQUFMUUFFT2dBRElBRWdBQzBBQlRvQUFpQUJJQUF0QUFZNkFBRWdBU0FBTFFBSE9nQUFDNUlCQVFSL0lBQWdBVFlDb0FFQ1FDQUFLQUpJSWdORkRRQWdBeWdDR0NJR1JRMEFJQUFvQWd3aUJFVU5BQ0FFS0FMUUswVU5BQ0FES0FJUUlnUkZCRUJCQVE4TFFRQWhBd05BSUFFZ0FDZ0NEQ2dDMENzZ0EwRzRDR3hxS0FJRVR3UkFJQUpCQVVHanhBQkJBQkFJUVFBUEN5QUdJQU5CTkd4cUlBRTJBaWhCQVNFRklBTkJBV29pQXlBRVJ3MEFDd3NnQlF1c0J3SUpmd2grSXdCQkVHc2lDaVFBQWtBZ0FrVUVRQ0FEUVFGQml0WUFRUUFRQ0F3QkN5QUNLQUlRSWdzZ0FDZ0NTQ0lHS0FJUVNRUkFJQU5CQVVHUXpnQkJBQkFJREFFTElBUWdBQ2dDYUNJRklBQW9BbXhzSWdkUEJFQWdDaUFFTmdJQUlBb2dCMEVCYXpZQ0JDQURRUUZCaC9zQUlBb1FDRUVBSVFVTUFRc2dBaUFBS0FKVUlBUWdCU0FFSUFWdUlnZHNheUlJSUFBb0FseHNhaUlGTmdJQUlBSWdCU0FHS0FJQUlnWWdCU0FHU3hzaUJqWUNBQ0FDSUFBb0FsUWdBQ2dDWENBSVFRRnFiR29pQlRZQ0NDQUNJQVVnQUNnQ1NDZ0NDQ0lJSUFVZ0NFa2JJZ2cyQWdnZ0FpQUFLQUpZSUFBb0FtQWdCMnhxSWdVMkFnUWdBaUFGSUFBb0FrZ29BZ1FpQ1NBRklBbExHeUlKTmdJRUlBSWdBQ2dDV0NBQUtBSmdJQWRCQVdwc2FpSUZOZ0lNSUFJZ0JTQUFLQUpJS0FJTUlnY2dCU0FIU1JzaUJUWUNEQ0FBS0FKSUlnd29BaEFpQndSQUlBV3NRZ0Y5SVJFZ0NLeENBWDBoRWlBSnJVSUJmU0VUSUFhdFFnRjlJUlFnRENnQ0dDRUlJQUlvQWhnaEJVRUFJUVlEUUNBRklBZ2dCa0UwYkdvb0FpZ2lDVFlDS0NBRklCUWdCU2dDQUNJTXJTSU9mQ0FPZ0NJVlBnSVFJQVVnRXlBRktBSUVJZzJ0SWc1OElBNkFJaEErQWhRZ0JVSi9JQW10SWc2R0lnOGdFTVI5SUE2SHB5QVBJQkVnRGF3aUVId2dFSC9FZlNBT2g2ZHJOZ0lNSUFVZ0R5QVZ4SDBnRG9lbklBOGdFaUFNckNJUGZDQVBmOFI5SUE2SHAyczJBZ2dnQlVFMGFpRUZJQVpCQVdvaUJpQUhSdzBBQ3dzZ0J5QUxTUVJBSUFJb0FoZ2hCUU5BSUFVZ0IwRTBiQ0lHYWlnQ0xCQUpJQUlvQWhnaUJTQUdha0VBTmdJc0lBZEJBV29pQnlBQ0tBSVFTUTBBQ3lBQ0lBQW9Ba2dvQWhBMkFoQUxJQUFvQWt3aUJRUkFJQVVRR0FzZ0FFRUJRU1FRRENJSE5nSk1RUUFoQlNBSFJRMEFJQUlnQnhBNElBQWdCRFlDTENBQUtBTEFBVUVYSUFNUUhrVU5BQ0FBS0FMQUFTSUVLQUlBSVFZZ0JDZ0NDQ0VIQWtBZ0JnUkFRUUVoQlNBR1FRRnhJUXNnQmtFQlJnUi9RUUFGSUFaQmZuRWhDRUVBSVFZRFFBSi9RUUFnQlVVTkFCcEJBQ0FBSUFFZ0F5QUhLQUlBRVFBQVJRMEFHaUFBSUFFZ0F5QUhLQUlFRVFBQVFRQkhDeUVGSUFkQkNHb2hCeUFHUVFKcUlnWWdDRWNOQUFzZ0JVRUJjd3NoQmdKQUFrQWdDd1JBSUFZTkFTQUFJQUVnQXlBSEtBSUFFUUFBUVFCSElRVUxJQVJCQURZQ0FDQUZRUUZ4UlEwQkRBTUxJQVJCQURZQ0FBc2dBQ2dDU0JBWVFRQWhCU0FBUVFBMkFrZ01BZ3NnQkVFQU5nSUFDeUFBSUFJUVFDRUZDeUFLUVJCcUpBQWdCUXZ5QXdFRmZ3SkFBa0FnQUNnQ1BDSUNSUVJBSUFFb0FoQU5BVUVCRHdzZ0FrRTBiQkFOSWdWRkRRRWdBU2dDRUFSQUlBRW9BaGdoQWdOQUlBSWdBMEUwYkNJRWFpZ0NMQkFKSUFFb0FoZ2lBaUFFYWtFQU5nSXNJQU5CQVdvaUF5QUJLQUlRSWdSSkRRQUxDeUFCSUFBb0Fqd0VmeUFBS0FKTUtBSVlJUU5CQUNFQ0EwQWdCU0FDUVRSc2FpSUVJQU1nQUNnQ1FDQUNRUUowYWlnQ0FFRTBiQ0lHYWlJRC9RQUNBUDBMQWdBZ0JDQURLQUl3TmdJd0lBUWdBLzBBQWlEOUN3SWdJQVFnQS8wQUFoRDlDd0lRSUFRZ0FDZ0NUQ2dDR0NJRElBWnFJZ1lvQWlRMkFpUWdCQ0FHS0FJc05nSXNJQVpCQURZQ0xDQUNRUUZxSWdJZ0FDZ0NQQ0lHU1EwQUN5QUJLQUlRQlNBRUN3Ui9JQUFvQWt3b0FoZ2hBa0VBSVFNRFFDQUNJQU5CTkd3aUJHb29BaXdRQ1NBQUtBSk1LQUlZSWdJZ0JHcEJBRFlDTENBRFFRRnFJZ01nQVNnQ0VFa05BQXNnQUNnQ1BBVWdCZ3MyQWhBZ0FTZ0NHQkFKSUFFZ0JUWUNHRUVCRHdzZ0FTZ0NHQ0VFSUFBb0Frd29BaGdoQTBFQUlRSURRQ0FFSUFKQk5Hd2lCV29pQkNBRElBVnFLQUlrTmdJa0lBUW9BaXdRQ1NBQktBSVlJZ1FnQldvZ0FDZ0NUQ2dDR0NJRElBVnFJZ1VvQWl3MkFpd2dCVUVBTmdJc0lBSkJBV29pQWlBQktBSVFTUTBBQzBFQkR3c2dBQ2dDU0JBWUlBQkJBRFlDU0VFQUM4NEVBUWgvQWtBZ0FrVU5BQUpBSUFBb0FxQUJJZ1ZGRFFBZ0FDZ0NTQ0lFUlEwQUlBUW9BaEJGRFFBZ0JDZ0NHQ2dDS0NBRlJ3MEFJQUlvQWhBaUNFVU5BQ0FDS0FJWUlnWW9BaWdOQUNBR0tBSXNEUUJCQUNFRUlBaEJDRThFUUNBSVFYaHhJUWtEUUNBR0lBUkJOR3hxSUFVMkFpZ2dCaUFFUVFGeVFUUnNhaUFGTmdJb0lBWWdCRUVDY2tFMGJHb2dCVFlDS0NBR0lBUkJBM0pCTkd4cUlBVTJBaWdnQmlBRVFRUnlRVFJzYWlBRk5nSW9JQVlnQkVFRmNrRTBiR29nQlRZQ0tDQUdJQVJCQm5KQk5HeHFJQVUyQWlnZ0JpQUVRUWR5UVRSc2FpQUZOZ0lvSUFSQkNHb2hCQ0FLUVFocUlnb2dDVWNOQUFzTElBaEJCM0VpQ0FSQUEwQWdCaUFFUVRSc2FpQUZOZ0lvSUFSQkFXb2hCQ0FMUVFGcUlnc2dDRWNOQUFzTElBSWdBeEF3RFFCQkFBOExJQUFvQWt3aUJVVUVRQ0FBUVFGQkpCQU1JZ1UyQWt3Z0JVVU5BUXNnQWlBRkVEZ2dBQ2dDd0FGQkZpQURFQjVGRFFBZ0FDZ0N3QUVpQmlnQ0FDRUVJQVlvQWdnaEJRSkFJQVFFUUVFQklRY2dCRUVCY1NFSUlBUkJBVVlFZjBFQUJTQUVRWDV4SVFsQkFDRUVBMEFDZjBFQUlBZEZEUUFhUVFBZ0FDQUJJQU1nQlNnQ0FCRUFBRVVOQUJvZ0FDQUJJQU1nQlNnQ0JCRUFBRUVBUndzaEJ5QUZRUWhxSVFVZ0JFRUNhaUlFSUFsSERRQUxJQWRCQVhNTElRUUNRQUpBSUFnRVFDQUVEUUVnQUNBQklBTWdCU2dDQUJFQUFFRUFSeUVIQ3lBR1FRQTJBZ0FnQjBFQmNVVU5BUXdEQ3lBR1FRQTJBZ0FMSUFBb0FrZ1FHQ0FBUVFBMkFraEJBQThMSUFaQkFEWUNBQXNnQUNBQ0VFQWhCd3NnQnd2NEJBRUdmd0pBUVFGQk1CQU1JZ0lFZnlBQ0lBQW9Bc2dCSWdIOUFBTUEvUXNEQUNBQ0lBRXBBeEEzQXhBZ0FpQUJLQUlZSWdFMkFoZ2dBaUFCUVJoc0VBMGlBVFlDSENBQlJRUkFJQUlRQ1VFQUR3c0NRQ0FBS0FMSUFTZ0NIQ0lEQkVBZ0FTQURJQUlvQWhoQkdHd1FDeG9NQVFzZ0FSQUpJQUpCQURZQ0hBc2dBaUFBS0FMSUFTZ0NKQ0lCTmdJa0lBSWdBVUVvRUF3aUFUWUNLQ0FCUlFSQUlBSW9BaHdRQ1NBQ0VBbEJBQThMQWtBZ0FDZ0N5QUVvQWlnRVFDQUNLQUlrUlEwQkEwQWdBU0FGUVNoc0lnTnFJQUFvQXNnQktBSW9JQU5xS0FJVUlnRTJBaFFnQVVFWWJCQU5JUUVnQWlnQ0tDSUVJQU5xSWdZZ0FUWUNHQ0FCUlFSQUlBVUVmMEVBSVFFRFFDQUNLQUlvSUFGQktHeHFLQUlZRUFrZ0FVRUJhaUlCSUFWSERRQUxJQUlvQWlnRklBUUxFQWtNQlFzQ1FDQUFLQUxJQVNnQ0tDQURhaWdDR0NJRUJFQWdBU0FFSUFZb0FoUkJHR3dRQ3hvZ0FpZ0NLQ0VCREFFTElBRVFDU0FDS0FJb0lnRWdBMnBCQURZQ0dBc2dBU0FEYWlBQUtBTElBU2dDS0NBRGFpZ0NCQ0lCTmdJRUlBRkJHR3dRRFNFQklBSW9BaWdpQkNBRGFpSUdJQUUyQWhBZ0FVVUVRQ0FGQkg5QkFDRUJBMEFnQVVFb2JDSUFJQUlvQWlocUtBSVlFQWtnQWlnQ0tDQUFhaWdDRUJBSklBRkJBV29pQVNBRlJ3MEFDeUFDS0FJb0JTQUVDeEFKREFVTEFrQWdBQ2dDeUFFb0FpZ2dBMm9vQWhBaUJBUkFJQUVnQkNBR0tBSUVRUmhzRUFzYUlBSW9BaWdoQVF3QkN5QUJFQWtnQWlnQ0tDSUJJQU5xUVFBMkFoQUxJQUVnQTJwQ0FEY0NJQ0FGUVFGcUlnVWdBaWdDSkVrTkFBc01BUXNnQVJBSklBSkJBRFlDS0FzZ0FnVkJBQXNQQ3lBQ0tBSWNFQWtnQWhBSlFRQUxvQVlDRG44QmV5TUFRUkJySWdna0FDQUFLQUpJS0FJUUlRMGdDRUVCUVRnUURDSUJOZ0lNQWtBZ0FVVU5BQ0FCSUFBb0FrZ29BaEFpQ1RZQ0dDQUJJQUQ5QUFKVS9Rc0NBQ0FCSUFBb0FtZzJBaEFnQUNnQ2JDRUNJQUZCQURZQ05DQUJJQUkyQWhRZ0FTQUFLQUlNSWd3b0FnQTJBaUFnQVNBTUtBSUVOZ0lrSUFFZ0RDZ0NDRFlDS0NBQklBd29BaEEyQWl3Z0FTQUpRYmdJRUF3aUFEWUNNQ0FBQkVBZ0RRUkFBMEFnRGtHNENHd2lBQ0FCS0FJd2FpSUZJQXdvQXRBcklBQnFJZ1Q5QUFJQUlnLzlDd0lFSUFVZ0JDZ0NFRFlDRkNBRklBUW9BaFEyQWhnZ0QvMGJBU0lBUVNCTkJFQWdCVUcwQjJvZ0JFR3dCMm9nQUJBTEdpQUZRYkFHYWlBRVFhd0dhaUFFS0FJRUVBc2FDeUFGSUFRb0FoZ2lBRFlDSENBRklBUW9BcVFHTmdLb0JrRUJJUVlDUUNBQVFRRkhCRUFnQkNnQ0JFRURiQ0lBUVFOclFkOEFTdzBCSUFCQkFtc2hCZ3NnQlVHa0Eyb2hDU0FGUVNCcUlRb2dCRUVjYWlFTFFRQWhBQUpBSUFaQkNFa05BQ0FFSUFaQkEzUnFRUnhxSUFwTEJFQWdDeUFGSUFaQkFuUnFRYVFEYWtrTkFRc2dCa0Y4Y1NFQVFRQWhBZ05BSUFvZ0FrRUNkQ0lEYWlBTElBSkJBM1JxSWdkQkhHb2dCMEVVYWlBSFFReHFJQWY5Q1FJRS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQURJQWxxSUFkQkdHb2dCMEVRYWlBSFFRaHFJQWY5Q1FJQS9WWUNBQUg5VmdJQUF2MVdBZ0FEL1FzQ0FDQUNRUVJxSWdJZ0FFY05BQXNnQUNBR1JnMEJDeUFBUVFGeUlRTWdCa0VCY1FSQUlBb2dBRUVDZENJQ2FpQUxJQUJCQTNScUlnQW9BZ1EyQWdBZ0FpQUphaUFBS0FJQU5nSUFJQU1oQUFzZ0F5QUdSZzBBQTBBZ0NpQUFRUUowSWdKcUlBc2dBRUVEZEdvaUF5Z0NCRFlDQUNBQ0lBbHFJQU1vQWdBMkFnQWdDaUFBUVFGcUlnTkJBblFpQW1vZ0N5QURRUU4wYWlJREtBSUVOZ0lBSUFJZ0NXb2dBeWdDQURZQ0FDQUFRUUpxSWdBZ0JrY05BQXNMSUFVZ0JDZ0NxQVkyQXF3R0lBNUJBV29pRGlBTlJ3MEFDd3NnQVNFRERBRUxJQWhCREdvRVFDQUlLQUlNSWdFb0FqQWlBQVIvSUFBUUNTQUlLQUlNQlNBQkN4QUpJQWhCQURZQ0RBc0xJQWhCRUdva0FDQURDL2tFQVFoL0l3QkJnQUpySWdNa0FDQUFCRUJCL0F4QkVTQUNFQlVnQXlBQUtBSUFOZ0x3QVNBQ1Fab1JJQU5COEFGcUVBOGdBeUFBS0FJRU5nTGdBU0FDUWFjUklBTkI0QUZxRUE4Z0F5QUFLQUlJTmdMUUFTQUNRWUkzSUFOQjBBRnFFQThnQXlBQUtBSVFOZ0xBQVNBQ1FmMFFJQU5Cd0FGcUVBOGdBVUVBU2dSQUEwQWdBQ2dDMENzaEJDQURJQWMyQXJBQklBSkJvZzBnQTBHd0FXb1FEeUFESUFRZ0IwRzRDR3hxSWdRb0FnQTJBcUFCSUFKQm1SRWdBMEdnQVdvUUR5QURJQVFvQWdRMkFwQUJJQUpCOURjZ0EwR1FBV29RRHlBRElBUW9BZ2cyQW9BQklBSkJvRFlnQTBHQUFXb1FEeUFESUFRb0FndzJBbkFnQWtHd05pQURRZkFBYWhBUElBTWdCQ2dDRURZQ1lDQUNRWWdSSUFOQjRBQnFFQThnQXlBRUtBSVVOZ0pRSUFKQnRqZ2dBMEhRQUdvUUQwSFZDMEVYSUFJUUZTQUVLQUlFQkVBZ0JFR3dCMm9oQmlBRVFhd0dhaUVJUVFBaEJRTkFJQWdnQlVFQ2RDSUphaWdDQUNFS0lBTWdCaUFKYWlnQ0FEWUNSQ0FESUFvMkFrQWdBa0dMRENBRFFVQnJFQThnQlVFQmFpSUZJQVFvQWdSSkRRQUxDeUFDRUdjZ0F5QUVLQUlZTmdJd0lBSkJ3RFlnQTBFd2FoQVBJQU1nQkNnQ3BBWTJBaUFnQWtIeE5pQURRU0JxRUE5QkFTRUdRZTBMUVJRZ0FoQVZBa0FnQkNnQ0dFRUJSd1JBSUFRb0FnUWlCVUVBVEEwQklBVkJBMnhCQW1zaEJnc2dCRUVjYWlFSVFRQWhCUU5BSUFNZ0NDQUZRUU4wYWlrQ0FFSWdpVGNERUNBQ1FZc01JQU5CRUdvUUR5QUZRUUZxSWdVZ0JrY05BQXNMSUFJUVp5QURJQVFvQXFnR05nSUFJQUpCNERZZ0F4QVBRWmtNUVFVZ0FoQVZJQWRCQVdvaUJ5QUJSdzBBQ3d0Qm1neEJCQ0FDRUJVTElBTkJnQUpxSkFBTDVnb0RDWDhCZXdGK0l3QkJzQUZySWdVa0FBSkFJQUZCZ0FOeEJFQkJuaTFCQ3lBQ0VCVU1BUXNDUUNBQlFRRnhSUTBBSUFBb0FrZ2lCa1VOQUNNQVFkQUFheUlESkFCQjdneEJEU0FDRUJVZ0EwRUFPZ0JQSUFOQkNUb0FUaUFESUFZcEFnQTNBa1FnQXlBRFFjNEFhaUlFTmdKQUlBSkJoamtnQTBGQWF4QVBJQU1nQmlrQ0NEY0NOQ0FESUFRMkFqQWdBa0gxT0NBRFFUQnFFQThnQXlBR0tBSVFOZ0lrSUFNZ0JEWUNJQ0FDUVpNM0lBTkJJR29RRHdKQUlBWW9BaGhGRFFBZ0JpZ0NFRVVOQUFOQUlBTWdBMEhPQUdvaUNqWUNFQ0FESUFjMkFoUWdBa0dPRFNBRFFSQnFFQThnQmlnQ0dDQUhRVFJzYWlFSUl3QkJNR3NpQkNRQUlBUkJDVHNBTGlBRVFRazZBQzBnQkNBSUtRSUFOd0lrSUFRZ0JFRXRhaUlKTmdJZ0lBSkJ6ellnQkVFZ2FoQVBJQVFnQ0NnQ0dEWUNGQ0FFSUFrMkFoQWdBa0hGT0NBRVFSQnFFQThnQkNBSUtBSWdOZ0lFSUFRZ0NUWUNBQ0FDUWFvNElBUVFEeUFFUVRCcUpBQWdBeUFLTmdJQUlBSkJsQXdnQXhBUElBZEJBV29pQnlBR0tBSVFTUTBBQ3d0Qm5BeEJBaUFDRUJVZ0EwSFFBR29rQUFzQ1FDQUJRUUp4UlEwQUlBQW9Ba2hGRFFCQitRMUJKQ0FDRUJVZ0JTQUFLUUpVTndPZ0FTQUNRZWNSSUFWQm9BRnFFQThnQlNBQUtRSmNOd09RQVNBQ1FjVVJJQVZCa0FGcUVBOGdCU0FBS1FOb053T0FBU0FDUWRjUklBVkJnQUZxRUE4Z0FDZ0NEQ0FBS0FKSUtBSVFJQUlRUkVHY0RFRUNJQUlRRlFzQ1FDQUJRUWh4UlEwQUlBQW9Ba2hGRFFBZ0FDZ0NhQ0FBS0FKc2JDSUVSUTBBSUFBb0Fwd0JJUU1EUUNBRElBQW9Ba2dvQWhBZ0FoQkVJQU5CakN4cUlRTWdDMEVCYWlJTElBUkhEUUFMQ3lBQlFSQnhSUTBBSUFBb0FzZ0JJUUZCMHcxQkpTQUNFQlVnQlNBQi9RQURBUDBMQkhBZ0FrSEpLeUFGUWZBQWFoQVBRY0VOUVJFZ0FoQVZBa0FnQVNnQ0hFVU5BQ0FCS0FJWVJRMEFRUUFoQXdOQUlBRW9BaHdnQTBFWWJHb2lBQzhCQUNFRUlBQXBBd2doRFNBRklBQW9BaEEyQW1BZ0JTQU5Od05ZSUFVZ0JEWUNVQ0FDUVlzNElBVkIwQUJxRUE4Z0EwRUJhaUlESUFFb0FoaEpEUUFMQzBHYURFRUVJQUlRRlFKQUlBRW9BaWdpQkVVTkFDQUJLQUlrSWdkRkRRQkJBQ0VEUVFBaEFBSkFJQWRCQkU4RVFDQUhRWHh4SVFBRFFDQUVJQU5CQTNKQktHeHFRUVJxSUFRZ0EwRUNja0VvYkdwQkJHb2dCQ0FEUVFGeVFTaHNha0VFYWlBRUlBTkJLR3hxL1FrQ0JQMVdBZ0FCL1ZZQ0FBTDlWZ0lBQXlBTS9hNEJJUXdnQTBFRWFpSURJQUJIRFFBTElBd2dEQ0FNL1EwSUNRb0xEQTBPRHdBQkFnTUFBUUlEL2E0Qklnd2dEQ0FNL1EwRUJRWUhBQUVDQXdBQkFnTUFBUUlEL2E0Qi9Sc0FJUU1nQUNBSFJnMEJDd05BSUFRZ0FFRW9iR29vQWdRZ0Eyb2hBeUFBUVFGcUlnQWdCMGNOQUFzTElBTkZEUUJCc0ExQkVDQUNFQlVnQVNnQ0pBUkFJQUVvQWlnaEFFRUFJUWNEUUNBRklBQWdCMEVvYkNJRWFpZ0NCQ0lHTmdKRUlBVWdCellDUUNBQ1FkRTRJQVZCUUdzUUR5QUJLQUlvSVFBQ1FDQUdSUTBBUVFBaEF5QUFJQVJxS0FJUVJRMEFBMEFnQVNnQ0tDQUVhaWdDRUNBRFFSaHNhaUlBL1FBREFDRU1JQVVnQUNrREVEY0RPQ0FGSUF6OUN3TW9JQVVnQXpZQ0lDQUNRWURSQUNBRlFTQnFFQThnQTBFQmFpSURJQVpIRFFBTElBRW9BaWdoQUFzQ1FDQUFJQVJxSWdZb0FoaEZEUUJCQUNFRElBWW9BaFJGRFFBRFFDQUFJQVJxS0FJWUlBTkJHR3hxSWdBdkFRQWhCaUFBS1FNSUlRMGdCU0FBS0FJUU5nSVFJQVVnRFRjRENDQUZJQVkyQWdBZ0FrR0xPQ0FGRUE4Z0EwRUJhaUlESUFFb0FpZ2lBQ0FFYWlnQ0ZFa05BQXNMSUFkQkFXb2lCeUFCS0FJa1NRMEFDd3RCbWd4QkJDQUNFQlVMUVp3TVFRSWdBaEFWQ3lBRlFiQUJhaVFBQzQ4Q0FRTi9Ba0JCQVVIb0FSQU1JZ0VFZnlBQlFRRTJBZ0FnQVVFQk5nSzRBU0FCSUFFdEFMd0JRUVp5T2dDOEFTQUJRUUZCakN3UURDSUFOZ0lNSUFCRkRRRWdBVUVCUWVnSEVBd2lBRFlDRUNBQVJRMEJJQUZDQURjRE1DQUJRWDgyQWl3Z0FVSG9CellDRkFKQVFRRkJNQkFNSWdBRVFDQUFRUUEyQWhnZ0FFSGtBRFlDSUNBQVFlUUFRUmdRRENJQ05nSWNJQUlOQVNBQUVBa0xJQUZCQURZQ3lBRU1BZ3NnQUVFQU5nSW9JQUVnQURZQ3lBRWdBUkF1SWdBMkFzUUJJQUJGRFFFZ0FSQXVJZ0EyQXNBQklBQkZEUUVDUUJDS0FVVU5BQXNnQVVFQUVGNGlBRFlDMUFFZ0FFVUVRQ0FCUVFBUVhpSUFOZ0xVQVNBQVJRMENDeUFCQlVFQUN3OExJQUVRTVVFQUM0MEpBZ2wvQVg0akFFSFFBV3NpQnlRQUlBQW9Ba2doQ1FKQUFrQUNRQ0FBS0FKb1FRRkhEUUFnQUNnQ2JFRUJSdzBBSUFBb0Fwd0JLQUxjS3cwQkN5QUFLQUlJUVFoR0RRQWdCa0VCUWJ6T0FFRUFFQWdNQVFzQ1FDQUJLQUlRSWd4RkRRQWdBQ2dDb0FFaENpQUJLQUlZSVFzZ0RFRUlUd1JBSUF4QmVIRWhEd05BSUFzZ0NFRTBiR29nQ2pZQ0tDQUxJQWhCQVhKQk5HeHFJQW8yQWlnZ0N5QUlRUUp5UVRSc2FpQUtOZ0lvSUFzZ0NFRURja0UwYkdvZ0NqWUNLQ0FMSUFoQkJISkJOR3hxSUFvMkFpZ2dDeUFJUVFWeVFUUnNhaUFLTmdJb0lBc2dDRUVHY2tFMGJHb2dDallDS0NBTElBaEJCM0pCTkd4cUlBbzJBaWdnQ0VFSWFpRUlJQTVCQ0dvaURpQVBSdzBBQ3dzZ0RFRUhjU0lNUlEwQUEwQWdDeUFJUVRSc2FpQUtOZ0lvSUFoQkFXb2hDQ0FOUVFGcUlnMGdERWNOQUFzTElBSWdBM0lnQkhJZ0JYSkZCRUFnQmtFRVFhOHdRUUFRQ0NBQVFnQTNBaHdnQUNBQUtRSm9Od0lrSUFFZ0NmMEFBZ0Q5Q3dJQUlBRWdCaEF3SVFnTUFRc2dBa0VBU0FSQUlBY2dBallDQUNBR1FRRkIxOTBBSUFjUUNFRUFJUWdNQVFzZ0FpQUpLQUlJSWdoTEJFQWdCeUFJTmdJVUlBY2dBallDRUNBR1FRRkJxK0VBSUFkQkVHb1FDRUVBSVFnTUFRc0NRQ0FDSUFrb0FnQWlDRWtFUUNBSElBZzJBc1FCSUFjZ0FqWUN3QUVnQmtFQ1FZdmtBQ0FIUWNBQmFoQUlJQUJCQURZQ0hDQUpLQUlBSVFJTUFRc2dBQ0FDSUFBb0FsUnJJQUFvQWx4dU5nSWNDeUFCSUFJMkFnQWdBMEVBU0FSQUlBY2dBellDSUNBR1FRRkJsOTBBSUFkQklHb1FDRUVBSVFnTUFRc2dBeUFKS0FJTUlnSkxCRUFnQnlBQ05nSTBJQWNnQXpZQ01DQUdRUUZCL3Q4QUlBZEJNR29RQ0VFQUlRZ01BUXNDUUNBRElBa29BZ1FpQWtrRVFDQUhJQUkyQXJRQklBY2dBellDc0FFZ0JrRUNRZHppQUNBSFFiQUJhaEFJSUFCQkFEWUNJQ0FKS0FJRUlRTU1BUXNnQUNBRElBQW9BbGhySUFBb0FtQnVOZ0lnQ3lBQklBTTJBZ1JCQUNFSUlBUkJBRXdFUUNBSElBUTJBa0FnQmtFQlFkWGNBQ0FIUVVCckVBZ01BUXNnQkNBSktBSUFJZ0pKQkVBZ0J5QUNOZ0pVSUFjZ0JEWUNVQ0FHUVFGQnN1TUFJQWRCMEFCcUVBZ01BUXNDUUNBRUlBa29BZ2dpQWtzRVFDQUhJQUkyQXFRQklBY2dCRFlDb0FFZ0JrRUNRZFBnQUNBSFFhQUJhaEFJSUFBZ0FDZ0NhRFlDSkNBSktBSUlJUVFNQVFzZ0FDQUFOUUpjSWhBZ0JDQUFLQUpVYTYxOFFnRjlJQkNBUGdJa0N5QUJJQVEyQWdnZ0JVRUFUQVJBSUFjZ0JUWUNZQ0FHUVFGQmt0d0FJQWRCNEFCcUVBZ01BUXNnQlNBSktBSUVJZ0pKQkVBZ0J5QUNOZ0owSUFjZ0JUWUNjQ0FHUVFGQmd1SUFJQWRCOEFCcUVBZ01BUXNDUUNBRklBa29BZ3dpQWtzRVFDQUhJQUkyQXBRQklBY2dCVFlDa0FFZ0JrRUNRYVhmQUNBSFFaQUJhaEFJSUFBZ0FDZ0NiRFlDS0NBSktBSU1JUVVNQVFzZ0FDQUFOUUpnSWhBZ0JTQUFLQUpZYTYxOFFnRjlJQkNBUGdJb0N5QUJJQVUyQWd3Z0FDQUFMUUJFUVFKeU9nQkVJQUVnQmhBd0lnaEZCRUJCQUNFSURBRUxJQWNnQWYwQUFnRDlDd1NBQVNBR1FRUkJ0RGtnQjBHQUFXb1FDQXNnQjBIUUFXb2tBQ0FJQzVVQ0FRZC9Jd0JCSUdzaUJTUUFBbjhnQUNnQ1NDSUVSUVJBSUFOQkFVSFY1Z0JCQUJBSVFRQU1BUXRCQUVFRUlBUW9BaEFRRENJRVJRMEFHaUFCQkVBZ0FDZ0NTQ0VJQTBBQ1FBSkFJQUlnQmtFQ2RHb29BZ0FpQnlBSUtBSVFUd1JBSUFVZ0J6WUNFQ0FEUVFGQitSRWdCVUVRYWhBSURBRUxJQVFnQjBFQ2RHb2lDU2dDQUVVTkFTQUZJQWMyQWdBZ0EwRUJRWTBhSUFVUUNBc2dCQkFKUVFBTUF3c2dDVUVCTmdJQUlBWkJBV29pQmlBQlJ3MEFDd3NnQkJBSklBQW9Ba0FRQ1FKQUlBRUVRQ0FBSUFGQkFuUWlCQkFOSWdNMkFrQWdBMFVFUUNBQVFRQTJBanhCQUF3REN5QURJQUlnQkJBTEdnd0JDeUFBUVFBMkFrQUxJQUFnQVRZQ1BFRUJDeUVLSUFWQklHb2tBQ0FLQzd3RkFRZC9JQUZCQVVFa0VBd2lCRFlDU0FKQUFrQWdCRVVOQUFKQUlBRW9Bc1FCUVJJZ0F4QWVCRUFnQVNnQ3hBRkJFeUFERUI0TkFRc01BZ3NnQVNnQ3hBRWlCeWdDQUNFR0lBY29BZ2doQkFKQUlBWUVRRUVCSVFVZ0JrRUJSd1JBSUFaQmZuRWhDUU5BQW45QkFDQUZSUTBBR2tFQUlBRWdBQ0FESUFRb0FnQVJBQUJGRFFBYUlBRWdBQ0FESUFRb0FnUVJBQUJCQUVjTElRVWdCRUVJYWlFRUlBaEJBbW9pQ0NBSlJ3MEFDd3NDUUFKQUlBWkJBWEVFUUNBRlJRMEJJQUVnQUNBRElBUW9BZ0FSQUFCQkFFY2hCUXNnQjBFQU5nSUFJQVZGRFFFTUF3c2dCMEVBTmdJQUN3d0RDeUFIUVFBMkFnQUxBa0FnQVNnQ3dBRkJGQ0FERUI0RVFDQUJLQUxBQVVFVklBTVFIZzBCQ3d3Q0N5QUJLQUxBQVNJSEtBSUFJUVlnQnlnQ0NDRUVBa0FnQmdSQVFRRWhCU0FHUVFGeElRa2dCa0VCUmdSL1FRQUZJQVpCZm5FaEJrRUFJUWdEUUFKL1FRQWdCVVVOQUJwQkFDQUJJQUFnQXlBRUtBSUFFUUFBUlEwQUdpQUJJQUFnQXlBRUtBSUVFUUFBUVFCSEN5RUZJQVJCQ0dvaEJDQUlRUUpxSWdnZ0JrY05BQXNnQlVVTElRWUNRQUpBSUFrRVFDQUdEUUVnQVNBQUlBTWdCQ2dDQUJFQUFFRUFSeUVGQ3lBSFFRQTJBZ0FnQlVVTkFRd0RDeUFIUVFBMkFnQUxEQU1MSUFkQkFEWUNBQXNnQWtFQlFTUVFEQ0lBTmdJQUlBQkZEUUFnQVNnQ1NDQUFFRGdnQVNnQ3lBRWdBU2dDYkNBQktBSm9iQ0lBTmdJa0lBQkJLQkFNSVFNZ0FTZ0N5QUVpQUNBRE5nSW9Ba0FnQTBVTkFDQUFLQUlrUlFSQVFRRVBDMEVBSVFRRFFDQURJQVJCS0d3aUJXb2lBRUVBTmdJVUlBQkI1QUEyQWh4QjVBQkJHQkFNSVFBZ0JTQUJLQUxJQVNJSEtBSW9JZ05xSUFBMkFoZ2dBRVVOQVVFQklRb2dCRUVCYWlJRUlBY29BaVJKRFFBTERBRUxJQUlvQWdBUUdFRUFJUW9nQWtFQU5nSUFDeUFLRHdzZ0FTZ0NTQkFZSUFGQkFEWUNTRUVBQ3dJQUN3UUFRUUVMTkFBQ1FDQUFSUTBBSUFGRkRRQWdBQ0FCS0FJRU5nS2tBU0FBSUFFb0FnQTJBcUFCSUFBZ0FTZ0N1RUJCQW5FMkF1QUJDd3UwQlFFSWZ5QUFLQUlZSWdRb0FoQWlDVVVFUUVFQUR3c2dCQ2dDR0NFRklBQW9BaFFvQWdBb0FoUWhCQUpBQWtBZ0FVVUVRRUVBSVFFRFFDQUZLQUlZSVFJZ0JDZ0NIQ0FFS0FJWVFaZ0JiR29pQUVHTUFXc29BZ0FpQnlBQVFaUUJheWdDQUNJSWF5RURJQUJCa0FGcktBSUFJQUJCbUFGcktBSUFheUVBQWtBZ0J5QUlSZzBBSUFDdElBT3Rma0lnaUZBTkFBd0VDeUFBSUFOc0lRTUNRRUVFSUFKQkEzWWdBa0VIY1VFQVIyb2lBQ0FBUVFOR0d5SUNSUTBBSUFLdElBT3Rma0lnaUZBTkFBd0VDMEYvSVFBZ0FpQURiQ0lDSUFGQmYzTkxEUUlnQkVITUFHb2hCQ0FGUVRScUlRVWdBU0FDYWlJQklRQWdCa0VCYWlJR0lBbEhEUUFMREFFTFFRQWhBU0FBS0FKQVJRUkFBMEFnQlNnQ0dDRUNJQVFvQWh3Z0JDZ0NHRUdZQVd4cUlnQkJCR3NvQWdBaUJ5QUFRUXhyS0FJQUlnaHJJUU1nQUVFSWF5Z0NBQ0FBUVJCcktBSUFheUVBQWtBZ0J5QUlSZzBBSUFDdElBT3Rma0lnaUZBTkFBd0VDeUFBSUFOc0lRTUNRRUVFSUFKQkEzWWdBa0VIY1VFQVIyb2lBQ0FBUVFOR0d5SUNSUTBBSUFLdElBT3Rma0lnaUZBTkFBd0VDMEYvSVFBZ0FpQURiQ0lDSUFGQmYzTkxEUUlnQkVITUFHb2hCQ0FGUVRScUlRVWdBU0FDYWlJQklRQWdCa0VCYWlJR0lBbEhEUUFMREFFTEEwQWdCU2dDR0NFQ0lBUW9BaHdnQkNnQ0dFR1lBV3hxSWdCQmpBRnJLQUlBSWdjZ0FFR1VBV3NvQWdBaUNHc2hBeUFBUVpBQmF5Z0NBQ0FBUVpnQmF5Z0NBR3NoQUFKQUlBY2dDRVlOQUNBQXJTQURyWDVDSUloUURRQU1Bd3NnQUNBRGJDRURBa0JCQkNBQ1FRTjJJQUpCQjNGQkFFZHFJZ0FnQUVFRFJoc2lBa1VOQUNBQ3JTQURyWDVDSUloUURRQU1Bd3RCZnlFQUlBSWdBMndpQWlBQlFYOXpTdzBCSUFSQnpBQnFJUVFnQlVFMGFpRUZJQUVnQW1vaUFTRUFJQVpCQVdvaUJpQUpSdzBBQ3dzZ0FBOExRWDhMMmdRQkMzOGdBQVJBSUFBb0FoUWlBUVJBSUFFb0FnQWlCUVJBSUFVb0FoUWhBeUFGS0FJUUJIOUJFRUVSSUFBdEFDaEJBWEViSVFnRFFDQURLQUljSWdJRVFDQURLQUlnSWdGQm1BRnVJUXBCQUNFSklBRkJtQUZQQkg4RFFDQUNLQUl3SWdFRVFDQUNLQUkwSWdaQktHNGhCMEVBSVFRZ0JrRW9Ud1IvQTBBZ0FTZ0NJQkFpSUFGQkFEWUNJQ0FCS0FJa0VDSWdBVUVBTmdJa0lBRWdDQkVDQUNBQlFTaHFJUUVnQkVFQmFpSUVJQWRIRFFBTElBSW9BakFGSUFFTEVBa2dBa0VBTmdJd0N5QUNLQUpVSWdFRVFDQUNLQUpZSWdaQktHNGhCMEVBSVFRZ0JrRW9Ud1IvQTBBZ0FTZ0NJQkFpSUFGQkFEWUNJQ0FCS0FJa0VDSWdBVUVBTmdJa0lBRWdDQkVDQUNBQlFTaHFJUUVnQkVFQmFpSUVJQWRIRFFBTElBSW9BbFFGSUFFTEVBa2dBa0VBTmdKVUN5QUNLQUo0SWdFRVFDQUNLQUo4SWdaQktHNGhCMEVBSVFRZ0JrRW9Ud1IvQTBBZ0FTZ0NJQkFpSUFGQkFEWUNJQ0FCS0FJa0VDSWdBVUVBTmdJa0lBRWdDQkVDQUNBQlFTaHFJUUVnQkVFQmFpSUVJQWRIRFFBTElBSW9BbmdGSUFFTEVBa2dBa0VBTmdKNEN5QUNRWmdCYWlFQ0lBbEJBV29pQ1NBS1J3MEFDeUFES0FJY0JTQUNDeEFKSUFOQkFEWUNIQXNDUUNBREtBSW9SUTBBSUFNb0FpUWlBVVVOQUNBQkVBa2dBLzBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQWlRTElBTW9BalFRQ1NBRFFjd0FhaUVESUF0QkFXb2lDeUFGS0FJUVNRMEFDeUFGS0FJVUJTQURDeEFKSUFWQkFEWUNGQ0FBS0FJVUtBSUFFQWtnQUNnQ0ZDSUJRUUEyQWdBTElBRVFDU0FBUVFBMkFoUUxJQUFvQWtRUUNTQUFFQWtMQzhzVEFSVi9Jd0JCSUdzaUR5UUFJQThnQlRZQ0dDQUJJQU1vQWh4QnpBQnNhaWdDSENBREtBSWdRWmdCYkdvaEVRSkFBa0FnQXlnQ0tBMEFJQkVvQWhoRkRRQWdFVUVjYWlFSkEwQUNRQ0FKS0FJSUlBa29BZ0JIQkg4Z0NTZ0NEQ0FKS0FJRVJnVkJBUXNOQUNBREtBSWtJZ0VnQ1NnQ0dFRW9iazhFUUNBSVFRRkJnaFZCQUJBSURBUUxJQWtvQWhRZ0FVRW9iR29pQVNnQ0lCQmJJQUVvQWlRUVd5QUJLQUlVSUFFb0FoQnNJZzFGRFFBZ0FTZ0NHQ0VCSUExQkNFOEVRQ0FOUVhoeElRdEJBQ0VLQTBBZ0FVSUFOd0xvQXlBQlFnQTNBcWdESUFGQ0FEY0M2QUlnQVVJQU53S29BaUFCUWdBM0F1Z0JJQUZDQURjQ3FBRWdBVUlBTndKb0lBRkNBRGNDS0NBQlFZQUVhaUVCSUFwQkNHb2lDaUFMUncwQUN3dEJBQ0VLSUExQkIzRWlEVVVOQUFOQUlBRkNBRGNDS0NBQlFVQnJJUUVnQ2tFQmFpSUtJQTFIRFFBTEN5QUpRU1JxSVFrZ0RFRUJhaUlNSUJFb0FoaEpEUUFMQ3lBRklRMENRQ0FDTFFBQVFRSnhSUTBBSUFkQkJVMEVRQ0FJUVFKQnNSOUJBQkFJREFFTEFrQWdCUzBBQUVIL0FVWUVRQ0FGTFFBQlFaRUJSZzBCQ3lBSVFRSkIyeDlCQUJBSURBRUxJQThnQlVFR2FpSU5OZ0lZQzBFVUVBMGlDMFVOQUFKL0lBQXRBR3hCQVhFRVFDQUFRU2hxSVFjZ0FDZ0NLQ0VOSUFCQkxHb01BUXNnQWkwQWlDeEJBbkVFUUNBQ1FiQW9haUVISUFJb0FyQW9JUTBnQWtHOEtHb01BUXNnRHlBRklBZHFJQTFyTmdJY0lBOUJHR29oQnlBUFFSeHFDeUlTS0FJQUlRQWdDMElBTndJTUlBc2dEVFlDQ0NBTElBMDJBZ0FnQ3lBQUlBMXFOZ0lFSUF0QkFSQVpSUVJBSUFzUVhSb2dDeWdDQ0NBTEtBSUFheUVhSUFzUUpTQWFJQTFxSVFFQ1FDQUNMUUFBUVFSeFJRMEFJQWNvQWdBZ0VpZ0NBQ0FCYTJwQkFVMEVRQ0FJUVFKQm1DRkJBQkFJREFFTEFrQWdBUzBBQUVIL0FVWUVRQ0FCTFFBQlFaSUJSZzBCQ3lBSVFRSkJ3aUZCQUJBSURBRUxJQUZCQW1vaEFRc2dFaUFTS0FJQUlBY29BZ0FnQVd0cU5nSUFJQWNnQVRZQ0FDQUVRUUEyQWdBZ0JpQVBLQUlZSUFWck5nSUFRUUVoRnd3QkN5QVJLQUlZQkVBZ0VVRWNhaUVRQTBBZ0F5Z0NKQ0VBSUJBb0FoUWhBUUpBSUJBb0FnZ2dFQ2dDQUVjRWZ5QVFLQUlNSUJBb0FnUkdCVUVCQ3cwQUlBRWdBRUVvYkdvaUZDZ0NGQ0FVS0FJUWJDSVlSUTBBSUJRb0FoZ2hDVUVBSVJVRFFBSkFBbjhnQ1NnQ0tFVUVRQ0FMSUJRb0FpQWdGU0FES0FJb1FRRnFFRmtNQVFzZ0MwRUJFQmtMUlFSQUlBbEJBRFlDSkF3QkN5QUpLQUlvUlFSQVFRQWhBUU5BSUFFaUFFRUJhaUVCSUFzZ0ZDZ0NKQ0FWSUFBUVdVVU5BQXNnRUNnQ0hDRUJJQWxCQXpZQ0lDQUpJQUUyQWhnZ0NTQUJJQUJyUVFGcU5nSWNDeUFKQW45QkFTQUxRUUVRR1VVTkFCcEJBaUFMUVFFUUdVVU5BQm9nQzBFQ0VCa2lBRUVEUndSQUlBQkJBMm9NQVFzZ0MwRUZFQmtpQUVFZlJ3UkFJQUJCQm1vTUFRc2dDMEVIRUJsQkpXb0xOZ0lrUVFBaEFRTkFJQUVpQUVFQmFpRUJJQXRCQVJBWkRRQUxJQWtnQ1NnQ0lDQUFhallDSUFKQUFrQUNmeUFKS0FJb0lnQkZCRUFnQWlnQzBDc2dBeWdDSEVHNENHeHFLQUlRSVFBZ0NTZ0NNRVVFUUNBSktBSUFRZkFCRUJBaUFVVU5CQ0FKSUFFMkFnQWdBU0FKS0FJd1FSaHNha0VBUWZBQkVBNGFJQWxCQ2pZQ01Bc2dDU2dDQUNJQi9Rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQS9Rc0NBQ0FCUWdBM0FoQkJBVUVLUWUwQUlBQkJBWEViSUFCQkJIRWJJUXBCQUF3QkN5QUpLQUlBSWdFZ0FFRUJheUlNUVJoc2FpSUtLQUlFSUFvb0FneEhEUUVnQWlnQzBDc2dBeWdDSEVHNENHeHFLQUlRSVFvZ0NTZ0NNQ0lNSUFCQkFXcEpCSDhnQVNBTVFRcHFJZ3hCR0d3UUVDSUJSUTBESUFrZ0FUWUNBQ0FCSUFrb0FqQkJHR3hxUVFCQjhBRVFEaG9nQ1NBTU5nSXdJQWtvQWdBRklBRUxJQUJCR0d4cUlnSDlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBRDlDd0lBSUFGQ0FEY0NFQUovUVFFZ0NrRUVjUTBBR2tIdEFDQUtRUUZ4UlEwQUdrRUNRUUpCQVNBQlFReHJLQUlBSWdwQkNrWWJJQXBCQVVZYkN5RUtJQUFMSVF3Z0FTQUtOZ0lNQ3lBSktBSWtJUUFnQWlnQzBDc2dBeWdDSEVHNENHeHFMUUFRUWNBQWNRUkFBMEFnREVFWWJDSU9JQWtvQWdCcUlBQkJBU0FNR3lJVE5nSVFJQWtvQWlBaEZrRUFJUW9nQUNFQklCTkJBazhFUUFOQUlBcEJBV29oQ2lBQlFRTkxJUnNnQVVFQmRpRUJJQnNOQUFzTElBb2dGbW9pQVVFaFR3UkFJQThnQVRZQ0VDQUlRUUZCelBRQUlBOUJFR29RQ0F3REN5QUxJQUVRR1NFS0lBa29BZ0FpQVNBT2FpSU9JQW8yQWhRZ0FDQU9LQUlRYXlJQVFRQk1EUU1nQWlnQzBDc2dBeWdDSEVHNENHeHFLQUlRSVFvZ0NTZ0NNQ0lPSUF4QkFtcEpCRUFnQVNBT1FRcHFJZzVCR0d3UUVDSUJSUTBESUFrZ0FUWUNBQ0FCSUFrb0FqQkJHR3hxUVFCQjhBRVFEaG9nQ1NBT05nSXdJQWtvQWdBaEFRc2dBU0FNUVFGcUlneEJHR3hxSWdIOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3SUFJQUZDQURjQ0VDQUJBbjlCQVNBS1FRUnhEUUFhUWUwQUlBcEJBWEZGRFFBYVFRSkJBa0VCSUFGQkRHc29BZ0FpQVVFS1Joc2dBVUVCUmhzTE5nSU1EQUFMQUFzRFFDQU1RUmhzSWc0Z0NTZ0NBR29pQVNBQktBSU1JQUVvQWdScklnRWdBQ0FBSUFGS0d5SUJOZ0lRSUFrb0FpQWhFMEVBSVFvZ0FVRUNUd1JBQTBBZ0NrRUJhaUVLSUFGQkEwc2hIQ0FCUVFGMklRRWdIQTBBQ3dzZ0NpQVRhaUlCUVNGUEJFQWdEeUFCTmdJQUlBaEJBVUhNOUFBZ0R4QUlEQUlMSUFzZ0FSQVpJUW9nQ1NnQ0FDSUJJQTVxSWc0Z0NqWUNGQ0FBSUE0b0FoQnJJZ0JCQUV3TkFpQUNLQUxRS3lBREtBSWNRYmdJYkdvb0FoQWhDaUFKS0FJd0lnNGdERUVDYWtrRVFDQUJJQTVCQ21vaURrRVliQkFRSWdGRkRRSWdDU0FCTmdJQUlBRWdDU2dDTUVFWWJHcEJBRUh3QVJBT0dpQUpJQTQyQWpBZ0NTZ0NBQ0VCQ3lBQklBeEJBV29pREVFWWJHb2lBZjBNQUFBQUFBQUFBQUFBQUFBQUFBQUFBUDBMQWdBZ0FVSUFOd0lRSUFFQ2YwRUJJQXBCQkhFTkFCcEI3UUFnQ2tFQmNVVU5BQnBCQWtFQ1FRRWdBVUVNYXlnQ0FDSUJRUXBHR3lBQlFRRkdHd3MyQWd3TUFBc0FDeUFMRUNVTUJRc2dDVUZBYXlFSklCVkJBV29pRlNBWVJ3MEFDd3NnRUVFa2FpRVFJQmxCQVdvaUdTQVJLQUlZU1EwQUN3c2dDeEJkUlFSQUlBc1FKUXdCQ3lBTEtBSUlJQXNvQWdCcklSMGdDeEFsSUIwZ0RXb2hBUUpBSUFJdEFBQkJCSEZGRFFBZ0J5Z0NBQ0FTS0FJQUlBRnJha0VCVFFSQUlBaEJBa0dZSVVFQUVBZ01BUXNDUUNBQkxRQUFRZjhCUmdSQUlBRXRBQUZCa2dGR0RRRUxJQWhCQWtIQ0lVRUFFQWdNQVFzZ0FVRUNhaUVCQ3lBU0lCSW9BZ0FnQnlnQ0FDQUJhMm8yQWdBZ0J5QUJOZ0lBUVFFaEZ5QUVRUUUyQWdBZ0JpQVBLQUlZSUFWck5nSUFDeUFQUVNCcUpBQWdGd3VUSkFJVWZ3NStBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FDUUFKQUFrQUNRQ0FBS0FKVURnVUFBUUlEQkFvTEFrQWdBQ2dDTkNJR0lBQW9Bc1FCSWdGSkJFQWdBQ2dDUUNJSElBRkJBV3BKRFFFTElBQW9BdXdCUVFGQjlUNUJBQkFJREF3TElBQW9BaXhGQkVBZ0FDZ0NKQ0VDUVFBaEFRd0ZDeUFBUVFBMkFpd2dBQ2dDUkNFRFFRRWhBUXdFQ3dKQUlBQW9BalFpQmlBQUtBTEVBU0lCU1FSQUlBQW9Ba0FpQnlBQlFRRnFTUTBCQ3lBQUtBTHNBVUVCUWFJL1FRQVFDQXdMQ3lBQUtBSXNSUVJBSUFBb0FpUWhCRUVBSVFFTUNBc2dBRUVBTmdJc0lBQW9BakFoQTBFQklRRU1Cd3NDUUNBQUtBSTBJZ1FnQUNnQ3hBRWlDa2tFUUNBQUtBSkFJZzRnQ2tFQmFra05BUXNnQUNnQzdBRkJBVUdwd0FCQkFCQUlEQW9MSUFBb0FpeEZCRUFnQUNnQ0tDRUxEQVlMSUFCQ0FEY0M1QUVnQUVFQU5nSXNJQUFvQXNnQklRd0RRQ0FNSUFkQkJIUnFJZ1VvQWdnaUR3UkFJQVVvQWd3aEVrRUFJUUVEUUFKQUlBOGdBVUYvYzJvaUVDQVNJQUZCQkhScUloRW9BZ0JxSWdsQkgwc05BQ0FGS0FJQUloTkJmeUFKZGtzTkFDQUFJQUlnRXlBSmRDSUpJQUlnQ1VrYklBa2dBaHNpQWpZQzVBRUxBa0FnRVNnQ0JDQVFhaUlKUVI5TERRQWdCU2dDQkNJUVFYOGdDWFpMRFFBZ0FDQURJQkFnQ1hRaUNTQURJQWxKR3lBSklBTWJJZ00yQXVnQkN5QUJRUUZxSWdFZ0QwY05BQXNMSUFkQkFXb2lCeUFLUncwQUN5QUNSUTBISUFORkRRY2dBQzBBQUVVRVFDQUFJQUFvQXRBQk5nSnNJQUFnQUNnQ3pBRTJBbVFnQUNBQUtBTFlBVFlDY0NBQUlBQW9BdFFCTmdKb0N5QUFLQUl3SVFWQkFTRUJEQVVMQWtBZ0FDZ0NOQ0lGSUFBb0FzUUJJZ2xKQkVBZ0FDZ0NRQ0lTSUFsQkFXcEpEUUVMSUFBb0F1d0JRUUZCL0Q5QkFCQUlEQWtMSUFBb0FpeEZCRUFnQUNnQ3lBRWlEU0FBS0FJY0lnUkJCSFJxSVFzZ0FDZ0NLQ0VJREFRTElBQkNBRGNDNUFFZ0FFRUFOZ0lzSUFBb0FzZ0JJUTBEUUNBTklBWkJCSFJxSWdvb0FnZ2lEZ1JBSUFvb0Fnd2hFRUVBSVFFRFFBSkFJQTRnQVVGL2Myb2lFU0FRSUFGQkJIUnFJaE1vQWdCcUlneEJIMHNOQUNBS0tBSUFJaFJCZnlBTWRrc05BQ0FBSUFJZ0ZDQU1kQ0lNSUFJZ0RFa2JJQXdnQWhzaUFqWUM1QUVMQWtBZ0V5Z0NCQ0FSYWlJTVFSOUxEUUFnQ2lnQ0JDSVJRWDhnREhaTERRQWdBQ0FESUJFZ0RIUWlEQ0FESUF4Skd5QU1JQU1iSWdNMkF1Z0JDeUFCUVFGcUlnRWdEa2NOQUFzTElBWkJBV29pQmlBSlJ3MEFDeUFDUlEwR0lBTkZEUVlDUUNBQUxRQUFCRUFnQUNnQ2JDRUdEQUVMSUFBZ0FDZ0MwQUVpQmpZQ2JDQUFJQUFvQXN3Qk5nSmtJQUFnQUNnQzJBRTJBbkFnQUNBQUtBTFVBVFlDYUF0QkFTRUJEQU1MQWtBZ0FDZ0NOQ0lHSUFBb0FzUUJJZ0ZKQkVBZ0FDZ0NRQ0lQSUFGQkFXcEpEUUVMSUFBb0F1d0JRUUZCeno5QkFCQUlEQVlMSUFBb0FpeEZCRUFnQUNnQ3lBRWdBQ2dDSENJR1FRUjBhaUVGSUFBb0FpZ2hCMEVBSVFFTUFnc2dBQ0FHTmdJY0lBQkJBRFlDTEVFQklRRU1BUXNEUUFKL0FrQWdBVVVFUUNBQ1FRRnFJUUlNQVFzZ0FDQUROZ0lvSUFBb0FqZ2dBMDBOQ1NBQUtBSXdJUVJCQUF3QkMwRUJDeUVCQTBBQ1FBSkFBa0FDUUNBQlJRUkFJQUFnQkRZQ0lDQUVJQUFvQWp4UERRRWdBQ0FHTmdJY0lBWWhBVUVBSVFVTUJBc2dBQ0FDTmdJa0lBQW9Ba3dnQWswRVFDQUFLQUljSVFGQkFTRUZEQVFMSUFBb0FoQWdBQ2dDSUd3Z0FDZ0NEQ0FBS0FJb2JHb2dBQ2dDRkNBQUtBSWNiR29nQUNnQ0dDQUNiR29pQVNBQUtBSUlUd1JBREF3TElBQW9BZ1FnQVVFQmRHb2lBUzhCQUEwQkRBMExJQUFvQWloQkFXb2hBd3dCQzBFQUlRRU1Bd3RCQVNFQkRBSUxBMEFDUUFKQUFrQWdCVVVFUUNBQklBZFBEUUVnQUNnQ0lDSUZJQUFvQXNnQklBRkJCSFJxSWcwb0FnaFBEUU1nQUMwQUFFVUVRQ0FBSUEwb0Fnd2dCVUVFZEdvaUFTZ0NEQ0FCS0FJSWJEWUNUQXNnQUNnQ1NDRUNRUUVoQVF3RkN5QUFJQUZCQVdvaUFUWUNIQXdCQ3lBQUtBSWdRUUZxSVFSQkFDRUJEQU1MUVFBaEJRd0JDMEVCSVFVTUFBc0FDd0FMQUFzRFFBSi9Ba0FnQVVVRVFDQUFJQWRCQVdvaUJ6WUNLQXdCQ3lBR0lBOVBEUWdnQUVJQU53TGtBU0FBS0FMSUFTQUdRUVIwYWlJRktBSUlJZ3RGRFFnZ0JTZ0NEQ0VLUVFBaEFrRUFJUVJCQUNFQkEwQUNRQ0FMSUFGQmYzTnFJZ2tnQ2lBQlFRUjBhaUlPS0FJQWFpSUlRUjlMRFFBZ0JTZ0NBQ0lNUVg4Z0NIWkxEUUFnQUNBRUlBd2dDSFFpQ0NBRUlBaEpHeUFJSUFRYklnUTJBdVFCQ3dKQUlBNG9BZ1FnQ1dvaUNFRWZTdzBBSUFVb0FnUWlDVUYvSUFoMlN3MEFJQUFnQWlBSklBaDBJZ2dnQWlBSVNSc2dDQ0FDR3lJQ05nTG9BUXNnQVVFQmFpSUJJQXRIRFFBTElBUkZEUVlnQWtVTkJnSkFJQUF0QUFBRVFDQUFLQUpzSVFJTUFRc2dBQ0FBS0FMUUFTSUNOZ0pzSUFBZ0FDZ0N6QUUyQW1RZ0FDQUFLQUxZQVRZQ2NDQUFJQUFvQXRRQk5nSm9DMEVBREFFTFFRRUxJUUVEUUFKQUFrQUNRQUpBSUFGRkJFQWdBQ0FDTmdMZ0FTQUNJQUFvQW5CUERRRWdBQ2dDWkNFTlFRQWhBUXdFQ3lBQUtBSTRJQWROQkVBZ0FDZ0NJQ0VEUVFFaEFRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dCMnhxSUFBb0FoUWdCbXhxSUFBb0FoZ2dBQ2dDSkd4cUlnRWdBQ2dDQ0U4RVFBd0xDeUFBS0FJRUlBRkJBWFJxSWdFdkFRQU5BUXdNQ3lBQUlBWkJBV29pQmpZQ0hBd0JDMEVBSVFFTUF3dEJBU0VCREFJTEEwQUNRQUpBQWtBZ0FBSi9JQUZGQkVBZ0FDQU5OZ0xjQVNBTklBQW9BbWhQRFFJZ0FDZ0NNQXdCQ3lBRFFRRnFDeUlETmdJZ0lBQW9BandpQVNBRktBSUlJZ1FnQVNBRVNSc2dBMHNFUUNBRktBSUFJZ0VnQWEwaUhpQUVJQU5CZjNOcUlnaXRJaGFHSWhjZ0ZvaW5SdzBESUFVb0FnUWlCRUovSUJhSXAzRWdCRWNOQXlBRXJTSVZJQmFHSWhoQ0FYMGlHU0FBTlFMWUFYd2dHSUFoSHlBWklBQW9BdEFCSWdtdGZDQVlnQ0VhSUJkQ0FYMGlHeUFBTlFMVUFYd2dGNEFoSUNBYklBQW9Bc3dCSWc2dGZDQVhnQ0VjSUFGQ2Z5QUZLQUlNSUFOQkJIUnFJZ3NvQWdBaUNpQUlhcTBpSFlpbmNTQUJSdzBESUFRZ0ZTQUxLQUlFSWdFZ0NHcXRJaFdHSWlFZ0ZZaW5SdzBESUFBb0F1QUJJZ1N0SWlJZ0lZSkNBRklFUUNBRUlBbEhEUVJDZnlBVmhrSi9oU0FhUXYvLy8vOFBneUFXaG9OUURRUUxJQUFvQXR3QklnU3RJaFVnSGlBZGhvSkNBRklFUUNBRUlBNUhEUVJDZnlBZGhrSi9oU0FjUXYvLy8vOFBneUFXaG9OUURRUUxJQXNvQWdnaUJFVU5BeUFMS0FJTVJRMERJQnluSWdzZ0lLZEdEUU1nR3FjaUNDQWZwMFlOQXlBQUlBQW9Ba1FpQnpZQ0tDQUFJQlVnRzN3Z0Y0Q25JQXAySUFzZ0NuWnJJQmtnSW53Z0dJQ25JQUYySUFnZ0FYWnJJQVJzYWpZQ0pFRUJJUUVNQlFzZ0FDZ0MzQUVpQVNBQUtBTGtBU0lFYWlBQklBUndheUVOREFFTElBQW9BdUFCSWdFZ0FDZ0M2QUVpQkdvZ0FTQUVjR3NoQWtFQUlRRU1Bd3RCQUNFQkRBRUxRUUVoQVF3QUN3QUxBQXNBQ3dOQUFuOENRQ0FCUlFSQUlBQWdDRUVCYWlJSU5nSW9EQUVMSUFBZ0JqWUM0QUVnQUNnQ2NDQUdUUTBISUFBb0FtUWhEMEVBREFFTFFRRUxJUUVEUUFKQUFrQUNRQUpBSUFGRkJFQWdBQ0FQTmdMY0FTQVBJQUFvQW1oUERRRWdBQ0FGTmdJY0lBVWhCRUVBSVFFTUJBc2dBQ2dDT0NBSVRRUkFJQUFvQWlBaEIwRUJJUUVNQkFzZ0FDZ0NFQ0FBS0FJZ2JDQUFLQUlNSUFoc2FpQUFLQUlVSUFSc2FpQUFLQUlZSUFBb0FpUnNhaUlCSUFBb0FnaFBCRUFNQ2dzZ0FDZ0NCQ0FCUVFGMGFpSUJMd0VBRFFFTUN3c2dBQ2dDNEFFaUFTQUFLQUxvQVNJR2FpQUJJQVp3YXlFR0RBRUxRUUFoQVF3REMwRUJJUUVNQWdzRFFBSkFBa0FDUUFKQUlBRkZCRUFnQkNBU1R3MENJQUFnQUNnQ01DSUhOZ0lnSUEwZ0JFRUVkR29oQ3d3QkN5QUFJQWRCQVdvaUJ6WUNJQXNnQUNnQ1BDSUJJQXNvQWdnaUFpQUJJQUpKR3lBSFN3UkFJQXNvQWdBaUFTQUJyU0llSUFJZ0IwRi9jMm9pQ3EwaUZvWWlGeUFXaUtkSERRTWdDeWdDQkNJQ1FuOGdGb2luY1NBQ1J3MERJQUt0SWhVZ0ZvWWlHRUlCZlNJWklBQTFBdGdCZkNBWWdDRWZJQmtnQUNnQzBBRWlEcTE4SUJpQUlSb2dGMElCZlNJYklBQTFBdFFCZkNBWGdDRWdJQnNnQUNnQ3pBRWlESzE4SUJlQUlSd2dBVUovSUFzb0Fnd2dCMEVFZEdvaUF5Z0NBQ0lKSUFwcXJTSWRpS2R4SUFGSERRTWdBaUFWSUFNb0FnUWlBU0FLYXEwaUZZWWlJU0FWaUtkSERRTWdBQ2dDNEFFaUFxMGlJaUFoZ2tJQVVnUkFJQUlnRGtjTkJFSi9JQldHUW4rRklCcEMvLy8vL3crRElCYUdnMUFOQkFzZ0FDZ0MzQUVpQXEwaUZTQWVJQjJHZ2tJQVVnUkFJQUlnREVjTkJFSi9JQjJHUW4rRklCeEMvLy8vL3crRElCYUdnMUFOQkFzZ0F5Z0NDQ0lDUlEwRElBTW9BZ3hGRFFNZ0hLY2lBeUFncDBZTkF5QWFweUlLSUIrblJnMERJQUFnQUNnQ1JDSUlOZ0lvSUFBZ0ZTQWJmQ0FYZ0tjZ0NYWWdBeUFKZG1zZ0dTQWlmQ0FZZ0tjZ0FYWWdDaUFCZG1zZ0FteHFOZ0lrUVFFaEFRd0ZDeUFBSUFSQkFXb2lCRFlDSEF3QkN5QUFLQUxjQVNJQklBQW9BdVFCSWdKcUlBRWdBbkJySVE5QkFDRUJEQU1MUVFBaEFRd0JDMEVCSVFFTUFBc0FDd0FMQUFzRFFBSi9Ba0FnQVVVRVFDQUFJQXRCQVdvaUN6WUNLQXdCQ3lBQUlBVTJBaUFnQUNnQ1BDQUZUUTBHSUFBb0Ftd2hDRUVBREFFTFFRRUxJUUVEUUFKQUFrQUNRQUpBSUFGRkJFQWdBQ0FJTmdMZ0FTQUlJQUFvQW5CUERRRWdBQ2dDWkNFTlFRQWhBUXdFQ3lBQUtBSTRJQXROQkVBZ0FDZ0NIQ0VHUVFFaEFRd0VDeUFBS0FJUUlBQW9BaUJzSUFBb0Fnd2dDMnhxSUFBb0FoUWdBQ2dDSEd4cUlBQW9BaGdnQUNnQ0pHeHFJZ0VnQUNnQ0NFOEVRQXdKQ3lBQUtBSUVJQUZCQVhScUlnRXZBUUFOQVF3S0N5QUFLQUlnUVFGcUlRVU1BUXRCQUNFQkRBTUxRUUVoQVF3Q0N3TkFBa0FDUUFKQUFrQWdBVVVFUUNBQUlBMDJBdHdCSUEwZ0FDZ0NhRThOQWlBQUlBUTJBaHdnQkNFR0RBRUxJQUFnQmtFQmFpSUdOZ0ljQ3lBR0lBNUpCRUFnQUNnQ0lDSUhJQUFvQXNnQklBWkJCSFJxSWdFb0FnZ2lBMDhOQXlBQktBSUFJZ0lnQXEwaUhpQURJQWRCZjNOcUlncXRJaGFHSWhjZ0ZvaW5SdzBESUFFb0FnUWlBMEovSUJhSXAzRWdBMGNOQXlBRHJTSVZJQmFHSWhoQ0FYMGlHU0FBTlFMWUFYd2dHSUFoSHlBWklBQW9BdEFCSWcrdGZDQVlnQ0VhSUJkQ0FYMGlHeUFBTlFMVUFYd2dGNEFoSUNBYklBQW9Bc3dCSWdtdGZDQVhnQ0VjSUFKQ2Z5QUJLQUlNSUFkQkJIUnFJZ0VvQWdBaUJ5QUthcTBpSFlpbmNTQUNSdzBESUFNZ0ZTQUJLQUlFSWdJZ0NtcXRJaFdHSWlFZ0ZZaW5SdzBESUFBb0F1QUJJZ090SWlJZ0lZSkNBRklFUUNBRElBOUhEUVJDZnlBVmhrSi9oU0FhUXYvLy8vOFBneUFXaG9OUURRUUxJQUFvQXR3QklnT3RJaFVnSGlBZGhvSkNBRklFUUNBRElBbEhEUVJDZnlBZGhrSi9oU0FjUXYvLy8vOFBneUFXaG9OUURRUUxJQUVvQWdnaUEwVU5BeUFCS0FJTVJRMERJQnluSWdFZ0lLZEdEUU1nR3FjaUNpQWZwMFlOQXlBQUlBQW9Ba1FpQ3pZQ0tDQUFJQlVnRzN3Z0Y0Q25JQWQySUFFZ0IzWnJJQmtnSW53Z0dJQ25JQUoySUFvZ0FuWnJJQU5zYWpZQ0pFRUJJUUVNQlFzZ0FDZ0MzQUVpQVNBQUtBTGtBU0lDYWlBQklBSndheUVOREFFTElBQW9BdUFCSWdFZ0FDZ0M2QUVpQW1vZ0FTQUNjR3NoQ0VFQUlRRU1Bd3RCQUNFQkRBRUxRUUVoQVF3QUN3QUxBQXNBQ3dOQUFuOENRQ0FCUlFSQUlBUkJBV29oQkF3QkN5QUFJQU0yQWlBZ0FDZ0NQQ0FEVFEwRklBQW9Ba1FoQWtFQURBRUxRUUVMSVFFRFFBSkFBa0FDUUFKQUlBRkZCRUFnQUNBQ05nSW9JQUlnQUNnQ09FOE5BU0FBSUFZMkFod2dCaUVCUVFBaEJRd0VDeUFBSUFRMkFpUWdBQ2dDVENBRVRRUkFJQUFvQWh3aEFVRUJJUVVNQkFzZ0FDZ0NFQ0FBS0FJZ2JDQUFLQUlNSUFBb0FpaHNhaUFBS0FJVUlBQW9BaHhzYWlBQUtBSVlJQVJzYWlJQklBQW9BZ2hQQkVBTUNBc2dBQ2dDQkNBQlFRRjBhaUlCTHdFQURRRU1DUXNnQUNnQ0lFRUJhaUVEREFFTFFRQWhBUXdEQzBFQklRRU1BZ3NEUUFKQUFrQUNRQ0FGUlFSQUlBRWdCMDhOQVNBQUtBSWdJZ1VnQUNnQ3lBRWdBVUVFZEdvaURTZ0NDRThOQXlBQUxRQUFSUVJBSUFBZ0RTZ0NEQ0FGUVFSMGFpSUJLQUlNSUFFb0FnaHNOZ0pNQ3lBQUtBSklJUVJCQVNFQkRBVUxJQUFnQVVFQmFpSUJOZ0ljREFFTElBQW9BaWhCQVdvaEFrRUFJUUVNQXd0QkFDRUZEQUVMUVFFaEJRd0FDd0FMQUFzQUMwRUFEd3NnQUNnQzdBRkJBVUcvQ2tFQUVBZ0xRUUFQQ3lBQlFRRTdBUUJCQVF1UkN3RUtmd0pBSUFFb0FnQWdCRUVEYkNJTWRpSUdRWkNBZ0FGeERRQWdBQ0FBUVJ4cUlnNGdBQ2dDYkNBR1FlOERjV290QUFCQkFuUnFJZ28yQW1nZ0FDQUFLQUlFSUFvb0FnQWlDU2dDQUNJSWF5SUdOZ0lFQWtBZ0NDQUFLQUlBSWdkQkVIWkxCRUFnQ1NnQ0JDRUxJQUFnQ0RZQ0JDQUtJQWxCQ0VFTUlBWWdDRWtpQmh0cUtBSUFOZ0lBSUFzZ0MwVWdCaHNoQ1NBQUtBSUlJUVlEUUFKQUlBWU5BQ0FBS0FJUUlnWkJBV29oQ3lBR0xRQUJJUW9nQmkwQUFFSC9BVVlFUUNBS1FaQUJUd1JBSUFBZ0FDZ0NERUVCYWpZQ0RDQUhRWUQrQTJvaEIwRUlJUVlNQWdzZ0FDQUxOZ0lRSUFjZ0NrRUpkR29oQjBFSElRWU1BUXNnQUNBTE5nSVFRUWdoQmlBSElBcEJDSFJxSVFjTElBQWdCa0VCYXlJR05nSUlJQUFnQjBFQmRDSUhOZ0lBSUFBZ0NFRUJkQ0lJTmdJRUlBaEJnSUFDU1EwQUN5QUlJUVlNQVFzZ0FDQUhJQWhCRUhScklnYzJBZ0FnQmtHQWdBSnhSUVJBSUFrb0FnUWhDeUFLSUFsQkRFRUlJQVlnQ0VraUNCdHFLQUlBTmdJQUlBdEZJQXNnQ0JzaENTQUFLQUlJSVFnRFFBSkFJQWdOQUNBQUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFvZ0NDMEFBRUgvQVVZRVFDQUtRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFnTUFnc2dBQ0FMTmdJUUlBY2dDa0VKZEdvaEIwRUhJUWdNQVFzZ0FDQUxOZ0lRUVFnaENDQUhJQXBCQ0hScUlRY0xJQUFnQ0VFQmF5SUlOZ0lJSUFBZ0IwRUJkQ0lITmdJQUlBQWdCa0VCZENJR05nSUVJQVpCZ0lBQ1NRMEFDd3dCQ3lBSktBSUVJUWtMSUFsRkRRQWdBQ0FPSUFFb0FnUWdERUVSYW5aQkJIRWdBVUVFYXlJTktBSUFJQXhCRTJwMlFRRnhJQUVvQWdBaUNDQU1RUkJxZGtIQUFIRWdDQ0FNZGtHcUFYRnlJQWdnREVFTWFrRU9JQVFiZGtFUWNYSnljaUlQUWVDNUFXb3RBQUJCQW5ScUlnczJBbWdnQUNBR0lBc29BZ0FpQ2lnQ0FDSUlheUlHTmdJRUFrQWdDQ0FIUVJCMlN3UkFJQW9vQWdRaENTQUFJQWcyQWdRZ0N5QUtRUWhCRENBR0lBaEpJZ1liYWlnQ0FEWUNBQ0FKSUFsRklBWWJJUW9nQUNnQ0NDRUdBMEFDUUNBR0RRQWdBQ2dDRUNJR1FRRnFJUXNnQmkwQUFTRUpJQVl0QUFCQi93RkdCRUFnQ1VHUUFVOEVRQ0FBSUFBb0FneEJBV28yQWd3Z0IwR0EvZ05xSVFkQkNDRUdEQUlMSUFBZ0N6WUNFQ0FISUFsQkNYUnFJUWRCQnlFR0RBRUxJQUFnQ3pZQ0VFRUlJUVlnQnlBSlFRaDBhaUVIQ3lBQUlBWkJBV3NpQmpZQ0NDQUFJQWRCQVhRaUJ6WUNBQ0FBSUFoQkFYUWlDRFlDQkNBSVFZQ0FBa2tOQUFzTUFRc2dBQ0FISUFoQkVIUnJJZ2syQWdBZ0JrR0FnQUp4UlFSQUlBb29BZ1FoQnlBTElBcEJERUVJSUFZZ0NFa2lDQnRxS0FJQU5nSUFJQWRGSUFjZ0NCc2hDaUFBS0FJSUlRY0RRQUpBSUFjTkFDQUFLQUlRSWdkQkFXb2hDeUFITFFBQklRZ2dCeTBBQUVIL0FVWUVRQ0FJUVpBQlR3UkFJQUFnQUNnQ0RFRUJhallDRENBSlFZRCtBMm9oQ1VFSUlRY01BZ3NnQUNBTE5nSVFJQWtnQ0VFSmRHb2hDVUVISVFjTUFRc2dBQ0FMTmdJUVFRZ2hCeUFKSUFoQkNIUnFJUWtMSUFBZ0IwRUJheUlITmdJSUlBQWdDVUVCZENJSk5nSUFJQUFnQmtFQmRDSUdOZ0lFSUFaQmdJQUNTUTBBQ3d3QkN5QUtLQUlFSVFvTElBSkJBQ0FEYXlBRElBb2dEMEhndXdGcUxRQUFjeUlER3pZQ0FDQU5JQTBvQWdCQklDQU1kSEkyQWdBZ0FTQUJLQUlBSUFOQkUzUkJFSElnREhSeU5nSUFJQUVnQVNnQ0JFRUlJQXgwY2pZQ0JDQUVJQVZ5UlFSQUlBRkJmaUFBS0FKOGEwRUNkR29pQWlBQ0tBSUVRWUNBQW5JMkFnUWdBaUFDS0FJQUlBTkJIM1J5UVlDQUJISTJBZ0FnQWtFRWF5SUNJQUlvQWdCQmdJQUljallDQUFzZ0JFRURSdzBBSUFFZ0FDZ0NmRUVDZEdvaUFFRUVhaUFBS0FJRVFRUnlOZ0lBSUFBZ0FDZ0NERUVCY2pZQ0RDQUFJQUFvQWdnZ0EwRVNkSEpCQW5JMkFnZ0xDNnNMQVFsL0FrQWdBU2dDQUNBRVFRTnNJZzEySWdkQmtJQ0FBWEVOQUNBSFFlOERjU0lIUlEwQUlBQWdBRUVjYWlJT0lBQW9BbXdnQjJvdEFBQkJBblJxSWdzMkFtZ2dBQ0FBS0FJRUlBc29BZ0FpQ2lnQ0FDSUpheUlITmdJRUFrQWdDU0FBS0FJQUlnaEJFSFpMQkVBZ0NpZ0NCQ0VNSUFBZ0NUWUNCQ0FMSUFwQkNFRU1JQWNnQ1VraUJ4dHFLQUlBTmdJQUlBd2dERVVnQnhzaENpQUFLQUlJSVFjRFFBSkFJQWNOQUNBQUtBSVFJZ2RCQVdvaERDQUhMUUFCSVFzZ0J5MEFBRUgvQVVZRVFDQUxRWkFCVHdSQUlBQWdBQ2dDREVFQmFqWUNEQ0FJUVlEK0Eyb2hDRUVJSVFjTUFnc2dBQ0FNTmdJUUlBZ2dDMEVKZEdvaENFRUhJUWNNQVFzZ0FDQU1OZ0lRUVFnaEJ5QUlJQXRCQ0hScUlRZ0xJQUFnQjBFQmF5SUhOZ0lJSUFBZ0NFRUJkQ0lJTmdJQUlBQWdDVUVCZENJSk5nSUVJQWxCZ0lBQ1NRMEFDeUFKSVFjTUFRc2dBQ0FJSUFsQkVIUnJJZ2cyQWdBZ0IwR0FnQUp4UlFSQUlBb29BZ1FoRENBTElBcEJERUVJSUFjZ0NVa2lDUnRxS0FJQU5nSUFJQXhGSUF3Z0NSc2hDaUFBS0FJSUlRa0RRQUpBSUFrTkFDQUFLQUlRSWdsQkFXb2hEQ0FKTFFBQklRc2dDUzBBQUVIL0FVWUVRQ0FMUVpBQlR3UkFJQUFnQUNnQ0RFRUJhallDRENBSVFZRCtBMm9oQ0VFSUlRa01BZ3NnQUNBTU5nSVFJQWdnQzBFSmRHb2hDRUVISVFrTUFRc2dBQ0FNTmdJUVFRZ2hDU0FJSUF0QkNIUnFJUWdMSUFBZ0NVRUJheUlKTmdJSUlBQWdDRUVCZENJSU5nSUFJQUFnQjBFQmRDSUhOZ0lFSUFkQmdJQUNTUTBBQ3d3QkN5QUtLQUlFSVFvTEFrQWdDa1VOQUNBQUlBNGdBU2dDQkNBTlFSRnFka0VFY1NBQlFRUnJJZzhvQWdBZ0RVRVRhblpCQVhFZ0FTZ0NBQ0lKSUExQkVHcDJRY0FBY1NBSklBMTJRYW9CY1hJZ0NTQU5RUXhxUVE0Z0JCdDJRUkJ4Y25KeUlncEI0TGtCYWkwQUFFRUNkR29pRERZQ2FDQUFJQWNnRENnQ0FDSUxLQUlBSWdscklnYzJBZ1FnQ2tIZ3V3RnFMUUFBSVE0Q1FDQUpJQWhCRUhaTEJFQWdDeWdDQkNFS0lBQWdDVFlDQkNBTUlBdEJDRUVNSUFjZ0NVa2lCeHRxS0FJQU5nSUFJQW9nQ2tVZ0J4c2hDeUFBS0FJSUlRY0RRQUpBSUFjTkFDQUFLQUlRSWdkQkFXb2hEQ0FITFFBQklRb2dCeTBBQUVIL0FVWUVRQ0FLUVpBQlR3UkFJQUFnQUNnQ0RFRUJhallDRENBSVFZRCtBMm9oQ0VFSUlRY01BZ3NnQUNBTU5nSVFJQWdnQ2tFSmRHb2hDRUVISVFjTUFRc2dBQ0FNTmdJUVFRZ2hCeUFJSUFwQkNIUnFJUWdMSUFBZ0IwRUJheUlITmdJSUlBQWdDRUVCZENJSU5nSUFJQUFnQ1VFQmRDSUpOZ0lFSUFsQmdJQUNTUTBBQ3d3QkN5QUFJQWdnQ1VFUWRHc2lDallDQUNBSFFZQ0FBbkZGQkVBZ0N5Z0NCQ0VJSUF3Z0MwRU1RUWdnQnlBSlNTSUpHMm9vQWdBMkFnQWdDRVVnQ0NBSkd5RUxJQUFvQWdnaENBTkFBa0FnQ0EwQUlBQW9BaEFpQ0VFQmFpRU1JQWd0QUFFaENTQUlMUUFBUWY4QlJnUkFJQWxCa0FGUEJFQWdBQ0FBS0FJTVFRRnFOZ0lNSUFwQmdQNERhaUVLUVFnaENBd0NDeUFBSUF3MkFoQWdDaUFKUVFsMGFpRUtRUWNoQ0F3QkN5QUFJQXcyQWhCQkNDRUlJQW9nQ1VFSWRHb2hDZ3NnQUNBSVFRRnJJZ2cyQWdnZ0FDQUtRUUYwSWdvMkFnQWdBQ0FIUVFGMElnYzJBZ1FnQjBHQWdBSkpEUUFMREFFTElBc29BZ1FoQ3dzZ0FrRUFJQU5ySUFNZ0N5QU9jeUlDR3pZQ0FDQVBJQThvQWdCQklDQU5kSEkyQWdBZ0FTQUJLQUlBSUFKQkUzUkJFSElnRFhSeU5nSUFJQUVnQVNnQ0JFRUlJQTEwY2pZQ0JDQUVJQVp5UlFSQUlBRWdCVUVDZEdzaUFDQUFLQUlFUVlDQUFuSTJBZ1FnQUNBQUtBSUFJQUpCSDNSeVFZQ0FCSEkyQWdBZ0FFRUVheUlBSUFBb0FnQkJnSUFJY2pZQ0FBc2dCRUVEUncwQUlBRWdCVUVDZEdvaUFDQUFLQUlFUVFGeU5nSUVJQUFnQUNnQ0FDQUNRUkowY2tFQ2NqWUNBQ0FBUVFScklnQWdBQ2dDQUVFRWNqWUNBQXNnQVNBQktBSUFRWUNBZ0FFZ0RYUnlOZ0lBQ3d1dEFRQWdBRUdBbmdFMkFtUWdBRUdBbmdFMkFtQWdBRUdBbmdFMkFsd2dBRUdBbmdFMkFsZ2dBRUdBbmdFMkFsUWdBRUdBbmdFMkFsQWdBRUdBbmdFMkFrd2dBRUdBbmdFMkFrZ2dBRUdBbmdFMkFrUWdBRUdBbmdFMkFrQWdBRUdBbmdFMkFqd2dBRUdBbmdFMkFqZ2dBRUdBbmdFMkFqUWdBRUdBbmdFMkFqQWdBRUdBbmdFMkFpd2dBRUdBbmdFMkFpZ2dBRUdBbmdFMkFpUWdBRUdBbmdFMkFpQWdBRUdBbmdFMkFod0xrZ1lDQ1g4RWZpQUFJQUUyQWdBZ0FQME1BQUFBQUFBQUFBQUFBQUFBQUFBQUFQMExBd2dnQUNBRE5nSWNJQUFnQWtFQmF5SUZOZ0lZSUFGQkEzRWhDZ0ovSUFKQkFFd0VRQ0FCSVFRZ0F3d0JDeUFBSUFGQkFXb2lCRFlDQUNBQkxRQUFDeUVCUVFnaEJ5QUFRUWcyQWhBZ0FDQUJyU0lOTndNSUlBQWdEVUwvQVlNaURrTC9BVkVpQ1RZQ0ZBSkFJQXBCQTBZTkFDQUFJQUpCQW1zaUNEWUNHQUovSUFKQkFrZ0VRQ0FFSVFFZ0F3d0JDeUFBSUFSQkFXb2lBVFlDQUNBRUxRQUFDeUVFSUFCQkQwRVFJQTVDL3dGUkd5SUhOZ0lRSUFBZ0JLMGlEa0wvQVlNaUQwTC9BVkVpQ1RZQ0ZDQUFJQTVDQ0lZZ0RZUWlEVGNEQ0NBS1FRSkdCRUFnQVNFRUlBVWhBaUFJSVFVTUFRc2dBQ0FDUVFOcklnczJBaGdnQUFKL0lBSkJBMGdFUUNBQklRWWdBd3dCQ3lBQUlBRkJBV29pQmpZQ0FDQUJMUUFBQzYwaURrTC9BWU1pRUVML0FWRWlDVFlDRkNBQVFRZEJDQ0FQUXY4QlVSc2dCMm9pQVRZQ0VDQUFJQTRnQjYyR0lBMkVJZzAzQXdnZ0NrRUJSZ1JBSUFZaEJDQUJJUWNnQ0NFQ0lBc2hCUXdCQ3lBQUlBSkJCR3NpQlRZQ0dDQUFBbjhnQWtFRVNBUkFJQVloQkNBRERBRUxJQUFnQmtFQmFpSUVOZ0lBSUFZdEFBQUxyU0lPUXY4QmcwTC9BVkVpQ1RZQ0ZDQUFRUWRCQ0NBUVF2OEJVUnNnQVdvaUJ6WUNFQ0FBSUE0Z0FhMkdJQTJFSWcwM0F3Z2dDeUVDQ3dKQUlBSkJCVTRFUUNBRUtBSUFJUU1nQUNBQ1FRVnJOZ0lZSUFBZ0JFRUVhallDQUF3QkMwRUFJUUZCZjBFQUlBTWJJUU1nQWtFQ1NBMEFBMEFnQUNBRVFRRnFJZ0kyQWdBZ0JDMEFBQ0VFSUFBZ0JVRUJheUlHTmdJWUlBTkIvd0VnQVhSQmYzTnhJQVFnQVhSeUlRTWdBVUVJYWlFQklBVkJBVXNoRENBQ0lRUWdCaUVGSUF3TkFBc0xJQUFnQTBFWWRpSUJRZjhCUmpZQ0ZDQUFRUWRCQ0NBSkd5SUNRUWRCQ0NBRFFmOEJjU0lFUWY4QlJodHFJZ1ZCQjBFSUlBTkJDSFpCL3dGeElnWkIvd0ZHRzJvaUNFRUhRUWdnQTBFUWRrSC9BWEVpQTBIL0FVWWJJQWRxYWpZQ0VDQUFJQVlnQW5RZ0F5QUZkSElnQVNBSWRISWdCSEt0SUFldGhpQU5oRGNEQ0F1MkJRSVNmd0orQW44Z0FDZ0NIQ0FCUVpnQmJHb2lBa0dRQVdzb0FnQWdBa0dZQVdzb0FnQnJJZ01oQlNBQ1FZd0JheWdDQUNBQ1FaUUJheWdDQUdzaUFpRUdRY0FBSUFNZ0EwSEFBRThiSVFOQndBQWdBaUFDUWNBQVR4c2hCQUpBSUFWRkRRQWdCa1VOQUNBRFJRMEFJQVJGRFFCQmZ5QUVia0VDZGlBRFNRMEFRUUZCSEJBTUlnSWdCRFlDRENBQ0lBTTJBZ2dnQWlBR05nSUVJQUlnQlRZQ0FDQUNJQVN0SWhRZ0JxMThRZ0Y5SUJTQUloU25JZ1EyQWhRZ0FpQURyU0lWSUFXdGZFSUJmU0FWZ0NJVnB5SUROZ0lRQWtBZ0ZFTC8vLy8vRDRNZ0ZVTC8vLy8vRDROK1FpQ0lwdzBBSUFKQkJDQURJQVJzRUF3aUF6WUNHQ0FEUlEwQUlBSU1BZ3NnQWhBSkMwRUFDeUlKUlFSQVFRQVBDd0pBSUFFRVFBTkFJQTVCbUFGc0lnOGdBQ2dDSEdvaUJTZ0NHQ0lDQkVBZ0JVRWNhaUVRSUFVb0FoUWhBeUFGS0FJUUlRUkJBQ0VLQTBBZ0F5QUViQVJBSUJBZ0NrRWtiR29oQmtFQUlRc0RRQ0FHS0FJVUlBdEJLR3hxSWdnb0FoUWlBaUFJS0FJUUlnZHNCRUJCQUNFRUEwQWdDQ2dDR0NBRVFRWjBhaUlES0FJOEloRUVRQ0FES0FJTUlRY2dBeWdDRkNFU0lBTW9BaEFoRENBREtBSUlJaE1nQmlnQ0FHc2hBeUFHS0FJUUlnMUJBWEVFUUNBQUtBSWNJQTlxSWdKQmtBRnJLQUlBSUFOcUlBSkJtQUZyS0FJQWF5RURDeUFISUFZb0FnUnJJUUlnRFVFQ2NRUkFJQUlnQUNnQ0hDQVBhaUlOUVl3QmF5Z0NBR29nRFVHVUFXc29BZ0JySVFJTElBa2dBeUFDSUFNZ0RDQVRheUlNYWlBU0lBZHJJQUpxSUJGQkFTQU1RUUFRSDBVTkNTQUlLQUlRSVFjZ0NDZ0NGQ0VDQ3lBRVFRRnFJZ1FnQWlBSGJFa05BQXNnQlNnQ0VDRUVJQVVvQWhRaEF3c2dDMEVCYWlJTElBTWdCR3hKRFFBTElBVW9BaGdoQWdzZ0NrRUJhaUlLSUFKSkRRQUxDeUFPUVFGcUlnNGdBVWNOQUFzTElBa1BDeUFKRUIxQkFBdlFEQUlRZndaN0lBQW9BZ2dpQ3lBQUtBSUVhaUVIQWtBZ0FDZ0NERVVFUUNBSFFRSklEUUVnQVNnQ0FDQUJJQXRCQW5ScUlnMG9BZ0FpQkVFQmFrRUJkV3NoQXlBQUtBSUFJUVlDUUNBSFFRUkpCRUFnQkNFQ0RBRUxJQWRCQkdzaUFFRUJkaUlKUVFGcUlRd0NRQ0FBUVJaSkJFQkJBU0VBREFFTElBWWdBU0FMUVFKMGFpSUZJQWxCQW5RaUFtcEJDR3BKSUFZZ0NVRURkR3BCQ0dvaUFDQUZRUVJxUzNFRVFFRUJJUUFNQVFzZ0JpQUJJQUpxUVFocVNTQUJRUVJxSUFCSmNRUkFRUUVoQUF3QkN5QU1RZnovLy84SGNTSUZRUUZ5SVFBZ0JVRUJkQ0VJSUFUOUVTRVNJQVA5RVNFVC9Rd0FBQUFBQWdBQUFBUUFBQUFHQUFBQUlSWkJBQ0VDQTBBZ0FTQUNRUUowUVFSeUlnTnEvUUFDQUNFVklBTWdEV3I5QUFJQUlSUWdCaUFDUVFOMGFpSURJQlA5V2dJQUF5QURRUWhxSUJVZ0ZDQVNJQlQ5RFF3TkRnOFFFUklURkJVV0Z4Z1pHaHNpRmYydUFmME1BZ0FBQUFJQUFBQUNBQUFBQWdBQUFQMnVBVUVDL2F3Qi9iRUJJaEw5V2dJQUFDQURRUkJxSUJMOVdnSUFBU0FEUVJocUlCTDlXZ0lBQWlBR0lCYjlEQUVBQUFBQkFBQUFBUUFBQUFFQUFBRDlVQ0lYL1JzQVFRSjBhaUFTSUJNZ0V2ME5EQTBPRHhBUkVoTVVGUllYR0JrYUcvMnVBVUVCL2F3QklCWDlyZ0VpRS8xYUFnQUFJQVlnRi8wYkFVRUNkR29nRS8xYUFnQUJJQVlnRi8wYkFrRUNkR29nRS8xYUFnQUNJQVlnRi8wYkEwRUNkR29nRS8xYUFnQURJQmI5REFnQUFBQUlBQUFBQ0FBQUFBZ0FBQUQ5cmdFaEZpQVNJUk1nRkNFU0lBSkJCR29pQWlBRlJ3MEFDeUFTL1JzRElRSWdFLzBiQXlFRElBVWdERVlOQVNBQ0lRUUxBMEFnQVNBQVFRSjBJZ0pxS0FJQUlRa2dBaUFOYWlnQ0FDRUNJQVlnQ0VFQ2RHb2lCU0FETmdJQUlBVWdBeUFKSUFJZ0JHcEJBbXBCQW5WcklnTnFRUUYxSUFScU5nSUVJQWhCQW1vaENDQUFJQXhISVJBZ0FpRUVJQUJCQVdvaEFDQVFEUUFMQ3lBR0lBaEJBblJxSUFNMkFnQkJmQ0VBSUFkQkFYRUVmeUFHSUFkQkFXc2lBRUVDZEdvZ0FTQUFRUUYwYWlnQ0FDQUNRUUZxUVFGMWF5SUFOZ0lBSUFBZ0EycEJBWFVoQTBGNEJVRjhDeUFHSUFkQkFuUWlBR3BxSUFJZ0EybzJBZ0FnQVNBR0lBQVFDeG9QQ3dKQUFrQUNRQ0FIUVFGckRnSUFBUUlMSUFFZ0FTZ0NBRUVDYlRZQ0FBOExJQUFvQWdBaUJDQUJLQUlBSUFFZ0MwRUNkR29pQXlnQ0FFRUJha0VCZFdzaUFEWUNCQ0FFSUFBZ0F5Z0NBR28yQWdBZ0FTQUVLUUlBTndJQUR3c2dCMEVEU0EwQUlBQW9BZ0FpQ2lBQktBSUFJQUVnQzBFQ2RHb2lEaWdDQkNJRUlBNG9BZ0FpQUdwQkFtcEJBblZySWdNZ0FHbzJBZ0JCQVNFSUFrQWdCMEVDYXlJR0lBZEJBWEVpREVVaUFHdEJBa2tFUUNBRUlRSU1BUXNnQnlBQWEwRUVheUlBUVFGMklnSkJBV29oRHdKQUFrQWdBRUVXU1EwQUlBcEJCR29pQlNBQklBSkJBblFpQUdwQkNHcEpJQW9nQWtFRGRHcEJER29pQWlBQlFRUnFTM0VOQUNBRklBQWdBU0FMUVFKMGFpSUFha0VNYWtrZ0FFRUlhaUFDU1hFTkFDQVBRWHh4SWdWQkFYSWhBQ0FGUVFGMFFRRnlJUWdnQlAwUklSTWdBLzBSSVJKQkFDRUNBMEFnQ2lBQ1FRTjBhaUlFSUFFZ0FrRUNkQ0lEYXYwQUFnUWdFeUFESUE1cS9RQUNDQ0lUL1EwTURRNFBFQkVTRXhRVkZoY1lHUm9iSWhVZ0UvMnVBZjBNQWdBQUFBSUFBQUFDQUFBQUFnQUFBUDJ1QVVFQy9hd0IvYkVCSWhRZ0ZDQVNJQlQ5RFF3TkRnOFFFUklURkJVV0Z4Z1pHaHY5cmdGQkFmMnNBU0FWL2E0QkloWDlEUVFGQmdjWUdSb2JDQWtLQ3h3ZEhoLzlDd0lVSUFRZ0VpQVYvUTBNRFE0UEVCRVNFd0FCQWdNVUZSWVhJQlQ5RFFBQkFnTUVCUVlIRUJFU0V3d05EZy85Q3dJRUlCUWhFaUFDUVFScUlnSWdCVWNOQUFzZ0UvMGJBeUVDSUJMOUd3TWhBeUFGSUE5R0RRSWdBaUVFREFFTFFRRWhBQXNEUUNBQklBQkJBblJxS0FJQUlRMGdEaUFBUVFGcUlnVkJBblJxS0FJQUlRSWdDaUFJUVFKMGFpSUpJQU0yQWdBZ0NTQURJQTBnQWlBRWFrRUNha0VDZFdzaUEycEJBWFVnQkdvMkFnUWdDRUVDYWlFSUlBQWdEMGNoRVNBQ0lRUWdCU0VBSUJFTkFBc0xJQW9nQ0VFQ2RHb2dBellDQUFKQUlBeEZCRUFnQ2lBR1FRSjBhaUFCSUFkQkFYUnFRUVJyS0FJQUlBSkJBV3BCQVhWcklnQWdBMnBCQVhVZ0FtbzJBZ0FNQVFzZ0FpQURhaUVBQ3lBS0lBZEJBblFpQTJwQkJHc2dBRFlDQUNBQklBb2dBeEFMR2dzTG9BY0RBMzBEZXdKL0lBTkJDRThFUUNBRFFRTjJJUXNEUUNBQi9RQUVBQ0VISUFBZ0FQMEFCQUFpQ0NBQy9RQUVBQ0lKL1F5OGRMTS92SFN6UDd4MHN6KzhkTE0vL2VZQi9lUUIvUXNFQUNBQklBZ2dCLzBNenpHd1BzOHhzRDdQTWJBK3p6R3dQdjNtQWYzbEFTQUovUXpoMFRZLzRkRTJQK0hSTmovaDBUWS8vZVlCL2VVQi9Rc0VBQ0FDSUFnZ0IvME01ZERpUCtYUTRqL2wwT0kvNWREaVAvM21BZjNrQWYwTEJBQWdBZjBBQkJBaEJ5QUFJQUQ5QUFRUUlnZ2dBdjBBQkJBaUNmME12SFN6UDd4MHN6KzhkTE0vdkhTelAvM21BZjNrQWYwTEJCQWdBU0FJSUFmOURNOHhzRDdQTWJBK3p6R3dQczh4c0Q3OTVnSDk1UUVnQ2YwTTRkRTJQK0hSTmovaDBUWS80ZEUyUC8zbUFmM2xBZjBMQkJBZ0FpQUlJQWY5RE9YUTRqL2wwT0kvNWREaVArWFE0ai85NWdIOTVBSDlDd1FRSUFKQklHb2hBaUFCUVNCcUlRRWdBRUVnYWlFQUlBcEJBV29pQ2lBTFJ3MEFDd3NDUUNBRFFRZHhJZ05GRFFBZ0FTb0NBQ0VFSUFBZ0Fpb0NBQ0lHUTd4MHN6K1VJQUFxQWdBaUJaSTRBZ0FnQVNBRklBUkR6ekd3dnBTU0lBWkQ0ZEUydjVTU09BSUFJQUlnQlNBRVErWFE0aitVa2pnQ0FDQURRUUZHRFFBZ0FTb0NCQ0VFSUFBZ0Fpb0NCQ0lHUTd4MHN6K1VJQUFxQWdRaUJaSTRBZ1FnQVNBRklBUkR6ekd3dnBTU0lBWkQ0ZEUydjVTU09BSUVJQUlnQlNBRVErWFE0aitVa2pnQ0JDQURRUUpHRFFBZ0FTb0NDQ0VFSUFBZ0Fpb0NDQ0lHUTd4MHN6K1VJQUFxQWdnaUJaSTRBZ2dnQVNBRklBUkR6ekd3dnBTU0lBWkQ0ZEUydjVTU09BSUlJQUlnQlNBRVErWFE0aitVa2pnQ0NDQURRUU5HRFFBZ0FTb0NEQ0VFSUFBZ0Fpb0NEQ0lHUTd4MHN6K1VJQUFxQWd3aUJaSTRBZ3dnQVNBRklBUkR6ekd3dnBTU0lBWkQ0ZEUydjVTU09BSU1JQUlnQlNBRVErWFE0aitVa2pnQ0RDQURRUVJHRFFBZ0FTb0NFQ0VFSUFBZ0Fpb0NFQ0lHUTd4MHN6K1VJQUFxQWhBaUJaSTRBaEFnQVNBRklBUkR6ekd3dnBTU0lBWkQ0ZEUydjVTU09BSVFJQUlnQlNBRVErWFE0aitVa2pnQ0VDQURRUVZHRFFBZ0FTb0NGQ0VFSUFBZ0Fpb0NGQ0lHUTd4MHN6K1VJQUFxQWhRaUJaSTRBaFFnQVNBRklBUkR6ekd3dnBTU0lBWkQ0ZEUydjVTU09BSVVJQUlnQlNBRVErWFE0aitVa2pnQ0ZDQURRUVpHRFFBZ0FTb0NHQ0VFSUFBZ0Fpb0NHQ0lHUTd4MHN6K1VJQUFxQWhnaUJaSTRBaGdnQVNBRklBUkR6ekd3dnBTU0lBWkQ0ZEUydjVTU09BSVlJQUlnQlNBRVErWFE0aitVa2pnQ0dBc0w0QUVDQm44RGV3SkFJQU5GRFFBZ0EwRUVUd1JBSUFOQmZIRWhCZ05BSUFBZ0JFRUNkQ0lGYWlJSElBZjlBQUlBSUFJZ0JXb2lCLzBBQWdBaUN5QUJJQVZxSWdYOUFBSUFJZ3o5cmdGQkF2MnNBZjJ4QVNJS0lBdjlyZ0g5Q3dJQUlBVWdDdjBMQWdBZ0J5QUtJQXo5cmdIOUN3SUFJQVJCQkdvaUJDQUdSdzBBQ3lBRElBWkdEUUVMQTBBZ0FDQUdRUUowSWdScUlnVWdCU2dDQUNBQ0lBUnFJZ1VvQWdBaUJ5QUJJQVJxSWdnb0FnQWlDV3BCQW5WcklnUWdCMm8yQWdBZ0NDQUVOZ0lBSUFVZ0JDQUphallDQUNBR1FRRnFJZ1lnQTBjTkFBc0xDOTBCQVFSL0l3QkJnQUZySWdZa0FDQUdJUVVDUUNBQktBSU1JQUpCQkhScUlnSW9BZ0FpQkVVRVFDQUNJUUVNQVFzRFFDQUZJQUkyQWdBZ0JVRUVhaUVGSUFRaUFTSUNLQUlBSWdRTkFBc0xRUUFoQkFOQUlBRW9BZ2dpQWlBRVNBUkFJQUVnQkRZQ0NDQUVJUUlMQWtBZ0FpQURUZzBBQTBBZ0FpQUJLQUlFVGcwQkFrQWdBRUVCRUJrRVFDQUJJQUkyQWdRTUFRc2dBa0VCYWlFQ0N5QUNJQU5JRFFBTEN5QUJJQUkyQWdnZ0JTQUdSd1JBSUFWQkJHc2lCU2dDQUNFQklBSWhCQXdCQ3dzZ0FTZ0NCQ0VISUFaQmdBRnFKQUFnQnlBRFNBdjlCZ0VMZnlNQVFZQUNheUlLSkFBQ1FDQUFSUVJBUVFBaEFBd0JDd0pBSUFFZ0FDZ0NBRVlFUUNBQUtBSUVJQUpHRFFFTElBQWdBallDQkNBQUlBRTJBZ0FnQ2lBQ05nSUFJQW9nQVRZQ2dBRWdBaUVFSUFFaEJRTkFJQW9nQnlJTVFRRnFJZ2RCQW5RaUNHb2dCRUVCYWtFQ2JTSUpOZ0lBSUFwQmdBRnFJQWhxSUFWQkFXcEJBbTBpQ0RZQ0FDQUdJQVFnQld3aUMyb2hCaUFKSVFRZ0NDRUZJQXRCQVVzTkFBc2dBQ0FHTmdJSUFrQUNRQUpBQWtBZ0JrVUVRQ0FBS0FJTUlnUkZEUUlnQUVFTWFpRUZEQUVMSUFaQkJIUWlCQ0FBS0FJUVRRMERJQUFvQWd3Z0JCQVFJZ0VOQWlBRFFRRkJtakZCQUJBSUlBQkJER29pQlNnQ0FDSUVSUTBCQ3lBRUVBa2dCVUVBTmdJQUN5QUFFQWxCQUNFQURBTUxJQUFnQVRZQ0RDQUJJQUFvQWhBaUFtcEJBQ0FFSUFKckVBNGFJQUFnQkRZQ0VDQUFLQUlFSVFJZ0FDZ0NBQ0VCQ3lBQUtBSU1JUVVnREFSQVFRQWhBeUFGSUFFZ0FteEJCSFJxSWdRaEJnTkFBa0FnQ2lBRFFRSjBJZ0ZxS0FJQUlnaEJBRXdOQUNBSVFRRnJJUXRCQUNFSkFrQUNRQ0FLUVlBQmFpQUJhaWdDQUNJQ1FRQk1CRUFnQ0VFQmNTRU5RUUFoQnlBSVFRRkhEUUVnQmlFQkRBSUxBMEFnQmlFQklBSWhCZ05BQWtBZ0JTQUVOZ0lBSUFaQkFVWUVRQ0FGUVJCcUlRVWdCRUVRYWlFRURBRUxJQVVnQkRZQ0VDQUVRUkJxSVFRZ0JVRWdhaUVGSUFaQkFrb2hEaUFHUVFKcklRWWdEZzBCQ3dzZ0JDQUJJQUpCQkhScUlBa2dDU0FMUm5KQkFYRWlCeHNoQmlBRUlBRWdCeHNoQkNBSlFRRnFJZ2tnQ0VjTkFBc01BZ3NnQ0VIKy8vLy9CM0VoQ0FOQUlBY2dDMFloQVNBSFFRSnFJUWNnQkNBR0lBRWJJZ1FoQmlBRUlRRWdDVUVDYWlJSklBaEhEUUFMQ3lBTlJRUkFJQVFoQmd3QkN5QUVJQUVnQWtFRWRHb2dCeUFISUF0R2NrRUJjU0lDR3lFR0lBUWdBU0FDR3lFRUN5QURRUUZxSWdNZ0RFY05BQXNMSUFWQkFEWUNBQXNnQUNnQ0NDSUJSUTBBSUFBb0Fnd2hCQ0FCUVFSUEJFQWdBVUY4Y1NFQ1FRQWhCUU5BSUFSQkFEWUNQQ0FFUXVjSE53STBJQVJCQURZQ0xDQUVRdWNITndJa0lBUkJBRFlDSENBRVF1Y0hOd0lVSUFSQkFEWUNEQ0FFUXVjSE53SUVJQVJCUUdzaEJDQUZRUVJxSWdVZ0FrY05BQXNMSUFGQkEzRWlBVVVOQUVFQUlRVURRQ0FFUVFBMkFnd2dCRUxuQnpjQ0JDQUVRUkJxSVFRZ0JVRUJhaUlGSUFGSERRQUxDeUFLUVlBQ2FpUUFJQUFMc1FFQkEzOENRQ0FBUlEwQUlBQW9BZ2dpQVVVTkFDQUFLQUlNSVFBZ0FVRUVUd1JBSUFGQmZIRWhBd05BSUFCQkFEWUNQQ0FBUXVjSE53STBJQUJCQURZQ0xDQUFRdWNITndJa0lBQkJBRFlDSENBQVF1Y0hOd0lVSUFCQkFEWUNEQ0FBUXVjSE53SUVJQUJCUUdzaEFDQUNRUVJxSWdJZ0EwY05BQXNMSUFGQkEzRWlBVVVOQUVFQUlRSURRQ0FBUVFBMkFnd2dBRUxuQnpjQ0JDQUFRUkJxSVFBZ0FrRUJhaUlDSUFGSERRQUxDd3Y3QlFFUWZ5TUFRWUFDYXlJSUpBQUNmMEVCUVJRUURDSUdSUVJBSUFKQkFVSDBNRUVBRUFoQkFBd0JDeUFHSUFFMkFnUWdCaUFBTmdJQUlBZ2dBVFlDQUNBSUlBQTJBb0FCQTBBZ0NDQUZJZzFCQVdvaUJVRUNkQ0lIYWlBQlFRRnFRUUp0SWdNMkFnQWdDRUdBQVdvZ0Iyb2dBRUVCYWtFQ2JTSUhOZ0lBSUFRZ0FDQUJiQ0lKYWlFRUlBTWhBU0FISVFBZ0NVRUJTdzBBQ3lBR0lBUTJBZ2dnQkVVRVFDQUdFQWxCQUF3QkN5QUdJQVJCRUJBTUlnTTJBZ3dnQTBVRVFDQUNRUUZCMmhwQkFCQUlJQVlRQ1VFQURBRUxJQVlnQmlnQ0NDSUxRUVIwTmdJUUlBTWhBQ0FOQkVBZ0F5QUdLQUlFSUFZb0FnQnNRUVIwYWlJRUlRRURRQUpBSUFnZ0RrRUNkQ0lDYWlnQ0FDSUpRUUJNRFFBZ0NVRUJheUVNUVFBaEJ3SkFJQWhCZ0FGcUlBSnFLQUlBSWdKQkFFd0VRRUVBSVFVZ0NVRUJSd1JBSUFsQi92Ly8vd2R4SVFvRFFDQUZJQXhHSVE4Z0JVRUNhaUVGSUFFZ0JDQVBHeUlFSVFFZ0IwRUNhaUlISUFwSERRQUxDeUFKUVFGeERRRWdCQ0VCREFJTEEwQWdCQ0VGSUFJaEJBTkFBa0FnQUNBQk5nSUFJQVJCQVVZRVFDQUFRUkJxSVFBZ0FVRVFhaUVCREFFTElBQWdBVFlDRUNBQlFSQnFJUUVnQUVFZ2FpRUFJQVJCQWtvaEVDQUVRUUpySVFRZ0VBMEJDd3NnQVNBRklBSkJCSFJxSUFjZ0J5QU1SbkpCQVhFaUNoc2hCQ0FCSUFVZ0Noc2hBU0FIUVFGcUlnY2dDVWNOQUFzTUFRc2dBU0FFSUFKQkJIUnFJQVVnQlNBTVJuSkJBWEVpQlJzaEVTQUJJQVFnQlJzaEFTQVJJUVFMSUE1QkFXb2lEaUFOUncwQUN3c2dBRUVBTmdJQUFrQWdDMFVOQUNBTFFRUlBCRUFnQzBGOGNTRUFRUUFoQVFOQUlBTkJBRFlDUENBRFF1Y0hOd0kwSUFOQkFEWUNMQ0FEUXVjSE53SWtJQU5CQURZQ0hDQURRdWNITndJVUlBTkJBRFlDRENBRFF1Y0hOd0lFSUFOQlFHc2hBeUFCUVFScUlnRWdBRWNOQUFzTElBdEJBM0VpQUVVTkFFRUFJUUVEUUNBRFFRQTJBZ3dnQTBMbkJ6Y0NCQ0FEUVJCcUlRTWdBVUVCYWlJQklBQkhEUUFMQ3lBR0N5RVNJQWhCZ0FKcUpBQWdFZ3RUQVFGL0FuOGdBQzBBREVIL0FVWUVRQ0FBUW9EK2c0RHdBRGNDREVFQUlBQW9BZ2dpQVNBQUtBSUVUdzBCR2lBQUlBRkJBV28yQWdnZ0FDQUJMUUFBUVlEK0EzSTJBZ3dMSUFCQkFEWUNFRUVCQ3d0SkFRRi9Ba0JCQVVFc0VBd2lBUVJBSUFGQkFEWUNFQUpBSUFCQkFFd0VRQ0FCUVFGQkNCQU1JZ0EyQWlRZ0FFVU5BUXdEQ3lBQlFRQTJBZ3dMSUFFUUNRdEJBQ0VCQ3lBQkMzNENBWDhCZmlBQXZTSURRalNJcDBIL0QzRWlBa0gvRDBjRWZDQUNSUVJBSUFFZ0FFUUFBQUFBQUFBQUFHRUVmMEVBQlNBQVJBQUFBQUFBQVBCRG9pQUJFRjhoQUNBQktBSUFRVUJxQ3pZQ0FDQUFEd3NnQVNBQ1FmNEhhellDQUNBRFF2Ly8vLy8vLy8rSGdIK0RRb0NBZ0lDQWdJRHdQNFMvQlNBQUN3dVJBZ0FnQUVVRVFFRUFEd3NDZndKQUlBRkIvd0JORFFBQ1FFR1V6d0VvQWdBb0FnQkZCRUFnQVVHQWYzRkJnTDhEUmcwQ0RBRUxJQUZCL3c5TkJFQWdBQ0FCUVQ5eFFZQUJjam9BQVNBQUlBRkJCblpCd0FGeU9nQUFRUUlNQXdzZ0FVR0FRSEZCZ01BRFJ5QUJRWUN3QTA5eFJRUkFJQUFnQVVFL2NVR0FBWEk2QUFJZ0FDQUJRUXgyUWVBQmNqb0FBQ0FBSUFGQkJuWkJQM0ZCZ0FGeU9nQUJRUU1NQXdzZ0FVR0FnQVJyUWYvL1AwMEVRQ0FBSUFGQlAzRkJnQUZ5T2dBRElBQWdBVUVTZGtId0FYSTZBQUFnQUNBQlFRWjJRVDl4UVlBQmNqb0FBaUFBSUFGQkRIWkJQM0ZCZ0FGeU9nQUJRUVFNQXdzTFFaVEdBVUVaTmdJQVFYOE1BUXNnQUNBQk9nQUFRUUVMQzd3Q0FBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FnQVVFSmF3NFNBQWdKQ2dnSkFRSURCQW9KQ2dvSUNRVUdCd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCS0FJQU5nSUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTWdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTXdFQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTUFBQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTVFBQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLd01BT1FNQUR3c2dBQ0FDSUFNUkF3QUxEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTkFJQU53TUFEd3NnQWlBQ0tBSUFJZ0ZCQkdvMkFnQWdBQ0FCTlFJQU53TUFEd3NnQWlBQ0tBSUFRUWRxUVhoeElnRkJDR28yQWdBZ0FDQUJLUU1BTndNQUMzTUJCbjhnQUNnQ0FDSURMQUFBUVRCcklnRkJDVXNFUUVFQUR3c0RRRUYvSVFRZ0FrSE1tYlBtQUUwRVFFRi9JQUVnQWtFS2JDSUZhaUFCSUFWQi8vLy8vd2R6U3hzaEJBc2dBQ0FEUVFGcUlnVTJBZ0FnQXl3QUFTRUdJQVFoQWlBRklRTWdCa0V3YXlJQlFRcEpEUUFMSUFJTHRCUUNGWDhCZmlNQVFVQnFJZ2drQUNBSUlBRTJBandnQ0VFbmFpRVdJQWhCS0dvaEVRSkFBa0FDUUFKQUEwQkJBQ0VIQTBBZ0FTRU5JQWNnRGtILy8vLy9CM05LRFFJZ0J5QU9haUVPQWtBQ1FBSkFBa0FnQVNJSExRQUFJZ3NFUUFOQUFrQUNRQ0FMUWY4QmNTSUJSUVJBSUFjaEFRd0JDeUFCUVNWSERRRWdCeUVMQTBBZ0N5MEFBVUVsUndSQUlBc2hBUXdDQ3lBSFFRRnFJUWNnQ3kwQUFpRVpJQXRCQW1vaUFTRUxJQmxCSlVZTkFBc0xJQWNnRFdzaUJ5QU9RZi8vLy84SGN5SVhTZzBKSUFBRVFDQUFJQTBnQnhBUkN5QUhEUWNnQ0NBQk5nSThJQUZCQVdvaEIwRi9JUkFDUUNBQkxBQUJRVEJySWdsQkNVc05BQ0FCTFFBQ1FTUkhEUUFnQVVFRGFpRUhRUUVoRWlBSklSQUxJQWdnQnpZQ1BFRUFJUXdDUUNBSExBQUFJZ3RCSUdzaUFVRWZTd1JBSUFjaENRd0JDeUFISVFsQkFTQUJkQ0lCUVluUkJIRkZEUUFEUUNBSUlBZEJBV29pQ1RZQ1BDQUJJQXh5SVF3Z0J5d0FBU0lMUVNCcklnRkJJRThOQVNBSklRZEJBU0FCZENJQlFZblJCSEVOQUFzTEFrQWdDMEVxUmdSQUFuOENRQ0FKTEFBQlFUQnJJZ0ZCQ1VzTkFDQUpMUUFDUVNSSERRQUNmeUFBUlFSQUlBUWdBVUVDZEdwQkNqWUNBRUVBREFFTElBTWdBVUVEZEdvb0FnQUxJUThnQ1VFRGFpRUJRUUVNQVFzZ0VnMEdJQWxCQVdvaEFTQUFSUVJBSUFnZ0FUWUNQRUVBSVJKQkFDRVBEQU1MSUFJZ0FpZ0NBQ0lIUVFScU5nSUFJQWNvQWdBaEQwRUFDeUVTSUFnZ0FUWUNQQ0FQUVFCT0RRRkJBQ0FQYXlFUElBeEJnTUFBY2lFTURBRUxJQWhCUEdvUVlpSVBRUUJJRFFvZ0NDZ0NQQ0VCQzBFQUlRZEJmeUVLQW45QkFDQUJMUUFBUVM1SERRQWFJQUV0QUFGQktrWUVRQUovQWtBZ0FTd0FBa0V3YXlJSlFRbExEUUFnQVMwQUEwRWtSdzBBSUFGQkJHb2hBUUovSUFCRkJFQWdCQ0FKUVFKMGFrRUtOZ0lBUVFBTUFRc2dBeUFKUVFOMGFpZ0NBQXNNQVFzZ0VnMEdJQUZCQW1vaEFVRUFJQUJGRFFBYUlBSWdBaWdDQUNJSlFRUnFOZ0lBSUFrb0FnQUxJUW9nQ0NBQk5nSThJQXBCQUU0TUFRc2dDQ0FCUVFGcU5nSThJQWhCUEdvUVlpRUtJQWdvQWp3aEFVRUJDeUVUQTBBZ0J5RVVRUndoQ1NBQkloZ3NBQUFpQjBIN0FHdEJSa2tOQ3lBQlFRRnFJUUVnQnlBVVFUcHNha0hQd0FGcUxRQUFJZ2RCQVd0QkNFa05BQXNnQ0NBQk5nSThBa0FnQjBFYlJ3UkFJQWRGRFF3Z0VFRUFUZ1JBSUFCRkJFQWdCQ0FRUVFKMGFpQUhOZ0lBREF3TElBZ2dBeUFRUVFOMGFpa0RBRGNETUF3Q0N5QUFSUTBJSUFoQk1Hb2dCeUFDSUFZUVlRd0JDeUFRUVFCT0RRdEJBQ0VISUFCRkRRZ0xJQUF0QUFCQklIRU5DeUFNUWYvL2UzRWlDeUFNSUF4QmdNQUFjUnNoREVFQUlSQkJzQWdoRlNBUklRa0NRQUpBQW44Q1FBSkFBa0FDUUFKQUFrQUNmd0pBQWtBQ1FBSkFBa0FDUUFKQUlCZ3NBQUFpQjBGVGNTQUhJQWRCRDNGQkEwWWJJQWNnRkJzaUIwSFlBR3NPSVFRV0ZoWVdGaFlXRmhBV0NRWVFFQkFXQmhZV0ZoWUNCUU1XRmdvV0FSWVdCQUFMQWtBZ0IwSEJBR3NPQnhBV0N4WVFFQkFBQ3lBSFFkTUFSZzBMREJVTElBZ3BBekFoSEVHd0NBd0ZDMEVBSVFjQ1FBSkFBa0FDUUFKQUFrQUNRQ0FVUWY4QmNRNElBQUVDQXdRY0JRWWNDeUFJS0FJd0lBNDJBZ0FNR3dzZ0NDZ0NNQ0FPTmdJQURCb0xJQWdvQWpBZ0RxdzNBd0FNR1FzZ0NDZ0NNQ0FPT3dFQURCZ0xJQWdvQWpBZ0Rqb0FBQXdYQ3lBSUtBSXdJQTQyQWdBTUZnc2dDQ2dDTUNBT3JEY0RBQXdWQzBFSUlBb2dDa0VJVFJzaENpQU1RUWh5SVF4QitBQWhCd3NnRVNFQklBZ3BBekFpSEVJQVVnUkFJQWRCSUhFaERRTkFJQUZCQVdzaUFTQWNwMEVQY1VIZ3hBRnFMUUFBSUExeU9nQUFJQnhDRDFZaEdpQWNRZ1NJSVJ3Z0dnMEFDd3NnQVNFTklBZ3BBekJRRFFNZ0RFRUljVVVOQXlBSFFRUjJRYkFJYWlFVlFRSWhFQXdEQ3lBUklRRWdDQ2tETUNJY1FnQlNCRUFEUUNBQlFRRnJJZ0VnSEtkQkIzRkJNSEk2QUFBZ0hFSUhWaUViSUJ4Q0E0Z2hIQ0FiRFFBTEN5QUJJUTBnREVFSWNVVU5BaUFLSUJFZ0FXc2lBVUVCYWlBQklBcElHeUVLREFJTElBZ3BBekFpSEVJQVV3UkFJQWhDQUNBY2ZTSWNOd013UVFFaEVFR3dDQXdCQ3lBTVFZQVFjUVJBUVFFaEVFR3hDQXdCQzBHeUNFR3dDQ0FNUVFGeEloQWJDeUVWSUJ3Z0VSQWpJUTBMSUJNZ0NrRUFTSEVORVNBTVFmLy9lM0VnRENBVEd5RU1Ba0FnQ0NrRE1DSWNRZ0JTRFFBZ0NnMEFJQkVoRFVFQUlRb01EZ3NnQ2lBY1VDQVJJQTFyYWlJQklBRWdDa2diSVFvTURRc2dDQ2tETUNFY0RBc0xBbjlCLy8vLy93Y2dDaUFLUWYvLy8vOEhUeHNpRENJSFFRQkhJUWtDUUFKQUFrQWdDQ2dDTUNJQlFZUU1JQUViSWcwaUFVRURjVVVOQUNBSFJRMEFBMEFnQVMwQUFFVU5BaUFIUVFGcklnZEJBRWNoQ1NBQlFRRnFJZ0ZCQTNGRkRRRWdCdzBBQ3dzZ0NVVU5BUUpBSUFFdEFBQkZEUUFnQjBFRVNRMEFBMEJCZ0lLRUNDQUJLQUlBSWdscklBbHlRWUNCZ29SNGNVR0FnWUtFZUVjTkFpQUJRUVJxSVFFZ0IwRUVheUlIUVFOTERRQUxDeUFIUlEwQkN3TkFJQUVnQVMwQUFFVU5BaG9nQVVFQmFpRUJJQWRCQVdzaUJ3MEFDd3RCQUFzaUFTQU5heUFNSUFFYklnRWdEV29oQ1NBS1FRQk9CRUFnQ3lFTUlBRWhDZ3dNQ3lBTElRd2dBU0VLSUFrdEFBQU5Ed3dMQ3lBSUtRTXdJaHhDQUZJTkFVSUFJUndNQ1FzZ0NnUkFJQWdvQWpBTUFndEJBQ0VISUFCQklDQVBRUUFnREJBVURBSUxJQWhCQURZQ0RDQUlJQncrQWdnZ0NDQUlRUWhxSWdjMkFqQkJmeUVLSUFjTElRdEJBQ0VIQTBBQ1FDQUxLQUlBSWcxRkRRQWdDRUVFYWlBTkVHQWlEVUVBU0EwUElBMGdDaUFIYTBzTkFDQUxRUVJxSVFzZ0J5QU5haUlISUFwSkRRRUxDMEU5SVFrZ0IwRUFTQTBNSUFCQklDQVBJQWNnREJBVUlBZEZCRUJCQUNFSERBRUxRUUFoQ1NBSUtBSXdJUXNEUUNBTEtBSUFJZzFGRFFFZ0NFRUVhaUlLSUEwUVlDSU5JQWxxSWdrZ0Iwc05BU0FBSUFvZ0RSQVJJQXRCQkdvaEN5QUhJQWxMRFFBTEN5QUFRU0FnRHlBSElBeEJnTUFBY3hBVUlBOGdCeUFISUE5SUd5RUhEQWdMSUJNZ0NrRUFTSEVOQ1VFOUlRa2dBQ0FJS3dNd0lBOGdDaUFNSUFjZ0JSRVRBQ0lIUVFCT0RRY01DZ3NnQnkwQUFTRUxJQWRCQVdvaEJ3d0FDd0FMSUFBTkNTQVNSUTBEUVFFaEJ3TkFJQVFnQjBFQ2RHb29BZ0FpQUFSQUlBTWdCMEVEZEdvZ0FDQUNJQVlRWVVFQklRNGdCMEVCYWlJSFFRcEhEUUVNQ3dzTFFRRWhEaUFIUVFwUERRa0RRQ0FFSUFkQkFuUnFLQUlBRFFFZ0IwRUJhaUlIUVFwSERRQUxEQWtMUVJ3aENRd0dDeUFJSUJ3OEFDZEJBU0VLSUJZaERTQUxJUXdMSUFvZ0NTQU5heUlMSUFvZ0Mwb2JJZ29nRUVILy8vLy9CM05LRFFOQlBTRUpJQThnQ2lBUWFpSUJJQUVnRDBnYklnY2dGMG9OQkNBQVFTQWdCeUFCSUF3UUZDQUFJQlVnRUJBUklBQkJNQ0FISUFFZ0RFR0FnQVJ6RUJRZ0FFRXdJQW9nQzBFQUVCUWdBQ0FOSUFzUUVTQUFRU0FnQnlBQklBeEJnTUFBY3hBVUlBZ29BandoQVF3QkN3c0xRUUFoRGd3REMwRTlJUWtMUVpUR0FTQUpOZ0lBQzBGL0lRNExJQWhCUUdza0FDQU9DNmdDQVFSL0l3QkIwQUZySWdVa0FDQUZJQUkyQXN3QklBVkJvQUZxSWdKQkFFRW9FQTRhSUFVZ0JTZ0N6QUUyQXNnQkFrQkJBQ0FCSUFWQnlBRnFJQVZCMEFCcUlBSWdBeUFFRUdOQkFFZ05BQ0FBS0FKTVFRQklJUWdnQUNBQUtBSUFJZ2RCWDNFMkFnQUNmd0pBQWtBZ0FDZ0NNRVVFUUNBQVFkQUFOZ0l3SUFCQkFEWUNIQ0FBUWdBM0F4QWdBQ2dDTENFR0lBQWdCVFlDTEF3QkN5QUFLQUlRRFFFTFFYOGdBQkEzRFFFYUN5QUFJQUVnQlVISUFXb2dCVUhRQUdvZ0JVR2dBV29nQXlBRUVHTUxJUUVnQmdSL0lBQkJBRUVBSUFBb0FpUVJBQUFhSUFCQkFEWUNNQ0FBSUFZMkFpd2dBRUVBTmdJY0lBQW9BaFFhSUFCQ0FEY0RFRUVBQlNBQkN4b2dBQ0FBS0FJQUlBZEJJSEZ5TmdJQUlBZ05BQXNnQlVIUUFXb2tBQXNuQVFGL1FSd2hBeUFCUVFOeEJIOUJIQVVnQUNBQklBSVFHeUlBTmdJQVFRQkJNQ0FBR3dzTC9RTUJCWDhDZjBId3hBRW9BZ0FpQWlBQVFRZHFRWGh4SWdGQkIycEJlSEVpQTJvaEFBSkFJQU5CQUNBQUlBSk5HMFVFUUNBQVB3QkJFSFJORFFFZ0FCQUJEUUVMUVpUR0FVRXdOZ0lBUVg4TUFRdEI4TVFCSUFBMkFnQWdBZ3NpQWtGL1J3UkFJQUVnQW1vaUFFRUVhMEVRTmdJQUlBQkJFR3NpQTBFUU5nSUFBa0FDZjBHZ3pnRW9BZ0FpQVFSL0lBRW9BZ2dGUVFBTElBSkdCRUFnQWlBQ1FRUnJLQUlBUVg1eGF5SUVRUVJyS0FJQUlRVWdBU0FBTmdJSUlBUWdCVUYrY1dzaUFDQUFLQUlBYWtFRWF5MEFBRUVCY1FSQUlBQW9BZ1FpQVNBQUtBSUlJZ1EyQWdnZ0JDQUJOZ0lFSUFBZ0F5QUFheUlCTmdJQURBTUxJQUpCRUdzTUFRc2dBa0VRTmdJQUlBSWdBRFlDQ0NBQ0lBRTJBZ1FnQWtFUU5nSU1RYURPQVNBQ05nSUFJQUpCRUdvTElnQWdBeUFBYXlJQk5nSUFDeUFBSUFGQmZIRnFRUVJySUFGQkFYSTJBZ0FnQUFKL0lBQW9BZ0JCQ0dzaUFVSC9BRTBFUUNBQlFRTjJRUUZyREFFTElBRkJIU0FCWnlJRGEzWkJCSE1nQTBFQ2RHdEI3Z0JxSUFGQi94OU5EUUFhUVQ4Z0FVRWVJQU5yZGtFQ2N5QURRUUYwYTBISEFHb2lBU0FCUVQ5UEd3c2lBVUVFZENJRFFhREdBV28yQWdRZ0FDQURRYWpHQVdvaUF5Z0NBRFlDQ0NBRElBQTJBZ0FnQUNnQ0NDQUFOZ0lFUWFqT0FVR296Z0VwQXdCQ0FTQUJyWWFFTndNQUN5QUNRWDlIQzcwQkFRSi9Ba0FnQUNnQ1RDSUJRUUJPQkVBZ0FVVU5BVUhNemdFb0FnQWdBVUgvLy8vL0EzRkhEUUVMQWtBZ0FDZ0NVRUVLUmcwQUlBQW9BaFFpQVNBQUtBSVFSZzBBSUFBZ0FVRUJhallDRkNBQlFRbzZBQUFQQ3lBQUVHZ1BDeUFBUWN3QWFpSUJJQUVvQWdBaUFrSC8vLy8vQXlBQ0d6WUNBQUpBQWtBZ0FDZ0NVRUVLUmcwQUlBQW9BaFFpQWlBQUtBSVFSZzBBSUFBZ0FrRUJhallDRkNBQ1FRbzZBQUFNQVFzZ0FCQm9DeUFCS0FJQUdpQUJRUUEyQWdBTGZBRUNmeU1BUVJCcklnRWtBQ0FCUVFvNkFBOENRQUpBSUFBb0FoQWlBZ1IvSUFJRklBQVFOdzBDSUFBb0FoQUxJQUFvQWhRaUFrWU5BQ0FBS0FKUVFRcEdEUUFnQUNBQ1FRRnFOZ0lVSUFKQkNqb0FBQXdCQ3lBQUlBRkJEMnBCQVNBQUtBSWtFUUFBUVFGSERRQWdBUzBBRHhvTElBRkJFR29rQUF1d0FnRUNmeUFBQkVBZ0FDZ0NBQkF4SUFCQkFEWUNBQ0FBS0FKSUlnRUVRQ0FCRUFrZ0FFRUFOZ0pJQ3lBQUtBSkVJZ0VFUUNBQkVBa2dBRUVBTmdKRUN5QUFLQUpzSWdFRVFDQUJFQWtnQUVFQU5nSnNDeUFBS0FKMElnRUVRQ0FCS0FJQUlnSUVRQ0FDRUFrZ0FDZ0NkQ0lCUVFBMkFnQUxJQUVRQ1NBQVFRQTJBblFMSUFBb0FuZ2lBUVJBSUFFb0Fnd2lBZ1JBSUFJUUNTQUFLQUo0SWdGQkFEWUNEQXNnQVNnQ0JDSUNCRUFnQWhBSklBQW9BbmdpQVVFQU5nSUVDeUFCS0FJSUlnSUVRQ0FDRUFrZ0FDZ0NlQ0lCUVFBMkFnZ0xJQUVvQWdBaUFnUkFJQUlRQ1NBQUtBSjRJZ0ZCQURZQ0FBc2dBUkFKSUFCQkFEWUNlQXNnQUNnQ0JDSUJCRUFnQVJBdElBQkJBRFlDQkFzZ0FDZ0NDQ0lCQkVBZ0FSQXRJQUJCQURZQ0NBc2dBQkFKQ3d1R0d3SWVmd1Y3SXdCQjhBRnJJZ2trQUVFQklRNENRQ0FBS0FJQUtBSThEUUFnQUNnQ2dBRU5BQUpBQWtBZ0FDZ0NkQ0lJUlFSQUlBQW9BbmdoQkF3QkN5QUJLQUlRSVFNZ0NDOEJCQ0VHQWtBZ0FDZ0NlQ0lFUlEwQUlBUW9BZ3hGRFFBZ0JDMEFFaUVEQ3dKQUlBWUVRQ0FJS0FJQUlRZ0RRQ0FJSUFWQkJteHFJZ292QVFBaUJ5QURUd1JBSUFrZ0F6WUN0QUVnQ1NBSE5nS3dBU0FDUVFGQnNPWUFJQWxCc0FGcUVBaEJBQ0VPREFZTEFrQWdDaThCQkNJS1JRMEFJQXBCLy84RFJnMEFJQXBCQVdzaUNpQURTUTBBSUFrZ0F6WUNwQUVnQ1NBS05nS2dBU0FDUVFGQnNPWUFJQWxCb0FGcUVBaEJBQ0VPREFZTElBVkJBV29pQlNBR1J3MEFDd3dCQ3lBRERRSU1BUXNEUUNBRFFRRnJJUU5CQUNFRkEwQWdDQ0FGUVFac2FpOEJBQ0FEUndSQUlBVkJBV29pQlNBR1J3MEJEQVFMQ3lBRERRQUxDd0pBSUFSRkRRQWdCQ2dDRENJS1JRMEFBa0FDUUNBRUxRQVNJZ2dFUUVFQUlRVkJBU0VIQTBBZ0FTZ0NFQ0lESUFvZ0JVRUNkR292QVFBaUJFMEVRQ0FKSUFNMkFwUUJJQWtnQkRZQ2tBRWdBa0VCUWJEbUFDQUpRWkFCYWhBSVFRQWhCd3NnQlVFQmFpSUZJQWhIRFFBTElBaEJCQkFNSWdORkRRRkJBQ0VGQTBBQ1FDQUtJQVZCQW5ScUlnUXRBQUlpQmtFQ1R3UkFJQWtnQmpZQ1JDQUpJQVUyQWtBZ0FrRUJRZHZaQUNBSlFVQnJFQWhCQUNFSERBRUxJQWdnQkMwQUF5SUVUUVJBSUFrZ0JEWUNnQUVnQWtFQlFhUFpBQ0FKUVlBQmFoQUlRUUFoQnd3QkN5QURJQVJCQW5ScUlRc0NRQ0FHUVFGSElnd05BQ0FMS0FJQVJRMEFJQWtnQkRZQ1VDQUNRUUZCbDlVQUlBbEIwQUJxRUFoQkFDRUhEQUVMQWtBZ0JnMEFJQVJGRFFBZ0NTQUVOZ0prSUFrZ0JUWUNZQ0FDUVFGQm10Z0FJQWxCNEFCcUVBaEJBQ0VIREFFTEFrQWdEQTBBSUFRZ0JVWU5BQ0FKSUFRMkFuZ2dDU0FGTmdKMElBa2dCVFlDY0NBQ1FRRkJ2dGdBSUFsQjhBQnFFQWhCQUNFSERBRUxJQXRCQVRZQ0FBc2dCVUVCYWlJRklBaEhEUUFMUVFBaEJRTkFBa0FDUUNBRElBVkJBblFpQkdvb0FnQkZCRUFnQkNBS2FpMEFBZzBCQ3lBRlFRRnFJZ1VnQ0VjTkFpQUhSUTBCSUFFb0FoQkJBVWNOQlVFQUlRVURRQ0FESUFWQkFuUnFLQUlBQkVBZ0NDQUZRUUZxSWdWSERRRU1Cd3NMUVFBaEJ5QUNRUUpCNzhRQVFRQVFDQ0FJUVJCUEJFQWdDRUh3QVhFaEIwRUFJUVFEUUNBS0lBUkJBblJxSWdaQkFUb0FBaUFHSUFRNkFBTWdCa0VCT2dBK0lBWkJBVG9BT2lBR1FRRTZBRFlnQmtFQk9nQXlJQVpCQVRvQUxpQUdRUUU2QUNvZ0JrRUJPZ0FtSUFaQkFUb0FJaUFHUVFFNkFCNGdCa0VCT2dBYUlBWkJBVG9BRmlBR1FRRTZBQklnQmtFQk9nQU9JQVpCQVRvQUNpQUdRUUU2QUFZZ0JpQUVRUUZ5T2dBSElBWWdCRUVQY2pvQVB5QUdJQVJCRG5JNkFEc2dCaUFFUVExeU9nQTNJQVlnQkVFTWNqb0FNeUFHSUFSQkMzSTZBQzhnQmlBRVFRcHlPZ0FySUFZZ0JFRUpjam9BSnlBR0lBUkJDSEk2QUNNZ0JpQUVRUWR5T2dBZklBWWdCRUVHY2pvQUd5QUdJQVJCQlhJNkFCY2dCaUFFUVFSeU9nQVRJQVlnQkVFRGNqb0FEeUFHSUFSQkFuSTZBQXNnQkVFUWFpSUVJQWRIRFFBTElBY2dDRVlOQmdzRFFDQUtJQWRCQW5ScUlnUWdCem9BQXlBRVFRRTZBQUlnQjBFQmFpSUhJQWhIRFFBTERBVUxJQWtnQlRZQ01DQUNRUUZCbzlJQUlBbEJNR29RQ0VFQUlRY2dCVUVCYWlJRklBaEhEUUVMQ3lBREVBbEJBQ0VPREFVTElBaEJCQkFNSWdNTkFRdEJBQ0VPSUFKQkFVR2Eyd0JCQUJBSURBTUxJQU1RQ1FzQ1FDQUFLQUo0SWdORkRRQWdBeWdDRENJUFJRUkFJQU1vQWdRUUNTQUFLQUo0S0FJSUVBa2dBQ2dDZUNnQ0FCQUpJQUFvQW5naUF5Z0NEQ0lFQkg4Z0JCQUpJQUFvQW5nRklBTUxFQWtnQUVFQU5nSjREQUVMSUFFb0FoZ2hEUUpBQWtBZ0F5MEFFaUlLQkVBZ0F5Z0NBQ0VVSUFNb0FnUWhCaUFES0FJSUlRaEJBQ0VGQWtBRFFDQU5JQThnQlVFQ2RHb3ZBUUJCTkd4cUtBSXNCRUFnQ2lBRlFRRnFJZ1ZIRFFFTUFnc0xJQWtnQlRZQ0lDQUNRUUZCMHVjQUlBbEJJR29RQ0VFQUlRNE1CZ3NnQ2tFMGJCQU5JZ3RGRFFGQkFDRUZBMEFnRHlBRlFRSjBhaUlETHdFQUlRY2dDeUFETFFBQ0JIOGdBeTBBQXdVZ0JRdEJOR3hxSWdRZ0RTQUhRVFJzYWlJRC9RQUNBUDBMQWdBZ0JDQURLQUl3TmdJd0lBUWdBLzBBQWlEOUN3SWdJQVFnQS8wQUFoRDlDd0lRSUFzZ0JVRTBiR29pQkNBREtBSUlJQU1vQWd4c1FRSjBFQllpQXpZQ0xDQURSUVJBSUFWQi8vOERjU0lBQkVBRFFDQUxJQUJCQVdzaUFFRTBiR29vQWl3UUNTQUFEUUFMQ3lBTEVBbEJBQ0VPSUFKQkFVR2U1d0JCQUJBSURBY0xJQVFnQlNBSWFpMEFBRFlDR0NBRUlBVWdCbW90QUFBMkFpQWdCVUVCYWlJRklBcEhEUUFMSUFBb0FuZ3ZBUkFpRUVFQmF5RVNBMEFnQ3lBVFFUUnNhaUlES0FJTUlBTW9BZ2hzSVFZZ0RTQVBJQk5CQW5ScUlnUXZBUUJCTkd4cUtBSXNJUWdDUUNBRUxRQUNSUVJBSUFaRkRRRWdBeWdDTENFRlFRQWhCMEVBSVFRQ1FDQUdRUVJKRFFBZ0JTQUlhMEVRU1EwQUlBWkJmSEVoQkVFQUlRTURRQ0FGSUFOQkFuUWlER29nQ0NBTWF2MEFBZ0Q5Q3dJQUlBTkJCR29pQXlBRVJ3MEFDeUFFSUFaR0RRSUxJQVFoQXlBR1FRTnhJZ3dFUUFOQUlBVWdBMEVDZENJUmFpQUlJQkZxS0FJQU5nSUFJQU5CQVdvaEF5QUhRUUZxSWdjZ0RFY05BQXNMSUFRZ0JtdEJmRXNOQVFOQUlBVWdBMEVDZENJRWFpQUVJQWhxS0FJQU5nSUFJQVVnQkVFRWFpSUhhaUFISUFocUtBSUFOZ0lBSUFVZ0JFRUlhaUlIYWlBSElBaHFLQUlBTmdJQUlBVWdCRUVNYWlJRWFpQUVJQWhxS0FJQU5nSUFJQU5CQkdvaUF5QUdSdzBBQ3d3QkN5QUdSUTBBSUJRZ0JDMEFBeUlEUVFKMGFpRUVJQXNnQTBFMGJHb29BaXdoQlVFQUlRTWdCa0VCUndSQUlBWkJmbkVoRlVFQUlRd0RRQ0FGSUFOQkFuUWlCMm9nQkNBSElBaHFLQUlBSWhFZ0VpQVFJQkZLRzBFQUlCRkJBRTRiSUFwc1FRSjBhaWdDQURZQ0FDQUZJQWRCQkhJaUIyb2dCQ0FISUFocUtBSUFJZ2NnRWlBSElCQklHMEVBSUFkQkFFNGJJQXBzUVFKMGFpZ0NBRFlDQUNBRFFRSnFJUU1nREVFQ2FpSU1JQlZIRFFBTEN5QUdRUUZ4UlEwQUlBVWdBMEVDZENJRGFpQUVJQU1nQ0dvb0FnQWlBeUFTSUFNZ0VFZ2JRUUFnQTBFQVRoc2dDbXhCQW5ScUtBSUFOZ0lBQ3lBVFFRRnFJaE1nQ2tjTkFBc01BZ3NnQ2tFMGJCQU5JZ3NOQVF0QkFDRU9JQUpCQVVHZTV3QkJBQkFJREFNTElBRW9BaEFpQXdSQVFRQWhCUU5BSUEwZ0JVRTBiR29vQWl3aUJBUkFJQVFRQ1FzZ0JVRUJhaUlGSUFOSERRQUxDeUFORUFrZ0FTQUtOZ0lRSUFFZ0N6WUNHQXNnQUNnQ2RDSUZSUTBCSUFVb0FnQWhCeUFGTHdFRUlnc0VRQ0FIUVNwcUlSSWdCMEVrYWlFVElBZEJIbW9oRVNBSFFSaHFJUlFnQjBFU2FpRVZJQWRCREdvaEZpQUhRUVpxSVJjZ0MwRUNheUVZUVFBaEJVRUJJUVFEUUFKQUlBRW9BaEFpQXlBSElBVkJCbXhxSWcwdkFRQWlCazBFUUNBSklBTTJBaFFnQ1NBR05nSVFJQUpCQWtITU55QUpRUkJxRUFnTUFRc2dEUzhCQkNJSVFRRnFRZi8vQTNGQkFVMEVRQ0FCS0FJWUlBWkJOR3hxSUEwdkFRSTdBVEFNQVFzZ0NFRUJheUlLUWYvL0EzRWlEeUFEVHdSQUlBa2dBellDQkNBSklBODJBZ0FnQWtFQ1FhTTNJQWtRQ0F3QkN3SkFJQVlnRDBZTkFDQU5Md0VDRFFBZ0NTQUJLQUlZSWdnZ0JrRTBiR29pQXlnQ01EWUM2QUVnQ1NBRC9RQUNJUDBMQTlnQklBa2dBLzBBQWhEOUN3UElBU0FKSUFQOUFBSUEvUXNEdUFFZ0F5QUlJQTlCTkd3aURHb2lDQ2tDQ0RjQ0NDQURJQWdwQWhBM0FoQWdBeUFJS1FJWU53SVlJQU1nQ0NrQ0lEY0NJQ0FESUFncEFpZzNBaWdnQXlBSUtBSXdOZ0l3SUFNZ0NDa0NBRGNDQUNBQktBSVlJQXhxSWdNZ0NmMEFBN2dCL1FzQ0FDQURJQW45QUFQWUFmMExBaUFnQXlBSi9RQUR5QUg5Q3dJUUlBTWdDU2dDNkFFMkFqQWdCVUVCYWlBTFR3MEFJQVFoQ0NBWUlBVnJRZi8vQTNFaUEwRUhUd1JBSUFRZ0EwRUJhaUlaUWZqL0IzRWlFR29oQ0NBSy9SQWhKQ0FHL1JBaEkwRUFJUXdEUUNBaklDUWdFaUFFSUF4cVFRWnNJZ05xSWhvZ0F5QVRhaUliSUFNZ0VXb2lIQ0FESUJScUloMGdBeUFWYWlJZUlBTWdGbW9pSHlBRElCZHFJaUFnQXlBSGFpSUQvUWdCQVAxVkFRQUIvVlVCQUFMOVZRRUFBLzFWQVFBRS9WVUJBQVg5VlFFQUJ2MVZBUUFISWlFZ0kvMHVJQ0VnSlAwdElpWDlUdjFTSVNJZ0lTQWovUzBnSmYxUUlpSDlHUUJCQVhFRVFDQURJQ0w5V1FFQUFBc2dJZjBaQVVFQmNRUkFJQ0FnSXYxWkFRQUJDeUFoL1JrQ1FRRnhCRUFnSHlBaS9Wa0JBQUlMSUNIOUdRTkJBWEVFUUNBZUlDTDlXUUVBQXdzZ0lmMFpCRUVCY1FSQUlCMGdJdjFaQVFBRUN5QWgvUmtGUVFGeEJFQWdIQ0FpL1ZrQkFBVUxJQ0g5R1FaQkFYRUVRQ0FiSUNMOVdRRUFCZ3NnSWYwWkIwRUJjUVJBSUJvZ0l2MVpBUUFIQ3lBTVFRaHFJZ3dnRUVjTkFBc2dFQ0FaUmcwQkN3TkFJQW9oQXdKQUlBWWdCeUFJUVFac2FpSU1Md0VBSWhCSEJFQWdCaUVESUE4Z0VFY05BUXNnRENBRE93RUFDeUFMSUFoQkFXb2lDRUgvL3dOeFJ3MEFDd3NnQVNnQ0dDQUdRVFJzYWlBTkx3RUNPd0V3Q3lBRVFRRnFJUVFnQlVFQmFpSUZJQXRIRFFBTElBQW9BblFpQlNnQ0FDRUhDeUFIQkg4Z0J4QUpJQUFvQW5RRklBVUxFQWtnQUVFQU5nSjBEQUVMUVFBaERpQUNRUUZCb3NVQVFRQVFDQXNnQ1VId0FXb2tBQ0FPQytrQkFRWi9Jd0JCSUdzaUJDUUFBbjhDUUNBQUtBSThJZ01FUUVFQklRVURRQ0FBS0FKTUtBSVlJQUFvQWtBZ0FrRUNkR29vQWdBaUJrRTBiR29vQWl4RkJFQWdCQ0FHTmdJUUlBRkJBa0hhT1NBRVFSQnFFQWhCQUNFRklBQW9BandoQXdzZ0FrRUJhaUlDSUFOSkRRQUxEQUVMUVFFaEJVRUJJQUFvQWt3aUF5Z0NFRVVOQVJvRFFDQURLQUlZSUFKQk5HeHFLQUlzUlFSQUlBUWdBallDQUNBQlFRSkIyamtnQkJBSVFRQWhCU0FBS0FKTUlRTUxJQUpCQVdvaUFpQURLQUlRU1EwQUN3dEJBU0FGRFFBYUlBRkJBVUcvRlVFQUVBaEJBQXNoQnlBRVFTQnFKQUFnQndzRUFFRi9DNFlIQWhaL0FuNGdBQ2dDR0NJUUtBSVFSUVJBUVFFUEN5QVFLQUlZSVEwZ0FDZ0NGQ2dDQUNnQ0ZDRUxBMEFnQVNBTktBSWtJZ0kyQWlRZ0N5Z0NIQ0lHSUFKQm1BRnNhaUVEQWtBQ1FBSi9JQUFvQWtBaUVRUkFJQVlnQ3lnQ0dFR1lBV3hxSWdKQmtBRnJLQUlBSUFKQm1BRnJLQUlBYXlFTUlBTkJER29oQmlBRFFRUnFJUVFnQXlnQ0NDRUNJQU1vQWdBaEJVRWtEQUVMSUFOQmxBRnFJUVlnQTBHTUFXb2hCQ0FES0FLUUFTSUNJQU1vQW9nQklnVnJJUXhCTkFzZ0Myb29BZ0FpRWtVTkFDQUVLQUlBSVFjZ0JpZ0NBQ0VKSUFJZ0JXc2hCaUFCS0FJSUlnTkNmeUFCTlFJb0loaUdRbitGSWhrZ0FUVUNFSHdnR0lpbklnaHFJUVFDZnlBRklBaExCRUFnQlNBSWF5RU9RUUFoQ0VFQUlBSWdCRTBOQVJvZ0JpQUVJQVZySWdackRBRUxJQWdnQldzaENDQUNJQVJOQkVBZ0JpQUlheUVHUVFBaERrRUFEQUVMUVFBaERpQURJUVlnQWlBRWF3c2hGU0FKSUFkcklRSWdBU2dDRENJRUlCa2dBVFVDRkh3Z0dJaW5JZ3BxSVFVQ2Z5QUhJQXBMQkVBZ0J5QUtheUVQUVFBaENrRUFJQVVnQ1U4TkFSb2dBaUFGSUFkcklnSnJEQUVMSUFvZ0Iyc2hDaUFGSUFsUEJFQWdBaUFLYXlFQ1FRQWhEMEVBREFFTFFRQWhEeUFFSVFJZ0NTQUZhd3NoQjBFQUlRVWdDRUVBU0EwQklBcEJBRWdOQVNBVlFRQklEUUVnQjBFQVNBMEJJQVpCQUVnTkFTQUNRUUJJRFFFZ0F5QVBiQ0FPYWlFSElBb2dER3dnQ0dvaENRSkFBa0FDUUNBQktBSXNJZ2dOQUNBSkRRQWdCdzBBSUFNZ0RFY05BQ0FESUFaSERRQWdBaUFFUncwQklBRWdDMEVrUVRRZ0VSdHFJZ0lvQWdBMkFpd2dBa0VBTmdJQURBTUxJQWdOQVFzZ0JFVU5BaUFFclNBRHJYNUNJSWluRFFJZ0F5QUViQ0lEUWYvLy8vOERTdzBDSUFFZ0EwRUNkQkFXSWdNMkFpd2dBMFVOQWlBR0lBRW9BZ2dpQkVZZ0FTZ0NEQ0lGSUFKR2NRMEFJQU5CQUNBRUlBVnNRUUowRUE0YUN5QUNSUTBBSUFKQkFYRWhGeUFHUVFKMElRWWdBU2dDTENBSFFRSjBhaUVFSUJJZ0NVRUNkR29oQlNBQ1FRRkhCRUFnQWtIKy8vLy9CM0VoQjBFQUlRSURRQ0FFSUFVZ0JoQUxJUllnQlNBTVFRSjBJZ2xxSWdnZ0NXb2hCU0FXSUFFb0FnaEJBblJxSUFnZ0JoQUxJQUVvQWdoQkFuUnFJUVFnQWtFQ2FpSUNJQWRIRFFBTEN5QVhSUTBBSUFRZ0JTQUdFQXNhQ3lBTFFjd0FhaUVMSUExQk5Hb2hEU0FCUVRScUlRRkJBU0VGSUJSQkFXb2lGQ0FRS0FJUVNRMEJDd3NnQlF2VkVnSUpmd3grSXdCQm9BRnJJZ1VrQUFKQUlBSkJJMDBFUUVFQUlRSWdBMEVCUWJZdVFRQVFDQXdCQ3lBQ1FTUnJJZ0lnQWtFRGJpSUpRUU5zUndSQVFRQWhBaUFEUVFGQnRpNUJBQkFJREFFTElBQW9Ba2doQmlBQklBVkJuQUZxSWdKQkFoQUtJQUFnQlNnQ25BRTdBVkFnQVVFQ2FpQUdRUWhxUVFRUUNpQUJRUVpxSUFaQkRHcEJCQkFLSUFGQkNtb2dCa0VFRUFvZ0FVRU9haUFHUVFScVFRUVFDaUFCUVJKcUlBQkIzQUJxUVFRUUNpQUJRUlpxSUFCQjRBQnFRUVFRQ2lBQlFScHFJQUJCMUFCcVFRUVFDaUFCUVI1cUlBQkIyQUJxUVFRUUNpQUJRU0pxSUFKQkFoQUtBa0FDUUFKQUlBVW9BcHdCSWdKQmdJQUJUUVJBSUFZZ0FqWUNFQ0FDSUFsSEJFQWdCU0FKTmdLRUFTQUZJQUkyQW9BQklBTkJBVUdoOEFBZ0JVR0FBV29RQ0VFQUlRSU1CUXNnQmlnQ0JDSUNJQVlvQWd3aUNFa2dCaWdDQ0NJTElBWW9BZ0FpQkV0eFJRUkFJQVVnQ0swZ0FxMTlOd040SUFVZ0M2MGdCSzE5TndOd0lBTkJBVUhyN0FBZ0JVSHdBR29RQ0VFQUlRSU1CUXNnQUNnQ1hDSUhRUUFnQUNnQ1lDSUtHMFVFUUNBRklBbzJBZ1FnQlNBSE5nSUFJQU5CQVVHVDhRQWdCUkFJUVFBaEFnd0ZDd0pBQWtBZ0FDZ0NWQ0lNSUFSTERRQkJmeUFISUF4cUlnY2dCeUFNU1JzZ0JFME5BQ0FBS0FKWUlnY2dBa3NOQUVGL0lBY2dDbW9pQ2lBSElBcExHeUFDU3cwQkMwRUFJUUlnQTBFQlFkWVVRUUFRQ0F3RkN3SkFJQUFvQXVBQkRRQWdBQ2dDMkFFaUIwVU5BQ0FBS0FMY0FTSUtSUTBBSUFzZ0JHc2lCQ0FIUmlBSUlBSnJJZ0lnQ2taeERRQWdCU0FDTmdKc0lBVWdCRFlDYUNBRklBbzJBbVFnQlNBSE5nSmdJQU5CQVVIVDZBQWdCVUhnQUdvUUNFRUFJUUlNQlFzZ0JpQUpRVFFRRENJRU5nSVlJQVJGRFFFQ1FDQUdLQUlRUlEwQUlBRkJKR29nQlVHWUFXb2lBa0VCRUFvZ0JDQUZLQUtZQVNJSlFRZDJJZ28yQWlBZ0JDQUpRZjhBY1VFQmFpSU1OZ0lZSUFBb0F1QUJJUXNnQVVFbGFpQUNRUUVRQ2lBRUlBVW9BcGdCTmdJQUlBRkJKbW9nQWtFQkVBb2dCQ0FGS0FLWUFTSUlOZ0lFUVFBaEFpQUVLQUlBSWdkQmdBSnJRWUYrU1FSQVFRQWhDUXdGQzBFQUlRa2dDRUdBQW10QmdYNUpEUVFnQkNnQ0dDSUlRUjlMRFFNZ0JFRUFOZ0lrSUFRZ0FDZ0NvQUUyQWloQkFTRUpJQVlvQWhCQkFVME5BRUVBSUFvZ0N4c2hDa0VBSUF3Z0N4c2hDeUFCUVNkcUlRRURRQ0FCSUFWQm1BRnFRUUVRQ2lBRUlBVW9BcGdCSWdkQkIzWWlDRFlDVkNBRUlBZEIvd0J4UVFGcUlnYzJBa3dDUUNBQUtBTGdBUTBBSUFBdEFMd0JRUVJ4RFFBZ0J5QUxSaUFJSUFwR2NRMEFJQVVnQ0RZQ1ZDQUZJQWMyQWxBZ0JTQUpOZ0pNSUFVZ0NqWUNTQ0FGSUFzMkFrUWdCU0FKTmdKQUlBTkJBa0hYN2dBZ0JVRkFheEFJQ3lBQlFRRnFJQVZCbUFGcUlnaEJBUkFLSUFRZ0JTZ0NtQUUyQWpRZ0FVRUNhaUFJUVFFUUNpQUVJQVVvQXBnQklnZzJBamdnQkNnQ05DSUhRWUFDYTBHQmZra05CU0FJUVlBQ2EwR0FmazBOQlNBRUtBSk1JZ2hCSUU4TkJDQUJRUU5xSVFFZ0JFRUFOZ0pZSUFRZ0FDZ0NvQUUyQWx3Z0JFRTBhaUVFSUFsQkFXb2lDU0FHS0FJUVNRMEFDd3RCQUNFQ0lBQW9BbHdpQ0VVTkJDQUFLQUpnSWd0RkRRUWdBQ0FJclNJTlFnRjlJZzhnQmlnQ0NDQUFLQUpVSWdkcnJYd2dEWUNuSWdFMkFtZ2dBQ0FMclNJT1FnRjlJaEFnQmlnQ0RDQUFLQUpZSWdwcnJYd2dEb0NuSWdRMkFtd0NRQUpBSUFGRkRRQWdCRVVOQUVILy93TWdCRzRnQVU4TkFRc2dCU0FFTmdJVUlBVWdBVFlDRUNBRFFRRkJ4ZWtBSUFWQkVHb1FDQXdGQ3lBQklBUnNJUWtDUUNBQUxRQkVRUUp4QkVBZ0FDQUFLQUljSUFkcklBaHVOZ0ljSUFBZ0FDZ0NJQ0FLYXlBTGJqWUNJQ0FBSUE4Z0FDZ0NKQ0FIYTYxOElBMkFQZ0lrSUFBZ0VDQUFLQUlvSUFwcnJYd2dEb0ErQWlnTUFRc2dBQ0FFTmdJb0lBQWdBVFlDSkNBQVFnQTNBaHdMSUFBZ0NVR01MQkFNSWdFMkFwd0JJQUZGQkVBZ0EwRUJRYzBkUVFBUUNBd0ZDeUFHS0FJUVFiZ0lFQXdoQVNBQUtBSU1JQUUyQXRBcklBQW9BZ3dvQXRBclJRUkFJQU5CQVVITkhVRUFFQWdNQlF0QkNrRVVFQXdoQVNBQUtBSU1JQUUyQXZBcklBQW9BZ3dpQVNnQzhDdEZCRUFnQTBFQlFjMGRRUUFRQ0F3RkN5QUJRUW8yQXZnclFRcEJGQkFNSVFFZ0FDZ0NEQ0FCTmdMOEt5QUFLQUlNSWdFb0F2d3JSUVJBSUFOQkFVSE5IVUVBRUFnTUJRc2dBVUVLTmdLRUxBSkFJQVlvQWhBaUJFVU5BQ0FHS0FJWUlRaEJBQ0VCSUFSQkFVY0VRQ0FFUVg1eElRc0RRQ0FJSUFGQk5HeHFJZ2NvQWlCRkJFQWdBQ2dDRENnQzBDc2dBVUc0Q0d4cVFRRWdCeWdDR0VFQmEzUTJBclFJQ3lBSUlBRkJBWElpQjBFMGJHb2lDaWdDSUVVRVFDQUFLQUlNS0FMUUt5QUhRYmdJYkdwQkFTQUtLQUlZUVFGcmREWUN0QWdMSUFGQkFtb2hBU0FDUVFKcUlnSWdDMGNOQUFzTElBUkJBWEZGRFFBZ0NDQUJRVFJzYWlJQ0tBSWdEUUFnQUNnQ0RDZ0MwQ3NnQVVHNENHeHFRUUVnQWlnQ0dFRUJhM1EyQXJRSUN5QUpCRUFnQUNnQ25BRWhBVUVBSVFJRFFDQUJJQVlvQWhCQnVBZ1FEQ0lFTmdMUUt5QUVSUVJBUVFBaEFpQURRUUZCelIxQkFCQUlEQWNMSUFGQmpDeHFJUUVnQWtFQmFpSUNJQWxKRFFBTEN5QUFRUVEyQWdnZ0JpZ0NFQ0lEQkVCQmZ5QUFLQUpZSWdFZ0FDZ0NZQ0lDSUFBb0FteEJBV3RzYWlJRUlBSnFJZ0lnQWlBRVNSc2lBaUFHS0FJTUlnUWdBaUFFU1J1dElSQkJmeUFBS0FKVUlnSWdBQ2dDWENJRUlBQW9BbWhCQVd0c2FpSUFJQVJxSWdRZ0FDQUVTeHNpQUNBR0tBSUlJZ1FnQUNBRVNSdXRJUkVnQVNBR0tBSUVJZ0FnQUNBQlNSdXRJUklnQWlBR0tBSUFJZ0FnQUNBQ1NSdXRJUk1nQmlnQ0dDRUFRUUFoQVFOQUlBQWdBRFVDQkNJTlFnRjlJaFFnRW53Z0RZQWlGVDRDRkNBQUlBQTFBZ0FpRGtJQmZTSVdJQk44SUE2QUloYytBaEFnQUVKL0lBQTFBaWdpRDRaQ2Y0VWlHQ0FRSUJSOElBMkFJQlY5UXYvLy8vOFBnM3dnRDRnK0Fnd2dBQ0FSSUJaOElBNkFJQmQ5UXYvLy8vOFBneUFZZkNBUGlENENDQ0FBUVRScUlRQWdBVUVCYWlJQklBTkhEUUFMQzBFQklRSU1CQXNnQlNBQ05nS1FBU0FEUVFGQjlqc2dCVUdRQVdvUUNFRUFJUUlNQXd0QkFDRUNJQVpCQURZQ0VDQURRUUZCelIxQkFCQUlEQUlMSUFVZ0NEWUNOQ0FGSUFrMkFqQWdBMEVCUWNmekFDQUZRVEJxRUFnTUFRc2dCU0FJTmdJb0lBVWdCellDSkNBRklBazJBaUFnQTBFQlFhSHJBQ0FGUVNCcUVBZ0xJQVZCb0FGcUpBQWdBZ3VlQXdFSGZ5TUFRUkJySWdZa0FBSi9JQUlnQWtFQlFRSWdBQ2dDU0NnQ0VDSUlRWUVDU1JzaUIwRUJkRUVGYWlJRWJpSUZJQVJzUmlBQ0lBUlBjVVVFUUNBRFFRRkJpaU5CQUJBSVFRQU1BUXNDZnlBQUtBSUlRUkJHQkVBZ0FDZ0NuQUVnQUNnQ3pBRkJqQ3hzYWd3QkN5QUFLQUlNQ3lFRVFRQWhBQ0FFTFFDSUxDSUNRUVJ4QkVBZ0JDZ0NwQU5CQVdvaEFBc2dBQ0FGYWlJRlFTQlBCRUFnQmlBRk5nSUFJQU5CQVVHTE95QUdFQWhCQUF3QkN5QUVJQUpCQkhJNkFJZ3NJQUFnQlVrRVFDQUVJQUJCbEFGc2FrR29BMm9oQWdOQUlBRWdBa0VCRUFvZ0FVRUJhaUlCSUFKQkJHb2dCeEFLSUFFZ0Iyb2lBU0FDUVFocVFRSVFDaUFDSUFJb0FnZ2lBeUFFS0FJSUlna2dBeUFKU1JzMkFnZ2dBVUVDYWlBQ1FReHFRUUVRQ2lBQlFRTnFJZ0VnQWtFUWFpQUhFQW9nQVNBSGFpSUJJQVpCREdwQkFSQUtJQUlnQmlnQ0REWUNKQ0FDSUFJb0FoQWlBeUFJSUFNZ0NFa2JOZ0lRSUFKQmxBRnFJUUlnQVVFQmFpRUJJQUJCQVdvaUFDQUZSdzBBQ3dzZ0JDQUZRUUZyTmdLa0EwRUJDeUVLSUFaQkVHb2tBQ0FLQyt3QkFRUi9Jd0JCRUdzaUJDUUFBbjhDUUNBQklBUkJDR29DZnlBQUtBSklLQUlRUVlBQ1RRUkFJQUlFUUVGL0lRVkJBUXdDQ3lBRFFRRkJ2aU5CQUJBSVFRQU1Bd3NnQWtFQlRRMEJRWDRoQlVFQ0N5SUdFQW9nQkNBQ0lBVnFOZ0lNSUFRb0FnZ2lBaUFBS0FKSUtBSVFJZ1ZQQkVBZ0JDQUZOZ0lFSUFRZ0FqWUNBQ0FEUVFGQnhqb2dCQkFJUVFBTUFnc2dBQ0FDSUFFZ0Jtb2dCRUVNYWlBREVEdEZCRUFnQTBFQlFiNGpRUUFRQ0VFQURBSUxRUUVnQkNnQ0RFVU5BUm9nQTBFQlFiNGpRUUFRQ0VFQURBRUxJQU5CQVVHK0kwRUFFQWhCQUFzaEJ5QUVRUkJxSkFBZ0J3dlpBUUVFZnlNQVFSQnJJZ1FrQUNBRUlBSTJBZ3dDUUFKQUlBQkJBQ0FCSUFSQkRHb2dBeEE3UlEwQUlBUW9BZ3dOQUFKL0lBQW9BZ2hCRUVZRVFDQUFLQUtjQVNBQUtBTE1BVUdNTEd4cURBRUxJQUFvQWd3TElRZEJBU0VGSUFBb0FrZ29BaEJCQWtrTkFTQUhLQUxRS3lJQ1FSeHFJUVpCQVNFQklBSWhBd05BSUFNZ0FpZ0NHRFlDMEFnZ0F5QUNLQUtrQmpZQzNBNGdBMEhVQ0dvZ0JrR0lCaEFMR2lBRFFiZ0lhaUVESUFGQkFXb2lBU0FBS0FKSUtBSVFTUTBBQ3d3QkN5QURRUUZCMWlKQkFCQUlDeUFFUVJCcUpBQWdCUXZXQVFFRGZ5TUFRUkJySWdRa0FBSkFJQUpCQVVFQ0lBQW9Ba2dvQWhBaUJrR0JBa2tiSWdWQkFtcEhCRUJCQUNFQUlBTkJBVUdLSUVFQUVBZ01BUXNDZnlBQUtBSUlRUkJHQkVBZ0FDZ0NuQUVnQUNnQ3pBRkJqQ3hzYWd3QkN5QUFLQUlNQ3lFQ0lBRWdCRUVNYWlBRkVBcEJBU0VBSUFFZ0JXb2lCU0FFUVFocVFRRVFDaUFHSUFRb0Fnd2lBVTBFUUNBRUlBWTJBZ1FnQkNBQk5nSUFJQU5CQVVIbzd3QWdCQkFJUVFBaEFBd0JDeUFGUVFGcUlBSW9BdEFySUFGQnVBaHNha0dvQm1wQkFSQUtDeUFFUVJCcUpBQWdBQXVFQWdFRmZ5TUFRUkJySWdRa0FBSi9JQUFvQWdoQkVFWUVRQ0FBS0FLY0FTQUFLQUxNQVVHTUxHeHFEQUVMSUFBb0Fnd0xJUVlDUUNBQ1FRRkJBaUFBS0FKSUlnY29BaEJCZ1FKSkd5SUZUUVJBUVFBaEFpQURRUUZCcENOQkFCQUlEQUVMSUFRZ0JVRi9jeUFDYWpZQ0RDQUJJQVJCQ0dvZ0JSQUtJQVFvQWdnaUNDQUhLQUlRVHdSQVFRQWhBaUFEUVFGQmtPa0FRUUFRQ0F3QkMwRUJJUUlnQVNBRmFpSUJJQVlvQXRBcklBaEJ1QWhzYWtFQkVBb2dBQ0FFS0FJSUlBRkJBV29nQkVFTWFpQURFRHhGQkVCQkFDRUNJQU5CQVVHa0kwRUFFQWdNQVFzZ0JDZ0NERVVOQUVFQUlRSWdBMEVCUWFRalFRQVFDQXNnQkVFUWFpUUFJQUlMckFZQkIzOGpBRUVRYXlJR0pBQWdCaUFDTmdJTUlBQW9Ba2doQ1FKL0lBQW9BZ2hCRUVZRVFDQUFLQUtjQVNBQUtBTE1BVUdNTEd4cURBRUxJQUFvQWd3TElnUWdCQzBBaUN4QkFYSTZBSWdzQWtBZ0FrRUVUUVJBSUFOQkFVRzhJa0VBRUFnTUFRc2dBU0FFUVFFUUNpQUVLQUlBUVFoUEJFQWdBMEVCUVpvaVFRQVFDQXdCQ3lBQlFRRnFJQVpCQ0dwQkFSQUtJQVFnQmlnQ0NDSUNOZ0lFSUFKQkJVNEVRQ0FEUVFGQjhTRkJBQkFJSUFSQmZ6WUNCQXNnQVVFQ2FpQUVRUWhxUVFJUUNpQUVLQUlJSWdkQmdJQUVhMEdBZ0h4TkJFQWdCaUFITmdJQUlBTkJBVUdwUFNBR0VBZ01BUXNnQkNBQUtBS2tBU0lDSUFjZ0FoczJBZ3dnQVVFRWFpQUVRUkJxUVFFUUNpQUVLQUlRUVFKUEJFQWdBMEVCUVljcVFRQVFDQXdCQ3lBQlFRVnFJUUlnQmlBR0tBSU1RUVZyTmdJTUFrQWdDU2dDRUNJSFJRMEFJQVFvQWdCQkFYRWhDQ0FFS0FMUUt5RUVRUUFoQ1NBSFFRaFBCRUFnQjBGNGNTRUJBMEFnQkNBRlFiZ0liR29nQ0RZQ0FDQUVJQVZCQVhKQnVBaHNhaUFJTmdJQUlBUWdCVUVDY2tHNENHeHFJQWcyQWdBZ0JDQUZRUU55UWJnSWJHb2dDRFlDQUNBRUlBVkJCSEpCdUFoc2FpQUlOZ0lBSUFRZ0JVRUZja0c0Q0d4cUlBZzJBZ0FnQkNBRlFRWnlRYmdJYkdvZ0NEWUNBQ0FFSUFWQkIzSkJ1QWhzYWlBSU5nSUFJQVZCQ0dvaEJTQUtRUWhxSWdvZ0FVY05BQXNMSUFkQkIzRWlBVVVOQUFOQUlBUWdCVUc0Q0d4cUlBZzJBZ0FnQlVFQmFpRUZJQWxCQVdvaUNTQUJSdzBBQ3d0QkFDRUZJQUJCQUNBQ0lBWkJER29nQXhBOFJRUkFJQU5CQVVHOElrRUFFQWdNQVFzZ0JpZ0NEQVJBSUFOQkFVRzhJa0VBRUFnTUFRc0NmeUFBS0FJSVFSQkdCRUFnQUNnQ25BRWdBQ2dDekFGQmpDeHNhZ3dCQ3lBQUtBSU1DeUVCSUFBb0FrZ29BaEJCQWs4RVFDQUJLQUxRS3lJQktBSUVRUUowSVFjZ0FVR3dCMm9oQ2lBQlFhd0dhaUVEUVFFaENTQUJJUUlEUUNBQ0lBSDlBQUlFL1FzQ3ZBZ2dBaUFCS0FJVU5nTE1DQ0FDUWVRT2FpQURJQWNRQ3hvZ0FrSG9EMm9nQ2lBSEVBc2FJQUpCdUFocUlRSWdDVUVCYWlJSklBQW9Ba2dvQWhCSkRRQUxDMEVCSVFVTElBWkJFR29rQUNBRkMrd0pBUVovSXdCQjhBQnJJZ1FrQUNBRVFRQTJBbWdDUUNBQ1FRaEhCRUFnQTBFQlFiMGVRUUFRQ0NBRFFRRkJ2UjVCQUJBSURBRUxJQUVnQUVITUFXcEJBaEFLSUFGQkFtb2dCRUhzQUdwQkJCQUtJQUZCQm1vZ0JFSGtBR3BCQVJBS0lBRkJCMm9nQkVIb0FHcEJBUkFLSUFBb0Fzd0JJZ0lnQUNnQ2FDSUlJQUFvQW14c1R3UkFJQVFnQWpZQ1lDQURRUUZCblRzZ0JFSGdBR29RQ0F3QkN5QUFLQUtjQVNBQ1FZd3NiR29oQlNBQ0lBaHVJUWNnQkNnQ1pDRUJBa0FnQUNnQ0xDSUdRUUJPSUFJZ0JrZHhEUUFnQlNnQzFDdEJBV29pQmlBQlJnMEFJQVFnQmpZQ1dDQUVJQUUyQWxRZ0JDQUNOZ0pRSUFOQkFVRzFPeUFFUWRBQWFoQUlRUUFoQlF3QkN5QUZJQUUyQXRRckFrQUNRQ0FFS0FKc0lnRkJBV3RCREUwRWZ5QUJRUXhIRFFFZ0JFRU1OZ0l3SUFOQkFrSDExd0FnQkVFd2FoQUlJQVFvQW13RklBRUxSUVJBSUFOQkJFR056d0JCQUJBSUlBQkJBVFlDT0FzQ1FBSkFBa0FDUUNBRktBTFlLeUlCQkVBZ0JDZ0NaQ0lHSUFGSkRRRWdCQ0FCTmdJa0lBUWdCallDSUNBRFFRRkJoU2NnQkVFZ2FoQUlJQUJCQVRZQ09FRUFJUVVNQndzZ0JDZ0NhQ0lHRFFFTUF3c2dCQ2dDYUNJR1JRMEJDeUFFSUFZZ0FDMEFSRUVFZGtFQmNXb2lBVFlDYUNBRUtBSmtJZ1lnQlNnQzJDc2lDVUVCYTBzRVFDQUVJQWsyQWdRZ0JDQUdOZ0lBSUFOQkFVR2lKaUFFRUFnZ0FFRUJOZ0k0UVFBaEJRd0ZDeUFCSUFaTkJFQWdCQ0FCTmdJVUlBUWdCallDRUNBRFFRRkI2U2NnQkVFUWFoQUlJQUJCQVRZQ09FRUFJUVVNQlFzZ0JTQUJOZ0xZS3dzZ0FTQUVLQUprUVFGcVJ3MEFJQUFnQUMwQVJFRUJjam9BUkFzZ0JDZ0NiQ0VCSUFCQkVEWUNDQ0FBUVFBZ0FVRU1heUFBS0FJNEd6WUNHQUpBSUFBb0Fpd2lBVUYvUmdSQVFRUWhCU0FDSUFjZ0NHeHJJZ0VnQUNnQ0hFa05BU0FCSUFBb0FpUlBEUUVnQnlBQUtBSWdTUTBCSUFjZ0FDZ0NLRTlCQW5RaEJRd0JDeUFBS0FMTUFTQUJSMEVDZENFRkN5QUFJQUF0QUVSQit3RnhJQVZ5T2dCRVFRRWhCU0FBS0FMSUFTSUJSUTBDSUFFb0FpZ2lCaUFBS0FMTUFTSUNRU2hzYWlJSElBSTJBZ0FnQnlBRUtBSmtJZ2cyQWd3Z0JDZ0NhQ0lCQkVBZ0J5QUJOZ0lFSUFjZ0JDZ0NhQ0lCTmdJSUlBY29BaEFpQWtVRVFDQUJRUmdRRENFQklBQW9Bc2dCS0FJb0lBQW9Bc3dCUVNoc2FpQUJOZ0lRSUFFTkJFRUFJUVVnQTBFQlFjazBRUUFRQ0F3RUN5QUNJQUZCR0d3UUVDRUJJQUFvQXNnQktBSW9JQUFvQXN3QlFTaHNhaUVDSUFGRkJFQWdBaWdDRUJBSlFRQWhCU0FBS0FMSUFTZ0NLQ0FBS0FMTUFVRW9iR3BCQURZQ0VDQURRUUZCeVRSQkFCQUlEQVFMSUFJZ0FUWUNFQXdEQ3lBSEtBSVFJZ0ZGQkVBZ0IwRUtOZ0lJUVFwQkdCQU1JUUVnQUNnQ3lBRW9BaWdpQmlBQUtBTE1BU0lDUVNoc2FpSUhJQUUyQWhBZ0FVVU5BaUFFS0FKa0lRZ0xJQWdnQmlBQ1FTaHNhaUlDS0FJSVNRMENJQUlnQ0VFQmFpSUNOZ0lJSUFFZ0FrRVliQkFRSVFFZ0FDZ0N5QUVvQWlnZ0FDZ0N6QUZCS0d4cUlRSWdBVVVFUUNBQ0tBSVFFQWxCQUNFRklBQW9Bc2dCS0FJb0lBQW9Bc3dCUVNoc2FpSUFRUUEyQWdnZ0FFRUFOZ0lRSUFOQkFVSEpORUVBRUFnTUF3c2dBaUFCTmdJUURBSUxJQVFnQVRZQ1FDQURRUUZCZ3RvQUlBUkJRR3NRQ0VFQUlRVU1BUXRCQUNFRklBZEJBRFlDQ0NBRFFRRkJ5VFJCQUJBSUN5QUVRZkFBYWlRQUlBVUxxd2NCQ0g4akFFSFFBR3NpQkNRQUlBUkJBVFlDVEFKQUFrQWdBQ2dDeUFFaUJTZ0NLQ0lERFFBZ0JTQUFLQUpzSUFBb0FtaHNJZ00yQWlRZ0EwRW9FQXdoQXlBQUtBTElBU0lGSUFNMkFpZ2dBMFVFUUVFQUlRVU1BZ3NnQlNnQ0pFVU5BQU5BUVFBaEJTQURJQVpCS0d3aUIyb2lBMEVBTmdJVUlBTkI1QUEyQWh4QjVBQkJHQkFNSVFrZ0J5QUFLQUxJQVNJSUtBSW9JZ05xSUFrMkFoZ2dDVVVOQWlBR1FRRnFJZ1lnQ0NnQ0pFa05BQXNMSUFBb0Fpd2hDUUpBSUFNb0FoQkZEUUFDUUNBRElBbEJLR3hxSWdNb0FnUkZCRUFnQVNBQUtRTXdRZ0o4SUFJUUx3MEJRUUFoQlNBQ1FRRkJweWxCQUJBSURBTUxJQUVnQXlnQ0VDa0RBRUlDZkNBQ0VDOE5BRUVBSVFVZ0FrRUJRYWNwUVFBUUNBd0NDeUFBS0FJSVFZQUNSdzBBSUFCQkNEWUNDQXNDUUNBQUtBSnNJQUFvQW1oc0lnZEZEUUFnQUNnQ25BRWhCVUVBSVFNZ0IwRUlUd1JBSUFkQmVIRWhDRUVBSVFZRFFDQUZJQU5CakN4c2FrRi9OZ0xVS3lBRklBTkJBWEpCakN4c2FrRi9OZ0xVS3lBRklBTkJBbkpCakN4c2FrRi9OZ0xVS3lBRklBTkJBM0pCakN4c2FrRi9OZ0xVS3lBRklBTkJCSEpCakN4c2FrRi9OZ0xVS3lBRklBTkJCWEpCakN4c2FrRi9OZ0xVS3lBRklBTkJCbkpCakN4c2FrRi9OZ0xVS3lBRklBTkJCM0pCakN4c2FrRi9OZ0xVS3lBRFFRaHFJUU1nQmtFSWFpSUdJQWhIRFFBTEN5QUhRUWR4SWdaRkRRQURRQ0FGSUFOQmpDeHNha0YvTmdMVUt5QURRUUZxSVFNZ0NrRUJhaUlLSUFaSERRQUxDMEVBSVFVZ0FDQUVRY2dBYWtFQUlBUkJ4QUJxSUFSQlFHc2dCRUU4YWlBRVFUaHFJQVJCTkdvZ0JFSE1BR29nQVNBQ0VDQkZEUUFnQ1VFQmFpRUhBMEFDUUNBRUtBSk1SUTBBSUFBZ0JDZ0NTQ0lEUVFCQkFDQUJJQUlRSkVVTkFpQUFLQUpvSVFnZ0FDZ0NiQ0VLSUFRZ0EwRUJhaUlHTmdJZ0lBUWdDQ0FLYkRZQ0pDQUNRUVJCc05jQUlBUkJJR29RQ0NBQUtBTFFBU0FBS0FKTUtBSVlFRzFGRFFJZ0FDZ0NuQUVnQTBHTUxHeHFJZ1VvQXR3cklnZ0VRQ0FJRUFrZ0JVSUFOd0xjS3dzZ0JDQUdOZ0lRSUFKQkJFSDIvQUFnQkVFUWFoQUlJQU1nQ1VZRVFDQUJJQUFvQXNnQktRTUlRZ0o4SUFJUUx3MEJRUUFoQlNBQ1FRRkJweWxCQUJBSURBTUxJQVFnQnpZQ0JDQUVJQVkyQWdBZ0FrRUNRZTNsQUNBRUVBaEJBQ0VGSUFBZ0JFSElBR3BCQUNBRVFjUUFhaUFFUVVCcklBUkJQR29nQkVFNGFpQUVRVFJxSUFSQnpBQnFJQUVnQWhBZ0RRRU1BZ3NMSUFBZ0FoQnJJUVVMSUFSQjBBQnFKQUFnQlF2SUJnSUhmd0YrSXdCQjBBQnJJZ01rQUNBRFFRRTJBa3dDUUFKQUlBQW9BbWdpQkVFQlJ3MEFJQUFvQW14QkFVY05BQ0FBS0FKVURRQWdBQ2dDV0EwQUlBQW9Ba3dpQlNnQ0FBMEFJQVVvQWdRTkFDQUZLQUlJSUFBb0FseEhEUUFnQlNnQ0RDQUFLQUpnUncwQVFRQWhCQ0FBSUFOQnlBQnFRUUFnQTBIRUFHb2dBMEZBYXlBRFFUeHFJQU5CT0dvZ0EwRTBhaUFEUWN3QWFpQUJJQUlRSUVVTkFRSkFJQUFnQXlnQ1NFRUFRUUFnQVNBQ0VDUUVRQ0FBS0FKTUlnRW9BaEFOQVVFQklRUU1Bd3NnQWtFQlFaTEJBRUVBRUFnTUFnc2dBU2dDR0NFQlFRQWhBZ05BSUFFZ0FrRTBiQ0lFYWlnQ0xCQUpJQUFvQWt3aUJTZ0NHQ0lCSUFScUlnWWdBQ2dDMEFFaUJ5Z0NGQ2dDQUNnQ0ZDQUNRY3dBYkdvaUNDZ0NKRFlDTENBR0lBY29BaGdvQWhnZ0JHb29BaVEyQWlRZ0NFRUFOZ0lrUVFFaEJDQUNRUUZxSWdJZ0JTZ0NFRWtOQUFzTUFRc0RRQUpBQW44Q1FDQUVRUUZIRFFBZ0FDZ0NiRUVCUncwQUlBQW9BcHdCS0FMY0swVU5BQ0FEUVFBMkFrZ2dBRUVBTmdMTUFTQUFJQUFvQWdoQmdBRnlOZ0lJUVFBTUFRdEJBQ0VFSUFBZ0EwSElBR3BCQUNBRFFjUUFhaUFEUVVCcklBTkJQR29nQTBFNGFpQURRVFJxSUFOQnpBQnFJQUVnQWhBZ1JRMERJQU1vQWt4RkRRRWdBeWdDU0FzaUIwRUJhaUVFSUFBZ0IwRUFRUUFnQVNBQ0VDUWhDU0FBS0FKb0lBQW9BbXhzSVFVZ0NVVUVRQ0FESUFVMkFnUWdBeUFFTmdJQUlBSkJBVUdYT1NBREVBaEJBQ0VFREFNTElBTWdCVFlDSkNBRElBUTJBaUFnQWtFRVFiRFhBQ0FEUVNCcUVBZ2dBQ2dDMEFFZ0FDZ0NUQ2dDR0JCdFJRUkFRUUFoQkF3REN3SkFBa0FnQUNnQ2FFRUJSdzBBSUFBb0FteEJBVWNOQUNBQUtBSk1JZ1VvQWdBZ0FDZ0NTQ0lHS0FJQVJ3MEJJQVVvQWdRZ0JpZ0NCRWNOQVNBRktBSUlJQVlvQWdoSERRRWdCU2dDRENBR0tBSU1SdzBCQ3lBQUtBS2NBU0FIUVl3c2JHb2lCU2dDM0NzaUJrVU5BQ0FHRUFrZ0JVSUFOd0xjS3dzZ0F5QUVOZ0lRSUFKQkJFSDIvQUFnQTBFUWFoQUlJQUVwQXdnaUNsQUVma0lBQlNBS0lBRXBBemg5QzFBRVFDQUFLQUlJUWNBQVJnMEJDeUFJUVFGcUlnZ2dBQ2dDYUNJRUlBQW9BbXhzUncwQkN3c2dBQ0FDRUdzaEJBc2dBMEhRQUdva0FDQUVDN1VHQVF4L0lBQW9Ba2doQ1FKQUlBQW9BbWdnQUNnQ2JHd2lEQVJBSUFrb0FoQWlBVUc0Q0d3aERTQUJJQUZzUVFKMElRb2dBQ2dDRENFRUlBQW9BcHdCSVFNRFFDQURLQUxRS3lFTElBTWdCRUdNTEJBTElnRkJBRFlDNkNzZ0FVRi9OZ0xVS3lBQlFRQTJBckFvSUFGQkFEWUNoQ3dnQVVFQU5nTHdLeUFCUWdBM0F2Z3JJQUVnQ3pZQzBDc2dBU0FCTFFDSUxFSDhBWEU2QUlnc0lBUW9BdWdyQkVBZ0FTQUtFQTBpQXpZQzZDc2dBMFVFUUVFQUR3c2dBeUFFS0FMb0t5QUtFQXNhQ3lBQklBUW9BdmdyUVJSc0lnVVFEU0lETmdMd0swRUFJUWdnQTBVTkFpQURJQVFvQXZBcklBVVFDeG9nQkNnQzlDc2lCZ1JBSUFRb0F2QXJJUU1nQVNnQzhDc2hCVUVBSVFjRFFDQURLQUlNQkVBZ0JTQURLQUlRRUEwaUJqWUNEQ0FHUlFSQVFRQVBDeUFHSUFNb0Fnd2dBeWdDRUJBTEdpQUVLQUwwS3lFR0N5QUJJQUVvQXZnclFRRnFOZ0w0S3lBRlFSUnFJUVVnQTBFVWFpRURJQWRCQVdvaUJ5QUdTUTBBQ3dzZ0FTQUVLQUtFTEVFVWJDSUZFQTBpQXpZQy9Dc2dBMFVOQWlBRElBUW9BdndySUFVUUN4b2dBU0FFS0FLRUxDSUlOZ0tFTENBSUJFQWdCQ2dDL0NzaEF5QUJLQUw4S3lFRlFRQWhCd05BSUFNb0FnZ2lCZ1JBSUFVZ0FTZ0M4Q3NnQmlBRUtBTHdLMnRxTmdJSUN5QURLQUlNSWdZRVFDQUZJQUVvQXZBcklBWWdCQ2dDOEN0cmFqWUNEQXNnQlVFVWFpRUZJQU5CRkdvaEF5QUhRUUZxSWdjZ0NFY05BQXNMSUFzZ0JDZ0MwQ3NnRFJBTEdpQUJRWXdzYWlFRElBNUJBV29pRGlBTVJ3MEFDd3RCQVNFSUlBQUNmMEVBUVFGQnlBQVFEQ0lCUlEwQUdpQUJJQUV0QUNoQi9nRnhRUUZ5T2dBb0lBRkJBVUVFRUF3aUJEWUNGQ0FCSUFRTkFCb2dBUkFKUVFBTElnRTJBdEFCSUFGRkJFQkJBQThMSUFBb0F0UUJJUVZCQUNFRUlBRWdBRUhRQUdvMkFod2dBU0FKTmdJWVFRRkIwQVlRRENFRElBRW9BaFFnQXpZQ0FBSkFJQU5GRFFBZ0NTZ0NFRUhNQUJBTUlRTWdBU2dDRkNnQ0FDSUhJQU0yQWhRZ0EwVU5BQ0FISUFrb0FoQTJBaEFnQUNnQ3BBRWhCQ0FCSUFVMkFpd2dBU0FFTmdJQVFRRWhCQXNnQkEwQUlBQW9BdEFCRUU1QkFDRUlJQUJCQURZQzBBRWdBa0VCUWNJYlFRQVFDQXNnQ0F2VkVnTU1md0Y5QVg0akFFRXdheUlJSkFBZ0FFRUJOZ0lJQW44Q1FBSkFJQUVnQ0VFb2FpSUZRUUlnQWhBU1FRSkhEUUFnQlNBSVFTeHFRUUlRQ2lBSUtBSXNRYy8rQTBjTkFDQUFRUUkyQWdnZ0FDZ0N5QUVnQVNrRE9FSUNmU0lRTndNQUlBZ2dFRGNERUNBQ1FRUkIvdDRBSUFoQkVHb1FDQ0FBS0FMSUFTSURLUU1BSVJBZ0F5Z0NHQ0lIUVFGcUlnVWdBeWdDSUNJRVRRUkFJQU1vQWh3aEJBd0NDeUFEQW44Z0JMTkRBQURJUXBJaUQwTUFBSUJQWFNBUFF3QUFBQUJnY1FSQUlBK3BEQUVMUVFBTElnVTJBaUFnQXlnQ0hDQUZRUmhzRUJBaUJBUkFJQU1nQkRZQ0hDQURLQUlZSWdkQkFXb2hCUXdDQ3lBREtBSWNFQWtnQTBFQU5nSWdJQU5DQURjREdDQUNRUUZCcVIxQkFCQUlDeUFDUVFGQnhmVUFRUUFRQ0VFQURBRUxJQVFnQjBFWWJHb2lCRUVDTmdJUUlBUWdFTVEzQXdnZ0JFSFAvZ003QVFBZ0F5QUZOZ0lZSUFFZ0FDZ0NFRUVDSUFJUUVrRUNSd1JBSUFKQkFVR1dFa0VBRUFoQkFBd0JDeUFBS0FJUUlBaEJLR3BCQWhBS0FrQUNRQ0FJS0FJb0lnUkJrUDhEUndSQUEwQkI4TDBCSVFjZ0JFSC8vUU5OQkVBZ0NDQUVOZ0lBSUFKQkFVSEtFQ0FJRUFoQkFBd0ZDd05BSUFjaUJTZ0NBQ0lEQkVBZ0JVRU1haUVISUFNZ0JFY05BUXNMQWtBQ1FDQUREUUJCQWlFR0lBSkJBa0gxSEVFQUVBaEJsaEloQndKQUFrQWdBU0FBS0FJUVFRSWdBaEFTUVFKSERRQURRQ0FBS0FJUUlBaEJMR3BCQWhBS1FmQzlBU0VESUFnb0Fpd2lCRUdBL2dOUEJFQURRQ0FESWdVb0FnQWlEQVJBSUFOQkRHb2hBeUFFSUF4SERRRUxDeUFGS0FJRUlBQW9BZ2h4UlFSQVFmd29JUWNNQXdzZ0RBUkFJQXhCa1A4RFJnUkFJQWhCa1A4RE5nSW9EQWNMSUFFcEF6Z2hFQ0FBS0FMSUFTSURLQUlZSWdWQkFXb2lCQ0FES0FJZ0lnZE5CRUFnQXlnQ0hDRUhEQVVMSUFNQ2Z5QUhzME1BQU1oQ2tpSVBRd0FBZ0U5ZElBOURBQUFBQUdCeEJFQWdENmtNQVF0QkFBc2lCVFlDSUNBREtBSWNJQVZCR0d3UUVDSUhCRUFnQXlBSE5nSWNJQU1vQWhnaUJVRUJhaUVFREFVTElBTW9BaHdRQ1NBRFFRQTJBaUFnQTBJQU53TVlRYWtkSVFjTUF3c2dCa0VDYWlFR0N5QUJJQUFvQWhCQkFpQUNFQkpCQWtZTkFBc0xJQUpCQVNBSFFRQVFDQ0FDUVFGQi9zY0FRUUFRQ0VFQURBY0xJQWNnQlVFWWJHb2lCU0FHTmdJUUlBVWdFS2NnQm11c053TUlJQVZCQURzQkFDQURJQVEyQWhnZ0NDQU1OZ0lvUWZDOUFTRUVBMEFnQkNJRktBSUFJZ05GRFFFZ0JFRU1haUVFSUFNZ0RFY05BQXNMSUFVb0FnUWdBQ2dDQ0hGRkJFQWdBa0VCUWZ3b1FRQVFDRUVBREFZTElBRWdBQ2dDRUVFQ0lBSVFFa0VDUndSQUlBSkJBVUdXRWtFQUVBaEJBQXdHQ3lBQUtBSVFJQWhCSkdwQkFoQUtJQWdvQWlRaUJFRUJUUVJBSUFKQkFVR2hMa0VBRUFoQkFBd0dDeUFJSUFSQkFtc2lCellDSkNBQUtBSVFJUVFnQUNnQ0ZDQUhTUVJBSUFRZ0J4QVFJZ1JGQkVBZ0FDZ0NFQkFKSUFCQ0FEY0RFQ0FDUVFGQjFDVkJBQkFJUVFBTUJ3c2dBQ0FFTmdJUUlBQWdDQ2dDSkNJSE5nSVVDeUFCSUFRZ0J5QUNFQklpQkNBSUtBSWtSd1JBSUFKQkFVR1dFa0VBRUFoQkFBd0dDeUFBSUFBb0FoQWdCQ0FDSUFVb0FnZ1JBUUJGQkVBZ0FrRUJRYWdTUVFBUUNFRUFEQVlMSUFFcEF6Z2hFQ0FJS0FJa0lRd0NRQ0FBS0FMSUFTSUZLQUlZSWdaQkFXb2lCeUFGS0FJZ0lnUk5CRUFnQlNnQ0hDRUVEQUVMSUFVQ2Z5QUVzME1BQU1oQ2tpSVBRd0FBZ0U5ZElBOURBQUFBQUdCeEJFQWdENmtNQVF0QkFBc2lCRFlDSUNBRktBSWNJQVJCR0d3UUVDSUVSUTBGSUFVZ0JEWUNIQ0FGS0FJWUlnWkJBV29oQndzZ0JDQUdRUmhzYWlJRUlBeEJCR28yQWhBZ0JDQVFweUFNYTBFRWE2dzNBd2dnQkNBRE93RUFJQVVnQnpZQ0dDQUJJQUFvQWhCQkFpQUNFQkpCQWtjRVFDQUNRUUZCbGhKQkFCQUlRUUFNQmd0QkFTQUtJQU5CM1A0RFJoc2hDa0VCSUFzZ0EwSFMvZ05HR3lFTFFRRWdEU0FEUWRIK0EwWWJJUTBnQUNnQ0VDQUlRU2hxUVFJUUNpQUlLQUlvSWdSQmtQOERSdzBCQ3dzZ0RRMEJDeUFDUVFGQm1DUkJBQkFJUVFBTUFnc2dDMFVFUUNBQ1FRRkJ4aVJCQUJBSVFRQU1BZ3NnQ2tVRVFDQUNRUUZCOUNSQkFCQUlRUUFNQWd0QkFDRURRUUFoRFNNQVFSQnJJZ1FrQUVFQklRY0NRQ0FBTFFDOEFVRUJjVVVOQUFKQUlBQW9BbkFpQzBVTkFBSkFBMEFnQUNnQ2RDQU5RUU4wYWlJRktBSUFJZ29FUUNBRElBVW9BZ1FpQm1zaUJVRUFJQU1nQlU4YklRVWdBeUFHU1FSQUlBWWdBMnNoQ3lBRElBcHFJUW9EUUNBTFFRUkpCRUJCamlzaEF3d0ZDeUFLSUFSQkRHcEJCQkFLSUFRb0Fnd2lBMEYvY3lBSlNRUkFRZlFxSVFNTUJRc2dBeUFMUVFScklnWnJJQVVnQXlBR1N5SU1HeUVGSUFNZ0NXb2hDU0FHSUFOcklRc2dDa0VBSUFNZ0RCdHFRUVJxSVFvZ0F5QUdTUTBBQ3lBQUtBSndJUXNMSUFVaEF3c2dEVUVCYWlJTklBdEpEUUFMSUFORkRRRkJBQ0VISUFKQkFVSHBGa0VBRUFnTUFndEJBQ0VISUFKQkFTQURRUUFRQ0F3QkN5QUFJQWtRRFNJRE5nS0lBU0FEUlFSQVFRQWhCeUFDUVFGQnZpQkJBQkFJREFFTElBQWdDVFlDZkNBQUtBSjBJUVlDUUNBQUtBSndJZ29FUUVFQUlRbEJBQ0VEUVFBaEJRTkFJQVlnQlVFRGRDSU5haUlNS0FJQUlnc0VRQ0FBS0FLSUFTQURhaUVLQW44Z0RDZ0NCQ0lHSUFsTkJFQWdDaUFMSUFZUUN4b2dBeUFHYWlFRElBa2dCbXNNQVFzZ0NpQUxJQWtRQ3hvZ0F5QUphaUVESUFZZ0NXc2lCZ1JBSUFrZ0Myb2hDUU5BSUFaQkJFa05CaUFKSUFSQkNHcEJCQkFLSUFsQkJHb2hDU0FBS0FLSUFTQURhaUVLSUFaQkJHc2lCaUFFS0FJSUlndEpCRUFnQ2lBSklBWVFDeG9nQXlBR2FpRURJQVFvQWdnZ0Jtc01Bd3NnQ2lBSklBc1FDeG9nQkNnQ0NDSUtJQU5xSVFNZ0NTQUthaUVKSUFZZ0Ntc2lCZzBBQ3d0QkFBc2hDU0FBS0FKMElBMXFLQUlBRUFrZ0FDZ0NkQ0lHSUExcVFnQTNBZ0FnQUNnQ2NDRUtDeUFGUVFGcUlnVWdDa2tOQUFzZ0FDZ0NmQ0VKSUFBb0FvZ0JJUU1MSUFBZ0NUWUNrQUVnQUNBRE5nSjRJQUJCQURZQ2NDQUdFQWtnQUVFQU5nSjBEQUVMUVFBaEJ5QUNRUUZCaml0QkFCQUlDeUFFUVJCcUpBQWdCMFVFUUNBQ1FRRkJqejFCQUJBSVFRQU1BZ3NnQWtFRVFZZlhBRUVBRUFnZ0FDZ0N5QUVnQVNrRE9FTCsvLy8vRDN4Qy8vLy8vdytETndNSUlBQkJDRFlDQ0VFQkRBRUxJQVVvQWh3UUNTQUZRUUEyQWlBZ0JVSUFOd01ZSUFKQkFVR3BIVUVBRUFoQkFBc2hEaUFJUVRCcUpBQWdEZ3NjQUNBQUtBSUlSU0FBS0FMQUFVRUFSeUFBS0FMRUFVRUFSM0Z4Q3dRQVFRQUxEd0FnQUFSQUlBQWdBVFlDdUFFTEM0OEJBUVIvSUFBb0FoZ2lBUVJBSUFBb0Fod2lBMEUwYmlFRUlBTkJORThFZjBFQUlRTURRQ0FCS0FJQUlnSUVRQ0FDUVFGckVBa2dBVUVBTmdJQUN5QUJLQUlFSWdJRVFDQUNFQWtnQVVFQU5nSUVDeUFCS0FJSUlnSUVRQ0FDRUFrZ0FVRUFOZ0lJQ3lBQlFUUnFJUUVnQTBFQmFpSURJQVJIRFFBTElBQW9BaGdGSUFFTEVBa2dBRUVBTmdJWUN3dUdBUUVFZnlBQUtBSVlJZ0VFUUNBQUtBSWNJZ0pCd0FCUEJIOGdBa0VHZGlFRVFRQWhBZ05BSUFFb0FnQWlBd1JBSUFNUUNTQUJRUUEyQWdBTElBRW9BZ1FpQXdSQUlBTVFDU0FCUVFBMkFnUUxJQUVvQWp3UUNTQUJRUUEyQWp3Z0FVRkFheUVCSUFKQkFXb2lBaUFFUncwQUN5QUFLQUlZQlNBQkN4QUpJQUJCQURZQ0dBc0xQd0VCZnlBQUJFQWdBQ2dDZENJQkJFQWdBUkFKSUFCQkFEWUNkQXNnQUNnQ2VDSUJCRUFnQVJBSklBQkJBRFlDZUFzZ0FDZ0NsQUVRQ1NBQUVBa0xDOEdtQlFSY2Z3SjdCbjRCZlNNQVFlQUFheUlqSkFBZ0FDZ0NDQ0VhQWtBQ1FBSkFBa0FnQUNnQ0FFVUVRQ0FhSUJvb0FoQWdHaWdDQ0dzZ0dpZ0NGQ0FhS0FJTWEyeEJBblFpQmhBV0lnTTJBandnQTBVRVFDQUFLQUlrR2lBQUtBSWdRUUZCMFR4QkFCQUlJQUFvQWlRYUlBQkJIR29oRUF3REN5QURRUUFnQmhBT0dnd0JDeUFhS0FJOElnTkZEUUFnQXhBSklCcEJBRFlDUEFzZ0FDZ0NFQ0l5S0FJY0lESW9BaGhCbUFGc2FpSURRWmdCYXlnQ0FDRTFJQU5Ca0FGcktBSUFJVFlnQUNnQ0ZDRXZJQUFvQWd3aE1DQUFLQUlFSVRjZ0FDZ0NIQ2dDQUVVTkFpQUFRUnhxSVJBQ1FBSi9RUUFnQVNnQ0JDSURRUUJNRFFBYUlBRW9BZ0FoQmdKQUEwQWdCaUFIUVF4c2FpSUVLQUlBUlEwQklBZEJBV29pQnlBRFJ3MEFDMEVBREFFTElBUW9BZ1FMSWdRTkFFRUJRWndCRUF3aUJFVUVRQ0FBS0FJZ1FRRkJrREJCQUJBSURBSUxJQVJCQURZQ2pBRWdBU2dDQkNJRFFmLy8vLzhIUndSL0FuOGdBU2dDQUNFR0lBTkJBRW9FUUFOQUlBWWdDVUVNYkdvaUJ5Z0NBRVVFUUNBSEtBSUlJZ01FZnlBSEtBSUVJQU1SQWdBZ0FTZ0NBQVVnQmdzZ0NVRU1iR29pQVVFUE5nSUlJQUVnQkRZQ0JFRUJEQU1MSUFsQkFXb2lDU0FEUncwQUN3dEJBQ0FHSUFOQkRHeEJER29RRUNJRFJRMEFHaUFCSUFNMkFnQWdBeUFCS0FJRUlnWkJER3hxSWdOQkR6WUNDQ0FESUFRMkFnUWdBMEVBTmdJQUlBRWdCa0VCYWpZQ0JFRUJDd1ZCQUFzTkFDQUFLQUlnUVFGQmpUNUJBQkFJSUFRb0FuUWlBUVJBSUFFUUNTQUVRUUEyQW5RTElBUW9BbmdpQVFSQUlBRVFDU0FFUVFBMkFuZ0xJQVFvQXBRQkVBa2dCQkFKREFFTElBUWdBQ2dDR0RZQ2tBRWdBQ2dDS0NFcklBQW9BaVFoSVNBQUtBSWdJUjBnTHlnQ3FBWWhFU0F3S0FJUUlRRUNRQUpBSUM4b0FoQWlGa0hBQUhFRVFDQVdJUW9qQUVHd0Ftc2lEeVFBQWtBZ0VRUkFJQ0VFUUVFQUlRY2dIVUVCUVlFWVFRQVFDQXdDQzBFQUlRY2dIVUVCUVlFWVFRQVFDQXdCQ3lBRUtBSjBJUWNDUUFKQUlCb29BaFFnR2lnQ0RHc2lBeUFhS0FJUUlCb29BZ2hySWdac0lnRWdCQ2dDaEFGTEJFQWdCeEFKSUFRZ0FVRUNkQ0lSRUJZaUJ6WUNkQ0FIUlFSQVFRQWhCd3dFQ3lBRUlBRTJBb1FCREFFTElBZEZEUUVnQVVFQ2RDRVJDeUFIUVFBZ0VSQU9HZ3NnQkNnQ2VDRUhBa0FnQkNnQ2lBRkJ6eFJMRFFBZ0J4QUpJQVJCd05JQUVCWWlCellDZUNBSERRQkJBQ0VIREFFTElBUkIwQlEyQW9nQklBZEJBRUhBMGdBUURob2dCQ0FETmdLQUFTQUVJQVkyQW53Z0dpZ0NHQ0lDUlFSQVFRRWhCd3dCQ3lBYUtBSWNJUTFCQVNFSEFrQUNRQUpBQWtBQ1FDQWFLQUkwSWdNRVFDQWFLQUlFSVFsQkFDRUhRUUFoQVFKQUlBTkJCRThFUUNBRFFYeHhJUUVEUUNBSklBaEJBM1JxSWdaQkhHb2dCa0VVYWlBR1FReHFJQWI5Q1FJRS9WWUNBQUg5VmdJQUF2MVdBZ0FESUY3OXJnRWhYaUFJUVFScUlnZ2dBVWNOQUFzZ1hpQmVJRjc5RFFnSkNnc01EUTRQQUFFQ0F3QUJBZ1A5cmdFaVhpQmVJRjc5RFFRRkJnY0FBUUlEQUFFQ0F3QUJBZ1A5cmdIOUd3QWhCeUFCSUFOR0RRRUxBMEFnQ1NBQlFRTjBhaWdDQkNBSGFpRUhJQUZCQVdvaUFTQURSdzBBQ3dzZ0EwRUJSZ1JBSUFRb0FwQUJSUTBGQ3lBSElBUW9BcGdCVFEwQklBUW9BcFFCSUFjUUVDSVJEUUpCQUNFSERBWUxJQVFvQXBBQlJRMEZDeUFFS0FLVUFTSVJEUUZCQUNFSERBUUxJQVFnQnpZQ21BRWdCQ0FSTmdLVUFRc2dHaWdDTkVVRVFFRUFJUWNNQWdzZ0dpZ0NCQ0VJUVFBaEIwRUFJUUVEUUNBSElCRnFJQWdnQVVFRGRDSURhaUlHS0FJQUlBWW9BZ1FRQ3hvZ0dpZ0NCQ0lJSUFOcUtBSUVJQWRxSVFjZ0FVRUJhaUlCSUJvb0FqUkpEUUFMREFFTElCb29BZ1FvQWdBaEVRdEJBQ0VCUVFBaENBSi9RUUFnR2lnQ0tDSURSUTBBR2lBYUtBSUFJZ1lvQWdnaENFRUFJQU5CQVVZTkFCb2dCaWdDSUFzaEF5QUNJQTFySVVVQ1FDQURJQWhxSWdoRkJFQkJBQ0VKREFFTFFRRWhBU0FhS0FJQUlnTW9BZ0FoQlVFQUlRa2dDRUVCUmdSQVFRQWhBUXdCQ3lBREtBSVlJUWtMSUVWQkFXb2hGaUFFS0FKMElRNGdCQ2dDZUNFVUlCb29BZ3doRWlBYUtBSVVJUmdnR2lnQ0NDRWtJQm9vQWhBaEt3SkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FDQUJSUTBBSUFrTkFDQWhSUTBCSUIxQkFrSDh6d0JCQUJBSVFRRWhDQXdDQ3lBSVFRUkpEUUVnSVFSQUlBOGdDRFlDY0NBZFFRRkIvY1VBSUE5QjhBQnFFQWdNQ0FzZ0R5QUlOZ0pnSUIxQkFVSDl4UUFnRDBIZ0FHb1FDRUVBSVFjTUNBc2dIVUVDUWZ6UEFFRUFFQWdnR2lnQ0dDSUJRUjVMRFFGQkFTRU1JQUVnRms4TkF3d0ZDeUFhS0FJWUlnRkJIazBOQVNBaFJRMEFJQThnQVRZQ0lDQWRRUUZCcTlzQUlBOUJJR29RQ0F3RkN5QVBJQUUyQWdBZ0hVRUJRYXZiQUNBUEVBaEJBQ0VIREFVTElBRWdGa2tOQVNBSVFRSkpCRUFnQ0NFTURBRUxJQUVnRmtjRVFDQUlJUXdNQVF0QkFTRU1RWkRHQVMwQUFBMEFJQ0ZGQkVCQmtNWUJRUUU2QUFBZ0R5QUlOZ0pBSUIxQkFrR0J6QUFnRDBGQWF4QUlEQUVMUVpER0FTMEFBRVVFUUVHUXhnRkJBVG9BQUNBUElBZzJBbEFnSFVFQ1FZSE1BQ0FQUWRBQWFoQUlDd3NDUUFKQUlBVkJBa2tOQUNBRklBZExEUUFnQlNBSmFpQUhUUTBCQ3lBaEJFQkJBQ0VISUIxQkFVSER4UUJCQUJBSURBVUxRUUFoQnlBZFFRRkJ3OFVBUVFBUUNBd0VDd0pBQWtBZ0JTQVJhaUlUUVFGckxRQUFRUVIwSUJOQkFtc3RBQUJCRDNGeUlnWkJBa2tOQUNBRklBWklEUUFnQmtId0gwa05BUXNnSVFSQVFRQWhCeUFkUVFGQjV2SUFRUUFRQ0F3RkMwRUFJUWNnSFVFQlFlYnlBRUVBRUFnTUJBc2dHaWdDSENFbUlBOUJBRFlDa0FJZ0QwRUFOZ0tZQWlBUFFnQTNBNGdDSUE5Q0FEY0RxQUlnRDBJQU53S2NBaUFQSUFaQkFXc2lCellDbEFJZ0R5QUZJQkZxSUFacklnRTJBb0FDUXY4QklXQWdCa0VDVHdSQUlBRXhBQUFoWUF0QkNDRURJQTlCQ0RZQ2tBSWdEeUFHUVFKcklnZzJBcFFDSUE4Z1lFSVBoQ0JnSUFkQkFVWWJJbUEzQTRnQ0lBOGdBU0FHUVFGS2FpSUhOZ0tBQWlBUElHQkMvd0ZSSWcwMkFwZ0NBbjhDUUNBQlFRTnhJZ0pCQTBZTkFFTC9BU0ZoSUEwRVFFRUFJQWN0QUFCQmp3RkxEUUlhQ3lBR1FRTk9CRUFnQnpFQUFDRmhDeUFQSUFaQkEyc2lEVFlDbEFJZ0QwRVBRUkFnWUVML0FWRWlDeHNpQXpZQ2tBSWdEeUFISUFaQkFrcHFJZ0UyQW9BQ0lBOGdZVUlQaENCaElBaEJBVVliSW1GQy93RlJOZ0tZQWlBUElHQkNCMElJSUFzYmhpQmhoQ0pnTndPSUFpQUNRUUpHRFFBZ1lVTC9BVkVFUUVFQUlBRXRBQUJCandGTERRSWFDMEwvQVNGaUlBWkJCRTRFUUNBQk1RQUFJV0lMSUE4Z0JrRUVheUlITmdLVUFpQVBJQUVnQmtFRFNtb2lBVFlDZ0FJZ0R5QmlRZytFSUdJZ0RVRUJSaHNpWWtML0FWRTJBcGdDSUE4Z0EwRUhRUWdnWVVML0FWRWlDQnRxSWdNMkFwQUNJQThnWUVJSFFnZ2dDQnVHSUdLRUltQTNBNGdDSUFKQkFVWU5BRUwvQVNGaElHSkMvd0ZSQkVCQkFDQUJMUUFBUVk4QlN3MENHZ3NnQmtFRlRnUkFJQUV4QUFBaFlRc2dEeUFHUVFWck5nS1VBaUFQSUFFZ0JrRUVTbW8yQW9BQ0lBOGdZVUlQaENCaElBZEJBVVliSW1GQy93RlJOZ0tZQWlBUElBTkJCMEVJSUdKQy93RlJJZ0ViYWlJRE5nS1FBaUFQSUdCQ0IwSUlJQUViaGlCaGhDSmdOd09JQWdzZ0R5QmdRY0FBSUFOcnJZWTNBNGdDUVFFTFJRUkFJQ0VFUUVFQUlRY2dIVUVCUWQ3VUFFRUFFQWdNQlF0QkFDRUhJQjFCQVVIZTFBQkJBQkFJREFRTElDc2dKR3NoRlNBUElBWkJBbXNpQ3pZQzlBRWdEeUFGSUJGcUlnSkJBMnNpQXpZQzRBRWdEeUFDUVFKckxRQUFJaGxCandGTElnMDJBdmdCSUE4Z0dVRUVkcTBpWURjRDZBRWdEMEVEUVFRZ1lFSUhnMElIVVJzaUFUWUM4QUVnQTBFRGNVRUJhaUlISUFzZ0J5QUxTQnNoQ0FKQUFrQWdCa0VDVEFSQUlBOGdDeUFJYXlJQ05nTDBBUXdCQ3lBUElBSkJCR3NpQnpZQzRBRWdEeUFETFFBQUloZEJqd0ZMSWcwMkF2Z0JJQThnRjYwaVlTQUJyWVlnWUlRaVlEY0Q2QUVnRDBFSVFRZEJDQ0JoUXY4QWcwTC9BRkViSUJsQmp3Rk5HeUFCYWlJQk5nTHdBUUpBSUFoQkFVWUVRQ0FISVFNTUFRc2dEeUFDUVFWcklnTTJBdUFCSUE4Z0J5MEFBQ0laUVk4QlN5SU5OZ0w0QVNBUElCbXRJbUVnQWEyR0lHQ0VJbUEzQStnQklBOUJDRUVIUVFnZ1lVTC9BSU5DL3dCUkd5QVhRWThCVFJzZ0FXb2lBVFlDOEFFZ0NFRUNSZzBBSUE4Z0FrRUdheUlITmdMZ0FTQVBJQU10QUFBaUYwR1BBVXNpRFRZQytBRWdEeUFYclNKaElBR3RoaUJnaENKZ053UG9BU0FQUVFoQkIwRUlJR0ZDL3dDRFF2OEFVUnNnR1VHUEFVMGJJQUZxSWdFMkF2QUJJQWhCQTBZRVFDQUhJUU1NQVFzZ0R5QUNRUWRySWdNMkF1QUJJQThnQnpFQUFDSmhRbzhCVmlJTk5nTDRBU0FQSUdFZ0FhMkdJR0NFSW1BM0ErZ0JJQTlCQ0VFSFFRZ2dZVUwvQUlOQy93QlJHeUFYUVk4QlRSc2dBV29pQVRZQzhBRUxJQThnQ3lBSWF5SUNOZ0wwQVNBQlFTQkxEUUVMQWtBZ0FrRUVUZ1JBSUFOQkEyc29BZ0FoQnlBUElBSkJCR3MyQXZRQklBOGdBMEVFYXpZQzRBRU1BUXNnQWtFQVRBUkFRUUFoQnd3QkN5QUNRUUZ4SVVjQ1FDQUNRUUZHQkVCQkdDRUlRUUFoQnd3QkN5QUNRZjcvLy84SGNTRVhRUmdoQ0VFQUlRZEJBQ0VMQTBBZ0R5QURRUUZySWg4MkF1QUJJQU10QUFBaFJpQVBJQU5CQW1zaUF6WUM0QUVnRHlBQ1FRRnJOZ0wwQVNBZkxRQUFJUjhnRHlBQ1FRSnJJZ0kyQXZRQklFWWdDSFFnQjNJZ0h5QUlRUWhyZEhJaEJ5QUlRUkJySVFnZ0MwRUNhaUlMSUJkSERRQUxDeUJIUlEwQUlBOGdBMEVCYXpZQzRBRWdBeTBBQUNGSUlBOGdBa0VCYXpZQzlBRWdTQ0FJZENBSGNpRUhDeUFQSUFkQi93RnhJZ05CandGTE5nTDRBU0FQUVFkQkNDQUhRWUNBZ1BnSGNVR0FnSUQ0QjBZYlFRZ2dEUnNpQWtFSVFRZEJDQ0FIUVlDQS9BTnhRWUNBL0FOR0d5QUhRZi8vLy85NFRSdHFJZ2hCQ0VFSFFRZ2dCMEdBL2dGeFFZRCtBVVliSUFkQkVIWkIvd0Z4SWcxQmp3Rk5HMm9pQzBFSVFRZEJDQ0FIUWY4QWNVSC9BRVliSUFkQkNIWkIvd0Z4SWhsQmp3Rk5HeUFCYW1vMkF2QUJJQThnRFNBQ2RDQUhRUmgyY2lBWklBaDBjaUFESUF0MGNxMGdBYTJHSUdDRU53UG9BUXNnRDBIQUFXb2dFU0FGSUFaclFmOEJFRlFDZjBFQUlBeEJBa2tOQUJvZ0QwR2dBV29nRXlBSlFRQVFWRUVBSUF4QkFrWU5BQnBDQUNGZ1FnQWhZaUFQUVFFMkFwZ0JJQTlCQURZQ2tBRWdEMElBTndPSUFTQVBJQWxCQVdzaUJqWUNsQUVnRHlBRklCRnFJQWxxSWdOQkFXc2lBVFlDZ0FFZ0FVRURjU0VGQWtBZ0NVRUFUQVJBSUFFaEF3d0JDeUFQSUFOQkFtc2lBellDZ0FFZ0FURUFBQ0ZnQ3lBUElHQTNBNGdCSUE4Z1lFS1BBVllpRVRZQ21BRWdEMEVIUVFnZ1lFTC9BSU5DL3dCUkd5SU5OZ0tRQVFKQUlBVkZEUUFnRHlBSlFRSnJJZ0kyQXBRQkFrQWdDVUVDU0FSQUlBTWhCd3dCQ3lBUElBTkJBV3NpQnpZQ2dBRWdBekVBQUNGaUN5QVBJR0pDandGV0loRTJBcGdCSUE4Z1lpQU5yWVlnWUlRaVlUY0RpQUVnRDBFSVFRZEJDQ0JpUXY4QWcwTC9BRkViSUdCQ2p3RllHeUFOYWlJTk5nS1FBU0FGUVFGR0JFQWdCeUVESUdFaFlDQUdJUWtnQWlFR0RBRUxJQThnQ1VFRGF5SUlOZ0tVQVFKQUlBbEJBMGdFUUNBSElRRU1BUXNnRHlBSFFRRnJJZ0UyQW9BQklBY3hBQUFoWXdzZ0R5QmpRbzhCVmlJUk5nS1lBU0FQSUdNZ0RhMkdJR0dFSW1BM0E0Z0JJQTlCQ0VFSFFRZ2dZMEwvQUlOQy93QlJHeUJpUW84QldCc2dEV29pRFRZQ2tBRWdCVUVDUmdSQUlBRWhBeUFDSVFrZ0NDRUdEQUVMSUE4Z0NVRUVheUlHTmdLVUFVSUFJV0lDUUNBSlFRUklCRUFnQVNFRERBRUxJQThnQVVFQmF5SUROZ0tBQVNBQk1RQUFJV0lMSUE4Z1lrS1BBVllpRVRZQ21BRWdEeUJpSUEydGhpQmdoQ0pnTndPSUFTQVBRUWhCQjBFSUlHSkMvd0NEUXY4QVVSc2dZMEtQQVZnYklBMXFJZzAyQXBBQklBZ2hDUXNnRFVFZ1RRUkFBa0FnQ1VFRlRnUkFJQU5CQTJzb0FnQWhCeUFQSUFsQkJXczJBcFFCSUE4Z0EwRUVhellDZ0FFTUFRdEJBQ0VISUFsQkFrZ05BRUVZSVFrRFFDQVBJQU5CQVdzaUFUWUNnQUVnQXkwQUFDRkpJQThnQmtFQmF5SUNOZ0tVQVNCSklBbDBJQWR5SVFjZ0JrRUJTeUZLSUFFaEF5QUpRUWhySVFrZ0FpRUdJRW9OQUFzTElBOGdCMEgvQVhFaUFVR1BBVXMyQXBnQklBOUJCMEVJSUFkQmdJQ0ErQWR4UVlDQWdQZ0hSaHRCQ0NBUkd5SURRUWhCQjBFSUlBZEJnSUQ4QTNGQmdJRDhBMFliSUFkQi8vLy8vM2hORzJvaUJrRUlRUWRCQ0NBSFFZRCtBWEZCZ1A0QlJoc2dCMEVRZGtIL0FYRWlDVUdQQVUwYmFpSUNRUWhCQjBFSUlBZEIvd0J4UWY4QVJoc2dCMEVJZGtIL0FYRWlDRUdQQVUwYklBMXFhallDa0FFZ0R5QUpJQU4wSUFkQkdIWnlJQWdnQm5SeUlBRWdBblJ5clNBTnJZWWdZSVEzQTRnQkMwRUJDeUV4SUJnZ0Vtc2hIeUFXUVFGcUlTd2dGRUVBT2dEQUVDQVVRY0FRYWlFTElBOUJnQUpxRUNFaEFpQVZRUUJLQkVBZ0prRUJheUVUSUJRaEF5QUxJUWhCQUNFUklBNGhCa0VBSVEwRFFDQU5JUVVnRVVFSWRDQVBRZUFCYWhBcVFmOEFjVUVCZEhKQnNQMEFhaThCQUNFQkFrQWdFUTBBSUFGQkFDQUNRUUpySWdkQmYwWWJJUUVnQWtFQlNnUkFJQWNoQWd3QkN5QVBRWUFDYWhBaElRSUxJQThwQStnQklXUWdEeWdDOEFFaFN5QURJQU1vQWdBZ0FVRUVkaUlZUVFOeElBRkJBblpCTUhGeUlDSjBjaUlXTmdJQUlBRkJCWFpCQjNFZ0FVRVFjU0llUVFSMmNpRVJJRXNnQVVFSGNTSUhheUVOSUdRZ0I2MklJbUNuSVFsQkFDRUhJQlVnQlVFQ2Nrb0VRQ0FSUVFoMElBbEIvd0J4UVFGMGNrR3cvUUJxTHdFQUlRY0NRQ0FSRFFBZ0IwRUFJQUpCQW1zaUNVRi9SaHNoQnlBQ1FRRktCRUFnQ1NFQ0RBRUxJQTlCZ0FKcUVDRWhBZ3NnQjBFRWRrRUJjU0FIUVFWMlFRZHhjaUVSSUEwZ0IwRUhjU0lKYXlFTklHQWdDYTJJSW1DbklRa0xJQU1nQjBFQ2RFR0FCbkVnQjBFd2NYSWdJa0VFYW5RZ0ZuSTJBZ0FDUUNBSFFRSjJRUUp4SUFGQkEzWkJBWEZ5SWhkQkEwY05BRUVFUVFNZ0FrRUNheUlXUVg5R0d5RVhJQUpCQVVvRVFDQVdJUUlNQVFzZ0QwR0FBbW9RSVNFQ0N3Si9JQmRGQkVBZ0QwS0JnSUNBRURjQ2VFRUFEQUVMSUJkQkFrMEVRQ0FQUVFFZ0NVRUhjVUhrblFGcUxRQUFJaFpCQlhaQmZ5QVdRUUoyUVFkeElobDBRWDl6SUFrZ0ZrRURjU0lKZG5GcVFRRnFJaFlnRjBFQlJpSVhHellDZkNBUElCWkJBU0FYR3pZQ2VDQUpJQmxxREFFTElBa2dDVUVIY1VIa25RRnFMUUFBSWhaQkEzRWlHWFloQ1NBWFFRTkdCRUFnRmtFRmRrRUJhaUVYSUJsQkEwWUVRQ0FQSUFsQkFYRkJBbkkyQW53Z0R5QVhRWDhnRmtFQ2RrRUhjU0lXZEVGL2N5QUpRUUYyY1dvMkFuZ2dGa0VFYWd3Q0N5QVBJQmNnQ1NBSlFRZHhRZVNkQVdvdEFBQWlDVUVEY1NJU2RpSWdRWDhnRmtFQ2RrRUhjU0lXZEVGL2MzRnFOZ0o0SUE5QmZ5QUpRUUoyUVFkeEloZDBRWDl6SUNBZ0ZuWnhJQWxCQlhacVFRRnFOZ0o4SUJZZ0dXb2dFbW9nRjJvTUFRc2dEeUFKSUFsQkIzRkI1SjBCYWkwQUFDSUpRUU54SWhKMklpQkJmeUFXUVFKMlFRZHhJaGQwUVg5emNTQVdRUVYyYWtFRGFqWUNlQ0FQUVg4Z0NVRUNka0VIY1NJV2RFRi9jeUFnSUJkMmNTQUpRUVYyYWtFRGFqWUNmQ0FTSUJscUlCZHFJQlpxQ3lFSkFrQWdMQ0FQS0FKNElobFBCRUFnRHlnQ2ZDSVNJQ3hORFFFTElDRUVRRUVBSVFjZ0hVRUJRYW4yQUVFQUVBZ01Cd3RCQUNFSElCMUJBVUdwOWdCQkFCQUlEQVlMSUE4Z0RTQUphellDOEFFZ0R5QmdJQW10aURjRDZBRWdCMEh3QVhFZ0dFRVBjWEpCL3dGQi93RWdCVUVFYWlJTklCVnJRUUYwZGlBTklCVk1HeUlKSUFsQjFRQnhJQjlCQVVvYklnbEJmM054QkVBZ0lRUkFRUUFoQnlBZFFRRkJ2OW9BUVFBUUNBd0hDMEVBSVFjZ0hVRUJRYi9hQUVFQUVBZ01CZ3NDUUFKQUlCNEVRQ0FQUWNBQmFoQVRJUmNnRHlBUEtBTFFBU0FaSUFGQkUzUkJIM1ZxSWhack5nTFFBU0FQSUE4cEE4Z0JJQmF0aURjRHlBRWdGMEYvSUJaMFFYOXpjU0FCUVFoMlFRRnhJQlowY2tFQmNrRUNhaUFUZENBWFFSOTBjaUVXREFFTFFRQWhGaUFKUVFGeFJRMEJDeUFHSUJZMkFnQUxBa0FnQVVFZ2NRUkFJQTlCd0FGcUVCTWhGeUFQSUE4b0F0QUJJQmtnQVVFU2RFRWZkV29pRm1zMkF0QUJJQThnRHlrRHlBRWdGcTJJTndQSUFTQUdJQlZCQW5ScUlCZEJmeUFXZEVGL2MzRWdBVUVKZGtFQmNTQVdkSEpCQVhJaUZrRUNhaUFUZENBWFFSOTBjallDQUNBSVFTQWdGbWRySWhZZ0NDMEFBRUgvQUhFaUZ5QVdJQmRMRzBHQUFYSTZBQUFNQVFzZ0NVRUNjVVVOQUNBR0lCVkJBblJxUVFBMkFnQUxJQVpCQkdvaEZ3SkFBa0FnQVVIQUFIRUVRQ0FQUWNBQmFoQVRJUmdnRHlBUEtBTFFBU0FaSUFGQkVYUkJIM1ZxSWhack5nTFFBU0FQSUE4cEE4Z0JJQmF0aURjRHlBRWdHRUYvSUJaMFFYOXpjU0FCUVFwMlFRRnhJQlowY2tFQmNrRUNhaUFUZENBWVFSOTBjaUVXREFFTFFRQWhGaUFKUVFSeFJRMEJDeUFYSUJZMkFnQUxJQWhCQURvQUFRSkFJQUZCZ0FGeEJFQWdEMEhBQVdvUUV5RVlJQThnRHlnQzBBRWdHU0FCUVJCMFFSOTFhaUlXYXpZQzBBRWdEeUFQS1FQSUFTQVdyWWczQThnQklCY2dGVUVDZEdvZ0dFRi9JQlowUVg5emNTQUJRUXQyUVFGeElCWjBja0VCY2lJQlFRSnFJQk4wSUJoQkgzUnlOZ0lBSUFoQm9IOGdBV2RyT2dBQkRBRUxJQWxCQ0hGRkRRQWdGeUFWUVFKMGFrRUFOZ0lBQ3lBR1FRaHFJUUVDUUFKQUlBZEJFSEVFUUNBUFFjQUJhaEFUSVJrZ0R5QVBLQUxRQVNBU0lBZEJFM1JCSDNWcUloWnJOZ0xRQVNBUElBOHBBOGdCSUJhdGlEY0R5QUVnR1VGL0lCWjBRWDl6Y1NBSFFRaDJRUUZ4SUJaMGNrRUJja0VDYWlBVGRDQVpRUjkwY2lFWERBRUxRUUFoRnlBSlFSQnhSUTBCQ3lBQklCYzJBZ0FMQWtBZ0IwRWdjUVJBSUE5QndBRnFFQk1oR1NBUElBOG9BdEFCSUJJZ0IwRVNkRUVmZFdvaUZtczJBdEFCSUE4Z0R5a0R5QUVnRnEySU53UElBU0FCSUJWQkFuUnFJQmxCZnlBV2RFRi9jM0VnQjBFSmRrRUJjU0FXZEhKQkFYSWlBVUVDYWlBVGRDQVpRUjkwY2pZQ0FDQUlRU0FnQVdkcklnRWdDQzBBQVVIL0FIRWlGaUFCSUJaTEcwR0FBWEk2QUFFTUFRc2dDVUVnY1VVTkFDQUJJQlZCQW5ScVFRQTJBZ0FMSUFaQkRHb2hBUUpBQWtBZ0IwSEFBSEVFUUNBUFFjQUJhaEFUSVJrZ0R5QVBLQUxRQVNBU0lBZEJFWFJCSDNWcUloWnJOZ0xRQVNBUElBOHBBOGdCSUJhdGlEY0R5QUVnR1VGL0lCWjBRWDl6Y1NBSFFRcDJRUUZ4SUJaMGNrRUJja0VDYWlBVGRDQVpRUjkwY2lFWERBRUxRUUFoRnlBSlFjQUFjVVVOQVFzZ0FTQVhOZ0lBQ3lBSVFRSnFJZ2hCQURvQUFBSkFJQWRCZ0FGeEJFQWdEMEhBQVdvUUV5RVdJQThnRHlnQzBBRWdFaUFIUVJCMFFSOTFhaUlKYXpZQzBBRWdEeUFQS1FQSUFTQUpyWWczQThnQklBRWdGVUVDZEdvZ0ZrRi9JQWwwUVg5emNTQUhRUXQyUVFGeElBbDBja0VCY2lJQlFRSnFJQk4wSUJaQkgzUnlOZ0lBSUFoQm9IOGdBV2RyT2dBQURBRUxJQWxCZ0FGSkRRQWdBU0FWUVFKMGFrRUFOZ0lBQ3lBaVFSQnpJU0lnQXlBRlFRUnhhaUVESUFaQkVHb2hCaUFOSUJWSURRQUxDeUFLUVFoeElUZ2dGRUd3REdvaEtDQVVRYUFJYWlFcElCUkJrQVJxSVNVZ0gwRURUZ1JBSUJWQkEyd2hPU0FWUVFGMElUb2dKa0VCYXlFZ1FRTWdKa0VDYXlJQmRDRXRRUUVnQVhRaExpQVZRUWRxUVFGMlFmei8vLzhIY1VFRWFpRTlJQ3NnSkVGL2Myb2lBVUVEZGlJRFFRSjBJajVCQkdvaE95QURRUUZxSWo5Qi9QLy8vd054SWh4QkFuUWhQQ0FjUVFOMElSSWdBVUVZU1NGQVFRSWhHUU5BSUJraEV5QUxMUUFBSVJZZ0MwRUFPZ0FBSUNKQmIzRkJBbk1oSWdKQUlCVkJBRXdFUUNBVFFRSnFJUmtNQVFzZ0pTQVVJQk5CQkhFYklSRWdFMEVDYWlFWklBNGdFeUFWYkVFQ2RHb2hDRUVBSVFvZ0N5RUdRUUFoRFFOQUlBMGhCU0FHTFFBQlFRVjJRUVJ4SUFvZ0ZrRUhkbkp5SWdOQkNIUWdEMEhnQVdvUUtrSC9BSEZCQVhSeVFiQ05BV292QVFBaEFRSkFJQU1OQUNBQlFRQWdBa0VDYXlJRFFYOUdHeUVCSUFKQkFVb0VRQ0FESVFJTUFRc2dEMEdBQW1vUUlTRUNDeUFQS1FQb0FTRmxJQThvQXZBQklVd2dFU0FSS0FJQUlBRkJCSFpCQTNFZ0FVRUNka0V3Y1hJZ0luUnlJZ2syQWdBZ0FVSEFBSEVpS2tFRmRpQUJRWUFCY1NJblFRWjJjaUVLSUV3Z0FVRUhjU0lEYXlFWElHVWdBNjJJSW1DbklRMUJBQ0VZQWtBZ0ZTQUZRUUp5VEFSQVFRQWhCd3dCQ3lBS0lBWXRBQUpCQlhaQkJIRWdCaTBBQVVFSGRuSnlJZ05CQ0hRZ0RVSC9BSEZCQVhSeVFiQ05BV292QVFBaEJ3SkFJQU1OQUNBSFFRQWdBa0VDYXlJRFFYOUdHeUVISUFKQkFVb0VRQ0FESVFJTUFRc2dEMEdBQW1vUUlTRUNDeUFIUVFWMklBZEJCblp5UVFKeElRb2dGeUFIUVFkeElnTnJJUmNnWUNBRHJZZ2lZS2NoRFFzZ0VTQUhRUUowUVlBR2NTQUhRVEJ4Y2lBaVFRUnFkQ0FKY2pZQ0FFRUJJUWxCQVNFREFrQWdCMEVDZGtFQ2NTQUJRUU4yUVFGeGNpSWVSUTBBSUEwZ0RVRUhjVUhrblFGcUxRQUFJZ05CQTNFaURYWWhDU0FlUVFOSEJFQkJBU0FKUVg4Z0EwRUNka0VIY1NJWWRFRi9jM0VnQTBFRmRtcEJBV29pQXlBZVFRRkdJaDRiSVFrZ0EwRUJJQjRiSVFNZ0RTQVlhaUVZREFFTElBbEJCM0ZCNUowQmFpMEFBQ0llUVFOeElqTWdEU0FEUVFKMlFRZHhJaHRxYWlBZVFRSjJRUWR4SWcxcUlSZ2dDU0F6ZGlJSlFYOGdHM1JCZjNOeElBTkJCWFpxUVFGcUlRTkJmeUFOZEVGL2N5QUpJQnQyY1NBZVFRVjJha0VCYWlFSkN5QVBJQmNnR0dzMkF2QUJJQThnWUNBWXJZZzNBK2dCSUFGQjhBRnhJZzBnRFVFQmEzRUVRQ0FESUJaQi93QnhJaFlnQmkwQUFVSC9BSEVpRnlBV0lCZExHeUlXUVFKckloZEJBQ0FXSUJkUEcyb2hBd3NnQjBId0FYRWlGeUFYUVFGcmNRUkFJQWtnQmkwQUFVSC9BSEVpRmlBR0xRQUNRZjhBY1NJWUlCWWdHRXNiSWhaQkFtdEJBQ0FXUVFKTEcyb2hDUXNnQXlBc1RTQUpJQ3hOY1VVRVFDQWhCRUJCQUNFSElCMUJBVUdOOXdCQkFCQUlEQWtMUVFBaEJ5QWRRUUZCamZjQVFRQVFDQXdJQ3lBR0xRQUNJUllnQmtFQU93QUJJQmNnRFVFRWRuSkIvd0ZCL3dFZ0JVRUVhaUlOSUJWclFRRjBkaUFOSUJWTUd5SVhRZFVBY1NBWElCa2dIMG9iSWhoQmYzTnhCRUFnSVFSQVFRQWhCeUFkUVFGQnY5b0FRUUFRQ0F3SkMwRUFJUWNnSFVFQlFiL2FBRUVBRUFnTUNBc0NRQUpBSUFGQkVIRUVRQ0FQUWNBQmFoQVRJUjRnRHlBUEtBTFFBU0FESUFGQkUzUkJIM1ZxSWhkck5nTFFBU0FQSUE4cEE4Z0JJQmV0aURjRHlBRWdIa0YvSUJkMFFYOXpjU0FCUVFoMlFRRnhJQmQwY2tFQmNrRUNhaUFnZENBZVFSOTBjaUVYREFFTFFRQWhGeUFZUVFGeFJRMEJDeUFJSUJjMkFnQUxBa0FnQVVFZ2NRUkFJQTlCd0FGcUVCTWhIaUFQSUE4b0F0QUJJQU1nQVVFU2RFRWZkV29pRjJzMkF0QUJJQThnRHlrRHlBRWdGNjJJTndQSUFTQUlJQlZCQW5ScUlCNUJmeUFYZEVGL2MzRWdBVUVKZGtFQmNTQVhkSEpCQVhJaUYwRUNhaUFnZENBZVFSOTBjallDQUNBR1FTQWdGMmRySWhjZ0JpMEFBRUgvQUhFaUhpQVhJQjVMRzBHQUFYSTZBQUFNQVFzZ0dFRUNjVVVOQUNBSUlCVkJBblJxUVFBMkFnQUxJQWhCQkdvaEhnSkFBa0FnS2dSQUlBOUJ3QUZxRUJNaEd5QVBJQThvQXRBQklBTWdBVUVSZEVFZmRXb2lGMnMyQXRBQklBOGdEeWtEeUFFZ0Y2MklOd1BJQVNBYlFYOGdGM1JCZjNOeElBRkJDblpCQVhFZ0YzUnlRUUZ5UVFKcUlDQjBJQnRCSDNSeUlSY01BUXRCQUNFWElCaEJCSEZGRFFFTElCNGdGellDQUFzQ1FDQW5CRUFnRDBIQUFXb1FFeUVYSUE4Z0R5Z0MwQUVnQXlBQlFSQjBRUjkxYWlJRGF6WUMwQUVnRHlBUEtRUElBU0FEcllnM0E4Z0JJQjRnRlVFQ2RHb2dGMEYvSUFOMFFYOXpjU0FCUVF0MlFRRnhJQU4wY2tFQmNpSUJRUUpxSUNCMElCZEJIM1J5TmdJQUlBWkJvSDhnQVdkck9nQUJEQUVMSUJoQkNIRkZEUUFnSGlBVlFRSjBha0VBTmdJQUN5QUlRUWhxSVFFQ1FBSkFJQWRCRUhFRVFDQVBRY0FCYWhBVElSY2dEeUFQS0FMUUFTQUpJQWRCRTNSQkgzVnFJZ05yTmdMUUFTQVBJQThwQThnQklBT3RpRGNEeUFFZ0YwRi9JQU4wUVg5emNTQUhRUWgyUVFGeElBTjBja0VCY2tFQ2FpQWdkQ0FYUVI5MGNpRUREQUVMUVFBaEF5QVlRUkJ4UlEwQkN5QUJJQU0yQWdBTEFrQWdCMEVnY1FSQUlBOUJ3QUZxRUJNaEZ5QVBJQThvQXRBQklBa2dCMEVTZEVFZmRXb2lBMnMyQXRBQklBOGdEeWtEeUFFZ0E2MklOd1BJQVNBQklCVkJBblJxSUJkQmZ5QURkRUYvYzNFZ0IwRUpka0VCY1NBRGRISkJBWElpQVVFQ2FpQWdkQ0FYUVI5MGNqWUNBQ0FHUVNBZ0FXZHJJZ0VnQmkwQUFVSC9BSEVpQXlBQklBTkxHMEdBQVhJNkFBRU1BUXNnR0VFZ2NVVU5BQ0FCSUJWQkFuUnFRUUEyQWdBTElBaEJER29oQVFKQUFrQWdCMEhBQUhFRVFDQVBRY0FCYWhBVElSY2dEeUFQS0FMUUFTQUpJQWRCRVhSQkgzVnFJZ05yTmdMUUFTQVBJQThwQThnQklBT3RpRGNEeUFFZ0YwRi9JQU4wUVg5emNTQUhRUXAyUVFGeElBTjBja0VCY2tFQ2FpQWdkQ0FYUVI5MGNpRUREQUVMUVFBaEF5QVlRY0FBY1VVTkFRc2dBU0FETmdJQUN5QUdRUUpxSVFZQ1FDQUhRWUFCY1FSQUlBOUJ3QUZxRUJNaEZ5QVBJQThvQXRBQklBa2dCMEVRZEVFZmRXb2lBMnMyQXRBQklBOGdEeWtEeUFFZ0E2MklOd1BJQVNBQklCVkJBblJxSUJkQmZ5QURkRUYvYzNFZ0IwRUxka0VCY1NBRGRISkJBWElpQVVFQ2FpQWdkQ0FYUVI5MGNqWUNBQ0FHUWFCL0lBRm5hem9BQUF3QkN5QVlRWUFCU1EwQUlBRWdGVUVDZEdwQkFEWUNBQXNnSWtFUWN5RWlJQkVnQlVFRWNXb2hFU0FJUVJCcUlRZ2dEU0FWU0EwQUN3c0NRQ0FNUVFKSkRRQWdFMEVDY1VVTkFDQVpRUVJ4SVFNQ1FBSi9Ba0FDUUNBeEJFQWdGQ0FsSUFNYklSWkJBQ0VZSUJWQkFFd05BU0FPSUJOQkFtc2dGV3hCQW5ScUlSRURRQ0FQUVlBQmFoQXFJUWRCQUNFQklCWW9BZ0FpQ0FSQUlCRWdHRUVDZEdvaEFVRUFJUWxCRHlFR0EwQUNRQ0FHSUFoeFJRMEFJQVpCa2FMRWlBRnhJZzBnQ0hFRVFDQUJJQUVvQWdBZ0IwRi9jMEVCY1NBZ2RITWdMbkkyQWdBZ0IwRUJkaUVIQ3lBTlFRRjBJQWh4QkVBZ0FTQVZRUUowYWlJRklBVW9BZ0FnQjBGL2MwRUJjU0FnZEhNZ0xuSTJBZ0FnQjBFQmRpRUhDeUFOUVFKMElBaHhCRUFnQVNBNlFRSjBhaUlGSUFVb0FnQWdCMEYvYzBFQmNTQWdkSE1nTG5JMkFnQWdCMEVCZGlFSEN5QU5RUU4wSUFoeFJRMEFJQUVnT1VFQ2RHb2lEU0FOS0FJQUlBZEJmM05CQVhFZ0lIUnpJQzV5TmdJQUlBZEJBWFloQndzZ0FVRUVhaUVCSUFaQkJIUWhCaUFKUVFGcUlnbEJDRWNOQUFzZ0NHa2hBUXNnRmtFRWFpRVdJQThnRHlnQ2tBRWdBV3MyQXBBQklBOGdEeWtEaUFFZ0FhMklOd09JQVNBWVFRaHFJaGdnRlVnTkFBc0xJQ2tnS0NBREd5RUZJQlFnSlNBREd5RVdJQU5GSVJnZ0ZVRUFUQTBEUVFBaEF5QkFEUUVnQlNBV0lEdHFTU0FXSUFVZ08yb2lCMGx4RFFGQkFDQUZJZ0VnRmlJR0lENXFRUWhxU1NBR1FRUnFJQWRKY1EwQ0dpQUdJRHhxSVFZZ0FTQThhaUVCL1F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBSVY1QkFDRUhBMEFnQlNBSFFRSjBJZ05xSWdrZ0F5QVdhaUlEL1FBQ0FDSmZRUVQ5clFFZ1gwRUUvYXNCSUY0Z1gvME5EQTBPRHhBUkVoTVVGUllYR0JrYUcwRWMvYTBCL1ZEOVVDQmYvVkFpWHYwTEFnQWdDU0JlSUFQOUFBSUVRUno5cXdIOVVDSmVRUUg5clFIOURIZDNkM2QzZDNkM2QzZDNkM2QzZDNmOVRpQmVRUUg5cXdIOURPN3U3dTd1N3U3dTd1N3U3dTd1N3U3OVR2MVFJRjc5VUNCZi9VLzlDd0lBSUY4aFhpQUhRUVJxSWdjZ0hFY05BQXNnSENBL1JnMERJQkloQXlCZS9Sc0REQUlMSUFORklSZ2dLU0FvSUFNYklRVU1BZ3NnQlNFQklCWWhCa0VBQ3lFSEEwQWdCMEVjZGlFSklBRWdCaWdDQUNJSFFRUjJJQWtnQjBFRWRISnlJQWR5SWdrMkFnQWdBU0FKSUFZb0FnUkJISFJ5SWdsQkFYWkI5KzdkdXdkeElBbEJBWFJCN3QyNzkzNXhjaUFKY2lBSFFYOXpjVFlDQUNBQlFRUnFJUUVnQmtFRWFpRUdJQU5CQ0dvaUF5QVZTQTBBQ3dzZ0UwRUdTUTBBUVFBaENVRUFJUkVnRmlFQklDa2dLQ0FZR3lJYklRY2dGQ0FsSUJnYkloY2hCZ0pBSUJWQkFFd2lEUTBBQTBBZ0FVRUVhaUVESUFjb0FnQWhDQ0FCS0FJQUlRRWdCeUE0Qkg4Z0NBVWdBVUVFZENBUlFSeDJjaUFCUVFSMmNpQURLQUlBUVJ4MGNpQUJja0VEZEVHSWthTEVlSEVnQ0hJTElBWW9BZ0JCZjNOeE5nSUFJQVpCQkdvaEJpQUhRUVJxSVFjZ0FTRVJJQU1oQVNBSlFRaHFJZ2tnRlVnTkFBc2dEUTBBSUE0Z0UwRUdheUFWYkVFQ2RHb2hRVUVBSVI0Z0Z5RVJBMEJCQUNFRElCc29BZ0FpQVFSQUlCVWdIbXNoUWtFQUlRZEJBQ0VLQTBBZ0J5Rk5JQTlCb0FGcUVCTWhCd0pBSUFvZ0NrRUVhaUlHSUVJZ0JpQWVhaUFWU0JzaU0wNGlRd1JBUVFBaEJnd0JDeUFSS0FJQVFYOXpJU29nUVNBS0lCNXlRUUowYWlFWVFRQWhCa0VQSUFvaUNVRUNkQ0pFZENJTklRZ0RRQUpBSUFFZ0NIRkZEUUFnQ0VHUm9zU0lBWEVpSnlBQmNRUkFJQWRCQVhFRVFDQURJQ2R5SVFOQk1pQUpRUUowZENBcWNTQUJjaUVCQ3lBSFFRRjJJUWNnQmtFQmFpRUdDeUFCSUNkQkFYUWlOSEVFUUNBSFFRRnhCRUFnQXlBMGNpRURJQUZCOUFBZ0NVRUNkSFFnS25GeUlRRUxJQWRCQVhZaEJ5QUdRUUZxSVFZTElBRWdKMEVDZENJMGNRUkFJQWRCQVhFRVFDQURJRFJ5SVFNZ0FVSG9BU0FKUVFKMGRDQXFjWEloQVFzZ0IwRUJkaUVISUFaQkFXb2hCZ3NnQVNBblFRTjBJaWR4UlEwQUlBZEJBWEVFUUNBRElDZHlJUU1nQVVIQUFTQUpRUUowZENBcWNYSWhBUXNnQmtFQmFpRUdJQWRCQVhZaEJ3c2dDRUVFZENFSUlBbEJBV29pQ1NBelNBMEFDeUFESUVSMlFmLy9BM0ZGRFFBZ1F3MEFBMEFDUUNBRElBMXhSUTBBSUExQmthTEVpQUZ4SWdrZ0EzRUVRQ0FZSUJnb0FnQWdCMEVmZEhJZ0xYSTJBZ0FnQjBFQmRpRUhJQVpCQVdvaEJnc2dDVUVCZENBRGNRUkFJQmdnRlVFQ2RHb2lDQ0FJS0FJQUlBZEJIM1J5SUMxeU5nSUFJQWRCQVhZaEJ5QUdRUUZxSVFZTElBbEJBblFnQTNFRVFDQVlJRHBCQW5ScUlnZ2dDQ2dDQUNBSFFSOTBjaUF0Y2pZQ0FDQUhRUUYySVFjZ0JrRUJhaUVHQ3lBSlFRTjBJQU54UlEwQUlCZ2dPVUVDZEdvaUNTQUpLQUlBSUFkQkgzUnlJQzF5TmdJQUlBWkJBV29oQmlBSFFRRjJJUWNMSUExQkJIUWhEU0FZUVFScUlSZ2dDa0VCYWlJS0lETklEUUFMQ3lBUElBOG9BckFCSUFack5nS3dBU0FQSUE4cEE2Z0JJQWF0aURjRHFBRkJBU0VIUVFRaENpQk5RUUZ4UlEwQUN5QWJJQnNvQWdRZ0EwRWJka0VPY1NBRFFSMTJjaUFEUVJ4MmNpQVJLQUlFUVg5emNYSTJBZ1FMSUJFb0FnQWdBM0lpQTBFRGRrR1Jvc1NJQVhFaUFVRUVkaUFCUVFSMGNpQUJjaUVHSUI0RVFDQUZRUVJySWdjZ0J5Z0NBQ0FXUVFScktBSUFRWDl6SUFGQkhIUnhjallDQUFzZ0JTQUZLQUlBSUFZZ0ZpZ0NBRUYvYzNGeU5nSUFJQVVnQlNnQ0JDQVdLQUlFUVg5eklBTkJIM1p4Y2pZQ0JDQWJRUVJxSVJzZ0VVRUVhaUVSSUFWQkJHb2hCU0FXUVFScUlSWWdIa0VJYWlJZUlCVklEUUFMQ3lBWFFRQWdQUkFPR2dzZ0dTQWZTQTBBQ3dzQ1FDQU1RUUpKRFFBQ1FDQWZRUU54UVFGckloWkJBa2tnTVhFRVFDQVZRUUJNRFFGQkFTQW1RUUpyZENFQ0lBNGdIMEg4Ly84SGNTQVZiRUVDZEdvaEVTQWxJQlFnSDBFRWNSc2hCU0FtUVFGcklRaEJBQ0VLSUJWQkRHd2hEQ0FWUVFOMElRc0RRQ0FQUVlBQmFoQXFJUWRCQUNFQklBVW9BZ0FpQXdSQUlCRWdDa0VDZEdvaEFVRVBJUVpCQUNFSkEwQUNRQ0FESUFaeFJRMEFJQVpCa2FMRWlBRnhJZzBnQTNFRVFDQUJJQUVvQWdBZ0IwRi9jMEVCY1NBSWRITWdBbkkyQWdBZ0IwRUJkaUVIQ3lBTlFRRjBJQU54QkVBZ0FTQVZRUUowYWlJZElCMG9BZ0FnQjBGL2MwRUJjU0FJZEhNZ0FuSTJBZ0FnQjBFQmRpRUhDeUFOUVFKMElBTnhCRUFnQVNBTGFpSWRJQjBvQWdBZ0IwRi9jMEVCY1NBSWRITWdBbkkyQWdBZ0IwRUJkaUVIQ3lBTlFRTjBJQU54UlEwQUlBRWdER29pRFNBTktBSUFJQWRCZjNOQkFYRWdDSFJ6SUFKeU5nSUFJQWRCQVhZaEJ3c2dBVUVFYWlFQklBWkJCSFFoQmlBSlFRRnFJZ2xCQ0VjTkFBc2dBMmtoQVFzZ0JVRUVhaUVGSUE4Z0R5Z0NrQUVnQVdzMkFwQUJJQThnRHlrRGlBRWdBYTJJTndPSUFTQUtRUWhxSWdvZ0ZVZ05BQXNMSUJaQkFVc05BQ0FWUVFCTURRQWdKU0FVSUI5QkJIRWlBUnNoQ1NBb0lDa2dBUnNoQWtFQUlRTUNmd0pBSUNzZ0pFRi9jMm9pQVVFNFNRMEFJQUlnQ1NBQlFRRjJRZnovLy84SGNTSUdRUVJxSWdkcVNTQUpJQUlnQjJvaUIwbHhEUUFnQWlBR0lBbHFRUWhxU1NBSlFRUnFJQWRKY1EwQUlBRkJBM1pCQVdvaURVSDgvLy8vQTNFaUNFRURkQ0VESUFrZ0NFRUNkQ0lCYWlFR0lBRWdBbW9oQWYwTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNGZVFRQWhCd05BSUFJZ0IwRUNkQ0lXYWlJUklBa2dGbW9pRnYwQUFnQWlYMEVFL2EwQklGOUJCUDJyQVNCZUlGLzlEUXdORGc4UUVSSVRGQlVXRnhnWkdodEJIUDJ0QWYxUS9WQWdYLzFRSWw3OUN3SUFJQkVnWGlBVy9RQUNCRUVjL2FzQi9WQWlYa0VCL2EwQi9ReDNkM2QzZDNkM2QzZDNkM2QzZDNkMy9VNGdYa0VCL2FzQi9RenU3dTd1N3U3dTd1N3U3dTd1N3U3dS9VNzlVQ0JlL1ZBZ1gvMVAvUXNDQUNCZklWNGdCMEVFYWlJSElBaEhEUUFMSUFnZ0RVWU5BaUJlL1JzRERBRUxJQUloQVNBSklRWkJBQXNoQndOQUlBZEJISFloQ1NBQklBWW9BZ0FpQjBFRWRpQUpJQWRCQkhSeWNpQUhjaUlKTmdJQUlBRWdDU0FHS0FJRVFSeDBjaUlKUVFGMlFmZnUzYnNIY1NBSlFRRjBRZTdkdS9kK2NYSWdDWElnQjBGL2MzRTJBZ0FnQVVFRWFpRUJJQVpCQkdvaEJpQURRUWhxSWdNZ0ZVZ05BQXNMSUI4Z0gwRUJha0VEY1d0QkEydEJBQ0FmUVFaS0d5SVJJQjlPRFFCQkF5QW1RUUpyZENFWklDc2dKRUYvYzJvaUFVRURkaUlEUVFKMElpdEJCR29oSFNBRFFRRnFJZ05CL1AvLy93TnhJaEpCQW5RaElTQVNRUU4wSVJZZ0ZVRU1iQ0VzSUJWQkEzUWhMU0FCUVJoSklTWWdBeUFTUmlFYkEwQUNRQUpBQWtBQ1FBSi9Ba0FnSHlBUmF5SUJRUUZySWdOQkEwOEVRRUYvSVJjZ0FVRUZTQTBGSUJWQkFFd05CaUFsSUJRZ0VVRUVjU0lCR3lFQ0lDZ2dLU0FCR3lFSklEZ0VRRUVBSVFZZ0pnMEVJQUlnQ1NBZGFra2dBaUFkYWlBSlMzRU5CQ0FDSUNGcUlRRWdDU0FoYWlFSEEwQWdDU0FHUVFKMElnTnFJZ2dnQ1AwQUFnQWdBaUFEYXYwQUFnRDlULzBMQWdBZ0JrRUVhaUlHSUJKSERRQUxJQlloQmlBYkRRWU1CUXNnRkNBbElBRWJJUTFCQUNFRElDWU5BU0FKSUEwZ0hXcEpJQTBnQ1NBZGFpSUJTWEVOQVNBSklBMGdLMnBCQ0dwSklBMUJCR29nQVVseERRRWdDU0FDSUIxcVNTQUJJQUpMY1EwQklBSWdJV29oQ0NBSklDRnFJUUVnRFNBaGFpRUgvUXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFJVjVCQUNFR0EwQWdDU0FHUVFKMElnTnFJZ1VnQXlBTmFpSU0vUUFDQUNKZlFRVDlyUUVnWDBFRS9hc0JJRjRnWC8wTkRBME9EeEFSRWhNVUZSWVhHQmthRzBFYy9hMEIvVkQ5VUNBTS9RQUNCRUVjL2FzQi9WQWdYLzFRUVFQOXF3SDlESWlJaUlpSWlJaUlpSWlJaUlpSWlJajlUaUFGL1FBQ0FQMVFJQUlnQTJyOUFBSUEvVS85Q3dJQUlGOGhYaUFHUVFScUlnWWdFa2NOQUFzZ0d3MEZJQlloQXlCZS9Sc0REQUlMSUFOQkFuUkI3SjBCYWlnQ0FDRVhEQVFMSUEwaEJ5QUpJUUVnQWlFSVFRQUxJUVlEUUNBR1FSeDJJUWtnQVNBQktBSUFJQWNvQWdBaUJrRUVkaUFKSUFaQkJIUnljaUFIS0FJRVFSeDBjaUFHY2tFRGRFR0lrYUxFZUhGeUlBZ29BZ0JCZjNOeE5nSUFJQWhCQkdvaENDQUJRUVJxSVFFZ0IwRUVhaUVISUFOQkNHb2lBeUFWU0EwQUN3d0NDeUFKSVFjZ0FpRUJDd05BSUFjZ0J5Z0NBQ0FCS0FJQVFYOXpjVFlDQUNBQlFRUnFJUUVnQjBFRWFpRUhJQVpCQ0dvaUJpQVZTQTBBQ3dzZ0ZVRUFUQTBBSUNVZ0ZDQVJRUVJ4SWdFYklRb2dLQ0FwSUFFYklRSWdGQ0FsSUFFYklSTWdLU0FvSUFFYklSNGdEaUFSSUJWc1FRSjBhaUV1UVFBaEJRTkFRUUFoQXlBQ0tBSUFJQmR4SWdFRVFDQVZJQVZySVNwQkFDRUhRUUFoRFFOQUlBY2hUaUFQUWFBQmFoQVRJUWNDUUNBTklBMUJCR29pQmlBcUlBVWdCbW9nRlVnYklpUk9JaWNFUUVFQUlRWU1BUXNnRnlBS0tBSUFRWDl6Y1NFWUlDNGdCU0FOY2tFQ2RHb2hDMEVBSVFaQkR5QU5JZ2xCQW5RaUhIUWlJQ0VJQTBBQ1FDQUJJQWh4UlEwQUlBaEJrYUxFaUFGeElpSWdBWEVFUUNBSFFRRnhCRUFnQXlBaWNpRURRVElnQ1VFQ2RIUWdHSEVnQVhJaEFRc2dCMEVCZGlFSElBWkJBV29oQmdzZ0FTQWlRUUYwSWpGeEJFQWdCMEVCY1FSQUlBTWdNWEloQXlBQlFmUUFJQWxCQW5SMElCaHhjaUVCQ3lBSFFRRjJJUWNnQmtFQmFpRUdDeUFCSUNKQkFuUWlNWEVFUUNBSFFRRnhCRUFnQXlBeGNpRURJQUZCNkFFZ0NVRUNkSFFnR0hGeUlRRUxJQWRCQVhZaEJ5QUdRUUZxSVFZTElBRWdJa0VEZENJaWNVVU5BQ0FIUVFGeEJFQWdBeUFpY2lFRElBRkJ3QUVnQ1VFQ2RIUWdHSEZ5SVFFTElBWkJBV29oQmlBSFFRRjJJUWNMSUFoQkJIUWhDQ0FKUVFGcUlna2dKRWdOQUFzZ0F5QWNka0gvL3dOeFJRMEFJQ2NOQUFOQUFrQWdBeUFnY1VVTkFDQWdRWkdpeElnQmNTSUpJQU54QkVBZ0N5QUxLQUlBSUFkQkgzUnlJQmx5TmdJQUlBZEJBWFloQnlBR1FRRnFJUVlMSUFsQkFYUWdBM0VFUUNBTElCVkJBblJxSWdnZ0NDZ0NBQ0FIUVI5MGNpQVpjallDQUNBSFFRRjJJUWNnQmtFQmFpRUdDeUFKUVFKMElBTnhCRUFnQ3lBdGFpSUlJQWdvQWdBZ0IwRWZkSElnR1hJMkFnQWdCMEVCZGlFSElBWkJBV29oQmdzZ0NVRURkQ0FEY1VVTkFDQUxJQ3hxSWdrZ0NTZ0NBQ0FIUVI5MGNpQVpjallDQUNBR1FRRnFJUVlnQjBFQmRpRUhDeUFnUVFSMElTQWdDMEVFYWlFTElBMUJBV29pRFNBa1NBMEFDd3NnRHlBUEtBS3dBU0FHYXpZQ3NBRWdEeUFQS1FPb0FTQUdyWWczQTZnQlFRRWhCMEVFSVEwZ1RrRUJjVVVOQUFzZ0FpQUNLQUlFSUFOQkczWkJEbkVnQTBFZGRuSWdBMEVjZG5JZ0NpZ0NCRUYvYzNGeU5nSUVDeUFLS0FJQUlBTnlJZ05CQTNaQmthTEVpQUZ4SWdGQkJIWWdBVUVFZEhJZ0FYSWhCaUFGQkVBZ0hrRUVheUlISUFjb0FnQWdFMEVFYXlnQ0FFRi9jeUFCUVJ4MGNYSTJBZ0FMSUI0Z0hpZ0NBQ0FHSUJNb0FnQkJmM054Y2pZQ0FDQWVJQjRvQWdRZ0V5Z0NCRUYvY3lBRFFSOTJjWEkyQWdRZ0FrRUVhaUVDSUFwQkJHb2hDaUFlUVFScUlSNGdFMEVFYWlFVElBVkJDR29pQlNBVlNBMEFDd3NnRVVFRWFpSVJJQjlJRFFBTEMwRUJJUWNnSDBFQVRBMERJQlZCQUV3TkF5QVZRZnovLy84SGNTSUdRUUowSVFJZ0ZVRUVTU0VJUVFBaENRTkFJQTRnQ1NBVmJFRUNkR29oQXdKQUFrQWdDQVJBSUFNaEIwRUFJUUVNQVFzZ0FpQURhaUVIUVFBaEFRTkFJQU1nQVVFQ2RHb2lEU0FOL1FBQ0FDSmUvUXovLy85Ly8vLy9mLy8vLzMvLy8vOS8vVTRpWC8yaEFTQmZJRjc5REFBQUFBQUFBQUFBQUFBQUFBQUFBQUQ5T2YxUy9Rc0NBQ0FCUVFScUlnRWdCa2NOQUFzZ0JpSUJJQlZHRFFFTEEwQWdCMEVBSUFjb0FnQWlBMEgvLy8vL0IzRWlEV3NnRFNBRFFRQklHellDQUNBSFFRUnFJUWNnQVVFQmFpSUJJQlZIRFFBTEMwRUJJUWNnQ1VFQmFpSUpJQjlIRFFBTERBTUxJQ0ZGRFFBZ0R5QWFLQUlZTmdJMElBOGdGallDTUNBZFFRRkIzY1lBSUE5Qk1Hb1FDQXdCQ3lBUElBRTJBaFFnRHlBV05nSVFJQjFCQVVIZHhnQWdEMEVRYWhBSVFRQWhCd3dCQzBFQUlRY0xJQTlCc0FKcUpBQWdCdzBCREFNTElBUWdBVUVKZEVIZ3FRRnFOZ0pzQW44Z0JDZ0NkQ0VCQWtBQ1FDQWFLQUlRSUJvb0FnaHJJZ1VnR2lnQ0ZDQWFLQUlNYXlJSmJDSURJQVFvQW9RQlN3UkFJQUVRQ1NBRUlBTkJBblFRRmlJQk5nSjBRUUFnQVVVTkF4b2dCQ0FETmdLRUFRd0JDeUFCUlEwQkN5QUJRUUFnQTBFQ2RCQU9HZ3NnQkNnQ2VDRUJBa0FnQlVFQ2FpSUdJQWxCQTJwQkFuWWlERUVDYW13aUF5QUVLQUtJQVUwRVFDQURRUUowSVFnTUFRc2dBUkFKSUFRZ0EwRUNkQ0lJRUJZaUFUWUNlQ0FCRFFCQkFBd0JDeUFFSUFNMkFvZ0JJQUZCQUNBSUVBNGFBa0FnQmtVTkFDQUVLQUo0SWdjaEFRSkFJQVpCQkU4RVFDQUhJQVpCZkhFaURVRUNkR29oQVVFQUlRZ0RRQ0FISUFoQkFuUnEvUXdBQUNCSkFBQWdTUUFBSUVrQUFDQkovUXNDQUNBSVFRUnFJZ2dnRFVjTkFBc2dCaUFOUmcwQkN3TkFJQUZCZ0lDQXlRUTJBZ0FnQVVFRWFpRUJJQTFCQVdvaURTQUdSdzBBQ3dzZ0J5QU1RUUZxSUFac1FRSjBhaUVEUVFBaERRSkFBa0FnQmtFRVNRUkFJQU1oQVF3QkN5QURJQVpCZkhFaURVRUNkR29oQVVFQUlRZ0RRQ0FESUFoQkFuUnEvUXdBQUNCSkFBQWdTUUFBSUVrQUFDQkovUXNDQUNBSVFRUnFJZ2dnRFVjTkFBc2dCaUFOUmcwQkN3TkFJQUZCZ0lDQXlRUTJBZ0FnQVVFRWFpRUJJQTFCQVdvaURTQUdSdzBBQ3dzZ0NVRURjU0lCUlEwQUlBWkZEUUJCZ0lDQXlBUkJnSUNBd0FSQmdJQ0FnQVFnQVVFQ1Joc2dBVUVCUmhzaEN5QUhJQVlnREd4QkFuUnFJUU5CQUNFTkFrQWdCa0VFU1FSQUlBTWhBUXdCQ3lBRElBWkJmSEVpRFVFQ2RHb2hBU0FML1JFaFgwRUFJUWdEUUNBRElBaEJBblJxSUYvOUN3SUFJQWhCQkdvaUNDQU5SdzBBQ3lBR0lBMUdEUUVMQTBBZ0FTQUxOZ0lBSUFGQkJHb2hBU0FOUVFGcUlnMGdCa2NOQUFzTElBUWdDVFlDZ0FFZ0JDQUZOZ0o4UVFFTFJRMENJQm9vQWh3Z0VXb2lHVUVmVGdSQUlDRkZEUUlnSXlBWk5nSVFJQjFCQWtIV3dBQWdJMEVRYWhBSURBTUxJQVFRVTBFQUlRRWdCRUhBcVFFMkFtUWdCRUhnbmdFMkFtQWdCRUdBbndFMkFod0NRQUpBQWtBQ1FDQWFLQUkwSWdkQkFVc05BQ0FFS0FLUUFVVU5BaUFIRFFBTUFRc2dHaWdDQkNFRElBZEJCRThFUUNBSFFYeHhJUUpCQUNFR0EwQWdBeUFHUVFOMGFpSUJRUnhxSUFGQkZHb2dBVUVNYWlBQi9Ra0NCUDFXQWdBQi9WWUNBQUw5VmdJQUF5QmUvYTRCSVY0Z0JrRUVhaUlHSUFKSERRQUxJRjRnWGlCZS9RMElDUW9MREEwT0R3QUJBZ01BQVFJRC9hNEJJbDRnWGlCZS9RMEVCUVlIQUFFQ0F3QUJBZ01BQVFJRC9hNEIvUnNBSVFFZ0FpQUhSZzBCQ3dOQUlBTWdBa0VEZEdvb0FnUWdBV29oQVNBQ1FRRnFJZ0lnQjBjTkFBc0xJQUZCQW1vaUF5QUVLQUtZQVVzRVFDQUVLQUtVQVNBREVCQWlCa1VOQlNBRUlBWTJBcFFCSUFFZ0JtcEJBRHNBQUNBRUlBTTJBcGdCSUJvb0FqUWhCd3NnQkNnQ2xBRWhIaUFIUlEwQklCb29BZ1FoQmtFQUlRSkJBQ0VCQTBBZ0FpQWVhaUFHSUFGQkEzUWlBMm9pQmlnQ0FDQUdLQUlFRUFzYUlCb29BZ1FpQmlBRGFpZ0NCQ0FDYWlFQ0lBRkJBV29pQVNBYUtBSTBTUTBBQ3d3QkN5QUhRUUZIRFFFZ0dpZ0NCQ2dDQUNFZUN5QWFLQUk4SWdFRVFDQUVLQUowSVN3Z0JDQUJOZ0owQ3lBYUtBSXNCRUFnRmtFSWNTRWxJQVJCSEdvaER5QVdRUUZ4SVMwZ0ZrRUNjVVVoTGtFQ0lSOERRQ0FlSUNocUlRRWdHaWdDQUNBcFFSaHNhaUlnS0FJQUlRTUNRQ0F0SUI5QkFra2dHU0FhS0FJY1FRUnJUSEZ4SWlJRVFDQUVJQUUyQWhRZ0JDQUJJQU5xSWdNMkFoZ2dCQ0FETHdBQU93RndJQU5CL3dFNkFBQWdCQ2dDR0VIL0FUb0FBU0FFUVFBMkFnZ2dCRUVBTmdJQUlBUWdBVFlDRUF3QkN5QUVJQUUyQWhRZ0JDQUJJQU5xSWdZMkFoZ2dCQ0FHTHdBQU93RndJQVpCL3dFNkFBQWdCQ2dDR0VIL0FUb0FBU0FFSUFSQkhHbzJBbWdnQkNBQk5nSVFJQVJCQURZQ0RDQUVJQU1FZnlBQkxRQUFRUkIwQlVHQWdQd0hDeUlETmdJQVFRRWhCaUFCUVFGcUlRa2dBUzBBQVNFSEFuOGdBUzBBQUVIL0FVWUVRQ0FIUVpBQlR3UkFJQVJCQVRZQ0RDQURRWUQrQTNJTUFnc2dCQ0FKTmdJUVFRQWhCaUFIUVFsMElBTnFEQUVMSUFRZ0NUWUNFQ0FIUVFoMElBTnlDeUVCSUFRZ0JqWUNDQ0FFUVlDQUFqWUNCQ0FFSUFGQkIzUTJBZ0FMSUNBb0FnQWhLZ0pBSUJsQkFFd05BQ0FnS0FJSVJRMEFJQ0lnTG5JaEowRUFJU1lEUUFKQUFrQUNRQUpBQWtBZ0gwRUJhdzRDQVFJQUN5QWlCRUJCQVNBWmRDSUJRUUYySUFGeUlSRWdCQ2dDZkNJRlFRSjBJZzBnQkNnQ2VHcEJER29oQVNBRUtBSjBJUVpCQUNFSUlBUW9Bb0FCSWdOQkJFOEVRQ0FGUlEwRklBVkJBMndoQWlBRlFRRjBJUXhCQUNBUmF5RUpBMEFnREVFQ2RDRUxRUUFoQXdOQUFrQWdBU0lIS0FJQUlnRkZEUUFDUUNBQlFaQ0FnQUZ4RFFBZ0FVSHZBM0ZGRFFBZ0JDZ0NBQ0VCQWtBZ0JDZ0NDQ0lRRFFBZ0FVSC9BVVloQ2lBRUtBSVFJaEF0QUFBaEFRSkFJQXBGQkVBZ0JDQUJOZ0lBSUFRZ0VFRUJhallDRUF3QkN5QUJRWThCVFFSQUlBUWdBVFlDQUNBRUlCQkJBV28yQWhCQkJ5RVFEQUlMUWY4QklRRWdCRUgvQVRZQ0FBdEJDQ0VRQ3lBRUlCQkJBV3NpRURZQ0NBSkFJQUVnRUhaQkFYRkZEUUFDUUNBUURRQWdBVUgvQVVZaENpQUVLQUlRSWhBdEFBQWhBUUpBSUFwRkJFQWdCQ0FCTmdJQUlBUWdFRUVCYWpZQ0VBd0JDeUFCUVk4QlRRUkFJQVFnQVRZQ0FDQUVJQkJCQVdvMkFoQkJCeUVRREFJTFFmOEJJUUVnQkVIL0FUWUNBQXRCQ0NFUUN5QUVJQkJCQVdzaUVEWUNDQ0FHSUFrZ0VTQUJJQkIyUVFGeEloQWJOZ0lBSUFRb0Fud2hBU0FIUVFScklnb2dDaWdDQUVFZ2NqWUNBQ0FISUFjb0FnUkJDSEkyQWdRZ0J5QUhLQUlBSUJCQkUzUnlRUkJ5TmdJQUlDVU5BQ0FIUVg0Z0FXdEJBblJxSWdFZ0FTZ0NCRUdBZ0FKeU5nSUVJQUVnQVNnQ0FDQVFRUjkwY2tHQWdBUnlOZ0lBSUFGQkJHc2lBU0FCS0FJQVFZQ0FDSEkyQWdBTElBY2dCeWdDQUVHQWdJQUJjaUlCTmdJQUN3SkFJQUZCZ0lHQUNIRU5BQ0FCUWZnZWNVVU5BQ0FFS0FJQUlRRUNRQ0FFS0FJSUloQU5BQ0FCUWY4QlJpRUtJQVFvQWhBaUVDMEFBQ0VCQWtBZ0NrVUVRQ0FFSUFFMkFnQWdCQ0FRUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQkNBQk5nSUFJQVFnRUVFQmFqWUNFRUVISVJBTUFndEIvd0VoQVNBRVFmOEJOZ0lBQzBFSUlSQUxJQVFnRUVFQmF5SVFOZ0lJSUFjQ2Z5QUJJQkIyUVFGeFJRUkFJQWNvQWdBTUFRc0NRQ0FRRFFBZ0FVSC9BVVloQ2lBRUtBSVFJaEF0QUFBaEFRSkFJQXBGQkVBZ0JDQUJOZ0lBSUFRZ0VFRUJhallDRUF3QkN5QUJRWThCVFFSQUlBUWdBVFlDQUNBRUlCQkJBV28yQWhCQkJ5RVFEQUlMUWY4QklRRWdCRUgvQVRZQ0FBdEJDQ0VRQ3lBRUlCQkJBV3NpRURZQ0NDQUdJQTFxSUFrZ0VTQUJJQkIyUVFGeElnRWJOZ0lBSUFkQkJHc2lFQ0FRS0FJQVFZQUNjallDQUNBSElBY29BZ1JCd0FCeU5nSUVJQWNvQWdBZ0FVRVdkSEpCZ0FGeUMwR0FnSUFJY2lJQk5nSUFDd0pBSUFGQmdJaUF3QUJ4RFFBZ0FVSEE5d0Z4UlEwQUlBUW9BZ0FoQVFKQUlBUW9BZ2dpRUEwQUlBRkIvd0ZHSVFvZ0JDZ0NFQ0lRTFFBQUlRRUNRQ0FLUlFSQUlBUWdBVFlDQUNBRUlCQkJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQUVJQUUyQWdBZ0JDQVFRUUZxTmdJUVFRY2hFQXdDQzBIL0FTRUJJQVJCL3dFMkFnQUxRUWdoRUFzZ0JDQVFRUUZySWhBMkFnZ2dCd0ovSUFFZ0VIWkJBWEZGQkVBZ0J5Z0NBQXdCQ3dKQUlCQU5BQ0FCUWY4QlJpRUtJQVFvQWhBaUVDMEFBQ0VCQWtBZ0NrVUVRQ0FFSUFFMkFnQWdCQ0FRUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQkNBQk5nSUFJQVFnRUVFQmFqWUNFRUVISVJBTUFndEIvd0VoQVNBRVFmOEJOZ0lBQzBFSUlSQUxJQVFnRUVFQmF5SVFOZ0lJSUFZZ0Myb2dDU0FSSUFFZ0VIWkJBWEVpQVJzMkFnQWdCMEVFYXlJUUlCQW9BZ0JCZ0JCeU5nSUFJQWNnQnlnQ0JFR0FCSEkyQWdRZ0J5Z0NBQ0FCUVJsMGNrR0FDSElMUVlDQWdNQUFjaUlCTmdJQUN5QUJRWURBZ0lBRWNRMEFJQUZCZ0x3UGNVVU5BQ0FFS0FJQUlRRUNRQ0FFS0FJSUloQU5BQ0FCUWY4QlJpRUtJQVFvQWhBaUVDMEFBQ0VCQWtBZ0NrVUVRQ0FFSUFFMkFnQWdCQ0FRUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQkNBQk5nSUFJQVFnRUVFQmFqWUNFRUVISVJBTUFndEIvd0VoQVNBRVFmOEJOZ0lBQzBFSUlSQUxJQVFnRUVFQmF5SVFOZ0lJSUFFZ0VIWkJBWEVFUUNBR0lBSkJBblJxSVU4Q1FDQVFEUUFnQVVIL0FVWWhGQ0FFS0FJUUloQXRBQUFoQVFKQUlCUkZCRUFnQkNBQk5nSUFJQVFnRUVFQmFqWUNFQXdCQ3lBQlFZOEJUUVJBSUFRZ0FUWUNBQ0FFSUJCQkFXbzJBaEJCQnlFUURBSUxRZjhCSVFFZ0JFSC9BVFlDQUF0QkNDRVFDeUFFSUJCQkFXc2lFRFlDQ0NCUElBa2dFU0FCSUJCMlFRRnhJaEFiTmdJQUlBUW9BbndoQVNBSFFRUnJJZ29nQ2lnQ0FFR0FnQUZ5TmdJQUlBY2dCeWdDQkVHQUlISTJBZ1FnQnlBSEtBSUFJQkJCSEhSeVFZREFBSEkyQWdBZ0J5QUJRUUowYWlJQklBRW9BZ1JCQkhJMkFnUWdBU0FCS0FJTVFRRnlOZ0lNSUFFZ0FTZ0NDQ0FRUVJKMGNrRUNjallDQ0FzZ0J5QUhLQUlBUVlDQWdJQUVjallDQUFzZ0JrRUVhaUVHSUFkQkJHb2hBU0FEUVFGcUlnTWdCVWNOQUFzZ0IwRU1haUVCSUFZZ0FrRUNkR29oQmlBSVFRUnFJZ2dnQkNnQ2dBRWlBMEY4Y1VrTkFBc0xJQU1nQ0UwTkF5QUZSUTBEUVFBaEUwRUFJQkZySVFzZ0F5RVFBMEFDUUNBSUlCQkdCRUFnQ0NFUURBRUxJQUZCQkdzaERDQUJLQUlBSVExQkFDRUNBMEFDUUNBTklBSkJBMndpQjNZaUNVR1FnSUFCY1EwQUlBbEI3d054UlEwQUlBUW9BZ0FoQXdKQUlBUW9BZ2dpQ1EwQUlBTkIvd0ZISVJBZ0JDZ0NFQ0lKTFFBQUlRTUNRQ0FRUlFSQUlBTkJrQUZQQkVCQi93RWhBeUFFUWY4Qk5nSUFEQUlMSUFRZ0F6WUNBQ0FFSUFsQkFXbzJBaEJCQnlFSkRBSUxJQVFnQXpZQ0FDQUVJQWxCQVdvMkFoQUxRUWdoQ1FzZ0JDQUpRUUZySWdrMkFnZ0NRQ0FESUFsMlFRRnhSUTBBSUFZZ0FpQUZiRUVDZEdvaFVBSkFJQWtOQUNBRFFmOEJSeUVOSUFRb0FoQWlDUzBBQUNFREFrQWdEVVVFUUNBRFFaQUJUd1JBUWY4QklRTWdCRUgvQVRZQ0FBd0NDeUFFSUFNMkFnQWdCQ0FKUVFGcU5nSVFRUWNoQ1F3Q0N5QUVJQU0yQWdBZ0JDQUpRUUZxTmdJUUMwRUlJUWtMSUFRZ0NVRUJheUlKTmdJSUlGQWdDeUFSSUFNZ0NYWkJBWEVpQ1JzMkFnQWdCQ2dDZkNFUUlBd2dEQ2dDQUVFZ0lBZDBjallDQUNBQklBRW9BZ0FnQ1VFVGRFRVFjaUFIZEhJMkFnQWdBU0FCS0FJRVFRZ2dCM1J5TmdJRUlBSWdKWEpGQkVBZ0FVRitJQkJyUVFKMGFpSURJQU1vQWdSQmdJQUNjallDQkNBRElBTW9BZ0FnQ1VFZmRISkJnSUFFY2pZQ0FDQURRUVJySWdNZ0F5Z0NBRUdBZ0FoeU5nSUFDeUFDUVFOSERRQWdBU0FRUVFKMGFpSURJQU1vQWdSQkJISTJBZ1FnQXlBREtBSU1RUUZ5TmdJTUlBTWdBeWdDQ0NBSlFSSjBja0VDY2pZQ0NBc2dBU0FCS0FJQVFZQ0FnQUVnQjNSeUlnMDJBZ0FnQkNnQ2dBRWhBd3NnQXlFUUlBSkJBV29pQWlBRElBaHJTUTBBQ3dzZ0JrRUVhaUVHSUFGQkJHb2hBU0FUUVFGcUloTWdCVWNOQUFzTUF3dEJBQ0VIUVFBaERVRUFJUmNDUUFKQUFrQUNRQ0FFS0FKOEloQkJ3QUJIRFFBZ0JDZ0NnQUZCd0FCSERRQkJBRUVCSUJsMElnRkJBWFlnQVhJaUVXc2hCU0FFUVJ4cUlSQWdCQ2dDZUVHTUFtb2hCaUFFS0FJSUlRZ2dCQ2dDQkNFRElBUW9BZ0FoQWlBRUtBSm9JUXdnQkNnQ2RDRUJJQlpCQ0hFTkFRTkFRUUFoRndOQUlBRWhDU0FHSWdjb0FnQWlCZ1JBQWtBZ0JrR1FnSUFCY1EwQUlBWkI3d054SWdGRkRRQWdBeUFRSUFRb0Ftd2dBV290QUFCQkFuUnFJZ3dvQWdBaUN5Z0NBQ0lCYXlFREFuOGdBU0FDUVJCMlN3UkFJQXNvQWdRaENpQU1JQXRCQ0VFTUlBRWdBMHNpRkJ0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VESUFndEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBRFFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQXlBS0lBcEZJQlFiREFFTElBSWdBVUVRZEdzaEFpQURRWUNBQW5GRkJFQWdDeWdDQkNFS0lBd2dDMEVNUVFnZ0FTQURTeUlVRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUUVnQ0MwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dDa1VnQ2lBVUd3d0JDeUFMS0FJRUN3Ui9JQU1nRUNBSEtBSUVRUkYyUVFSeElBZEJCR3NpQ2lnQ0FFRVRka0VCY1NBR1FRNTJRUkJ4SUFaQkVIWkJ3QUJ4SUFaQnFnRnhjbkp5Y2lJVVFlQzVBV290QUFCQkFuUnFJZ3dvQWdBaUN5Z0NBQ0lCYXlFRElCUkI0THNCYWkwQUFDRVRJQWtnQlNBUkFuOGdBU0FDUVJCMlN3UkFJQXNvQWdRaEZDQU1JQXRCQ0VFTUlBRWdBMHNpRGh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VESUFndEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBRFFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0EwRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQUVoQXlBVUlCUkZJQTRiREFFTElBSWdBVUVRZEdzaEFpQURRWUNBQW5GRkJFQWdDeWdDQkNFVUlBd2dDMEVNUVFnZ0FTQURTeUlPRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUUVnQ0MwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dGRVVnRkNBT0d3d0JDeUFMS0FJRUN5QVRjeUlCR3pZQ0FDQUtJQW9vQWdCQklISTJBZ0FnQnlBSEtBSUVRUWh5TmdJRUlBZEJqQUpySWdzZ0N5Z0NBRUdBZ0FoeU5nSUFJQWRCaEFKcklnc2dDeWdDQUVHQWdBSnlOZ0lBSUFkQmlBSnJJZ3NnQ3lnQ0FDQUJRUjkwY2tHQWdBUnlOZ0lBSUFZZ0FVRVRkSEpCRUhJRklBWUxRWUNBZ0FGeUlRWUxBa0FnQmtHQWdZQUljUTBBSUFaQitCNXhSUTBBSUFNZ0VDQUVLQUpzSUFaQkEzWWlGRUh2QTNGcUxRQUFRUUowYWlJTUtBSUFJZ3NvQWdBaUFXc2hBd0ovSUFFZ0FrRVFka3NFUUNBTEtBSUVJUW9nRENBTFFRaEJEQ0FCSUFOTEloTWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUxJQWd0QUFFaEF5QUlMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBd0NDeUFFSUFzMkFoQWdBMEVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQXMyQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3NnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdDaUFLUlNBVEd3d0JDeUFDSUFGQkVIUnJJUUlnQTBHQWdBSnhSUVJBSUFzb0FnUWhDaUFNSUF0QkRFRUlJQUVnQTBzaUV4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBVUVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFwRklBb2dFeHNNQVFzZ0N5Z0NCQXNFZnlBRElCQWdCeWdDQkVFVWRrRUVjU0FIUVFScklnb29BZ0JCRm5aQkFYRWdCa0VQZGtFUWNTQUdRUk4yUWNBQWNTQVVRYW9CY1hKeWNuSWlGRUhndVFGcUxRQUFRUUowYWlJTUtBSUFJZ3NvQWdBaUFXc2hBeUFVUWVDN0FXb3RBQUFoRXlBSklBVWdFUUovSUFFZ0FrRVFka3NFUUNBTEtBSUVJUlFnRENBTFFRaEJEQ0FCSUFOTElnNGJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUxJQWd0QUFFaEF5QUlMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBd0NDeUFFSUFzMkFoQWdBMEVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQXMyQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3NnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdGQ0FVUlNBT0d3d0JDeUFDSUFGQkVIUnJJUUlnQTBHQWdBSnhSUVJBSUFzb0FnUWhGQ0FNSUF0QkRFRUlJQUVnQTBzaURodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBVUVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUJSRklCUWdEaHNNQVFzZ0N5Z0NCQXNnRTNNaUFSczJBb0FDSUFvZ0NpZ0NBRUdBQW5JMkFnQWdCeUFIS0FJRVFjQUFjallDQkNBR0lBRkJGblJ5UVlBQmNnVWdCZ3RCZ0lDQUNISWhCZ3NDUUNBR1FZQ0lnTUFBY1EwQUlBWkJ3UGNCY1VVTkFDQURJQkFnQkNnQ2JDQUdRUVoySWhSQjd3TnhhaTBBQUVFQ2RHb2lEQ2dDQUNJTEtBSUFJZ0ZySVFNQ2Z5QUJJQUpCRUhaTEJFQWdDeWdDQkNFS0lBd2dDMEVJUVF3Z0FTQURTeUlURzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUU1nQ0MwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUFvZ0NrVWdFeHNNQVFzZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1VVRVFDQUxLQUlFSVFvZ0RDQUxRUXhCQ0NBQklBTkxJaE1iYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QUtSU0FLSUJNYkRBRUxJQXNvQWdRTEJIOGdBeUFRSUFjb0FnUkJGM1pCQkhFZ0IwRUVheUlLS0FJQVFSbDJRUUZ4SUFaQkVuWkJFSEVnQmtFV2RrSEFBSEVnRkVHcUFYRnljbkp5SWhSQjRMa0JhaTBBQUVFQ2RHb2lEQ2dDQUNJTEtBSUFJZ0ZySVFNZ0ZFSGd1d0ZxTFFBQUlSTWdDU0FGSUJFQ2Z5QUJJQUpCRUhaTEJFQWdDeWdDQkNFVUlBd2dDMEVJUVF3Z0FTQURTeUlPRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ3lBSUxRQUJJUU1nQ0MwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdNQWdzZ0JDQUxOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBTE5nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUJRZ0ZFVWdEaHNNQVFzZ0FpQUJRUkIwYXlFQ0lBTkJnSUFDY1VVRVFDQUxLQUlFSVJRZ0RDQUxRUXhCQ0NBQklBTkxJZzRiYWlnQ0FEWUNBQU5BQWtBZ0NBMEFJQVFvQWhBaUNFRUJhaUVMSUFndEFBRWhBU0FJTFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXdDQ3lBRUlBczJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFzMkFoQkJDQ0VJSUFGQkNIUWdBbW9oQWdzZ0NFRUJheUVJSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QVVSU0FVSUE0YkRBRUxJQXNvQWdRTElCTnpJZ0ViTmdLQUJDQUtJQW9vQWdCQmdCQnlOZ0lBSUFjZ0J5Z0NCRUdBQkhJMkFnUWdCaUFCUVJsMGNrR0FDSElGSUFZTFFZQ0FnTUFBY2lFR0N3SkFJQVpCZ01DQWdBUnhEUUFnQmtHQXZBOXhSUTBBSUFNZ0VDQUVLQUpzSUFaQkNYWWlGRUh2QTNGcUxRQUFRUUowYWlJTUtBSUFJZ3NvQWdBaUFXc2hBd0ovSUFFZ0FrRVFka3NFUUNBTEtBSUVJUW9nRENBTFFRaEJEQ0FCSUFOTEloTWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUxJQWd0QUFFaEF5QUlMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBd0NDeUFFSUFzMkFoQWdBMEVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQXMyQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3NnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdDaUFLUlNBVEd3d0JDeUFDSUFGQkVIUnJJUUlnQTBHQWdBSnhSUVJBSUFzb0FnUWhDaUFNSUF0QkRFRUlJQUVnQTBzaUV4dHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBVUVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFwRklBb2dFeHNNQVFzZ0N5Z0NCQXNFZnlBRElCQWdCeWdDQkVFYWRrRUVjU0FIUVFScklnb29BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQVVRYW9CY1hKeWNuSWlGRUhndVFGcUxRQUFRUUowYWlJTUtBSUFJZ3NvQWdBaUFXc2hBeUFVUWVDN0FXb3RBQUFoRXlBSklBVWdFUUovSUFFZ0FrRVFka3NFUUNBTEtBSUVJUlFnRENBTFFRaEJEQ0FCSUFOTElnNGJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUxJQWd0QUFFaEF5QUlMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBd0NDeUFFSUFzMkFoQWdBMEVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQXMyQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3NnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdGQ0FVUlNBT0d3d0JDeUFDSUFGQkVIUnJJUUlnQTBHQWdBSnhSUVJBSUFzb0FnUWhGQ0FNSUF0QkRFRUlJQUVnQTBzaURodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFQklBZ3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQUJRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBVUVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUJSRklCUWdEaHNNQVFzZ0N5Z0NCQXNnRTNNaUFSczJBb0FHSUFvZ0NpZ0NBRUdBZ0FGeU5nSUFJQWNnQnlnQ0JFR0FJSEkyQWdRZ0J5QUhLQUtFQWtFRWNqWUNoQUlnQnlBSEtBS01Ba0VCY2pZQ2pBSWdCeUFIS0FLSUFpQUJRUkowY2tFQ2NqWUNpQUlnQmlBQlFSeDBja0dBd0FCeUJTQUdDMEdBZ0lDQUJISWhCZ3NnQnlBR05nSUFDeUFIUVFScUlRWWdDVUVFYWlFQklCZEJBV29pRjBIQUFFY05BQXNnQjBFTWFpRUdJQWxCaEFacUlRRWdEVUU4U1NGUklBMUJCR29oRFNCUkRRQUxEQUlMUVFFZ0dYUWlBVUVCZGlBQmNpRU5JQVFvQW5naUNTQVFRUUowYWtFTWFpRUdJQVFvQW9BQklRRWdCQ2dDQ0NFSUlBUW9BZ1FoQXlBRUtBSUFJUUlnQkNnQ2FDRU1JQVFvQW5RaEVRSkFJQlpCQ0hFRVFBSkFJQUZCQkVrTkFDQVFCRUJCQUNBTmF5RVVJQVJCSEdvaEJTQVFRUXhzSVJNZ0VFRURkQ0VWQTBCQkFDRUxBMEFnQmlJSktBSUFJZ1lFUUFKQUlBWkJrSUNBQVhFTkFDQUdRZThEY1NJQlJRMEFJQU1nQlNBRUtBSnNJQUZxTFFBQVFRSjBhaUlNS0FJQUlnb29BZ0FpQVdzaEF3Si9JQUVnQWtFUWRrMEVRQ0FDSUFGQkVIUnJJUUlnQTBHQWdBSnhCRUFnQ2lnQ0JBd0NDeUFLS0FJRUlRNGdEQ0FLUVF4QkNDQUJJQU5MSWhJYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFS0lBZ3RBQUVoQVNBSUxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRZ2dBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBc2dDRUVCYXlFSUlBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFPUlNBT0lCSWJEQUVMSUFvb0FnUWhEaUFNSUFwQkNFRU1JQUVnQTBzaUVodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFRElBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBbzJBaEFnQTBFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QU9JQTVGSUJJYkN3Ui9JQU1nQlNBSktBSUVRUkYyUVFSeElBbEJCR3NpRGlnQ0FFRVRka0VCY1NBR1FRNTJRUkJ4SUFaQkVIWkJ3QUJ4SUFaQnFnRnhjbkp5Y2lJU1FlQzVBV290QUFCQkFuUnFJZ3dvQWdBaUNpZ0NBQ0lCYXlFRElCSkI0THNCYWkwQUFDRVlJQkVnRkNBTkFuOGdBU0FDUVJCMlRRUkFJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRUVRQ0FLS0FJRURBSUxJQW9vQWdRaEVpQU1JQXBCREVFSUlBRWdBMHNpR3h0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQkpGSUJJZ0d4c01BUXNnQ2lnQ0JDRVNJQXdnQ2tFSVFRd2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFNZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NqWUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElCSWdFa1VnR3hzTElCaHpJZ0ViTmdJQUlBNGdEaWdDQUVFZ2NqWUNBQ0FKSUFrb0FnUkJDSEkyQWdRZ0JpQUJRUk4wY2tFUWNnVWdCZ3RCZ0lDQUFYSWhCZ3NDUUNBR1FZQ0JnQWh4RFFBZ0JrSDRIbkZGRFFBZ0F5QUZJQVFvQW13Z0JrRURkaUlTUWU4RGNXb3RBQUJCQW5ScUlnd29BZ0FpQ2lnQ0FDSUJheUVEQW44Z0FTQUNRUkIyVFFSQUlBSWdBVUVRZEdzaEFpQURRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRGlBTUlBcEJERUVJSUFFZ0Ewc2lHQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBNUZJQTRnR0JzTUFRc2dDaWdDQkNFT0lBd2dDa0VJUVF3Z0FTQURTeUlZRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUU1nQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnd0JDeUFEUVk4QlRRUkFJQVFnQ2pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUE0Z0RrVWdHQnNMQkg4Z0F5QUZJQWtvQWdSQkZIWkJCSEVnQ1VFRWF5SU9LQUlBUVJaMlFRRnhJQVpCRDNaQkVIRWdCa0VUZGtIQUFIRWdFa0dxQVhGeWNuSnlJaEpCNExrQmFpMEFBRUVDZEdvaURDZ0NBQ0lLS0FJQUlnRnJJUU1nRWtIZ3V3RnFMUUFBSVJnZ0VTQVFRUUowYWlBVUlBMENmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRVNJQXdnQ2tFTVFRZ2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRWtVZ0VpQWJHd3dCQ3lBS0tBSUVJUklnRENBS1FRaEJEQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdFaUFTUlNBYkd3c2dHSE1pQVJzMkFnQWdEaUFPS0FJQVFZQUNjallDQUNBSklBa29BZ1JCd0FCeU5nSUVJQVlnQVVFV2RISkJnQUZ5QlNBR0MwR0FnSUFJY2lFR0N3SkFJQVpCZ0lpQXdBQnhEUUFnQmtIQTl3RnhSUTBBSUFNZ0JTQUVLQUpzSUFaQkJuWWlFa0h2QTNGcUxRQUFRUUowYWlJTUtBSUFJZ29vQWdBaUFXc2hBd0ovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUTRnRENBS1FReEJDQ0FCSUFOTEloZ2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBT1JTQU9JQmdiREFFTElBb29BZ1FoRGlBTUlBcEJDRUVNSUFFZ0Ewc2lHQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFPSUE1RklCZ2JDd1IvSUFNZ0JTQUpLQUlFUVJkMlFRUnhJQWxCQkdzaURpZ0NBRUVaZGtFQmNTQUdRUkoyUVJCeElBWkJGblpCd0FCeElCSkJxZ0Z4Y25KeWNpSVNRZUM1QVdvdEFBQkJBblJxSWd3b0FnQWlDaWdDQUNJQmF5RURJQkpCNExzQmFpMEFBQ0VZSUJFZ0ZXb2dGQ0FOQW44Z0FTQUNRUkIyVFFSQUlBSWdBVUVRZEdzaEFpQURRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRWlBTUlBcEJERUVJSUFFZ0Ewc2lHeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElCSkZJQklnR3hzTUFRc2dDaWdDQkNFU0lBd2dDa0VJUVF3Z0FTQURTeUliRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUU1nQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnd0JDeUFEUVk4QlRRUkFJQVFnQ2pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUJJZ0VrVWdHeHNMSUJoeklnRWJOZ0lBSUE0Z0RpZ0NBRUdBRUhJMkFnQWdDU0FKS0FJRVFZQUVjallDQkNBR0lBRkJHWFJ5UVlBSWNnVWdCZ3RCZ0lDQXdBQnlJUVlMQWtBZ0JrR0F3SUNBQkhFTkFDQUdRWUM4RDNGRkRRQWdBeUFGSUFRb0Ftd2dCa0VKZGlJU1FlOERjV290QUFCQkFuUnFJZ3dvQWdBaUNpZ0NBQ0lCYXlFREFuOGdBU0FDUVJCMlRRUkFJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRUVRQ0FLS0FJRURBSUxJQW9vQWdRaERpQU1JQXBCREVFSUlBRWdBMHNpR0J0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQTVGSUE0Z0dCc01BUXNnQ2lnQ0JDRU9JQXdnQ2tFSVFRd2dBU0FEU3lJWUcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFNZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NqWUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElBNGdEa1VnR0JzTEJIOGdBeUFGSUFrb0FnUkJHblpCQkhFZ0NVRUVheUlPS0FJQVFSeDJRUUZ4SUFaQkZYWkJFSEVnQmtFWmRrSEFBSEVnRWtHcUFYRnljbkp5SWhKQjRMa0JhaTBBQUVFQ2RHb2lEQ2dDQUNJS0tBSUFJZ0ZySVFNZ0VrSGd1d0ZxTFFBQUlSZ2dFU0FUYWlBVUlBMENmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRVNJQXdnQ2tFTVFRZ2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRWtVZ0VpQWJHd3dCQ3lBS0tBSUVJUklnRENBS1FRaEJEQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdFaUFTUlNBYkd3c2dHSE1pQ2hzMkFnQWdEaUFPS0FJQVFZQ0FBWEkyQWdBZ0NTQUpLQUlFUVlBZ2NqWUNCQ0FFS0FKOFFRSjBJQWxxSWdFZ0FTZ0NCRUVFY2pZQ0JDQUJJQUVvQWd4QkFYSTJBZ3dnQVNBQktBSUlJQXBCRW5SeVFRSnlOZ0lJSUFZZ0NrRWNkSEpCZ01BQWNnVWdCZ3RCZ0lDQWdBUnlJUVlMSUFrZ0JqWUNBQXNnQ1VFRWFpRUdJQkZCQkdvaEVTQUxRUUZxSWdzZ0VFY05BQXNnQ1VFTWFpRUdJQkVnRTJvaEVTQUhRUVJxSWdjZ0JDZ0NnQUVpQVVGOGNVa05BQXNNQVF0QkJDQUJRWHh4SWdZZ0JrRUVUUnRCQVdzaUJrRjhjVUVFYWlFSElBa2dCa0VCZEVGNGNXcEJGR29oQmdzZ0JDQUlOZ0lJSUFRZ0F6WUNCQ0FFSUFJMkFnQWdCQ0FNTmdKb0lCQkZEUUVnQVNBSFRRMEJBMEFnQVNBSFJpRlNRUUFoQ0NBSElRRWdVa1VFUUFOQUlBUWdCaUFSSUFnZ0VHeEJBblJxSUEwZ0NDQUVLQUo4UVFKcVFRRVFVaUFJUVFGcUlnZ2dCQ2dDZ0FFaUFTQUhhMGtOQUFzTElBWkJCR29oQmlBUlFRUnFJUkVnRjBFQmFpSVhJQkJIRFFBTERBRUxBa0FnQVVFRVNRMEFJQkFFUUVFQUlBMXJJUlFnQkVFY2FpRUZJQkJCREd3aEV5QVFRUU4wSVJVRFFFRUFJUXNEUUNBR0lna29BZ0FpQmdSQUFrQWdCa0dRZ0lBQmNRMEFJQVpCN3dOeElnRkZEUUFnQXlBRklBUW9BbXdnQVdvdEFBQkJBblJxSWd3b0FnQWlDaWdDQUNJQmF5RURBbjhnQVNBQ1FSQjJUUVJBSUFJZ0FVRVFkR3NoQWlBRFFZQ0FBbkVFUUNBS0tBSUVEQUlMSUFvb0FnUWhEaUFNSUFwQkRFRUlJQUVnQTBzaUVodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRb2dDQzBBQVNFQklBZ3RBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hDQ0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaENBd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUlDeUFJUVFGcklRZ2dBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUE1RklBNGdFaHNNQVFzZ0NpZ0NCQ0VPSUF3Z0NrRUlRUXdnQVNBRFN5SVNHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDaUFJTFFBQklRTWdDQzBBQUVIL0FVY0VRQ0FFSUFvMkFoQkJDQ0VJSUFOQkNIUWdBbW9oQWd3QkN5QURRWThCVFFSQUlBUWdDallDRUNBRFFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUWdMSUFoQkFXc2hDQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRURJQTRnRGtVZ0Voc0xCSDhnQXlBRklBa29BZ1JCRVhaQkJIRWdDVUVFYXlJT0tBSUFRUk4yUVFGeElBWkJEblpCRUhFZ0JrRVFka0hBQUhFZ0JrR3FBWEZ5Y25KeUloSkI0TGtCYWkwQUFFRUNkR29pRENnQ0FDSUtLQUlBSWdGcklRTWdFa0hndXdGcUxRQUFJUmdnRVNBVUlBMENmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRVNJQXdnQ2tFTVFRZ2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRWtVZ0VpQWJHd3dCQ3lBS0tBSUVJUklnRENBS1FRaEJEQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdFaUFTUlNBYkd3c2dHSE1pQ2hzMkFnQWdEaUFPS0FJQVFTQnlOZ0lBSUFrZ0NTZ0NCRUVJY2pZQ0JDQUpRWDRnQkNnQ2ZHdEJBblJxSWdFZ0FTZ0NCRUdBZ0FKeU5nSUVJQUVnQVNnQ0FDQUtRUjkwY2tHQWdBUnlOZ0lBSUFGQkJHc2lBU0FCS0FJQVFZQ0FDSEkyQWdBZ0JpQUtRUk4wY2tFUWNnVWdCZ3RCZ0lDQUFYSWhCZ3NDUUNBR1FZQ0JnQWh4RFFBZ0JrSDRIbkZGRFFBZ0F5QUZJQVFvQW13Z0JrRURkaUlTUWU4RGNXb3RBQUJCQW5ScUlnd29BZ0FpQ2lnQ0FDSUJheUVEQW44Z0FTQUNRUkIyVFFSQUlBSWdBVUVRZEdzaEFpQURRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRGlBTUlBcEJERUVJSUFFZ0Ewc2lHQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBNUZJQTRnR0JzTUFRc2dDaWdDQkNFT0lBd2dDa0VJUVF3Z0FTQURTeUlZRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUU1nQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnd0JDeUFEUVk4QlRRUkFJQVFnQ2pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUE0Z0RrVWdHQnNMQkg4Z0F5QUZJQWtvQWdSQkZIWkJCSEVnQ1VFRWF5SU9LQUlBUVJaMlFRRnhJQVpCRDNaQkVIRWdCa0VUZGtIQUFIRWdFa0dxQVhGeWNuSnlJaEpCNExrQmFpMEFBRUVDZEdvaURDZ0NBQ0lLS0FJQUlnRnJJUU1nRWtIZ3V3RnFMUUFBSVJnZ0VTQVFRUUowYWlBVUlBMENmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRVNJQXdnQ2tFTVFRZ2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRWtVZ0VpQWJHd3dCQ3lBS0tBSUVJUklnRENBS1FRaEJEQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdFaUFTUlNBYkd3c2dHSE1pQVJzMkFnQWdEaUFPS0FJQVFZQUNjallDQUNBSklBa29BZ1JCd0FCeU5nSUVJQVlnQVVFV2RISkJnQUZ5QlNBR0MwR0FnSUFJY2lFR0N3SkFJQVpCZ0lpQXdBQnhEUUFnQmtIQTl3RnhSUTBBSUFNZ0JTQUVLQUpzSUFaQkJuWWlFa0h2QTNGcUxRQUFRUUowYWlJTUtBSUFJZ29vQWdBaUFXc2hBd0ovSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4QkVBZ0NpZ0NCQXdDQ3lBS0tBSUVJUTRnRENBS1FReEJDQ0FCSUFOTEloZ2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEFTQUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUtOZ0lRSUFGQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBT1JTQU9JQmdiREFFTElBb29BZ1FoRGlBTUlBcEJDRUVNSUFFZ0Ewc2lHQnRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRURJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQW8yQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBRWhBeUFPSUE1RklCZ2JDd1IvSUFNZ0JTQUpLQUlFUVJkMlFRUnhJQWxCQkdzaURpZ0NBRUVaZGtFQmNTQUdRUkoyUVJCeElBWkJGblpCd0FCeElCSkJxZ0Z4Y25KeWNpSVNRZUM1QVdvdEFBQkJBblJxSWd3b0FnQWlDaWdDQUNJQmF5RURJQkpCNExzQmFpMEFBQ0VZSUJFZ0ZXb2dGQ0FOQW44Z0FTQUNRUkIyVFFSQUlBSWdBVUVRZEdzaEFpQURRWUNBQW5FRVFDQUtLQUlFREFJTElBb29BZ1FoRWlBTUlBcEJERUVJSUFFZ0Ewc2lHeHRxS0FJQU5nSUFBMEFDUUNBSURRQWdCQ2dDRUNJSVFRRnFJUW9nQ0MwQUFTRUJJQWd0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQ0NBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJQ3lBSVFRRnJJUWdnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElCSkZJQklnR3hzTUFRc2dDaWdDQkNFU0lBd2dDa0VJUVF3Z0FTQURTeUliRzJvb0FnQTJBZ0FEUUFKQUlBZ05BQ0FFS0FJUUlnaEJBV29oQ2lBSUxRQUJJUU1nQ0MwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnd0JDeUFEUVk4QlRRUkFJQVFnQ2pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTElBaEJBV3NoQ0NBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dBU0VESUJJZ0VrVWdHeHNMSUJoeklnRWJOZ0lBSUE0Z0RpZ0NBRUdBRUhJMkFnQWdDU0FKS0FJRVFZQUVjallDQkNBR0lBRkJHWFJ5UVlBSWNnVWdCZ3RCZ0lDQXdBQnlJUVlMQWtBZ0JrR0F3SUNBQkhFTkFDQUdRWUM4RDNGRkRRQWdBeUFGSUFRb0Ftd2dCa0VKZGlJU1FlOERjV290QUFCQkFuUnFJZ3dvQWdBaUNpZ0NBQ0lCYXlFREFuOGdBU0FDUVJCMlRRUkFJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRUVRQ0FLS0FJRURBSUxJQW9vQWdRaERpQU1JQXBCREVFSUlBRWdBMHNpR0J0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFvZ0NDMEFBU0VCSUFndEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFvMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSUN5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQTVGSUE0Z0dCc01BUXNnQ2lnQ0JDRU9JQXdnQ2tFSVFRd2dBU0FEU3lJWUcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFNZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQU5CQ0hRZ0Ftb2hBZ3dCQ3lBRFFZOEJUUVJBSUFRZ0NqWUNFQ0FEUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQVNFRElBNGdEa1VnR0JzTEJIOGdBeUFGSUFrb0FnUkJHblpCQkhFZ0NVRUVheUlPS0FJQVFSeDJRUUZ4SUFaQkZYWkJFSEVnQmtFWmRrSEFBSEVnRWtHcUFYRnljbkp5SWhKQjRMa0JhaTBBQUVFQ2RHb2lEQ2dDQUNJS0tBSUFJZ0ZySVFNZ0VrSGd1d0ZxTFFBQUlSZ2dFU0FUYWlBVUlBMENmeUFCSUFKQkVIWk5CRUFnQWlBQlFSQjBheUVDSUFOQmdJQUNjUVJBSUFvb0FnUU1BZ3NnQ2lnQ0JDRVNJQXdnQ2tFTVFRZ2dBU0FEU3lJYkcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaENpQUlMUUFCSVFFZ0NDMEFBRUgvQVVjRVFDQUVJQW8yQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0NqWUNFQ0FCUVFsMElBSnFJUUpCQnlFSURBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ0xJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRWtVZ0VpQWJHd3dCQ3lBS0tBSUVJUklnRENBS1FRaEJEQ0FCSUFOTEloc2JhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUtJQWd0QUFFaEF5QUlMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUWdnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUtOZ0lRSUFOQkNYUWdBbW9oQWtFSElRZ01BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hDQXNnQ0VFQmF5RUlJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBQklRTWdFaUFTUlNBYkd3c2dHSE1pQ2hzMkFnQWdEaUFPS0FJQVFZQ0FBWEkyQWdBZ0NTQUpLQUlFUVlBZ2NqWUNCQ0FFS0FKOFFRSjBJQWxxSWdFZ0FTZ0NCRUVFY2pZQ0JDQUJJQUVvQWd4QkFYSTJBZ3dnQVNBQktBSUlJQXBCRW5SeVFRSnlOZ0lJSUFZZ0NrRWNkSEpCZ01BQWNnVWdCZ3RCZ0lDQWdBUnlJUVlMSUFrZ0JqWUNBQXNnQ1VFRWFpRUdJQkZCQkdvaEVTQUxRUUZxSWdzZ0VFY05BQXNnQ1VFTWFpRUdJQkVnRTJvaEVTQUhRUVJxSWdjZ0JDZ0NnQUVpQVVGOGNVa05BQXNNQVF0QkJDQUJRWHh4SWdZZ0JrRUVUUnRCQVdzaUJrRjhjVUVFYWlFSElBa2dCa0VCZEVGNGNXcEJGR29oQmdzZ0JDQUlOZ0lJSUFRZ0F6WUNCQ0FFSUFJMkFnQWdCQ0FNTmdKb0lCQkZEUUFnQVNBSFRRMEFBMEFnQVNBSFJpRlRRUUFoQ0NBSElRRWdVMFVFUUFOQUlBUWdCaUFSSUFnZ0VHeEJBblJxSUEwZ0NDQUVLQUo4UVFKcVFRQVFVaUFJUVFGcUlnZ2dCQ2dDZ0FFaUFTQUhhMGtOQUFzTElBWkJCR29oQmlBUlFRUnFJUkVnRjBFQmFpSVhJQkJIRFFBTEN3d0NDd05BUVFBaEZ3TkFJQUVoQ1NBR0lnY29BZ0FpQmdSQUFrQWdCa0dRZ0lBQmNRMEFJQVpCN3dOeElnRkZEUUFnQXlBUUlBUW9BbXdnQVdvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhDaUFNSUF0QkNFRU1JQUVnQTBzaUZCdHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QUtJQXBGSUJRYkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRUtJQXdnQzBFTVFRZ2dBU0FEU3lJVUcyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQ2tVZ0NpQVVHd3dCQ3lBTEtBSUVDd1IvSUFNZ0VDQUhLQUlFUVJGMlFRUnhJQWRCQkdzaUNpZ0NBRUVUZGtFQmNTQUdRUTUyUVJCeElBWkJFSFpCd0FCeElBWkJxZ0Z4Y25KeWNpSVVRZUM1QVdvdEFBQkJBblJxSWd3b0FnQWlDeWdDQUNJQmF5RURJQlJCNExzQmFpMEFBQ0VUSUFrZ0JTQVJBbjhnQVNBQ1FSQjJTd1JBSUFzb0FnUWhGQ0FNSUF0QkNFRU1JQUVnQTBzaURodHFLQUlBTmdJQUEwQUNRQ0FJRFFBZ0JDZ0NFQ0lJUVFGcUlRc2dDQzBBQVNFRElBZ3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFSURBSUxJQVFnQ3pZQ0VDQURRUWwwSUFKcUlRSkJCeUVJREFFTElBUWdDellDRUVFSUlRZ2dBMEVJZENBQ2FpRUNDeUFJUVFGcklRZ2dBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFFaEF5QVVJQlJGSUE0YkRBRUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZCRUFnQ3lnQ0JDRVVJQXdnQzBFTVFRZ2dBU0FEU3lJT0cyb29BZ0EyQWdBRFFBSkFJQWdOQUNBRUtBSVFJZ2hCQVdvaEN5QUlMUUFCSVFFZ0NDMEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFnTUFnc2dCQ0FMTmdJUUlBRkJDWFFnQW1vaEFrRUhJUWdNQVFzZ0JDQUxOZ0lRUVFnaENDQUJRUWgwSUFKcUlRSUxJQWhCQVdzaENDQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnRkVVZ0ZDQU9Hd3dCQ3lBTEtBSUVDeUFUY3lJQkd6WUNBQ0FLSUFvb0FnQkJJSEkyQWdBZ0J5QUhLQUlFUVFoeU5nSUVJQVlnQVVFVGRISkJFSElGSUFZTFFZQ0FnQUZ5SVFZTEFrQWdCa0dBZ1lBSWNRMEFJQVpCK0I1eFJRMEFJQU1nRUNBRUtBSnNJQVpCQTNZaUZFSHZBM0ZxTFFBQVFRSjBhaUlNS0FJQUlnc29BZ0FpQVdzaEF3Si9JQUVnQWtFUWRrc0VRQ0FMS0FJRUlRb2dEQ0FMUVFoQkRDQUJJQU5MSWhNYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQXlBSUxRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0NpQUtSU0FUR3d3QkN5QUNJQUZCRUhScklRSWdBMEdBZ0FKeFJRUkFJQXNvQWdRaENpQU1JQXRCREVFSUlBRWdBMHNpRXh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQXBGSUFvZ0V4c01BUXNnQ3lnQ0JBc0VmeUFESUJBZ0J5Z0NCRUVVZGtFRWNTQUhRUVJySWdvb0FnQkJGblpCQVhFZ0JrRVBka0VRY1NBR1FSTjJRY0FBY1NBVVFhb0JjWEp5Y25JaUZFSGd1UUZxTFFBQVFRSjBhaUlNS0FJQUlnc29BZ0FpQVdzaEF5QVVRZUM3QVdvdEFBQWhFeUFKSUFVZ0VRSi9JQUVnQWtFUWRrc0VRQ0FMS0FJRUlSUWdEQ0FMUVFoQkRDQUJJQU5MSWc0YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQXlBSUxRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0ZDQVVSU0FPR3d3QkN5QUNJQUZCRUhScklRSWdBMEdBZ0FKeFJRUkFJQXNvQWdRaEZDQU1JQXRCREVFSUlBRWdBMHNpRGh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQlJGSUJRZ0Roc01BUXNnQ3lnQ0JBc2dFM01pQVJzMkFvQUNJQW9nQ2lnQ0FFR0FBbkkyQWdBZ0J5QUhLQUlFUWNBQWNqWUNCQ0FHSUFGQkZuUnlRWUFCY2dVZ0JndEJnSUNBQ0hJaEJnc0NRQ0FHUVlDSWdNQUFjUTBBSUFaQndQY0JjVVVOQUNBRElCQWdCQ2dDYkNBR1FRWjJJaFJCN3dOeGFpMEFBRUVDZEdvaURDZ0NBQ0lMS0FJQUlnRnJJUU1DZnlBQklBSkJFSFpMQkVBZ0N5Z0NCQ0VLSUF3Z0MwRUlRUXdnQVNBRFN5SVRHMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDeUFJTFFBQklRTWdDQzBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ01BZ3NnQkNBTE5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FMTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlMSUFoQkFXc2hDQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRURJQW9nQ2tVZ0V4c01BUXNnQWlBQlFSQjBheUVDSUFOQmdJQUNjVVVFUUNBTEtBSUVJUW9nRENBTFFReEJDQ0FCSUFOTEloTWJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUxJQWd0QUFFaEFTQUlMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBd0NDeUFFSUFzMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQXMyQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3NnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBS1JTQUtJQk1iREFFTElBc29BZ1FMQkg4Z0F5QVFJQWNvQWdSQkYzWkJCSEVnQjBFRWF5SUtLQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdGRUdxQVhGeWNuSnlJaFJCNExrQmFpMEFBRUVDZEdvaURDZ0NBQ0lMS0FJQUlnRnJJUU1nRkVIZ3V3RnFMUUFBSVJNZ0NTQUZJQkVDZnlBQklBSkJFSFpMQkVBZ0N5Z0NCQ0VVSUF3Z0MwRUlRUXdnQVNBRFN5SU9HMm9vQWdBMkFnQURRQUpBSUFnTkFDQUVLQUlRSWdoQkFXb2hDeUFJTFFBQklRTWdDQzBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRZ01BZ3NnQkNBTE5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFnTUFRc2dCQ0FMTmdJUVFRZ2hDQ0FEUVFoMElBSnFJUUlMSUFoQkFXc2hDQ0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0FTRURJQlFnRkVVZ0Roc01BUXNnQWlBQlFSQjBheUVDSUFOQmdJQUNjVVVFUUNBTEtBSUVJUlFnRENBTFFReEJDQ0FCSUFOTElnNGJhaWdDQURZQ0FBTkFBa0FnQ0EwQUlBUW9BaEFpQ0VFQmFpRUxJQWd0QUFFaEFTQUlMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaENBd0NDeUFFSUFzMkFoQWdBVUVKZENBQ2FpRUNRUWNoQ0F3QkN5QUVJQXMyQWhCQkNDRUlJQUZCQ0hRZ0Ftb2hBZ3NnQ0VFQmF5RUlJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBVVJTQVVJQTRiREFFTElBc29BZ1FMSUJOeklnRWJOZ0tBQkNBS0lBb29BZ0JCZ0JCeU5nSUFJQWNnQnlnQ0JFR0FCSEkyQWdRZ0JpQUJRUmwwY2tHQUNISUZJQVlMUVlDQWdNQUFjaUVHQ3dKQUlBWkJnTUNBZ0FSeERRQWdCa0dBdkE5eFJRMEFJQU1nRUNBRUtBSnNJQVpCQ1hZaUZFSHZBM0ZxTFFBQVFRSjBhaUlNS0FJQUlnc29BZ0FpQVdzaEF3Si9JQUVnQWtFUWRrc0VRQ0FMS0FJRUlRb2dEQ0FMUVFoQkRDQUJJQU5MSWhNYmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQXlBSUxRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0NpQUtSU0FUR3d3QkN5QUNJQUZCRUhScklRSWdBMEdBZ0FKeFJRUkFJQXNvQWdRaENpQU1JQXRCREVFSUlBRWdBMHNpRXh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQXBGSUFvZ0V4c01BUXNnQ3lnQ0JBc0VmeUFESUJBZ0J5Z0NCRUVhZGtFRWNTQUhRUVJySWdvb0FnQkJISFpCQVhFZ0JrRVZka0VRY1NBR1FSbDJRY0FBY1NBVVFhb0JjWEp5Y25JaUZFSGd1UUZxTFFBQVFRSjBhaUlNS0FJQUlnc29BZ0FpQVdzaEF5QVVRZUM3QVdvdEFBQWhFeUFKSUFVZ0VRSi9JQUVnQWtFUWRrc0VRQ0FMS0FJRUlSUWdEQ0FMUVFoQkRDQUJJQU5MSWc0YmFpZ0NBRFlDQUFOQUFrQWdDQTBBSUFRb0FoQWlDRUVCYWlFTElBZ3RBQUVoQXlBSUxRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQ0F3Q0N5QUVJQXMyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hDQXdCQ3lBRUlBczJBaEJCQ0NFSUlBTkJDSFFnQW1vaEFnc2dDRUVCYXlFSUlBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFCSVFNZ0ZDQVVSU0FPR3d3QkN5QUNJQUZCRUhScklRSWdBMEdBZ0FKeFJRUkFJQXNvQWdRaEZDQU1JQXRCREVFSUlBRWdBMHNpRGh0cUtBSUFOZ0lBQTBBQ1FDQUlEUUFnQkNnQ0VDSUlRUUZxSVFzZ0NDMEFBU0VCSUFndEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VJREFJTElBUWdDellDRUNBQlFRbDBJQUpxSVFKQkJ5RUlEQUVMSUFRZ0N6WUNFRUVJSVFnZ0FVRUlkQ0FDYWlFQ0N5QUlRUUZySVFnZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQlJGSUJRZ0Roc01BUXNnQ3lnQ0JBc2dFM01pQVJzMkFvQUdJQW9nQ2lnQ0FFR0FnQUZ5TmdJQUlBY2dCeWdDQkVHQUlISTJBZ1FnQnlBSEtBS0VBa0VFY2pZQ2hBSWdCeUFIS0FLTUFrRUJjallDakFJZ0J5QUhLQUtJQWlBQlFSSjBja0VDY2pZQ2lBSWdCaUFCUVJ4MGNrR0F3QUJ5QlNBR0MwR0FnSUNBQkhJaEJnc2dCeUFHTmdJQUN5QUhRUVJxSVFZZ0NVRUVhaUVCSUJkQkFXb2lGMEhBQUVjTkFBc2dCMEVNYWlFR0lBbEJoQVpxSVFFZ0RVRThTU0ZVSUExQkJHb2hEU0JVRFFBTEN5QUVJQWcyQWdnZ0JDQUROZ0lFSUFRZ0FqWUNBQ0FFSUF3MkFtZ0xEQUlMSUNJRVFFRUJJQmwwUVFGMklRa2dCQ2dDZkNJUlFRSjBJZ3dnQkNnQ2VHcEJER29oQVNBRUtBSjBJUVpCQUNFTklBUW9Bb0FCSWdOQkJFOEVRQ0FSUlEwRUlCRkJBMndoQlNBUlFRRjBJUXRCQUNBSmF5RUNBMEFnQzBFQ2RDRUtRUUFoQXdOQUFrQWdBU0lIS0FJQUlnRkZEUUFnQVVHUWdJQUJjVUVRUmdSQUlBUW9BZ0FoQVFKQUlBUW9BZ2dpRUEwQUlBRkIvd0ZHSVJBZ0JDZ0NFQ0lJTFFBQUlRRUNRQ0FRUlFSQUlBUWdBVFlDQUNBRUlBaEJBV28yQWhBTUFRc2dBVUdQQVUwRVFDQUVJQUUyQWdBZ0JDQUlRUUZxTmdJUVFRY2hFQXdDQzBIL0FTRUJJQVJCL3dFMkFnQUxRUWdoRUFzZ0JDQVFRUUZySWdnMkFnZ2dCaUFDSUFrZ0FTQUlka0VCY1NBR0tBSUFJZ0ZCSDNaR0d5QUJhallDQUNBSElBY29BZ0JCZ0lEQUFISWlBVFlDQUFzZ0FVR0FnWUFJY1VHQUFVWUVRQ0FFS0FJQUlRRUNRQ0FFS0FJSUloQU5BQ0FCUWY4QlJpRVFJQVFvQWhBaUNDMEFBQ0VCQWtBZ0VFVUVRQ0FFSUFFMkFnQWdCQ0FJUVFGcU5nSVFEQUVMSUFGQmp3Rk5CRUFnQkNBQk5nSUFJQVFnQ0VFQmFqWUNFRUVISVJBTUFndEIvd0VoQVNBRVFmOEJOZ0lBQzBFSUlSQUxJQVFnRUVFQmF5SUlOZ0lJSUFZZ0RHb2lFQ0FDSUFrZ0FTQUlka0VCY1NBUUtBSUFJZ0ZCSDNaR0d5QUJhallDQUNBSElBY29BZ0JCZ0lDQUJISWlBVFlDQUFzZ0FVR0FpSURBQUhGQmdBaEdCRUFnQkNnQ0FDRUJBa0FnQkNnQ0NDSVFEUUFnQVVIL0FVWWhFQ0FFS0FJUUlnZ3RBQUFoQVFKQUlCQkZCRUFnQkNBQk5nSUFJQVFnQ0VFQmFqWUNFQXdCQ3lBQlFZOEJUUVJBSUFRZ0FUWUNBQ0FFSUFoQkFXbzJBaEJCQnlFUURBSUxRZjhCSVFFZ0JFSC9BVFlDQUF0QkNDRVFDeUFFSUJCQkFXc2lDRFlDQ0NBR0lBcHFJaEFnQWlBSklBRWdDSFpCQVhFZ0VDZ0NBQ0lCUVI5MlJoc2dBV28yQWdBZ0J5QUhLQUlBUVlDQWdDQnlJZ0UyQWdBTElBRkJnTUNBZ0FSeFFZREFBRWNOQUNBR0lBVkJBblJxSVJBZ0JDZ0NBQ0VCQWtBZ0JDZ0NDQ0lJRFFBZ0FVSC9BVVloRkNBRUtBSVFJZ2d0QUFBaEFRSkFJQlJGQkVBZ0JDQUJOZ0lBSUFRZ0NFRUJhallDRUF3QkN5QUJRWThCVFFSQUlBUWdBVFlDQUNBRUlBaEJBV28yQWhCQkJ5RUlEQUlMUWY4QklRRWdCRUgvQVRZQ0FBdEJDQ0VJQ3lBRUlBaEJBV3NpQ0RZQ0NDQVFJQUlnQ1NBQklBaDJRUUZ4SUJBb0FnQWlBVUVmZGtZYklBRnFOZ0lBSUFjZ0J5Z0NBRUdBZ0lDQUFuSTJBZ0FMSUFaQkJHb2hCaUFIUVFScUlRRWdBMEVCYWlJRElCRkhEUUFMSUFkQkRHb2hBU0FHSUFWQkFuUnFJUVlnRFVFRWFpSU5JQVFvQW9BQklnTkJmSEZKRFFBTEN5QURJQTFORFFJZ0VVVU5Ba0VBSVJOQkFDQUpheUVGSUFNaEJ3TkFBa0FnQnlBTlJnUkFJQTBoQnd3QkN5QUJLQUlBSVJCQkFDRUNBMEJCa0lDQUFTQUNRUU5zSWdkMElCQnhRUkFnQjNSR0JFQWdCaUFDSUJGc1FRSjBhaUVRSUFRb0FnQWhBd0pBSUFRb0FnZ2lDQTBBSUFOQi93RkhJUXdnQkNnQ0VDSUlMUUFBSVFNQ1FDQU1SUVJBSUFOQmtBRlBCRUJCL3dFaEF5QUVRZjhCTmdJQURBSUxJQVFnQXpZQ0FDQUVJQWhCQVdvMkFoQkJCeUVJREFJTElBUWdBellDQUNBRUlBaEJBV28yQWhBTFFRZ2hDQXNnQkNBSVFRRnJJZ2cyQWdnZ0VDQUZJQWtnQXlBSWRrRUJjU0FRS0FJQUlnTkJIM1pHR3lBRGFqWUNBQ0FCSUFFb0FnQkJnSURBQUNBSGRISWlFRFlDQUNBRUtBS0FBU0VEQ3lBRElRY2dBa0VCYWlJQ0lBTWdEV3RKRFFBTEN5QUdRUVJxSVFZZ0FVRUVhaUVCSUJOQkFXb2lFeUFSUncwQUN3d0NDeUFFS0FKNElRZ2dCQ2dDZENFSElBUW9Bb0FCSVFNQ1FDQUVLQUo4SWd4QndBQkhEUUFnQTBIQUFFY05BQ0FJUVl3Q2FpRURRUUFoRTBFQVFRRWdHWFJCQVhZaUJXc2hEQ0FFS0FJSUlRSWdCQ2dDQkNFR0lBUW9BZ0FoQVNBRUtBSm9JUTBEUUVFQUlRZ0RRQ0FISVFrZ0F5SVFLQUlBSWdjRVFDQURJVlVnQjBHUWdJQUJjVUVRUmdSQUlBWWdEMEVRUVE5QkRpQUhRZThEY1JzZ0IwR0FnTUFBY1J0QkFuUnFJZzBvQWdBaUVTZ0NBQ0lEYXlFR0FuOGdBeUFCUVJCMlN3UkFJQkVvQWdRaEN5QU5JQkZCQ0VFTUlBTWdCa3NpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUNEUUFnQkNnQ0VDSUNRUUZxSVJFZ0FpMEFBU0VHSUFJdEFBQkIvd0ZHQkVBZ0JrR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBVUdBL2dOcUlRRkJDQ0VDREFJTElBUWdFVFlDRUNBR1FRbDBJQUZxSVFGQkJ5RUNEQUVMSUFRZ0VUWUNFRUVJSVFJZ0JrRUlkQ0FCYWlFQkN5QUNRUUZySVFJZ0FVRUJkQ0VCSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQmlBTElBdEZJQW9iREFFTElBRWdBMEVRZEdzaEFTQUdRWUNBQW5GRkJFQWdFU2dDQkNFTElBMGdFVUVNUVFnZ0F5QUdTeUlLRzJvb0FnQTJBZ0FEUUFKQUlBSU5BQ0FFS0FJUUlnSkJBV29oRVNBQ0xRQUJJUU1nQWkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlNQWdzZ0JDQVJOZ0lRSUFOQkNYUWdBV29oQVVFSElRSU1BUXNnQkNBUk5nSVFRUWdoQWlBRFFRaDBJQUZxSVFFTElBSkJBV3NoQWlBQlFRRjBJUUVnQmtFQmRDSUdRWUNBQWtrTkFBc2dDMFVnQ3lBS0d3d0JDeUFSS0FJRUN5RURJQWtnRENBRklBTWdDU2dDQUNJUlFSOTJSaHNnRVdvMkFnQWdCMEdBZ01BQWNpRUhDeUFIUVlDQmdBaHhRWUFCUmdSQUlBWWdEMEVRUVE5QkRpQUhRZmdlY1JzZ0IwR0FnSUFFY1J0QkFuUnFJZzBvQWdBaUVTZ0NBQ0lEYXlFR0FuOGdBeUFCUVJCMlN3UkFJQkVvQWdRaEN5QU5JQkZCQ0VFTUlBTWdCa3NpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUNEUUFnQkNnQ0VDSUNRUUZxSVJFZ0FpMEFBU0VHSUFJdEFBQkIvd0ZHQkVBZ0JrR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBVUdBL2dOcUlRRkJDQ0VDREFJTElBUWdFVFlDRUNBR1FRbDBJQUZxSVFGQkJ5RUNEQUVMSUFRZ0VUWUNFRUVJSVFJZ0JrRUlkQ0FCYWlFQkN5QUNRUUZySVFJZ0FVRUJkQ0VCSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQmlBTElBdEZJQW9iREFFTElBRWdBMEVRZEdzaEFTQUdRWUNBQW5GRkJFQWdFU2dDQkNFTElBMGdFVUVNUVFnZ0F5QUdTeUlLRzJvb0FnQTJBZ0FEUUFKQUlBSU5BQ0FFS0FJUUlnSkJBV29oRVNBQ0xRQUJJUU1nQWkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlNQWdzZ0JDQVJOZ0lRSUFOQkNYUWdBV29oQVVFSElRSU1BUXNnQkNBUk5nSVFRUWdoQWlBRFFRaDBJQUZxSVFFTElBSkJBV3NoQWlBQlFRRjBJUUVnQmtFQmRDSUdRWUNBQWtrTkFBc2dDMFVnQ3lBS0d3d0JDeUFSS0FJRUN5RURJQWtnRENBRklBTWdDU2dDZ0FJaUVVRWZka1liSUJGcU5nS0FBaUFIUVlDQWdBUnlJUWNMSUFkQmdJaUF3QUJ4UVlBSVJnUkFJQVlnRDBFUVFROUJEaUFIUWNEM0FYRWJJQWRCZ0lDQUlIRWJRUUowYWlJTktBSUFJaEVvQWdBaUEyc2hCZ0ovSUFNZ0FVRVFka3NFUUNBUktBSUVJUXNnRFNBUlFRaEJEQ0FESUFaTElnb2JhaWdDQURZQ0FBTkFBa0FnQWcwQUlBUW9BaEFpQWtFQmFpRVJJQUl0QUFFaEJpQUNMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnd0NDeUFFSUJFMkFoQWdCa0VKZENBQmFpRUJRUWNoQWd3QkN5QUVJQkUyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXNnQWtFQmF5RUNJQUZCQVhRaEFTQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRWWdDeUFMUlNBS0d3d0JDeUFCSUFOQkVIUnJJUUVnQmtHQWdBSnhSUVJBSUJFb0FnUWhDeUFOSUJGQkRFRUlJQU1nQmtzaUNodHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0JDZ0NFQ0lDUVFGcUlSRWdBaTBBQVNFRElBSXRBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQVFnRVRZQ0VDQURRUWwwSUFGcUlRRkJCeUVDREFFTElBUWdFVFlDRUVFSUlRSWdBMEVJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBWkJBWFFpQmtHQWdBSkpEUUFMSUF0RklBc2dDaHNNQVFzZ0VTZ0NCQXNoQXlBSklBd2dCU0FESUFrb0FvQUVJaEZCSDNaR0d5QVJhallDZ0FRZ0IwR0FnSUFnY2lFSEN5QlZJQWRCZ01DQWdBUnhRWURBQUVZRWZ5QUdJQTlCRUVFUFFRNGdCMEdBdkE5eEd5QUhRWUNBZ0lBQ2NSdEJBblJxSWcwb0FnQWlFU2dDQUNJRGF5RUdBbjhnQXlBQlFSQjJTd1JBSUJFb0FnUWhDeUFOSUJGQkNFRU1JQU1nQmtzaUNodHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0JDZ0NFQ0lDUVFGcUlSRWdBaTBBQVNFR0lBSXRBQUJCL3dGR0JFQWdCa0dRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0RBSUxJQVFnRVRZQ0VDQUdRUWwwSUFGcUlRRkJCeUVDREFFTElBUWdFVFlDRUVFSUlRSWdCa0VJZENBQmFpRUJDeUFDUVFGcklRSWdBVUVCZENFQklBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEJpQUxJQXRGSUFvYkRBRUxJQUVnQTBFUWRHc2hBU0FHUVlDQUFuRkZCRUFnRVNnQ0JDRUxJQTBnRVVFTVFRZ2dBeUFHU3lJS0cyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ0pCQVdvaEVTQUNMUUFCSVFNZ0FpMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FCUVlEK0Eyb2hBVUVJSVFJTUFnc2dCQ0FSTmdJUUlBTkJDWFFnQVdvaEFVRUhJUUlNQVFzZ0JDQVJOZ0lRUVFnaEFpQURRUWgwSUFGcUlRRUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0JrRUJkQ0lHUVlDQUFra05BQXNnQzBVZ0N5QUtHd3dCQ3lBUktBSUVDeUVESUFrZ0RDQUZJQU1nQ1NnQ2dBWWlFVUVmZGtZYklCRnFOZ0tBQmlBSFFZQ0FnSUFDY2dVZ0J3czJBZ0FMSUJCQkJHb2hBeUFKUVFScUlRY2dDRUVCYWlJSVFjQUFSdzBBQ3lBUVFReHFJUU1nQ1VHRUJtb2hCeUFUUVR4SklWWWdFMEVFYWlFVElGWU5BQXNnQkNBQ05nSUlJQVFnQmpZQ0JDQUVJQUUyQWdBZ0JDQU5OZ0pvREFJTFFRRWdHWFJCQVhZaEN5QUlJQXhCQW5RaURtcEJER29oQ1NBRUtBSUlJUUlnQkNnQ0JDRUdJQVFvQWdBaEFTQUVLQUpvSVExQkFDRVJBa0FnQTBFRVNRMEFJQXdFUUNBTVFRTnNJUlFnREVFQmRDRVhRUUFnQzJzaENnTkFJQmRCQW5RaEVrRUFJUWdEUUNBSklnVW9BZ0FpRUFSQUlCQkJrSUNBQVhGQkVFWUVRQ0FHSUE5QkVFRVBRUTRnRUVIdkEzRWJJQkJCZ0lEQUFIRWJRUUowYWlJTktBSUFJZ2tvQWdBaUEyc2hCZ0ovSUFNZ0FVRVFkazBFUUNBQklBTkJFSFJySVFFZ0JrR0FnQUp4QkVBZ0NTZ0NCQXdDQ3lBSktBSUVJUk1nRFNBSlFReEJDQ0FESUFaTEloVWJhaWdDQURZQ0FBTkFBa0FnQWcwQUlBUW9BaEFpQ1VFQmFpRUNJQWt0QUFFaEF5QUpMUUFBUWY4QlJ3UkFJQVFnQWpZQ0VFRUlJUUlnQTBFSWRDQUJhaUVCREFFTElBTkJqd0ZOQkVBZ0JDQUNOZ0lRSUFOQkNYUWdBV29oQVVFSElRSU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBRkJnUDREYWlFQlFRZ2hBZ3NnQWtFQmF5RUNJQUZCQVhRaEFTQUdRUUYwSWdaQmdJQUNTUTBBQ3lBVFJTQVRJQlViREFFTElBa29BZ1FoRXlBTklBbEJDRUVNSUFNZ0Jrc2lGUnRxS0FJQU5nSUFBMEFDUUNBQ0RRQWdCQ2dDRUNJSlFRRnFJUUlnQ1MwQUFTRUdJQWt0QUFCQi93RkhCRUFnQkNBQ05nSVFRUWdoQWlBR1FRaDBJQUZxSVFFTUFRc2dCa0dQQVUwRVFDQUVJQUkyQWhBZ0JrRUpkQ0FCYWlFQlFRY2hBZ3dCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBVUdBL2dOcUlRRkJDQ0VDQ3lBQ1FRRnJJUUlnQVVFQmRDRUJJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhCaUFUSUJORklCVWJDeUVESUFjZ0NpQUxJQU1nQnlnQ0FDSUpRUjkyUmhzZ0NXbzJBZ0FnRUVHQWdNQUFjaUVRQ3lBUVFZQ0JnQWh4UVlBQlJnUkFJQVlnRDBFUVFROUJEaUFRUWZnZWNSc2dFRUdBZ0lBRWNSdEJBblJxSWcwb0FnQWlDU2dDQUNJRGF5RUdBbjhnQXlBQlFSQjJUUVJBSUFFZ0EwRVFkR3NoQVNBR1FZQ0FBbkVFUUNBSktBSUVEQUlMSUFrb0FnUWhFeUFOSUFsQkRFRUlJQU1nQmtzaUZSdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0JDZ0NFQ0lKUVFGcUlRSWdDUzBBQVNFRElBa3RBQUJCL3dGSEJFQWdCQ0FDTmdJUVFRZ2hBaUFEUVFoMElBRnFJUUVNQVFzZ0EwR1BBVTBFUUNBRUlBSTJBaEFnQTBFSmRDQUJhaUVCUVFjaEFnd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNDeUFDUVFGcklRSWdBVUVCZENFQklBWkJBWFFpQmtHQWdBSkpEUUFMSUJORklCTWdGUnNNQVFzZ0NTZ0NCQ0VUSUEwZ0NVRUlRUXdnQXlBR1N5SVZHMm9vQWdBMkFnQURRQUpBSUFJTkFDQUVLQUlRSWdsQkFXb2hBaUFKTFFBQklRWWdDUzBBQUVIL0FVY0VRQ0FFSUFJMkFoQkJDQ0VDSUFaQkNIUWdBV29oQVF3QkN5QUdRWThCVFFSQUlBUWdBallDRUNBR1FRbDBJQUZxSVFGQkJ5RUNEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUJRWUQrQTJvaEFVRUlJUUlMSUFKQkFXc2hBaUFCUVFGMElRRWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUdJQk1nRTBVZ0ZSc0xJUU1nQnlBT2FpSUpJQW9nQ3lBRElBa29BZ0FpQ1VFZmRrWWJJQWxxTmdJQUlCQkJnSUNBQkhJaEVBc2dFRUdBaUlEQUFIRkJnQWhHQkVBZ0JpQVBRUkJCRDBFT0lCQkJ3UGNCY1JzZ0VFR0FnSUFnY1J0QkFuUnFJZzBvQWdBaUNTZ0NBQ0lEYXlFR0FuOGdBeUFCUVJCMlRRUkFJQUVnQTBFUWRHc2hBU0FHUVlDQUFuRUVRQ0FKS0FJRURBSUxJQWtvQWdRaEV5QU5JQWxCREVFSUlBTWdCa3NpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUNEUUFnQkNnQ0VDSUpRUUZxSVFJZ0NTMEFBU0VESUFrdEFBQkIvd0ZIQkVBZ0JDQUNOZ0lRUVFnaEFpQURRUWgwSUFGcUlRRU1BUXNnQTBHUEFVMEVRQ0FFSUFJMkFoQWdBMEVKZENBQmFpRUJRUWNoQWd3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQVVHQS9nTnFJUUZCQ0NFQ0N5QUNRUUZySVFJZ0FVRUJkQ0VCSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQk5GSUJNZ0ZSc01BUXNnQ1NnQ0JDRVRJQTBnQ1VFSVFRd2dBeUFHU3lJVkcyb29BZ0EyQWdBRFFBSkFJQUlOQUNBRUtBSVFJZ2xCQVdvaEFpQUpMUUFCSVFZZ0NTMEFBRUgvQVVjRVFDQUVJQUkyQWhCQkNDRUNJQVpCQ0hRZ0FXb2hBUXdCQ3lBR1FZOEJUUVJBSUFRZ0FqWUNFQ0FHUVFsMElBRnFJUUZCQnlFQ0RBRUxJQVFnQkNnQ0RFRUJhallDRENBQlFZRCtBMm9oQVVFSUlRSUxJQUpCQVdzaEFpQUJRUUYwSVFFZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFR0lCTWdFMFVnRlJzTElRTWdCeUFTYWlJSklBb2dDeUFESUFrb0FnQWlDVUVmZGtZYklBbHFOZ0lBSUJCQmdJQ0FJSEloRUFzZ0JTQVFRWURBZ0lBRWNVR0F3QUJHQkg4Z0JpQVBRUkJCRDBFT0lCQkJnTHdQY1JzZ0VFR0FnSUNBQW5FYlFRSjBhaUlOS0FJQUlna29BZ0FpQTJzaEJnSi9JQU1nQVVFUWRrMEVRQ0FCSUFOQkVIUnJJUUVnQmtHQWdBSnhCRUFnQ1NnQ0JBd0NDeUFKS0FJRUlSTWdEU0FKUVF4QkNDQURJQVpMSWhVYmFpZ0NBRFlDQUFOQUFrQWdBZzBBSUFRb0FoQWlDVUVCYWlFQ0lBa3RBQUVoQXlBSkxRQUFRZjhCUndSQUlBUWdBallDRUVFSUlRSWdBMEVJZENBQmFpRUJEQUVMSUFOQmp3Rk5CRUFnQkNBQ05nSVFJQU5CQ1hRZ0FXb2hBVUVISVFJTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFGQmdQNERhaUVCUVFnaEFnc2dBa0VCYXlFQ0lBRkJBWFFoQVNBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFUUlNBVElCVWJEQUVMSUFrb0FnUWhFeUFOSUFsQkNFRU1JQU1nQmtzaUZSdHFLQUlBTmdJQUEwQUNRQ0FDRFFBZ0JDZ0NFQ0lKUVFGcUlRSWdDUzBBQVNFR0lBa3RBQUJCL3dGSEJFQWdCQ0FDTmdJUVFRZ2hBaUFHUVFoMElBRnFJUUVNQVFzZ0JrR1BBVTBFUUNBRUlBSTJBaEFnQmtFSmRDQUJhaUVCUVFjaEFnd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FVR0EvZ05xSVFGQkNDRUNDeUFDUVFGcklRSWdBVUVCZENFQklBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEJpQVRJQk5GSUJVYkN5RURJQWNnRkVFQ2RHb2lDU0FLSUFzZ0F5QUpLQUlBSWdsQkgzWkdHeUFKYWpZQ0FDQVFRWUNBZ0lBQ2NnVWdFQXMyQWdBTElBVkJCR29oQ1NBSFFRUnFJUWNnQ0VFQmFpSUlJQXhIRFFBTElBVkJER29oQ1NBSElCUkJBblJxSVFjZ0VVRUVhaUlSSUFRb0FvQUJJZ05CZkhGSkRRQUxEQUVMUVFRZ0EwRjhjU0lKSUFsQkJFMGJRUUZySWdsQmZIRkJCR29oRVNBSUlBbEJBWFJCZUhGcVFSUnFJUWtMSUFRZ0FqWUNDQ0FFSUFZMkFnUWdCQ0FCTmdJQUlBUWdEVFlDYUNBTVJRMEJJQU1nRVUwTkFVRUFJUk5CQUNBTGF5RVVJQU1oQVFOQUFrQWdBU0FSUmdSQUlCRWhBUXdCQ3lBSktBSUFJUUpCQUNFUUEwQkJrSUNBQVNBUVFRTnNJZ2gwSUFKeFFSQWdDSFJHQkVBZ0J5QU1JQkJzUVFKMGFpRUZJQVFnRDBFUVFROUJEaUFDSUFoMklnRkI3d054R3lBQlFZQ0F3QUJ4RzBFQ2RHb2lEVFlDYUNBRUlBUW9BZ1FnRFNnQ0FDSUNLQUlBSWdGcklnTTJBZ1FDZnlBQklBUW9BZ0FpQmtFUWRrc0VRQ0FDS0FJRUlRb2dCQ0FCTmdJRUlBMGdBa0VJUVF3Z0FTQURTeUlPRzJvb0FnQTJBZ0FnQkNnQ0NDRUNBMEFDUUNBQ0RRQWdCQ2dDRUNJQ1FRRnFJUTBnQWkwQUFTRURJQUl0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0JrR0EvZ05xSVFaQkNDRUNEQUlMSUFRZ0RUWUNFQ0FEUVFsMElBWnFJUVpCQnlFQ0RBRUxJQVFnRFRZQ0VFRUlJUUlnQTBFSWRDQUdhaUVHQ3lBRUlBSkJBV3NpQWpZQ0NDQUVJQVpCQVhRaUJqWUNBQ0FFSUFGQkFYUWlBVFlDQkNBQlFZQ0FBa2tOQUFzZ0NpQUtSU0FPR3d3QkN5QUVJQVlnQVVFUWRHc2lCallDQUNBRFFZQ0FBbkZGQkVBZ0FpZ0NCQ0VLSUEwZ0FrRU1RUWdnQVNBRFN5SU9HMm9vQWdBMkFnQWdCQ2dDQ0NFQ0EwQUNRQ0FDRFFBZ0JDZ0NFQ0lDUVFGcUlRMGdBaTBBQVNFQklBSXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQmtHQS9nTnFJUVpCQ0NFQ0RBSUxJQVFnRFRZQ0VDQUJRUWwwSUFacUlRWkJCeUVDREFFTElBUWdEVFlDRUVFSUlRSWdBVUVJZENBR2FpRUdDeUFFSUFKQkFXc2lBallDQ0NBRUlBWkJBWFFpQmpZQ0FDQUVJQU5CQVhRaUF6WUNCQ0FEUVlDQUFra05BQXNnQ2tVZ0NpQU9Hd3dCQ3lBQ0tBSUVDeUVCSUFVZ0ZDQUxJQUVnQlNnQ0FDSURRUjkyUmhzZ0EybzJBZ0FnQ1NBSktBSUFRWUNBd0FBZ0NIUnlJZ0kyQWdBZ0JDZ0NnQUVoQXdzZ0VFRUJhaUlRSUFNaUFTQVJhMGtOQUFzTElBbEJCR29oQ1NBSFFRUnFJUWNnRTBFQmFpSVRJQXhIRFFBTERBRUxRUUFoRVVFQUlSY0NRQUpBQWtBQ1FDQUVLQUo4SWhSQndBQkhEUUFnQkNnQ2dBRkJ3QUJIRFFCQkFFRUJJQmwwSWdGQkFYWWdBWElpRkdzaEV5QUVRZVFBYWlFSUlBUkI0QUJxSVJBZ0JFRWNhaUVMSUFRb0FuaEJqQUpxSVFZZ0JDZ0NDQ0VGSUFRb0FnUWhBU0FFS0FJQUlRSWdCQ2dDYUNFSklBUW9BblFoQXlBV1FRaHhEUUVEUUVFQUlRd0RRQ0FESVJFQ1FBSkFBbjhDUUFKQUlBWWlEU2dDQUNJR1JRUkFJQUVnRUNnQ0FDSURLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQXlnQ0JDRUhJQkFnQTBFSVFRd2dBU0FHU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ05CQVdvaENTQURMUUFCSVFFZ0F5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FKTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUpOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBY2dCMFVnQ2hzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FES0FJRUlRY2dFQ0FEUVF4QkNDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFSklBWXRBQUVoQXlBR0xRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBazJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFIUlNBSElBb2JEQUVMSUFNb0FnUUxSUVJBSUJBaENRd0dDeUFCSUFnb0FnQWlBeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFNb0FnUWhCeUFJSUFOQkNFRU1JQUVnQmtraUNodHFLQUlBSWdNMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdsQkFXb2hCU0FKTFFBQklRRWdDUzBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQWNnQjBVZ0Noc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBREtBSUVJUWNnQ0NBRFFReEJDQ0FCSUFaSklnb2JhaWdDQUNJRE5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSlFRRnFJUVVnQ1MwQUFTRUdJQWt0QUFCQi93RkdCRUFnQmtHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FHUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBZEZJQWNnQ2hzTUFRc2dBeWdDQkFzaENpQUJJQU1vQWdBaUJtc2hBUUovSUFZZ0FrRVFka3NFUUNBREtBSUVJUWNnQ0NBRFFRaEJEQ0FCSUFaSklnNGJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQTBFQmFpRUpJQU10QUFFaEFTQURMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFrMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQWsyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdCeUFIUlNBT0d3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFNb0FnUWhCeUFJSUFOQkRFRUlJQUVnQmtraURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRa2dCaTBBQVNFRElBWXRBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQ1RZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdDVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFkRklBY2dEaHNNQVFzZ0F5Z0NCQXNoQTBFQUlRWWdDQ0VKQWtBQ1FBSkFBbjhDUUFKQUlBTWdDa0VCZEhJT0JBQUJBd1VLQ3lBQklBc2dEU2dDQkVFUmRrRUVjU0FOUVFScklnY29BZ0JCRTNaQkFYRnlJZzVCNExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lES0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0F5Z0NCQ0VLSUFrZ0EwRUlRUXdnQVNBR1NTSVNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdOQkFXb2hDU0FETFFBQklRRWdBeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBSk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FKTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQW9nQ2tVZ0Voc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBREtBSUVJUW9nQ1NBRFFReEJDQ0FCSUFaSkloSWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUpJQVl0QUFFaEF5QUdMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFrMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQWsyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQkliREFFTElBTW9BZ1FMSVFNZ0VTQVRJQlFnQXlBT1FlQzdBV290QUFCeklnTWJOZ0lBSUFjZ0J5Z0NBRUVnY2pZQ0FDQU5JQTBvQWdSQkNISTJBZ1FnRFVHTUFtc2lCaUFHS0FJQVFZQ0FDSEkyQWdBZ0RVR0VBbXNpQmlBR0tBSUFRWUNBQW5JMkFnQWdEVUdJQW1zaUJpQUdLQUlBSUFOQkgzUnlRWUNBQkhJMkFnQWdBMEVUZENGWElBRWdDeUFFS0FKc0xRQUNRUUowYWlJSEtBSUFJZ01vQWdBaUJtc2hBUUovSUFZZ0FrRVFka3NFUUNBREtBSUVJUWtnQnlBRFFRaEJEQ0FCSUFaSklnNGJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQTBFQmFpRUhJQU10QUFFaEFTQURMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFjMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQWMyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRRWdDU0FKUlNBT0d3d0JDeUFDSUFaQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFNb0FnUWhDU0FISUFOQkRFRUlJQUVnQmtraURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRY2dCaTBBQVNFRElBWXRBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQnpZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCellDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dEaHNNQVFzZ0F5Z0NCQXNoQXlCWFFSQnlJZ1lnQTBVTkFSb0xJQUVnQ3lBTktBSUVRUlIyUVFSeElBMUJCR3NpQ1NnQ0FFRVdka0VCY1NBR1FROTJRUkJ4SUFaQkUzWkJ3QUJ4SUFaQkEzWkJxZ0Z4Y25KeWNpSVNRZUM1QVdvdEFBQkJBblJxSWdvb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhEaUFLSUFkQkNFRU1JQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQU9JQTVGSUFvYkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRU9JQW9nQjBFTVFRZ2dBU0FEU1NJS0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRGtVZ0RpQUtHd3dCQ3lBSEtBSUVDeUVESUJFZ0V5QVVJQU1nRWtIZ3V3RnFMUUFBY3lJREd6WUNnQUlnQ1NBSktBSUFRWUFDY2pZQ0FDQU5JQTBvQWdSQndBQnlOZ0lFSUFZZ0EwRVdkSEpCZ0FGeUN5RUdJQUVnQ3lBRUtBSnNJQVpCQm5aQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJSEtBSUFJZ05ySVFFQ2Z5QURJQUpCRUhaTEJFQWdCeWdDQkNFS0lBa2dCMEVJUVF3Z0FTQURTU0lPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQ1NBSExRQUJJUUVnQnkwQUFFSC9BVVlFUUNBQlFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUpOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBSk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQTBFQmRDSURRWUNBQWtrTkFBc2dBeUVCSUFvZ0NrVWdEaHNNQVFzZ0FpQURRUkIwYXlFQ0lBRkJnSUFDY1VVRVFDQUhLQUlFSVFvZ0NTQUhRUXhCQ0NBQklBTkpJZzRiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVKSUFjdEFBRWhBeUFITFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBazJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFrMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUE0YkRBRUxJQWNvQWdRTFJRMEJDeUFCSUFzZ0RTZ0NCRUVYZGtFRWNTQU5RUVJySWdrb0FnQkJHWFpCQVhFZ0JrRVNka0VRY1NBR1FSWjJRY0FBY1NBR1FRWjJRYW9CY1hKeWNuSWlFa0hndVFGcUxRQUFRUUowYWlJS0tBSUFJZ2NvQWdBaUEyc2hBUUovSUFNZ0FrRVFka3NFUUNBSEtBSUVJUTRnQ2lBSFFRaEJEQ0FCSUFOSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdEaUFPUlNBS0d3d0JDeUFDSUFOQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFjb0FnUWhEaUFLSUFkQkRFRUlJQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUE1RklBNGdDaHNNQVFzZ0J5Z0NCQXNoQXlBUklCTWdGQ0FESUJKQjRMc0JhaTBBQUhNaUF4czJBb0FFSUFrZ0NTZ0NBRUdBRUhJMkFnQWdEU0FOS0FJRVFZQUVjallDQkNBR0lBTkJHWFJ5UVlBSWNpRUdDeUFCSUFzZ0JDZ0NiQ0FHUVFsMlFlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlN3UkFJQWNvQWdRaENpQUpJQWRCQ0VFTUlBRWdBMGtpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBS0lBcEZJQTRiREFFTElBSWdBMEVRZEdzaEFpQUJRWUNBQW5GRkJFQWdCeWdDQkNFS0lBa2dCMEVNUVFnZ0FTQURTU0lPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDa1VnQ2lBT0d3d0JDeUFIS0FJRUMwVU5CUXNnQVNBTElBMG9BZ1JCR25aQkJIRWdEVUVFYXlJT0tBSUFRUngyUVFGeElBWkJGWFpCRUhFZ0JrRVpka0hBQUhFZ0JrRUpka0dxQVhGeWNuSnlJZ3BCNExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnTnJJUUVnQXlBQ1FSQjJTd1JBSUFjb0FnUWhFaUFKSUFkQkNFRU1JQUVnQTBraUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQVNJQkpGSUJVYkRBUUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRU5BU0FIS0FJRUlSSWdDU0FIUVF4QkNDQUJJQU5KSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFTUlNBU0lCVWJEQU1MQWtBZ0JrR1FnSUFCY1EwQUlBRWdDeUFFS0FKc0lBWkI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRUtJQWtnQjBFSVFRd2dBU0FEU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBb2dDa1VnRGhzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRb2dDU0FIUVF4QkNDQUJJQU5KSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFLUlNBS0lBNGJEQUVMSUFjb0FnUUxSUTBBSUFFZ0N5QU5LQUlFUVJGMlFRUnhJQTFCQkdzaUNpZ0NBRUVUZGtFQmNTQUdRUTUyUVJCeElBWkJFSFpCd0FCeElBWkJxZ0Z4Y25KeWNpSVNRZUM1QVdvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhEaUFKSUFkQkNFRU1JQUVnQTBraUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQU9JQTVGSUJVYkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRU9JQWtnQjBFTVFRZ2dBU0FEU1NJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRGtVZ0RpQVZHd3dCQ3lBSEtBSUVDeUVESUJFZ0V5QVVJQU1nRWtIZ3V3RnFMUUFBY3lJREd6WUNBQ0FLSUFvb0FnQkJJSEkyQWdBZ0RTQU5LQUlFUVFoeU5nSUVJQTFCakFKcklnY2dCeWdDQUVHQWdBaHlOZ0lBSUExQmhBSnJJZ2NnQnlnQ0FFR0FnQUp5TmdJQUlBMUJpQUpySWdjZ0J5Z0NBQ0FEUVI5MGNrR0FnQVJ5TmdJQUlBWWdBMEVUZEhKQkVISWhCZ3NDUUNBR1FZQ0JnQWh4RFFBZ0FTQUxJQVFvQW13Z0JrRURkaUlPUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSURheUVCQW44Z0F5QUNRUkIyU3dSQUlBY29BZ1FoQ2lBSklBZEJDRUVNSUFFZ0Ewa2lFaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FLSUFwRklCSWJEQUVMSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkZGQkVBZ0J5Z0NCQ0VLSUFrZ0IwRU1RUWdnQVNBRFNTSVNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRTWdCeTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQU5CQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0NrVWdDaUFTR3d3QkN5QUhLQUlFQzBVTkFDQUJJQXNnRFNnQ0JFRVVka0VFY1NBTlFRUnJJZ29vQWdCQkZuWkJBWEVnQmtFUGRrRVFjU0FHUVJOMlFjQUFjU0FPUWFvQmNYSnljbklpRWtIZ3VRRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGtzRVFDQUhLQUlFSVE0Z0NTQUhRUWhCRENBQklBTkpJaFViYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSZ1JBSUFGQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFEUVFGMElnTkJnSUFDU1EwQUN5QURJUUVnRGlBT1JTQVZHd3dCQ3lBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4UlFSQUlBY29BZ1FoRGlBSklBZEJERUVJSUFFZ0Ewa2lGUnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRURJQWN0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FEUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBNUZJQTRnRlJzTUFRc2dCeWdDQkFzaEF5QVJJQk1nRkNBRElCSkI0THNCYWkwQUFITWlBeHMyQW9BQ0lBb2dDaWdDQUVHQUFuSTJBZ0FnRFNBTktBSUVRY0FBY2pZQ0JDQUdJQU5CRm5SeVFZQUJjaUVHQ3dKQUlBWkJnSWlBd0FCeERRQWdBU0FMSUFRb0Ftd2dCa0VHZGlJT1FlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlN3UkFJQWNvQWdRaENpQUpJQWRCQ0VFTUlBRWdBMGtpRWh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBS0lBcEZJQkliREFFTElBSWdBMEVRZEdzaEFpQUJRWUNBQW5GRkJFQWdCeWdDQkNFS0lBa2dCMEVNUVFnZ0FTQURTU0lTRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUZOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDa1VnQ2lBU0d3d0JDeUFIS0FJRUMwVU5BQ0FCSUFzZ0RTZ0NCRUVYZGtFRWNTQU5RUVJySWdvb0FnQkJHWFpCQVhFZ0JrRVNka0VRY1NBR1FSWjJRY0FBY1NBT1Fhb0JjWEp5Y25JaUVrSGd1UUZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrc0VRQ0FIS0FJRUlRNGdDU0FIUVFoQkRDQUJJQU5KSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0RpQU9SU0FWR3d3QkN5QUNJQU5CRUhScklRSWdBVUdBZ0FKeFJRUkFJQWNvQWdRaERpQUpJQWRCREVFSUlBRWdBMGtpRlJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQTVGSUE0Z0ZSc01BUXNnQnlnQ0JBc2hBeUFSSUJNZ0ZDQURJQkpCNExzQmFpMEFBSE1pQXhzMkFvQUVJQW9nQ2lnQ0FFR0FFSEkyQWdBZ0RTQU5LQUlFUVlBRWNqWUNCQ0FHSUFOQkdYUnlRWUFJY2lFR0N5QUdRWURBZ0lBRWNRMERJQUVnQ3lBRUtBSnNJQVpCQ1hZaUVrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnRW9BZ0FpQTJzaEJ3Si9JQU1nQWtFUWRrc0VRQ0FCS0FJRUlRb2dDU0FCUVFoQkRDQURJQWRMSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFjZ0NpQUtSU0FPR3d3QkN5QUNJQU5CRUhScklRSWdCMEdBZ0FKeFJRUkFJQUVvQWdRaENpQUpJQUZCREVFSUlBTWdCMHNpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSURRUUZxSVFVZ0F5MEFBU0VCSUFNdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFkQkFYUWlCMEdBZ0FKSkRRQUxJQXBGSUFvZ0Roc01BUXNnQVNnQ0JBdEZCRUFnQnlFQkRBUUxJQWNnQ3lBTktBSUVRUnAyUVFSeElBMUJCR3NpRGlnQ0FFRWNka0VCY1NBR1FSVjJRUkJ4SUFaQkdYWkJ3QUJ4SUJKQnFnRnhjbkp5Y2lJS1FlQzVBV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lCYXlFRElBRWdBa0VRZGtzRVFDQUhLQUlFSVJJZ0NTQUhRUWhCRENBQklBTkxJaFViYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBeUFITFFBQVFmOEJSZ1JBSUFOQmtBRlBCRUFnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXdDQ3lBRUlBVTJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFVMkFoQkJDQ0VGSUFOQkNIUWdBbW9oQWdzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QVNJQkpGSUJVYkRBTUxJQUlnQVVFUWRHc2hBaUFEUVlDQUFuRkZEUUVnQXlFQkN5QUhLQUlFREFFTElBY29BZ1FoRWlBSklBZEJERUVJSUFFZ0Ewc2lGUnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkdCRUFnQVVHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZEQUlMSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FTUlNBU0lCVWJDeUVESUJFZ0V5QVVJQU1nQ2tIZ3V3RnFMUUFBY3lJREd6WUNnQVlnRGlBT0tBSUFRWUNBQVhJMkFnQWdEU0FOS0FJRVFZQWdjallDQkNBTklBMG9Bb1FDUVFSeU5nS0VBaUFOSUEwb0Fvd0NRUUZ5TmdLTUFpQU5JQTBvQW9nQ0lBTkJFblJ5UVFKeU5nS0lBaUFHSUFOQkhIUnlRWURBQUhJaEJnc2dEU0FHUWYvLy83WjdjVFlDQUFzZ0RVRUVhaUVHSUJGQkJHb2hBeUFNUVFGcUlneEJ3QUJIRFFBTElBMUJER29oQmlBUlFZUUdhaUVESUJkQlBFa2hXQ0FYUVFScUlSY2dXQTBBQ3d3Q0MwRUJJQmwwSWdGQkFYWWdBWEloRGlBRUtBSjRJZ2NnRkVFQ2RHcEJER29oQXlBRUtBS0FBU0VHSUFRb0FnZ2hCU0FFS0FJRUlRRWdCQ2dDQUNFQ0lBUW9BbWdoQ1NBRUtBSjBJUXNDUUFKQUlCWkJDSEVFUUNBR1FRUkpEUUlnRkVVTkFTQUVRZVFBYWlFUUlBUkI0QUJxSVEwZ0ZFRURiQ0ViSUJSQkFYUWhKRUVBSUE1cklSVWdCRUVjYWlFU0EwQkJBQ0VZQTBBQ1FBSkFBbjhDUUNBRElnZ29BZ0FpQXdSQUFrQWdBMEdRZ0lBQmNRMEFJQUVnRWlBRUtBSnNJQU5CN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VNSUFrZ0IwRU1RUWdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRWWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdCVFlDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0RFVWdEQ0FLR3d3QkN5QUhLQUlFSVF3Z0NTQUhRUWhCRENBQklBWkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnRENBTVJTQUtHd3RGRFFBZ0FTQVNJQWdvQWdSQkVYWkJCSEVnQ0VFRWF5SU1LQUlBUVJOMlFRRnhJQU5CRG5aQkVIRWdBMEVRZGtIQUFIRWdBMEdxQVhGeWNuSnlJaE5CNExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VLSUFrZ0IwRU1RUWdnQVNBR1NTSWNHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRWWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdCVFlDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0NrVWdDaUFjR3d3QkN5QUhLQUlFSVFvZ0NTQUhRUWhCRENBQklBWkpJaHdiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnQ2lBS1JTQWNHd3NoQmlBTElCVWdEaUFHSUJOQjRMc0JhaTBBQUhNaUJoczJBZ0FnRENBTUtBSUFRU0J5TmdJQUlBZ2dDQ2dDQkVFSWNqWUNCQ0FESUFaQkUzUnlRUkJ5SVFNTEFrQWdBMEdBZ1lBSWNRMEFJQUVnRWlBRUtBSnNJQU5CQTNZaUNrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhCRUFnQnlnQ0JBd0NDeUFIS0FJRUlRd2dDU0FIUVF4QkNDQUJJQVpKSWhNYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQmlBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQkNBRk5nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFNUlNBTUlCTWJEQUVMSUFjb0FnUWhEQ0FKSUFkQkNFRU1JQUVnQmtraUV4dHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQU1JQXhGSUJNYkMwVU5BQ0FCSUJJZ0NDZ0NCRUVVZGtFRWNTQUlRUVJySWd3b0FnQkJGblpCQVhFZ0EwRVBka0VRY1NBRFFSTjJRY0FBY1NBS1Fhb0JjWEp5Y25JaUUwSGd1UUZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhCRUFnQnlnQ0JBd0NDeUFIS0FJRUlRb2dDU0FIUVF4QkNDQUJJQVpKSWh3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQmlBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQkNBRk5nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFLUlNBS0lCd2JEQUVMSUFjb0FnUWhDaUFKSUFkQkNFRU1JQUVnQmtraUhCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUtJQXBGSUJ3YkN5RUdJQXNnRkVFQ2RHb2dGU0FPSUFZZ0UwSGd1d0ZxTFFBQWN5SUdHellDQUNBTUlBd29BZ0JCZ0FKeU5nSUFJQWdnQ0NnQ0JFSEFBSEkyQWdRZ0F5QUdRUlowY2tHQUFYSWhBd3NDUUNBRFFZQ0lnTUFBY1EwQUlBRWdFaUFFS0FKc0lBTkJCbllpQ2tIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdCeWdDQkF3Q0N5QUhLQUlFSVF3Z0NTQUhRUXhCQ0NBQklBWkpJaE1iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhCaUFITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdCQ0FGTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QU1SU0FNSUJNYkRBRUxJQWNvQWdRaERDQUpJQWRCQ0VFTUlBRWdCa2tpRXh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTUlBeEZJQk1iQzBVTkFDQUJJQklnQ0NnQ0JFRVhka0VFY1NBSVFRUnJJZ3dvQWdCQkdYWkJBWEVnQTBFU2RrRVFjU0FEUVJaMlFjQUFjU0FLUWFvQmNYSnljbklpRTBIZ3VRRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdCeWdDQkF3Q0N5QUhLQUlFSVFvZ0NTQUhRUXhCQ0NBQklBWkpJaHdiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhCaUFITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdCQ0FGTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUJ3YkRBRUxJQWNvQWdRaENpQUpJQWRCQ0VFTUlBRWdCa2tpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBS0lBcEZJQndiQ3lFR0lBc2dKRUVDZEdvZ0ZTQU9JQVlnRTBIZ3V3RnFMUUFBY3lJR0d6WUNBQ0FNSUF3b0FnQkJnQkJ5TmdJQUlBZ2dDQ2dDQkVHQUJISTJBZ1FnQXlBR1FSbDBja0dBQ0hJaEF3c2dBMEdBd0lDQUJIRU5BeUFCSUJJZ0JDZ0NiQ0FEUVFsMklncEI3d054YWkwQUFFRUNkR29pQ1NnQ0FDSUJLQUlBSWdacklRY0NmeUFHSUFKQkVIWk5CRUFnQWlBR1FSQjBheUVDSUFkQmdJQUNjUVJBSUFFb0FnUU1BZ3NnQVNnQ0JDRU1JQWtnQVVFTVFRZ2dCaUFIU3lJVEcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaEJTQUdMUUFCSVFFZ0JpMEFBRUgvQVVjRVFDQUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3dCQ3lBQlFZOEJUUVJBSUFRZ0JUWUNFQ0FCUVFsMElBSnFJUUpCQnlFRkRBRUxJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0IwRUJkQ0lIUVlDQUFra05BQXNnREVVZ0RDQVRHd3dCQ3lBQktBSUVJUXdnQ1NBQlFRaEJEQ0FHSUFkTEloTWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUdRUUYwSWdaQmdJQUNTUTBBQ3lBR0lRY2dEQ0FNUlNBVEd3dEZCRUFnQnlFQkRBUUxJQWNnRWlBSUtBSUVRUnAyUVFSeElBaEJCR3NpRENnQ0FFRWNka0VCY1NBRFFSVjJRUkJ4SUFOQkdYWkJ3QUJ4SUFwQnFnRnhjbkp5Y2lJVFFlQzVBV290QUFCQkFuUnFJZ2tvQWdBaUNpZ0NBQ0lCYXlFR0lBRWdBa0VRZGswRVFDQUNJQUZCRUhScklRSWdCa0dBZ0FKeEJFQWdCaUVCREFNTElBb29BZ1FoQnlBSklBcEJERUVJSUFFZ0Jrc2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJRlFRRnFJUW9nQlMwQUFTRUJJQVV0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FIUlNBSElCd2JEQU1MSUFvb0FnUWhCeUFKSUFwQkNFRU1JQUVnQmtzaUhCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lGUVFGcUlRb2dCUzBBQVNFR0lBVXRBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hCU0FHUVFoMElBSnFJUUlNQVFzZ0JrR1BBVTBFUUNBRUlBbzJBaEFnQmtFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFjZ0IwVWdIQnNNQWdzZ0FTQU5LQUlBSWdZb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGswRVFDQUNJQU5CRUhScklRSWdBVUdBZ0FKeEJFQWdCaWdDQkF3Q0N5QUdLQUlFSVFjZ0RTQUdRUXhCQ0NBQklBTkpJZ3diYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJrRUJhaUVKSUFZdEFBRWhBeUFHTFFBQVFmOEJSd1JBSUFRZ0NUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0RBRUxJQU5CandGTkJFQWdCQ0FKTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUhSU0FISUF3YkRBRUxJQVlvQWdRaEJ5QU5JQVpCQ0VFTUlBRWdBMGtpREJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFrZ0JpMEFBU0VCSUFZdEFBQkIvd0ZIQkVBZ0JDQUpOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFrMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBSElBZEZJQXdiQzBVRVFDQU5JUWtNQkFzZ0FTQVFLQUlBSWdZb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGswRVFDQUNJQU5CRUhScklRSWdBVUdBZ0FKeEJFQWdCaWdDQkF3Q0N5QUdLQUlFSVFjZ0VDQUdRUXhCQ0NBQklBTkpJZ3diYWlnQ0FDSUdOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUpRUUZxSVFVZ0NTMEFBU0VESUFrdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSU1BUXNnQTBHUEFVMEVRQ0FFSUFVMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQWRGSUFjZ0RCc01BUXNnQmlnQ0JDRUhJQkFnQmtFSVFRd2dBU0FEU1NJTUcyb29BZ0FpQmpZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQ1VFQmFpRUZJQWt0QUFFaEFTQUpMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQVVFSWRDQUNhaUVDREFFTElBRkJqd0ZOQkVBZ0JDQUZOZ0lRSUFGQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdCeUFIUlNBTUd3c2hEQ0FCSUFZb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGswRVFDQUNJQU5CRUhScklRSWdBVUdBZ0FKeEJFQWdCaWdDQkF3Q0N5QUdLQUlFSVFjZ0VDQUdRUXhCQ0NBQklBTkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJrRUJhaUVKSUFZdEFBRWhBeUFHTFFBQVFmOEJSd1JBSUFRZ0NUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0RBRUxJQU5CandGTkJFQWdCQ0FKTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUhSU0FISUFvYkRBRUxJQVlvQWdRaEJ5QVFJQVpCQ0VFTUlBRWdBMGtpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFrZ0JpMEFBU0VCSUFZdEFBQkIvd0ZIQkVBZ0JDQUpOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFrMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBSElBZEZJQW9iQ3lFR1FRQWhBeUFRSVFrQ1FBSkFBa0FDZndKQUFrQWdCaUFNUVFGMGNnNEVBQUVEQlFnTElBRWdFaUFJS0FJRVFSRjJRUVJ4SUFoQkJHc2lCeWdDQUVFVGRrRUJjWElpQ2tIZ3VRRnFMUUFBUVFKMGFpSUpLQUlBSWdZb0FnQWlBMnNoQVFKL0lBTWdBa0VRZGswRVFDQUNJQU5CRUhScklRSWdBVUdBZ0FKeEJFQWdCaWdDQkF3Q0N5QUdLQUlFSVF3Z0NTQUdRUXhCQ0NBQklBTkpJaE1iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUJrRUJhaUVKSUFZdEFBRWhBeUFHTFFBQVFmOEJSd1JBSUFRZ0NUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0RBRUxJQU5CandGTkJFQWdCQ0FKTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QU1SU0FNSUJNYkRBRUxJQVlvQWdRaERDQUpJQVpCQ0VFTUlBRWdBMGtpRXh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUdRUUZxSVFrZ0JpMEFBU0VCSUFZdEFBQkIvd0ZIQkVBZ0JDQUpOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFrMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBTUlBeEZJQk1iQ3lFRElBc2dGU0FPSUFNZ0NrSGd1d0ZxTFFBQWN5SURHellDQUNBSElBY29BZ0JCSUhJMkFnQWdDQ0FJS0FJRVFRaHlOZ0lFSUFOQkUzUWhXU0FCSUJJZ0JDZ0NiQzBBQWtFQ2RHb2lCeWdDQUNJR0tBSUFJZ05ySVFFQ2Z5QURJQUpCRUhaTkJFQWdBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NRUkFJQVlvQWdRTUFnc2dCaWdDQkNFSklBY2dCa0VNUVFnZ0FTQURTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQnlBR0xRQUJJUU1nQmkwQUFFSC9BVWNFUUNBRUlBYzJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnd0JDeUFEUVk4QlRRUkFJQVFnQnpZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDVVVnQ1NBS0d3d0JDeUFHS0FJRUlRa2dCeUFHUVFoQkRDQUJJQU5KSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFSElBWXRBQUVoQVNBR0xRQUFRZjhCUndSQUlBUWdCellDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBSE5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0NTQUpSU0FLR3dzaEJpQlpRUkJ5SWdNZ0JrVU5BUm9MSUFFZ0VpQUlLQUlFUVJSMlFRUnhJQWhCQkdzaUNTZ0NBRUVXZGtFQmNTQURRUTkyUVJCeElBTkJFM1pCd0FCeElBTkJBM1pCcWdGeGNuSnljaUlUUWVDNUFXb3RBQUJCQW5ScUlnd29BZ0FpQnlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUhLQUlFREFJTElBY29BZ1FoQ2lBTUlBZEJERUVJSUFFZ0Jra2lEQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUdJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQVUyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBcEZJQW9nREJzTUFRc2dCeWdDQkNFS0lBd2dCMEVJUVF3Z0FTQUdTU0lNRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQlNBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUFvZ0NrVWdEQnNMSVFZZ0N5QVVRUUowYWlBVklBNGdCaUFUUWVDN0FXb3RBQUJ6SWdZYk5nSUFJQWtnQ1NnQ0FFR0FBbkkyQWdBZ0NDQUlLQUlFUWNBQWNqWUNCQ0FESUFaQkZuUnlRWUFCY2dzaEF5QUJJQklnQkNnQ2JDQURRUVoyUWU4RGNXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSUdheUVCQW44Z0JpQUNRUkIyVFFSQUlBSWdCa0VRZEdzaEFpQUJRWUNBQW5FRVFDQUhLQUlFREFJTElBY29BZ1FoRENBSklBZEJERUVJSUFFZ0Jra2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUWtnQnkwQUFTRUdJQWN0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBR1FRaDBJQUpxSVFJTUFRc2dCa0dQQVUwRVFDQUVJQWsyQWhBZ0JrRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBeEZJQXdnQ2hzTUFRc2dCeWdDQkNFTUlBa2dCMEVJUVF3Z0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQ1NBSExRQUJJUUVnQnkwQUFFSC9BVWNFUUNBRUlBazJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQ1RZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQmtFQmRDSUdRWUNBQWtrTkFBc2dCaUVCSUF3Z0RFVWdDaHNMUlEwQkN5QUJJQklnQ0NnQ0JFRVhka0VFY1NBSVFRUnJJZ2tvQWdCQkdYWkJBWEVnQTBFU2RrRVFjU0FEUVJaMlFjQUFjU0FEUVFaMlFhb0JjWEp5Y25JaUUwSGd1UUZxTFFBQVFRSjBhaUlNS0FJQUlnY29BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhCRUFnQnlnQ0JBd0NDeUFIS0FJRUlRb2dEQ0FIUVF4QkNDQUJJQVpKSWd3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQmlBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQkNBRk5nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFLUlNBS0lBd2JEQUVMSUFjb0FnUWhDaUFNSUFkQkNFRU1JQUVnQmtraURCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUtJQXBGSUF3YkN5RUdJQXNnSkVFQ2RHb2dGU0FPSUFZZ0UwSGd1d0ZxTFFBQWN5SUdHellDQUNBSklBa29BZ0JCZ0JCeU5nSUFJQWdnQ0NnQ0JFR0FCSEkyQWdRZ0F5QUdRUmwwY2tHQUNISWhBd3NnQVNBU0lBUW9BbXdnQTBFSmRrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhCRUFnQnlnQ0JBd0NDeUFIS0FJRUlRd2dDU0FIUVF4QkNDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQmlBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQkNBRk5nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFNUlNBTUlBb2JEQUVMSUFjb0FnUWhEQ0FKSUFkQkNFRU1JQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQU1JQXhGSUFvYkMwVU5Bd3NnQVNBU0lBZ29BZ1JCR25aQkJIRWdDRUVFYXlJTUtBSUFRUngyUVFGeElBTkJGWFpCRUhFZ0EwRVpka0hBQUhFZ0EwRUpka0dxQVhGeWNuSnlJaE5CNExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lLS0FJQUlnWnJJUUVnQmlBQ1FSQjJUUVJBSUFJZ0JrRVFkR3NoQWlBQlFZQ0FBbkVOQVNBS0tBSUVJUWNnQ1NBS1FReEJDQ0FCSUFaSklod2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQlVFQmFpRUtJQVV0QUFFaEJpQUZMUUFBUWY4QlJ3UkFJQVFnQ2pZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUtOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSFJTQUhJQndiREFJTElBb29BZ1FoQnlBSklBcEJDRUVNSUFFZ0Jra2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJRlFRRnFJUW9nQlMwQUFTRUJJQVV0QUFCQi93RkhCRUFnQkNBS05nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQW8yQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FISUFkRklCd2JEQUVMSUFvb0FnUUxJUVlnQ3lBYlFRSjBhaUFWSUE0Z0JpQVRRZUM3QVdvdEFBQnpJZ2NiTmdJQUlBd2dEQ2dDQUVHQWdBRnlOZ0lBSUFnZ0NDZ0NCRUdBSUhJMkFnUWdCQ2dDZkVFQ2RDQUlhaUlHSUFZb0FnUkJCSEkyQWdRZ0JpQUdLQUlNUVFGeU5nSU1JQVlnQmlnQ0NDQUhRUkowY2tFQ2NqWUNDQ0FESUFkQkhIUnlRWURBQUhJaEF3c2dDQ0FEUWYvLy83WjdjVFlDQUFzZ0NFRUVhaUVESUF0QkJHb2hDeUFZUVFGcUloZ2dGRWNOQUFzZ0NFRU1haUVESUFzZ0cwRUNkR29oQ3lBUlFRUnFJaEVnQkNnQ2dBRWlCa0Y4Y1VrTkFBc01BZ3NDUUNBR1FRUkpEUUFnRkFSQUlBUkI1QUJxSVJBZ0JFSGdBR29oRFNBVVFRTnNJUnNnRkVFQmRDRWtRUUFnRG1zaEZTQUVRUnhxSVJJRFFFRUFJUmdEUUFKQUFrQUNmd0pBSUFNaUNDZ0NBQ0lEQkVBQ1FDQURRWkNBZ0FGeERRQWdBU0FTSUFRb0Ftd2dBMEh2QTNGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUJtc2hBUUovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUXdnQ1NBSFFReEJDQ0FCSUFaSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEJpQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUZOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTVJTQU1JQW9iREFFTElBY29BZ1FoRENBSklBZEJDRUVNSUFFZ0Jra2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FNSUF4RklBb2JDMFVOQUNBQklCSWdDQ2dDQkVFUmRrRUVjU0FJUVFScklnd29BZ0JCRTNaQkFYRWdBMEVPZGtFUWNTQURRUkIyUWNBQWNTQURRYW9CY1hKeWNuSWlFMEhndVFGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUJtc2hBUUovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUW9nQ1NBSFFReEJDQ0FCSUFaSklod2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEJpQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUZOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQndiREFFTElBY29BZ1FoQ2lBSklBZEJDRUVNSUFFZ0Jra2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FLSUFwRklCd2JDeUVHSUFzZ0ZTQU9JQVlnRTBIZ3V3RnFMUUFBY3lJSEd6WUNBQ0FNSUF3b0FnQkJJSEkyQWdBZ0NDQUlLQUlFUVFoeU5nSUVJQWhCZmlBRUtBSjhhMEVDZEdvaUJpQUdLQUlFUVlDQUFuSTJBZ1FnQmlBR0tBSUFJQWRCSDNSeVFZQ0FCSEkyQWdBZ0JrRUVheUlHSUFZb0FnQkJnSUFJY2pZQ0FDQURJQWRCRTNSeVFSQnlJUU1MQWtBZ0EwR0FnWUFJY1EwQUlBRWdFaUFFS0FKc0lBTkJBM1lpQ2tIdkEzRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdCeWdDQkF3Q0N5QUhLQUlFSVF3Z0NTQUhRUXhCQ0NBQklBWkpJaE1iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhCaUFITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdCQ0FGTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QU1SU0FNSUJNYkRBRUxJQWNvQWdRaERDQUpJQWRCQ0VFTUlBRWdCa2tpRXh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBTUlBeEZJQk1iQzBVTkFDQUJJQklnQ0NnQ0JFRVVka0VFY1NBSVFRUnJJZ3dvQWdCQkZuWkJBWEVnQTBFUGRrRVFjU0FEUVJOMlFjQUFjU0FLUWFvQmNYSnljbklpRTBIZ3VRRnFMUUFBUVFKMGFpSUpLQUlBSWdjb0FnQWlCbXNoQVFKL0lBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeEJFQWdCeWdDQkF3Q0N5QUhLQUlFSVFvZ0NTQUhRUXhCQ0NBQklBWkpJaHdiYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhCaUFITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0JrRUlkQ0FDYWlFQ0RBRUxJQVpCandGTkJFQWdCQ0FGTmdJUUlBWkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFCUVFGMElnRkJnSUFDU1EwQUN5QUtSU0FLSUJ3YkRBRUxJQWNvQWdRaENpQUpJQWRCQ0VFTUlBRWdCa2tpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VCSUFjdEFBQkIvd0ZIQkVBZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSU1BUXNnQVVHUEFVMEVRQ0FFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBS0lBcEZJQndiQ3lFR0lBc2dGRUVDZEdvZ0ZTQU9JQVlnRTBIZ3V3RnFMUUFBY3lJR0d6WUNBQ0FNSUF3b0FnQkJnQUp5TmdJQUlBZ2dDQ2dDQkVIQUFISTJBZ1FnQXlBR1FSWjBja0dBQVhJaEF3c0NRQ0FEUVlDSWdNQUFjUTBBSUFFZ0VpQUVLQUpzSUFOQkJuWWlDa0h2QTNGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUJtc2hBUUovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUXdnQ1NBSFFReEJDQ0FCSUFaSkloTWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEJpQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUZOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTVJTQU1JQk1iREFFTElBY29BZ1FoRENBSklBZEJDRUVNSUFFZ0Jra2lFeHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FNSUF4RklCTWJDMFVOQUNBQklCSWdDQ2dDQkVFWGRrRUVjU0FJUVFScklnd29BZ0JCR1haQkFYRWdBMEVTZGtFUWNTQURRUloyUWNBQWNTQUtRYW9CY1hKeWNuSWlFMEhndVFGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUJtc2hBUUovSUFZZ0FrRVFkazBFUUNBQ0lBWkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0J5Z0NCQXdDQ3lBSEtBSUVJUW9nQ1NBSFFReEJDQ0FCSUFaSklod2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEJpQUhMUUFBUWY4QlJ3UkFJQVFnQlRZQ0VFRUlJUVVnQmtFSWRDQUNhaUVDREFFTElBWkJqd0ZOQkVBZ0JDQUZOZ0lRSUFaQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBS1JTQUtJQndiREFFTElBY29BZ1FoQ2lBSklBZEJDRUVNSUFFZ0Jra2lIQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSFFRRnFJUVVnQnkwQUFTRUJJQWN0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQVpCQVhRaUJrR0FnQUpKRFFBTElBWWhBU0FLSUFwRklCd2JDeUVHSUFzZ0pFRUNkR29nRlNBT0lBWWdFMEhndXdGcUxRQUFjeUlHR3pZQ0FDQU1JQXdvQWdCQmdCQnlOZ0lBSUFnZ0NDZ0NCRUdBQkhJMkFnUWdBeUFHUVJsMGNrR0FDSEloQXdzZ0EwR0F3SUNBQkhFTkF5QUJJQklnQkNnQ2JDQURRUWwySWdwQjd3TnhhaTBBQUVFQ2RHb2lDU2dDQUNJQktBSUFJZ1pySVFjQ2Z5QUdJQUpCRUhaTkJFQWdBaUFHUVJCMGF5RUNJQWRCZ0lBQ2NRUkFJQUVvQWdRTUFnc2dBU2dDQkNFTUlBa2dBVUVNUVFnZ0JpQUhTeUlURzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQlNBR0xRQUJJUUVnQmkwQUFFSC9BVWNFUUNBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnd0JDeUFCUVk4QlRRUkFJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQjBFQmRDSUhRWUNBQWtrTkFBc2dERVVnRENBVEd3d0JDeUFCS0FJRUlRd2dDU0FCUVFoQkRDQUdJQWRMSWhNYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFjZ0RDQU1SU0FUR3d0RkJFQWdCeUVCREFRTElBY2dFaUFJS0FJRVFScDJRUVJ4SUFoQkJHc2lEQ2dDQUVFY2RrRUJjU0FEUVJWMlFSQnhJQU5CR1haQndBQnhJQXBCcWdGeGNuSnljaUlUUWVDNUFXb3RBQUJCQW5ScUlna29BZ0FpQ2lnQ0FDSUJheUVHSUFFZ0FrRVFkazBFUUNBQ0lBRkJFSFJySVFJZ0JrR0FnQUp4QkVBZ0JpRUJEQU1MSUFvb0FnUWhCeUFKSUFwQkRFRUlJQUVnQmtzaUhCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lGUVFGcUlRb2dCUzBBQVNFQklBVXRBQUJCL3dGSEJFQWdCQ0FLTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBbzJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUhSU0FISUJ3YkRBTUxJQW9vQWdRaEJ5QUpJQXBCQ0VFTUlBRWdCa3NpSEJ0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUZRUUZxSVFvZ0JTMEFBU0VHSUFVdEFBQkIvd0ZIQkVBZ0JDQUtOZ0lRUVFnaEJTQUdRUWgwSUFKcUlRSU1BUXNnQmtHUEFVMEVRQ0FFSUFvMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkN5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQWNnQjBVZ0hCc01BZ3NnQVNBTktBSUFJZ1lvQWdBaUEyc2hBUUovSUFNZ0FrRVFkazBFUUNBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0JpZ0NCQXdDQ3lBR0tBSUVJUWNnRFNBR1FReEJDQ0FCSUFOSklnd2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUpJQVl0QUFFaEF5QUdMUUFBUWY4QlJ3UkFJQVFnQ1RZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUpOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSFJTQUhJQXdiREFFTElBWW9BZ1FoQnlBTklBWkJDRUVNSUFFZ0Ewa2lEQnRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRUJJQVl0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FISUFkRklBd2JDMFVFUUNBTklRa01CQXNnQVNBUUtBSUFJZ1lvQWdBaUEyc2hBUUovSUFNZ0FrRVFkazBFUUNBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0JpZ0NCQXdDQ3lBR0tBSUVJUWNnRUNBR1FReEJDQ0FCSUFOSklnd2JhaWdDQUNJR05nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJSlFRRnFJUVVnQ1MwQUFTRURJQWt0QUFCQi93RkhCRUFnQkNBRk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTUFRc2dBMEdQQVUwRVFDQUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQUZCQVhRaUFVR0FnQUpKRFFBTElBZEZJQWNnREJzTUFRc2dCaWdDQkNFSElCQWdCa0VJUVF3Z0FTQURTU0lNRzJvb0FnQWlCallDQUFOQUFrQWdCUTBBSUFRb0FoQWlDVUVCYWlFRklBa3RBQUVoQVNBSkxRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0J5QUhSU0FNR3dzaERDQUJJQVlvQWdBaUEyc2hBUUovSUFNZ0FrRVFkazBFUUNBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0JpZ0NCQXdDQ3lBR0tBSUVJUWNnRUNBR1FReEJDQ0FCSUFOSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUpJQVl0QUFFaEF5QUdMUUFBUWY4QlJ3UkFJQVFnQ1RZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUpOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSFJTQUhJQW9iREFFTElBWW9BZ1FoQnlBUUlBWkJDRUVNSUFFZ0Ewa2lDaHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRUJJQVl0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FISUFkRklBb2JDeUVHUVFBaEF5QVFJUWtDUUFKQUFrQUNmd0pBQWtBZ0JpQU1RUUYwY2c0RUFBRURCUWdMSUFFZ0VpQUlLQUlFUVJGMlFRUnhJQWhCQkdzaUJ5Z0NBRUVUZGtFQmNYSWlDa0hndVFGcUxRQUFRUUowYWlJSktBSUFJZ1lvQWdBaUEyc2hBUUovSUFNZ0FrRVFkazBFUUNBQ0lBTkJFSFJySVFJZ0FVR0FnQUp4QkVBZ0JpZ0NCQXdDQ3lBR0tBSUVJUXdnQ1NBR1FReEJDQ0FCSUFOSkloTWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUpJQVl0QUFFaEF5QUdMUUFBUWY4QlJ3UkFJQVFnQ1RZQ0VFRUlJUVVnQTBFSWRDQUNhaUVDREFFTElBTkJqd0ZOQkVBZ0JDQUpOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBRUtBSU1RUUZxTmdJTUlBSkJnUDREYWlFQ1FRZ2hCUXNnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBTVJTQU1JQk1iREFFTElBWW9BZ1FoRENBSklBWkJDRUVNSUFFZ0Ewa2lFeHRxS0FJQU5nSUFBMEFDUUNBRkRRQWdCQ2dDRUNJR1FRRnFJUWtnQmkwQUFTRUJJQVl0QUFCQi93RkhCRUFnQkNBSk5nSVFRUWdoQlNBQlFRaDBJQUpxSVFJTUFRc2dBVUdQQVUwRVFDQUVJQWsyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGQ3lBRlFRRnJJUVVnQWtFQmRDRUNJQU5CQVhRaUEwR0FnQUpKRFFBTElBTWhBU0FNSUF4RklCTWJDeUVESUFzZ0ZTQU9JQU1nQ2tIZ3V3RnFMUUFBY3lJR0d6WUNBQ0FISUFjb0FnQkJJSEkyQWdBZ0NDQUlLQUlFUVFoeU5nSUVJQWhCZmlBRUtBSjhhMEVDZEdvaUF5QURLQUlFUVlDQUFuSTJBZ1FnQXlBREtBSUFJQVpCSDNSeVFZQ0FCSEkyQWdBZ0EwRUVheUlESUFNb0FnQkJnSUFJY2pZQ0FDQUdRUk4wSVZvZ0FTQVNJQVFvQW13dEFBSkJBblJxSWdjb0FnQWlCaWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJUUVJBSUFJZ0EwRVFkR3NoQWlBQlFZQ0FBbkVFUUNBR0tBSUVEQUlMSUFZb0FnUWhDU0FISUFaQkRFRUlJQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lHUVFGcUlRY2dCaTBBQVNFRElBWXRBQUJCL3dGSEJFQWdCQ0FITmdJUVFRZ2hCU0FEUVFoMElBSnFJUUlNQVFzZ0EwR1BBVTBFUUNBRUlBYzJBaEFnQTBFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFsRklBa2dDaHNNQVFzZ0JpZ0NCQ0VKSUFjZ0JrRUlRUXdnQVNBRFNTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdaQkFXb2hCeUFHTFFBQklRRWdCaTBBQUVIL0FVY0VRQ0FFSUFjMkFoQkJDQ0VGSUFGQkNIUWdBbW9oQWd3QkN5QUJRWThCVFFSQUlBUWdCellDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQWtnQ1VVZ0Noc0xJUVlnV2tFUWNpSURJQVpGRFFFYUN5QUJJQklnQ0NnQ0JFRVVka0VFY1NBSVFRUnJJZ2tvQWdCQkZuWkJBWEVnQTBFUGRrRVFjU0FEUVJOMlFjQUFjU0FEUVFOMlFhb0JjWEp5Y25JaUUwSGd1UUZxTFFBQVFRSjBhaUlNS0FJQUlnY29BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhCRUFnQnlnQ0JBd0NDeUFIS0FJRUlRb2dEQ0FIUVF4QkNDQUJJQVpKSWd3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQmlBSExRQUFRZjhCUndSQUlBUWdCVFlDRUVFSUlRVWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQkNBRk5nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFLUlNBS0lBd2JEQUVMSUFjb0FnUWhDaUFNSUFkQkNFRU1JQUVnQmtraURCdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGSEJFQWdCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBVTJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUtJQXBGSUF3YkN5RUdJQXNnRkVFQ2RHb2dGU0FPSUFZZ0UwSGd1d0ZxTFFBQWN5SUdHellDQUNBSklBa29BZ0JCZ0FKeU5nSUFJQWdnQ0NnQ0JFSEFBSEkyQWdRZ0F5QUdRUlowY2tHQUFYSUxJUU1nQVNBU0lBUW9BbXdnQTBFR2RrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrMEVRQ0FDSUFaQkVIUnJJUUlnQVVHQWdBSnhCRUFnQnlnQ0JBd0NDeUFIS0FJRUlRd2dDU0FIUVF4QkNDQUJJQVpKSWdvYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFSklBY3RBQUVoQmlBSExRQUFRZjhCUndSQUlBUWdDVFlDRUVFSUlRVWdCa0VJZENBQ2FpRUNEQUVMSUFaQmp3Rk5CRUFnQkNBSk5nSVFJQVpCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFNUlNBTUlBb2JEQUVMSUFjb0FnUWhEQ0FKSUFkQkNFRU1JQUVnQmtraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRa2dCeTBBQVNFQklBY3RBQUJCL3dGSEJFQWdCQ0FKTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlNQVFzZ0FVR1BBVTBFUUNBRUlBazJBaEFnQVVFSmRDQUNhaUVDUVFjaEJRd0JDeUFFSUFRb0FneEJBV28yQWd3Z0FrR0EvZ05xSVFKQkNDRUZDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQU1JQXhGSUFvYkMwVU5BUXNnQVNBU0lBZ29BZ1JCRjNaQkJIRWdDRUVFYXlJSktBSUFRUmwyUVFGeElBTkJFblpCRUhFZ0EwRVdka0hBQUhFZ0EwRUdka0dxQVhGeWNuSnlJaE5CNExrQmFpMEFBRUVDZEdvaURDZ0NBQ0lIS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VLSUF3Z0IwRU1RUWdnQVNBR1NTSU1HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRWWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdCVFlDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0NrVWdDaUFNR3d3QkN5QUhLQUlFSVFvZ0RDQUhRUWhCRENBQklBWkpJZ3diYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnQ2lBS1JTQU1Hd3NoQmlBTElDUkJBblJxSUJVZ0RpQUdJQk5CNExzQmFpMEFBSE1pQmhzMkFnQWdDU0FKS0FJQVFZQVFjallDQUNBSUlBZ29BZ1JCZ0FSeU5nSUVJQU1nQmtFWmRISkJnQWh5SVFNTElBRWdFaUFFS0FKc0lBTkJDWFpCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpOQkVBZ0FpQUdRUkIwYXlFQ0lBRkJnSUFDY1FSQUlBY29BZ1FNQWdzZ0J5Z0NCQ0VNSUFrZ0IwRU1RUWdnQVNBR1NTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRWWdCeTBBQUVIL0FVY0VRQ0FFSUFVMkFoQkJDQ0VGSUFaQkNIUWdBbW9oQWd3QkN5QUdRWThCVFFSQUlBUWdCVFlDRUNBR1FRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVMSUFWQkFXc2hCU0FDUVFGMElRSWdBVUVCZENJQlFZQ0FBa2tOQUFzZ0RFVWdEQ0FLR3d3QkN5QUhLQUlFSVF3Z0NTQUhRUWhCRENBQklBWkpJZ29iYWlnQ0FEWUNBQU5BQWtBZ0JRMEFJQVFvQWhBaUIwRUJhaUVGSUFjdEFBRWhBU0FITFFBQVFmOEJSd1JBSUFRZ0JUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0RBRUxJQUZCandGTkJFQWdCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlFzZ0JVRUJheUVGSUFKQkFYUWhBaUFHUVFGMElnWkJnSUFDU1EwQUN5QUdJUUVnRENBTVJTQUtHd3RGRFFNTElBRWdFaUFJS0FJRVFScDJRUVJ4SUFoQkJHc2lEQ2dDQUVFY2RrRUJjU0FEUVJWMlFSQnhJQU5CR1haQndBQnhJQU5CQ1haQnFnRnhjbkp5Y2lJVFFlQzVBV290QUFCQkFuUnFJZ2tvQWdBaUNpZ0NBQ0lHYXlFQklBWWdBa0VRZGswRVFDQUNJQVpCRUhScklRSWdBVUdBZ0FKeERRRWdDaWdDQkNFSElBa2dDa0VNUVFnZ0FTQUdTU0ljRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnVkJBV29oQ2lBRkxRQUJJUVlnQlMwQUFFSC9BVWNFUUNBRUlBbzJBaEJCQ0NFRklBWkJDSFFnQW1vaEFnd0JDeUFHUVk4QlRRUkFJQVFnQ2pZQ0VDQUdRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dCMFVnQnlBY0d3d0NDeUFLS0FJRUlRY2dDU0FLUVFoQkRDQUJJQVpKSWh3YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCVUVCYWlFS0lBVXRBQUVoQVNBRkxRQUFRZjhCUndSQUlBUWdDallDRUVFSUlRVWdBVUVJZENBQ2FpRUNEQUVMSUFGQmp3Rk5CRUFnQkNBS05nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRc2dCVUVCYXlFRklBSkJBWFFoQWlBR1FRRjBJZ1pCZ0lBQ1NRMEFDeUFHSVFFZ0J5QUhSU0FjR3d3QkN5QUtLQUlFQ3lFR0lBc2dHMEVDZEdvZ0ZTQU9JQVlnRTBIZ3V3RnFMUUFBY3lJSEd6WUNBQ0FNSUF3b0FnQkJnSUFCY2pZQ0FDQUlJQWdvQWdSQmdDQnlOZ0lFSUFRb0FueEJBblFnQ0dvaUJpQUdLQUlFUVFSeU5nSUVJQVlnQmlnQ0RFRUJjallDRENBR0lBWW9BZ2dnQjBFU2RISkJBbkkyQWdnZ0F5QUhRUngwY2tHQXdBQnlJUU1MSUFnZ0EwSC8vLysyZTNFMkFnQUxJQWhCQkdvaEF5QUxRUVJxSVFzZ0dFRUJhaUlZSUJSSERRQUxJQWhCREdvaEF5QUxJQnRCQW5ScUlRc2dFVUVFYWlJUklBUW9Bb0FCSWdaQmZIRkpEUUFMREFFTFFRUWdCa0Y4Y1NJRElBTkJCRTBiUVFGcklnTkJmSEZCQkdvaEVTQUhJQU5CQVhSQmVIRnFRUlJxSVFNTElBUWdCVFlDQ0NBRUlBRTJBZ1FnQkNBQ05nSUFJQVFnQ1RZQ2FDQVVSUTBFSUFZZ0VVME5CQU5BUVFBaEJTQVJJQVFvQW9BQlJ3UkFBMEFnQkNBRElBc2dCU0FVYkVFQ2RHb2dEaUFGUVFBUVVTQUZRUUZxSWdVZ0JDZ0NnQUVnRVd0SkRRQUxDeUFESUFNb0FnQkIvLy8vdG50eE5nSUFJQXRCQkdvaEN5QURRUVJxSVFNZ0YwRUJhaUlYSUJSSERRQUxEQVFMUVFRZ0JrRjhjU0lESUFOQkJFMGJRUUZySWdOQmZIRkJCR29oRVNBSElBTkJBWFJCZUhGcVFSUnFJUU1MSUFRZ0JUWUNDQ0FFSUFFMkFnUWdCQ0FDTmdJQUlBUWdDVFlDYUNBVVJRMENJQVlnRVUwTkFnTkFRUUFoQlNBUklBUW9Bb0FCUndSQUEwQWdCQ0FESUFzZ0JTQVViRUVDZEdvZ0RpQUZRUUVRVVNBRlFRRnFJZ1VnQkNnQ2dBRWdFV3RKRFFBTEN5QURJQU1vQWdCQi8vLy90bnR4TmdJQUlBdEJCR29oQ3lBRFFRUnFJUU1nRjBFQmFpSVhJQlJIRFFBTERBSUxBMEJCQUNFTUEwQWdBeUVSQWtBQ1FBSi9Ba0FDUUNBR0lnMG9BZ0FpQmtVRVFDQUJJQkFvQWdBaUF5Z0NBQ0lHYXlFQkFuOGdCaUFDUVJCMlN3UkFJQU1vQWdRaEJ5QVFJQU5CQ0VFTUlBRWdCa2tpQ2h0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSURRUUZxSVFrZ0F5MEFBU0VCSUFNdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0NUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFaQkFYUWlCa0dBZ0FKSkRRQUxJQVloQVNBSElBZEZJQW9iREFFTElBSWdCa0VRZEdzaEFpQUJRWUNBQW5GRkJFQWdBeWdDQkNFSElCQWdBMEVNUVFnZ0FTQUdTU0lLRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnWkJBV29oQ1NBR0xRQUJJUU1nQmkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUpOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBSk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dCMFVnQnlBS0d3d0JDeUFES0FJRUMwVUVRQ0FRSVFrTUJnc2dBU0FJS0FJQUlnTW9BZ0FpQm1zaEFRSi9JQVlnQWtFUWRrc0VRQ0FES0FJRUlRY2dDQ0FEUVFoQkRDQUJJQVpKSWdvYmFpZ0NBQ0lETmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lKUVFGcUlRVWdDUzBBQVNFQklBa3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUhJQWRGSUFvYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQXlnQ0JDRUhJQWdnQTBFTVFRZ2dBU0FHU1NJS0cyb29BZ0FpQXpZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQ1VFQmFpRUZJQWt0QUFFaEJpQUpMUUFBUWY4QlJnUkFJQVpCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdCa0VKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQVpCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSFJTQUhJQW9iREFFTElBTW9BZ1FMSVFvZ0FTQURLQUlBSWdacklRRUNmeUFHSUFKQkVIWkxCRUFnQXlnQ0JDRUhJQWdnQTBFSVFRd2dBU0FHU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ05CQVdvaENTQURMUUFCSVFFZ0F5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FKTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUpOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0JrRUJkQ0lHUVlDQUFra05BQXNnQmlFQklBY2dCMFVnRGhzTUFRc2dBaUFHUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FES0FJRUlRY2dDQ0FEUVF4QkNDQUJJQVpKSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCa0VCYWlFSklBWXRBQUVoQXlBR0xRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQWsyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBazJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFIUlNBSElBNGJEQUVMSUFNb0FnUUxJUU5CQUNFR0lBZ2hDUUpBQWtBQ1FBSi9Ba0FDUUNBRElBcEJBWFJ5RGdRQUFRTUZDZ3NnQVNBTElBMG9BZ1JCRVhaQkJIRWdEVUVFYXlJSEtBSUFRUk4yUVFGeGNpSU9RZUM1QVdvdEFBQkJBblJxSWdrb0FnQWlBeWdDQUNJR2F5RUJBbjhnQmlBQ1FSQjJTd1JBSUFNb0FnUWhDaUFKSUFOQkNFRU1JQUVnQmtraUVodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lEUVFGcUlRa2dBeTBBQVNFQklBTXRBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQ1RZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdDVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBWkJBWFFpQmtHQWdBSkpEUUFMSUFZaEFTQUtJQXBGSUJJYkRBRUxJQUlnQmtFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQXlnQ0JDRUtJQWtnQTBFTVFRZ2dBU0FHU1NJU0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ1pCQVdvaENTQUdMUUFCSVFNZ0JpMEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FKTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUpOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ2tVZ0NpQVNHd3dCQ3lBREtBSUVDeUVESUJFZ0V5QVVJQU1nRGtIZ3V3RnFMUUFBY3lJREd6WUNBQ0FISUFjb0FnQkJJSEkyQWdBZ0RTQU5LQUlFUVFoeU5nSUVJQU5CRTNRaFd5QUJJQXNnQkNnQ2JDMEFBa0VDZEdvaUJ5Z0NBQ0lES0FJQUlnWnJJUUVDZnlBR0lBSkJFSFpMQkVBZ0F5Z0NCQ0VKSUFjZ0EwRUlRUXdnQVNBR1NTSU9HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdOQkFXb2hCeUFETFFBQklRRWdBeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBSE5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FITmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdCa0VCZENJR1FZQ0FBa2tOQUFzZ0JpRUJJQWtnQ1VVZ0Roc01BUXNnQWlBR1FSQjBheUVDSUFGQmdJQUNjVVVFUUNBREtBSUVJUWtnQnlBRFFReEJDQ0FCSUFaSklnNGJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQmtFQmFpRUhJQVl0QUFFaEF5QUdMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFjMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQWMyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBSlJTQUpJQTRiREFFTElBTW9BZ1FMSVFNZ1cwRVFjaUlHSUFORkRRRWFDeUFCSUFzZ0RTZ0NCRUVVZGtFRWNTQU5RUVJySWdrb0FnQkJGblpCQVhFZ0JrRVBka0VRY1NBR1FSTjJRY0FBY1NBR1FRTjJRYW9CY1hKeWNuSWlFa0hndVFGcUxRQUFRUUowYWlJS0tBSUFJZ2NvQWdBaUEyc2hBUUovSUFNZ0FrRVFka3NFUUNBSEtBSUVJUTRnQ2lBSFFRaEJEQ0FCSUFOSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdEaUFPUlNBS0d3d0JDeUFDSUFOQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFjb0FnUWhEaUFLSUFkQkRFRUlJQUVnQTBraUNodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUE1RklBNGdDaHNNQVFzZ0J5Z0NCQXNoQXlBUklCTWdGQ0FESUJKQjRMc0JhaTBBQUhNaUF4czJBb0FDSUFrZ0NTZ0NBRUdBQW5JMkFnQWdEU0FOS0FJRVFjQUFjallDQkNBR0lBTkJGblJ5UVlBQmNnc2hCaUFCSUFzZ0JDZ0NiQ0FHUVFaMlFlOERjV290QUFCQkFuUnFJZ2tvQWdBaUJ5Z0NBQ0lEYXlFQkFuOGdBeUFDUVJCMlN3UkFJQWNvQWdRaENpQUpJQWRCQ0VFTUlBRWdBMGtpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFrZ0J5MEFBU0VCSUFjdEFBQkIvd0ZHQkVBZ0FVR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdDVFlDRUNBQlFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0NUWUNFRUVJSVFVZ0FVRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFOQkFYUWlBMEdBZ0FKSkRRQUxJQU1oQVNBS0lBcEZJQTRiREFFTElBSWdBMEVRZEdzaEFpQUJRWUNBQW5GRkJFQWdCeWdDQkNFS0lBa2dCMEVNUVFnZ0FTQURTU0lPRzJvb0FnQTJBZ0FEUUFKQUlBVU5BQ0FFS0FJUUlnZEJBV29oQ1NBSExRQUJJUU1nQnkwQUFFSC9BVVlFUUNBRFFaQUJUd1JBSUFRZ0JDZ0NERUVCYWpZQ0RDQUNRWUQrQTJvaEFrRUlJUVVNQWdzZ0JDQUpOZ0lRSUFOQkNYUWdBbW9oQWtFSElRVU1BUXNnQkNBSk5nSVFRUWdoQlNBRFFRaDBJQUpxSVFJTElBVkJBV3NoQlNBQ1FRRjBJUUlnQVVFQmRDSUJRWUNBQWtrTkFBc2dDa1VnQ2lBT0d3d0JDeUFIS0FJRUMwVU5BUXNnQVNBTElBMG9BZ1JCRjNaQkJIRWdEVUVFYXlJSktBSUFRUmwyUVFGeElBWkJFblpCRUhFZ0JrRVdka0hBQUhFZ0JrRUdka0dxQVhGeWNuSnlJaEpCNExrQmFpMEFBRUVDZEdvaUNpZ0NBQ0lIS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpMQkVBZ0J5Z0NCQ0VPSUFvZ0IwRUlRUXdnQVNBRFNTSUtHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQTRnRGtVZ0Noc01BUXNnQWlBRFFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSEtBSUVJUTRnQ2lBSFFReEJDQ0FCSUFOSklnb2JhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEF5QUhMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBT1JTQU9JQW9iREFFTElBY29BZ1FMSVFNZ0VTQVRJQlFnQXlBU1FlQzdBV290QUFCeklnTWJOZ0tBQkNBSklBa29BZ0JCZ0JCeU5nSUFJQTBnRFNnQ0JFR0FCSEkyQWdRZ0JpQURRUmwwY2tHQUNISWhCZ3NnQVNBTElBUW9BbXdnQmtFSmRrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrc0VRQ0FIS0FJRUlRb2dDU0FIUVFoQkRDQUJJQU5KSWc0YmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0NpQUtSU0FPR3d3QkN5QUNJQU5CRUhScklRSWdBVUdBZ0FKeFJRUkFJQWNvQWdRaENpQUpJQWRCREVFSUlBRWdBMGtpRGh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0Roc01BUXNnQnlnQ0JBdEZEUVVMSUFFZ0N5QU5LQUlFUVJwMlFRUnhJQTFCQkdzaURpZ0NBRUVjZGtFQmNTQUdRUlYyUVJCeElBWkJHWFpCd0FCeElBWkJDWFpCcWdGeGNuSnljaUlLUWVDNUFXb3RBQUJCQW5ScUlna29BZ0FpQnlnQ0FDSURheUVCSUFNZ0FrRVFka3NFUUNBSEtBSUVJUklnQ1NBSFFRaEJEQ0FCSUFOSkloVWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdFaUFTUlNBVkd3d0VDeUFDSUFOQkVIUnJJUUlnQVVHQWdBSnhEUUVnQnlnQ0JDRVNJQWtnQjBFTVFRZ2dBU0FEU1NJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRWtVZ0VpQVZHd3dEQ3dKQUlBWkJrSUNBQVhFTkFDQUJJQXNnQkNnQ2JDQUdRZThEY1dvdEFBQkJBblJxSWdrb0FnQWlCeWdDQUNJRGF5RUJBbjhnQXlBQ1FSQjJTd1JBSUFjb0FnUWhDaUFKSUFkQkNFRU1JQUVnQTBraURodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFQklBY3RBQUJCL3dGR0JFQWdBVUdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQUJRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBVUVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBTkJBWFFpQTBHQWdBSkpEUUFMSUFNaEFTQUtJQXBGSUE0YkRBRUxJQUlnQTBFUWRHc2hBaUFCUVlDQUFuRkZCRUFnQnlnQ0JDRUtJQWtnQjBFTVFRZ2dBU0FEU1NJT0cyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnQ2tVZ0NpQU9Hd3dCQ3lBSEtBSUVDMFVOQUNBQklBc2dEU2dDQkVFUmRrRUVjU0FOUVFScklnb29BZ0JCRTNaQkFYRWdCa0VPZGtFUWNTQUdRUkIyUWNBQWNTQUdRYW9CY1hKeWNuSWlFa0hndVFGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUEyc2hBUUovSUFNZ0FrRVFka3NFUUNBSEtBSUVJUTRnQ1NBSFFRaEJEQ0FCSUFOSkloVWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdEaUFPUlNBVkd3d0JDeUFDSUFOQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFjb0FnUWhEaUFKSUFkQkRFRUlJQUVnQTBraUZSdHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUE1RklBNGdGUnNNQVFzZ0J5Z0NCQXNoQXlBUklCTWdGQ0FESUJKQjRMc0JhaTBBQUhNaUF4czJBZ0FnQ2lBS0tBSUFRU0J5TmdJQUlBMGdEU2dDQkVFSWNqWUNCQ0FHSUFOQkUzUnlRUkJ5SVFZTEFrQWdCa0dBZ1lBSWNRMEFJQUVnQ3lBRUtBSnNJQVpCQTNZaURrSHZBM0ZxTFFBQVFRSjBhaUlKS0FJQUlnY29BZ0FpQTJzaEFRSi9JQU1nQWtFUWRrc0VRQ0FIS0FJRUlRb2dDU0FIUVFoQkRDQUJJQU5KSWhJYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0NpQUtSU0FTR3d3QkN5QUNJQU5CRUhScklRSWdBVUdBZ0FKeFJRUkFJQWNvQWdRaENpQUpJQWRCREVFSUlBRWdBMGtpRWh0cUtBSUFOZ0lBQTBBQ1FDQUZEUUFnQkNnQ0VDSUhRUUZxSVFVZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dBa0dBL2dOcUlRSkJDQ0VGREFJTElBUWdCVFlDRUNBRFFRbDBJQUpxSVFKQkJ5RUZEQUVMSUFRZ0JUWUNFRUVJSVFVZ0EwRUlkQ0FDYWlFQ0N5QUZRUUZySVFVZ0FrRUJkQ0VDSUFGQkFYUWlBVUdBZ0FKSkRRQUxJQXBGSUFvZ0Voc01BUXNnQnlnQ0JBdEZEUUFnQVNBTElBMG9BZ1JCRkhaQkJIRWdEVUVFYXlJS0tBSUFRUloyUVFGeElBWkJEM1pCRUhFZ0JrRVRka0hBQUhFZ0RrR3FBWEZ5Y25KeUloSkI0TGtCYWkwQUFFRUNkR29pQ1NnQ0FDSUhLQUlBSWdOcklRRUNmeUFESUFKQkVIWkxCRUFnQnlnQ0JDRU9JQWtnQjBFSVFRd2dBU0FEU1NJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFFZ0J5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBRkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQUJRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0EwRUJkQ0lEUVlDQUFra05BQXNnQXlFQklBNGdEa1VnRlJzTUFRc2dBaUFEUVJCMGF5RUNJQUZCZ0lBQ2NVVUVRQ0FIS0FJRUlRNGdDU0FIUVF4QkNDQUJJQU5KSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQXlBSExRQUFRZjhCUmdSQUlBTkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0EwRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBTkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBQlFRRjBJZ0ZCZ0lBQ1NRMEFDeUFPUlNBT0lCVWJEQUVMSUFjb0FnUUxJUU1nRVNBVElCUWdBeUFTUWVDN0FXb3RBQUJ6SWdNYk5nS0FBaUFLSUFvb0FnQkJnQUp5TmdJQUlBMGdEU2dDQkVIQUFISTJBZ1FnQmlBRFFSWjBja0dBQVhJaEJnc0NRQ0FHUVlDSWdNQUFjUTBBSUFFZ0N5QUVLQUpzSUFaQkJuWWlEa0h2QTNGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUEyc2hBUUovSUFNZ0FrRVFka3NFUUNBSEtBSUVJUW9nQ1NBSFFRaEJEQ0FCSUFOSkloSWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEFTQUhMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQURRUUYwSWdOQmdJQUNTUTBBQ3lBRElRRWdDaUFLUlNBU0d3d0JDeUFDSUFOQkVIUnJJUUlnQVVHQWdBSnhSUVJBSUFjb0FnUWhDaUFKSUFkQkRFRUlJQUVnQTBraUVodHFLQUlBTmdJQUEwQUNRQ0FGRFFBZ0JDZ0NFQ0lIUVFGcUlRVWdCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQWtHQS9nTnFJUUpCQ0NFRkRBSUxJQVFnQlRZQ0VDQURRUWwwSUFKcUlRSkJCeUVGREFFTElBUWdCVFlDRUVFSUlRVWdBMEVJZENBQ2FpRUNDeUFGUVFGcklRVWdBa0VCZENFQ0lBRkJBWFFpQVVHQWdBSkpEUUFMSUFwRklBb2dFaHNNQVFzZ0J5Z0NCQXRGRFFBZ0FTQUxJQTBvQWdSQkYzWkJCSEVnRFVFRWF5SUtLQUlBUVJsMlFRRnhJQVpCRW5aQkVIRWdCa0VXZGtIQUFIRWdEa0dxQVhGeWNuSnlJaEpCNExrQmFpMEFBRUVDZEdvaUNTZ0NBQ0lIS0FJQUlnTnJJUUVDZnlBRElBSkJFSFpMQkVBZ0J5Z0NCQ0VPSUFrZ0IwRUlRUXdnQVNBRFNTSVZHMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUJJQTRnRGtVZ0ZSc01BUXNnQWlBRFFSQjBheUVDSUFGQmdJQUNjVVVFUUNBSEtBSUVJUTRnQ1NBSFFReEJDQ0FCSUFOSkloVWJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQjBFQmFpRUZJQWN0QUFFaEF5QUhMUUFBUWY4QlJnUkFJQU5Ca0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBMEVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQU5CQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUJRUUYwSWdGQmdJQUNTUTBBQ3lBT1JTQU9JQlViREFFTElBY29BZ1FMSVFNZ0VTQVRJQlFnQXlBU1FlQzdBV290QUFCeklnTWJOZ0tBQkNBS0lBb29BZ0JCZ0JCeU5nSUFJQTBnRFNnQ0JFR0FCSEkyQWdRZ0JpQURRUmwwY2tHQUNISWhCZ3NnQmtHQXdJQ0FCSEVOQXlBQklBc2dCQ2dDYkNBR1FRbDJJaEpCN3dOeGFpMEFBRUVDZEdvaUNTZ0NBQ0lCS0FJQUlnTnJJUWNDZnlBRElBSkJFSFpMQkVBZ0FTZ0NCQ0VLSUFrZ0FVRUlRUXdnQXlBSFN5SU9HMm9vQWdBMkFnQURRQUpBSUFVTkFDQUVLQUlRSWdkQkFXb2hCU0FITFFBQklRRWdCeTBBQUVIL0FVWUVRQ0FCUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBQ1FZRCtBMm9oQWtFSUlRVU1BZ3NnQkNBRk5nSVFJQUZCQ1hRZ0Ftb2hBa0VISVFVTUFRc2dCQ0FGTmdJUVFRZ2hCU0FCUVFoMElBSnFJUUlMSUFWQkFXc2hCU0FDUVFGMElRSWdBMEVCZENJRFFZQ0FBa2tOQUFzZ0F5RUhJQW9nQ2tVZ0Roc01BUXNnQWlBRFFSQjBheUVDSUFkQmdJQUNjVVVFUUNBQktBSUVJUW9nQ1NBQlFReEJDQ0FESUFkTElnNGJhaWdDQURZQ0FBTkFBa0FnQlEwQUlBUW9BaEFpQTBFQmFpRUZJQU10QUFFaEFTQURMUUFBUWY4QlJnUkFJQUZCa0FGUEJFQWdCQ0FFS0FJTVFRRnFOZ0lNSUFKQmdQNERhaUVDUVFnaEJRd0NDeUFFSUFVMkFoQWdBVUVKZENBQ2FpRUNRUWNoQlF3QkN5QUVJQVUyQWhCQkNDRUZJQUZCQ0hRZ0Ftb2hBZ3NnQlVFQmF5RUZJQUpCQVhRaEFpQUhRUUYwSWdkQmdJQUNTUTBBQ3lBS1JTQUtJQTRiREFFTElBRW9BZ1FMUlFSQUlBY2hBUXdFQ3lBSElBc2dEU2dDQkVFYWRrRUVjU0FOUVFScklnNG9BZ0JCSEhaQkFYRWdCa0VWZGtFUWNTQUdRUmwyUWNBQWNTQVNRYW9CY1hKeWNuSWlDa0hndVFGcUxRQUFRUUowYWlJSktBSUFJZ2NvQWdBaUFXc2hBeUFCSUFKQkVIWkxCRUFnQnlnQ0JDRVNJQWtnQjBFSVFRd2dBU0FEU3lJVkcyb29BZ0EyQWdBRFFBSkFJQVVOQUNBRUtBSVFJZ2RCQVdvaEJTQUhMUUFCSVFNZ0J5MEFBRUgvQVVZRVFDQURRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FDUVlEK0Eyb2hBa0VJSVFVTUFnc2dCQ0FGTmdJUUlBTkJDWFFnQW1vaEFrRUhJUVVNQVFzZ0JDQUZOZ0lRUVFnaEJTQURRUWgwSUFKcUlRSUxJQVZCQVdzaEJTQUNRUUYwSVFJZ0FVRUJkQ0lCUVlDQUFra05BQXNnRWlBU1JTQVZHd3dEQ3lBQ0lBRkJFSFJySVFJZ0EwR0FnQUp4UlEwQklBTWhBUXNnQnlnQ0JBd0JDeUFIS0FJRUlSSWdDU0FIUVF4QkNDQUJJQU5MSWhVYmFpZ0NBRFlDQUFOQUFrQWdCUTBBSUFRb0FoQWlCMEVCYWlFRklBY3RBQUVoQVNBSExRQUFRZjhCUmdSQUlBRkJrQUZQQkVBZ0JDQUVLQUlNUVFGcU5nSU1JQUpCZ1A0RGFpRUNRUWdoQlF3Q0N5QUVJQVUyQWhBZ0FVRUpkQ0FDYWlFQ1FRY2hCUXdCQ3lBRUlBVTJBaEJCQ0NFRklBRkJDSFFnQW1vaEFnc2dCVUVCYXlFRklBSkJBWFFoQWlBRFFRRjBJZ05CZ0lBQ1NRMEFDeUFESVFFZ0VrVWdFaUFWR3dzaEF5QVJJQk1nRkNBRElBcEI0THNCYWkwQUFITWlBeHMyQW9BR0lBNGdEaWdDQUVHQWdBRnlOZ0lBSUEwZ0RTZ0NCRUdBSUhJMkFnUWdEU0FOS0FLRUFrRUVjallDaEFJZ0RTQU5LQUtNQWtFQmNqWUNqQUlnRFNBTktBS0lBaUFEUVJKMGNrRUNjallDaUFJZ0JpQURRUngwY2tHQXdBQnlJUVlMSUEwZ0JrSC8vLysyZTNFMkFnQUxJQTFCQkdvaEJpQVJRUVJxSVFNZ0RFRUJhaUlNUWNBQVJ3MEFDeUFOUVF4cUlRWWdFVUdFQm1vaEF5QVhRVHhKSVZ3Z0YwRUVhaUVYSUZ3TkFBc0xJQVFnQlRZQ0NDQUVJQUUyQWdRZ0JDQUNOZ0lBSUFRZ0NUWUNhQXNDUUNBV1FTQnhSUTBBSUFRZ0JFSGtBR28yQW1nZ0JDQUVLQUlFSUFRb0FtUWlCaWdDQUNJQmF5SUNOZ0lFQWtBZ0FTQUVLQUlBSWdWQkVIWkxCRUFnQkNBQk5nSUVJQVFnQmtFSVFRd2dBU0FDU3h0cUtBSUFJZ1kyQW1RZ0JDZ0NDQ0VDQTBBQ1FDQUNEUUFnQkNnQ0VDSUhRUUZxSVFrZ0J5MEFBU0VESUFjdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dCVUdBL2dOcUlRVkJDQ0VDREFJTElBUWdDVFlDRUNBRFFRbDBJQVZxSVFWQkJ5RUNEQUVMSUFRZ0NUWUNFRUVJSVFJZ0EwRUlkQ0FGYWlFRkN5QUVJQUpCQVdzaUFqWUNDQ0FFSUFWQkFYUWlCVFlDQUNBRUlBRkJBWFFpQVRZQ0JDQUJRWUNBQWtrTkFBc2dBU0VDREFFTElBUWdCU0FCUVJCMGF5SUZOZ0lBSUFKQmdJQUNjUTBBSUFRZ0JrRU1RUWdnQVNBQ1N4dHFLQUlBSWdZMkFtUWdCQ2dDQ0NFQkEwQUNRQ0FCRFFBZ0JDZ0NFQ0lCUVFGcUlRY2dBUzBBQVNFRElBRXRBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQlVHQS9nTnFJUVZCQ0NFQkRBSUxJQVFnQnpZQ0VDQURRUWwwSUFWcUlRVkJCeUVCREFFTElBUWdCellDRUVFSUlRRWdBMEVJZENBRmFpRUZDeUFFSUFGQkFXc2lBVFlDQ0NBRUlBVkJBWFFpQlRZQ0FDQUVJQUpCQVhRaUFqWUNCQ0FDUVlDQUFra05BQXNMSUFRZ0FpQUdLQUlBSWdGcklnSTJBZ1FDUUNBQklBVkJFSFpMQkVBZ0JDQUJOZ0lFSUFRZ0JrRUlRUXdnQVNBQ1N4dHFLQUlBSWdZMkFtUWdCQ2dDQ0NFQ0EwQUNRQ0FDRFFBZ0JDZ0NFQ0lIUVFGcUlRa2dCeTBBQVNFRElBY3RBQUJCL3dGR0JFQWdBMEdRQVU4RVFDQUVJQVFvQWd4QkFXbzJBZ3dnQlVHQS9nTnFJUVZCQ0NFQ0RBSUxJQVFnQ1RZQ0VDQURRUWwwSUFWcUlRVkJCeUVDREFFTElBUWdDVFlDRUVFSUlRSWdBMEVJZENBRmFpRUZDeUFFSUFKQkFXc2lBallDQ0NBRUlBVkJBWFFpQlRZQ0FDQUVJQUZCQVhRaUFUWUNCQ0FCUVlDQUFra05BQXNnQVNFQ0RBRUxJQVFnQlNBQlFSQjBheUlGTmdJQUlBSkJnSUFDY1EwQUlBUWdCa0VNUVFnZ0FTQUNTeHRxS0FJQUlnWTJBbVFnQkNnQ0NDRUJBMEFDUUNBQkRRQWdCQ2dDRUNJQlFRRnFJUWNnQVMwQUFTRURJQUV0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0JVR0EvZ05xSVFWQkNDRUJEQUlMSUFRZ0J6WUNFQ0FEUVFsMElBVnFJUVZCQnlFQkRBRUxJQVFnQnpZQ0VFRUlJUUVnQTBFSWRDQUZhaUVGQ3lBRUlBRkJBV3NpQVRZQ0NDQUVJQVZCQVhRaUJUWUNBQ0FFSUFKQkFYUWlBallDQkNBQ1FZQ0FBa2tOQUFzTElBUWdBaUFHS0FJQUlnRnJJZ0kyQWdRQ1FDQUJJQVZCRUhaTEJFQWdCQ0FCTmdJRUlBUWdCa0VJUVF3Z0FTQUNTeHRxS0FJQUlnWTJBbVFnQkNnQ0NDRUNBMEFDUUNBQ0RRQWdCQ2dDRUNJSFFRRnFJUWtnQnkwQUFTRURJQWN0QUFCQi93RkdCRUFnQTBHUUFVOEVRQ0FFSUFRb0FneEJBV28yQWd3Z0JVR0EvZ05xSVFWQkNDRUNEQUlMSUFRZ0NUWUNFQ0FEUVFsMElBVnFJUVZCQnlFQ0RBRUxJQVFnQ1RZQ0VFRUlJUUlnQTBFSWRDQUZhaUVGQ3lBRUlBSkJBV3NpQWpZQ0NDQUVJQVZCQVhRaUJUWUNBQ0FFSUFGQkFYUWlBVFlDQkNBQlFZQ0FBa2tOQUFzZ0FTRUNEQUVMSUFRZ0JTQUJRUkIwYXlJRk5nSUFJQUpCZ0lBQ2NRMEFJQVFnQmtFTVFRZ2dBU0FDU3h0cUtBSUFJZ1kyQW1RZ0JDZ0NDQ0VCQTBBQ1FDQUJEUUFnQkNnQ0VDSUJRUUZxSVFjZ0FTMEFBU0VESUFFdEFBQkIvd0ZHQkVBZ0EwR1FBVThFUUNBRUlBUW9BZ3hCQVdvMkFnd2dCVUdBL2dOcUlRVkJDQ0VCREFJTElBUWdCellDRUNBRFFRbDBJQVZxSVFWQkJ5RUJEQUVMSUFRZ0J6WUNFRUVJSVFFZ0EwRUlkQ0FGYWlFRkN5QUVJQUZCQVdzaUFUWUNDQ0FFSUFWQkFYUWlCVFlDQUNBRUlBSkJBWFFpQWpZQ0JDQUNRWUNBQWtrTkFBc0xJQVFnQWlBR0tBSUFJZ0ZySWdJMkFnUWdBU0FGUVJCMlN3UkFJQVFnQVRZQ0JDQUVJQVpCQ0VFTUlBRWdBa3NiYWlnQ0FEWUNaQ0FFS0FJSUlRSURRQUpBSUFJTkFDQUVLQUlRSWdaQkFXb2hCeUFHTFFBQklRTWdCaTBBQUVIL0FVWUVRQ0FEUVpBQlR3UkFJQVFnQkNnQ0RFRUJhallDRENBRlFZRCtBMm9oQlVFSUlRSU1BZ3NnQkNBSE5nSVFJQU5CQ1hRZ0JXb2hCVUVISVFJTUFRc2dCQ0FITmdJUVFRZ2hBaUFEUVFoMElBVnFJUVVMSUFRZ0FrRUJheUlDTmdJSUlBUWdCVUVCZENJRk5nSUFJQVFnQVVFQmRDSUJOZ0lFSUFGQmdJQUNTUTBBQ3d3QkN5QUVJQVVnQVVFUWRHc2lCellDQUNBQ1FZQ0FBbkVOQUNBRUlBWkJERUVJSUFFZ0Frc2JhaWdDQURZQ1pDQUVLQUlJSVFVRFFBSkFJQVVOQUNBRUtBSVFJZ05CQVdvaEJpQURMUUFCSVFFZ0F5MEFBRUgvQVVZRVFDQUJRWkFCVHdSQUlBUWdCQ2dDREVFQmFqWUNEQ0FIUVlEK0Eyb2hCMEVJSVFVTUFnc2dCQ0FHTmdJUUlBRkJDWFFnQjJvaEIwRUhJUVVNQVFzZ0JDQUdOZ0lRUVFnaEJTQUJRUWgwSUFkcUlRY0xJQVFnQlVFQmF5SUZOZ0lJSUFRZ0IwRUJkQ0lITmdJQUlBUWdBa0VCZENJQ05nSUVJQUpCZ0lBQ1NRMEFDd3NMSUNjTkFDQUVFRk1nQkVIQXFRRTJBbVFnQkVIZ25nRTJBbUFnQkVHQW53RTJBaHdMUVFBZ0gwRUJhaUlCSUFGQkEwWWlBUnNoSHlBWklBRnJJUmtnSmtFQmFpSW1JQ0FvQWdoUERRRWdHVUVBU2cwQUN3c2dLQ0FxYWlFb0lBUW9BaGdnQkM4QmNEc0FBQ0FwUVFGcUlpa2dHaWdDTEVrTkFBc0xBa0FnSzBVTkFBSkFJQVFvQWhnaUFTQUVLQUlRSWdOQkFtcExCRUFnSVVVTkFTQWpJQUVnQkNnQ0ZDSUdhellDT0NBaklBTWdCbXMyQWpRZ0l5QUJJQU5yUVFKck5nSXdJQjFCQWtHZzhnQWdJMEV3YWhBSURBSUxJQVFvQWd3aUFVRURTUTBCSUNFRVFDQWpJQUUyQWxBZ0hVRUNRZWsxSUNOQjBBQnFFQWdNQWdzZ0l5QUJOZ0pBSUIxQkFrSHBOU0FqUVVCckVBZ01BUXNnSXlBQklBUW9BaFFpQm1zMkFpZ2dJeUFESUFack5nSWtJQ01nQVNBRGEwRUNhellDSUNBZFFRSkJvUElBSUNOQklHb1FDQXNnR2lnQ1BFVU5BQ0FFSUN3MkFuUUxJREFvQWdRaEFTQWFLQUlNSVYwZ0dpZ0NDQ0F3S0FJQWF5RUlJREFvQWhBaUJrRUJjUVJBSURJb0Fod2dOMEdZQVd4cUlnZEJrQUZyS0FJQUlBaHFJQWRCbUFGcktBSUFheUVJQ3lCZElBRnJJUU1nQmtFQ2NRUkFJRElvQWh3Z04wR1lBV3hxSWdGQmpBRnJLQUlBSUFOcUlBRkJsQUZyS0FJQWF5RURDeUFhS0FJOElnWWhBaUFHUlFSQUlBUW9BblFoQWdzZ0JDZ0NnQUVoRmlBRUtBSjhJUTBDUUNBdktBS29CaUlIUlEwQUlCWkZJQTFGY2lFQklBZEJIa3dFUUNBQkRRRkJBQ0VRQTBBZ0RTQVFiQ0VFUVFBaEFRTkFJQUlnQVNBRWFrRUNkR29pRVNnQ0FDSUpJQWxCSDNVaUJYTWdCV3NpQlNBSGRnUkFJQkZCQUNBRklDOG9BcWdHZGlJUmF5QVJJQWxCQUVnYk5nSUFDeUFCUVFGcUlnRWdEVWNOQUFzZ0VFRUJhaUlRSUJaSERRQUxEQUVMSUFFTkFDQUNRUUFnRFNBV2JFRUNkQkFPR2dzZ0JnUkFJQTBnRm13aEJpQXZLQUlVUVFGR0JFQWdCa1VOQlVFQUlRRWdCa0VFVHdSQUlBWkJmSEVoQVVFQUlRUURRQ0FDSUFSQkFuUnFJZ01nQS8wQUFnQWlYdjBiQUVFQ2JmMFJJRjc5R3dGQkFtMzlIQUVnWHYwYkFrRUNiZjBjQWlCZS9Sc0RRUUp0L1J3RC9Rc0NBQ0FFUVFScUlnUWdBVWNOQUFzZ0FTQUdSZzBHQ3dOQUlBSWdBVUVDZEdvaUF5QURLQUlBUVFKdE5nSUFJQUZCQVdvaUFTQUdSdzBBQ3d3RkN5QUdSUTBFSURBcUFpQkRBQUFBUDVRaFprRUFJUVFDUUNBR1FRUkpCRUFnQWlFQkRBRUxJQUlnQmtGOGNTSUVRUUowYWlFQklHYjlFeUZlUVFBaEF3TkFJQUlnQTBFQ2RHb2lCeUJlSUFmOUFBSUEvZm9CL2VZQi9Rc0NBQ0FEUVFScUlnTWdCRWNOQUFzZ0JDQUdSZzBGQ3dOQUlBRWdaaUFCS0FJQXNwUTRBZ0FnQVVFRWFpRUJJQVJCQVdvaUJDQUdSdzBBQ3d3RUN5QTJJRFZySVJFZ0x5Z0NGRUVCUncwQ0lCWkZEUU1nTWlnQ0pDSUdJQU1nRVd3aUEwRUNkR29nQ0VFQ2RHb2hDU0FOUVh4eElneEJBV3NpQVVFRWNTRUxJRFlnRFNBMWFtdEJBblFoR2lBQlFRSjJRUUZxUWY3Ly8vOEhjU0VkSUFNZ0NHcEJBblFnQm1vZ0Ftc2hDa0VBSVFnZ0FVRURSeUVVQTBCQkFDRUJBa0FnREVVTkFDQUlJQTFzSVFNZ0NTQUlJQkZzUVFKMGFpRUdRUUFoQnlBVUJFQURRQ0FHSUFGQkFuUnFJQUlnQVNBRGFrRUNkR3I5QUFJQUlsNzlHd0JCQW0zOUVTQmUvUnNCUVFKdC9Sd0JJRjc5R3dKQkFtMzlIQUlnWHYwYkEwRUNiZjBjQS8wTEFnQWdCaUFCUVFSeUlnUkJBblJxSUFJZ0F5QUVha0VDZEdyOUFBSUFJbDc5R3dCQkFtMzlFU0JlL1JzQlFRSnQvUndCSUY3OUd3SkJBbTM5SEFJZ1h2MGJBMEVDYmYwY0EvMExBZ0FnQVVFSWFpRUJJQWRCQW1vaUJ5QWRSdzBBQ3dzZ0N3MEFJQVlnQVVFQ2RHb2dBaUFCSUFOcVFRSjBhdjBBQWdBaVh2MGJBRUVDYmYwUklGNzlHd0ZCQW0zOUhBRWdYdjBiQWtFQ2JmMGNBaUJlL1JzRFFRSnQvUndEL1FzQ0FDQUJRUVJxSVFFTEFrQWdBU0FOVHcwQUlBZ2dEV3doQXlBSklBZ2dFV3hCQW5ScUlRY0NRQ0FOSUFGckloQkJCRWtFUUNBQklRUU1BUXNnQ2lBSUlCcHNha0VRU1FSQUlBRWhCQXdCQ3lBQklCQkJmSEVpQldvaEJFRUFJUVlEUUNBSElBRWdCbW9pSVVFQ2RHb2dBaUFESUNGcVFRSjBhdjBBQWdBaVh2MGJBRUVDYmYwUklGNzlHd0ZCQW0zOUhBRWdYdjBiQWtFQ2JmMGNBaUJlL1JzRFFRSnQvUndEL1FzQ0FDQUdRUVJxSWdZZ0JVY05BQXNnQlNBUVJnMEJDeUFFUVFGcUlRRWdEU0FFYTBFQmNRUkFJQWNnQkVFQ2RHb2dBaUFESUFScVFRSjBhaWdDQUVFQ2JUWUNBQ0FCSVFRTElBRWdEVVlOQUFOQUlBY2dCRUVDZEdvZ0FpQURJQVJxUVFKMGFpZ0NBRUVDYlRZQ0FDQUhJQVJCQVdvaUFVRUNkR29nQWlBQklBTnFRUUowYWlnQ0FFRUNiVFlDQUNBRVFRSnFJZ1FnRFVjTkFBc0xJQWhCQVdvaUNDQVdSdzBBQ3d3REN5QWpJQmsyQWdBZ0hVRUNRZGJBQUNBakVBZ0xJQkFvQWdCQkFEWUNBQXdCQ3lBV1JRMEFJQTFGRFFBZ01pZ0NKQ0FESUJGc1FRSjBhaUFJUVFKMGFpRUhJQTFCZkhFaUEwRUNkQ0VHSURBcUFpQkRBQUFBUDVRaVp2MFRJVjVCQUNFUUlBMUJCRWtoQ0FOQUFrQUNRQ0FJQkVBZ0FpRUpJQWNoQVVFQUlRUU1BUXNnQmlBSGFpRUJJQUlnQm1vaENVRUFJUVFEUUNBSElBUkJBblFpQldvZ1hpQUNJQVZxL1FBQ0FQMzZBZjNtQWYwTEFnQWdCRUVFYWlJRUlBTkhEUUFMSUFraEFpQURJZ1FnRFVZTkFRc2dDU0VDQTBBZ0FTQm1JQUlvQWdDeWxEZ0NBQ0FCUVFScUlRRWdBa0VFYWlFQ0lBUkJBV29pQkNBTlJ3MEFDd3NnQnlBUlFRSjBhaUVISUJCQkFXb2lFQ0FXUncwQUN3c2dBQkFKSUNOQjRBQnFKQUFMMWdRQkNYOGdBQ2dDTEVFSVR3UkFJQUFvQWlnaEJVRUlJUW9EUUNBQUtBSU1RUVYwSVFnZ0FDZ0NBQ0VFSUFBb0FpUWhBd0pBSUFBb0FoUWlCaUFBS0FJUUlnRk5EUUFnQkNBSWFpRUhJQUZCQVdvaEFpQUdJQUZyUVFGeEJFQWdCeUFCUVFaMGFpSUpJQVVnQVNBRGJFRUNkR29pQWYwQUFnRDlDd0lBSUFrZ0FmMEFBaEQ5Q3dJUUlBSWhBUXNnQWlBR1JnMEFBMEFnQnlBQlFRWjBhaUlDSUFVZ0FTQURiRUVDZEdvaUNmMEFBZ0Q5Q3dJQUlBSWdDZjBBQWhEOUN3SVFJQWNnQVVFQmFpSUNRUVowYWlJSklBVWdBaUFEYkVFQ2RHb2lBdjBBQWhEOUN3SVFJQWtnQXYwQUFnRDlDd0lBSUFGQkFtb2lBU0FHUncwQUN3c0NRQ0FBS0FJY0lnWWdBQ2dDR0NJQlRRMEFJQVFnQ0d0QklHb2hCeUFGSUFBb0FnZ2dBMnhCQW5ScUlRZ2dBVUVCYWlFQ0lBWWdBV3RCQVhFRVFDQUhJQUZCQm5ScUlnUWdDQ0FCSUFOc1FRSjBhaUlCL1FBQ0FQMExBZ0FnQkNBQi9RQUNFUDBMQWhBZ0FpRUJDeUFDSUFaR0RRQURRQ0FISUFGQkJuUnFJZ0lnQ0NBQklBTnNRUUowYWlJRS9RQUNBUDBMQWdBZ0FpQUUvUUFDRVAwTEFoQWdCeUFCUVFGcUlnSkJCblJxSWdRZ0NDQUNJQU5zUVFKMGFpSUMvUUFDRVAwTEFoQWdCQ0FDL1FBQ0FQMExBZ0FnQVVFQ2FpSUJJQVpIRFFBTEN5QUFFQnhCQUNFQklBQW9BaUFFUUFOQUlBVWdBQ2dDSkNBQmJFRUNkR29pQWlBQUtBSUFJQUZCQlhScUlnUDlBQUlBL1FzQ0FDQUNJQVA5QUFJUS9Rc0NFQ0FCUVFGcUlnRWdBQ2dDSUVrTkFBc0xJQVZCSUdvaEJTQUtRUWhxSWdvZ0FDZ0NMRTBOQUFzTElBQW9BZ0FRQ1NBQUVBa0w5dzBCSlg4Z0FDZ0NMRUVJVHdSQUlBQW9BaVFpQ2tFRmRDRWVJQXBCQjJ3aEZpQUtRUVpzSVJjZ0NrRUZiQ0VZSUFwQkEyd2hHU0FLUVFGMElSb2dBQ2dDS0NJQklBcEJIR3hxSVI4Z0FTQUtRUmhzYWlFZ0lBRWdDa0VVYkdvaElTQUJJQXBCQkhScUlTSWdBU0FLUVF4c2FpRWpJQUVnQ2tFRGRDSWthaUVsSUFFZ0NrRUNkQ0liYWlFbVFRZ2hIQU5BSUFBZ0FTQUFLQUlrUVFnUU5DQUFFQndDUUNBQUtBSWdJZ3RGRFFBZ0hTQWViQ0VJSUFBb0FnQWhCa0VBSVFRQ1FBSkFJQXRCNkFKSkRRQWdCa0VNYWlJT0lBdEJBV3NpQWtFRmRDSURhaUFPU1EwQUlBWkJDR29pRHlBRGFpQVBTUTBBSUFNZ0Jtb2dCa2tOQUNBR1FRUnFJaEFnQTJvZ0VFa05BQ0FDUWYvLy96OUxEUUFnQVNBSUlDWnFJZ01nQzBFQ2RDSUZhaUlNU1NBRElBRWdCV29pQjBseERRQWdBU0FJSUNWcUlnSWdCV29pRFVrZ0FpQUhTWEVOQUNBQklBVWdDQ0FqYWlJSmFpSUZTU0FISUFsTGNRMEFJQVlnQjBrZ0FTQUdJQXRCQlhScUloRkJIR3NpRWtseERRQWdBU0FSUVJockloTkpJQWNnRUV0eERRQWdBU0FSUVJSckloUkpJQWNnRDB0eERRQWdCeUFPU3lBQklCRkJFR3NpQjBseERRQWdBeUFOU1NBQ0lBeEpjUTBBSUFNZ0JVa2dDU0FNU1hFTkFDQURJQkpKSUFZZ0RFbHhEUUFnQXlBVFNTQU1JQkJMY1EwQUlBTWdGRWtnRENBUFMzRU5BQ0FESUFkSklBd2dEa3R4RFFBZ0FpQUZTU0FKSUExSmNRMEFJQUlnRWtrZ0JpQU5TWEVOQUNBQ0lCTkpJQTBnRUV0eERRQWdBaUFVU1NBTklBOUxjUTBBSUFJZ0Iwa2dEU0FPUzNFTkFDQUpJQkpKSUFVZ0JrdHhEUUFnQ1NBVFNTQUZJQkJMY1EwQUlBa2dGRWtnQlNBUFMzRU5BQ0FISUFsTElBVWdEa3R4RFFBZ0MwSDgvLy8vQUhFaEJFRUFJUU1EUUNBQklBTkJBblJxSUFZZ0EwRUZkR29pQXYwSkFnQWdBaW9DSVAwZ0FTQUNRVUJyS2dJQS9TQUNJQUlxQW1EOUlBUDlDd0lBSUFFZ0F5QUtha0VDZEdvZ0F2MEpBZ1FnQWlvQ0pQMGdBU0FDS2dKRS9TQUNJQUlxQW1UOUlBUDlDd0lBSUFFZ0F5QWFha0VDZEdvZ0F2MEpBZ2dnQWlvQ0tQMGdBU0FDS2dKSS9TQUNJQUlxQW1qOUlBUDlDd0lBSUFFZ0F5QVpha0VDZEdvZ0F2MEpBZ3dnQWlvQ0xQMGdBU0FDS2dKTS9TQUNJQUlxQW16OUlBUDlDd0lBSUFOQkJHb2lBeUFFUncwQUN5QUVJQXRHRFFFTEEwQWdBU0FFUVFKMGFpQUdJQVJCQlhScUlnTXFBZ0E0QWdBZ0FTQUVJQXBxUVFKMGFpQURLZ0lFT0FJQUlBRWdCQ0FhYWtFQ2RHb2dBeW9DQ0RnQ0FDQUJJQVFnR1dwQkFuUnFJQU1xQWd3NEFnQWdCRUVCYWlJRUlBdEhEUUFMQ3lBQUtBSUFJUVpCQUNFRUFrQWdDMEhjQUVrTkFDQUdRUnhxSWc4Z0MwRUJheUlDUVFWMElnTnFJQTlKRFFBZ0JrRVlhaUlRSUFOcUlCQkpEUUFnQmtFUWFpSVJJQU5xSUJGSkRRQWdCa0VVYWlJU0lBTnFJQkpKRFFBZ0FrSC8vLzgvU3cwQUlBZ2dJbW9pQXlBSUlDRnFJZ0lnQzBFQ2RDSUZhaUlNU1NBQ0lBTWdCV29pQjBseERRQWdBeUFJSUNCcUlna2dCV29pRFVrZ0J5QUpTM0VOQUNBRElBZ2dIMm9pQ0NBRmFpSUZTU0FISUFoTGNRMEFJQU1nQmlBTFFRVjBhaUlPUVF4ckloTkpJQWNnRVV0eERRQWdBeUFPUVFockloUkpJQWNnRWt0eERRQWdBeUFPUVFSckloVkpJQWNnRUV0eERRQWdBeUFPU1NBSElBOUxjUTBBSUFJZ0RVa2dDU0FNU1hFTkFDQUNJQVZKSUFnZ0RFbHhEUUFnQWlBVFNTQU1JQkZMY1EwQUlBSWdGRWtnRENBU1MzRU5BQ0FDSUJWSklBd2dFRXR4RFFBZ0FpQU9TU0FNSUE5TGNRMEFJQWdnRFVrZ0JTQUpTM0VOQUNBSklCTkpJQTBnRVV0eERRQWdDU0FVU1NBTklCSkxjUTBBSUFrZ0ZVa2dEU0FRUzNFTkFDQUpJQTVKSUEwZ0QwdHhEUUFnQ0NBVFNTQUZJQkZMY1EwQUlBZ2dGRWtnQlNBU1MzRU5BQ0FJSUJWSklBVWdFRXR4RFFBZ0NDQU9TU0FGSUE5TGNRMEFJQXRCL1AvLy93QnhJUVJCQUNFREEwQWdBU0FESUJ0cVFRSjBhaUFHSUFOQkJYUnFJZ0w5Q1FJUUlBSXFBakQ5SUFFZ0Fpb0NVUDBnQWlBQ0tnSncvU0FEL1FzQ0FDQUJJQU1nR0dwQkFuUnFJQUw5Q1FJVUlBSXFBalQ5SUFFZ0Fpb0NWUDBnQWlBQ0tnSjAvU0FEL1FzQ0FDQUJJQU1nRjJwQkFuUnFJQUw5Q1FJWUlBSXFBamo5SUFFZ0Fpb0NXUDBnQWlBQ0tnSjQvU0FEL1FzQ0FDQUJJQU1nRm1wQkFuUnFJQUw5Q1FJY0lBSXFBano5SUFFZ0Fpb0NYUDBnQWlBQ0tnSjgvU0FEL1FzQ0FDQURRUVJxSWdNZ0JFY05BQXNnQkNBTFJnMEJDd05BSUFFZ0JDQWJha0VDZEdvZ0JpQUVRUVYwYWlJREtnSVFPQUlBSUFFZ0JDQVlha0VDZEdvZ0F5b0NGRGdDQUNBQklBUWdGMnBCQW5ScUlBTXFBaGc0QWdBZ0FTQUVJQlpxUVFKMGFpQURLZ0ljT0FJQUlBUkJBV29pQkNBTFJ3MEFDd3NnSFVFQmFpRWRJQUVnSkVFQ2RHb2hBU0FjUVFocUlod2dBQ2dDTEUwTkFBc0xJQUFvQWdBUUNTQUFFQWtMY3dFQ2Z5QUFLQUljSWdGQkNHb2lBeUFBS0FJZ0lnSk5CRUFEUUNBQUlBQW9BaGdnQVVFQ2RHb2dBQ2dDRkVFSUVDc2dBeUlCUVFocUlnTWdBQ2dDSUNJQ1RRMEFDd3NnQVNBQ1NRUkFJQUFnQUNnQ0dDQUJRUUowYWlBQUtBSVVJQUlnQVdzUUt3c2dBQ2dDQUJBSklBQVFDUXRFQUNBQUtBSWNJZ0VnQUNnQ0lFa0VRQU5BSUFBZ0FDZ0NHQ0FBS0FJVUlBRnNRUUowYWhCV0lBRkJBV29pQVNBQUtBSWdTUTBBQ3dzZ0FDZ0NBQkFKSUFBUUNRdW9BUUVGZnlBQUtBSlVJZ01vQWdBaEJTQURLQUlFSWdRZ0FDZ0NGQ0FBS0FJY0lnZHJJZ1lnQkNBR1NSc2lCZ1JBSUFVZ0J5QUdFQXNhSUFNZ0F5Z0NBQ0FHYWlJRk5nSUFJQU1nQXlnQ0JDQUdheUlFTmdJRUN5QUVJQUlnQWlBRVN4c2lCQVJBSUFVZ0FTQUVFQXNhSUFNZ0F5Z0NBQ0FFYWlJRk5nSUFJQU1nQXlnQ0JDQUVhellDQkFzZ0JVRUFPZ0FBSUFBZ0FDZ0NMQ0lCTmdJY0lBQWdBVFlDRkNBQ0M1NEZBZ1orQkg4Z0FTQUJLQUlBUVFkcVFYaHhJZ0ZCRUdvMkFnQWdBQ0VMSUFFcEF3QWhBeUFCS1FNSUlRY2pBRUVnYXlJSUpBQWdCMEwvLy8vLy8vOC9neUVFQW40Z0IwSXdpRUwvL3dHRElnV25JZ3BCZ2ZnQWEwSDlEMDBFUUNBRVFnU0dJQU5DUElpRUlRSWdDa0dBK0FCcnJTRUZBa0FnQTBMLy8vLy8vLy8vL3crRElnTkNnWUNBZ0lDQWdJQUlXZ1JBSUFKQ0FYd2hBZ3dCQ3lBRFFvQ0FnSUNBZ0lDQUNGSU5BQ0FDUWdHRElBSjhJUUlMUWdBZ0FpQUNRdi8vLy8vLy8vOEhWaUlBR3lFQ0lBQ3RJQVY4REFFTEFrQWdBeUFFaEZBTkFDQUZRdi8vQVZJTkFDQUVRZ1NHSUFOQ1BJaUVRb0NBZ0lDQWdJQUVoQ0VDUXY4UERBRUxRdjhQSUFwQi9vY0JTdzBBR2tJQVFZRDRBRUdCK0FBZ0JWQWlBUnNpQUNBS2F5SUpRZkFBU2cwQUdpQURJUUlnQkNBRVFvQ0FnSUNBZ01BQWhDQUJHeUlHSVFRQ1FFR0FBU0FKYXlJQlFjQUFjUVJBSUFNZ0FVRkFhcTJHSVFSQ0FDRUNEQUVMSUFGRkRRQWdCQ0FCclNJRmhpQUNRY0FBSUFGcnJZaUVJUVFnQWlBRmhpRUNDeUFJSUFJM0F4QWdDQ0FFTndNWUFrQWdDVUhBQUhFRVFDQUdJQWxCUUdxdGlDRURRZ0FoQmd3QkN5QUpSUTBBSUFaQndBQWdDV3V0aGlBRElBbXRJZ0tJaENFRElBWWdBb2doQmdzZ0NDQUROd01BSUFnZ0JqY0RDQ0FJS1FNSVFnU0dJQWdwQXdBaUFrSThpSVFoQXdKQUlBQWdDa2NnQ0NrREVDQUlLUU1ZaEVJQVVuR3RJQUpDLy8vLy8vLy8vLzhQZzRRaUFrS0JnSUNBZ0lDQWdBaGFCRUFnQTBJQmZDRUREQUVMSUFKQ2dJQ0FnSUNBZ0lBSVVnMEFJQU5DQVlNZ0Ezd2hBd3NnQTBLQWdJQ0FnSUNBQ0lVZ0F5QURRdi8vLy8vLy8vOEhWaUlBR3lFQ0lBQ3RDeUVESUFoQklHb2tBQ0FMSUFkQ2dJQ0FnSUNBZ0lDQWY0TWdBMEkwaG9RZ0FvUy9PUU1BQzRNWUF4Ti9BWHdEZmlNQVFiQUVheUlNSkFBZ0RFRUFOZ0lzQWtBZ0FiMGlHa0lBVXdSQVFRRWhFVUc2Q0NFVElBR2FJZ0c5SVJvTUFRc2dCRUdBRUhFRVFFRUJJUkZCdlFnaEV3d0JDMEhBQ0VHN0NDQUVRUUZ4SWhFYklSTWdFVVVoRlFzQ1FDQWFRb0NBZ0lDQWdJRDQvd0NEUW9DQWdJQ0FnSUQ0L3dCUkJFQWdBRUVnSUFJZ0VVRURhaUlESUFSQi8vOTdjUkFVSUFBZ0V5QVJFQkVnQUVHM0NVSDJDaUFGUVNCeElnVWJRYUFLUWZvS0lBVWJJQUVnQVdJYlFRTVFFU0FBUVNBZ0FpQURJQVJCZ01BQWN4QVVJQU1nQWlBQ0lBTklHeUVLREFFTElBeEJFR29oRWdKQUFuOENRQ0FCSUF4QkxHb1FYeUlCSUFHZ0lnRkVBQUFBQUFBQUFBQmlCRUFnRENBTUtBSXNJZ1pCQVdzMkFpd2dCVUVnY2lJT1FlRUFSdzBCREFNTElBVkJJSElpRGtIaEFFWU5BaUFNS0FJc0lRbEJCaUFESUFOQkFFZ2JEQUVMSUF3Z0JrRWRheUlKTmdJc0lBRkVBQUFBQUFBQXNFR2lJUUZCQmlBRElBTkJBRWdiQ3lFTElBeEJNR3BCb0FKQkFDQUpRUUJPRzJvaURTRUhBMEFnQndKL0lBRkVBQUFBQUFBQThFRmpJQUZFQUFBQUFBQUFBQUJtY1FSQUlBR3JEQUVMUVFBTElnTTJBZ0FnQjBFRWFpRUhJQUVnQTdpaFJBQUFBQUJsemMxQm9pSUJSQUFBQUFBQUFBQUFZZzBBQ3dKQUlBbEJBRXdFUUNBSklRTWdCeUVHSUEwaENBd0JDeUFOSVFnZ0NTRURBMEJCSFNBRElBTkJIVThiSVFNQ1FDQUhRUVJySWdZZ0NFa05BQ0FEclNFYlFnQWhHZ05BSUFZZ0drTC8vLy8vRDRNZ0JqVUNBQ0FiaG53aUhFS0FsT3ZjQTRBaUdrS0E3SlNqREg0Z0hIdytBZ0FnQmtFRWF5SUdJQWhQRFFBTElCcW5JZ1pGRFFBZ0NFRUVheUlJSUFZMkFnQUxBMEFnQ0NBSElnWkpCRUFnQmtFRWF5SUhLQUlBUlEwQkN3c2dEQ0FNS0FJc0lBTnJJZ00yQWl3Z0JpRUhJQU5CQUVvTkFBc0xJQU5CQUVnRVFDQUxRUmxxUVFsdVFRRnFJUThnRGtIbUFFWWhFQU5BUVFsQkFDQURheUlESUFOQkNVOGJJUW9DUUNBR0lBaE5CRUFnQ0NnQ0FFVkJBblFoQnd3QkMwR0FsT3ZjQXlBS2RpRVVRWDhnQ25SQmYzTWhGa0VBSVFNZ0NDRUhBMEFnQnlBRElBY29BZ0FpRnlBS2RtbzJBZ0FnRmlBWGNTQVViQ0VESUFkQkJHb2lCeUFHU1EwQUN5QUlLQUlBUlVFQ2RDRUhJQU5GRFFBZ0JpQUROZ0lBSUFaQkJHb2hCZ3NnRENBTUtBSXNJQXBxSWdNMkFpd2dEU0FISUFocUlnZ2dFQnNpQnlBUFFRSjBhaUFHSUFZZ0IydEJBblVnRDBvYklRWWdBMEVBU0EwQUN3dEJBQ0VEQWtBZ0JpQUlUUTBBSUEwZ0NHdEJBblZCQ1d3aEEwRUtJUWNnQ0NnQ0FDSUtRUXBKRFFBRFFDQURRUUZxSVFNZ0NpQUhRUXBzSWdkUERRQUxDeUFMSUFOQkFDQU9RZVlBUnh0cklBNUI1d0JHSUF0QkFFZHhheUlISUFZZ0RXdEJBblZCQ1d4QkNXdElCRUFnREVFd2FrR0VZRUdrWWlBSlFRQklHMm9nQjBHQXlBQnFJZ3BCQ1cwaUQwRUNkR29oQ1VFS0lRY2dEMEYzYkNBS2FpSUtRUWRNQkVBRFFDQUhRUXBzSVFjZ0NrRUJhaUlLUVFoSERRQUxDd0pBSUFrb0FnQWlFQ0FRSUFkdUlnOGdCMndpQ2tZZ0NVRUVhaUlVSUFaR2NRMEFJQkFnQ21zaEVBSkFJQTlCQVhGRkJFQkVBQUFBQUFBQVFFTWhBU0FIUVlDVTY5d0RSdzBCSUFnZ0NVOE5BU0FKUVFSckxRQUFRUUZ4UlEwQkMwUUJBQUFBQUFCQVF5RUJDMFFBQUFBQUFBRGdQMFFBQUFBQUFBRHdQMFFBQUFBQUFBRDRQeUFHSUJSR0cwUUFBQUFBQUFENFB5QVFJQWRCQVhZaUZFWWJJQkFnRkVrYklSa0NRQ0FWRFFBZ0V5MEFBRUV0UncwQUlCbWFJUmtnQVpvaEFRc2dDU0FLTmdJQUlBRWdHYUFnQVdFTkFDQUpJQWNnQ21vaUF6WUNBQ0FEUVlDVTY5d0RUd1JBQTBBZ0NVRUFOZ0lBSUFnZ0NVRUVheUlKU3dSQUlBaEJCR3NpQ0VFQU5nSUFDeUFKSUFrb0FnQkJBV29pQXpZQ0FDQURRZitUNjl3RFN3MEFDd3NnRFNBSWEwRUNkVUVKYkNFRFFRb2hCeUFJS0FJQUlncEJDa2tOQUFOQUlBTkJBV29oQXlBS0lBZEJDbXdpQjA4TkFBc0xJQWxCQkdvaUJ5QUdJQVlnQjBzYklRWUxBMEFnQmlJSElBaE5JZ3BGQkVBZ0JrRUVheUlHS0FJQVJRMEJDd3NDUUNBT1FlY0FSd1JBSUFSQkNIRWhDUXdCQ3lBRFFYOXpRWDhnQzBFQklBc2JJZ1lnQTBvZ0EwRjdTbkVpQ1JzZ0Jtb2hDMEYvUVg0Z0NSc2dCV29oQlNBRVFRaHhJZ2tOQUVGM0lRWUNRQ0FLRFFBZ0IwRUVheWdDQUNJT1JRMEFRUW9oQ2tFQUlRWWdEa0VLY0EwQUEwQWdCaUlKUVFGcUlRWWdEaUFLUVFwc0lncHdSUTBBQ3lBSlFYOXpJUVlMSUFjZ0RXdEJBblZCQ1d3aENpQUZRVjl4UWNZQVJnUkFRUUFoQ1NBTElBWWdDbXBCQ1dzaUJrRUFJQVpCQUVvYklnWWdCaUFMU2hzaEN3d0JDMEVBSVFrZ0N5QURJQXBxSUFacVFRbHJJZ1pCQUNBR1FRQktHeUlHSUFZZ0Mwb2JJUXNMUVg4aENpQUxRZjMvLy84SFFmNy8vLzhISUFrZ0MzSWlFQnRLRFFFZ0N5QVFRUUJIYWtFQmFpRU9Ba0FnQlVGZmNTSVZRY1lBUmdSQUlBTWdEa0gvLy8vL0IzTktEUU1nQTBFQUlBTkJBRW9iSVFZTUFRc2dFaUFESUFOQkgzVWlCbk1nQm11dElCSVFJeUlHYTBFQlRBUkFBMEFnQmtFQmF5SUdRVEE2QUFBZ0VpQUdhMEVDU0EwQUN3c2dCa0VDYXlJUElBVTZBQUFnQmtFQmEwRXRRU3NnQTBFQVNCczZBQUFnRWlBUGF5SUdJQTVCLy8vLy93ZHpTZzBDQ3lBR0lBNXFJZ01nRVVILy8vLy9CM05LRFFFZ0FFRWdJQUlnQXlBUmFpSURJQVFRRkNBQUlCTWdFUkFSSUFCQk1DQUNJQU1nQkVHQWdBUnpFQlFDUUFKQUFrQWdGVUhHQUVZRVFDQU1RUkJxUVFseUlRVWdEU0FJSUFnZ0RVc2JJZ2toQ0FOQUlBZzFBZ0FnQlJBaklRWUNRQ0FJSUFsSEJFQWdCaUFNUVJCcVRRMEJBMEFnQmtFQmF5SUdRVEE2QUFBZ0JpQU1RUkJxU3cwQUN3d0JDeUFGSUFaSERRQWdCa0VCYXlJR1FUQTZBQUFMSUFBZ0JpQUZJQVpyRUJFZ0NFRUVhaUlJSUExTkRRQUxJQkFFUUNBQVFZSU1RUUVRRVFzZ0J5QUlUUTBCSUF0QkFFd05BUU5BSUFnMUFnQWdCUkFqSWdZZ0RFRVFha3NFUUFOQUlBWkJBV3NpQmtFd09nQUFJQVlnREVFUWFrc05BQXNMSUFBZ0JrRUpJQXNnQzBFSlRoc1FFU0FMUVFscklRWWdDRUVFYWlJSUlBZFBEUU1nQzBFSlNpRVlJQVloQ3lBWURRQUxEQUlMQWtBZ0MwRUFTQTBBSUFjZ0NFRUVhaUFISUFoTEd5RU5JQXhCRUdwQkNYSWhCU0FJSVFjRFFDQUZJQWMxQWdBZ0JSQWpJZ1pHQkVBZ0JrRUJheUlHUVRBNkFBQUxBa0FnQnlBSVJ3UkFJQVlnREVFUWFrME5BUU5BSUFaQkFXc2lCa0V3T2dBQUlBWWdERUVRYWtzTkFBc01BUXNnQUNBR1FRRVFFU0FHUVFGcUlRWWdDU0FMY2tVTkFDQUFRWUlNUVFFUUVRc2dBQ0FHSUFVZ0Jtc2lCaUFMSUFZZ0MwZ2JFQkVnQ3lBR2F5RUxJQWRCQkdvaUJ5QU5UdzBCSUF0QkFFNE5BQXNMSUFCQk1DQUxRUkpxUVJKQkFCQVVJQUFnRHlBU0lBOXJFQkVNQWdzZ0N5RUdDeUFBUVRBZ0JrRUpha0VKUVFBUUZBc2dBRUVnSUFJZ0F5QUVRWURBQUhNUUZDQURJQUlnQWlBRFNCc2hDZ3dCQ3lBVElBVkJHblJCSDNWQkNYRnFJUWdDUUNBRFFRdExEUUJCRENBRGF5RUdSQUFBQUFBQUFEQkFJUmtEUUNBWlJBQUFBQUFBQURCQW9pRVpJQVpCQVdzaUJnMEFDeUFJTFFBQVFTMUdCRUFnR1NBQm1pQVpvYUNhSVFFTUFRc2dBU0Fab0NBWm9TRUJDeUFTSUF3b0Fpd2lCeUFIUVI5MUlnWnpJQVpyclNBU0VDTWlCa1lFUUNBR1FRRnJJZ1pCTURvQUFBc2dFVUVDY2lFTElBVkJJSEVoRFNBR1FRSnJJZ2tnQlVFUGFqb0FBQ0FHUVFGclFTMUJLeUFIUVFCSUd6b0FBQ0FFUVFoeElRWWdERUVRYWlFSEEwQWdCeUlGQW44Z0FabEVBQUFBQUFBQTRFRmpCRUFnQWFvTUFRdEJnSUNBZ0hnTElnZEI0TVFCYWkwQUFDQU5jam9BQUNBQklBZTNvVVFBQUFBQUFBQXdRS0loQVFKQUlBVkJBV29pQnlBTVFSQnFhMEVCUncwQUFrQWdCZzBBSUFOQkFFb05BQ0FCUkFBQUFBQUFBQUFBWVEwQkN5QUZRUzQ2QUFFZ0JVRUNhaUVIQ3lBQlJBQUFBQUFBQUFBQVlnMEFDMEYvSVFwQi9mLy8vd2NnQ3lBU0lBbHJJZ1pxSWcxcklBTklEUUFnQUVFZ0lBSWdEU0FEUVFKcUlBY2dERUVRYWlJSGF5SUZJQVZCQW1zZ0EwZ2JJQVVnQXhzaUNtb2lBeUFFRUJRZ0FDQUlJQXNRRVNBQVFUQWdBaUFESUFSQmdJQUVjeEFVSUFBZ0J5QUZFQkVnQUVFd0lBb2dCV3RCQUVFQUVCUWdBQ0FKSUFZUUVTQUFRU0FnQWlBRElBUkJnTUFBY3hBVUlBTWdBaUFDSUFOSUd5RUtDeUFNUWJBRWFpUUFJQW9MQkFCQ0FBc0VBRUVBQzU4REFRbC9RZVlLSVFBQ1FBTkFJQUF0QUFBaUFVVU5BU0FCUVQxR0RRRWdBRUVCYWlJQVFRTnhEUUFMQWtBQ1FFR0Fnb1FJSUFBb0FnQWlBbXNnQW5KQmdJR0NoSGh4UVlDQmdvUjRSdzBBQTBCQmdJS0VDQ0FDUWIzNjlPa0RjeUlCYXlBQmNrR0FnWUtFZUhGQmdJR0NoSGhIRFFFZ0FDZ0NCQ0VDSUFCQkJHb2lBU0VBSUFKQmdJS0VDQ0FDYTNKQmdJR0NoSGh4UVlDQmdvUjRSZzBBQ3d3QkN5QUFJUUVMQTBBZ0FTSUFMUUFBSWdKRkRRRWdBRUVCYWlFQklBSkJQVWNOQUFzTElBQWlBVUhtQ2tZRVFFRUFEd3NDUUNBQlFlWUtheUlBUWVZS2FpMEFBQTBBUWJET0FTZ0NBQ0lFUlEwQUlBUW9BZ0FpQlVVTkFBTkFBa0FDZnlBRklRSkI1Z29oQmtFQUlBQWlBVVVOQUJwQjVnb3RBQUFpQXdSL0FrQURRQ0FESUFJdEFBQWlCMGNOQVNBSFJRMEJJQUZCQVdzaUFVVU5BU0FDUVFGcUlRSWdCaTBBQVNFRElBWkJBV29oQmlBRERRQUxRUUFoQXdzZ0F3VkJBQXNnQWkwQUFHc0xSUVJBSUFBZ0JXb2lBUzBBQUVFOVJnMEJDeUFFS0FJRUlRVWdCRUVFYWlFRUlBVU5BUXdDQ3dzZ0FVRUJhaUVJQ3lBSUM4NENBUWgvSXdCQklHc2lBeVFBSUFNZ0FDZ0NIQ0lFTmdJUUlBQW9BaFFoQlNBRElBSTJBaHdnQXlBQk5nSVlJQU1nQlNBRWF5SUJOZ0lVSUFFZ0Ftb2hCVUVDSVFZZ0EwRVFhaUVCQW44RFFBSkFBa0FDUUNBQUtBSThJQUVnQmlBRFFReHFFQVFpQkFSL1FaVEdBU0FFTmdJQVFYOEZRUUFMUlFSQUlBVWdBeWdDRENJSFJnMEJJQWRCQUU0TkFnd0RDeUFGUVg5SERRSUxJQUFnQUNnQ0xDSUJOZ0ljSUFBZ0FUWUNGQ0FBSUFFZ0FDZ0NNR28yQWhBZ0Fnd0RDeUFCSUFjZ0FTZ0NCQ0lJU3lJSlFRTjBhaUlFSUFjZ0NFRUFJQWtiYXlJSUlBUW9BZ0JxTmdJQUlBRkJERUVFSUFrYmFpSUJJQUVvQWdBZ0NHczJBZ0FnQlNBSGF5RUZJQVlnQ1dzaEJpQUVJUUVNQVFzTElBQkJBRFlDSENBQVFnQTNBeEFnQUNBQUtBSUFRU0J5TmdJQVFRQWdCa0VDUmcwQUdpQUNJQUVvQWdSckN5RUtJQU5CSUdva0FDQUtDd1lBSUFBUUFBc0dBQ0FBRUFZTHp4MEREWDhFZXdOK0l3QkIwTUFBYXlJSkpBQWdDVUVBTmdJUVFRSWhCQUpBQWtBZ0FDZ0NBQ0lEUVkyVW5OUUFSZzBBSUFOQi81Lzlqd1ZIQkVBQ1FDQURRWUNBZ09BQVJ3MEFJQUFvQWdSQjZxQ0JnUUpIRFFBZ0FDZ0NDRUdObEp6VUFFWU5BZ3RCelFnUUFFRUJJUUFNQWd0QkFDRUVDd0ovUVFCQkFVSGdBQkFNSWdORkRRQWFJQU5CQVRZQ1RBSkFBa0FDUUFKQUlBUU9Bd0FEQVFNTElBTkJ3d0EyQWxnZ0EwSEVBRFlDVkNBRFFjVUFOZ0pRSUFOQnhnQTJBaEFnQTBISEFEWUNCQ0FEUWNnQU5nSWNJQU5CeVFBMkFoZ2dBMEhLQURZQ0ZDQURRY3NBTmdJQUlBTkJ6QUEyQWx3Z0EwSE5BRFlDTENBRFFjNEFOZ0lvSUFOQnp3QTJBaVFnQTBIUUFEWUNJQ0FEUWRFQU5nSU1JQU5CMGdBMkFnZ2dBeEJHSWdRMkFqQWdCQTBCREFJTElBTkIwd0EyQWxnZ0EwSFVBRFlDVkNBRFFkVUFOZ0pRSUFOQjFnQTJBaEFnQTBIWEFEWUNCQ0FEUWRnQU5nSmNJQU5CMlFBMkFpd2dBMEhhQURZQ0tDQURRZHNBTmdJa0lBTkIzQUEyQWlBZ0EwSGRBRFlDSENBRFFkNEFOZ0lZSUFOQjN3QTJBaFFnQTBIZ0FEWUNEQ0FEUWVFQU5nSUlJQU5CNGdBMkFnQWdBd0ovUVFGQmlBRVFEQ0lFQkVBZ0JCQkdJZ1UyQWdBQ1FDQUZSUTBBSUFUOURBQUFBQUFBQUFBQUFBQUFBQUFBQUFEOUN3SnNJQVJCQURvQWZDQUVFQzRpQlRZQ0JDQUZSUTBBSUFRUUxpSUZOZ0lJSUFWRkRRQWdCQXdDQ3lBRUVHa0xRUUFMSWdRMkFqQWdCRVVOQVFzZ0EwRUJOZ0pJSUFOQkFUWUNRQ0FEUVFBMkFqd2dBMElBTndJMElBTkJBVFlDUkNBRERBRUxJQU1RQ1VFQUN5SUVCRUFnQkVFQU5nSThJQVJCNHdBMkFrZ0xJQVFFUUNBRVFRQTJBamdnQkVIa0FEWUNSQXNnQkFSQUlBUkJBRFlDTkNBRVFlVUFOZ0pBQ3lBSlFSUnFJZ1VpQXdSQUlBTkJBRUc0d0FBUURpSURRUUEyQXJoQUlBTkNmemNDaUVBTElBa2dBVFlDRENBSklBQTJBZ2dnQ1NBQU5nSUVRUUVoQUVFQUlRTUNRQ0FKUVFScUlncEZEUUJCQVVISUFCQU1JZ0VFZndKL0lBRkJnSURBQURZQ1FDQUJRWUNBd0FBUURTSUlOZ0lnSUFoRkJFQWdBUkFKUVFBTUFRc2dBU0FJTmdJa0lBRkJBallDSENBQlFRTTJBaGdnQVVFRU5nSVVJQUZCQlRZQ0VDQUJRUVkyQWl3Z0FVRUlOZ0lvSUFFZ0FTZ0NSRUVDY2pZQ1JDQUJDd1ZCQUFzaUFVVU5BQ0FCQkVBZ0FVRUFOZ0lFSUFFZ0NqWUNBQXNnQ2pVQ0NDRVVJQUVFUUNBQklCUTNBd2dMQWtBZ0FVVU5BQ0FCTFFCRVFRSnhSUTBBSUFGQlB6WUNFQXNnQVFSQUlBRkJ3UUEyQWhnTElBRUVRQ0FCUWNJQU5nSWNDeUFCSVFNTEFuOENRQ0FFUlEwQUlBVkZEUUFnQkNnQ1RFVUVRQ0FFUVRScVFRRkJqOGtBUVFBUUNFRUFEQUlMSUFRb0FqQWdCU0FFS0FJWUVRTUFRUUVoQndzZ0J3dEZCRUJCZ1FrUUFDQURFQ2NnQkJBb0RBRUxBbjhnQ1VFUWFpRUZRUUFoQVFKQUlBTkZEUUFnQkVVTkFDQUVLQUpNUlFSQUlBUkJOR3BCQVVIZ3lRQkJBQkFJUVFBTUFnc2dBeUFFS0FJd0lBVWdCRUUwYWlBRUtBSUFFUUVBSVFFTElBRUxSUVJBUVowSkVBQWdBeEFuSUFRUUtDQUpLQUlRRUJnTUFRc2dDU2dDRUNFQUlBSUVRRUVJSUFBb0FoQWlBVUVDZEJBYklRVUNRQ0FCUlEwQVFRQWhBQ0FCUVFOTEJFQWdBVUY4Y1NFQS9Rd0FBQUFBQVFBQUFBSUFBQUFEQUFBQUlSQURRQ0FGSUFaQkFuUnFJQkQ5Q3dJQUlCRDlEQVFBQUFBRUFBQUFCQUFBQUFRQUFBRDlyZ0VoRUNBR1FRUnFJZ1lnQUVjTkFBc2dBQ0FCUmcwQkN3TkFJQVVnQUVFQ2RHb2dBRFlDQUNBQVFRRnFJZ0FnQVVjTkFBc0xBbjlCQUNBRVJRMEFHaUFFS0FKTVJRUkFJQVJCTkdwQkFVRzF5QUJCQUJBSVFRQU1BUXNnQkNnQ01DQUJJQVVnQkVFMGFpQUVLQUlzRVFFQUMwVUVRRUhjQ0JBQUlBTVFKeUFFRUNnZ0NTZ0NFQkFZSUFVUUNVRUJJUUFNQWdzZ0JSQUpJQWtvQWhBaEFBdEJBQ0VCQWtBZ0JFVU5BQ0FEUlEwQUlBUW9Ba3hGRFFBZ0JDZ0NNQ0FESUFBZ0JFRTBhaUFFS0FJRUVRRUFJUUVMQWtBZ0FRUkFRUUFoQUFKQUlBUkZEUUFnQTBVTkFDQUVLQUpNUlEwQUlBUW9BakFnQXlBRVFUUnFJQVFvQWhBUkFBQWhBQXNnQUEwQkMwR2tDaEFBSUFRUUtDQURFQ2NnQ1NnQ0VCQVlRUUVoQUF3QkN5QURFQ2NnQkJBb1FRZ2dDU2dDRUNJS0tBSU1JQW9vQWdoc0lnVWdDaWdDRUNJSGJDSU5FQnNoQXdKQUlBSU5BQ0FIUlEwQUlBb29BaGdoRGdOQUlBNGdDMEUwYkdvaUJpZ0NHQ0lBUVFoSEJFQUNRQ0FBUVFkTkJFQWdCaWdDRENBR0tBSUliQ0VCSUFZb0Fpd2hBaUFHS0FJZ0JFQWdBVVVOQWtFQklBQkJBV3QwclNFVVFRQWhBQ0FCUVFSUEJFQWdBVUY4Y1NFQUlCVDlFaUVRUVFBaEJBTkFJQUlnQkVFQ2RHb2lDQ0FJL1FBQ0FDSVMvY2NCUVFmOXl3RWlFZjBkQUNBUS9SMEFJaFYvL1JJZ0VmMGRBU0FRL1IwQkloWi8vUjRCSUJJZ0VQME5DQWtLQ3d3TkRnOEFBUUlEQUFFQ0EvM0hBVUVIL2NzQkloTDlIUUFnRlgvOUVpQVMvUjBCSUJaLy9SNEIvUTBBQVFJRENBa0tDeEFSRWhNWUdSb2IvUXNDQUNBRVFRUnFJZ1FnQUVjTkFBc2dBQ0FCUmcwREN3TkFJQUlnQUVFQ2RHb2lCQ0FFTkFJQVFnZUdJQlIvUGdJQUlBQkJBV29pQUNBQlJ3MEFDd3dDQ3lBQlJRMEJRWDhnQUhSQmYzT3RJUlJCQUNFQUlBRkJCRThFUUNBQlFYeHhJUUFnRlAwU0lSQkJBQ0VFQTBBZ0FpQUVRUUowYWlJSUlBajlBQUlBSWhMOXlRSDlEUDhBQUFBQUFBQUEvd0FBQUFBQUFBRDkxUUVpRWYwZEFDQVEvUjBBSWhXQS9SSWdFZjBkQVNBUS9SMEJJaGFBL1I0QklCSWdFUDBOQ0FrS0N3d05EZzhBQVFJREFBRUNBLzNKQWYwTS93QUFBQUFBQUFEL0FBQUFBQUFBQVAzVkFTSVMvUjBBSUJXQS9SSWdFdjBkQVNBV2dQMGVBZjBOQUFFQ0F3Z0pDZ3NRRVJJVEdCa2FHLzBMQWdBZ0JFRUVhaUlFSUFCSERRQUxJQUFnQVVZTkFnc0RRQ0FDSUFCQkFuUnFJZ1FnQkRVQ0FFTC9BWDRnRklBK0FnQWdBRUVCYWlJQUlBRkhEUUFMREFFTElBQkJDR3NoQkNBR0tBSU1JQVlvQWdoc0lRSWdCaWdDTENFSUlBWW9BaUFFUUNBQ1JRMEJRUUFoQUNBQ1FRUlBCRUFnQWtGOGNTRUFRUUFoQVFOQUlBZ2dBVUVDZEdvaURDQU0vUUFDQUNBRS9hd0IvUXNDQUNBQlFRUnFJZ0VnQUVjTkFBc2dBQ0FDUmcwQ0N3TkFJQWdnQUVFQ2RHb2lBU0FCS0FJQUlBUjFOZ0lBSUFCQkFXb2lBQ0FDUncwQUN3d0JDeUFDUlEwQVFRQWhBQ0FDUVFSUEJFQWdBa0Y4Y1NFQVFRQWhBUU5BSUFnZ0FVRUNkR29pRENBTS9RQUNBQ0FFL2EwQi9Rc0NBQ0FCUVFScUlnRWdBRWNOQUFzZ0FDQUNSZzBCQ3dOQUlBZ2dBRUVDZEdvaUFTQUJLQUlBSUFSMk5nSUFJQUJCQVdvaUFDQUNSdzBBQ3dzZ0JrRUlOZ0lZQ3lBTFFRRnFJZ3NnQjBjTkFBc0xBa0FDUUFKQUFrQWdCMEVCYXc0RUFBTUJBZ01MSUFWRkRRSWdDaWdDR0NnQ0xDRUNRUUFoQkVFQUlRRUNRQ0FGUVF4SkRRQWdBaUFESUFWcVNTQUNJQVZCQW5ScUlBTkxjUTBBSUFWQmZIRWhBVUVBSVFBRFFDQUFJQU5xSUFJZ0FFRUNkR3I5QUFJQUlCRDlEUUFFQ0F3QUFBQUFBQUFBQUFBQUFBRDlXZ0FBQUNBQVFRUnFJZ0FnQVVjTkFBc2dBU0FGUmcwREN5QUJJUUFnQlVFRGNTSUdCRUFEUUNBQUlBTnFJQUlnQUVFQ2RHb29BZ0E2QUFBZ0FFRUJhaUVBSUFSQkFXb2lCQ0FHUncwQUN3c2dBU0FGYTBGOFN3MENBMEFnQUNBRGFpQUNJQUJCQW5ScUtBSUFPZ0FBSUFNZ0FFRUJhaUlCYWlBQ0lBRkJBblJxS0FJQU9nQUFJQU1nQUVFQ2FpSUJhaUFDSUFGQkFuUnFLQUlBT2dBQUlBTWdBRUVEYWlJQmFpQUNJQUZCQW5ScUtBSUFPZ0FBSUFCQkJHb2lBQ0FGUncwQUN3d0NDeUFGUlEwQklBb29BaGdpQUNnQ2xBRWhBU0FBS0FKZ0lRSWdBQ2dDTENFRVFRQWhBQ0FGUVFGSEJFQWdCVUVCY1NFUElBVkJmbkVoQndOQUlBTWdBRUVEYkdvaUJTQUVJQUJCQW5RaUJtb29BZ0E2QUFBZ0JTQUNJQVpxS0FJQU9nQUJJQVVnQVNBR2FpZ0NBRG9BQWlBRElBQkJBWElpQmtFRGJHb2lCU0FFSUFaQkFuUWlCbW9vQWdBNkFBQWdCU0FDSUFacUtBSUFPZ0FCSUFVZ0FTQUdhaWdDQURvQUFpQUFRUUpxSWdBZ0IwY05BQXNnRDBVTkFnc2dBeUFBUVFOc2FpSUZJQVFnQUVFQ2RDSUFhaWdDQURvQUFDQUZJQUFnQW1vb0FnQTZBQUVnQlNBQUlBRnFLQUlBT2dBQ0RBRUxJQVZGRFFBZ0NpZ0NHQ0lFS0FMSUFTRUFJQVFvQXBRQklRRWdCQ2dDWUNFQ0lBUW9BaXdoQ0VFQUlRUUNRQ0FGUWRRQVNRMEFJQU1nQlVFQmF5SUhRUUowSWdacUlBTkpEUUFnQTBFQmFpSUxJQVpxSUF0SkRRQWdBMEVDYWlJTElBWnFJQXRKRFFBZ0JpQURRUU5xSWd0cUlBdEpEUUFnQjBILy8vLy9BMHNOQUNBRElBZ2dCVUVDZENJR2Fra2dDQ0FESUFacUlnZEpjUTBBSUFJZ0Iwa2dBeUFDSUFacVNYRU5BQ0FCSUFkSklBTWdBU0FHYWtseERRQWdBQ0FIU1NBRElBQWdCbXBKY1EwQUlBVkIvUC8vL3dkeElRVDlEQUFBQUFBQkFBQUFBZ0FBQUFNQUFBQWhFa0VBSVFZRFFDQURJQkpCQXYyckFTSVEvUnNBYWlBSUlBWkJBblFpQjJyOUFBSUFJaEg5R3dBNkFBQWdBeUFRL1JzQmFpQVIvUnNCT2dBQUlBTWdFUDBiQW1vZ0VmMGJBam9BQUNBRElCRDlHd05xSUJIOUd3TTZBQUFnQXlBUS9Rd0JBQUFBQVFBQUFBRUFBQUFCQUFBQS9WQWlFZjBiQUdvZ0FpQUhhdjBBQWdBaUUvMGJBRG9BQUNBRElCSDlHd0ZxSUJQOUd3RTZBQUFnQXlBUi9Sc0NhaUFUL1JzQ09nQUFJQU1nRWYwYkEyb2dFLzBiQXpvQUFDQURJQkQ5REFJQUFBQUNBQUFBQWdBQUFBSUFBQUQ5VUNJUi9Sc0FhaUFCSUFkcS9RQUNBQ0lUL1JzQU9nQUFJQU1nRWYwYkFXb2dFLzBiQVRvQUFDQURJQkg5R3dKcUlCUDlHd0k2QUFBZ0F5QVIvUnNEYWlBVC9Sc0RPZ0FBSUFNZ0VQME1Bd0FBQUFNQUFBQURBQUFBQXdBQUFQMVFJaEQ5R3dCcUlBQWdCMnI5QUFJQUloSDlHd0E2QUFBZ0F5QVEvUnNCYWlBUi9Sc0JPZ0FBSUFNZ0VQMGJBbW9nRWYwYkFqb0FBQ0FESUJEOUd3TnFJQkg5R3dNNkFBQWdFdjBNQkFBQUFBUUFBQUFFQUFBQUJBQUFBUDJ1QVNFU0lBWkJCR29pQmlBRVJ3MEFDeUFFSUFWR0RRRUxBMEFnQXlBRVFRSjBJZ1pxSWdjZ0JpQUlhaWdDQURvQUFDQUhJQUlnQm1vb0FnQTZBQUVnQnlBQklBWnFLQUlBT2dBQ0lBY2dBQ0FHYWlnQ0FEb0FBeUFFUVFGcUlnUWdCVWNOQUFzTElBb1FHQ0FESUEwUUJ5QURFQWxCQUNFQUN5QUpRZERBQUdva0FDQUFDd2dBUVFnZ0FCQWJDNnNDQWdKK0FuOUNmeUVESUFBdEFFUkJDSEZGQkVBZ0FDQUFLQUlnSWdZMkFpUUNRQUpBQWtBZ0FDQUFLQUl3SWdVRWZ3TkFJQVlnQlNBQUtBSUFJQUFvQWhRUkFBQWlCVUYvUmcwQ0lBQWdBQ2dDSkNBRmFpSUdOZ0lrSUFBZ0FDZ0NNQ0FGYXlJRk5nSXdJQVVOQUFzZ0FDZ0NJQVVnQmdzMkFpUWdBVUlBVlEwQlFnQWhBd3dDQ3lBQUlBQW9Ba1JCQ0hJMkFrUWdBa0VFUVpIMUFFRUFFQWdnQUVFQU5nSXdJQUFnQUNnQ1JFRUljallDUkVKL0R3dENBQ0VEQTBBZ0FTQUFLQUlBSUFBb0FoZ1JDd0FpQkVKL1VRUkFJQUpCQkVHQzlRQkJBQkFJSUFBZ0FDZ0NSRUVJY2pZQ1JDQUFJQUFwQXpnZ0EzdzNBemhDZnlBRElBTlFHdzhMSUFNZ0JId2hBeUFCSUFSOUlnRkNBRlVOQUFzTElBQWdBQ2tET0NBRGZEY0RPQXNnQXdzakFRRi9JQUVnQVNnQ0FDQUJLQUlJSWdFZ0FLY2lBaUFCSUFKSkcybzJBZ1JCQVFzOEFnSi9BWDRnQVNnQ0FDQUJLQUlJYWlJRElBRW9BZ1FpQWtZRVFFSi9Ed3NnQVNBQ0lBQ25hallDQkNBRElBSnJyQ0lFSUFBZ0FDQUVWUnNMbUFNQ0FuNENmeUFBS0FJd0lnVWdBYWNpQms4RVFDQUFJQVVnQm1zMkFqQWdBQ0FBS0FJa0lBWnFOZ0lrSUFBZ0FDa0RPQ0FCZkRjRE9DQUJEd3NnQUMwQVJFRUVjUVJBSUFCQkFEWUNNQ0FBSUFBb0FpUWdCV28yQWlRZ0FDQUZyU0lCSUFBcEF6aDhOd000SUFGQ2Z5QUZHdzhMQWtBZ0JVVUVRQXdCQ3lBQVFRQTJBakFnQUNBQUtBSWdOZ0lrSUFFZ0JhMGlBMzBoQVFzZ0FVSUFWUVJBQTBBZ0FDa0RDQ0FBS1FNNElBRWdBM3g4VkFSQUlBSkJCRUdyOVFCQkFCQUlJQUJCQURZQ01DQUFJQUFvQWlBMkFpUWdBQ0FBS1FNNElBTjhJZ00zQXpnZ0FDa0RDQ0lCSUFOOUlRUWdBU0FBS0FJQUlBQW9BaHdSQ1FBaEJTQUFLQUpFSVFJZ0FDQUZCSDhnQUNBQk53TTRJQUpCZTNFRklBSUxRUVJ5TmdKRVFuOGdCQ0FCSUFOUkd3OExJQUVnQUNnQ0FDQUFLQUlZRVFzQUlnUkNmMUVFUUNBQ1FRUkJxL1VBUVFBUUNDQUFJQUFvQWtSQkJISTJBa1FnQUNBQUtRTTRJQU44TndNNFFuOGdBeUFEVUJzUEN5QURJQVI4SVFNZ0FTQUVmU0lCUWdCVkRRQUxDeUFBSUFBcEF6Z2dBM3czQXpnZ0F3dWJBUUVGZjBFQklBSW9BZ2dpQnlBSFFRRk5HeUVFSUFJb0FnUWlBeUFDS0FJQWF5RUdBMEFnQkNJRlFRRjBJUVFnQlNBR2F5QUJTUTBBQ3lBRklBZEhCRUFnQlJBTklnTkZCRUJCZnc4TElBSW9BZ0FpQkFSQUlBTWdCQ0FHRUFzYUlBSW9BZ0FRQ1FzZ0FpQUZOZ0lJSUFJZ0F6WUNBQ0FDSUFNZ0Jtb2lBellDQkFzZ0F5QUFJQUVRQ3hvZ0FpQUNLQUlFSUFGcU5nSUVJQUVMUmdFQ2Z5QUNLQUlBSUFJb0FnaHFJZ1FnQWlnQ0JDSURSZ1JBUVg4UEN5QUFJQU1nQkNBRGF5SUFJQUVnQUNBQlNSc2lBQkFMR2lBQ0lBSW9BZ1FnQUdvMkFnUWdBQXVxQWdFRWZ5TUFRUkJySWdRa0FBSkFJQUFvQW5RTkFDQUNRUUZOQkVBZ0EwRUJRZnpCQUVFQUVBZ01BUXNnQVNBRVFReHFRUUlRQ2lBRUtBSU1JZ1pCLy84RGNTSUhSUVJBSUFOQkFVR2R3Z0JCQUJBSURBRUxJQUlnQjBFR2JFRUNha2tFUUNBRFFRRkIvTUVBUVFBUUNBd0JDeUFHUVFac0VBMGlBMFVOQUNBQVFRZ1FEU0lDTmdKMElBSkZCRUFnQXhBSkRBRUxJQUlnQXpZQ0FDQUNJQVF2QVF3aUFqc0JCQ0FDUlFSQVFRRWhCUXdCQzBFQUlRSURRQ0FCUVFKcUlBUkJER29pQlVFQ0VBb2dBeUFDUVFac2FpSUdJQVFvQWd3N0FRQWdBVUVFYWlBRlFRSVFDaUFHSUFRb0FndzdBUUlnQVVFR2FpSUJJQVZCQWhBS0lBWWdCQ2dDRERzQkJFRUJJUVVnQWtFQmFpSUNJQUFvQW5RdkFRUkpEUUFMQ3lBRVFSQnFKQUFnQlF2d0FRRUZmeU1BUVJCcklnUWtBQUovSUFBb0FuZ2lCVVVFUUNBRFFRRkJ6c0VBUVFBUUNFRUFEQUVMSUFVb0Fnd0VRQ0FEUVFGQnR0VUFRUUFRQ0VFQURBRUxJQUlnQlMwQUVpSUZRUUowSWdaSkJFQWdBMEVCUWEzQkFFRUFFQWhCQUF3QkMwRUFJQVlRRFNJQ1JRMEFHaUFGQkVCQkFDRURBMEFnQVNBRVFReHFJZ2RCQWhBS0lBSWdBMEVDZEdvaUJpQUVLQUlNT3dFQUlBRkJBbW9nQjBFQkVBb2dCaUFFS0FJTU9nQUNJQUZCQTJvZ0IwRUJFQW9nQmlBRUtBSU1PZ0FESUFGQkJHb2hBU0FEUVFGcUlnTWdCVWNOQUFzTElBQW9BbmdnQWpZQ0RFRUJDeUVJSUFSQkVHb2tBQ0FJQy9BREFRbC9Jd0JCRUdzaUJTUUFBa0FnQWtFRFNRMEFJQUFvQW5nTkFDQUJJQVZCREdwQkFoQUtJQVV2QVF3aUNVR0JDR3RCLzNkTkJFQWdCU0FKTmdJQUlBTkJBVUcwR2lBRkVBZ01BUXNnQVVFQ2FpQUZRUXhxUVFFUUNpQUZMd0VNSWdoRkJFQWdBMEVCUWRRWFFRQVFDQXdCQ3lBSVFRTnFJQUpMRFFBZ0NDQUpiRUVDZEJBTklnZEZEUUFnQ0JBTklncEZCRUFnQnhBSkRBRUxJQWdRRFNJTFJRUkFJQWNRQ1NBS0VBa01BUXRCRkJBTklnWkZCRUFnQnhBSklBb1FDU0FMRUFrTUFRc2dBVUVEYWlFRElBWWdDallDQ0NBR0lBczJBZ1FnQmlBSk93RVFJQVlnQnpZQ0FDQUZLQUlNSVF3Z0JrRUFOZ0lNSUFZZ0REb0FFaUFBSUFZMkFuZ0RRQ0FESUFWQkRHcEJBUkFLSUFRZ0Ntb2dCUzBBREVIL0FIRkJBV282QUFBZ0JDQUxhaUFGS0FJTVFZQUJjVUVIZGpvQUFDQURRUUZxSVFNZ0JFRUJhaUlFSUFoSERRQUxJQWxGQkVCQkFTRUVEQUVMUVFBaEJnTkFRUUFoQkVFQUlRQURRQ0FDUVFRZ0JDQUthaTBBQUVFSGFrRURkaUlFSUFSQkJFOGJJZ1FnQXlBQmEycElCRUJCQUNFRURBTUxJQU1nQlVFTWFpQUVFQW9nQnlBRktBSU1OZ0lBSUFkQkJHb2hCeUFESUFScUlRTWdBRUVCYWlJQVFmLy9BM0VpQkNBSVNRMEFDMEVCSVFRZ0JrRUJhaUlHUWYvL0EzRWdDVWtOQUFzTElBVkJFR29rQUNBRUM1Z0JBUUovSXdCQkVHc2lCU1FBSUFBb0FoZ2lCRUgvQVVjRVFDQUZJQVEyQWdBZ0EwRUNRZVFUSUFVUUNBc0NRQUpBSUFJZ0FDZ0NGRVlFUUNBQ0RRRkJBU0VFREFJTFFRQWhCQ0FEUVFGQnkrd0FRUUFRQ0F3QkMwRUFJUUlEUUVFQklRUWdBU0FBS0FKSUlBSkJER3hxUVFocVFRRVFDaUFCUVFGcUlRRWdBa0VCYWlJQ0lBQW9BaFJKRFFBTEN5QUZRUkJxSkFBZ0JBdU9CZ0VHZnlNQVFkQUFheUlFSkFBQ1FDQUNRUUpOQkVBZ0EwRUJRYXZzQUVFQUVBZ01BUXNnQUMwQWZBUkFJQU5CQkVISjBnQkJBQkFJUVFFaEJnd0JDMEVCSVFZZ0FTQUFRU2hxUVFFUUNpQUJRUUZxSUFCQk5HcEJBUkFLSUFGQkFtb2dBRUVzYWtFQkVBb2dBVUVEYWlFRkFrQUNRQUpBQWtBQ1FDQUFLQUlvSWdkQkFXc09BZ0FCQWdzZ0FrRUdUUVJBSUFRZ0FqWUNFQ0FEUVFGQjBQRUFJQVJCRUdvUUNFRUFJUVlNQlFzQ1FDQUNRUWRHRFFBZ0FDZ0NNRUVPUmcwQUlBUWdBallDTUNBRFFRSkIwUEVBSUFSQk1Hb1FDQXNnQlNBQVFUQnFRUVFRQ2lBQUtBSXdRUTVIRFFOQkpCQU5JZ1ZGQkVCQkFDRUdJQU5CQVVHelBFRUFFQWdNQlFzZ0JVRU9OZ0lBSUFSQkFEWUNRQ0FFUVFBMkFqZ2dCRUVBTmdKSUlBUkJBRFlDUENBRVFRQTJBa1FnQkVFQU5nSk1RYkRxa0FJaEJpQUVRYkRxa0FJMkFqUWdCVUdBakpXaUJEWUNCQUovSUFKQkIwY0VRQ0FDUVNOR0JFQWdBVUVIYWlBRVFjd0Fha0VFRUFvZ0FVRUxhaUFFUWNnQWFrRUVFQW9nQVVFUGFpQUVRY1FBYWtFRUVBb2dBVUVUYWlBRVFVQnJRUVFRQ2lBQlFSZHFJQVJCUEdwQkJCQUtJQUZCRzJvZ0JFRTRha0VFRUFvZ0FVRWZhaUFFUVRScVFRUVFDaUFGUVFBMkFnUWdCQ2dDTkNFR0lBUW9BamdoQWlBRUtBSkFJUU1nQkNnQ1BDRUhJQVFvQWtRaENDQUVLQUpNSVFrZ0JDZ0NTQXdDQ3lBRUlBSTJBaUFnQTBFQ1FmVHhBQ0FFUVNCcUVBZ0xRUUFoQWtFQUlRTkJBQ0VIUVFBTElRRWdCU0FITmdJWUlBVWdDRFlDRUNBRklBazJBZ2dnQlNBR05nSWdJQVVnQWpZQ0hDQUZJQU0yQWhRZ0JTQUJOZ0lNSUFCQkFEWUNjQ0FBSUFVMkFtd01Bd3NnQUNBQ1FRTnJJZ0UyQW5BZ0FFRUJJQUVRRENJRE5nSnNJQU5GRFFFZ0FrRURUQTBDUVFBaEFnTkFJQVVnQkVITUFHcEJBUkFLSUFBb0Ftd2dBbW9nQkNnQ1REb0FBQ0FGUVFGcUlRVWdBa0VCYWlJQ0lBRkhEUUFMREFJTElBZEJBMGtOQWlBRUlBYzJBZ0FnQTBFRVFldjNBQ0FFRUFnTUFndEJBQ0VHSUFCQkFEWUNjQXdCQzBFQklRWWdBRUVCT2dCOEN5QUVRZEFBYWlRQUlBWUx0QU1CQTM4akFFRWdheUlFSkFBQ1FDQUFLQUpJQkVBZ0EwRUNRWTAxUVFBUUNFRUJJUUlNQVFzZ0FrRU9Sd1JBUVFBaEFpQURRUUZCaXV3QVFRQVFDQXdCQ3lBQklBQkJFR3BCQkJBS0lBRkJCR29nQUVFTWFrRUVFQW9nQVVFSWFpQUFRUlJxUVFJUUNpQUFLQUlNSVFVQ1FDQUVBbjhnQUNnQ0VDSUdSUVJBSUFBb0FoUU1BUXNnQUNnQ0ZDSUNJQVZGRFFBYUlBSU5BVUVBQ3pZQ0NDQUVJQVkyQWdRZ0JDQUZOZ0lBSUFOQkFVSHU2Z0FnQkJBSVFRQWhBZ3dCQ3lBQ1FZR0FBV3RCLy85K1RRUkFRUUFoQWlBRFFRRkJtT29BUVFBUUNBd0JDeUFBSUFKQkRCQU1JZ0kyQWtnZ0FrVUVRRUVBSVFJZ0EwRUJRYjNxQUVFQUVBZ01BUXRCQVNFQ0lBRkJDbW9nQUVFWWFrRUJFQW9nQVVFTGFpQUFRUnhxUVFFUUNpQUFLQUljSWdWQkIwY0VRQ0FFSUFVMkFoQWdBMEVFUWEzNkFDQUVRUkJxRUFnTElBRkJER29nQUVFZ2FrRUJFQW9nQVVFTmFpQUFRU1JxUVFFUUNpQUFLQUlBSWdFZ0FTMEF2QUZCK3dGeElBQW9BaGhCL3dGR1FRSjBjam9BdkFFZ0FDZ0NBQ0lCSUFBb0FndzJBdGdCSUFFZ0FDZ0NFRFlDM0FFZ0FFRUJPZ0NGQVFzZ0JFRWdhaVFBSUFJTHVnUUJCbjhqQUVFUWF5SUdKQUFDZnlBQUxRQmtRUUp4UlFSQUlBTkJBVUhzMHdCQkFCQUlRUUFNQVFzZ0FFRUFOZ0pvQWtBQ1FBSkFJQUlFUUFOQUlBSkJCMDBFUUNBRFFRRkJ1UmxCQUJBSURBVUxJQUVnQmtFTWFpSUZRUVFRQ2lBR0tBSU1JUVFnQVVFRWFpQUZRUVFRQ2tFSUlRY2dCaWdDRENFRkFrQUNRQUpBQWtBZ0JBNENBUUFEQ3lBQ1FSQkpCRUJCNFJraEJBd0hDeUFCUVFocUlBWkJDR3BCQkJBS0lBWW9BZ2dFUUVITFBpRUVEQWNMSUFGQkRHb2dCa0VNYWtFRUVBb2dCaWdDRENJRURRRkJzaGdoQkF3R0N5QURRUUZCc2hoQkFCQUlEQVlMUVJBaEJ3c2dCQ0FIU1FSQUlBTkJBVUdHeEFCQkFCQUlEQVVMSUFJZ0JFa0VRQ0FEUVFGQnZzTUFRUUFRQ0VFQURBWUxBa0FDUUNBQUlBRWdCMm9nQkNBSGF5QURBbjhDUUFKQUFrQWdCVUh4MkwyYkJrd0VRQ0FGUWVQR3daTUdSZzBCSUFWQjVzcVJtd1pHRFFNZ0JVSHd3cldiQmtjTkJVSHd3QUVNQkFzZ0JVSHkySTJEQjBZTkFVSFF3QUVnQlVIeXlLSExCa1lOQXhvZ0JVSHkyTDJiQmtjTkJFSFl3QUVNQXd0QjRNQUJEQUlMUWVqQUFRd0JDMEg0d0FFTEtBSUVFUUVBRFFGQkFBd0hDeUFBSUFBb0FtaEIvLy8vL3dkeU5nSm9DMEVCSUFnZ0JVSHl5S0hMQmtZYklRZ2dBU0FFYWlFQklBSWdCR3NpQWcwQUN5QUlEUUVMSUFOQkFVSGF3Z0JCQUJBSVFRQU1Bd3NnQUVFQk9nQ0VBU0FBSUFBb0FtUkJCSEkyQW1SQkFRd0NDeUFEUVFFZ0JFRUFFQWdMSUFOQkFVR2VEa0VBRUFoQkFBc2hDU0FHUVJCcUpBQWdDUXZpQVFFQmZ5QUFLQUprUVFGSEJFQWdBMEVCUVpuVUFFRUFFQWhCQUE4TEFrQWdBa0VIVFFSQURBRUxJQUVnQUVFNGFrRUVFQW9nQVVFRWFpQUFRVHhxUVFRUUNpQUNRUU54QkVBTUFRc2dBQ0FDUVFocklnSkJBbllpQkRZQ1FBSkFJQUpGRFFBZ0FDQUVRUVFRRENJQ05nSkVJQUpGQkVBZ0EwRUJRYWtRUVFBUUNFRUFEd3NnQUNnQ1FFVU5BQ0FCUVFocUlRTkJBQ0VDQTBBZ0F5QUFLQUpFSUFKQkFuUnFRUVFRQ2lBRFFRUnFJUU1nQWtFQmFpSUNJQUFvQWtCSkRRQUxDeUFBSUFBb0FtUkJBbkkyQW1SQkFROExJQU5CQVVHcUxVRUFFQWhCQUF2RUFRRUNmeUFBSUFBb0FpQWlCRFlDSkFKQUlBQW9BakFpQXdSQUEwQWdCQ0FESUFBb0FnQWdBQ2dDRkJFQUFDSURRWDlHRFFJZ0FDQUFLQUlrSUFOcUlnUTJBaVFnQUNBQUtBSXdJQU5ySWdNMkFqQWdBdzBBQ3lBQUtBSWdJUVFMSUFCQkFEWUNNQ0FBSUFRMkFpUWdBU0FBS0FJQUlBQW9BaHdSQ1FCRkJFQWdBQ0FBS0FKRVFRaHlOZ0pFUVFBUEN5QUFJQUUzQXpoQkFROExJQUFnQUNnQ1JFRUljallDUkNBQ1FRUkJrZlVBUVFBUUNDQUFJQUFvQWtSQkNISTJBa1JCQUF1Q0FRRUNmeU1BUVJCcklnUWtBQUovSUFBb0FtUUVRQ0FEUVFGQnR0TUFRUUFRQ0VFQURBRUxJQUpCQkVjRVFDQURRUUZCemkxQkFCQUlRUUFNQVFzZ0FTQUVRUXhxUVFRUUNpQUVLQUlNUVlxT3F1Z0FSd1JBSUFOQkFVSDJKVUVBRUFoQkFBd0JDeUFBSUFBb0FtUkJBWEkyQW1SQkFRc2hCU0FFUVJCcUpBQWdCUXNOQUNBQUtBSUFJQUVnQWhBK0N3a0FJQUFvQWdBUVF3c0pBQ0FBS0FJQUVFSUxEUUFnQUNnQ0FDQUJJQUlRUlF0QkFRRi9JQUlFZnlBRFFRSkJ0c3NBUVFBUUNDQUFLQUlBSUFFZ0FpQURJQVFRUDBVRVFDQURRUUZCcVM5QkFCQUlRUUFQQ3lBQUlBSWdBeEJxQlVFQUN3c1ZBQ0FBS0FJQUlBRWdBaUFESUFRZ0JTQUdFRWNMRHdBZ0FDZ0NBQ0FCSUFJZ0F4QklDeE1BSUFBb0FnQWdBU0FDSUFNZ0JDQUZFQ1FMSFFBZ0FDZ0NBQ0FCSUFJZ0F5QUVJQVVnQmlBSElBZ2dDU0FLRUNBTDZnUUJCMzhDUUNBQktBSUlRVFVnQXhBZVJRMEFJQUVvQWdRaUJ5Z0NBQ0VGSUFjb0FnZ2hCQUpBSUFVRVFFRUJJUVlnQlVFQlJ3UkFJQVZCZm5FaENnTkFBbjlCQUNBR1JRMEFHa0VBSUFFZ0FDQURJQVFvQWdBUkFBQkZEUUFhSUFFZ0FDQURJQVFvQWdRUkFBQkJBRWNMSVFZZ0JFRUlhaUVFSUFsQkFtb2lDU0FLUncwQUN3c0NRQ0FGUVFGeEJFQWdCa1VOQVNBQklBQWdBeUFFS0FJQUVRQUFRUUJISVFZTElBZEJBRFlDQUNBR1JRMEREQUlMSUFkQkFEWUNBRUVBRHdzZ0IwRUFOZ0lBQ3lBQktBSUlJZ2NvQWdBaEJTQUhLQUlJSVFRQ1FBSkFBbjhDUUNBRkJFQkJBU0VHSUFWQkFYRWhDQ0FGUVFGSERRRkJBQXdDQ3lBSFFRQTJBZ0FNQWdzZ0JVRitjU0VGUVFBaENRTkFBbjlCQUNBR1JRMEFHa0VBSUFFZ0FDQURJQVFvQWdBUkFBQkZEUUFhSUFFZ0FDQURJQVFvQWdRUkFBQkJBRWNMSVFZZ0JFRUlhaUVFSUFsQkFtb2lDU0FGUncwQUN5QUdSUXNoQlNBSUJFQWdCUTBDSUFFZ0FDQURJQVFvQWdBUkFBQkJBRWNoQmdzZ0IwRUFOZ0lBUVFBaENDQUdSUTBDQ3lBQkxRQ0VBVVVFUUNBRFFRRkJ6ZFlBUVFBUUNFRUFEd3NnQVMwQWhRRkZCRUFnQTBFQlFiRFdBRUVBRUFoQkFBOExJQUFnQVNnQ0FDQUNJQU1RU1NFSUlBSkZEUUVnQWlnQ0FDSUFSUTBCUVFFaEJBSkFBa0FDUUFKQUFrQUNRQ0FCS0FJd1FReHJEZzBEQkFRRUJRQUJCQVFFQkFRQ0JBdEJBaUVFREFRTFFRTWhCQXdEQzBFRUlRUU1BZ3RCQlNFRURBRUxRWDhoQkFzZ0FDQUVOZ0lVSUFFb0Ftd2lBMFVOQVNBQUlBTTJBaHdnQWlnQ0FDQUJLQUp3TmdJZ0lBRkJBRFlDYkNBSUR3c2dCMEVBTmdJQVFRQWhDQXNnQ0F2a0NRSUtmd0YrSXdCQjhBQnJJZ01rQUVHQUNDRUlBbjhDUUVFQlFZQUlFQXdpQmdSQUlBTkIzQUJxSVFzZ0EwSHNBR29oQ1FOQUFrQUNRQUpBSUFFZ0EwSG9BR29pQkVFSUlBSVFFa0VJUncwQUlBUWdBMEhZQUdwQkJCQUtJQWtnQzBFRUVBcEJDQ0VGQWtBQ1FBSkFBa0FDUUNBREtBSllEZ0lBQVFRTElBRXBBd2dpRFZBRWZrSUFCU0FOSUFFcEF6aDlDeUlOUXZqLy8vOFBVdzBCSUFKQkFVSExQa0VBRUFnTUJBc2dBU0FEUWVnQWFpSUVRUWdnQWhBU1FRaEhEUU1nQkNBRFFlUUFha0VFRUFvZ0F5Z0NaRVVOQVNBQ1FRRkJ5ejVCQUJBSURBTUxJQU1nRGFkQkNHbzJBbGdNQVFzZ0NTQURRZGdBYWtFRUVBcEJFQ0VGQ3lBREtBSmNJZ1JCNCtUQTB3WkdCRUFnQUNnQ1pDSUJRUVJ4QkVBZ0FDQUJRUWh5TmdKa0RBSUxJQUpCQVVHdEswRUFFQWdnQmhBSlFRQU1Cd3NnQXlnQ1dDSUhSUVJBSUFKQkFVR3lHRUVBRUFnZ0JoQUpRUUFNQndzZ0JTQUhTd1JBSUFNZ0JEWUNCQ0FESUFjMkFnQWdBa0VCUVlyb0FDQURFQWdNQmdzQ1FBSi9BbjhDUUFKL0FrQUNRQUpBQWtBQ1FDQUVRZkhZdlpzR1RBUkFJQVJCNDhiQmt3WkdEUUlnQkVIbXlwR2JCa1lOQkNBRVFmREN0WnNHUncwQlFmREFBUXdHQ3lBRVFaL0F3TklHVEFSQUlBUkI4dGk5bXdaR0RRVkIwTUFCSUFSQjhzaWh5d1pHRFFZYUlBUkI4UExSc3daSERRRkJ1TUFCREFnTElBUkI4dGlOZ3dkR0RRSWdCRUdnd01EU0JrWU5Ca0hBd0FFZ0JFSG81TURUQmtZTkJ4b0xJQUFvQW1RaUJFRUJjUTBJSUFKQkFVSDhEa0VBRUFnZ0JoQUpRUUFNRHd0QjRNQUJEQU1MUWVqQUFRd0NDMEg0d0FFTUFRdEIyTUFCQ3lFS0lBTWdCRUgvQVhFMkFrd2dBeUFFUVJoMk5nSkFJQU1nQkVFSWRrSC9BWEUyQWtnZ0F5QUVRUkIyUWY4QmNUWUNSQ0FDUVFKQnlRNGdBMEZBYXhBSUlBY2dCV3NpQlNBQUxRQmtRUVJ4RFFJYUlBTWdBeWdDWENJRVFSaDJOZ0l3SUFNZ0JFSC9BWEUyQWp3Z0F5QUVRUkIyUWY4QmNUWUNOQ0FESUFSQkNIWkIvd0Z4TmdJNElBSkJBa0hhTXlBRFFUQnFFQWdnQUNBQUtBSmtRZi8vLy84SGNqWUNaQ0FCSUFXdElnMGdBaUFCS0FJb0VRZ0FJQTFSRFFjZ0FrRUJRWkljUVFBUUNDQUdFQWxCQUF3S0MwR3d3QUVMSVFvZ0J5QUZhd3NoQlNBQktRTUlJZzFRQkg1Q0FBVWdEU0FCS1FNNGZRc2dCYTFUQkVBZ0F5Z0NXQ0VFSUFNb0Fsd2hBQ0FESUFFcEF3Z2lEVkFFZmtJQUJTQU5JQUVwQXpoOUN6NENLQ0FESUFVMkFpUWdBeUFBUWY4QmNUWUNJQ0FESUFCQkdIWTJBaFFnQXlBRU5nSVFJQU1nQUVFSWRrSC9BWEUyQWh3Z0F5QUFRUkIyUWY4QmNUWUNHQ0FDUVFGQjNmVUFJQU5CRUdvUUNBd0hDeUFGSUFoTkJFQWdCaUVFREFRTElBVWhDQ0FHSUFVUUVDSUVEUU1nQmhBSklBSkJBVUgvRDBFQUVBaEJBQXdIQ3lBRVFRSnhSUVJBSUFKQkFVSENEMEVBRUFnZ0JoQUpRUUFNQndzZ0FDQUVRZi8vLy84SGNqWUNaQ0FCSUFjZ0JXdXRJZzBnQWlBQktBSW9FUWdBSUExUkRRTWdBQzBBWkVFSWNVVU5BU0FDUVFKQmtoeEJBQkFJQ3lBR0VBbEJBUXdGQ3lBQ1FRRkJraHhCQUJBSUlBWVFDVUVBREFRTElBRWdCQ0FGSUFJUUVpQUZSd1JBSUFKQkFVSEVIRUVBRUFnZ0JCQUpRUUFNQkFzZ0FDQUVJZ1lnQlNBQ0lBb29BZ1FSQVFBTkFBc2dCQkFKUVFBTUFnc2dBa0VCUWFJbFFRQVFDRUVBREFFTElBWVFDVUVBQ3lFTUlBTkI4QUJxSkFBZ0RBdm1BUUVHZnlBQUtBSUlRVFVnQWhBZUJFQUNRQ0FBS0FJSUlnWW9BZ0FoQXlBR0tBSUlJUVVDUUFKQUFuOENRQ0FEQkVCQkFTRUVJQU5CQVhFaEJ5QURRUUZIRFFGQkFBd0NDeUFHUVFBMkFnQU1BZ3NnQTBGK2NTRURBMEFDZjBFQUlBUkZEUUFhUVFBZ0FDQUJJQUlnQlNnQ0FCRUFBRVVOQUJvZ0FDQUJJQUlnQlNnQ0JCRUFBRUVBUndzaEJDQUZRUWhxSVFVZ0NFRUNhaUlJSUFOSERRQUxJQVJGQ3lFRElBY0VRQ0FERFFJZ0FDQUJJQUlnQlNnQ0FCRUFBRUVBUnlFRUN5QUdRUUEyQWdBZ0JFVU5BZ3NnQUNnQ0FCcEJBUThMSUFaQkFEWUNBQXNMUVFBTENnQWdBQ2dDQUJwQkFBc1VBQ0FBS0FJQUlnQUVRQ0FBSUFFMkFyZ0JDd3NoQUNBQUtBSUFJQUVRVENBQVFRQTZBSHdnQUNBQktBSzRRRUVCY1RZQ2dBRUxNZ0FnQWtVRVFFRUFEd3NnQUNnQ0FDQUJJQUlnQXhCQlJRUkFJQU5CQVVHcEwwRUFFQWhCQUE4TElBQWdBaUFERUdvTGFRSUNmd0Y4SXdCQkVHc2lBeVFBSUFJRVFBTkFJQUFnQTBFSWFoQTlJQUVDZnlBREt3TUlJZ1daUkFBQUFBQUFBT0JCWXdSQUlBV3FEQUVMUVlDQWdJQjRDellDQUNBQlFRUnFJUUVnQUVFSWFpRUFJQVJCQVdvaUJDQUNSdzBBQ3dzZ0EwRVFhaVFBQzRRQkFnSi9BWDBqQUVFUWF5SURKQUFnQWdSQUEwQWdBeUFBTFFBQU9nQVBJQU1nQUMwQUFUb0FEaUFESUFBdEFBSTZBQTBnQXlBQUxRQURPZ0FNSUFFQ2Z5QURLZ0lNSWdXTFF3QUFBRTlkQkVBZ0JhZ01BUXRCZ0lDQWdIZ0xOZ0lBSUFGQkJHb2hBU0FBUVFScUlRQWdCRUVCYWlJRUlBSkhEUUFMQ3lBRFFSQnFKQUFMU3dFQ2Z5TUFRUkJySWdNa0FDQUNCRUFEUUNBQUlBTkJER3BCQkJBS0lBRWdBeWdDRERZQ0FDQUJRUVJxSVFFZ0FFRUVhaUVBSUFSQkFXb2lCQ0FDUncwQUN3c2dBMEVRYWlRQUMwc0JBbjhqQUVFUWF5SURKQUFnQWdSQUEwQWdBQ0FEUVF4cVFRSVFDaUFCSUFNb0FndzJBZ0FnQVVFRWFpRUJJQUJCQW1vaEFDQUVRUUZxSWdRZ0FrY05BQXNMSUFOQkVHb2tBQXRLQVFKL0l3QkJFR3NpQXlRQUlBSUVRQU5BSUFBZ0EwRUlhaEE5SUFFZ0F5c0RDTFk0QWdBZ0FVRUVhaUVCSUFCQkNHb2hBQ0FFUVFGcUlnUWdBa2NOQUFzTElBTkJFR29rQUF0b0FRSi9Jd0JCRUdzaUF5UUFJQUlFUUFOQUlBTWdBQzBBQURvQUR5QURJQUF0QUFFNkFBNGdBeUFBTFFBQ09nQU5JQU1nQUMwQUF6b0FEQ0FCSUFNcUFndzRBZ0FnQVVFRWFpRUJJQUJCQkdvaEFDQUVRUUZxSWdRZ0FrY05BQXNMSUFOQkVHb2tBQXRNQVFKL0l3QkJFR3NpQXlRQUlBSUVRQU5BSUFBZ0EwRU1ha0VFRUFvZ0FTQURLQUlNc3pnQ0FDQUJRUVJxSVFFZ0FFRUVhaUVBSUFSQkFXb2lCQ0FDUncwQUN3c2dBMEVRYWlRQUMwd0JBbjhqQUVFUWF5SURKQUFnQWdSQUEwQWdBQ0FEUVF4cVFRSVFDaUFCSUFNb0FneXpPQUlBSUFGQkJHb2hBU0FBUVFKcUlRQWdCRUVCYWlJRUlBSkhEUUFMQ3lBRFFSQnFKQUFMcWdnQ0RYOEJleU1BUVJCcklnZ2tBQUovSUFBb0FnaEJFRVlFUUNBQUtBS2NBU0FBS0FMTUFVR01MR3hxREFFTElBQW9BZ3dMSVFrQ1FDQUNSUVJBSUFOQkFVSHdIMEVBRUFnTUFRc2dBQ2dDU0NFR1FRRWhCQ0FCSUFoQkNHcEJBUkFLSUFnb0FnZ2lCVUVDVHdSQUlBTkJBa0hIeHdCQkFCQUlEQUVMSUFJZ0JVRUJha2NFUUVFQUlRUWdBMEVDUWZBZlFRQVFDQXdCQ3dKQUlBWW9BaEFpQTBVTkFDQUpLQUxRS3lFRUlBTkJDRThFUUNBRFFYaHhJUVpCQUNFQ0EwQWdCRUVBTmdLOFF5QUVRUUEyQW9RN0lBUkJBRFlDekRJZ0JFRUFOZ0tVS2lBRVFRQTJBdHdoSUFSQkFEWUNwQmtnQkVFQU5nTHNFQ0FFUVFBMkFyUUlJQVJCd01NQWFpRUVJQUpCQ0dvaUFpQUdSdzBBQ3dzZ0EwRUhjU0lEUlEwQVFRQWhBZ05BSUFSQkFEWUN0QWdnQkVHNENHb2hCQ0FDUVFGcUlnSWdBMGNOQUFzTElBa29BdWdySWdJRWZ5QUNFQWtnQ1VFQU5nTG9LeUFJS0FJSUJTQUZDMFVFUUVFQklRUU1BUXNEUUNBQlFRRnFJZ0VnQ0VFTWFrRUJFQW9DUUNBSktBS0FMRVVOQUNBSktBTDhLeUlES0FJQUlBZ29BZ3hIRFFBZ0F5Z0NCQ0lGSUFBb0FrZ2lCaWdDRUVjTkFDQURLQUlJSWdJRVFFRUFJUVFnQWlnQ0VDQUZJQVZzSWdVZ0FpZ0NBRUVDZEVIZ3ZRRnFLQUlBYkVjTkF5QUpJQVZCQW5RUURTSUhOZ0xvS3lBSFJRMERJQUlvQWd3Z0J5QUZJQUlvQWdCQkFuUkJrTUFCYWlnQ0FCRUZBQXNnQXlnQ0RDSUNSUTBBUVFBaEJDQUNLQUlRSUFZb0FoQWlBeUFDS0FJQVFRSjBRZUM5QVdvb0FnQnNSdzBDSUFOQkFuUVFEU0lGUlEwQ0lBSW9BZ3dnQlNBRElBSW9BZ0JCQW5SQm9NQUJhaWdDQUJFRkFBSkFJQVlvQWhBaUIwVU5BQ0FKS0FMUUt5RUVRUUFoQ3dKQUFrQWdCMEVFU1EwQUlBUkJ0QWhxSWd3Z0JTQUhRUUowYWtrRVFDQUZJQVFnQjBHNENHeHFTUTBCQ3lBRVFkd2hhaUVOSUFSQnBCbHFJUTRnQkVIc0VHb2hEeUFGSUFkQmZIRWlCa0VDZEdvaEFpQUVJQVpCdUFoc2FpRUVRUUFoQXdOQUlBd2dBMEc0Q0d3aUNtb2dCU0FEUVFKMGF2MEFBZ0FpRWYxYUFnQUFJQW9nRDJvZ0VmMWFBZ0FCSUFvZ0Rtb2dFZjFhQWdBQ0lBb2dEV29nRWYxYUFnQURJQU5CQkdvaUF5QUdSdzBBQ3lBR0lBZEdEUUlNQVFzZ0JTRUNRUUFoQmdzZ0J5QUdJZ05yUVFkeElnb0VRQU5BSUFRZ0FpZ0NBRFlDdEFnZ0EwRUJhaUVESUFSQnVBaHFJUVFnQWtFRWFpRUNJQXRCQVdvaUN5QUtSdzBBQ3dzZ0JpQUhhMEY0U3cwQUEwQWdCQ0FDS0FJQU5nSzBDQ0FFSUFJb0FnUTJBdXdRSUFRZ0FpZ0NDRFlDcEJrZ0JDQUNLQUlNTmdMY0lTQUVJQUlvQWhBMkFwUXFJQVFnQWlnQ0ZEWUN6RElnQkNBQ0tBSVlOZ0tFT3lBRUlBSW9BaHcyQXJ4RElBUkJ3TU1BYWlFRUlBSkJJR29oQWlBRFFRaHFJZ01nQjBjTkFBc0xJQVVRQ1F0QkFTRUVJQkJCQVdvaUVDQUlLQUlJU1EwQUN3c2dDRUVRYWlRQUlBUUxCQUJDZnd1L0NRRUxmeU1BUVJCcklnVWtBQUovSUFBb0FnaEJFRVlFUUNBQUtBS2NBU0FBS0FMTUFVR01MR3hxREFFTElBQW9BZ3dMSVFjQ2Z5QUNRUUZOQkVBZ0EwRUJRZGdqUVFBUUNFRUFEQUVMSUFFZ0JVRU1ha0VDRUFvZ0JTZ0NEQVJBSUFOQkFrSHdMRUVBRUFoQkFRd0JDeUFDUVFaTkJFQWdBMEVCUWRnalFRQVFDRUVBREFFTElBRkJBbW9nQlVFSWFrRUJFQW9nQnlnQy9Dc2lDU0VBQWtBQ1FBSkFJQWNvQW9Bc0lnWkZEUUFnQlNnQ0NDRUlBMEFnQUNnQ0FDQUlSZzBCSUFCQkZHb2hBQ0FFUVFGcUlnUWdCa2NOQUFzTUFRc2dCQ0FHUncwQkN5QUhLQUtFTENBR1JnUi9JQWNnQmtFS2FpSUFOZ0tFTENBSklBQkJGR3dRRUNJQVJRUkFJQWNvQXZ3ckVBa2dCMEVBTmdLRUxDQUhRZ0EzQXZ3cklBTkJBVUh5STBFQUVBaEJBQXdEQ3lBSElBQTJBdndySUFBZ0J5Z0NnQ3dpQkVFVWJHcEJBQ0FIS0FLRUxDQUVhMEVVYkJBT0dpQUhLQUw4S3lFSklBY29Bb0FzQlNBR0MwRVViQ0FKYWlFQVFRRWhDd3NnQUNBRktBSUlOZ0lBSUFGQkEyb2dCVUVNYWtFQ0VBb2dCU2dDREFSQUlBTkJBa0h3TEVFQUVBaEJBUXdCQ3lBQlFRVnFJQVZCQkdwQkFoQUtJQVVvQWdRaUJFRUNUd1JBSUFOQkFrR29GMEVBRUFoQkFRd0JDeUFDUVFkcklRWWdCQVJBSUFGQkIyb2hBa0VBSVFrRFFDQUdRUUpOQkVBZ0EwRUJRZGdqUVFBUUNFRUFEQU1MSUFJZ0JVRU1ha0VCRUFvZ0JTZ0NERUVCUndSQUlBTkJBa0d5S2tFQUVBaEJBUXdEQ3lBQ1FRRnFJQVZCQWhBS0lBQWdCU2dDQUNJRVFmLy9BWEVpQVRZQ0JDQUdRUU5ySWdnZ0JFRVBka0VCYWlJR0lBRnNRUUpxSWdwSkJFQWdBMEVCUWRnalFRQVFDRUVBREFNTElBSkJBMm9oQWtFQUlRUWdBUVJBQTBBZ0FpQUZRUXhxSUFZUUNpQUVJQVVvQWd4SEJFQWdBMEVDUWRvdlFRQVFDRUVCREFVTElBSWdCbW9oQWlBRVFRRnFJZ1FnQUNnQ0JFa05BQXNMSUFJZ0JVRUNFQW9nQlNBRktBSUFJZ1JCLy84QmNTSUJOZ0lBSUFBb0FnUWdBVWNFUUNBRFFRSkIyQmhCQUJBSVFRRU1Bd3NnQ0NBS2F5SUtJQVJCRDNaQkFXb2lCaUFCYkVFRGFpSU1TUVJBSUFOQkFVSFlJMEVBRUFoQkFBd0RDeUFDUVFKcUlRSkJBQ0VFSUFFRVFBTkFJQUlnQlVFTWFpQUdFQW9nQkNBRktBSU1Sd1JBSUFOQkFrSGFMMEVBRUFoQkFRd0ZDeUFDSUFacUlRSWdCRUVCYWlJRUlBQW9BZ1JKRFFBTEN5QUNJQVZCREdwQkF4QUtJQVVvQWd3aEJpQUFRZ0EzQWdnZ0FDQUdRWUNBQkhGRklBQXRBQkJCL2dGeGNqb0FFQ0FGSUFaQi93RnhJZ2cyQWdnQ1FDQUlSUTBBSUFjb0F2UXJJZzBFUUNBSEtBTHdLeUVFUVFBaEFRTkFJQWdnQkNnQ0NFWUVRQ0FBSUFRMkFnZ01Bd3NnQkVFVWFpRUVJQUZCQVdvaUFTQU5SdzBBQ3dzZ0EwRUJRZGdqUVFBUUNFRUFEQU1MSUFVZ0JrRUlka0gvQVhFaUJqWUNDQUpBSUFaRkRRQWdCeWdDOUNzaUNBUkFJQWNvQXZBcklRUkJBQ0VCQTBBZ0JpQUVLQUlJUmdSQUlBQWdCRFlDREF3REN5QUVRUlJxSVFRZ0FVRUJhaUlCSUFoSERRQUxDeUFEUVFGQjJDTkJBQkFJUVFBTUF3c2dDaUFNYXlFR0lBSkJBMm9oQWlBSlFRRnFJZ2tnQlNnQ0JFa05BQXNMSUFZRVFDQURRUUZCMkNOQkFCQUlRUUFNQVF0QkFTQUxSUTBBR2lBSElBY29Bb0FzUVFGcU5nS0FMRUVCQ3lFT0lBVkJFR29rQUNBT0MvVUJBUVYvSXdCQkVHc2lCQ1FBQWtBZ0FpQUFLQUpJS0FJUUlnWkJBbXBIQkVBZ0EwRUJRZkFpUVFBUUNBd0JDeUFCSUFSQkRHcEJBaEFLSUFZZ0JDZ0NERWNFUUNBRFFRRkI4Q0pCQUJBSURBRUxJQVpGQkVCQkFTRUZEQUVMSUFGQkFtb2hBaUFBS0FKSUtBSVlJUUJCQUNFQkEwQWdBaUFFUVFocVFRRVFDaUFBSUFRb0FnZ2lCVUgvQUhFaUIwRUJhaUlJTmdJWUlBQWdCVUVIZGtFQmNUWUNJQ0FIUVI5UEJFQWdCQ0FJTmdJRUlBUWdBVFlDQUNBRFFRRkJ4L01BSUFRUUNFRUFJUVVNQWdzZ0FFRTBhaUVBUVFFaEJTQUNRUUZxSVFJZ0FVRUJhaUlCSUFaSERRQUxDeUFFUVJCcUpBQWdCUXVZQlFFS2Z5TUFRUkJySWdja0FBSi9JQUFvQWdoQkVFWUVRQ0FBS0FLY0FTQUFLQUxNQVVHTUxHeHFEQUVMSUFBb0Fnd0xJUVVDZnlBQ1FRRk5CRUFnQTBFQlFmRWVRUUFRQ0VFQURBRUxJQUVnQjBFTWFrRUNFQW9DUUNBSEtBSU1CRUFnQTBFQ1FZWWJRUUFRQ0F3QkN5QUNRUVpOQkVBZ0EwRUJRZkVlUVFBUUNFRUFEQUlMSUFGQkFtb2dCMEVNYWtFQ0VBb2dCU2dDOENzaEJDQUhMUUFNSVFvQ1FBSkFBa0FnQlNnQzlDc2lCa1VFUUNBRUlRQU1BUXNnQkNFQUEwQWdBQ2dDQ0NBS1JnMEJJQUJCRkdvaEFDQUlRUUZxSWdnZ0JrY05BQXNNQVFzZ0JpQUlSdzBCQ3lBRktBTDRLeUFHUmdSQUlBVWdCa0VLYWlJQU5nTDRLeUFFSUFCQkZHd1FFQ0VBSUFVb0F2QXJJUVFnQUVVRVFDQUVFQWtnQlVFQU5nTDRLeUFGUWdBM0F2QXJJQU5CQVVHTEgwRUFFQWhCQUF3RUN3SkFJQUFnQkVZTkFDQUZLQUtBTENJTFJRMEFJQVVvQXZ3cklReEJBQ0VJQTBBZ0RDQUlRUlJzYWlJR0tBSUlJZ2tFUUNBR0lBQWdDU0FFYTJvMkFnZ0xJQVlvQWd3aUNRUkFJQVlnQUNBSklBUnJhallDREFzZ0NFRUJhaUlJSUF0SERRQUxDeUFGSUFBMkF2QXJJQUFnQlNnQzlDc2lCRUVVYkdwQkFDQUZLQUw0S3lBRWEwRVViQkFPR2lBRktBTDBLeUVHSUFVb0F2QXJJUVFMSUFVZ0JrRUJhallDOUNzZ0JDQUdRUlJzYWlFQUN5QUFLQUlNSWdRRVFDQUVFQWtnQUVJQU53SU1DeUFBSUFvMkFnZ2dBQ0FIS0FJTUlnUkJDblpCQTNFMkFnQWdBQ0FFUVFoMlFRTnhOZ0lFSUFGQkJHb2dCMEVNYWtFQ0VBb2dCeWdDREFSQUlBTkJBa0c5RmtFQUVBZ01BUXNnQUNBQ1FRWnJJZ0lRRFNJRU5nSU1JQVJGQkVBZ0EwRUJRZkVlUVFBUUNFRUFEQUlMSUFRZ0FVRUdhaUFDRUFzYUlBQWdBallDRUF0QkFRc2hEU0FIUVJCcUpBQWdEUXNuQUVFQklRRWdBaUFBS0FKSUtBSVFRUUowUndSL0lBTkJBVUhYSVVFQUVBaEJBQVZCQVFzTHF3TUJCWDhqQUVFUWF5SUdKQUFDZnlBQ1FRRk5CRUFnQTBFQlFmMGRRUUFRQ0VFQURBRUxJQUF0QUx3QlFRRnhCRUFnQTBFQlFabmVBRUVBRUFoQkFBd0JDeUFBS0FLY0FTQUFLQUxNQVVHTUxHeHFJZ0FnQUMwQWlDeEJBbkk2QUlnc0lBRWdCa0VNYWtFQkVBb0NRQ0FBS0FLc0tDSUVSUVJBSUFBZ0JpZ0NERUVCYWlJRlFRZ1FEQ0lFTmdLc0tDQUVSUVJBSUFOQkFVR1hIa0VBRUFoQkFBd0RDeUFBSUFVMkFxZ29EQUVMSUFZb0Fnd2lCU0FBS0FLb0tFa05BQ0FFSUFWQkFXb2lCRUVEZEJBUUlnVkZCRUFnQTBFQlFaY2VRUUFRQ0VFQURBSUxJQUFnQlRZQ3JDZ2dCU0FBS0FLb0tDSUhRUU4wYWtFQUlBUWdCMnRCQTNRUURob2dBQ0FFTmdLb0tDQUFLQUtzS0NFRUN5QUVJQVlvQWd3aUJVRURkR29vQWdBRVFDQUdJQVUyQWdBZ0EwRUJRYjAxSUFZUUNFRUFEQUVMSUFKQkFXc2lBaEFOSVFRZ0FDZ0NyQ2dpQUNBR0tBSU1JZ1ZCQTNScUlBUTJBZ0FnQkVVRVFDQURRUUZCbHg1QkFCQUlRUUFNQVFzZ0FDQUZRUU4wYWlBQ05nSUVJQUFnQmlnQ0RFRURkR29vQWdBZ0FVRUJhaUFDRUFzYVFRRUxJUWdnQmtFUWFpUUFJQWdMOVFJQkJYOGpBRUVRYXlJR0pBQUNmeUFDUVFGTkJFQWdBMEVCUWFRZ1FRQVFDRUVBREFFTElBQWdBQzBBdkFGQkFYSTZBTHdCSUFFZ0JrRU1ha0VCRUFvQ1FDQUFLQUowSWdSRkJFQWdBQ0FHS0FJTVFRRnFJZ1ZCQ0JBTUlnUTJBblFnQkVVRVFDQURRUUZCdmlCQkFCQUlRUUFNQXdzZ0FDQUZOZ0p3REFFTElBWW9BZ3dpQlNBQUtBSndTUTBBSUFRZ0JVRUJhaUlFUVFOMEVCQWlCVVVFUUNBRFFRRkJ2aUJCQUJBSVFRQU1BZ3NnQUNBRk5nSjBJQVVnQUNnQ2NDSUhRUU4wYWtFQUlBUWdCMnRCQTNRUURob2dBQ0FFTmdKd0lBQW9BblFoQkFzZ0JDQUdLQUlNSWdWQkEzUnFLQUlBQkVBZ0JpQUZOZ0lBSUFOQkFVSFROU0FHRUFoQkFBd0JDeUFDUVFGcklnSVFEU0VFSUFBb0FuUWlBQ0FHS0FJTUlnVkJBM1JxSUFRMkFnQWdCRVVFUUNBRFFRRkJ2aUJCQUJBSVFRQU1BUXNnQUNBRlFRTjBhaUFDTmdJRUlBQWdCaWdDREVFRGRHb29BZ0FnQVVFQmFpQUNFQXNhUVFFTElRZ2dCa0VRYWlRQUlBZ0xvQUVCQkg4akFFRVFheUlFSkFBQ2Z5QUNSUVJBSUFOQkFVSFhIa0VBRUFoQkFBd0JDeUFCSUFSQkRHcEJBUkFLUVFFZ0FrRUJheUlGUlEwQUdrRUFJUUJCQUNFQ0EwQWdBVUVCYWlJQklBUkJDR3BCQVJBS0lBUW9BZ2dpQmtFWWRFRWZkU0FHUWY4QWNTQUNja0VIZEhFaEFpQUFRUUZxSWdBZ0JVY05BQXRCQVNBQ1JRMEFHaUFEUVFGQjF4NUJBQkFJUVFBTElRY2dCRUVRYWlRQUlBY0xHd0JCQVNFQUlBSUVmMEVCQlNBRFFRRkIvaUJCQUJBSVFRQUxDNEFCQVFGL0l3QkJFR3NpQUNRQVFRRWhCQUpBSUFKQkFVMEVRRUVBSVFRZ0EwRUJRZVFnUVFBUUNBd0JDeUFCSUFCQkRHcEJBUkFLSUFGQkFXb2dBRUVJYWtFQkVBb2dBa0VDYXlBQUtBSUlJZ0ZCQlhaQkFuRWdBVUVFZGtFRGNXcEJBbXB3UlEwQVFRQWhCQ0FEUVFGQjVDQkJBQkFJQ3lBQVFSQnFKQUFnQkFzRUFFRUFDd3Y1dXdFY0FFR0FDQXVoZFdOaGJtNXZkQ0JoYkd4dlkyRjBaU0J2Y0dwZmRHTmtYM05sWjE5a1lYUmhYMk5vZFc1clgzUXFJR0Z5Y21GNUFDMHJJQ0FnTUZnd2VBQXRNRmdyTUZnZ01GZ3RNSGdyTUhnZ01IZ0FWVzVyYm05M2JpQm1iM0p0WVhRQVJtRnBiR1ZrSUhSdklITmxkQ0IwYUdVZ1pHVmpiMlJsWkNCamIyMXdiMjVsYm5SekFFWmhhV3hsWkNCMGJ5QnpaWFIxY0NCMGFHVWdaR1ZqYjJSbGNnQkdZV2xzWldRZ2RHOGdjbVZoWkNCMGFHVWdhR1ZoWkdWeUFHNWhiZ0FxYkY5MGFXeGxYMnhsYmlBK0lGVkpUbFJmVFVGWUlDMGdUMUJLWDBOUFRVMVBUbDlEUWt4TFgwUkJWRUZmUlZoVVVrRWdMU0J3WDJveWF5MCtiVjl6Y0dWamFXWnBZMTl3WVhKaGJTNXRYMlJsWTI5a1pYSXViVjl6YjNSZmJHVnVaM1JvQUdsdVpnQkdZV2xzWldRZ2RHOGdaR1ZqYjJSbElIUm9aU0JwYldGblpRQkpiblpoYkdsa0lHRmpZMlZ6Y3lCMGJ5QndhUzArYVc1amJIVmtaUUJCVEV4ZlExQlZVd0JQVUVwZlRsVk5YMVJJVWtWQlJGTUFUa0ZPQUVsT1JnQndYMm95YXkwK2JWOXpjR1ZqYVdacFkxOXdZWEpoYlM1dFgyUmxZMjlrWlhJdWJWOXpiM1JmYkdWdVozUm9JRDRnVlVsT1ZGOU5RVmdnTFNCUFVFcGZRMDlOVFU5T1gwTkNURXRmUkVGVVFWOUZXRlJTUVFBSkNRa2djSEpsWTJOcGJuUnphWHBsSUNoM0xHZ3BQUUFKQ1FrZ2MzUmxjSE5wZW1WeklDaHRMR1VwUFFBdUFDaHVkV3hzS1FBb0pXUXNKV1FwSUFBbGMzMEtBQWtKSUgwS0FGdEVSVlpkSUVSMWJYQWdZVzRnYVcxaFoyVmZZMjl0Y0Y5b1pXRmtaWElnYzNSeWRXTjBJSHNLQUZ0RVJWWmRJRVIxYlhBZ1lXNGdhVzFoWjJWZmFHVmhaR1Z5SUhOMGNuVmpkQ0I3Q2dCSmJXRm5aU0JwYm1adklIc0tBQWtnWkdWbVlYVnNkQ0IwYVd4bElIc0tBQ1Z6Q1NCamIyMXdiMjVsYm5RZ0pXUWdld29BQ1FrZ1kyOXRjQ0FsWkNCN0NnQUpJRlJwYkdVZ2FXNWtaWGc2SUhzS0FBa2dUV0Z5YTJWeUlHeHBjM1E2SUhzS0FFTnZaR1Z6ZEhKbFlXMGdhVzVrWlhnZ1puSnZiU0J0WVdsdUlHaGxZV1JsY2pvZ2V3b0FRMjlrWlhOMGNtVmhiU0JwYm1adklHWnliMjBnYldGcGJpQm9aV0ZrWlhJNklIc0tBRk4wY21WaGJTQmxjbkp2Y2lCM2FHbHNaU0J5WldGa2FXNW5JRXBRTWlCSVpXRmtaWElnWW05NENnQkdiM1Z1WkNCaElHMXBjM0JzWVdObFpDQW5KV01sWXlWakpXTW5JR0p2ZUNCdmRYUnphV1JsSUdwd01tZ2dZbTk0Q2dCTllXeG1iM0p0WldRZ1NsQXlJR1pwYkdVZ1ptOXliV0YwT2lCbWFYSnpkQ0JpYjNnZ2JYVnpkQ0JpWlNCS1VFVkhJREl3TURBZ2MybG5ibUYwZFhKbElHSnZlQW9BVFdGc1ptOXliV1ZrSUVwUU1pQm1hV3hsSUdadmNtMWhkRG9nYzJWamIyNWtJR0p2ZUNCdGRYTjBJR0psSUdacGJHVWdkSGx3WlNCaWIzZ0tBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUdoaGJtUnNaU0JxY0dWbk1qQXdNQ0JpYjNnS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIZHBkR2dnUmxSWlVDQkNiM2dLQUVFZ2JXRnlhMlZ5SUVsRUlIZGhjeUJsZUhCbFkzUmxaQ0FvTUhobVppMHRLU0JwYm5OMFpXRmtJRzltSUNVdU9IZ0tBQWtKSUcxamREMGxlQW9BQ1FrSklHTmliR3R6ZEhrOUpTTjRDZ0FKQ1FrZ1kzTjBlVDBsSTNnS0FBa0pJSEJ5WnowbEkzZ0tBRWx1ZEdWblpYSWdiM1psY21ac2IzY0tBQWtnZEdSNFBTVjFMQ0IwWkhrOUpYVUtBQWtnZEhjOUpYVXNJSFJvUFNWMUNnQUpJSFI0TUQwbGRTd2dkSGt3UFNWMUNnQkpiblpoYkdsa0lHTnZiWEJ2Ym1WdWRDQnBibVJsZURvZ0pYVUtBRk4wY21WaGJTQjBiMjhnYzJodmNuUUtBRTFoY210bGNpQm9ZVzVrYkdWeUlHWjFibU4wYVc5dUlHWmhhV3hsWkNCMGJ5QnlaV0ZrSUhSb1pTQnRZWEpyWlhJZ2MyVm5iV1Z1ZEFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ1ptOXlJR04xY25KbGJuUWdjSEpsWTJsdVkzUWdZMjlrWldKc2IyTnJJR1ZzWlcxbGJuUUtBRVZ5Y205eUlISmxZV1JwYm1jZ1UxQkRiMlFnVTFCRGIyTWdaV3hsYldWdWRBb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFVXTmtJRzl5SUZOUlkyTWdaV3hsYldWdWRBb0FRU0JDVUVORElHaGxZV1JsY2lCaWIzZ2dhWE1nWVhaaGFXeGhZbXhsSUdGc2RHaHZkV2RvSUVKUVF5Qm5hWFpsYmlCaWVTQjBhR1VnU1VoRVVpQmliM2dnS0NWa0tTQnBibVJwWTJGMFpTQmpiMjF3YjI1bGJuUnpJR0pwZENCa1pYQjBhQ0JwY3lCamIyNXpkR0Z1ZEFvQVJYSnliM0lnZDJsMGFDQlRTVm9nYldGeWEyVnlPaUJwYkd4bFoyRnNJSFJwYkdVZ2IyWm1jMlYwQ2dCSmJuWmhiR2xrSUhCeVpXTnBibU4wQ2dCT2IzUWdaVzV2ZFdkb0lHMWxiVzl5ZVNCMGJ5Qm9ZVzVrYkdVZ1ltRnVaQ0J3Y21WamFXNTBjd29BUm1GcGJHVmtJSFJ2SUdSbFkyOWtaU0JoYkd3Z2RYTmxaQ0JqYjIxd2IyNWxiblJ6Q2dCVGFYcGxJRzltSUdOdlpHVWdZbXh2WTJzZ1pHRjBZU0JsZUdObFpXUnpJSE41YzNSbGJTQnNhVzFwZEhNS0FGTnBlbVVnYjJZZ2RHbHNaU0JrWVhSaElHVjRZMlZsWkhNZ2MzbHpkR1Z0SUd4cGJXbDBjd29BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHMTFiSFJwY0d4bElFMURWQ0J0WVhKclpYSnpDZ0JEYjNKeWRYQjBaV1FnVUZCTklHMWhjbXRsY25NS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlHWnZjaUIwYVd4bElISmxjMjlzZFhScGIyNXpDZ0JEWVc1dWIzUWdkR0ZyWlNCcGJpQmphR0Z5WjJVZ2JYVnNkR2x3YkdVZ1kyOXNiR1ZqZEdsdmJuTUtBRWx1ZG1Gc2FXUWdVRU5NVWlCaWIzZ3VJRkpsY0c5eWRITWdNQ0J3WVd4bGRIUmxJR052YkhWdGJuTUtBRmRsSUdSdklHNXZkQ0J6ZFhCd2IzSjBJRkpQU1NCcGJpQmtaV052WkdsdVp5QklWQ0JqYjJSbFlteHZZMnR6Q2dCRFlXNXViM1FnYUdGdVpHeGxJR0p2ZUNCdlppQjFibVJsWm1sdVpXUWdjMmw2WlhNS0FFTmhibTV2ZENCMFlXdGxJR2x1SUdOb1lYSm5aU0JqYjJ4c1pXTjBhVzl1Y3lCM2FYUm9iM1YwSUhOaGJXVWdiblZ0WW1WeUlHOW1JR2x1WkdsNFpYTUtBRWx1ZG1Gc2FXUWdkR2xzWldNdFBuZHBibDk0ZUhnZ2RtRnNkV1Z6Q2dCRFlXNXViM1FnYUdGdVpHeGxJR0p2ZUNCdlppQnNaWE56SUhSb1lXNGdPQ0JpZVhSbGN3b0FRMkZ1Ym05MElHaGhibVJzWlNCWVRDQmliM2dnYjJZZ2JHVnpjeUIwYUdGdUlERTJJR0o1ZEdWekNnQkRiMjF3YjI1bGJuUWdhVzVrWlhnZ0pYVWdkWE5sWkNCelpYWmxjbUZzSUhScGJXVnpDZ0JKYm5aaGJHbGtJRkJEVEZJZ1ltOTRMaUJTWlhCdmNuUnpJQ1ZrSUdWdWRISnBaWE1LQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklHTnlaV0YwWlNCVVlXY3RkSEpsWlNCdWIyUmxjd29BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHMWpkQ0JrWVhSaElIZHBkR2hwYmlCdGRXeDBhWEJzWlNCTlExUWdjbVZqYjNKa2N3b0FRMkZ1Ym05MElHUmxZMjlrWlNCMGFXeGxMQ0J0WlcxdmNua2daWEp5YjNJS0FHOXdhbDlxTW10ZllYQndiSGxmYm1KZmRHbHNaVjl3WVhKMGMxOWpiM0p5WldOMGFXOXVJR1Z5Y205eUNnQlFjbTlpYkdWdElIZHBkR2dnYzJ0cGNIQnBibWNnU2xCRlJ6SXdNREFnWW05NExDQnpkSEpsWVcwZ1pYSnliM0lLQUZCeWIySnNaVzBnZDJsMGFDQnlaV0ZrYVc1bklFcFFSVWN5TURBd0lHSnZlQ3dnYzNSeVpXRnRJR1Z5Y205eUNnQlZibXR1YjNkdUlHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdZV1JrSUhSc0lHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdZV1JrSUcxb0lHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdkR0ZyWlNCcGJpQmphR0Z5WjJVZ1UwbGFJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCUVVGUWdiV0Z5YTJWeUNnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJ5WldGa0lGQlFWQ0J0WVhKclpYSUtBRVZ5Y205eUlISmxZV1JwYm1jZ1UwOVVJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCUVRGUWdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUUxRFZDQnRZWEpyWlhJS0FFNXZkQ0JsYm05MVoyZ2diV1Z0YjNKNUlIUnZJSEpsWVdRZ1RVTlVJRzFoY210bGNnb0FUbTkwSUdWdWIzVm5hQ0J6Y0dGalpTQm1iM0lnWlhod1pXTjBaV1FnVTA5UUlHMWhjbXRsY2dvQVJYaHdaV04wWldRZ1UwOVFJRzFoY210bGNnb0FSWEp5YjNJZ2NtVmhaR2x1WnlCTlEwOGdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZKSFRpQnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVUZCTklHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdjbVZoWkNCUVVFMGdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUZSTVRTQnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVUV4TklHMWhjbXRsY2dvQVRtOTBJR1Z1YjNWbmFDQnpjR0ZqWlNCbWIzSWdaWGh3WldOMFpXUWdSVkJJSUcxaGNtdGxjZ29BUlhod1pXTjBaV1FnUlZCSUlHMWhjbXRsY2dvQVJYSnliM0lnY21WaFpHbHVaeUJEVWtjZ2JXRnlhMlZ5Q2dCVmJtdHViM2R1SUhCeWIyZHlaWE56YVc5dUlHOXlaR1Z5SUdsdUlFTlBSQ0J0WVhKclpYSUtBRlZ1YTI1dmQyNGdVMk52WkNCMllXeDFaU0JwYmlCRFQwUWdiV0Z5YTJWeUNnQkZjbkp2Y2lCeVpXRmthVzVuSUVOUFJDQnRZWEpyWlhJS0FFVnljbTl5SUhKbFlXUnBibWNnVVVORUlHMWhjbXRsY2dvQVEzSnliM0lnY21WaFpHbHVaeUJEUWtRZ2JXRnlhMlZ5Q2dCRmNuSnZjaUJ5WldGa2FXNW5JRkJQUXlCdFlYSnJaWElLQUVWeWNtOXlJSEpsWVdScGJtY2dRMDlESUcxaGNtdGxjZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlJRME1nYldGeWEyVnlDZ0JGY25KdmNpQnlaV0ZrYVc1bklFMURReUJ0WVhKclpYSUtBRTV2ZENCbGJtOTFaMmdnYldWdGIzSjVJSFJ2SUhKbFlXUWdUVU5ESUcxaGNtdGxjZ29BY21WeGRXbHlaV1FnVTBsYUlHMWhjbXRsY2lCdWIzUWdabTkxYm1RZ2FXNGdiV0ZwYmlCb1pXRmtaWElLQUhKbGNYVnBjbVZrSUVOUFJDQnRZWEpyWlhJZ2JtOTBJR1p2ZFc1a0lHbHVJRzFoYVc0Z2FHVmhaR1Z5Q2dCeVpYRjFhWEpsWkNCUlEwUWdiV0Z5YTJWeUlHNXZkQ0JtYjNWdVpDQnBiaUJ0WVdsdUlHaGxZV1JsY2dvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ2RHOGdhR0Z1Wkd4bElHcHdaV2N5TURBd0lHWnBiR1VnYUdWaFpHVnlDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCeVpXRmtJR2hsWVdSbGNnb0FSWEp5YjNJZ2QybDBhQ0JLVUNCVGFXZHVZWFIxY21VZ09pQmlZV1FnYldGbmFXTWdiblZ0WW1WeUNnQkpiaUJUVDFRZ2JXRnlhMlZ5TENCVVVGTnZkQ0FvSldRcElHbHpJRzV2ZENCMllXeHBaQ0J5WldkaGNtUnpJSFJ2SUhSb1pTQmpkWEp5Wlc1MElHNTFiV0psY2lCdlppQjBhV3hsTFhCaGNuUWdLQ1ZrS1N3Z1oybDJhVzVuSUhWd0NnQkpiaUJUVDFRZ2JXRnlhMlZ5TENCVVVGTnZkQ0FvSldRcElHbHpJRzV2ZENCMllXeHBaQ0J5WldkaGNtUnpJSFJ2SUhSb1pTQndjbVYyYVc5MWN5QnVkVzFpWlhJZ2IyWWdkR2xzWlMxd1lYSjBJQ2dsWkNrc0lHZHBkbWx1WnlCMWNBb0FTVzRnVTA5VUlHMWhjbXRsY2l3Z1ZGQlRiM1FnS0NWa0tTQnBjeUJ1YjNRZ2RtRnNhV1FnY21WbllYSmtjeUIwYnlCMGFHVWdZM1Z5Y21WdWRDQnVkVzFpWlhJZ2IyWWdkR2xzWlMxd1lYSjBJQ2hvWldGa1pYSXBJQ2dsWkNrc0lHZHBkbWx1WnlCMWNBb0FkR2xzWlhNZ2NtVnhkV2x5WlNCaGRDQnNaV0Z6ZENCdmJtVWdjbVZ6YjJ4MWRHbHZiZ29BVFdGeWEyVnlJR2x6SUc1dmRDQmpiMjF3YkdsaGJuUWdkMmwwYUNCcGRITWdjRzl6YVhScGIyNEtBRkJ5YjJKc1pXMGdkMmwwYUNCelpXVnJJR1oxYm1OMGFXOXVDZ0JGY25KdmNpQnlaV0ZrYVc1bklGTlFRMjlrSUZOUVEyOWpJR1ZzWlcxbGJuUXNJRWx1ZG1Gc2FXUWdZMkpzYTNjdlkySnNhMmdnWTI5dFltbHVZWFJwYjI0S0FFbHVkbUZzYVdRZ2JYVnNkR2x3YkdVZ1kyOXRjRzl1Wlc1MElIUnlZVzV6Wm05eWJXRjBhVzl1Q2dCRFlXNXViM1FnZEdGclpTQnBiaUJqYUdGeVoyVWdZMjlzYkdWamRHbHZibk1nYjNSb1pYSWdkR2hoYmlCaGNuSmhlU0JrWldOdmNuSmxiR0YwYVc5dUNnQlViMjhnYkdGeVoyVWdkbUZzZFdVZ1ptOXlJRTV3Y0cwS0FFNXZkQ0JsYm05MVoyZ2dZbmwwWlhNZ2RHOGdjbVZoWkNCT2NIQnRDZ0JpWVdRZ2NHeGhZMlZrSUdwd1pXY2dZMjlrWlhOMGNtVmhiUW9BQ1NCTllXbHVJR2hsWVdSbGNpQnpkR0Z5ZENCd2IzTnBkR2x2YmowbGJHeHBDZ2tnVFdGcGJpQm9aV0ZrWlhJZ1pXNWtJSEJ2YzJsMGFXOXVQU1ZzYkdrS0FFMWhjbXRsY2lCemFYcGxJR2x1WTI5dWMybHpkR1Z1ZENCM2FYUm9JSE4wY21WaGJTQnNaVzVuZEdnS0FGUnBiR1VnY0dGeWRDQnNaVzVuZEdnZ2MybDZaU0JwYm1OdmJuTnBjM1JsYm5RZ2QybDBhQ0J6ZEhKbFlXMGdiR1Z1WjNSb0NnQkRZVzV1YjNRZ2RHRnJaU0JwYmlCamFHRnlaMlVnYlhWc2RHbHdiR1VnWkdGMFlTQnpjR0Z1Ym1sdVp3b0FWM0p2Ym1jZ1pteGhad29BUlhKeWIzSWdkMmwwYUNCR1ZGbFFJSE5wWjI1aGRIVnlaU0JDYjNnZ2MybDZaUW9BUlhKeWIzSWdkMmwwYUNCS1VDQnphV2R1WVhSMWNtVWdRbTk0SUhOcGVtVUtBRWx1ZG1Gc2FXUWdjSEpsWTJsdVkzUWdjMmw2WlFvQVNXNWpiMjV6YVhOMFpXNTBJRzFoY210bGNpQnphWHBsQ2dCSmJuWmhiR2xrSUcxaGNtdGxjaUJ6YVhwbENnQkZjbkp2Y2lCM2FYUm9JRk5KV2lCdFlYSnJaWElnYzJsNlpRb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnWVdSa0lHRWdibVYzSUhaaGJHbGtZWFJwYjI0Z2NISnZZMlZrZFhKbENnQk9iM1FnWlc1dmRXZG9JRzFsYlc5eWVTQjBieUJrWldOdlpHVWdkR2xzWlFvQVJtRnBiR1ZrSUhSdklHUmxZMjlrWlNCMGFHVWdZMjlrWlhOMGNtVmhiU0JwYmlCMGFHVWdTbEF5SUdacGJHVUtBRU5oYm01dmRDQjBZV3RsSUdsdUlHTm9ZWEpuWlNCamIyeHNaV04wYVc5dWN5QjNhWFJvSUdsdVpHbDRJSE5vZFdabWJHVUtBRU5oYm01dmRDQmhiR3h2WTJGMFpTQlVhV1Z5SURFZ2FHRnVaR3hsQ2dCT2J5QmtaV052WkdWa0lHRnlaV0VnY0dGeVlXMWxkR1Z5Y3l3Z2MyVjBJSFJvWlNCa1pXTnZaR1ZrSUdGeVpXRWdkRzhnZEdobElIZG9iMnhsSUdsdFlXZGxDZ0JPYjNRZ1pXNXZkV2RvSUcxbGJXOXllU0IwYnlCamNtVmhkR1VnVkdGbkxYUnlaV1VLQUU1dmRDQmxibTkxWjJnZ2JXVnRiM0o1SUhSdklISmxhVzVwZEdsaGJHbDZaU0IwYUdVZ2RHRm5JSFJ5WldVS0FFVnljbTl5SUhKbFlXUnBibWNnVTFCRGIyUWdVMUJEYjJNZ1pXeGxiV1Z1ZEN3Z1NXNTJZV3hwWkNCMGNtRnVjMlp2Y20xaGRHbHZiaUJtYjNWdVpBb0FSWEp5YjNJZ2NtVmhaR2x1WnlCVFVFTnZaQ0JUVUVOdll5QmxiR1Z0Wlc1MExpQlZibk4xY0hCdmNuUmxaQ0JOYVhobFpDQklWQ0JqYjJSbExXSnNiMk5ySUhOMGVXeGxJR1p2ZFc1a0NnQlVhV3hsSUZrZ1kyOXZjbVJwYm1GMFpYTWdZWEpsSUc1dmRDQnpkWEJ3YjNKMFpXUUtBRlJwYkdVZ1dDQmpiMjl5WkdsdVlYUmxjeUJoY21VZ2JtOTBJSE4xY0hCdmNuUmxaQW9BU1cxaFoyVWdZMjl2Y21ScGJtRjBaWE1nWVdKdmRtVWdTVTVVWDAxQldDQmhjbVVnYm05MElITjFjSEJ2Y25SbFpBb0FTbEJGUnpJd01EQWdTR1ZoWkdWeUlHSnZlQ0J1YjNRZ2NtVmhaQ0I1WlhRc0lDY2xZeVZqSldNbFl5Y2dZbTk0SUhkcGJHd2dZbVVnYVdkdWIzSmxaQW9BYjNCcVgyb3lhMTl0WlhKblpWOXdjSFFvS1NCb1lYTWdZV3h5WldGa2VTQmlaV1Z1SUdOaGJHeGxaQW9BVG05MElHVnViM1ZuYUNCdFpXMXZjbmtnZEc4Z2NtVmhaQ0JUVDFRZ2JXRnlhMlZ5TGlCVWFXeGxJR2x1WkdWNElHRnNiRzlqWVhScGIyNGdabUZwYkdWa0NnQkpaMjV2Y21sdVp5QnBhR1J5SUdKdmVDNGdSbWx5YzNRZ2FXaGtjaUJpYjNnZ1lXeHlaV0ZrZVNCeVpXRmtDZ0JhY0hCMElDVjFJR0ZzY21WaFpIa2djbVZoWkFvQVduQndiU0FsZFNCaGJISmxZV1I1SUhKbFlXUUtBRkJVUlZKTklHTm9aV05ySUdaaGFXeDFjbVU2SUNWa0lITjViblJvWlhScGVtVmtJREI0UmtZZ2JXRnlhMlZ5Y3lCeVpXRmtDZ0FKQ1FrZ1kySnNhM2M5TWw0bFpBb0FDUWtKSUdOaWJHdG9QVEplSldRS0FBa0pDU0J4Ym5SemRIazlKV1FLQUNWeklHUjRQU1ZrTENCa2VUMGxaQW9BQ1FrSklISnZhWE5vYVdaMFBTVmtDZ0FKQ1FrZ2JuVnRaMkpwZEhNOUpXUUtBQWtKSUc1MWJXeGhlV1Z5Y3owbFpBb0FKWE1nYm5WdFkyOXRjSE05SldRS0FHOXdhbDlxY0RKZllYQndiSGxmWTJSbFpqb2dZV051UFNWa0xDQnVkVzFqYjIxd2N6MGxaQW9BYjNCcVgycHdNbDloY0hCc2VWOWpaR1ZtT2lCamJqMGxaQ3dnYm5WdFkyOXRjSE05SldRS0FBa0pDU0J1ZFcxeVpYTnZiSFYwYVc5dWN6MGxaQW9BQ1FrZ2RIbHdaVDBsSTNnc0lIQnZjejBsYkd4cExDQnNaVzQ5SldRS0FDVnpJSE5uYm1ROUpXUUtBQWtKQ1NCeGJXWmlhV1E5SldRS0FDVnpJSEJ5WldNOUpXUUtBQWtKSUc1aUlHOW1JSFJwYkdVdGNHRnlkQ0JwYmlCMGFXeGxJRnNsWkYwOUpXUUtBQ1Z6SUhneFBTVmtMQ0I1TVQwbFpBb0FKWE1nZURBOUpXUXNJSGt3UFNWa0NnQkdZV2xzWldRZ2RHOGdaR1ZqYjJSbElIUnBiR1VnSldRdkpXUUtBRk5sZEhScGJtY2daR1ZqYjJScGJtY2dZWEpsWVNCMGJ5QWxaQ3dsWkN3bFpDd2xaQW9BUm1GcGJHVmtJSFJ2SUdSbFkyOWtaU0JqYjIxd2IyNWxiblFnSldRS0FFbHVkbUZzYVdRZ2RtRnNkV1VnWm05eUlHNTFiWEpsYzI5c2RYUnBiMjV6SURvZ0pXUXNJRzFoZUNCMllXeDFaU0JwY3lCelpYUWdhVzRnYjNCbGJtcHdaV2N1YUNCaGRDQWxaQW9BU1c1MllXeHBaQ0JqYjIxd2IyNWxiblFnYm5WdFltVnlPaUFsWkN3Z2NtVm5ZWEprYVc1bklIUm9aU0J1ZFcxaVpYSWdiMllnWTI5dGNHOXVaVzUwY3lBbFpBb0FWRzl2SUcxaGJua2dVRTlEY3lBbFpBb0FTVzUyWVd4cFpDQjBhV3hsSUc1MWJXSmxjaUFsWkFvQVNXNTJZV3hwWkNCMGFXeGxJSEJoY25RZ2FXNWtaWGdnWm05eUlIUnBiR1VnYm5WdFltVnlJQ1ZrTGlCSGIzUWdKV1FzSUdWNGNHVmpkR1ZrSUNWa0NnQkZjbkp2Y2lCM2FYUm9JRk5KV2lCdFlYSnJaWEk2SUc1MWJXSmxjaUJ2WmlCamIyMXdiMjVsYm5RZ2FYTWdhV3hzWldkaGJDQXRQaUFsWkFvQVRtOTBJR1Z1YjNWbmFDQnRaVzF2Y25rZ1ptOXlJR05wWld4aFlnb0FRMkZ1Ym05MElHRnNiRzlqWVhSbElHTmliR3N0UG1SbFkyOWtaV1JmWkdGMFlRb0FSbUZwYkdWa0lIUnZJRzFsY21kbElGQlFWQ0JrWVhSaENnQkdZV2xzWldRZ2RHOGdiV1Z5WjJVZ1VGQk5JR1JoZEdFS0FFbHVkbUZzYVdRZ2JuVnRZbVZ5SUc5bUlHeGhlV1Z5Y3lCcGJpQkRUMFFnYldGeWEyVnlJRG9nSldRZ2JtOTBJR2x1SUhKaGJtZGxJRnN4TFRZMU5UTTFYUW9BVTNSeVpXRnRJSFJ2YnlCemFHOXlkQ3dnWlhod1pXTjBaV1FnVTA5VUNnQlZibUZpYkdVZ2RHOGdjMlYwSUhReElHaGhibVJzWlNCaGN5QlVURk1LQUZOMGNtVmhiU0JrYjJWeklHNXZkQ0JsYm1RZ2QybDBhQ0JGVDBNS0FFTmhibTV2ZENCb1lXNWtiR1VnWW05NElITnBlbVZ6SUdocFoyaGxjaUIwYUdGdUlESmVNeklLQUc5d2FsOXdhVjl1WlhoMFgyeHlZM0FvS1RvZ2FXNTJZV3hwWkNCamIyMXdibTh3TDJOdmJYQnViekVLQUc5d2FsOXdhVjl1WlhoMFgzSnNZM0FvS1RvZ2FXNTJZV3hwWkNCamIyMXdibTh3TDJOdmJYQnViekVLQUc5d2FsOXdhVjl1WlhoMFgyTndjbXdvS1RvZ2FXNTJZV3hwWkNCamIyMXdibTh3TDJOdmJYQnViekVLQUc5d2FsOXdhVjl1WlhoMFgzQmpjbXdvS1RvZ2FXNTJZV3hwWkNCamIyMXdibTh3TDJOdmJYQnViekVLQUc5d2FsOXdhVjl1WlhoMFgzSndZMndvS1RvZ2FXNTJZV3hwWkNCamIyMXdibTh3TDJOdmJYQnViekVLQUc5d2FsOTBNVjlrWldOdlpHVmZZMkpzYXlncE9pQjFibk4xY0hCdmNuUmxaQ0JpY0c1dlgzQnNkWE5mYjI1bElEMGdKV1FnUGowZ016RUtBRVpoYVd4bFpDQjBieUJrWldOdlpHVWdkR2xzWlNBeEx6RUtBRWx1YzNWbVptbGphV1Z1ZENCa1lYUmhJR1p2Y2lCRFRVRlFJR0p2ZUM0S0FFNWxaV1FnZEc4Z2NtVmhaQ0JoSUZCRFRGSWdZbTk0SUdKbFptOXlaU0IwYUdVZ1EwMUJVQ0JpYjNndUNnQkpibk4xWm1acFkybGxiblFnWkdGMFlTQm1iM0lnUTBSRlJpQmliM2d1Q2dCT2RXMWlaWElnYjJZZ1kyaGhibTVsYkNCa1pYTmpjbWx3ZEdsdmJpQnBjeUJsY1hWaGJDQjBieUI2WlhKdklHbHVJRU5FUlVZZ1ltOTRMZ29BVTNSeVpXRnRJR1Z5Y205eUlIZG9hV3hsSUhKbFlXUnBibWNnU2xBeUlFaGxZV1JsY2lCaWIzZzZJRzV2SUNkcGFHUnlKeUJpYjNndUNnQk9iMjRnWTI5dVptOXliV0Z1ZENCamIyUmxjM1J5WldGdElGUlFjMjkwUFQxVVRuTnZkQzRLQUZOMGNtVmhiU0JsY25KdmNpQjNhR2xzWlNCeVpXRmthVzVuSUVwUU1pQklaV0ZrWlhJZ1ltOTRPaUJpYjNnZ2JHVnVaM1JvSUdseklHbHVZMjl1YzJsemRHVnVkQzRLQUVKdmVDQnNaVzVuZEdnZ2FYTWdhVzVqYjI1emFYTjBaVzUwTGdvQVVtVnpiMngxZEdsdmJpQm1ZV04wYjNJZ2FYTWdaM0psWVhSbGNpQjBhR0Z1SUhSb1pTQnRZWGhwYlhWdElISmxjMjlzZFhScGIyNGdhVzRnZEdobElHTnZiWEJ2Ym1WdWRDNEtBRU52YlhCdmJtVnVkQ0J0WVhCd2FXNW5JSE5sWlcxeklIZHliMjVuTGlCVWNubHBibWNnZEc4Z1kyOXljbVZqZEM0S0FFbHVZMjl0Y0d4bGRHVWdZMmhoYm01bGJDQmtaV1pwYm1sMGFXOXVjeTRLQUUxaGJHWnZjbTFsWkNCSVZDQmpiMlJsWW14dlkyc3VJRWx1ZG1Gc2FXUWdZMjlrWldKc2IyTnJJR3hsYm1kMGFDQjJZV3gxWlhNdUNnQlhaU0JrYnlCdWIzUWdjM1Z3Y0c5eWRDQnRiM0psSUhSb1lXNGdNeUJqYjJScGJtY2djR0Z6YzJWeklHbHVJR0Z1SUVoVUlHTnZaR1ZpYkc5amF6c2dWR2hwY3lCamIyUmxZbXh2WTJ0eklHaGhjeUFsWkNCd1lYTnpaWE11Q2dCTllXeG1iM0p0WldRZ1NGUWdZMjlrWldKc2IyTnJMaUJFWldOdlpHbHVaeUIwYUdseklHTnZaR1ZpYkc5amF5QnBjeUJ6ZEc5d2NHVmtMaUJVYUdWeVpTQmhjbVVnSldRZ2VtVnlieUJpYVhSd2JHRnVaWE1nYVc0Z0pXUWdZbWwwY0d4aGJtVnpMZ29BUTJGdWJtOTBJSFJoYTJVZ2FXNGdZMmhoY21kbElHMTFiSFJwY0d4bElIUnlZVzV6Wm05eWJXRjBhVzl1SUhOMFlXZGxjeTRLQUZWdWEyNXZkMjRnYldGeWEyVnlJR2hoY3lCaVpXVnVJR1JsZEdWamRHVmtJR0Z1WkNCblpXNWxjbUYwWldRZ1pYSnliM0l1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNObGRGOWtaV052WkdWa1gyTnZiWEJ2Ym1WdWRITWdablZ1WTNScGIyNGdhWE1nYm05MElHRWdaR1ZqYjIxd2NtVnpjMjl5SUdoaGJtUnNaWEl1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNObGRIVndYMlJsWTI5a1pYSWdablZ1WTNScGIyNGdhWE1nYm05MElHRWdaR1ZqYjIxd2NtVnpjMjl5SUdoaGJtUnNaWEl1Q2dCRGIyUmxZeUJ3Y205MmFXUmxaQ0IwYnlCMGFHVWdiM0JxWDNKbFlXUmZhR1ZoWkdWeUlHWjFibU4wYVc5dUlHbHpJRzV2ZENCaElHUmxZMjl0Y0hKbGMzTnZjaUJvWVc1a2JHVnlMZ29BVkdsc1pYTWdaRzl1SjNRZ1lXeHNJR2hoZG1VZ2RHaGxJSE5oYldVZ1pHbHRaVzV6YVc5dUxpQlRhMmx3SUhSb1pTQk5RMVFnYzNSbGNDNEtBRTUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6SUNnbFpDa2dhWE1nYVc1amIyNXphWE4wWlc1MElIZHBkR2dnWVNCTlExUXVJRk5yYVhBZ2RHaGxJRTFEVkNCemRHVndMZ29BU2xBeUlHSnZlQ0IzYUdsamFDQmhjbVVnWVdaMFpYSWdkR2hsSUdOdlpHVnpkSEpsWVcwZ2QybHNiQ0J1YjNRZ1ltVWdjbVZoWkNCaWVTQjBhR2x6SUdaMWJtTjBhVzl1TGdvQVRXRnNabTl5YldWa0lFaFVJR052WkdWaWJHOWpheTRnVjJobGJpQjBhR1VnYm5WdFltVnlJRzltSUhwbGNtOGdjR3hoYm1WeklHSnBkSEJzWVc1bGN5QnBjeUJsY1hWaGJDQjBieUIwYUdVZ2JuVnRZbVZ5SUc5bUlHSnBkSEJzWVc1bGN5d2diMjVzZVNCMGFHVWdZMnhsWVc1MWNDQndZWE56SUcxaGEyVnpJSE5sYm5ObExDQmlkWFFnZDJVZ2FHRjJaU0FsWkNCd1lYTnpaWE1nYVc0Z2RHaHBjeUJqYjJSbFlteHZZMnN1SUZSb1pYSmxabTl5WlN3Z2IyNXNlU0IwYUdVZ1kyeGxZVzUxY0NCd1lYTnpJSGRwYkd3Z1ltVWdaR1ZqYjJSbFpDNGdWR2hwY3lCdFpYTnpZV2RsSUhkcGJHd2dibTkwSUdKbElHUnBjM0JzWVhsbFpDQmhaMkZwYmk0S0FFbHRZV2RsSUdoaGN5QnNaWE56SUdOdmJYQnZibVZ1ZEhNZ2RHaGhiaUJqYjJSbGMzUnlaV0Z0TGdvQVRtVmxaQ0IwYnlCa1pXTnZaR1VnZEdobElHMWhhVzRnYUdWaFpHVnlJR0psWm05eVpTQmlaV2RwYmlCMGJ5QmtaV052WkdVZ2RHaGxJSEpsYldGcGJtbHVaeUJqYjJSbGMzUnlaV0Z0TGdvQVVITnZkQ0IyWVd4MVpTQnZaaUIwYUdVZ1kzVnljbVZ1ZENCMGFXeGxMWEJoY25RZ2FYTWdaWEYxWVd3Z2RHOGdlbVZ5Ynl3Z2QyVWdZWE56ZFcxcGJtY2dhWFFnYVhNZ2RHaGxJR3hoYzNRZ2RHbHNaUzF3WVhKMElHOW1JSFJvWlNCamIyUmxjM1J5WldGdExnb0FRU0J0WVd4bWIzSnRaV1FnWTI5a1pXSnNiMk5ySUhSb1lYUWdhR0Z6SUcxdmNtVWdkR2hoYmlCdmJtVWdZMjlrYVc1bklIQmhjM01zSUdKMWRDQjZaWEp2SUd4bGJtZDBhQ0JtYjNJZ01tNWtJR0Z1WkNCd2IzUmxiblJwWVd4c2VTQjBhR1VnTTNKa0lIQmhjM01nYVc0Z1lXNGdTRlFnWTI5a1pXSnNiMk5yTGdvQUNRa0pJSFJwYkdVdGNHRnlkRnNsWkYwNklITjBZWEpmY0c5elBTVnNiR2tzSUdWdVpGOW9aV0ZrWlhJOUpXeHNhU3dnWlc1a1gzQnZjejBsYkd4cExnb0FWR2xzWlNBbGRTQm9ZWE1nVkZCemIzUWdQVDBnTUNCaGJtUWdWRTV6YjNRZ1BUMGdNQ3dnWW5WMElHNXZJRzkwYUdWeUlIUnBiR1V0Y0dGeWRITWdkMlZ5WlNCbWIzVnVaQzRnUlU5RElHbHpJR0ZzYzI4Z2JXbHpjMmx1Wnk0S0FFTnZiWEJ2Ym1WdWRDQWxaQ0JrYjJWemJpZDBJR2hoZG1VZ1lTQnRZWEJ3YVc1bkxnb0FRU0JqYjI1bWIzSnRhVzVuSUVwUU1pQnlaV0ZrWlhJZ2MyaGhiR3dnYVdkdWIzSmxJR0ZzYkNCRGIyeHZkWElnVTNCbFkybG1hV05oZEdsdmJpQmliM2hsY3lCaFpuUmxjaUIwYUdVZ1ptbHljM1FzSUhOdklIZGxJR2xuYm05eVpTQjBhR2x6SUc5dVpTNEtBRlJvWlNCemFXZHVZWFIxY21VZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNBZ1ltOTRJRzExYzNRZ1ltVWdkR2hsSUdacGNuTjBJR0p2ZUNCcGJpQjBhR1VnWm1sc1pTNEtBRlJvWlNCbWRIbHdJR0p2ZUNCdGRYTjBJR0psSUhSb1pTQnpaV052Ym1RZ1ltOTRJR2x1SUhSb1pTQm1hV3hsTGdvQVJtRnBiR1ZrSUhSdklHUmxZMjlrWlM0S0FFMWhiR1p2Y20xbFpDQklWQ0JqYjJSbFlteHZZMnN1SUVsdVkyOXljbVZqZENCTlJVd2djMlZuYldWdWRDQnpaWEYxWlc1alpTNEtBRU52YlhCdmJtVnVkQ0FsWkNCcGN5QnRZWEJ3WldRZ2RIZHBZMlV1Q2dCUGJteDVJRzl1WlNCRFRVRlFJR0p2ZUNCcGN5QmhiR3h2ZDJWa0xnb0FZWEJ3YkhsZlkyOXNiM0pmZEhKaGJuTm1iM0p0Y3lBOUlFOVFTbDlVVWxWRklHbHpJRzV2ZENCemRYQndiM0owWldRdUNnQlhaU0J1WldWa0lHRnVJR2x0WVdkbElIQnlaWFpwYjNWemJIa2dZM0psWVhSbFpDNEtBRWxJUkZJZ1ltOTRYMjFwYzNOcGJtY3VJRkpsY1hWcGNtVmtMZ29BU2xBeVNDQmliM2dnYldsemMybHVaeTRnVW1WeGRXbHlaV1F1Q2dCT2IzUWdjM1Z5WlNCb2IzY2dkR2hoZENCb1lYQndaVzVsWkM0S0FFMWhhVzRnYUdWaFpHVnlJR2hoY3lCaVpXVnVJR052Y25KbFkzUnNlU0JrWldOdlpHVmtMZ29BVkdsc1pTQWxaQzhsWkNCb1lYTWdZbVZsYmlCa1pXTnZaR1ZrTGdvQVNHVmhaR1Z5SUc5bUlIUnBiR1VnSldRZ0x5QWxaQ0JvWVhNZ1ltVmxiaUJ5WldGa0xnb0FSVzF3ZEhrZ1UwOVVJRzFoY210bGNpQmtaWFJsWTNSbFpEb2dVSE52ZEQwbFpDNEtBRVJwY21WamRDQjFjMlVnWVhRZ0l5VmtJR2h2ZDJWMlpYSWdjR052YkQwbFpDNEtBRWx0Y0d4bGJXVnVkR0YwYVc5dUlHeHBiV2wwWVhScGIyNDZJR1p2Y2lCd1lXeGxkSFJsSUcxaGNIQnBibWNzSUhCamIyeGJKV1JkSUhOb2IzVnNaQ0JpWlNCbGNYVmhiQ0IwYnlBbFpDd2dZblYwSUdseklHVnhkV0ZzSUhSdklDVmtMZ29BU1c1MllXeHBaQ0JqYjIxd2IyNWxiblF2Y0dGc1pYUjBaU0JwYm1SbGVDQm1iM0lnWkdseVpXTjBJRzFoY0hCcGJtY2dKV1F1Q2dCSmJuWmhiR2xrSUhaaGJIVmxJR1p2Y2lCamJXRndXeVZrWFM1dGRIbHdJRDBnSldRdUNnQlFjMjkwSUhaaGJIVmxJR2x6SUc1dmRDQmpiM0p5WldOMElISmxaMkZ5WkhNZ2RHOGdkR2hsSUVwUVJVY3lNREF3SUc1dmNtMDZJQ1ZrTGdvQVRXRnNabTl5YldWa0lFaFVJR052WkdWaWJHOWpheTRnVmt4RElHTnZaR1VnY0hKdlpIVmpaWE1nYzJsbmJtbG1hV05oYm5RZ2MyRnRjR3hsY3lCdmRYUnphV1JsSUhSb1pTQmpiMlJsWW14dlkyc2dZWEpsWVM0S0FGVnVaWGh3WldOMFpXUWdUMDlOTGdvQU16SWdZbWwwY3lCaGNtVWdibTkwSUdWdWIzVm5hQ0IwYnlCa1pXTnZaR1VnZEdocGN5QmpiMlJsWW14dlkyc3NJSE5wYm1ObElIUm9aU0J1ZFcxaVpYSWdiMllnWW1sMGNHeGhibVVzSUNWa0xDQnBjeUJzWVhKblpYSWdkR2hoYmlBek1DNEtBRUp2ZEhSdmJTQndiM05wZEdsdmJpQnZaaUIwYUdVZ1pHVmpiMlJsWkNCaGNtVmhJQ2h5WldkcGIyNWZlVEU5SldRcElITm9iM1ZzWkNCaVpTQStJREF1Q2dCU2FXZG9kQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZURFOUpXUXBJSE5vYjNWc1pDQmlaU0ErSURBdUNnQlZjQ0J3YjNOcGRHbHZiaUJ2WmlCMGFHVWdaR1ZqYjJSbFpDQmhjbVZoSUNoeVpXZHBiMjVmZVRBOUpXUXBJSE5vYjNWc1pDQmlaU0ErUFNBd0xnb0FUR1ZtZENCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVEQTlKV1FwSUhOb2IzVnNaQ0JpWlNBK1BTQXdMZ29BUlhKeWIzSWdjbVZoWkdsdVp5QlFVRlFnYldGeWEyVnlPaUJ3WVdOclpYUWdhR1ZoWkdWeUlHaGhkbVVnWW1WbGJpQndjbVYyYVc5MWMyeDVJR1p2ZFc1a0lHbHVJSFJvWlNCdFlXbHVJR2hsWVdSbGNpQW9VRkJOSUcxaGNtdGxjaWt1Q2dCVGRHRnlkQ0IwYnlCeVpXRmtJR295YXlCdFlXbHVJR2hsWVdSbGNpQW9KV3hzWkNrdUNnQkNiM1IwYjIwZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgza3hQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWmMybDZQU1ZrS1M0S0FGVndJSEJ2YzJsMGFXOXVJRzltSUhSb1pTQmtaV052WkdWa0lHRnlaV0VnS0hKbFoybHZibDk1TUQwbFpDa2dhWE1nYjNWMGMybGtaU0IwYUdVZ2FXMWhaMlVnWVhKbFlTQW9XWE5wZWowbFpDa3VDZ0JTYVdkb2RDQndiM05wZEdsdmJpQnZaaUIwYUdVZ1pHVmpiMlJsWkNCaGNtVmhJQ2h5WldkcGIyNWZlREU5SldRcElHbHpJRzkxZEhOcFpHVWdkR2hsSUdsdFlXZGxJR0Z5WldFZ0tGaHphWG85SldRcExnb0FUR1ZtZENCd2IzTnBkR2x2YmlCdlppQjBhR1VnWkdWamIyUmxaQ0JoY21WaElDaHlaV2RwYjI1ZmVEQTlKV1FwSUdseklHOTFkSE5wWkdVZ2RHaGxJR2x0WVdkbElHRnlaV0VnS0ZoemFYbzlKV1FwTGdvQVFtOTBkRzl0SUhCdmMybDBhVzl1SUc5bUlIUm9aU0JrWldOdlpHVmtJR0Z5WldFZ0tISmxaMmx2Ymw5NU1UMGxaQ2tnYVhNZ2IzVjBjMmxrWlNCMGFHVWdhVzFoWjJVZ1lYSmxZU0FvV1U5emFYbzlKV1FwTGdvQVZYQWdjRzl6YVhScGIyNGdiMllnZEdobElHUmxZMjlrWldRZ1lYSmxZU0FvY21WbmFXOXVYM2t3UFNWa0tTQnBjeUJ2ZFhSemFXUmxJSFJvWlNCcGJXRm5aU0JoY21WaElDaFpUM05wZWowbFpDa3VDZ0JTYVdkb2RDQndiM05wZEdsdmJpQnZaaUIwYUdVZ1pHVmpiMlJsWkNCaGNtVmhJQ2h5WldkcGIyNWZlREU5SldRcElHbHpJRzkxZEhOcFpHVWdkR2hsSUdsdFlXZGxJR0Z5WldFZ0tGaFBjMmw2UFNWa0tTNEtBRXhsWm5RZ2NHOXphWFJwYjI0Z2IyWWdkR2hsSUdSbFkyOWtaV1FnWVhKbFlTQW9jbVZuYVc5dVgzZ3dQU1ZrS1NCcGN5QnZkWFJ6YVdSbElIUm9aU0JwYldGblpTQmhjbVZoSUNoWVQzTnBlajBsWkNrdUNnQlRhWHBsSUhnZ2IyWWdkR2hsSUdSbFkyOWtaV1FnWTI5dGNHOXVaVzUwSUdsdFlXZGxJR2x6SUdsdVkyOXljbVZqZENBb1kyOXRjRnNsWkYwdWR6MGxaQ2t1Q2dCVGFYcGxJSGtnYjJZZ2RHaGxJR1JsWTI5a1pXUWdZMjl0Y0c5dVpXNTBJR2x0WVdkbElHbHpJR2x1WTI5eWNtVmpkQ0FvWTI5dGNGc2xaRjB1YUQwbFpDa3VDZ0JVYVd4bElISmxZV1FzSUdSbFkyOWtaV1FnWVc1a0lIVndaR0YwWldRZ2FYTWdibTkwSUhSb1pTQmtaWE5wY21Wa0lHOXVaU0FvSldRZ2RuTWdKV1FwTGdvQVNXNTJZV3hwWkNCamIyMXdiMjVsYm5RZ2FXNWtaWGdnSldRZ0tENDlJQ1ZrS1M0S0FHOXdhbDl5WldGa1gyaGxZV1JsY2lncElITm9iM1ZzWkNCaVpTQmpZV3hzWldRZ1ltVm1iM0psSUc5d2FsOXpaWFJmWkdWamIyUmxaRjlqYjIxd2IyNWxiblJ6S0NrdUNnQk5aVzF2Y25rZ1lXeHNiMk5oZEdsdmJpQm1ZV2xzZFhKbElHbHVJRzl3YWw5cWNESmZZWEJ3YkhsZmNHTnNjaWdwTGdvQWFXMWhaMlV0UG1OdmJYQnpXeVZrWFM1a1lYUmhJRDA5SUU1VlRFd2dhVzRnYjNCcVgycHdNbDloY0hCc2VWOXdZMnh5S0NrdUNnQnBiblpoYkdsa0lHSnZlQ0J6YVhwbElDVmtJQ2dsZUNrS0FFWmhhV3dnZEc4Z2NtVmhaQ0IwYUdVZ1kzVnljbVZ1ZENCdFlYSnJaWElnYzJWbmJXVnVkQ0FvSlNONEtRb0FSWEp5YjNJZ2QybDBhQ0JUU1ZvZ2JXRnlhMlZ5T2lCSlNFUlNJSGNvSlhVcElHZ29KWFVwSUhaekxpQlRTVm9nZHlnbGRTa2dhQ2dsZFNrS0FFVnljbTl5SUhKbFlXUnBibWNnUTA5RElHMWhjbXRsY2lBb1ltRmtJRzUxYldKbGNpQnZaaUJqYjIxd2IyNWxiblJ6S1FvQVNXNTJZV3hwWkNCdWRXMWlaWElnYjJZZ2RHbHNaWE1nT2lBbGRTQjRJQ1YxSUNodFlYaHBiWFZ0SUdacGVHVmtJR0o1SUdwd1pXY3lNREF3SUc1dmNtMGdhWE1nTmpVMU16VWdkR2xzWlhNcENnQkpiblpoYkdsa0lHNTFiV0psY2lCdlppQmpiMjF3YjI1bGJuUnpJQ2hwYUdSeUtRb0FUbTkwSUdWdWIzVm5hQ0J0WlcxdmNua2dkRzhnYUdGdVpHeGxJR2x0WVdkbElHaGxZV1JsY2lBb2FXaGtjaWtLQUZkeWIyNW5JSFpoYkhWbGN5Qm1iM0k2SUhjb0pXUXBJR2dvSldRcElHNTFiV052YlhCektDVmtLU0FvYVdoa2Npa0tBRWx1ZG1Gc2FXUWdkbUZzZFdWeklHWnZjaUJqYjIxd0lEMGdKV1FnT2lCa2VEMGxkU0JrZVQwbGRTQW9jMmh2ZFd4a0lHSmxJR0psZEhkbFpXNGdNU0JoYm1RZ01qVTFJR0ZqWTI5eVpHbHVaeUIwYnlCMGFHVWdTbEJGUnpJd01EQWdibTl5YlNrS0FFSmhaQ0JwYldGblpTQm9aV0ZrWlhJZ1ltOTRJQ2hpWVdRZ2MybDZaU2tLQUVKaFpDQkRUMHhTSUdobFlXUmxjaUJpYjNnZ0tHSmhaQ0J6YVhwbEtRb0FRbUZrSUVKUVEwTWdhR1ZoWkdWeUlHSnZlQ0FvWW1Ga0lITnBlbVVwQ2dCRmNuSnZjaUIzYVhSb0lGTkpXaUJ0WVhKclpYSTZJRzVsWjJGMGFYWmxJRzl5SUhwbGNtOGdhVzFoWjJVZ2MybDZaU0FvSld4c1pDQjRJQ1ZzYkdRcENnQnphMmx3T2lCelpXZHRaVzUwSUhSdmJ5QnNiMjVuSUNnbFpDa2dkMmwwYUNCdFlYZ2dLQ1ZrS1NCbWIzSWdZMjlrWldKc2IyTnJJQ1ZrSUNod1BTVmtMQ0JpUFNWa0xDQnlQU1ZrTENCalBTVmtLUW9BY21WaFpEb2djMlZuYldWdWRDQjBiMjhnYkc5dVp5QW9KV1FwSUhkcGRHZ2diV0Y0SUNnbFpDa2dabTl5SUdOdlpHVmliRzlqYXlBbFpDQW9jRDBsWkN3Z1lqMGxaQ3dnY2owbFpDd2dZejBsWkNrS0FFUmxjM0JwZEdVZ1NsQXlJRUpRUXlFOU1qVTFMQ0J3Y21WamFYTnBiMjRnWVc1a0wyOXlJSE5uYm1RZ2RtRnNkV1Z6SUdadmNpQmpiMjF3V3lWa1hTQnBjeUJrYVdabVpYSmxiblFnZEdoaGJpQmpiMjF3V3pCZE9nb2dJQ0FnSUNBZ0lGc3dYU0J3Y21WaktDVmtLU0J6WjI1a0tDVmtLU0JiSldSZElIQnlaV01vSldRcElITm5ibVFvSldRcENnQmlZV1FnWTI5dGNHOXVaVzUwSUc1MWJXSmxjaUJwYmlCU1IwNGdLQ1ZrSUhkb1pXNGdkR2hsY21VZ1lYSmxJRzl1YkhrZ0pXUXBDZ0JGY25KdmNpQjNhWFJvSUZOSldpQnRZWEpyWlhJNklHNTFiV0psY2lCdlppQmpiMjF3YjI1bGJuUWdhWE1nYm05MElHTnZiWEJoZEdsaWJHVWdkMmwwYUNCMGFHVWdjbVZ0WVdsdWFXNW5JRzUxYldKbGNpQnZaaUJ3WVhKaGJXVjBaWEp6SUNnZ0pXUWdkbk1nSldRcENnQkZjbkp2Y2lCM2FYUm9JRk5KV2lCdFlYSnJaWEk2SUdsdWRtRnNhV1FnZEdsc1pTQnphWHBsSUNoMFpIZzZJQ1ZrTENCMFpIazZJQ1ZrS1FvQVFtRmtJRU5QVEZJZ2FHVmhaR1Z5SUdKdmVDQW9ZbUZrSUhOcGVtVTZJQ1ZrS1FvQVFtRmtJRU5QVEZJZ2FHVmhaR1Z5SUdKdmVDQW9RMGxGVEdGaUxDQmlZV1FnYzJsNlpUb2dKV1FwQ2dCUVZFVlNUU0JqYUdWamF5Qm1ZV2xzZFhKbE9pQWxaQ0J5WlcxaGFXNXBibWNnWW5sMFpYTWdhVzRnWTI5a1pTQmliRzlqYXlBb0pXUWdkWE5sWkNBdklDVmtLUW9BVFdGc1ptOXliV1ZrSUVoVUlHTnZaR1ZpYkc5amF5NGdUMjVsSUc5bUlIUm9aU0JtYjJ4c2IzZHBibWNnWTI5dVpHbDBhVzl1SUdseklHNXZkQ0J0WlhRNklESWdQRDBnVTJOMWNDQThQU0J0YVc0b1RHTjFjQ3dnTkRBM09Ta0tBRWx1ZG1Gc2FXUWdkbUZzZFdWeklHWnZjaUJqYjIxd0lEMGdKV1FnT2lCd2NtVmpQU1YxSUNoemFHOTFiR1FnWW1VZ1ltVjBkMlZsYmlBeElHRnVaQ0F6T0NCaFkyTnZjbVJwYm1jZ2RHOGdkR2hsSUVwUVJVY3lNREF3SUc1dmNtMHVJRTl3Wlc1S2NHVm5JRzl1YkhrZ2MzVndjRzl5ZEhNZ2RYQWdkRzhnTXpFcENnQkpiblpoYkdsa0lHSnBkQ0J1ZFcxaVpYSWdKV1FnYVc0Z2IzQnFYM1F5WDNKbFlXUmZjR0ZqYTJWMFgyaGxZV1JsY2lncENnQlRkSEpsWVcwZ1pYSnliM0loQ2dCRmNuSnZjaUJ2YmlCM2NtbDBhVzVuSUhOMGNtVmhiU0VLQUZOMGNtVmhiU0J5WldGamFHVmtJR2wwY3lCbGJtUWdJUW9BUlhod1pXTjBaV1FnWVNCVFQwTWdiV0Z5YTJWeUlBb0FTVzUyWVd4cFpDQmliM2dnYzJsNlpTQWxaQ0JtYjNJZ1ltOTRJQ2NsWXlWakpXTWxZeWN1SUU1bFpXUWdKV1FnWW5sMFpYTXNJQ1ZrSUdKNWRHVnpJSEpsYldGcGJtbHVaeUFLQUUxaGJHWnZjbTFsWkNCSVZDQmpiMlJsWW14dlkyc3VJRVJsWTI5a2FXNW5JSFJvYVhNZ1kyOWtaV0pzYjJOcklHbHpJSE4wYjNCd1pXUXVJRlZmY1NCcGN5QnNZWEpuWlhJZ2RHaGhiaUI2WlhKdklHSnBkSEJzWVc1bGN5QXJJREVnQ2dCTllXeG1iM0p0WldRZ1NGUWdZMjlrWldKc2IyTnJMaUJFWldOdlpHbHVaeUIwYUdseklHTnZaR1ZpYkc5amF5QnBjeUJ6ZEc5d2NHVmtMaUJWWDNFZ2FYTnNZWEpuWlhJZ2RHaGhiaUJpYVhSd2JHRnVaWE1nS3lBeElBb0FRMDlNVWlCQ1QxZ2diV1YwYUNCMllXeDFaU0JwY3lCdWIzUWdZU0J5WldkMWJHRnlJSFpoYkhWbElDZ2xaQ2tzSUhOdklIZGxJSGRwYkd3Z2FXZHViM0psSUhSb1pTQmxiblJwY21VZ1EyOXNiM1Z5SUZOd1pXTnBabWxqWVhScGIyNGdZbTk0TGlBS0FGZG9hV3hsSUhKbFlXUnBibWNnUTBOUVgxRk9WRk5VV1NCbGJHVnRaVzUwSUdsdWMybGtaU0JSUTBRZ2IzSWdVVU5ESUcxaGNtdGxjaUJ6WldkdFpXNTBMQ0J1ZFcxaVpYSWdiMllnYzNWaVltRnVaSE1nS0NWa0tTQnBjeUJuY21WaGRHVnlJSFJ2SUU5UVNsOUtNa3RmVFVGWVFrRk9SRk1nS0NWa0tTNGdVMjhnZDJVZ2JHbHRhWFFnZEdobElHNTFiV0psY2lCdlppQmxiR1Z0Wlc1MGN5QnpkRzl5WldRZ2RHOGdUMUJLWDBveVMxOU5RVmhDUVU1RVV5QW9KV1FwSUdGdVpDQnphMmx3SUhSb1pTQnlaWE4wTGlBS0FFcFFNaUJKU0VSU0lHSnZlRG9nWTI5dGNISmxjM05wYjI0Z2RIbHdaU0JwYm1ScFkyRjBaU0IwYUdGMElIUm9aU0JtYVd4bElHbHpJRzV2ZENCaElHTnZibVp2Y20xcGJtY2dTbEF5SUdacGJHVWdLQ1ZrS1NBS0FGUnBiR1VnYVc1a1pYZ2djSEp2ZG1sa1pXUWdZbmtnZEdobElIVnpaWElnYVhNZ2FXNWpiM0p5WldOMElDVmtJQ2h0WVhnZ1BTQWxaQ2tnQ2dCRmNuSnZjaUJrWldOdlpHbHVaeUJqYjIxd2IyNWxiblFnSldRdUNsUm9aU0J1ZFcxaVpYSWdiMllnY21WemIyeDFkR2x2Ym5NZ2RHOGdjbVZ0YjNabElDZ2xaQ2tnYVhNZ1ozSmxZWFJsY2lCdmNpQmxjWFZoYkNCMGFHRnVJSFJvWlNCdWRXMWlaWElnYjJZZ2NtVnpiMngxZEdsdmJuTWdiMllnZEdocGN5QmpiMjF3YjI1bGJuUWdLQ1ZrS1FwTmIyUnBabmtnZEdobElHTndYM0psWkhWalpTQndZWEpoYldWMFpYSXVDZ29BU1cxaFoyVWdaR0YwWVNCb1lYTWdZbVZsYmlCMWNHUmhkR1ZrSUhkcGRHZ2dkR2xzWlNBbFpDNEtDZ0JCc1AwQUM0QWdJd0NsQUVNQVpnQ0RBTzZvRkFEZjJDTUF2aEJEQVAvMWd3QitJRlVBWDFFakFEVUFRd0JPUklNQXpzUVVBTS9NSXdEKzRrTUEvNW1EQUpZQXhRQS9NU01BcFFCREFGNUVnd0RPeUJRQTN4RWpBUDcwUXdELy9JTUFuZ0JWQUhjQUl3QTFBRU1BLy9HREFLNklGQUMzQUNNQS92aERBTy9rZ3dDT2lNVUFIeEVqQUtVQVF3Qm1BSU1BN3FnVUFOOVVJd0MrRUVNQTd5S0RBSDRnVlFCL0lpTUFOUUJEQUU1RWd3RE94QlFBdnhFakFQN2lRd0QzQUlNQWxnREZBRDhpSXdDbEFFTUFYa1NEQU03SUZBRFhBQ01BL3ZSREFQKzZnd0NlQUZVQWJ3QWpBRFVBUXdELzVvTUFyb2dVQUsraUl3RCsrRU1BNXdDREFJNkl4UUF2SWdJQXhRQ0VBSDRnQWdET3hDUUE5d0FDQVA2aVJBQldBQUlBbmdBVUFOY0FBZ0MrRUlRQVpnQUNBSzZJSkFEZkVRSUE3cWhFQURZQUFnQ09pQlFBSHhFQ0FNVUFoQUJ1QUFJQXpvZ2tBUCtJQWdEK3VFUUFUa1FDQUpZQUZBQzNBQUlBL3VTRUFGNUVBZ0NtQUNRQTV3QUNBTjVVUkFBdUlnSUFQZ0FVQUhjQUFnREZBSVFBZmlBQ0FNN0VKQUQvOFFJQS9xSkVBRllBQWdDZUFCUUF2eEVDQUw0UWhBQm1BQUlBcm9na0FPOGlBZ0R1cUVRQU5nQUNBSTZJRkFCL0lnSUF4UUNFQUc0QUFnRE9pQ1FBNytRQ0FQNjRSQUJPUkFJQWxnQVVBSytpQWdEKzVJUUFYa1FDQUtZQUpBRGYyQUlBM2xSRUFDNGlBZ0ErQUJRQVgxRUNBRlVBaEFCbUFBSUEzb2drQVA4eUFnRCtFVVFBVGtRQ0FLNEFGQUMzQUFJQWZqR0VBRjVSQWdER0FDUUExd0FDQU80Z1JBQWVFUUlBbmdBVUFIY0FBZ0JWQUlRQVhsUUNBTTVFSkFEbkFBSUEvdkZFQURZQUFnQ21BQlFBWDFVQ0FQNTBoQUErRVFJQXZpQWtBSDkwQWdEZXhFUUEvL2dDQUpZQUZBQXZJZ0lBVlFDRUFHWUFBZ0RlaUNRQTl3QUNBUDRSUkFCT1JBSUFyZ0FVQUkrSUFnQitNWVFBWGxFQ0FNWUFKQURQeUFJQTdpQkVBQjRSQWdDZUFCUUFid0FDQUZVQWhBQmVWQUlBemtRa0FOL1JBZ0QrOFVRQU5nQUNBS1lBRkFCL0lnSUEvblNFQUQ0UkFnQytJQ1FBdnlJQ0FON0VSQUR2SWdJQWxnQVVBRDh5QXdEZTFQMzAvL3dVQUQ0UlZRQ1BpQU1BdmpLRkFPY0FKUUJlVWY2cWYzSURBTTVFL2ZqdlJCUUFmbVJGQUsraUF3Q21BRjFWMzVuOThUWUEvdlZ2WWdNQTN0SDk5UC9tRkFCK2NWVUF2N0VEQUs2SWhRRGYxU1VBVGtUKzhuOW1Bd0RHQVAzNDcrSVVBRjVVUlFDZkVRTUFsZ0JkVmMvSS9mRWVFZTdJWndBREFON1UvZlQvOHhRQVBoRlZBTDhSQXdDK01vVUEzOWdsQUY1Ui9xb3ZJZ01BemtUOStQY0FGQUIrWkVVQW41Z0RBS1lBWFZYWEFQM3hOZ0QrOVc5RUF3RGUwZjMwLzdrVUFINXhWUUMzQUFNQXJvaUZBTi9jSlFCT1JQN3lkd0FEQU1ZQS9manY1QlFBWGxSRkFIOXpBd0NXQUYxVnY3ajk4UjRSN3NnL01nSUFwUUNFQUg1QUFnRGVFQ1FBM3hFQ0FQNXlSQUJXQUFJQXJxZ1VBTCt5QWdDV0FJUUFaZ0FDQU1ZQUpBRG5BQUlBN3NoRUFDNGlBZ0NPaUJRQWR3QUNBS1VBaEFCdUFBSUF6b2drQVBjQUFnRCtrVVFBTmdBQ0FLNmlGQUN2cWdJQS9yaUVBRjRBQWdDK0FDUUF6OFFDQU81RVJBRC85QUlBUGlJVUFCOFJBZ0NsQUlRQWZrQUNBTjRRSkFEL21RSUEvbkpFQUZZQUFnQ3VxQlFBdHdBQ0FKWUFoQUJtQUFJQXhnQWtBTmNBQWdEdXlFUUFMaUlDQUk2SUZBQlBSQUlBcFFDRUFHNEFBZ0RPaUNRQTcrSUNBUDZSUkFBMkFBSUFycUlVQUg5RUFnRCt1SVFBWGdBQ0FMNEFKQUNmQUFJQTdrUkVBUDkyQWdBK0loUUFQekVEQU1ZQWhRRC8yZjN5Zm1UKzhiK1pBd0N1b2lVQTcyYjk5RllBN3VKL2N3TUF2cGhGQVBjQS9maG1BUDUybjRnREFJNklGUURmMWFVQUxpTGVtRTlFQXdDK3NvVUEvL3o5OG00aWxnQzNBQU1BcnFvbEFOL1IvZlEyQU43VWIyUURBSzZvUlFEdjZ2MzRYa1R1Nkg5eEF3QStNaFVBejhTbEFQLzZ6b2cvTVFNQXhnQ0ZBUDkzL2ZKK1pQN3h2N01EQUs2aUpRRG5BUDMwVmdEdTRuY0FBd0MrbUVVQTcrVDkrR1lBL25aL1pnTUFqb2dWQU5jQXBRQXVJdDZZUHpNREFMNnloUUQvZGYzeWJpS1dBSitSQXdDdXFpVUEzNW45OURZQTN0UmZVUU1BcnFoRkFPL3MvZmhlUk83b2YzSURBRDR5RlFDL3NhVUEvL1BPaUI4UkF3RGVWUDN5SGhFVUFINWsvdmpQekFNQXZwRkZBTzhpSlFBdUl2N3pqNGdEQU1ZQWhRRDNBQlFBWGhIKy9LK29Bd0NtQURVQTM4ajk4VDR4L21adlpBTUF6c2o5OHYvMUZBQm1BUDcwdjdvREFLNGlSUURuQUNVQVBqTCs2bjl6QXdDK3NvVUEzMVVVQUZZQWZuR2ZFUU1BbGdBMUFNL0UvZkUrTSs3b1QwUURBTjVVL2ZJZUVSUUFmbVQrK0wrWkF3QytrVVVBNytJbEFDNGkvdk4vWmdNQXhnQ0ZBTy9rRkFCZUVmNzhuNWdEQUtZQU5RRFhBUDN4UGpIK1ptOGlBd0RPeVAzeS83a1VBR1lBL3ZTM0FBTUFyaUpGQU4vUkpRQStNdjdxZHdBREFMNnloUUR2N0JRQVZnQitjWDl5QXdDV0FEVUF2N2o5OFQ0ejd1aGZWUHp4M3RIOSt0Y0EvUGdXQVAzL2YzVDg5SDV4L2ZPL3Mvenk3K3J1NkU5RS9QR3VJZ1VBdjdqOCtQY0EvdngzQVB6MFhoSDk5WDkxL1BMZjJPN2lQelA4OGI2eS9mclBpUHo0Ly92OS8zOXovUFJ1QVAzenR3RDg4dTltL3ZrL01menhuZ0FGQUwrNi9Qai8vZjcyWndEODlDWUEvZldQaVB6eTM5emUxQzhpL1BIZTBmMzZ6OFQ4K0JZQS9mOS9jdnowZm5IOTg3K1ovUEx2N083b1J3RDg4YTRpQlFDbkFQejQvL2YrL0ZjQS9QUmVFZjMxbHdEODh0L1Y3dUkzQVB6eHZyTDkrc2NBL1BqLy92My9mMmI4OUc0QS9mT3ZxUHp5NXdEKytUOHkvUEdlQUFVQXY3SDgrTy9rL3ZaZlZQejBKZ0Q5OVljQS9QTGZtZDdVSHhFVEFHVUFRd0RlQUlNQWpZZ2pBRTVFRXdDbEFFTUFyb2lEQURVQUl3RFhBQk1BeFFCREFKNEFnd0JWQUNNQUxpSVRBSlVBUXdCK0FJTUEvaEFqQUhjQUV3QmxBRU1Bem9pREFJMklJd0FlRVJNQXBRQkRBRjRBZ3dBMUFDTUE1d0FUQU1VQVF3QytBSU1BVlFBakFQOFJFd0NWQUVNQVBnQ0RBTzVBSXdDdm9oTUFaUUJEQU40QWd3Q05pQ01BVGtRVEFLVUFRd0N1aUlNQU5RQWpBTzlFRXdERkFFTUFuZ0NEQUZVQUl3QXVJaE1BbFFCREFINEFnd0QrRUNNQXR3QVRBR1VBUXdET2lJTUFqWWdqQUI0UkV3Q2xBRU1BWGdDREFEVUFJd0RQeEJNQXhRQkRBTDRBZ3dCVkFDTUE5d0FUQUpVQVF3QStBSU1BN2tBakFHOEFBUUNFQUFFQVZnQUJBQlFBQVFEWEFBRUFKQUFCQUpZQUFRQkZBQUVBZHdBQkFJUUFBUURHQUFFQUZBQUJBSStJQVFBa0FBRUE5d0FCQURVQUFRQXZJZ0VBaEFBQkFQNUFBUUFVQUFFQXR3QUJBQ1FBQVFDL0FBRUFSUUFCQUdjQUFRQ0VBQUVBcGdBQkFCUUFBUUJQUkFFQUpBQUJBT2NBQVFBMUFBRUFQeEVCQUlRQUFRQldBQUVBRkFBQkFNOEFBUUFrQUFFQWxnQUJBRVVBQVFCdkFBRUFoQUFCQU1ZQUFRQVVBQUVBbndBQkFDUUFBUUR2QUFFQU5RQUJBRDh5QVFDRUFBRUEva0FCQUJRQUFRQ3ZBQUVBSkFBQkFQOUVBUUJGQUFFQVh3QUJBSVFBQVFDbUFBRUFGQUFCQUg4QUFRQWtBQUVBM3dBQkFEVUFBUUFmRVFFQUpBQUJBRllBQVFDRkFBRUF2d0FCQUJRQUFRRDNBQUVBeGdBQkFIY0FBUUFrQUFFQS8vZ0JBRVVBQVFCL0FBRUFGQUFCQU44QUFRQ21BQUVBUHpFQkFDUUFBUUF1SWdFQWhRQUJBTGNBQVFBVUFBRUE3MFFCQUs2aUFRQm5BQUVBSkFBQkFQOVJBUUJGQUFFQWx3QUJBQlFBQVFEUEFBRUFOZ0FCQUQ4aUFRQWtBQUVBVmdBQkFJVUFBUUMvc2dFQUZBQUJBTzlBQVFER0FBRUFid0FCQUNRQUFRRC9jZ0VBUlFBQkFKOEFBUUFVQUFFQTF3QUJBS1lBQVFCUFJBRUFKQUFCQUM0aUFRQ0ZBQUVBcjZnQkFCUUFBUURuQUFFQXJxSUJBRjhBQVFBa0FBRUEvMFFCQUVVQUFRQ1BpQUVBRkFBQkFLK3FBUUEyQUFFQUh4RUNBUDc0SkFCV0FBSUF0Z0NGQVA5bUFnRE9BQlFBSGhFQ0FKWUFOUUN2cUFJQTlnQWtBRDR4QWdDbUFFVUF2N01DQUw2eUZBRC85UUlBWmdCK1VWOVVBZ0QrOGlRQUxpSUNBSzRpaFFEdlJBSUF4Z0FVQVAvMEFnQjJBRFVBZjBRQ0FONUFKQUErTWdJQW5nQkZBTmNBQWdDK2lCUUEvL29DQUY0Ui92RlBSQUlBL3Zna0FGWUFBZ0MyQUlVQTc4Z0NBTTRBRkFBZUVRSUFsZ0ExQUkrSUFnRDJBQ1FBUGpFQ0FLWUFSUURmUkFJQXZySVVBUCtvQWdCbUFINVJid0FDQVA3eUpBQXVJZ0lBcmlLRkFPY0FBZ0RHQUJRQTcrSUNBSFlBTlFCL2NnSUEza0FrQUQ0eUFnQ2VBRVVBdjdFQ0FMNklGQUQvY3dJQVhoSCs4VDh6QVFDRUFBRUE3aUFCQU1VQUFRRFB4QUVBUkFBQkFQOHlBUUFWQUFFQWo0Z0JBSVFBQVFCbUFBRUFKUUFCQUs4QUFRQkVBQUVBN3lJQkFLWUFBUUJmQUFFQWhBQUJBRTVFQVFERkFBRUF6OHdCQUVRQUFRRDNBQUVBRlFBQkFHOEFBUUNFQUFFQVZnQUJBQ1VBQVFDZkFBRUFSQUFCQU44QUFRRCtNQUVBTHlJQkFJUUFBUUR1SUFFQXhRQUJBTS9JQVFCRUFBRUEveEVCQUJVQUFRQjNBQUVBaEFBQkFHWUFBUUFsQUFFQWZ3QUJBRVFBQVFEbkFBRUFwZ0FCQURjQUFRQ0VBQUVBVGtRQkFNVUFBUUMzQUFFQVJBQUJBTDhBQVFBVkFBRUFQd0FCQUlRQUFRQldBQUVBSlFBQkFKY0FBUUJFQUFFQTF3QUJBUDR3QVFBZkVRSUE3cWhFQUk2SUFnRFdBTVVBLy9NQ0FQNzhKUUErQUFJQXRnQlZBTi9ZQWdEKytFUUFaZ0FDQUg0Z2hRRC9tUUlBNWdEMUFEWUFBZ0NtQUJVQW53QUNBUDd5UkFCMkFBSUF6a1RGQVA5MkFnRCs4U1VBVGtRQ0FLNEFWUURQeUFJQS92UkVBRjVFQWdDK0VJVUE3K1FDQU41VTlRQWVFUUlBbGdBVkFDOGlBZ0R1cUVRQWpvZ0NBTllBeFFELytnSUEvdndsQUQ0QUFnQzJBRlVBdnhFQ0FQNzRSQUJtQUFJQWZpQ0ZBTzhpQWdEbUFQVUFOZ0FDQUtZQUZRQi9JZ0lBL3ZKRUFIWUFBZ0RPUk1VQS85VUNBUDd4SlFCT1JBSUFyZ0JWQUc4QUFnRCs5RVFBWGtRQ0FMNFFoUURmRVFJQTNsVDFBQjRSQWdDV0FCVUFYMUVEQVBZQUZBQWVFVVFBam9pbEFOL1VBd0N1b2xVQS8zWWtBRDRpdGdDdnFnTUE1Z0FVQVAvMVJBQm1BSVVBejh3REFKNEF4UUR2UkNRQU5nRCsrSDh4QXdEdTZCUUEvL0ZFQUhZQXBRRFB4QU1BZmlKVkFOL1JKQUJPUlA3MFgxRURBTllBRkFEdjRrUUFYa1NGQUw4aUF3Q1dBTVVBMzhna0FDNGkvdkp2SWdNQTlnQVVBQjRSUkFDT2lLVUF2N0VEQUs2aVZRRC9NeVFBUGlLMkFLK29Bd0RtQUJRQS83bEVBR1lBaFFDL3FBTUFuZ0RGQU8va0pBQTJBUDc0YjJRREFPN29GQUQvL0VRQWRnQ2xBTS9JQXdCK0lsVUE3K29rQUU1RS92Ui9kQU1BMWdBVUFQLzZSQUJlUklVQXY3SURBSllBeFFEZlJDUUFMaUwrOGo4eDh3RCsrdjN4TmdBRUFMNHlkUURmRWZNQTNsVDk4dS9rMVFCK2NmNzhmM1B6QVA3ei9mZ2VFUVFBbGdCVkFMK3g4d0RPQUxVQTM5ajk5R1lBL3JsZlZQTUEvbmI5OFNZQUJBQ21BSFVBbndEekFLNEEvZkwvOTlVQVJnRCs5WDkwOHdEbUFQMzRGZ0FFQUlZQVZRQ1BpUE1BeGdDMUFPL2kvZlJlRWU2b1B4SHpBUDc2L2ZFMkFBUUF2akoxQU4vUjh3RGVWUDN5Ly92VkFINXgvdngvUlBNQS92UDkrQjRSQkFDV0FGVUFmM0x6QU00QXRRRHZJdjMwWmdEK3VVOUU4d0QrZHYzeEpnQUVBS1lBZFFDL0VmTUFyZ0Q5OHYvLzFRQkdBUDcxUHpMekFPWUEvZmdXQUFRQWhnQlZBRzhBOHdER0FMVUF2N2o5OUY0UjdxZ3ZJZ0JCdkowQkM2UWVBUUFBQUFFQUFBQUJBQUFBQWdBQUFBSUFBQUFDQUFBQUF3QUFBQU1BQUFBRUFBQUFCUUFBQUxjaFFpRm5JVUloRVJFUkVUTXpNek4zZDNkM0FBQUFBQUFBQUFBQlZnQUFBQUFBQUNCUEFBQXdUd0FBQVZZQUFBRUFBQUF3VHdBQUlFOEFBQUUwQUFBQUFBQUFRRThBQU1CUEFBQUJOQUFBQVFBQUFGQlBBQURRVHdBQUFSZ0FBQUFBQUFCZ1R3QUFJRkFBQUFFWUFBQUJBQUFBY0U4QUFEQlFBQURCQ2dBQUFBQUFBSUJQQUFDQVVBQUF3UW9BQUFFQUFBQ1FUd0FBa0ZBQUFDRUZBQUFBQUFBQW9FOEFBS0JTQUFBaEJRQUFBUUFBQUxCUEFBQ3dVZ0FBSVFJQUFBQUFBQURBVXdBQUlGTUFBQ0VDQUFBQkFBQUEwRk1BQURCVEFBQUJWZ0FBQUFBQUFPQlBBQURRVHdBQUFWWUFBQUVBQUFEd1R3QUF3RThBQUFGVUFBQUFBQUFBQUZBQUFNQlFBQUFCVkFBQUFRQUFBQkJRQUFEUVVBQUFBVWdBQUFBQUFBQWdVQUFBd0ZBQUFBRklBQUFCQUFBQU1GQUFBTkJRQUFBQk9BQUFBQUFBQUVCUUFBREFVQUFBQVRnQUFBRUFBQUJRVUFBQTBGQUFBQUV3QUFBQUFBQUFZRkFBQUNCUkFBQUJNQUFBQVFBQUFIQlFBQUF3VVFBQUFTUUFBQUFBQUFDQVVBQUFRRkVBQUFFa0FBQUJBQUFBa0ZBQUFGQlJBQUFCSEFBQUFBQUFBS0JRQUFDQVVRQUFBUndBQUFFQUFBQ3dVQUFBa0ZFQUFBRVdBQUFBQUFBQW9GSUFBS0JSQUFBQkZnQUFBUUFBQUxCU0FBQ3dVUUFBQVZZQUFBQUFBQURnVUFBQTBGQUFBQUZXQUFBQkFBQUE4RkFBQU1CUUFBQUJWQUFBQUFBQUFBQlJBQURBVUFBQUFWUUFBQUVBQUFBUVVRQUEwRkFBQUFGUkFBQUFBQUFBSUZFQUFPQlFBQUFCVVFBQUFRQUFBREJSQUFEd1VBQUFBVWdBQUFBQUFBQkFVUUFBQUZFQUFBRklBQUFCQUFBQVVGRUFBQkJSQUFBQk9BQUFBQUFBQUdCUkFBQWdVUUFBQVRnQUFBRUFBQUJ3VVFBQU1GRUFBQUUwQUFBQUFBQUFnRkVBQUVCUkFBQUJOQUFBQVFBQUFKQlJBQUJRVVFBQUFUQUFBQUFBQUFDZ1VRQUFZRkVBQUFFd0FBQUJBQUFBc0ZFQUFIQlJBQUFCS0FBQUFBQUFBTUJSQUFCZ1VRQUFBU2dBQUFFQUFBRFFVUUFBY0ZFQUFBRWtBQUFBQUFBQTRGRUFBSUJSQUFBQkpBQUFBUUFBQVBCUkFBQ1FVUUFBQVNJQUFBQUFBQUFBVWdBQW9GRUFBQUVpQUFBQkFBQUFFRklBQUxCUkFBQUJIQUFBQUFBQUFDQlNBQURBVVFBQUFSd0FBQUVBQUFBd1VnQUEwRkVBQUFFWUFBQUFBQUFBUUZJQUFPQlJBQUFCR0FBQUFRQUFBRkJTQUFEd1VRQUFBUllBQUFBQUFBQmdVZ0FBQUZJQUFBRVdBQUFCQUFBQWNGSUFBQkJTQUFBQkZBQUFBQUFBQUlCU0FBQWdVZ0FBQVJRQUFBRUFBQUNRVWdBQU1GSUFBQUVTQUFBQUFBQUFvRklBQUVCU0FBQUJFZ0FBQVFBQUFMQlNBQUJRVWdBQUFSRUFBQUFBQUFEQVVnQUFZRklBQUFFUkFBQUJBQUFBMEZJQUFIQlNBQURCQ2dBQUFBQUFBT0JTQUFDQVVnQUF3UW9BQUFFQUFBRHdVZ0FBa0ZJQUFNRUpBQUFBQUFBQUFGTUFBS0JTQUFEQkNRQUFBUUFBQUJCVEFBQ3dVZ0FBb1FnQUFBQUFBQUFnVXdBQXdGSUFBS0VJQUFBQkFBQUFNRk1BQU5CU0FBQWhCUUFBQUFBQUFFQlRBQURnVWdBQUlRVUFBQUVBQUFCUVV3QUE4RklBQUVFRUFBQUFBQUFBWUZNQUFBQlRBQUJCQkFBQUFRQUFBSEJUQUFBUVV3QUFvUUlBQUFBQUFBQ0FVd0FBSUZNQUFLRUNBQUFCQUFBQWtGTUFBREJUQUFBaEFnQUFBQUFBQUtCVEFBQkFVd0FBSVFJQUFBRUFBQUN3VXdBQVVGTUFBRUVCQUFBQUFBQUF3Rk1BQUdCVEFBQkJBUUFBQVFBQUFOQlRBQUJ3VXdBQUVRRUFBQUFBQUFEZ1V3QUFnRk1BQUJFQkFBQUJBQUFBOEZNQUFKQlRBQUNGQUFBQUFBQUFBQUJVQUFDZ1V3QUFoUUFBQUFFQUFBQVFWQUFBc0ZNQUFFa0FBQUFBQUFBQUlGUUFBTUJUQUFCSkFBQUFBUUFBQURCVUFBRFFVd0FBSlFBQUFBQUFBQUJBVkFBQTRGTUFBQ1VBQUFBQkFBQUFVRlFBQVBCVEFBQVZBQUFBQUFBQUFHQlVBQUFBVkFBQUZRQUFBQUVBQUFCd1ZBQUFFRlFBQUFrQUFBQUFBQUFBZ0ZRQUFDQlVBQUFKQUFBQUFRQUFBSkJVQUFBd1ZBQUFCUUFBQUFBQUFBQ2dWQUFBUUZRQUFBVUFBQUFCQUFBQXNGUUFBRkJVQUFBQkFBQUFBQUFBQUtCVUFBQmdWQUFBQVFBQUFBRUFBQUN3VkFBQWNGUUFBQUZXQUFBQUFBQUF3RlFBQU1CVUFBQUJWZ0FBQVFBQUFOQlVBQURRVkFBQUFBRURBd0VDQXdNRkJnY0hCZ1lIQndBQkF3TUJBZ01EQlFZSEJ3WUdCd2NGQmdjSEJnWUhCd2dJQ0FnSUNBZ0lCUVlIQndZR0J3Y0lDQWdJQ0FnSUNBRUNBd01DQWdNREJnWUhCd1lHQndjQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQVlHQndjR0JnY0hDQWdJQ0FnSUNBZ0RBd1FFQXdNRUJBY0hCd2NIQndjSEF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lBd01FQkFNREJBUUhCd2NIQndjSEJ3TURCQVFEQXdRRUJ3Y0hCd2NIQndjSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQUVDQXdNQ0FnTURCZ1lIQndZR0J3Y0JBZ01EQWdJREF3WUdCd2NHQmdjSEJnWUhCd1lHQndjSUNBZ0lDQWdJQ0FZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdDQWdNREFnSURBd1lHQndjR0JnY0hBZ0lEQXdJQ0F3TUdCZ2NIQmdZSEJ3WUdCd2NHQmdjSENBZ0lDQWdJQ0FnR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQXdNRUJBTURCQVFIQndjSEJ3Y0hCd01EQkFRREF3UUVCd2NIQndjSEJ3Y0hCd2NIQndjSEJ3Z0lDQWdJQ0FnSUJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FNREJBUURBd1FFQndjSEJ3Y0hCd2NEQXdRRUF3TUVCQWNIQndjSEJ3Y0hCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBY0hCd2NIQndjSENBZ0lDQWdJQ0FnQUFRVUdBUUlHQmdNREJ3Y0RBd2NIQUFFRkJnRUNCZ1lEQXdjSEF3TUhCd01EQndjREF3Y0hCQVFIQndRRUJ3Y0RBd2NIQXdNSEJ3UUVCd2NFQkFjSEFRSUdCZ0lDQmdZREF3Y0hBd01IQndFQ0JnWUNBZ1lHQXdNSEJ3TURCd2NEQXdjSEF3TUhCd1FFQndjRUJBY0hBd01IQndNREJ3Y0VCQWNIQkFRSEJ3VUdDQWdHQmdnSUJ3Y0lDQWNIQ0FnRkJnZ0lCZ1lJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0dCZ2dJQmdZSUNBY0hDQWdIQndnSUJnWUlDQVlHQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lBUUlHQmdJQ0JnWURBd2NIQXdNSEJ3RUNCZ1lDQWdZR0F3TUhCd01EQndjREF3Y0hBd01IQndRRUJ3Y0VCQWNIQXdNSEJ3TURCd2NFQkFjSEJBUUhCd0lDQmdZQ0FnWUdBd01IQndNREJ3Y0NBZ1lHQWdJR0JnTURCd2NEQXdjSEF3TUhCd01EQndjRUJBY0hCQVFIQndNREJ3Y0RBd2NIQkFRSEJ3UUVCd2NHQmdnSUJnWUlDQWNIQ0FnSEJ3Z0lCZ1lJQ0FZR0NBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FjSENBZ0hCd2dJQmdZSUNBWUdDQWdIQndnSUJ3Y0lDQVlHQ0FnR0JnZ0lCd2NJQ0FjSENBZ0hCd2dJQndjSUNBY0hDQWdIQndnSUJ3Y0lDQWNIQ0FnSEJ3Z0lCd2NJQ0FBQkF3TUJBZ01EQlFZSEJ3WUdCd2NBQVFNREFRSURBd1VHQndjR0JnY0hCUVlIQndZR0J3Y0lDQWdJQ0FnSUNBVUdCd2NHQmdjSENBZ0lDQWdJQ0FnQkFnTURBZ0lEQXdZR0J3Y0dCZ2NIQVFJREF3SUNBd01HQmdjSEJnWUhCd1lHQndjR0JnY0hDQWdJQ0FnSUNBZ0dCZ2NIQmdZSEJ3Z0lDQWdJQ0FnSUF3TUVCQU1EQkFRSEJ3Y0hCd2NIQndNREJBUURBd1FFQndjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2dJQ0FnSUNBZ0lCd2NIQndjSEJ3Y0lDQWdJQ0FnSUNBTURCQVFEQXdRRUJ3Y0hCd2NIQndjREF3UUVBd01FQkFjSEJ3Y0hCd2NIQndjSEJ3Y0hCd2NJQ0FnSUNBZ0lDQWNIQndjSEJ3Y0hDQWdJQ0FnSUNBZ0JBZ01EQWdJREF3WUdCd2NHQmdjSEFRSURBd0lDQXdNR0JnY0hCZ1lIQndZR0J3Y0dCZ2NIQ0FnSUNBZ0lDQWdHQmdjSEJnWUhCd2dJQ0FnSUNBZ0lBZ0lEQXdJQ0F3TUdCZ2NIQmdZSEJ3SUNBd01DQWdNREJnWUhCd1lHQndjR0JnY0hCZ1lIQndnSUNBZ0lDQWdJQmdZSEJ3WUdCd2NJQ0FnSUNBZ0lDQU1EQkFRREF3UUVCd2NIQndjSEJ3Y0RBd1FFQXdNRUJBY0hCd2NIQndjSEJ3Y0hCd2NIQndjSUNBZ0lDQWdJQ0FjSEJ3Y0hCd2NIQ0FnSUNBZ0lDQWdEQXdRRUF3TUVCQWNIQndjSEJ3Y0hBd01FQkFNREJBUUhCd2NIQndjSEJ3Y0hCd2NIQndjSENBZ0lDQWdJQ0FnSEJ3Y0hCd2NIQndnSUNBZ0lDQWdJQUFNQkJBTUdCQWNCQkFJRkJBY0ZCd0FEQVFRREJnUUhBUVFDQlFRSEJRY0JCQUlGQkFjRkJ3SUZBZ1VGQndVSEFRUUNCUVFIQlFjQ0JRSUZCUWNGQndNR0JBY0dDQWNJQkFjRkJ3Y0lCd2dEQmdRSEJnZ0hDQVFIQlFjSENBY0lCQWNGQndjSUJ3Z0ZCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnQkJBSUZCQWNGQndJRkFnVUZCd1VIQVFRQ0JRUUhCUWNDQlFJRkJRY0ZCd0lGQWdVRkJ3VUhBZ1VDQlFVSEJRY0NCUUlGQlFjRkJ3SUZBZ1VGQndVSEJBY0ZCd2NJQndnRkJ3VUhCd2dIQ0FRSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVVIQlFjSENBY0lCUWNGQndjSUJ3Z0ZCd1VIQndnSENBTUdCQWNHQ0FjSUJBY0ZCd2NJQndnREJnUUhCZ2dIQ0FRSEJRY0hDQWNJQkFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQVFIQlFjSENBY0lCUWNGQndjSUJ3Z0dDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJnZ0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdIQ0FjSUNBZ0lDQWNJQndnSUNBZ0lCQWNGQndjSUJ3Z0ZCd1VIQndnSENBUUhCUWNIQ0FjSUJRY0ZCd2NJQndnRkJ3VUhCd2dIQ0FVSEJRY0hDQWNJQlFjRkJ3Y0lCd2dGQndVSEJ3Z0hDQWNJQndnSUNBZ0lCd2dIQ0FnSUNBZ0hDQWNJQ0FnSUNBY0lCd2dJQ0FnSUJ3Z0hDQWdJQ0FnSENBY0lDQWdJQ0FjSUJ3Z0lDQWdJQndnSENBZ0lDQWdKQ1FvS0NRa0tDZ3dNRFFzTURBMExDUWtLQ2drSkNnb01EQXNOREF3TERRd01EUTBNREFzTERBa05DZ2tNQ2dzTURBc0xEQXdORFF3SkN3b0pEQW9OQ1FrS0Nna0pDZ29NREEwTERBd05Dd2tKQ2dvSkNRb0tEQXdMRFF3TUN3ME1EQTBOREF3TEN3d0pEUW9KREFvTERBd0xDd3dNRFEwTUNRc0tDUXdLRFFvS0Nnb0tDZ29LRFFzTkN3MExEUXNLQ2drSkNnb0pDUTBMREF3TkN3d01EUTBORFFzTEN3c05DZzBLQ2dzS0N3ME5EQXdMQ3d3TURRb01DUW9MQ1F3S0Nna0pDZ29KQ1FzTkRBd0xEUXdNQ2dvS0Nnb0tDZ29MRFFzTkN3MExEUXNMREF3TkRRd01Dd29NQ1FvTkNRd0xDd3NMRFEwTkRRc0tDd29LRFFvTkFFSHB1d0VMTndFQUFRQUJBQUVBQUFFQkFBQUJBUUFCQUFFQUFRQUJBQUFBQUFFQkFRRUFBQUFBQUFFQUFRQUFBQUFCQVFFQkFBQUFBUUFCQVFFQVFhbThBUXMzQVFBQkFBRUFBUUFBQVFFQUFBRUJBQUVBQVFBQkFBRUFBQUFBQVFFQkFRQUFBQUFBQVFBQkFBQUFBQUVCQVFFQUFBQUJBQUVCQVFCQjZid0JDd2NCQUFFQUFRQUJBRUg1dkFFTGxRSUJBQUVBQVFBQkFBQUFBQUVCQVFFQUFBQUFBQUVBQVFBQUFBQUJBUUVCQUFBQUFBQUJBQUVCQVFBQUFRRUFBQUFCQUFFQUFRQUJBUUVCQVFFQkFRRUFBUUFCQUFFQUFRQUFBQUFCQVFFQkFBRUFBQUVCQUFFQUFBQUFBUUVCQVFBQkFBRUJBUUVCQWdBQUFBUUFBQUFFQUFBQUNBQUFBSkQvQUFBTUFBQUFHQUFBQUZML0FBQVVBQUFBR1FBQUFGUC9BQUFVQUFBQUdnQUFBRjcvQUFBVUFBQUFHd0FBQUZ6L0FBQVVBQUFBSEFBQUFGMy9BQUFVQUFBQUhRQUFBRi8vQUFBVUFBQUFIZ0FBQUZIL0FBQUNBQUFBSHdBQUFGWC9BQUFFQUFBQUlBQUFBRmYvQUFBRUFBQUFJUUFBQUZqL0FBQVFBQUFBSWdBQUFHRC9BQUFFQUFBQUl3QUFBR0gvQUFBUUFBQUFKQUFBQUpIL0FFR1l2d0VMWldQL0FBQUVBQUFBSlFBQUFHVC9BQUFVQUFBQUpnQUFBSFQvQUFBVUFBQUFKd0FBQUhqL0FBQUVBQUFBS0FBQUFGRC9BQUFFQUFBQUtRQUFBRm4vQUFBRUFBQUFLZ0FBQUhYL0FBQVVBQUFBS3dBQUFIZi9BQUFVQUFBQUxBQUFBQUFBQUFBVUFFR1F3QUVMTlMwQUFBQXVBQUFBTHdBQUFEQUFBQUF4QUFBQU1nQUFBRE1BQUFBMEFBQUFJQ0JRYWpZQUFBQndlWFJtTndBQUFHZ3ljR280QUVIUXdBRUxNbkprYUdrNUFBQUFjbXh2WXpvQUFBQmpZM0JpT3dBQUFISnNZM0E4QUFBQWNHRnRZejBBQUFCbVpXUmpQZ0FBQUhoaUFFR1F3UUVMUVJrQUN3QVpHUmtBQUFBQUJRQUFBQUFBQUFrQUFBQUFDd0FBQUFBQUFBQUFHUUFLQ2hrWkdRTUtCd0FCQUFrTEdBQUFDUVlMQUFBTEFBWVpBQUFBR1JrWkFFSGh3UUVMSVE0QUFBQUFBQUFBQUJrQUN3MFpHUmtBRFFBQUFnQUpEZ0FBQUFrQURnQUFEZ0JCbThJQkN3RU1BRUdud2dFTEZSTUFBQUFBRXdBQUFBQUpEQUFBQUFBQURBQUFEQUJCMWNJQkN3RVFBRUhod2dFTEZROEFBQUFFRHdBQUFBQUpFQUFBQUFBQUVBQUFFQUJCajhNQkN3RVNBRUdid3dFTEhoRUFBQUFBRVFBQUFBQUpFZ0FBQUFBQUVnQUFFZ0FBR2dBQUFCb2FHZ0JCMHNNQkN3NGFBQUFBR2hvYUFBQUFBQUFBQ1FCQmc4UUJDd0VVQUVHUHhBRUxGUmNBQUFBQUZ3QUFBQUFKRkFBQUFBQUFGQUFBRkFCQnZjUUJDd0VXQUVISnhBRUxKeFVBQUFBQUZRQUFBQUFKRmdBQUFBQUFGZ0FBRmdBQU1ERXlNelExTmpjNE9VRkNRMFJGUmdCQjhjUUJDd2hzQVFBQUFBQUFCUUJCaE1VQkN3RnBBRUdjeFFFTERtb0FBQUJyQUFBQStHY0FBQUFFQUVHMHhRRUxBUUVBUWNURkFRc0YvLy8vL3dvPSIpO3JldHVybiByZWNlaXZlSW5zdGFuY2UoaW5zdGFudGlhdGVTeW5jKHUsZSlbMF0pfSgpO3guaixhLl9tYWxsb2M9eC5rLGEuX2ZyZWU9eC5sLGEuX2pwMl9kZWNvZGU9eC5uLHguX2Vtc2NyaXB0ZW5fc3RhY2tfcmVzdG9yZSx4Ll9lbXNjcmlwdGVuX3N0YWNrX2FsbG9jLHguZW1zY3JpcHRlbl9zdGFja19nZXRfY3VycmVudDt3PWZ1bmN0aW9uIHJ1bkNhbGxlcigpe0R8fHJ1bigpO0R8fCh3PXJ1bkNhbGxlcil9O2Z1bmN0aW9uIHJ1bigpe2lmKCEobT4wKSl7IWZ1bmN0aW9uIHByZVJ1bigpe2lmKGEucHJlUnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgYS5wcmVSdW4mJihhLnByZVJ1bj1bYS5wcmVSdW5dKTtmb3IoO2EucHJlUnVuLmxlbmd0aDspZT1hLnByZVJ1bi5zaGlmdCgpLGQudW5zaGlmdChlKX12YXIgZTtjYWxsUnVudGltZUNhbGxiYWNrcyhkKX0oKTtpZighKG0+MCkpaWYoYS5zZXRTdGF0dXMpe2Euc2V0U3RhdHVzKCJSdW5uaW5nLi4uIik7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2Euc2V0U3RhdHVzKCIiKX0pLDEpO2RvUnVuKCl9KSwxKX1lbHNlIGRvUnVuKCl9ZnVuY3Rpb24gZG9SdW4oKXtpZighRCl7RD0hMDthLmNhbGxlZFJ1bj0hMDshZnVuY3Rpb24gaW5pdFJ1bnRpbWUoKXtjYWxsUnVudGltZUNhbGxiYWNrcyhmKX0oKTt0KGEpO2Eub25SdW50aW1lSW5pdGlhbGl6ZWQmJmEub25SdW50aW1lSW5pdGlhbGl6ZWQoKTshZnVuY3Rpb24gcG9zdFJ1bigpe2lmKGEucG9zdFJ1bil7ImZ1bmN0aW9uIj09dHlwZW9mIGEucG9zdFJ1biYmKGEucG9zdFJ1bj1bYS5wb3N0UnVuXSk7Zm9yKDthLnBvc3RSdW4ubGVuZ3RoOyllPWEucG9zdFJ1bi5zaGlmdCgpLHAudW5zaGlmdChlKX12YXIgZTtjYWxsUnVudGltZUNhbGxiYWNrcyhwKX0oKX19fWlmKGEucHJlSW5pdCl7ImZ1bmN0aW9uIj09dHlwZW9mIGEucHJlSW5pdCYmKGEucHJlSW5pdD1bYS5wcmVJbml0XSk7Zm9yKDthLnByZUluaXQubGVuZ3RoPjA7KWEucHJlSW5pdC5wb3AoKSgpfXJ1bigpO3JldHVybiBhfSk7Y29uc3QgY2k9Z2k7Y2xhc3MgSnB4RXJyb3IgZXh0ZW5kcyBzdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJKcHhFcnJvciIpfX1jbGFzcyBKcHhJbWFnZXtzdGF0aWMjeT1udWxsO3N0YXRpYyBkZWNvZGUoZSx0PSExKXt0aGlzLiN5fHw9Y2koe3dhcm59KTtjb25zdCBpPXRoaXMuI3kuZGVjb2RlKGUsdCk7aWYoInN0cmluZyI9PXR5cGVvZiBpKXRocm93IG5ldyBKcHhFcnJvcihpKTtyZXR1cm4gaX1zdGF0aWMgY2xlYW51cCgpe3RoaXMuI3k9bnVsbH1zdGF0aWMgcGFyc2VJbWFnZVByb3BlcnRpZXMoZSl7bGV0IHQ9ZS5nZXRCeXRlKCk7Zm9yKDt0Pj0wOyl7Y29uc3QgaT10O3Q9ZS5nZXRCeXRlKCk7aWYoNjUzNjE9PT0oaTw8OHx0KSl7ZS5za2lwKDQpO2NvbnN0IHQ9ZS5nZXRJbnQzMigpPj4+MCxpPWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MDtlLnNraXAoMTYpO3JldHVybnt3aWR0aDp0LWEsaGVpZ2h0OmktcixiaXRzUGVyQ29tcG9uZW50OjgsY29tcG9uZW50c0NvdW50OmUuZ2V0VWludDE2KCl9fX10aHJvdyBuZXcgSnB4RXJyb3IoIk5vIHNpemUgbWFya2VyIGZvdW5kIGluIEpQWCBzdHJlYW0iKX19Y2xhc3MgSnB4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5tYXliZUxlbmd0aD10O3RoaXMucGFyYW1zPWl9Z2V0IGJ5dGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJieXRlcyIsdGhpcy5zdHJlYW0uZ2V0Qnl0ZXModGhpcy5tYXliZUxlbmd0aCkpfWVuc3VyZUJ1ZmZlcihlKXt9cmVhZEJsb2NrKGUpe2lmKCF0aGlzLmVvZil7dGhpcy5idWZmZXI9SnB4SW1hZ2UuZGVjb2RlKHRoaXMuYnl0ZXMsZSk7dGhpcy5idWZmZXJMZW5ndGg9dGhpcy5idWZmZXIubGVuZ3RoO3RoaXMuZW9mPSEwfX19Y2xhc3MgTFpXU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxpKXtzdXBlcih0KTt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5jYWNoZWREYXRhPTA7dGhpcy5iaXRzQ2FjaGVkPTA7Y29uc3QgYT00MDk2LHI9e2Vhcmx5Q2hhbmdlOmksY29kZUxlbmd0aDo5LG5leHRDb2RlOjI1OCxkaWN0aW9uYXJ5VmFsdWVzOm5ldyBVaW50OEFycmF5KGEpLGRpY3Rpb25hcnlMZW5ndGhzOm5ldyBVaW50MTZBcnJheShhKSxkaWN0aW9uYXJ5UHJldkNvZGVzOm5ldyBVaW50MTZBcnJheShhKSxjdXJyZW50U2VxdWVuY2U6bmV3IFVpbnQ4QXJyYXkoYSksY3VycmVudFNlcXVlbmNlTGVuZ3RoOjB9O2ZvcihsZXQgZT0wO2U8MjU2OysrZSl7ci5kaWN0aW9uYXJ5VmFsdWVzW2VdPWU7ci5kaWN0aW9uYXJ5TGVuZ3Roc1tlXT0xfXRoaXMubHp3U3RhdGU9cn1yZWFkQml0cyhlKXtsZXQgdD10aGlzLmJpdHNDYWNoZWQsaT10aGlzLmNhY2hlZERhdGE7Zm9yKDt0PGU7KXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGUoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybiBudWxsfWk9aTw8OHxlO3QrPTh9dGhpcy5iaXRzQ2FjaGVkPXQtPWU7dGhpcy5jYWNoZWREYXRhPWk7dGhpcy5sYXN0Q29kZT1udWxsO3JldHVybiBpPj4+dCYoMTw8ZSktMX1yZWFkQmxvY2soKXtsZXQgZSx0LGksYT0xMDI0O2NvbnN0IHI9dGhpcy5sendTdGF0ZTtpZighcilyZXR1cm47Y29uc3Qgcz1yLmVhcmx5Q2hhbmdlO2xldCBuPXIubmV4dENvZGU7Y29uc3Qgbz1yLmRpY3Rpb25hcnlWYWx1ZXMsZz1yLmRpY3Rpb25hcnlMZW5ndGhzLGM9ci5kaWN0aW9uYXJ5UHJldkNvZGVzO2xldCBoPXIuY29kZUxlbmd0aCxsPXIucHJldkNvZGU7Y29uc3QgQz1yLmN1cnJlbnRTZXF1ZW5jZTtsZXQgUT1yLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aCxFPTAsdT10aGlzLmJ1ZmZlckxlbmd0aCxkPXRoaXMuZW5zdXJlQnVmZmVyKHRoaXMuYnVmZmVyTGVuZ3RoK2EpO2ZvcihlPTA7ZTw1MTI7ZSsrKXtjb25zdCBlPXRoaXMucmVhZEJpdHMoaCkscj1RPjA7aWYoZTwyNTYpe0NbMF09ZTtRPTF9ZWxzZXtpZighKGU+PTI1OCkpe2lmKDI1Nj09PWUpe2g9OTtuPTI1ODtRPTA7Y29udGludWV9dGhpcy5lb2Y9ITA7ZGVsZXRlIHRoaXMubHp3U3RhdGU7YnJlYWt9aWYoZTxuKXtRPWdbZV07Zm9yKHQ9US0xLGk9ZTt0Pj0wO3QtLSl7Q1t0XT1vW2ldO2k9Y1tpXX19ZWxzZSBDW1ErK109Q1swXX1pZihyKXtjW25dPWw7Z1tuXT1nW2xdKzE7b1tuXT1DWzBdO24rKztoPW4rcyZuK3MtMT9oOjB8TWF0aC5taW4oTWF0aC5sb2cobitzKS8uNjkzMTQ3MTgwNTU5OTQ1MysxLDEyKX1sPWU7RSs9UTtpZihhPEUpe2Rve2ErPTUxMn13aGlsZShhPEUpO2Q9dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrYSl9Zm9yKHQ9MDt0PFE7dCsrKWRbdSsrXT1DW3RdfXIubmV4dENvZGU9bjtyLmNvZGVMZW5ndGg9aDtyLnByZXZDb2RlPWw7ci5jdXJyZW50U2VxdWVuY2VMZW5ndGg9UTt0aGlzLmJ1ZmZlckxlbmd0aD11fX1jbGFzcyBQcmVkaWN0b3JTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKHQpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBlO2NvbnN0IGE9dGhpcy5wcmVkaWN0b3I9aS5nZXQoIlByZWRpY3RvciIpfHwxO2lmKGE8PTEpcmV0dXJuIGU7aWYoMiE9PWEmJihhPDEwfHxhPjE1KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuc3VwcG9ydGVkIHByZWRpY3RvcjogJHthfWApO3RoaXMucmVhZEJsb2NrPTI9PT1hP3RoaXMucmVhZEJsb2NrVGlmZjp0aGlzLnJlYWRCbG9ja1BuZzt0aGlzLnN0cj1lO3RoaXMuZGljdD1lLmRpY3Q7Y29uc3Qgcj10aGlzLmNvbG9ycz1pLmdldCgiQ29sb3JzIil8fDEscz10aGlzLmJpdHM9aS5nZXQoIkJQQyIsIkJpdHNQZXJDb21wb25lbnQiKXx8OCxuPXRoaXMuY29sdW1ucz1pLmdldCgiQ29sdW1ucyIpfHwxO3RoaXMucGl4Qnl0ZXM9cipzKzc+PjM7dGhpcy5yb3dCeXRlcz1uKnIqcys3Pj4zO3JldHVybiB0aGlzfXJlYWRCbG9ja1RpZmYoKXtjb25zdCBlPXRoaXMucm93Qnl0ZXMsdD10aGlzLmJ1ZmZlckxlbmd0aCxpPXRoaXMuZW5zdXJlQnVmZmVyKHQrZSksYT10aGlzLmJpdHMscj10aGlzLmNvbG9ycyxzPXRoaXMuc3RyLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFzLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47bGV0IG4sbz0wLGc9MCxjPTAsaD0wLGw9dDtpZigxPT09YSYmMT09PXIpZm9yKG49MDtuPGU7KytuKXtsZXQgZT1zW25dXm87ZV49ZT4+MTtlXj1lPj4yO2VePWU+PjQ7bz0oMSZlKTw8NztpW2wrK109ZX1lbHNlIGlmKDg9PT1hKXtmb3Iobj0wO248cjsrK24paVtsKytdPXNbbl07Zm9yKDtuPGU7KytuKXtpW2xdPWlbbC1yXStzW25dO2wrK319ZWxzZSBpZigxNj09PWEpe2NvbnN0IHQ9MipyO2ZvcihuPTA7bjx0OysrbilpW2wrK109c1tuXTtmb3IoO248ZTtuKz0yKXtjb25zdCBlPSgoMjU1JnNbbl0pPDw4KSsoMjU1JnNbbisxXSkrKCgyNTUmaVtsLXRdKTw8OCkrKDI1NSZpW2wtdCsxXSk7aVtsKytdPWU+PjgmMjU1O2lbbCsrXT0yNTUmZX19ZWxzZXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHIrMSksbD0oMTw8YSktMTtsZXQgQz0wLFE9dDtjb25zdCBFPXRoaXMuY29sdW1ucztmb3Iobj0wO248RTsrK24pZm9yKGxldCB0PTA7dDxyOysrdCl7aWYoYzxhKXtvPW88PDh8MjU1JnNbQysrXTtjKz04fWVbdF09ZVt0XSsobz4+Yy1hKSZsO2MtPWE7Zz1nPDxhfGVbdF07aCs9YTtpZihoPj04KXtpW1ErK109Zz4+aC04JjI1NTtoLT04fX1oPjAmJihpW1ErK109KGc8PDgtaCkrKG8mKDE8PDgtaCktMSkpfXRoaXMuYnVmZmVyTGVuZ3RoKz1lfXJlYWRCbG9ja1BuZygpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMucGl4Qnl0ZXMsaT10aGlzLnN0ci5nZXRCeXRlKCksYT10aGlzLnN0ci5nZXRCeXRlcyhlKTt0aGlzLmVvZj0hYS5sZW5ndGg7aWYodGhpcy5lb2YpcmV0dXJuO2NvbnN0IHI9dGhpcy5idWZmZXJMZW5ndGgscz10aGlzLmVuc3VyZUJ1ZmZlcihyK2UpO2xldCBuPXMuc3ViYXJyYXkoci1lLHIpOzA9PT1uLmxlbmd0aCYmKG49bmV3IFVpbnQ4QXJyYXkoZSkpO2xldCBvLGcsYyxoPXI7c3dpdGNoKGkpe2Nhc2UgMDpmb3Iobz0wO288ZTsrK28pc1toKytdPWFbb107YnJlYWs7Y2FzZSAxOmZvcihvPTA7bzx0OysrbylzW2grK109YVtvXTtmb3IoO288ZTsrK28pe3NbaF09c1toLXRdK2Fbb10mMjU1O2grK31icmVhaztjYXNlIDI6Zm9yKG89MDtvPGU7KytvKXNbaCsrXT1uW29dK2Fbb10mMjU1O2JyZWFrO2Nhc2UgMzpmb3Iobz0wO288dDsrK28pc1toKytdPShuW29dPj4xKSthW29dO2Zvcig7bzxlOysrbyl7c1toXT0obltvXStzW2gtdF0+PjEpK2Fbb10mMjU1O2grK31icmVhaztjYXNlIDQ6Zm9yKG89MDtvPHQ7KytvKXtnPW5bb107Yz1hW29dO3NbaCsrXT1nK2N9Zm9yKDtvPGU7KytvKXtnPW5bb107Y29uc3QgZT1uW28tdF0saT1zW2gtdF0scj1pK2ctZTtsZXQgbD1yLWk7bDwwJiYobD0tbCk7bGV0IEM9ci1nO0M8MCYmKEM9LUMpO2xldCBRPXItZTtRPDAmJihRPS1RKTtjPWFbb107c1toKytdPWw8PUMmJmw8PVE/aStjOkM8PVE/ZytjOmUrY31icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke2l9YCl9dGhpcy5idWZmZXJMZW5ndGgrPWV9fWNsYXNzIFJ1bkxlbmd0aFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKHQpO3RoaXMuc3RyPWU7dGhpcy5kaWN0PWUuZGljdH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyLmdldEJ5dGVzKDIpO2lmKCFlfHxlLmxlbmd0aDwyfHwxMjg9PT1lWzBdKXt0aGlzLmVvZj0hMDtyZXR1cm59bGV0IHQsaT10aGlzLmJ1ZmZlckxlbmd0aCxhPWVbMF07aWYoYTwxMjgpe3Q9dGhpcy5lbnN1cmVCdWZmZXIoaSthKzEpO3RbaSsrXT1lWzFdO2lmKGE+MCl7Y29uc3QgZT10aGlzLnN0ci5nZXRCeXRlcyhhKTt0LnNldChlLGkpO2krPWF9fWVsc2V7YT0yNTctYTtjb25zdCByPWVbMV07dD10aGlzLmVuc3VyZUJ1ZmZlcihpK2ErMSk7Zm9yKGxldCBlPTA7ZTxhO2UrKyl0W2krK109cn10aGlzLmJ1ZmZlckxlbmd0aD1pfX1jbGFzcyBQYXJzZXJ7Y29uc3RydWN0b3Ioe2xleGVyOmUseHJlZjp0LGFsbG93U3RyZWFtczppPSExLHJlY292ZXJ5TW9kZTphPSExfSl7dGhpcy5sZXhlcj1lO3RoaXMueHJlZj10O3RoaXMuYWxsb3dTdHJlYW1zPWk7dGhpcy5yZWNvdmVyeU1vZGU9YTt0aGlzLmltYWdlQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLl9pbWFnZUlkPTA7dGhpcy5yZWZpbGwoKX1yZWZpbGwoKXt0aGlzLmJ1ZjE9dGhpcy5sZXhlci5nZXRPYmooKTt0aGlzLmJ1ZjI9dGhpcy5sZXhlci5nZXRPYmooKX1zaGlmdCgpe2lmKHRoaXMuYnVmMiBpbnN0YW5jZW9mIENtZCYmIklEIj09PXRoaXMuYnVmMi5jbWQpe3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPW51bGx9ZWxzZXt0aGlzLmJ1ZjE9dGhpcy5idWYyO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfX10cnlTaGlmdCgpe3RyeXt0aGlzLnNoaWZ0KCk7cmV0dXJuITB9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7cmV0dXJuITF9fWdldE9iaihlPW51bGwpe2NvbnN0IHQ9dGhpcy5idWYxO3RoaXMuc2hpZnQoKTtpZih0IGluc3RhbmNlb2YgQ21kKXN3aXRjaCh0LmNtZCl7Y2FzZSJCSSI6cmV0dXJuIHRoaXMubWFrZUlubGluZUltYWdlKGUpO2Nhc2UiWyI6Y29uc3QgaT1bXTtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIl0iKSYmdGhpcy5idWYxIT09cHQ7KWkucHVzaCh0aGlzLmdldE9iaihlKSk7aWYodGhpcy5idWYxPT09cHQpe2lmKHRoaXMucmVjb3ZlcnlNb2RlKXJldHVybiBpO3Rocm93IG5ldyBQYXJzZXJFT0ZFeGNlcHRpb24oIkVuZCBvZiBmaWxlIGluc2lkZSBhcnJheS4iKX10aGlzLnNoaWZ0KCk7cmV0dXJuIGk7Y2FzZSI8PCI6Y29uc3QgYT1uZXcgRGljdCh0aGlzLnhyZWYpO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiPj4iKSYmdGhpcy5idWYxIT09cHQ7KXtpZighKHRoaXMuYnVmMSBpbnN0YW5jZW9mIE5hbWUpKXtpbmZvKCJNYWxmb3JtZWQgZGljdGlvbmFyeToga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO3RoaXMuc2hpZnQoKTtjb250aW51ZX1jb25zdCB0PXRoaXMuYnVmMS5uYW1lO3RoaXMuc2hpZnQoKTtpZih0aGlzLmJ1ZjE9PT1wdClicmVhazthLnNldCh0LHRoaXMuZ2V0T2JqKGUpKX1pZih0aGlzLmJ1ZjE9PT1wdCl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGRpY3Rpb25hcnkuIil9aWYoaXNDbWQodGhpcy5idWYyLCJzdHJlYW0iKSlyZXR1cm4gdGhpcy5hbGxvd1N0cmVhbXM/dGhpcy5tYWtlU3RyZWFtKGEsZSk6YTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdH1pZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXtpZihOdW1iZXIuaXNJbnRlZ2VyKHRoaXMuYnVmMSkmJmlzQ21kKHRoaXMuYnVmMiwiUiIpKXtjb25zdCBlPVJlZi5nZXQodCx0aGlzLmJ1ZjEpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCk7cmV0dXJuIGV9cmV0dXJuIHR9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiZlP2UuZGVjcnlwdFN0cmluZyh0KTp0fWZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0e2tub3duQ29tbWFuZHM6dH09dGhpcy5sZXhlcixpPWUucG9zO2xldCBhLHIscz0wO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDA9PT1zKXM9Njk9PT1hPzE6MDtlbHNlIGlmKDE9PT1zKXM9NzM9PT1hPzI6MDtlbHNlIGlmKDMyPT09YXx8MTA9PT1hfHwxMz09PWEpe3I9ZS5wb3M7Y29uc3QgaT1lLnBlZWtCeXRlcygxNSksbj1pLmxlbmd0aDtpZigwPT09bilicmVhaztmb3IobGV0IGU9MDtlPG47ZSsrKXthPWlbZV07aWYoKDAhPT1hfHwwPT09aVtlKzFdKSYmKDEwIT09YSYmMTMhPT1hJiYoYTwzMnx8YT4xMjcpKSl7cz0wO2JyZWFrfX1pZigyIT09cyljb250aW51ZTtpZighdCl7d2FybigiZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQgLSBgbGV4ZXIua25vd25Db21tYW5kc2AgaXMgdW5kZWZpbmVkLiIpO2NvbnRpbnVlfWNvbnN0IG89bmV3IExleGVyKG5ldyBTdHJlYW0oaS5zbGljZSgpKSx0KTtvLl9oZXhTdHJpbmdXYXJuPSgpPT57fTtsZXQgZz0wO2Zvcig7Oyl7Y29uc3QgZT1vLmdldE9iaigpO2lmKGU9PT1wdCl7cz0wO2JyZWFrfWlmKGUgaW5zdGFuY2VvZiBDbWQpe2NvbnN0IGk9dFtlLmNtZF07aWYoIWkpe3M9MDticmVha31pZihpLnZhcmlhYmxlQXJncz9nPD1pLm51bUFyZ3M6Zz09PWkubnVtQXJncylicmVhaztnPTB9ZWxzZSBnKyt9aWYoMj09PXMpYnJlYWt9ZWxzZSBzPTA7aWYoLTE9PT1hKXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZDogUmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aG91dCBmaW5kaW5nIGEgdmFsaWQgRUkgbWFya2VyIik7aWYocil7d2FybignLi4uIHRyeWluZyB0byByZWNvdmVyIGJ5IHVzaW5nIHRoZSBsYXN0ICJFSSIgb2NjdXJyZW5jZS4nKTtlLnNraXAoLShlLnBvcy1yKSl9fWxldCBuPTQ7ZS5za2lwKC1uKTthPWUucGVla0J5dGUoKTtlLnNraXAobik7aXNXaGl0ZVNwYWNlKGEpfHxuLS07cmV0dXJuIGUucG9zLW4taX1maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGksYSxyPSExO2Zvcig7LTEhPT0oaT1lLmdldEJ5dGUoKSk7KWlmKDI1NT09PWkpe3N3aXRjaChlLmdldEJ5dGUoKSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjU1OmUuc2tpcCgtMSk7YnJlYWs7Y2FzZSAyMTc6cj0hMDticmVhaztjYXNlIDE5MjpjYXNlIDE5MzpjYXNlIDE5NDpjYXNlIDE5NTpjYXNlIDE5NzpjYXNlIDE5ODpjYXNlIDE5OTpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwMzpjYXNlIDIwNTpjYXNlIDIwNjpjYXNlIDIwNzpjYXNlIDE5NjpjYXNlIDIwNDpjYXNlIDIxODpjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIyMTpjYXNlIDIyMjpjYXNlIDIyMzpjYXNlIDIyNDpjYXNlIDIyNTpjYXNlIDIyNjpjYXNlIDIyNzpjYXNlIDIyODpjYXNlIDIyOTpjYXNlIDIzMDpjYXNlIDIzMTpjYXNlIDIzMjpjYXNlIDIzMzpjYXNlIDIzNDpjYXNlIDIzNTpjYXNlIDIzNjpjYXNlIDIzNzpjYXNlIDIzODpjYXNlIDIzOTpjYXNlIDI1NDphPWUuZ2V0VWludDE2KCk7YT4yP2Uuc2tpcChhLTIpOmUuc2tpcCgtMil9aWYocilicmVha31jb25zdCBzPWUucG9zLXQ7aWYoLTE9PT1pKXt3YXJuKCJJbmxpbmUgRENURGVjb2RlIGltYWdlIHN0cmVhbTogRU9JIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtcyk7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIHN9ZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgaTtmb3IoOy0xIT09KGk9ZS5nZXRCeXRlKCkpOylpZigxMjY9PT1pKXtjb25zdCB0PWUucG9zO2k9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGkpOyl7ZS5za2lwKCk7aT1lLnBlZWtCeXRlKCl9aWYoNjI9PT1pKXtlLnNraXAoKTticmVha31pZihlLnBvcz50KXtjb25zdCB0PWUucGVla0J5dGVzKDIpO2lmKDY5PT09dFswXSYmNzM9PT10WzFdKWJyZWFrfX1jb25zdCBhPWUucG9zLXQ7aWYoLTE9PT1pKXt3YXJuKCJJbmxpbmUgQVNDSUk4NURlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLWEpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiBhfWZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBpO2Zvcig7LTEhPT0oaT1lLmdldEJ5dGUoKSkmJjYyIT09aTspO2NvbnN0IGE9ZS5wb3MtdDtpZigtMT09PWkpe3dhcm4oIklubGluZSBBU0NJSUhleERlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLWEpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiBhfWlubGluZVN0cmVhbVNraXBFSShlKXtsZXQgdCxpPTA7Zm9yKDstMSE9PSh0PWUuZ2V0Qnl0ZSgpKTspaWYoMD09PWkpaT02OT09PXQ/MTowO2Vsc2UgaWYoMT09PWkpaT03Mz09PXQ/MjowO2Vsc2UgaWYoMj09PWkpYnJlYWt9bWFrZUlubGluZUltYWdlKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixpPXQuc3RyZWFtLGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcjtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIklEIikmJnRoaXMuYnVmMSE9PXB0Oyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRpY3Rpb25hcnkga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO2NvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PXB0KWJyZWFrO2FbdF09dGhpcy5nZXRPYmooZSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihyPWkucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgcz10aGlzLnhyZWYuZmV0Y2hJZlJlZihhLkZ8fGEuRmlsdGVyKTtsZXQgbjtpZihzIGluc3RhbmNlb2YgTmFtZSluPXMubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocykpe2NvbnN0IGU9dGhpcy54cmVmLmZldGNoSWZSZWYoc1swXSk7ZSBpbnN0YW5jZW9mIE5hbWUmJihuPWUubmFtZSl9Y29uc3Qgbz1pLnBvcztsZXQgZyxjO3N3aXRjaChuKXtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOmc9dGhpcy5maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGkpO2JyZWFrO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOmc9dGhpcy5maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChpKTticmVhaztjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6Zz10aGlzLmZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChpKTticmVhaztkZWZhdWx0Omc9dGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChpKX1pZihnPDFlMyYmcj4wKXtjb25zdCBlPWkucG9zO2kucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztjPWZ1bmN0aW9uIGdldElubGluZUltYWdlQ2FjaGVLZXkoZSl7Y29uc3QgdD1bXSxpPWUubGVuZ3RoO2xldCBhPTA7Zm9yKDthPGktMTspdC5wdXNoKGVbYSsrXTw8OHxlW2ErK10pO2E8aSYmdC5wdXNoKGVbYV0pO3JldHVybiBpKyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9KGkuZ2V0Qnl0ZXMocitnKSk7aS5wb3M9ZTtjb25zdCBhPXRoaXMuaW1hZ2VDYWNoZVtjXTtpZih2b2lkIDAhPT1hKXt0aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7YS5yZXNldCgpO3JldHVybiBhfX1jb25zdCBoPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IGUgaW4gYSloLnNldChlLGFbZV0pO2xldCBsPWkubWFrZVN1YlN0cmVhbShvLGcsaCk7ZSYmKGw9ZS5jcmVhdGVTdHJlYW0obCxnKSk7bD10aGlzLmZpbHRlcihsLGgsZyk7bC5kaWN0PWg7aWYodm9pZCAwIT09Yyl7bC5jYWNoZUtleT0iaW5saW5lX2ltZ18iKyArK3RoaXMuX2ltYWdlSWQ7dGhpcy5pbWFnZUNhY2hlW2NdPWx9dGhpcy5idWYyPUNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiBsfSN3KGUpe2NvbnN0e3N0cmVhbTp0fT10aGlzLmxleGVyO3QucG9zPWU7Y29uc3QgaT1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDBdKSxhPWkubGVuZ3RoLHI9W25ldyBVaW50OEFycmF5KFsxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTAxLDk3LDEwOV0pLG5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDExNCwxMDEsOTddKV0scz05LWE7Zm9yKDt0LnBvczx0LmVuZDspe2NvbnN0IG49dC5wZWVrQnl0ZXMoMjA0OCksbz1uLmxlbmd0aC05O2lmKG88PTApYnJlYWs7bGV0IGc9MDtmb3IoO2c8bzspe2xldCBvPTA7Zm9yKDtvPGEmJm5bZytvXT09PWlbb107KW8rKztpZihvPj1hKXtsZXQgYT0hMTtmb3IoY29uc3QgZSBvZiByKXtjb25zdCB0PWUubGVuZ3RoO2xldCByPTA7Zm9yKDtyPHQmJm5bZytvK3JdPT09ZVtyXTspcisrO2lmKHI+PXMpe2E9ITA7YnJlYWt9aWYocj49dCl7aWYoaXNXaGl0ZVNwYWNlKG5bZytvK3JdKSl7aW5mbyhgRm91bmQgIiR7Ynl0ZXNUb1N0cmluZyhbLi4uaSwuLi5lXSl9IiB3aGVuIHNlYXJjaGluZyBmb3IgZW5kc3RyZWFtIGNvbW1hbmQuYCk7YT0hMH1icmVha319aWYoYSl7dC5wb3MrPWc7cmV0dXJuIHQucG9zLWV9fWcrK310LnBvcys9b31yZXR1cm4tMX1tYWtlU3RyZWFtKGUsdCl7Y29uc3QgaT10aGlzLmxleGVyO2xldCBhPWkuc3RyZWFtO2kuc2tpcFRvTmV4dExpbmUoKTtjb25zdCByPWEucG9zLTE7bGV0IHM9ZS5nZXQoIkxlbmd0aCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXtpbmZvKGBCYWQgbGVuZ3RoICIke3MmJnMudG9TdHJpbmcoKX0iIGluIHN0cmVhbS5gKTtzPTB9YS5wb3M9citzO2kubmV4dENoYXIoKTtpZih0aGlzLnRyeVNoaWZ0KCkmJmlzQ21kKHRoaXMuYnVmMiwiZW5kc3RyZWFtIikpdGhpcy5zaGlmdCgpO2Vsc2V7cz10aGlzLiN3KHIpO2lmKHM8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIik7aS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO2E9YS5tYWtlU3ViU3RyZWFtKHIscyxlKTt0JiYoYT10LmNyZWF0ZVN0cmVhbShhLHMpKTthPXRoaXMuZmlsdGVyKGEsZSxzKTthLmRpY3Q9ZTtyZXR1cm4gYX1maWx0ZXIoZSx0LGkpe2xldCBhPXQuZ2V0KCJGIiwiRmlsdGVyIikscj10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKGEgaW5zdGFuY2VvZiBOYW1lKXtBcnJheS5pc0FycmF5KHIpJiZ3YXJuKCIvRGVjb2RlUGFybXMgc2hvdWxkIG5vdCBiZSBhbiBBcnJheSwgd2hlbiAvRmlsdGVyIGlzIGEgTmFtZS4iKTtyZXR1cm4gdGhpcy5tYWtlRmlsdGVyKGUsYS5uYW1lLGkscil9bGV0IHM9aTtpZihBcnJheS5pc0FycmF5KGEpKXtjb25zdCB0PWEsaT1yO2ZvcihsZXQgbj0wLG89dC5sZW5ndGg7bjxvOysrbil7YT10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W25dKTtpZighKGEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHthfSJgKTtyPW51bGw7QXJyYXkuaXNBcnJheShpKSYmbiBpbiBpJiYocj10aGlzLnhyZWYuZmV0Y2hJZlJlZihpW25dKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxhLm5hbWUscyxyKTtzPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGksYSl7aWYoMD09PWkpe3dhcm4oYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfXRyeXtzd2l0Y2godCl7Y2FzZSJGbCI6Y2FzZSJGbGF0ZURlY29kZSI6cmV0dXJuIGE/bmV3IFByZWRpY3RvclN0cmVhbShuZXcgRmxhdGVTdHJlYW0oZSxpKSxpLGEpOm5ldyBGbGF0ZVN0cmVhbShlLGkpO2Nhc2UiTFpXIjpjYXNlIkxaV0RlY29kZSI6bGV0IHQ9MTtpZihhKXthLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9YS5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBMWldTdHJlYW0oZSxpLHQpLGksYSl9cmV0dXJuIG5ldyBMWldTdHJlYW0oZSxpLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6cmV0dXJuIG5ldyBKcGVnU3RyZWFtKGUsaSxhKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOnJldHVybiBuZXcgSnB4U3RyZWFtKGUsaSxhKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpODVTdHJlYW0oZSxpKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6cmV0dXJuIG5ldyBBc2NpaUhleFN0cmVhbShlLGkpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpyZXR1cm4gbmV3IENDSVRURmF4U3RyZWFtKGUsaSxhKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6cmV0dXJuIG5ldyBSdW5MZW5ndGhTdHJlYW0oZSxpKTtjYXNlIkpCSUcyRGVjb2RlIjpyZXR1cm4gbmV3IEpiaWcyU3RyZWFtKGUsaSxhKX13YXJuKGBGaWx0ZXIgIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWQuYCk7cmV0dXJuIGV9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgTnVsbFN0cmVhbX19fWNvbnN0IElpPVsxLDAsMCwwLDAsMCwwLDAsMCwxLDEsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDIsMCwwLDIsMiwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTtmdW5jdGlvbiB0b0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTc/MTUmZTplPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDI/OSsoMTUmZSk6LTF9Y2xhc3MgTGV4ZXJ7Y29uc3RydWN0b3IoZSx0PW51bGwpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdO3RoaXMua25vd25Db21tYW5kcz10O3RoaXMuX2hleFN0cmluZ051bVdhcm49MDt0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9LTF9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cGVla0NoYXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0J5dGUoKX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyLHQ9ITEsaT0wLGE9MTtpZig0NT09PWUpe2E9LTE7ZT10aGlzLm5leHRDaGFyKCk7NDU9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpfWVsc2UgNDM9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpO2lmKDEwPT09ZXx8MTM9PT1lKWRve2U9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKDEwPT09ZXx8MTM9PT1lKTtpZig0Nj09PWUpe2k9MTA7ZT10aGlzLm5leHRDaGFyKCl9aWYoZTw0OHx8ZT41Nyl7Y29uc3QgdD1gSW52YWxpZCBudW1iZXI6ICR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0gKGNoYXJDb2RlICR7ZX0pYDtpZihpc1doaXRlU3BhY2UoZSl8fC0xPT09ZSl7aW5mbyhgTGV4ZXIuZ2V0TnVtYmVyIC0gIiR7dH0iLmApO3JldHVybiAwfXRocm93IG5ldyBGb3JtYXRFcnJvcih0KX1sZXQgcj1lLTQ4LHM9MCxuPTE7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wOylpZihlPj00OCYmZTw9NTcpe2NvbnN0IGE9ZS00ODtpZih0KXM9MTAqcythO2Vsc2V7MCE9PWkmJihpKj0xMCk7cj0xMCpyK2F9fWVsc2UgaWYoNDY9PT1lKXtpZigwIT09aSlicmVhaztpPTF9ZWxzZSBpZig0NT09PWUpd2FybigiQmFkbHkgZm9ybWF0dGVkIG51bWJlcjogbWludXMgc2lnbiBpbiB0aGUgbWlkZGxlIik7ZWxzZXtpZig2OSE9PWUmJjEwMSE9PWUpYnJlYWs7ZT10aGlzLnBlZWtDaGFyKCk7aWYoNDM9PT1lfHw0NT09PWUpe249NDU9PT1lPy0xOjE7dGhpcy5uZXh0Q2hhcigpfWVsc2UgaWYoZTw0OHx8ZT41NylicmVhazt0PSEwfTAhPT1pJiYoci89aSk7dCYmKHIqPTEwKioobipzKSk7cmV0dXJuIGEqcn1nZXRTdHJpbmcoKXtsZXQgZT0xLHQ9ITE7Y29uc3QgaT10aGlzLnN0ckJ1ZjtpLmxlbmd0aD0wO2xldCBhPXRoaXMubmV4dENoYXIoKTtmb3IoOzspe2xldCByPSExO3N3aXRjaCgwfGEpe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDQwOisrZTtpLnB1c2goIigiKTticmVhaztjYXNlIDQxOmlmKDA9PS0tZSl7dGhpcy5uZXh0Q2hhcigpO3Q9ITB9ZWxzZSBpLnB1c2goIikiKTticmVhaztjYXNlIDkyOmE9dGhpcy5uZXh0Q2hhcigpO3N3aXRjaChhKXtjYXNlLTE6d2FybigiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSAxMTA6aS5wdXNoKCJcbiIpO2JyZWFrO2Nhc2UgMTE0OmkucHVzaCgiXHIiKTticmVhaztjYXNlIDExNjppLnB1c2goIlx0Iik7YnJlYWs7Y2FzZSA5ODppLnB1c2goIlxiIik7YnJlYWs7Y2FzZSAxMDI6aS5wdXNoKCJcZiIpO2JyZWFrO2Nhc2UgOTI6Y2FzZSA0MDpjYXNlIDQxOmkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKTticmVhaztjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6bGV0IGU9MTUmYTthPXRoaXMubmV4dENoYXIoKTtyPSEwO2lmKGE+PTQ4JiZhPD01NSl7ZT0oZTw8MykrKDE1JmEpO2E9dGhpcy5uZXh0Q2hhcigpO2lmKGE+PTQ4JiZhPD01NSl7cj0hMTtlPShlPDwzKSsoMTUmYSl9fWkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTticmVhaztjYXNlIDEzOjEwPT09dGhpcy5wZWVrQ2hhcigpJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWs7Y2FzZSAxMDpicmVhaztkZWZhdWx0OmkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX1icmVhaztkZWZhdWx0OmkucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKX1pZih0KWJyZWFrO3J8fChhPXRoaXMubmV4dENoYXIoKSl9cmV0dXJuIGkuam9pbigiIil9Z2V0TmFtZSgpe2xldCBlLHQ7Y29uc3QgaT10aGlzLnN0ckJ1ZjtpLmxlbmd0aD0wO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmIUlpW2VdOylpZigzNT09PWUpe2U9dGhpcy5uZXh0Q2hhcigpO2lmKElpW2VdKXt3YXJuKCJMZXhlcl9nZXROYW1lOiBOVU1CRVIgU0lHTiAoIykgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGEgaGV4YWRlY2ltYWwgbnVtYmVyLiIpO2kucHVzaCgiIyIpO2JyZWFrfWNvbnN0IGE9dG9IZXhEaWdpdChlKTtpZigtMSE9PWEpe3Q9ZTtlPXRoaXMubmV4dENoYXIoKTtjb25zdCByPXRvSGV4RGlnaXQoZSk7aWYoLTE9PT1yKXt3YXJuKGBMZXhlcl9nZXROYW1lOiBJbGxlZ2FsIGRpZ2l0ICgke1N0cmluZy5mcm9tQ2hhckNvZGUoZSl9KSBpbiBoZXhhZGVjaW1hbCBudW1iZXIuYCk7aS5wdXNoKCIjIixTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtpZihJaVtlXSlicmVhaztpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29udGludWV9aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYTw8NHxyKSl9ZWxzZSBpLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpfWVsc2UgaS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2kubGVuZ3RoPjEyNyYmd2FybihgTmFtZSB0b2tlbiBpcyBsb25nZXIgdGhhbiBhbGxvd2VkIGJ5IHRoZSBzcGVjOiAke2kubGVuZ3RofWApO3JldHVybiBOYW1lLmdldChpLmpvaW4oIiIpKX1faGV4U3RyaW5nV2FybihlKXs1IT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHx3YXJuKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOndhcm4oImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdCxpLGE9dGhpcy5jdXJyZW50Q2hhcixyPSEwO3RoaXMuX2hleFN0cmluZ051bVdhcm49MDtmb3IoOzspe2lmKGE8MCl7d2FybigiVW50ZXJtaW5hdGVkIGhleCBzdHJpbmciKTticmVha31pZig2Mj09PWEpe3RoaXMubmV4dENoYXIoKTticmVha31pZigxIT09SWlbYV0pe2lmKHIpe3Q9dG9IZXhEaWdpdChhKTtpZigtMT09PXQpe3RoaXMuX2hleFN0cmluZ1dhcm4oYSk7YT10aGlzLm5leHRDaGFyKCk7Y29udGludWV9fWVsc2V7aT10b0hleERpZ2l0KGEpO2lmKC0xPT09aSl7dGhpcy5faGV4U3RyaW5nV2FybihhKTthPXRoaXMubmV4dENoYXIoKTtjb250aW51ZX1lLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0PDw0fGkpKX1yPSFyO2E9dGhpcy5uZXh0Q2hhcigpfWVsc2UgYT10aGlzLm5leHRDaGFyKCl9cmV0dXJuIGUuam9pbigiIil9Z2V0T2JqKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybiBwdDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKDEhPT1JaVt0XSlicmVhazt0PXRoaXMubmV4dENoYXIoKX1zd2l0Y2goMHx0KXtjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNTI6Y2FzZSA1MzpjYXNlIDU0OmNhc2UgNTU6Y2FzZSA1NjpjYXNlIDU3OmNhc2UgNDM6Y2FzZSA0NTpjYXNlIDQ2OnJldHVybiB0aGlzLmdldE51bWJlcigpO2Nhc2UgNDA6cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKCk7Y2FzZSA0NzpyZXR1cm4gdGhpcy5nZXROYW1lKCk7Y2FzZSA5MTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIlsiKTtjYXNlIDkzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiXSIpO2Nhc2UgNjA6dD10aGlzLm5leHRDaGFyKCk7aWYoNjA9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIjw8Iil9cmV0dXJuIHRoaXMuZ2V0SGV4U3RyaW5nKCk7Y2FzZSA2Mjp0PXRoaXMubmV4dENoYXIoKTtpZig2Mj09PXQpe3RoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgiPj4iKX1yZXR1cm4gQ21kLmdldCgiPiIpO2Nhc2UgMTIzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgieyIpO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gQ21kLmdldCgifSIpO2Nhc2UgNDE6dGhpcy5uZXh0Q2hhcigpO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgSWxsZWdhbCBjaGFyYWN0ZXI6ICR7dH1gKX1sZXQgaT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHQ8MzJ8fHQ+MTI3KXtjb25zdCBlPXRoaXMucGVla0NoYXIoKTtpZihlPj0zMiYmZTw9MTI3KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoaSl9fWNvbnN0IGE9dGhpcy5rbm93bkNvbW1hbmRzO2xldCByPXZvaWQgMCE9PWE/LltpXTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJiFJaVt0XTspe2NvbnN0IGU9aStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2lmKHImJnZvaWQgMD09PWFbZV0pYnJlYWs7aWYoMTI4PT09aS5sZW5ndGgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBDb21tYW5kIHRva2VuIHRvbyBsb25nOiAke2kubGVuZ3RofWApO2k9ZTtyPXZvaWQgMCE9PWE/LltpXX1pZigidHJ1ZSI9PT1pKXJldHVybiEwO2lmKCJmYWxzZSI9PT1pKXJldHVybiExO2lmKCJudWxsIj09PWkpcmV0dXJuIG51bGw7IkJJIj09PWkmJih0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9dGhpcy5zdHJlYW0ucG9zKTtyZXR1cm4gQ21kLmdldChpKX1za2lwVG9OZXh0TGluZSgpe2xldCBlPXRoaXMuY3VycmVudENoYXI7Zm9yKDtlPj0wOyl7aWYoMTM9PT1lKXtlPXRoaXMubmV4dENoYXIoKTsxMD09PWUmJnRoaXMubmV4dENoYXIoKTticmVha31pZigxMD09PWUpe3RoaXMubmV4dENoYXIoKTticmVha31lPXRoaXMubmV4dENoYXIoKX19fWNsYXNzIExpbmVhcml6YXRpb257c3RhdGljIGNyZWF0ZShlKXtmdW5jdGlvbiBnZXRJbnQoZSx0LGk9ITEpe2NvbnN0IGE9ZS5nZXQodCk7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSYmKGk/YT49MDphPjApKXJldHVybiBhO3Rocm93IG5ldyBFcnJvcihgVGhlICIke3R9IiBwYXJhbWV0ZXIgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfWNvbnN0IHQ9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGUpLHhyZWY6bnVsbH0pLGk9dC5nZXRPYmooKSxhPXQuZ2V0T2JqKCkscj10LmdldE9iaigpLHM9dC5nZXRPYmooKTtsZXQgbixvO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihpKSYmTnVtYmVyLmlzSW50ZWdlcihhKSYmaXNDbWQociwib2JqIikmJnMgaW5zdGFuY2VvZiBEaWN0JiYibnVtYmVyIj09dHlwZW9mKG49cy5nZXQoIkxpbmVhcml6ZWQiKSkmJm4+MCkpcmV0dXJuIG51bGw7aWYoKG89Z2V0SW50KHMsIkwiKSkhPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoJ1RoZSAiTCIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lcyBub3QgZXF1YWwgdGhlIHN0cmVhbSBsZW5ndGguJyk7cmV0dXJue2xlbmd0aDpvLGhpbnRzOmZ1bmN0aW9uIGdldEhpbnRzKGUpe2NvbnN0IHQ9ZS5nZXQoIkgiKTtsZXQgaTtpZihBcnJheS5pc0FycmF5KHQpJiYoMj09PShpPXQubGVuZ3RoKXx8ND09PWkpKXtmb3IobGV0IGU9MDtlPGk7ZSsrKXtjb25zdCBpPXRbZV07aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGkpJiZpPjApKXRocm93IG5ldyBFcnJvcihgSGludCAoJHtlfSkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLmApfXJldHVybiB0fXRocm93IG5ldyBFcnJvcigiSGludCBhcnJheSBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9KHMpLG9iamVjdE51bWJlckZpcnN0OmdldEludChzLCJPIiksZW5kRmlyc3Q6Z2V0SW50KHMsIkUiKSxudW1QYWdlczpnZXRJbnQocywiTiIpLG1haW5YUmVmRW50cmllc09mZnNldDpnZXRJbnQocywiVCIpLHBhZ2VGaXJzdDpzLmhhcygiUCIpP2dldEludChzLCJQIiwhMCk6MH19fWNvbnN0IGhpPVsiQWRvYmUtR0IxLVVDUzIiLCJBZG9iZS1DTlMxLVVDUzIiLCJBZG9iZS1KYXBhbjEtVUNTMiIsIkFkb2JlLUtvcmVhMS1VQ1MyIiwiNzgtRVVDLUgiLCI3OC1FVUMtViIsIjc4LUgiLCI3OC1SS1NKLUgiLCI3OC1SS1NKLVYiLCI3OC1WIiwiNzhtcy1SS1NKLUgiLCI3OG1zLVJLU0otViIsIjgzcHYtUktTSi1IIiwiOTBtcy1SS1NKLUgiLCI5MG1zLVJLU0otViIsIjkwbXNwLVJLU0otSCIsIjkwbXNwLVJLU0otViIsIjkwcHYtUktTSi1IIiwiOTBwdi1SS1NKLVYiLCJBZGQtSCIsIkFkZC1SS1NKLUgiLCJBZGQtUktTSi1WIiwiQWRkLVYiLCJBZG9iZS1DTlMxLTAiLCJBZG9iZS1DTlMxLTEiLCJBZG9iZS1DTlMxLTIiLCJBZG9iZS1DTlMxLTMiLCJBZG9iZS1DTlMxLTQiLCJBZG9iZS1DTlMxLTUiLCJBZG9iZS1DTlMxLTYiLCJBZG9iZS1HQjEtMCIsIkFkb2JlLUdCMS0xIiwiQWRvYmUtR0IxLTIiLCJBZG9iZS1HQjEtMyIsIkFkb2JlLUdCMS00IiwiQWRvYmUtR0IxLTUiLCJBZG9iZS1KYXBhbjEtMCIsIkFkb2JlLUphcGFuMS0xIiwiQWRvYmUtSmFwYW4xLTIiLCJBZG9iZS1KYXBhbjEtMyIsIkFkb2JlLUphcGFuMS00IiwiQWRvYmUtSmFwYW4xLTUiLCJBZG9iZS1KYXBhbjEtNiIsIkFkb2JlLUtvcmVhMS0wIiwiQWRvYmUtS29yZWExLTEiLCJBZG9iZS1Lb3JlYTEtMiIsIkI1LUgiLCJCNS1WIiwiQjVwYy1IIiwiQjVwYy1WIiwiQ05TLUVVQy1IIiwiQ05TLUVVQy1WIiwiQ05TMS1IIiwiQ05TMS1WIiwiQ05TMi1IIiwiQ05TMi1WIiwiRVRISy1CNS1IIiwiRVRISy1CNS1WIiwiRVRlbi1CNS1IIiwiRVRlbi1CNS1WIiwiRVRlbm1zLUI1LUgiLCJFVGVubXMtQjUtViIsIkVVQy1IIiwiRVVDLVYiLCJFeHQtSCIsIkV4dC1SS1NKLUgiLCJFeHQtUktTSi1WIiwiRXh0LVYiLCJHQi1FVUMtSCIsIkdCLUVVQy1WIiwiR0ItSCIsIkdCLVYiLCJHQkstRVVDLUgiLCJHQkstRVVDLVYiLCJHQksySy1IIiwiR0JLMkstViIsIkdCS3AtRVVDLUgiLCJHQktwLUVVQy1WIiwiR0JULUVVQy1IIiwiR0JULUVVQy1WIiwiR0JULUgiLCJHQlQtViIsIkdCVHBjLUVVQy1IIiwiR0JUcGMtRVVDLVYiLCJHQnBjLUVVQy1IIiwiR0JwYy1FVUMtViIsIkgiLCJIS2RsYS1CNS1IIiwiSEtkbGEtQjUtViIsIkhLZGxiLUI1LUgiLCJIS2RsYi1CNS1WIiwiSEtnY2NzLUI1LUgiLCJIS2djY3MtQjUtViIsIkhLbTMxNC1CNS1IIiwiSEttMzE0LUI1LVYiLCJIS200NzEtQjUtSCIsIkhLbTQ3MS1CNS1WIiwiSEtzY3MtQjUtSCIsIkhLc2NzLUI1LVYiLCJIYW5rYWt1IiwiSGlyYWdhbmEiLCJLU0MtRVVDLUgiLCJLU0MtRVVDLVYiLCJLU0MtSCIsIktTQy1Kb2hhYi1IIiwiS1NDLUpvaGFiLVYiLCJLU0MtViIsIktTQ21zLVVIQy1IIiwiS1NDbXMtVUhDLUhXLUgiLCJLU0Ntcy1VSEMtSFctViIsIktTQ21zLVVIQy1WIiwiS1NDcGMtRVVDLUgiLCJLU0NwYy1FVUMtViIsIkthdGFrYW5hIiwiTldQLUgiLCJOV1AtViIsIlJLU0otSCIsIlJLU0otViIsIlJvbWFuIiwiVW5pQ05TLVVDUzItSCIsIlVuaUNOUy1VQ1MyLVYiLCJVbmlDTlMtVVRGMTYtSCIsIlVuaUNOUy1VVEYxNi1WIiwiVW5pQ05TLVVURjMyLUgiLCJVbmlDTlMtVVRGMzItViIsIlVuaUNOUy1VVEY4LUgiLCJVbmlDTlMtVVRGOC1WIiwiVW5pR0ItVUNTMi1IIiwiVW5pR0ItVUNTMi1WIiwiVW5pR0ItVVRGMTYtSCIsIlVuaUdCLVVURjE2LVYiLCJVbmlHQi1VVEYzMi1IIiwiVW5pR0ItVVRGMzItViIsIlVuaUdCLVVURjgtSCIsIlVuaUdCLVVURjgtViIsIlVuaUpJUy1VQ1MyLUgiLCJVbmlKSVMtVUNTMi1IVy1IIiwiVW5pSklTLVVDUzItSFctViIsIlVuaUpJUy1VQ1MyLVYiLCJVbmlKSVMtVVRGMTYtSCIsIlVuaUpJUy1VVEYxNi1WIiwiVW5pSklTLVVURjMyLUgiLCJVbmlKSVMtVVRGMzItViIsIlVuaUpJUy1VVEY4LUgiLCJVbmlKSVMtVVRGOC1WIiwiVW5pSklTMjAwNC1VVEYxNi1IIiwiVW5pSklTMjAwNC1VVEYxNi1WIiwiVW5pSklTMjAwNC1VVEYzMi1IIiwiVW5pSklTMjAwNC1VVEYzMi1WIiwiVW5pSklTMjAwNC1VVEY4LUgiLCJVbmlKSVMyMDA0LVVURjgtViIsIlVuaUpJU1Byby1VQ1MyLUhXLVYiLCJVbmlKSVNQcm8tVUNTMi1WIiwiVW5pSklTUHJvLVVURjgtViIsIlVuaUpJU1gwMjEzLVVURjMyLUgiLCJVbmlKSVNYMDIxMy1VVEYzMi1WIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLUgiLCJVbmlKSVNYMDIxMzIwMDQtVVRGMzItViIsIlVuaUtTLVVDUzItSCIsIlVuaUtTLVVDUzItViIsIlVuaUtTLVVURjE2LUgiLCJVbmlLUy1VVEYxNi1WIiwiVW5pS1MtVVRGMzItSCIsIlVuaUtTLVVURjMyLVYiLCJVbmlLUy1VVEY4LUgiLCJVbmlLUy1VVEY4LVYiLCJWIiwiV1AtU3ltYm9sIl0sbGk9MioqMjQtMTtjbGFzcyBDTWFwe2NvbnN0cnVjdG9yKGU9ITEpe3RoaXMuY29kZXNwYWNlUmFuZ2VzPVtbXSxbXSxbXSxbXV07dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXM9MDt0aGlzLl9tYXA9W107dGhpcy5uYW1lPSIiO3RoaXMudmVydGljYWw9ITE7dGhpcy51c2VDTWFwPW51bGw7dGhpcy5idWlsdEluQ01hcD1lfWFkZENvZGVzcGFjZVJhbmdlKGUsdCxpKXt0aGlzLmNvZGVzcGFjZVJhbmdlc1tlLTFdLnB1c2godCxpKTt0aGlzLm51bUNvZGVzcGFjZVJhbmdlcysrfW1hcENpZFJhbmdlKGUsdCxpKXtpZih0LWU+bGkpdGhyb3cgbmV3IEVycm9yKCJtYXBDaWRSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtmb3IoO2U8PXQ7KXRoaXMuX21hcFtlKytdPWkrK31tYXBCZlJhbmdlKGUsdCxpKXtpZih0LWU+bGkpdGhyb3cgbmV3IEVycm9yKCJtYXBCZlJhbmdlIC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IGE9aS5sZW5ndGgtMTtmb3IoO2U8PXQ7KXt0aGlzLl9tYXBbZSsrXT1pO2NvbnN0IHQ9aS5jaGFyQ29kZUF0KGEpKzE7dD4yNTU/aT1pLnN1YnN0cmluZygwLGEtMSkrU3RyaW5nLmZyb21DaGFyQ29kZShpLmNoYXJDb2RlQXQoYS0xKSsxKSsiXDAiOmk9aS5zdWJzdHJpbmcoMCxhKStTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfX1tYXBCZlJhbmdlVG9BcnJheShlLHQsaSl7aWYodC1lPmxpKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZVRvQXJyYXkgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Y29uc3QgYT1pLmxlbmd0aDtsZXQgcj0wO2Zvcig7ZTw9dCYmcjxhOyl7dGhpcy5fbWFwW2VdPWlbcisrXTsrK2V9fW1hcE9uZShlLHQpe3RoaXMuX21hcFtlXT10fWxvb2t1cChlKXtyZXR1cm4gdGhpcy5fbWFwW2VdfWNvbnRhaW5zKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Zm9yRWFjaChlKXtjb25zdCB0PXRoaXMuX21hcCxpPXQubGVuZ3RoO2lmKGk8PTY1NTM2KWZvcihsZXQgYT0wO2E8aTthKyspdm9pZCAwIT09dFthXSYmZShhLHRbYV0pO2Vsc2UgZm9yKGNvbnN0IGkgaW4gdCllKGksdFtpXSl9Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgaSBpbiB0KWlmKHRbaV09PT1lKXJldHVybiAwfGk7cmV0dXJuLTF9Z2V0TWFwKCl7cmV0dXJuIHRoaXMuX21hcH1yZWFkQ2hhckNvZGUoZSx0LGkpe2xldCBhPTA7Y29uc3Qgcj10aGlzLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IHM9MCxuPXIubGVuZ3RoO3M8bjtzKyspe2E9KGE8PDh8ZS5jaGFyQ29kZUF0KHQrcykpPj4+MDtjb25zdCBuPXJbc107Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7KXtjb25zdCB0PW5bZSsrXSxyPW5bZSsrXTtpZihhPj10JiZhPD1yKXtpLmNoYXJjb2RlPWE7aS5sZW5ndGg9cysxO3JldHVybn19fWkuY2hhcmNvZGU9MDtpLmxlbmd0aD0xfWdldENoYXJDb2RlTGVuZ3RoKGUpe2NvbnN0IHQ9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXRbaV07Zm9yKGxldCB0PTAscj1hLmxlbmd0aDt0PHI7KXtjb25zdCByPWFbdCsrXSxzPWFbdCsrXTtpZihlPj1yJiZlPD1zKXJldHVybiBpKzF9fXJldHVybiAxfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1nZXQgaXNJZGVudGl0eUNNYXAoKXtpZigiSWRlbnRpdHktSCIhPT10aGlzLm5hbWUmJiJJZGVudGl0eS1WIiE9PXRoaXMubmFtZSlyZXR1cm4hMTtpZig2NTUzNiE9PXRoaXMuX21hcC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTA7ZTw2NTUzNjtlKyspaWYodGhpcy5fbWFwW2VdIT09ZSlyZXR1cm4hMTtyZXR1cm4hMH19Y2xhc3MgSWRlbnRpdHlDTWFwIGV4dGVuZHMgQ01hcHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCk7dGhpcy52ZXJ0aWNhbD1lO3RoaXMuYWRkQ29kZXNwYWNlUmFuZ2UodCwwLDY1NTM1KX1tYXBDaWRSYW5nZShlLHQsaSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRSYW5nZSIpfW1hcEJmUmFuZ2UoZSx0LGkpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQmZSYW5nZSIpfW1hcEJmUmFuZ2VUb0FycmF5KGUsdCxpKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2VUb0FycmF5Iil9bWFwT25lKGUsdCl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBDaWRPbmUiKX1sb29rdXAoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6dm9pZCAwfWNvbnRhaW5zKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNX1mb3JFYWNoKGUpe2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllKHQsdCl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzU/ZTotMX1nZXRNYXAoKXtjb25zdCBlPW5ldyBBcnJheSg2NTUzNik7Zm9yKGxldCB0PTA7dDw9NjU1MzU7dCsrKWVbdF09dDtyZXR1cm4gZX1nZXQgbGVuZ3RoKCl7cmV0dXJuIDY1NTM2fWdldCBpc0lkZW50aXR5Q01hcCgpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGFjY2VzcyAuaXNJZGVudGl0eUNNYXAiKX19ZnVuY3Rpb24gc3RyVG9JbnQoZSl7bGV0IHQ9MDtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl0PXQ8PDh8ZS5jaGFyQ29kZUF0KGkpO3JldHVybiB0Pj4+MH1mdW5jdGlvbiBleHBlY3RTdHJpbmcoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIHN0cmluZy4iKX1mdW5jdGlvbiBleHBlY3RJbnQoZSl7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYWxmb3JtZWQgQ01hcDogZXhwZWN0ZWQgaW50LiIpfWZ1bmN0aW9uIHBhcnNlQmZDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1wdClicmVhaztpZihpc0NtZChpLCJlbmRiZmNoYXIiKSlyZXR1cm47ZXhwZWN0U3RyaW5nKGkpO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2V4cGVjdFN0cmluZyhpKTtjb25zdCByPWk7ZS5tYXBPbmUoYSxyKX19ZnVuY3Rpb24gcGFyc2VCZlJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1wdClicmVhaztpZihpc0NtZChpLCJlbmRiZnJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7aWYoTnVtYmVyLmlzSW50ZWdlcihpKXx8InN0cmluZyI9PXR5cGVvZiBpKXtjb25zdCB0PU51bWJlci5pc0ludGVnZXIoaSk/U3RyaW5nLmZyb21DaGFyQ29kZShpKTppO2UubWFwQmZSYW5nZShhLHIsdCl9ZWxzZXtpZighaXNDbWQoaSwiWyIpKWJyZWFrO3tpPXQuZ2V0T2JqKCk7Y29uc3Qgcz1bXTtmb3IoOyFpc0NtZChpLCJdIikmJmkhPT1wdDspe3MucHVzaChpKTtpPXQuZ2V0T2JqKCl9ZS5tYXBCZlJhbmdlVG9BcnJheShhLHIscyl9fX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgYmYgcmFuZ2UuIil9ZnVuY3Rpb24gcGFyc2VDaWRDaGFyKGUsdCl7Zm9yKDs7KXtsZXQgaT10LmdldE9iaigpO2lmKGk9PT1wdClicmVhaztpZihpc0NtZChpLCJlbmRjaWRjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RJbnQoaSk7Y29uc3Qgcj1pO2UubWFwT25lKGEscil9fWZ1bmN0aW9uIHBhcnNlQ2lkUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBpPXQuZ2V0T2JqKCk7aWYoaT09PXB0KWJyZWFrO2lmKGlzQ21kKGksImVuZGNpZHJhbmdlIikpcmV0dXJuO2V4cGVjdFN0cmluZyhpKTtjb25zdCBhPXN0clRvSW50KGkpO2k9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoaSk7Y29uc3Qgcj1zdHJUb0ludChpKTtpPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGkpO2NvbnN0IHM9aTtlLm1hcENpZFJhbmdlKGEscixzKX19ZnVuY3Rpb24gcGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGk9dC5nZXRPYmooKTtpZihpPT09cHQpYnJlYWs7aWYoaXNDbWQoaSwiZW5kY29kZXNwYWNlcmFuZ2UiKSlyZXR1cm47aWYoInN0cmluZyIhPXR5cGVvZiBpKWJyZWFrO2NvbnN0IGE9c3RyVG9JbnQoaSk7aT10LmdldE9iaigpO2lmKCJzdHJpbmciIT10eXBlb2YgaSlicmVhaztjb25zdCByPXN0clRvSW50KGkpO2UuYWRkQ29kZXNwYWNlUmFuZ2UoaS5sZW5ndGgsYSxyKX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgY29kZXNwYWNlIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlV01vZGUoZSx0KXtjb25zdCBpPXQuZ2V0T2JqKCk7TnVtYmVyLmlzSW50ZWdlcihpKSYmKGUudmVydGljYWw9ISFpKX1mdW5jdGlvbiBwYXJzZUNNYXBOYW1lKGUsdCl7Y29uc3QgaT10LmdldE9iaigpO2kgaW5zdGFuY2VvZiBOYW1lJiYoZS5uYW1lPWkubmFtZSl9YXN5bmMgZnVuY3Rpb24gcGFyc2VDTWFwKGUsdCxpLGEpe2xldCByLHM7QTpmb3IoOzspdHJ5e2NvbnN0IGk9dC5nZXRPYmooKTtpZihpPT09cHQpYnJlYWs7aWYoaSBpbnN0YW5jZW9mIE5hbWUpeyJXTW9kZSI9PT1pLm5hbWU/cGFyc2VXTW9kZShlLHQpOiJDTWFwTmFtZSI9PT1pLm5hbWUmJnBhcnNlQ01hcE5hbWUoZSx0KTtyPWl9ZWxzZSBpZihpIGluc3RhbmNlb2YgQ21kKXN3aXRjaChpLmNtZCl7Y2FzZSJlbmRjbWFwIjpicmVhayBBO2Nhc2UidXNlY21hcCI6ciBpbnN0YW5jZW9mIE5hbWUmJihzPXIubmFtZSk7YnJlYWs7Y2FzZSJiZWdpbmNvZGVzcGFjZXJhbmdlIjpwYXJzZUNvZGVzcGFjZVJhbmdlKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmY2hhciI6cGFyc2VCZkNoYXIoZSx0KTticmVhaztjYXNlImJlZ2luY2lkY2hhciI6cGFyc2VDaWRDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmJmcmFuZ2UiOnBhcnNlQmZSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5jaWRyYW5nZSI6cGFyc2VDaWRSYW5nZShlLHQpfX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJJbnZhbGlkIGNNYXAgZGF0YTogIitlKTtjb250aW51ZX0hYSYmcyYmKGE9cyk7cmV0dXJuIGE/ZXh0ZW5kQ01hcChlLGksYSk6ZX1hc3luYyBmdW5jdGlvbiBleHRlbmRDTWFwKGUsdCxpKXtlLnVzZUNNYXA9YXdhaXQgY3JlYXRlQnVpbHRJbkNNYXAoaSx0KTtpZigwPT09ZS5udW1Db2Rlc3BhY2VSYW5nZXMpe2NvbnN0IHQ9ZS51c2VDTWFwLmNvZGVzcGFjZVJhbmdlcztmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyllLmNvZGVzcGFjZVJhbmdlc1tpXT10W2ldLnNsaWNlKCk7ZS5udW1Db2Rlc3BhY2VSYW5nZXM9ZS51c2VDTWFwLm51bUNvZGVzcGFjZVJhbmdlc31lLnVzZUNNYXAuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtlLmNvbnRhaW5zKHQpfHxlLm1hcE9uZSh0LGUudXNlQ01hcC5sb29rdXAodCkpfSkpO3JldHVybiBlfWFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJ1aWx0SW5DTWFwKGUsdCl7aWYoIklkZW50aXR5LUgiPT09ZSlyZXR1cm4gbmV3IElkZW50aXR5Q01hcCghMSwyKTtpZigiSWRlbnRpdHktViI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCEwLDIpO2lmKCFoaS5pbmNsdWRlcyhlKSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gQ01hcCBuYW1lOiAiK2UpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiQnVpbHQtaW4gQ01hcCBwYXJhbWV0ZXJzIGFyZSBub3QgcHJvdmlkZWQuIik7Y29uc3R7Y01hcERhdGE6aSxjb21wcmVzc2lvblR5cGU6YX09YXdhaXQgdChlKSxyPW5ldyBDTWFwKCEwKTtpZihhPT09bUEuQklOQVJZKXJldHVybihuZXcgQmluYXJ5Q01hcFJlYWRlcikucHJvY2VzcyhpLHIsKGU9PmV4dGVuZENNYXAocix0LGUpKSk7aWYoYT09PW1BLk5PTkUpe2NvbnN0IGU9bmV3IExleGVyKG5ldyBTdHJlYW0oaSkpO3JldHVybiBwYXJzZUNNYXAocixlLHQsbnVsbCl9dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIENNYXAgImNvbXByZXNzaW9uVHlwZSIgdmFsdWU6ICR7YX1gKX1jbGFzcyBDTWFwRmFjdG9yeXtzdGF0aWMgYXN5bmMgY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dCx1c2VDTWFwOml9KXtpZihlIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLHQpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBhPWF3YWl0IHBhcnNlQ01hcChuZXcgQ01hcCxuZXcgTGV4ZXIoZSksdCxpKTtyZXR1cm4gYS5pc0lkZW50aXR5Q01hcD9jcmVhdGVCdWlsdEluQ01hcChhLm5hbWUsdCk6YX10aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIHJlcXVpcmVkLiIpfX1fX3dlYnBhY2tfcmVxdWlyZV9fKDE3OTUpO2NvbnN0IENpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIl0sQmk9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsImNvbW1hc3VwZXJpb3IiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwicGVyaW9kc3VwZXJpb3IiLCJxdWVzdGlvbnNtYWxsIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIiwiQWdyYXZlc21hbGwiLCJBYWN1dGVzbWFsbCIsIkFjaXJjdW1mbGV4c21hbGwiLCJBdGlsZGVzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXJpbmdzbWFsbCIsIkFFc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFYWN1dGVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWFjdXRlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJFdGhzbWFsbCIsIk50aWxkZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9jaXJjdW1mbGV4c21hbGwiLCJPdGlsZGVzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT0VzbWFsbCIsIk9zbGFzaHNtYWxsIiwiVWdyYXZlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVjaXJjdW1mbGV4c21hbGwiLCJVZGllcmVzaXNzbWFsbCIsIllhY3V0ZXNtYWxsIiwiVGhvcm5zbWFsbCIsIllkaWVyZXNpc3NtYWxsIl0sUWk9WyIubm90ZGVmIiwic3BhY2UiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiaHlwaGVuc3VwZXJpb3IiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiY2VudG9sZHN0eWxlIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwiZWlnaHRzdXBlcmlvciIsIm5pbmVzdXBlcmlvciIsInplcm9pbmZlcmlvciIsIm9uZWluZmVyaW9yIiwidHdvaW5mZXJpb3IiLCJ0aHJlZWluZmVyaW9yIiwiZm91cmluZmVyaW9yIiwiZml2ZWluZmVyaW9yIiwic2l4aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsIm5pbmVpbmZlcmlvciIsImNlbnRpbmZlcmlvciIsImRvbGxhcmluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJjb21tYWluZmVyaW9yIl0sRWk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCIiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCIiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCIiLCIiLCIiLCJpc3VwZXJpb3IiLCIiLCIiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCIiLCIiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsIiIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCIiLCIiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiIiwiRG90YWNjZW50c21hbGwiLCIiLCIiLCJNYWNyb25zbWFsbCIsIiIsIiIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIiIsIiIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSx1aT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImNlbnRvbGRzdHlsZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCIiLCJ0aHJlZXF1YXJ0ZXJzZW1kYXNoIiwiIiwicXVlc3Rpb25zbWFsbCIsIiIsIiIsIiIsIiIsIkV0aHNtYWxsIiwiIiwiIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsIiIsIiIsIiIsIiIsIiIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuaW5mZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCJhc3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJBYWN1dGVzbWFsbCIsIkFncmF2ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkFkaWVyZXNpc3NtYWxsIiwiQXRpbGRlc21hbGwiLCJBcmluZ3NtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWdyYXZlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJYWN1dGVzbWFsbCIsIklncmF2ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiTnRpbGRlc21hbGwiLCJPYWN1dGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk9kaWVyZXNpc3NtYWxsIiwiT3RpbGRlc21hbGwiLCJVYWN1dGVzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiIiwiZWlnaHRzdXBlcmlvciIsImZvdXJpbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJzZXZlbmluZmVyaW9yIiwiU2Nhcm9uc21hbGwiLCIiLCJjZW50aW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsIiIsIkRpZXJlc2lzc21hbGwiLCIiLCJDYXJvbnNtYWxsIiwib3N1cGVyaW9yIiwiZml2ZWluZmVyaW9yIiwiIiwiY29tbWFpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiWWFjdXRlc21hbGwiLCIiLCJkb2xsYXJpbmZlcmlvciIsIiIsIiIsIlRob3Juc21hbGwiLCIiLCJuaW5laW5mZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJaY2Fyb25zbWFsbCIsIkFFc21hbGwiLCJPc2xhc2hzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25laW5mZXJpb3IiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIiIsIkNlZGlsbGFzbWFsbCIsIiIsIiIsIiIsIiIsIiIsIk9Fc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCIiLCJZZGllcmVzaXNzbWFsbCIsIiIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiZm91cnN1cGVyaW9yIiwiZml2ZXN1cGVyaW9yIiwic2l4c3VwZXJpb3IiLCJzZXZlbnN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb3N1cGVyaW9yIiwiIiwiZXN1cGVyaW9yIiwicnN1cGVyaW9yIiwidHN1cGVyaW9yIiwiIiwiIiwiaXN1cGVyaW9yIiwic3N1cGVyaW9yIiwiZHN1cGVyaW9yIiwiIiwiIiwiIiwiIiwiIiwibHN1cGVyaW9yIiwiT2dvbmVrc21hbGwiLCJCcmV2ZXNtYWxsIiwiTWFjcm9uc21hbGwiLCJic3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJjb21tYXN1cGVyaW9yIiwicGVyaW9kc3VwZXJpb3IiLCJEb3RhY2NlbnRzbWFsbCIsIlJpbmdzbWFsbCIsIiIsIiIsIiIsIiJdLGRpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIiIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJzcGFjZSIsIkFncmF2ZSIsIkF0aWxkZSIsIk90aWxkZSIsIk9FIiwib2UiLCJlbmRhc2giLCJlbWRhc2giLCJxdW90ZWRibGxlZnQiLCJxdW90ZWRibHJpZ2h0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsImRpdmlkZSIsImxvemVuZ2UiLCJ5ZGllcmVzaXMiLCJZZGllcmVzaXMiLCJmcmFjdGlvbiIsImN1cnJlbmN5IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJwZXJ0aG91c2FuZCIsIkFjaXJjdW1mbGV4IiwiRWNpcmN1bWZsZXgiLCJBYWN1dGUiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiYXBwbGUiLCJPZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVncmF2ZSIsImRvdGxlc3NpIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIl0sZmk9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsIiIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwiIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwiIiwicXVlc3Rpb25kb3duIiwiIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCIiLCJyaW5nIiwiY2VkaWxsYSIsIiIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiQUUiLCIiLCJvcmRmZW1pbmluZSIsIiIsIiIsIiIsIiIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiIiwiIiwiIiwiIiwiIiwiYWUiLCIiLCIiLCIiLCJkb3RsZXNzaSIsIiIsIiIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIiIsIiIsIiIsIiJdLHBpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImJ1bGxldCIsIkV1cm8iLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsImZsb3JpbiIsInF1b3RlZGJsYmFzZSIsImVsbGlwc2lzIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwiY2lyY3VtZmxleCIsInBlcnRob3VzYW5kIiwiU2Nhcm9uIiwiZ3VpbHNpbmdsbGVmdCIsIk9FIiwiYnVsbGV0IiwiWmNhcm9uIiwiYnVsbGV0IiwiYnVsbGV0IiwicXVvdGVsZWZ0IiwicXVvdGVyaWdodCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJidWxsZXQiLCJlbmRhc2giLCJlbWRhc2giLCJ0aWxkZSIsInRyYWRlbWFyayIsInNjYXJvbiIsImd1aWxzaW5nbHJpZ2h0Iiwib2UiLCJidWxsZXQiLCJ6Y2Fyb24iLCJZZGllcmVzaXMiLCJzcGFjZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJjdXJyZW5jeSIsInllbiIsImJyb2tlbmJhciIsInNlY3Rpb24iLCJkaWVyZXNpcyIsImNvcHlyaWdodCIsIm9yZGZlbWluaW5lIiwiZ3VpbGxlbW90bGVmdCIsImxvZ2ljYWxub3QiLCJoeXBoZW4iLCJyZWdpc3RlcmVkIiwibWFjcm9uIiwiZGVncmVlIiwicGx1c21pbnVzIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwiYWN1dGUiLCJtdSIsInBhcmFncmFwaCIsInBlcmlvZGNlbnRlcmVkIiwiY2VkaWxsYSIsIm9uZXN1cGVyaW9yIiwib3JkbWFzY3VsaW5lIiwiZ3VpbGxlbW90cmlnaHQiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd24iLCJBZ3JhdmUiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkF0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQUUiLCJDY2VkaWxsYSIsIkVncmF2ZSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiSWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJFdGgiLCJOdGlsZGUiLCJPZ3JhdmUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk90aWxkZSIsIk9kaWVyZXNpcyIsIm11bHRpcGx5IiwiT3NsYXNoIiwiVWdyYXZlIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJZYWN1dGUiLCJUaG9ybiIsImdlcm1hbmRibHMiLCJhZ3JhdmUiLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImF0aWxkZSIsImFkaWVyZXNpcyIsImFyaW5nIiwiYWUiLCJjY2VkaWxsYSIsImVncmF2ZSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJldGgiLCJudGlsZGUiLCJvZ3JhdmUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm90aWxkZSIsIm9kaWVyZXNpcyIsImRpdmlkZSIsIm9zbGFzaCIsInVncmF2ZSIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwieWFjdXRlIiwidGhvcm4iLCJ5ZGllcmVzaXMiXSxtaT1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwidW5pdmVyc2FsIiwibnVtYmVyc2lnbiIsImV4aXN0ZW50aWFsIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInN1Y2h0aGF0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrbWF0aCIsInBsdXMiLCJjb21tYSIsIm1pbnVzIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwiZml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJjb25ncnVlbnQiLCJBbHBoYSIsIkJldGEiLCJDaGkiLCJEZWx0YSIsIkVwc2lsb24iLCJQaGkiLCJHYW1tYSIsIkV0YSIsIklvdGEiLCJ0aGV0YTEiLCJLYXBwYSIsIkxhbWJkYSIsIk11IiwiTnUiLCJPbWljcm9uIiwiUGkiLCJUaGV0YSIsIlJobyIsIlNpZ21hIiwiVGF1IiwiVXBzaWxvbiIsInNpZ21hMSIsIk9tZWdhIiwiWGkiLCJQc2kiLCJaZXRhIiwiYnJhY2tldGxlZnQiLCJ0aGVyZWZvcmUiLCJicmFja2V0cmlnaHQiLCJwZXJwZW5kaWN1bGFyIiwidW5kZXJzY29yZSIsInJhZGljYWxleCIsImFscGhhIiwiYmV0YSIsImNoaSIsImRlbHRhIiwiZXBzaWxvbiIsInBoaSIsImdhbW1hIiwiZXRhIiwiaW90YSIsInBoaTEiLCJrYXBwYSIsImxhbWJkYSIsIm11IiwibnUiLCJvbWljcm9uIiwicGkiLCJ0aGV0YSIsInJobyIsInNpZ21hIiwidGF1IiwidXBzaWxvbiIsIm9tZWdhMSIsIm9tZWdhIiwieGkiLCJwc2kiLCJ6ZXRhIiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsInNpbWlsYXIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJFdXJvIiwiVXBzaWxvbjEiLCJtaW51dGUiLCJsZXNzZXF1YWwiLCJmcmFjdGlvbiIsImluZmluaXR5IiwiZmxvcmluIiwiY2x1YiIsImRpYW1vbmQiLCJoZWFydCIsInNwYWRlIiwiYXJyb3dib3RoIiwiYXJyb3dsZWZ0IiwiYXJyb3d1cCIsImFycm93cmlnaHQiLCJhcnJvd2Rvd24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJzZWNvbmQiLCJncmVhdGVyZXF1YWwiLCJtdWx0aXBseSIsInByb3BvcnRpb25hbCIsInBhcnRpYWxkaWZmIiwiYnVsbGV0IiwiZGl2aWRlIiwibm90ZXF1YWwiLCJlcXVpdmFsZW5jZSIsImFwcHJveGVxdWFsIiwiZWxsaXBzaXMiLCJhcnJvd3ZlcnRleCIsImFycm93aG9yaXpleCIsImNhcnJpYWdlcmV0dXJuIiwiYWxlcGgiLCJJZnJha3R1ciIsIlJmcmFrdHVyIiwid2VpZXJzdHJhc3MiLCJjaXJjbGVtdWx0aXBseSIsImNpcmNsZXBsdXMiLCJlbXB0eXNldCIsImludGVyc2VjdGlvbiIsInVuaW9uIiwicHJvcGVyc3VwZXJzZXQiLCJyZWZsZXhzdXBlcnNldCIsIm5vdHN1YnNldCIsInByb3BlcnN1YnNldCIsInJlZmxleHN1YnNldCIsImVsZW1lbnQiLCJub3RlbGVtZW50IiwiYW5nbGUiLCJncmFkaWVudCIsInJlZ2lzdGVyc2VyaWYiLCJjb3B5cmlnaHRzZXJpZiIsInRyYWRlbWFya3NlcmlmIiwicHJvZHVjdCIsInJhZGljYWwiLCJkb3RtYXRoIiwibG9naWNhbG5vdCIsImxvZ2ljYWxhbmQiLCJsb2dpY2Fsb3IiLCJhcnJvd2RibGJvdGgiLCJhcnJvd2RibGxlZnQiLCJhcnJvd2RibHVwIiwiYXJyb3dkYmxyaWdodCIsImFycm93ZGJsZG93biIsImxvemVuZ2UiLCJhbmdsZWxlZnQiLCJyZWdpc3RlcnNhbnMiLCJjb3B5cmlnaHRzYW5zIiwidHJhZGVtYXJrc2FucyIsInN1bW1hdGlvbiIsInBhcmVubGVmdHRwIiwicGFyZW5sZWZ0ZXgiLCJwYXJlbmxlZnRidCIsImJyYWNrZXRsZWZ0dHAiLCJicmFja2V0bGVmdGV4IiwiYnJhY2tldGxlZnRidCIsImJyYWNlbGVmdHRwIiwiYnJhY2VsZWZ0bWlkIiwiYnJhY2VsZWZ0YnQiLCJicmFjZWV4IiwiIiwiYW5nbGVyaWdodCIsImludGVncmFsIiwiaW50ZWdyYWx0cCIsImludGVncmFsZXgiLCJpbnRlZ3JhbGJ0IiwicGFyZW5yaWdodHRwIiwicGFyZW5yaWdodGV4IiwicGFyZW5yaWdodGJ0IiwiYnJhY2tldHJpZ2h0dHAiLCJicmFja2V0cmlnaHRleCIsImJyYWNrZXRyaWdodGJ0IiwiYnJhY2VyaWdodHRwIiwiYnJhY2VyaWdodG1pZCIsImJyYWNlcmlnaHRidCIsIiJdLHlpPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJhMSIsImEyIiwiYTIwMiIsImEzIiwiYTQiLCJhNSIsImExMTkiLCJhMTE4IiwiYTExNyIsImExMSIsImExMiIsImExMyIsImExNCIsImExNSIsImExNiIsImExMDUiLCJhMTciLCJhMTgiLCJhMTkiLCJhMjAiLCJhMjEiLCJhMjIiLCJhMjMiLCJhMjQiLCJhMjUiLCJhMjYiLCJhMjciLCJhMjgiLCJhNiIsImE3IiwiYTgiLCJhOSIsImExMCIsImEyOSIsImEzMCIsImEzMSIsImEzMiIsImEzMyIsImEzNCIsImEzNSIsImEzNiIsImEzNyIsImEzOCIsImEzOSIsImE0MCIsImE0MSIsImE0MiIsImE0MyIsImE0NCIsImE0NSIsImE0NiIsImE0NyIsImE0OCIsImE0OSIsImE1MCIsImE1MSIsImE1MiIsImE1MyIsImE1NCIsImE1NSIsImE1NiIsImE1NyIsImE1OCIsImE1OSIsImE2MCIsImE2MSIsImE2MiIsImE2MyIsImE2NCIsImE2NSIsImE2NiIsImE2NyIsImE2OCIsImE2OSIsImE3MCIsImE3MSIsImE3MiIsImE3MyIsImE3NCIsImEyMDMiLCJhNzUiLCJhMjA0IiwiYTc2IiwiYTc3IiwiYTc4IiwiYTc5IiwiYTgxIiwiYTgyIiwiYTgzIiwiYTg0IiwiYTk3IiwiYTk4IiwiYTk5IiwiYTEwMCIsIiIsImE4OSIsImE5MCIsImE5MyIsImE5NCIsImE5MSIsImE5MiIsImEyMDUiLCJhODUiLCJhMjA2IiwiYTg2IiwiYTg3IiwiYTg4IiwiYTk1IiwiYTk2IiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiYTEwMSIsImExMDIiLCJhMTAzIiwiYTEwNCIsImExMDYiLCJhMTA3IiwiYTEwOCIsImExMTIiLCJhMTExIiwiYTExMCIsImExMDkiLCJhMTIwIiwiYTEyMSIsImExMjIiLCJhMTIzIiwiYTEyNCIsImExMjUiLCJhMTI2IiwiYTEyNyIsImExMjgiLCJhMTI5IiwiYTEzMCIsImExMzEiLCJhMTMyIiwiYTEzMyIsImExMzQiLCJhMTM1IiwiYTEzNiIsImExMzciLCJhMTM4IiwiYTEzOSIsImExNDAiLCJhMTQxIiwiYTE0MiIsImExNDMiLCJhMTQ0IiwiYTE0NSIsImExNDYiLCJhMTQ3IiwiYTE0OCIsImExNDkiLCJhMTUwIiwiYTE1MSIsImExNTIiLCJhMTUzIiwiYTE1NCIsImExNTUiLCJhMTU2IiwiYTE1NyIsImExNTgiLCJhMTU5IiwiYTE2MCIsImExNjEiLCJhMTYzIiwiYTE2NCIsImExOTYiLCJhMTY1IiwiYTE5MiIsImExNjYiLCJhMTY3IiwiYTE2OCIsImExNjkiLCJhMTcwIiwiYTE3MSIsImExNzIiLCJhMTczIiwiYTE2MiIsImExNzQiLCJhMTc1IiwiYTE3NiIsImExNzciLCJhMTc4IiwiYTE3OSIsImExOTMiLCJhMTgwIiwiYTE5OSIsImExODEiLCJhMjAwIiwiYTE4MiIsIiIsImEyMDEiLCJhMTgzIiwiYTE4NCIsImExOTciLCJhMTg1IiwiYTE5NCIsImExOTgiLCJhMTg2IiwiYTE5NSIsImExODciLCJhMTg4IiwiYTE4OSIsImExOTAiLCJhMTkxIiwiIl07ZnVuY3Rpb24gZ2V0RW5jb2RpbmcoZSl7c3dpdGNoKGUpe2Nhc2UiV2luQW5zaUVuY29kaW5nIjpyZXR1cm4gcGk7Y2FzZSJTdGFuZGFyZEVuY29kaW5nIjpyZXR1cm4gZmk7Y2FzZSJNYWNSb21hbkVuY29kaW5nIjpyZXR1cm4gZGk7Y2FzZSJTeW1ib2xTZXRFbmNvZGluZyI6cmV0dXJuIG1pO2Nhc2UiWmFwZkRpbmdiYXRzRW5jb2RpbmciOnJldHVybiB5aTtjYXNlIkV4cGVydEVuY29kaW5nIjpyZXR1cm4gRWk7Y2FzZSJNYWNFeHBlcnRFbmNvZGluZyI6cmV0dXJuIHVpO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWNvbnN0IHdpPVsiLm5vdGRlZiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCJxdWVzdGlvbmRvd24iLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCJBRSIsIm9yZGZlbWluaW5lIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCJhZSIsImRvdGxlc3NpIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwib25lc3VwZXJpb3IiLCJsb2dpY2Fsbm90IiwibXUiLCJ0cmFkZW1hcmsiLCJFdGgiLCJvbmVoYWxmIiwicGx1c21pbnVzIiwiVGhvcm4iLCJvbmVxdWFydGVyIiwiZGl2aWRlIiwiYnJva2VuYmFyIiwiZGVncmVlIiwidGhvcm4iLCJ0aHJlZXF1YXJ0ZXJzIiwidHdvc3VwZXJpb3IiLCJyZWdpc3RlcmVkIiwibWludXMiLCJldGgiLCJtdWx0aXBseSIsInRocmVlc3VwZXJpb3IiLCJjb3B5cmlnaHQiLCJBYWN1dGUiLCJBY2lyY3VtZmxleCIsIkFkaWVyZXNpcyIsIkFncmF2ZSIsIkFyaW5nIiwiQXRpbGRlIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJFY2lyY3VtZmxleCIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiTnRpbGRlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJPZGllcmVzaXMiLCJPZ3JhdmUiLCJPdGlsZGUiLCJTY2Fyb24iLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIlVncmF2ZSIsIllhY3V0ZSIsIllkaWVyZXNpcyIsIlpjYXJvbiIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYWdyYXZlIiwiYXJpbmciLCJhdGlsZGUiLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiZWdyYXZlIiwiaWFjdXRlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJpZ3JhdmUiLCJudGlsZGUiLCJvYWN1dGUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm9ncmF2ZSIsIm90aWxkZSIsInNjYXJvbiIsInVhY3V0ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwidWdyYXZlIiwieWFjdXRlIiwieWRpZXJlc2lzIiwiemNhcm9uIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsImlzdXBlcmlvciIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsImZmIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5zdXBlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsImV4Y2xhbWRvd25zbWFsbCIsImNlbnRvbGRzdHlsZSIsIkxzbGFzaHNtYWxsIiwiU2Nhcm9uc21hbGwiLCJaY2Fyb25zbWFsbCIsIkRpZXJlc2lzc21hbGwiLCJCcmV2ZXNtYWxsIiwiQ2Fyb25zbWFsbCIsIkRvdGFjY2VudHNtYWxsIiwiTWFjcm9uc21hbGwiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJPZ29uZWtzbWFsbCIsIlJpbmdzbWFsbCIsIkNlZGlsbGFzbWFsbCIsInF1ZXN0aW9uZG93bnNtYWxsIiwib25lZWlnaHRoIiwidGhyZWVlaWdodGhzIiwiZml2ZWVpZ2h0aHMiLCJzZXZlbmVpZ2h0aHMiLCJvbmV0aGlyZCIsInR3b3RoaXJkcyIsInplcm9zdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCIsIjAwMS4wMDAiLCIwMDEuMDAxIiwiMDAxLjAwMiIsIjAwMS4wMDMiLCJCbGFjayIsIkJvbGQiLCJCb29rIiwiTGlnaHQiLCJNZWRpdW0iLCJSZWd1bGFyIiwiUm9tYW4iLCJTZW1pYm9sZCJdLGJpPTM5MSxEaT1bbnVsbCx7aWQ6ImhzdGVtIixtaW46MixzdGFja0NsZWFyaW5nOiEwLHN0ZW06ITB9LG51bGwse2lkOiJ2c3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InZtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoicmxpbmV0byIsbWluOjIscmVzZXRTdGFjazohMH0se2lkOiJobGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InZsaW5ldG8iLG1pbjoxLHJlc2V0U3RhY2s6ITB9LHtpZDoicnJjdXJ2ZXRvIixtaW46NixyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbHN1YnIiLG1pbjoxLHVuZGVmU3RhY2s6ITB9LHtpZDoicmV0dXJuIixtaW46MCx1bmRlZlN0YWNrOiEwfSxudWxsLG51bGwse2lkOiJlbmRjaGFyIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJoaW50bWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJjbnRybWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybW92ZXRvIixtaW46MixzdGFja0NsZWFyaW5nOiEwfSx7aWQ6Imhtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoidnN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InJjdXJ2ZWxpbmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoicmxpbmVjdXJ2ZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJ2dmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaGhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbGdzdWJyIixtaW46MSx1bmRlZlN0YWNrOiEwfSx7aWQ6InZoY3VydmV0byIsbWluOjQscmVzZXRTdGFjazohMH0se2lkOiJodmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9XSxGaT1bbnVsbCxudWxsLG51bGwse2lkOiJhbmQiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoib3IiLG1pbjoyLHN0YWNrRGVsdGE6LTF9LHtpZDoibm90IixtaW46MSxzdGFja0RlbHRhOjB9LG51bGwsbnVsbCxudWxsLHtpZDoiYWJzIixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiYWRkIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdK2VbdC0xXX19LHtpZDoic3ViIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdLWVbdC0xXX19LHtpZDoiZGl2IixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdL2VbdC0xXX19LG51bGwse2lkOiJuZWciLG1pbjoxLHN0YWNrRGVsdGE6MCxzdGFja0ZuKGUsdCl7ZVt0LTFdPS1lW3QtMV19fSx7aWQ6ImVxIixtaW46MixzdGFja0RlbHRhOi0xfSxudWxsLG51bGwse2lkOiJkcm9wIixtaW46MSxzdGFja0RlbHRhOi0xfSxudWxsLHtpZDoicHV0IixtaW46MixzdGFja0RlbHRhOi0yfSx7aWQ6ImdldCIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImlmZWxzZSIsbWluOjQsc3RhY2tEZWx0YTotM30se2lkOiJyYW5kb20iLG1pbjowLHN0YWNrRGVsdGE6MX0se2lkOiJtdWwiLG1pbjoyLHN0YWNrRGVsdGE6LTEsc3RhY2tGbihlLHQpe2VbdC0yXT1lW3QtMl0qZVt0LTFdfX0sbnVsbCx7aWQ6InNxcnQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJkdXAiLG1pbjoxLHN0YWNrRGVsdGE6MX0se2lkOiJleGNoIixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoiaW5kZXgiLG1pbjoyLHN0YWNrRGVsdGE6MH0se2lkOiJyb2xsIixtaW46MyxzdGFja0RlbHRhOi0yfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhmbGV4IixtaW46NyxyZXNldFN0YWNrOiEwfSx7aWQ6ImZsZXgiLG1pbjoxMyxyZXNldFN0YWNrOiEwfSx7aWQ6ImhmbGV4MSIsbWluOjkscmVzZXRTdGFjazohMH0se2lkOiJmbGV4MSIsbWluOjExLHJlc2V0U3RhY2s6ITB9XTtjbGFzcyBDRkZQYXJzZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuYnl0ZXM9ZS5nZXRCeXRlcygpO3RoaXMucHJvcGVydGllcz10O3RoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWl9cGFyc2UoKXtjb25zdCBlPXRoaXMucHJvcGVydGllcyx0PW5ldyBDRkY7dGhpcy5jZmY9dDtjb25zdCBpPXRoaXMucGFyc2VIZWFkZXIoKSxhPXRoaXMucGFyc2VJbmRleChpLmVuZFBvcykscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLHM9dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxuPXRoaXMucGFyc2VJbmRleChzLmVuZFBvcyksbz10aGlzLnBhcnNlRGljdChyLm9iai5nZXQoMCkpLGc9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3Qsbyx0LnN0cmluZ3MpO3QuaGVhZGVyPWkub2JqO3QubmFtZXM9dGhpcy5wYXJzZU5hbWVJbmRleChhLm9iaik7dC5zdHJpbmdzPXRoaXMucGFyc2VTdHJpbmdJbmRleChzLm9iaik7dC50b3BEaWN0PWc7dC5nbG9iYWxTdWJySW5kZXg9bi5vYmo7dGhpcy5wYXJzZVByaXZhdGVEaWN0KHQudG9wRGljdCk7dC5pc0NJREZvbnQ9Zy5oYXNOYW1lKCJST1MiKTtjb25zdCBjPWcuZ2V0QnlOYW1lKCJDaGFyU3RyaW5ncyIpLGg9dGhpcy5wYXJzZUluZGV4KGMpLm9iaixsPWcuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7bCYmKGUuZm9udE1hdHJpeD1sKTtjb25zdCBDPWcuZ2V0QnlOYW1lKCJGb250QkJveCIpO2lmKEMpe2UuYXNjZW50PU1hdGgubWF4KENbM10sQ1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKENbMV0sQ1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9bGV0IFEsRTtpZih0LmlzQ0lERm9udCl7Y29uc3QgZT10aGlzLnBhcnNlSW5kZXgoZy5nZXRCeU5hbWUoIkZEQXJyYXkiKSkub2JqO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpLHI9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3QsdGhpcy5wYXJzZURpY3QoYSksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3Qocik7dC5mZEFycmF5LnB1c2gocil9RT1udWxsO1E9dGhpcy5wYXJzZUNoYXJzZXRzKGcuZ2V0QnlOYW1lKCJjaGFyc2V0IiksaC5jb3VudCx0LnN0cmluZ3MsITApO3QuZmRTZWxlY3Q9dGhpcy5wYXJzZUZEU2VsZWN0KGcuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLGguY291bnQpfWVsc2V7UT10aGlzLnBhcnNlQ2hhcnNldHMoZy5nZXRCeU5hbWUoImNoYXJzZXQiKSxoLmNvdW50LHQuc3RyaW5ncywhMSk7RT10aGlzLnBhcnNlRW5jb2RpbmcoZy5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsUS5jaGFyc2V0KX10LmNoYXJzZXQ9UTt0LmVuY29kaW5nPUU7Y29uc3QgdT10aGlzLnBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmgsbG9jYWxTdWJySW5kZXg6Zy5wcml2YXRlRGljdC5zdWJyc0luZGV4LGdsb2JhbFN1YnJJbmRleDpuLm9iaixmZFNlbGVjdDp0LmZkU2VsZWN0LGZkQXJyYXk6dC5mZEFycmF5LHByaXZhdGVEaWN0OmcucHJpdmF0ZURpY3R9KTt0LmNoYXJTdHJpbmdzPXUuY2hhclN0cmluZ3M7dC5zZWFjcz11LnNlYWNzO3Qud2lkdGhzPXUud2lkdGhzO3JldHVybiB0fXBhcnNlSGVhZGVyKCl7bGV0IGU9dGhpcy5ieXRlcztjb25zdCB0PWUubGVuZ3RoO2xldCBpPTA7Zm9yKDtpPHQmJjEhPT1lW2ldOykrK2k7aWYoaT49dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1pKXtpbmZvKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGkpO3RoaXMuYnl0ZXM9ZX1jb25zdCBhPWVbMF0scj1lWzFdLHM9ZVsyXSxuPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKGEscixzLG4pLGVuZFBvczpzfX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgaT1lW3QrK107aWYoMzA9PT1pKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBpPSIiO2NvbnN0IGE9MTUscj1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0scz1lLmxlbmd0aDtmb3IoO3Q8czspe2NvbnN0IHM9ZVt0KytdLG49cz4+NCxvPTE1JnM7aWYobj09PWEpYnJlYWs7aSs9cltuXTtpZihvPT09YSlicmVhaztpKz1yW29dfXJldHVybiBwYXJzZUZsb2F0KGkpfSgpO2lmKDI4PT09aSl7aT1lW3QrK107aT0oaTw8MjR8ZVt0KytdPDwxNik+PjE2O3JldHVybiBpfWlmKDI5PT09aSl7aT1lW3QrK107aT1pPDw4fGVbdCsrXTtpPWk8PDh8ZVt0KytdO2k9aTw8OHxlW3QrK107cmV0dXJuIGl9aWYoaT49MzImJmk8PTI0NilyZXR1cm4gaS0xMzk7aWYoaT49MjQ3JiZpPD0yNTApcmV0dXJuIDI1NiooaS0yNDcpK2VbdCsrXSsxMDg7aWYoaT49MjUxJiZpPD0yNTQpcmV0dXJuLTI1NiooaS0yNTEpLWVbdCsrXS0xMDg7d2FybignQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicraSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgaT1bXTtjb25zdCBhPVtdO3Q9MDtjb25zdCByPWUubGVuZ3RoO2Zvcig7dDxyOyl7bGV0IHI9ZVt0XTtpZihyPD0yMSl7MTI9PT1yJiYocj1yPDw4fGVbKyt0XSk7YS5wdXNoKFtyLGldKTtpPVtdOysrdH1lbHNlIGkucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIGF9cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxpPXRoaXMuYnl0ZXMsYT1pW2UrK108PDh8aVtlKytdLHI9W107bGV0IHMsbixvPWU7aWYoMCE9PWEpe2NvbnN0IHQ9aVtlKytdLGc9ZSsoYSsxKSp0LTE7Zm9yKHM9MCxuPWErMTtzPG47KytzKXtsZXQgYT0wO2ZvcihsZXQgcj0wO3I8dDsrK3Ipe2E8PD04O2ErPWlbZSsrXX1yLnB1c2goZythKX1vPXJbYV19Zm9yKHM9MCxuPXIubGVuZ3RoLTE7czxuOysrcyl7Y29uc3QgZT1yW3NdLGE9cltzKzFdO3QuYWRkKGkuc3ViYXJyYXkoZSxhKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7KytpKXtjb25zdCBhPWUuZ2V0KGkpO3QucHVzaChieXRlc1RvU3RyaW5nKGEpKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBpPTAsYT1lLmNvdW50O2k8YTsrK2kpe2NvbnN0IGE9ZS5nZXQoaSk7dC5hZGQoYnl0ZXNUb1N0cmluZyhhKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsaSl7Y29uc3QgYT1uZXcgZShpKTtmb3IoY29uc3RbZSxpXW9mIHQpYS5zZXRCeUtleShlLGkpO3JldHVybiBhfXBhcnNlQ2hhclN0cmluZyhlLHQsaSxhKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IHI9ZS5zdGFja1NpemU7Y29uc3Qgcz1lLnN0YWNrO2xldCBuPXQubGVuZ3RoO2ZvcihsZXQgbz0wO288bjspe2NvbnN0IGc9dFtvKytdO2xldCBjPW51bGw7aWYoMTI9PT1nKXtjb25zdCBlPXRbbysrXTtpZigwPT09ZSl7dFtvLTJdPTEzOTt0W28tMV09MjI7cj0wfWVsc2UgYz1GaVtlXX1lbHNlIGlmKDI4PT09Zyl7c1tyXT0odFtvXTw8MjR8dFtvKzFdPDwxNik+PjE2O28rPTI7cisrfWVsc2UgaWYoMTQ9PT1nKXtpZihyPj00KXtyLT00O2lmKHRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZCl7ZS5zZWFjPXMuc2xpY2UocixyKzQpO3JldHVybiExfX1jPURpW2ddfWVsc2UgaWYoZz49MzImJmc8PTI0Nil7c1tyXT1nLTEzOTtyKyt9ZWxzZSBpZihnPj0yNDcmJmc8PTI1NCl7c1tyXT1nPDI1MT8oZy0yNDc8PDgpK3Rbb10rMTA4Oi0oZy0yNTE8PDgpLXRbb10tMTA4O28rKztyKyt9ZWxzZSBpZigyNTU9PT1nKXtzW3JdPSh0W29dPDwyNHx0W28rMV08PDE2fHRbbysyXTw8OHx0W28rM10pLzY1NTM2O28rPTQ7cisrfWVsc2UgaWYoMTk9PT1nfHwyMD09PWcpe2UuaGludHMrPXI+PjE7aWYoMD09PWUuaGludHMpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtuLT0xO2NvbnRpbnVlfW8rPWUuaGludHMrNz4+MztyJT0yO2M9RGlbZ119ZWxzZXtpZigxMD09PWd8fDI5PT09Zyl7Y29uc3QgdD0xMD09PWc/aTphO2lmKCF0KXtjPURpW2ddO3dhcm4oIk1pc3Npbmcgc3VicnNJbmRleCBmb3IgIitjLmlkKTtyZXR1cm4hMX1sZXQgbj0zMjc2ODt0LmNvdW50PDEyNDA/bj0xMDc6dC5jb3VudDwzMzkwMCYmKG49MTEzMSk7Y29uc3Qgbz1zWy0tcl0rbjtpZihvPDB8fG8+PXQuY291bnR8fGlzTmFOKG8pKXtjPURpW2ddO3dhcm4oIk91dCBvZiBib3VuZHMgc3VickluZGV4IGZvciAiK2MuaWQpO3JldHVybiExfWUuc3RhY2tTaXplPXI7ZS5jYWxsRGVwdGgrKztpZighdGhpcy5wYXJzZUNoYXJTdHJpbmcoZSx0LmdldChvKSxpLGEpKXJldHVybiExO2UuY2FsbERlcHRoLS07cj1lLnN0YWNrU2l6ZTtjb250aW51ZX1pZigxMT09PWcpe2Uuc3RhY2tTaXplPXI7cmV0dXJuITB9aWYoMD09PWcmJm89PT10Lmxlbmd0aCl7dFtvLTFdPTE0O2M9RGlbMTRdfWVsc2V7aWYoOT09PWcpe3QuY29weVdpdGhpbihvLTEsbywtMSk7by09MTtuLT0xO2NvbnRpbnVlfWM9RGlbZ119fWlmKGMpe2lmKGMuc3RlbSl7ZS5oaW50cys9cj4+MTtpZigzPT09Z3x8MjM9PT1nKWUuaGFzVlN0ZW1zPSEwO2Vsc2UgaWYoZS5oYXNWU3RlbXMmJigxPT09Z3x8MTg9PT1nKSl7d2FybigiQ0ZGIHN0ZW0gaGludHMgYXJlIGluIHdyb25nIG9yZGVyIik7dFtvLTFdPTE9PT1nPzM6MjN9fWlmKCJtaW4iaW4gYyYmIWUudW5kZWZTdGFjayYmcjxjLm1pbil7d2FybigiTm90IGVub3VnaCBwYXJhbWV0ZXJzIGZvciAiK2MuaWQrIjsgYWN0dWFsOiAiK3IrIiwgZXhwZWN0ZWQ6ICIrYy5taW4pO2lmKDA9PT1yKXt0W28tMV09MTQ7cmV0dXJuITB9cmV0dXJuITF9aWYoZS5maXJzdFN0YWNrQ2xlYXJpbmcmJmMuc3RhY2tDbGVhcmluZyl7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITE7ci09Yy5taW47cj49MiYmYy5zdGVtP3IlPTI6cj4xJiZ3YXJuKCJGb3VuZCB0b28gbWFueSBwYXJhbWV0ZXJzIGZvciBzdGFjay1jbGVhcmluZyBjb21tYW5kIik7cj4wJiYoZS53aWR0aD1zW3ItMV0pfWlmKCJzdGFja0RlbHRhImluIGMpeyJzdGFja0ZuImluIGMmJmMuc3RhY2tGbihzLHIpO3IrPWMuc3RhY2tEZWx0YX1lbHNlIGlmKGMuc3RhY2tDbGVhcmluZylyPTA7ZWxzZSBpZihjLnJlc2V0U3RhY2spe3I9MDtlLnVuZGVmU3RhY2s9ITF9ZWxzZSBpZihjLnVuZGVmU3RhY2spe3I9MDtlLnVuZGVmU3RhY2s9ITA7ZS5maXJzdFN0YWNrQ2xlYXJpbmc9ITF9fX1uPHQubGVuZ3RoJiZ0LmZpbGwoMTQsbik7ZS5zdGFja1NpemU9cjtyZXR1cm4hMH1wYXJzZUNoYXJTdHJpbmdzKHtjaGFyU3RyaW5nczplLGxvY2FsU3VickluZGV4OnQsZ2xvYmFsU3VickluZGV4OmksZmRTZWxlY3Q6YSxmZEFycmF5OnIscHJpdmF0ZURpY3Q6c30pe2NvbnN0IG49W10sbz1bXSxnPWUuY291bnQ7Zm9yKGxldCBjPTA7YzxnO2MrKyl7Y29uc3QgZz1lLmdldChjKSxoPXtjYWxsRGVwdGg6MCxzdGFja1NpemU6MCxzdGFjazpbXSx1bmRlZlN0YWNrOiEwLGhpbnRzOjAsZmlyc3RTdGFja0NsZWFyaW5nOiEwLHNlYWM6bnVsbCx3aWR0aDpudWxsLGhhc1ZTdGVtczohMX07bGV0IGw9ITAsQz1udWxsLFE9cztpZihhJiZyLmxlbmd0aCl7Y29uc3QgZT1hLmdldEZESW5kZXgoYyk7aWYoLTE9PT1lKXt3YXJuKCJHbHlwaCBpbmRleCBpcyBub3QgaW4gZmQgc2VsZWN0LiIpO2w9ITF9aWYoZT49ci5sZW5ndGgpe3dhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpO2w9ITF9aWYobCl7UT1yW2VdLnByaXZhdGVEaWN0O0M9US5zdWJyc0luZGV4fX1lbHNlIHQmJihDPXQpO2wmJihsPXRoaXMucGFyc2VDaGFyU3RyaW5nKGgsZyxDLGkpKTtpZihudWxsIT09aC53aWR0aCl7Y29uc3QgZT1RLmdldEJ5TmFtZSgibm9taW5hbFdpZHRoWCIpO29bY109ZStoLndpZHRofWVsc2V7Y29uc3QgZT1RLmdldEJ5TmFtZSgiZGVmYXVsdFdpZHRoWCIpO29bY109ZX1udWxsIT09aC5zZWFjJiYobltjXT1oLnNlYWMpO2x8fGUuc2V0KGMsbmV3IFVpbnQ4QXJyYXkoWzE0XSkpfXJldHVybntjaGFyU3RyaW5nczplLHNlYWNzOm4sd2lkdGhzOm99fWVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSl7Y29uc3QgdD10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsW10sZS5zdHJpbmdzKTtlLnNldEJ5S2V5KDE4LFswLDBdKTtlLnByaXZhdGVEaWN0PXR9cGFyc2VQcml2YXRlRGljdChlKXtpZighZS5oYXNOYW1lKCJQcml2YXRlIikpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgdD1lLmdldEJ5TmFtZSgiUHJpdmF0ZSIpO2lmKCFBcnJheS5pc0FycmF5KHQpfHwyIT09dC5sZW5ndGgpe2UucmVtb3ZlQnlOYW1lKCJQcml2YXRlIik7cmV0dXJufWNvbnN0IGk9dFswXSxhPXRbMV07aWYoMD09PWl8fGE+PXRoaXMuYnl0ZXMubGVuZ3RoKXt0aGlzLmVtcHR5UHJpdmF0ZURpY3Rpb25hcnkoZSk7cmV0dXJufWNvbnN0IHI9YStpLHM9dGhpcy5ieXRlcy5zdWJhcnJheShhLHIpLG49dGhpcy5wYXJzZURpY3Qocyksbz10aGlzLmNyZWF0ZURpY3QoQ0ZGUHJpdmF0ZURpY3QsbixlLnN0cmluZ3MpO2UucHJpdmF0ZURpY3Q9bzswPT09by5nZXRCeU5hbWUoIkV4cGFuc2lvbkZhY3RvciIpJiZvLnNldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIiwuMDYpO2lmKCFvLmdldEJ5TmFtZSgiU3VicnMiKSlyZXR1cm47Y29uc3QgZz1vLmdldEJ5TmFtZSgiU3VicnMiKSxjPWErZztpZigwPT09Z3x8Yz49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgaD10aGlzLnBhcnNlSW5kZXgoYyk7by5zdWJyc0luZGV4PWgub2JqfXBhcnNlQ2hhcnNldHMoZSx0LGksYSl7aWYoMD09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLFJpLklTT19BRE9CRSxDaSk7aWYoMT09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLFJpLkVYUEVSVCxCaSk7aWYoMj09PWUpcmV0dXJuIG5ldyBDRkZDaGFyc2V0KCEwLFJpLkVYUEVSVF9TVUJTRVQsUWkpO2NvbnN0IHI9dGhpcy5ieXRlcyxzPWUsbj1yW2UrK10sbz1bYT8wOiIubm90ZGVmIl07bGV0IGcsYyxoO3QtPTE7c3dpdGNoKG4pe2Nhc2UgMDpmb3IoaD0wO2g8dDtoKyspe2c9cltlKytdPDw4fHJbZSsrXTtvLnB1c2goYT9nOmkuZ2V0KGcpKX1icmVhaztjYXNlIDE6Zm9yKDtvLmxlbmd0aDw9dDspe2c9cltlKytdPDw4fHJbZSsrXTtjPXJbZSsrXTtmb3IoaD0wO2g8PWM7aCsrKW8ucHVzaChhP2crKzppLmdldChnKyspKX1icmVhaztjYXNlIDI6Zm9yKDtvLmxlbmd0aDw9dDspe2c9cltlKytdPDw4fHJbZSsrXTtjPXJbZSsrXTw8OHxyW2UrK107Zm9yKGg9MDtoPD1jO2grKylvLnB1c2goYT9nKys6aS5nZXQoZysrKSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gY2hhcnNldCBmb3JtYXQiKX1jb25zdCBsPWUsQz1yLnN1YmFycmF5KHMsbCk7cmV0dXJuIG5ldyBDRkZDaGFyc2V0KCExLG4sbyxDKX1wYXJzZUVuY29kaW5nKGUsdCxpLGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKSxzPXRoaXMuYnl0ZXM7bGV0IG4sbyxnLGM9ITEsaD1udWxsO2lmKDA9PT1lfHwxPT09ZSl7Yz0hMDtuPWU7Y29uc3QgdD1lP0VpOmZpO2ZvcihvPTAsZz1hLmxlbmd0aDtvPGc7bysrKXtjb25zdCBlPXQuaW5kZXhPZihhW29dKTstMSE9PWUmJihyW2VdPW8pfX1lbHNle2NvbnN0IHQ9ZTtuPXNbZSsrXTtzd2l0Y2goMTI3Jm4pe2Nhc2UgMDpjb25zdCB0PXNbZSsrXTtmb3Iobz0xO288PXQ7bysrKXJbc1tlKytdXT1vO2JyZWFrO2Nhc2UgMTpjb25zdCBpPXNbZSsrXTtsZXQgYT0xO2ZvcihvPTA7bzxpO28rKyl7Y29uc3QgdD1zW2UrK10saT1zW2UrK107Zm9yKGxldCBlPXQ7ZTw9dCtpO2UrKylyW2VdPWErK31icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBlbmNvZGluZyBmb3JtYXQ6ICR7bn0gaW4gQ0ZGYCl9Y29uc3QgZz1lO2lmKDEyOCZuKXtzW3RdJj0xMjc7IWZ1bmN0aW9uIHJlYWRTdXBwbGVtZW50KCl7Y29uc3QgdD1zW2UrK107Zm9yKG89MDtvPHQ7bysrKXtjb25zdCB0PXNbZSsrXSxuPShzW2UrK108PDgpKygyNTUmc1tlKytdKTtyW3RdPWEuaW5kZXhPZihpLmdldChuKSl9fSgpfWg9cy5zdWJhcnJheSh0LGcpfW4mPTEyNztyZXR1cm4gbmV3IENGRkVuY29kaW5nKGMsbixyLGgpfXBhcnNlRkRTZWxlY3QoZSx0KXtjb25zdCBpPXRoaXMuYnl0ZXMsYT1pW2UrK10scj1bXTtsZXQgcztzd2l0Y2goYSl7Y2FzZSAwOmZvcihzPTA7czx0Oysrcyl7Y29uc3QgdD1pW2UrK107ci5wdXNoKHQpfWJyZWFrO2Nhc2UgMzpjb25zdCBuPWlbZSsrXTw8OHxpW2UrK107Zm9yKHM9MDtzPG47KytzKXtsZXQgdD1pW2UrK108PDh8aVtlKytdO2lmKDA9PT1zJiYwIT09dCl7d2FybigicGFyc2VGRFNlbGVjdDogVGhlIGZpcnN0IHJhbmdlIG11c3QgaGF2ZSBhIGZpcnN0IEdJRCBvZiAwIC0tIHRyeWluZyB0byByZWNvdmVyLiIpO3Q9MH1jb25zdCBhPWlbZSsrXSxuPWlbZV08PDh8aVtlKzFdO2ZvcihsZXQgZT10O2U8bjsrK2Upci5wdXNoKGEpfWUrPTI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYHBhcnNlRkRTZWxlY3Q6IFVua25vd24gZm9ybWF0ICIke2F9Ii5gKX1pZihyLmxlbmd0aCE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJwYXJzZUZEU2VsZWN0OiBJbnZhbGlkIGZvbnQgZGF0YS4iKTtyZXR1cm4gbmV3IENGRkZEU2VsZWN0KGEscil9fWNsYXNzIENGRntjb25zdHJ1Y3Rvcigpe3RoaXMuaGVhZGVyPW51bGw7dGhpcy5uYW1lcz1bXTt0aGlzLnRvcERpY3Q9bnVsbDt0aGlzLnN0cmluZ3M9bmV3IENGRlN0cmluZ3M7dGhpcy5nbG9iYWxTdWJySW5kZXg9bnVsbDt0aGlzLmVuY29kaW5nPW51bGw7dGhpcy5jaGFyc2V0PW51bGw7dGhpcy5jaGFyU3RyaW5ncz1udWxsO3RoaXMuZmRBcnJheT1bXTt0aGlzLmZkU2VsZWN0PW51bGw7dGhpcy5pc0NJREZvbnQ9ITF9ZHVwbGljYXRlRmlyc3RHbHlwaCgpe2lmKHRoaXMuY2hhclN0cmluZ3MuY291bnQ+PTY1NTM1KXt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGNoYXJzdHJpbmdzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKTtyZXR1cm59Y29uc3QgZT10aGlzLmNoYXJTdHJpbmdzLmdldCgwKTt0aGlzLmNoYXJTdHJpbmdzLmFkZChlKTt0aGlzLmlzQ0lERm9udCYmdGhpcy5mZFNlbGVjdC5mZFNlbGVjdC5wdXNoKHRoaXMuZmRTZWxlY3QuZmRTZWxlY3RbMF0pfWhhc0dseXBoSWQoZSl7aWYoZTwwfHxlPj10aGlzLmNoYXJTdHJpbmdzLmNvdW50KXJldHVybiExO3JldHVybiB0aGlzLmNoYXJTdHJpbmdzLmdldChlKS5sZW5ndGg+MH19Y2xhc3MgQ0ZGSGVhZGVye2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMubWFqb3I9ZTt0aGlzLm1pbm9yPXQ7dGhpcy5oZHJTaXplPWk7dGhpcy5vZmZTaXplPWF9fWNsYXNzIENGRlN0cmluZ3N7Y29uc3RydWN0b3IoKXt0aGlzLnN0cmluZ3M9W119Z2V0KGUpe3JldHVybiBlPj0wJiZlPD0zOTA/d2lbZV06ZS1iaTw9dGhpcy5zdHJpbmdzLmxlbmd0aD90aGlzLnN0cmluZ3NbZS1iaV06d2lbMF19Z2V0U0lEKGUpe2xldCB0PXdpLmluZGV4T2YoZSk7aWYoLTEhPT10KXJldHVybiB0O3Q9dGhpcy5zdHJpbmdzLmluZGV4T2YoZSk7cmV0dXJuLTEhPT10P3QrYmk6LTF9YWRkKGUpe3RoaXMuc3RyaW5ncy5wdXNoKGUpfWdldCBjb3VudCgpe3JldHVybiB0aGlzLnN0cmluZ3MubGVuZ3RofX1jbGFzcyBDRkZJbmRleHtjb25zdHJ1Y3Rvcigpe3RoaXMub2JqZWN0cz1bXTt0aGlzLmxlbmd0aD0wfWFkZChlKXt0aGlzLmxlbmd0aCs9ZS5sZW5ndGg7dGhpcy5vYmplY3RzLnB1c2goZSl9c2V0KGUsdCl7dGhpcy5sZW5ndGgrPXQubGVuZ3RoLXRoaXMub2JqZWN0c1tlXS5sZW5ndGg7dGhpcy5vYmplY3RzW2VdPXR9Z2V0KGUpe3JldHVybiB0aGlzLm9iamVjdHNbZV19Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMub2JqZWN0cy5sZW5ndGh9fWNsYXNzIENGRkRpY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmtleVRvTmFtZU1hcD1lLmtleVRvTmFtZU1hcDt0aGlzLm5hbWVUb0tleU1hcD1lLm5hbWVUb0tleU1hcDt0aGlzLmRlZmF1bHRzPWUuZGVmYXVsdHM7dGhpcy50eXBlcz1lLnR5cGVzO3RoaXMub3Bjb2Rlcz1lLm9wY29kZXM7dGhpcy5vcmRlcj1lLm9yZGVyO3RoaXMuc3RyaW5ncz10O3RoaXMudmFsdWVzPU9iamVjdC5jcmVhdGUobnVsbCl9c2V0QnlLZXkoZSx0KXtpZighKGUgaW4gdGhpcy5rZXlUb05hbWVNYXApKXJldHVybiExO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4hMDtmb3IoY29uc3QgaSBvZiB0KWlmKGlzTmFOKGkpKXt3YXJuKGBJbnZhbGlkIENGRkRpY3QgdmFsdWU6ICIke3R9IiBmb3Iga2V5ICIke2V9Ii5gKTtyZXR1cm4hMH1jb25zdCBpPXRoaXMudHlwZXNbZV07Im51bSIhPT1pJiYic2lkIiE9PWkmJiJvZmZzZXQiIT09aXx8KHQ9dFswXSk7dGhpcy52YWx1ZXNbZV09dDtyZXR1cm4hMH1zZXRCeU5hbWUoZSx0KXtpZighKGUgaW4gdGhpcy5uYW1lVG9LZXlNYXApKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBkaWN0aW9uYXJ5IG5hbWUgIiR7ZX0iYCk7dGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dPXR9aGFzTmFtZShlKXtyZXR1cm4gdGhpcy5uYW1lVG9LZXlNYXBbZV1pbiB0aGlzLnZhbHVlc31nZXRCeU5hbWUoZSl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICR7ZX0iYCk7Y29uc3QgdD10aGlzLm5hbWVUb0tleU1hcFtlXTtyZXR1cm4gdCBpbiB0aGlzLnZhbHVlcz90aGlzLnZhbHVlc1t0XTp0aGlzLmRlZmF1bHRzW3RdfXJlbW92ZUJ5TmFtZShlKXtkZWxldGUgdGhpcy52YWx1ZXNbdGhpcy5uYW1lVG9LZXlNYXBbZV1dfXN0YXRpYyBjcmVhdGVUYWJsZXMoZSl7Y29uc3QgdD17a2V5VG9OYW1lTWFwOnt9LG5hbWVUb0tleU1hcDp7fSxkZWZhdWx0czp7fSx0eXBlczp7fSxvcGNvZGVzOnt9LG9yZGVyOltdfTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPUFycmF5LmlzQXJyYXkoaVswXSk/KGlbMF1bMF08PDgpK2lbMF1bMV06aVswXTt0LmtleVRvTmFtZU1hcFtlXT1pWzFdO3QubmFtZVRvS2V5TWFwW2lbMV1dPWU7dC50eXBlc1tlXT1pWzJdO3QuZGVmYXVsdHNbZV09aVszXTt0Lm9wY29kZXNbZV09QXJyYXkuaXNBcnJheShpWzBdKT9pWzBdOltpWzBdXTt0Lm9yZGVyLnB1c2goZSl9cmV0dXJuIHR9fWNvbnN0IFNpPVtbWzEyLDMwXSwiUk9TIixbInNpZCIsInNpZCIsIm51bSJdLG51bGxdLFtbMTIsMjBdLCJTeW50aGV0aWNCYXNlIiwibnVtIixudWxsXSxbMCwidmVyc2lvbiIsInNpZCIsbnVsbF0sWzEsIk5vdGljZSIsInNpZCIsbnVsbF0sW1sxMiwwXSwiQ29weXJpZ2h0Iiwic2lkIixudWxsXSxbMiwiRnVsbE5hbWUiLCJzaWQiLG51bGxdLFszLCJGYW1pbHlOYW1lIiwic2lkIixudWxsXSxbNCwiV2VpZ2h0Iiwic2lkIixudWxsXSxbWzEyLDFdLCJpc0ZpeGVkUGl0Y2giLCJudW0iLDBdLFtbMTIsMl0sIkl0YWxpY0FuZ2xlIiwibnVtIiwwXSxbWzEyLDNdLCJVbmRlcmxpbmVQb3NpdGlvbiIsIm51bSIsLTEwMF0sW1sxMiw0XSwiVW5kZXJsaW5lVGhpY2tuZXNzIiwibnVtIiw1MF0sW1sxMiw1XSwiUGFpbnRUeXBlIiwibnVtIiwwXSxbWzEyLDZdLCJDaGFyc3RyaW5nVHlwZSIsIm51bSIsMl0sW1sxMiw3XSwiRm9udE1hdHJpeCIsWyJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iLCJudW0iXSxbLjAwMSwwLDAsLjAwMSwwLDBdXSxbMTMsIlVuaXF1ZUlEIiwibnVtIixudWxsXSxbNSwiRm9udEJCb3giLFsibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWzAsMCwwLDBdXSxbWzEyLDhdLCJTdHJva2VXaWR0aCIsIm51bSIsMF0sWzE0LCJYVUlEIiwiYXJyYXkiLG51bGxdLFsxNSwiY2hhcnNldCIsIm9mZnNldCIsMF0sWzE2LCJFbmNvZGluZyIsIm9mZnNldCIsMF0sWzE3LCJDaGFyU3RyaW5ncyIsIm9mZnNldCIsMF0sWzE4LCJQcml2YXRlIixbIm9mZnNldCIsIm9mZnNldCJdLG51bGxdLFtbMTIsMjFdLCJQb3N0U2NyaXB0Iiwic2lkIixudWxsXSxbWzEyLDIyXSwiQmFzZUZvbnROYW1lIiwic2lkIixudWxsXSxbWzEyLDIzXSwiQmFzZUZvbnRCbGVuZCIsImRlbHRhIixudWxsXSxbWzEyLDMxXSwiQ0lERm9udFZlcnNpb24iLCJudW0iLDBdLFtbMTIsMzJdLCJDSURGb250UmV2aXNpb24iLCJudW0iLDBdLFtbMTIsMzNdLCJDSURGb250VHlwZSIsIm51bSIsMF0sW1sxMiwzNF0sIkNJRENvdW50IiwibnVtIiw4NzIwXSxbWzEyLDM1XSwiVUlEQmFzZSIsIm51bSIsbnVsbF0sW1sxMiwzN10sIkZEU2VsZWN0Iiwib2Zmc2V0IixudWxsXSxbWzEyLDM2XSwiRkRBcnJheSIsIm9mZnNldCIsbnVsbF0sW1sxMiwzOF0sIkZvbnROYW1lIiwic2lkIixudWxsXV07Y2xhc3MgQ0ZGVG9wRGljdCBleHRlbmRzIENGRkRpY3R7c3RhdGljIGdldCB0YWJsZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsInRhYmxlcyIsdGhpcy5jcmVhdGVUYWJsZXMoU2kpKX1jb25zdHJ1Y3RvcihlKXtzdXBlcihDRkZUb3BEaWN0LnRhYmxlcyxlKTt0aGlzLnByaXZhdGVEaWN0PW51bGx9fWNvbnN0IGtpPVtbNiwiQmx1ZVZhbHVlcyIsImRlbHRhIixudWxsXSxbNywiT3RoZXJCbHVlcyIsImRlbHRhIixudWxsXSxbOCwiRmFtaWx5Qmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzksIkZhbWlseU90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sW1sxMiw5XSwiQmx1ZVNjYWxlIiwibnVtIiwuMDM5NjI1XSxbWzEyLDEwXSwiQmx1ZVNoaWZ0IiwibnVtIiw3XSxbWzEyLDExXSwiQmx1ZUZ1enoiLCJudW0iLDFdLFsxMCwiU3RkSFciLCJudW0iLG51bGxdLFsxMSwiU3RkVlciLCJudW0iLG51bGxdLFtbMTIsMTJdLCJTdGVtU25hcEgiLCJkZWx0YSIsbnVsbF0sW1sxMiwxM10sIlN0ZW1TbmFwViIsImRlbHRhIixudWxsXSxbWzEyLDE0XSwiRm9yY2VCb2xkIiwibnVtIiwwXSxbWzEyLDE3XSwiTGFuZ3VhZ2VHcm91cCIsIm51bSIsMF0sW1sxMiwxOF0sIkV4cGFuc2lvbkZhY3RvciIsIm51bSIsLjA2XSxbWzEyLDE5XSwiaW5pdGlhbFJhbmRvbVNlZWQiLCJudW0iLDBdLFsyMCwiZGVmYXVsdFdpZHRoWCIsIm51bSIsMF0sWzIxLCJub21pbmFsV2lkdGhYIiwibnVtIiwwXSxbMTksIlN1YnJzIiwib2Zmc2V0IixudWxsXV07Y2xhc3MgQ0ZGUHJpdmF0ZURpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKGtpKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIoQ0ZGUHJpdmF0ZURpY3QudGFibGVzLGUpO3RoaXMuc3VicnNJbmRleD1udWxsfX1jb25zdCBSaT17SVNPX0FET0JFOjAsRVhQRVJUOjEsRVhQRVJUX1NVQlNFVDoyfTtjbGFzcyBDRkZDaGFyc2V0e2NvbnN0cnVjdG9yKGUsdCxpLGEpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5jaGFyc2V0PWk7dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRW5jb2Rpbmd7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5wcmVkZWZpbmVkPWU7dGhpcy5mb3JtYXQ9dDt0aGlzLmVuY29kaW5nPWk7dGhpcy5yYXc9YX19Y2xhc3MgQ0ZGRkRTZWxlY3R7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZvcm1hdD1lO3RoaXMuZmRTZWxlY3Q9dH1nZXRGREluZGV4KGUpe3JldHVybiBlPDB8fGU+PXRoaXMuZmRTZWxlY3QubGVuZ3RoPy0xOnRoaXMuZmRTZWxlY3RbZV19fWNsYXNzIENGRk9mZnNldFRyYWNrZXJ7Y29uc3RydWN0b3IoKXt0aGlzLm9mZnNldHM9T2JqZWN0LmNyZWF0ZShudWxsKX1pc1RyYWNraW5nKGUpe3JldHVybiBlIGluIHRoaXMub2Zmc2V0c310cmFjayhlLHQpe2lmKGUgaW4gdGhpcy5vZmZzZXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQWxyZWFkeSB0cmFja2luZyBsb2NhdGlvbiBvZiAke2V9YCk7dGhpcy5vZmZzZXRzW2VdPXR9b2Zmc2V0KGUpe2Zvcihjb25zdCB0IGluIHRoaXMub2Zmc2V0cyl0aGlzLm9mZnNldHNbdF0rPWV9c2V0RW50cnlMb2NhdGlvbihlLHQsaSl7aWYoIShlIGluIHRoaXMub2Zmc2V0cykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBOb3QgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO2NvbnN0IGE9aS5kYXRhLHI9dGhpcy5vZmZzZXRzW2VdO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpOysrZSl7Y29uc3QgaT01KmUrcixzPWkrMSxuPWkrMixvPWkrMyxnPWkrNDtpZigyOSE9PWFbaV18fDAhPT1hW3NdfHwwIT09YVtuXXx8MCE9PWFbb118fDAhPT1hW2ddKXRocm93IG5ldyBGb3JtYXRFcnJvcigid3JpdGluZyB0byBhbiBvZmZzZXQgdGhhdCBpcyBub3QgZW1wdHkiKTtjb25zdCBjPXRbZV07YVtpXT0yOTthW3NdPWM+PjI0JjI1NTthW25dPWM+PjE2JjI1NTthW29dPWM+PjgmMjU1O2FbZ109MjU1JmN9fX1jbGFzcyBDRkZDb21waWxlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmNmZj1lfWNvbXBpbGUoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9e2RhdGE6W10sbGVuZ3RoOjAsYWRkKGUpe3RyeXt0aGlzLmRhdGEucHVzaCguLi5lKX1jYXRjaHt0aGlzLmRhdGE9dGhpcy5kYXRhLmNvbmNhdChlKX10aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RofX0saT10aGlzLmNvbXBpbGVIZWFkZXIoZS5oZWFkZXIpO3QuYWRkKGkpO2NvbnN0IGE9dGhpcy5jb21waWxlTmFtZUluZGV4KGUubmFtZXMpO3QuYWRkKGEpO2lmKGUuaXNDSURGb250JiZlLnRvcERpY3QuaGFzTmFtZSgiRm9udE1hdHJpeCIpKXtjb25zdCB0PWUudG9wRGljdC5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKTtlLnRvcERpY3QucmVtb3ZlQnlOYW1lKCJGb250TWF0cml4Iik7Zm9yKGNvbnN0IGkgb2YgZS5mZEFycmF5KXtsZXQgZT10LnNsaWNlKDApO2kuaGFzTmFtZSgiRm9udE1hdHJpeCIpJiYoZT1VdGlsLnRyYW5zZm9ybShlLGkuZ2V0QnlOYW1lKCJGb250TWF0cml4IikpKTtpLnNldEJ5TmFtZSgiRm9udE1hdHJpeCIsZSl9fWNvbnN0IHI9ZS50b3BEaWN0LmdldEJ5TmFtZSgiWFVJRCIpO3I/Lmxlbmd0aD4xNiYmZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiWFVJRCIpO2UudG9wRGljdC5zZXRCeU5hbWUoImNoYXJzZXQiLDApO2xldCBzPXRoaXMuY29tcGlsZVRvcERpY3RzKFtlLnRvcERpY3RdLHQubGVuZ3RoLGUuaXNDSURGb250KTt0LmFkZChzLm91dHB1dCk7Y29uc3Qgbj1zLnRyYWNrZXJzWzBdLG89dGhpcy5jb21waWxlU3RyaW5nSW5kZXgoZS5zdHJpbmdzLnN0cmluZ3MpO3QuYWRkKG8pO2NvbnN0IGc9dGhpcy5jb21waWxlSW5kZXgoZS5nbG9iYWxTdWJySW5kZXgpO3QuYWRkKGcpO2lmKGUuZW5jb2RpbmcmJmUudG9wRGljdC5oYXNOYW1lKCJFbmNvZGluZyIpKWlmKGUuZW5jb2RpbmcucHJlZGVmaW5lZCluLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbZS5lbmNvZGluZy5mb3JtYXRdLHQpO2Vsc2V7Y29uc3QgaT10aGlzLmNvbXBpbGVFbmNvZGluZyhlLmVuY29kaW5nKTtuLnNldEVudHJ5TG9jYXRpb24oIkVuY29kaW5nIixbdC5sZW5ndGhdLHQpO3QuYWRkKGkpfWNvbnN0IGM9dGhpcy5jb21waWxlQ2hhcnNldChlLmNoYXJzZXQsZS5jaGFyU3RyaW5ncy5jb3VudCxlLnN0cmluZ3MsZS5pc0NJREZvbnQpO24uc2V0RW50cnlMb2NhdGlvbigiY2hhcnNldCIsW3QubGVuZ3RoXSx0KTt0LmFkZChjKTtjb25zdCBoPXRoaXMuY29tcGlsZUNoYXJTdHJpbmdzKGUuY2hhclN0cmluZ3MpO24uc2V0RW50cnlMb2NhdGlvbigiQ2hhclN0cmluZ3MiLFt0Lmxlbmd0aF0sdCk7dC5hZGQoaCk7aWYoZS5pc0NJREZvbnQpe24uc2V0RW50cnlMb2NhdGlvbigiRkRTZWxlY3QiLFt0Lmxlbmd0aF0sdCk7Y29uc3QgaT10aGlzLmNvbXBpbGVGRFNlbGVjdChlLmZkU2VsZWN0KTt0LmFkZChpKTtzPXRoaXMuY29tcGlsZVRvcERpY3RzKGUuZmRBcnJheSx0Lmxlbmd0aCwhMCk7bi5zZXRFbnRyeUxvY2F0aW9uKCJGREFycmF5IixbdC5sZW5ndGhdLHQpO3QuYWRkKHMub3V0cHV0KTtjb25zdCBhPXMudHJhY2tlcnM7dGhpcy5jb21waWxlUHJpdmF0ZURpY3RzKGUuZmRBcnJheSxhLHQpfXRoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhbZS50b3BEaWN0XSxbbl0sdCk7dC5hZGQoWzBdKTtyZXR1cm4gdC5kYXRhfWVuY29kZU51bWJlcihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKT90aGlzLmVuY29kZUludGVnZXIoZSk6dGhpcy5lbmNvZGVGbG9hdChlKX1zdGF0aWMgZ2V0IEVuY29kZUZsb2F0UmVnRXhwKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFbmNvZGVGbG9hdFJlZ0V4cCIsL1wuKFxkKj8pKD86OXs1LDIwfXwwezUsMjB9KVxkezAsMn0oPzplKC4rKXwkKS8pfWVuY29kZUZsb2F0KGUpe2xldCB0PWUudG9TdHJpbmcoKTtjb25zdCBpPUNGRkNvbXBpbGVyLkVuY29kZUZsb2F0UmVnRXhwLmV4ZWModCk7aWYoaSl7Y29uc3QgYT1wYXJzZUZsb2F0KCIxZSIrKChpWzJdPytpWzJdOjApK2lbMV0ubGVuZ3RoKSk7dD0oTWF0aC5yb3VuZChlKmEpL2EpLnRvU3RyaW5nKCl9bGV0IGEscixzPSIiO2ZvcihhPTAscj10Lmxlbmd0aDthPHI7KythKXtjb25zdCBlPXRbYV07cys9ImUiPT09ZT8iLSI9PT10WysrYV0/ImMiOiJiIjoiLiI9PT1lPyJhIjoiLSI9PT1lPyJlIjplfXMrPTEmcy5sZW5ndGg/ImYiOiJmZiI7Y29uc3Qgbj1bMzBdO2ZvcihhPTAscj1zLmxlbmd0aDthPHI7YSs9MiluLnB1c2gocGFyc2VJbnQocy5zdWJzdHJpbmcoYSxhKzIpLDE2KSk7cmV0dXJuIG59ZW5jb2RlSW50ZWdlcihlKXtsZXQgdDt0PWU+PS0xMDcmJmU8PTEwNz9bZSsxMzldOmU+PTEwOCYmZTw9MTEzMT9bMjQ3KygoZS09MTA4KT4+OCksMjU1JmVdOmU+PS0xMTMxJiZlPD0tMTA4P1syNTErKChlPS1lLTEwOCk+PjgpLDI1NSZlXTplPj0tMzI3NjgmJmU8PTMyNzY3P1syOCxlPj44JjI1NSwyNTUmZV06WzI5LGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdO3JldHVybiB0fWNvbXBpbGVIZWFkZXIoZSl7cmV0dXJuW2UubWFqb3IsZS5taW5vciw0LGUub2ZmU2l6ZV19Y29tcGlsZU5hbWVJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPU1hdGgubWluKGkubGVuZ3RoLDEyNyk7bGV0IGE9bmV3IEFycmF5KGUpO2ZvcihsZXQgdD0wO3Q8ZTt0Kyspe2xldCBlPWlbdF07KGU8IiEifHxlPiJ+Inx8IlsiPT09ZXx8Il0iPT09ZXx8IigiPT09ZXx8IikiPT09ZXx8InsiPT09ZXx8In0iPT09ZXx8IjwiPT09ZXx8Ij4iPT09ZXx8Ii8iPT09ZXx8IiUiPT09ZSkmJihlPSJfIik7YVt0XT1lfWE9YS5qb2luKCIiKTsiIj09PWEmJihhPSJCYWRfRm9udF9OYW1lIik7dC5hZGQoc3RyaW5nVG9CeXRlcyhhKSl9cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVUb3BEaWN0cyhlLHQsaSl7Y29uc3QgYT1bXTtsZXQgcj1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IHMgb2YgZSl7aWYoaSl7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRWZXJzaW9uIik7cy5yZW1vdmVCeU5hbWUoIkNJREZvbnRSZXZpc2lvbiIpO3MucmVtb3ZlQnlOYW1lKCJDSURGb250VHlwZSIpO3MucmVtb3ZlQnlOYW1lKCJDSURDb3VudCIpO3MucmVtb3ZlQnlOYW1lKCJVSURCYXNlIil9Y29uc3QgZT1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixuPXRoaXMuY29tcGlsZURpY3QocyxlKTthLnB1c2goZSk7ci5hZGQobik7ZS5vZmZzZXQodCl9cj10aGlzLmNvbXBpbGVJbmRleChyLGEpO3JldHVybnt0cmFja2VyczphLG91dHB1dDpyfX1jb21waWxlUHJpdmF0ZURpY3RzKGUsdCxpKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjsrK2Epe2NvbnN0IHI9ZVthXSxzPXIucHJpdmF0ZURpY3Q7aWYoIXN8fCFyLmhhc05hbWUoIlByaXZhdGUiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZXJlIG11c3QgYmUgYSBwcml2YXRlIGRpY3Rpb25hcnkuIik7Y29uc3Qgbj1uZXcgQ0ZGT2Zmc2V0VHJhY2tlcixvPXRoaXMuY29tcGlsZURpY3QocyxuKTtsZXQgZz1pLmxlbmd0aDtuLm9mZnNldChnKTtvLmxlbmd0aHx8KGc9MCk7dFthXS5zZXRFbnRyeUxvY2F0aW9uKCJQcml2YXRlIixbby5sZW5ndGgsZ10saSk7aS5hZGQobyk7aWYocy5zdWJyc0luZGV4JiZzLmhhc05hbWUoIlN1YnJzIikpe2NvbnN0IGU9dGhpcy5jb21waWxlSW5kZXgocy5zdWJyc0luZGV4KTtuLnNldEVudHJ5TG9jYXRpb24oIlN1YnJzIixbby5sZW5ndGhdLGkpO2kuYWRkKGUpfX19Y29tcGlsZURpY3QoZSx0KXtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUub3JkZXIpe2lmKCEoYSBpbiBlLnZhbHVlcykpY29udGludWU7bGV0IHI9ZS52YWx1ZXNbYV0scz1lLnR5cGVzW2FdO0FycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7QXJyYXkuaXNBcnJheShyKXx8KHI9W3JdKTtpZigwIT09ci5sZW5ndGgpe2ZvcihsZXQgbj0wLG89cy5sZW5ndGg7bjxvOysrbil7Y29uc3Qgbz1zW25dLGc9cltuXTtzd2l0Y2gobyl7Y2FzZSJudW0iOmNhc2Uic2lkIjppLnB1c2goLi4udGhpcy5lbmNvZGVOdW1iZXIoZykpO2JyZWFrO2Nhc2Uib2Zmc2V0Ijpjb25zdCBzPWUua2V5VG9OYW1lTWFwW2FdO3QuaXNUcmFja2luZyhzKXx8dC50cmFjayhzLGkubGVuZ3RoKTtpLnB1c2goMjksMCwwLDAsMCk7YnJlYWs7Y2FzZSJhcnJheSI6Y2FzZSJkZWx0YSI6aS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGcpKTtmb3IobGV0IGU9MSx0PXIubGVuZ3RoO2U8dDsrK2UpaS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKHJbZV0pKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBkYXRhIHR5cGUgb2YgJHtvfWApfX1pLnB1c2goLi4uZS5vcGNvZGVzW2FdKX19cmV0dXJuIGl9Y29tcGlsZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRkluZGV4O2Zvcihjb25zdCBpIG9mIGUpdC5hZGQoc3RyaW5nVG9CeXRlcyhpKSk7cmV0dXJuIHRoaXMuY29tcGlsZUluZGV4KHQpfWNvbXBpbGVDaGFyU3RyaW5ncyhlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IobGV0IGk9MDtpPGUuY291bnQ7aSsrKXtjb25zdCBhPWUuZ2V0KGkpOzAhPT1hLmxlbmd0aD90LmFkZChhKTp0LmFkZChuZXcgVWludDhBcnJheShbMTM5LDE0XSkpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhcnNldChlLHQsaSxhKXtsZXQgcjtjb25zdCBzPXQtMTtpZihhKXI9bmV3IFVpbnQ4QXJyYXkoWzIsMCwwLHM+PjgmMjU1LDI1NSZzXSk7ZWxzZXtyPW5ldyBVaW50OEFycmF5KDErMipzKTtyWzBdPTA7bGV0IHQ9MDtjb25zdCBhPWUuY2hhcnNldC5sZW5ndGg7bGV0IG49ITE7Zm9yKGxldCBzPTE7czxyLmxlbmd0aDtzKz0yKXtsZXQgbz0wO2lmKHQ8YSl7Y29uc3QgYT1lLmNoYXJzZXRbdCsrXTtvPWkuZ2V0U0lEKGEpO2lmKC0xPT09byl7bz0wO2lmKCFuKXtuPSEwO3dhcm4oYENvdWxkbid0IGZpbmQgJHthfSBpbiBDRkYgc3RyaW5nc2ApfX19cltzXT1vPj44JjI1NTtyW3MrMV09MjU1Jm99fXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KHIpfWNvbXBpbGVFbmNvZGluZyhlKXtyZXR1cm4gdGhpcy5jb21waWxlVHlwZWRBcnJheShlLnJhdyl9Y29tcGlsZUZEU2VsZWN0KGUpe2NvbnN0IHQ9ZS5mb3JtYXQ7bGV0IGksYTtzd2l0Y2godCl7Y2FzZSAwOmk9bmV3IFVpbnQ4QXJyYXkoMStlLmZkU2VsZWN0Lmxlbmd0aCk7aVswXT10O2ZvcihhPTA7YTxlLmZkU2VsZWN0Lmxlbmd0aDthKyspaVthKzFdPWUuZmRTZWxlY3RbYV07YnJlYWs7Y2FzZSAzOmNvbnN0IHI9MDtsZXQgcz1lLmZkU2VsZWN0WzBdO2NvbnN0IG49W3QsMCwwLHI+PjgmMjU1LDI1NSZyLHNdO2ZvcihhPTE7YTxlLmZkU2VsZWN0Lmxlbmd0aDthKyspe2NvbnN0IHQ9ZS5mZFNlbGVjdFthXTtpZih0IT09cyl7bi5wdXNoKGE+PjgmMjU1LDI1NSZhLHQpO3M9dH19Y29uc3Qgbz0obi5sZW5ndGgtMykvMztuWzFdPW8+PjgmMjU1O25bMl09MjU1Jm87bi5wdXNoKGE+PjgmMjU1LDI1NSZhKTtpPW5ldyBVaW50OEFycmF5KG4pfXJldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGkpfWNvbXBpbGVUeXBlZEFycmF5KGUpe3JldHVybiBBcnJheS5mcm9tKGUpfWNvbXBpbGVJbmRleChlLHQ9W10pe2NvbnN0IGk9ZS5vYmplY3RzLGE9aS5sZW5ndGg7aWYoMD09PWEpcmV0dXJuWzAsMF07Y29uc3Qgcj1bYT4+OCYyNTUsMjU1JmFdO2xldCBzLG4sbz0xO2ZvcihzPTA7czxhOysrcylvKz1pW3NdLmxlbmd0aDtuPW88MjU2PzE6bzw2NTUzNj8yOm88MTY3NzcyMTY/Mzo0O3IucHVzaChuKTtsZXQgZz0xO2ZvcihzPTA7czxhKzE7cysrKXsxPT09bj9yLnB1c2goMjU1JmcpOjI9PT1uP3IucHVzaChnPj44JjI1NSwyNTUmZyk6Mz09PW4/ci5wdXNoKGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyk6ci5wdXNoKGc+Pj4yNCYyNTUsZz4+MTYmMjU1LGc+PjgmMjU1LDI1NSZnKTtpW3NdJiYoZys9aVtzXS5sZW5ndGgpfWZvcihzPTA7czxhO3MrKyl7dFtzXSYmdFtzXS5vZmZzZXQoci5sZW5ndGgpO3IucHVzaCguLi5pW3NdKX1yZXR1cm4gcn19Y29uc3QgTmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkE9NjU7ZS5BRT0xOTg7ZS5BRWFjdXRlPTUwODtlLkFFbWFjcm9uPTQ4MjtlLkFFc21hbGw9NjM0NjI7ZS5BYWN1dGU9MTkzO2UuQWFjdXRlc21hbGw9NjM0NTc7ZS5BYnJldmU9MjU4O2UuQWJyZXZlYWN1dGU9Nzg1NDtlLkFicmV2ZWN5cmlsbGljPTEyMzI7ZS5BYnJldmVkb3RiZWxvdz03ODYyO2UuQWJyZXZlZ3JhdmU9Nzg1NjtlLkFicmV2ZWhvb2thYm92ZT03ODU4O2UuQWJyZXZldGlsZGU9Nzg2MDtlLkFjYXJvbj00NjE7ZS5BY2lyY2xlPTkzOTg7ZS5BY2lyY3VtZmxleD0xOTQ7ZS5BY2lyY3VtZmxleGFjdXRlPTc4NDQ7ZS5BY2lyY3VtZmxleGRvdGJlbG93PTc4NTI7ZS5BY2lyY3VtZmxleGdyYXZlPTc4NDY7ZS5BY2lyY3VtZmxleGhvb2thYm92ZT03ODQ4O2UuQWNpcmN1bWZsZXhzbWFsbD02MzQ1ODtlLkFjaXJjdW1mbGV4dGlsZGU9Nzg1MDtlLkFjdXRlPTYzMTc3O2UuQWN1dGVzbWFsbD02MzQxMjtlLkFjeXJpbGxpYz0xMDQwO2UuQWRibGdyYXZlPTUxMjtlLkFkaWVyZXNpcz0xOTY7ZS5BZGllcmVzaXNjeXJpbGxpYz0xMjM0O2UuQWRpZXJlc2lzbWFjcm9uPTQ3ODtlLkFkaWVyZXNpc3NtYWxsPTYzNDYwO2UuQWRvdGJlbG93PTc4NDA7ZS5BZG90bWFjcm9uPTQ4MDtlLkFncmF2ZT0xOTI7ZS5BZ3JhdmVzbWFsbD02MzQ1NjtlLkFob29rYWJvdmU9Nzg0MjtlLkFpZWN5cmlsbGljPTEyMzY7ZS5BaW52ZXJ0ZWRicmV2ZT01MTQ7ZS5BbHBoYT05MTM7ZS5BbHBoYXRvbm9zPTkwMjtlLkFtYWNyb249MjU2O2UuQW1vbm9zcGFjZT02NTMxMztlLkFvZ29uZWs9MjYwO2UuQXJpbmc9MTk3O2UuQXJpbmdhY3V0ZT01MDY7ZS5BcmluZ2JlbG93PTc2ODA7ZS5BcmluZ3NtYWxsPTYzNDYxO2UuQXNtYWxsPTYzMzI5O2UuQXRpbGRlPTE5NTtlLkF0aWxkZXNtYWxsPTYzNDU5O2UuQXliYXJtZW5pYW49MTMyOTtlLkI9NjY7ZS5CY2lyY2xlPTkzOTk7ZS5CZG90YWNjZW50PTc2ODI7ZS5CZG90YmVsb3c9NzY4NDtlLkJlY3lyaWxsaWM9MTA0MTtlLkJlbmFybWVuaWFuPTEzMzA7ZS5CZXRhPTkxNDtlLkJob29rPTM4NTtlLkJsaW5lYmVsb3c9NzY4NjtlLkJtb25vc3BhY2U9NjUzMTQ7ZS5CcmV2ZXNtYWxsPTYzMjIwO2UuQnNtYWxsPTYzMzMwO2UuQnRvcGJhcj0zODY7ZS5DPTY3O2UuQ2Fhcm1lbmlhbj0xMzQyO2UuQ2FjdXRlPTI2MjtlLkNhcm9uPTYzMTc4O2UuQ2Fyb25zbWFsbD02MzIyMTtlLkNjYXJvbj0yNjg7ZS5DY2VkaWxsYT0xOTk7ZS5DY2VkaWxsYWFjdXRlPTc2ODg7ZS5DY2VkaWxsYXNtYWxsPTYzNDYzO2UuQ2NpcmNsZT05NDAwO2UuQ2NpcmN1bWZsZXg9MjY0O2UuQ2RvdD0yNjY7ZS5DZG90YWNjZW50PTI2NjtlLkNlZGlsbGFzbWFsbD02MzQxNjtlLkNoYWFybWVuaWFuPTEzNTM7ZS5DaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEyO2UuQ2hlY3lyaWxsaWM9MTA2MztlLkNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTQ7ZS5DaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA2O2UuQ2hlZGllcmVzaXNjeXJpbGxpYz0xMjY4O2UuQ2hlaGFybWVuaWFuPTEzNDc7ZS5DaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyNztlLkNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwODtlLkNoaT05MzU7ZS5DaG9vaz0zOTE7ZS5DaXJjdW1mbGV4c21hbGw9NjMyMjI7ZS5DbW9ub3NwYWNlPTY1MzE1O2UuQ29hcm1lbmlhbj0xMzYxO2UuQ3NtYWxsPTYzMzMxO2UuRD02ODtlLkRaPTQ5NztlLkRaY2Fyb249NDUyO2UuRGFhcm1lbmlhbj0xMzMyO2UuRGFmcmljYW49MzkzO2UuRGNhcm9uPTI3MDtlLkRjZWRpbGxhPTc2OTY7ZS5EY2lyY2xlPTk0MDE7ZS5EY2lyY3VtZmxleGJlbG93PTc2OTg7ZS5EY3JvYXQ9MjcyO2UuRGRvdGFjY2VudD03NjkwO2UuRGRvdGJlbG93PTc2OTI7ZS5EZWN5cmlsbGljPTEwNDQ7ZS5EZWljb3B0aWM9MTAwNjtlLkRlbHRhPTg3MTA7ZS5EZWx0YWdyZWVrPTkxNjtlLkRob29rPTM5NDtlLkRpZXJlc2lzPTYzMTc5O2UuRGllcmVzaXNBY3V0ZT02MzE4MDtlLkRpZXJlc2lzR3JhdmU9NjMxODE7ZS5EaWVyZXNpc3NtYWxsPTYzNDAwO2UuRGlnYW1tYWdyZWVrPTk4ODtlLkRqZWN5cmlsbGljPTEwMjY7ZS5EbGluZWJlbG93PTc2OTQ7ZS5EbW9ub3NwYWNlPTY1MzE2O2UuRG90YWNjZW50c21hbGw9NjMyMjM7ZS5Ec2xhc2g9MjcyO2UuRHNtYWxsPTYzMzMyO2UuRHRvcGJhcj0zOTU7ZS5Eej00OTg7ZS5EemNhcm9uPTQ1MztlLkR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDg7ZS5EemVjeXJpbGxpYz0xMDI5O2UuRHpoZWN5cmlsbGljPTEwMzk7ZS5FPTY5O2UuRWFjdXRlPTIwMTtlLkVhY3V0ZXNtYWxsPTYzNDY1O2UuRWJyZXZlPTI3NjtlLkVjYXJvbj0yODI7ZS5FY2VkaWxsYWJyZXZlPTc3MDg7ZS5FY2hhcm1lbmlhbj0xMzMzO2UuRWNpcmNsZT05NDAyO2UuRWNpcmN1bWZsZXg9MjAyO2UuRWNpcmN1bWZsZXhhY3V0ZT03ODcwO2UuRWNpcmN1bWZsZXhiZWxvdz03NzA0O2UuRWNpcmN1bWZsZXhkb3RiZWxvdz03ODc4O2UuRWNpcmN1bWZsZXhncmF2ZT03ODcyO2UuRWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NDtlLkVjaXJjdW1mbGV4c21hbGw9NjM0NjY7ZS5FY2lyY3VtZmxleHRpbGRlPTc4NzY7ZS5FY3lyaWxsaWM9MTAyODtlLkVkYmxncmF2ZT01MTY7ZS5FZGllcmVzaXM9MjAzO2UuRWRpZXJlc2lzc21hbGw9NjM0Njc7ZS5FZG90PTI3ODtlLkVkb3RhY2NlbnQ9Mjc4O2UuRWRvdGJlbG93PTc4NjQ7ZS5FZmN5cmlsbGljPTEwNjA7ZS5FZ3JhdmU9MjAwO2UuRWdyYXZlc21hbGw9NjM0NjQ7ZS5FaGFybWVuaWFuPTEzMzU7ZS5FaG9va2Fib3ZlPTc4NjY7ZS5FaWdodHJvbWFuPTg1NTE7ZS5FaW52ZXJ0ZWRicmV2ZT01MTg7ZS5FaW90aWZpZWRjeXJpbGxpYz0xMTI0O2UuRWxjeXJpbGxpYz0xMDUxO2UuRWxldmVucm9tYW49ODU1NDtlLkVtYWNyb249Mjc0O2UuRW1hY3JvbmFjdXRlPTc3MDI7ZS5FbWFjcm9uZ3JhdmU9NzcwMDtlLkVtY3lyaWxsaWM9MTA1MjtlLkVtb25vc3BhY2U9NjUzMTc7ZS5FbmN5cmlsbGljPTEwNTM7ZS5FbmRlc2NlbmRlcmN5cmlsbGljPTExODY7ZS5Fbmc9MzMwO2UuRW5naGVjeXJpbGxpYz0xMTg4O2UuRW5ob29rY3lyaWxsaWM9MTIyMztlLkVvZ29uZWs9MjgwO2UuRW9wZW49NDAwO2UuRXBzaWxvbj05MTc7ZS5FcHNpbG9udG9ub3M9OTA0O2UuRXJjeXJpbGxpYz0xMDU2O2UuRXJldmVyc2VkPTM5ODtlLkVyZXZlcnNlZGN5cmlsbGljPTEwNjk7ZS5Fc2N5cmlsbGljPTEwNTc7ZS5Fc2Rlc2NlbmRlcmN5cmlsbGljPTExOTQ7ZS5Fc2g9NDI1O2UuRXNtYWxsPTYzMzMzO2UuRXRhPTkxOTtlLkV0YXJtZW5pYW49MTMzNjtlLkV0YXRvbm9zPTkwNTtlLkV0aD0yMDg7ZS5FdGhzbWFsbD02MzQ3MjtlLkV0aWxkZT03ODY4O2UuRXRpbGRlYmVsb3c9NzcwNjtlLkV1cm89ODM2NDtlLkV6aD00Mzk7ZS5FemhjYXJvbj00OTQ7ZS5FemhyZXZlcnNlZD00NDA7ZS5GPTcwO2UuRmNpcmNsZT05NDAzO2UuRmRvdGFjY2VudD03NzEwO2UuRmVoYXJtZW5pYW49MTM2NjtlLkZlaWNvcHRpYz05OTY7ZS5GaG9vaz00MDE7ZS5GaXRhY3lyaWxsaWM9MTEzODtlLkZpdmVyb21hbj04NTQ4O2UuRm1vbm9zcGFjZT02NTMxODtlLkZvdXJyb21hbj04NTQ3O2UuRnNtYWxsPTYzMzM0O2UuRz03MTtlLkdCc3F1YXJlPTEzMTkxO2UuR2FjdXRlPTUwMDtlLkdhbW1hPTkxNTtlLkdhbW1hYWZyaWNhbj00MDQ7ZS5HYW5naWFjb3B0aWM9MTAwMjtlLkdicmV2ZT0yODY7ZS5HY2Fyb249NDg2O2UuR2NlZGlsbGE9MjkwO2UuR2NpcmNsZT05NDA0O2UuR2NpcmN1bWZsZXg9Mjg0O2UuR2NvbW1hYWNjZW50PTI5MDtlLkdkb3Q9Mjg4O2UuR2RvdGFjY2VudD0yODg7ZS5HZWN5cmlsbGljPTEwNDM7ZS5HaGFkYXJtZW5pYW49MTM0NjtlLkdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTcyO2UuR2hlc3Ryb2tlY3lyaWxsaWM9MTE3MDtlLkdoZXVwdHVybmN5cmlsbGljPTExNjg7ZS5HaG9vaz00MDM7ZS5HaW1hcm1lbmlhbj0xMzMxO2UuR2plY3lyaWxsaWM9MTAyNztlLkdtYWNyb249NzcxMjtlLkdtb25vc3BhY2U9NjUzMTk7ZS5HcmF2ZT02MzE4MjtlLkdyYXZlc21hbGw9NjMzMjg7ZS5Hc21hbGw9NjMzMzU7ZS5Hc21hbGxob29rPTY2NztlLkdzdHJva2U9NDg0O2UuSD03MjtlLkgxODUzMz05Njc5O2UuSDE4NTQzPTk2NDI7ZS5IMTg1NTE9OTY0MztlLkgyMjA3Mz05NjMzO2UuSFBzcXVhcmU9MTMyNTk7ZS5IYWFia2hhc2lhbmN5cmlsbGljPTExOTI7ZS5IYWRlc2NlbmRlcmN5cmlsbGljPTEyMDI7ZS5IYXJkc2lnbmN5cmlsbGljPTEwNjY7ZS5IYmFyPTI5NDtlLkhicmV2ZWJlbG93PTc3MjI7ZS5IY2VkaWxsYT03NzIwO2UuSGNpcmNsZT05NDA1O2UuSGNpcmN1bWZsZXg9MjkyO2UuSGRpZXJlc2lzPTc3MTg7ZS5IZG90YWNjZW50PTc3MTQ7ZS5IZG90YmVsb3c9NzcxNjtlLkhtb25vc3BhY2U9NjUzMjA7ZS5Ib2FybWVuaWFuPTEzNDQ7ZS5Ib3JpY29wdGljPTFlMztlLkhzbWFsbD02MzMzNjtlLkh1bmdhcnVtbGF1dD02MzE4MztlLkh1bmdhcnVtbGF1dHNtYWxsPTYzMjI0O2UuSHpzcXVhcmU9MTMyMDA7ZS5JPTczO2UuSUFjeXJpbGxpYz0xMDcxO2UuSUo9MzA2O2UuSVVjeXJpbGxpYz0xMDcwO2UuSWFjdXRlPTIwNTtlLklhY3V0ZXNtYWxsPTYzNDY5O2UuSWJyZXZlPTMwMDtlLkljYXJvbj00NjM7ZS5JY2lyY2xlPTk0MDY7ZS5JY2lyY3VtZmxleD0yMDY7ZS5JY2lyY3VtZmxleHNtYWxsPTYzNDcwO2UuSWN5cmlsbGljPTEwMzA7ZS5JZGJsZ3JhdmU9NTIwO2UuSWRpZXJlc2lzPTIwNztlLklkaWVyZXNpc2FjdXRlPTc3MjY7ZS5JZGllcmVzaXNjeXJpbGxpYz0xMjUyO2UuSWRpZXJlc2lzc21hbGw9NjM0NzE7ZS5JZG90PTMwNDtlLklkb3RhY2NlbnQ9MzA0O2UuSWRvdGJlbG93PTc4ODI7ZS5JZWJyZXZlY3lyaWxsaWM9MTIzODtlLkllY3lyaWxsaWM9MTA0NTtlLklmcmFrdHVyPTg0NjU7ZS5JZ3JhdmU9MjA0O2UuSWdyYXZlc21hbGw9NjM0Njg7ZS5JaG9va2Fib3ZlPTc4ODA7ZS5JaWN5cmlsbGljPTEwNDg7ZS5JaW52ZXJ0ZWRicmV2ZT01MjI7ZS5JaXNob3J0Y3lyaWxsaWM9MTA0OTtlLkltYWNyb249Mjk4O2UuSW1hY3JvbmN5cmlsbGljPTEyNTA7ZS5JbW9ub3NwYWNlPTY1MzIxO2UuSW5pYXJtZW5pYW49MTMzOTtlLklvY3lyaWxsaWM9MTAyNTtlLklvZ29uZWs9MzAyO2UuSW90YT05MjE7ZS5Jb3RhYWZyaWNhbj00MDY7ZS5Jb3RhZGllcmVzaXM9OTM4O2UuSW90YXRvbm9zPTkwNjtlLklzbWFsbD02MzMzNztlLklzdHJva2U9NDA3O2UuSXRpbGRlPTI5NjtlLkl0aWxkZWJlbG93PTc3MjQ7ZS5JemhpdHNhY3lyaWxsaWM9MTE0MDtlLkl6aGl0c2FkYmxncmF2ZWN5cmlsbGljPTExNDI7ZS5KPTc0O2UuSmFhcm1lbmlhbj0xMzQ1O2UuSmNpcmNsZT05NDA3O2UuSmNpcmN1bWZsZXg9MzA4O2UuSmVjeXJpbGxpYz0xMDMyO2UuSmhlaGFybWVuaWFuPTEzNTU7ZS5KbW9ub3NwYWNlPTY1MzIyO2UuSnNtYWxsPTYzMzM4O2UuSz03NTtlLktCc3F1YXJlPTEzMTg5O2UuS0tzcXVhcmU9MTMyNjE7ZS5LYWJhc2hraXJjeXJpbGxpYz0xMTg0O2UuS2FjdXRlPTc3Mjg7ZS5LYWN5cmlsbGljPTEwNTA7ZS5LYWRlc2NlbmRlcmN5cmlsbGljPTExNzg7ZS5LYWhvb2tjeXJpbGxpYz0xMjE5O2UuS2FwcGE9OTIyO2UuS2FzdHJva2VjeXJpbGxpYz0xMTgyO2UuS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODA7ZS5LY2Fyb249NDg4O2UuS2NlZGlsbGE9MzEwO2UuS2NpcmNsZT05NDA4O2UuS2NvbW1hYWNjZW50PTMxMDtlLktkb3RiZWxvdz03NzMwO2UuS2VoYXJtZW5pYW49MTM2NDtlLktlbmFybWVuaWFuPTEzNDM7ZS5LaGFjeXJpbGxpYz0xMDYxO2UuS2hlaWNvcHRpYz05OTg7ZS5LaG9vaz00MDg7ZS5LamVjeXJpbGxpYz0xMDM2O2UuS2xpbmViZWxvdz03NzMyO2UuS21vbm9zcGFjZT02NTMyMztlLktvcHBhY3lyaWxsaWM9MTE1MjtlLktvcHBhZ3JlZWs9OTkwO2UuS3NpY3lyaWxsaWM9MTEzNDtlLktzbWFsbD02MzMzOTtlLkw9NzY7ZS5MSj00NTU7ZS5MTD02MzE2NztlLkxhY3V0ZT0zMTM7ZS5MYW1iZGE9OTIzO2UuTGNhcm9uPTMxNztlLkxjZWRpbGxhPTMxNTtlLkxjaXJjbGU9OTQwOTtlLkxjaXJjdW1mbGV4YmVsb3c9Nzc0MDtlLkxjb21tYWFjY2VudD0zMTU7ZS5MZG90PTMxOTtlLkxkb3RhY2NlbnQ9MzE5O2UuTGRvdGJlbG93PTc3MzQ7ZS5MZG90YmVsb3dtYWNyb249NzczNjtlLkxpd25hcm1lbmlhbj0xMzQwO2UuTGo9NDU2O2UuTGplY3lyaWxsaWM9MTAzMztlLkxsaW5lYmVsb3c9NzczODtlLkxtb25vc3BhY2U9NjUzMjQ7ZS5Mc2xhc2g9MzIxO2UuTHNsYXNoc21hbGw9NjMyMjU7ZS5Mc21hbGw9NjMzNDA7ZS5NPTc3O2UuTUJzcXVhcmU9MTMxOTA7ZS5NYWNyb249NjMxODQ7ZS5NYWNyb25zbWFsbD02MzQwNztlLk1hY3V0ZT03NzQyO2UuTWNpcmNsZT05NDEwO2UuTWRvdGFjY2VudD03NzQ0O2UuTWRvdGJlbG93PTc3NDY7ZS5NZW5hcm1lbmlhbj0xMzQ4O2UuTW1vbm9zcGFjZT02NTMyNTtlLk1zbWFsbD02MzM0MTtlLk10dXJuZWQ9NDEyO2UuTXU9OTI0O2UuTj03ODtlLk5KPTQ1ODtlLk5hY3V0ZT0zMjM7ZS5OY2Fyb249MzI3O2UuTmNlZGlsbGE9MzI1O2UuTmNpcmNsZT05NDExO2UuTmNpcmN1bWZsZXhiZWxvdz03NzU0O2UuTmNvbW1hYWNjZW50PTMyNTtlLk5kb3RhY2NlbnQ9Nzc0ODtlLk5kb3RiZWxvdz03NzUwO2UuTmhvb2tsZWZ0PTQxMztlLk5pbmVyb21hbj04NTUyO2UuTmo9NDU5O2UuTmplY3lyaWxsaWM9MTAzNDtlLk5saW5lYmVsb3c9Nzc1MjtlLk5tb25vc3BhY2U9NjUzMjY7ZS5Ob3dhcm1lbmlhbj0xMzUwO2UuTnNtYWxsPTYzMzQyO2UuTnRpbGRlPTIwOTtlLk50aWxkZXNtYWxsPTYzNDczO2UuTnU9OTI1O2UuTz03OTtlLk9FPTMzODtlLk9Fc21hbGw9NjMyMjY7ZS5PYWN1dGU9MjExO2UuT2FjdXRlc21hbGw9NjM0NzU7ZS5PYmFycmVkY3lyaWxsaWM9MTI1NjtlLk9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTg7ZS5PYnJldmU9MzM0O2UuT2Nhcm9uPTQ2NTtlLk9jZW50ZXJlZHRpbGRlPTQxNTtlLk9jaXJjbGU9OTQxMjtlLk9jaXJjdW1mbGV4PTIxMjtlLk9jaXJjdW1mbGV4YWN1dGU9Nzg4ODtlLk9jaXJjdW1mbGV4ZG90YmVsb3c9Nzg5NjtlLk9jaXJjdW1mbGV4Z3JhdmU9Nzg5MDtlLk9jaXJjdW1mbGV4aG9va2Fib3ZlPTc4OTI7ZS5PY2lyY3VtZmxleHNtYWxsPTYzNDc2O2UuT2NpcmN1bWZsZXh0aWxkZT03ODk0O2UuT2N5cmlsbGljPTEwNTQ7ZS5PZGJsYWN1dGU9MzM2O2UuT2RibGdyYXZlPTUyNDtlLk9kaWVyZXNpcz0yMTQ7ZS5PZGllcmVzaXNjeXJpbGxpYz0xMjU0O2UuT2RpZXJlc2lzc21hbGw9NjM0Nzg7ZS5PZG90YmVsb3c9Nzg4NDtlLk9nb25la3NtYWxsPTYzMjI3O2UuT2dyYXZlPTIxMDtlLk9ncmF2ZXNtYWxsPTYzNDc0O2UuT2hhcm1lbmlhbj0xMzY1O2UuT2htPTg0ODY7ZS5PaG9va2Fib3ZlPTc4ODY7ZS5PaG9ybj00MTY7ZS5PaG9ybmFjdXRlPTc4OTg7ZS5PaG9ybmRvdGJlbG93PTc5MDY7ZS5PaG9ybmdyYXZlPTc5MDA7ZS5PaG9ybmhvb2thYm92ZT03OTAyO2UuT2hvcm50aWxkZT03OTA0O2UuT2h1bmdhcnVtbGF1dD0zMzY7ZS5PaT00MTg7ZS5PaW52ZXJ0ZWRicmV2ZT01MjY7ZS5PbWFjcm9uPTMzMjtlLk9tYWNyb25hY3V0ZT03NzYyO2UuT21hY3JvbmdyYXZlPTc3NjA7ZS5PbWVnYT04NDg2O2UuT21lZ2FjeXJpbGxpYz0xMTIwO2UuT21lZ2FncmVlaz05Mzc7ZS5PbWVnYXJvdW5kY3lyaWxsaWM9MTE0NjtlLk9tZWdhdGl0bG9jeXJpbGxpYz0xMTQ4O2UuT21lZ2F0b25vcz05MTE7ZS5PbWljcm9uPTkyNztlLk9taWNyb250b25vcz05MDg7ZS5PbW9ub3NwYWNlPTY1MzI3O2UuT25lcm9tYW49ODU0NDtlLk9vZ29uZWs9NDkwO2UuT29nb25la21hY3Jvbj00OTI7ZS5Pb3Blbj0zOTA7ZS5Pc2xhc2g9MjE2O2UuT3NsYXNoYWN1dGU9NTEwO2UuT3NsYXNoc21hbGw9NjM0ODA7ZS5Pc21hbGw9NjMzNDM7ZS5Pc3Ryb2tlYWN1dGU9NTEwO2UuT3RjeXJpbGxpYz0xMTUwO2UuT3RpbGRlPTIxMztlLk90aWxkZWFjdXRlPTc3NTY7ZS5PdGlsZGVkaWVyZXNpcz03NzU4O2UuT3RpbGRlc21hbGw9NjM0Nzc7ZS5QPTgwO2UuUGFjdXRlPTc3NjQ7ZS5QY2lyY2xlPTk0MTM7ZS5QZG90YWNjZW50PTc3NjY7ZS5QZWN5cmlsbGljPTEwNTU7ZS5QZWhhcm1lbmlhbj0xMzU0O2UuUGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MDtlLlBoaT05MzQ7ZS5QaG9vaz00MjA7ZS5QaT05Mjg7ZS5QaXdyYXJtZW5pYW49MTM2MztlLlBtb25vc3BhY2U9NjUzMjg7ZS5Qc2k9OTM2O2UuUHNpY3lyaWxsaWM9MTEzNjtlLlBzbWFsbD02MzM0NDtlLlE9ODE7ZS5RY2lyY2xlPTk0MTQ7ZS5RbW9ub3NwYWNlPTY1MzI5O2UuUXNtYWxsPTYzMzQ1O2UuUj04MjtlLlJhYXJtZW5pYW49MTM1NjtlLlJhY3V0ZT0zNDA7ZS5SY2Fyb249MzQ0O2UuUmNlZGlsbGE9MzQyO2UuUmNpcmNsZT05NDE1O2UuUmNvbW1hYWNjZW50PTM0MjtlLlJkYmxncmF2ZT01Mjg7ZS5SZG90YWNjZW50PTc3Njg7ZS5SZG90YmVsb3c9Nzc3MDtlLlJkb3RiZWxvd21hY3Jvbj03NzcyO2UuUmVoYXJtZW5pYW49MTM2MDtlLlJmcmFrdHVyPTg0NzY7ZS5SaG89OTI5O2UuUmluZ3NtYWxsPTYzMjI4O2UuUmludmVydGVkYnJldmU9NTMwO2UuUmxpbmViZWxvdz03Nzc0O2UuUm1vbm9zcGFjZT02NTMzMDtlLlJzbWFsbD02MzM0NjtlLlJzbWFsbGludmVydGVkPTY0MTtlLlJzbWFsbGludmVydGVkc3VwZXJpb3I9Njk0O2UuUz04MztlLlNGMDEwMDAwPTk0ODQ7ZS5TRjAyMDAwMD05NDkyO2UuU0YwMzAwMDA9OTQ4ODtlLlNGMDQwMDAwPTk0OTY7ZS5TRjA1MDAwMD05NTMyO2UuU0YwNjAwMDA9OTUxNjtlLlNGMDcwMDAwPTk1MjQ7ZS5TRjA4MDAwMD05NTAwO2UuU0YwOTAwMDA9OTUwODtlLlNGMTAwMDAwPTk0NzI7ZS5TRjExMDAwMD05NDc0O2UuU0YxOTAwMDA9OTU2OTtlLlNGMjAwMDAwPTk1NzA7ZS5TRjIxMDAwMD05NTU4O2UuU0YyMjAwMDA9OTU1NztlLlNGMjMwMDAwPTk1NzE7ZS5TRjI0MDAwMD05NTUzO2UuU0YyNTAwMDA9OTU1OTtlLlNGMjYwMDAwPTk1NjU7ZS5TRjI3MDAwMD05NTY0O2UuU0YyODAwMDA9OTU2MztlLlNGMzYwMDAwPTk1NjY7ZS5TRjM3MDAwMD05NTY3O2UuU0YzODAwMDA9OTU2MjtlLlNGMzkwMDAwPTk1NTY7ZS5TRjQwMDAwMD05NTc3O2UuU0Y0MTAwMDA9OTU3NDtlLlNGNDIwMDAwPTk1Njg7ZS5TRjQzMDAwMD05NTUyO2UuU0Y0NDAwMDA9OTU4MDtlLlNGNDUwMDAwPTk1NzU7ZS5TRjQ2MDAwMD05NTc2O2UuU0Y0NzAwMDA9OTU3MjtlLlNGNDgwMDAwPTk1NzM7ZS5TRjQ5MDAwMD05NTYxO2UuU0Y1MDAwMDA9OTU2MDtlLlNGNTEwMDAwPTk1NTQ7ZS5TRjUyMDAwMD05NTU1O2UuU0Y1MzAwMDA9OTU3OTtlLlNGNTQwMDAwPTk1Nzg7ZS5TYWN1dGU9MzQ2O2UuU2FjdXRlZG90YWNjZW50PTc3ODA7ZS5TYW1waWdyZWVrPTk5MjtlLlNjYXJvbj0zNTI7ZS5TY2Fyb25kb3RhY2NlbnQ9Nzc4MjtlLlNjYXJvbnNtYWxsPTYzMjI5O2UuU2NlZGlsbGE9MzUwO2UuU2Nod2E9Mzk5O2UuU2Nod2FjeXJpbGxpYz0xMjQwO2UuU2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDI7ZS5TY2lyY2xlPTk0MTY7ZS5TY2lyY3VtZmxleD0zNDg7ZS5TY29tbWFhY2NlbnQ9NTM2O2UuU2RvdGFjY2VudD03Nzc2O2UuU2RvdGJlbG93PTc3Nzg7ZS5TZG90YmVsb3dkb3RhY2NlbnQ9Nzc4NDtlLlNlaGFybWVuaWFuPTEzNTc7ZS5TZXZlbnJvbWFuPTg1NTA7ZS5TaGFhcm1lbmlhbj0xMzUxO2UuU2hhY3lyaWxsaWM9MTA2NDtlLlNoY2hhY3lyaWxsaWM9MTA2NTtlLlNoZWljb3B0aWM9OTk0O2UuU2hoYWN5cmlsbGljPTEyMTA7ZS5TaGltYWNvcHRpYz0xMDA0O2UuU2lnbWE9OTMxO2UuU2l4cm9tYW49ODU0OTtlLlNtb25vc3BhY2U9NjUzMzE7ZS5Tb2Z0c2lnbmN5cmlsbGljPTEwNjg7ZS5Tc21hbGw9NjMzNDc7ZS5TdGlnbWFncmVlaz05ODY7ZS5UPTg0O2UuVGF1PTkzMjtlLlRiYXI9MzU4O2UuVGNhcm9uPTM1NjtlLlRjZWRpbGxhPTM1NDtlLlRjaXJjbGU9OTQxNztlLlRjaXJjdW1mbGV4YmVsb3c9Nzc5MjtlLlRjb21tYWFjY2VudD0zNTQ7ZS5UZG90YWNjZW50PTc3ODY7ZS5UZG90YmVsb3c9Nzc4ODtlLlRlY3lyaWxsaWM9MTA1ODtlLlRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NjtlLlRlbnJvbWFuPTg1NTM7ZS5UZXRzZWN5cmlsbGljPTEyMDQ7ZS5UaGV0YT05MjA7ZS5UaG9vaz00Mjg7ZS5UaG9ybj0yMjI7ZS5UaG9ybnNtYWxsPTYzNDg2O2UuVGhyZWVyb21hbj04NTQ2O2UuVGlsZGVzbWFsbD02MzIzMDtlLlRpd25hcm1lbmlhbj0xMzU5O2UuVGxpbmViZWxvdz03NzkwO2UuVG1vbm9zcGFjZT02NTMzMjtlLlRvYXJtZW5pYW49MTMzNztlLlRvbmVmaXZlPTQ0NDtlLlRvbmVzaXg9Mzg4O2UuVG9uZXR3bz00MjM7ZS5UcmV0cm9mbGV4aG9vaz00MzA7ZS5Uc2VjeXJpbGxpYz0xMDYyO2UuVHNoZWN5cmlsbGljPTEwMzU7ZS5Uc21hbGw9NjMzNDg7ZS5Ud2VsdmVyb21hbj04NTU1O2UuVHdvcm9tYW49ODU0NTtlLlU9ODU7ZS5VYWN1dGU9MjE4O2UuVWFjdXRlc21hbGw9NjM0ODI7ZS5VYnJldmU9MzY0O2UuVWNhcm9uPTQ2NztlLlVjaXJjbGU9OTQxODtlLlVjaXJjdW1mbGV4PTIxOTtlLlVjaXJjdW1mbGV4YmVsb3c9Nzc5ODtlLlVjaXJjdW1mbGV4c21hbGw9NjM0ODM7ZS5VY3lyaWxsaWM9MTA1OTtlLlVkYmxhY3V0ZT0zNjg7ZS5VZGJsZ3JhdmU9NTMyO2UuVWRpZXJlc2lzPTIyMDtlLlVkaWVyZXNpc2FjdXRlPTQ3MTtlLlVkaWVyZXNpc2JlbG93PTc3OTQ7ZS5VZGllcmVzaXNjYXJvbj00NzM7ZS5VZGllcmVzaXNjeXJpbGxpYz0xMjY0O2UuVWRpZXJlc2lzZ3JhdmU9NDc1O2UuVWRpZXJlc2lzbWFjcm9uPTQ2OTtlLlVkaWVyZXNpc3NtYWxsPTYzNDg0O2UuVWRvdGJlbG93PTc5MDg7ZS5VZ3JhdmU9MjE3O2UuVWdyYXZlc21hbGw9NjM0ODE7ZS5VaG9va2Fib3ZlPTc5MTA7ZS5VaG9ybj00MzE7ZS5VaG9ybmFjdXRlPTc5MTI7ZS5VaG9ybmRvdGJlbG93PTc5MjA7ZS5VaG9ybmdyYXZlPTc5MTQ7ZS5VaG9ybmhvb2thYm92ZT03OTE2O2UuVWhvcm50aWxkZT03OTE4O2UuVWh1bmdhcnVtbGF1dD0zNjg7ZS5VaHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NjtlLlVpbnZlcnRlZGJyZXZlPTUzNDtlLlVrY3lyaWxsaWM9MTE0NDtlLlVtYWNyb249MzYyO2UuVW1hY3JvbmN5cmlsbGljPTEyNjI7ZS5VbWFjcm9uZGllcmVzaXM9NzgwMjtlLlVtb25vc3BhY2U9NjUzMzM7ZS5Vb2dvbmVrPTM3MDtlLlVwc2lsb249OTMzO2UuVXBzaWxvbjE9OTc4O2UuVXBzaWxvbmFjdXRlaG9va3N5bWJvbGdyZWVrPTk3OTtlLlVwc2lsb25hZnJpY2FuPTQzMztlLlVwc2lsb25kaWVyZXNpcz05Mzk7ZS5VcHNpbG9uZGllcmVzaXNob29rc3ltYm9sZ3JlZWs9OTgwO2UuVXBzaWxvbmhvb2tzeW1ib2w9OTc4O2UuVXBzaWxvbnRvbm9zPTkxMDtlLlVyaW5nPTM2NjtlLlVzaG9ydGN5cmlsbGljPTEwMzg7ZS5Vc21hbGw9NjMzNDk7ZS5Vc3RyYWlnaHRjeXJpbGxpYz0xMTk4O2UuVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWM9MTIwMDtlLlV0aWxkZT0zNjA7ZS5VdGlsZGVhY3V0ZT03ODAwO2UuVXRpbGRlYmVsb3c9Nzc5NjtlLlY9ODY7ZS5WY2lyY2xlPTk0MTk7ZS5WZG90YmVsb3c9NzgwNjtlLlZlY3lyaWxsaWM9MTA0MjtlLlZld2FybWVuaWFuPTEzNTg7ZS5WaG9vaz00MzQ7ZS5WbW9ub3NwYWNlPTY1MzM0O2UuVm9hcm1lbmlhbj0xMzUyO2UuVnNtYWxsPTYzMzUwO2UuVnRpbGRlPTc4MDQ7ZS5XPTg3O2UuV2FjdXRlPTc4MTA7ZS5XY2lyY2xlPTk0MjA7ZS5XY2lyY3VtZmxleD0zNzI7ZS5XZGllcmVzaXM9NzgxMjtlLldkb3RhY2NlbnQ9NzgxNDtlLldkb3RiZWxvdz03ODE2O2UuV2dyYXZlPTc4MDg7ZS5XbW9ub3NwYWNlPTY1MzM1O2UuV3NtYWxsPTYzMzUxO2UuWD04ODtlLlhjaXJjbGU9OTQyMTtlLlhkaWVyZXNpcz03ODIwO2UuWGRvdGFjY2VudD03ODE4O2UuWGVoYXJtZW5pYW49MTM0MTtlLlhpPTkyNjtlLlhtb25vc3BhY2U9NjUzMzY7ZS5Yc21hbGw9NjMzNTI7ZS5ZPTg5O2UuWWFjdXRlPTIyMTtlLllhY3V0ZXNtYWxsPTYzNDg1O2UuWWF0Y3lyaWxsaWM9MTEyMjtlLlljaXJjbGU9OTQyMjtlLlljaXJjdW1mbGV4PTM3NDtlLllkaWVyZXNpcz0zNzY7ZS5ZZGllcmVzaXNzbWFsbD02MzQ4NztlLllkb3RhY2NlbnQ9NzgyMjtlLllkb3RiZWxvdz03OTI0O2UuWWVyaWN5cmlsbGljPTEwNjc7ZS5ZZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjcyO2UuWWdyYXZlPTc5MjI7ZS5ZaG9vaz00MzU7ZS5ZaG9va2Fib3ZlPTc5MjY7ZS5ZaWFybWVuaWFuPTEzNDk7ZS5ZaWN5cmlsbGljPTEwMzE7ZS5ZaXduYXJtZW5pYW49MTM2MjtlLlltb25vc3BhY2U9NjUzMzc7ZS5Zc21hbGw9NjMzNTM7ZS5ZdGlsZGU9NzkyODtlLll1c2JpZ2N5cmlsbGljPTExMzA7ZS5ZdXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzI7ZS5ZdXNsaXR0bGVjeXJpbGxpYz0xMTI2O2UuWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI4O2UuWj05MDtlLlphYXJtZW5pYW49MTMzNDtlLlphY3V0ZT0zNzc7ZS5aY2Fyb249MzgxO2UuWmNhcm9uc21hbGw9NjMyMzE7ZS5aY2lyY2xlPTk0MjM7ZS5aY2lyY3VtZmxleD03ODI0O2UuWmRvdD0zNzk7ZS5aZG90YWNjZW50PTM3OTtlLlpkb3RiZWxvdz03ODI2O2UuWmVjeXJpbGxpYz0xMDQ3O2UuWmVkZXNjZW5kZXJjeXJpbGxpYz0xMTc2O2UuWmVkaWVyZXNpc2N5cmlsbGljPTEyNDY7ZS5aZXRhPTkxODtlLlpoZWFybWVuaWFuPTEzMzg7ZS5aaGVicmV2ZWN5cmlsbGljPTEyMTc7ZS5aaGVjeXJpbGxpYz0xMDQ2O2UuWmhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NDtlLlpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NDtlLlpsaW5lYmVsb3c9NzgyODtlLlptb25vc3BhY2U9NjUzMzg7ZS5ac21hbGw9NjMzNTQ7ZS5ac3Ryb2tlPTQzNztlLmE9OTc7ZS5hYWJlbmdhbGk9MjQzODtlLmFhY3V0ZT0yMjU7ZS5hYWRldmE9MjMxMDtlLmFhZ3VqYXJhdGk9MjY5NDtlLmFhZ3VybXVraGk9MjU2NjtlLmFhbWF0cmFndXJtdWtoaT0yNjIyO2UuYWFydXNxdWFyZT0xMzA1OTtlLmFhdm93ZWxzaWduYmVuZ2FsaT0yNDk0O2UuYWF2b3dlbHNpZ25kZXZhPTIzNjY7ZS5hYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTA7ZS5hYmJyZXZpYXRpb25tYXJrYXJtZW5pYW49MTM3NTtlLmFiYnJldmlhdGlvbnNpZ25kZXZhPTI0MTY7ZS5hYmVuZ2FsaT0yNDM3O2UuYWJvcG9tb2ZvPTEyNTcwO2UuYWJyZXZlPTI1OTtlLmFicmV2ZWFjdXRlPTc4NTU7ZS5hYnJldmVjeXJpbGxpYz0xMjMzO2UuYWJyZXZlZG90YmVsb3c9Nzg2MztlLmFicmV2ZWdyYXZlPTc4NTc7ZS5hYnJldmVob29rYWJvdmU9Nzg1OTtlLmFicmV2ZXRpbGRlPTc4NjE7ZS5hY2Fyb249NDYyO2UuYWNpcmNsZT05NDI0O2UuYWNpcmN1bWZsZXg9MjI2O2UuYWNpcmN1bWZsZXhhY3V0ZT03ODQ1O2UuYWNpcmN1bWZsZXhkb3RiZWxvdz03ODUzO2UuYWNpcmN1bWZsZXhncmF2ZT03ODQ3O2UuYWNpcmN1bWZsZXhob29rYWJvdmU9Nzg0OTtlLmFjaXJjdW1mbGV4dGlsZGU9Nzg1MTtlLmFjdXRlPTE4MDtlLmFjdXRlYmVsb3djbWI9NzkxO2UuYWN1dGVjbWI9NzY5O2UuYWN1dGVjb21iPTc2OTtlLmFjdXRlZGV2YT0yMzg4O2UuYWN1dGVsb3dtb2Q9NzE5O2UuYWN1dGV0b25lY21iPTgzMztlLmFjeXJpbGxpYz0xMDcyO2UuYWRibGdyYXZlPTUxMztlLmFkZGFrZ3VybXVraGk9MjY3MztlLmFkZXZhPTIzMDk7ZS5hZGllcmVzaXM9MjI4O2UuYWRpZXJlc2lzY3lyaWxsaWM9MTIzNTtlLmFkaWVyZXNpc21hY3Jvbj00Nzk7ZS5hZG90YmVsb3c9Nzg0MTtlLmFkb3RtYWNyb249NDgxO2UuYWU9MjMwO2UuYWVhY3V0ZT01MDk7ZS5hZWtvcmVhbj0xMjYyNDtlLmFlbWFjcm9uPTQ4MztlLmFmaWkwMDIwOD04MjEzO2UuYWZpaTA4OTQxPTgzNTY7ZS5hZmlpMTAwMTc9MTA0MDtlLmFmaWkxMDAxOD0xMDQxO2UuYWZpaTEwMDE5PTEwNDI7ZS5hZmlpMTAwMjA9MTA0MztlLmFmaWkxMDAyMT0xMDQ0O2UuYWZpaTEwMDIyPTEwNDU7ZS5hZmlpMTAwMjM9MTAyNTtlLmFmaWkxMDAyND0xMDQ2O2UuYWZpaTEwMDI1PTEwNDc7ZS5hZmlpMTAwMjY9MTA0ODtlLmFmaWkxMDAyNz0xMDQ5O2UuYWZpaTEwMDI4PTEwNTA7ZS5hZmlpMTAwMjk9MTA1MTtlLmFmaWkxMDAzMD0xMDUyO2UuYWZpaTEwMDMxPTEwNTM7ZS5hZmlpMTAwMzI9MTA1NDtlLmFmaWkxMDAzMz0xMDU1O2UuYWZpaTEwMDM0PTEwNTY7ZS5hZmlpMTAwMzU9MTA1NztlLmFmaWkxMDAzNj0xMDU4O2UuYWZpaTEwMDM3PTEwNTk7ZS5hZmlpMTAwMzg9MTA2MDtlLmFmaWkxMDAzOT0xMDYxO2UuYWZpaTEwMDQwPTEwNjI7ZS5hZmlpMTAwNDE9MTA2MztlLmFmaWkxMDA0Mj0xMDY0O2UuYWZpaTEwMDQzPTEwNjU7ZS5hZmlpMTAwNDQ9MTA2NjtlLmFmaWkxMDA0NT0xMDY3O2UuYWZpaTEwMDQ2PTEwNjg7ZS5hZmlpMTAwNDc9MTA2OTtlLmFmaWkxMDA0OD0xMDcwO2UuYWZpaTEwMDQ5PTEwNzE7ZS5hZmlpMTAwNTA9MTE2ODtlLmFmaWkxMDA1MT0xMDI2O2UuYWZpaTEwMDUyPTEwMjc7ZS5hZmlpMTAwNTM9MTAyODtlLmFmaWkxMDA1ND0xMDI5O2UuYWZpaTEwMDU1PTEwMzA7ZS5hZmlpMTAwNTY9MTAzMTtlLmFmaWkxMDA1Nz0xMDMyO2UuYWZpaTEwMDU4PTEwMzM7ZS5hZmlpMTAwNTk9MTAzNDtlLmFmaWkxMDA2MD0xMDM1O2UuYWZpaTEwMDYxPTEwMzY7ZS5hZmlpMTAwNjI9MTAzODtlLmFmaWkxMDA2Mz02MzE3MjtlLmFmaWkxMDA2ND02MzE3MztlLmFmaWkxMDA2NT0xMDcyO2UuYWZpaTEwMDY2PTEwNzM7ZS5hZmlpMTAwNjc9MTA3NDtlLmFmaWkxMDA2OD0xMDc1O2UuYWZpaTEwMDY5PTEwNzY7ZS5hZmlpMTAwNzA9MTA3NztlLmFmaWkxMDA3MT0xMTA1O2UuYWZpaTEwMDcyPTEwNzg7ZS5hZmlpMTAwNzM9MTA3OTtlLmFmaWkxMDA3ND0xMDgwO2UuYWZpaTEwMDc1PTEwODE7ZS5hZmlpMTAwNzY9MTA4MjtlLmFmaWkxMDA3Nz0xMDgzO2UuYWZpaTEwMDc4PTEwODQ7ZS5hZmlpMTAwNzk9MTA4NTtlLmFmaWkxMDA4MD0xMDg2O2UuYWZpaTEwMDgxPTEwODc7ZS5hZmlpMTAwODI9MTA4ODtlLmFmaWkxMDA4Mz0xMDg5O2UuYWZpaTEwMDg0PTEwOTA7ZS5hZmlpMTAwODU9MTA5MTtlLmFmaWkxMDA4Nj0xMDkyO2UuYWZpaTEwMDg3PTEwOTM7ZS5hZmlpMTAwODg9MTA5NDtlLmFmaWkxMDA4OT0xMDk1O2UuYWZpaTEwMDkwPTEwOTY7ZS5hZmlpMTAwOTE9MTA5NztlLmFmaWkxMDA5Mj0xMDk4O2UuYWZpaTEwMDkzPTEwOTk7ZS5hZmlpMTAwOTQ9MTEwMDtlLmFmaWkxMDA5NT0xMTAxO2UuYWZpaTEwMDk2PTExMDI7ZS5hZmlpMTAwOTc9MTEwMztlLmFmaWkxMDA5OD0xMTY5O2UuYWZpaTEwMDk5PTExMDY7ZS5hZmlpMTAxMDA9MTEwNztlLmFmaWkxMDEwMT0xMTA4O2UuYWZpaTEwMTAyPTExMDk7ZS5hZmlpMTAxMDM9MTExMDtlLmFmaWkxMDEwND0xMTExO2UuYWZpaTEwMTA1PTExMTI7ZS5hZmlpMTAxMDY9MTExMztlLmFmaWkxMDEwNz0xMTE0O2UuYWZpaTEwMTA4PTExMTU7ZS5hZmlpMTAxMDk9MTExNjtlLmFmaWkxMDExMD0xMTE4O2UuYWZpaTEwMTQ1PTEwMzk7ZS5hZmlpMTAxNDY9MTEyMjtlLmFmaWkxMDE0Nz0xMTM4O2UuYWZpaTEwMTQ4PTExNDA7ZS5hZmlpMTAxOTI9NjMxNzQ7ZS5hZmlpMTAxOTM9MTExOTtlLmFmaWkxMDE5ND0xMTIzO2UuYWZpaTEwMTk1PTExMzk7ZS5hZmlpMTAxOTY9MTE0MTtlLmFmaWkxMDgzMT02MzE3NTtlLmFmaWkxMDgzMj02MzE3NjtlLmFmaWkxMDg0Nj0xMjQxO2UuYWZpaTI5OT04MjA2O2UuYWZpaTMwMD04MjA3O2UuYWZpaTMwMT04MjA1O2UuYWZpaTU3MzgxPTE2NDI7ZS5hZmlpNTczODg9MTU0ODtlLmFmaWk1NzM5Mj0xNjMyO2UuYWZpaTU3MzkzPTE2MzM7ZS5hZmlpNTczOTQ9MTYzNDtlLmFmaWk1NzM5NT0xNjM1O2UuYWZpaTU3Mzk2PTE2MzY7ZS5hZmlpNTczOTc9MTYzNztlLmFmaWk1NzM5OD0xNjM4O2UuYWZpaTU3Mzk5PTE2Mzk7ZS5hZmlpNTc0MDA9MTY0MDtlLmFmaWk1NzQwMT0xNjQxO2UuYWZpaTU3NDAzPTE1NjM7ZS5hZmlpNTc0MDc9MTU2NztlLmFmaWk1NzQwOT0xNTY5O2UuYWZpaTU3NDEwPTE1NzA7ZS5hZmlpNTc0MTE9MTU3MTtlLmFmaWk1NzQxMj0xNTcyO2UuYWZpaTU3NDEzPTE1NzM7ZS5hZmlpNTc0MTQ9MTU3NDtlLmFmaWk1NzQxNT0xNTc1O2UuYWZpaTU3NDE2PTE1NzY7ZS5hZmlpNTc0MTc9MTU3NztlLmFmaWk1NzQxOD0xNTc4O2UuYWZpaTU3NDE5PTE1Nzk7ZS5hZmlpNTc0MjA9MTU4MDtlLmFmaWk1NzQyMT0xNTgxO2UuYWZpaTU3NDIyPTE1ODI7ZS5hZmlpNTc0MjM9MTU4MztlLmFmaWk1NzQyND0xNTg0O2UuYWZpaTU3NDI1PTE1ODU7ZS5hZmlpNTc0MjY9MTU4NjtlLmFmaWk1NzQyNz0xNTg3O2UuYWZpaTU3NDI4PTE1ODg7ZS5hZmlpNTc0Mjk9MTU4OTtlLmFmaWk1NzQzMD0xNTkwO2UuYWZpaTU3NDMxPTE1OTE7ZS5hZmlpNTc0MzI9MTU5MjtlLmFmaWk1NzQzMz0xNTkzO2UuYWZpaTU3NDM0PTE1OTQ7ZS5hZmlpNTc0NDA9MTYwMDtlLmFmaWk1NzQ0MT0xNjAxO2UuYWZpaTU3NDQyPTE2MDI7ZS5hZmlpNTc0NDM9MTYwMztlLmFmaWk1NzQ0ND0xNjA0O2UuYWZpaTU3NDQ1PTE2MDU7ZS5hZmlpNTc0NDY9MTYwNjtlLmFmaWk1NzQ0OD0xNjA4O2UuYWZpaTU3NDQ5PTE2MDk7ZS5hZmlpNTc0NTA9MTYxMDtlLmFmaWk1NzQ1MT0xNjExO2UuYWZpaTU3NDUyPTE2MTI7ZS5hZmlpNTc0NTM9MTYxMztlLmFmaWk1NzQ1ND0xNjE0O2UuYWZpaTU3NDU1PTE2MTU7ZS5hZmlpNTc0NTY9MTYxNjtlLmFmaWk1NzQ1Nz0xNjE3O2UuYWZpaTU3NDU4PTE2MTg7ZS5hZmlpNTc0NzA9MTYwNztlLmFmaWk1NzUwNT0xNzAwO2UuYWZpaTU3NTA2PTE2NjI7ZS5hZmlpNTc1MDc9MTY3MDtlLmFmaWk1NzUwOD0xNjg4O2UuYWZpaTU3NTA5PTE3MTE7ZS5hZmlpNTc1MTE9MTY1NztlLmFmaWk1NzUxMj0xNjcyO2UuYWZpaTU3NTEzPTE2ODE7ZS5hZmlpNTc1MTQ9MTcyMjtlLmFmaWk1NzUxOT0xNzQ2O2UuYWZpaTU3NTM0PTE3NDk7ZS5hZmlpNTc2MzY9ODM2MjtlLmFmaWk1NzY0NT0xNDcwO2UuYWZpaTU3NjU4PTE0NzU7ZS5hZmlpNTc2NjQ9MTQ4ODtlLmFmaWk1NzY2NT0xNDg5O2UuYWZpaTU3NjY2PTE0OTA7ZS5hZmlpNTc2Njc9MTQ5MTtlLmFmaWk1NzY2OD0xNDkyO2UuYWZpaTU3NjY5PTE0OTM7ZS5hZmlpNTc2NzA9MTQ5NDtlLmFmaWk1NzY3MT0xNDk1O2UuYWZpaTU3NjcyPTE0OTY7ZS5hZmlpNTc2NzM9MTQ5NztlLmFmaWk1NzY3ND0xNDk4O2UuYWZpaTU3Njc1PTE0OTk7ZS5hZmlpNTc2NzY9MTUwMDtlLmFmaWk1NzY3Nz0xNTAxO2UuYWZpaTU3Njc4PTE1MDI7ZS5hZmlpNTc2Nzk9MTUwMztlLmFmaWk1NzY4MD0xNTA0O2UuYWZpaTU3NjgxPTE1MDU7ZS5hZmlpNTc2ODI9MTUwNjtlLmFmaWk1NzY4Mz0xNTA3O2UuYWZpaTU3Njg0PTE1MDg7ZS5hZmlpNTc2ODU9MTUwOTtlLmFmaWk1NzY4Nj0xNTEwO2UuYWZpaTU3Njg3PTE1MTE7ZS5hZmlpNTc2ODg9MTUxMjtlLmFmaWk1NzY4OT0xNTEzO2UuYWZpaTU3NjkwPTE1MTQ7ZS5hZmlpNTc2OTQ9NjQyOTg7ZS5hZmlpNTc2OTU9NjQyOTk7ZS5hZmlpNTc3MDA9NjQzMzE7ZS5hZmlpNTc3MDU9NjQyODc7ZS5hZmlpNTc3MTY9MTUyMDtlLmFmaWk1NzcxNz0xNTIxO2UuYWZpaTU3NzE4PTE1MjI7ZS5hZmlpNTc3MjM9NjQzMDk7ZS5hZmlpNTc3OTM9MTQ2MDtlLmFmaWk1Nzc5ND0xNDYxO2UuYWZpaTU3Nzk1PTE0NjI7ZS5hZmlpNTc3OTY9MTQ2NztlLmFmaWk1Nzc5Nz0xNDY0O2UuYWZpaTU3Nzk4PTE0NjM7ZS5hZmlpNTc3OTk9MTQ1NjtlLmFmaWk1NzgwMD0xNDU4O2UuYWZpaTU3ODAxPTE0NTc7ZS5hZmlpNTc4MDI9MTQ1OTtlLmFmaWk1NzgwMz0xNDc0O2UuYWZpaTU3ODA0PTE0NzM7ZS5hZmlpNTc4MDY9MTQ2NTtlLmFmaWk1NzgwNz0xNDY4O2UuYWZpaTU3ODM5PTE0Njk7ZS5hZmlpNTc4NDE9MTQ3MTtlLmFmaWk1Nzg0Mj0xNDcyO2UuYWZpaTU3OTI5PTcwMDtlLmFmaWk2MTI0OD04NDUzO2UuYWZpaTYxMjg5PTg0Njc7ZS5hZmlpNjEzNTI9ODQ3MDtlLmFmaWk2MTU3Mz04MjM2O2UuYWZpaTYxNTc0PTgyMzc7ZS5hZmlpNjE1NzU9ODIzODtlLmFmaWk2MTY2ND04MjA0O2UuYWZpaTYzMTY3PTE2NDU7ZS5hZmlpNjQ5Mzc9NzAxO2UuYWdyYXZlPTIyNDtlLmFndWphcmF0aT0yNjkzO2UuYWd1cm11a2hpPTI1NjU7ZS5haGlyYWdhbmE9MTIzNTQ7ZS5haG9va2Fib3ZlPTc4NDM7ZS5haWJlbmdhbGk9MjQ0ODtlLmFpYm9wb21vZm89MTI1NzQ7ZS5haWRldmE9MjMyMDtlLmFpZWN5cmlsbGljPTEyMzc7ZS5haWd1amFyYXRpPTI3MDQ7ZS5haWd1cm11a2hpPTI1NzY7ZS5haW1hdHJhZ3VybXVraGk9MjYzMjtlLmFpbmFyYWJpYz0xNTkzO2UuYWluZmluYWxhcmFiaWM9NjUyMjY7ZS5haW5pbml0aWFsYXJhYmljPTY1MjI3O2UuYWlubWVkaWFsYXJhYmljPTY1MjI4O2UuYWludmVydGVkYnJldmU9NTE1O2UuYWl2b3dlbHNpZ25iZW5nYWxpPTI1MDQ7ZS5haXZvd2Vsc2lnbmRldmE9MjM3NjtlLmFpdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MDtlLmFrYXRha2FuYT0xMjQ1MDtlLmFrYXRha2FuYWhhbGZ3aWR0aD02NTM5MztlLmFrb3JlYW49MTI2MjM7ZS5hbGVmPTE0ODg7ZS5hbGVmYXJhYmljPTE1NzU7ZS5hbGVmZGFnZXNoaGVicmV3PTY0MzA0O2UuYWxlZmZpbmFsYXJhYmljPTY1MTY2O2UuYWxlZmhhbXphYWJvdmVhcmFiaWM9MTU3MTtlLmFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTY7ZS5hbGVmaGFtemFiZWxvd2FyYWJpYz0xNTczO2UuYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTE2MDtlLmFsZWZoZWJyZXc9MTQ4ODtlLmFsZWZsYW1lZGhlYnJldz02NDMzNTtlLmFsZWZtYWRkYWFib3ZlYXJhYmljPTE1NzA7ZS5hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MTU0O2UuYWxlZm1ha3N1cmFhcmFiaWM9MTYwOTtlLmFsZWZtYWtzdXJhZmluYWxhcmFiaWM9NjUyNjQ7ZS5hbGVmbWFrc3VyYWluaXRpYWxhcmFiaWM9NjUyNjc7ZS5hbGVmbWFrc3VyYW1lZGlhbGFyYWJpYz02NTI2ODtlLmFsZWZwYXRhaGhlYnJldz02NDMwMjtlLmFsZWZxYW1hdHNoZWJyZXc9NjQzMDM7ZS5hbGVwaD04NTAxO2UuYWxsZXF1YWw9ODc4MDtlLmFscGhhPTk0NTtlLmFscGhhdG9ub3M9OTQwO2UuYW1hY3Jvbj0yNTc7ZS5hbW9ub3NwYWNlPTY1MzQ1O2UuYW1wZXJzYW5kPTM4O2UuYW1wZXJzYW5kbW9ub3NwYWNlPTY1Mjg2O2UuYW1wZXJzYW5kc21hbGw9NjMyNzA7ZS5hbXNxdWFyZT0xMzI1MDtlLmFuYm9wb21vZm89MTI1Nzg7ZS5hbmdib3BvbW9mbz0xMjU4MDtlLmFuZ2JyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nYnJhY2tldHJpZ2h0PTEyMjk3O2UuYW5na2hhbmtodXRoYWk9MzY3NDtlLmFuZ2xlPTg3MzY7ZS5hbmdsZWJyYWNrZXRsZWZ0PTEyMjk2O2UuYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg3O2UuYW5nbGVicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg4O2UuYW5nbGVsZWZ0PTkwMDE7ZS5hbmdsZXJpZ2h0PTkwMDI7ZS5hbmdzdHJvbT04NDkxO2UuYW5vdGVsZWlhPTkwMztlLmFudWRhdHRhZGV2YT0yMzg2O2UuYW51c3ZhcmFiZW5nYWxpPTI0MzQ7ZS5hbnVzdmFyYWRldmE9MjMwNjtlLmFudXN2YXJhZ3VqYXJhdGk9MjY5MDtlLmFvZ29uZWs9MjYxO2UuYXBhYXRvc3F1YXJlPTEzMDU2O2UuYXBhcmVuPTkzNzI7ZS5hcG9zdHJvcGhlYXJtZW5pYW49MTM3MDtlLmFwb3N0cm9waGVtb2Q9NzAwO2UuYXBwbGU9NjM3NDM7ZS5hcHByb2FjaGVzPTg3ODQ7ZS5hcHByb3hlcXVhbD04Nzc2O2UuYXBwcm94ZXF1YWxvcmltYWdlPTg3ODY7ZS5hcHByb3hpbWF0ZWx5ZXF1YWw9ODc3MztlLmFyYWVhZWtvcmVhbj0xMjY4NjtlLmFyYWVha29yZWFuPTEyNjg1O2UuYXJjPTg5Nzg7ZS5hcmlnaHRoYWxmcmluZz03ODM0O2UuYXJpbmc9MjI5O2UuYXJpbmdhY3V0ZT01MDc7ZS5hcmluZ2JlbG93PTc2ODE7ZS5hcnJvd2JvdGg9ODU5NjtlLmFycm93ZGFzaGRvd249ODY3NTtlLmFycm93ZGFzaGxlZnQ9ODY3MjtlLmFycm93ZGFzaHJpZ2h0PTg2NzQ7ZS5hcnJvd2Rhc2h1cD04NjczO2UuYXJyb3dkYmxib3RoPTg2NjA7ZS5hcnJvd2RibGRvd249ODY1OTtlLmFycm93ZGJsbGVmdD04NjU2O2UuYXJyb3dkYmxyaWdodD04NjU4O2UuYXJyb3dkYmx1cD04NjU3O2UuYXJyb3dkb3duPTg1OTU7ZS5hcnJvd2Rvd25sZWZ0PTg2MDE7ZS5hcnJvd2Rvd25yaWdodD04NjAwO2UuYXJyb3dkb3dud2hpdGU9ODY4MTtlLmFycm93aGVhZGRvd25tb2Q9NzA5O2UuYXJyb3doZWFkbGVmdG1vZD03MDY7ZS5hcnJvd2hlYWRyaWdodG1vZD03MDc7ZS5hcnJvd2hlYWR1cG1vZD03MDg7ZS5hcnJvd2hvcml6ZXg9NjM3MTk7ZS5hcnJvd2xlZnQ9ODU5MjtlLmFycm93bGVmdGRibD04NjU2O2UuYXJyb3dsZWZ0ZGJsc3Ryb2tlPTg2NTM7ZS5hcnJvd2xlZnRvdmVycmlnaHQ9ODY0NjtlLmFycm93bGVmdHdoaXRlPTg2Nzg7ZS5hcnJvd3JpZ2h0PTg1OTQ7ZS5hcnJvd3JpZ2h0ZGJsc3Ryb2tlPTg2NTU7ZS5hcnJvd3JpZ2h0aGVhdnk9MTAxNDI7ZS5hcnJvd3JpZ2h0b3ZlcmxlZnQ9ODY0NDtlLmFycm93cmlnaHR3aGl0ZT04NjgwO2UuYXJyb3d0YWJsZWZ0PTg2NzY7ZS5hcnJvd3RhYnJpZ2h0PTg2Nzc7ZS5hcnJvd3VwPTg1OTM7ZS5hcnJvd3VwZG49ODU5NztlLmFycm93dXBkbmJzZT04NjE2O2UuYXJyb3d1cGRvd25iYXNlPTg2MTY7ZS5hcnJvd3VwbGVmdD04NTk4O2UuYXJyb3d1cGxlZnRvZmRvd249ODY0NTtlLmFycm93dXByaWdodD04NTk5O2UuYXJyb3d1cHdoaXRlPTg2Nzk7ZS5hcnJvd3ZlcnRleD02MzcxODtlLmFzY2lpY2lyY3VtPTk0O2UuYXNjaWljaXJjdW1tb25vc3BhY2U9NjUzNDI7ZS5hc2NpaXRpbGRlPTEyNjtlLmFzY2lpdGlsZGVtb25vc3BhY2U9NjUzNzQ7ZS5hc2NyaXB0PTU5MztlLmFzY3JpcHR0dXJuZWQ9NTk0O2UuYXNtYWxsaGlyYWdhbmE9MTIzNTM7ZS5hc21hbGxrYXRha2FuYT0xMjQ0OTtlLmFzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzgzO2UuYXN0ZXJpc2s9NDI7ZS5hc3Rlcmlza2FsdG9uZWFyYWJpYz0xNjQ1O2UuYXN0ZXJpc2thcmFiaWM9MTY0NTtlLmFzdGVyaXNrbWF0aD04NzI3O2UuYXN0ZXJpc2ttb25vc3BhY2U9NjUyOTA7ZS5hc3Rlcmlza3NtYWxsPTY1MTIxO2UuYXN0ZXJpc209ODI1ODtlLmFzdXBlcmlvcj02MzIwOTtlLmFzeW1wdG90aWNhbGx5ZXF1YWw9ODc3MTtlLmF0PTY0O2UuYXRpbGRlPTIyNztlLmF0bW9ub3NwYWNlPTY1MzEyO2UuYXRzbWFsbD02NTEzMTtlLmF0dXJuZWQ9NTkyO2UuYXViZW5nYWxpPTI0NTI7ZS5hdWJvcG9tb2ZvPTEyNTc2O2UuYXVkZXZhPTIzMjQ7ZS5hdWd1amFyYXRpPTI3MDg7ZS5hdWd1cm11a2hpPTI1ODA7ZS5hdWxlbmd0aG1hcmtiZW5nYWxpPTI1MTk7ZS5hdW1hdHJhZ3VybXVraGk9MjYzNjtlLmF1dm93ZWxzaWduYmVuZ2FsaT0yNTA4O2UuYXV2b3dlbHNpZ25kZXZhPTIzODA7ZS5hdXZvd2Vsc2lnbmd1amFyYXRpPTI3NjQ7ZS5hdmFncmFoYWRldmE9MjM2NTtlLmF5YmFybWVuaWFuPTEzNzc7ZS5heWluPTE1MDY7ZS5heWluYWx0b25laGVicmV3PTY0Mjg4O2UuYXlpbmhlYnJldz0xNTA2O2UuYj05ODtlLmJhYmVuZ2FsaT0yNDc2O2UuYmFja3NsYXNoPTkyO2UuYmFja3NsYXNobW9ub3NwYWNlPTY1MzQwO2UuYmFkZXZhPTIzNDg7ZS5iYWd1amFyYXRpPTI3MzI7ZS5iYWd1cm11a2hpPTI2MDQ7ZS5iYWhpcmFnYW5hPTEyNDAwO2UuYmFodHRoYWk9MzY0NztlLmJha2F0YWthbmE9MTI0OTY7ZS5iYXI9MTI0O2UuYmFybW9ub3NwYWNlPTY1MzcyO2UuYmJvcG9tb2ZvPTEyNTQ5O2UuYmNpcmNsZT05NDI1O2UuYmRvdGFjY2VudD03NjgzO2UuYmRvdGJlbG93PTc2ODU7ZS5iZWFtZWRzaXh0ZWVudGhub3Rlcz05ODM2O2UuYmVjYXVzZT04NzU3O2UuYmVjeXJpbGxpYz0xMDczO2UuYmVoYXJhYmljPTE1NzY7ZS5iZWhmaW5hbGFyYWJpYz02NTE2ODtlLmJlaGluaXRpYWxhcmFiaWM9NjUxNjk7ZS5iZWhpcmFnYW5hPTEyNDA5O2UuYmVobWVkaWFsYXJhYmljPTY1MTcwO2UuYmVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzE7ZS5iZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjA7ZS5iZWhub29uZmluYWxhcmFiaWM9NjQ2MjE7ZS5iZWthdGFrYW5hPTEyNTA1O2UuYmVuYXJtZW5pYW49MTM3ODtlLmJldD0xNDg5O2UuYmV0YT05NDY7ZS5iZXRhc3ltYm9sZ3JlZWs9OTc2O2UuYmV0ZGFnZXNoPTY0MzA1O2UuYmV0ZGFnZXNoaGVicmV3PTY0MzA1O2UuYmV0aGVicmV3PTE0ODk7ZS5iZXRyYWZlaGVicmV3PTY0MzMyO2UuYmhhYmVuZ2FsaT0yNDc3O2UuYmhhZGV2YT0yMzQ5O2UuYmhhZ3VqYXJhdGk9MjczMztlLmJoYWd1cm11a2hpPTI2MDU7ZS5iaG9vaz01OTU7ZS5iaWhpcmFnYW5hPTEyNDAzO2UuYmlrYXRha2FuYT0xMjQ5OTtlLmJpbGFiaWFsY2xpY2s9NjY0O2UuYmluZGlndXJtdWtoaT0yNTYyO2UuYmlydXNxdWFyZT0xMzEwNTtlLmJsYWNrY2lyY2xlPTk2Nzk7ZS5ibGFja2RpYW1vbmQ9OTY3MDtlLmJsYWNrZG93bnBvaW50aW5ndHJpYW5nbGU9OTY2MDtlLmJsYWNrbGVmdHBvaW50aW5ncG9pbnRlcj05NjY4O2UuYmxhY2tsZWZ0cG9pbnRpbmd0cmlhbmdsZT05NjY0O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldGxlZnQ9MTIzMDQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgzO2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzA1O2UuYmxhY2tsZW50aWN1bGFyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODQ7ZS5ibGFja2xvd2VybGVmdHRyaWFuZ2xlPTk2OTk7ZS5ibGFja2xvd2VycmlnaHR0cmlhbmdsZT05Njk4O2UuYmxhY2tyZWN0YW5nbGU9OTY0NDtlLmJsYWNrcmlnaHRwb2ludGluZ3BvaW50ZXI9OTY1ODtlLmJsYWNrcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTQ7ZS5ibGFja3NtYWxsc3F1YXJlPTk2NDI7ZS5ibGFja3NtaWxpbmdmYWNlPTk3ODc7ZS5ibGFja3NxdWFyZT05NjMyO2UuYmxhY2tzdGFyPTk3MzM7ZS5ibGFja3VwcGVybGVmdHRyaWFuZ2xlPTk3MDA7ZS5ibGFja3VwcGVycmlnaHR0cmlhbmdsZT05NzAxO2UuYmxhY2t1cHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjUyO2UuYmxhY2t1cHBvaW50aW5ndHJpYW5nbGU9OTY1MDtlLmJsYW5rPTkyNTE7ZS5ibGluZWJlbG93PTc2ODc7ZS5ibG9jaz05NjA4O2UuYm1vbm9zcGFjZT02NTM0NjtlLmJvYmFpbWFpdGhhaT0zNjEwO2UuYm9oaXJhZ2FuYT0xMjQxMjtlLmJva2F0YWthbmE9MTI1MDg7ZS5icGFyZW49OTM3MztlLmJxc3F1YXJlPTEzMjUxO2UuYnJhY2VleD02MzczMjtlLmJyYWNlbGVmdD0xMjM7ZS5icmFjZWxlZnRidD02MzczMTtlLmJyYWNlbGVmdG1pZD02MzczMDtlLmJyYWNlbGVmdG1vbm9zcGFjZT02NTM3MTtlLmJyYWNlbGVmdHNtYWxsPTY1MTE1O2UuYnJhY2VsZWZ0dHA9NjM3Mjk7ZS5icmFjZWxlZnR2ZXJ0aWNhbD02NTA3OTtlLmJyYWNlcmlnaHQ9MTI1O2UuYnJhY2VyaWdodGJ0PTYzNzQyO2UuYnJhY2VyaWdodG1pZD02Mzc0MTtlLmJyYWNlcmlnaHRtb25vc3BhY2U9NjUzNzM7ZS5icmFjZXJpZ2h0c21hbGw9NjUxMTY7ZS5icmFjZXJpZ2h0dHA9NjM3NDA7ZS5icmFjZXJpZ2h0dmVydGljYWw9NjUwODA7ZS5icmFja2V0bGVmdD05MTtlLmJyYWNrZXRsZWZ0YnQ9NjM3Mjg7ZS5icmFja2V0bGVmdGV4PTYzNzI3O2UuYnJhY2tldGxlZnRtb25vc3BhY2U9NjUzMzk7ZS5icmFja2V0bGVmdHRwPTYzNzI2O2UuYnJhY2tldHJpZ2h0PTkzO2UuYnJhY2tldHJpZ2h0YnQ9NjM3Mzk7ZS5icmFja2V0cmlnaHRleD02MzczODtlLmJyYWNrZXRyaWdodG1vbm9zcGFjZT02NTM0MTtlLmJyYWNrZXRyaWdodHRwPTYzNzM3O2UuYnJldmU9NzI4O2UuYnJldmViZWxvd2NtYj04MTQ7ZS5icmV2ZWNtYj03NzQ7ZS5icmV2ZWludmVydGVkYmVsb3djbWI9ODE1O2UuYnJldmVpbnZlcnRlZGNtYj03ODU7ZS5icmV2ZWludmVydGVkZG91YmxlY21iPTg2NTtlLmJyaWRnZWJlbG93Y21iPTgxMDtlLmJyaWRnZWludmVydGVkYmVsb3djbWI9ODI2O2UuYnJva2VuYmFyPTE2NjtlLmJzdHJva2U9Mzg0O2UuYnN1cGVyaW9yPTYzMjEwO2UuYnRvcGJhcj0zODc7ZS5idWhpcmFnYW5hPTEyNDA2O2UuYnVrYXRha2FuYT0xMjUwMjtlLmJ1bGxldD04MjI2O2UuYnVsbGV0aW52ZXJzZT05Njg4O2UuYnVsbGV0b3BlcmF0b3I9ODcyOTtlLmJ1bGxzZXllPTk2Nzg7ZS5jPTk5O2UuY2Fhcm1lbmlhbj0xMzkwO2UuY2FiZW5nYWxpPTI0NTg7ZS5jYWN1dGU9MjYzO2UuY2FkZXZhPTIzMzA7ZS5jYWd1amFyYXRpPTI3MTQ7ZS5jYWd1cm11a2hpPTI1ODY7ZS5jYWxzcXVhcmU9MTMxOTI7ZS5jYW5kcmFiaW5kdWJlbmdhbGk9MjQzMztlLmNhbmRyYWJpbmR1Y21iPTc4NDtlLmNhbmRyYWJpbmR1ZGV2YT0yMzA1O2UuY2FuZHJhYmluZHVndWphcmF0aT0yNjg5O2UuY2Fwc2xvY2s9ODY4MjtlLmNhcmVvZj04NDUzO2UuY2Fyb249NzExO2UuY2Fyb25iZWxvd2NtYj04MTI7ZS5jYXJvbmNtYj03ODA7ZS5jYXJyaWFnZXJldHVybj04NjI5O2UuY2JvcG9tb2ZvPTEyNTY4O2UuY2Nhcm9uPTI2OTtlLmNjZWRpbGxhPTIzMTtlLmNjZWRpbGxhYWN1dGU9NzY4OTtlLmNjaXJjbGU9OTQyNjtlLmNjaXJjdW1mbGV4PTI2NTtlLmNjdXJsPTU5NztlLmNkb3Q9MjY3O2UuY2RvdGFjY2VudD0yNjc7ZS5jZHNxdWFyZT0xMzI1MztlLmNlZGlsbGE9MTg0O2UuY2VkaWxsYWNtYj04MDc7ZS5jZW50PTE2MjtlLmNlbnRpZ3JhZGU9ODQ1MTtlLmNlbnRpbmZlcmlvcj02MzE5OTtlLmNlbnRtb25vc3BhY2U9NjU1MDQ7ZS5jZW50b2xkc3R5bGU9NjMzOTQ7ZS5jZW50c3VwZXJpb3I9NjMyMDA7ZS5jaGFhcm1lbmlhbj0xNDAxO2UuY2hhYmVuZ2FsaT0yNDU5O2UuY2hhZGV2YT0yMzMxO2UuY2hhZ3VqYXJhdGk9MjcxNTtlLmNoYWd1cm11a2hpPTI1ODc7ZS5jaGJvcG9tb2ZvPTEyNTY0O2UuY2hlYWJraGFzaWFuY3lyaWxsaWM9MTIxMztlLmNoZWNrbWFyaz0xMDAwMztlLmNoZWN5cmlsbGljPTEwOTU7ZS5jaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYz0xMjE1O2UuY2hlZGVzY2VuZGVyY3lyaWxsaWM9MTIwNztlLmNoZWRpZXJlc2lzY3lyaWxsaWM9MTI2OTtlLmNoZWhhcm1lbmlhbj0xMzk1O2UuY2hla2hha2Fzc2lhbmN5cmlsbGljPTEyMjg7ZS5jaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTEyMDk7ZS5jaGk9OTY3O2UuY2hpZXVjaGFjaXJjbGVrb3JlYW49MTI5MTk7ZS5jaGlldWNoYXBhcmVua29yZWFuPTEyODIzO2UuY2hpZXVjaGNpcmNsZWtvcmVhbj0xMjkwNTtlLmNoaWV1Y2hrb3JlYW49MTI2MTg7ZS5jaGlldWNocGFyZW5rb3JlYW49MTI4MDk7ZS5jaG9jaGFuZ3RoYWk9MzU5NDtlLmNob2NoYW50aGFpPTM1OTI7ZS5jaG9jaGluZ3RoYWk9MzU5MztlLmNob2Nob2V0aGFpPTM1OTY7ZS5jaG9vaz0zOTI7ZS5jaWV1Y2FjaXJjbGVrb3JlYW49MTI5MTg7ZS5jaWV1Y2FwYXJlbmtvcmVhbj0xMjgyMjtlLmNpZXVjY2lyY2xla29yZWFuPTEyOTA0O2UuY2lldWNrb3JlYW49MTI2MTY7ZS5jaWV1Y3BhcmVua29yZWFuPTEyODA4O2UuY2lldWN1cGFyZW5rb3JlYW49MTI4Mjg7ZS5jaXJjbGU9OTY3NTtlLmNpcmNsZWNvcHlydD0xNjk7ZS5jaXJjbGVtdWx0aXBseT04ODU1O2UuY2lyY2xlb3Q9ODg1NztlLmNpcmNsZXBsdXM9ODg1MztlLmNpcmNsZXBvc3RhbG1hcms9MTIzNDI7ZS5jaXJjbGV3aXRobGVmdGhhbGZibGFjaz05NjgwO2UuY2lyY2xld2l0aHJpZ2h0aGFsZmJsYWNrPTk2ODE7ZS5jaXJjdW1mbGV4PTcxMDtlLmNpcmN1bWZsZXhiZWxvd2NtYj04MTM7ZS5jaXJjdW1mbGV4Y21iPTc3MDtlLmNsZWFyPTg5OTk7ZS5jbGlja2FsdmVvbGFyPTQ1MDtlLmNsaWNrZGVudGFsPTQ0ODtlLmNsaWNrbGF0ZXJhbD00NDk7ZS5jbGlja3JldHJvZmxleD00NTE7ZS5jbHViPTk4Mjc7ZS5jbHVic3VpdGJsYWNrPTk4Mjc7ZS5jbHVic3VpdHdoaXRlPTk4MzE7ZS5jbWN1YmVkc3F1YXJlPTEzMjIwO2UuY21vbm9zcGFjZT02NTM0NztlLmNtc3F1YXJlZHNxdWFyZT0xMzIxNjtlLmNvYXJtZW5pYW49MTQwOTtlLmNvbG9uPTU4O2UuY29sb25tb25ldGFyeT04MzUzO2UuY29sb25tb25vc3BhY2U9NjUzMDY7ZS5jb2xvbnNpZ249ODM1MztlLmNvbG9uc21hbGw9NjUxMDk7ZS5jb2xvbnRyaWFuZ3VsYXJoYWxmbW9kPTcyMTtlLmNvbG9udHJpYW5ndWxhcm1vZD03MjA7ZS5jb21tYT00NDtlLmNvbW1hYWJvdmVjbWI9Nzg3O2UuY29tbWFhYm92ZXJpZ2h0Y21iPTc4OTtlLmNvbW1hYWNjZW50PTYzMTcxO2UuY29tbWFhcmFiaWM9MTU0ODtlLmNvbW1hYXJtZW5pYW49MTM3MztlLmNvbW1haW5mZXJpb3I9NjMyMDE7ZS5jb21tYW1vbm9zcGFjZT02NTI5MjtlLmNvbW1hcmV2ZXJzZWRhYm92ZWNtYj03ODg7ZS5jb21tYXJldmVyc2VkbW9kPTcwMTtlLmNvbW1hc21hbGw9NjUxMDQ7ZS5jb21tYXN1cGVyaW9yPTYzMjAyO2UuY29tbWF0dXJuZWRhYm92ZWNtYj03ODY7ZS5jb21tYXR1cm5lZG1vZD02OTk7ZS5jb21wYXNzPTk3ODg7ZS5jb25ncnVlbnQ9ODc3MztlLmNvbnRvdXJpbnRlZ3JhbD04NzUwO2UuY29udHJvbD04OTYzO2UuY29udHJvbEFDSz02O2UuY29udHJvbEJFTD03O2UuY29udHJvbEJTPTg7ZS5jb250cm9sQ0FOPTI0O2UuY29udHJvbENSPTEzO2UuY29udHJvbERDMT0xNztlLmNvbnRyb2xEQzI9MTg7ZS5jb250cm9sREMzPTE5O2UuY29udHJvbERDND0yMDtlLmNvbnRyb2xERUw9MTI3O2UuY29udHJvbERMRT0xNjtlLmNvbnRyb2xFTT0yNTtlLmNvbnRyb2xFTlE9NTtlLmNvbnRyb2xFT1Q9NDtlLmNvbnRyb2xFU0M9Mjc7ZS5jb250cm9sRVRCPTIzO2UuY29udHJvbEVUWD0zO2UuY29udHJvbEZGPTEyO2UuY29udHJvbEZTPTI4O2UuY29udHJvbEdTPTI5O2UuY29udHJvbEhUPTk7ZS5jb250cm9sTEY9MTA7ZS5jb250cm9sTkFLPTIxO2UuY29udHJvbE5VTEw9MDtlLmNvbnRyb2xSUz0zMDtlLmNvbnRyb2xTST0xNTtlLmNvbnRyb2xTTz0xNDtlLmNvbnRyb2xTT1Q9MjtlLmNvbnRyb2xTVFg9MTtlLmNvbnRyb2xTVUI9MjY7ZS5jb250cm9sU1lOPTIyO2UuY29udHJvbFVTPTMxO2UuY29udHJvbFZUPTExO2UuY29weXJpZ2h0PTE2OTtlLmNvcHlyaWdodHNhbnM9NjM3MjE7ZS5jb3B5cmlnaHRzZXJpZj02MzE5MztlLmNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAwO2UuY29ybmVyYnJhY2tldGxlZnRoYWxmd2lkdGg9NjUzNzg7ZS5jb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg5O2UuY29ybmVyYnJhY2tldHJpZ2h0PTEyMzAxO2UuY29ybmVyYnJhY2tldHJpZ2h0aGFsZndpZHRoPTY1Mzc5O2UuY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTA7ZS5jb3Jwb3JhdGlvbnNxdWFyZT0xMzE4MztlLmNvc3F1YXJlPTEzMjU1O2UuY292ZXJrZ3NxdWFyZT0xMzI1NDtlLmNwYXJlbj05Mzc0O2UuY3J1emVpcm89ODM1NDtlLmNzdHJldGNoZWQ9NjYzO2UuY3VybHlhbmQ9ODkxMTtlLmN1cmx5b3I9ODkxMDtlLmN1cnJlbmN5PTE2NDtlLmN5ckJyZXZlPTYzMTg1O2UuY3lyRmxleD02MzE4NjtlLmN5cmJyZXZlPTYzMTg4O2UuY3lyZmxleD02MzE4OTtlLmQ9MTAwO2UuZGFhcm1lbmlhbj0xMzgwO2UuZGFiZW5nYWxpPTI0NzA7ZS5kYWRhcmFiaWM9MTU5MDtlLmRhZGV2YT0yMzQyO2UuZGFkZmluYWxhcmFiaWM9NjUyMTQ7ZS5kYWRpbml0aWFsYXJhYmljPTY1MjE1O2UuZGFkbWVkaWFsYXJhYmljPTY1MjE2O2UuZGFnZXNoPTE0Njg7ZS5kYWdlc2hoZWJyZXc9MTQ2ODtlLmRhZ2dlcj04MjI0O2UuZGFnZ2VyZGJsPTgyMjU7ZS5kYWd1amFyYXRpPTI3MjY7ZS5kYWd1cm11a2hpPTI1OTg7ZS5kYWhpcmFnYW5hPTEyMzg0O2UuZGFrYXRha2FuYT0xMjQ4MDtlLmRhbGFyYWJpYz0xNTgzO2UuZGFsZXQ9MTQ5MTtlLmRhbGV0ZGFnZXNoPTY0MzA3O2UuZGFsZXRkYWdlc2hoZWJyZXc9NjQzMDc7ZS5kYWxldGhlYnJldz0xNDkxO2UuZGFsZmluYWxhcmFiaWM9NjUxOTQ7ZS5kYW1tYWFyYWJpYz0xNjE1O2UuZGFtbWFsb3dhcmFiaWM9MTYxNTtlLmRhbW1hdGFuYWx0b25lYXJhYmljPTE2MTI7ZS5kYW1tYXRhbmFyYWJpYz0xNjEyO2UuZGFuZGE9MjQwNDtlLmRhcmdhaGVicmV3PTE0NDc7ZS5kYXJnYWxlZnRoZWJyZXc9MTQ0NztlLmRhc2lhcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU3O2UuZGJsR3JhdmU9NjMxODc7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0PTEyMjk4O2UuZGJsYW5nbGVicmFja2V0bGVmdHZlcnRpY2FsPTY1MDg1O2UuZGJsYW5nbGVicmFja2V0cmlnaHQ9MTIyOTk7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDg2O2UuZGJsYXJjaGludmVydGVkYmVsb3djbWI9ODExO2UuZGJsYXJyb3dsZWZ0PTg2NjA7ZS5kYmxhcnJvd3JpZ2h0PTg2NTg7ZS5kYmxkYW5kYT0yNDA1O2UuZGJsZ3JhdmU9NjMxOTA7ZS5kYmxncmF2ZWNtYj03ODM7ZS5kYmxpbnRlZ3JhbD04NzQ4O2UuZGJsbG93bGluZT04MjE1O2UuZGJsbG93bGluZWNtYj04MTk7ZS5kYmxvdmVybGluZWNtYj04MzE7ZS5kYmxwcmltZW1vZD02OTg7ZS5kYmx2ZXJ0aWNhbGJhcj04MjE0O2UuZGJsdmVydGljYWxsaW5lYWJvdmVjbWI9NzgyO2UuZGJvcG9tb2ZvPTEyNTUzO2UuZGJzcXVhcmU9MTMyNTY7ZS5kY2Fyb249MjcxO2UuZGNlZGlsbGE9NzY5NztlLmRjaXJjbGU9OTQyNztlLmRjaXJjdW1mbGV4YmVsb3c9NzY5OTtlLmRjcm9hdD0yNzM7ZS5kZGFiZW5nYWxpPTI0NjU7ZS5kZGFkZXZhPTIzMzc7ZS5kZGFndWphcmF0aT0yNzIxO2UuZGRhZ3VybXVraGk9MjU5MztlLmRkYWxhcmFiaWM9MTY3MjtlLmRkYWxmaW5hbGFyYWJpYz02NDM5MztlLmRkZGhhZGV2YT0yMzk2O2UuZGRoYWJlbmdhbGk9MjQ2NjtlLmRkaGFkZXZhPTIzMzg7ZS5kZGhhZ3VqYXJhdGk9MjcyMjtlLmRkaGFndXJtdWtoaT0yNTk0O2UuZGRvdGFjY2VudD03NjkxO2UuZGRvdGJlbG93PTc2OTM7ZS5kZWNpbWFsc2VwYXJhdG9yYXJhYmljPTE2NDM7ZS5kZWNpbWFsc2VwYXJhdG9ycGVyc2lhbj0xNjQzO2UuZGVjeXJpbGxpYz0xMDc2O2UuZGVncmVlPTE3NjtlLmRlaGloZWJyZXc9MTQ1MztlLmRlaGlyYWdhbmE9MTIzOTE7ZS5kZWljb3B0aWM9MTAwNztlLmRla2F0YWthbmE9MTI0ODc7ZS5kZWxldGVsZWZ0PTkwMDM7ZS5kZWxldGVyaWdodD04OTk4O2UuZGVsdGE9OTQ4O2UuZGVsdGF0dXJuZWQ9Mzk3O2UuZGVub21pbmF0b3JtaW51c29uZW51bWVyYXRvcmJlbmdhbGk9MjU1MjtlLmRlemg9Njc2O2UuZGhhYmVuZ2FsaT0yNDcxO2UuZGhhZGV2YT0yMzQzO2UuZGhhZ3VqYXJhdGk9MjcyNztlLmRoYWd1cm11a2hpPTI1OTk7ZS5kaG9vaz01OTk7ZS5kaWFseXRpa2F0b25vcz05MDE7ZS5kaWFseXRpa2F0b25vc2NtYj04MzY7ZS5kaWFtb25kPTk4MzA7ZS5kaWFtb25kc3VpdHdoaXRlPTk4MjY7ZS5kaWVyZXNpcz0xNjg7ZS5kaWVyZXNpc2FjdXRlPTYzMTkxO2UuZGllcmVzaXNiZWxvd2NtYj04MDQ7ZS5kaWVyZXNpc2NtYj03NzY7ZS5kaWVyZXNpc2dyYXZlPTYzMTkyO2UuZGllcmVzaXN0b25vcz05MDE7ZS5kaWhpcmFnYW5hPTEyMzg2O2UuZGlrYXRha2FuYT0xMjQ4MjtlLmRpdHRvbWFyaz0xMjI5MTtlLmRpdmlkZT0yNDc7ZS5kaXZpZGVzPTg3Mzk7ZS5kaXZpc2lvbnNsYXNoPTg3MjU7ZS5kamVjeXJpbGxpYz0xMTA2O2UuZGtzaGFkZT05NjE5O2UuZGxpbmViZWxvdz03Njk1O2UuZGxzcXVhcmU9MTMyMDc7ZS5kbWFjcm9uPTI3MztlLmRtb25vc3BhY2U9NjUzNDg7ZS5kbmJsb2NrPTk2MDQ7ZS5kb2NoYWRhdGhhaT0zNTk4O2UuZG9kZWt0aGFpPTM2MDQ7ZS5kb2hpcmFnYW5hPTEyMzkzO2UuZG9rYXRha2FuYT0xMjQ4OTtlLmRvbGxhcj0zNjtlLmRvbGxhcmluZmVyaW9yPTYzMjAzO2UuZG9sbGFybW9ub3NwYWNlPTY1Mjg0O2UuZG9sbGFyb2xkc3R5bGU9NjMyNjg7ZS5kb2xsYXJzbWFsbD02NTEyOTtlLmRvbGxhcnN1cGVyaW9yPTYzMjA0O2UuZG9uZz04MzYzO2UuZG9ydXNxdWFyZT0xMzA5NDtlLmRvdGFjY2VudD03Mjk7ZS5kb3RhY2NlbnRjbWI9Nzc1O2UuZG90YmVsb3djbWI9ODAzO2UuZG90YmVsb3djb21iPTgwMztlLmRvdGthdGFrYW5hPTEyNTM5O2UuZG90bGVzc2k9MzA1O2UuZG90bGVzc2o9NjMxNjY7ZS5kb3RsZXNzanN0cm9rZWhvb2s9NjQ0O2UuZG90bWF0aD04OTAxO2UuZG90dGVkY2lyY2xlPTk2NzY7ZS5kb3VibGV5b2RwYXRhaD02NDI4NztlLmRvdWJsZXlvZHBhdGFoaGVicmV3PTY0Mjg3O2UuZG93bnRhY2tiZWxvd2NtYj03OTg7ZS5kb3dudGFja21vZD03MjU7ZS5kcGFyZW49OTM3NTtlLmRzdXBlcmlvcj02MzIxMTtlLmR0YWlsPTU5ODtlLmR0b3BiYXI9Mzk2O2UuZHVoaXJhZ2FuYT0xMjM4OTtlLmR1a2F0YWthbmE9MTI0ODU7ZS5kej00OTk7ZS5kemFsdG9uZT02NzU7ZS5kemNhcm9uPTQ1NDtlLmR6Y3VybD02Nzc7ZS5kemVhYmtoYXNpYW5jeXJpbGxpYz0xMjQ5O2UuZHplY3lyaWxsaWM9MTEwOTtlLmR6aGVjeXJpbGxpYz0xMTE5O2UuZT0xMDE7ZS5lYWN1dGU9MjMzO2UuZWFydGg9OTc5MztlLmViZW5nYWxpPTI0NDc7ZS5lYm9wb21vZm89MTI1NzI7ZS5lYnJldmU9Mjc3O2UuZWNhbmRyYWRldmE9MjMxNztlLmVjYW5kcmFndWphcmF0aT0yNzAxO2UuZWNhbmRyYXZvd2Vsc2lnbmRldmE9MjM3MztlLmVjYW5kcmF2b3dlbHNpZ25ndWphcmF0aT0yNzU3O2UuZWNhcm9uPTI4MztlLmVjZWRpbGxhYnJldmU9NzcwOTtlLmVjaGFybWVuaWFuPTEzODE7ZS5lY2h5aXduYXJtZW5pYW49MTQxNTtlLmVjaXJjbGU9OTQyODtlLmVjaXJjdW1mbGV4PTIzNDtlLmVjaXJjdW1mbGV4YWN1dGU9Nzg3MTtlLmVjaXJjdW1mbGV4YmVsb3c9NzcwNTtlLmVjaXJjdW1mbGV4ZG90YmVsb3c9Nzg3OTtlLmVjaXJjdW1mbGV4Z3JhdmU9Nzg3MztlLmVjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NzU7ZS5lY2lyY3VtZmxleHRpbGRlPTc4Nzc7ZS5lY3lyaWxsaWM9MTEwODtlLmVkYmxncmF2ZT01MTc7ZS5lZGV2YT0yMzE5O2UuZWRpZXJlc2lzPTIzNTtlLmVkb3Q9Mjc5O2UuZWRvdGFjY2VudD0yNzk7ZS5lZG90YmVsb3c9Nzg2NTtlLmVlZ3VybXVraGk9MjU3NTtlLmVlbWF0cmFndXJtdWtoaT0yNjMxO2UuZWZjeXJpbGxpYz0xMDkyO2UuZWdyYXZlPTIzMjtlLmVndWphcmF0aT0yNzAzO2UuZWhhcm1lbmlhbj0xMzgzO2UuZWhib3BvbW9mbz0xMjU3MztlLmVoaXJhZ2FuYT0xMjM2MDtlLmVob29rYWJvdmU9Nzg2NztlLmVpYm9wb21vZm89MTI1NzU7ZS5laWdodD01NjtlLmVpZ2h0YXJhYmljPTE2NDA7ZS5laWdodGJlbmdhbGk9MjU0MjtlLmVpZ2h0Y2lyY2xlPTkzMTk7ZS5laWdodGNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjk7ZS5laWdodGRldmE9MjQxNDtlLmVpZ2h0ZWVuY2lyY2xlPTkzMjk7ZS5laWdodGVlbnBhcmVuPTkzNDk7ZS5laWdodGVlbnBlcmlvZD05MzY5O2UuZWlnaHRndWphcmF0aT0yNzk4O2UuZWlnaHRndXJtdWtoaT0yNjcwO2UuZWlnaHRoYWNrYXJhYmljPTE2NDA7ZS5laWdodGhhbmd6aG91PTEyMzI4O2UuZWlnaHRobm90ZWJlYW1lZD05ODM1O2UuZWlnaHRpZGVvZ3JhcGhpY3BhcmVuPTEyODM5O2UuZWlnaHRpbmZlcmlvcj04MzI4O2UuZWlnaHRtb25vc3BhY2U9NjUzMDQ7ZS5laWdodG9sZHN0eWxlPTYzMjg4O2UuZWlnaHRwYXJlbj05MzM5O2UuZWlnaHRwZXJpb2Q9OTM1OTtlLmVpZ2h0cGVyc2lhbj0xNzg0O2UuZWlnaHRyb21hbj04NTY3O2UuZWlnaHRzdXBlcmlvcj04MzEyO2UuZWlnaHR0aGFpPTM2NzI7ZS5laW52ZXJ0ZWRicmV2ZT01MTk7ZS5laW90aWZpZWRjeXJpbGxpYz0xMTI1O2UuZWthdGFrYW5hPTEyNDU2O2UuZWthdGFrYW5haGFsZndpZHRoPTY1Mzk2O2UuZWtvbmthcmd1cm11a2hpPTI2NzY7ZS5la29yZWFuPTEyNjI4O2UuZWxjeXJpbGxpYz0xMDgzO2UuZWxlbWVudD04NzEyO2UuZWxldmVuY2lyY2xlPTkzMjI7ZS5lbGV2ZW5wYXJlbj05MzQyO2UuZWxldmVucGVyaW9kPTkzNjI7ZS5lbGV2ZW5yb21hbj04NTcwO2UuZWxsaXBzaXM9ODIzMDtlLmVsbGlwc2lzdmVydGljYWw9ODk0MjtlLmVtYWNyb249Mjc1O2UuZW1hY3JvbmFjdXRlPTc3MDM7ZS5lbWFjcm9uZ3JhdmU9NzcwMTtlLmVtY3lyaWxsaWM9MTA4NDtlLmVtZGFzaD04MjEyO2UuZW1kYXNodmVydGljYWw9NjUwNzM7ZS5lbW9ub3NwYWNlPTY1MzQ5O2UuZW1waGFzaXNtYXJrYXJtZW5pYW49MTM3MTtlLmVtcHR5c2V0PTg3MDk7ZS5lbmJvcG9tb2ZvPTEyNTc5O2UuZW5jeXJpbGxpYz0xMDg1O2UuZW5kYXNoPTgyMTE7ZS5lbmRhc2h2ZXJ0aWNhbD02NTA3NDtlLmVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NztlLmVuZz0zMzE7ZS5lbmdib3BvbW9mbz0xMjU4MTtlLmVuZ2hlY3lyaWxsaWM9MTE4OTtlLmVuaG9va2N5cmlsbGljPTEyMjQ7ZS5lbnNwYWNlPTgxOTQ7ZS5lb2dvbmVrPTI4MTtlLmVva29yZWFuPTEyNjI3O2UuZW9wZW49NjAzO2UuZW9wZW5jbG9zZWQ9NjY2O2UuZW9wZW5yZXZlcnNlZD02MDQ7ZS5lb3BlbnJldmVyc2VkY2xvc2VkPTYwNjtlLmVvcGVucmV2ZXJzZWRob29rPTYwNTtlLmVwYXJlbj05Mzc2O2UuZXBzaWxvbj05NDk7ZS5lcHNpbG9udG9ub3M9OTQxO2UuZXF1YWw9NjE7ZS5lcXVhbG1vbm9zcGFjZT02NTMwOTtlLmVxdWFsc21hbGw9NjUxMjY7ZS5lcXVhbHN1cGVyaW9yPTgzMTY7ZS5lcXVpdmFsZW5jZT04ODAxO2UuZXJib3BvbW9mbz0xMjU4MjtlLmVyY3lyaWxsaWM9MTA4ODtlLmVyZXZlcnNlZD02MDA7ZS5lcmV2ZXJzZWRjeXJpbGxpYz0xMTAxO2UuZXNjeXJpbGxpYz0xMDg5O2UuZXNkZXNjZW5kZXJjeXJpbGxpYz0xMTk1O2UuZXNoPTY0MztlLmVzaGN1cmw9NjQ2O2UuZXNob3J0ZGV2YT0yMzE4O2UuZXNob3J0dm93ZWxzaWduZGV2YT0yMzc0O2UuZXNocmV2ZXJzZWRsb29wPTQyNjtlLmVzaHNxdWF0cmV2ZXJzZWQ9NjQ1O2UuZXNtYWxsaGlyYWdhbmE9MTIzNTk7ZS5lc21hbGxrYXRha2FuYT0xMjQ1NTtlLmVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg2O2UuZXN0aW1hdGVkPTg0OTQ7ZS5lc3VwZXJpb3I9NjMyMTI7ZS5ldGE9OTUxO2UuZXRhcm1lbmlhbj0xMzg0O2UuZXRhdG9ub3M9OTQyO2UuZXRoPTI0MDtlLmV0aWxkZT03ODY5O2UuZXRpbGRlYmVsb3c9NzcwNztlLmV0bmFodGFmb3VraGhlYnJldz0xNDI1O2UuZXRuYWh0YWZvdWtobGVmdGhlYnJldz0xNDI1O2UuZXRuYWh0YWhlYnJldz0xNDI1O2UuZXRuYWh0YWxlZnRoZWJyZXc9MTQyNTtlLmV0dXJuZWQ9NDc3O2UuZXVrb3JlYW49MTI2NDE7ZS5ldXJvPTgzNjQ7ZS5ldm93ZWxzaWduYmVuZ2FsaT0yNTAzO2UuZXZvd2Vsc2lnbmRldmE9MjM3NTtlLmV2b3dlbHNpZ25ndWphcmF0aT0yNzU5O2UuZXhjbGFtPTMzO2UuZXhjbGFtYXJtZW5pYW49MTM3MjtlLmV4Y2xhbWRibD04MjUyO2UuZXhjbGFtZG93bj0xNjE7ZS5leGNsYW1kb3duc21hbGw9NjMzOTM7ZS5leGNsYW1tb25vc3BhY2U9NjUyODE7ZS5leGNsYW1zbWFsbD02MzI2NTtlLmV4aXN0ZW50aWFsPTg3MDc7ZS5lemg9NjU4O2UuZXpoY2Fyb249NDk1O2UuZXpoY3VybD02NTk7ZS5lemhyZXZlcnNlZD00NDE7ZS5lemh0YWlsPTQ0MjtlLmY9MTAyO2UuZmFkZXZhPTIzOTg7ZS5mYWd1cm11a2hpPTI2NTQ7ZS5mYWhyZW5oZWl0PTg0NTc7ZS5mYXRoYWFyYWJpYz0xNjE0O2UuZmF0aGFsb3dhcmFiaWM9MTYxNDtlLmZhdGhhdGFuYXJhYmljPTE2MTE7ZS5mYm9wb21vZm89MTI1NTI7ZS5mY2lyY2xlPTk0Mjk7ZS5mZG90YWNjZW50PTc3MTE7ZS5mZWhhcmFiaWM9MTYwMTtlLmZlaGFybWVuaWFuPTE0MTQ7ZS5mZWhmaW5hbGFyYWJpYz02NTIzNDtlLmZlaGluaXRpYWxhcmFiaWM9NjUyMzU7ZS5mZWhtZWRpYWxhcmFiaWM9NjUyMzY7ZS5mZWljb3B0aWM9OTk3O2UuZmVtYWxlPTk3OTI7ZS5mZj02NDI1NjtlLmZfZj02NDI1NjtlLmZmaT02NDI1OTtlLmZfZl9pPTY0MjU5O2UuZmZsPTY0MjYwO2UuZl9mX2w9NjQyNjA7ZS5maT02NDI1NztlLmZfaT02NDI1NztlLmZpZnRlZW5jaXJjbGU9OTMyNjtlLmZpZnRlZW5wYXJlbj05MzQ2O2UuZmlmdGVlbnBlcmlvZD05MzY2O2UuZmlndXJlZGFzaD04MjEwO2UuZmlsbGVkYm94PTk2MzI7ZS5maWxsZWRyZWN0PTk2NDQ7ZS5maW5hbGthZj0xNDk4O2UuZmluYWxrYWZkYWdlc2g9NjQzMTQ7ZS5maW5hbGthZmRhZ2VzaGhlYnJldz02NDMxNDtlLmZpbmFsa2FmaGVicmV3PTE0OTg7ZS5maW5hbG1lbT0xNTAxO2UuZmluYWxtZW1oZWJyZXc9MTUwMTtlLmZpbmFsbnVuPTE1MDM7ZS5maW5hbG51bmhlYnJldz0xNTAzO2UuZmluYWxwZT0xNTA3O2UuZmluYWxwZWhlYnJldz0xNTA3O2UuZmluYWx0c2FkaT0xNTA5O2UuZmluYWx0c2FkaWhlYnJldz0xNTA5O2UuZmlyc3R0b25lY2hpbmVzZT03MTM7ZS5maXNoZXllPTk2NzM7ZS5maXRhY3lyaWxsaWM9MTEzOTtlLmZpdmU9NTM7ZS5maXZlYXJhYmljPTE2Mzc7ZS5maXZlYmVuZ2FsaT0yNTM5O2UuZml2ZWNpcmNsZT05MzE2O2UuZml2ZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjY7ZS5maXZlZGV2YT0yNDExO2UuZml2ZWVpZ2h0aHM9ODU0MTtlLmZpdmVndWphcmF0aT0yNzk1O2UuZml2ZWd1cm11a2hpPTI2Njc7ZS5maXZlaGFja2FyYWJpYz0xNjM3O2UuZml2ZWhhbmd6aG91PTEyMzI1O2UuZml2ZWlkZW9ncmFwaGljcGFyZW49MTI4MzY7ZS5maXZlaW5mZXJpb3I9ODMyNTtlLmZpdmVtb25vc3BhY2U9NjUzMDE7ZS5maXZlb2xkc3R5bGU9NjMyODU7ZS5maXZlcGFyZW49OTMzNjtlLmZpdmVwZXJpb2Q9OTM1NjtlLmZpdmVwZXJzaWFuPTE3ODE7ZS5maXZlcm9tYW49ODU2NDtlLmZpdmVzdXBlcmlvcj04MzA5O2UuZml2ZXRoYWk9MzY2OTtlLmZsPTY0MjU4O2UuZl9sPTY0MjU4O2UuZmxvcmluPTQwMjtlLmZtb25vc3BhY2U9NjUzNTA7ZS5mbXNxdWFyZT0xMzIwOTtlLmZvZmFudGhhaT0zNjE1O2UuZm9mYXRoYWk9MzYxMztlLmZvbmdtYW50aGFpPTM2NjM7ZS5mb3JhbGw9ODcwNDtlLmZvdXI9NTI7ZS5mb3VyYXJhYmljPTE2MzY7ZS5mb3VyYmVuZ2FsaT0yNTM4O2UuZm91cmNpcmNsZT05MzE1O2UuZm91cmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjU7ZS5mb3VyZGV2YT0yNDEwO2UuZm91cmd1amFyYXRpPTI3OTQ7ZS5mb3VyZ3VybXVraGk9MjY2NjtlLmZvdXJoYWNrYXJhYmljPTE2MzY7ZS5mb3VyaGFuZ3pob3U9MTIzMjQ7ZS5mb3VyaWRlb2dyYXBoaWNwYXJlbj0xMjgzNTtlLmZvdXJpbmZlcmlvcj04MzI0O2UuZm91cm1vbm9zcGFjZT02NTMwMDtlLmZvdXJudW1lcmF0b3JiZW5nYWxpPTI1NTE7ZS5mb3Vyb2xkc3R5bGU9NjMyODQ7ZS5mb3VycGFyZW49OTMzNTtlLmZvdXJwZXJpb2Q9OTM1NTtlLmZvdXJwZXJzaWFuPTE3ODA7ZS5mb3Vycm9tYW49ODU2MztlLmZvdXJzdXBlcmlvcj04MzA4O2UuZm91cnRlZW5jaXJjbGU9OTMyNTtlLmZvdXJ0ZWVucGFyZW49OTM0NTtlLmZvdXJ0ZWVucGVyaW9kPTkzNjU7ZS5mb3VydGhhaT0zNjY4O2UuZm91cnRodG9uZWNoaW5lc2U9NzE1O2UuZnBhcmVuPTkzNzc7ZS5mcmFjdGlvbj04MjYwO2UuZnJhbmM9ODM1NTtlLmc9MTAzO2UuZ2FiZW5nYWxpPTI0NTU7ZS5nYWN1dGU9NTAxO2UuZ2FkZXZhPTIzMjc7ZS5nYWZhcmFiaWM9MTcxMTtlLmdhZmZpbmFsYXJhYmljPTY0NDAzO2UuZ2FmaW5pdGlhbGFyYWJpYz02NDQwNDtlLmdhZm1lZGlhbGFyYWJpYz02NDQwNTtlLmdhZ3VqYXJhdGk9MjcxMTtlLmdhZ3VybXVraGk9MjU4MztlLmdhaGlyYWdhbmE9MTIzNjQ7ZS5nYWthdGFrYW5hPTEyNDYwO2UuZ2FtbWE9OTQ3O2UuZ2FtbWFsYXRpbnNtYWxsPTYxMTtlLmdhbW1hc3VwZXJpb3I9NzM2O2UuZ2FuZ2lhY29wdGljPTEwMDM7ZS5nYm9wb21vZm89MTI1NTc7ZS5nYnJldmU9Mjg3O2UuZ2Nhcm9uPTQ4NztlLmdjZWRpbGxhPTI5MTtlLmdjaXJjbGU9OTQzMDtlLmdjaXJjdW1mbGV4PTI4NTtlLmdjb21tYWFjY2VudD0yOTE7ZS5nZG90PTI4OTtlLmdkb3RhY2NlbnQ9Mjg5O2UuZ2VjeXJpbGxpYz0xMDc1O2UuZ2VoaXJhZ2FuYT0xMjM3MDtlLmdla2F0YWthbmE9MTI0NjY7ZS5nZW9tZXRyaWNhbGx5ZXF1YWw9ODc4NTtlLmdlcmVzaGFjY2VudGhlYnJldz0xNDM2O2UuZ2VyZXNoaGVicmV3PTE1MjM7ZS5nZXJlc2htdXFkYW1oZWJyZXc9MTQzNztlLmdlcm1hbmRibHM9MjIzO2UuZ2Vyc2hheWltYWNjZW50aGVicmV3PTE0Mzg7ZS5nZXJzaGF5aW1oZWJyZXc9MTUyNDtlLmdldGFtYXJrPTEyMzA3O2UuZ2hhYmVuZ2FsaT0yNDU2O2UuZ2hhZGFybWVuaWFuPTEzOTQ7ZS5naGFkZXZhPTIzMjg7ZS5naGFndWphcmF0aT0yNzEyO2UuZ2hhZ3VybXVraGk9MjU4NDtlLmdoYWluYXJhYmljPTE1OTQ7ZS5naGFpbmZpbmFsYXJhYmljPTY1MjMwO2UuZ2hhaW5pbml0aWFsYXJhYmljPTY1MjMxO2UuZ2hhaW5tZWRpYWxhcmFiaWM9NjUyMzI7ZS5naGVtaWRkbGVob29rY3lyaWxsaWM9MTE3MztlLmdoZXN0cm9rZWN5cmlsbGljPTExNzE7ZS5naGV1cHR1cm5jeXJpbGxpYz0xMTY5O2UuZ2hoYWRldmE9MjM5NDtlLmdoaGFndXJtdWtoaT0yNjUwO2UuZ2hvb2s9NjA4O2UuZ2h6c3F1YXJlPTEzMjAzO2UuZ2loaXJhZ2FuYT0xMjM2NjtlLmdpa2F0YWthbmE9MTI0NjI7ZS5naW1hcm1lbmlhbj0xMzc5O2UuZ2ltZWw9MTQ5MDtlLmdpbWVsZGFnZXNoPTY0MzA2O2UuZ2ltZWxkYWdlc2hoZWJyZXc9NjQzMDY7ZS5naW1lbGhlYnJldz0xNDkwO2UuZ2plY3lyaWxsaWM9MTEwNztlLmdsb3R0YWxpbnZlcnRlZHN0cm9rZT00NDY7ZS5nbG90dGFsc3RvcD02NjA7ZS5nbG90dGFsc3RvcGludmVydGVkPTY2MjtlLmdsb3R0YWxzdG9wbW9kPTcwNDtlLmdsb3R0YWxzdG9wcmV2ZXJzZWQ9NjYxO2UuZ2xvdHRhbHN0b3ByZXZlcnNlZG1vZD03MDU7ZS5nbG90dGFsc3RvcHJldmVyc2Vkc3VwZXJpb3I9NzQwO2UuZ2xvdHRhbHN0b3BzdHJva2U9NjczO2UuZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZD02NzQ7ZS5nbWFjcm9uPTc3MTM7ZS5nbW9ub3NwYWNlPTY1MzUxO2UuZ29oaXJhZ2FuYT0xMjM3MjtlLmdva2F0YWthbmE9MTI0Njg7ZS5ncGFyZW49OTM3ODtlLmdwYXNxdWFyZT0xMzIyODtlLmdyYWRpZW50PTg3MTE7ZS5ncmF2ZT05NjtlLmdyYXZlYmVsb3djbWI9NzkwO2UuZ3JhdmVjbWI9NzY4O2UuZ3JhdmVjb21iPTc2ODtlLmdyYXZlZGV2YT0yMzg3O2UuZ3JhdmVsb3dtb2Q9NzE4O2UuZ3JhdmVtb25vc3BhY2U9NjUzNDQ7ZS5ncmF2ZXRvbmVjbWI9ODMyO2UuZ3JlYXRlcj02MjtlLmdyZWF0ZXJlcXVhbD04ODA1O2UuZ3JlYXRlcmVxdWFsb3JsZXNzPTg5MjM7ZS5ncmVhdGVybW9ub3NwYWNlPTY1MzEwO2UuZ3JlYXRlcm9yZXF1aXZhbGVudD04ODE5O2UuZ3JlYXRlcm9ybGVzcz04ODIzO2UuZ3JlYXRlcm92ZXJlcXVhbD04ODA3O2UuZ3JlYXRlcnNtYWxsPTY1MTI1O2UuZ3NjcmlwdD02MDk7ZS5nc3Ryb2tlPTQ4NTtlLmd1aGlyYWdhbmE9MTIzNjg7ZS5ndWlsbGVtb3RsZWZ0PTE3MTtlLmd1aWxsZW1vdHJpZ2h0PTE4NztlLmd1aWxzaW5nbGxlZnQ9ODI0OTtlLmd1aWxzaW5nbHJpZ2h0PTgyNTA7ZS5ndWthdGFrYW5hPTEyNDY0O2UuZ3VyYW11c3F1YXJlPTEzMDgwO2UuZ3lzcXVhcmU9MTMyNTc7ZS5oPTEwNDtlLmhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MztlLmhhYWx0b25lYXJhYmljPTE3Mjk7ZS5oYWJlbmdhbGk9MjQ4OTtlLmhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMztlLmhhZGV2YT0yMzYxO2UuaGFndWphcmF0aT0yNzQ1O2UuaGFndXJtdWtoaT0yNjE3O2UuaGFoYXJhYmljPTE1ODE7ZS5oYWhmaW5hbGFyYWJpYz02NTE4NjtlLmhhaGluaXRpYWxhcmFiaWM9NjUxODc7ZS5oYWhpcmFnYW5hPTEyMzk5O2UuaGFobWVkaWFsYXJhYmljPTY1MTg4O2UuaGFpdHVzcXVhcmU9MTMwOTg7ZS5oYWthdGFrYW5hPTEyNDk1O2UuaGFrYXRha2FuYWhhbGZ3aWR0aD02NTQxODtlLmhhbGFudGd1cm11a2hpPTI2Mzc7ZS5oYW16YWFyYWJpYz0xNTY5O2UuaGFtemFsb3dhcmFiaWM9MTU2OTtlLmhhbmd1bGZpbGxlcj0xMjY0NDtlLmhhcmRzaWduY3lyaWxsaWM9MTA5ODtlLmhhcnBvb25sZWZ0YmFyYnVwPTg2MzY7ZS5oYXJwb29ucmlnaHRiYXJidXA9ODY0MDtlLmhhc3F1YXJlPTEzMjU4O2UuaGF0YWZwYXRhaD0xNDU4O2UuaGF0YWZwYXRhaDE2PTE0NTg7ZS5oYXRhZnBhdGFoMjM9MTQ1ODtlLmhhdGFmcGF0YWgyZj0xNDU4O2UuaGF0YWZwYXRhaGhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaG5hcnJvd2hlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ1ODtlLmhhdGFmcGF0YWh3aWRlaGVicmV3PTE0NTg7ZS5oYXRhZnFhbWF0cz0xNDU5O2UuaGF0YWZxYW1hdHMxYj0xNDU5O2UuaGF0YWZxYW1hdHMyOD0xNDU5O2UuaGF0YWZxYW1hdHMzND0xNDU5O2UuaGF0YWZxYW1hdHNoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzbmFycm93aGVicmV3PTE0NTk7ZS5oYXRhZnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzd2lkZWhlYnJldz0xNDU5O2UuaGF0YWZzZWdvbD0xNDU3O2UuaGF0YWZzZWdvbDE3PTE0NTc7ZS5oYXRhZnNlZ29sMjQ9MTQ1NztlLmhhdGFmc2Vnb2wzMD0xNDU3O2UuaGF0YWZzZWdvbGhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbG5hcnJvd2hlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ1NztlLmhhdGFmc2Vnb2x3aWRlaGVicmV3PTE0NTc7ZS5oYmFyPTI5NTtlLmhib3BvbW9mbz0xMjU1OTtlLmhicmV2ZWJlbG93PTc3MjM7ZS5oY2VkaWxsYT03NzIxO2UuaGNpcmNsZT05NDMxO2UuaGNpcmN1bWZsZXg9MjkzO2UuaGRpZXJlc2lzPTc3MTk7ZS5oZG90YWNjZW50PTc3MTU7ZS5oZG90YmVsb3c9NzcxNztlLmhlPTE0OTI7ZS5oZWFydD05ODI5O2UuaGVhcnRzdWl0YmxhY2s9OTgyOTtlLmhlYXJ0c3VpdHdoaXRlPTk4MjU7ZS5oZWRhZ2VzaD02NDMwODtlLmhlZGFnZXNoaGVicmV3PTY0MzA4O2UuaGVoYWx0b25lYXJhYmljPTE3Mjk7ZS5oZWhhcmFiaWM9MTYwNztlLmhlaGVicmV3PTE0OTI7ZS5oZWhmaW5hbGFsdG9uZWFyYWJpYz02NDQyMztlLmhlaGZpbmFsYWx0dHdvYXJhYmljPTY1MjU4O2UuaGVoZmluYWxhcmFiaWM9NjUyNTg7ZS5oZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjQ0MjE7ZS5oZWhoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjQ0MjA7ZS5oZWhpbml0aWFsYWx0b25lYXJhYmljPTY0NDI0O2UuaGVoaW5pdGlhbGFyYWJpYz02NTI1OTtlLmhlaGlyYWdhbmE9MTI0MDg7ZS5oZWhtZWRpYWxhbHRvbmVhcmFiaWM9NjQ0MjU7ZS5oZWhtZWRpYWxhcmFiaWM9NjUyNjA7ZS5oZWlzZWllcmFzcXVhcmU9MTMxNzk7ZS5oZWthdGFrYW5hPTEyNTA0O2UuaGVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMTtlLmhla3V0YWFydXNxdWFyZT0xMzExMDtlLmhlbmdob29rPTYxNTtlLmhlcnV0dXNxdWFyZT0xMzExMztlLmhldD0xNDk1O2UuaGV0aGVicmV3PTE0OTU7ZS5oaG9vaz02MTQ7ZS5oaG9va3N1cGVyaW9yPTY4OTtlLmhpZXVoYWNpcmNsZWtvcmVhbj0xMjkyMztlLmhpZXVoYXBhcmVua29yZWFuPTEyODI3O2UuaGlldWhjaXJjbGVrb3JlYW49MTI5MDk7ZS5oaWV1aGtvcmVhbj0xMjYyMjtlLmhpZXVocGFyZW5rb3JlYW49MTI4MTM7ZS5oaWhpcmFnYW5hPTEyNDAyO2UuaGlrYXRha2FuYT0xMjQ5ODtlLmhpa2F0YWthbmFoYWxmd2lkdGg9NjU0MTk7ZS5oaXJpcT0xNDYwO2UuaGlyaXExND0xNDYwO2UuaGlyaXEyMT0xNDYwO2UuaGlyaXEyZD0xNDYwO2UuaGlyaXFoZWJyZXc9MTQ2MDtlLmhpcmlxbmFycm93aGVicmV3PTE0NjA7ZS5oaXJpcXF1YXJ0ZXJoZWJyZXc9MTQ2MDtlLmhpcmlxd2lkZWhlYnJldz0xNDYwO2UuaGxpbmViZWxvdz03ODMwO2UuaG1vbm9zcGFjZT02NTM1MjtlLmhvYXJtZW5pYW49MTM5MjtlLmhvaGlwdGhhaT0zNjI3O2UuaG9oaXJhZ2FuYT0xMjQxMTtlLmhva2F0YWthbmE9MTI1MDc7ZS5ob2thdGFrYW5haGFsZndpZHRoPTY1NDIyO2UuaG9sYW09MTQ2NTtlLmhvbGFtMTk9MTQ2NTtlLmhvbGFtMjY9MTQ2NTtlLmhvbGFtMzI9MTQ2NTtlLmhvbGFtaGVicmV3PTE0NjU7ZS5ob2xhbW5hcnJvd2hlYnJldz0xNDY1O2UuaG9sYW1xdWFydGVyaGVicmV3PTE0NjU7ZS5ob2xhbXdpZGVoZWJyZXc9MTQ2NTtlLmhvbm9raHVrdGhhaT0zNjMwO2UuaG9va2Fib3ZlY29tYj03Nzc7ZS5ob29rY21iPTc3NztlLmhvb2twYWxhdGFsaXplZGJlbG93Y21iPTgwMTtlLmhvb2tyZXRyb2ZsZXhiZWxvd2NtYj04MDI7ZS5ob29uc3F1YXJlPTEzMTIyO2UuaG9yaWNvcHRpYz0xMDAxO2UuaG9yaXpvbnRhbGJhcj04MjEzO2UuaG9ybmNtYj03OTU7ZS5ob3RzcHJpbmdzPTk4MzI7ZS5ob3VzZT04OTYyO2UuaHBhcmVuPTkzNzk7ZS5oc3VwZXJpb3I9Njg4O2UuaHR1cm5lZD02MTM7ZS5odWhpcmFnYW5hPTEyNDA1O2UuaHVpaXRvc3F1YXJlPTEzMTA3O2UuaHVrYXRha2FuYT0xMjUwMTtlLmh1a2F0YWthbmFoYWxmd2lkdGg9NjU0MjA7ZS5odW5nYXJ1bWxhdXQ9NzMzO2UuaHVuZ2FydW1sYXV0Y21iPTc3OTtlLmh2PTQwNTtlLmh5cGhlbj00NTtlLmh5cGhlbmluZmVyaW9yPTYzMjA1O2UuaHlwaGVubW9ub3NwYWNlPTY1MjkzO2UuaHlwaGVuc21hbGw9NjUxMjM7ZS5oeXBoZW5zdXBlcmlvcj02MzIwNjtlLmh5cGhlbnR3bz04MjA4O2UuaT0xMDU7ZS5pYWN1dGU9MjM3O2UuaWFjeXJpbGxpYz0xMTAzO2UuaWJlbmdhbGk9MjQzOTtlLmlib3BvbW9mbz0xMjU4MztlLmlicmV2ZT0zMDE7ZS5pY2Fyb249NDY0O2UuaWNpcmNsZT05NDMyO2UuaWNpcmN1bWZsZXg9MjM4O2UuaWN5cmlsbGljPTExMTA7ZS5pZGJsZ3JhdmU9NTIxO2UuaWRlb2dyYXBoZWFydGhjaXJjbGU9MTI5NDM7ZS5pZGVvZ3JhcGhmaXJlY2lyY2xlPTEyOTM5O2UuaWRlb2dyYXBoaWNhbGxpYW5jZXBhcmVuPTEyODYzO2UuaWRlb2dyYXBoaWNjYWxscGFyZW49MTI4NTg7ZS5pZGVvZ3JhcGhpY2NlbnRyZWNpcmNsZT0xMjk2NTtlLmlkZW9ncmFwaGljY2xvc2U9MTIyOTQ7ZS5pZGVvZ3JhcGhpY2NvbW1hPTEyMjg5O2UuaWRlb2dyYXBoaWNjb21tYWxlZnQ9NjUzODA7ZS5pZGVvZ3JhcGhpY2NvbmdyYXR1bGF0aW9ucGFyZW49MTI4NTU7ZS5pZGVvZ3JhcGhpY2NvcnJlY3RjaXJjbGU9MTI5NjM7ZS5pZGVvZ3JhcGhpY2VhcnRocGFyZW49MTI4NDc7ZS5pZGVvZ3JhcGhpY2VudGVycHJpc2VwYXJlbj0xMjg2MTtlLmlkZW9ncmFwaGljZXhjZWxsZW50Y2lyY2xlPTEyOTU3O2UuaWRlb2dyYXBoaWNmZXN0aXZhbHBhcmVuPTEyODY0O2UuaWRlb2dyYXBoaWNmaW5hbmNpYWxjaXJjbGU9MTI5NTA7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbHBhcmVuPTEyODU0O2UuaWRlb2dyYXBoaWNmaXJlcGFyZW49MTI4NDM7ZS5pZGVvZ3JhcGhpY2hhdmVwYXJlbj0xMjg1MDtlLmlkZW9ncmFwaGljaGlnaGNpcmNsZT0xMjk2NDtlLmlkZW9ncmFwaGljaXRlcmF0aW9ubWFyaz0xMjI5MztlLmlkZW9ncmFwaGljbGFib3JjaXJjbGU9MTI5NTI7ZS5pZGVvZ3JhcGhpY2xhYm9ycGFyZW49MTI4NTY7ZS5pZGVvZ3JhcGhpY2xlZnRjaXJjbGU9MTI5Njc7ZS5pZGVvZ3JhcGhpY2xvd2NpcmNsZT0xMjk2NjtlLmlkZW9ncmFwaGljbWVkaWNpbmVjaXJjbGU9MTI5Njk7ZS5pZGVvZ3JhcGhpY21ldGFscGFyZW49MTI4NDY7ZS5pZGVvZ3JhcGhpY21vb25wYXJlbj0xMjg0MjtlLmlkZW9ncmFwaGljbmFtZXBhcmVuPTEyODUyO2UuaWRlb2dyYXBoaWNwZXJpb2Q9MTIyOTA7ZS5pZGVvZ3JhcGhpY3ByaW50Y2lyY2xlPTEyOTU4O2UuaWRlb2dyYXBoaWNyZWFjaHBhcmVuPTEyODY3O2UuaWRlb2dyYXBoaWNyZXByZXNlbnRwYXJlbj0xMjg1NztlLmlkZW9ncmFwaGljcmVzb3VyY2VwYXJlbj0xMjg2MjtlLmlkZW9ncmFwaGljcmlnaHRjaXJjbGU9MTI5Njg7ZS5pZGVvZ3JhcGhpY3NlY3JldGNpcmNsZT0xMjk1MztlLmlkZW9ncmFwaGljc2VsZnBhcmVuPTEyODY2O2UuaWRlb2dyYXBoaWNzb2NpZXR5cGFyZW49MTI4NTE7ZS5pZGVvZ3JhcGhpY3NwYWNlPTEyMjg4O2UuaWRlb2dyYXBoaWNzcGVjaWFscGFyZW49MTI4NTM7ZS5pZGVvZ3JhcGhpY3N0b2NrcGFyZW49MTI4NDk7ZS5pZGVvZ3JhcGhpY3N0dWR5cGFyZW49MTI4NTk7ZS5pZGVvZ3JhcGhpY3N1bnBhcmVuPTEyODQ4O2UuaWRlb2dyYXBoaWNzdXBlcnZpc2VwYXJlbj0xMjg2MDtlLmlkZW9ncmFwaGljd2F0ZXJwYXJlbj0xMjg0NDtlLmlkZW9ncmFwaGljd29vZHBhcmVuPTEyODQ1O2UuaWRlb2dyYXBoaWN6ZXJvPTEyMjk1O2UuaWRlb2dyYXBobWV0YWxjaXJjbGU9MTI5NDI7ZS5pZGVvZ3JhcGhtb29uY2lyY2xlPTEyOTM4O2UuaWRlb2dyYXBobmFtZWNpcmNsZT0xMjk0ODtlLmlkZW9ncmFwaHN1bmNpcmNsZT0xMjk0NDtlLmlkZW9ncmFwaHdhdGVyY2lyY2xlPTEyOTQwO2UuaWRlb2dyYXBod29vZGNpcmNsZT0xMjk0MTtlLmlkZXZhPTIzMTE7ZS5pZGllcmVzaXM9MjM5O2UuaWRpZXJlc2lzYWN1dGU9NzcyNztlLmlkaWVyZXNpc2N5cmlsbGljPTEyNTM7ZS5pZG90YmVsb3c9Nzg4MztlLmllYnJldmVjeXJpbGxpYz0xMjM5O2UuaWVjeXJpbGxpYz0xMDc3O2UuaWV1bmdhY2lyY2xla29yZWFuPTEyOTE3O2UuaWV1bmdhcGFyZW5rb3JlYW49MTI4MjE7ZS5pZXVuZ2NpcmNsZWtvcmVhbj0xMjkwMztlLmlldW5na29yZWFuPTEyNjE1O2UuaWV1bmdwYXJlbmtvcmVhbj0xMjgwNztlLmlncmF2ZT0yMzY7ZS5pZ3VqYXJhdGk9MjY5NTtlLmlndXJtdWtoaT0yNTY3O2UuaWhpcmFnYW5hPTEyMzU2O2UuaWhvb2thYm92ZT03ODgxO2UuaWliZW5nYWxpPTI0NDA7ZS5paWN5cmlsbGljPTEwODA7ZS5paWRldmE9MjMxMjtlLmlpZ3VqYXJhdGk9MjY5NjtlLmlpZ3VybXVraGk9MjU2ODtlLmlpbWF0cmFndXJtdWtoaT0yNjI0O2UuaWludmVydGVkYnJldmU9NTIzO2UuaWlzaG9ydGN5cmlsbGljPTEwODE7ZS5paXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NjtlLmlpdm93ZWxzaWduZGV2YT0yMzY4O2UuaWl2b3dlbHNpZ25ndWphcmF0aT0yNzUyO2UuaWo9MzA3O2UuaWthdGFrYW5hPTEyNDUyO2UuaWthdGFrYW5haGFsZndpZHRoPTY1Mzk0O2UuaWtvcmVhbj0xMjY0MztlLmlsZGU9NzMyO2UuaWx1eWhlYnJldz0xNDUyO2UuaW1hY3Jvbj0yOTk7ZS5pbWFjcm9uY3lyaWxsaWM9MTI1MTtlLmltYWdlb3JhcHByb3hpbWF0ZWx5ZXF1YWw9ODc4NztlLmltYXRyYWd1cm11a2hpPTI2MjM7ZS5pbW9ub3NwYWNlPTY1MzUzO2UuaW5jcmVtZW50PTg3MTA7ZS5pbmZpbml0eT04NzM0O2UuaW5pYXJtZW5pYW49MTM4NztlLmludGVncmFsPTg3NDc7ZS5pbnRlZ3JhbGJvdHRvbT04OTkzO2UuaW50ZWdyYWxidD04OTkzO2UuaW50ZWdyYWxleD02MzczMztlLmludGVncmFsdG9wPTg5OTI7ZS5pbnRlZ3JhbHRwPTg5OTI7ZS5pbnRlcnNlY3Rpb249ODc0NTtlLmludGlzcXVhcmU9MTMwNjE7ZS5pbnZidWxsZXQ9OTY4ODtlLmludmNpcmNsZT05Njg5O2UuaW52c21pbGVmYWNlPTk3ODc7ZS5pb2N5cmlsbGljPTExMDU7ZS5pb2dvbmVrPTMwMztlLmlvdGE9OTUzO2UuaW90YWRpZXJlc2lzPTk3MDtlLmlvdGFkaWVyZXNpc3Rvbm9zPTkxMjtlLmlvdGFsYXRpbj02MTc7ZS5pb3RhdG9ub3M9OTQzO2UuaXBhcmVuPTkzODA7ZS5pcmlndXJtdWtoaT0yNjc0O2UuaXNtYWxsaGlyYWdhbmE9MTIzNTU7ZS5pc21hbGxrYXRha2FuYT0xMjQ1MTtlLmlzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg0O2UuaXNzaGFyYmVuZ2FsaT0yNTU0O2UuaXN0cm9rZT02MTY7ZS5pc3VwZXJpb3I9NjMyMTM7ZS5pdGVyYXRpb25oaXJhZ2FuYT0xMjQ0NTtlLml0ZXJhdGlvbmthdGFrYW5hPTEyNTQxO2UuaXRpbGRlPTI5NztlLml0aWxkZWJlbG93PTc3MjU7ZS5pdWJvcG9tb2ZvPTEyNTg1O2UuaXVjeXJpbGxpYz0xMTAyO2UuaXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NTtlLml2b3dlbHNpZ25kZXZhPTIzNjc7ZS5pdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MTtlLml6aGl0c2FjeXJpbGxpYz0xMTQxO2UuaXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MztlLmo9MTA2O2UuamFhcm1lbmlhbj0xMzkzO2UuamFiZW5nYWxpPTI0NjA7ZS5qYWRldmE9MjMzMjtlLmphZ3VqYXJhdGk9MjcxNjtlLmphZ3VybXVraGk9MjU4ODtlLmpib3BvbW9mbz0xMjU2MDtlLmpjYXJvbj00OTY7ZS5qY2lyY2xlPTk0MzM7ZS5qY2lyY3VtZmxleD0zMDk7ZS5qY3Jvc3NlZHRhaWw9NjY5O2UuamRvdGxlc3NzdHJva2U9NjA3O2UuamVjeXJpbGxpYz0xMTEyO2UuamVlbWFyYWJpYz0xNTgwO2UuamVlbWZpbmFsYXJhYmljPTY1MTgyO2UuamVlbWluaXRpYWxhcmFiaWM9NjUxODM7ZS5qZWVtbWVkaWFsYXJhYmljPTY1MTg0O2UuamVoYXJhYmljPTE2ODg7ZS5qZWhmaW5hbGFyYWJpYz02NDM5NTtlLmpoYWJlbmdhbGk9MjQ2MTtlLmpoYWRldmE9MjMzMztlLmpoYWd1amFyYXRpPTI3MTc7ZS5qaGFndXJtdWtoaT0yNTg5O2UuamhlaGFybWVuaWFuPTE0MDM7ZS5qaXM9MTIyOTI7ZS5qbW9ub3NwYWNlPTY1MzU0O2UuanBhcmVuPTkzODE7ZS5qc3VwZXJpb3I9NjkwO2Uuaz0xMDc7ZS5rYWJhc2hraXJjeXJpbGxpYz0xMTg1O2Uua2FiZW5nYWxpPTI0NTM7ZS5rYWN1dGU9NzcyOTtlLmthY3lyaWxsaWM9MTA4MjtlLmthZGVzY2VuZGVyY3lyaWxsaWM9MTE3OTtlLmthZGV2YT0yMzI1O2Uua2FmPTE0OTk7ZS5rYWZhcmFiaWM9MTYwMztlLmthZmRhZ2VzaD02NDMxNTtlLmthZmRhZ2VzaGhlYnJldz02NDMxNTtlLmthZmZpbmFsYXJhYmljPTY1MjQyO2Uua2FmaGVicmV3PTE0OTk7ZS5rYWZpbml0aWFsYXJhYmljPTY1MjQzO2Uua2FmbWVkaWFsYXJhYmljPTY1MjQ0O2Uua2FmcmFmZWhlYnJldz02NDMzMztlLmthZ3VqYXJhdGk9MjcwOTtlLmthZ3VybXVraGk9MjU4MTtlLmthaGlyYWdhbmE9MTIzNjM7ZS5rYWhvb2tjeXJpbGxpYz0xMjIwO2Uua2FrYXRha2FuYT0xMjQ1OTtlLmtha2F0YWthbmFoYWxmd2lkdGg9NjUzOTg7ZS5rYXBwYT05NTQ7ZS5rYXBwYXN5bWJvbGdyZWVrPTEwMDg7ZS5rYXB5ZW91bm1pZXVta29yZWFuPTEyNjU3O2Uua2FweWVvdW5waGlldXBoa29yZWFuPTEyNjc2O2Uua2FweWVvdW5waWV1cGtvcmVhbj0xMjY2NDtlLmthcHllb3Vuc3NhbmdwaWV1cGtvcmVhbj0xMjY2NTtlLmthcm9yaWlzcXVhcmU9MTMwNjk7ZS5rYXNoaWRhYXV0b2FyYWJpYz0xNjAwO2Uua2FzaGlkYWF1dG9ub3NpZGViZWFyaW5nYXJhYmljPTE2MDA7ZS5rYXNtYWxsa2F0YWthbmE9MTI1MzM7ZS5rYXNxdWFyZT0xMzE4ODtlLmthc3JhYXJhYmljPTE2MTY7ZS5rYXNyYXRhbmFyYWJpYz0xNjEzO2Uua2FzdHJva2VjeXJpbGxpYz0xMTgzO2Uua2F0YWhpcmFwcm9sb25nbWFya2hhbGZ3aWR0aD02NTM5MjtlLmthdmVydGljYWxzdHJva2VjeXJpbGxpYz0xMTgxO2Uua2JvcG9tb2ZvPTEyNTU4O2Uua2NhbHNxdWFyZT0xMzE5MztlLmtjYXJvbj00ODk7ZS5rY2VkaWxsYT0zMTE7ZS5rY2lyY2xlPTk0MzQ7ZS5rY29tbWFhY2NlbnQ9MzExO2Uua2RvdGJlbG93PTc3MzE7ZS5rZWhhcm1lbmlhbj0xNDEyO2Uua2VoaXJhZ2FuYT0xMjM2OTtlLmtla2F0YWthbmE9MTI0NjU7ZS5rZWthdGFrYW5haGFsZndpZHRoPTY1NDAxO2Uua2VuYXJtZW5pYW49MTM5MTtlLmtlc21hbGxrYXRha2FuYT0xMjUzNDtlLmtncmVlbmxhbmRpYz0zMTI7ZS5raGFiZW5nYWxpPTI0NTQ7ZS5raGFjeXJpbGxpYz0xMDkzO2Uua2hhZGV2YT0yMzI2O2Uua2hhZ3VqYXJhdGk9MjcxMDtlLmtoYWd1cm11a2hpPTI1ODI7ZS5raGFoYXJhYmljPTE1ODI7ZS5raGFoZmluYWxhcmFiaWM9NjUxOTA7ZS5raGFoaW5pdGlhbGFyYWJpYz02NTE5MTtlLmtoYWhtZWRpYWxhcmFiaWM9NjUxOTI7ZS5raGVpY29wdGljPTk5OTtlLmtoaGFkZXZhPTIzOTM7ZS5raGhhZ3VybXVraGk9MjY0OTtlLmtoaWV1a2hhY2lyY2xla29yZWFuPTEyOTIwO2Uua2hpZXVraGFwYXJlbmtvcmVhbj0xMjgyNDtlLmtoaWV1a2hjaXJjbGVrb3JlYW49MTI5MDY7ZS5raGlldWtoa29yZWFuPTEyNjE5O2Uua2hpZXVraHBhcmVua29yZWFuPTEyODEwO2Uua2hva2hhaXRoYWk9MzU4NjtlLmtob2tob250aGFpPTM1ODk7ZS5raG9raHVhdHRoYWk9MzU4NztlLmtob2tod2FpdGhhaT0zNTg4O2Uua2hvbXV0dGhhaT0zNjc1O2Uua2hvb2s9NDA5O2Uua2hvcmFraGFuZ3RoYWk9MzU5MDtlLmtoenNxdWFyZT0xMzIwMTtlLmtpaGlyYWdhbmE9MTIzNjU7ZS5raWthdGFrYW5hPTEyNDYxO2Uua2lrYXRha2FuYWhhbGZ3aWR0aD02NTM5OTtlLmtpcm9ndXJhbXVzcXVhcmU9MTMwNzc7ZS5raXJvbWVldG9ydXNxdWFyZT0xMzA3ODtlLmtpcm9zcXVhcmU9MTMwNzY7ZS5raXllb2thY2lyY2xla29yZWFuPTEyOTEwO2Uua2l5ZW9rYXBhcmVua29yZWFuPTEyODE0O2Uua2l5ZW9rY2lyY2xla29yZWFuPTEyODk2O2Uua2l5ZW9ra29yZWFuPTEyNTkzO2Uua2l5ZW9rcGFyZW5rb3JlYW49MTI4MDA7ZS5raXllb2tzaW9za29yZWFuPTEyNTk1O2Uua2plY3lyaWxsaWM9MTExNjtlLmtsaW5lYmVsb3c9NzczMztlLmtsc3F1YXJlPTEzMjA4O2Uua21jdWJlZHNxdWFyZT0xMzIyMjtlLmttb25vc3BhY2U9NjUzNTU7ZS5rbXNxdWFyZWRzcXVhcmU9MTMyMTg7ZS5rb2hpcmFnYW5hPTEyMzcxO2Uua29obXNxdWFyZT0xMzI0ODtlLmtva2FpdGhhaT0zNTg1O2Uua29rYXRha2FuYT0xMjQ2NztlLmtva2F0YWthbmFoYWxmd2lkdGg9NjU0MDI7ZS5rb29wb3NxdWFyZT0xMzA4NjtlLmtvcHBhY3lyaWxsaWM9MTE1MztlLmtvcmVhbnN0YW5kYXJkc3ltYm9sPTEyOTI3O2Uua29yb25pc2NtYj04MzU7ZS5rcGFyZW49OTM4MjtlLmtwYXNxdWFyZT0xMzIyNjtlLmtzaWN5cmlsbGljPTExMzU7ZS5rdHNxdWFyZT0xMzI2MztlLmt0dXJuZWQ9NjcwO2Uua3VoaXJhZ2FuYT0xMjM2NztlLmt1a2F0YWthbmE9MTI0NjM7ZS5rdWthdGFrYW5haGFsZndpZHRoPTY1NDAwO2Uua3ZzcXVhcmU9MTMyNDA7ZS5rd3NxdWFyZT0xMzI0NjtlLmw9MTA4O2UubGFiZW5nYWxpPTI0ODI7ZS5sYWN1dGU9MzE0O2UubGFkZXZhPTIzNTQ7ZS5sYWd1amFyYXRpPTI3Mzg7ZS5sYWd1cm11a2hpPTI2MTA7ZS5sYWtraGFuZ3lhb3RoYWk9MzY1MztlLmxhbWFsZWZmaW5hbGFyYWJpYz02NTI3NjtlLmxhbWFsZWZoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUyNzI7ZS5sYW1hbGVmaGFtemFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjcxO2UubGFtYWxlZmhhbXphYmVsb3dmaW5hbGFyYWJpYz02NTI3NDtlLmxhbWFsZWZoYW16YWJlbG93aXNvbGF0ZWRhcmFiaWM9NjUyNzM7ZS5sYW1hbGVmaXNvbGF0ZWRhcmFiaWM9NjUyNzU7ZS5sYW1hbGVmbWFkZGFhYm92ZWZpbmFsYXJhYmljPTY1MjcwO2UubGFtYWxlZm1hZGRhYWJvdmVpc29sYXRlZGFyYWJpYz02NTI2OTtlLmxhbWFyYWJpYz0xNjA0O2UubGFtYmRhPTk1NTtlLmxhbWJkYXN0cm9rZT00MTE7ZS5sYW1lZD0xNTAwO2UubGFtZWRkYWdlc2g9NjQzMTY7ZS5sYW1lZGRhZ2VzaGhlYnJldz02NDMxNjtlLmxhbWVkaGVicmV3PTE1MDA7ZS5sYW1maW5hbGFyYWJpYz02NTI0NjtlLmxhbWhhaGluaXRpYWxhcmFiaWM9NjQ3MTQ7ZS5sYW1pbml0aWFsYXJhYmljPTY1MjQ3O2UubGFtamVlbWluaXRpYWxhcmFiaWM9NjQ3MTM7ZS5sYW1raGFoaW5pdGlhbGFyYWJpYz02NDcxNTtlLmxhbWxhbWhlaGlzb2xhdGVkYXJhYmljPTY1MDEwO2UubGFtbWVkaWFsYXJhYmljPTY1MjQ4O2UubGFtbWVlbWhhaGluaXRpYWxhcmFiaWM9NjQ5MDQ7ZS5sYW1tZWVtaW5pdGlhbGFyYWJpYz02NDcxNjtlLmxhcmdlY2lyY2xlPTk3MTE7ZS5sYmFyPTQxMDtlLmxiZWx0PTYyMDtlLmxib3BvbW9mbz0xMjU1NjtlLmxjYXJvbj0zMTg7ZS5sY2VkaWxsYT0zMTY7ZS5sY2lyY2xlPTk0MzU7ZS5sY2lyY3VtZmxleGJlbG93PTc3NDE7ZS5sY29tbWFhY2NlbnQ9MzE2O2UubGRvdD0zMjA7ZS5sZG90YWNjZW50PTMyMDtlLmxkb3RiZWxvdz03NzM1O2UubGRvdGJlbG93bWFjcm9uPTc3Mzc7ZS5sZWZ0YW5nbGVhYm92ZWNtYj03OTQ7ZS5sZWZ0dGFja2JlbG93Y21iPTc5MjtlLmxlc3M9NjA7ZS5sZXNzZXF1YWw9ODgwNDtlLmxlc3NlcXVhbG9yZ3JlYXRlcj04OTIyO2UubGVzc21vbm9zcGFjZT02NTMwODtlLmxlc3NvcmVxdWl2YWxlbnQ9ODgxODtlLmxlc3NvcmdyZWF0ZXI9ODgyMjtlLmxlc3NvdmVyZXF1YWw9ODgwNjtlLmxlc3NzbWFsbD02NTEyNDtlLmxlemg9NjIyO2UubGZibG9jaz05NjEyO2UubGhvb2tyZXRyb2ZsZXg9NjIxO2UubGlyYT04MzU2O2UubGl3bmFybWVuaWFuPTEzODg7ZS5saj00NTc7ZS5samVjeXJpbGxpYz0xMTEzO2UubGw9NjMxNjg7ZS5sbGFkZXZhPTIzNTU7ZS5sbGFndWphcmF0aT0yNzM5O2UubGxpbmViZWxvdz03NzM5O2UubGxsYWRldmE9MjM1NjtlLmxsdm9jYWxpY2JlbmdhbGk9MjUyOTtlLmxsdm9jYWxpY2RldmE9MjQwMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMTtlLmxsdm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjQwMztlLmxtaWRkbGV0aWxkZT02MTk7ZS5sbW9ub3NwYWNlPTY1MzU2O2UubG1zcXVhcmU9MTMyNjQ7ZS5sb2NodWxhdGhhaT0zNjI4O2UubG9naWNhbGFuZD04NzQzO2UubG9naWNhbG5vdD0xNzI7ZS5sb2dpY2Fsbm90cmV2ZXJzZWQ9ODk3NjtlLmxvZ2ljYWxvcj04NzQ0O2UubG9saW5ndGhhaT0zNjIxO2UubG9uZ3M9MzgzO2UubG93bGluZWNlbnRlcmxpbmU9NjUxMDI7ZS5sb3dsaW5lY21iPTgxODtlLmxvd2xpbmVkYXNoZWQ9NjUxMDE7ZS5sb3plbmdlPTk2NzQ7ZS5scGFyZW49OTM4MztlLmxzbGFzaD0zMjI7ZS5sc3F1YXJlPTg0Njc7ZS5sc3VwZXJpb3I9NjMyMTQ7ZS5sdHNoYWRlPTk2MTc7ZS5sdXRoYWk9MzYyMjtlLmx2b2NhbGljYmVuZ2FsaT0yNDQ0O2UubHZvY2FsaWNkZXZhPTIzMTY7ZS5sdm9jYWxpY3Zvd2Vsc2lnbmJlbmdhbGk9MjUzMDtlLmx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAyO2UubHhzcXVhcmU9MTMyNjc7ZS5tPTEwOTtlLm1hYmVuZ2FsaT0yNDc4O2UubWFjcm9uPTE3NTtlLm1hY3JvbmJlbG93Y21iPTgxNztlLm1hY3JvbmNtYj03NzI7ZS5tYWNyb25sb3dtb2Q9NzE3O2UubWFjcm9ubW9ub3NwYWNlPTY1NTA3O2UubWFjdXRlPTc3NDM7ZS5tYWRldmE9MjM1MDtlLm1hZ3VqYXJhdGk9MjczNDtlLm1hZ3VybXVraGk9MjYwNjtlLm1haGFwYWtoaGVicmV3PTE0NDQ7ZS5tYWhhcGFraGxlZnRoZWJyZXc9MTQ0NDtlLm1haGlyYWdhbmE9MTI0MTQ7ZS5tYWljaGF0dGF3YWxvd2xlZnR0aGFpPTYzNjM3O2UubWFpY2hhdHRhd2Fsb3dyaWdodHRoYWk9NjM2MzY7ZS5tYWljaGF0dGF3YXRoYWk9MzY1OTtlLm1haWNoYXR0YXdhdXBwZXJsZWZ0dGhhaT02MzYzNTtlLm1haWVrbG93bGVmdHRoYWk9NjM2Mjg7ZS5tYWlla2xvd3JpZ2h0dGhhaT02MzYyNztlLm1haWVrdGhhaT0zNjU2O2UubWFpZWt1cHBlcmxlZnR0aGFpPTYzNjI2O2UubWFpaGFuYWthdGxlZnR0aGFpPTYzNjIwO2UubWFpaGFuYWthdHRoYWk9MzYzMztlLm1haXRhaWtodWxlZnR0aGFpPTYzNjI1O2UubWFpdGFpa2h1dGhhaT0zNjU1O2UubWFpdGhvbG93bGVmdHRoYWk9NjM2MzE7ZS5tYWl0aG9sb3dyaWdodHRoYWk9NjM2MzA7ZS5tYWl0aG90aGFpPTM2NTc7ZS5tYWl0aG91cHBlcmxlZnR0aGFpPTYzNjI5O2UubWFpdHJpbG93bGVmdHRoYWk9NjM2MzQ7ZS5tYWl0cmlsb3dyaWdodHRoYWk9NjM2MzM7ZS5tYWl0cml0aGFpPTM2NTg7ZS5tYWl0cml1cHBlcmxlZnR0aGFpPTYzNjMyO2UubWFpeWFtb2t0aGFpPTM2NTQ7ZS5tYWthdGFrYW5hPTEyNTEwO2UubWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyMztlLm1hbGU9OTc5NDtlLm1hbnN5b25zcXVhcmU9MTMxMjc7ZS5tYXFhZmhlYnJldz0xNDcwO2UubWFycz05Nzk0O2UubWFzb3JhY2lyY2xlaGVicmV3PTE0NTU7ZS5tYXNxdWFyZT0xMzE4NztlLm1ib3BvbW9mbz0xMjU1MTtlLm1ic3F1YXJlPTEzMjY4O2UubWNpcmNsZT05NDM2O2UubWN1YmVkc3F1YXJlPTEzMjIxO2UubWRvdGFjY2VudD03NzQ1O2UubWRvdGJlbG93PTc3NDc7ZS5tZWVtYXJhYmljPTE2MDU7ZS5tZWVtZmluYWxhcmFiaWM9NjUyNTA7ZS5tZWVtaW5pdGlhbGFyYWJpYz02NTI1MTtlLm1lZW1tZWRpYWxhcmFiaWM9NjUyNTI7ZS5tZWVtbWVlbWluaXRpYWxhcmFiaWM9NjQ3MjE7ZS5tZWVtbWVlbWlzb2xhdGVkYXJhYmljPTY0NTg0O2UubWVldG9ydXNxdWFyZT0xMzEzMztlLm1laGlyYWdhbmE9MTI0MTc7ZS5tZWl6aWVyYXNxdWFyZT0xMzE4MjtlLm1la2F0YWthbmE9MTI1MTM7ZS5tZWthdGFrYW5haGFsZndpZHRoPTY1NDI2O2UubWVtPTE1MDI7ZS5tZW1kYWdlc2g9NjQzMTg7ZS5tZW1kYWdlc2hoZWJyZXc9NjQzMTg7ZS5tZW1oZWJyZXc9MTUwMjtlLm1lbmFybWVuaWFuPTEzOTY7ZS5tZXJraGFoZWJyZXc9MTQ0NTtlLm1lcmtoYWtlZnVsYWhlYnJldz0xNDQ2O2UubWVya2hha2VmdWxhbGVmdGhlYnJldz0xNDQ2O2UubWVya2hhbGVmdGhlYnJldz0xNDQ1O2UubWhvb2s9NjI1O2UubWh6c3F1YXJlPTEzMjAyO2UubWlkZGxlZG90a2F0YWthbmFoYWxmd2lkdGg9NjUzODE7ZS5taWRkb3Q9MTgzO2UubWlldW1hY2lyY2xla29yZWFuPTEyOTE0O2UubWlldW1hcGFyZW5rb3JlYW49MTI4MTg7ZS5taWV1bWNpcmNsZWtvcmVhbj0xMjkwMDtlLm1pZXVta29yZWFuPTEyNjA5O2UubWlldW1wYW5zaW9za29yZWFuPTEyNjU2O2UubWlldW1wYXJlbmtvcmVhbj0xMjgwNDtlLm1pZXVtcGlldXBrb3JlYW49MTI2NTQ7ZS5taWV1bXNpb3Nrb3JlYW49MTI2NTU7ZS5taWhpcmFnYW5hPTEyNDE1O2UubWlrYXRha2FuYT0xMjUxMTtlLm1pa2F0YWthbmFoYWxmd2lkdGg9NjU0MjQ7ZS5taW51cz04NzIyO2UubWludXNiZWxvd2NtYj04MDA7ZS5taW51c2NpcmNsZT04ODU0O2UubWludXNtb2Q9NzI3O2UubWludXNwbHVzPTg3MjM7ZS5taW51dGU9ODI0MjtlLm1pcmliYWFydXNxdWFyZT0xMzEzMDtlLm1pcmlzcXVhcmU9MTMxMjk7ZS5tbG9uZ2xlZ3R1cm5lZD02MjQ7ZS5tbHNxdWFyZT0xMzIwNjtlLm1tY3ViZWRzcXVhcmU9MTMyMTk7ZS5tbW9ub3NwYWNlPTY1MzU3O2UubW1zcXVhcmVkc3F1YXJlPTEzMjE1O2UubW9oaXJhZ2FuYT0xMjQxODtlLm1vaG1zcXVhcmU9MTMyNDk7ZS5tb2thdGFrYW5hPTEyNTE0O2UubW9rYXRha2FuYWhhbGZ3aWR0aD02NTQyNztlLm1vbHNxdWFyZT0xMzI3MDtlLm1vbWF0aGFpPTM2MTc7ZS5tb3ZlcnNzcXVhcmU9MTMyMjM7ZS5tb3ZlcnNzcXVhcmVkc3F1YXJlPTEzMjI0O2UubXBhcmVuPTkzODQ7ZS5tcGFzcXVhcmU9MTMyMjc7ZS5tc3NxdWFyZT0xMzIzNTtlLm1zdXBlcmlvcj02MzIxNTtlLm10dXJuZWQ9NjIzO2UubXU9MTgxO2UubXUxPTE4MTtlLm11YXNxdWFyZT0xMzE4NjtlLm11Y2hncmVhdGVyPTg4MTE7ZS5tdWNobGVzcz04ODEwO2UubXVmc3F1YXJlPTEzMTk2O2UubXVncmVlaz05NTY7ZS5tdWdzcXVhcmU9MTMxOTc7ZS5tdWhpcmFnYW5hPTEyNDE2O2UubXVrYXRha2FuYT0xMjUxMjtlLm11a2F0YWthbmFoYWxmd2lkdGg9NjU0MjU7ZS5tdWxzcXVhcmU9MTMyMDU7ZS5tdWx0aXBseT0yMTU7ZS5tdW1zcXVhcmU9MTMyMTE7ZS5tdW5haGhlYnJldz0xNDQzO2UubXVuYWhsZWZ0aGVicmV3PTE0NDM7ZS5tdXNpY2Fsbm90ZT05ODM0O2UubXVzaWNhbG5vdGVkYmw9OTgzNTtlLm11c2ljZmxhdHNpZ249OTgzNztlLm11c2ljc2hhcnBzaWduPTk4Mzk7ZS5tdXNzcXVhcmU9MTMyMzQ7ZS5tdXZzcXVhcmU9MTMyMzg7ZS5tdXdzcXVhcmU9MTMyNDQ7ZS5tdm1lZ2FzcXVhcmU9MTMyNDE7ZS5tdnNxdWFyZT0xMzIzOTtlLm13bWVnYXNxdWFyZT0xMzI0NztlLm13c3F1YXJlPTEzMjQ1O2Uubj0xMTA7ZS5uYWJlbmdhbGk9MjQ3MjtlLm5hYmxhPTg3MTE7ZS5uYWN1dGU9MzI0O2UubmFkZXZhPTIzNDQ7ZS5uYWd1amFyYXRpPTI3Mjg7ZS5uYWd1cm11a2hpPTI2MDA7ZS5uYWhpcmFnYW5hPTEyMzk0O2UubmFrYXRha2FuYT0xMjQ5MDtlLm5ha2F0YWthbmFoYWxmd2lkdGg9NjU0MTM7ZS5uYXBvc3Ryb3BoZT0zMjk7ZS5uYXNxdWFyZT0xMzE4NTtlLm5ib3BvbW9mbz0xMjU1NTtlLm5ic3BhY2U9MTYwO2UubmNhcm9uPTMyODtlLm5jZWRpbGxhPTMyNjtlLm5jaXJjbGU9OTQzNztlLm5jaXJjdW1mbGV4YmVsb3c9Nzc1NTtlLm5jb21tYWFjY2VudD0zMjY7ZS5uZG90YWNjZW50PTc3NDk7ZS5uZG90YmVsb3c9Nzc1MTtlLm5laGlyYWdhbmE9MTIzOTc7ZS5uZWthdGFrYW5hPTEyNDkzO2UubmVrYXRha2FuYWhhbGZ3aWR0aD02NTQxNjtlLm5ld3NoZXFlbHNpZ249ODM2MjtlLm5mc3F1YXJlPTEzMTk1O2UubmdhYmVuZ2FsaT0yNDU3O2UubmdhZGV2YT0yMzI5O2UubmdhZ3VqYXJhdGk9MjcxMztlLm5nYWd1cm11a2hpPTI1ODU7ZS5uZ29uZ3V0aGFpPTM1OTE7ZS5uaGlyYWdhbmE9MTI0MzU7ZS5uaG9va2xlZnQ9NjI2O2Uubmhvb2tyZXRyb2ZsZXg9NjI3O2UubmlldW5hY2lyY2xla29yZWFuPTEyOTExO2UubmlldW5hcGFyZW5rb3JlYW49MTI4MTU7ZS5uaWV1bmNpZXVja29yZWFuPTEyNTk3O2UubmlldW5jaXJjbGVrb3JlYW49MTI4OTc7ZS5uaWV1bmhpZXVoa29yZWFuPTEyNTk4O2UubmlldW5rb3JlYW49MTI1OTY7ZS5uaWV1bnBhbnNpb3Nrb3JlYW49MTI2NDg7ZS5uaWV1bnBhcmVua29yZWFuPTEyODAxO2UubmlldW5zaW9za29yZWFuPTEyNjQ3O2UubmlldW50aWtldXRrb3JlYW49MTI2NDY7ZS5uaWhpcmFnYW5hPTEyMzk1O2UubmlrYXRha2FuYT0xMjQ5MTtlLm5pa2F0YWthbmFoYWxmd2lkdGg9NjU0MTQ7ZS5uaWtoYWhpdGxlZnR0aGFpPTYzNjQxO2UubmlraGFoaXR0aGFpPTM2NjE7ZS5uaW5lPTU3O2UubmluZWFyYWJpYz0xNjQxO2UubmluZWJlbmdhbGk9MjU0MztlLm5pbmVjaXJjbGU9OTMyMDtlLm5pbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTMwO2UubmluZWRldmE9MjQxNTtlLm5pbmVndWphcmF0aT0yNzk5O2UubmluZWd1cm11a2hpPTI2NzE7ZS5uaW5laGFja2FyYWJpYz0xNjQxO2UubmluZWhhbmd6aG91PTEyMzI5O2UubmluZWlkZW9ncmFwaGljcGFyZW49MTI4NDA7ZS5uaW5laW5mZXJpb3I9ODMyOTtlLm5pbmVtb25vc3BhY2U9NjUzMDU7ZS5uaW5lb2xkc3R5bGU9NjMyODk7ZS5uaW5lcGFyZW49OTM0MDtlLm5pbmVwZXJpb2Q9OTM2MDtlLm5pbmVwZXJzaWFuPTE3ODU7ZS5uaW5lcm9tYW49ODU2ODtlLm5pbmVzdXBlcmlvcj04MzEzO2UubmluZXRlZW5jaXJjbGU9OTMzMDtlLm5pbmV0ZWVucGFyZW49OTM1MDtlLm5pbmV0ZWVucGVyaW9kPTkzNzA7ZS5uaW5ldGhhaT0zNjczO2Uubmo9NDYwO2UubmplY3lyaWxsaWM9MTExNDtlLm5rYXRha2FuYT0xMjUzMTtlLm5rYXRha2FuYWhhbGZ3aWR0aD02NTQzNztlLm5sZWdyaWdodGxvbmc9NDE0O2UubmxpbmViZWxvdz03NzUzO2Uubm1vbm9zcGFjZT02NTM1ODtlLm5tc3F1YXJlPTEzMjEwO2Uubm5hYmVuZ2FsaT0yNDY3O2Uubm5hZGV2YT0yMzM5O2Uubm5hZ3VqYXJhdGk9MjcyMztlLm5uYWd1cm11a2hpPTI1OTU7ZS5ubm5hZGV2YT0yMzQ1O2Uubm9oaXJhZ2FuYT0xMjM5ODtlLm5va2F0YWthbmE9MTI0OTQ7ZS5ub2thdGFrYW5haGFsZndpZHRoPTY1NDE3O2Uubm9uYnJlYWtpbmdzcGFjZT0xNjA7ZS5ub25lbnRoYWk9MzYwMztlLm5vbnV0aGFpPTM2MDk7ZS5ub29uYXJhYmljPTE2MDY7ZS5ub29uZmluYWxhcmFiaWM9NjUyNTQ7ZS5ub29uZ2h1bm5hYXJhYmljPTE3MjI7ZS5ub29uZ2h1bm5hZmluYWxhcmFiaWM9NjQ0MTU7ZS5ub29uaW5pdGlhbGFyYWJpYz02NTI1NTtlLm5vb25qZWVtaW5pdGlhbGFyYWJpYz02NDcyMjtlLm5vb25qZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODc7ZS5ub29ubWVkaWFsYXJhYmljPTY1MjU2O2Uubm9vbm1lZW1pbml0aWFsYXJhYmljPTY0NzI1O2Uubm9vbm1lZW1pc29sYXRlZGFyYWJpYz02NDU5MDtlLm5vb25ub29uZmluYWxhcmFiaWM9NjQ2NTM7ZS5ub3Rjb250YWlucz04NzE2O2Uubm90ZWxlbWVudD04NzEzO2Uubm90ZWxlbWVudG9mPTg3MTM7ZS5ub3RlcXVhbD04ODAwO2Uubm90Z3JlYXRlcj04ODE1O2Uubm90Z3JlYXRlcm5vcmVxdWFsPTg4MTc7ZS5ub3RncmVhdGVybm9ybGVzcz04ODI1O2Uubm90aWRlbnRpY2FsPTg4MDI7ZS5ub3RsZXNzPTg4MTQ7ZS5ub3RsZXNzbm9yZXF1YWw9ODgxNjtlLm5vdHBhcmFsbGVsPTg3NDI7ZS5ub3RwcmVjZWRlcz04ODMyO2Uubm90c3Vic2V0PTg4MzY7ZS5ub3RzdWNjZWVkcz04ODMzO2Uubm90c3VwZXJzZXQ9ODgzNztlLm5vd2FybWVuaWFuPTEzOTg7ZS5ucGFyZW49OTM4NTtlLm5zc3F1YXJlPTEzMjMzO2UubnN1cGVyaW9yPTgzMTk7ZS5udGlsZGU9MjQxO2UubnU9OTU3O2UubnVoaXJhZ2FuYT0xMjM5NjtlLm51a2F0YWthbmE9MTI0OTI7ZS5udWthdGFrYW5haGFsZndpZHRoPTY1NDE1O2UubnVrdGFiZW5nYWxpPTI0OTI7ZS5udWt0YWRldmE9MjM2NDtlLm51a3RhZ3VqYXJhdGk9Mjc0ODtlLm51a3RhZ3VybXVraGk9MjYyMDtlLm51bWJlcnNpZ249MzU7ZS5udW1iZXJzaWdubW9ub3NwYWNlPTY1MjgzO2UubnVtYmVyc2lnbnNtYWxsPTY1MTE5O2UubnVtZXJhbHNpZ25ncmVlaz04ODQ7ZS5udW1lcmFsc2lnbmxvd2VyZ3JlZWs9ODg1O2UubnVtZXJvPTg0NzA7ZS5udW49MTUwNDtlLm51bmRhZ2VzaD02NDMyMDtlLm51bmRhZ2VzaGhlYnJldz02NDMyMDtlLm51bmhlYnJldz0xNTA0O2UubnZzcXVhcmU9MTMyMzc7ZS5ud3NxdWFyZT0xMzI0MztlLm55YWJlbmdhbGk9MjQ2MjtlLm55YWRldmE9MjMzNDtlLm55YWd1amFyYXRpPTI3MTg7ZS5ueWFndXJtdWtoaT0yNTkwO2Uubz0xMTE7ZS5vYWN1dGU9MjQzO2Uub2FuZ3RoYWk9MzYyOTtlLm9iYXJyZWQ9NjI5O2Uub2JhcnJlZGN5cmlsbGljPTEyNTc7ZS5vYmFycmVkZGllcmVzaXNjeXJpbGxpYz0xMjU5O2Uub2JlbmdhbGk9MjQ1MTtlLm9ib3BvbW9mbz0xMjU3MTtlLm9icmV2ZT0zMzU7ZS5vY2FuZHJhZGV2YT0yMzIxO2Uub2NhbmRyYWd1amFyYXRpPTI3MDU7ZS5vY2FuZHJhdm93ZWxzaWduZGV2YT0yMzc3O2Uub2NhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NjE7ZS5vY2Fyb249NDY2O2Uub2NpcmNsZT05NDM4O2Uub2NpcmN1bWZsZXg9MjQ0O2Uub2NpcmN1bWZsZXhhY3V0ZT03ODg5O2Uub2NpcmN1bWZsZXhkb3RiZWxvdz03ODk3O2Uub2NpcmN1bWZsZXhncmF2ZT03ODkxO2Uub2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MztlLm9jaXJjdW1mbGV4dGlsZGU9Nzg5NTtlLm9jeXJpbGxpYz0xMDg2O2Uub2RibGFjdXRlPTMzNztlLm9kYmxncmF2ZT01MjU7ZS5vZGV2YT0yMzIzO2Uub2RpZXJlc2lzPTI0NjtlLm9kaWVyZXNpc2N5cmlsbGljPTEyNTU7ZS5vZG90YmVsb3c9Nzg4NTtlLm9lPTMzOTtlLm9la29yZWFuPTEyNjM0O2Uub2dvbmVrPTczMTtlLm9nb25la2NtYj04MDg7ZS5vZ3JhdmU9MjQyO2Uub2d1amFyYXRpPTI3MDc7ZS5vaGFybWVuaWFuPTE0MTM7ZS5vaGlyYWdhbmE9MTIzNjI7ZS5vaG9va2Fib3ZlPTc4ODc7ZS5vaG9ybj00MTc7ZS5vaG9ybmFjdXRlPTc4OTk7ZS5vaG9ybmRvdGJlbG93PTc5MDc7ZS5vaG9ybmdyYXZlPTc5MDE7ZS5vaG9ybmhvb2thYm92ZT03OTAzO2Uub2hvcm50aWxkZT03OTA1O2Uub2h1bmdhcnVtbGF1dD0zMzc7ZS5vaT00MTk7ZS5vaW52ZXJ0ZWRicmV2ZT01Mjc7ZS5va2F0YWthbmE9MTI0NTg7ZS5va2F0YWthbmFoYWxmd2lkdGg9NjUzOTc7ZS5va29yZWFuPTEyNjMxO2Uub2xlaGVicmV3PTE0NTE7ZS5vbWFjcm9uPTMzMztlLm9tYWNyb25hY3V0ZT03NzYzO2Uub21hY3JvbmdyYXZlPTc3NjE7ZS5vbWRldmE9MjM4NDtlLm9tZWdhPTk2OTtlLm9tZWdhMT05ODI7ZS5vbWVnYWN5cmlsbGljPTExMjE7ZS5vbWVnYWxhdGluY2xvc2VkPTYzMTtlLm9tZWdhcm91bmRjeXJpbGxpYz0xMTQ3O2Uub21lZ2F0aXRsb2N5cmlsbGljPTExNDk7ZS5vbWVnYXRvbm9zPTk3NDtlLm9tZ3VqYXJhdGk9Mjc2ODtlLm9taWNyb249OTU5O2Uub21pY3JvbnRvbm9zPTk3MjtlLm9tb25vc3BhY2U9NjUzNTk7ZS5vbmU9NDk7ZS5vbmVhcmFiaWM9MTYzMztlLm9uZWJlbmdhbGk9MjUzNTtlLm9uZWNpcmNsZT05MzEyO2Uub25lY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMjtlLm9uZWRldmE9MjQwNztlLm9uZWRvdGVubGVhZGVyPTgyMjg7ZS5vbmVlaWdodGg9ODUzOTtlLm9uZWZpdHRlZD02MzE5NjtlLm9uZWd1amFyYXRpPTI3OTE7ZS5vbmVndXJtdWtoaT0yNjYzO2Uub25laGFja2FyYWJpYz0xNjMzO2Uub25laGFsZj0xODk7ZS5vbmVoYW5nemhvdT0xMjMyMTtlLm9uZWlkZW9ncmFwaGljcGFyZW49MTI4MzI7ZS5vbmVpbmZlcmlvcj04MzIxO2Uub25lbW9ub3NwYWNlPTY1Mjk3O2Uub25lbnVtZXJhdG9yYmVuZ2FsaT0yNTQ4O2Uub25lb2xkc3R5bGU9NjMyODE7ZS5vbmVwYXJlbj05MzMyO2Uub25lcGVyaW9kPTkzNTI7ZS5vbmVwZXJzaWFuPTE3Nzc7ZS5vbmVxdWFydGVyPTE4ODtlLm9uZXJvbWFuPTg1NjA7ZS5vbmVzdXBlcmlvcj0xODU7ZS5vbmV0aGFpPTM2NjU7ZS5vbmV0aGlyZD04NTMxO2Uub29nb25laz00OTE7ZS5vb2dvbmVrbWFjcm9uPTQ5MztlLm9vZ3VybXVraGk9MjU3OTtlLm9vbWF0cmFndXJtdWtoaT0yNjM1O2Uub29wZW49NTk2O2Uub3BhcmVuPTkzODY7ZS5vcGVuYnVsbGV0PTk3MDI7ZS5vcHRpb249ODk5NztlLm9yZGZlbWluaW5lPTE3MDtlLm9yZG1hc2N1bGluZT0xODY7ZS5vcnRob2dvbmFsPTg3MzU7ZS5vc2hvcnRkZXZhPTIzMjI7ZS5vc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzg7ZS5vc2xhc2g9MjQ4O2Uub3NsYXNoYWN1dGU9NTExO2Uub3NtYWxsaGlyYWdhbmE9MTIzNjE7ZS5vc21hbGxrYXRha2FuYT0xMjQ1NztlLm9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg3O2Uub3N0cm9rZWFjdXRlPTUxMTtlLm9zdXBlcmlvcj02MzIxNjtlLm90Y3lyaWxsaWM9MTE1MTtlLm90aWxkZT0yNDU7ZS5vdGlsZGVhY3V0ZT03NzU3O2Uub3RpbGRlZGllcmVzaXM9Nzc1OTtlLm91Ym9wb21vZm89MTI1Nzc7ZS5vdmVybGluZT04MjU0O2Uub3ZlcmxpbmVjZW50ZXJsaW5lPTY1MDk4O2Uub3ZlcmxpbmVjbWI9NzczO2Uub3ZlcmxpbmVkYXNoZWQ9NjUwOTc7ZS5vdmVybGluZWRibHdhdnk9NjUxMDA7ZS5vdmVybGluZXdhdnk9NjUwOTk7ZS5vdmVyc2NvcmU9MTc1O2Uub3Zvd2Vsc2lnbmJlbmdhbGk9MjUwNztlLm92b3dlbHNpZ25kZXZhPTIzNzk7ZS5vdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MztlLnA9MTEyO2UucGFhbXBzc3F1YXJlPTEzMTg0O2UucGFhc2VudG9zcXVhcmU9MTMwOTk7ZS5wYWJlbmdhbGk9MjQ3NDtlLnBhY3V0ZT03NzY1O2UucGFkZXZhPTIzNDY7ZS5wYWdlZG93bj04NjcxO2UucGFnZXVwPTg2NzA7ZS5wYWd1amFyYXRpPTI3MzA7ZS5wYWd1cm11a2hpPTI2MDI7ZS5wYWhpcmFnYW5hPTEyNDAxO2UucGFpeWFubm9pdGhhaT0zNjMxO2UucGFrYXRha2FuYT0xMjQ5NztlLnBhbGF0YWxpemF0aW9uY3lyaWxsaWNjbWI9MTE1NjtlLnBhbG9jaGthY3lyaWxsaWM9MTIxNjtlLnBhbnNpb3Nrb3JlYW49MTI2NzE7ZS5wYXJhZ3JhcGg9MTgyO2UucGFyYWxsZWw9ODc0MTtlLnBhcmVubGVmdD00MDtlLnBhcmVubGVmdGFsdG9uZWFyYWJpYz02NDgzMDtlLnBhcmVubGVmdGJ0PTYzNzI1O2UucGFyZW5sZWZ0ZXg9NjM3MjQ7ZS5wYXJlbmxlZnRpbmZlcmlvcj04MzMzO2UucGFyZW5sZWZ0bW9ub3NwYWNlPTY1Mjg4O2UucGFyZW5sZWZ0c21hbGw9NjUxMTM7ZS5wYXJlbmxlZnRzdXBlcmlvcj04MzE3O2UucGFyZW5sZWZ0dHA9NjM3MjM7ZS5wYXJlbmxlZnR2ZXJ0aWNhbD02NTA3NztlLnBhcmVucmlnaHQ9NDE7ZS5wYXJlbnJpZ2h0YWx0b25lYXJhYmljPTY0ODMxO2UucGFyZW5yaWdodGJ0PTYzNzM2O2UucGFyZW5yaWdodGV4PTYzNzM1O2UucGFyZW5yaWdodGluZmVyaW9yPTgzMzQ7ZS5wYXJlbnJpZ2h0bW9ub3NwYWNlPTY1Mjg5O2UucGFyZW5yaWdodHNtYWxsPTY1MTE0O2UucGFyZW5yaWdodHN1cGVyaW9yPTgzMTg7ZS5wYXJlbnJpZ2h0dHA9NjM3MzQ7ZS5wYXJlbnJpZ2h0dmVydGljYWw9NjUwNzg7ZS5wYXJ0aWFsZGlmZj04NzA2O2UucGFzZXFoZWJyZXc9MTQ3MjtlLnBhc2h0YWhlYnJldz0xNDMzO2UucGFzcXVhcmU9MTMyMjU7ZS5wYXRhaD0xNDYzO2UucGF0YWgxMT0xNDYzO2UucGF0YWgxZD0xNDYzO2UucGF0YWgyYT0xNDYzO2UucGF0YWhoZWJyZXc9MTQ2MztlLnBhdGFobmFycm93aGVicmV3PTE0NjM7ZS5wYXRhaHF1YXJ0ZXJoZWJyZXc9MTQ2MztlLnBhdGFod2lkZWhlYnJldz0xNDYzO2UucGF6ZXJoZWJyZXc9MTQ0MTtlLnBib3BvbW9mbz0xMjU1MDtlLnBjaXJjbGU9OTQzOTtlLnBkb3RhY2NlbnQ9Nzc2NztlLnBlPTE1MDg7ZS5wZWN5cmlsbGljPTEwODc7ZS5wZWRhZ2VzaD02NDMyNDtlLnBlZGFnZXNoaGVicmV3PTY0MzI0O2UucGVlemlzcXVhcmU9MTMxMTU7ZS5wZWZpbmFsZGFnZXNoaGVicmV3PTY0MzIzO2UucGVoYXJhYmljPTE2NjI7ZS5wZWhhcm1lbmlhbj0xNDAyO2UucGVoZWJyZXc9MTUwODtlLnBlaGZpbmFsYXJhYmljPTY0MzQzO2UucGVoaW5pdGlhbGFyYWJpYz02NDM0NDtlLnBlaGlyYWdhbmE9MTI0MTA7ZS5wZWhtZWRpYWxhcmFiaWM9NjQzNDU7ZS5wZWthdGFrYW5hPTEyNTA2O2UucGVtaWRkbGVob29rY3lyaWxsaWM9MTE5MTtlLnBlcmFmZWhlYnJldz02NDMzNDtlLnBlcmNlbnQ9Mzc7ZS5wZXJjZW50YXJhYmljPTE2NDI7ZS5wZXJjZW50bW9ub3NwYWNlPTY1Mjg1O2UucGVyY2VudHNtYWxsPTY1MTMwO2UucGVyaW9kPTQ2O2UucGVyaW9kYXJtZW5pYW49MTQxNztlLnBlcmlvZGNlbnRlcmVkPTE4MztlLnBlcmlvZGhhbGZ3aWR0aD02NTM3NztlLnBlcmlvZGluZmVyaW9yPTYzMjA3O2UucGVyaW9kbW9ub3NwYWNlPTY1Mjk0O2UucGVyaW9kc21hbGw9NjUxMDY7ZS5wZXJpb2RzdXBlcmlvcj02MzIwODtlLnBlcmlzcG9tZW5pZ3JlZWtjbWI9ODM0O2UucGVycGVuZGljdWxhcj04ODY5O2UucGVydGhvdXNhbmQ9ODI0MDtlLnBlc2V0YT04MzU5O2UucGZzcXVhcmU9MTMxOTQ7ZS5waGFiZW5nYWxpPTI0NzU7ZS5waGFkZXZhPTIzNDc7ZS5waGFndWphcmF0aT0yNzMxO2UucGhhZ3VybXVraGk9MjYwMztlLnBoaT05NjY7ZS5waGkxPTk4MTtlLnBoaWV1cGhhY2lyY2xla29yZWFuPTEyOTIyO2UucGhpZXVwaGFwYXJlbmtvcmVhbj0xMjgyNjtlLnBoaWV1cGhjaXJjbGVrb3JlYW49MTI5MDg7ZS5waGlldXBoa29yZWFuPTEyNjIxO2UucGhpZXVwaHBhcmVua29yZWFuPTEyODEyO2UucGhpbGF0aW49NjMyO2UucGhpbnRodXRoYWk9MzY0MjtlLnBoaXN5bWJvbGdyZWVrPTk4MTtlLnBob29rPTQyMTtlLnBob3BoYW50aGFpPTM2MTQ7ZS5waG9waHVuZ3RoYWk9MzYxMjtlLnBob3NhbXBoYW90aGFpPTM2MTY7ZS5waT05NjA7ZS5waWV1cGFjaXJjbGVrb3JlYW49MTI5MTU7ZS5waWV1cGFwYXJlbmtvcmVhbj0xMjgxOTtlLnBpZXVwY2lldWNrb3JlYW49MTI2NjI7ZS5waWV1cGNpcmNsZWtvcmVhbj0xMjkwMTtlLnBpZXVwa2l5ZW9ra29yZWFuPTEyNjU4O2UucGlldXBrb3JlYW49MTI2MTA7ZS5waWV1cHBhcmVua29yZWFuPTEyODA1O2UucGlldXBzaW9za2l5ZW9ra29yZWFuPTEyNjYwO2UucGlldXBzaW9za29yZWFuPTEyNjEyO2UucGlldXBzaW9zdGlrZXV0a29yZWFuPTEyNjYxO2UucGlldXB0aGlldXRoa29yZWFuPTEyNjYzO2UucGlldXB0aWtldXRrb3JlYW49MTI2NTk7ZS5waWhpcmFnYW5hPTEyNDA0O2UucGlrYXRha2FuYT0xMjUwMDtlLnBpc3ltYm9sZ3JlZWs9OTgyO2UucGl3cmFybWVuaWFuPTE0MTE7ZS5wbGFuY2tvdmVyMnBpPTg0NjM7ZS5wbGFuY2tvdmVyMnBpMT04NDYzO2UucGx1cz00MztlLnBsdXNiZWxvd2NtYj03OTk7ZS5wbHVzY2lyY2xlPTg4NTM7ZS5wbHVzbWludXM9MTc3O2UucGx1c21vZD03MjY7ZS5wbHVzbW9ub3NwYWNlPTY1MjkxO2UucGx1c3NtYWxsPTY1MTIyO2UucGx1c3N1cGVyaW9yPTgzMTQ7ZS5wbW9ub3NwYWNlPTY1MzYwO2UucG1zcXVhcmU9MTMyNzI7ZS5wb2hpcmFnYW5hPTEyNDEzO2UucG9pbnRpbmdpbmRleGRvd253aGl0ZT05NzU5O2UucG9pbnRpbmdpbmRleGxlZnR3aGl0ZT05NzU2O2UucG9pbnRpbmdpbmRleHJpZ2h0d2hpdGU9OTc1ODtlLnBvaW50aW5naW5kZXh1cHdoaXRlPTk3NTc7ZS5wb2thdGFrYW5hPTEyNTA5O2UucG9wbGF0aGFpPTM2MTE7ZS5wb3N0YWxtYXJrPTEyMzA2O2UucG9zdGFsbWFya2ZhY2U9MTIzMjA7ZS5wcGFyZW49OTM4NztlLnByZWNlZGVzPTg4MjY7ZS5wcmVzY3JpcHRpb249ODQ3ODtlLnByaW1lbW9kPTY5NztlLnByaW1lcmV2ZXJzZWQ9ODI0NTtlLnByb2R1Y3Q9ODcxOTtlLnByb2plY3RpdmU9ODk2NTtlLnByb2xvbmdlZGthbmE9MTI1NDA7ZS5wcm9wZWxsb3I9ODk4NDtlLnByb3BlcnN1YnNldD04ODM0O2UucHJvcGVyc3VwZXJzZXQ9ODgzNTtlLnByb3BvcnRpb249ODc1OTtlLnByb3BvcnRpb25hbD04NzMzO2UucHNpPTk2ODtlLnBzaWN5cmlsbGljPTExMzc7ZS5wc2lsaXBuZXVtYXRhY3lyaWxsaWNjbWI9MTE1ODtlLnBzc3F1YXJlPTEzMjMyO2UucHVoaXJhZ2FuYT0xMjQwNztlLnB1a2F0YWthbmE9MTI1MDM7ZS5wdnNxdWFyZT0xMzIzNjtlLnB3c3F1YXJlPTEzMjQyO2UucT0xMTM7ZS5xYWRldmE9MjM5MjtlLnFhZG1haGVicmV3PTE0NDg7ZS5xYWZhcmFiaWM9MTYwMjtlLnFhZmZpbmFsYXJhYmljPTY1MjM4O2UucWFmaW5pdGlhbGFyYWJpYz02NTIzOTtlLnFhZm1lZGlhbGFyYWJpYz02NTI0MDtlLnFhbWF0cz0xNDY0O2UucWFtYXRzMTA9MTQ2NDtlLnFhbWF0czFhPTE0NjQ7ZS5xYW1hdHMxYz0xNDY0O2UucWFtYXRzMjc9MTQ2NDtlLnFhbWF0czI5PTE0NjQ7ZS5xYW1hdHMzMz0xNDY0O2UucWFtYXRzZGU9MTQ2NDtlLnFhbWF0c2hlYnJldz0xNDY0O2UucWFtYXRzbmFycm93aGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5uYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFucXVhcnRlcmhlYnJldz0xNDY0O2UucWFtYXRzcWF0YW53aWRlaGVicmV3PTE0NjQ7ZS5xYW1hdHNxdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHN3aWRlaGVicmV3PTE0NjQ7ZS5xYXJuZXlwYXJhaGVicmV3PTE0Mzk7ZS5xYm9wb21vZm89MTI1NjE7ZS5xY2lyY2xlPTk0NDA7ZS5xaG9vaz02NzI7ZS5xbW9ub3NwYWNlPTY1MzYxO2UucW9mPTE1MTE7ZS5xb2ZkYWdlc2g9NjQzMjc7ZS5xb2ZkYWdlc2hoZWJyZXc9NjQzMjc7ZS5xb2ZoZWJyZXc9MTUxMTtlLnFwYXJlbj05Mzg4O2UucXVhcnRlcm5vdGU9OTgzMztlLnF1YnV0cz0xNDY3O2UucXVidXRzMTg9MTQ2NztlLnF1YnV0czI1PTE0Njc7ZS5xdWJ1dHMzMT0xNDY3O2UucXVidXRzaGVicmV3PTE0Njc7ZS5xdWJ1dHNuYXJyb3doZWJyZXc9MTQ2NztlLnF1YnV0c3F1YXJ0ZXJoZWJyZXc9MTQ2NztlLnF1YnV0c3dpZGVoZWJyZXc9MTQ2NztlLnF1ZXN0aW9uPTYzO2UucXVlc3Rpb25hcmFiaWM9MTU2NztlLnF1ZXN0aW9uYXJtZW5pYW49MTM3NDtlLnF1ZXN0aW9uZG93bj0xOTE7ZS5xdWVzdGlvbmRvd25zbWFsbD02MzQyMztlLnF1ZXN0aW9uZ3JlZWs9ODk0O2UucXVlc3Rpb25tb25vc3BhY2U9NjUzMTE7ZS5xdWVzdGlvbnNtYWxsPTYzMjk1O2UucXVvdGVkYmw9MzQ7ZS5xdW90ZWRibGJhc2U9ODIyMjtlLnF1b3RlZGJsbGVmdD04MjIwO2UucXVvdGVkYmxtb25vc3BhY2U9NjUyODI7ZS5xdW90ZWRibHByaW1lPTEyMzE4O2UucXVvdGVkYmxwcmltZXJldmVyc2VkPTEyMzE3O2UucXVvdGVkYmxyaWdodD04MjIxO2UucXVvdGVsZWZ0PTgyMTY7ZS5xdW90ZWxlZnRyZXZlcnNlZD04MjE5O2UucXVvdGVyZXZlcnNlZD04MjE5O2UucXVvdGVyaWdodD04MjE3O2UucXVvdGVyaWdodG49MzI5O2UucXVvdGVzaW5nbGJhc2U9ODIxODtlLnF1b3Rlc2luZ2xlPTM5O2UucXVvdGVzaW5nbGVtb25vc3BhY2U9NjUyODc7ZS5yPTExNDtlLnJhYXJtZW5pYW49MTQwNDtlLnJhYmVuZ2FsaT0yNDgwO2UucmFjdXRlPTM0MTtlLnJhZGV2YT0yMzUyO2UucmFkaWNhbD04NzMwO2UucmFkaWNhbGV4PTYzNzE3O2UucmFkb3ZlcnNzcXVhcmU9MTMyMzA7ZS5yYWRvdmVyc3NxdWFyZWRzcXVhcmU9MTMyMzE7ZS5yYWRzcXVhcmU9MTMyMjk7ZS5yYWZlPTE0NzE7ZS5yYWZlaGVicmV3PTE0NzE7ZS5yYWd1amFyYXRpPTI3MzY7ZS5yYWd1cm11a2hpPTI2MDg7ZS5yYWhpcmFnYW5hPTEyNDI1O2UucmFrYXRha2FuYT0xMjUyMTtlLnJha2F0YWthbmFoYWxmd2lkdGg9NjU0MzE7ZS5yYWxvd2VyZGlhZ29uYWxiZW5nYWxpPTI1NDU7ZS5yYW1pZGRsZWRpYWdvbmFsYmVuZ2FsaT0yNTQ0O2UucmFtc2hvcm49NjEyO2UucmF0aW89ODc1ODtlLnJib3BvbW9mbz0xMjU2NjtlLnJjYXJvbj0zNDU7ZS5yY2VkaWxsYT0zNDM7ZS5yY2lyY2xlPTk0NDE7ZS5yY29tbWFhY2NlbnQ9MzQzO2UucmRibGdyYXZlPTUyOTtlLnJkb3RhY2NlbnQ9Nzc2OTtlLnJkb3RiZWxvdz03NzcxO2UucmRvdGJlbG93bWFjcm9uPTc3NzM7ZS5yZWZlcmVuY2VtYXJrPTgyNTE7ZS5yZWZsZXhzdWJzZXQ9ODgzODtlLnJlZmxleHN1cGVyc2V0PTg4Mzk7ZS5yZWdpc3RlcmVkPTE3NDtlLnJlZ2lzdGVyc2Fucz02MzcyMDtlLnJlZ2lzdGVyc2VyaWY9NjMxOTQ7ZS5yZWhhcmFiaWM9MTU4NTtlLnJlaGFybWVuaWFuPTE0MDg7ZS5yZWhmaW5hbGFyYWJpYz02NTE5ODtlLnJlaGlyYWdhbmE9MTI0Mjg7ZS5yZWthdGFrYW5hPTEyNTI0O2UucmVrYXRha2FuYWhhbGZ3aWR0aD02NTQzNDtlLnJlc2g9MTUxMjtlLnJlc2hkYWdlc2hoZWJyZXc9NjQzMjg7ZS5yZXNoaGVicmV3PTE1MTI7ZS5yZXZlcnNlZHRpbGRlPTg3NjU7ZS5yZXZpYWhlYnJldz0xNDMxO2UucmV2aWFtdWdyYXNoaGVicmV3PTE0MzE7ZS5yZXZsb2dpY2Fsbm90PTg5NzY7ZS5yZmlzaGhvb2s9NjM4O2UucmZpc2hob29rcmV2ZXJzZWQ9NjM5O2UucmhhYmVuZ2FsaT0yNTI1O2UucmhhZGV2YT0yMzk3O2UucmhvPTk2MTtlLnJob29rPTYzNztlLnJob29rdHVybmVkPTYzNTtlLnJob29rdHVybmVkc3VwZXJpb3I9NjkzO2Uucmhvc3ltYm9sZ3JlZWs9MTAwOTtlLnJob3RpY2hvb2ttb2Q9NzM0O2UucmlldWxhY2lyY2xla29yZWFuPTEyOTEzO2UucmlldWxhcGFyZW5rb3JlYW49MTI4MTc7ZS5yaWV1bGNpcmNsZWtvcmVhbj0xMjg5OTtlLnJpZXVsaGlldWhrb3JlYW49MTI2MDg7ZS5yaWV1bGtpeWVva2tvcmVhbj0xMjYwMjtlLnJpZXVsa2l5ZW9rc2lvc2tvcmVhbj0xMjY0OTtlLnJpZXVsa29yZWFuPTEyNjAxO2UucmlldWxtaWV1bWtvcmVhbj0xMjYwMztlLnJpZXVscGFuc2lvc2tvcmVhbj0xMjY1MjtlLnJpZXVscGFyZW5rb3JlYW49MTI4MDM7ZS5yaWV1bHBoaWV1cGhrb3JlYW49MTI2MDc7ZS5yaWV1bHBpZXVwa29yZWFuPTEyNjA0O2UucmlldWxwaWV1cHNpb3Nrb3JlYW49MTI2NTE7ZS5yaWV1bHNpb3Nrb3JlYW49MTI2MDU7ZS5yaWV1bHRoaWV1dGhrb3JlYW49MTI2MDY7ZS5yaWV1bHRpa2V1dGtvcmVhbj0xMjY1MDtlLnJpZXVseWVvcmluaGlldWhrb3JlYW49MTI2NTM7ZS5yaWdodGFuZ2xlPTg3MzU7ZS5yaWdodHRhY2tiZWxvd2NtYj03OTM7ZS5yaWdodHRyaWFuZ2xlPTg4OTU7ZS5yaWhpcmFnYW5hPTEyNDI2O2UucmlrYXRha2FuYT0xMjUyMjtlLnJpa2F0YWthbmFoYWxmd2lkdGg9NjU0MzI7ZS5yaW5nPTczMDtlLnJpbmdiZWxvd2NtYj04MDU7ZS5yaW5nY21iPTc3ODtlLnJpbmdoYWxmbGVmdD03MDM7ZS5yaW5naGFsZmxlZnRhcm1lbmlhbj0xMzY5O2UucmluZ2hhbGZsZWZ0YmVsb3djbWI9Nzk2O2UucmluZ2hhbGZsZWZ0Y2VudGVyZWQ9NzIzO2UucmluZ2hhbGZyaWdodD03MDI7ZS5yaW5naGFsZnJpZ2h0YmVsb3djbWI9ODI1O2UucmluZ2hhbGZyaWdodGNlbnRlcmVkPTcyMjtlLnJpbnZlcnRlZGJyZXZlPTUzMTtlLnJpdHRvcnVzcXVhcmU9MTMxMzc7ZS5ybGluZWJlbG93PTc3NzU7ZS5ybG9uZ2xlZz02MzY7ZS5ybG9uZ2xlZ3R1cm5lZD02MzQ7ZS5ybW9ub3NwYWNlPTY1MzYyO2Uucm9oaXJhZ2FuYT0xMjQyOTtlLnJva2F0YWthbmE9MTI1MjU7ZS5yb2thdGFrYW5haGFsZndpZHRoPTY1NDM1O2Uucm9ydWF0aGFpPTM2MTk7ZS5ycGFyZW49OTM4OTtlLnJyYWJlbmdhbGk9MjUyNDtlLnJyYWRldmE9MjM1MztlLnJyYWd1cm11a2hpPTI2NTI7ZS5ycmVoYXJhYmljPTE2ODE7ZS5ycmVoZmluYWxhcmFiaWM9NjQzOTc7ZS5ycnZvY2FsaWNiZW5nYWxpPTI1Mjg7ZS5ycnZvY2FsaWNkZXZhPTI0MDA7ZS5ycnZvY2FsaWNndWphcmF0aT0yNzg0O2UucnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTAwO2UucnJ2b2NhbGljdm93ZWxzaWduZGV2YT0yMzcyO2UucnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NjtlLnJzdXBlcmlvcj02MzIxNztlLnJ0YmxvY2s9OTYxNjtlLnJ0dXJuZWQ9NjMzO2UucnR1cm5lZHN1cGVyaW9yPTY5MjtlLnJ1aGlyYWdhbmE9MTI0Mjc7ZS5ydWthdGFrYW5hPTEyNTIzO2UucnVrYXRha2FuYWhhbGZ3aWR0aD02NTQzMztlLnJ1cGVlbWFya2JlbmdhbGk9MjU0NjtlLnJ1cGVlc2lnbmJlbmdhbGk9MjU0NztlLnJ1cGlhaD02MzE5NztlLnJ1dGhhaT0zNjIwO2UucnZvY2FsaWNiZW5nYWxpPTI0NDM7ZS5ydm9jYWxpY2RldmE9MjMxNTtlLnJ2b2NhbGljZ3VqYXJhdGk9MjY5OTtlLnJ2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNDk5O2UucnZvY2FsaWN2b3dlbHNpZ25kZXZhPTIzNzE7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmd1amFyYXRpPTI3NTU7ZS5zPTExNTtlLnNhYmVuZ2FsaT0yNDg4O2Uuc2FjdXRlPTM0NztlLnNhY3V0ZWRvdGFjY2VudD03NzgxO2Uuc2FkYXJhYmljPTE1ODk7ZS5zYWRldmE9MjM2MDtlLnNhZGZpbmFsYXJhYmljPTY1MjEwO2Uuc2FkaW5pdGlhbGFyYWJpYz02NTIxMTtlLnNhZG1lZGlhbGFyYWJpYz02NTIxMjtlLnNhZ3VqYXJhdGk9Mjc0NDtlLnNhZ3VybXVraGk9MjYxNjtlLnNhaGlyYWdhbmE9MTIzNzM7ZS5zYWthdGFrYW5hPTEyNDY5O2Uuc2FrYXRha2FuYWhhbGZ3aWR0aD02NTQwMztlLnNhbGxhbGxhaG91YWxheWhld2FzYWxsYW1hcmFiaWM9NjUwMTg7ZS5zYW1la2g9MTUwNTtlLnNhbWVraGRhZ2VzaD02NDMyMTtlLnNhbWVraGRhZ2VzaGhlYnJldz02NDMyMTtlLnNhbWVraGhlYnJldz0xNTA1O2Uuc2FyYWFhdGhhaT0zNjM0O2Uuc2FyYWFldGhhaT0zNjQ5O2Uuc2FyYWFpbWFpbWFsYWl0aGFpPTM2NTI7ZS5zYXJhYWltYWltdWFudGhhaT0zNjUxO2Uuc2FyYWFtdGhhaT0zNjM1O2Uuc2FyYWF0aGFpPTM2MzI7ZS5zYXJhZXRoYWk9MzY0ODtlLnNhcmFpaWxlZnR0aGFpPTYzNjIyO2Uuc2FyYWlpdGhhaT0zNjM3O2Uuc2FyYWlsZWZ0dGhhaT02MzYyMTtlLnNhcmFpdGhhaT0zNjM2O2Uuc2FyYW90aGFpPTM2NTA7ZS5zYXJhdWVlbGVmdHRoYWk9NjM2MjQ7ZS5zYXJhdWVldGhhaT0zNjM5O2Uuc2FyYXVlbGVmdHRoYWk9NjM2MjM7ZS5zYXJhdWV0aGFpPTM2Mzg7ZS5zYXJhdXRoYWk9MzY0MDtlLnNhcmF1dXRoYWk9MzY0MTtlLnNib3BvbW9mbz0xMjU2OTtlLnNjYXJvbj0zNTM7ZS5zY2Fyb25kb3RhY2NlbnQ9Nzc4MztlLnNjZWRpbGxhPTM1MTtlLnNjaHdhPTYwMTtlLnNjaHdhY3lyaWxsaWM9MTI0MTtlLnNjaHdhZGllcmVzaXNjeXJpbGxpYz0xMjQzO2Uuc2Nod2Fob29rPTYwMjtlLnNjaXJjbGU9OTQ0MjtlLnNjaXJjdW1mbGV4PTM0OTtlLnNjb21tYWFjY2VudD01Mzc7ZS5zZG90YWNjZW50PTc3Nzc7ZS5zZG90YmVsb3c9Nzc3OTtlLnNkb3RiZWxvd2RvdGFjY2VudD03Nzg1O2Uuc2VhZ3VsbGJlbG93Y21iPTgyODtlLnNlY29uZD04MjQzO2Uuc2Vjb25kdG9uZWNoaW5lc2U9NzE0O2Uuc2VjdGlvbj0xNjc7ZS5zZWVuYXJhYmljPTE1ODc7ZS5zZWVuZmluYWxhcmFiaWM9NjUyMDI7ZS5zZWVuaW5pdGlhbGFyYWJpYz02NTIwMztlLnNlZW5tZWRpYWxhcmFiaWM9NjUyMDQ7ZS5zZWdvbD0xNDYyO2Uuc2Vnb2wxMz0xNDYyO2Uuc2Vnb2wxZj0xNDYyO2Uuc2Vnb2wyYz0xNDYyO2Uuc2Vnb2xoZWJyZXc9MTQ2MjtlLnNlZ29sbmFycm93aGVicmV3PTE0NjI7ZS5zZWdvbHF1YXJ0ZXJoZWJyZXc9MTQ2MjtlLnNlZ29sdGFoZWJyZXc9MTQyNjtlLnNlZ29sd2lkZWhlYnJldz0xNDYyO2Uuc2VoYXJtZW5pYW49MTQwNTtlLnNlaGlyYWdhbmE9MTIzNzk7ZS5zZWthdGFrYW5hPTEyNDc1O2Uuc2VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNjtlLnNlbWljb2xvbj01OTtlLnNlbWljb2xvbmFyYWJpYz0xNTYzO2Uuc2VtaWNvbG9ubW9ub3NwYWNlPTY1MzA3O2Uuc2VtaWNvbG9uc21hbGw9NjUxMDg7ZS5zZW1pdm9pY2VkbWFya2thbmE9MTI0NDQ7ZS5zZW1pdm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzk7ZS5zZW50aXNxdWFyZT0xMzA5MDtlLnNlbnRvc3F1YXJlPTEzMDkxO2Uuc2V2ZW49NTU7ZS5zZXZlbmFyYWJpYz0xNjM5O2Uuc2V2ZW5iZW5nYWxpPTI1NDE7ZS5zZXZlbmNpcmNsZT05MzE4O2Uuc2V2ZW5jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI4O2Uuc2V2ZW5kZXZhPTI0MTM7ZS5zZXZlbmVpZ2h0aHM9ODU0MjtlLnNldmVuZ3VqYXJhdGk9Mjc5NztlLnNldmVuZ3VybXVraGk9MjY2OTtlLnNldmVuaGFja2FyYWJpYz0xNjM5O2Uuc2V2ZW5oYW5nemhvdT0xMjMyNztlLnNldmVuaWRlb2dyYXBoaWNwYXJlbj0xMjgzODtlLnNldmVuaW5mZXJpb3I9ODMyNztlLnNldmVubW9ub3NwYWNlPTY1MzAzO2Uuc2V2ZW5vbGRzdHlsZT02MzI4NztlLnNldmVucGFyZW49OTMzODtlLnNldmVucGVyaW9kPTkzNTg7ZS5zZXZlbnBlcnNpYW49MTc4MztlLnNldmVucm9tYW49ODU2NjtlLnNldmVuc3VwZXJpb3I9ODMxMTtlLnNldmVudGVlbmNpcmNsZT05MzI4O2Uuc2V2ZW50ZWVucGFyZW49OTM0ODtlLnNldmVudGVlbnBlcmlvZD05MzY4O2Uuc2V2ZW50aGFpPTM2NzE7ZS5zZnRoeXBoZW49MTczO2Uuc2hhYXJtZW5pYW49MTM5OTtlLnNoYWJlbmdhbGk9MjQ4NjtlLnNoYWN5cmlsbGljPTEwOTY7ZS5zaGFkZGFhcmFiaWM9MTYxNztlLnNoYWRkYWRhbW1hYXJhYmljPTY0NjA5O2Uuc2hhZGRhZGFtbWF0YW5hcmFiaWM9NjQ2MDY7ZS5zaGFkZGFmYXRoYWFyYWJpYz02NDYwODtlLnNoYWRkYWthc3JhYXJhYmljPTY0NjEwO2Uuc2hhZGRha2FzcmF0YW5hcmFiaWM9NjQ2MDc7ZS5zaGFkZT05NjE4O2Uuc2hhZGVkYXJrPTk2MTk7ZS5zaGFkZWxpZ2h0PTk2MTc7ZS5zaGFkZW1lZGl1bT05NjE4O2Uuc2hhZGV2YT0yMzU4O2Uuc2hhZ3VqYXJhdGk9Mjc0MjtlLnNoYWd1cm11a2hpPTI2MTQ7ZS5zaGFsc2hlbGV0aGVicmV3PTE0Mjc7ZS5zaGJvcG9tb2ZvPTEyNTY1O2Uuc2hjaGFjeXJpbGxpYz0xMDk3O2Uuc2hlZW5hcmFiaWM9MTU4ODtlLnNoZWVuZmluYWxhcmFiaWM9NjUyMDY7ZS5zaGVlbmluaXRpYWxhcmFiaWM9NjUyMDc7ZS5zaGVlbm1lZGlhbGFyYWJpYz02NTIwODtlLnNoZWljb3B0aWM9OTk1O2Uuc2hlcWVsPTgzNjI7ZS5zaGVxZWxoZWJyZXc9ODM2MjtlLnNoZXZhPTE0NTY7ZS5zaGV2YTExNT0xNDU2O2Uuc2hldmExNT0xNDU2O2Uuc2hldmEyMj0xNDU2O2Uuc2hldmEyZT0xNDU2O2Uuc2hldmFoZWJyZXc9MTQ1NjtlLnNoZXZhbmFycm93aGVicmV3PTE0NTY7ZS5zaGV2YXF1YXJ0ZXJoZWJyZXc9MTQ1NjtlLnNoZXZhd2lkZWhlYnJldz0xNDU2O2Uuc2hoYWN5cmlsbGljPTEyMTE7ZS5zaGltYWNvcHRpYz0xMDA1O2Uuc2hpbj0xNTEzO2Uuc2hpbmRhZ2VzaD02NDMyOTtlLnNoaW5kYWdlc2hoZWJyZXc9NjQzMjk7ZS5zaGluZGFnZXNoc2hpbmRvdD02NDMwMDtlLnNoaW5kYWdlc2hzaGluZG90aGVicmV3PTY0MzAwO2Uuc2hpbmRhZ2VzaHNpbmRvdD02NDMwMTtlLnNoaW5kYWdlc2hzaW5kb3RoZWJyZXc9NjQzMDE7ZS5zaGluZG90aGVicmV3PTE0NzM7ZS5zaGluaGVicmV3PTE1MTM7ZS5zaGluc2hpbmRvdD02NDI5ODtlLnNoaW5zaGluZG90aGVicmV3PTY0Mjk4O2Uuc2hpbnNpbmRvdD02NDI5OTtlLnNoaW5zaW5kb3RoZWJyZXc9NjQyOTk7ZS5zaG9vaz02NDI7ZS5zaWdtYT05NjM7ZS5zaWdtYTE9OTYyO2Uuc2lnbWFmaW5hbD05NjI7ZS5zaWdtYWx1bmF0ZXN5bWJvbGdyZWVrPTEwMTA7ZS5zaWhpcmFnYW5hPTEyMzc1O2Uuc2lrYXRha2FuYT0xMjQ3MTtlLnNpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDQ7ZS5zaWx1cWhlYnJldz0xNDY5O2Uuc2lsdXFsZWZ0aGVicmV3PTE0Njk7ZS5zaW1pbGFyPTg3NjQ7ZS5zaW5kb3RoZWJyZXc9MTQ3NDtlLnNpb3NhY2lyY2xla29yZWFuPTEyOTE2O2Uuc2lvc2FwYXJlbmtvcmVhbj0xMjgyMDtlLnNpb3NjaWV1Y2tvcmVhbj0xMjY3MDtlLnNpb3NjaXJjbGVrb3JlYW49MTI5MDI7ZS5zaW9za2l5ZW9ra29yZWFuPTEyNjY2O2Uuc2lvc2tvcmVhbj0xMjYxMztlLnNpb3NuaWV1bmtvcmVhbj0xMjY2NztlLnNpb3NwYXJlbmtvcmVhbj0xMjgwNjtlLnNpb3NwaWV1cGtvcmVhbj0xMjY2OTtlLnNpb3N0aWtldXRrb3JlYW49MTI2Njg7ZS5zaXg9NTQ7ZS5zaXhhcmFiaWM9MTYzODtlLnNpeGJlbmdhbGk9MjU0MDtlLnNpeGNpcmNsZT05MzE3O2Uuc2l4Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNztlLnNpeGRldmE9MjQxMjtlLnNpeGd1amFyYXRpPTI3OTY7ZS5zaXhndXJtdWtoaT0yNjY4O2Uuc2l4aGFja2FyYWJpYz0xNjM4O2Uuc2l4aGFuZ3pob3U9MTIzMjY7ZS5zaXhpZGVvZ3JhcGhpY3BhcmVuPTEyODM3O2Uuc2l4aW5mZXJpb3I9ODMyNjtlLnNpeG1vbm9zcGFjZT02NTMwMjtlLnNpeG9sZHN0eWxlPTYzMjg2O2Uuc2l4cGFyZW49OTMzNztlLnNpeHBlcmlvZD05MzU3O2Uuc2l4cGVyc2lhbj0xNzgyO2Uuc2l4cm9tYW49ODU2NTtlLnNpeHN1cGVyaW9yPTgzMTA7ZS5zaXh0ZWVuY2lyY2xlPTkzMjc7ZS5zaXh0ZWVuY3VycmVuY3lkZW5vbWluYXRvcmJlbmdhbGk9MjU1MztlLnNpeHRlZW5wYXJlbj05MzQ3O2Uuc2l4dGVlbnBlcmlvZD05MzY3O2Uuc2l4dGhhaT0zNjcwO2Uuc2xhc2g9NDc7ZS5zbGFzaG1vbm9zcGFjZT02NTI5NTtlLnNsb25nPTM4MztlLnNsb25nZG90YWNjZW50PTc4MzU7ZS5zbWlsZWZhY2U9OTc4NjtlLnNtb25vc3BhY2U9NjUzNjM7ZS5zb2ZwYXN1cWhlYnJldz0xNDc1O2Uuc29mdGh5cGhlbj0xNzM7ZS5zb2Z0c2lnbmN5cmlsbGljPTExMDA7ZS5zb2hpcmFnYW5hPTEyMzgxO2Uuc29rYXRha2FuYT0xMjQ3NztlLnNva2F0YWthbmFoYWxmd2lkdGg9NjU0MDc7ZS5zb2xpZHVzbG9uZ292ZXJsYXljbWI9ODI0O2Uuc29saWR1c3Nob3J0b3ZlcmxheWNtYj04MjM7ZS5zb3J1c2l0aGFpPTM2MjU7ZS5zb3NhbGF0aGFpPTM2MjQ7ZS5zb3NvdGhhaT0zNTk1O2Uuc29zdWF0aGFpPTM2MjY7ZS5zcGFjZT0zMjtlLnNwYWNlaGFja2FyYWJpYz0zMjtlLnNwYWRlPTk4MjQ7ZS5zcGFkZXN1aXRibGFjaz05ODI0O2Uuc3BhZGVzdWl0d2hpdGU9OTgyODtlLnNwYXJlbj05MzkwO2Uuc3F1YXJlYmVsb3djbWI9ODI3O2Uuc3F1YXJlY2M9MTMyNTI7ZS5zcXVhcmVjbT0xMzIxMztlLnNxdWFyZWRpYWdvbmFsY3Jvc3NoYXRjaGZpbGw9OTY0MTtlLnNxdWFyZWhvcml6b250YWxmaWxsPTk2MzY7ZS5zcXVhcmVrZz0xMzE5OTtlLnNxdWFyZWttPTEzMjE0O2Uuc3F1YXJla21jYXBpdGFsPTEzMjYyO2Uuc3F1YXJlbG49MTMyNjU7ZS5zcXVhcmVsb2c9MTMyNjY7ZS5zcXVhcmVtZz0xMzE5ODtlLnNxdWFyZW1pbD0xMzI2OTtlLnNxdWFyZW1tPTEzMjEyO2Uuc3F1YXJlbXNxdWFyZWQ9MTMyMTc7ZS5zcXVhcmVvcnRob2dvbmFsY3Jvc3NoYXRjaGZpbGw9OTYzODtlLnNxdWFyZXVwcGVybGVmdHRvbG93ZXJyaWdodGZpbGw9OTYzOTtlLnNxdWFyZXVwcGVycmlnaHR0b2xvd2VybGVmdGZpbGw9OTY0MDtlLnNxdWFyZXZlcnRpY2FsZmlsbD05NjM3O2Uuc3F1YXJld2hpdGV3aXRoc21hbGxibGFjaz05NjM1O2Uuc3JzcXVhcmU9MTMyNzU7ZS5zc2FiZW5nYWxpPTI0ODc7ZS5zc2FkZXZhPTIzNTk7ZS5zc2FndWphcmF0aT0yNzQzO2Uuc3NhbmdjaWV1Y2tvcmVhbj0xMjYxNztlLnNzYW5naGlldWhrb3JlYW49MTI2Nzc7ZS5zc2FuZ2lldW5na29yZWFuPTEyNjcyO2Uuc3NhbmdraXllb2trb3JlYW49MTI1OTQ7ZS5zc2FuZ25pZXVua29yZWFuPTEyNjQ1O2Uuc3NhbmdwaWV1cGtvcmVhbj0xMjYxMTtlLnNzYW5nc2lvc2tvcmVhbj0xMjYxNDtlLnNzYW5ndGlrZXV0a29yZWFuPTEyNjAwO2Uuc3N1cGVyaW9yPTYzMjE4O2Uuc3Rlcmxpbmc9MTYzO2Uuc3Rlcmxpbmdtb25vc3BhY2U9NjU1MDU7ZS5zdHJva2Vsb25nb3ZlcmxheWNtYj04MjI7ZS5zdHJva2VzaG9ydG92ZXJsYXljbWI9ODIxO2Uuc3Vic2V0PTg4MzQ7ZS5zdWJzZXRub3RlcXVhbD04ODQyO2Uuc3Vic2V0b3JlcXVhbD04ODM4O2Uuc3VjY2VlZHM9ODgyNztlLnN1Y2h0aGF0PTg3MTU7ZS5zdWhpcmFnYW5hPTEyMzc3O2Uuc3VrYXRha2FuYT0xMjQ3MztlLnN1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDU7ZS5zdWt1bmFyYWJpYz0xNjE4O2Uuc3VtbWF0aW9uPTg3MjE7ZS5zdW49OTc4ODtlLnN1cGVyc2V0PTg4MzU7ZS5zdXBlcnNldG5vdGVxdWFsPTg4NDM7ZS5zdXBlcnNldG9yZXF1YWw9ODgzOTtlLnN2c3F1YXJlPTEzMjc2O2Uuc3lvdXdhZXJhc3F1YXJlPTEzMTgwO2UudD0xMTY7ZS50YWJlbmdhbGk9MjQ2ODtlLnRhY2tkb3duPTg4Njg7ZS50YWNrbGVmdD04ODY3O2UudGFkZXZhPTIzNDA7ZS50YWd1amFyYXRpPTI3MjQ7ZS50YWd1cm11a2hpPTI1OTY7ZS50YWhhcmFiaWM9MTU5MTtlLnRhaGZpbmFsYXJhYmljPTY1MjE4O2UudGFoaW5pdGlhbGFyYWJpYz02NTIxOTtlLnRhaGlyYWdhbmE9MTIzODM7ZS50YWhtZWRpYWxhcmFiaWM9NjUyMjA7ZS50YWlzeW91ZXJhc3F1YXJlPTEzMTgxO2UudGFrYXRha2FuYT0xMjQ3OTtlLnRha2F0YWthbmFoYWxmd2lkdGg9NjU0MDg7ZS50YXR3ZWVsYXJhYmljPTE2MDA7ZS50YXU9OTY0O2UudGF2PTE1MTQ7ZS50YXZkYWdlcz02NDMzMDtlLnRhdmRhZ2VzaD02NDMzMDtlLnRhdmRhZ2VzaGhlYnJldz02NDMzMDtlLnRhdmhlYnJldz0xNTE0O2UudGJhcj0zNTk7ZS50Ym9wb21vZm89MTI1NTQ7ZS50Y2Fyb249MzU3O2UudGNjdXJsPTY4MDtlLnRjZWRpbGxhPTM1NTtlLnRjaGVoYXJhYmljPTE2NzA7ZS50Y2hlaGZpbmFsYXJhYmljPTY0Mzc5O2UudGNoZWhpbml0aWFsYXJhYmljPTY0MzgwO2UudGNoZWhtZWRpYWxhcmFiaWM9NjQzODE7ZS50Y2lyY2xlPTk0NDM7ZS50Y2lyY3VtZmxleGJlbG93PTc3OTM7ZS50Y29tbWFhY2NlbnQ9MzU1O2UudGRpZXJlc2lzPTc4MzE7ZS50ZG90YWNjZW50PTc3ODc7ZS50ZG90YmVsb3c9Nzc4OTtlLnRlY3lyaWxsaWM9MTA5MDtlLnRlZGVzY2VuZGVyY3lyaWxsaWM9MTE5NztlLnRlaGFyYWJpYz0xNTc4O2UudGVoZmluYWxhcmFiaWM9NjUxNzQ7ZS50ZWhoYWhpbml0aWFsYXJhYmljPTY0Njc0O2UudGVoaGFoaXNvbGF0ZWRhcmFiaWM9NjQ1MjQ7ZS50ZWhpbml0aWFsYXJhYmljPTY1MTc1O2UudGVoaXJhZ2FuYT0xMjM5MDtlLnRlaGplZW1pbml0aWFsYXJhYmljPTY0NjczO2UudGVoamVlbWlzb2xhdGVkYXJhYmljPTY0NTIzO2UudGVobWFyYnV0YWFyYWJpYz0xNTc3O2UudGVobWFyYnV0YWZpbmFsYXJhYmljPTY1MTcyO2UudGVobWVkaWFsYXJhYmljPTY1MTc2O2UudGVobWVlbWluaXRpYWxhcmFiaWM9NjQ2NzY7ZS50ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjY7ZS50ZWhub29uZmluYWxhcmFiaWM9NjQ2Mjc7ZS50ZWthdGFrYW5hPTEyNDg2O2UudGVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMTtlLnRlbGVwaG9uZT04NDgxO2UudGVsZXBob25lYmxhY2s9OTc0MjtlLnRlbGlzaGFnZWRvbGFoZWJyZXc9MTQ0MDtlLnRlbGlzaGFxZXRhbmFoZWJyZXc9MTQ0OTtlLnRlbmNpcmNsZT05MzIxO2UudGVuaWRlb2dyYXBoaWNwYXJlbj0xMjg0MTtlLnRlbnBhcmVuPTkzNDE7ZS50ZW5wZXJpb2Q9OTM2MTtlLnRlbnJvbWFuPTg1Njk7ZS50ZXNoPTY3OTtlLnRldD0xNDk2O2UudGV0ZGFnZXNoPTY0MzEyO2UudGV0ZGFnZXNoaGVicmV3PTY0MzEyO2UudGV0aGVicmV3PTE0OTY7ZS50ZXRzZWN5cmlsbGljPTEyMDU7ZS50ZXZpcmhlYnJldz0xNDM1O2UudGV2aXJsZWZ0aGVicmV3PTE0MzU7ZS50aGFiZW5nYWxpPTI0Njk7ZS50aGFkZXZhPTIzNDE7ZS50aGFndWphcmF0aT0yNzI1O2UudGhhZ3VybXVraGk9MjU5NztlLnRoYWxhcmFiaWM9MTU4NDtlLnRoYWxmaW5hbGFyYWJpYz02NTE5NjtlLnRoYW50aGFraGF0bG93bGVmdHRoYWk9NjM2NDA7ZS50aGFudGhha2hhdGxvd3JpZ2h0dGhhaT02MzYzOTtlLnRoYW50aGFraGF0dGhhaT0zNjYwO2UudGhhbnRoYWtoYXR1cHBlcmxlZnR0aGFpPTYzNjM4O2UudGhlaGFyYWJpYz0xNTc5O2UudGhlaGZpbmFsYXJhYmljPTY1MTc4O2UudGhlaGluaXRpYWxhcmFiaWM9NjUxNzk7ZS50aGVobWVkaWFsYXJhYmljPTY1MTgwO2UudGhlcmVleGlzdHM9ODcwNztlLnRoZXJlZm9yZT04NzU2O2UudGhldGE9OTUyO2UudGhldGExPTk3NztlLnRoZXRhc3ltYm9sZ3JlZWs9OTc3O2UudGhpZXV0aGFjaXJjbGVrb3JlYW49MTI5MjE7ZS50aGlldXRoYXBhcmVua29yZWFuPTEyODI1O2UudGhpZXV0aGNpcmNsZWtvcmVhbj0xMjkwNztlLnRoaWV1dGhrb3JlYW49MTI2MjA7ZS50aGlldXRocGFyZW5rb3JlYW49MTI4MTE7ZS50aGlydGVlbmNpcmNsZT05MzI0O2UudGhpcnRlZW5wYXJlbj05MzQ0O2UudGhpcnRlZW5wZXJpb2Q9OTM2NDtlLnRob25hbmdtb250aG90aGFpPTM2MDE7ZS50aG9vaz00Mjk7ZS50aG9waHV0aGFvdGhhaT0zNjAyO2UudGhvcm49MjU0O2UudGhvdGhhaGFudGhhaT0zNjA3O2UudGhvdGhhbnRoYWk9MzYwMDtlLnRob3Rob25ndGhhaT0zNjA4O2UudGhvdGh1bmd0aGFpPTM2MDY7ZS50aG91c2FuZGN5cmlsbGljPTExNTQ7ZS50aG91c2FuZHNzZXBhcmF0b3JhcmFiaWM9MTY0NDtlLnRob3VzYW5kc3NlcGFyYXRvcnBlcnNpYW49MTY0NDtlLnRocmVlPTUxO2UudGhyZWVhcmFiaWM9MTYzNTtlLnRocmVlYmVuZ2FsaT0yNTM3O2UudGhyZWVjaXJjbGU9OTMxNDtlLnRocmVlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNDtlLnRocmVlZGV2YT0yNDA5O2UudGhyZWVlaWdodGhzPTg1NDA7ZS50aHJlZWd1amFyYXRpPTI3OTM7ZS50aHJlZWd1cm11a2hpPTI2NjU7ZS50aHJlZWhhY2thcmFiaWM9MTYzNTtlLnRocmVlaGFuZ3pob3U9MTIzMjM7ZS50aHJlZWlkZW9ncmFwaGljcGFyZW49MTI4MzQ7ZS50aHJlZWluZmVyaW9yPTgzMjM7ZS50aHJlZW1vbm9zcGFjZT02NTI5OTtlLnRocmVlbnVtZXJhdG9yYmVuZ2FsaT0yNTUwO2UudGhyZWVvbGRzdHlsZT02MzI4MztlLnRocmVlcGFyZW49OTMzNDtlLnRocmVlcGVyaW9kPTkzNTQ7ZS50aHJlZXBlcnNpYW49MTc3OTtlLnRocmVlcXVhcnRlcnM9MTkwO2UudGhyZWVxdWFydGVyc2VtZGFzaD02MzE5ODtlLnRocmVlcm9tYW49ODU2MjtlLnRocmVlc3VwZXJpb3I9MTc5O2UudGhyZWV0aGFpPTM2Njc7ZS50aHpzcXVhcmU9MTMyMDQ7ZS50aWhpcmFnYW5hPTEyMzg1O2UudGlrYXRha2FuYT0xMjQ4MTtlLnRpa2F0YWthbmFoYWxmd2lkdGg9NjU0MDk7ZS50aWtldXRhY2lyY2xla29yZWFuPTEyOTEyO2UudGlrZXV0YXBhcmVua29yZWFuPTEyODE2O2UudGlrZXV0Y2lyY2xla29yZWFuPTEyODk4O2UudGlrZXV0a29yZWFuPTEyNTk5O2UudGlrZXV0cGFyZW5rb3JlYW49MTI4MDI7ZS50aWxkZT03MzI7ZS50aWxkZWJlbG93Y21iPTgxNjtlLnRpbGRlY21iPTc3MTtlLnRpbGRlY29tYj03NzE7ZS50aWxkZWRvdWJsZWNtYj04NjQ7ZS50aWxkZW9wZXJhdG9yPTg3NjQ7ZS50aWxkZW92ZXJsYXljbWI9ODIwO2UudGlsZGV2ZXJ0aWNhbGNtYj04MzA7ZS50aW1lc2NpcmNsZT04ODU1O2UudGlwZWhhaGVicmV3PTE0MzA7ZS50aXBlaGFsZWZ0aGVicmV3PTE0MzA7ZS50aXBwaWd1cm11a2hpPTI2NzI7ZS50aXRsb2N5cmlsbGljY21iPTExNTU7ZS50aXduYXJtZW5pYW49MTQwNztlLnRsaW5lYmVsb3c9Nzc5MTtlLnRtb25vc3BhY2U9NjUzNjQ7ZS50b2FybWVuaWFuPTEzODU7ZS50b2hpcmFnYW5hPTEyMzkyO2UudG9rYXRha2FuYT0xMjQ4ODtlLnRva2F0YWthbmFoYWxmd2lkdGg9NjU0MTI7ZS50b25lYmFyZXh0cmFoaWdobW9kPTc0MTtlLnRvbmViYXJleHRyYWxvd21vZD03NDU7ZS50b25lYmFyaGlnaG1vZD03NDI7ZS50b25lYmFybG93bW9kPTc0NDtlLnRvbmViYXJtaWRtb2Q9NzQzO2UudG9uZWZpdmU9NDQ1O2UudG9uZXNpeD0zODk7ZS50b25ldHdvPTQyNDtlLnRvbm9zPTkwMDtlLnRvbnNxdWFyZT0xMzA5NTtlLnRvcGF0YWt0aGFpPTM1OTk7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMDg7ZS50b3J0b2lzZXNoZWxsYnJhY2tldGxlZnRzbWFsbD02NTExNztlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHZlcnRpY2FsPTY1MDgxO2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMwOTtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHRzbWFsbD02NTExODtlLnRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4MjtlLnRvdGFvdGhhaT0zNjA1O2UudHBhbGF0YWxob29rPTQyNztlLnRwYXJlbj05MzkxO2UudHJhZGVtYXJrPTg0ODI7ZS50cmFkZW1hcmtzYW5zPTYzNzIyO2UudHJhZGVtYXJrc2VyaWY9NjMxOTU7ZS50cmV0cm9mbGV4aG9vaz02NDg7ZS50cmlhZ2RuPTk2NjA7ZS50cmlhZ2xmPTk2Njg7ZS50cmlhZ3J0PTk2NTg7ZS50cmlhZ3VwPTk2NTA7ZS50cz02Nzg7ZS50c2FkaT0xNTEwO2UudHNhZGlkYWdlc2g9NjQzMjY7ZS50c2FkaWRhZ2VzaGhlYnJldz02NDMyNjtlLnRzYWRpaGVicmV3PTE1MTA7ZS50c2VjeXJpbGxpYz0xMDk0O2UudHNlcmU9MTQ2MTtlLnRzZXJlMTI9MTQ2MTtlLnRzZXJlMWU9MTQ2MTtlLnRzZXJlMmI9MTQ2MTtlLnRzZXJlaGVicmV3PTE0NjE7ZS50c2VyZW5hcnJvd2hlYnJldz0xNDYxO2UudHNlcmVxdWFydGVyaGVicmV3PTE0NjE7ZS50c2VyZXdpZGVoZWJyZXc9MTQ2MTtlLnRzaGVjeXJpbGxpYz0xMTE1O2UudHN1cGVyaW9yPTYzMjE5O2UudHRhYmVuZ2FsaT0yNDYzO2UudHRhZGV2YT0yMzM1O2UudHRhZ3VqYXJhdGk9MjcxOTtlLnR0YWd1cm11a2hpPTI1OTE7ZS50dGVoYXJhYmljPTE2NTc7ZS50dGVoZmluYWxhcmFiaWM9NjQzNTk7ZS50dGVoaW5pdGlhbGFyYWJpYz02NDM2MDtlLnR0ZWhtZWRpYWxhcmFiaWM9NjQzNjE7ZS50dGhhYmVuZ2FsaT0yNDY0O2UudHRoYWRldmE9MjMzNjtlLnR0aGFndWphcmF0aT0yNzIwO2UudHRoYWd1cm11a2hpPTI1OTI7ZS50dHVybmVkPTY0NztlLnR1aGlyYWdhbmE9MTIzODg7ZS50dWthdGFrYW5hPTEyNDg0O2UudHVrYXRha2FuYWhhbGZ3aWR0aD02NTQxMDtlLnR1c21hbGxoaXJhZ2FuYT0xMjM4NztlLnR1c21hbGxrYXRha2FuYT0xMjQ4MztlLnR1c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM5MTtlLnR3ZWx2ZWNpcmNsZT05MzIzO2UudHdlbHZlcGFyZW49OTM0MztlLnR3ZWx2ZXBlcmlvZD05MzYzO2UudHdlbHZlcm9tYW49ODU3MTtlLnR3ZW50eWNpcmNsZT05MzMxO2UudHdlbnR5aGFuZ3pob3U9MjEzMTY7ZS50d2VudHlwYXJlbj05MzUxO2UudHdlbnR5cGVyaW9kPTkzNzE7ZS50d289NTA7ZS50d29hcmFiaWM9MTYzNDtlLnR3b2JlbmdhbGk9MjUzNjtlLnR3b2NpcmNsZT05MzEzO2UudHdvY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyMztlLnR3b2RldmE9MjQwODtlLnR3b2RvdGVubGVhZGVyPTgyMjk7ZS50d29kb3RsZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcnZlcnRpY2FsPTY1MDcyO2UudHdvZ3VqYXJhdGk9Mjc5MjtlLnR3b2d1cm11a2hpPTI2NjQ7ZS50d29oYWNrYXJhYmljPTE2MzQ7ZS50d29oYW5nemhvdT0xMjMyMjtlLnR3b2lkZW9ncmFwaGljcGFyZW49MTI4MzM7ZS50d29pbmZlcmlvcj04MzIyO2UudHdvbW9ub3NwYWNlPTY1Mjk4O2UudHdvbnVtZXJhdG9yYmVuZ2FsaT0yNTQ5O2UudHdvb2xkc3R5bGU9NjMyODI7ZS50d29wYXJlbj05MzMzO2UudHdvcGVyaW9kPTkzNTM7ZS50d29wZXJzaWFuPTE3Nzg7ZS50d29yb21hbj04NTYxO2UudHdvc3Ryb2tlPTQ0MztlLnR3b3N1cGVyaW9yPTE3ODtlLnR3b3RoYWk9MzY2NjtlLnR3b3RoaXJkcz04NTMyO2UudT0xMTc7ZS51YWN1dGU9MjUwO2UudWJhcj02NDk7ZS51YmVuZ2FsaT0yNDQxO2UudWJvcG9tb2ZvPTEyNTg0O2UudWJyZXZlPTM2NTtlLnVjYXJvbj00Njg7ZS51Y2lyY2xlPTk0NDQ7ZS51Y2lyY3VtZmxleD0yNTE7ZS51Y2lyY3VtZmxleGJlbG93PTc3OTk7ZS51Y3lyaWxsaWM9MTA5MTtlLnVkYXR0YWRldmE9MjM4NTtlLnVkYmxhY3V0ZT0zNjk7ZS51ZGJsZ3JhdmU9NTMzO2UudWRldmE9MjMxMztlLnVkaWVyZXNpcz0yNTI7ZS51ZGllcmVzaXNhY3V0ZT00NzI7ZS51ZGllcmVzaXNiZWxvdz03Nzk1O2UudWRpZXJlc2lzY2Fyb249NDc0O2UudWRpZXJlc2lzY3lyaWxsaWM9MTI2NTtlLnVkaWVyZXNpc2dyYXZlPTQ3NjtlLnVkaWVyZXNpc21hY3Jvbj00NzA7ZS51ZG90YmVsb3c9NzkwOTtlLnVncmF2ZT0yNDk7ZS51Z3VqYXJhdGk9MjY5NztlLnVndXJtdWtoaT0yNTY5O2UudWhpcmFnYW5hPTEyMzU4O2UudWhvb2thYm92ZT03OTExO2UudWhvcm49NDMyO2UudWhvcm5hY3V0ZT03OTEzO2UudWhvcm5kb3RiZWxvdz03OTIxO2UudWhvcm5ncmF2ZT03OTE1O2UudWhvcm5ob29rYWJvdmU9NzkxNztlLnVob3JudGlsZGU9NzkxOTtlLnVodW5nYXJ1bWxhdXQ9MzY5O2UudWh1bmdhcnVtbGF1dGN5cmlsbGljPTEyNjc7ZS51aW52ZXJ0ZWRicmV2ZT01MzU7ZS51a2F0YWthbmE9MTI0NTQ7ZS51a2F0YWthbmFoYWxmd2lkdGg9NjUzOTU7ZS51a2N5cmlsbGljPTExNDU7ZS51a29yZWFuPTEyNjM2O2UudW1hY3Jvbj0zNjM7ZS51bWFjcm9uY3lyaWxsaWM9MTI2MztlLnVtYWNyb25kaWVyZXNpcz03ODAzO2UudW1hdHJhZ3VybXVraGk9MjYyNTtlLnVtb25vc3BhY2U9NjUzNjU7ZS51bmRlcnNjb3JlPTk1O2UudW5kZXJzY29yZWRibD04MjE1O2UudW5kZXJzY29yZW1vbm9zcGFjZT02NTM0MztlLnVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NTtlLnVuZGVyc2NvcmV3YXZ5PTY1MTAzO2UudW5pb249ODc0NjtlLnVuaXZlcnNhbD04NzA0O2UudW9nb25laz0zNzE7ZS51cGFyZW49OTM5MjtlLnVwYmxvY2s9OTYwMDtlLnVwcGVyZG90aGVicmV3PTE0NzY7ZS51cHNpbG9uPTk2NTtlLnVwc2lsb25kaWVyZXNpcz05NzE7ZS51cHNpbG9uZGllcmVzaXN0b25vcz05NDQ7ZS51cHNpbG9ubGF0aW49NjUwO2UudXBzaWxvbnRvbm9zPTk3MztlLnVwdGFja2JlbG93Y21iPTc5NztlLnVwdGFja21vZD03MjQ7ZS51cmFndXJtdWtoaT0yNjc1O2UudXJpbmc9MzY3O2UudXNob3J0Y3lyaWxsaWM9MTExODtlLnVzbWFsbGhpcmFnYW5hPTEyMzU3O2UudXNtYWxsa2F0YWthbmE9MTI0NTM7ZS51c21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4NTtlLnVzdHJhaWdodGN5cmlsbGljPTExOTk7ZS51c3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAxO2UudXRpbGRlPTM2MTtlLnV0aWxkZWFjdXRlPTc4MDE7ZS51dGlsZGViZWxvdz03Nzk3O2UudXViZW5nYWxpPTI0NDI7ZS51dWRldmE9MjMxNDtlLnV1Z3VqYXJhdGk9MjY5ODtlLnV1Z3VybXVraGk9MjU3MDtlLnV1bWF0cmFndXJtdWtoaT0yNjI2O2UudXV2b3dlbHNpZ25iZW5nYWxpPTI0OTg7ZS51dXZvd2Vsc2lnbmRldmE9MjM3MDtlLnV1dm93ZWxzaWduZ3VqYXJhdGk9Mjc1NDtlLnV2b3dlbHNpZ25iZW5nYWxpPTI0OTc7ZS51dm93ZWxzaWduZGV2YT0yMzY5O2UudXZvd2Vsc2lnbmd1amFyYXRpPTI3NTM7ZS52PTExODtlLnZhZGV2YT0yMzU3O2UudmFndWphcmF0aT0yNzQxO2UudmFndXJtdWtoaT0yNjEzO2UudmFrYXRha2FuYT0xMjUzNTtlLnZhdj0xNDkzO2UudmF2ZGFnZXNoPTY0MzA5O2UudmF2ZGFnZXNoNjU9NjQzMDk7ZS52YXZkYWdlc2hoZWJyZXc9NjQzMDk7ZS52YXZoZWJyZXc9MTQ5MztlLnZhdmhvbGFtPTY0MzMxO2UudmF2aG9sYW1oZWJyZXc9NjQzMzE7ZS52YXZ2YXZoZWJyZXc9MTUyMDtlLnZhdnlvZGhlYnJldz0xNTIxO2UudmNpcmNsZT05NDQ1O2UudmRvdGJlbG93PTc4MDc7ZS52ZWN5cmlsbGljPTEwNzQ7ZS52ZWhhcmFiaWM9MTcwMDtlLnZlaGZpbmFsYXJhYmljPTY0MzYzO2UudmVoaW5pdGlhbGFyYWJpYz02NDM2NDtlLnZlaG1lZGlhbGFyYWJpYz02NDM2NTtlLnZla2F0YWthbmE9MTI1Mzc7ZS52ZW51cz05NzkyO2UudmVydGljYWxiYXI9MTI0O2UudmVydGljYWxsaW5lYWJvdmVjbWI9NzgxO2UudmVydGljYWxsaW5lYmVsb3djbWI9ODA5O2UudmVydGljYWxsaW5lbG93bW9kPTcxNjtlLnZlcnRpY2FsbGluZW1vZD03MTI7ZS52ZXdhcm1lbmlhbj0xNDA2O2Uudmhvb2s9NjUxO2UudmlrYXRha2FuYT0xMjUzNjtlLnZpcmFtYWJlbmdhbGk9MjUwOTtlLnZpcmFtYWRldmE9MjM4MTtlLnZpcmFtYWd1amFyYXRpPTI3NjU7ZS52aXNhcmdhYmVuZ2FsaT0yNDM1O2UudmlzYXJnYWRldmE9MjMwNztlLnZpc2FyZ2FndWphcmF0aT0yNjkxO2Uudm1vbm9zcGFjZT02NTM2NjtlLnZvYXJtZW5pYW49MTQwMDtlLnZvaWNlZGl0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ2O2Uudm9pY2VkaXRlcmF0aW9ua2F0YWthbmE9MTI1NDI7ZS52b2ljZWRtYXJra2FuYT0xMjQ0MztlLnZvaWNlZG1hcmtrYW5haGFsZndpZHRoPTY1NDM4O2Uudm9rYXRha2FuYT0xMjUzODtlLnZwYXJlbj05MzkzO2UudnRpbGRlPTc4MDU7ZS52dHVybmVkPTY1MjtlLnZ1aGlyYWdhbmE9MTI0MzY7ZS52dWthdGFrYW5hPTEyNTMyO2Uudz0xMTk7ZS53YWN1dGU9NzgxMTtlLndhZWtvcmVhbj0xMjYzMztlLndhaGlyYWdhbmE9MTI0MzE7ZS53YWthdGFrYW5hPTEyNTI3O2Uud2FrYXRha2FuYWhhbGZ3aWR0aD02NTQzNjtlLndha29yZWFuPTEyNjMyO2Uud2FzbWFsbGhpcmFnYW5hPTEyNDMwO2Uud2FzbWFsbGthdGFrYW5hPTEyNTI2O2Uud2F0dG9zcXVhcmU9MTMxNDM7ZS53YXZlZGFzaD0xMjMxNjtlLndhdnl1bmRlcnNjb3JldmVydGljYWw9NjUwNzY7ZS53YXdhcmFiaWM9MTYwODtlLndhd2ZpbmFsYXJhYmljPTY1MjYyO2Uud2F3aGFtemFhYm92ZWFyYWJpYz0xNTcyO2Uud2F3aGFtemFhYm92ZWZpbmFsYXJhYmljPTY1MTU4O2Uud2JzcXVhcmU9MTMyNzc7ZS53Y2lyY2xlPTk0NDY7ZS53Y2lyY3VtZmxleD0zNzM7ZS53ZGllcmVzaXM9NzgxMztlLndkb3RhY2NlbnQ9NzgxNTtlLndkb3RiZWxvdz03ODE3O2Uud2VoaXJhZ2FuYT0xMjQzMztlLndlaWVyc3RyYXNzPTg0NzI7ZS53ZWthdGFrYW5hPTEyNTI5O2Uud2Vrb3JlYW49MTI2Mzg7ZS53ZW9rb3JlYW49MTI2Mzc7ZS53Z3JhdmU9NzgwOTtlLndoaXRlYnVsbGV0PTk3MDI7ZS53aGl0ZWNpcmNsZT05Njc1O2Uud2hpdGVjaXJjbGVpbnZlcnNlPTk2ODk7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0PTEyMzAyO2Uud2hpdGVjb3JuZXJicmFja2V0bGVmdHZlcnRpY2FsPTY1MDkxO2Uud2hpdGVjb3JuZXJicmFja2V0cmlnaHQ9MTIzMDM7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDkyO2Uud2hpdGVkaWFtb25kPTk2NzE7ZS53aGl0ZWRpYW1vbmRjb250YWluaW5nYmxhY2tzbWFsbGRpYW1vbmQ9OTY3MjtlLndoaXRlZG93bnBvaW50aW5nc21hbGx0cmlhbmdsZT05NjYzO2Uud2hpdGVkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYxO2Uud2hpdGVsZWZ0cG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2Njc7ZS53aGl0ZWxlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjU7ZS53aGl0ZWxlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMxMDtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRyaWdodD0xMjMxMTtlLndoaXRlcmlnaHRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1NztlLndoaXRlcmlnaHRwb2ludGluZ3RyaWFuZ2xlPTk2NTU7ZS53aGl0ZXNtYWxsc3F1YXJlPTk2NDM7ZS53aGl0ZXNtaWxpbmdmYWNlPTk3ODY7ZS53aGl0ZXNxdWFyZT05NjMzO2Uud2hpdGVzdGFyPTk3MzQ7ZS53aGl0ZXRlbGVwaG9uZT05NzQzO2Uud2hpdGV0b3J0b2lzZXNoZWxsYnJhY2tldGxlZnQ9MTIzMTI7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0cmlnaHQ9MTIzMTM7ZS53aGl0ZXVwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTM7ZS53aGl0ZXVwcG9pbnRpbmd0cmlhbmdsZT05NjUxO2Uud2loaXJhZ2FuYT0xMjQzMjtlLndpa2F0YWthbmE9MTI1Mjg7ZS53aWtvcmVhbj0xMjYzOTtlLndtb25vc3BhY2U9NjUzNjc7ZS53b2hpcmFnYW5hPTEyNDM0O2Uud29rYXRha2FuYT0xMjUzMDtlLndva2F0YWthbmFoYWxmd2lkdGg9NjUzODI7ZS53b249ODM2MTtlLndvbm1vbm9zcGFjZT02NTUxMDtlLndvd2FlbnRoYWk9MzYyMztlLndwYXJlbj05Mzk0O2Uud3Jpbmc9NzgzMjtlLndzdXBlcmlvcj02OTU7ZS53dHVybmVkPTY1MztlLnd5bm49NDQ3O2UueD0xMjA7ZS54YWJvdmVjbWI9ODI5O2UueGJvcG9tb2ZvPTEyNTYyO2UueGNpcmNsZT05NDQ3O2UueGRpZXJlc2lzPTc4MjE7ZS54ZG90YWNjZW50PTc4MTk7ZS54ZWhhcm1lbmlhbj0xMzg5O2UueGk9OTU4O2UueG1vbm9zcGFjZT02NTM2ODtlLnhwYXJlbj05Mzk1O2UueHN1cGVyaW9yPTczOTtlLnk9MTIxO2UueWFhZG9zcXVhcmU9MTMxMzQ7ZS55YWJlbmdhbGk9MjQ3OTtlLnlhY3V0ZT0yNTM7ZS55YWRldmE9MjM1MTtlLnlhZWtvcmVhbj0xMjYyNjtlLnlhZ3VqYXJhdGk9MjczNTtlLnlhZ3VybXVraGk9MjYwNztlLnlhaGlyYWdhbmE9MTI0MjA7ZS55YWthdGFrYW5hPTEyNTE2O2UueWFrYXRha2FuYWhhbGZ3aWR0aD02NTQyODtlLnlha29yZWFuPTEyNjI1O2UueWFtYWtrYW50aGFpPTM2NjI7ZS55YXNtYWxsaGlyYWdhbmE9MTI0MTk7ZS55YXNtYWxsa2F0YWthbmE9MTI1MTU7ZS55YXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODg7ZS55YXRjeXJpbGxpYz0xMTIzO2UueWNpcmNsZT05NDQ4O2UueWNpcmN1bWZsZXg9Mzc1O2UueWRpZXJlc2lzPTI1NTtlLnlkb3RhY2NlbnQ9NzgyMztlLnlkb3RiZWxvdz03OTI1O2UueWVoYXJhYmljPTE2MTA7ZS55ZWhiYXJyZWVhcmFiaWM9MTc0NjtlLnllaGJhcnJlZWZpbmFsYXJhYmljPTY0NDMxO2UueWVoZmluYWxhcmFiaWM9NjUyNjY7ZS55ZWhoYW16YWFib3ZlYXJhYmljPTE1NzQ7ZS55ZWhoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNjI7ZS55ZWhoYW16YWFib3ZlaW5pdGlhbGFyYWJpYz02NTE2MztlLnllaGhhbXphYWJvdmVtZWRpYWxhcmFiaWM9NjUxNjQ7ZS55ZWhpbml0aWFsYXJhYmljPTY1MjY3O2UueWVobWVkaWFsYXJhYmljPTY1MjY4O2UueWVobWVlbWluaXRpYWxhcmFiaWM9NjQ3MzM7ZS55ZWhtZWVtaXNvbGF0ZWRhcmFiaWM9NjQ2MDA7ZS55ZWhub29uZmluYWxhcmFiaWM9NjQ2NjA7ZS55ZWh0aHJlZWRvdHNiZWxvd2FyYWJpYz0xNzQ1O2UueWVrb3JlYW49MTI2MzA7ZS55ZW49MTY1O2UueWVubW9ub3NwYWNlPTY1NTA5O2UueWVva29yZWFuPTEyNjI5O2UueWVvcmluaGlldWhrb3JlYW49MTI2Nzg7ZS55ZXJhaGJlbnlvbW9oZWJyZXc9MTQ1MDtlLnllcmFoYmVueW9tb2xlZnRoZWJyZXc9MTQ1MDtlLnllcmljeXJpbGxpYz0xMDk5O2UueWVydWRpZXJlc2lzY3lyaWxsaWM9MTI3MztlLnllc2lldW5na29yZWFuPTEyNjczO2UueWVzaWV1bmdwYW5zaW9za29yZWFuPTEyNjc1O2UueWVzaWV1bmdzaW9za29yZWFuPTEyNjc0O2UueWV0aXZoZWJyZXc9MTQzNDtlLnlncmF2ZT03OTIzO2UueWhvb2s9NDM2O2UueWhvb2thYm92ZT03OTI3O2UueWlhcm1lbmlhbj0xMzk3O2UueWljeXJpbGxpYz0xMTExO2UueWlrb3JlYW49MTI2NDI7ZS55aW55YW5nPTk3NzU7ZS55aXduYXJtZW5pYW49MTQxMDtlLnltb25vc3BhY2U9NjUzNjk7ZS55b2Q9MTQ5NztlLnlvZGRhZ2VzaD02NDMxMztlLnlvZGRhZ2VzaGhlYnJldz02NDMxMztlLnlvZGhlYnJldz0xNDk3O2UueW9keW9kaGVicmV3PTE1MjI7ZS55b2R5b2RwYXRhaGhlYnJldz02NDI4NztlLnlvaGlyYWdhbmE9MTI0MjQ7ZS55b2lrb3JlYW49MTI2ODE7ZS55b2thdGFrYW5hPTEyNTIwO2UueW9rYXRha2FuYWhhbGZ3aWR0aD02NTQzMDtlLnlva29yZWFuPTEyNjM1O2UueW9zbWFsbGhpcmFnYW5hPTEyNDIzO2UueW9zbWFsbGthdGFrYW5hPTEyNTE5O2UueW9zbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkwO2UueW90Z3JlZWs9MTAxMTtlLnlveWFla29yZWFuPTEyNjgwO2UueW95YWtvcmVhbj0xMjY3OTtlLnlveWFrdGhhaT0zNjE4O2UueW95aW5ndGhhaT0zNTk3O2UueXBhcmVuPTkzOTY7ZS55cG9nZWdyYW1tZW5pPTg5MDtlLnlwb2dlZ3JhbW1lbmlncmVla2NtYj04Mzc7ZS55cj00MjI7ZS55cmluZz03ODMzO2UueXN1cGVyaW9yPTY5NjtlLnl0aWxkZT03OTI5O2UueXR1cm5lZD02NTQ7ZS55dWhpcmFnYW5hPTEyNDIyO2UueXVpa29yZWFuPTEyNjg0O2UueXVrYXRha2FuYT0xMjUxODtlLnl1a2F0YWthbmFoYWxmd2lkdGg9NjU0Mjk7ZS55dWtvcmVhbj0xMjY0MDtlLnl1c2JpZ2N5cmlsbGljPTExMzE7ZS55dXNiaWdpb3RpZmllZGN5cmlsbGljPTExMzM7ZS55dXNsaXR0bGVjeXJpbGxpYz0xMTI3O2UueXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYz0xMTI5O2UueXVzbWFsbGhpcmFnYW5hPTEyNDIxO2UueXVzbWFsbGthdGFrYW5hPTEyNTE3O2UueXVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg5O2UueXV5ZWtvcmVhbj0xMjY4MztlLnl1eWVva29yZWFuPTEyNjgyO2UueXlhYmVuZ2FsaT0yNTI3O2UueXlhZGV2YT0yMzk5O2Uuej0xMjI7ZS56YWFybWVuaWFuPTEzODI7ZS56YWN1dGU9Mzc4O2UuemFkZXZhPTIzOTU7ZS56YWd1cm11a2hpPTI2NTE7ZS56YWhhcmFiaWM9MTU5MjtlLnphaGZpbmFsYXJhYmljPTY1MjIyO2UuemFoaW5pdGlhbGFyYWJpYz02NTIyMztlLnphaGlyYWdhbmE9MTIzNzQ7ZS56YWhtZWRpYWxhcmFiaWM9NjUyMjQ7ZS56YWluYXJhYmljPTE1ODY7ZS56YWluZmluYWxhcmFiaWM9NjUyMDA7ZS56YWthdGFrYW5hPTEyNDcwO2UuemFxZWZnYWRvbGhlYnJldz0xNDI5O2UuemFxZWZxYXRhbmhlYnJldz0xNDI4O2UuemFycWFoZWJyZXc9MTQzMjtlLnpheWluPTE0OTQ7ZS56YXlpbmRhZ2VzaD02NDMxMDtlLnpheWluZGFnZXNoaGVicmV3PTY0MzEwO2UuemF5aW5oZWJyZXc9MTQ5NDtlLnpib3BvbW9mbz0xMjU2NztlLnpjYXJvbj0zODI7ZS56Y2lyY2xlPTk0NDk7ZS56Y2lyY3VtZmxleD03ODI1O2UuemN1cmw9NjU3O2UuemRvdD0zODA7ZS56ZG90YWNjZW50PTM4MDtlLnpkb3RiZWxvdz03ODI3O2UuemVjeXJpbGxpYz0xMDc5O2UuemVkZXNjZW5kZXJjeXJpbGxpYz0xMTc3O2UuemVkaWVyZXNpc2N5cmlsbGljPTEyNDc7ZS56ZWhpcmFnYW5hPTEyMzgwO2UuemVrYXRha2FuYT0xMjQ3NjtlLnplcm89NDg7ZS56ZXJvYXJhYmljPTE2MzI7ZS56ZXJvYmVuZ2FsaT0yNTM0O2UuemVyb2RldmE9MjQwNjtlLnplcm9ndWphcmF0aT0yNzkwO2UuemVyb2d1cm11a2hpPTI2NjI7ZS56ZXJvaGFja2FyYWJpYz0xNjMyO2UuemVyb2luZmVyaW9yPTgzMjA7ZS56ZXJvbW9ub3NwYWNlPTY1Mjk2O2UuemVyb29sZHN0eWxlPTYzMjgwO2UuemVyb3BlcnNpYW49MTc3NjtlLnplcm9zdXBlcmlvcj04MzA0O2UuemVyb3RoYWk9MzY2NDtlLnplcm93aWR0aGpvaW5lcj02NTI3OTtlLnplcm93aWR0aG5vbmpvaW5lcj04MjA0O2UuemVyb3dpZHRoc3BhY2U9ODIwMztlLnpldGE9OTUwO2Uuemhib3BvbW9mbz0xMjU2MztlLnpoZWFybWVuaWFuPTEzODY7ZS56aGVicmV2ZWN5cmlsbGljPTEyMTg7ZS56aGVjeXJpbGxpYz0xMDc4O2UuemhlZGVzY2VuZGVyY3lyaWxsaWM9MTE3NTtlLnpoZWRpZXJlc2lzY3lyaWxsaWM9MTI0NTtlLnppaGlyYWdhbmE9MTIzNzY7ZS56aWthdGFrYW5hPTEyNDcyO2Uuemlub3JoZWJyZXc9MTQ1NDtlLnpsaW5lYmVsb3c9NzgyOTtlLnptb25vc3BhY2U9NjUzNzA7ZS56b2hpcmFnYW5hPTEyMzgyO2Uuem9rYXRha2FuYT0xMjQ3ODtlLnpwYXJlbj05Mzk3O2UuenJldHJvZmxleGhvb2s9NjU2O2UuenN0cm9rZT00Mzg7ZS56dWhpcmFnYW5hPTEyMzc4O2UuenVrYXRha2FuYT0xMjQ3NDtlWyIubm90ZGVmIl09MDtlLmFuZ2JyYWNrZXRsZWZ0YmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZz05MDAxO2UuYW5nYnJhY2tldGxlZnRiaWdnPTkwMDE7ZS5hbmdicmFja2V0bGVmdEJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRyaWdodEJpZz05MDAyO2UuYW5nYnJhY2tldHJpZ2h0YmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRCaWdnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWdnPTkwMDI7ZS5hcnJvd2hvb2tsZWZ0PTg2MTg7ZS5hcnJvd2hvb2tyaWdodD04NjE3O2UuYXJyb3dsZWZ0dG9waGFsZj04NjM2O2UuYXJyb3dsZWZ0Ym90aGFsZj04NjM3O2UuYXJyb3dub3J0aGVhc3Q9ODU5OTtlLmFycm93bm9ydGh3ZXN0PTg1OTg7ZS5hcnJvd3JpZ2h0dG9waGFsZj04NjQwO2UuYXJyb3dyaWdodGJvdGhhbGY9ODY0MTtlLmFycm93c291dGhlYXN0PTg2MDA7ZS5hcnJvd3NvdXRod2VzdD04NjAxO2UuYmFja3NsYXNoYmlnPTg3MjY7ZS5iYWNrc2xhc2hCaWc9ODcyNjtlLmJhY2tzbGFzaEJpZ2c9ODcyNjtlLmJhY2tzbGFzaGJpZ2c9ODcyNjtlLmJhcmRibD04MjE0O2UuYnJhY2VodGlwZG93bmxlZnQ9NjUwNzk7ZS5icmFjZWh0aXBkb3ducmlnaHQ9NjUwNzk7ZS5icmFjZWh0aXB1cGxlZnQ9NjUwODA7ZS5icmFjZWh0aXB1cHJpZ2h0PTY1MDgwO2UuYnJhY2VsZWZ0QmlnPTEyMztlLmJyYWNlbGVmdGJpZz0xMjM7ZS5icmFjZWxlZnRiaWdnPTEyMztlLmJyYWNlbGVmdEJpZ2c9MTIzO2UuYnJhY2VyaWdodEJpZz0xMjU7ZS5icmFjZXJpZ2h0YmlnPTEyNTtlLmJyYWNlcmlnaHRiaWdnPTEyNTtlLmJyYWNlcmlnaHRCaWdnPTEyNTtlLmJyYWNrZXRsZWZ0YmlnPTkxO2UuYnJhY2tldGxlZnRCaWc9OTE7ZS5icmFja2V0bGVmdGJpZ2c9OTE7ZS5icmFja2V0bGVmdEJpZ2c9OTE7ZS5icmFja2V0cmlnaHRCaWc9OTM7ZS5icmFja2V0cmlnaHRiaWc9OTM7ZS5icmFja2V0cmlnaHRiaWdnPTkzO2UuYnJhY2tldHJpZ2h0QmlnZz05MztlLmNlaWxpbmdsZWZ0YmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZz04OTY4O2UuY2VpbGluZ2xlZnRCaWdnPTg5Njg7ZS5jZWlsaW5nbGVmdGJpZ2c9ODk2ODtlLmNlaWxpbmdyaWdodGJpZz04OTY5O2UuY2VpbGluZ3JpZ2h0QmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRiaWdnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWdnPTg5Njk7ZS5jaXJjbGVkb3RkaXNwbGF5PTg4NTc7ZS5jaXJjbGVkb3R0ZXh0PTg4NTc7ZS5jaXJjbGVtdWx0aXBseWRpc3BsYXk9ODg1NTtlLmNpcmNsZW11bHRpcGx5dGV4dD04ODU1O2UuY2lyY2xlcGx1c2Rpc3BsYXk9ODg1MztlLmNpcmNsZXBsdXN0ZXh0PTg4NTM7ZS5jb250aW50ZWdyYWxkaXNwbGF5PTg3NTA7ZS5jb250aW50ZWdyYWx0ZXh0PTg3NTA7ZS5jb3Byb2R1Y3RkaXNwbGF5PTg3MjA7ZS5jb3Byb2R1Y3R0ZXh0PTg3MjA7ZS5mbG9vcmxlZnRCaWc9ODk3MDtlLmZsb29ybGVmdGJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnZz04OTcwO2UuZmxvb3JsZWZ0QmlnZz04OTcwO2UuZmxvb3JyaWdodGJpZz04OTcxO2UuZmxvb3JyaWdodEJpZz04OTcxO2UuZmxvb3JyaWdodEJpZ2c9ODk3MTtlLmZsb29ycmlnaHRiaWdnPTg5NzE7ZS5oYXR3aWRlPTc3MDtlLmhhdHdpZGVyPTc3MDtlLmhhdHdpZGVzdD03NzA7ZS5pbnRlcmNhbD03NDg4O2UuaW50ZWdyYWxkaXNwbGF5PTg3NDc7ZS5pbnRlZ3JhbHRleHQ9ODc0NztlLmludGVyc2VjdGlvbmRpc3BsYXk9ODg5ODtlLmludGVyc2VjdGlvbnRleHQ9ODg5ODtlLmxvZ2ljYWxhbmRkaXNwbGF5PTg3NDM7ZS5sb2dpY2FsYW5kdGV4dD04NzQzO2UubG9naWNhbG9yZGlzcGxheT04NzQ0O2UubG9naWNhbG9ydGV4dD04NzQ0O2UucGFyZW5sZWZ0QmlnPTQwO2UucGFyZW5sZWZ0YmlnPTQwO2UucGFyZW5sZWZ0QmlnZz00MDtlLnBhcmVubGVmdGJpZ2c9NDA7ZS5wYXJlbnJpZ2h0QmlnPTQxO2UucGFyZW5yaWdodGJpZz00MTtlLnBhcmVucmlnaHRCaWdnPTQxO2UucGFyZW5yaWdodGJpZ2c9NDE7ZS5wcmltZT04MjQyO2UucHJvZHVjdGRpc3BsYXk9ODcxOTtlLnByb2R1Y3R0ZXh0PTg3MTk7ZS5yYWRpY2FsYmlnPTg3MzA7ZS5yYWRpY2FsQmlnPTg3MzA7ZS5yYWRpY2FsQmlnZz04NzMwO2UucmFkaWNhbGJpZ2c9ODczMDtlLnJhZGljYWxidD04NzMwO2UucmFkaWNhbHRwPTg3MzA7ZS5yYWRpY2FsdmVydGV4PTg3MzA7ZS5zbGFzaGJpZz00NztlLnNsYXNoQmlnPTQ3O2Uuc2xhc2hCaWdnPTQ3O2Uuc2xhc2hiaWdnPTQ3O2Uuc3VtbWF0aW9uZGlzcGxheT04NzIxO2Uuc3VtbWF0aW9udGV4dD04NzIxO2UudGlsZGV3aWRlPTczMjtlLnRpbGRld2lkZXI9NzMyO2UudGlsZGV3aWRlc3Q9NzMyO2UudW5pb25kaXNwbGF5PTg4OTk7ZS51bmlvbm11bHRpZGlzcGxheT04ODQ2O2UudW5pb25tdWx0aXRleHQ9ODg0NjtlLnVuaW9uc3FkaXNwbGF5PTg4NTI7ZS51bmlvbnNxdGV4dD04ODUyO2UudW5pb250ZXh0PTg4OTk7ZS52ZXh0ZW5kZG91YmxlPTg3NDE7ZS52ZXh0ZW5kc2luZ2xlPTg3Mzl9KSksR2k9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTMyO2UuYTE9OTk4NTtlLmEyPTk5ODY7ZS5hMjAyPTk5ODc7ZS5hMz05OTg4O2UuYTQ9OTc0MjtlLmE1PTk5OTA7ZS5hMTE5PTk5OTE7ZS5hMTE4PTk5OTI7ZS5hMTE3PTk5OTM7ZS5hMTE9OTc1NTtlLmExMj05NzU4O2UuYTEzPTk5OTY7ZS5hMTQ9OTk5NztlLmExNT05OTk4O2UuYTE2PTk5OTk7ZS5hMTA1PTFlNDtlLmExNz0xMDAwMTtlLmExOD0xMDAwMjtlLmExOT0xMDAwMztlLmEyMD0xMDAwNDtlLmEyMT0xMDAwNTtlLmEyMj0xMDAwNjtlLmEyMz0xMDAwNztlLmEyND0xMDAwODtlLmEyNT0xMDAwOTtlLmEyNj0xMDAxMDtlLmEyNz0xMDAxMTtlLmEyOD0xMDAxMjtlLmE2PTEwMDEzO2UuYTc9MTAwMTQ7ZS5hOD0xMDAxNTtlLmE5PTEwMDE2O2UuYTEwPTEwMDE3O2UuYTI5PTEwMDE4O2UuYTMwPTEwMDE5O2UuYTMxPTEwMDIwO2UuYTMyPTEwMDIxO2UuYTMzPTEwMDIyO2UuYTM0PTEwMDIzO2UuYTM1PTk3MzM7ZS5hMzY9MTAwMjU7ZS5hMzc9MTAwMjY7ZS5hMzg9MTAwMjc7ZS5hMzk9MTAwMjg7ZS5hNDA9MTAwMjk7ZS5hNDE9MTAwMzA7ZS5hNDI9MTAwMzE7ZS5hNDM9MTAwMzI7ZS5hNDQ9MTAwMzM7ZS5hNDU9MTAwMzQ7ZS5hNDY9MTAwMzU7ZS5hNDc9MTAwMzY7ZS5hNDg9MTAwMzc7ZS5hNDk9MTAwMzg7ZS5hNTA9MTAwMzk7ZS5hNTE9MTAwNDA7ZS5hNTI9MTAwNDE7ZS5hNTM9MTAwNDI7ZS5hNTQ9MTAwNDM7ZS5hNTU9MTAwNDQ7ZS5hNTY9MTAwNDU7ZS5hNTc9MTAwNDY7ZS5hNTg9MTAwNDc7ZS5hNTk9MTAwNDg7ZS5hNjA9MTAwNDk7ZS5hNjE9MTAwNTA7ZS5hNjI9MTAwNTE7ZS5hNjM9MTAwNTI7ZS5hNjQ9MTAwNTM7ZS5hNjU9MTAwNTQ7ZS5hNjY9MTAwNTU7ZS5hNjc9MTAwNTY7ZS5hNjg9MTAwNTc7ZS5hNjk9MTAwNTg7ZS5hNzA9MTAwNTk7ZS5hNzE9OTY3OTtlLmE3Mj0xMDA2MTtlLmE3Mz05NjMyO2UuYTc0PTEwMDYzO2UuYTIwMz0xMDA2NDtlLmE3NT0xMDA2NTtlLmEyMDQ9MTAwNjY7ZS5hNzY9OTY1MDtlLmE3Nz05NjYwO2UuYTc4PTk2NzA7ZS5hNzk9MTAwNzA7ZS5hODE9OTY4NztlLmE4Mj0xMDA3MjtlLmE4Mz0xMDA3MztlLmE4ND0xMDA3NDtlLmE5Nz0xMDA3NTtlLmE5OD0xMDA3NjtlLmE5OT0xMDA3NztlLmExMDA9MTAwNzg7ZS5hMTAxPTEwMDgxO2UuYTEwMj0xMDA4MjtlLmExMDM9MTAwODM7ZS5hMTA0PTEwMDg0O2UuYTEwNj0xMDA4NTtlLmExMDc9MTAwODY7ZS5hMTA4PTEwMDg3O2UuYTExMj05ODI3O2UuYTExMT05ODMwO2UuYTExMD05ODI5O2UuYTEwOT05ODI0O2UuYTEyMD05MzEyO2UuYTEyMT05MzEzO2UuYTEyMj05MzE0O2UuYTEyMz05MzE1O2UuYTEyND05MzE2O2UuYTEyNT05MzE3O2UuYTEyNj05MzE4O2UuYTEyNz05MzE5O2UuYTEyOD05MzIwO2UuYTEyOT05MzIxO2UuYTEzMD0xMDEwMjtlLmExMzE9MTAxMDM7ZS5hMTMyPTEwMTA0O2UuYTEzMz0xMDEwNTtlLmExMzQ9MTAxMDY7ZS5hMTM1PTEwMTA3O2UuYTEzNj0xMDEwODtlLmExMzc9MTAxMDk7ZS5hMTM4PTEwMTEwO2UuYTEzOT0xMDExMTtlLmExNDA9MTAxMTI7ZS5hMTQxPTEwMTEzO2UuYTE0Mj0xMDExNDtlLmExNDM9MTAxMTU7ZS5hMTQ0PTEwMTE2O2UuYTE0NT0xMDExNztlLmExNDY9MTAxMTg7ZS5hMTQ3PTEwMTE5O2UuYTE0OD0xMDEyMDtlLmExNDk9MTAxMjE7ZS5hMTUwPTEwMTIyO2UuYTE1MT0xMDEyMztlLmExNTI9MTAxMjQ7ZS5hMTUzPTEwMTI1O2UuYTE1ND0xMDEyNjtlLmExNTU9MTAxMjc7ZS5hMTU2PTEwMTI4O2UuYTE1Nz0xMDEyOTtlLmExNTg9MTAxMzA7ZS5hMTU5PTEwMTMxO2UuYTE2MD0xMDEzMjtlLmExNjE9ODU5NDtlLmExNjM9ODU5NjtlLmExNjQ9ODU5NztlLmExOTY9MTAxMzY7ZS5hMTY1PTEwMTM3O2UuYTE5Mj0xMDEzODtlLmExNjY9MTAxMzk7ZS5hMTY3PTEwMTQwO2UuYTE2OD0xMDE0MTtlLmExNjk9MTAxNDI7ZS5hMTcwPTEwMTQzO2UuYTE3MT0xMDE0NDtlLmExNzI9MTAxNDU7ZS5hMTczPTEwMTQ2O2UuYTE2Mj0xMDE0NztlLmExNzQ9MTAxNDg7ZS5hMTc1PTEwMTQ5O2UuYTE3Nj0xMDE1MDtlLmExNzc9MTAxNTE7ZS5hMTc4PTEwMTUyO2UuYTE3OT0xMDE1MztlLmExOTM9MTAxNTQ7ZS5hMTgwPTEwMTU1O2UuYTE5OT0xMDE1NjtlLmExODE9MTAxNTc7ZS5hMjAwPTEwMTU4O2UuYTE4Mj0xMDE1OTtlLmEyMDE9MTAxNjE7ZS5hMTgzPTEwMTYyO2UuYTE4ND0xMDE2MztlLmExOTc9MTAxNjQ7ZS5hMTg1PTEwMTY1O2UuYTE5ND0xMDE2NjtlLmExOTg9MTAxNjc7ZS5hMTg2PTEwMTY4O2UuYTE5NT0xMDE2OTtlLmExODc9MTAxNzA7ZS5hMTg4PTEwMTcxO2UuYTE4OT0xMDE3MjtlLmExOTA9MTAxNzM7ZS5hMTkxPTEwMTc0O2UuYTg5PTEwMDg4O2UuYTkwPTEwMDg5O2UuYTkzPTEwMDkwO2UuYTk0PTEwMDkxO2UuYTkxPTEwMDkyO2UuYTkyPTEwMDkzO2UuYTIwNT0xMDA5NDtlLmE4NT0xMDA5NTtlLmEyMDY9MTAwOTY7ZS5hODY9MTAwOTc7ZS5hODc9MTAwOTg7ZS5hODg9MTAwOTk7ZS5hOTU9MTAxMDA7ZS5hOTY9MTAxMDE7ZVsiLm5vdGRlZiJdPTB9KSkseGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzYzNzIxXT0xNjk7ZVs2MzE5M109MTY5O2VbNjM3MjBdPTE3NDtlWzYzMTk0XT0xNzQ7ZVs2MzcyMl09ODQ4MjtlWzYzMTk1XT04NDgyO2VbNjM3MjldPTkxMjc7ZVs2MzczMF09OTEyODtlWzYzNzMxXT05MTI5O2VbNjM3NDBdPTkxMzE7ZVs2Mzc0MV09OTEzMjtlWzYzNzQyXT05MTMzO2VbNjM3MjZdPTkxMjE7ZVs2MzcyN109OTEyMjtlWzYzNzI4XT05MTIzO2VbNjM3MzddPTkxMjQ7ZVs2MzczOF09OTEyNTtlWzYzNzM5XT05MTI2O2VbNjM3MjNdPTkxMTU7ZVs2MzcyNF09OTExNjtlWzYzNzI1XT05MTE3O2VbNjM3MzRdPTkxMTg7ZVs2MzczNV09OTExOTtlWzYzNzM2XT05MTIwfSkpO2Z1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBpPXRbZV07aWYodm9pZCAwIT09aSlyZXR1cm4gaTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKWE9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO2E9ZS5zdWJzdHJpbmcoMSl9aWYoYT09PWEudG9VcHBlckNhc2UoKSl7aT1wYXJzZUludChhLDE2KTtpZihpPj0wKXJldHVybiBpfX1yZXR1cm4tMX1jb25zdCBNaT1bWzAsMTI3XSxbMTI4LDI1NV0sWzI1NiwzODNdLFszODQsNTkxXSxbNTkyLDY4Nyw3NDI0LDc1NTEsNzU1Miw3NjE1XSxbNjg4LDc2Nyw0Mjc1Miw0Mjc4M10sWzc2OCw4NzksNzYxNiw3Njc5XSxbODgwLDEwMjNdLFsxMTM5MiwxMTUxOV0sWzEwMjQsMTI3OSwxMjgwLDEzMjcsMTE3NDQsMTE3NzUsNDI1NjAsNDI2NTVdLFsxMzI4LDE0MjNdLFsxNDI0LDE1MzVdLFs0MjI0MCw0MjU1OV0sWzE1MzYsMTc5MSwxODcyLDE5MTldLFsxOTg0LDIwNDddLFsyMzA0LDI0MzFdLFsyNDMyLDI1NTldLFsyNTYwLDI2ODddLFsyNjg4LDI4MTVdLFsyODE2LDI5NDNdLFsyOTQ0LDMwNzFdLFszMDcyLDMxOTldLFszMjAwLDMzMjddLFszMzI4LDM0NTVdLFszNTg0LDM3MTFdLFszNzEyLDM4MzldLFs0MjU2LDQzNTEsMTE1MjAsMTE1NjddLFs2OTEyLDcwMzldLFs0MzUyLDQ2MDddLFs3NjgwLDc5MzUsMTEzNjAsMTEzOTEsNDI3ODQsNDMwMDddLFs3OTM2LDgxOTFdLFs4MTkyLDgzMDMsMTE3NzYsMTE5MDNdLFs4MzA0LDgzNTFdLFs4MzUyLDgzOTldLFs4NDAwLDg0NDddLFs4NDQ4LDg1MjddLFs4NTI4LDg1OTFdLFs4NTkyLDg3MDMsMTAyMjQsMTAyMzksMTA0OTYsMTA2MjMsMTEwMDgsMTEyNjNdLFs4NzA0LDg5NTksMTA3NTIsMTEwMDcsMTAxNzYsMTAyMjMsMTA2MjQsMTA3NTFdLFs4OTYwLDkyMTVdLFs5MjE2LDkyNzldLFs5MjgwLDkzMTFdLFs5MzEyLDk0NzFdLFs5NDcyLDk1OTldLFs5NjAwLDk2MzFdLFs5NjMyLDk3MjddLFs5NzI4LDk5ODNdLFs5OTg0LDEwMTc1XSxbMTIyODgsMTIzNTFdLFsxMjM1MiwxMjQ0N10sWzEyNDQ4LDEyNTQzLDEyNzg0LDEyNzk5XSxbMTI1NDQsMTI1OTEsMTI3MDQsMTI3MzVdLFsxMjU5MiwxMjY4N10sWzQzMDcyLDQzMTM1XSxbMTI4MDAsMTMwNTVdLFsxMzA1NiwxMzMxMV0sWzQ0MDMyLDU1MjE1XSxbNTUyOTYsNTczNDNdLFs2Nzg0MCw2Nzg3MV0sWzE5OTY4LDQwOTU5LDExOTA0LDEyMDMxLDEyMDMyLDEyMjU1LDEyMjcyLDEyMjg3LDEzMzEyLDE5OTAzLDEzMTA3MiwxNzM3OTEsMTI2ODgsMTI3MDNdLFs1NzM0NCw2Mzc0M10sWzEyNzM2LDEyNzgzLDYzNzQ0LDY0MjU1LDE5NDU2MCwxOTUxMDNdLFs2NDI1Niw2NDMzNV0sWzY0MzM2LDY1MDIzXSxbNjUwNTYsNjUwNzFdLFs2NTA0MCw2NTA1NV0sWzY1MTA0LDY1MTM1XSxbNjUxMzYsNjUyNzldLFs2NTI4MCw2NTUxOV0sWzY1NTIwLDY1NTM1XSxbMzg0MCw0MDk1XSxbMTc5MiwxODcxXSxbMTkyMCwxOTgzXSxbMzQ1NiwzNTgzXSxbNDA5Niw0MjU1XSxbNDYwOCw0OTkxLDQ5OTIsNTAyMywxMTY0OCwxMTc0M10sWzUwMjQsNTExOV0sWzUxMjAsNTc1OV0sWzU3NjAsNTc5MV0sWzU3OTIsNTg4N10sWzYwMTYsNjE0M10sWzYxNDQsNjMxOV0sWzEwMjQwLDEwNDk1XSxbNDA5NjAsNDIxMjddLFs1ODg4LDU5MTksNTkyMCw1OTUxLDU5NTIsNTk4Myw1OTg0LDYwMTVdLFs2NjMwNCw2NjM1MV0sWzY2MzUyLDY2MzgzXSxbNjY1NjAsNjY2MzldLFsxMTg3ODQsMTE5MDM5LDExOTA0MCwxMTkyOTUsMTE5Mjk2LDExOTM3NV0sWzExOTgwOCwxMjA4MzFdLFsxMDQ0NDgwLDEwNDg1NzNdLFs2NTAyNCw2NTAzOSw5MTc3NjAsOTE3OTk5XSxbOTE3NTA0LDkxNzYzMV0sWzY0MDAsNjQ3OV0sWzY0ODAsNjUyN10sWzY1MjgsNjYyM10sWzY2NTYsNjY4N10sWzExMjY0LDExMzU5XSxbMTE1NjgsMTE2NDddLFsxOTkwNCwxOTk2N10sWzQzMDA4LDQzMDU1XSxbNjU1MzYsNjU2NjMsNjU2NjQsNjU3OTEsNjU3OTIsNjU4NTVdLFs2NTg1Niw2NTkzNV0sWzY2NDMyLDY2NDYzXSxbNjY0NjQsNjY1MjddLFs2NjY0MCw2NjY4N10sWzY2Njg4LDY2NzM1XSxbNjc1ODQsNjc2NDddLFs2ODA5Niw2ODE5MV0sWzExOTU1MiwxMTk2NDddLFs3MzcyOCw3NDc1MSw3NDc1Miw3NDg3OV0sWzExOTY0OCwxMTk2NzldLFs3MDQwLDcxMDNdLFs3MTY4LDcyNDddLFs3MjQ4LDcyOTVdLFs0MzEzNiw0MzIzMV0sWzQzMjY0LDQzMzExXSxbNDMzMTIsNDMzNTldLFs0MzUyMCw0MzYxNV0sWzY1OTM2LDY1OTk5XSxbNjZlMyw2NjA0N10sWzY2MjA4LDY2MjcxLDY2MTc2LDY2MjA3LDY3ODcyLDY3OTAzXSxbMTI3MDI0LDEyNzEzNSwxMjY5NzYsMTI3MDIzXV07ZnVuY3Rpb24gZ2V0VW5pY29kZVJhbmdlRm9yKGUsdD0tMSl7aWYoLTEhPT10KXtjb25zdCBpPU1pW3RdO2ZvcihsZXQgYT0wLHI9aS5sZW5ndGg7YTxyO2ErPTIpaWYoZT49aVthXSYmZTw9aVthKzFdKXJldHVybiB0fWZvcihsZXQgdD0wLGk9TWkubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9TWlbdF07Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSs9MilpZihlPj1pW2FdJiZlPD1pW2ErMV0pcmV0dXJuIHR9cmV0dXJuLTF9Y29uc3QgSmk9bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLEhpPW5ldyBNYXA7Y29uc3Qgdmk9ITAsWWk9MSxLaT0yLFRpPTQscWk9MzIsT2k9WyIubm90ZGVmIiwiLm51bGwiLCJub25tYXJraW5ncmV0dXJuIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJub25icmVha2luZ3NwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJMc2xhc2giLCJsc2xhc2giLCJTY2Fyb24iLCJzY2Fyb24iLCJaY2Fyb24iLCJ6Y2Fyb24iLCJicm9rZW5iYXIiLCJFdGgiLCJldGgiLCJZYWN1dGUiLCJ5YWN1dGUiLCJUaG9ybiIsInRob3JuIiwibWludXMiLCJtdWx0aXBseSIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwib25laGFsZiIsIm9uZXF1YXJ0ZXIiLCJ0aHJlZXF1YXJ0ZXJzIiwiZnJhbmMiLCJHYnJldmUiLCJnYnJldmUiLCJJZG90YWNjZW50IiwiU2NlZGlsbGEiLCJzY2VkaWxsYSIsIkNhY3V0ZSIsImNhY3V0ZSIsIkNjYXJvbiIsImNjYXJvbiIsImRjcm9hdCJdO2Z1bmN0aW9uIHJlY292ZXJHbHlwaE5hbWUoZSx0KXtpZih2b2lkIDAhPT10W2VdKXJldHVybiBlO2NvbnN0IGk9Z2V0VW5pY29kZUZvckdseXBoKGUsdCk7aWYoLTEhPT1pKWZvcihjb25zdCBlIGluIHQpaWYodFtlXT09PWkpcmV0dXJuIGU7aW5mbygiVW5hYmxlIHRvIHJlY292ZXIgYSBzdGFuZGFyZCBnbHlwaCBuYW1lIGZvcjogIitlKTtyZXR1cm4gZX1mdW5jdGlvbiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSx0LGkpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgcixzLG47Y29uc3Qgbz0hIShlLmZsYWdzJlRpKTtpZihlLmlzSW50ZXJuYWxGb250KXtuPXQ7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyl7cj1pLmluZGV4T2YobltzXSk7YVtzXT1yPj0wP3I6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe249Z2V0RW5jb2RpbmcoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3Iocz0wO3M8bi5sZW5ndGg7cysrKXtyPWkuaW5kZXhPZihuW3NdKTthW3NdPXI+PTA/cjowfX1lbHNlIGlmKG8pZm9yKHMgaW4gdClhW3NdPXRbc107ZWxzZXtuPWZpO2ZvcihzPTA7czxuLmxlbmd0aDtzKyspe3I9aS5pbmRleE9mKG5bc10pO2Fbc109cj49MD9yOjB9fWNvbnN0IGc9ZS5kaWZmZXJlbmNlcztsZXQgYztpZihnKWZvcihzIGluIGcpe2NvbnN0IGU9Z1tzXTtyPWkuaW5kZXhPZihlKTtpZigtMT09PXIpe2N8fChjPU5pKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGMpO3QhPT1lJiYocj1pLmluZGV4T2YodCkpfWFbc109cj49MD9yOjB9cmV0dXJuIGF9ZnVuY3Rpb24gbm9ybWFsaXplRm9udE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikucmVwbGFjZUFsbCgvXHMvZywiIil9Y29uc3QgUGk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWyJUaW1lcy1Sb21hbiJdPSJUaW1lcy1Sb21hbiI7ZS5IZWx2ZXRpY2E9IkhlbHZldGljYSI7ZS5Db3VyaWVyPSJDb3VyaWVyIjtlLlN5bWJvbD0iU3ltYm9sIjtlWyJUaW1lcy1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIkhlbHZldGljYS1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDb3VyaWVyLUJvbGQiXT0iQ291cmllci1Cb2xkIjtlLlphcGZEaW5nYmF0cz0iWmFwZkRpbmdiYXRzIjtlWyJUaW1lcy1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQ291cmllci1PYmxpcXVlIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2UuQXJpYWxOYXJyb3c9IkhlbHZldGljYSI7ZVsiQXJpYWxOYXJyb3ctQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxOYXJyb3ctQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsTmFycm93LUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbEJsYWNrPSJIZWx2ZXRpY2EiO2VbIkFyaWFsQmxhY2stQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxCbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkFyaWFsLUJsYWNrIl09IkhlbHZldGljYSI7ZVsiQXJpYWwtQmxhY2stQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJsYWNrLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbD0iSGVsdmV0aWNhIjtlWyJBcmlhbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsTVQ9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZEl0YWxpY01UIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQm9sZE1UIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbC1JdGFsaWNNVCJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiQXJpYWwtQm9sZEl0YWxpY01ULUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1Cb2xkTVQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkFyaWFsVW5pY29kZU1TPSJIZWx2ZXRpY2EiO2VbIkFyaWFsVW5pY29kZU1TLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsVW5pY29kZU1TLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbFVuaWNvZGVNUy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2UuQ291cmllck5ldz0iQ291cmllciI7ZVsiQ291cmllck5ldy1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZVsiQ291cmllck5ldy1Cb2xkSXRhbGljIl09IkNvdXJpZXItQm9sZE9ibGlxdWUiO2VbIkNvdXJpZXJOZXctSXRhbGljIl09IkNvdXJpZXItT2JsaXF1ZSI7ZVsiQ291cmllck5ld1BTLUJvbGRJdGFsaWNNVCJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyTmV3UFMtQm9sZE1UIl09IkNvdXJpZXItQm9sZCI7ZVsiQ291cmllck5ld1BTLUl0YWxpY01UIl09IkNvdXJpZXItT2JsaXF1ZSI7ZS5Db3VyaWVyTmV3UFNNVD0iQ291cmllciI7ZVsiSGVsdmV0aWNhLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJIZWx2ZXRpY2EtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJTeW1ib2wtQm9sZCJdPSJTeW1ib2wiO2VbIlN5bWJvbC1Cb2xkSXRhbGljIl09IlN5bWJvbCI7ZVsiU3ltYm9sLUl0YWxpYyJdPSJTeW1ib2wiO2UuVGltZXNOZXdSb21hbj0iVGltZXMtUm9tYW4iO2VbIlRpbWVzTmV3Um9tYW4tQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hbi1JdGFsaWMiXT0iVGltZXMtSXRhbGljIjtlLlRpbWVzTmV3Um9tYW5QUz0iVGltZXMtUm9tYW4iO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkSXRhbGljTVQiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUJvbGRNVCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTLUl0YWxpY01UIl09IlRpbWVzLUl0YWxpYyI7ZS5UaW1lc05ld1JvbWFuUFNNVD0iVGltZXMtUm9tYW4iO2VbIlRpbWVzTmV3Um9tYW5QU01ULUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTTVQtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1JdGFsaWMiXT0iVGltZXMtSXRhbGljIn0pKSxXaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ291cmllcj0iRm94aXRGaXhlZC5wZmIiO2VbIkNvdXJpZXItQm9sZCJdPSJGb3hpdEZpeGVkQm9sZC5wZmIiO2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT0iRm94aXRGaXhlZEJvbGRJdGFsaWMucGZiIjtlWyJDb3VyaWVyLU9ibGlxdWUiXT0iRm94aXRGaXhlZEl0YWxpYy5wZmIiO2UuSGVsdmV0aWNhPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiI7ZVsiVGltZXMtUm9tYW4iXT0iRm94aXRTZXJpZi5wZmIiO2VbIlRpbWVzLUJvbGQiXT0iRm94aXRTZXJpZkJvbGQucGZiIjtlWyJUaW1lcy1Cb2xkSXRhbGljIl09IkZveGl0U2VyaWZCb2xkSXRhbGljLnBmYiI7ZVsiVGltZXMtSXRhbGljIl09IkZveGl0U2VyaWZJdGFsaWMucGZiIjtlLlN5bWJvbD0iRm94aXRTeW1ib2wucGZiIjtlLlphcGZEaW5nYmF0cz0iRm94aXREaW5nYmF0cy5wZmIiO2VbIkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiXT0iTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGQiXT0iTGliZXJhdGlvblNhbnMtQm9sZC50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUl0YWxpYyJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIn0pKSxqaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2UuQ2FsaWJyaT0iSGVsdmV0aWNhIjtlWyJDYWxpYnJpLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNhbGlicmktSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNlbnR1cnlHb3RoaWM9IkhlbHZldGljYSI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDZW50dXJ5R290aGljLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDZW50dXJ5R290aGljLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5Db21pY1NhbnNNUz0iQ29taWMgU2FucyBNUyI7ZVsiQ29taWNTYW5zTVMtQm9sZCJdPSJDb21pYyBTYW5zIE1TLUJvbGQiO2VbIkNvbWljU2Fuc01TLUJvbGRJdGFsaWMiXT0iQ29taWMgU2FucyBNUy1Cb2xkSXRhbGljIjtlWyJDb21pY1NhbnNNUy1JdGFsaWMiXT0iQ29taWMgU2FucyBNUy1JdGFsaWMiO2UuSW1wYWN0PSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJJdGNTeW1ib2wtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1Cb29rIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLUJvb2tJdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkl0Y1N5bWJvbC1NZWRpdW0iXT0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtTWVkaXVtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkx1Y2lkYUNvbnNvbGU9IkNvdXJpZXIiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkx1Y2lkYUNvbnNvbGUtQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJMdWNpZGFDb25zb2xlLUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkx1Y2lkYVNhbnMtRGVtaSJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiTVMtR290aGljIl09Ik1TIEdvdGhpYyI7ZVsiTVMtR290aGljLUJvbGQiXT0iTVMgR290aGljLUJvbGQiO2VbIk1TLUdvdGhpYy1Cb2xkSXRhbGljIl09Ik1TIEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1Hb3RoaWMtSXRhbGljIl09Ik1TIEdvdGhpYy1JdGFsaWMiO2VbIk1TLU1pbmNobyJdPSJNUyBNaW5jaG8iO2VbIk1TLU1pbmNoby1Cb2xkIl09Ik1TIE1pbmNoby1Cb2xkIjtlWyJNUy1NaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBNaW5jaG8tQm9sZEl0YWxpYyI7ZVsiTVMtTWluY2hvLUl0YWxpYyJdPSJNUyBNaW5jaG8tSXRhbGljIjtlWyJNUy1QR290aGljIl09Ik1TIFBHb3RoaWMiO2VbIk1TLVBHb3RoaWMtQm9sZCJdPSJNUyBQR290aGljLUJvbGQiO2VbIk1TLVBHb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBQR290aGljLUJvbGRJdGFsaWMiO2VbIk1TLVBHb3RoaWMtSXRhbGljIl09Ik1TIFBHb3RoaWMtSXRhbGljIjtlWyJNUy1QTWluY2hvIl09Ik1TIFBNaW5jaG8iO2VbIk1TLVBNaW5jaG8tQm9sZCJdPSJNUyBQTWluY2hvLUJvbGQiO2VbIk1TLVBNaW5jaG8tQm9sZEl0YWxpYyJdPSJNUyBQTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLVBNaW5jaG8tSXRhbGljIl09Ik1TIFBNaW5jaG8tSXRhbGljIjtlLk51cHRpYWxTY3JpcHQ9IlRpbWVzLUl0YWxpYyI7ZS5TZWdvZVVJU3ltYm9sPSJIZWx2ZXRpY2EifSkpLFhpPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZVsiQWRvYmUgSmVuc29uIl09ITA7ZVsiQWRvYmUgVGV4dCJdPSEwO2UuQWxiZXJ0dXM9ITA7ZS5BbGR1cz0hMDtlLkFsZXhhbmRyaWE9ITA7ZS5BbGdlcmlhbj0hMDtlWyJBbWVyaWNhbiBUeXBld3JpdGVyIl09ITA7ZS5BbnRpcXVhPSEwO2UuQXBleD0hMDtlLkFybm89ITA7ZS5Bc3Rlcj0hMDtlLkF1cm9yYT0hMDtlLkJhc2tlcnZpbGxlPSEwO2UuQmVsbD0hMDtlLkJlbWJvPSEwO2VbIkJlbWJvIFNjaG9vbGJvb2siXT0hMDtlLkJlbmd1aWF0PSEwO2VbIkJlcmtlbGV5IE9sZCBTdHlsZSJdPSEwO2VbIkJlcm5oYXJkIE1vZGVybiJdPSEwO2VbIkJlcnRob2xkIENpdHkiXT0hMDtlLkJvZG9uaT0hMDtlWyJCYXVlciBCb2RvbmkiXT0hMDtlWyJCb29rIEFudGlxdWEiXT0hMDtlLkJvb2ttYW49ITA7ZVsiQm9yZGVhdXggUm9tYW4iXT0hMDtlWyJDYWxpZm9ybmlhbiBGQiJdPSEwO2UuQ2FsaXN0bz0hMDtlLkNhbHZlcnQ9ITA7ZS5DYXBpdGFscz0hMDtlLkNhbWJyaWE9ITA7ZS5DYXJ0aWVyPSEwO2UuQ2FzbG9uPSEwO2UuQ2F0dWxsPSEwO2UuQ2VudGF1cj0hMDtlWyJDZW50dXJ5IE9sZCBTdHlsZSJdPSEwO2VbIkNlbnR1cnkgU2Nob29sYm9vayJdPSEwO2UuQ2hhcGFycmFsPSEwO2VbIkNoYXJpcyBTSUwiXT0hMDtlLkNoZWx0ZW5oYW09ITA7ZVsiQ2hvbGxhIFNsYWIiXT0hMDtlLkNsYXJlbmRvbj0hMDtlLkNsZWFyZmFjZT0hMDtlLkNvY2hpbj0hMDtlLkNvbG9ubmE9ITA7ZVsiQ29tcHV0ZXIgTW9kZXJuIl09ITA7ZVsiQ29uY3JldGUgUm9tYW4iXT0hMDtlLkNvbnN0YW50aWE9ITA7ZVsiQ29vcGVyIEJsYWNrIl09ITA7ZS5Db3JvbmE9ITA7ZS5FY290eXBlPSEwO2UuRWd5cHRpZW5uZT0hMDtlLkVsZXBoYW50PSEwO2UuRXhjZWxzaW9yPSEwO2UuRmFpcmZpZWxkPSEwO2VbIkZGIFNjYWxhIl09ITA7ZS5Gb2xrYXJkPSEwO2UuRm9vdGxpZ2h0PSEwO2UuRnJlZVNlcmlmPSEwO2VbIkZyaXogUXVhZHJhdGEiXT0hMDtlLkdhcmFtb25kPSEwO2UuR2VudGl1bT0hMDtlLkdlb3JnaWE9ITA7ZS5HbG91Y2VzdGVyPSEwO2VbIkdvdWR5IE9sZCBTdHlsZSJdPSEwO2VbIkdvdWR5IFNjaG9vbGJvb2siXT0hMDtlWyJHb3VkeSBQcm8gRm9udCJdPSEwO2UuR3Jhbmpvbj0hMDtlWyJHdWFyZGlhbiBFZ3lwdGlhbiJdPSEwO2UuSGVhdGhlcj0hMDtlLkhlcmN1bGVzPSEwO2VbIkhpZ2ggVG93ZXIgVGV4dCJdPSEwO2UuSGlyb3NoaWdlPSEwO2VbIkhvZWZsZXIgVGV4dCJdPSEwO2VbIkh1bWFuYSBTZXJpZiJdPSEwO2UuSW1wcmludD0hMDtlWyJJb25pYyBOby4gNSJdPSEwO2UuSmFuc29uPSEwO2UuSm9hbm5hPSEwO2UuS29yaW5uYT0hMDtlLkxleGljb249ITA7ZS5MaWJlcmF0aW9uU2VyaWY9ITA7ZVsiTGliZXJhdGlvbiBTZXJpZiJdPSEwO2VbIkxpbnV4IExpYmVydGluZSJdPSEwO2UuTGl0ZXJhdHVybmF5YT0hMDtlLkx1Y2lkYT0hMDtlWyJMdWNpZGEgQnJpZ2h0Il09ITA7ZS5NZWxpb3I9ITA7ZS5NZW1waGlzPSEwO2UuTWlsbGVyPSEwO2UuTWluaW9uPSEwO2UuTW9kZXJuPSEwO2VbIk1vbmEgTGlzYSJdPSEwO2VbIk1ycyBFYXZlcyJdPSEwO2VbIk1TIFNlcmlmIl09ITA7ZVsiTXVzZW8gU2xhYiJdPSEwO2VbIk5ldyBZb3JrIl09ITA7ZVsiTmltYnVzIFJvbWFuIl09ITA7ZVsiTlBTIFJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5OdXB0aWFsU2NyaXB0PSEwO2UuUGFsYXRpbm89ITA7ZS5QZXJwZXR1YT0hMDtlLlBsYW50aW49ITA7ZVsiUGxhbnRpbiBTY2hvb2xib29rIl09ITA7ZS5QbGF5YmlsbD0hMDtlWyJQb29yIFJpY2hhcmQiXT0hMDtlWyJSYXdsaW5zb24gUm9hZHdheSJdPSEwO2UuUmVuYXVsdD0hMDtlLlJlcXVpZW09ITA7ZS5Sb2Nrd2VsbD0hMDtlLlJvbWFuPSEwO2VbIlJvdGlzIFNlcmlmIl09ITA7ZS5TYWJvbj0hMDtlLlNjYWxhPSEwO2UuU2VhZ3VsbD0hMDtlLlNpc3RpbmE9ITA7ZS5Tb3V2ZW5pcj0hMDtlLlNUSVg9ITA7ZVsiU3RvbmUgSW5mb3JtYWwiXT0hMDtlWyJTdG9uZSBTZXJpZiJdPSEwO2UuU3lsZmFlbj0hMDtlLlRpbWVzPSEwO2UuVHJhamFuPSEwO2VbIlRyaW5pdMOpIl09ITA7ZVsiVHJ1bXAgTWVkaWFldmFsIl09ITA7ZS5VdG9waWE9ITA7ZVsiVmFsZSBUeXBlIl09ITA7ZVsiQml0c3RyZWFtIFZlcmEiXT0hMDtlWyJWZXJhIFNlcmlmIl09ITA7ZS5WZXJzYWlsbGVzPSEwO2UuV2FudGVkPSEwO2UuV2Vpc3M9ITA7ZVsiV2lkZSBMYXRpbiJdPSEwO2UuV2luZHNvcj0hMDtlLlhJVFM9ITB9KSksWmk9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwO2UuV2luZ2RpbmdzPSEwO2VbIldpbmdkaW5ncy1Cb2xkIl09ITA7ZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0hMH0pKSxWaT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMl09MTA7ZVszXT0zMjtlWzRdPTMzO2VbNV09MzQ7ZVs2XT0zNTtlWzddPTM2O2VbOF09Mzc7ZVs5XT0zODtlWzEwXT0zOTtlWzExXT00MDtlWzEyXT00MTtlWzEzXT00MjtlWzE0XT00MztlWzE1XT00NDtlWzE2XT00NTtlWzE3XT00NjtlWzE4XT00NztlWzE5XT00ODtlWzIwXT00OTtlWzIxXT01MDtlWzIyXT01MTtlWzIzXT01MjtlWzI0XT01MztlWzI1XT01NDtlWzI2XT01NTtlWzI3XT01NjtlWzI4XT01NztlWzI5XT01ODtlWzMwXT04OTQ7ZVszMV09NjA7ZVszMl09NjE7ZVszM109NjI7ZVszNF09NjM7ZVszNV09NjQ7ZVszNl09NjU7ZVszN109NjY7ZVszOF09Njc7ZVszOV09Njg7ZVs0MF09Njk7ZVs0MV09NzA7ZVs0Ml09NzE7ZVs0M109NzI7ZVs0NF09NzM7ZVs0NV09NzQ7ZVs0Nl09NzU7ZVs0N109NzY7ZVs0OF09Nzc7ZVs0OV09Nzg7ZVs1MF09Nzk7ZVs1MV09ODA7ZVs1Ml09ODE7ZVs1M109ODI7ZVs1NF09ODM7ZVs1NV09ODQ7ZVs1Nl09ODU7ZVs1N109ODY7ZVs1OF09ODc7ZVs1OV09ODg7ZVs2MF09ODk7ZVs2MV09OTA7ZVs2Ml09OTE7ZVs2M109OTI7ZVs2NF09OTM7ZVs2NV09OTQ7ZVs2Nl09OTU7ZVs2N109OTY7ZVs2OF09OTc7ZVs2OV09OTg7ZVs3MF09OTk7ZVs3MV09MTAwO2VbNzJdPTEwMTtlWzczXT0xMDI7ZVs3NF09MTAzO2VbNzVdPTEwNDtlWzc2XT0xMDU7ZVs3N109MTA2O2VbNzhdPTEwNztlWzc5XT0xMDg7ZVs4MF09MTA5O2VbODFdPTExMDtlWzgyXT0xMTE7ZVs4M109MTEyO2VbODRdPTExMztlWzg1XT0xMTQ7ZVs4Nl09MTE1O2VbODddPTExNjtlWzg4XT0xMTc7ZVs4OV09MTE4O2VbOTBdPTExOTtlWzkxXT0xMjA7ZVs5Ml09MTIxO2VbOTNdPTEyMjtlWzk0XT0xMjM7ZVs5NV09MTI0O2VbOTZdPTEyNTtlWzk3XT0xMjY7ZVs5OF09MTk2O2VbOTldPTE5NztlWzEwMF09MTk5O2VbMTAxXT0yMDE7ZVsxMDJdPTIwOTtlWzEwM109MjE0O2VbMTA0XT0yMjA7ZVsxMDVdPTIyNTtlWzEwNl09MjI0O2VbMTA3XT0yMjY7ZVsxMDhdPTIyODtlWzEwOV09MjI3O2VbMTEwXT0yMjk7ZVsxMTFdPTIzMTtlWzExMl09MjMzO2VbMTEzXT0yMzI7ZVsxMTRdPTIzNDtlWzExNV09MjM1O2VbMTE2XT0yMzc7ZVsxMTddPTIzNjtlWzExOF09MjM4O2VbMTE5XT0yMzk7ZVsxMjBdPTI0MTtlWzEyMV09MjQzO2VbMTIyXT0yNDI7ZVsxMjNdPTI0NDtlWzEyNF09MjQ2O2VbMTI1XT0yNDU7ZVsxMjZdPTI1MDtlWzEyN109MjQ5O2VbMTI4XT0yNTE7ZVsxMjldPTI1MjtlWzEzMF09ODIyNDtlWzEzMV09MTc2O2VbMTMyXT0xNjI7ZVsxMzNdPTE2MztlWzEzNF09MTY3O2VbMTM1XT04MjI2O2VbMTM2XT0xODI7ZVsxMzddPTIyMztlWzEzOF09MTc0O2VbMTM5XT0xNjk7ZVsxNDBdPTg0ODI7ZVsxNDFdPTE4MDtlWzE0Ml09MTY4O2VbMTQzXT04ODAwO2VbMTQ0XT0xOTg7ZVsxNDVdPTIxNjtlWzE0Nl09ODczNDtlWzE0N109MTc3O2VbMTQ4XT04ODA0O2VbMTQ5XT04ODA1O2VbMTUwXT0xNjU7ZVsxNTFdPTE4MTtlWzE1Ml09ODcwNjtlWzE1M109ODcyMTtlWzE1NF09ODcxOTtlWzE1Nl09ODc0NztlWzE1N109MTcwO2VbMTU4XT0xODY7ZVsxNTldPTg0ODY7ZVsxNjBdPTIzMDtlWzE2MV09MjQ4O2VbMTYyXT0xOTE7ZVsxNjNdPTE2MTtlWzE2NF09MTcyO2VbMTY1XT04NzMwO2VbMTY2XT00MDI7ZVsxNjddPTg3NzY7ZVsxNjhdPTg3MTA7ZVsxNjldPTE3MTtlWzE3MF09MTg3O2VbMTcxXT04MjMwO2VbMTc5XT04MjIwO2VbMTgwXT04MjIxO2VbMTgxXT04MjE2O2VbMTgyXT04MjE3O2VbMjAwXT0xOTM7ZVsyMDNdPTIwNTtlWzIwN109MjExO2VbMjEwXT0yMTg7ZVsyMjNdPTcxMTtlWzIyNF09MzIxO2VbMjI1XT0zMjI7ZVsyMjZdPTM1MjtlWzIyN109MzUzO2VbMjI4XT0zODE7ZVsyMjldPTM4MjtlWzIzM109MjIxO2VbMjM0XT0yNTM7ZVsyNTJdPTI2MztlWzI1M109MjY4O2VbMjU0XT0yNjk7ZVsyNThdPTI1ODtlWzI2MF09MjYwO2VbMjYxXT0yNjE7ZVsyNjVdPTI4MDtlWzI2Nl09MjgxO2VbMjY3XT0yODI7ZVsyNjhdPTI4MztlWzI2OV09MzEzO2VbMjc1XT0zMjM7ZVsyNzZdPTMyNDtlWzI3OF09MzI4O2VbMjgzXT0zNDQ7ZVsyODRdPTM0NTtlWzI4NV09MzQ2O2VbMjg2XT0zNDc7ZVsyOTJdPTM2NztlWzI5NV09Mzc3O2VbMjk2XT0zNzg7ZVsyOThdPTM4MDtlWzMwNV09OTYzO2VbMzA2XT05NjQ7ZVszMDddPTk2NjtlWzMwOF09ODIxNTtlWzMwOV09ODI1MjtlWzMxMF09ODMxOTtlWzMxMV09ODM1OTtlWzMxMl09ODU5MjtlWzMxM109ODU5MztlWzMzN109OTU1MjtlWzQ5M109MTAzOTtlWzQ5NF09MTA0MDtlWzY3Ml09MTQ4ODtlWzY3M109MTQ4OTtlWzY3NF09MTQ5MDtlWzY3NV09MTQ5MTtlWzY3Nl09MTQ5MjtlWzY3N109MTQ5MztlWzY3OF09MTQ5NDtlWzY3OV09MTQ5NTtlWzY4MF09MTQ5NjtlWzY4MV09MTQ5NztlWzY4Ml09MTQ5ODtlWzY4M109MTQ5OTtlWzY4NF09MTUwMDtlWzY4NV09MTUwMTtlWzY4Nl09MTUwMjtlWzY4N109MTUwMztlWzY4OF09MTUwNDtlWzY4OV09MTUwNTtlWzY5MF09MTUwNjtlWzY5MV09MTUwNztlWzY5Ml09MTUwODtlWzY5M109MTUwOTtlWzY5NF09MTUxMDtlWzY5NV09MTUxMTtlWzY5Nl09MTUxMjtlWzY5N109MTUxMztlWzY5OF09MTUxNDtlWzcwNV09MTUyNDtlWzcwNl09ODM2MjtlWzcxMF09NjQyODg7ZVs3MTFdPTY0Mjk4O2VbNzU5XT0xNjE3O2VbNzYxXT0xNzc2O2VbNzYzXT0xNzc4O2VbNzc1XT0xNjUyO2VbNzc3XT0xNzY0O2VbNzc4XT0xNzgwO2VbNzc5XT0xNzgxO2VbNzgwXT0xNzgyO2VbNzgyXT03NzE7ZVs3ODNdPTY0NzI2O2VbNzg2XT04MzYzO2VbNzg4XT04NTMyO2VbNzkwXT03Njg7ZVs3OTFdPTc2OTtlWzc5Ml09NzY4O2VbNzk1XT04MDM7ZVs3OTddPTY0MzM2O2VbNzk4XT02NDMzNztlWzc5OV09NjQzNDI7ZVs4MDBdPTY0MzQzO2VbODAxXT02NDM0NDtlWzgwMl09NjQzNDU7ZVs4MDNdPTY0MzYyO2VbODA0XT02NDM2MztlWzgwNV09NjQzNjQ7ZVsyNDI0XT03ODIxO2VbMjQyNV09NzgyMjtlWzI0MjZdPTc4MjM7ZVsyNDI3XT03ODI0O2VbMjQyOF09NzgyNTtlWzI0MjldPTc4MjY7ZVsyNDMwXT03ODI3O2VbMjQzM109NzY4MjtlWzI2NzhdPTgwNDU7ZVsyNjc5XT04MDQ2O2VbMjgzMF09MTU1MjtlWzI4MzhdPTY4NjtlWzI4NDBdPTc1MTtlWzI4NDJdPTc1MztlWzI4NDNdPTc1NDtlWzI4NDRdPTc1NTtlWzI4NDZdPTc1NztlWzI4NTZdPTc2NztlWzI4NTddPTg0ODtlWzI4NThdPTg0OTtlWzI4NjJdPTg1MztlWzI4NjNdPTg1NDtlWzI4NjRdPTg1NTtlWzI4NjVdPTg2MTtlWzI4NjZdPTg2MjtlWzI5MDZdPTc0NjA7ZVsyOTA4XT03NDYyO2VbMjkwOV09NzQ2MztlWzI5MTBdPTc0NjQ7ZVsyOTEyXT03NDY2O2VbMjkxM109NzQ2NztlWzI5MTRdPTc0Njg7ZVsyOTE2XT03NDcwO2VbMjkxN109NzQ3MTtlWzI5MThdPTc0NzI7ZVsyOTIwXT03NDc0O2VbMjkyMV09NzQ3NTtlWzI5MjJdPTc0NzY7ZVsyOTI0XT03NDc4O2VbMjkyNV09NzQ3OTtlWzI5MjZdPTc0ODA7ZVsyOTI4XT03NDgyO2VbMjkyOV09NzQ4MztlWzI5MzBdPTc0ODQ7ZVsyOTMyXT03NDg2O2VbMjkzM109NzQ4NztlWzI5MzRdPTc0ODg7ZVsyOTM2XT03NDkwO2VbMjkzN109NzQ5MTtlWzI5MzhdPTc0OTI7ZVsyOTQwXT03NDk0O2VbMjk0MV09NzQ5NTtlWzI5NDJdPTc0OTY7ZVsyOTQ0XT03NDk4O2VbMjk0Nl09NzUwMDtlWzI5NDhdPTc1MDI7ZVsyOTUwXT03NTA0O2VbMjk1MV09NzUwNTtlWzI5NTJdPTc1MDY7ZVsyOTU0XT03NTA4O2VbMjk1NV09NzUwOTtlWzI5NTZdPTc1MTA7ZVsyOTU4XT03NTEyO2VbMjk1OV09NzUxMztlWzI5NjBdPTc1MTQ7ZVsyOTYyXT03NTE2O2VbMjk2M109NzUxNztlWzI5NjRdPTc1MTg7ZVsyOTY2XT03NTIwO2VbMjk2N109NzUyMTtlWzI5NjhdPTc1MjI7ZVsyOTcwXT03NTI0O2VbMjk3MV09NzUyNTtlWzI5NzJdPTc1MjY7ZVsyOTc0XT03NTI4O2VbMjk3NV09NzUyOTtlWzI5NzZdPTc1MzA7ZVsyOTc4XT0xNTM3O2VbMjk3OV09MTUzODtlWzI5ODBdPTE1Mzk7ZVsyOTgyXT0xNTQ5O2VbMjk4M109MTU1MTtlWzI5ODRdPTE1NTI7ZVsyOTg2XT0xNTU0O2VbMjk4N109MTU1NTtlWzI5ODhdPTE1NTY7ZVsyOTkwXT0xNjIzO2VbMjk5MV09MTYyNDtlWzI5OTVdPTE3NzU7ZVsyOTk5XT0xNzkxO2VbMzAwMl09NjQyOTA7ZVszMDAzXT02NDI5MTtlWzMwMDRdPTY0MjkyO2VbMzAwNl09NjQyOTQ7ZVszMDA3XT02NDI5NTtlWzMwMDhdPTY0Mjk2O2VbMzAxMV09MTkwMDtlWzMwMTRdPTgyMjM7ZVszMDE1XT04MjQ0O2VbMzAxN109NzUzMjtlWzMwMThdPTc1MzM7ZVszMDE5XT03NTM0O2VbMzA3NV09NzU5MDtlWzMwNzZdPTc1OTE7ZVszMDc5XT03NTk0O2VbMzA4MF09NzU5NTtlWzMwODNdPTc1OTg7ZVszMDg0XT03NTk5O2VbMzA4N109NzYwMjtlWzMwODhdPTc2MDM7ZVszMDkxXT03NjA2O2VbMzA5Ml09NzYwNztlWzMwOTVdPTc2MTA7ZVszMDk2XT03NjExO2VbMzA5OV09NzYxNDtlWzMxMDBdPTc2MTU7ZVszMTAzXT03NjE4O2VbMzEwNF09NzYxOTtlWzMxMDddPTgzMzc7ZVszMTA4XT04MzM4O2VbMzExNl09MTg4NDtlWzMxMTldPTE4ODU7ZVszMTIwXT0xODg1O2VbMzEyM109MTg4NjtlWzMxMjRdPTE4ODY7ZVszMTI3XT0xODg3O2VbMzEyOF09MTg4NztlWzMxMzFdPTE4ODg7ZVszMTMyXT0xODg4O2VbMzEzNV09MTg4OTtlWzMxMzZdPTE4ODk7ZVszMTM5XT0xODkwO2VbMzE0MF09MTg5MDtlWzMxNDNdPTE4OTE7ZVszMTQ0XT0xODkxO2VbMzE0N109MTg5MjtlWzMxNDhdPTE4OTI7ZVszMTUzXT01ODA7ZVszMTU0XT01ODE7ZVszMTU3XT01ODQ7ZVszMTU4XT01ODU7ZVszMTYxXT01ODg7ZVszMTYyXT01ODk7ZVszMTY1XT04OTE7ZVszMTY2XT04OTI7ZVszMTY5XT0xMjc0O2VbMzE3MF09MTI3NTtlWzMxNzNdPTEyNzg7ZVszMTc0XT0xMjc5O2VbMzE4MV09NzYyMjtlWzMxODJdPTc2MjM7ZVszMjgyXT0xMTc5OTtlWzMzMTZdPTU3ODtlWzMzNzldPTQyNzg1O2VbMzM5M109MTE1OTtlWzM0MTZdPTgzNzd9KSksX2k9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlWzIyN109MzIyO2VbMjY0XT0yNjE7ZVsyOTFdPTM0Nn0pKSx6aT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzEwMDRdPTQ4O2VbMTAwNV09NDk7ZVsxMDA2XT01MDtlWzEwMDddPTUxO2VbMTAwOF09NTI7ZVsxMDA5XT01MztlWzEwMTBdPTU0O2VbMTAxMV09NTU7ZVsxMDEyXT01NjtlWzEwMTNdPTU3O2VbMTA4MV09Mzc7ZVsxMDg1XT00MztlWzEwODZdPTQ1fSkpO2Z1bmN0aW9uIGdldFN0YW5kYXJkRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4gUGkoKVt0XX1mdW5jdGlvbiBpc0tub3duRm9udE5hbWUoZSl7Y29uc3QgdD1ub3JtYWxpemVGb250TmFtZShlKTtyZXR1cm4hIShQaSgpW3RdfHxqaSgpW3RdfHxYaSgpW3RdfHxaaSgpW3RdKX1jbGFzcyBUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZT1bXSl7dGhpcy5fbWFwPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9tYXAubGVuZ3RofWZvckVhY2goZSl7Zm9yKGNvbnN0IHQgaW4gdGhpcy5fbWFwKWUodCx0aGlzLl9tYXBbdF0uY2hhckNvZGVBdCgwKSl9aGFzKGUpe3JldHVybiB2b2lkIDAhPT10aGlzLl9tYXBbZV19Z2V0KGUpe3JldHVybiB0aGlzLl9tYXBbZV19Y2hhckNvZGVPZihlKXtjb25zdCB0PXRoaXMuX21hcDtpZih0Lmxlbmd0aDw9NjU1MzYpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IoY29uc3QgaSBpbiB0KWlmKHRbaV09PT1lKXJldHVybiAwfGk7cmV0dXJuLTF9YW1lbmQoZSl7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzLl9tYXBbdF09ZVt0XX19Y2xhc3MgSWRlbnRpdHlUb1VuaWNvZGVNYXB7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmZpcnN0Q2hhcj1lO3RoaXMubGFzdENoYXI9dH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMubGFzdENoYXIrMS10aGlzLmZpcnN0Q2hhcn1mb3JFYWNoKGUpe2ZvcihsZXQgdD10aGlzLmZpcnN0Q2hhcixpPXRoaXMubGFzdENoYXI7dDw9aTt0KyspZSh0LHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXJ9Z2V0KGUpe2lmKHRoaXMuZmlyc3RDaGFyPD1lJiZlPD10aGlzLmxhc3RDaGFyKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGUpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU+PXRoaXMuZmlyc3RDaGFyJiZlPD10aGlzLmxhc3RDaGFyP2U6LTF9YW1lbmQoZSl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBhbWVuZCgpIil9fWNsYXNzIENGRkZvbnR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnByb3BlcnRpZXM9dDtjb25zdCBpPW5ldyBDRkZQYXJzZXIoZSx0LHZpKTt0aGlzLmNmZj1pLnBhcnNlKCk7dGhpcy5jZmYuZHVwbGljYXRlRmlyc3RHbHlwaCgpO2NvbnN0IGE9bmV3IENGRkNvbXBpbGVyKHRoaXMuY2ZmKTt0aGlzLnNlYWNzPXRoaXMuY2ZmLnNlYWNzO3RyeXt0aGlzLmRhdGE9YS5jb21waWxlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK3QubG9hZGVkTmFtZSk7dGhpcy5kYXRhPWV9dGhpcy5fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl9Z2V0IG51bUdseXBocygpe3JldHVybiB0aGlzLmNmZi5jaGFyU3RyaW5ncy5jb3VudH1nZXRDaGFyc2V0KCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJzZXQuY2hhcnNldH1nZXRHbHlwaE1hcHBpbmcoKXtjb25zdCBlPXRoaXMuY2ZmLHQ9dGhpcy5wcm9wZXJ0aWVzLHtjaWRUb0dpZE1hcDppLGNNYXA6YX09dCxyPWUuY2hhcnNldC5jaGFyc2V0O2xldCBzLG47aWYodC5jb21wb3NpdGUpe2xldCB0LG87aWYoaT8ubGVuZ3RoPjApe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IGU9MCxhPWkubGVuZ3RoO2U8YTtlKyspe2NvbnN0IGE9aVtlXTt2b2lkIDAhPT1hJiYodFthXT1lKX19cz1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUuaXNDSURGb250KWZvcihuPTA7bjxyLmxlbmd0aDtuKyspe2NvbnN0IGU9cltuXTtvPWEuY2hhckNvZGVPZihlKTt2b2lkIDAhPT10Py5bb10mJihvPXRbb10pO3Nbb109bn1lbHNlIGZvcihuPTA7bjxlLmNoYXJTdHJpbmdzLmNvdW50O24rKyl7bz1hLmNoYXJDb2RlT2Yobik7c1tvXT1ufXJldHVybiBzfWxldCBvPWUuZW5jb2Rpbmc/ZS5lbmNvZGluZy5lbmNvZGluZzpudWxsO3QuaXNJbnRlcm5hbEZvbnQmJihvPXQuZGVmYXVsdEVuY29kaW5nKTtzPXR5cGUxRm9udEdseXBoTWFwcGluZyh0LG8scik7cmV0dXJuIHN9aGFzR2x5cGhJZChlKXtyZXR1cm4gdGhpcy5jZmYuaGFzR2x5cGhJZChlKX1fY3JlYXRlQnVpbHRJbkVuY29kaW5nKCl7Y29uc3R7Y2hhcnNldDplLGVuY29kaW5nOnR9PXRoaXMuY2ZmO2lmKCFlfHwhdClyZXR1cm47Y29uc3QgaT1lLmNoYXJzZXQsYT10LmVuY29kaW5nLHI9W107Zm9yKGNvbnN0IGUgaW4gYSl7Y29uc3QgdD1hW2VdO2lmKHQ+PTApe2NvbnN0IGE9aVt0XTthJiYocltlXT1hKX19ci5sZW5ndGg+MCYmKHRoaXMucHJvcGVydGllcy5idWlsdEluRW5jb2Rpbmc9cil9fWZ1bmN0aW9uIGdldFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH1mdW5jdGlvbiBnZXRVaW50MTYoZSx0KXtyZXR1cm4gZVt0XTw8OHxlW3QrMV19ZnVuY3Rpb24gZ2V0SW50MTYoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNik+PjE2fWZ1bmN0aW9uIGdldEludDgoZSx0KXtyZXR1cm4gZVt0XTw8MjQ+PjI0fWZ1bmN0aW9uIGdldEZsb2F0MjE0KGUsdCl7cmV0dXJuIGdldEludDE2KGUsdCkvMTYzODR9ZnVuY3Rpb24gZ2V0U3Vicm91dGluZUJpYXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgaT0zMjc2ODt0PDEyNDA/aT0xMDc6dDwzMzkwMCYmKGk9MTEzMSk7cmV0dXJuIGl9ZnVuY3Rpb24gcGFyc2VDbWFwKGUsdCxpKXtjb25zdCBhPTE9PT1nZXRVaW50MTYoZSx0KzIpP2dldFVpbnQzMihlLHQrOCk6Z2V0VWludDMyKGUsdCsxNikscj1nZXRVaW50MTYoZSx0K2EpO2xldCBzLG4sbztpZig0PT09cil7Z2V0VWludDE2KGUsdCthKzIpO2NvbnN0IGk9Z2V0VWludDE2KGUsdCthKzYpPj4xO249dCthKzE0O3M9W107Zm9yKG89MDtvPGk7bysrLG4rPTIpc1tvXT17ZW5kOmdldFVpbnQxNihlLG4pfTtuKz0yO2ZvcihvPTA7bzxpO28rKyxuKz0yKXNbb10uc3RhcnQ9Z2V0VWludDE2KGUsbik7Zm9yKG89MDtvPGk7bysrLG4rPTIpc1tvXS5pZERlbHRhPWdldFVpbnQxNihlLG4pO2ZvcihvPTA7bzxpO28rKyxuKz0yKXtsZXQgdD1nZXRVaW50MTYoZSxuKTtpZigwIT09dCl7c1tvXS5pZHM9W107Zm9yKGxldCBpPTAsYT1zW29dLmVuZC1zW29dLnN0YXJ0KzE7aTxhO2krKyl7c1tvXS5pZHNbaV09Z2V0VWludDE2KGUsbit0KTt0Kz0yfX19cmV0dXJuIHN9aWYoMTI9PT1yKXtjb25zdCBpPWdldFVpbnQzMihlLHQrYSsxMik7bj10K2ErMTY7cz1bXTtmb3Iobz0wO288aTtvKyspe3Q9Z2V0VWludDMyKGUsbik7cy5wdXNoKHtzdGFydDp0LGVuZDpnZXRVaW50MzIoZSxuKzQpLGlkRGVsdGE6Z2V0VWludDMyKGUsbis4KS10fSk7bis9MTJ9cmV0dXJuIHN9dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bnN1cHBvcnRlZCBjbWFwOiAke3J9YCl9ZnVuY3Rpb24gcGFyc2VDZmYoZSx0LGksYSl7Y29uc3Qgcj1uZXcgQ0ZGUGFyc2VyKG5ldyBTdHJlYW0oZSx0LGktdCkse30sYSkucGFyc2UoKTtyZXR1cm57Z2x5cGhzOnIuY2hhclN0cmluZ3Mub2JqZWN0cyxzdWJyczpyLnRvcERpY3QucHJpdmF0ZURpY3Q/LnN1YnJzSW5kZXg/Lm9iamVjdHMsZ3N1YnJzOnIuZ2xvYmFsU3VickluZGV4Py5vYmplY3RzLGlzQ0ZGQ0lERm9udDpyLmlzQ0lERm9udCxmZFNlbGVjdDpyLmZkU2VsZWN0LGZkQXJyYXk6ci5mZEFycmF5fX1mdW5jdGlvbiBsb29rdXBDbWFwKGUsdCl7Y29uc3QgaT10LmNvZGVQb2ludEF0KDApO2xldCBhPTAscj0wLHM9ZS5sZW5ndGgtMTtmb3IoO3I8czspe2NvbnN0IHQ9citzKzE+PjE7aTxlW3RdLnN0YXJ0P3M9dC0xOnI9dH1lW3JdLnN0YXJ0PD1pJiZpPD1lW3JdLmVuZCYmKGE9ZVtyXS5pZERlbHRhKyhlW3JdLmlkcz9lW3JdLmlkc1tpLWVbcl0uc3RhcnRdOmkpJjY1NTM1KTtyZXR1cm57Y2hhckNvZGU6aSxnbHlwaElkOmF9fWZ1bmN0aW9uIGNvbXBpbGVHbHlmKGUsdCxpKXtmdW5jdGlvbiBtb3ZlVG8oZSxpKXt0LmFkZChodCxbZSxpXSl9ZnVuY3Rpb24gbGluZVRvKGUsaSl7dC5hZGQobHQsW2UsaV0pfWZ1bmN0aW9uIHF1YWRyYXRpY0N1cnZlVG8oZSxpLGEscil7dC5hZGQoQ3QsW2UsaSxhLHJdKX1sZXQgYT0wO2NvbnN0IHI9Z2V0SW50MTYoZSxhKTtsZXQgcyxuPTAsbz0wO2ErPTEwO2lmKHI8MClkb3tzPWdldFVpbnQxNihlLGEpO2NvbnN0IHI9Z2V0VWludDE2KGUsYSsyKTthKz00O2xldCBnLGM7aWYoMSZzKXtpZigyJnMpe2c9Z2V0SW50MTYoZSxhKTtjPWdldEludDE2KGUsYSsyKX1lbHNle2c9Z2V0VWludDE2KGUsYSk7Yz1nZXRVaW50MTYoZSxhKzIpfWErPTR9ZWxzZSBpZigyJnMpe2c9Z2V0SW50OChlLGErKyk7Yz1nZXRJbnQ4KGUsYSsrKX1lbHNle2c9ZVthKytdO2M9ZVthKytdfWlmKDImcyl7bj1nO289Y31lbHNle249MDtvPTB9bGV0IGg9MSxsPTEsQz0wLFE9MDtpZig4JnMpe2g9bD1nZXRGbG9hdDIxNChlLGEpO2ErPTJ9ZWxzZSBpZig2NCZzKXtoPWdldEZsb2F0MjE0KGUsYSk7bD1nZXRGbG9hdDIxNChlLGErMik7YSs9NH1lbHNlIGlmKDEyOCZzKXtoPWdldEZsb2F0MjE0KGUsYSk7Qz1nZXRGbG9hdDIxNChlLGErMik7UT1nZXRGbG9hdDIxNChlLGErNCk7bD1nZXRGbG9hdDIxNChlLGErNik7YSs9OH1jb25zdCBFPWkuZ2x5cGhzW3JdO2lmKEUpe3QuYWRkKFF0KTt0LmFkZCh1dCxbaCxDLFEsbCxuLG9dKTtjb21waWxlR2x5ZihFLHQsaSk7dC5hZGQoQnQpfX13aGlsZSgzMiZzKTtlbHNle2NvbnN0IHQ9W107bGV0IGksZztmb3IoaT0wO2k8cjtpKyspe3QucHVzaChnZXRVaW50MTYoZSxhKSk7YSs9Mn1hKz0yK2dldFVpbnQxNihlLGEpO2NvbnN0IGM9dC5hdCgtMSkrMSxoPVtdO2Zvcig7aC5sZW5ndGg8Yzspe3M9ZVthKytdO2xldCB0PTE7OCZzJiYodCs9ZVthKytdKTtmb3IoO3QtLSA+MDspaC5wdXNoKHtmbGFnczpzfSl9Zm9yKGk9MDtpPGM7aSsrKXtzd2l0Y2goMTgmaFtpXS5mbGFncyl7Y2FzZSAwOm4rPWdldEludDE2KGUsYSk7YSs9MjticmVhaztjYXNlIDI6bi09ZVthKytdO2JyZWFrO2Nhc2UgMTg6bis9ZVthKytdfWhbaV0ueD1ufWZvcihpPTA7aTxjO2krKyl7c3dpdGNoKDM2JmhbaV0uZmxhZ3Mpe2Nhc2UgMDpvKz1nZXRJbnQxNihlLGEpO2ErPTI7YnJlYWs7Y2FzZSA0Om8tPWVbYSsrXTticmVhaztjYXNlIDM2Om8rPWVbYSsrXX1oW2ldLnk9b31sZXQgbD0wO2ZvcihhPTA7YTxyO2ErKyl7Y29uc3QgZT10W2FdLHI9aC5zbGljZShsLGUrMSk7aWYoMSZyWzBdLmZsYWdzKXIucHVzaChyWzBdKTtlbHNlIGlmKDEmci5hdCgtMSkuZmxhZ3Mpci51bnNoaWZ0KHIuYXQoLTEpKTtlbHNle2NvbnN0IGU9e2ZsYWdzOjEseDooclswXS54K3IuYXQoLTEpLngpLzIseTooclswXS55K3IuYXQoLTEpLnkpLzJ9O3IudW5zaGlmdChlKTtyLnB1c2goZSl9bW92ZVRvKHJbMF0ueCxyWzBdLnkpO2ZvcihpPTEsZz1yLmxlbmd0aDtpPGc7aSsrKWlmKDEmcltpXS5mbGFncylsaW5lVG8ocltpXS54LHJbaV0ueSk7ZWxzZSBpZigxJnJbaSsxXS5mbGFncyl7cXVhZHJhdGljQ3VydmVUbyhyW2ldLngscltpXS55LHJbaSsxXS54LHJbaSsxXS55KTtpKyt9ZWxzZSBxdWFkcmF0aWNDdXJ2ZVRvKHJbaV0ueCxyW2ldLnksKHJbaV0ueCtyW2krMV0ueCkvMiwocltpXS55K3JbaSsxXS55KS8yKTtsPWUrMX19fWZ1bmN0aW9uIGNvbXBpbGVDaGFyU3RyaW5nKGUsdCxpLGEpe2Z1bmN0aW9uIG1vdmVUbyhlLGkpe3QuYWRkKGh0LFtlLGldKX1mdW5jdGlvbiBsaW5lVG8oZSxpKXt0LmFkZChsdCxbZSxpXSl9ZnVuY3Rpb24gYmV6aWVyQ3VydmVUbyhlLGksYSxyLHMsbil7dC5hZGQoSXQsW2UsaSxhLHIscyxuXSl9Y29uc3Qgcj1bXTtsZXQgcz0wLG49MCxvPTA7IWZ1bmN0aW9uIHBhcnNlKGUpe2xldCBnPTA7Zm9yKDtnPGUubGVuZ3RoOyl7bGV0IGMsaCxsLEMsUSxFLHUsZCxmLHA9ITEsbT1lW2crK107c3dpdGNoKG0pe2Nhc2UgMTpjYXNlIDM6Y2FzZSAxODpjYXNlIDIzOm8rPXIubGVuZ3RoPj4xO3A9ITA7YnJlYWs7Y2FzZSA0Om4rPXIucG9wKCk7bW92ZVRvKHMsbik7cD0hMDticmVhaztjYXNlIDU6Zm9yKDtyLmxlbmd0aD4wOyl7cys9ci5zaGlmdCgpO24rPXIuc2hpZnQoKTtsaW5lVG8ocyxuKX1icmVhaztjYXNlIDY6Zm9yKDtyLmxlbmd0aD4wOyl7cys9ci5zaGlmdCgpO2xpbmVUbyhzLG4pO2lmKDA9PT1yLmxlbmd0aClicmVhaztuKz1yLnNoaWZ0KCk7bGluZVRvKHMsbil9YnJlYWs7Y2FzZSA3OmZvcig7ci5sZW5ndGg+MDspe24rPXIuc2hpZnQoKTtsaW5lVG8ocyxuKTtpZigwPT09ci5sZW5ndGgpYnJlYWs7cys9ci5zaGlmdCgpO2xpbmVUbyhzLG4pfWJyZWFrO2Nhc2UgODpmb3IoO3IubGVuZ3RoPjA7KXtjPXMrci5zaGlmdCgpO2w9bityLnNoaWZ0KCk7aD1jK3Iuc2hpZnQoKTtDPWwrci5zaGlmdCgpO3M9aCtyLnNoaWZ0KCk7bj1DK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsbCxoLEMscyxuKX1icmVhaztjYXNlIDEwOmQ9ci5wb3AoKTtmPW51bGw7aWYoaS5pc0NGRkNJREZvbnQpe2NvbnN0IGU9aS5mZFNlbGVjdC5nZXRGREluZGV4KGEpO2lmKGU+PTAmJmU8aS5mZEFycmF5Lmxlbmd0aCl7Y29uc3QgdD1pLmZkQXJyYXlbZV07bGV0IGE7dC5wcml2YXRlRGljdD8uc3VicnNJbmRleCYmKGE9dC5wcml2YXRlRGljdC5zdWJyc0luZGV4Lm9iamVjdHMpO2lmKGEpe2QrPWdldFN1YnJvdXRpbmVCaWFzKGEpO2Y9YVtkXX19ZWxzZSB3YXJuKCJJbnZhbGlkIGZkIGluZGV4IGZvciBnbHlwaCBpbmRleC4iKX1lbHNlIGY9aS5zdWJyc1tkK2kuc3VicnNCaWFzXTtmJiZwYXJzZShmKTticmVhaztjYXNlIDExOnJldHVybjtjYXNlIDEyOm09ZVtnKytdO3N3aXRjaChtKXtjYXNlIDM0OmM9cytyLnNoaWZ0KCk7aD1jK3Iuc2hpZnQoKTtRPW4rci5zaGlmdCgpO3M9aCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLG4saCxRLHMsUSk7Yz1zK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO3M9aCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLFEsaCxuLHMsbik7YnJlYWs7Y2FzZSAzNTpjPXMrci5zaGlmdCgpO2w9bityLnNoaWZ0KCk7aD1jK3Iuc2hpZnQoKTtDPWwrci5zaGlmdCgpO3M9aCtyLnNoaWZ0KCk7bj1DK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsbCxoLEMscyxuKTtjPXMrci5zaGlmdCgpO2w9bityLnNoaWZ0KCk7aD1jK3Iuc2hpZnQoKTtDPWwrci5zaGlmdCgpO3M9aCtyLnNoaWZ0KCk7bj1DK3Iuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsbCxoLEMscyxuKTtyLnBvcCgpO2JyZWFrO2Nhc2UgMzY6Yz1zK3Iuc2hpZnQoKTtRPW4rci5zaGlmdCgpO2g9YytyLnNoaWZ0KCk7RT1RK3Iuc2hpZnQoKTtzPWgrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxRLGgsRSxzLEUpO2M9cytyLnNoaWZ0KCk7aD1jK3Iuc2hpZnQoKTt1PUUrci5zaGlmdCgpO3M9aCtyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLEUsaCx1LHMsbik7YnJlYWs7Y2FzZSAzNzpjb25zdCBlPXMsdD1uO2M9cytyLnNoaWZ0KCk7bD1uK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO0M9bCtyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtuPUMrci5zaGlmdCgpO2JlemllckN1cnZlVG8oYyxsLGgsQyxzLG4pO2M9cytyLnNoaWZ0KCk7bD1uK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO0M9bCtyLnNoaWZ0KCk7cz1oO249QztNYXRoLmFicyhzLWUpPk1hdGguYWJzKG4tdCk/cys9ci5zaGlmdCgpOm4rPXIuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGMsbCxoLEMscyxuKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5rbm93biBvcGVyYXRvcjogMTIgJHttfWApfWJyZWFrO2Nhc2UgMTQ6aWYoci5sZW5ndGg+PTQpe2NvbnN0IGU9ci5wb3AoKSxhPXIucG9wKCk7bj1yLnBvcCgpO3M9ci5wb3AoKTt0LmFkZChRdCk7dC5hZGQoZHQsW3Msbl0pO2xldCBvPWxvb2t1cENtYXAoaS5jbWFwLFN0cmluZy5mcm9tQ2hhckNvZGUoaS5nbHlwaE5hbWVNYXBbZmlbZV1dKSk7Y29tcGlsZUNoYXJTdHJpbmcoaS5nbHlwaHNbby5nbHlwaElkXSx0LGksby5nbHlwaElkKTt0LmFkZChCdCk7bz1sb29rdXBDbWFwKGkuY21hcCxTdHJpbmcuZnJvbUNoYXJDb2RlKGkuZ2x5cGhOYW1lTWFwW2ZpW2FdXSkpO2NvbXBpbGVDaGFyU3RyaW5nKGkuZ2x5cGhzW28uZ2x5cGhJZF0sdCxpLG8uZ2x5cGhJZCl9cmV0dXJuO2Nhc2UgMTk6Y2FzZSAyMDpvKz1yLmxlbmd0aD4+MTtnKz1vKzc+PjM7cD0hMDticmVhaztjYXNlIDIxOm4rPXIucG9wKCk7cys9ci5wb3AoKTttb3ZlVG8ocyxuKTtwPSEwO2JyZWFrO2Nhc2UgMjI6cys9ci5wb3AoKTttb3ZlVG8ocyxuKTtwPSEwO2JyZWFrO2Nhc2UgMjQ6Zm9yKDtyLmxlbmd0aD4yOyl7Yz1zK3Iuc2hpZnQoKTtsPW4rci5zaGlmdCgpO2g9YytyLnNoaWZ0KCk7Qz1sK3Iuc2hpZnQoKTtzPWgrci5zaGlmdCgpO249QytyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGwsaCxDLHMsbil9cys9ci5zaGlmdCgpO24rPXIuc2hpZnQoKTtsaW5lVG8ocyxuKTticmVhaztjYXNlIDI1OmZvcig7ci5sZW5ndGg+Njspe3MrPXIuc2hpZnQoKTtuKz1yLnNoaWZ0KCk7bGluZVRvKHMsbil9Yz1zK3Iuc2hpZnQoKTtsPW4rci5zaGlmdCgpO2g9YytyLnNoaWZ0KCk7Qz1sK3Iuc2hpZnQoKTtzPWgrci5zaGlmdCgpO249QytyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGwsaCxDLHMsbik7YnJlYWs7Y2FzZSAyNjpyLmxlbmd0aCUyJiYocys9ci5zaGlmdCgpKTtmb3IoO3IubGVuZ3RoPjA7KXtjPXM7bD1uK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO0M9bCtyLnNoaWZ0KCk7cz1oO249QytyLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhjLGwsaCxDLHMsbil9YnJlYWs7Y2FzZSAyNzpyLmxlbmd0aCUyJiYobis9ci5zaGlmdCgpKTtmb3IoO3IubGVuZ3RoPjA7KXtjPXMrci5zaGlmdCgpO2w9bjtoPWMrci5zaGlmdCgpO0M9bCtyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtuPUM7YmV6aWVyQ3VydmVUbyhjLGwsaCxDLHMsbil9YnJlYWs7Y2FzZSAyODpyLnB1c2goKGVbZ108PDI0fGVbZysxXTw8MTYpPj4xNik7Zys9MjticmVhaztjYXNlIDI5OmQ9ci5wb3AoKStpLmdzdWJyc0JpYXM7Zj1pLmdzdWJyc1tkXTtmJiZwYXJzZShmKTticmVhaztjYXNlIDMwOmZvcig7ci5sZW5ndGg+MDspe2M9cztsPW4rci5zaGlmdCgpO2g9YytyLnNoaWZ0KCk7Qz1sK3Iuc2hpZnQoKTtzPWgrci5zaGlmdCgpO249QysoMT09PXIubGVuZ3RoP3Iuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGMsbCxoLEMscyxuKTtpZigwPT09ci5sZW5ndGgpYnJlYWs7Yz1zK3Iuc2hpZnQoKTtsPW47aD1jK3Iuc2hpZnQoKTtDPWwrci5zaGlmdCgpO249QytyLnNoaWZ0KCk7cz1oKygxPT09ci5sZW5ndGg/ci5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyxsLGgsQyxzLG4pfWJyZWFrO2Nhc2UgMzE6Zm9yKDtyLmxlbmd0aD4wOyl7Yz1zK3Iuc2hpZnQoKTtsPW47aD1jK3Iuc2hpZnQoKTtDPWwrci5zaGlmdCgpO249QytyLnNoaWZ0KCk7cz1oKygxPT09ci5sZW5ndGg/ci5zaGlmdCgpOjApO2JlemllckN1cnZlVG8oYyxsLGgsQyxzLG4pO2lmKDA9PT1yLmxlbmd0aClicmVhaztjPXM7bD1uK3Iuc2hpZnQoKTtoPWMrci5zaGlmdCgpO0M9bCtyLnNoaWZ0KCk7cz1oK3Iuc2hpZnQoKTtuPUMrKDE9PT1yLmxlbmd0aD9yLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhjLGwsaCxDLHMsbil9YnJlYWs7ZGVmYXVsdDppZihtPDMyKXRocm93IG5ldyBGb3JtYXRFcnJvcihgdW5rbm93biBvcGVyYXRvcjogJHttfWApO2lmKG08MjQ3KXIucHVzaChtLTEzOSk7ZWxzZSBpZihtPDI1MSlyLnB1c2goMjU2KihtLTI0NykrZVtnKytdKzEwOCk7ZWxzZSBpZihtPDI1NSlyLnB1c2goMjU2Ki0obS0yNTEpLWVbZysrXS0xMDgpO2Vsc2V7ci5wdXNoKChlW2ddPDwyNHxlW2crMV08PDE2fGVbZysyXTw8OHxlW2crM10pLzY1NTM2KTtnKz00fX1wJiYoci5sZW5ndGg9MCl9fShlKX1jb25zdCAkaT1bXTtjbGFzcyBDb21tYW5kc3tjbWRzPVtdO2FkZChlLHQpe2lmKHQpaWYoaXNOdW1iZXJBcnJheSh0LG51bGwpKXRoaXMuY21kcy5wdXNoKGUsLi4udCk7ZWxzZXt3YXJuKGBDb21tYW5kcy5hZGQgLSAiJHtlfSIgaGFzIGF0IGxlYXN0IG9uZSBub24tbnVtYmVyIGFyZzogIiR7dH0iLmApO2NvbnN0IGk9dC5tYXAoKGU9PiJudW1iZXIiPT10eXBlb2YgZT9lOjApKTt0aGlzLmNtZHMucHVzaChlLC4uLmkpfWVsc2UgdGhpcy5jbWRzLnB1c2goZSl9fWNsYXNzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbnN0cnVjdG9yPT09Q29tcGlsZWRGb250JiZ1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgQ29tcGlsZWRGb250LiIpO3RoaXMuZm9udE1hdHJpeD1lO3RoaXMuY29tcGlsZWRHbHlwaHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWQ9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRQYXRoSnMoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOml9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO2xldCBhLHI9dGhpcy5jb21waWxlZEdseXBoc1tpXTtpZighcil7dHJ5e3I9dGhpcy5jb21waWxlR2x5cGgodGhpcy5nbHlwaHNbaV0saSl9Y2F0Y2goZSl7cj0kaTthPWV9dGhpcy5jb21waWxlZEdseXBoc1tpXT1yfXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XT8/PWk7aWYoYSl0aHJvdyBhO3JldHVybiByfWNvbXBpbGVHbHlwaChlLHQpe2lmKCFlfHwwPT09ZS5sZW5ndGh8fDE0PT09ZVswXSlyZXR1cm4gJGk7bGV0IGE9dGhpcy5mb250TWF0cml4O2lmKHRoaXMuaXNDRkZDSURGb250KXtjb25zdCBlPXRoaXMuZmRTZWxlY3QuZ2V0RkRJbmRleCh0KTtpZihlPj0wJiZlPHRoaXMuZmRBcnJheS5sZW5ndGgpe2E9dGhpcy5mZEFycmF5W2VdLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpfHxpfWVsc2Ugd2FybigiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIil9Y29uc3Qgcj1uZXcgQ29tbWFuZHM7ci5hZGQoUXQpO3IuYWRkKHV0LGEuc2xpY2UoKSk7ci5hZGQoRXQpO3RoaXMuY29tcGlsZUdseXBoSW1wbChlLHIsdCk7ci5hZGQoQnQpO3JldHVybiByLmNtZHN9Y29tcGlsZUdseXBoSW1wbCgpe3VucmVhY2hhYmxlKCJDaGlsZHJlbiBjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQgdGhpcy4iKX1oYXNCdWlsdFBhdGgoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOml9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO3JldHVybiB2b2lkIDAhPT10aGlzLmNvbXBpbGVkR2x5cGhzW2ldJiZ2b2lkIDAhPT10aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWRbdF19fWNsYXNzIFRydWVUeXBlQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKGl8fFs0ODhlLTYsMCwwLDQ4OGUtNiwwLDBdKTt0aGlzLmdseXBocz1lO3RoaXMuY21hcD10fWNvbXBpbGVHbHlwaEltcGwoZSx0KXtjb21waWxlR2x5ZihlLHQsdGhpcyl9fWNsYXNzIFR5cGUyQ29tcGlsZWQgZXh0ZW5kcyBDb21waWxlZEZvbnR7Y29uc3RydWN0b3IoZSx0LGksYSl7c3VwZXIoaXx8Wy4wMDEsMCwwLC4wMDEsMCwwXSk7dGhpcy5nbHlwaHM9ZS5nbHlwaHM7dGhpcy5nc3VicnM9ZS5nc3VicnN8fFtdO3RoaXMuc3VicnM9ZS5zdWJyc3x8W107dGhpcy5jbWFwPXQ7dGhpcy5nbHlwaE5hbWVNYXA9YXx8TmkoKTt0aGlzLmdzdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5nc3VicnMpO3RoaXMuc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuc3VicnMpO3RoaXMuaXNDRkZDSURGb250PWUuaXNDRkZDSURGb250O3RoaXMuZmRTZWxlY3Q9ZS5mZFNlbGVjdDt0aGlzLmZkQXJyYXk9ZS5mZEFycmF5fWNvbXBpbGVHbHlwaEltcGwoZSx0LGkpe2NvbXBpbGVDaGFyU3RyaW5nKGUsdCx0aGlzLGkpfX1jbGFzcyBGb250UmVuZGVyZXJGYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0KXtjb25zdCBpPW5ldyBVaW50OEFycmF5KGUuZGF0YSk7bGV0IGEscixzLG4sbyxnO2NvbnN0IGM9Z2V0VWludDE2KGksNCk7Zm9yKGxldCBlPTAsaD0xMjtlPGM7ZSsrLGgrPTE2KXtjb25zdCBlPWJ5dGVzVG9TdHJpbmcoaS5zdWJhcnJheShoLGgrNCkpLGM9Z2V0VWludDMyKGksaCs4KSxsPWdldFVpbnQzMihpLGgrMTIpO3N3aXRjaChlKXtjYXNlImNtYXAiOmE9cGFyc2VDbWFwKGksYyk7YnJlYWs7Y2FzZSJnbHlmIjpyPWkuc3ViYXJyYXkoYyxjK2wpO2JyZWFrO2Nhc2UibG9jYSI6cz1pLnN1YmFycmF5KGMsYytsKTticmVhaztjYXNlImhlYWQiOmc9Z2V0VWludDE2KGksYysxOCk7bz1nZXRVaW50MTYoaSxjKzUwKTticmVhaztjYXNlIkNGRiAiOm49cGFyc2VDZmYoaSxjLGMrbCx0KX19aWYocil7Y29uc3QgdD1nP1sxL2csMCwwLDEvZywwLDBdOmUuZm9udE1hdHJpeDtyZXR1cm4gbmV3IFRydWVUeXBlQ29tcGlsZWQoZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZSx0LGkpe2xldCBhLHI7aWYoaSl7YT00O3I9Z2V0VWludDMyfWVsc2V7YT0yO3I9KGUsdCk9PjIqZ2V0VWludDE2KGUsdCl9Y29uc3Qgcz1bXTtsZXQgbj1yKHQsMCk7Zm9yKGxldCBpPWE7aTx0Lmxlbmd0aDtpKz1hKXtjb25zdCBhPXIodCxpKTtzLnB1c2goZS5zdWJhcnJheShuLGEpKTtuPWF9cmV0dXJuIHN9KHIscyxvKSxhLHQpfXJldHVybiBuZXcgVHlwZTJDb21waWxlZChuLGEsZS5mb250TWF0cml4LGUuZ2x5cGhOYW1lTWFwKX19Y29uc3QgQWE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9NjAwO2VbIkNvdXJpZXItQm9sZCJdPTYwMDtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09NjAwO2VbIkNvdXJpZXItT2JsaXF1ZSJdPTYwMDtlLkhlbHZldGljYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuZXhjbGFtPTI3ODtlLnF1b3RlZGJsPTM1NTtlLm51bWJlcnNpZ249NTU2O2UuZG9sbGFyPTU1NjtlLnBlcmNlbnQ9ODg5O2UuYW1wZXJzYW5kPTY2NztlLnF1b3RlcmlnaHQ9MjIyO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9Mzg5O2UucGx1cz01ODQ7ZS5jb21tYT0yNzg7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI3ODtlLnNsYXNoPTI3ODtlLnplcm89NTU2O2Uub25lPTU1NjtlLnR3bz01NTY7ZS50aHJlZT01NTY7ZS5mb3VyPTU1NjtlLmZpdmU9NTU2O2Uuc2l4PTU1NjtlLnNldmVuPTU1NjtlLmVpZ2h0PTU1NjtlLm5pbmU9NTU2O2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTg0O2UuZXF1YWw9NTg0O2UuZ3JlYXRlcj01ODQ7ZS5xdWVzdGlvbj01NTY7ZS5hdD0xMDE1O2UuQT02Njc7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01MDA7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTI3ODtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mjc4O2UuYXNjaWljaXJjdW09NDY5O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9MjIyO2UuYT01NTY7ZS5iPTU1NjtlLmM9NTAwO2UuZD01NTY7ZS5lPTU1NjtlLmY9Mjc4O2UuZz01NTY7ZS5oPTU1NjtlLmk9MjIyO2Uuaj0yMjI7ZS5rPTUwMDtlLmw9MjIyO2UubT04MzM7ZS5uPTU1NjtlLm89NTU2O2UucD01NTY7ZS5xPTU1NjtlLnI9MzMzO2Uucz01MDA7ZS50PTI3ODtlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTUwMDtlLmJyYWNlbGVmdD0zMzQ7ZS5iYXI9MjYwO2UuYnJhY2VyaWdodD0zMzQ7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MTkxO2UucXVvdGVkYmxsZWZ0PTMzMztlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTM3O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTIyMjtlLnF1b3RlZGJsYmFzZT0zMzM7ZS5xdW90ZWRibHJpZ2h0PTMzMztlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yMjI7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD02Njc7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD01MDA7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01MDA7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTIyMjtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01MDA7ZS5zY2VkaWxsYT01MDA7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NjY3O2UucmNhcm9uPTMzMztlLmNjZWRpbGxhPTUwMDtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj02NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT02Njc7ZS5BYnJldmU9NjY3O2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTU1NjtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTUwMDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yNjA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTMzMztlLm9tYWNyb249NTU2O2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yMjI7ZS50Y2Fyb249MzE3O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02Njc7ZS5BZGllcmVzaXM9NjY3O2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTIyMjtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTU2O2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTAwO2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTU2O2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249Mjk5O2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NTU2O2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTU2O2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTU1NjtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTU2O2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9MzMzO2UuTnRpbGRlPTcyMjtlLm90aWxkZT01NTY7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02Njc7ZS5Bb2dvbmVrPTY2NztlLkFyaW5nPTY2NztlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01MDA7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTU1NjtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTU2O2UuZXRoPTU1NjtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KSk7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00NzQ7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD03MjI7ZS5xdW90ZXJpZ2h0PTI3ODtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NjExO2UuYXQ9OTc1O2UuQT03MjI7ZS5CPTcyMjtlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTcyMjtlLkk9Mjc4O2UuSj01NTY7ZS5LPTcyMjtlLkw9NjExO2UuTT04MzM7ZS5OPTcyMjtlLk89Nzc4O2UuUD02Njc7ZS5RPTc3ODtlLlI9NzIyO2UuUz02Njc7ZS5UPTYxMTtlLlU9NzIyO2UuVj02Njc7ZS5XPTk0NDtlLlg9NjY3O2UuWT02Njc7ZS5aPTYxMTtlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTg0O2UudW5kZXJzY29yZT01NTY7ZS5xdW90ZWxlZnQ9Mjc4O2UuYT01NTY7ZS5iPTYxMTtlLmM9NTU2O2UuZD02MTE7ZS5lPTU1NjtlLmY9MzMzO2UuZz02MTE7ZS5oPTYxMTtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTU1NjtlLmw9Mjc4O2UubT04ODk7ZS5uPTYxMTtlLm89NjExO2UucD02MTE7ZS5xPTYxMTtlLnI9Mzg5O2Uucz01NTY7ZS50PTMzMztlLnU9NjExO2Uudj01NTY7ZS53PTc3ODtlLng9NTU2O2UueT01NTY7ZS56PTUwMDtlLmJyYWNlbGVmdD0zODk7ZS5iYXI9MjgwO2UuYnJhY2VyaWdodD0zODk7ZS5hc2NpaXRpbGRlPTU4NDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01NTY7ZS5zdGVybGluZz01NTY7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTU2O2UuZmxvcmluPTU1NjtlLnNlY3Rpb249NTU2O2UuY3VycmVuY3k9NTU2O2UucXVvdGVzaW5nbGU9MjM4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTU2O2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT02MTE7ZS5mbD02MTE7ZS5lbmRhc2g9NTU2O2UuZGFnZ2VyPTU1NjtlLmRhZ2dlcmRibD01NTY7ZS5wZXJpb2RjZW50ZXJlZD0yNzg7ZS5wYXJhZ3JhcGg9NTU2O2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTI3ODtlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTU1NjtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj02MTE7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTM3MDtlLkxzbGFzaD02MTE7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTM2NTtlLmFlPTg4OTtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NjExO2Uub2U9OTQ0O2UuZ2VybWFuZGJscz02MTE7ZS5JZGllcmVzaXM9Mjc4O2UuZWFjdXRlPTU1NjtlLmFicmV2ZT01NTY7ZS51aHVuZ2FydW1sYXV0PTYxMTtlLmVjYXJvbj01NTY7ZS5ZZGllcmVzaXM9NjY3O2UuZGl2aWRlPTU4NDtlLllhY3V0ZT02Njc7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTU2O2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTU1NjtlLnNjb21tYWFjY2VudD01NTY7ZS5lY2lyY3VtZmxleD01NTY7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01NTY7ZS5VYWN1dGU9NzIyO2UudW9nb25laz02MTE7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03Mzc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj01NTY7ZS5hcmluZz01NTY7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01NTY7ZS5UY29tbWFhY2NlbnQ9NjExO2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01NTY7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj01NTY7ZS5zY2VkaWxsYT01NTY7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTYxMTtlLmFjaXJjdW1mbGV4PTU1NjtlLkFtYWNyb249NzIyO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTU1NjtlLlpkb3RhY2NlbnQ9NjExO2UuVGhvcm49NjY3O2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTY2NztlLmRjYXJvbj03NDM7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTYxMTtlLnRocmVlc3VwZXJpb3I9MzMzO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTg0O2UudWFjdXRlPTYxMTtlLlRjYXJvbj02MTE7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTU2O2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01NTY7ZS5lZGllcmVzaXM9NTU2O2UuY2FjdXRlPTU1NjtlLm5hY3V0ZT02MTE7ZS51bWFjcm9uPTYxMTtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mjc4O2UucGx1c21pbnVzPTU4NDtlLmJyb2tlbmJhcj0yODA7ZS5yZWdpc3RlcmVkPTczNztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTI3ODtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTM4OTtlLm9tYWNyb249NjExO2UuWmFjdXRlPTYxMTtlLlpjYXJvbj02MTE7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249Mzg5O2UuZW9nb25laz01NTY7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTU1NjtlLnphY3V0ZT01MDA7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NjExO2UuYW1hY3Jvbj01NTY7ZS5zYWN1dGU9NTU2O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj02MTE7ZS50d29zdXBlcmlvcj0zMzM7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NjExO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NjExO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NjExO2UudGhyZWVxdWFydGVycz04MzQ7ZS5TY2VkaWxsYT02Njc7ZS5sY2Fyb249NDAwO2UuS2NvbW1hYWNjZW50PTcyMjtlLkxhY3V0ZT02MTE7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD01NTY7ZS5JZ3JhdmU9Mjc4O2UuSW1hY3Jvbj0yNzg7ZS5MY2Fyb249NjExO2Uub25laGFsZj04MzQ7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NjExO2UubnRpbGRlPTYxMTtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NTU2O2UuZ2JyZXZlPTYxMTtlLm9uZXF1YXJ0ZXI9ODM0O2UuU2Nhcm9uPTY2NztlLlNjb21tYWFjY2VudD02Njc7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NjExO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT02MTE7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTcyMjtlLm90aWxkZT02MTE7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTYxMTtlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTUwMDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTI3ODtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01ODQ7ZS5JY2lyY3VtZmxleD0yNzg7ZS5uY2Fyb249NjExO2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTg0O2Uub2RpZXJlc2lzPTYxMTtlLnVkaWVyZXNpcz02MTE7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NjExO2UuZXRoPTYxMTtlLnpjYXJvbj01MDA7ZS5uY29tbWFhY2NlbnQ9NjExO2Uub25lc3VwZXJpb3I9MzMzO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTU1Nn0pKTtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSkpO2UuU3ltYm9sPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UudW5pdmVyc2FsPTcxMztlLm51bWJlcnNpZ249NTAwO2UuZXhpc3RlbnRpYWw9NTQ5O2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2Uuc3VjaHRoYXQ9NDM5O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2ttYXRoPTUwMDtlLnBsdXM9NTQ5O2UuY29tbWE9MjUwO2UubWludXM9NTQ5O2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTQ5O2UuZXF1YWw9NTQ5O2UuZ3JlYXRlcj01NDk7ZS5xdWVzdGlvbj00NDQ7ZS5jb25ncnVlbnQ9NTQ5O2UuQWxwaGE9NzIyO2UuQmV0YT02Njc7ZS5DaGk9NzIyO2UuRGVsdGE9NjEyO2UuRXBzaWxvbj02MTE7ZS5QaGk9NzYzO2UuR2FtbWE9NjAzO2UuRXRhPTcyMjtlLklvdGE9MzMzO2UudGhldGExPTYzMTtlLkthcHBhPTcyMjtlLkxhbWJkYT02ODY7ZS5NdT04ODk7ZS5OdT03MjI7ZS5PbWljcm9uPTcyMjtlLlBpPTc2ODtlLlRoZXRhPTc0MTtlLlJobz01NTY7ZS5TaWdtYT01OTI7ZS5UYXU9NjExO2UuVXBzaWxvbj02OTA7ZS5zaWdtYTE9NDM5O2UuT21lZ2E9NzY4O2UuWGk9NjQ1O2UuUHNpPTc5NTtlLlpldGE9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UudGhlcmVmb3JlPTg2MztlLmJyYWNrZXRyaWdodD0zMzM7ZS5wZXJwZW5kaWN1bGFyPTY1ODtlLnVuZGVyc2NvcmU9NTAwO2UucmFkaWNhbGV4PTUwMDtlLmFscGhhPTYzMTtlLmJldGE9NTQ5O2UuY2hpPTU0OTtlLmRlbHRhPTQ5NDtlLmVwc2lsb249NDM5O2UucGhpPTUyMTtlLmdhbW1hPTQxMTtlLmV0YT02MDM7ZS5pb3RhPTMyOTtlLnBoaTE9NjAzO2Uua2FwcGE9NTQ5O2UubGFtYmRhPTU0OTtlLm11PTU3NjtlLm51PTUyMTtlLm9taWNyb249NTQ5O2UucGk9NTQ5O2UudGhldGE9NTIxO2UucmhvPTU0OTtlLnNpZ21hPTYwMztlLnRhdT00Mzk7ZS51cHNpbG9uPTU3NjtlLm9tZWdhMT03MTM7ZS5vbWVnYT02ODY7ZS54aT00OTM7ZS5wc2k9Njg2O2UuemV0YT00OTQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2Uuc2ltaWxhcj01NDk7ZS5FdXJvPTc1MDtlLlVwc2lsb24xPTYyMDtlLm1pbnV0ZT0yNDc7ZS5sZXNzZXF1YWw9NTQ5O2UuZnJhY3Rpb249MTY3O2UuaW5maW5pdHk9NzEzO2UuZmxvcmluPTUwMDtlLmNsdWI9NzUzO2UuZGlhbW9uZD03NTM7ZS5oZWFydD03NTM7ZS5zcGFkZT03NTM7ZS5hcnJvd2JvdGg9MTA0MjtlLmFycm93bGVmdD05ODc7ZS5hcnJvd3VwPTYwMztlLmFycm93cmlnaHQ9OTg3O2UuYXJyb3dkb3duPTYwMztlLmRlZ3JlZT00MDA7ZS5wbHVzbWludXM9NTQ5O2Uuc2Vjb25kPTQxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5tdWx0aXBseT01NDk7ZS5wcm9wb3J0aW9uYWw9NzEzO2UucGFydGlhbGRpZmY9NDk0O2UuYnVsbGV0PTQ2MDtlLmRpdmlkZT01NDk7ZS5ub3RlcXVhbD01NDk7ZS5lcXVpdmFsZW5jZT01NDk7ZS5hcHByb3hlcXVhbD01NDk7ZS5lbGxpcHNpcz0xZTM7ZS5hcnJvd3ZlcnRleD02MDM7ZS5hcnJvd2hvcml6ZXg9MWUzO2UuY2FycmlhZ2VyZXR1cm49NjU4O2UuYWxlcGg9ODIzO2UuSWZyYWt0dXI9Njg2O2UuUmZyYWt0dXI9Nzk1O2Uud2VpZXJzdHJhc3M9OTg3O2UuY2lyY2xlbXVsdGlwbHk9NzY4O2UuY2lyY2xlcGx1cz03Njg7ZS5lbXB0eXNldD04MjM7ZS5pbnRlcnNlY3Rpb249NzY4O2UudW5pb249NzY4O2UucHJvcGVyc3VwZXJzZXQ9NzEzO2UucmVmbGV4c3VwZXJzZXQ9NzEzO2Uubm90c3Vic2V0PTcxMztlLnByb3BlcnN1YnNldD03MTM7ZS5yZWZsZXhzdWJzZXQ9NzEzO2UuZWxlbWVudD03MTM7ZS5ub3RlbGVtZW50PTcxMztlLmFuZ2xlPTc2ODtlLmdyYWRpZW50PTcxMztlLnJlZ2lzdGVyc2VyaWY9NzkwO2UuY29weXJpZ2h0c2VyaWY9NzkwO2UudHJhZGVtYXJrc2VyaWY9ODkwO2UucHJvZHVjdD04MjM7ZS5yYWRpY2FsPTU0OTtlLmRvdG1hdGg9MjUwO2UubG9naWNhbG5vdD03MTM7ZS5sb2dpY2FsYW5kPTYwMztlLmxvZ2ljYWxvcj02MDM7ZS5hcnJvd2RibGJvdGg9MTA0MjtlLmFycm93ZGJsbGVmdD05ODc7ZS5hcnJvd2RibHVwPTYwMztlLmFycm93ZGJscmlnaHQ9OTg3O2UuYXJyb3dkYmxkb3duPTYwMztlLmxvemVuZ2U9NDk0O2UuYW5nbGVsZWZ0PTMyOTtlLnJlZ2lzdGVyc2Fucz03OTA7ZS5jb3B5cmlnaHRzYW5zPTc5MDtlLnRyYWRlbWFya3NhbnM9Nzg2O2Uuc3VtbWF0aW9uPTcxMztlLnBhcmVubGVmdHRwPTM4NDtlLnBhcmVubGVmdGV4PTM4NDtlLnBhcmVubGVmdGJ0PTM4NDtlLmJyYWNrZXRsZWZ0dHA9Mzg0O2UuYnJhY2tldGxlZnRleD0zODQ7ZS5icmFja2V0bGVmdGJ0PTM4NDtlLmJyYWNlbGVmdHRwPTQ5NDtlLmJyYWNlbGVmdG1pZD00OTQ7ZS5icmFjZWxlZnRidD00OTQ7ZS5icmFjZWV4PTQ5NDtlLmFuZ2xlcmlnaHQ9MzI5O2UuaW50ZWdyYWw9Mjc0O2UuaW50ZWdyYWx0cD02ODY7ZS5pbnRlZ3JhbGV4PTY4NjtlLmludGVncmFsYnQ9Njg2O2UucGFyZW5yaWdodHRwPTM4NDtlLnBhcmVucmlnaHRleD0zODQ7ZS5wYXJlbnJpZ2h0YnQ9Mzg0O2UuYnJhY2tldHJpZ2h0dHA9Mzg0O2UuYnJhY2tldHJpZ2h0ZXg9Mzg0O2UuYnJhY2tldHJpZ2h0YnQ9Mzg0O2UuYnJhY2VyaWdodHRwPTQ5NDtlLmJyYWNlcmlnaHRtaWQ9NDk0O2UuYnJhY2VyaWdodGJ0PTQ5NDtlLmFwcGxlPTc5MH0pKTtlWyJUaW1lcy1Sb21hbiJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDA4O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU2NDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01NjQ7ZS5lcXVhbD01NjQ7ZS5ncmVhdGVyPTU2NDtlLnF1ZXN0aW9uPTQ0NDtlLmF0PTkyMTtlLkE9NzIyO2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTU1NjtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9Mzg5O2UuSz03MjI7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NTU2O2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NzIyO2UuVz05NDQ7ZS5YPTcyMjtlLlk9NzIyO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NDQ0O2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTMzMztlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTE4MDtlLnF1b3RlZGJsbGVmdD00NDQ7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTQ1MztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NDQ0O2UucXVvdGVkYmxyaWdodD00NDQ7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NDQ0O2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTg4OTtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NDQ0O2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NjQ7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTQ0NDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NDQ0O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NDQ0O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NDQ0O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NDQ0O2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD00NDQ7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTU1NjtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NTg4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU2NDtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NDQ0O2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz01NjQ7ZS5icm9rZW5iYXI9MjAwO2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMyNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NDQ0O2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM0NDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTY0O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU2NDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD0xZTM7ZS5hbXBlcnNhbmQ9ODMzO2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkzMDtlLkE9NzIyO2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz03Nzg7ZS5MPTY2NztlLk09OTQ0O2UuTj03MjI7ZS5PPTc3ODtlLlA9NjExO2UuUT03Nzg7ZS5SPTcyMjtlLlM9NTU2O2UuVD02Njc7ZS5VPTcyMjtlLlY9NzIyO2UuVz0xZTM7ZS5YPTcyMjtlLlk9NzIyO2UuWj02Njc7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4MTtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01NTY7ZS5jPTQ0NDtlLmQ9NTU2O2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9MzMzO2Uuaz01NTY7ZS5sPTI3ODtlLm09ODMzO2Uubj01NTY7ZS5vPTUwMDtlLnA9NTU2O2UucT01NTY7ZS5yPTQ0NDtlLnM9Mzg5O2UudD0zMzM7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej00NDQ7ZS5icmFjZWxlZnQ9Mzk0O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9Mzk0O2UuYXNjaWl0aWxkZT01MjA7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTU0MDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zMDA7ZS5Mc2xhc2g9NjY3O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zMzA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTU2O2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTcyMjtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NzIyO2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTY2NztlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj00NDQ7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTY2NztlLlRob3JuPTYxMTtlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjcyO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjY3O2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT00NDQ7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02Njc7ZS5aY2Fyb249NjY3O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTQxNjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9NDQ0O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM5NDtlLktjb21tYWFjY2VudD03Nzg7ZS5MYWN1dGU9NjY3O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTY2NztlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTQ0NDtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02Njc7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD00NDQ7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTcwO2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU3MDtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249NDQ0O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtQm9sZEl0YWxpYyJdPWdldExvb2t1cFRhYmxlRmFjdG9yeSgoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09Mzg5O2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTgzMjtlLkE9NjY3O2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02Njc7ZS5GPTY2NztlLkc9NzIyO2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz02Njc7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz04ODk7ZS5YPTY2NztlLlk9NjExO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU3MDtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01NTY7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTU1NjtlLnY9NDQ0O2Uudz02Njc7ZS54PTUwMDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9MzQ4O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9MzQ4O2UuYXNjaWl0aWxkZT01NzA7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUwMDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT05NDQ7ZS5vcmRmZW1pbmluZT0yNjY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMDA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTYxMTtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NjExO2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjA4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM2NjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTU3NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM4MjtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NjA2O2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTYwNjtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KSk7ZVsiVGltZXMtSXRhbGljIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD00MjA7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTgzMztlLmFtcGVyc2FuZD03Nzg7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9Njc1O2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTY3NTtlLmVxdWFsPTY3NTtlLmdyZWF0ZXI9Njc1O2UucXVlc3Rpb249NTAwO2UuYXQ9OTIwO2UuQT02MTE7ZS5CPTYxMTtlLkM9NjY3O2UuRD03MjI7ZS5FPTYxMTtlLkY9NjExO2UuRz03MjI7ZS5IPTcyMjtlLkk9MzMzO2UuSj00NDQ7ZS5LPTY2NztlLkw9NTU2O2UuTT04MzM7ZS5OPTY2NztlLk89NzIyO2UuUD02MTE7ZS5RPTcyMjtlLlI9NjExO2UuUz01MDA7ZS5UPTU1NjtlLlU9NzIyO2UuVj02MTE7ZS5XPTgzMztlLlg9NjExO2UuWT01NTY7ZS5aPTU1NjtlLmJyYWNrZXRsZWZ0PTM4OTtlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9Mzg5O2UuYXNjaWljaXJjdW09NDIyO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTUwMDtlLmM9NDQ0O2UuZD01MDA7ZS5lPTQ0NDtlLmY9Mjc4O2UuZz01MDA7ZS5oPTUwMDtlLmk9Mjc4O2Uuaj0yNzg7ZS5rPTQ0NDtlLmw9Mjc4O2UubT03MjI7ZS5uPTUwMDtlLm89NTAwO2UucD01MDA7ZS5xPTUwMDtlLnI9Mzg5O2Uucz0zODk7ZS50PTI3ODtlLnU9NTAwO2Uudj00NDQ7ZS53PTY2NztlLng9NDQ0O2UueT00NDQ7ZS56PTM4OTtlLmJyYWNlbGVmdD00MDA7ZS5iYXI9Mjc1O2UuYnJhY2VyaWdodD00MDA7ZS5hc2NpaXRpbGRlPTU0MTtlLmV4Y2xhbWRvd249Mzg5O2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9MjE0O2UucXVvdGVkYmxsZWZ0PTU1NjtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01MDA7ZS5mbD01MDA7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTIzO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01NTY7ZS5xdW90ZWRibHJpZ2h0PTU1NjtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTg4OTtlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTg4OTtlLkFFPTg4OTtlLm9yZGZlbWluaW5lPTI3NjtlLkxzbGFzaD01NTY7ZS5Pc2xhc2g9NzIyO2UuT0U9OTQ0O2Uub3JkbWFzY3VsaW5lPTMxMDtlLmFlPTY2NztlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NjY3O2UuZ2VybWFuZGJscz01MDA7ZS5JZGllcmVzaXM9MzMzO2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTUwMDtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NTU2O2UuZGl2aWRlPTY3NTtlLllhY3V0ZT01NTY7ZS5BY2lyY3VtZmxleD02MTE7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTQ0NDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01MDA7ZS5FZGllcmVzaXM9NjExO2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NjA7ZS5FbWFjcm9uPTYxMTtlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NjY3O2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NTU2O2UuQ2FjdXRlPTY2NztlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTYxMTtlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00NzE7ZS5SY2Fyb249NjExO2UuR2NvbW1hYWNjZW50PTcyMjtlLnVjaXJjdW1mbGV4PTUwMDtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NjExO2UucmNhcm9uPTM4OTtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NTU2O2UuVGhvcm49NjExO2UuT21hY3Jvbj03MjI7ZS5SYWN1dGU9NjExO2UuU2FjdXRlPTUwMDtlLmRjYXJvbj01NDQ7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTUwMDtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTcyMjtlLkFncmF2ZT02MTE7ZS5BYnJldmU9NjExO2UubXVsdGlwbHk9Njc1O2UudWFjdXRlPTUwMDtlLlRjYXJvbj01NTY7ZS5wYXJ0aWFsZGlmZj00NzY7ZS55ZGllcmVzaXM9NDQ0O2UuTmFjdXRlPTY2NztlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTYxMTtlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01MDA7ZS51bWFjcm9uPTUwMDtlLk5jYXJvbj02Njc7ZS5JYWN1dGU9MzMzO2UucGx1c21pbnVzPTY3NTtlLmJyb2tlbmJhcj0yNzU7ZS5yZWdpc3RlcmVkPTc2MDtlLkdicmV2ZT03MjI7ZS5JZG90YWNjZW50PTMzMztlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjExO2UucmFjdXRlPTM4OTtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTU1NjtlLlpjYXJvbj01NTY7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTY2NztlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249MzAwO2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT02MTE7ZS5BZGllcmVzaXM9NjExO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT0zODk7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03MjI7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTcyMjtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01MDA7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9NzIyO2UubXU9NTAwO2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02MTE7ZS5kY3JvYXQ9NTAwO2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01MDA7ZS5sY2Fyb249MzAwO2UuS2NvbW1hYWNjZW50PTY2NztlLkxhY3V0ZT01NTY7ZS50cmFkZW1hcms9OTgwO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9MzMzO2UuSW1hY3Jvbj0zMzM7ZS5MY2Fyb249NjExO2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTUwMDtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTYxMTtlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTUwMDtlLlNjb21tYWFjY2VudD01MDA7ZS5PaHVuZ2FydW1sYXV0PTcyMjtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTY2NztlLnVncmF2ZT01MDA7ZS5yYWRpY2FsPTQ1MztlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9Mzg5O2UuTnRpbGRlPTY2NztlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NjExO2UuTGNvbW1hYWNjZW50PTU1NjtlLkF0aWxkZT02MTE7ZS5Bb2dvbmVrPTYxMTtlLkFyaW5nPTYxMTtlLk90aWxkZT03MjI7ZS56ZG90YWNjZW50PTM4OTtlLkVjYXJvbj02MTE7ZS5Jb2dvbmVrPTMzMztlLmtjb21tYWFjY2VudD00NDQ7ZS5taW51cz02NzU7ZS5JY2lyY3VtZmxleD0zMzM7ZS5uY2Fyb249NTAwO2UudGNvbW1hYWNjZW50PTI3ODtlLmxvZ2ljYWxub3Q9Njc1O2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01MDA7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj0zODk7ZS5uY29tbWFhY2NlbnQ9NTAwO2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pKTtlLlphcGZEaW5nYmF0cz1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2Uuc3BhY2U9Mjc4O2UuYTE9OTc0O2UuYTI9OTYxO2UuYTIwMj05NzQ7ZS5hMz05ODA7ZS5hND03MTk7ZS5hNT03ODk7ZS5hMTE5PTc5MDtlLmExMTg9NzkxO2UuYTExNz02OTA7ZS5hMTE9OTYwO2UuYTEyPTkzOTtlLmExMz01NDk7ZS5hMTQ9ODU1O2UuYTE1PTkxMTtlLmExNj05MzM7ZS5hMTA1PTkxMTtlLmExNz05NDU7ZS5hMTg9OTc0O2UuYTE5PTc1NTtlLmEyMD04NDY7ZS5hMjE9NzYyO2UuYTIyPTc2MTtlLmEyMz01NzE7ZS5hMjQ9Njc3O2UuYTI1PTc2MztlLmEyNj03NjA7ZS5hMjc9NzU5O2UuYTI4PTc1NDtlLmE2PTQ5NDtlLmE3PTU1MjtlLmE4PTUzNztlLmE5PTU3NztlLmExMD02OTI7ZS5hMjk9Nzg2O2UuYTMwPTc4ODtlLmEzMT03ODg7ZS5hMzI9NzkwO2UuYTMzPTc5MztlLmEzND03OTQ7ZS5hMzU9ODE2O2UuYTM2PTgyMztlLmEzNz03ODk7ZS5hMzg9ODQxO2UuYTM5PTgyMztlLmE0MD04MzM7ZS5hNDE9ODE2O2UuYTQyPTgzMTtlLmE0Mz05MjM7ZS5hNDQ9NzQ0O2UuYTQ1PTcyMztlLmE0Nj03NDk7ZS5hNDc9NzkwO2UuYTQ4PTc5MjtlLmE0OT02OTU7ZS5hNTA9Nzc2O2UuYTUxPTc2ODtlLmE1Mj03OTI7ZS5hNTM9NzU5O2UuYTU0PTcwNztlLmE1NT03MDg7ZS5hNTY9NjgyO2UuYTU3PTcwMTtlLmE1OD04MjY7ZS5hNTk9ODE1O2UuYTYwPTc4OTtlLmE2MT03ODk7ZS5hNjI9NzA3O2UuYTYzPTY4NztlLmE2ND02OTY7ZS5hNjU9Njg5O2UuYTY2PTc4NjtlLmE2Nz03ODc7ZS5hNjg9NzEzO2UuYTY5PTc5MTtlLmE3MD03ODU7ZS5hNzE9NzkxO2UuYTcyPTg3MztlLmE3Mz03NjE7ZS5hNzQ9NzYyO2UuYTIwMz03NjI7ZS5hNzU9NzU5O2UuYTIwND03NTk7ZS5hNzY9ODkyO2UuYTc3PTg5MjtlLmE3OD03ODg7ZS5hNzk9Nzg0O2UuYTgxPTQzODtlLmE4Mj0xMzg7ZS5hODM9Mjc3O2UuYTg0PTQxNTtlLmE5Nz0zOTI7ZS5hOTg9MzkyO2UuYTk5PTY2ODtlLmExMDA9NjY4O2UuYTg5PTM5MDtlLmE5MD0zOTA7ZS5hOTM9MzE3O2UuYTk0PTMxNztlLmE5MT0yNzY7ZS5hOTI9Mjc2O2UuYTIwNT01MDk7ZS5hODU9NTA5O2UuYTIwNj00MTA7ZS5hODY9NDEwO2UuYTg3PTIzNDtlLmE4OD0yMzQ7ZS5hOTU9MzM0O2UuYTk2PTMzNDtlLmExMDE9NzMyO2UuYTEwMj01NDQ7ZS5hMTAzPTU0NDtlLmExMDQ9OTEwO2UuYTEwNj02Njc7ZS5hMTA3PTc2MDtlLmExMDg9NzYwO2UuYTExMj03NzY7ZS5hMTExPTU5NTtlLmExMTA9Njk0O2UuYTEwOT02MjY7ZS5hMTIwPTc4ODtlLmExMjE9Nzg4O2UuYTEyMj03ODg7ZS5hMTIzPTc4ODtlLmExMjQ9Nzg4O2UuYTEyNT03ODg7ZS5hMTI2PTc4ODtlLmExMjc9Nzg4O2UuYTEyOD03ODg7ZS5hMTI5PTc4ODtlLmExMzA9Nzg4O2UuYTEzMT03ODg7ZS5hMTMyPTc4ODtlLmExMzM9Nzg4O2UuYTEzND03ODg7ZS5hMTM1PTc4ODtlLmExMzY9Nzg4O2UuYTEzNz03ODg7ZS5hMTM4PTc4ODtlLmExMzk9Nzg4O2UuYTE0MD03ODg7ZS5hMTQxPTc4ODtlLmExNDI9Nzg4O2UuYTE0Mz03ODg7ZS5hMTQ0PTc4ODtlLmExNDU9Nzg4O2UuYTE0Nj03ODg7ZS5hMTQ3PTc4ODtlLmExNDg9Nzg4O2UuYTE0OT03ODg7ZS5hMTUwPTc4ODtlLmExNTE9Nzg4O2UuYTE1Mj03ODg7ZS5hMTUzPTc4ODtlLmExNTQ9Nzg4O2UuYTE1NT03ODg7ZS5hMTU2PTc4ODtlLmExNTc9Nzg4O2UuYTE1OD03ODg7ZS5hMTU5PTc4ODtlLmExNjA9ODk0O2UuYTE2MT04Mzg7ZS5hMTYzPTEwMTY7ZS5hMTY0PTQ1ODtlLmExOTY9NzQ4O2UuYTE2NT05MjQ7ZS5hMTkyPTc0ODtlLmExNjY9OTE4O2UuYTE2Nz05Mjc7ZS5hMTY4PTkyODtlLmExNjk9OTI4O2UuYTE3MD04MzQ7ZS5hMTcxPTg3MztlLmExNzI9ODI4O2UuYTE3Mz05MjQ7ZS5hMTYyPTkyNDtlLmExNzQ9OTE3O2UuYTE3NT05MzA7ZS5hMTc2PTkzMTtlLmExNzc9NDYzO2UuYTE3OD04ODM7ZS5hMTc5PTgzNjtlLmExOTM9ODM2O2UuYTE4MD04Njc7ZS5hMTk5PTg2NztlLmExODE9Njk2O2UuYTIwMD02OTY7ZS5hMTgyPTg3NDtlLmEyMDE9ODc0O2UuYTE4Mz03NjA7ZS5hMTg0PTk0NjtlLmExOTc9NzcxO2UuYTE4NT04NjU7ZS5hMTk0PTc3MTtlLmExOTg9ODg4O2UuYTE4Nj05Njc7ZS5hMTk1PTg4ODtlLmExODc9ODMxO2UuYTE4OD04NzM7ZS5hMTg5PTkyNztlLmExOTA9OTcwO2UuYTE5MT05MTh9KSl9KSksZWE9Z2V0TG9va3VwVGFibGVGYWN0b3J5KChmdW5jdGlvbihlKXtlLkNvdXJpZXI9e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDotNDI2fTtlWyJDb3VyaWVyLUJvbGQiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQzOX07ZVsiQ291cmllci1PYmxpcXVlIl09e2FzY2VudDo2MjksZGVzY2VudDotMTU3LGNhcEhlaWdodDo1NjIseEhlaWdodDo0MjZ9O2VbIkNvdXJpZXItQm9sZE9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZS5IZWx2ZXRpY2E9e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIkhlbHZldGljYS1PYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MjN9O2VbIkhlbHZldGljYS1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NzE4LGRlc2NlbnQ6LTIwNyxjYXBIZWlnaHQ6NzE4LHhIZWlnaHQ6NTMyfTtlWyJUaW1lcy1Sb21hbiJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjYyLHhIZWlnaHQ6NDUwfTtlWyJUaW1lcy1Cb2xkIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NzYseEhlaWdodDo0NjF9O2VbIlRpbWVzLUl0YWxpYyJdPXthc2NlbnQ6NjgzLGRlc2NlbnQ6LTIxNyxjYXBIZWlnaHQ6NjUzLHhIZWlnaHQ6NDQxfTtlWyJUaW1lcy1Cb2xkSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjkseEhlaWdodDo0NjJ9O2UuU3ltYm9sPXthc2NlbnQ6TWF0aC5OYU4sZGVzY2VudDpNYXRoLk5hTixjYXBIZWlnaHQ6TWF0aC5OYU4seEhlaWdodDpNYXRoLk5hTn07ZS5aYXBmRGluZ2JhdHM9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfX0pKTtjbGFzcyBHbHlmVGFibGV7Y29uc3RydWN0b3Ioe2dseWZUYWJsZTplLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOmksbnVtR2x5cGhzOmF9KXt0aGlzLmdseXBocz1bXTtjb25zdCByPW5ldyBEYXRhVmlldyhpLmJ1ZmZlcixpLmJ5dGVPZmZzZXQsaS5ieXRlTGVuZ3RoKSxzPW5ldyBEYXRhVmlldyhlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSxuPXQ/NDoyO2xldCBvPXQ/ci5nZXRVaW50MzIoMCk6MipyLmdldFVpbnQxNigwKSxnPTA7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Zys9bjtjb25zdCBlPXQ/ci5nZXRVaW50MzIoZyk6MipyLmdldFVpbnQxNihnKTtpZihlPT09byl7dGhpcy5nbHlwaHMucHVzaChuZXcgR2x5cGgoe30pKTtjb250aW51ZX1jb25zdCBpPUdseXBoLnBhcnNlKG8scyk7dGhpcy5nbHlwaHMucHVzaChpKTtvPWV9fWdldFNpemUoKXtyZXR1cm4gdGhpcy5nbHlwaHMucmVkdWNlKCgoZSx0KT0+ZSsodC5nZXRTaXplKCkrMyYtNCkpLDApfXdyaXRlKCl7Y29uc3QgZT10aGlzLmdldFNpemUoKSx0PW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoZSkpLGk9ZT4xMzEwNzAsYT1pPzQ6MixyPW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKHRoaXMuZ2x5cGhzLmxlbmd0aCsxKSphKSk7aT9yLnNldFVpbnQzMigwLDApOnIuc2V0VWludDE2KDAsMCk7bGV0IHM9MCxuPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5nbHlwaHMpe3MrPWUud3JpdGUocyx0KTtzPXMrMyYtNDtuKz1hO2k/ci5zZXRVaW50MzIobixzKTpyLnNldFVpbnQxNihuLHM+PjEpfXJldHVybntpc0xvY2F0aW9uTG9uZzppLGxvY2E6bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIpLGdseWY6bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIpfX1zY2FsZShlKXtmb3IobGV0IHQ9MCxpPXRoaXMuZ2x5cGhzLmxlbmd0aDt0PGk7dCsrKXRoaXMuZ2x5cGhzW3RdLnNjYWxlKGVbdF0pfX1jbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6aT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1pfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2ksYV09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1pO2lmKGEubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBpPVtdO2Zvcig7Oyl7Y29uc3RbYSxyXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPWE7aS5wdXNoKHIpO2lmKCEoMzImci5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOmEsY29tcG9zaXRlczppfSl9Y29uc3Qgcj1TaW1wbGVHbHlwaC5wYXJzZShlLHQsYS5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6YSxzaW1wbGU6cn0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnNpbXBsZS5nZXRTaXplKCk6dGhpcy5jb21wb3NpdGVzLnJlZHVjZSgoKGUsdCk9PmUrdC5nZXRTaXplKCkpLDApO3JldHVybiB0aGlzLmhlYWRlci5nZXRTaXplKCkrZX13cml0ZShlLHQpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm4gMDtjb25zdCBpPWU7ZSs9dGhpcy5oZWFkZXIud3JpdGUoZSx0KTtpZih0aGlzLnNpbXBsZSllKz10aGlzLnNpbXBsZS53cml0ZShlLHQpO2Vsc2UgZm9yKGNvbnN0IGkgb2YgdGhpcy5jb21wb3NpdGVzKWUrPWkud3JpdGUoZSx0KTtyZXR1cm4gZS1pfXNjYWxlKGUpe2lmKCF0aGlzLmhlYWRlcilyZXR1cm47Y29uc3QgdD0odGhpcy5oZWFkZXIueE1pbit0aGlzLmhlYWRlci54TWF4KS8yO3RoaXMuaGVhZGVyLnNjYWxlKHQsZSk7aWYodGhpcy5zaW1wbGUpdGhpcy5zaW1wbGUuc2NhbGUodCxlKTtlbHNlIGZvcihjb25zdCBpIG9mIHRoaXMuY29tcG9zaXRlcylpLnNjYWxlKHQsZSl9fWNsYXNzIEdseXBoSGVhZGVye2NvbnN0cnVjdG9yKHtudW1iZXJPZkNvbnRvdXJzOmUseE1pbjp0LHlNaW46aSx4TWF4OmEseU1heDpyfSl7dGhpcy5udW1iZXJPZkNvbnRvdXJzPWU7dGhpcy54TWluPXQ7dGhpcy55TWluPWk7dGhpcy54TWF4PWE7dGhpcy55TWF4PXJ9c3RhdGljIHBhcnNlKGUsdCl7cmV0dXJuWzEwLG5ldyBHbHlwaEhlYWRlcih7bnVtYmVyT2ZDb250b3Vyczp0LmdldEludDE2KGUpLHhNaW46dC5nZXRJbnQxNihlKzIpLHlNaW46dC5nZXRJbnQxNihlKzQpLHhNYXg6dC5nZXRJbnQxNihlKzYpLHlNYXg6dC5nZXRJbnQxNihlKzgpfSldfWdldFNpemUoKXtyZXR1cm4gMTB9d3JpdGUoZSx0KXt0LnNldEludDE2KGUsdGhpcy5udW1iZXJPZkNvbnRvdXJzKTt0LnNldEludDE2KGUrMix0aGlzLnhNaW4pO3Quc2V0SW50MTYoZSs0LHRoaXMueU1pbik7dC5zZXRJbnQxNihlKzYsdGhpcy54TWF4KTt0LnNldEludDE2KGUrOCx0aGlzLnlNYXgpO3JldHVybiAxMH1zY2FsZShlLHQpe3RoaXMueE1pbj1NYXRoLnJvdW5kKGUrKHRoaXMueE1pbi1lKSp0KTt0aGlzLnhNYXg9TWF0aC5yb3VuZChlKyh0aGlzLnhNYXgtZSkqdCl9fWNsYXNzIENvbnRvdXJ7Y29uc3RydWN0b3Ioe2ZsYWdzOmUseENvb3JkaW5hdGVzOnQseUNvb3JkaW5hdGVzOml9KXt0aGlzLnhDb29yZGluYXRlcz10O3RoaXMueUNvb3JkaW5hdGVzPWk7dGhpcy5mbGFncz1lfX1jbGFzcyBTaW1wbGVHbHlwaHtjb25zdHJ1Y3Rvcih7Y29udG91cnM6ZSxpbnN0cnVjdGlvbnM6dH0pe3RoaXMuY29udG91cnM9ZTt0aGlzLmluc3RydWN0aW9ucz10fXN0YXRpYyBwYXJzZShlLHQsaSl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MDtyPGk7cisrKXtjb25zdCBpPXQuZ2V0VWludDE2KGUpO2UrPTI7YS5wdXNoKGkpfWNvbnN0IHI9YVtpLTFdKzEscz10LmdldFVpbnQxNihlKTtlKz0yO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK3MpO2UrPXM7Y29uc3Qgbz1bXTtmb3IobGV0IGk9MDtpPHI7ZSsrLGkrKyl7bGV0IGE9dC5nZXRVaW50OChlKTtvLnB1c2goYSk7aWYoOCZhKXtjb25zdCByPXQuZ2V0VWludDgoKytlKTthXj04O2ZvcihsZXQgZT0wO2U8cjtlKyspby5wdXNoKGEpO2krPXJ9fWNvbnN0IGc9W107bGV0IGM9W10saD1bXSxsPVtdO2NvbnN0IEM9W107bGV0IFE9MCxFPTA7Zm9yKGxldCBpPTA7aTxyO2krKyl7Y29uc3Qgcj1vW2ldO2lmKDImcil7Y29uc3QgaT10LmdldFVpbnQ4KGUrKyk7RSs9MTYmcj9pOi1pO2MucHVzaChFKX1lbHNlIGlmKDE2JnIpYy5wdXNoKEUpO2Vsc2V7RSs9dC5nZXRJbnQxNihlKTtlKz0yO2MucHVzaChFKX1pZihhW1FdPT09aSl7USsrO2cucHVzaChjKTtjPVtdfX1FPTA7UT0wO2ZvcihsZXQgaT0wO2k8cjtpKyspe2NvbnN0IHI9b1tpXTtpZig0JnIpe2NvbnN0IGk9dC5nZXRVaW50OChlKyspO0UrPTMyJnI/aTotaTtoLnB1c2goRSl9ZWxzZSBpZigzMiZyKWgucHVzaChFKTtlbHNle0UrPXQuZ2V0SW50MTYoZSk7ZSs9MjtoLnB1c2goRSl9bC5wdXNoKDEmcnw2NCZyKTtpZihhW1FdPT09aSl7Yz1nW1FdO1ErKztDLnB1c2gobmV3IENvbnRvdXIoe2ZsYWdzOmwseENvb3JkaW5hdGVzOmMseUNvb3JkaW5hdGVzOmh9KSk7aD1bXTtsPVtdfX1yZXR1cm4gbmV3IFNpbXBsZUdseXBoKHtjb250b3VyczpDLGluc3RydWN0aW9uczpufSl9Z2V0U2l6ZSgpe2xldCBlPTIqdGhpcy5jb250b3Vycy5sZW5ndGgrMit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgsdD0wLGk9MDtmb3IoY29uc3QgYSBvZiB0aGlzLmNvbnRvdXJzKXtlKz1hLmZsYWdzLmxlbmd0aDtmb3IobGV0IHI9MCxzPWEueENvb3JkaW5hdGVzLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPWEueENvb3JkaW5hdGVzW3JdLG49YS55Q29vcmRpbmF0ZXNbcl07bGV0IG89TWF0aC5hYnMocy10KTtvPjI1NT9lKz0yOm8+MCYmKGUrPTEpO3Q9cztvPU1hdGguYWJzKG4taSk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTtpPW59fXJldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgaT1lLGE9W10scj1bXSxzPVtdO2xldCBuPTAsbz0wO2Zvcihjb25zdCBpIG9mIHRoaXMuY29udG91cnMpe2ZvcihsZXQgZT0wLHQ9aS54Q29vcmRpbmF0ZXMubGVuZ3RoO2U8dDtlKyspe2xldCB0PWkuZmxhZ3NbZV07Y29uc3QgZz1pLnhDb29yZGluYXRlc1tlXTtsZXQgYz1nLW47aWYoMD09PWMpe3R8PTE2O2EucHVzaCgwKX1lbHNle2NvbnN0IGU9TWF0aC5hYnMoYyk7aWYoZTw9MjU1KXt0fD1jPj0wPzE4OjI7YS5wdXNoKGUpfWVsc2UgYS5wdXNoKGMpfW49Zztjb25zdCBoPWkueUNvb3JkaW5hdGVzW2VdO2M9aC1vO2lmKDA9PT1jKXt0fD0zMjtyLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGMpO2lmKGU8PTI1NSl7dHw9Yz49MD8zNjo0O3IucHVzaChlKX1lbHNlIHIucHVzaChjKX1vPWg7cy5wdXNoKHQpfXQuc2V0VWludDE2KGUsYS5sZW5ndGgtMSk7ZSs9Mn10LnNldFVpbnQxNihlLHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCk7ZSs9MjtpZih0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpe25ldyBVaW50OEFycmF5KHQuYnVmZmVyLDAsdC5idWZmZXIuYnl0ZUxlbmd0aCkuc2V0KHRoaXMuaW5zdHJ1Y3Rpb25zLGUpO2UrPXRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aH1mb3IoY29uc3QgaSBvZiBzKXQuc2V0VWludDgoZSsrLGkpO2ZvcihsZXQgaT0wLHI9YS5sZW5ndGg7aTxyO2krKyl7Y29uc3Qgcj1hW2ldLG49c1tpXTtpZigyJm4pdC5zZXRVaW50OChlKysscik7ZWxzZSBpZighKDE2Jm4pKXt0LnNldEludDE2KGUscik7ZSs9Mn19Zm9yKGxldCBpPTAsYT1yLmxlbmd0aDtpPGE7aSsrKXtjb25zdCBhPXJbaV0sbj1zW2ldO2lmKDQmbil0LnNldFVpbnQ4KGUrKyxhKTtlbHNlIGlmKCEoMzImbikpe3Quc2V0SW50MTYoZSxhKTtlKz0yfX1yZXR1cm4gZS1pfXNjYWxlKGUsdCl7Zm9yKGNvbnN0IGkgb2YgdGhpcy5jb250b3VycylpZigwIT09aS54Q29vcmRpbmF0ZXMubGVuZ3RoKWZvcihsZXQgYT0wLHI9aS54Q29vcmRpbmF0ZXMubGVuZ3RoO2E8cjthKyspaS54Q29vcmRpbmF0ZXNbYV09TWF0aC5yb3VuZChlKyhpLnhDb29yZGluYXRlc1thXS1lKSp0KX19Y2xhc3MgQ29tcG9zaXRlR2x5cGh7Y29uc3RydWN0b3Ioe2ZsYWdzOmUsZ2x5cGhJbmRleDp0LGFyZ3VtZW50MTppLGFyZ3VtZW50MjphLHRyYW5zZjpyLGluc3RydWN0aW9uczpzfSl7dGhpcy5mbGFncz1lO3RoaXMuZ2x5cGhJbmRleD10O3RoaXMuYXJndW1lbnQxPWk7dGhpcy5hcmd1bWVudDI9YTt0aGlzLnRyYW5zZj1yO3RoaXMuaW5zdHJ1Y3Rpb25zPXN9c3RhdGljIHBhcnNlKGUsdCl7Y29uc3QgaT1lLGE9W107bGV0IHI9dC5nZXRVaW50MTYoZSk7Y29uc3Qgcz10LmdldFVpbnQxNihlKzIpO2UrPTQ7bGV0IG4sbztpZigxJnIpe2lmKDImcil7bj10LmdldEludDE2KGUpO289dC5nZXRJbnQxNihlKzIpfWVsc2V7bj10LmdldFVpbnQxNihlKTtvPXQuZ2V0VWludDE2KGUrMil9ZSs9NDtyXj0xfWVsc2V7aWYoMiZyKXtuPXQuZ2V0SW50OChlKTtvPXQuZ2V0SW50OChlKzEpfWVsc2V7bj10LmdldFVpbnQ4KGUpO289dC5nZXRVaW50OChlKzEpfWUrPTJ9aWYoOCZyKXthLnB1c2godC5nZXRVaW50MTYoZSkpO2UrPTJ9ZWxzZSBpZig2NCZyKXthLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSk7ZSs9NH1lbHNlIGlmKDEyOCZyKXthLnB1c2godC5nZXRVaW50MTYoZSksdC5nZXRVaW50MTYoZSsyKSx0LmdldFVpbnQxNihlKzQpLHQuZ2V0VWludDE2KGUrNikpO2UrPTh9bGV0IGc9bnVsbDtpZigyNTYmcil7Y29uc3QgaT10LmdldFVpbnQxNihlKTtlKz0yO2c9bmV3IFVpbnQ4QXJyYXkodCkuc2xpY2UoZSxlK2kpO2UrPWl9cmV0dXJuW2UtaSxuZXcgQ29tcG9zaXRlR2x5cGgoe2ZsYWdzOnIsZ2x5cGhJbmRleDpzLGFyZ3VtZW50MTpuLGFyZ3VtZW50MjpvLHRyYW5zZjphLGluc3RydWN0aW9uczpnfSldfWdldFNpemUoKXtsZXQgZT00KzIqdGhpcy50cmFuc2YubGVuZ3RoOzI1NiZ0aGlzLmZsYWdzJiYoZSs9Mit0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7MiZ0aGlzLmZsYWdzP3RoaXMuYXJndW1lbnQxPj0tMTI4JiZ0aGlzLmFyZ3VtZW50MTw9MTI3JiZ0aGlzLmFyZ3VtZW50Mj49LTEyOCYmdGhpcy5hcmd1bWVudDI8PTEyN3x8KGUrPTIpOnRoaXMuYXJndW1lbnQxPj0wJiZ0aGlzLmFyZ3VtZW50MTw9MjU1JiZ0aGlzLmFyZ3VtZW50Mj49MCYmdGhpcy5hcmd1bWVudDI8PTI1NXx8KGUrPTIpO3JldHVybiBlfXdyaXRlKGUsdCl7Y29uc3QgaT1lOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fCh0aGlzLmZsYWdzfD0xKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fCh0aGlzLmZsYWdzfD0xKTt0LnNldFVpbnQxNihlLHRoaXMuZmxhZ3MpO3Quc2V0VWludDE2KGUrMix0aGlzLmdseXBoSW5kZXgpO2UrPTQ7aWYoMSZ0aGlzLmZsYWdzKXtpZigyJnRoaXMuZmxhZ3Mpe3Quc2V0SW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRJbnQxNihlKzIsdGhpcy5hcmd1bWVudDIpfWVsc2V7dC5zZXRVaW50MTYoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lKz00fWVsc2V7dC5zZXRVaW50OChlLHRoaXMuYXJndW1lbnQxKTt0LnNldFVpbnQ4KGUrMSx0aGlzLmFyZ3VtZW50Mik7ZSs9Mn1pZigyNTYmdGhpcy5mbGFncyl7dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9fXJldHVybiBlLWl9c2NhbGUoZSx0KXt9fWZ1bmN0aW9uIHdyaXRlSW50MTYoZSx0LGkpe2VbdF09aT4+OCYyNTU7ZVt0KzFdPTI1NSZpfWZ1bmN0aW9uIHdyaXRlSW50MzIoZSx0LGkpe2VbdF09aT4+MjQmMjU1O2VbdCsxXT1pPj4xNiYyNTU7ZVt0KzJdPWk+PjgmMjU1O2VbdCszXT0yNTUmaX1mdW5jdGlvbiB3cml0ZURhdGEoZSx0LGkpe2lmKGkgaW5zdGFuY2VvZiBVaW50OEFycmF5KWUuc2V0KGksdCk7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGkpZm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSsrKWVbdCsrXT0yNTUmaS5jaGFyQ29kZUF0KGEpO2Vsc2UgZm9yKGNvbnN0IGEgb2YgaSllW3QrK109MjU1JmF9Y2xhc3MgT3BlblR5cGVGaWxlQnVpbGRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnNmbnQ9ZTt0aGlzLnRhYmxlcz1PYmplY3QuY3JlYXRlKG51bGwpfXN0YXRpYyBnZXRTZWFyY2hQYXJhbXMoZSx0KXtsZXQgaT0xLGE9MDtmb3IoOyhpXmUpPmk7KXtpPDw9MTthKyt9Y29uc3Qgcj1pKnQ7cmV0dXJue3JhbmdlOnIsZW50cnk6YSxyYW5nZVNoaWZ0OnQqZS1yfX10b0FycmF5KCl7bGV0IGU9dGhpcy5zZm50O2NvbnN0IHQ9dGhpcy50YWJsZXMsaT1PYmplY3Qua2V5cyh0KTtpLnNvcnQoKTtjb25zdCBhPWkubGVuZ3RoO2xldCByLHMsbixvLGcsYz0xMisxNiphO2NvbnN0IGg9W2NdO2ZvcihyPTA7cjxhO3IrKyl7bz10W2lbcl1dO2MrPShvLmxlbmd0aCszJi00KT4+PjA7aC5wdXNoKGMpfWNvbnN0IGw9bmV3IFVpbnQ4QXJyYXkoYyk7Zm9yKHI9MDtyPGE7cisrKXtvPXRbaVtyXV07d3JpdGVEYXRhKGwsaFtyXSxvKX0idHJ1ZSI9PT1lJiYoZT1zdHJpbmczMig2NTUzNikpO2xbMF09MjU1JmUuY2hhckNvZGVBdCgwKTtsWzFdPTI1NSZlLmNoYXJDb2RlQXQoMSk7bFsyXT0yNTUmZS5jaGFyQ29kZUF0KDIpO2xbM109MjU1JmUuY2hhckNvZGVBdCgzKTt3cml0ZUludDE2KGwsNCxhKTtjb25zdCBDPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGEsMTYpO3dyaXRlSW50MTYobCw2LEMucmFuZ2UpO3dyaXRlSW50MTYobCw4LEMuZW50cnkpO3dyaXRlSW50MTYobCwxMCxDLnJhbmdlU2hpZnQpO2M9MTI7Zm9yKHI9MDtyPGE7cisrKXtnPWlbcl07bFtjXT0yNTUmZy5jaGFyQ29kZUF0KDApO2xbYysxXT0yNTUmZy5jaGFyQ29kZUF0KDEpO2xbYysyXT0yNTUmZy5jaGFyQ29kZUF0KDIpO2xbYyszXT0yNTUmZy5jaGFyQ29kZUF0KDMpO2xldCBlPTA7Zm9yKHM9aFtyXSxuPWhbcisxXTtzPG47cys9NCl7ZT1lK3JlYWRVaW50MzIobCxzKT4+PjB9d3JpdGVJbnQzMihsLGMrNCxlKTt3cml0ZUludDMyKGwsYys4LGhbcl0pO3dyaXRlSW50MzIobCxjKzEyLHRbZ10ubGVuZ3RoKTtjKz0xNn1yZXR1cm4gbH1hZGRUYWJsZShlLHQpe2lmKGUgaW4gdGhpcy50YWJsZXMpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSAiK2UrIiBhbHJlYWR5IGV4aXN0cyIpO3RoaXMudGFibGVzW2VdPXR9fWNvbnN0IHRhPVs0XSxpYT1bNV0sYWE9WzZdLHJhPVs3XSxzYT1bOF0sbmE9WzEyLDM1XSxvYT1bMTRdLGdhPVsyMV0sY2E9WzIyXSxJYT1bMzBdLGhhPVszMV07Y2xhc3MgVHlwZTFDaGFyU3RyaW5ne2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wO3RoaXMubHNiPTA7dGhpcy5mbGV4aW5nPSExO3RoaXMub3V0cHV0PVtdO3RoaXMuc3RhY2s9W119Y29udmVydChlLHQsaSl7Y29uc3QgYT1lLmxlbmd0aDtsZXQgcixzLG4sbz0hMTtmb3IobGV0IGc9MDtnPGE7ZysrKXtsZXQgYT1lW2ddO2lmKGE8MzIpezEyPT09YSYmKGE9KGE8PDgpK2VbKytnXSk7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDM6Y2FzZSA5OmNhc2UgMzA3MjpjYXNlIDMwNzM6Y2FzZSAzMDc0OmNhc2UgMzEwNTp0aGlzLnN0YWNrPVtdO2JyZWFrO2Nhc2UgNDppZih0aGlzLmZsZXhpbmcpe2lmKHRoaXMuc3RhY2subGVuZ3RoPDEpe289ITA7YnJlYWt9Y29uc3QgZT10aGlzLnN0YWNrLnBvcCgpO3RoaXMuc3RhY2sucHVzaCgwLGUpO2JyZWFrfW89dGhpcy5leGVjdXRlQ29tbWFuZCgxLHRhKTticmVhaztjYXNlIDU6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsaWEpO2JyZWFrO2Nhc2UgNjpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxhYSk7YnJlYWs7Y2FzZSA3Om89dGhpcy5leGVjdXRlQ29tbWFuZCgxLHJhKTticmVhaztjYXNlIDg6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDYsc2EpO2JyZWFrO2Nhc2UgMTA6aWYodGhpcy5zdGFjay5sZW5ndGg8MSl7bz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7aWYoIXRbbl0pe289ITA7YnJlYWt9bz10aGlzLmNvbnZlcnQodFtuXSx0LGkpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuIG87Y2FzZSAxMzppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfXI9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyk7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsY2EpO2JyZWFrO2Nhc2UgMTQ6dGhpcy5vdXRwdXQucHVzaChvYVswXSk7YnJlYWs7Y2FzZSAyMTppZih0aGlzLmZsZXhpbmcpYnJlYWs7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDIsZ2EpO2JyZWFrO2Nhc2UgMjI6aWYodGhpcy5mbGV4aW5nKXt0aGlzLnN0YWNrLnB1c2goMCk7YnJlYWt9bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsY2EpO2JyZWFrO2Nhc2UgMzA6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsSWEpO2JyZWFrO2Nhc2UgMzE6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsaGEpO2JyZWFrO2Nhc2UgMzA3ODppZihpKXtjb25zdCBlPXRoaXMuc3RhY2suYXQoLTUpO3RoaXMuc2VhYz10aGlzLnN0YWNrLnNwbGljZSgtNCw0KTt0aGlzLnNlYWNbMF0rPXRoaXMubHNiLWU7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDAsb2EpfWVsc2Ugbz10aGlzLmV4ZWN1dGVDb21tYW5kKDQsb2EpO2JyZWFrO2Nhc2UgMzA3OTppZih0aGlzLnN0YWNrLmxlbmd0aDw0KXtvPSEwO2JyZWFrfXRoaXMuc3RhY2sucG9wKCk7cj10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGU9dGhpcy5zdGFjay5wb3AoKTtzPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5sc2I9czt0aGlzLndpZHRoPXI7dGhpcy5zdGFjay5wdXNoKHIscyxlKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMyxnYSk7YnJlYWs7Y2FzZSAzMDg0OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9Y29uc3QgZz10aGlzLnN0YWNrLnBvcCgpLGM9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goYy9nKTticmVhaztjYXNlIDMwODg6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31uPXRoaXMuc3RhY2sucG9wKCk7Y29uc3QgaD10aGlzLnN0YWNrLnBvcCgpO2lmKDA9PT1uJiYzPT09aCl7Y29uc3QgZT10aGlzLnN0YWNrLnNwbGljZSgtMTcsMTcpO3RoaXMuc3RhY2sucHVzaChlWzJdK2VbMF0sZVszXStlWzFdLGVbNF0sZVs1XSxlWzZdLGVbN10sZVs4XSxlWzldLGVbMTBdLGVbMTFdLGVbMTJdLGVbMTNdLGVbMTRdKTtvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMTMsbmEsITApO3RoaXMuZmxleGluZz0hMTt0aGlzLnN0YWNrLnB1c2goZVsxNV0sZVsxNl0pfWVsc2UgMT09PW4mJjA9PT1oJiYodGhpcy5mbGV4aW5nPSEwKTticmVhaztjYXNlIDMwODk6YnJlYWs7ZGVmYXVsdDp3YXJuKCdVbmtub3duIHR5cGUgMSBjaGFyc3RyaW5nIGNvbW1hbmQgb2YgIicrYSsnIicpfWlmKG8pYnJlYWt9ZWxzZXthPD0yNDY/YS09MTM5OmE9YTw9MjUwPzI1NiooYS0yNDcpK2VbKytnXSsxMDg6YTw9MjU0Py0yNTYqKGEtMjUxKS1lWysrZ10tMTA4OigyNTUmZVsrK2ddKTw8MjR8KDI1NSZlWysrZ10pPDwxNnwoMjU1JmVbKytnXSk8PDh8KDI1NSZlWysrZ10pPDwwO3RoaXMuc3RhY2sucHVzaChhKX19cmV0dXJuIG99ZXhlY3V0ZUNvbW1hbmQoZSx0LGkpe2NvbnN0IGE9dGhpcy5zdGFjay5sZW5ndGg7aWYoZT5hKXJldHVybiEwO2NvbnN0IHI9YS1lO2ZvcihsZXQgZT1yO2U8YTtlKyspe2xldCB0PXRoaXMuc3RhY2tbZV07aWYoTnVtYmVyLmlzSW50ZWdlcih0KSl0aGlzLm91dHB1dC5wdXNoKDI4LHQ+PjgmMjU1LDI1NSZ0KTtlbHNle3Q9NjU1MzYqdHwwO3RoaXMub3V0cHV0LnB1c2goMjU1LHQ+PjI0JjI1NSx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQpfX10aGlzLm91dHB1dC5wdXNoKC4uLnQpO2k/dGhpcy5zdGFjay5zcGxpY2UocixlKTp0aGlzLnN0YWNrLmxlbmd0aD0wO3JldHVybiExfX1mdW5jdGlvbiBpc0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTd8fGU+PTY1JiZlPD03MHx8ZT49OTcmJmU8PTEwMn1mdW5jdGlvbiBkZWNyeXB0KGUsdCxpKXtpZihpPj1lLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IGEscixzPTB8dDtmb3IoYT0wO2E8aTthKyspcz01Mjg0NSooZVthXStzKSsyMjcxOSY2NTUzNTtjb25zdCBuPWUubGVuZ3RoLWksbz1uZXcgVWludDhBcnJheShuKTtmb3IoYT1pLHI9MDtyPG47YSsrLHIrKyl7Y29uc3QgdD1lW2FdO29bcl09dF5zPj44O3M9NTI4NDUqKHQrcykrMjI3MTkmNjU1MzV9cmV0dXJuIG99ZnVuY3Rpb24gaXNTcGVjaWFsKGUpe3JldHVybiA0Nz09PWV8fDkxPT09ZXx8OTM9PT1lfHwxMjM9PT1lfHwxMjU9PT1lfHw0MD09PWV8fDQxPT09ZX1jbGFzcyBUeXBlMVBhcnNlcntjb25zdHJ1Y3RvcihlLHQsaSl7aWYodCl7Y29uc3QgdD1lLmdldEJ5dGVzKCksaT0hKChpc0hleERpZ2l0KHRbMF0pfHxpc1doaXRlU3BhY2UodFswXSkpJiZpc0hleERpZ2l0KHRbMV0pJiZpc0hleERpZ2l0KHRbMl0pJiZpc0hleERpZ2l0KHRbM10pJiZpc0hleERpZ2l0KHRbNF0pJiZpc0hleERpZ2l0KHRbNV0pJiZpc0hleERpZ2l0KHRbNl0pJiZpc0hleERpZ2l0KHRbN10pKTtlPW5ldyBTdHJlYW0oaT9kZWNyeXB0KHQsNTU2NjUsNCk6ZnVuY3Rpb24gZGVjcnlwdEFzY2lpKGUsdCxpKXtsZXQgYT0wfHQ7Y29uc3Qgcj1lLmxlbmd0aCxzPW5ldyBVaW50OEFycmF5KHI+Pj4xKTtsZXQgbixvO2ZvcihuPTAsbz0wO248cjtuKyspe2NvbnN0IHQ9ZVtuXTtpZighaXNIZXhEaWdpdCh0KSljb250aW51ZTtuKys7bGV0IGk7Zm9yKDtuPHImJiFpc0hleERpZ2l0KGk9ZVtuXSk7KW4rKztpZihuPHIpe2NvbnN0IGU9cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZSh0LGkpLDE2KTtzW28rK109ZV5hPj44O2E9NTI4NDUqKGUrYSkrMjI3MTkmNjU1MzV9fXJldHVybiBzLnNsaWNlKGksbyl9KHQsNTU2NjUsNCkpfXRoaXMuc2VhY0FuYWx5c2lzRW5hYmxlZD0hIWk7dGhpcy5zdHJlYW09ZTt0aGlzLm5leHRDaGFyKCl9cmVhZE51bWJlckFycmF5KCl7dGhpcy5nZXRUb2tlbigpO2NvbnN0IGU9W107Zm9yKDs7KXtjb25zdCB0PXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09dHx8Il0iPT09dHx8In0iPT09dClicmVhaztlLnB1c2gocGFyc2VGbG9hdCh0fHwwKSl9cmV0dXJuIGV9cmVhZE51bWJlcigpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiBwYXJzZUZsb2F0KGV8fDApfXJlYWRJbnQoKXtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtyZXR1cm4gMHxwYXJzZUludChlfHwwLDEwKX1yZWFkQm9vbGVhbigpe3JldHVybiJ0cnVlIj09PXRoaXMuZ2V0VG9rZW4oKT8xOjB9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cHJldkNoYXIoKXt0aGlzLnN0cmVhbS5za2lwKC0yKTtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9Z2V0VG9rZW4oKXtsZXQgZT0hMSx0PXRoaXMuY3VycmVudENoYXI7Zm9yKDs7KXtpZigtMT09PXQpcmV0dXJuIG51bGw7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighaXNXaGl0ZVNwYWNlKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfWlmKGlzU3BlY2lhbCh0KSl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHQpfWxldCBpPSIiO2Rve2krPVN0cmluZy5mcm9tQ2hhckNvZGUodCk7dD10aGlzLm5leHRDaGFyKCl9d2hpbGUodD49MCYmIWlzV2hpdGVTcGFjZSh0KSYmIWlzU3BlY2lhbCh0KSk7cmV0dXJuIGl9cmVhZENoYXJTdHJpbmdzKGUsdCl7cmV0dXJuLTE9PT10P2U6ZGVjcnlwdChlLDQzMzAsdCl9ZXh0cmFjdEZvbnRQcm9ncmFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW0saT1bXSxhPVtdLHI9T2JqZWN0LmNyZWF0ZShudWxsKTtyLmxlbklWPTQ7Y29uc3Qgcz17c3VicnM6W10sY2hhcnN0cmluZ3M6W10scHJvcGVydGllczp7cHJpdmF0ZURhdGE6cn19O2xldCBuLG8sZyxjO2Zvcig7bnVsbCE9PShuPXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PW4pe249dGhpcy5nZXRUb2tlbigpO3N3aXRjaChuKXtjYXNlIkNoYXJTdHJpbmdzIjp0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7Zm9yKDs7KXtuPXRoaXMuZ2V0VG9rZW4oKTtpZihudWxsPT09bnx8ImVuZCI9PT1uKWJyZWFrO2lmKCIvIiE9PW4pY29udGludWU7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7bz10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Zz1vPjA/dC5nZXRCeXRlcyhvKTpuZXcgVWludDhBcnJheSgwKTtjPXMucHJvcGVydGllcy5wcml2YXRlRGF0YS5sZW5JVjtjb25zdCBpPXRoaXMucmVhZENoYXJTdHJpbmdzKGcsYyk7dGhpcy5uZXh0Q2hhcigpO249dGhpcy5nZXRUb2tlbigpOyJub2FjY2VzcyI9PT1uP3RoaXMuZ2V0VG9rZW4oKToiLyI9PT1uJiZ0aGlzLnByZXZDaGFyKCk7YS5wdXNoKHtnbHlwaDplLGVuY29kZWQ6aX0pfWJyZWFrO2Nhc2UiU3VicnMiOnRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiPT09dGhpcy5nZXRUb2tlbigpOyl7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtnPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2M9cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IGE9dGhpcy5yZWFkQ2hhclN0cmluZ3MoZyxjKTt0aGlzLm5leHRDaGFyKCk7bj10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PW4mJnRoaXMuZ2V0VG9rZW4oKTtpW2VdPWF9YnJlYWs7Y2FzZSJCbHVlVmFsdWVzIjpjYXNlIk90aGVyQmx1ZXMiOmNhc2UiRmFtaWx5Qmx1ZXMiOmNhc2UiRmFtaWx5T3RoZXJCbHVlcyI6Y29uc3QgZT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UubGVuZ3RoPjAmJmUubGVuZ3RoLDA7YnJlYWs7Y2FzZSJTdGVtU25hcEgiOmNhc2UiU3RlbVNuYXBWIjpzLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbbl09dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTticmVhaztjYXNlIlN0ZEhXIjpjYXNlIlN0ZFZXIjpzLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbbl09dGhpcy5yZWFkTnVtYmVyQXJyYXkoKVswXTticmVhaztjYXNlIkJsdWVTaGlmdCI6Y2FzZSJsZW5JViI6Y2FzZSJCbHVlRnV6eiI6Y2FzZSJCbHVlU2NhbGUiOmNhc2UiTGFuZ3VhZ2VHcm91cCI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZE51bWJlcigpO2JyZWFrO2Nhc2UiRXhwYW5zaW9uRmFjdG9yIjpzLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbbl09dGhpcy5yZWFkTnVtYmVyKCl8fC4wNjticmVhaztjYXNlIkZvcmNlQm9sZCI6cy5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhW25dPXRoaXMucmVhZEJvb2xlYW4oKX19Zm9yKGNvbnN0e2VuY29kZWQ6dCxnbHlwaDpyfW9mIGEpe2NvbnN0IGE9bmV3IFR5cGUxQ2hhclN0cmluZyxuPWEuY29udmVydCh0LGksdGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkKTtsZXQgbz1hLm91dHB1dDtuJiYobz1bMTRdKTtjb25zdCBnPXtnbHlwaE5hbWU6cixjaGFyc3RyaW5nOm8sd2lkdGg6YS53aWR0aCxsc2I6YS5sc2Isc2VhYzphLnNlYWN9OyIubm90ZGVmIj09PXI/cy5jaGFyc3RyaW5ncy51bnNoaWZ0KGcpOnMuY2hhcnN0cmluZ3MucHVzaChnKTtpZihlLmJ1aWx0SW5FbmNvZGluZyl7Y29uc3QgdD1lLmJ1aWx0SW5FbmNvZGluZy5pbmRleE9mKHIpO3Q+LTEmJnZvaWQgMD09PWUud2lkdGhzW3RdJiZ0Pj1lLmZpcnN0Q2hhciYmdDw9ZS5sYXN0Q2hhciYmKGUud2lkdGhzW3RdPWEud2lkdGgpfX1yZXR1cm4gc31leHRyYWN0Rm9udEhlYWRlcihlKXtsZXQgdDtmb3IoO251bGwhPT0odD10aGlzLmdldFRva2VuKCkpOylpZigiLyI9PT10KXt0PXRoaXMuZ2V0VG9rZW4oKTtzd2l0Y2godCl7Y2FzZSJGb250TWF0cml4Ijpjb25zdCBpPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5mb250TWF0cml4PWk7YnJlYWs7Y2FzZSJFbmNvZGluZyI6Y29uc3QgYT10aGlzLmdldFRva2VuKCk7bGV0IHI7aWYoL15cZCskLy50ZXN0KGEpKXtyPVtdO2NvbnN0IGU9MHxwYXJzZUludChhLDEwKTt0aGlzLmdldFRva2VuKCk7Zm9yKGxldCBpPTA7aTxlO2krKyl7dD10aGlzLmdldFRva2VuKCk7Zm9yKDsiZHVwIiE9PXQmJiJkZWYiIT09dDspe3Q9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10KXJldHVybn1pZigiZGVmIj09PXQpYnJlYWs7Y29uc3QgZT10aGlzLnJlYWRJbnQoKTt0aGlzLmdldFRva2VuKCk7Y29uc3QgaT10aGlzLmdldFRva2VuKCk7cltlXT1pO3RoaXMuZ2V0VG9rZW4oKX19ZWxzZSByPWdldEVuY29kaW5nKGEpO2UuYnVpbHRJbkVuY29kaW5nPXI7YnJlYWs7Y2FzZSJGb250QkJveCI6Y29uc3Qgcz10aGlzLnJlYWROdW1iZXJBcnJheSgpO2UuYXNjZW50PU1hdGgubWF4KHNbM10sc1sxXSk7ZS5kZXNjZW50PU1hdGgubWluKHNbMV0sc1szXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9fX19ZnVuY3Rpb24gZmluZEJsb2NrKGUsdCxpKXtjb25zdCBhPWUubGVuZ3RoLHI9dC5sZW5ndGgscz1hLXI7bGV0IG49aSxvPSExO2Zvcig7bjxzOyl7bGV0IGk9MDtmb3IoO2k8ciYmZVtuK2ldPT09dFtpXTspaSsrO2lmKGk+PXIpe24rPWk7Zm9yKDtuPGEmJmlzV2hpdGVTcGFjZShlW25dKTspbisrO289ITA7YnJlYWt9bisrfXJldHVybntmb3VuZDpvLGxlbmd0aDpufX1jbGFzcyBUeXBlMUZvbnR7Y29uc3RydWN0b3IoZSx0LGkpe2xldCBhPWkubGVuZ3RoMSxyPWkubGVuZ3RoMixzPXQucGVla0J5dGVzKDYpO2NvbnN0IG49MTI4PT09c1swXSYmMT09PXNbMV07aWYobil7dC5za2lwKDYpO2E9c1s1XTw8MjR8c1s0XTw8MTZ8c1szXTw8OHxzWzJdfWNvbnN0IG89ZnVuY3Rpb24gZ2V0SGVhZGVyQmxvY2soZSx0KXtjb25zdCBpPVsxMDEsMTAxLDEyMCwxMDEsOTldLGE9ZS5wb3M7bGV0IHIscyxuLG87dHJ5e3I9ZS5nZXRCeXRlcyh0KTtzPXIubGVuZ3RofWNhdGNoe31pZihzPT09dCl7bj1maW5kQmxvY2socixpLHQtMippLmxlbmd0aCk7aWYobi5mb3VuZCYmbi5sZW5ndGg9PT10KXJldHVybntzdHJlYW06bmV3IFN0cmVhbShyKSxsZW5ndGg6dH19d2FybignSW52YWxpZCAiTGVuZ3RoMSIgcHJvcGVydHkgaW4gVHlwZTEgZm9udCAtLSB0cnlpbmcgdG8gcmVjb3Zlci4nKTtlLnBvcz1hO2Zvcig7Oyl7bj1maW5kQmxvY2soZS5wZWVrQnl0ZXMoMjA0OCksaSwwKTtpZigwPT09bi5sZW5ndGgpYnJlYWs7ZS5wb3MrPW4ubGVuZ3RoO2lmKG4uZm91bmQpe289ZS5wb3MtYTticmVha319ZS5wb3M9YTtpZihvKXJldHVybntzdHJlYW06bmV3IFN0cmVhbShlLmdldEJ5dGVzKG8pKSxsZW5ndGg6b307d2FybignVW5hYmxlIHRvIHJlY292ZXIgIkxlbmd0aDEiIHByb3BlcnR5IGluIFR5cGUxIGZvbnQgLS0gdXNpbmcgYXMgaXMuJyk7cmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGUuZ2V0Qnl0ZXModCkpLGxlbmd0aDp0fX0odCxhKTtuZXcgVHlwZTFQYXJzZXIoby5zdHJlYW0sITEsdmkpLmV4dHJhY3RGb250SGVhZGVyKGkpO2lmKG4pe3M9dC5nZXRCeXRlcyg2KTtyPXNbNV08PDI0fHNbNF08PDE2fHNbM108PDh8c1syXX1jb25zdCBnPWZ1bmN0aW9uIGdldEVleGVjQmxvY2soZSx0KXtjb25zdCBpPWUuZ2V0Qnl0ZXMoKTtpZigwPT09aS5sZW5ndGgpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJnZXRFZXhlY0Jsb2NrIC0gbm8gZm9udCBwcm9ncmFtIGZvdW5kLiIpO3JldHVybntzdHJlYW06bmV3IFN0cmVhbShpKSxsZW5ndGg6aS5sZW5ndGh9fSh0KSxjPW5ldyBUeXBlMVBhcnNlcihnLnN0cmVhbSwhMCx2aSkuZXh0cmFjdEZvbnRQcm9ncmFtKGkpO2Zvcihjb25zdCBlIGluIGMucHJvcGVydGllcylpW2VdPWMucHJvcGVydGllc1tlXTtjb25zdCBoPWMuY2hhcnN0cmluZ3MsbD10aGlzLmdldFR5cGUyQ2hhcnN0cmluZ3MoaCksQz10aGlzLmdldFR5cGUyU3VicnMoYy5zdWJycyk7dGhpcy5jaGFyc3RyaW5ncz1oO3RoaXMuZGF0YT10aGlzLndyYXAoZSxsLHRoaXMuY2hhcnN0cmluZ3MsQyxpKTt0aGlzLnNlYWNzPXRoaXMuZ2V0U2VhY3MoYy5jaGFyc3RyaW5ncyl9Z2V0IG51bUdseXBocygpe3JldHVybiB0aGlzLmNoYXJzdHJpbmdzLmxlbmd0aCsxfWdldENoYXJzZXQoKXtjb25zdCBlPVsiLm5vdGRlZiJdO2Zvcihjb25zdHtnbHlwaE5hbWU6dH1vZiB0aGlzLmNoYXJzdHJpbmdzKWUucHVzaCh0KTtyZXR1cm4gZX1nZXRHbHlwaE1hcHBpbmcoZSl7Y29uc3QgdD10aGlzLmNoYXJzdHJpbmdzO2lmKGUuY29tcG9zaXRlKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCBhPTAscj10Lmxlbmd0aDthPHI7YSsrKXtpW2UuY01hcC5jaGFyQ29kZU9mKGEpXT1hKzF9cmV0dXJuIGl9Y29uc3QgaT1bIi5ub3RkZWYiXTtsZXQgYSxyO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspaS5wdXNoKHRbcl0uZ2x5cGhOYW1lKTtjb25zdCBzPWUuYnVpbHRJbkVuY29kaW5nO2lmKHMpe2E9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3QgZSBpbiBzKXtyPWkuaW5kZXhPZihzW2VdKTtyPj0wJiYoYVtlXT1yKX19cmV0dXJuIHR5cGUxRm9udEdseXBoTWFwcGluZyhlLGEsaSl9aGFzR2x5cGhJZChlKXtpZihlPDB8fGU+PXRoaXMubnVtR2x5cGhzKXJldHVybiExO2lmKDA9PT1lKXJldHVybiEwO3JldHVybiB0aGlzLmNoYXJzdHJpbmdzW2UtMV0uY2hhcnN0cmluZy5sZW5ndGg+MH1nZXRTZWFjcyhlKXtjb25zdCB0PVtdO2ZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhO2krKyl7Y29uc3QgYT1lW2ldO2Euc2VhYyYmKHRbaSsxXT1hLnNlYWMpfXJldHVybiB0fWdldFR5cGUyQ2hhcnN0cmluZ3MoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgaSBvZiBlKXQucHVzaChpLmNoYXJzdHJpbmcpO3JldHVybiB0fWdldFR5cGUyU3VicnMoZSl7bGV0IHQ9MDtjb25zdCBpPWUubGVuZ3RoO3Q9aTwxMTMzPzEwNzppPDMzNzY5PzExMzE6MzI3Njg7Y29uc3QgYT1bXTtsZXQgcjtmb3Iocj0wO3I8dDtyKyspYS5wdXNoKFsxMV0pO2ZvcihyPTA7cjxpO3IrKylhLnB1c2goZVtyXSk7cmV0dXJuIGF9d3JhcChlLHQsaSxhLHIpe2NvbnN0IHM9bmV3IENGRjtzLmhlYWRlcj1uZXcgQ0ZGSGVhZGVyKDEsMCw0LDQpO3MubmFtZXM9W2VdO2NvbnN0IG49bmV3IENGRlRvcERpY3Q7bi5zZXRCeU5hbWUoInZlcnNpb24iLDM5MSk7bi5zZXRCeU5hbWUoIk5vdGljZSIsMzkyKTtuLnNldEJ5TmFtZSgiRnVsbE5hbWUiLDM5Myk7bi5zZXRCeU5hbWUoIkZhbWlseU5hbWUiLDM5NCk7bi5zZXRCeU5hbWUoIldlaWdodCIsMzk1KTtuLnNldEJ5TmFtZSgiRW5jb2RpbmciLG51bGwpO24uc2V0QnlOYW1lKCJGb250TWF0cml4IixyLmZvbnRNYXRyaXgpO24uc2V0QnlOYW1lKCJGb250QkJveCIsci5iYm94KTtuLnNldEJ5TmFtZSgiY2hhcnNldCIsbnVsbCk7bi5zZXRCeU5hbWUoIkNoYXJTdHJpbmdzIixudWxsKTtuLnNldEJ5TmFtZSgiUHJpdmF0ZSIsbnVsbCk7cy50b3BEaWN0PW47Y29uc3Qgbz1uZXcgQ0ZGU3RyaW5ncztvLmFkZCgiVmVyc2lvbiAwLjExIik7by5hZGQoIlNlZSBvcmlnaW5hbCBub3RpY2UiKTtvLmFkZChlKTtvLmFkZChlKTtvLmFkZCgiTWVkaXVtIik7cy5zdHJpbmdzPW87cy5nbG9iYWxTdWJySW5kZXg9bmV3IENGRkluZGV4O2NvbnN0IGc9dC5sZW5ndGgsYz1bIi5ub3RkZWYiXTtsZXQgaCxsO2ZvcihoPTA7aDxnO2grKyl7Y29uc3QgZT1pW2hdLmdseXBoTmFtZTstMT09PXdpLmluZGV4T2YoZSkmJm8uYWRkKGUpO2MucHVzaChlKX1zLmNoYXJzZXQ9bmV3IENGRkNoYXJzZXQoITEsMCxjKTtjb25zdCBDPW5ldyBDRkZJbmRleDtDLmFkZChbMTM5LDE0XSk7Zm9yKGg9MDtoPGc7aCsrKUMuYWRkKHRbaF0pO3MuY2hhclN0cmluZ3M9Qztjb25zdCBRPW5ldyBDRkZQcml2YXRlRGljdDtRLnNldEJ5TmFtZSgiU3VicnMiLG51bGwpO2NvbnN0IEU9WyJCbHVlVmFsdWVzIiwiT3RoZXJCbHVlcyIsIkZhbWlseUJsdWVzIiwiRmFtaWx5T3RoZXJCbHVlcyIsIlN0ZW1TbmFwSCIsIlN0ZW1TbmFwViIsIkJsdWVTaGlmdCIsIkJsdWVGdXp6IiwiQmx1ZVNjYWxlIiwiTGFuZ3VhZ2VHcm91cCIsIkV4cGFuc2lvbkZhY3RvciIsIkZvcmNlQm9sZCIsIlN0ZEhXIiwiU3RkVlciXTtmb3IoaD0wLGw9RS5sZW5ndGg7aDxsO2grKyl7Y29uc3QgZT1FW2hdO2lmKCEoZSBpbiByLnByaXZhdGVEYXRhKSljb250aW51ZTtjb25zdCB0PXIucHJpdmF0ZURhdGFbZV07aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9dC5sZW5ndGgtMTtlPjA7ZS0tKXRbZV0tPXRbZS0xXTtRLnNldEJ5TmFtZShlLHQpfXMudG9wRGljdC5wcml2YXRlRGljdD1RO2NvbnN0IHU9bmV3IENGRkluZGV4O2ZvcihoPTAsbD1hLmxlbmd0aDtoPGw7aCsrKXUuYWRkKGFbaF0pO1Euc3VicnNJbmRleD11O3JldHVybiBuZXcgQ0ZGQ29tcGlsZXIocykuY29tcGlsZSgpfX1jb25zdCBsYT1bWzU3MzQ0LDYzNzQzXSxbMTA0ODU3NiwxMTE0MTA5XV0sQ2E9MWUzLEJhPVsiYXNjZW50IiwiYmJveCIsImJsYWNrIiwiYm9sZCIsImNoYXJQcm9jT3BlcmF0b3JMaXN0IiwiY29tcG9zaXRlIiwiY3NzRm9udEluZm8iLCJkYXRhIiwiZGVmYXVsdFZNZXRyaWNzIiwiZGVmYXVsdFdpZHRoIiwiZGVzY2VudCIsImZhbGxiYWNrTmFtZSIsImZvbnRNYXRyaXgiLCJpc0ludmFsaWRQREZqc0ZvbnQiLCJpc1R5cGUzRm9udCIsIml0YWxpYyIsImxvYWRlZE5hbWUiLCJtaW1ldHlwZSIsIm1pc3NpbmdGaWxlIiwibmFtZSIsInJlbWVhc3VyZSIsInN1YnR5cGUiLCJzeXN0ZW1Gb250SW5mbyIsInR5cGUiLCJ2ZXJ0aWNhbCJdLFFhPVsiY01hcCIsImRlZmF1bHRFbmNvZGluZyIsImRpZmZlcmVuY2VzIiwiaXNNb25vc3BhY2UiLCJpc1NlcmlmRm9udCIsImlzU3ltYm9saWNGb250Iiwic2VhY01hcCIsInRvRm9udENoYXIiLCJ0b1VuaWNvZGUiLCJ2bWV0cmljcyIsIndpZHRocyJdO2Z1bmN0aW9uIGFkanVzdFdpZHRocyhlKXtpZighZS5mb250TWF0cml4KXJldHVybjtpZihlLmZvbnRNYXRyaXhbMF09PT1pWzBdKXJldHVybjtjb25zdCB0PS4wMDEvZS5mb250TWF0cml4WzBdLGE9ZS53aWR0aHM7Zm9yKGNvbnN0IGUgaW4gYSlhW2VdKj10O2UuZGVmYXVsdFdpZHRoKj10fWZ1bmN0aW9uIGFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSl7aWYoIWUuZmFsbGJhY2tUb1VuaWNvZGUpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoaSl8fCh0W2ldPWUuZmFsbGJhY2tUb1VuaWNvZGVbaV0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfWNsYXNzIGZvbnRzX0dseXBoe2NvbnN0cnVjdG9yKGUsdCxpLGEscixzLG4sbyxnKXt0aGlzLm9yaWdpbmFsQ2hhckNvZGU9ZTt0aGlzLmZvbnRDaGFyPXQ7dGhpcy51bmljb2RlPWk7dGhpcy5hY2NlbnQ9YTt0aGlzLndpZHRoPXI7dGhpcy52bWV0cmljPXM7dGhpcy5vcGVyYXRvckxpc3RJZD1uO3RoaXMuaXNTcGFjZT1vO3RoaXMuaXNJbkZvbnQ9Z31nZXQgY2F0ZWdvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsImNhdGVnb3J5IixmdW5jdGlvbiBnZXRDaGFyVW5pY29kZUNhdGVnb3J5KGUpe2NvbnN0IHQ9SGkuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT1lLm1hdGNoKEppKSxhPXtpc1doaXRlc3BhY2U6ISFpPy5bMV0saXNaZXJvV2lkdGhEaWFjcml0aWM6ISFpPy5bMl0saXNJbnZpc2libGVGb3JtYXRNYXJrOiEhaT8uWzNdfTtIaS5zZXQoZSxhKTtyZXR1cm4gYX0odGhpcy51bmljb2RlKSwhMCl9fWZ1bmN0aW9uIGludDE2KGUsdCl7cmV0dXJuKGU8PDgpK3R9ZnVuY3Rpb24gd3JpdGVTaWduZWRJbnQxNihlLHQsaSl7ZVt0KzFdPWk7ZVt0XT1pPj4+OH1mdW5jdGlvbiBzaWduZWRJbnQxNihlLHQpe2NvbnN0IGk9KGU8PDgpK3Q7cmV0dXJuIDMyNzY4Jmk/aS02NTUzNjppfWZ1bmN0aW9uIHN0cmluZzE2KGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBzYWZlU3RyaW5nMTYoZSl7ZT4zMjc2Nz9lPTMyNzY3OmU8LTMyNzY4JiYoZT0tMzI3NjgpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSl7cmV0dXJuInR0Y2YiPT09Ynl0ZXNUb1N0cmluZyhlLnBlZWtCeXRlcyg0KSl9ZnVuY3Rpb24gZ2V0Rm9udEZpbGVUeXBlKGUse3R5cGU6dCxzdWJ0eXBlOmksY29tcG9zaXRlOmF9KXtsZXQgcixzO2lmKGZ1bmN0aW9uIGlzVHJ1ZVR5cGVGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIDY1NTM2PT09cmVhZFVpbnQzMih0LDApfHwidHJ1ZSI9PT1ieXRlc1RvU3RyaW5nKHQpfShlKXx8aXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpKXI9YT8iQ0lERm9udFR5cGUyIjoiVHJ1ZVR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNPcGVuVHlwZUZpbGUoZSl7cmV0dXJuIk9UVE8iPT09Ynl0ZXNUb1N0cmluZyhlLnBlZWtCeXRlcyg0KSl9KGUpKXI9YT8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlyPWE/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihhKXtyPSJDSURGb250VHlwZTAiO3M9IkNJREZvbnRUeXBlMEMifWVsc2V7cj0iTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO3M9IlR5cGUxQyJ9ZWxzZXt3YXJuKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO3I9dDtzPWl9cmV0dXJuW3Isc119ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBpIGluIHQpZVsraV09dFtpXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LGkpe2NvbnN0IGE9W107bGV0IHI7Zm9yKGxldCBpPTAscz1lLmxlbmd0aDtpPHM7aSsrKXtyPWdldFVuaWNvZGVGb3JHbHlwaChlW2ldLHQpOy0xIT09ciYmKGFbaV09cil9Zm9yKGNvbnN0IGUgaW4gaSl7cj1nZXRVbmljb2RlRm9yR2x5cGgoaVtlXSx0KTstMSE9PXImJihhWytlXT1yKX1yZXR1cm4gYX1mdW5jdGlvbiBpc01hY05hbWVSZWNvcmQoZSl7cmV0dXJuIDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gaXNXaW5OYW1lUmVjb3JkKGUpe3JldHVybiAzPT09ZS5wbGF0Zm9ybSYmMT09PWUuZW5jb2RpbmcmJjEwMzM9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGNvbnZlcnRDaWRTdHJpbmcoZSx0LGk9ITEpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybiB0LmNoYXJDb2RlQXQoMCk7Y2FzZSAyOnJldHVybiB0LmNoYXJDb2RlQXQoMCk8PDh8dC5jaGFyQ29kZUF0KDEpfWNvbnN0IGE9YFVuc3VwcG9ydGVkIENJRCBzdHJpbmcgKGNoYXJDb2RlICR7ZX0pOiAiJHt0fSIuYDtpZihpKXRocm93IG5ldyBGb3JtYXRFcnJvcihhKTt3YXJuKGEpO3JldHVybiB0fWZ1bmN0aW9uIGFkanVzdE1hcHBpbmcoZSx0LGksYSl7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpLHM9bmV3IE1hcCxuPVtdLG89bmV3IFNldDtsZXQgZz0wO2xldCBjPWxhW2ddWzBdLGg9bGFbZ11bMV07Zm9yKGNvbnN0IEMgaW4gZSl7bGV0IFE9ZVtDXTtpZighdChRKSljb250aW51ZTtpZihjPmgpe2crKztpZihnPj1sYS5sZW5ndGgpe3dhcm4oIlJhbiBvdXQgb2Ygc3BhY2UgaW4gZm9udCBwcml2YXRlIHVzZSBhcmVhLiIpO2JyZWFrfWM9bGFbZ11bMF07aD1sYVtnXVsxXX1jb25zdCBFPWMrKzswPT09USYmKFE9aSk7bGV0IHU9YS5nZXQoQyk7InN0cmluZyI9PXR5cGVvZiB1JiYodT11LmNvZGVQb2ludEF0KDApKTtpZih1JiYhKGw9dSxsYVswXVswXTw9bCYmbDw9bGFbMF1bMV18fGxhWzFdWzBdPD1sJiZsPD1sYVsxXVsxXSkmJiFvLmhhcyhRKSl7cy5zZXQodSxRKTtvLmFkZChRKX1yW0VdPVE7bltDXT1FfXZhciBsO3JldHVybnt0b0ZvbnRDaGFyOm4sY2hhckNvZGVUb0dseXBoSWQ6cix0b1VuaWNvZGVFeHRyYU1hcDpzLG5leHRBdmFpbGFibGVGb250Q2hhckNvZGU6Y319ZnVuY3Rpb24gY3JlYXRlQ21hcFRhYmxlKGUsdCxpKXtjb25zdCBhPWZ1bmN0aW9uIGdldFJhbmdlcyhlLHQsaSl7Y29uc3QgYT1bXTtmb3IoY29uc3QgdCBpbiBlKWVbdF0+PWl8fGEucHVzaCh7Zm9udENoYXJDb2RlOjB8dCxnbHlwaElkOmVbdF19KTtpZih0KWZvcihjb25zdFtlLHJdb2YgdClyPj1pfHxhLnB1c2goe2ZvbnRDaGFyQ29kZTplLGdseXBoSWQ6cn0pOzA9PT1hLmxlbmd0aCYmYS5wdXNoKHtmb250Q2hhckNvZGU6MCxnbHlwaElkOjB9KTthLnNvcnQoKGZ1bmN0aW9uIGZvbnRHZXRSYW5nZXNTb3J0KGUsdCl7cmV0dXJuIGUuZm9udENoYXJDb2RlLXQuZm9udENoYXJDb2RlfSkpO2NvbnN0IHI9W10scz1hLmxlbmd0aDtmb3IobGV0IGU9MDtlPHM7KXtjb25zdCB0PWFbZV0uZm9udENoYXJDb2RlLGk9W2FbZV0uZ2x5cGhJZF07KytlO2xldCBuPXQ7Zm9yKDtlPHMmJm4rMT09PWFbZV0uZm9udENoYXJDb2RlOyl7aS5wdXNoKGFbZV0uZ2x5cGhJZCk7KytuOysrZTtpZig2NTUzNT09PW4pYnJlYWt9ci5wdXNoKFt0LG4saV0pfXJldHVybiByfShlLHQsaSkscj1hLmF0KC0xKVsxXT42NTUzNT8yOjE7bGV0IHMsbixvLGcsYz0iXDBcMCIrc3RyaW5nMTYocikrIlwwA1wwASIrc3RyaW5nMzIoNCs4KnIpO2ZvcihzPWEubGVuZ3RoLTE7cz49MCYmIShhW3NdWzBdPD02NTUzNSk7LS1zKTtjb25zdCBoPXMrMTthW3NdWzBdPDY1NTM1JiY2NTUzNT09PWFbc11bMV0mJihhW3NdWzFdPTY1NTM0KTtjb25zdCBsPWFbc11bMV08NjU1MzU/MTowLEM9aCtsLFE9T3BlblR5cGVGaWxlQnVpbGRlci5nZXRTZWFyY2hQYXJhbXMoQywyKTtsZXQgRSx1LGQsZixwPSIiLG09IiIseT0iIix3PSIiLGI9IiIsRD0wO2ZvcihzPTAsbj1oO3M8bjtzKyspe0U9YVtzXTt1PUVbMF07ZD1FWzFdO3ArPXN0cmluZzE2KHUpO20rPXN0cmluZzE2KGQpO2Y9RVsyXTtsZXQgZT0hMDtmb3Iobz0xLGc9Zi5sZW5ndGg7bzxnOysrbylpZihmW29dIT09ZltvLTFdKzEpe2U9ITE7YnJlYWt9aWYoZSl7eSs9c3RyaW5nMTYoZlswXS11JjY1NTM1KTt3Kz1zdHJpbmcxNigwKX1lbHNle2NvbnN0IGU9MiooQy1zKSsyKkQ7RCs9ZC11KzE7eSs9c3RyaW5nMTYoMCk7dys9c3RyaW5nMTYoZSk7Zm9yKG89MCxnPWYubGVuZ3RoO288ZzsrK28pYis9c3RyaW5nMTYoZltvXSl9fWlmKGw+MCl7bSs9IsO/w78iO3ArPSLDv8O/Ijt5Kz0iXDABIjt3Kz0iXDBcMCJ9Y29uc3QgUz0iXDBcMCIrc3RyaW5nMTYoMipDKStzdHJpbmcxNihRLnJhbmdlKStzdHJpbmcxNihRLmVudHJ5KStzdHJpbmcxNihRLnJhbmdlU2hpZnQpK20rIlwwXDAiK3AreSt3K2I7bGV0IGs9IiIsUj0iIjtpZihyPjEpe2MrPSJcMANcMFxuIitzdHJpbmczMig0Kzgqcis0K1MubGVuZ3RoKTtrPSIiO2ZvcihzPTAsbj1hLmxlbmd0aDtzPG47cysrKXtFPWFbc107dT1FWzBdO2Y9RVsyXTtsZXQgZT1mWzBdO2ZvcihvPTEsZz1mLmxlbmd0aDtvPGc7KytvKWlmKGZbb10hPT1mW28tMV0rMSl7ZD1FWzBdK28tMTtrKz1zdHJpbmczMih1KStzdHJpbmczMihkKStzdHJpbmczMihlKTt1PWQrMTtlPWZbb119ays9c3RyaW5nMzIodSkrc3RyaW5nMzIoRVsxXSkrc3RyaW5nMzIoZSl9Uj0iXDBcZlwwXDAiK3N0cmluZzMyKGsubGVuZ3RoKzE2KSsiXDBcMFwwXDAiK3N0cmluZzMyKGsubGVuZ3RoLzEyKX1yZXR1cm4gYysiXDAEIitzdHJpbmcxNihTLmxlbmd0aCs0KStTK1Ira31mdW5jdGlvbiBjcmVhdGVPUzJUYWJsZShlLHQsYSl7YXx8PXt1bml0c1BlckVtOjAseU1heDowLHlNaW46MCxhc2NlbnQ6MCxkZXNjZW50OjB9O2xldCByPTAscz0wLG49MCxvPTAsZz1udWxsLGM9MCxoPS0xO2lmKHQpe2ZvcihsZXQgZSBpbiB0KXtlfD0wOyhnPmV8fCFnKSYmKGc9ZSk7YzxlJiYoYz1lKTtoPWdldFVuaWNvZGVSYW5nZUZvcihlLGgpO2lmKGg8MzIpcnw9MTw8aDtlbHNlIGlmKGg8NjQpc3w9MTw8aC0zMjtlbHNlIGlmKGg8OTYpbnw9MTw8aC02NDtlbHNle2lmKCEoaDwxMjMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5pY29kZSByYW5nZXMgQml0cyA+IDEyMyBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzYWdlIik7b3w9MTw8aC05Nn19Yz42NTUzNSYmKGM9NjU1MzUpfWVsc2V7Zz0wO2M9MjU1fWNvbnN0IGw9ZS5iYm94fHxbMCwwLDAsMF0sQz1hLnVuaXRzUGVyRW18fDEvKGUuZm9udE1hdHJpeHx8aSlbMF0sUT1lLmFzY2VudFNjYWxlZD8xOkMvQ2EsRT1hLmFzY2VudHx8TWF0aC5yb3VuZChRKihlLmFzY2VudHx8bFszXSkpO2xldCB1PWEuZGVzY2VudHx8TWF0aC5yb3VuZChRKihlLmRlc2NlbnR8fGxbMV0pKTt1PjAmJmUuZGVzY2VudD4wJiZsWzFdPDAmJih1PS11KTtjb25zdCBkPWEueU1heHx8RSxmPS1hLnlNaW58fC11O3JldHVybiJcMAMCJAHDtFwwBVwwXDACwooCwrtcMFwwXDDCjALCigLCu1wwXDABw59ceDAwMQECXDBcMFwwXDAGIitTdHJpbmcuZnJvbUNoYXJDb2RlKGUuZml4ZWRQaXRjaD85OjApKyJcMFwwXDBcMFwwXDAiK3N0cmluZzMyKHIpK3N0cmluZzMyKHMpK3N0cmluZzMyKG4pK3N0cmluZzMyKG8pKyIqMjEqIitzdHJpbmcxNihlLml0YWxpY0FuZ2xlPzE6MCkrc3RyaW5nMTYoZ3x8ZS5maXJzdENoYXIpK3N0cmluZzE2KGN8fGUubGFzdENoYXIpK3N0cmluZzE2KEUpK3N0cmluZzE2KHUpKyJcMGQiK3N0cmluZzE2KGQpK3N0cmluZzE2KGYpKyJcMFwwXDBcMFwwXDBcMFwwIitzdHJpbmcxNihlLnhIZWlnaHQpK3N0cmluZzE2KGUuY2FwSGVpZ2h0KStzdHJpbmcxNigwKStzdHJpbmcxNihnfHxlLmZpcnN0Q2hhcikrIlwwAyJ9ZnVuY3Rpb24gY3JlYXRlUG9zdFRhYmxlKGUpe3JldHVybiJcMANcMFwwIitzdHJpbmczMihNYXRoLmZsb29yKDY1NTM2KmUuaXRhbGljQW5nbGUpKSsiXDBcMFwwXDAiK3N0cmluZzMyKGUuZml4ZWRQaXRjaD8xOjApKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCJ9ZnVuY3Rpb24gY3JlYXRlUG9zdHNjcmlwdE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvW15ceDIxLVx4N0VdfFtbXF0oKXt9PD4vJV0vZywiIikuc2xpY2UoMCw2Myl9ZnVuY3Rpb24gY3JlYXRlTmFtZVRhYmxlKGUsdCl7dHx8KHQ9W1tdLFtdXSk7Y29uc3QgaT1bdFswXVswXXx8Ik9yaWdpbmFsIGxpY2VuY2UiLHRbMF1bMV18fGUsdFswXVsyXXx8IlVua25vd24iLHRbMF1bM118fCJ1bmlxdWVJRCIsdFswXVs0XXx8ZSx0WzBdWzVdfHwiVmVyc2lvbiAwLjExIix0WzBdWzZdfHxjcmVhdGVQb3N0c2NyaXB0TmFtZShlKSx0WzBdWzddfHwiVW5rbm93biIsdFswXVs4XXx8IlVua25vd24iLHRbMF1bOV18fCJVbmtub3duIl0sYT1bXTtsZXQgcixzLG4sbyxnO2ZvcihyPTAscz1pLmxlbmd0aDtyPHM7cisrKXtnPXRbMV1bcl18fGlbcl07Y29uc3QgZT1bXTtmb3Iobj0wLG89Zy5sZW5ndGg7bjxvO24rKyllLnB1c2goc3RyaW5nMTYoZy5jaGFyQ29kZUF0KG4pKSk7YS5wdXNoKGUuam9pbigiIikpfWNvbnN0IGM9W2ksYV0saD1bIlwwASIsIlwwAyJdLGw9WyJcMFwwIiwiXDABIl0sQz1bIlwwXDAiLCIEXHQiXSxRPWkubGVuZ3RoKmgubGVuZ3RoO2xldCBFPSJcMFwwIitzdHJpbmcxNihRKStzdHJpbmcxNigxMipRKzYpLHU9MDtmb3Iocj0wLHM9aC5sZW5ndGg7cjxzO3IrKyl7Y29uc3QgZT1jW3JdO2ZvcihuPTAsbz1lLmxlbmd0aDtuPG87bisrKXtnPWVbbl07RSs9aFtyXStsW3JdK0Nbcl0rc3RyaW5nMTYobikrc3RyaW5nMTYoZy5sZW5ndGgpK3N0cmluZzE2KHUpO3UrPWcubGVuZ3RofX1FKz1pLmpvaW4oIiIpK2Euam9pbigiIik7cmV0dXJuIEV9Y2xhc3MgRm9udHtjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5uYW1lPWU7dGhpcy5wc05hbWU9bnVsbDt0aGlzLm1pbWV0eXBlPW51bGw7dGhpcy5kaXNhYmxlRm9udEZhY2U9ITE7dGhpcy5sb2FkZWROYW1lPWkubG9hZGVkTmFtZTt0aGlzLmlzVHlwZTNGb250PWkuaXNUeXBlM0ZvbnQ7dGhpcy5taXNzaW5nRmlsZT0hMTt0aGlzLmNzc0ZvbnRJbmZvPWkuY3NzRm9udEluZm87dGhpcy5fY2hhcnNDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2dseXBoQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgYT0hIShpLmZsYWdzJktpKTtpZighYSYmIWkuaXNTaW11bGF0ZWRGbGFncyl7Y29uc3QgdD1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpLnNwbGl0KCItIiwxKVswXSxpPVhpKCk7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiKyIpKWlmKGlbZV0pe2E9ITA7YnJlYWt9fXRoaXMuaXNTZXJpZkZvbnQ9YTt0aGlzLmlzU3ltYm9saWNGb250PSEhKGkuZmxhZ3MmVGkpO3RoaXMuaXNNb25vc3BhY2U9ISEoaS5mbGFncyZZaSk7bGV0e3R5cGU6cixzdWJ0eXBlOnN9PWk7dGhpcy50eXBlPXI7dGhpcy5zdWJ0eXBlPXM7dGhpcy5zeXN0ZW1Gb250SW5mbz1pLnN5c3RlbUZvbnRJbmZvO2NvbnN0IG49ZS5tYXRjaCgvXkludmFsaWRQREZqc0ZvbnRfKC4qKV9cZCskLyk7dGhpcy5pc0ludmFsaWRQREZqc0ZvbnQ9ISFuO3RoaXMuaXNJbnZhbGlkUERGanNGb250P3RoaXMuZmFsbGJhY2tOYW1lPW5bMV06dGhpcy5pc01vbm9zcGFjZT90aGlzLmZhbGxiYWNrTmFtZT0ibW9ub3NwYWNlIjp0aGlzLmlzU2VyaWZGb250P3RoaXMuZmFsbGJhY2tOYW1lPSJzZXJpZiI6dGhpcy5mYWxsYmFja05hbWU9InNhbnMtc2VyaWYiO2lmKHRoaXMuc3lzdGVtRm9udEluZm8/Lmd1ZXNzRmFsbGJhY2spe3RoaXMuc3lzdGVtRm9udEluZm8uZ3Vlc3NGYWxsYmFjaz0hMTt0aGlzLnN5c3RlbUZvbnRJbmZvLmNzcys9YCwke3RoaXMuZmFsbGJhY2tOYW1lfWB9dGhpcy5kaWZmZXJlbmNlcz1pLmRpZmZlcmVuY2VzO3RoaXMud2lkdGhzPWkud2lkdGhzO3RoaXMuZGVmYXVsdFdpZHRoPWkuZGVmYXVsdFdpZHRoO3RoaXMuY29tcG9zaXRlPWkuY29tcG9zaXRlO3RoaXMuY01hcD1pLmNNYXA7dGhpcy5jYXBIZWlnaHQ9aS5jYXBIZWlnaHQvQ2E7dGhpcy5hc2NlbnQ9aS5hc2NlbnQvQ2E7dGhpcy5kZXNjZW50PWkuZGVzY2VudC9DYTt0aGlzLmxpbmVIZWlnaHQ9dGhpcy5hc2NlbnQtdGhpcy5kZXNjZW50O3RoaXMuZm9udE1hdHJpeD1pLmZvbnRNYXRyaXg7dGhpcy5iYm94PWkuYmJveDt0aGlzLmRlZmF1bHRFbmNvZGluZz1pLmRlZmF1bHRFbmNvZGluZzt0aGlzLnRvVW5pY29kZT1pLnRvVW5pY29kZTt0aGlzLnRvRm9udENoYXI9W107aWYoIlR5cGUzIj09PWkudHlwZSl7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMudG9Gb250Q2hhcltlXT10aGlzLmRpZmZlcmVuY2VzW2VdfHxpLmRlZmF1bHRFbmNvZGluZ1tlXTtyZXR1cm59dGhpcy5jaWRFbmNvZGluZz1pLmNpZEVuY29kaW5nfHwiIjt0aGlzLnZlcnRpY2FsPSEhaS52ZXJ0aWNhbDtpZih0aGlzLnZlcnRpY2FsKXt0aGlzLnZtZXRyaWNzPWkudm1ldHJpY3M7dGhpcy5kZWZhdWx0Vk1ldHJpY3M9aS5kZWZhdWx0Vk1ldHJpY3N9aWYoIXR8fHQuaXNFbXB0eSl7dCYmd2FybignRm9udCBmaWxlIGlzIGVtcHR5IGluICInK2UrJyIgKCcrdGhpcy5sb2FkZWROYW1lKyIpIik7dGhpcy5mYWxsYmFja1RvU3lzdGVtRm9udChpKTtyZXR1cm59W3Isc109Z2V0Rm9udEZpbGVUeXBlKHQsaSk7cj09PXRoaXMudHlwZSYmcz09PXRoaXMuc3VidHlwZXx8aW5mbyhgSW5jb25zaXN0ZW50IGZvbnQgZmlsZSBUeXBlL1N1YlR5cGUsIGV4cGVjdGVkOiAke3RoaXMudHlwZX0vJHt0aGlzLnN1YnR5cGV9IGJ1dCBmb3VuZDogJHtyfS8ke3N9LmApO2xldCBvO3RyeXtzd2l0Y2gocil7Y2FzZSJNTVR5cGUxIjppbmZvKCJNTVR5cGUxIGZvbnQgKCIrZSsiKSwgZmFsbGluZyBiYWNrIHRvIFR5cGUxLiIpO2Nhc2UiVHlwZTEiOmNhc2UiQ0lERm9udFR5cGUwIjp0aGlzLm1pbWV0eXBlPSJmb250L29wZW50eXBlIjtjb25zdCBhPSJUeXBlMUMiPT09c3x8IkNJREZvbnRUeXBlMEMiPT09cz9uZXcgQ0ZGRm9udCh0LGkpOm5ldyBUeXBlMUZvbnQoZSx0LGkpO2FkanVzdFdpZHRocyhpKTtvPXRoaXMuY29udmVydChlLGEsaSk7YnJlYWs7Y2FzZSJPcGVuVHlwZSI6Y2FzZSJUcnVlVHlwZSI6Y2FzZSJDSURGb250VHlwZTIiOnRoaXMubWltZXR5cGU9ImZvbnQvb3BlbnR5cGUiO289dGhpcy5jaGVja0FuZFJlcGFpcihlLHQsaSk7aWYodGhpcy5pc09wZW5UeXBlKXthZGp1c3RXaWR0aHMoaSk7cj0iT3BlblR5cGUifWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGb250ICR7cn0gaXMgbm90IHN1cHBvcnRlZGApfX1jYXRjaChlKXt3YXJuKGUpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoaSk7cmV0dXJufWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoaSk7dGhpcy5kYXRhPW87dGhpcy50eXBlPXI7dGhpcy5zdWJ0eXBlPXM7dGhpcy5mb250TWF0cml4PWkuZm9udE1hdHJpeDt0aGlzLndpZHRocz1pLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1pLmRlZmF1bHRXaWR0aDt0aGlzLnRvVW5pY29kZT1pLnRvVW5pY29kZTt0aGlzLnNlYWNNYXA9aS5zZWFjTWFwfWdldCByZW5kZXJlcigpe3JldHVybiBzaGFkb3codGhpcywicmVuZGVyZXIiLEZvbnRSZW5kZXJlckZhY3RvcnkuY3JlYXRlKHRoaXMsdmkpKX1leHBvcnREYXRhKGU9ITEpe2NvbnN0IHQ9ZT9bLi4uQmEsLi4uUWFdOkJhLGk9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgYSxyO2ZvcihhIG9mIHQpe3I9dGhpc1thXTt2b2lkIDAhPT1yJiYoaVthXT1yKX1yZXR1cm4gaX1mYWxsYmFja1RvU3lzdGVtRm9udChlKXt0aGlzLm1pc3NpbmdGaWxlPSEwO2NvbnN0e25hbWU6dCx0eXBlOml9PXRoaXM7bGV0IGE9bm9ybWFsaXplRm9udE5hbWUodCk7Y29uc3Qgcj1QaSgpLHM9amkoKSxuPSEhclthXSxvPSEoIXNbYV18fCFyW3NbYV1dKTthPXJbYV18fHNbYV18fGE7Y29uc3QgZz1lYSgpW2FdO2lmKGcpe2lzTmFOKHRoaXMuYXNjZW50KSYmKHRoaXMuYXNjZW50PWcuYXNjZW50L0NhKTtpc05hTih0aGlzLmRlc2NlbnQpJiYodGhpcy5kZXNjZW50PWcuZGVzY2VudC9DYSk7aXNOYU4odGhpcy5jYXBIZWlnaHQpJiYodGhpcy5jYXBIZWlnaHQ9Zy5jYXBIZWlnaHQvQ2EpfXRoaXMuYm9sZD0vYm9sZC9naS50ZXN0KGEpO3RoaXMuaXRhbGljPS9vYmxpcXVlfGl0YWxpYy9naS50ZXN0KGEpO3RoaXMuYmxhY2s9L0JsYWNrL2cudGVzdCh0KTtjb25zdCBjPS9OYXJyb3cvZy50ZXN0KHQpO3RoaXMucmVtZWFzdXJlPSghbnx8YykmJk9iamVjdC5rZXlzKHRoaXMud2lkdGhzKS5sZW5ndGg+MDtpZigobnx8bykmJiJDSURGb250VHlwZTIiPT09aSYmdGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKSl7Y29uc3QgaT1lLmNpZFRvR2lkTWFwLGE9W107YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChhLFZpKCkpOy9BcmlhbC0/QmxhY2svaS50ZXN0KHQpP2FwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSxfaSgpKTovQ2FsaWJyaS9pLnRlc3QodCkmJmFwcGx5U3RhbmRhcmRGb250R2x5cGhNYXAoYSx6aSgpKTtpZihpKXtmb3IoY29uc3QgZSBpbiBhKXtjb25zdCB0PWFbZV07dm9pZCAwIT09aVt0XSYmKGFbK2VdPWlbdF0pfWkubGVuZ3RoIT09dGhpcy50b1VuaWNvZGUubGVuZ3RoJiZlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiZ0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2NvbnN0IHI9YVtlXTt2b2lkIDA9PT1pW3JdJiYoYVsrZV09dCl9KSl9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcHx8dGhpcy50b1VuaWNvZGUuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXthWytlXT10fSkpO3RoaXMudG9Gb250Q2hhcj1hO3RoaXMudG9Vbmljb2RlPW5ldyBUb1VuaWNvZGVNYXAoYSl9ZWxzZSBpZigvU3ltYm9sL2kudGVzdChhKSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKG1pLE5pKCksdGhpcy5kaWZmZXJlbmNlcyk7ZWxzZSBpZigvRGluZ2JhdHMvaS50ZXN0KGEpKXRoaXMudG9Gb250Q2hhcj1idWlsZFRvRm9udENoYXIoeWksR2koKSx0aGlzLmRpZmZlcmVuY2VzKTtlbHNlIGlmKG4pe2NvbnN0IGU9YnVpbGRUb0ZvbnRDaGFyKHRoaXMuZGVmYXVsdEVuY29kaW5nLE5pKCksdGhpcy5kaWZmZXJlbmNlcyk7IkNJREZvbnRUeXBlMiIhPT1pfHx0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpfHx0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwfHx0aGlzLnRvVW5pY29kZS5mb3JFYWNoKChmdW5jdGlvbih0LGkpe2VbK3RdPWl9KSk7dGhpcy50b0ZvbnRDaGFyPWV9ZWxzZXtjb25zdCBlPU5pKCksaT1bXTt0aGlzLnRvVW5pY29kZS5mb3JFYWNoKCgodCxhKT0+e2lmKCF0aGlzLmNvbXBvc2l0ZSl7Y29uc3QgaT1nZXRVbmljb2RlRm9yR2x5cGgodGhpcy5kaWZmZXJlbmNlc1t0XXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbdF0sZSk7LTEhPT1pJiYoYT1pKX1pWyt0XT1hfSkpO3RoaXMuY29tcG9zaXRlJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiYvVGFob21hfFZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGksVmkoKSk7dGhpcy50b0ZvbnRDaGFyPWl9YW1lbmRGYWxsYmFja1RvVW5pY29kZShlKTt0aGlzLmxvYWRlZE5hbWU9YS5zcGxpdCgiLSIsMSlbMF19Y2hlY2tBbmRSZXBhaXIoZSx0LGkpe2NvbnN0IGE9WyJPUy8yIiwiY21hcCIsImhlYWQiLCJoaGVhIiwiaG10eCIsIm1heHAiLCJuYW1lIiwicG9zdCIsImxvY2EiLCJnbHlmIiwiZnBnbSIsInByZXAiLCJjdnQgIiwiQ0ZGICJdO2Z1bmN0aW9uIHJlYWRUYWJsZXMoZSx0KXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCk7aVsiT1MvMiJdPW51bGw7aS5jbWFwPW51bGw7aS5oZWFkPW51bGw7aS5oaGVhPW51bGw7aS5obXR4PW51bGw7aS5tYXhwPW51bGw7aS5uYW1lPW51bGw7aS5wb3N0PW51bGw7Zm9yKGxldCByPTA7cjx0O3IrKyl7Y29uc3QgdD1yZWFkVGFibGVFbnRyeShlKTthLmluY2x1ZGVzKHQudGFnKSYmKDAhPT10Lmxlbmd0aCYmKGlbdC50YWddPXQpKX1yZXR1cm4gaX1mdW5jdGlvbiByZWFkVGFibGVFbnRyeShlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpLGk9ZS5nZXRJbnQzMigpPj4+MCxhPWUuZ2V0SW50MzIoKT4+PjAscj1lLmdldEludDMyKCk+Pj4wLHM9ZS5wb3M7ZS5wb3M9ZS5zdGFydHx8MDtlLnNraXAoYSk7Y29uc3Qgbj1lLmdldEJ5dGVzKHIpO2UucG9zPXM7aWYoImhlYWQiPT09dCl7bls4XT1uWzldPW5bMTBdPW5bMTFdPTA7blsxN118PTMyfXJldHVybnt0YWc6dCxjaGVja3N1bTppLGxlbmd0aDpyLG9mZnNldDphLGRhdGE6bn19ZnVuY3Rpb24gcmVhZE9wZW5UeXBlSGVhZGVyKGUpe3JldHVybnt2ZXJzaW9uOmUuZ2V0U3RyaW5nKDQpLG51bVRhYmxlczplLmdldFVpbnQxNigpLHNlYXJjaFJhbmdlOmUuZ2V0VWludDE2KCksZW50cnlTZWxlY3RvcjplLmdldFVpbnQxNigpLHJhbmdlU2hpZnQ6ZS5nZXRVaW50MTYoKX19ZnVuY3Rpb24gc2FuaXRpemVHbHlwaChlLHQsaSxhLHIscyl7Y29uc3Qgbj17bGVuZ3RoOjAsc2l6ZU9mSW5zdHJ1Y3Rpb25zOjB9O2lmKHQ8MHx8dD49ZS5sZW5ndGh8fGk+ZS5sZW5ndGh8fGktdDw9MTIpcmV0dXJuIG47Y29uc3Qgbz1lLnN1YmFycmF5KHQsaSksZz1zaWduZWRJbnQxNihvWzJdLG9bM10pLGM9c2lnbmVkSW50MTYob1s0XSxvWzVdKSxoPXNpZ25lZEludDE2KG9bNl0sb1s3XSksbD1zaWduZWRJbnQxNihvWzhdLG9bOV0pO2lmKGc+aCl7d3JpdGVTaWduZWRJbnQxNihvLDIsaCk7d3JpdGVTaWduZWRJbnQxNihvLDYsZyl9aWYoYz5sKXt3cml0ZVNpZ25lZEludDE2KG8sNCxsKTt3cml0ZVNpZ25lZEludDE2KG8sOCxjKX1jb25zdCBDPXNpZ25lZEludDE2KG9bMF0sb1sxXSk7aWYoQzwwKXtpZihDPC0xKXJldHVybiBuO2Euc2V0KG8scik7bi5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIG59bGV0IFEsRT0xMCx1PTA7Zm9yKFE9MDtRPEM7USsrKXt1PShvW0VdPDw4fG9bRSsxXSkrMTtFKz0yfWNvbnN0IGQ9RSxmPW9bRV08PDh8b1tFKzFdO24uc2l6ZU9mSW5zdHJ1Y3Rpb25zPWY7RSs9MitmO2NvbnN0IHA9RTtsZXQgbT0wO2ZvcihRPTA7UTx1O1ErKyl7Y29uc3QgZT1vW0UrK107MTkyJmUmJihvW0UtMV09NjMmZSk7bGV0IHQ9MjsyJmU/dD0xOjE2JmUmJih0PTApO2xldCBpPTI7NCZlP2k9MTozMiZlJiYoaT0wKTtjb25zdCBhPXQraTttKz1hO2lmKDgmZSl7Y29uc3QgZT1vW0UrK107MD09PWUmJihvW0UtMV1ePTgpO1ErPWU7bSs9ZSphfX1pZigwPT09bSlyZXR1cm4gbjtsZXQgeT1FK207aWYoeT5vLmxlbmd0aClyZXR1cm4gbjtpZighcyYmZj4wKXthLnNldChvLnN1YmFycmF5KDAsZCkscik7YS5zZXQoWzAsMF0scitkKTthLnNldChvLnN1YmFycmF5KHAseSkscitkKzIpO3ktPWY7by5sZW5ndGgteT4zJiYoeT15KzMmLTQpO24ubGVuZ3RoPXk7cmV0dXJuIG59aWYoby5sZW5ndGgteT4zKXt5PXkrMyYtNDthLnNldChvLnN1YmFycmF5KDAseSkscik7bi5sZW5ndGg9eTtyZXR1cm4gbn1hLnNldChvLHIpO24ubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBufWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgaT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9aTtjb25zdCBhPVtbXSxbXV0scj1bXSxzPWUubGVuZ3RoLG49aStzO2lmKDAhPT10LmdldFVpbnQxNigpfHxzPDYpcmV0dXJuW2Escl07Y29uc3Qgbz10LmdldFVpbnQxNigpLGc9dC5nZXRVaW50MTYoKTtsZXQgYyxoO2ZvcihjPTA7YzxvJiZ0LnBvcysxMjw9bjtjKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KGlzTWFjTmFtZVJlY29yZChlKXx8aXNXaW5OYW1lUmVjb3JkKGUpKSYmci5wdXNoKGUpfWZvcihjPTAsaD1yLmxlbmd0aDtjPGg7YysrKXtjb25zdCBlPXJbY107aWYoZS5sZW5ndGg8PTApY29udGludWU7Y29uc3Qgcz1pK2crZS5vZmZzZXQ7aWYocytlLmxlbmd0aD5uKWNvbnRpbnVlO3QucG9zPXM7Y29uc3Qgbz1lLm5hbWU7aWYoZS5lbmNvZGluZyl7bGV0IGk9IiI7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSs9MilpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDE2KCkpO2FbMV1bb109aX1lbHNlIGFbMF1bb109dC5nZXRTdHJpbmcoZS5sZW5ndGgpfXJldHVyblthLHJdfWNvbnN0IHI9WzAsMCwwLDAsMCwwLDAsMCwtMiwtMiwtMiwtMiwwLDAsLTIsLTUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsLTEsLTEsMSwtMSwtOTk5LDAsMSwwLC0xLC0yLDAsLTEsLTIsLTEsLTEsMCwtMSwtMSwwLDAsLTk5OSwtOTk5LC0xLC0xLC0xLC0xLC0yLC05OTksLTIsLTIsLTk5OSwwLC0yLC0yLDAsMCwtMiwwLC0yLDAsMCwwLC0yLC0xLC0xLDEsMSwwLDAsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsMCwtOTk5LC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0yLC05OTksLTk5OSwtOTk5LC05OTksLTk5OSwtMSwtMSwtMiwtMiwwLDAsMCwwLC0xLC0xLC05OTksLTIsLTIsMCwwLC0xLC0yLC0yLDAsMCwwLC0xLC0xLC0xLC0yXTtmdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbShlLHQpe2xldCBpLGEscyxuLG8sZz1lLmRhdGEsYz0wLGg9MCxsPTA7Y29uc3QgQz1bXSxRPVtdLEU9W107bGV0IHU9dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMsZD0hMSxmPTAscD0wO2ZvcihsZXQgZT1nLmxlbmd0aDtjPGU7KXtjb25zdCBlPWdbYysrXTtpZig2ND09PWUpe2E9Z1tjKytdO2lmKGR8fHApYys9YTtlbHNlIGZvcihpPTA7aTxhO2krKylDLnB1c2goZ1tjKytdKX1lbHNlIGlmKDY1PT09ZSl7YT1nW2MrK107aWYoZHx8cCljKz0yKmE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspe3M9Z1tjKytdO0MucHVzaChzPDw4fGdbYysrXSl9fWVsc2UgaWYoMTc2PT0oMjQ4JmUpKXthPWUtMTc2KzE7aWYoZHx8cCljKz1hO2Vsc2UgZm9yKGk9MDtpPGE7aSsrKUMucHVzaChnW2MrK10pfWVsc2UgaWYoMTg0PT0oMjQ4JmUpKXthPWUtMTg0KzE7aWYoZHx8cCljKz0yKmE7ZWxzZSBmb3IoaT0wO2k8YTtpKyspe3M9Z1tjKytdO0MucHVzaChzPDw4fGdbYysrXSl9fWVsc2UgaWYoNDMhPT1lfHx1KWlmKDQ0IT09ZXx8dSl7aWYoNDU9PT1lKWlmKGQpe2Q9ITE7aD1jfWVsc2V7bz1RLnBvcCgpO2lmKCFvKXt3YXJuKCJUVDogRU5ERiBiYWQgc3RhY2siKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufW49RS5wb3AoKTtnPW8uZGF0YTtjPW8uaTt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW25dPUMubGVuZ3RoLW8uc3RhY2tUb3B9ZWxzZSBpZigxMzc9PT1lKXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIElERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2w9Y31lbHNlIGlmKDg4PT09ZSkrK2Y7ZWxzZSBpZigyNz09PWUpcD1mO2Vsc2UgaWYoODk9PT1lKXtwPT09ZiYmKHA9MCk7LS1mfWVsc2UgaWYoMjg9PT1lJiYhZCYmIXApe2NvbnN0IGU9Qy5hdCgtMSk7ZT4wJiYoYys9ZS0xKX19ZWxzZXtpZihkfHxwKXt3YXJuKCJUVDogbmVzdGVkIEZERUZzIG5vdCBhbGxvd2VkIik7dT0hMH1kPSEwO2w9YztuPUMucG9wKCk7dC5mdW5jdGlvbnNEZWZpbmVkW25dPXtkYXRhOmcsaTpjfX1lbHNlIGlmKCFkJiYhcCl7bj1DLmF0KC0xKTtpZihpc05hTihuKSlpbmZvKCJUVDogQ0FMTCBlbXB0eSBzdGFjayAob3IgaW52YWxpZCBlbnRyeSkuIik7ZWxzZXt0LmZ1bmN0aW9uc1VzZWRbbl09ITA7aWYobiBpbiB0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzKXtjb25zdCBlPUMubGVuZ3RoK3QuZnVuY3Rpb25zU3RhY2tEZWx0YXNbbl07aWYoZTwwKXt3YXJuKCJUVDogQ0FMTCBpbnZhbGlkIGZ1bmN0aW9ucyBzdGFjayBkZWx0YS4iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufUMubGVuZ3RoPWV9ZWxzZSBpZihuIGluIHQuZnVuY3Rpb25zRGVmaW5lZCYmIUUuaW5jbHVkZXMobikpe1EucHVzaCh7ZGF0YTpnLGk6YyxzdGFja1RvcDpDLmxlbmd0aC0xfSk7RS5wdXNoKG4pO289dC5mdW5jdGlvbnNEZWZpbmVkW25dO2lmKCFvKXt3YXJuKCJUVDogQ0FMTCBub24tZXhpc3RlbnQgZnVuY3Rpb24iKTt0LmhpbnRzVmFsaWQ9ITE7cmV0dXJufWc9by5kYXRhO2M9by5pfX19aWYoIWQmJiFwKXtsZXQgdD0wO2U8PTE0Mj90PXJbZV06ZT49MTkyJiZlPD0yMjM/dD0tMTplPj0yMjQmJih0PS0yKTtpZihlPj0xMTMmJmU8PTExNyl7YT1DLnBvcCgpO2lzTmFOKGEpfHwodD0yKi1hKX1mb3IoO3Q8MCYmQy5sZW5ndGg+MDspe0MucG9wKCk7dCsrfWZvcig7dD4wOyl7Qy5wdXNoKE5hTik7dC0tfX19dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM9dTtjb25zdCBtPVtnXTtjPmcubGVuZ3RoJiZtLnB1c2gobmV3IFVpbnQ4QXJyYXkoYy1nLmxlbmd0aCkpO2lmKGw+aCl7d2FybigiVFQ6IGNvbXBsZW1lbnRpbmcgYSBtaXNzaW5nIGZ1bmN0aW9uIHRhaWwiKTttLnB1c2gobmV3IFVpbnQ4QXJyYXkoWzM0LDQ1XSkpfSFmdW5jdGlvbiBmb2xkVFRUYWJsZShlLHQpe2lmKHQubGVuZ3RoPjEpe2xldCBpLGEscj0wO2ZvcihpPTAsYT10Lmxlbmd0aDtpPGE7aSsrKXIrPXRbaV0ubGVuZ3RoO3I9ciszJi00O2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkocik7bGV0IG49MDtmb3IoaT0wLGE9dC5sZW5ndGg7aTxhO2krKyl7cy5zZXQodFtpXSxuKTtuKz10W2ldLmxlbmd0aH1lLmRhdGE9cztlLmxlbmd0aD1yfX0oZSxtKX1sZXQgcyxuLG8sZztpZihpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUodD1uZXcgU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOmksb2Zmc2V0VGFibGU6YX09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpO2Fzc2VydCgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IGk9ZS5nZXRVaW50MTYoKSxhPWUuZ2V0VWludDE2KCkscj1lLmdldEludDMyKCk+Pj4wLHM9W107Zm9yKGxldCB0PTA7dDxyO3QrKylzLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3Qgbj17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOmksbWlub3JWZXJzaW9uOmEsbnVtRm9udHM6cixvZmZzZXRUYWJsZTpzfTtzd2l0Y2goaSl7Y2FzZSAxOnJldHVybiBuO2Nhc2UgMjpuLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtuLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gbn10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7aX0uYCl9KGUpLHI9dC5zcGxpdCgiKyIpO2xldCBzO2ZvcihsZXQgbj0wO248aTtuKyspe2UucG9zPShlLnN0YXJ0fHwwKSthW25dO2NvbnN0IGk9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLG89cmVhZFRhYmxlcyhlLGkubnVtVGFibGVzKTtpZighby5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcignVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250IG11c3QgY29udGFpbiBhICJuYW1lIiB0YWJsZS4nKTtjb25zdFtnXT1yZWFkTmFtZVRhYmxlKG8ubmFtZSk7Zm9yKGxldCBlPTAsYT1nLmxlbmd0aDtlPGE7ZSsrKWZvcihsZXQgYT0wLG49Z1tlXS5sZW5ndGg7YTxuO2ErKyl7Y29uc3Qgbj1nW2VdW2FdPy5yZXBsYWNlQWxsKC9ccy9nLCIiKTtpZihuKXtpZihuPT09dClyZXR1cm57aGVhZGVyOmksdGFibGVzOm99O2lmKCEoci5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgciluPT09ZSYmKHM9e25hbWU6ZSxoZWFkZXI6aSx0YWJsZXM6b30pfX19aWYocyl7d2FybihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7cy5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6cy5oZWFkZXIsdGFibGVzOnMudGFibGVzfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udC5gKX0odCx0aGlzLm5hbWUpO3M9ZS5oZWFkZXI7bj1lLnRhYmxlc31lbHNle3M9cmVhZE9wZW5UeXBlSGVhZGVyKHQpO249cmVhZFRhYmxlcyh0LHMubnVtVGFibGVzKX1jb25zdCBjPSFuWyJDRkYgIl07aWYoYyl7aWYoIW4ubG9jYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJsb2NhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZighbi5nbHlmKXt3YXJuKCdSZXF1aXJlZCAiZ2x5ZiIgdGFibGUgaXMgbm90IGZvdW5kIC0tIHRyeWluZyB0byByZWNvdmVyLicpO24uZ2x5Zj17dGFnOiJnbHlmIixkYXRhOm5ldyBVaW50OEFycmF5KDApfX10aGlzLmlzT3BlblR5cGU9ITF9ZWxzZXtjb25zdCB0PWkuY29tcG9zaXRlJiYoaS5jaWRUb0dpZE1hcD8ubGVuZ3RoPjB8fCEoaS5jTWFwIGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKSk7aWYoIk9UVE8iPT09cy52ZXJzaW9uJiYhdHx8IW4uaGVhZHx8IW4uaGhlYXx8IW4ubWF4cHx8IW4ucG9zdCl7Zz1uZXcgU3RyZWFtKG5bIkNGRiAiXS5kYXRhKTtvPW5ldyBDRkZGb250KGcsaSk7YWRqdXN0V2lkdGhzKGkpO3JldHVybiB0aGlzLmNvbnZlcnQoZSxvLGkpfWRlbGV0ZSBuLmdseWY7ZGVsZXRlIG4ubG9jYTtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXTt0aGlzLmlzT3BlblR5cGU9ITB9aWYoIW4ubWF4cCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJtYXhwIiB0YWJsZSBpcyBub3QgZm91bmQnKTt0LnBvcz0odC5zdGFydHx8MCkrbi5tYXhwLm9mZnNldDtsZXQgaD10LmdldEludDMyKCk7Y29uc3QgbD10LmdldFVpbnQxNigpO2lmKDY1NTM2IT09aCYmMjA0ODAhPT1oKXtpZig2PT09bi5tYXhwLmxlbmd0aCloPTIwNDgwO2Vsc2V7aWYoIShuLm1heHAubGVuZ3RoPj0zMikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCcibWF4cCIgdGFibGUgaGFzIGEgd3JvbmcgdmVyc2lvbiBudW1iZXInKTtoPTY1NTM2fSFmdW5jdGlvbiB3cml0ZVVpbnQzMihlLHQsaSl7ZVt0KzNdPTI1NSZpO2VbdCsyXT1pPj4+ODtlW3QrMV09aT4+PjE2O2VbdF09aT4+PjI0fShuLm1heHAuZGF0YSwwLGgpfWlmKGkuc2NhbGVGYWN0b3JzPy5sZW5ndGg9PT1sJiZjKXtjb25zdHtzY2FsZUZhY3RvcnM6ZX09aSx0PWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLGE9bmV3IEdseWZUYWJsZSh7Z2x5ZlRhYmxlOm4uZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnQsbG9jYVRhYmxlOm4ubG9jYS5kYXRhLG51bUdseXBoczpsfSk7YS5zY2FsZShlKTtjb25zdHtnbHlmOnIsbG9jYTpzLGlzTG9jYXRpb25Mb25nOm99PWEud3JpdGUoKTtuLmdseWYuZGF0YT1yO24ubG9jYS5kYXRhPXM7aWYobyE9PSEhdCl7bi5oZWFkLmRhdGFbNTBdPTA7bi5oZWFkLmRhdGFbNTFdPW8/MTowfWNvbnN0IGc9bi5obXR4LmRhdGE7Zm9yKGxldCB0PTA7dDxsO3QrKyl7Y29uc3QgaT00KnQsYT1NYXRoLnJvdW5kKGVbdF0qaW50MTYoZ1tpXSxnW2krMV0pKTtnW2ldPWE+PjgmMjU1O2dbaSsxXT0yNTUmYTt3cml0ZVNpZ25lZEludDE2KGcsaSsyLE1hdGgucm91bmQoZVt0XSpzaWduZWRJbnQxNihnW2krMl0sZ1tpKzNdKSkpfX1sZXQgQz1sKzEsUT0hMDtpZihDPjY1NTM1KXtRPSExO0M9bDt3YXJuKCJOb3QgZW5vdWdoIHNwYWNlIGluIGdseWZzIHRvIGR1cGxpY2F0ZSBmaXJzdCBnbHlwaC4iKX1sZXQgRT0wLHU9MDtpZihoPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe3QucG9zKz04O2lmKHQuZ2V0VWludDE2KCk+Mil7bi5tYXhwLmRhdGFbMTRdPTA7bi5tYXhwLmRhdGFbMTVdPTJ9dC5wb3MrPTQ7RT10LmdldFVpbnQxNigpO3QucG9zKz00O3U9dC5nZXRVaW50MTYoKX1uLm1heHAuZGF0YVs0XT1DPj44O24ubWF4cC5kYXRhWzVdPTI1NSZDO2NvbnN0IGQ9ZnVuY3Rpb24gc2FuaXRpemVUVFByb2dyYW1zKGUsdCxpLGEpe2NvbnN0IHI9e2Z1bmN0aW9uc0RlZmluZWQ6W10sZnVuY3Rpb25zVXNlZDpbXSxmdW5jdGlvbnNTdGFja0RlbHRhczpbXSx0b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnM6ITEsaGludHNWYWxpZDohMH07ZSYmc2FuaXRpemVUVFByb2dyYW0oZSxyKTt0JiZzYW5pdGl6ZVRUUHJvZ3JhbSh0LHIpO2UmJmZ1bmN0aW9uIGNoZWNrSW52YWxpZEZ1bmN0aW9ucyhlLHQpe2lmKCFlLnRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9ucylpZihlLmZ1bmN0aW9uc0RlZmluZWQubGVuZ3RoPnQpe3dhcm4oIlRUOiBtb3JlIGZ1bmN0aW9ucyBkZWZpbmVkIHRoYW4gZXhwZWN0ZWQiKTtlLmhpbnRzVmFsaWQ9ITF9ZWxzZSBmb3IobGV0IGk9MCxhPWUuZnVuY3Rpb25zVXNlZC5sZW5ndGg7aTxhO2krKyl7aWYoaT50KXt3YXJuKCJUVDogaW52YWxpZCBmdW5jdGlvbiBpZDogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufWlmKGUuZnVuY3Rpb25zVXNlZFtpXSYmIWUuZnVuY3Rpb25zRGVmaW5lZFtpXSl7d2FybigiVFQ6IHVuZGVmaW5lZCBmdW5jdGlvbjogIitpKTtlLmhpbnRzVmFsaWQ9ITE7cmV0dXJufX19KHIsYSk7aWYoaSYmMSZpLmxlbmd0aCl7Y29uc3QgZT1uZXcgVWludDhBcnJheShpLmxlbmd0aCsxKTtlLnNldChpLmRhdGEpO2kuZGF0YT1lfXJldHVybiByLmhpbnRzVmFsaWR9KG4uZnBnbSxuLnByZXAsblsiY3Z0ICJdLEUpO2lmKCFkKXtkZWxldGUgbi5mcGdtO2RlbGV0ZSBuLnByZXA7ZGVsZXRlIG5bImN2dCAiXX0hZnVuY3Rpb24gc2FuaXRpemVNZXRyaWNzKGUsdCxpLGEscixzKXtpZighdCl7aSYmKGkuZGF0YT1udWxsKTtyZXR1cm59ZS5wb3M9KGUuc3RhcnR8fDApK3Qub2Zmc2V0O2UucG9zKz00O2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2UucG9zKz0yO2NvbnN0IG49ZS5nZXRVaW50MTYoKTtlLnBvcys9ODtlLnBvcys9MjtsZXQgbz1lLmdldFVpbnQxNigpO2lmKDAhPT1uKXtpZighKDImaW50MTYoYS5kYXRhWzQ0XSxhLmRhdGFbNDVdKSkpe3QuZGF0YVsyMl09MDt0LmRhdGFbMjNdPTB9fWlmKG8+cil7aW5mbyhgVGhlIG51bU9mTWV0cmljcyAoJHtvfSkgc2hvdWxkIG5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bUdseXBocyAoJHtyfSkuYCk7bz1yO3QuZGF0YVszNF09KDY1MjgwJm8pPj44O3QuZGF0YVszNV09MjU1Jm99Y29uc3QgZz1yLW8tKGkubGVuZ3RoLTQqbz4+MSk7aWYoZz4wKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGkubGVuZ3RoKzIqZyk7ZS5zZXQoaS5kYXRhKTtpZihzKXtlW2kubGVuZ3RoXT1pLmRhdGFbMl07ZVtpLmxlbmd0aCsxXT1pLmRhdGFbM119aS5kYXRhPWV9fSh0LG4uaGhlYSxuLmhtdHgsbi5oZWFkLEMsUSk7aWYoIW4uaGVhZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJoZWFkIiB0YWJsZSBpcyBub3QgZm91bmQnKTshZnVuY3Rpb24gc2FuaXRpemVIZWFkKGUsdCxpKXtjb25zdCBhPWUuZGF0YSxyPWZ1bmN0aW9uIGludDMyKGUsdCxpLGEpe3JldHVybihlPDwyNCkrKHQ8PDE2KSsoaTw8OCkrYX0oYVswXSxhWzFdLGFbMl0sYVszXSk7aWYocj4+MTYhPTEpe2luZm8oIkF0dGVtcHRpbmcgdG8gZml4IGludmFsaWQgdmVyc2lvbiBpbiBoZWFkIHRhYmxlOiAiK3IpO2FbMF09MDthWzFdPTE7YVsyXT0wO2FbM109MH1jb25zdCBzPWludDE2KGFbNTBdLGFbNTFdKTtpZihzPDB8fHM+MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCBpbmRleFRvTG9jRm9ybWF0IGluIGhlYWQgdGFibGU6ICIrcyk7Y29uc3QgZT10KzE7aWYoaT09PWU8PDEpe2FbNTBdPTA7YVs1MV09MH1lbHNle2lmKGkhPT1lPDwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ291bGQgbm90IGZpeCBpbmRleFRvTG9jRm9ybWF0OiAiK3MpO2FbNTBdPTA7YVs1MV09MX19fShuLmhlYWQsbCxjP24ubG9jYS5sZW5ndGg6MCk7bGV0IGY9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihjKXtjb25zdCBlPWludDE2KG4uaGVhZC5kYXRhWzUwXSxuLmhlYWQuZGF0YVs1MV0pLHQ9ZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhlLHQsaSxhLHIscyxuKXtsZXQgbyxnLGM7aWYoYSl7bz00O2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGVMb25nKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07Yz1mdW5jdGlvbiBmb250SXRlbUVuY29kZUxvbmcoZSx0LGkpe2VbdF09aT4+PjI0JjI1NTtlW3QrMV09aT4+MTYmMjU1O2VbdCsyXT1pPj44JjI1NTtlW3QrM109MjU1Jml9fWVsc2V7bz0yO2c9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGUoZSx0KXtyZXR1cm4gZVt0XTw8OXxlW3QrMV08PDF9O2M9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZSx0LGkpe2VbdF09aT4+OSYyNTU7ZVt0KzFdPWk+PjEmMjU1fX1jb25zdCBoPXM/aSsxOmksbD1vKigxK2gpLEM9bmV3IFVpbnQ4QXJyYXkobCk7Qy5zZXQoZS5kYXRhLnN1YmFycmF5KDAsbCkpO2UuZGF0YT1DO2NvbnN0IFE9dC5kYXRhLEU9US5sZW5ndGgsdT1uZXcgVWludDhBcnJheShFKTtsZXQgZCxmO2NvbnN0IHA9W107Zm9yKGQ9MCxmPTA7ZDxpKzE7ZCsrLGYrPW8pe2xldCBlPWcoQyxmKTtlPkUmJihlPUUpO3AucHVzaCh7aW5kZXg6ZCxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfXAuc29ydCgoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSk7Zm9yKGQ9MDtkPGk7ZCsrKXBbZF0uZW5kT2Zmc2V0PXBbZCsxXS5vZmZzZXQ7cC5zb3J0KCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSk7Zm9yKGQ9MDtkPGk7ZCsrKXtjb25zdHtvZmZzZXQ6ZSxlbmRPZmZzZXQ6dH09cFtkXTtpZigwIT09ZXx8MCE9PXQpYnJlYWs7Y29uc3QgaT1wW2QrMV0ub2Zmc2V0O2lmKDAhPT1pKXtwW2RdLmVuZE9mZnNldD1pO2JyZWFrfX1jb25zdCBtPXAuYXQoLTIpOzAhPT1tLm9mZnNldCYmMD09PW0uZW5kT2Zmc2V0JiYobS5lbmRPZmZzZXQ9RSk7Y29uc3QgeT1PYmplY3QuY3JlYXRlKG51bGwpO2xldCB3PTA7YyhDLDAsdyk7Zm9yKGQ9MCxmPW87ZDxpO2QrKyxmKz1vKXtjb25zdCBlPXNhbml0aXplR2x5cGgoUSxwW2RdLm9mZnNldCxwW2RdLmVuZE9mZnNldCx1LHcsciksdD1lLmxlbmd0aDswPT09dCYmKHlbZF09ITApO2Uuc2l6ZU9mSW5zdHJ1Y3Rpb25zPm4mJihuPWUuc2l6ZU9mSW5zdHJ1Y3Rpb25zKTt3Kz10O2MoQyxmLHcpfWlmKDA9PT13KXtjb25zdCBlPW5ldyBVaW50OEFycmF5KFswLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNDksMF0pO2ZvcihkPTAsZj1vO2Q8aDtkKyssZis9byljKEMsZixlLmxlbmd0aCk7dC5kYXRhPWV9ZWxzZSBpZihzKXtjb25zdCBpPWcoQyxvKTtpZih1Lmxlbmd0aD5pK3cpdC5kYXRhPXUuc3ViYXJyYXkoMCxpK3cpO2Vsc2V7dC5kYXRhPW5ldyBVaW50OEFycmF5KGkrdyk7dC5kYXRhLnNldCh1LnN1YmFycmF5KDAsdykpfXQuZGF0YS5zZXQodS5zdWJhcnJheSgwLGkpLHcpO2MoZS5kYXRhLEMubGVuZ3RoLW8sdytpKX1lbHNlIHQuZGF0YT11LnN1YmFycmF5KDAsdyk7cmV0dXJue21pc3NpbmdHbHlwaHM6eSxtYXhTaXplT2ZJbnN0cnVjdGlvbnM6bn19KG4ubG9jYSxuLmdseWYsbCxlLGQsUSx1KTtmPXQubWlzc2luZ0dseXBocztpZihoPj02NTUzNiYmbi5tYXhwLmxlbmd0aD49MzIpe24ubWF4cC5kYXRhWzI2XT10Lm1heFNpemVPZkluc3RydWN0aW9ucz4+ODtuLm1heHAuZGF0YVsyN109MjU1JnQubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zfX1pZighbi5oaGVhKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhoZWEiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2lmKDA9PT1uLmhoZWEuZGF0YVsxMF0mJjA9PT1uLmhoZWEuZGF0YVsxMV0pe24uaGhlYS5kYXRhWzEwXT0yNTU7bi5oaGVhLmRhdGFbMTFdPTI1NX1jb25zdCBwPXt1bml0c1BlckVtOmludDE2KG4uaGVhZC5kYXRhWzE4XSxuLmhlYWQuZGF0YVsxOV0pLHlNYXg6c2lnbmVkSW50MTYobi5oZWFkLmRhdGFbNDJdLG4uaGVhZC5kYXRhWzQzXSkseU1pbjpzaWduZWRJbnQxNihuLmhlYWQuZGF0YVszOF0sbi5oZWFkLmRhdGFbMzldKSxhc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNF0sbi5oaGVhLmRhdGFbNV0pLGRlc2NlbnQ6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbNl0sbi5oaGVhLmRhdGFbN10pLGxpbmVHYXA6c2lnbmVkSW50MTYobi5oaGVhLmRhdGFbOF0sbi5oaGVhLmRhdGFbOV0pfTt0aGlzLmFzY2VudD1wLmFzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5kZXNjZW50PXAuZGVzY2VudC9wLnVuaXRzUGVyRW07dGhpcy5saW5lR2FwPXAubGluZUdhcC9wLnVuaXRzUGVyRW07aWYodGhpcy5jc3NGb250SW5mbz8ubGluZUhlaWdodCl7dGhpcy5saW5lSGVpZ2h0PXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lSGVpZ2h0O3RoaXMubGluZUdhcD10aGlzLmNzc0ZvbnRJbmZvLm1ldHJpY3MubGluZUdhcH1lbHNlIHRoaXMubGluZUhlaWdodD10aGlzLmFzY2VudC10aGlzLmRlc2NlbnQrdGhpcy5saW5lR2FwO24ucG9zdCYmZnVuY3Rpb24gcmVhZFBvc3RTY3JpcHRUYWJsZShlLGksYSl7Y29uc3Qgcj0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9cjtjb25zdCBzPXIrZS5sZW5ndGgsbj10LmdldEludDMyKCk7dC5za2lwKDI4KTtsZXQgbyxnLGM9ITA7c3dpdGNoKG4pe2Nhc2UgNjU1MzY6bz1PaTticmVhaztjYXNlIDEzMTA3Mjpjb25zdCBlPXQuZ2V0VWludDE2KCk7aWYoZSE9PWEpe2M9ITE7YnJlYWt9Y29uc3Qgcj1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlPj0zMjc2OCl7Yz0hMTticmVha31yLnB1c2goZSl9aWYoIWMpYnJlYWs7Y29uc3QgaD1bXSxsPVtdO2Zvcig7dC5wb3M8czspe2NvbnN0IGU9dC5nZXRCeXRlKCk7bC5sZW5ndGg9ZTtmb3IoZz0wO2c8ZTsrK2cpbFtnXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0Qnl0ZSgpKTtoLnB1c2gobC5qb2luKCIiKSl9bz1bXTtmb3IoZz0wO2c8ZTsrK2cpe2NvbnN0IGU9cltnXTtlPDI1OD9vLnB1c2goT2lbZV0pOm8ucHVzaChoW2UtMjU4XSl9YnJlYWs7Y2FzZSAxOTY2MDg6YnJlYWs7ZGVmYXVsdDp3YXJuKCJVbmtub3duL3Vuc3VwcG9ydGVkIHBvc3QgdGFibGUgdmVyc2lvbiAiK24pO2M9ITE7aS5kZWZhdWx0RW5jb2RpbmcmJihvPWkuZGVmYXVsdEVuY29kaW5nKX1pLmdseXBoTmFtZXM9bztyZXR1cm4gY30obi5wb3N0LGksbCk7bi5wb3N0PXt0YWc6InBvc3QiLGRhdGE6Y3JlYXRlUG9zdFRhYmxlKGkpfTtjb25zdCBtPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gaGFzR2x5cGgoZSl7cmV0dXJuIWZbZV19aWYoaS5jb21wb3NpdGUpe2NvbnN0IGU9aS5jaWRUb0dpZE1hcHx8W10sdD0wPT09ZS5sZW5ndGg7aS5jTWFwLmZvckVhY2goKGZ1bmN0aW9uKGksYSl7InN0cmluZyI9PXR5cGVvZiBhJiYoYT1jb252ZXJ0Q2lkU3RyaW5nKGksYSwhMCkpO2lmKGE+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7bGV0IHI9LTE7dD9yPWE6dm9pZCAwIT09ZVthXSYmKHI9ZVthXSk7cj49MCYmcjxsJiZoYXNHbHlwaChyKSYmKG1baV09cil9KSl9ZWxzZXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRDbWFwVGFibGUoZSx0LGksYSl7aWYoIWUpe3dhcm4oIk5vIGNtYXAgdGFibGUgYXZhaWxhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1sZXQgcixzPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1zO3Quc2tpcCgyKTtjb25zdCBuPXQuZ2V0VWludDE2KCk7bGV0IG8sZz0hMTtmb3IobGV0IGU9MDtlPG47ZSsrKXtjb25zdCByPXQuZ2V0VWludDE2KCkscz10LmdldFVpbnQxNigpLGM9dC5nZXRJbnQzMigpPj4+MDtsZXQgaD0hMTtpZihvPy5wbGF0Zm9ybUlkIT09cnx8bz8uZW5jb2RpbmdJZCE9PXMpe2lmKDAhPT1yfHwwIT09cyYmMSE9PXMmJjMhPT1zKWlmKDE9PT1yJiYwPT09cyloPSEwO2Vsc2UgaWYoMyE9PXJ8fDEhPT1zfHwhYSYmbyl7aWYoaSYmMz09PXImJjA9PT1zKXtoPSEwO2xldCBpPSEwO2lmKGU8bi0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8ciYmKGk9ITEpfWkmJihnPSEwKX19ZWxzZXtoPSEwO2l8fChnPSEwKX1lbHNlIGg9ITA7aCYmKG89e3BsYXRmb3JtSWQ6cixlbmNvZGluZ0lkOnMsb2Zmc2V0OmN9KTtpZihnKWJyZWFrfX1vJiYodC5wb3M9cytvLm9mZnNldCk7aWYoIW98fC0xPT09dC5wZWVrQnl0ZSgpKXt3YXJuKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBjPXQuZ2V0VWludDE2KCk7bGV0IGg9ITE7Y29uc3QgbD1bXTtsZXQgQyxRO2lmKDA9PT1jKXt0LnNraXAoNCk7Zm9yKEM9MDtDPDI1NjtDKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmbC5wdXNoKHtjaGFyQ29kZTpDLGdseXBoSWQ6ZX0pfWg9ITB9ZWxzZSBpZigyPT09Yyl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGk9MDtmb3IobGV0IGE9MDthPDI1NjthKyspe2NvbnN0IGE9dC5nZXRVaW50MTYoKT4+MztlLnB1c2goYSk7aT1NYXRoLm1heChhLGkpfWNvbnN0IGE9W107Zm9yKGxldCBlPTA7ZTw9aTtlKyspYS5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBpPTA7aTwyNTY7aSsrKWlmKDA9PT1lW2ldKXt0LnBvcz1hWzBdLmlkUmFuZ2VQb3MrMippO1E9dC5nZXRVaW50MTYoKTtsLnB1c2goe2NoYXJDb2RlOmksZ2x5cGhJZDpRfSl9ZWxzZXtjb25zdCByPWFbZVtpXV07Zm9yKEM9MDtDPHIuZW50cnlDb3VudDtDKyspe2NvbnN0IGU9KGk8PDgpK0Mrci5maXJzdENvZGU7dC5wb3M9ci5pZFJhbmdlUG9zKzIqQztRPXQuZ2V0VWludDE2KCk7MCE9PVEmJihRPShRK3IuaWREZWx0YSklNjU1MzYpO2wucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOlF9KX19fWVsc2UgaWYoND09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGk9W107bGV0IGE7Zm9yKGE9MDthPGU7YSsrKWkucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKGE9MDthPGU7YSsrKWlbYV0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3IoYT0wO2E8ZTthKyspaVthXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBuLG89MDtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtjb25zdCBzPXQuZ2V0VWludDE2KCk7aWYocyl7bj0ocz4+MSktKGUtYSk7ci5vZmZzZXRJbmRleD1uO289TWF0aC5tYXgobyxuK3IuZW5kLXIuc3RhcnQrMSl9ZWxzZSByLm9mZnNldEluZGV4PS0xfWNvbnN0IGc9W107Zm9yKEM9MDtDPG87QysrKWcucHVzaCh0LmdldFVpbnQxNigpKTtmb3IoYT0wO2E8ZTthKyspe3I9aVthXTtzPXIuc3RhcnQ7Y29uc3QgZT1yLmVuZCx0PXIuZGVsdGE7bj1yLm9mZnNldEluZGV4O2ZvcihDPXM7Qzw9ZTtDKyspaWYoNjU1MzUhPT1DKXtRPW48MD9DOmdbbitDLXNdO1E9USt0JjY1NTM1O2wucHVzaCh7Y2hhckNvZGU6QyxnbHlwaElkOlF9KX19fWVsc2UgaWYoNj09PWMpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksaT10LmdldFVpbnQxNigpO2ZvcihDPTA7QzxpO0MrKyl7UT10LmdldFVpbnQxNigpO2NvbnN0IGk9ZStDO2wucHVzaCh7Y2hhckNvZGU6aSxnbHlwaElkOlF9KX19ZWxzZXtpZigxMiE9PWMpe3dhcm4oImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitjKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihDPTA7QzxlO0MrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGk9dC5nZXRJbnQzMigpPj4+MDtsZXQgYT10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWk7dCsrKWwucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOmErK30pfX19bC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNoYXJDb2RlLXQuY2hhckNvZGV9KSk7Zm9yKGxldCBlPTE7ZTxsLmxlbmd0aDtlKyspaWYobFtlLTFdLmNoYXJDb2RlPT09bFtlXS5jaGFyQ29kZSl7bC5zcGxpY2UoZSwxKTtlLS19cmV0dXJue3BsYXRmb3JtSWQ6by5wbGF0Zm9ybUlkLGVuY29kaW5nSWQ6by5lbmNvZGluZ0lkLG1hcHBpbmdzOmwsaGFzU2hvcnRDbWFwOmh9fShuLmNtYXAsdCx0aGlzLmlzU3ltYm9saWNGb250LGkuaGFzRW5jb2RpbmcpLGE9ZS5wbGF0Zm9ybUlkLHI9ZS5lbmNvZGluZ0lkLHM9ZS5tYXBwaW5ncztsZXQgbz1bXSxnPSExOyFpLmhhc0VuY29kaW5nfHwiTWFjUm9tYW5FbmNvZGluZyIhPT1pLmJhc2VFbmNvZGluZ05hbWUmJiJXaW5BbnNpRW5jb2RpbmciIT09aS5iYXNlRW5jb2RpbmdOYW1lfHwobz1nZXRFbmNvZGluZyhpLmJhc2VFbmNvZGluZ05hbWUpKTtpZihpLmhhc0VuY29kaW5nJiYhdGhpcy5pc1N5bWJvbGljRm9udCYmKDM9PT1hJiYxPT09cnx8MT09PWEmJjA9PT1yKSl7Y29uc3QgZT1OaSgpO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl7bGV0IG47bj12b2lkIDAhPT10aGlzLmRpZmZlcmVuY2VzW3RdP3RoaXMuZGlmZmVyZW5jZXNbdF06by5sZW5ndGgmJiIiIT09b1t0XT9vW3RdOmZpW3RdO2lmKCFuKWNvbnRpbnVlO2NvbnN0IGc9cmVjb3ZlckdseXBoTmFtZShuLGUpO2xldCBjOzM9PT1hJiYxPT09cj9jPWVbZ106MT09PWEmJjA9PT1yJiYoYz1kaS5pbmRleE9mKGcpKTtpZih2b2lkIDA9PT1jKXtpZighaS5nbHlwaE5hbWVzJiZpLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwJiYhKHRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApKXtjb25zdCBlPXRoaXMudG9Vbmljb2RlLmdldCh0KTtlJiYoYz1lLmNvZGVQb2ludEF0KDApKX1pZih2b2lkIDA9PT1jKWNvbnRpbnVlfWZvcihjb25zdCBlIG9mIHMpaWYoZS5jaGFyQ29kZT09PWMpe21bdF09ZS5nbHlwaElkO2JyZWFrfX19ZWxzZSBpZigwPT09YSl7Zm9yKGNvbnN0IGUgb2YgcyltW2UuY2hhckNvZGVdPWUuZ2x5cGhJZDtnPSEwfWVsc2UgaWYoMz09PWEmJjA9PT1yKWZvcihjb25zdCBlIG9mIHMpe2xldCB0PWUuY2hhckNvZGU7dD49NjE0NDAmJnQ8PTYxNjk1JiYodCY9MjU1KTttW3RdPWUuZ2x5cGhJZH1lbHNlIGZvcihjb25zdCBlIG9mIHMpbVtlLmNoYXJDb2RlXT1lLmdseXBoSWQ7aWYoaS5nbHlwaE5hbWVzJiYoby5sZW5ndGh8fHRoaXMuZGlmZmVyZW5jZXMubGVuZ3RoKSlmb3IobGV0IGU9MDtlPDI1NjsrK2Upe2lmKCFnJiZ2b2lkIDAhPT1tW2VdKWNvbnRpbnVlO2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8b1tlXTtpZighdCljb250aW51ZTtjb25zdCBhPWkuZ2x5cGhOYW1lcy5pbmRleE9mKHQpO2E+MCYmaGFzR2x5cGgoYSkmJihtW2VdPWEpfX0wPT09bS5sZW5ndGgmJihtWzBdPTApO2xldCB5PUMtMTtRfHwoeT0wKTtpZighaS5jc3NGb250SW5mbyl7Y29uc3QgZT1hZGp1c3RNYXBwaW5nKG0saGFzR2x5cGgseSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPWUudG9Gb250Q2hhcjtuLmNtYXA9e3RhZzoiY21hcCIsZGF0YTpjcmVhdGVDbWFwVGFibGUoZS5jaGFyQ29kZVRvR2x5cGhJZCxlLnRvVW5pY29kZUV4dHJhTWFwLEMpfTtuWyJPUy8yIl0mJmZ1bmN0aW9uIHZhbGlkYXRlT1MyVGFibGUoZSx0KXt0LnBvcz0odC5zdGFydHx8MCkrZS5vZmZzZXQ7Y29uc3QgaT10LmdldFVpbnQxNigpO3Quc2tpcCg2MCk7Y29uc3QgYT10LmdldFVpbnQxNigpO2lmKGk8NCYmNzY4JmEpcmV0dXJuITE7aWYodC5nZXRVaW50MTYoKT50LmdldFVpbnQxNigpKXJldHVybiExO3Quc2tpcCg2KTtpZigwPT09dC5nZXRVaW50MTYoKSlyZXR1cm4hMTtlLmRhdGFbOF09ZS5kYXRhWzldPTA7cmV0dXJuITB9KG5bIk9TLzIiXSx0KXx8KG5bIk9TLzIiXT17dGFnOiJPUy8yIixkYXRhOmNyZWF0ZU9TMlRhYmxlKGksZS5jaGFyQ29kZVRvR2x5cGhJZCxwKX0pfWlmKCFjKXRyeXtnPW5ldyBTdHJlYW0oblsiQ0ZGICJdLmRhdGEpO289bmV3IENGRlBhcnNlcihnLGksdmkpLnBhcnNlKCk7by5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3QgZT1uZXcgQ0ZGQ29tcGlsZXIobyk7blsiQ0ZGICJdLmRhdGE9ZS5jb21waWxlKCl9Y2F0Y2h7d2FybigiRmFpbGVkIHRvIGNvbXBpbGUgZm9udCAiK2kubG9hZGVkTmFtZSl9aWYobi5uYW1lKXtjb25zdFt0LGFdPXJlYWROYW1lVGFibGUobi5uYW1lKTtuLm5hbWUuZGF0YT1jcmVhdGVOYW1lVGFibGUoZSx0KTt0aGlzLnBzTmFtZT10WzBdWzZdfHxudWxsO2kuY29tcG9zaXRlfHxmdW5jdGlvbiBhZGp1c3RUcnVlVHlwZVRvVW5pY29kZShlLHQsaSl7aWYoZS5pc0ludGVybmFsRm9udClyZXR1cm47aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcClyZXR1cm47aWYoZS5oYXNFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47aWYoIXQpcmV0dXJuO2lmKDA9PT1pLmxlbmd0aClyZXR1cm47aWYoZS5kZWZhdWx0RW5jb2Rpbmc9PT1waSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgaSlpZighaXNXaW5OYW1lUmVjb3JkKGUpKXJldHVybjtjb25zdCBhPXBpLHI9W10scz1OaSgpO2Zvcihjb25zdCBlIGluIGEpe2NvbnN0IHQ9YVtlXTtpZigiIj09PXQpY29udGludWU7Y29uc3QgaT1zW3RdO3ZvaWQgMCE9PWkmJihyW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoaSkpfXIubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHIpfShpLHRoaXMuaXNTeW1ib2xpY0ZvbnQsYSl9ZWxzZSBuLm5hbWU9e3RhZzoibmFtZSIsZGF0YTpjcmVhdGVOYW1lVGFibGUodGhpcy5uYW1lKX07Y29uc3Qgdz1uZXcgT3BlblR5cGVGaWxlQnVpbGRlcihzLnZlcnNpb24pO2Zvcihjb25zdCBlIGluIG4pdy5hZGRUYWJsZShlLG5bZV0uZGF0YSk7cmV0dXJuIHcudG9BcnJheSgpfWNvbnZlcnQoZSx0LGEpe2EuZml4ZWRQaXRjaD0hMTthLmJ1aWx0SW5FbmNvZGluZyYmZnVuY3Rpb24gYWRqdXN0VHlwZTFUb1VuaWNvZGUoZSx0KXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZih0PT09ZS5kZWZhdWx0RW5jb2RpbmcpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IGk9W10sYT1OaSgpO2Zvcihjb25zdCByIGluIHQpe2lmKGUuaGFzRW5jb2RpbmcmJihlLmJhc2VFbmNvZGluZ05hbWV8fHZvaWQgMCE9PWUuZGlmZmVyZW5jZXNbcl0pKWNvbnRpbnVlO2NvbnN0IHM9Z2V0VW5pY29kZUZvckdseXBoKHRbcl0sYSk7LTEhPT1zJiYoaVtyXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1pLmxlbmd0aD4wJiZlLnRvVW5pY29kZS5hbWVuZChpKX0oYSxhLmJ1aWx0SW5FbmNvZGluZyk7bGV0IHI9MTt0IGluc3RhbmNlb2YgQ0ZGRm9udCYmKHI9dC5udW1HbHlwaHMtMSk7Y29uc3Qgcz10LmdldEdseXBoTWFwcGluZyhhKTtsZXQgbj1udWxsLG89cyxnPW51bGw7aWYoIWEuY3NzRm9udEluZm8pe249YWRqdXN0TWFwcGluZyhzLHQuaGFzR2x5cGhJZC5iaW5kKHQpLHIsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1uLnRvRm9udENoYXI7bz1uLmNoYXJDb2RlVG9HbHlwaElkO2c9bi50b1VuaWNvZGVFeHRyYU1hcH1jb25zdCBjPXQubnVtR2x5cGhzO2Z1bmN0aW9uIGdldENoYXJDb2RlcyhlLHQpe2xldCBpPW51bGw7Zm9yKGNvbnN0IGEgaW4gZSl0PT09ZVthXSYmKGl8fD1bXSkucHVzaCgwfGEpO3JldHVybiBpfWZ1bmN0aW9uIGNyZWF0ZUNoYXJDb2RlKGUsdCl7Zm9yKGNvbnN0IGkgaW4gZSlpZih0PT09ZVtpXSlyZXR1cm4gMHxpO24uY2hhckNvZGVUb0dseXBoSWRbbi5uZXh0QXZhaWxhYmxlRm9udENoYXJDb2RlXT10O3JldHVybiBuLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGUrK31jb25zdCBoPXQuc2VhY3M7aWYobiYmaD8ubGVuZ3RoKXtjb25zdCBlPWEuZm9udE1hdHJpeHx8aSxyPXQuZ2V0Q2hhcnNldCgpLG89T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHQgaW4gaCl7dHw9MDtjb25zdCBpPWhbdF0sYT1maVtpWzJdXSxnPWZpW2lbM11dLGM9ci5pbmRleE9mKGEpLGw9ci5pbmRleE9mKGcpO2lmKGM8MHx8bDwwKWNvbnRpbnVlO2NvbnN0IEM9e3g6aVswXSplWzBdK2lbMV0qZVsyXStlWzRdLHk6aVswXSplWzFdK2lbMV0qZVszXStlWzVdfSxRPWdldENoYXJDb2RlcyhzLHQpO2lmKFEpZm9yKGNvbnN0IGUgb2YgUSl7Y29uc3QgdD1uLmNoYXJDb2RlVG9HbHlwaElkLGk9Y3JlYXRlQ2hhckNvZGUodCxjKSxhPWNyZWF0ZUNoYXJDb2RlKHQsbCk7b1tlXT17YmFzZUZvbnRDaGFyQ29kZTppLGFjY2VudEZvbnRDaGFyQ29kZTphLGFjY2VudE9mZnNldDpDfX19YS5zZWFjTWFwPW99Y29uc3QgbD0xLyhhLmZvbnRNYXRyaXh8fGkpWzBdLEM9bmV3IE9wZW5UeXBlRmlsZUJ1aWxkZXIoIk9UVE8iKTtDLmFkZFRhYmxlKCJDRkYgIix0LmRhdGEpO0MuYWRkVGFibGUoIk9TLzIiLGNyZWF0ZU9TMlRhYmxlKGEsbykpO0MuYWRkVGFibGUoImNtYXAiLGNyZWF0ZUNtYXBUYWJsZShvLGcsYykpO0MuYWRkVGFibGUoImhlYWQiLCJcMAFcMFwwXDBcMBBcMFwwXDBcMFwwXw88w7VcMFwwIitzYWZlU3RyaW5nMTYobCkrIlwwXDBcMFwwwp5cdn4nXDBcMFwwXDDCnlx2fidcMFwwIitzYWZlU3RyaW5nMTYoYS5kZXNjZW50KSsiD8O/IitzYWZlU3RyaW5nMTYoYS5hc2NlbnQpK3N0cmluZzE2KGEuaXRhbGljQW5nbGU/MjowKSsiXDARXDBcMFwwXDBcMFwwIik7Qy5hZGRUYWJsZSgiaGhlYSIsIlwwAVwwXDAiK3NhZmVTdHJpbmcxNihhLmFzY2VudCkrc2FmZVN0cmluZzE2KGEuZGVzY2VudCkrIlwwXDDDv8O/XDBcMFwwXDBcMFwwIitzYWZlU3RyaW5nMTYoYS5jYXBIZWlnaHQpK3NhZmVTdHJpbmcxNihNYXRoLnRhbihhLml0YWxpY0FuZ2xlKSphLnhIZWlnaHQpKyJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGMpKTtDLmFkZFRhYmxlKCJobXR4IixmdW5jdGlvbiBmb250RmllbGRzSG10eCgpe2NvbnN0IGU9dC5jaGFyc3RyaW5ncyxpPXQuY2ZmP3QuY2ZmLndpZHRoczpudWxsO2xldCBhPSJcMFwwXDBcMCI7Zm9yKGxldCB0PTEscj1jO3Q8cjt0Kyspe2xldCByPTA7aWYoZSl7Y29uc3QgaT1lW3QtMV07cj0id2lkdGgiaW4gaT9pLndpZHRoOjB9ZWxzZSBpJiYocj1NYXRoLmNlaWwoaVt0XXx8MCkpO2ErPXN0cmluZzE2KHIpK3N0cmluZzE2KDApfXJldHVybiBhfSgpKTtDLmFkZFRhYmxlKCJtYXhwIiwiXDBcMFBcMCIrc3RyaW5nMTYoYykpO0MuYWRkVGFibGUoIm5hbWUiLGNyZWF0ZU5hbWVUYWJsZShlKSk7Qy5hZGRUYWJsZSgicG9zdCIsY3JlYXRlUG9zdFRhYmxlKGEpKTtyZXR1cm4gQy50b0FycmF5KCl9X2NoYXJUb0dseXBoKGUsdD0hMSl7bGV0IGksYSxyLHM9dGhpcy5fZ2x5cGhDYWNoZVtlXTtpZihzPy5pc1NwYWNlPT09dClyZXR1cm4gcztsZXQgbj1lO2lmKHRoaXMuY01hcD8uY29udGFpbnMoZSkpe249dGhpcy5jTWFwLmxvb2t1cChlKTsic3RyaW5nIj09dHlwZW9mIG4mJihuPWNvbnZlcnRDaWRTdHJpbmcoZSxuKSl9YT10aGlzLndpZHRoc1tuXTsibnVtYmVyIiE9dHlwZW9mIGEmJihhPXRoaXMuZGVmYXVsdFdpZHRoKTtjb25zdCBvPXRoaXMudm1ldHJpY3M/LltuXTtsZXQgZz10aGlzLnRvVW5pY29kZS5nZXQoZSl8fGU7Im51bWJlciI9PXR5cGVvZiBnJiYoZz1TdHJpbmcuZnJvbUNoYXJDb2RlKGcpKTtsZXQgYz12b2lkIDAhPT10aGlzLnRvRm9udENoYXJbZV07aT10aGlzLnRvRm9udENoYXJbZV18fGU7aWYodGhpcy5taXNzaW5nRmlsZSl7Y29uc3QgdD10aGlzLmRpZmZlcmVuY2VzW2VdfHx0aGlzLmRlZmF1bHRFbmNvZGluZ1tlXTsiLm5vdGRlZiIhPT10JiYiIiE9PXR8fCJUeXBlMSIhPT10aGlzLnR5cGV8fChpPTMyKTtpPWZ1bmN0aW9uIG1hcFNwZWNpYWxVbmljb2RlVmFsdWVzKGUpe3JldHVybiBlPj02NTUyMCYmZTw9NjU1MzU/MDplPj02Mjk3NiYmZTw9NjM3NDM/eGkoKVtlXXx8ZToxNzM9PT1lPzQ1OmV9KGkpfXRoaXMuaXNUeXBlM0ZvbnQmJihyPWkpO2xldCBoPW51bGw7aWYodGhpcy5zZWFjTWFwPy5bZV0pe2M9ITA7Y29uc3QgdD10aGlzLnNlYWNNYXBbZV07aT10LmJhc2VGb250Q2hhckNvZGU7aD17Zm9udENoYXI6U3RyaW5nLmZyb21Db2RlUG9pbnQodC5hY2NlbnRGb250Q2hhckNvZGUpLG9mZnNldDp0LmFjY2VudE9mZnNldH19bGV0IGw9IiI7Im51bWJlciI9PXR5cGVvZiBpJiYoaTw9MTExNDExMT9sPVN0cmluZy5mcm9tQ29kZVBvaW50KGkpOndhcm4oYGNoYXJUb0dseXBoIC0gaW52YWxpZCBmb250Q2hhckNvZGU6ICR7aX1gKSk7cz1uZXcgZm9udHNfR2x5cGgoZSxsLGcsaCxhLG8scix0LGMpO3JldHVybiB0aGlzLl9nbHlwaENhY2hlW2VdPXN9Y2hhcnNUb0dseXBocyhlKXtsZXQgdD10aGlzLl9jaGFyc0NhY2hlW2VdO2lmKHQpcmV0dXJuIHQ7dD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGk9T2JqZWN0LmNyZWF0ZShudWxsKSxhPWUubGVuZ3RoO2xldCByPTA7Zm9yKDtyPGE7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUscixpKTtjb25zdHtjaGFyY29kZTphLGxlbmd0aDpzfT1pO3IrPXM7Y29uc3Qgbj10aGlzLl9jaGFyVG9HbHlwaChhLDE9PT1zJiYzMj09PWUuY2hhckNvZGVBdChyLTEpKTt0LnB1c2gobil9fWVsc2UgZm9yKGxldCBpPTAsYT1lLmxlbmd0aDtpPGE7KytpKXtjb25zdCBhPWUuY2hhckNvZGVBdChpKSxyPXRoaXMuX2NoYXJUb0dseXBoKGEsMzI9PT1hKTt0LnB1c2gocil9cmV0dXJuIHRoaXMuX2NoYXJzQ2FjaGVbZV09dH1nZXRDaGFyUG9zaXRpb25zKGUpe2NvbnN0IHQ9W107aWYodGhpcy5jTWFwKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGE9MDtmb3IoO2E8ZS5sZW5ndGg7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsYSxpKTtjb25zdCByPWkubGVuZ3RoO3QucHVzaChbYSxhK3JdKTthKz1yfX1lbHNlIGZvcihsZXQgaT0wLGE9ZS5sZW5ndGg7aTxhOysraSl0LnB1c2goW2ksaSsxXSk7cmV0dXJuIHR9Z2V0IGdseXBoQ2FjaGVWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9nbHlwaENhY2hlKX1lbmNvZGVTdHJpbmcoZSl7Y29uc3QgdD1bXSxpPVtdLGhhc0N1cnJlbnRCdWZFcnJvcnM9KCk9PnQubGVuZ3RoJTI9PTEsYT10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwP2U9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSk6ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihTdHJpbmcuZnJvbUNvZGVQb2ludChlKSk7Zm9yKGxldCByPTAscz1lLmxlbmd0aDtyPHM7cisrKXtjb25zdCBzPWUuY29kZVBvaW50QXQocik7cz41NTI5NSYmKHM8NTczNDR8fHM+NjU1MzMpJiZyKys7aWYodGhpcy50b1VuaWNvZGUpe2NvbnN0IGU9YShzKTtpZigtMSE9PWUpe2lmKGhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGkuam9pbigiIikpO2kubGVuZ3RoPTB9Zm9yKGxldCB0PSh0aGlzLmNNYXA/dGhpcy5jTWFwLmdldENoYXJDb2RlTGVuZ3RoKGUpOjEpLTE7dD49MDt0LS0paS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCp0JjI1NSkpO2NvbnRpbnVlfX1pZighaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goaS5qb2luKCIiKSk7aS5sZW5ndGg9MH1pLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQocykpfXQucHVzaChpLmpvaW4oIiIpKTtyZXR1cm4gdH19Y2xhc3MgRXJyb3JGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXJyb3I9ZTt0aGlzLmxvYWRlZE5hbWU9ImdfZm9udF9lcnJvciI7dGhpcy5taXNzaW5nRmlsZT0hMH1jaGFyc1RvR2x5cGhzKCl7cmV0dXJuW119ZW5jb2RlU3RyaW5nKGUpe3JldHVybltlXX1leHBvcnREYXRhKGU9ITEpe3JldHVybntlcnJvcjp0aGlzLmVycm9yfX19Y29uc3QgRWE9Mix1YT0zLGRhPTQsZmE9NSxwYT02LG1hPTc7Y2xhc3MgUGF0dGVybntjb25zdHJ1Y3Rvcigpe3VucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBQYXR0ZXJuLiIpfXN0YXRpYyBwYXJzZVNoYWRpbmcoZSx0LGksYSxyKXtjb25zdCBzPWUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2UuZGljdDplLG49cy5nZXQoIlNoYWRpbmdUeXBlIik7dHJ5e3N3aXRjaChuKXtjYXNlIEVhOmNhc2UgdWE6cmV0dXJuIG5ldyBSYWRpYWxBeGlhbFNoYWRpbmcocyx0LGksYSxyKTtjYXNlIGRhOmNhc2UgZmE6Y2FzZSBwYTpjYXNlIG1hOnJldHVybiBuZXcgTWVzaFNoYWRpbmcoZSx0LGksYSxyKTtkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5zdXBwb3J0ZWQgU2hhZGluZ1R5cGU6ICIrbil9fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oZSk7cmV0dXJuIG5ldyBEdW1teVNoYWRpbmd9fX1jbGFzcyBCYXNlU2hhZGluZ3tzdGF0aWMgU01BTExfTlVNQkVSPTFlLTY7Y29uc3RydWN0b3IoKXt0aGlzLmNvbnN0cnVjdG9yPT09QmFzZVNoYWRpbmcmJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBCYXNlU2hhZGluZy4iKX1nZXRJUigpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxpLGEscil7c3VwZXIoKTt0aGlzLnNoYWRpbmdUeXBlPWUuZ2V0KCJTaGFkaW5nVHlwZSIpO2xldCBzPTA7dGhpcy5zaGFkaW5nVHlwZT09PUVhP3M9NDp0aGlzLnNoYWRpbmdUeXBlPT09dWEmJihzPTYpO3RoaXMuY29vcmRzQXJyPWUuZ2V0QXJyYXkoIkNvb3JkcyIpO2lmKCFpc051bWJlckFycmF5KHRoaXMuY29vcmRzQXJyLHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUmFkaWFsQXhpYWxTaGFkaW5nOiBJbnZhbGlkIC9Db29yZHMgYXJyYXkuIik7Y29uc3Qgbj1Db2xvclNwYWNlLnBhcnNlKHtjczplLmdldFJhdygiQ1MiKXx8ZS5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmkscGRmRnVuY3Rpb25GYWN0b3J5OmEsbG9jYWxDb2xvclNwYWNlQ2FjaGU6cn0pO3RoaXMuYmJveD1sb29rdXBOb3JtYWxSZWN0KGUuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtsZXQgbz0wLGc9MTtjb25zdCBjPWUuZ2V0QXJyYXkoIkRvbWFpbiIpO2lzTnVtYmVyQXJyYXkoYywyKSYmKFtvLGddPWMpO2xldCBoPSExLGw9ITE7Y29uc3QgQz1lLmdldEFycmF5KCJFeHRlbmQiKTsoZnVuY3Rpb24gaXNCb29sZWFuQXJyYXkoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmKG51bGw9PT10fHxlLmxlbmd0aD09PXQpJiZlLmV2ZXJ5KChlPT4iYm9vbGVhbiI9PXR5cGVvZiBlKSl9KShDLDIpJiYoW2gsbF09Qyk7aWYoISh0aGlzLnNoYWRpbmdUeXBlIT09dWF8fGgmJmwpKXtjb25zdFtlLHQsaSxhLHIsc109dGhpcy5jb29yZHNBcnIsbj1NYXRoLmh5cG90KGUtYSx0LXIpO2k8PXMrbiYmczw9aStuJiZ3YXJuKCJVbnN1cHBvcnRlZCByYWRpYWwgZ3JhZGllbnQuIil9dGhpcy5leHRlbmRTdGFydD1oO3RoaXMuZXh0ZW5kRW5kPWw7Y29uc3QgUT1lLmdldFJhdygiRnVuY3Rpb24iKSxFPWEuY3JlYXRlRnJvbUFycmF5KFEpLHU9KGctbykvODQwLGQ9dGhpcy5jb2xvclN0b3BzPVtdO2lmKG8+PWd8fHU8PTApe2luZm8oIkJhZCBzaGFkaW5nIGRvbWFpbi4iKTtyZXR1cm59Y29uc3QgZj1uZXcgRmxvYXQzMkFycmF5KG4ubnVtQ29tcHMpLHA9bmV3IEZsb2F0MzJBcnJheSgxKTtsZXQgbSx5PTA7cFswXT1vO0UocCwwLGYsMCk7bGV0IHc9bi5nZXRSZ2IoZiwwKTtjb25zdCBiPVV0aWwubWFrZUhleENvbG9yKHdbMF0sd1sxXSx3WzJdKTtkLnB1c2goWzAsYl0pO2xldCBEPTE7cFswXT1vK3U7RShwLDAsZiwwKTtsZXQgUz1uLmdldFJnYihmLDApLGs9U1swXS13WzBdKzEsUj1TWzFdLXdbMV0rMSxOPVNbMl0td1syXSsxLEc9U1swXS13WzBdLTEseD1TWzFdLXdbMV0tMSxNPVNbMl0td1syXS0xO2ZvcihsZXQgZT0yO2U8ODQwO2UrKyl7cFswXT1vK2UqdTtFKHAsMCxmLDApO209bi5nZXRSZ2IoZiwwKTtjb25zdCB0PWUteTtrPU1hdGgubWluKGssKG1bMF0td1swXSsxKS90KTtSPU1hdGgubWluKFIsKG1bMV0td1sxXSsxKS90KTtOPU1hdGgubWluKE4sKG1bMl0td1syXSsxKS90KTtHPU1hdGgubWF4KEcsKG1bMF0td1swXS0xKS90KTt4PU1hdGgubWF4KHgsKG1bMV0td1sxXS0xKS90KTtNPU1hdGgubWF4KE0sKG1bMl0td1syXS0xKS90KTtpZighKEc8PWsmJng8PVImJk08PU4pKXtjb25zdCBlPVV0aWwubWFrZUhleENvbG9yKFNbMF0sU1sxXSxTWzJdKTtkLnB1c2goW0QvODQwLGVdKTtrPW1bMF0tU1swXSsxO1I9bVsxXS1TWzFdKzE7Tj1tWzJdLVNbMl0rMTtHPW1bMF0tU1swXS0xO3g9bVsxXS1TWzFdLTE7TT1tWzJdLVNbMl0tMTt5PUQ7dz1TfUQ9ZTtTPW19Y29uc3QgVT1VdGlsLm1ha2VIZXhDb2xvcihTWzBdLFNbMV0sU1syXSk7ZC5wdXNoKFsxLFVdKTtsZXQgTD0idHJhbnNwYXJlbnQiO2lmKGUuaGFzKCJCYWNrZ3JvdW5kIikpe209bi5nZXRSZ2IoZS5nZXQoIkJhY2tncm91bmQiKSwwKTtMPVV0aWwubWFrZUhleENvbG9yKG1bMF0sbVsxXSxtWzJdKX1pZighaCl7ZC51bnNoaWZ0KFswLExdKTtkWzFdWzBdKz1CYXNlU2hhZGluZy5TTUFMTF9OVU1CRVJ9aWYoIWwpe2QuYXQoLTEpWzBdLT1CYXNlU2hhZGluZy5TTUFMTF9OVU1CRVI7ZC5wdXNoKFsxLExdKX10aGlzLmNvbG9yU3RvcHM9ZH1nZXRJUigpe2NvbnN0e2Nvb3Jkc0FycjplLHNoYWRpbmdUeXBlOnR9PXRoaXM7bGV0IGksYSxyLHMsbjtpZih0PT09RWEpe2E9W2VbMF0sZVsxXV07cj1bZVsyXSxlWzNdXTtzPW51bGw7bj1udWxsO2k9ImF4aWFsIn1lbHNlIGlmKHQ9PT11YSl7YT1bZVswXSxlWzFdXTtyPVtlWzNdLGVbNF1dO3M9ZVsyXTtuPWVbNV07aT0icmFkaWFsIn1lbHNlIHVucmVhY2hhYmxlKGBnZXRQYXR0ZXJuIHR5cGUgdW5rbm93bjogJHt0fWApO3JldHVyblsiUmFkaWFsQXhpYWwiLGksdGhpcy5iYm94LHRoaXMuY29sb3JTdG9wcyxhLHIscyxuXX19Y2xhc3MgTWVzaFN0cmVhbVJlYWRlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RyZWFtPWU7dGhpcy5jb250ZXh0PXQ7dGhpcy5idWZmZXI9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wO2NvbnN0IGk9dC5udW1Db21wczt0aGlzLnRtcENvbXBzQnVmPW5ldyBGbG9hdDMyQXJyYXkoaSk7Y29uc3QgYT10LmNvbG9yU3BhY2UubnVtQ29tcHM7dGhpcy50bXBDc0NvbXBzQnVmPXQuY29sb3JGbj9uZXcgRmxvYXQzMkFycmF5KGEpOnRoaXMudG1wQ29tcHNCdWZ9Z2V0IGhhc0RhdGEoKXtpZih0aGlzLnN0cmVhbS5lbmQpcmV0dXJuIHRoaXMuc3RyZWFtLnBvczx0aGlzLnN0cmVhbS5lbmQ7aWYodGhpcy5idWZmZXJMZW5ndGg+MClyZXR1cm4hMDtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGUoKTtpZihlPDApcmV0dXJuITE7dGhpcy5idWZmZXI9ZTt0aGlzLmJ1ZmZlckxlbmd0aD04O3JldHVybiEwfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYnVmZmVyLGk9dGhpcy5idWZmZXJMZW5ndGg7aWYoMzI9PT1lKXtpZigwPT09aSlyZXR1cm4odGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDwyNHx0aGlzLnN0cmVhbS5nZXRCeXRlKCk8PDE2fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8OHx0aGlzLnN0cmVhbS5nZXRCeXRlKCkpPj4+MDt0PXQ8PDI0fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTw8MTZ8dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpPDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGUoKTt0aGlzLmJ1ZmZlcj1lJigxPDxpKS0xO3JldHVybih0PDw4LWl8KDI1NSZlKT4+aSk+Pj4wfWlmKDg9PT1lJiYwPT09aSlyZXR1cm4gdGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2Zvcig7aTxlOyl7dD10PDw4fHRoaXMuc3RyZWFtLmdldEJ5dGUoKTtpKz04fWktPWU7dGhpcy5idWZmZXJMZW5ndGg9aTt0aGlzLmJ1ZmZlcj10JigxPDxpKS0xO3JldHVybiB0Pj5pfWFsaWduKCl7dGhpcy5idWZmZXI9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wfXJlYWRGbGFnKCl7cmV0dXJuIHRoaXMucmVhZEJpdHModGhpcy5jb250ZXh0LmJpdHNQZXJGbGFnKX1yZWFkQ29vcmRpbmF0ZSgpe2NvbnN0IGU9dGhpcy5jb250ZXh0LmJpdHNQZXJDb29yZGluYXRlLHQ9dGhpcy5yZWFkQml0cyhlKSxpPXRoaXMucmVhZEJpdHMoZSksYT10aGlzLmNvbnRleHQuZGVjb2RlLHI9ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMDtyZXR1cm5bdCpyKihhWzFdLWFbMF0pK2FbMF0saSpyKihhWzNdLWFbMl0pK2FbMl1dfXJlYWRDb21wb25lbnRzKCl7Y29uc3QgZT10aGlzLmNvbnRleHQubnVtQ29tcHMsdD10aGlzLmNvbnRleHQuYml0c1BlckNvbXBvbmVudCxpPXQ8MzI/MS8oKDE8PHQpLTEpOjIuMzI4MzA2NDM2NTM4Njk2M2UtMTAsYT10aGlzLmNvbnRleHQuZGVjb2RlLHI9dGhpcy50bXBDb21wc0J1Zjtmb3IobGV0IHM9MCxuPTQ7czxlO3MrKyxuKz0yKXtjb25zdCBlPXRoaXMucmVhZEJpdHModCk7cltzXT1lKmkqKGFbbisxXS1hW25dKSthW25dfWNvbnN0IHM9dGhpcy50bXBDc0NvbXBzQnVmO3RoaXMuY29udGV4dC5jb2xvckZuJiZ0aGlzLmNvbnRleHQuY29sb3JGbihyLDAscywwKTtyZXR1cm4gdGhpcy5jb250ZXh0LmNvbG9yU3BhY2UuZ2V0UmdiKHMsMCl9fWxldCB5YT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGdldEIoZSl7cmV0dXJuIHlhW2VdfHw9ZnVuY3Rpb24gYnVpbGRCKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBpPTA7aTw9ZTtpKyspe2NvbnN0IGE9aS9lLHI9MS1hO3QucHVzaChuZXcgRmxvYXQzMkFycmF5KFtyKiozLDMqYSpyKioyLDMqYSoqMipyLGEqKjNdKSl9cmV0dXJuIHR9KGUpfWNsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIE1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTM7c3RhdGljIE1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTIwO3N0YXRpYyBUUklBTkdMRV9ERU5TSVRZPTIwO2NvbnN0cnVjdG9yKGUsdCxpLGEscil7c3VwZXIoKTtpZighKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1lc2ggZGF0YSBpcyBub3QgYSBzdHJlYW0iKTtjb25zdCBzPWUuZGljdDt0aGlzLnNoYWRpbmdUeXBlPXMuZ2V0KCJTaGFkaW5nVHlwZSIpO3RoaXMuYmJveD1sb29rdXBOb3JtYWxSZWN0KHMuZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtjb25zdCBuPUNvbG9yU3BhY2UucGFyc2Uoe2NzOnMuZ2V0UmF3KCJDUyIpfHxzLmdldFJhdygiQ29sb3JTcGFjZSIpLHhyZWY6dCxyZXNvdXJjZXM6aSxwZGZGdW5jdGlvbkZhY3Rvcnk6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpyfSk7dGhpcy5iYWNrZ3JvdW5kPXMuaGFzKCJCYWNrZ3JvdW5kIik/bi5nZXRSZ2Iocy5nZXQoIkJhY2tncm91bmQiKSwwKTpudWxsO2NvbnN0IG89cy5nZXRSYXcoIkZ1bmN0aW9uIiksZz1vP2EuY3JlYXRlRnJvbUFycmF5KG8pOm51bGw7dGhpcy5jb29yZHM9W107dGhpcy5jb2xvcnM9W107dGhpcy5maWd1cmVzPVtdO2NvbnN0IGM9e2JpdHNQZXJDb29yZGluYXRlOnMuZ2V0KCJCaXRzUGVyQ29vcmRpbmF0ZSIpLGJpdHNQZXJDb21wb25lbnQ6cy5nZXQoIkJpdHNQZXJDb21wb25lbnQiKSxiaXRzUGVyRmxhZzpzLmdldCgiQml0c1BlckZsYWciKSxkZWNvZGU6cy5nZXRBcnJheSgiRGVjb2RlIiksY29sb3JGbjpnLGNvbG9yU3BhY2U6bixudW1Db21wczpnPzE6bi5udW1Db21wc30saD1uZXcgTWVzaFN0cmVhbVJlYWRlcihlLGMpO2xldCBsPSExO3N3aXRjaCh0aGlzLnNoYWRpbmdUeXBlKXtjYXNlIGRhOnRoaXMuX2RlY29kZVR5cGU0U2hhZGluZyhoKTticmVhaztjYXNlIGZhOmNvbnN0IGU9MHxzLmdldCgiVmVydGljZXNQZXJSb3ciKTtpZihlPDIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFZlcnRpY2VzUGVyUm93Iik7dGhpcy5fZGVjb2RlVHlwZTVTaGFkaW5nKGgsZSk7YnJlYWs7Y2FzZSBwYTp0aGlzLl9kZWNvZGVUeXBlNlNoYWRpbmcoaCk7bD0hMDticmVhaztjYXNlIG1hOnRoaXMuX2RlY29kZVR5cGU3U2hhZGluZyhoKTtsPSEwO2JyZWFrO2RlZmF1bHQ6dW5yZWFjaGFibGUoIlVuc3VwcG9ydGVkIG1lc2ggdHlwZS4iKX1pZihsKXt0aGlzLl91cGRhdGVCb3VuZHMoKTtmb3IobGV0IGU9MCx0PXRoaXMuZmlndXJlcy5sZW5ndGg7ZTx0O2UrKyl0aGlzLl9idWlsZEZpZ3VyZUZyb21QYXRjaChlKX10aGlzLl91cGRhdGVCb3VuZHMoKTt0aGlzLl9wYWNrRGF0YSgpfV9kZWNvZGVUeXBlNFNoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9W10scj1bXTtsZXQgcz0wO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgbj1lLnJlYWRGbGFnKCksbz1lLnJlYWRDb29yZGluYXRlKCksZz1lLnJlYWRDb21wb25lbnRzKCk7aWYoMD09PXMpe2lmKCEoMDw9biYmbjw9MikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU0IGZsYWciKTtzd2l0Y2gobil7Y2FzZSAwOnM9MzticmVhaztjYXNlIDE6ci5wdXNoKHIuYXQoLTIpLHIuYXQoLTEpKTtzPTE7YnJlYWs7Y2FzZSAyOnIucHVzaChyLmF0KC0zKSxyLmF0KC0xKSk7cz0xfWEucHVzaChuKX1yLnB1c2godC5sZW5ndGgpO3QucHVzaChvKTtpLnB1c2goZyk7cy0tO2UuYWxpZ24oKX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToidHJpYW5nbGVzIixjb29yZHM6bmV3IEludDMyQXJyYXkociksY29sb3JzOm5ldyBJbnQzMkFycmF5KHIpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGk9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxyPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCkscz1lLnJlYWRDb21wb25lbnRzKCk7ci5wdXNoKGkubGVuZ3RoKTtpLnB1c2godCk7YS5wdXNoKHMpfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOiJsYXR0aWNlIixjb29yZHM6bmV3IEludDMyQXJyYXkociksY29sb3JzOm5ldyBJbnQzMkFycmF5KHIpLHZlcnRpY2VzUGVyUm93OnR9KX1fZGVjb2RlVHlwZTZTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsaT10aGlzLmNvbG9ycyxhPW5ldyBJbnQzMkFycmF5KDE2KSxyPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgcz1lLnJlYWRGbGFnKCk7aWYoISgwPD1zJiZzPD0zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTYgZmxhZyIpO2NvbnN0IG49dC5sZW5ndGg7Zm9yKGxldCBpPTAsYT0wIT09cz84OjEyO2k8YTtpKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3Qgbz1pLmxlbmd0aDtmb3IobGV0IHQ9MCxhPTAhPT1zPzI6NDt0PGE7dCsrKWkucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBnLGMsaCxsO3N3aXRjaChzKXtjYXNlIDA6YVsxMl09biszO2FbMTNdPW4rNDthWzE0XT1uKzU7YVsxNV09bis2O2FbOF09bisyO2FbMTFdPW4rNzthWzRdPW4rMTthWzddPW4rODthWzBdPW47YVsxXT1uKzExO2FbMl09bisxMDthWzNdPW4rOTtyWzJdPW8rMTtyWzNdPW8rMjtyWzBdPW87clsxXT1vKzM7YnJlYWs7Y2FzZSAxOmc9YVsxMl07Yz1hWzEzXTtoPWFbMTRdO2w9YVsxNV07YVsxMl09bDthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWg7YVsxMV09biszO2FbNF09YzthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1yWzJdO2M9clszXTtyWzJdPWM7clszXT1vO3JbMF09ZztyWzFdPW8rMTticmVhaztjYXNlIDI6Zz1hWzE1XTtjPWFbMTFdO2FbMTJdPWFbM107YVsxM109biswO2FbMTRdPW4rMTthWzE1XT1uKzI7YVs4XT1hWzddO2FbMTFdPW4rMzthWzRdPWM7YVs3XT1uKzQ7YVswXT1nO2FbMV09bis3O2FbMl09bis2O2FbM109bis1O2c9clszXTtyWzJdPXJbMV07clszXT1vO3JbMF09ZztyWzFdPW8rMTticmVhaztjYXNlIDM6YVsxMl09YVswXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbMV07YVsxMV09biszO2FbNF09YVsyXTthWzddPW4rNDthWzBdPWFbM107YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7clsyXT1yWzBdO3JbM109bztyWzBdPXJbMV07clsxXT1vKzF9YVs1XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbMF1dWzBdLXRbYVsxNV1dWzBdKzYqKHRbYVs0XV1bMF0rdFthWzFdXVswXSktMioodFthWzEyXV1bMF0rdFthWzNdXVswXSkrMyoodFthWzEzXV1bMF0rdFthWzddXVswXSkpLzksKC00KnRbYVswXV1bMV0tdFthWzE1XV1bMV0rNioodFthWzRdXVsxXSt0W2FbMV1dWzFdKS0yKih0W2FbMTJdXVsxXSt0W2FbM11dWzFdKSszKih0W2FbMTNdXVsxXSt0W2FbN11dWzFdKSkvOV0pO2FbNl09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFthWzNdXVswXS10W2FbMTJdXVswXSs2Kih0W2FbMl1dWzBdK3RbYVs3XV1bMF0pLTIqKHRbYVswXV1bMF0rdFthWzE1XV1bMF0pKzMqKHRbYVs0XV1bMF0rdFthWzE0XV1bMF0pKS85LCgtNCp0W2FbM11dWzFdLXRbYVsxMl1dWzFdKzYqKHRbYVsyXV1bMV0rdFthWzddXVsxXSktMioodFthWzBdXVsxXSt0W2FbMTVdXVsxXSkrMyoodFthWzRdXVsxXSt0W2FbMTRdXVsxXSkpLzldKTthWzldPXQubGVuZ3RoO3QucHVzaChbKC00KnRbYVsxMl1dWzBdLXRbYVszXV1bMF0rNioodFthWzhdXVswXSt0W2FbMTNdXVswXSktMioodFthWzBdXVswXSt0W2FbMTVdXVswXSkrMyoodFthWzExXV1bMF0rdFthWzFdXVswXSkpLzksKC00KnRbYVsxMl1dWzFdLXRbYVszXV1bMV0rNioodFthWzhdXVsxXSt0W2FbMTNdXVsxXSktMioodFthWzBdXVsxXSt0W2FbMTVdXVsxXSkrMyoodFthWzExXV1bMV0rdFthWzFdXVsxXSkpLzldKTthWzEwXT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W2FbMTVdXVswXS10W2FbMF1dWzBdKzYqKHRbYVsxMV1dWzBdK3RbYVsxNF1dWzBdKS0yKih0W2FbMTJdXVswXSt0W2FbM11dWzBdKSszKih0W2FbMl1dWzBdK3RbYVs4XV1bMF0pKS85LCgtNCp0W2FbMTVdXVsxXS10W2FbMF1dWzFdKzYqKHRbYVsxMV1dWzFdK3RbYVsxNF1dWzFdKS0yKih0W2FbMTJdXVsxXSt0W2FbM11dWzFdKSszKih0W2FbMl1dWzFdK3RbYVs4XV1bMV0pKS85XSk7dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6InBhdGNoIixjb29yZHM6bmV3IEludDMyQXJyYXkoYSksY29sb3JzOm5ldyBJbnQzMkFycmF5KHIpfSl9fV9kZWNvZGVUeXBlN1NoYWRpbmcoZSl7Y29uc3QgdD10aGlzLmNvb3JkcyxpPXRoaXMuY29sb3JzLGE9bmV3IEludDMyQXJyYXkoMTYpLHI9bmV3IEludDMyQXJyYXkoNCk7Zm9yKDtlLmhhc0RhdGE7KXtjb25zdCBzPWUucmVhZEZsYWcoKTtpZighKDA8PXMmJnM8PTMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNyBmbGFnIik7Y29uc3Qgbj10Lmxlbmd0aDtmb3IobGV0IGk9MCxhPTAhPT1zPzEyOjE2O2k8YTtpKyspdC5wdXNoKGUucmVhZENvb3JkaW5hdGUoKSk7Y29uc3Qgbz1pLmxlbmd0aDtmb3IobGV0IHQ9MCxhPTAhPT1zPzI6NDt0PGE7dCsrKWkucHVzaChlLnJlYWRDb21wb25lbnRzKCkpO2xldCBnLGMsaCxsO3N3aXRjaChzKXtjYXNlIDA6YVsxMl09biszO2FbMTNdPW4rNDthWzE0XT1uKzU7YVsxNV09bis2O2FbOF09bisyO2FbOV09bisxMzthWzEwXT1uKzE0O2FbMTFdPW4rNzthWzRdPW4rMTthWzVdPW4rMTI7YVs2XT1uKzE1O2FbN109bis4O2FbMF09bjthWzFdPW4rMTE7YVsyXT1uKzEwO2FbM109bis5O3JbMl09bysxO3JbM109bysyO3JbMF09bztyWzFdPW8rMzticmVhaztjYXNlIDE6Zz1hWzEyXTtjPWFbMTNdO2g9YVsxNF07bD1hWzE1XTthWzEyXT1sO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09aDthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWM7YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09ZzthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtnPXJbMl07Yz1yWzNdO3JbMl09YztyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMjpnPWFbMTVdO2M9YVsxMV07YVsxMl09YVszXTthWzEzXT1uKzA7YVsxNF09bisxO2FbMTVdPW4rMjthWzhdPWFbN107YVs5XT1uKzk7YVsxMF09bisxMDthWzExXT1uKzM7YVs0XT1jO2FbNV09bis4O2FbNl09bisxMTthWzddPW4rNDthWzBdPWc7YVsxXT1uKzc7YVsyXT1uKzY7YVszXT1uKzU7Zz1yWzNdO3JbMl09clsxXTtyWzNdPW87clswXT1nO3JbMV09bysxO2JyZWFrO2Nhc2UgMzphWzEyXT1hWzBdO2FbMTNdPW4rMDthWzE0XT1uKzE7YVsxNV09bisyO2FbOF09YVsxXTthWzldPW4rOTthWzEwXT1uKzEwO2FbMTFdPW4rMzthWzRdPWFbMl07YVs1XT1uKzg7YVs2XT1uKzExO2FbN109bis0O2FbMF09YVszXTthWzFdPW4rNzthWzJdPW4rNjthWzNdPW4rNTtyWzJdPXJbMF07clszXT1vO3JbMF09clsxXTtyWzFdPW8rMX10aGlzLmZpZ3VyZXMucHVzaCh7dHlwZToicGF0Y2giLGNvb3JkczpuZXcgSW50MzJBcnJheShhKSxjb2xvcnM6bmV3IEludDMyQXJyYXkocil9KX19X2J1aWxkRmlndXJlRnJvbVBhdGNoKGUpe2NvbnN0IHQ9dGhpcy5maWd1cmVzW2VdO2Fzc2VydCgicGF0Y2giPT09dC50eXBlLCJVbmV4cGVjdGVkIHBhdGNoIG1lc2ggZmlndXJlIik7Y29uc3QgaT10aGlzLmNvb3JkcyxhPXRoaXMuY29sb3JzLHI9dC5jb29yZHMscz10LmNvbG9ycyxuPU1hdGgubWluKGlbclswXV1bMF0saVtyWzNdXVswXSxpW3JbMTJdXVswXSxpW3JbMTVdXVswXSksbz1NYXRoLm1pbihpW3JbMF1dWzFdLGlbclszXV1bMV0saVtyWzEyXV1bMV0saVtyWzE1XV1bMV0pLGc9TWF0aC5tYXgoaVtyWzBdXVswXSxpW3JbM11dWzBdLGlbclsxMl1dWzBdLGlbclsxNV1dWzBdKSxjPU1hdGgubWF4KGlbclswXV1bMV0saVtyWzNdXVsxXSxpW3JbMTJdXVsxXSxpW3JbMTVdXVsxXSk7bGV0IGg9TWF0aC5jZWlsKChnLW4pKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzJdLXRoaXMuYm91bmRzWzBdKSk7aD1NYXRoLm1heChNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNYXRoLm1pbihNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxoKSk7bGV0IGw9TWF0aC5jZWlsKChjLW8pKk1lc2hTaGFkaW5nLlRSSUFOR0xFX0RFTlNJVFkvKHRoaXMuYm91bmRzWzNdLXRoaXMuYm91bmRzWzFdKSk7bD1NYXRoLm1heChNZXNoU2hhZGluZy5NSU5fU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxNYXRoLm1pbihNZXNoU2hhZGluZy5NQVhfU1BMSVRfUEFUQ0hfQ0hVTktTX0FNT1VOVCxsKSk7Y29uc3QgQz1oKzEsUT1uZXcgSW50MzJBcnJheSgobCsxKSpDKSxFPW5ldyBJbnQzMkFycmF5KChsKzEpKkMpO2xldCB1PTA7Y29uc3QgZD1uZXcgVWludDhBcnJheSgzKSxmPW5ldyBVaW50OEFycmF5KDMpLHA9YVtzWzBdXSxtPWFbc1sxXV0seT1hW3NbMl1dLHc9YVtzWzNdXSxiPWdldEIobCksRD1nZXRCKGgpO2ZvcihsZXQgZT0wO2U8PWw7ZSsrKXtkWzBdPShwWzBdKihsLWUpK3lbMF0qZSkvbHwwO2RbMV09KHBbMV0qKGwtZSkreVsxXSplKS9sfDA7ZFsyXT0ocFsyXSoobC1lKSt5WzJdKmUpL2x8MDtmWzBdPShtWzBdKihsLWUpK3dbMF0qZSkvbHwwO2ZbMV09KG1bMV0qKGwtZSkrd1sxXSplKS9sfDA7ZlsyXT0obVsyXSoobC1lKSt3WzJdKmUpL2x8MDtmb3IobGV0IHQ9MDt0PD1oO3QrKyx1Kyspe2lmKCEoMCE9PWUmJmUhPT1sfHwwIT09dCYmdCE9PWgpKWNvbnRpbnVlO2xldCBzPTAsbj0wLG89MDtmb3IobGV0IGE9MDthPD0zO2ErKylmb3IobGV0IGc9MDtnPD0zO2crKyxvKyspe2NvbnN0IGM9YltlXVthXSpEW3RdW2ddO3MrPWlbcltvXV1bMF0qYztuKz1pW3Jbb11dWzFdKmN9UVt1XT1pLmxlbmd0aDtpLnB1c2goW3Msbl0pO0VbdV09YS5sZW5ndGg7Y29uc3QgZz1uZXcgVWludDhBcnJheSgzKTtnWzBdPShkWzBdKihoLXQpK2ZbMF0qdCkvaHwwO2dbMV09KGRbMV0qKGgtdCkrZlsxXSp0KS9ofDA7Z1syXT0oZFsyXSooaC10KStmWzJdKnQpL2h8MDthLnB1c2goZyl9fVFbMF09clswXTtFWzBdPXNbMF07UVtoXT1yWzNdO0VbaF09c1sxXTtRW0MqbF09clsxMl07RVtDKmxdPXNbMl07UVtDKmwraF09clsxNV07RVtDKmwraF09c1szXTt0aGlzLmZpZ3VyZXNbZV09e3R5cGU6ImxhdHRpY2UiLGNvb3JkczpRLGNvbG9yczpFLHZlcnRpY2VzUGVyUm93OkN9fV91cGRhdGVCb3VuZHMoKXtsZXQgZT10aGlzLmNvb3Jkc1swXVswXSx0PXRoaXMuY29vcmRzWzBdWzFdLGk9ZSxhPXQ7Zm9yKGxldCByPTEscz10aGlzLmNvb3Jkcy5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz10aGlzLmNvb3Jkc1tyXVswXSxuPXRoaXMuY29vcmRzW3JdWzFdO2U9ZT5zP3M6ZTt0PXQ+bj9uOnQ7aT1pPHM/czppO2E9YTxuP246YX10aGlzLmJvdW5kcz1bZSx0LGksYV19X3BhY2tEYXRhKCl7bGV0IGUsdCxpLGE7Y29uc3Qgcj10aGlzLmNvb3JkcyxzPW5ldyBGbG9hdDMyQXJyYXkoMipyLmxlbmd0aCk7Zm9yKGU9MCxpPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXJbZV07c1tpKytdPXRbMF07c1tpKytdPXRbMV19dGhpcy5jb29yZHM9cztjb25zdCBuPXRoaXMuY29sb3JzLG89bmV3IFVpbnQ4QXJyYXkoMypuLmxlbmd0aCk7Zm9yKGU9MCxpPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PW5bZV07b1tpKytdPXRbMF07b1tpKytdPXRbMV07b1tpKytdPXRbMl19dGhpcy5jb2xvcnM9bztjb25zdCBnPXRoaXMuZmlndXJlcztmb3IoZT0wLHQ9Zy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1nW2VdLHI9dC5jb29yZHMscz10LmNvbG9ycztmb3IoaT0wLGE9ci5sZW5ndGg7aTxhO2krKyl7cltpXSo9MjtzW2ldKj0zfX19Z2V0SVIoKXtjb25zdHtib3VuZHM6ZX09dGhpcztpZihlWzJdLWVbMF09PTB8fGVbM10tZVsxXT09MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgTWVzaFNoYWRpbmcgYm91bmRzOiBbJHtlfV0uYCk7cmV0dXJuWyJNZXNoIix0aGlzLnNoYWRpbmdUeXBlLHRoaXMuY29vcmRzLHRoaXMuY29sb3JzLHRoaXMuZmlndXJlcyxlLHRoaXMuYmJveCx0aGlzLmJhY2tncm91bmRdfX1jbGFzcyBEdW1teVNoYWRpbmcgZXh0ZW5kcyBCYXNlU2hhZGluZ3tnZXRJUigpe3JldHVyblsiRHVtbXkiXX19ZnVuY3Rpb24gZ2V0VGlsaW5nUGF0dGVybklSKGUsaSxhKXtjb25zdCByPWxvb2t1cE1hdHJpeChpLmdldEFycmF5KCJNYXRyaXgiKSx0KSxzPWxvb2t1cE5vcm1hbFJlY3QoaS5nZXRBcnJheSgiQkJveCIpLG51bGwpO2lmKCFzfHxzWzJdLXNbMF09PTB8fHNbM10tc1sxXT09MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9CQm94IGFycmF5LiIpO2NvbnN0IG49aS5nZXQoIlhTdGVwIik7aWYoIm51bWJlciIhPXR5cGVvZiBuKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1hTdGVwIHZhbHVlLiIpO2NvbnN0IG89aS5nZXQoIllTdGVwIik7aWYoIm51bWJlciIhPXR5cGVvZiBvKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1lTdGVwIHZhbHVlLiIpO2NvbnN0IGc9aS5nZXQoIlBhaW50VHlwZSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGcpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1BhaW50VHlwZSB2YWx1ZS4iKTtjb25zdCBjPWkuZ2V0KCJUaWxpbmdUeXBlIik7aWYoIU51bWJlci5pc0ludGVnZXIoYykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvVGlsaW5nVHlwZSB2YWx1ZS4iKTtyZXR1cm5bIlRpbGluZ1BhdHRlcm4iLGEsZSxyLHMsbixvLGcsY119Y29uc3Qgd2E9WzEuMzg3NywxLDEsMSwuOTc4MDEsLjkyNDgyLC44OTU1MiwuOTExMzMsLjgxOTg4LC45NzU2NiwuOTgxNTIsLjkzNTQ4LC45MzU0OCwxLjI3OTgsLjg1Mjg0LC45Mjc5NCwxLC45NjEzNCwxLjU0NjU3LC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuODI4NDUsLjgyODQ1LC44NTI4NCwuODUyODQsLjg1Mjg0LC43NTg1OSwuOTIxMzgsLjgzOTA4LC43NzYyLC43MzI5MywuODcyODksLjczMTMzLC43NTE0LC44MTkyMSwuODczNTYsLjk1OTU4LC41OTUyNiwuNzU3MjcsLjY5MjI1LDEuMDQ5MjQsLjkxMjEsLjg2OTQzLC43OTc5NSwuODgxOTgsLjc3OTU4LC43MDg2NCwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwMTcsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTQ2NTcsLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC44ODc2MiwuODc4NSwuNzUyNDEsLjg3ODUsLjkwNTE4LC45NTAxNSwuNzc2MTgsLjg3ODUsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MTQ4OCwuODc4NSwuODgwMSwuODc4NSwuODc4NSwuOTEzNDMsLjcxNzMsMS4wNDEwNiwuODc4NSwuODUwNzUsLjk1Nzk0LC44MjYxNiwuODUxNjIsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjEyNDAxLC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjczMjkzLC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MTIxLC44Njk0MywuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg1Mjg0LC44NzUwOCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg3MTUsLjc1MjQxLC45MDUxOCwuOTA1MTgsLjkwNTE4LC45MDUxOCwuODg0MDEsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg3ODUsLjg3ODUsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjg4MDEsLjkwNzQ3LC44OTA0OSwuODc4NSwuODc4NSwuODc4NSwuODc4NSwuODUxNjIsLjg3ODUsLjg1MTYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuODM5MDgsLjg4NzYyLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjg3Mjg5LC44MzAxNiwuODg1MDYsLjkzMTI1LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsLjgxOTIxLC43NzYxOCwxLDEsLjg3MzU2LC44Nzg1LC45MTA3NSwuODk2MDgsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjIyOSwuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzk0NjgsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MTIxLC44Nzg1LDEsMSwuOTEyMSwuODc4NSwuODc4MDIsLjg4NjU2LC44Nzg1LC44Njk0MywuODgwMSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44NzQwMiwuODkyOTEsLjc3OTU4LC45MTM0MywxLDEsLjc3OTU4LC45MTM0MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC44ODc2MiwuNzc1MzksLjg3MTUsLjg3NTA4LC44OTA0OSwxLDEsLjgxMDU1LDEuMDQxMDYsMS4yMDUyOCwxLjIwNTI4LDEsMS4xNTU0MywuNzA2NzQsLjk4Mzg3LC45NDcyMSwxLjMzNDMxLDEuNDU4OTQsLjk1MTYxLDEuMDYzMDMsLjgzOTA4LC44MDM1MiwuNTcxODQsLjY5NjUsLjU2Mjg5LC44MjAwMSwuNTYwMjksLjgxMjM1LDEuMDI5ODgsLjgzOTA4LC43NzYyLC42ODE1NiwuODAzNjcsLjczMTMzLC43ODI1NywuODczNTYsLjg2OTQzLC45NTk1OCwuNzU3MjcsLjg5MDE5LDEuMDQ5MjQsLjkxMjEsLjc2NDgsLjg2OTQzLC44NzM1NiwuNzk3OTUsLjc4Mjc1LC44MTA1NSwuNzc4OTIsLjk3NjIsLjgyNTc3LC45OTgxOSwuODQ4OTYsLjk1OTU4LC43Nzg5MiwuOTYxMDgsMS4wMTQwNywuODkwNDksMS4wMjk4OCwuOTQyMTEsLjk2MTA4LC44OTM2LC44NDAyMSwuODc4NDIsLjk2Mzk5LC43OTEwOSwuODkwNDksMS4wMDgxMywxLjAyOTg4LC44NjA3NywuODc0NDUsLjkyMDk5LC44NDcyMywuODY1MTMsLjg4MDEsLjc1NjM4LC44NTcxNCwuNzgyMTYsLjc5NTg2LC44Nzk2NSwuOTQyMTEsLjk3NzQ3LC43ODI4NywuOTc5MjYsLjg0OTcxLDEuMDI5ODgsLjk0MjExLC44ODAxLC45NDIxMSwuODQ5NzEsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDI2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA1MTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTQ4LDEsMSwxLDEsMSwxLC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuOTYwMTcsLjk1Nzk0LC43Nzg5MiwuODUxNjIsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjkyNzk0LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzExNDMsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45MzgzNSwuODM0MDYsLjkxMTMzLC44NDEwNywuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTAwNiwxLjUzNzExLC45NDQzNCwxLjA4Njk2LDEsLjk1MDE4LC43NzE5MiwuODUyODQsLjkwNzQ3LDEuMTc1MzQsLjY5ODI1LC45NzE2LDEuMzcwNzcsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjA4MDA0LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNzI3LC45MDcyNywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sYmE9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LERhPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NjIzOSwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzE4MDUsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MDg3MiwuODU5MzgsLjc5Nzk1LC44NzA2OCwuNzc5NTgsLjY5NzY2LC44MTA1NSwuOTAzOTksLjg4NjUzLC45NjA2OCwuODI1NzcsLjc3ODkyLC43ODI1NywuOTc1MDcsMS41MjksLjk3NTA3LC44NTI4NCwuODk1NTIsLjkwMTc2LC45NDkwOCwuODY0MTEsLjc0MDEyLC44NjQxMSwuODgzMjMsLjk1MDE1LC44NjQxMSwuODYzMzEsLjg4NDAxLC45MTkxNiwuODYzMDQsLjg4NDAxLC45MDM5LC44NjMzMSwuODYzMzEsLjg2NDExLC44NjQxMSwuOTA0NjQsLjcwODUyLDEuMDQxMDYsLjg2MzMxLC44NDM3MiwuOTU3OTQsLjgyNjE2LC44NDU0OCwuNzk0OTIsLjg4MzMxLDEuNjk4MDgsLjg4MzMxLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuNzgwMSwuODk1NTIsMS4yNDQ4NywxLjEzMjU0LDEuMTkxMjksLjk2ODM5LC44NTI4NCwuNjg3ODcsLjcwNjQ1LC44NTU5MiwuOTA3NDcsMS4wMTQ2NiwxLjAwODgsLjkwMzIzLDEsMS4wNzQ2MywxLC45MTA1NiwuNzU4MDYsMS4xOTExOCwuOTY4MzksLjc4ODY0LC44Mjg0NSwuODQxMzMsLjc1ODU5LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC43NzUzOSwuNzE4MDUsLjczMTMzLC43MzEzMywuNzMxMzMsLjczMTMzLC45NTk1OCwuOTU5NTgsLjk1OTU4LC45NTk1OCwuODg1MDYsLjkwODcyLC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1Mjg0LC44NzA2OCwuOTAzOTksLjkwMzk5LC45MDM5OSwuOTAzOTksLjc3ODkyLC43OTc5NSwuOTA4MDcsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjg1ODg3LC43NDAxMiwuODgzMjMsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC45MDc0NywuODkwNDksLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NDU0OCwuODY0MTEsLjg0NTQ4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuODM5MDgsLjk0OTA4LC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjg3Mjg5LC43OTUzOCwuODg1MDYsLjkyNzI2LC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsLjgxOTIxLC44NjQxMSwxLDEsLjg3MzU2LC44NjMzMSwuOTEwNzUsLjg3NzcsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC43NjQ2NywuOTAxNjcsLjU5NTI2LC45MTkxNiwxLDEsLjg2MzA0LC42OTIyNSwuODg0MDEsMSwxLC43MDQyNCwuNzczMTIsLjkxOTI2LC44ODE3NSwuNzA4MjMsLjk0OTAzLC45MDg3MiwuODYzMzEsMSwxLC45MDg3MiwuODYzMzEsLjg2OTA2LC44ODExNiwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg3NDAyLC44NjU0OSwuNzc5NTgsLjkwNDY0LDEsMSwuNzc5NTgsLjkwNDY0LC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsMSwxLC44MTA1NSwuNzU4NDEsLjgxMDU1LDEuMDY0NTIsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjk2MDY4LC45NTc5NCwuNzc4OTIsLjg0NTQ4LC43Nzg5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjc4MjU3LC43OTQ5MiwuOTI5NywuNTY4OTIsLjgzOTA4LC45NDkwOCwuNzc1MzksLjg1ODg3LC44NzA2OCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwMDg4LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjQ4Mzg3LC44MzkwOCwuODAzNTIsLjU3MTE4LC42OTY1LC41NjM0NywuNzkxNzksLjU1ODUzLC44MDM0NiwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjcxNzQsLjg2MDM2LC43MzEzMywuNzgyNTcsLjg3MzU2LC44NjQ0MSwuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MDg3MiwuNzQ4ODksLjg1OTM4LC44Nzg5MSwuNzk3OTUsLjc5NTcsLjgxMDU1LC43Nzg5MiwuOTc0NDcsLjgyNTc3LC45NzQ2NiwuODcxNzksLjk1OTU4LC43Nzg5MiwuOTQyNTIsLjk1NjEyLC44NzUzLDEuMDI5ODgsLjkyNzMzLC45NDI1MiwuODc0MTEsLjg0MDIxLC44NzI4LC45NTYxMiwuNzQwODEsLjg3NTMsMS4wMjE4OSwxLjAyOTg4LC44NDgxNCwuODc0NDUsLjkxODIyLC44NDcyMywuODU2NjgsLjg2MzMxLC44MTM0NCwuODc1ODEsLjc2NDIyLC44MjA0NiwuOTYwNTcsLjkyNzMzLC45OTM3NSwuNzgwMjIsLjk1NDUyLC44NjAxNSwxLjAyOTg4LC45MjczMywuODYzMzEsLjkyNzMzLC44NjAxNSwuNzMxMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNjMxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODMyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODUxNzQsMSwxLDEsMSwxLDEsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwxLDEsLjg5NTUyLC45MDUyNywxLC45MDM2MywuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODk4MDcsLjg3MDEyLC44NzAxMiwuODcwMTIsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC43MTA5NCwxLjA2MTUyLDEsMSwxLjAzMzcyLDEuMDMzNzIsLjk3MTcxLDEuNDk1NiwyLjI4MDcsLjkyOTcyLC44MzQwNiwuOTExMzMsLjgzMzI2LC45MTEzMywxLDEsMSwuNzIwMjEsMSwxLjIzMTA4LC44MzQ4OSwuODg1MjUsLjg4NTI1LC44MTQ5OSwuOTA2MTYsMS44MTA1NSwuOTA1MjcsMS44MTA1NSwxLjMxMDcsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEZhPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxTYT1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzk1NDMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjcyMzQ2LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTI0OSwuODQxMTgsLjc3NDUyLC44NTM3NCwuNzUxODYsLjY3Nzg5LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDMwOSwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zODMxMywxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC45MjQ1LC45MjQ1LC44MzIwMywuOTI0NSwuODU4NjUsMS4wOTg0MiwuOTI0NSwuOTI0NSwxLjAzMjk3LDEuMDc2OTIsLjkwOTE4LDEuMDMyOTcsLjk0OTU5LC45MjQ1LC45MjI3NCwuOTI0NSwuOTI0NSwxLjAyOTMzLC43NzgzMiwxLjIwNTYyLC45MjQ1LC44OTE2LC45ODk4NiwuODY2MjEsLjg5NDUzLC43OTAwNCwuOTQxNTIsMS43NzI1NiwuOTQxNTIsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS45MTcyOSwuODk1NTIsMS4xNzg4OSwxLjEzMjU0LDEuMTYzNTksLjkyMDk4LC44NTI4NCwuNjg3ODcsLjcxMzUzLC44NDczNywuOTA3NDcsMS4wMDg4LDEuMDA0NCwuODc2ODMsMSwxLjA5MDkxLDEsLjkyMjI5LC43MzksMS4xNTY0MiwuOTIwOTgsLjc2Mjg4LC44MDUwNCwuODA5NzIsLjc1ODU5LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC44Njc1LC43NjMxOCwuNzIzNDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjczMjA2LC45MDY4NSwuOTA2ODUsLjkwNjg1LC45MDY4NSwuODY0NzcsLjg5MjQ5LC44NDExOCwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg1Mjg0LC44NDU1NywuODg4NDQsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjczMDYsLjc3NDUyLC44NjMzMSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuODQ4NDMsLjgzMjAzLC44NTg2NSwuODU4NjUsLjg1ODY1LC44NTg2NSwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45MjQ1LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkwNzQ3LC44NjY1MSwuOTI0NSwuOTI0NSwuOTI0NSwuOTI0NSwuODk0NTMsLjkyNDUsLjg5NDUzLC44Njc1LC45MjQ1LC44Njc1LC45MjQ1LC44Njc1LC45MjQ1LC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjg1MTkzLC44ODc1LC44NjQ3NywuOTkwMzQsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC44MTEwNSwuOTI0NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LDEsMSwuODYyNzUsLjkyNDUsLjkwODcyLC45MzU5MSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsMS4wMzI5NywuOTA2ODUsLjgyNjAxLC43Nzg5NiwxLjA1NjExLC42Mzc3LDEuMDc2OTIsMSwxLC45MDkxOCwuNzU1OTMsMS4wMzI5NywxLDEsLjc2MDMyLC45Mzc1LC45ODE1NiwuOTM0MDcsLjc3MjYxLDEuMTE0MjksLjg5MjQ5LC45MjQ1LDEsMSwuODkyNDksLjkyNDUsLjkyNTM0LC44NjY5OCwuOTI0NSwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg0MTE4LC45MjI3NCwuODY2NywuODYyOTEsLjc1MTg2LDEuMDI5MzMsMSwxLC43NTE4NiwxLjAyOTMzLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsMSwxLC43OTc3NiwuOTc2NTUsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjk0MzA5LC45ODk4NiwuNzMwNiwuODk0NTMsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjkyNDUsLjc2MzE4LC44NDg0MywuODQ1NTcsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3MDA5LC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44Njc1LC45MDg2MSwuNjE5MiwuNzM2MywuNjQ4MjQsLjgyNDExLC41NjMyMSwuODU2OTYsMS4yMzUxNiwuODY3NSwuODE1NTIsLjcyODYsLjg0MTM0LC43MzIwNiwuNzY2NTksLjg2Mjc1LC44NDM2OSwuOTA2ODUsLjc3ODkyLC44NTg3MSwxLjAyNjM4LC44OTI0OSwuNzU4MjgsLjg0MTE4LC44NTk4NCwuNzc0NTIsLjc2NDY2LC43OTc3NiwuNzMwNiwuOTA3ODIsLjc3ODE4LC45MDMsLjg3MjkxLC45MDY4NSwuNzMwNiwuOTkwNTgsMS4wMzY2NywuOTQ2MzUsMS4yMzUxNiwuOTg0OSwuOTkwNTgsLjkyMzkzLC44OTE2LC45NDIsMS4wMzY2NywuNzUwMjYsLjk0NjM1LDEuMDI5NywxLjIzNTE2LC45MDkxOCwuOTQwNDgsLjk4MjE3LC44OTc0NiwuODQxNTMsLjkyMjc0LC44MjUwNywuODg4MzIsLjg0NDM4LC44ODE3OCwxLjAzNTI1LC45ODQ5LDEuMDAyMjUsLjc4MDg2LC45NzI0OCwuODk0MDQsMS4yMzUxNiwuOTg0OSwuOTIyNzQsLjk4NDksLjg5NDA0LC43MzIwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk2OTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg1ODY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDkzMywxLDEsMSwxLDEsMSwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjk0MzA5LC45ODk4NiwuNzMwNiwuODk0NTMsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAxODYsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjI1NjYsMS4yNTY2LDEuMjU2NiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjY4OTk0LDEuMDM4MDksMSwxLDEuMDE3NiwxLjAxNzYsMS4xMTUyMywxLjQ5NTYsMi4wMTQ2MiwuOTc4NTgsLjgyNjE2LC45MTEzMywuODM0MzcsLjkxMTMzLDEsMSwxLC43MDUwOCwxLDEuMjMxMDgsLjc5ODAxLC44NDQyNiwuODQ0MjYsLjc3NCwuOTA1NzIsMS44MTA1NSwuOTA3NDksMS44MTA1NSwxLjI4ODA5LDEuNTU0NjksLjk0NDM0LDEuMDc4MDYsMSwuOTcwOTQsLjc1ODksLjg1Mjg0LC45MDc0NywxLjE5NjU4LC42OTgyNSwuOTc2MjIsMS4zMzUxMiwuOTA3NDcsLjkwNzQ3LC44NTI4NCwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDMzNiwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU4NTksMS4wNTg1OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sa2E9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LFJhPVsxLjM4NzcsMSwxLDEsMS4xNzIyMywxLjEyOTMsLjg5NTUyLC45MTEzMywuODAzOTUsMS4wMjI2OSwxLjE1NjAxLC45MTA1NiwuOTEwNTYsMS4yNzk4LC44NTI4NCwuODk4MDcsMSwuOTA4NjEsMS4zOTAxNiwuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjk2MzA5LC45NjMwOSwuODUyODQsLjg1Mjg0LC44NTI4NCwuODMzMTksLjg4MDcxLC44Njc1LC44MTU1MiwuNzM4MzQsLjg1MTkzLC43MzIwNiwuNzUyMiwuODExMDUsLjg2Mjc1LC45MDY4NSwuNjM3NywuNzc4OTIsLjc1NTkzLDEuMDI2MzgsLjg5Mzg1LC44NTEyMiwuNzc0NTIsLjg2NTAzLC43NTE4NiwuNjg4ODcsLjc5Nzc2LC44ODg0NCwuODUwNjYsLjk0MjU4LC43NzgxOCwuNzMwNiwuNzY2NTksMS4xMDM2OSwxLjM5MDE2LDEuMTAzNjksMS4wNjEzOSwuODk1NTIsLjg3MzksLjg2MTI4LC45NDQ2OSwuODQ1NywuOTQ0NjksLjg5NDY0LDEuMDk4NDIsLjg0NjM2LC45NDQ2OSwxLjAzMjk3LDEuMDc2OTIsLjkwOTE4LDEuMDMyOTcsLjk1ODk3LC45NDQ2OSwuOTQ4MiwuOTQ0NjksLjk0NDY5LDEuMDQ2OTIsLjc4MjIzLDEuMjA1NjIsLjk0NDY5LC45MDMzMiwuOTg5ODYsLjg2NjIxLC45MDUyNywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjA4NzA3LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjczODM0LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTM4NSwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTI4NCwuODUzMTEsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2OTMsLjg0NTcsLjg5NDY0LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44MjYwMSwuODI2MDEsLjgyNjAxLC44MjYwMSwuOTQ0NjksLjk0NDY5LC45NDgyLC45NDgyLC45NDgyLC45NDgyLC45NDgyLC45MDc0NywuODY2NTEsLjk0NDY5LC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45MDUyNywuOTQ0NjksLjkwNTI3LC44Njc1LC44NjEyOCwuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuODUxOTMsLjkyNDU0LC44NjQ3NywuOTkyMSwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LC44MTEwNSwuODQ2MzYsMSwxLC44NjI3NSwuOTQ0NjksLjkwODcyLC45NTc4NiwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LC44MjYwMSwuOTA2ODUsMS4wMzI5NywuOTA2ODUsLjgyNjAxLC43Nzc0MSwxLjA1NjExLC42Mzc3LDEuMDc2OTIsMSwxLC45MDkxOCwuNzU1OTMsMS4wMzI5NywxLDEsLjc2MDMyLC45MDQ1MiwuOTgxNTYsMS4xMTg0MiwuNzcyNjEsMS4xMTQyOSwuODkzODUsLjk0NDY5LDEsMSwuODkzODUsLjk0NDY5LC45NTg3NywuODY5MDEsLjk0NDY5LC44NTEyMiwuOTQ4MiwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NjY3LC45MDAxNiwuNzUxODYsMS4wNDY5MiwxLDEsLjc1MTg2LDEuMDQ2OTIsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywxLDEsLjc5Nzc2LC45MjE4OCwuNzk3NzYsMS4yMzAyMywuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywuNzMwNiwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwxLjA5MjMxLC41NDg3MywuODY3NSwuODYxMjgsLjc2MzE4LC44NjkzLC44NTMxMSwuODY2NTEsMSwxLC43OTc3NiwxLjIwNTYyLDEuMTg2MjIsMS4xODYyMiwxLDEuMTQzNywuNjc3NDIsLjk2MzM0LC45MzY5NSwxLjM1MTkxLDEuNDA5MDksLjk1MTYxLDEuNDgzODcsLjg2Njg2LC45MDg2MSwuNjIyNjcsLjc0MzU5LC42NTY0OSwuODU0OTgsLjU2OTYzLC44ODI1NCwxLjIzNTE2LC44Njc1LC44MTU1MiwuNzU0NDMsLjg0NTAzLC43MzIwNiwuNzY2NTksLjg2Mjc1LC44NTEyMiwuOTA2ODUsLjc3ODkyLC44NTc0NiwxLjAyNjM4LC44OTM4NSwuNzU2NTcsLjg1MTIyLC44NjI3NSwuNzc0NTIsLjc0MTcxLC43OTc3NiwuNzMwNiwuOTUxNjUsLjc3ODE4LC44OTc3MiwuODg4MzEsLjkwNjg1LC43MzA2LC45ODE0MiwxLjAyMTkxLC45NjU3NiwxLjIzNTE2LC45OTAxOCwuOTgxNDIsLjkyMzYsLjg5MjU4LC45NDAzNSwxLjAyMTkxLC43ODg0OCwuOTY1NzYsLjk1NjEsMS4yMzUxNiwuOTA5MTgsLjkyNTc4LC45NTQyNCwuODk3NDYsLjgzOTY5LC45NDgyLC44MDExMywuODk0NDIsLjg1MjA4LC44NjE1NSwuOTgwMjIsLjk5MDE4LDEuMDA0NTIsLjgxMjA5LC45OTI0NywuODkxODEsMS4yMzUxNiwuOTkwMTgsLjk0ODIsLjk5MDE4LC44OTE4MSwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg4ODQ0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTQ2NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTY3NjYsMSwxLDEsMSwxLDEsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC45NDI1OCwuOTg5ODYsLjczMDYsLjkwNTI3LDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42OTA0MywxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk5MzMxLC44MjYxNiwuOTExMzMsLjg0Mjg2LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTI3LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUzNTYsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMS4wNzE4NSwuOTk0MTMsLjk2MzM0LDEuMDgwNjUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxOYT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sR2E9Wy43NjExNiwxLDEsMS4wMDA2LC45OTk5OCwuOTk5NzQsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTc3LDEuMDAwODcsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLDEuMDAwMjYsLjk5OTksLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsLjk5OTczLC45OTk3NywxLjAwMDI2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk5OCwxLjAwMDYsLjk5OTk4LDEuMDAwMDMsLjk5OTczLC45OTk5OCwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LC45OTk3MywxLjAwMDYsLjk5OTgyLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTU5LC45OTk3MywuOTk5OTgsMS4wMDAyNiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTczLDEsLjk5OTU5LDEuMDAwNzcsLjk5OTU5LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDc3LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5NzMsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDY0MDksMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywxLjAzMzc0LC45OTk3NywxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA0MiwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3MywxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LDEuMDM4MjgsMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwxLjAwMDYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTMsLjk5OTgsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLDEuMDAwMTYsLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsMS4wMDAyNiwuODEyMSwxLjAwMDI2LC45OTk5OCwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDYsLjk5OTczLC45OTk3NywuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLjAwMDM0LC45OTk3NywxLC45OTk5NywxLjAwMDI2LDEuMDAwNzgsMS4wMDAzNiwuOTk5NzMsMS4wMDAxMywxLjAwMDYsLjk5OTc3LC45OTk3NywuOTk5ODgsLjg1MTQ4LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsLjk5OTc3LDEuMDAwMDEsLjk5OTk5LC45OTk3NywxLjAwMDY5LDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsLjk5OTg0LDEuMDAwMjYsMS4wMDAwMSwxLjAwMDI0LDEuMDAwMDEsLjk5OTksMSwxLjAwMDYsMS4wMDAwMSwxLjAwMDQxLC45OTk2MiwxLjAwMDI2LDEuMDAwNiwuOTk5OTUsMS4wMDA0MSwuOTk5NDIsLjk5OTczLC45OTkyNywxLjAwMDgyLC45OTkwMiwxLjAwMDI2LDEuMDAwODcsMS4wMDA2LDEuMDAwNjksLjk5OTczLC45OTg2NywuOTk5NzMsLjk5OTMsMS4wMDAyNiwxLjAwMDQ5LDEuMDAwNTYsMSwuOTk5ODgsLjk5OTM1LC45OTk5NSwuOTk5NTQsMS4wMDA1NSwuOTk5NDUsMS4wMDAzMiwxLjAwMDYsLjk5OTk1LDEuMDAwMjYsLjk5OTk1LDEuMDAwMzIsMS4wMDAwMSwxLjAwMDA4LC45OTk3MSwxLjAwMDE5LC45OTk0LDEuMDAwMDEsMS4wMDA2LDEuMDAwNDQsLjk5OTczLDEuMDAwMjMsMS4wMDA0NywxLC45OTk0MiwuOTk1NjEsLjk5OTg5LDEuMDAwMzUsLjk5OTc3LDEuMDAwMzUsLjk5OTc3LDEuMDAwMTksLjk5OTQ0LDEuMDAwMDEsMS4wMDAyMSwuOTk5MjYsMS4wMDAzNSwxLjAwMDM1LC45OTk0MiwxLjAwMDQ4LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDM1LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTg5LDEuMDAwNTcsMS4wMDAwMSwuOTk5MzYsMS4wMDA1MiwxLjAwMDEyLC45OTk5NiwxLjAwMDQzLDEsMS4wMDAzNSwuOTk5NCwuOTk5NzYsMS4wMDAzNSwuOTk5NzMsMS4wMDA1MiwxLjAwMDQxLDEuMDAxMTksMS4wMDAzNywuOTk5NzMsMS4wMDAwMiwuOTk5ODYsMS4wMDA0MSwxLjAwMDQxLC45OTkwMiwuOTk5NiwxLjAwMDM0LC45OTk5OSwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LC45OTk3MywxLjAwMDUyLC45OTk3MywxLC45OTk3MywxLjAwMDQxLDEuMDAwNzUsLjk5OTQsMS4wMDAzLC45OTk5OSwxLDEuMDAwNDEsLjk5OTU1LDEsLjk5OTE1LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMTE5LC45OTk1NSwuOTk5NzMsMS4wMDA2LC45OTkxMSwxLjAwMDYsMS4wMDAyNiwuOTk5NzIsMS4wMDAyNiwuOTk5MDIsMS4wMDA0MSwuOTk5NzMsLjk5OTk5LDEsMSwxLjAwMDM4LDEuMDAwNSwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLDEsLjk5OTczLDEsMSwuOTk5NTUsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEsMSwxLC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMTA2LC45OTk5OSwuOTk5OTgsLjk5OTk4LC45OTk5OSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsLjk5OTcxLDEuMDAwNDcsMS4wMDAyMywxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLDEsMSwxLDEsMSwxLC45OTk3MiwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLDEuMDAwMzEsMS4wMDAxNSwxLC45OTU2MSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwuOTk5MTUsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzIsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx4YT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sTWE9Wy43NjExNiwxLDEsMS4wMDA2LC45OTk5OCwuOTk5NzQsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTc3LDEuMDAwODcsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLDEuMDAwMjYsLjk5OTksLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsLjk5OTczLC45OTk3NywxLjAwMDI2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk5OCwxLjAwMDYsLjk5OTk4LDEuMDAwMDMsLjk5OTczLC45OTk5OCwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LC45OTk3MywxLjAwMDYsLjk5OTgyLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTU5LC45OTk3MywuOTk5OTgsMS4wMDAyNiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTczLDEsLjk5OTU5LDEuMDAwNzcsLjk5OTU5LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDc3LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5NzMsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDY0MDksMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywxLjAwMDI2LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywxLjAwNDQsLjk5OTc3LDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAxMDExLDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3NywxLDEsMS4wMDAyNiwuOTk5NjksLjk5OTcyLC45OTk4MSwuOTk5OCwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLC45MTE1NSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsLjk5OTY2LDEuMDAwMjIsMS4wMDAzMiwxLjAwMDAxLC45OTk0NCwxLjAwMDI2LDEuMDAwMDEsLjk5OTY4LDEuMDAwMDEsMS4wMDA0NywxLDEuMDAwNiwxLjAwMDAxLC45OTk4MSwxLjAwMTAxLDEuMDAwMjYsMS4wMDA2LC45OTk0OCwuOTk5ODEsMS4wMDA2NCwuOTk5NzMsLjk5OTQyLDEuMDAxMDEsMS4wMDA2MSwxLjAwMDI2LDEuMDAwNjksMS4wMDA2LDEuMDAwMTQsLjk5OTczLDEuMDEzMjIsLjk5OTczLDEuMDAwNjUsMS4wMDAyNiwxLjAwMDEyLC45OTkyMywxLDEuMDAwNjQsMS4wMDA3NiwuOTk5NDgsMS4wMDA1NSwxLjAwMDYzLDEuMDAwMDcsLjk5OTQzLDEuMDAwNiwuOTk5NDgsMS4wMDAyNiwuOTk5NDgsLjk5OTQzLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI5LDEuMDAwMzgsMS4wMDAzNSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3OCwxLjAwMDAxLDEuMDAwNTcsLjk5OTg5LC45OTk2NywuOTk5NjQsLjk5OTY3LC45OTk3NywuOTk5OTksLjk5OTc3LDEuMDAwMzgsLjk5OTc3LDEuMDAwMDEsLjk5OTczLDEuMDAwNjYsLjk5OTY3LC45OTk2NywxLjAwMDQxLC45OTk5OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsLjk5OTY3LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTY0LDEuMDAwMzEsMS4wMDAwMSwuOTk5OTksLjk5OTk5LDEsMS4wMDAyMywxLDEsLjk5OTk5LDEuMDAwMzUsMS4wMDAwMSwuOTk5OTksLjk5OTczLC45OTk3NywuOTk5OTksMS4wMDA1OCwuOTk5NzMsLjk5OTczLC45OTk1NSwuOTk5NSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAzMiwuOTk5ODksMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTczLC40NTk5OCwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsMS4wMDAwMSwuOTk5OTksLjk5OTgyLC45OTk5NCwuOTk5OTYsMSwxLjAwMDQyLDEuMDAwNDQsMS4wMDAyOSwxLjAwMDIzLC45OTk3MywuOTk5NzMsMS4wMDAyNiwuOTk5NDksMS4wMDAwMiwuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc1LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDMyLC45ODY4NSwuOTk5NzMsMS4wMDAyNiwxLDEsLjk5OTY2LDEuMDAwNDQsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MSwuOTk5NzgsMSwxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDk4LDEsMSwxLDEuMDAwNDksMSwxLC45OTk3MiwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLDEuMDAwMzEsMS4wMDAxNSwxLC45OTU2MSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwuOTk5MTUsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzIsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxVYT17bGluZUhlaWdodDoxLjM1LGxpbmVHYXA6LjJ9LExhPVsuNzYxMTYsMSwxLDEuMDAwNiwxLjAwMDYsMS4wMDAwNiwuOTk5NzMsLjk5OTczLC45OTk4MiwxLjAwMDAxLDEuMDAwNDMsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLC45OTk3MywuOTk5ODcsMS4wMDAwMSwxLjAwMDAxLC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwxLDEuMDAwMDEsLjk5OTczLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk0OSwuOTk5NzMsLjk5OTk4LC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTkyNCwuOTk5MjQsMSwuOTk5MjQsLjk5OTk5LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDYsLjk5OTczLDEsLjk5OTc3LDEsMSwxLDEuMDAwMDUsMS4wMDA5LDEuMDAwMDUsMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwOSwuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTgsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwxLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDY0MDksMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsMSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMS4wMjg4LC45OTk3NywuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5MjQsMS4wMDA2LDEuMDAwNiwuOTk5NDYsMS4wMDAzNCwxLC45OTkyNCwxLjAwMDAxLDEsMSwuOTk5NzMsLjk5OTI0LC45OTk3MywuOTk5MjQsLjk5OTczLDEuMDYzMTEsLjk5OTczLDEuMDAwMjQsLjk5OTczLC45OTkyNCwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDQxLC45OTk4LC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLDEuMDAwMTYsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsLjg5NTQ3LDEuMDAwMjYsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLC45OTkyNCwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDU0LC45OTk3NywxLjAwMDg0LDEuMDAwMDcsLjk5OTczLDEuMDAwMTMsLjk5OTI0LDEuMDAwMDEsMS4wMDAwMSwuOTk5NDUsLjkxMjIxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsMS4wMDAwMSwxLjAwMDAxLC45OTk5OSwuOTk5NzcsLjk5OTMzLDEuMDAwMjIsMS4wMDA1NCwxLjAwMDAxLDEuMDAwNjUsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMSwxLjAwMDAxLDEuMDAwNTIsMSwxLjAwMDYsMS4wMDAwMSwuOTk5NDUsLjk5ODk3LC45OTk2OCwuOTk5MjQsMS4wMDAzNiwuOTk5NDUsLjk5OTQ5LDEsMS4wMDA2LC45OTg5NywuOTk5MTgsLjk5OTY4LC45OTkxMSwuOTk5MjQsMSwuOTk5NjIsMS4wMTQ4NywxLDEuMDAwNSwuOTk5NzMsMS4wMDAxMiwxLjAwMDQzLDEsLjk5OTk1LC45OTk5NCwxLjAwMDM2LC45OTk0NywxLjAwMDE5LDEuMDAwNjMsMS4wMDAyNSwuOTk5MjQsMS4wMDAzNiwuOTk5NzMsMS4wMDAzNiwxLjAwMDI1LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI3LDEuMDAwMSwxLjAwMDY4LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLDEuMDAwMDgsLjk5OTU3LC45OTk3MiwuOTk5NCwuOTk5NTQsLjk5OTc1LDEuMDAwNTEsMS4wMDAwMSwxLjAwMDE5LDEuMDAwMDEsMS4wMDAxLC45OTk4NiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAzOCwuOTk5NTQsLjk5OTU0LC45OTk0LDEuMDAwNjYsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwNTQsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NzUsMS4wMDAxLDEuMDAwMDEsLjk5OTkzLC45OTk1LC45OTk1NSwxLjAwMDE2LC45OTk3OCwuOTk5NzQsMS4wMDAxOSwxLjAwMDIyLC45OTk1NSwxLjAwMDUzLC45OTk3MywxLjAwMDg5LDEuMDAwMDUsLjk5OTY3LDEuMDAwNDgsLjk5OTczLDEuMDAwMDIsMS4wMDAzNCwuOTk5NzMsLjk5OTczLC45OTk2NCwxLjAwMDA2LDEuMDAwNjYsLjk5OTQ3LC45OTk3MywuOTg4OTQsLjk5OTczLDEsLjQ0ODk4LDEsLjk5OTQ2LDEsMS4wMDAzOSwxLjAwMDgyLC45OTk5MSwuOTk5OTEsLjk5OTg1LDEuMDAwMjIsMS4wMDAyMywxLjAwMDYxLDEuMDAwMDYsLjk5OTY2LC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwMTksMS4wMDA4LDEsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTgzLDEuMDAwNDQsLjk5OTczLC45OTk2NCwuOTgzMzIsMSwuOTk5NzMsMSwxLC45OTk2MiwuOTk4OTUsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAyNjcsLjk5OTk5LC45OTk5OCwuOTk5OTgsMSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsMS4wMDQyMywuOTk5MjUsLjk5OTk5LDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwNDksMSwxLjAwMjQ1LDEsMSwxLDEsLjk2MzI5LDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsLjgyNTQsMS4wMDAxNSwxLDEuMDAwMzUsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsMS4wMDAwMywxLjAwMDMxLDEuMDAwMzEsLjk5OTk5LDEuMDAwMDMsLjk5OTk5LC45OTk5OSwxLjQxMTQ0LDEuNiwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDA1NzksMS40MDU3OSwxLjM2NjI1LC45OTk5OSwxLC45OTg2MSwuOTk4NjEsMSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45NTMxNywuOTk5OTksLjk5OTk5LC45OTk5OSwuOTk5OTksMS40MDQ4MywxLC45OTk3NywxLjAwMDU0LDEsMSwuOTk5NTMsLjk5OTYyLDEuMDAwNDIsLjk5OTUsMSwxLDEsMSwxLDEsMSwxLC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEphPXtsaW5lSGVpZ2h0OjEuMzUsbGluZUdhcDouMn0sSGE9Wy43NjExNiwxLDEsMS4wMDA2LDEuMDAwNiwxLjAwMDA2LC45OTk3MywuOTk5NzMsLjk5OTgyLDEuMDAwMDEsMS4wMDA0MywuOTk5OTgsLjk5OTk4LC45OTk1OSwxLjAwMDAzLDEuMDAwNiwuOTk5OTgsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEsMS4wMDAwMywxLjAwMDAzLDEuMDAwMDMsLjk5OTczLC45OTk4NywxLjAwMDAxLDEuMDAwMDEsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LDEsMS4wMDAwMSwuOTk5NzMsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMDEsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDAxLDEuMDAwMTYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTQ5LC45OTk3MywuOTk5OTgsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTI0LC45OTkyNCwxLC45OTkyNCwuOTk5OTksLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk5OCwxLDEuMDAwNiwuOTk5NzMsMSwuOTk5NzcsMSwxLDEsMS4wMDAwNSwxLjAwMDksMS4wMDAwNSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA5LC45OTk3MywuOTk5OTgsMS4wMDAyNSwuOTk5NjgsLjk5OTczLDEuMDAwMDMsMS4wMDAyNSwuNjAyOTksMS4wMDAyNCwxLjA2NDA5LDEsMSwuOTk5OTgsMSwuOTk5OCwxLjAwMDYsLjk5OTk4LDEsLjk5OTM2LC45OTk3MywxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDI2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMDMsMS4wMDAyMiwuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTgyLDEsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wNjQwOSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLC45OTk3MywxLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLC45OTk3NywxLjA0NTk2LC45OTk3NywuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5MjQsMS4wMDA2LDEuMDAwNiwxLjAwMDE5LDEuMDAwMzQsMSwuOTk5MjQsMS4wMDAwMSwxLDEsLjk5OTczLC45OTkyNCwuOTk5NzMsLjk5OTI0LC45OTk3MywxLjAyNTcyLC45OTk3MywxLjAwMDA1LC45OTk3MywuOTk5MjQsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTk5LC45OTk4LC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLjAwMDIyLC45OTk3MywxLDEuMDAwMTYsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LC45OTk3NywuOTk5OTgsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsLjg0NTMzLDEuMDAwMjYsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLC45OTkyNCwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMSwuOTk5ODIsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTkyOCwxLC45OTk3NywxLjAwMDEzLDEuMDAwNTUsLjk5OTQ3LC45OTk0NSwuOTk5NDEsLjk5OTI0LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDQsLjkxNjIxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAyMiwxLjAwMDYsMS4wMDAwMSwxLjAwMDA1LC45OTk5OSwuOTk5NzcsMS4wMDAxNSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk3MywxLjAwMDI2LDEuMDAwMDEsMS4wMDAxOSwxLjAwMDAxLC45OTk0NiwxLDEuMDAwNiwxLjAwMDAxLC45OTk3OCwxLjAwMDQ1LC45OTk3MywuOTk5MjQsMS4wMDAyMywuOTk5NzgsLjk5OTY2LDEsMS4wMDA2NSwxLjAwMDQ1LDEuMDAwMTksLjk5OTczLC45OTk3MywuOTk5MjQsMSwxLC45NjQ5OSwxLDEuMDAwNTUsLjk5OTczLDEuMDAwMDgsMS4wMDAyNywxLC45OTk3LC45OTk5NSwxLjAwMDIzLC45OTkzMywxLjAwMDE5LDEuMDAwMTUsMS4wMDAzMSwuOTk5MjQsMS4wMDAyMywuOTk5NzMsMS4wMDAyMywxLjAwMDMxLDEuMDAwMDEsLjk5OTI4LDEuMDAwMjksMS4wMDA5MiwxLjAwMDM1LDEuMDAwMDEsMS4wMDA2LDEuMDAwNiwxLC45OTk4OCwuOTk5NzUsMSwxLjAwMDgyLC45OTU2MSwuOTk5NiwxLjAwMDM1LDEuMDAwMDEsLjk5OTYyLDEuMDAwMDEsMS4wMDA5MiwuOTk5NjQsMS4wMDAwMSwuOTk5NjMsLjk5OTk5LDEuMDAwMzUsMS4wMDAzNSwxLjAwMDgyLC45OTk2MiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk2LC45OTk2NywxLjAwMDAxLDEuMDAwMzQsMS4wMDA3NCwxLjAwMDU0LDEuMDAwNTMsMS4wMDA2MywuOTk5NzEsLjk5OTYyLDEuMDAwMzUsLjk5OTc1LC45OTk3NywuOTk5NzMsMS4wMDA0MywuOTk5NTMsMS4wMDA3LC45OTkxNSwuOTk5NzMsMS4wMDAwOCwuOTk4OTIsMS4wMDA3MywxLjAwMDczLDEuMDAxMTQsLjk5OTE1LDEuMDAwNzMsLjk5OTU1LC45OTk3MywxLjAwMDkyLC45OTk3MywxLC45OTk5OCwxLDEuMDAwMywxLDEuMDAwNDMsMS4wMDAwMSwuOTk5NjksMS4wMDAzLDEsMS4wMDAzNSwxLjAwMDAxLC45OTk1LDEsMS4wMDA5MiwuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDcsLjk5OTUsMSwuOTk5MjQsMS4wMDA2LC45OTkyNCwuOTk5NzIsMS4wMDA2MiwuOTk5NzMsMS4wMDExNCwxLjAwMDczLDEsLjk5OTU1LDEsMSwxLjAwMDQ3LC45OTk2OCwxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMSwxLC45OTk3MywxLDEsLjk5OTU1LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDI2NywuOTk5OTksLjk5OTk4LC45OTk5OCwxLC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLjAwMDIzLC45OTk3MywuOTk5NzEsLjk5OTI1LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTYzMjksMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywuODI1NCwxLjAwMDE1LDEsMS4wMDAzNSwxLjAwMDI3LDEuMDAwMzEsMS4wMDAzMSwuOTk5MTUsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTUzMTcsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sdmE9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LFlhPVszNjUsMCwzMzMsMjc4LDMzMyw0NzQsNTU2LDU1Niw4ODksNzIyLDIzOCwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwzMzMsMzMzLDU4NCw1ODQsNTg0LDYxMSw5NzUsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTU2LDcyMiw2MTEsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwzMzMsMjc4LDMzMyw1ODQsNTU2LDMzMyw1NTYsNjExLDU1Niw2MTEsNTU2LDMzMyw2MTEsNjExLDI3OCwyNzgsNTU2LDI3OCw4ODksNjExLDYxMSw2MTEsNjExLDM4OSw1NTYsMzMzLDYxMSw1NTYsNzc4LDU1Niw1NTYsNTAwLDM4OSwyODAsMzg5LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI4MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDU1NiwyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw3MjIsNzIyLDcyMiw3MjIsNzIyLDcyMiwxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNTQ5LDYxMSw2MTEsNjExLDYxMSw2MTEsNTU2LDYxMSw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNzE5LDcyMiw2MTEsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzIyLDYxMSw3MjIsNjExLDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCw3ODUsNTU2LDU1NiwyNzgsNzIyLDU1Niw1NTYsNjExLDI3OCw2MTEsMjc4LDYxMSwzODUsNjExLDQ3OSw2MTEsMjc4LDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcwOCw3MjMsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDFlMyw5NDQsNzIyLDM4OSw3MjIsMzg5LDcyMiwzODksNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2MTEsMzMzLDYxMSw0NzksNjExLDMzMyw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw5NDQsNzc4LDY2Nyw1NTYsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDI3OCw1NTYsNzIyLDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDU1Niw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw0NjUsNzIyLDMzMyw4NTMsOTA2LDQ3NCw4MjUsOTI3LDgzOCwyNzgsNzIyLDcyMiw2MDEsNzE5LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNzIyLDY2Nyw4MzMsNzIyLDY0NCw3NzgsNzIyLDY2Nyw2MDAsNjExLDY2Nyw4MjEsNjY3LDgwOSw4MDIsMjc4LDY2Nyw2MTUsNDUxLDYxMSwyNzgsNTgyLDYxNSw2MTAsNTU2LDYwNiw0NzUsNDYwLDYxMSw1NDEsMjc4LDU1OCw1NTYsNjEyLDU1Niw0NDUsNjExLDc2Niw2MTksNTIwLDY4NCw0NDYsNTgyLDcxNSw1NzYsNzUzLDg0NSwyNzgsNTgyLDYxMSw1ODIsODQ1LDY2Nyw2NjksODg1LDU2Nyw3MTEsNjY3LDI3OCwyNzYsNTU2LDEwOTQsMTA2Miw4NzUsNjEwLDcyMiw2MjIsNzE5LDcyMiw3MTksNzIyLDU2Nyw3MTIsNjY3LDkwNCw2MjYsNzE5LDcxOSw2MTAsNzAyLDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MjIsODU0LDY2Nyw3MzAsNzAzLDEwMDUsMTAxOSw4NzAsOTc5LDcxOSw3MTEsMTAzMSw3MTksNTU2LDYxOCw2MTUsNDE3LDYzNSw1NTYsNzA5LDQ5Nyw2MTUsNjE1LDUwMCw2MzUsNzQwLDYwNCw2MTEsNjA0LDYxMSw1NTYsNDkwLDU1Niw4NzUsNTU2LDYxNSw1ODEsODMzLDg0NCw3MjksODU0LDYxNSw1NTIsODU0LDU4Myw1NTYsNTU2LDYxMSw0MTcsNTUyLDU1NiwyNzgsMjgxLDI3OCw5NjksOTA2LDYxMSw1MDAsNjE1LDU1Niw2MDQsNzc4LDYxMSw0ODcsNDQ3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDEwOTQsNTU2LDg4NSw0ODksMTExNSwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsMWUzLDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdLEthPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNzkyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxUYT1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDc0MCw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzgyLDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzk2LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDcyMiwzMzMsODU0LDkwNiw0NzMsODQ0LDkzMCw4NDcsMjc4LDcyMiw3MjIsNjEwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NTcsNzc4LDcxOCw2NjcsNTkwLDYxMSw2NjcsODIyLDY2Nyw4MjksNzgxLDI3OCw2NjcsNjIwLDQ3OSw2MTEsMjc4LDU5MSw2MjAsNjIxLDU1Niw2MTAsNDc5LDQ5Miw2MTEsNTU4LDI3OCw1NjYsNTU2LDYwMyw1NTYsNDUwLDYxMSw3MTIsNjA1LDUzMiw2NjQsNDA5LDU5MSw3MDQsNTc4LDc3Myw4MzQsMjc4LDU5MSw2MTEsNTkxLDgzNCw2NjcsNjY3LDg4Niw2MTQsNzE5LDY2NywyNzgsMjc4LDU1NiwxMDk0LDEwNDIsODU0LDYyMiw3MTksNjc3LDcxOSw3MjIsNzA4LDcyMiw2MTQsNzIyLDY2Nyw5MjcsNjQzLDcxOSw3MTksNjE1LDY4Nyw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjc3LDc4MSw2NjcsNzI5LDcwOCw5NzksOTg5LDg1NCwxZTMsNzA4LDcxOSwxMDQyLDcyOSw1NTYsNjE5LDYwNCw1MzQsNjE4LDU1Niw3MzYsNTEwLDYxMSw2MTEsNTA3LDYyMiw3NDAsNjA0LDYxMSw2MTEsNjExLDU1Niw4ODksNTU2LDg4NSw1NTYsNjQ2LDU4Myw4ODksOTM1LDcwNyw4NTQsNTk0LDU1Miw4NjUsNTg5LDU1Niw1NTYsNjExLDQ2OSw1NjMsNTU2LDI3OCwyNzgsMjc4LDk2OSw5MDYsNjExLDUwNyw2MTksNTU2LDYxMSw3NzgsNjExLDU3NSw0NjcsOTQ0LDc3OCw5NDQsNzc4LDk0NCw3NzgsNjY3LDU1NiwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyNzgsMjc4LDI3OCwyNzgsNTAwLDUwMCw1MDAsNTU2LDU1NiwzNTAsMWUzLDFlMywyNDAsNDc5LDMzMywzMzMsNjA0LDMzMywxNjcsMzk2LDU1Niw1NTYsMTEwNCw1NTYsODg1LDUxNiwxMTQ2LDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCw5OTksNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MjIsMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNjExLDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzM10scWE9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLE9hPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYyNSw3MjIsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzMzLDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjgxLDU1Niw0MDAsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MTUsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzU0LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg5LDg0NiwzODksNzk0LDg2NSw3NzUsMjIyLDY2Nyw2NjcsNTcwLDY3MSw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjcsODMzLDcyMiw2NDgsNzc4LDcyNSw2NjcsNjAwLDYxMSw2NjcsODM3LDY2Nyw4MzEsNzYxLDI3OCw2NjcsNTcwLDQzOSw1NTUsMjIyLDU1MCw1NzAsNTcxLDUwMCw1NTYsNDM5LDQ2Myw1NTUsNTQyLDIyMiw1MDAsNDkyLDU0OCw1MDAsNDQ3LDU1Niw2NzAsNTczLDQ4Niw2MDMsMzc0LDU1MCw2NTIsNTQ2LDcyOCw3NzksMjIyLDU1MCw1NTYsNTUwLDc3OSw2NjcsNjY3LDg0Myw1NDQsNzA4LDY2NywyNzgsMjc4LDUwMCwxMDY2LDk4Miw4NDQsNTg5LDcxNSw2MzksNzI0LDY2Nyw2NTEsNjY3LDU0NCw3MDQsNjY3LDkxNyw2MTQsNzE1LDcxNSw1ODksNjg2LDgzMyw3MjIsNzc4LDcyNSw2NjcsNzIyLDYxMSw2MzksNzk1LDY2Nyw3MjcsNjczLDkyMCw5MjMsODA1LDg4Niw2NTEsNjk0LDEwMjIsNjgyLDU1Niw1NjIsNTIyLDQ5Myw1NTMsNTU2LDY4OCw0NjUsNTU2LDU1Niw0NzIsNTY0LDY4Niw1NTAsNTU2LDU1Niw1NTYsNTAwLDgzMyw1MDAsODM1LDUwMCw1NzIsNTE4LDgzMCw4NTEsNjIxLDczNiw1MjYsNDkyLDc1Miw1MzQsNTU2LDU1Niw1NTYsMzc4LDQ5Niw1MDAsMjIyLDIyMiwyMjIsOTEwLDgyOCw1NTYsNDcyLDU2NSw1MDAsNTU2LDc3OCw1NTYsNDkyLDMzOSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwODMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsOTk4LDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODQsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XSxQYT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sV2E9WzM2NSwwLDMzMywyNzgsMjc4LDM1NSw1NTYsNTU2LDg4OSw2NjcsMTkxLDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsNTg0LDU4NCw1ODQsNTU2LDEwMTUsNjY3LDY2Nyw3MjIsNzIyLDY2Nyw2MTEsNzc4LDcyMiwyNzgsNTAwLDY2Nyw1NTYsODMzLDcyMiw3NzgsNjY3LDc3OCw3MjIsNjY3LDYxMSw3MjIsNjY3LDk0NCw2NjcsNjY3LDYxMSwyNzgsMjc4LDI3OCw0NjksNTU2LDMzMyw1NTYsNTU2LDUwMCw1NTYsNTU2LDI3OCw1NTYsNTU2LDIyMiwyMjIsNTAwLDIyMiw4MzMsNTU2LDU1Niw1NTYsNTU2LDMzMyw1MDAsMjc4LDU1Niw1MDAsNzIyLDUwMCw1MDAsNTAwLDMzNCwyNjAsMzM0LDU4NCwzMzMsNTU2LDU1Niw1NTYsNTU2LDI2MCw1NTYsMzMzLDczNywzNzAsNTU2LDU4NCw3MzcsNTUyLDQwMCw1NDksMzMzLDMzMywzMzMsNTc2LDUzNywyNzgsMzMzLDMzMywzNjUsNTU2LDgzNCw4MzQsODM0LDYxMSw2NjcsNjY3LDY2Nyw2NjcsNjY3LDY2NywxZTMsNzIyLDY2Nyw2NjcsNjY3LDY2NywyNzgsMjc4LDI3OCwyNzgsNzIyLDcyMiw3NzgsNzc4LDc3OCw3NzgsNzc4LDU4NCw3NzgsNzIyLDcyMiw3MjIsNzIyLDY2Nyw2NjcsNjExLDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDg4OSw1MDAsNTU2LDU1Niw1NTYsNTU2LDI3OCwyNzgsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTQ5LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTAwLDU1Niw1MDAsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNjE1LDcyMiw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzIyLDU1Niw3MjIsNTU2LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyMjIsMjc4LDI3OCw3MzUsNDQ0LDUwMCwyMjIsNjY3LDUwMCw1MDAsNTU2LDIyMiw1NTYsMjIyLDU1NiwyOTIsNTU2LDMzNCw1NTYsMjIyLDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDYwNCw3MjMsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDFlMyw5NDQsNzIyLDMzMyw3MjIsMzMzLDcyMiwzMzMsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2MTEsMjc4LDYxMSwzNzUsNjExLDI3OCw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw5NDQsNzIyLDY2Nyw1MDAsNjY3LDYxMSw1MDAsNjExLDUwMCw2MTEsNTAwLDIyMiw1NTYsNjY3LDU1NiwxZTMsODg5LDc3OCw2MTEsNjY3LDUwMCw2MTEsMjc4LDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNjY3LDI3OCw3ODQsODM4LDM4NCw3NzQsODU1LDc1MiwyMjIsNjY3LDY2Nyw1NTEsNjY4LDY2Nyw2MTEsNzIyLDc3OCwyNzgsNjY3LDY2OCw4MzMsNzIyLDY1MCw3NzgsNzIyLDY2Nyw2MTgsNjExLDY2Nyw3OTgsNjY3LDgzNSw3NDgsMjc4LDY2Nyw1NzgsNDQ2LDU1NiwyMjIsNTQ3LDU3OCw1NzUsNTAwLDU1Nyw0NDYsNDQxLDU1Niw1NTYsMjIyLDUwMCw1MDAsNTc2LDUwMCw0NDgsNTU2LDY5MCw1NjksNDgyLDYxNywzOTUsNTQ3LDY0OCw1MjUsNzEzLDc4MSwyMjIsNTQ3LDU1Niw1NDcsNzgxLDY2Nyw2NjcsODY1LDU0Miw3MTksNjY3LDI3OCwyNzgsNTAwLDEwNTcsMTAxMCw4NTQsNTgzLDcyMiw2MzUsNzE5LDY2Nyw2NTYsNjY3LDU0Miw2NzcsNjY3LDkyMyw2MDQsNzE5LDcxOSw1ODMsNjU2LDgzMyw3MjIsNzc4LDcxOSw2NjcsNzIyLDYxMSw2MzUsNzYwLDY2Nyw3NDAsNjY3LDkxNyw5MzgsNzkyLDg4NSw2NTYsNzE5LDEwMTAsNzIyLDU1Niw1NzMsNTMxLDM2NSw1ODMsNTU2LDY2OSw0NTgsNTU5LDU1OSw0MzgsNTgzLDY4OCw1NTIsNTU2LDU0Miw1NTYsNTAwLDQ1OCw1MDAsODIzLDUwMCw1NzMsNTIxLDgwMiw4MjMsNjI1LDcxOSw1MjEsNTEwLDc1MCw1NDIsNTU2LDU1Niw1NTYsMzY1LDUxMCw1MDAsMjIyLDI3OCwyMjIsOTA2LDgxMiw1NTYsNDM4LDU1OSw1MDAsNTUyLDc3OCw1NTYsNDg5LDQxMSw5NDQsNzIyLDk0NCw3MjIsOTQ0LDcyMiw2NjcsNTAwLDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDIyMiwyMjIsMjIyLDIyMiwzMzMsMzMzLDMzMyw1NTYsNTU2LDM1MCwxZTMsMWUzLDE4OCwzNTQsMzMzLDMzMyw1MDAsMzMzLDE2NywzNjUsNTU2LDU1NiwxMDk0LDU1Niw4ODUsMzIzLDEwNzMsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcxOSwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw1MDAsNTAwLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwyOTQsMjk0LDMyNCwzMjQsMzE2LDMyOCwzOTgsMjg1XSxqYT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LDI2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sWGE9WzEuMzY4OTgsMSwxLC43MjcwNiwuODA0NzksLjgzNzM0LC45ODg5NCwuOTk3OTMsLjk4OTcsLjkzODg0LC44NjIwOSwuOTQyOTIsLjk0MjkyLDEuMTY2NjEsMS4wMjA1OCwuOTM1ODIsLjk2Njk0LC45MzU4MiwxLjE5MTM3LC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuNzgwNzYsLjc4MDc2LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC43Mjg1MSwuNzg5NjYsLjkwODM4LC44MzYzNywuODIzOTEsLjk2Mzc2LC44MDA2MSwuODYyNzUsLjg3NjgsLjk1NDA3LDEuMDI1OCwuNzM5MDEsLjg1MDIyLC44MzY1NSwxLjAxNTYsLjk1NTQ2LC45MjE3OSwuODcxMDcsLjkyMTc5LC44MjExNCwuODA5NiwuODk3MTMsLjk0NDM4LC45NTM1MywuOTQwODMsLjkxOTA1LC45MDQwNiwuOTQ0NiwuOTQyOTIsMS4xODc3NywuOTQyOTIsMS4wMjA1OCwuODk5MDMsLjkwMDg4LC45NDkzOCwuOTc4OTgsLjgxMDkzLC45NzU3MSwuOTQ5MzgsMS4wMjQsLjk1NzcsLjk1OTMzLC45ODYyMSwxLjA0NzQsLjk3NDU1LC45ODk4MSwuOTY3MiwuOTU5MzMsLjk0NDYsLjk3ODk4LC45NzQwNywuOTc2NDYsLjc4MDM2LDEuMTAyMDgsLjk1NDQyLC45NTI5OCwuOTc1NzksLjkzMzIsLjk0MDM5LC45MzgsLjgwNjg3LDEuMDExNDksLjgwNjg3LDEuMDIwNTgsLjgwNDc5LC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywxLjAxMTQ5LDEuMDA4NzIsLjkwMDg4LC45MTg4MiwxLjAyMTMsLjgzNjEsMS4wMjA1OCwuNjIyOTUsLjU0MzI0LC44OTAyMiwxLjA4NTk1LDEsMSwuOTAwODgsMSwuOTc0NTUsLjkzNTgyLC45MDA4OCwxLDEuMDU2ODYsLjgzNjEsLjk5NjQyLC45OTY0MiwuOTk2NDIsLjcyODUxLC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC44NjgsLjgyMzkxLC44MDA2MSwuODAwNjEsLjgwMDYxLC44MDA2MSwxLjAyNTgsMS4wMjU4LDEuMDI1OCwxLjAyNTgsLjk3NDg0LC45NTU0NiwuOTIxNzksLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LDEuMDIwNTgsLjkyMTc5LC45NDQzOCwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTA0MDYsLjg2OTU4LC45ODIyNSwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTAzMSwuODEwOTMsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTM5NjksLjk1OTMzLC45NDQ2LC45NDQ2LC45NDQ2LC45NDQ2LC45NDQ2LDEuMDg1OTUsLjk0NDYsLjk1NDQyLC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NDAzOSwuOTc4OTgsLjk0MDM5LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuOTA4MzgsLjk0OTM4LC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjk2Mzc2LC44NDMxMywuOTc0ODQsLjk3NTcxLC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODc2OCwuOTU3NywuODc2OCwuOTU3NywuODc2OCwuOTU3NywxLDEsLjk1NDA3LC45NTkzMywuOTcwNjksLjk1OTMzLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwuODg3LDEuMDE1OTEsLjczOTAxLDEuMDQ3NCwxLDEsLjk3NDU1LC44MzY1NSwuOTg5ODEsMSwxLC44MzY1NSwuNzM5NzcsLjgzNjU1LC43MzkwMywuODQ2MzgsMS4wMzMsLjk1NTQ2LC45NTkzMywxLDEsLjk1NTQ2LC45NTkzMywuODI3MSwuOTU0MTcsLjk1OTMzLC45MjE3OSwuOTQ0NiwuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MzYsLjkxOTY0LC44MjExNCwuOTc2NDYsMSwxLC44MjExNCwuOTc2NDYsLjgwOTYsLjc4MDM2LC44MDk2LC43ODAzNiwxLDEsLjgwOTYsLjc4MDM2LDEsMSwuODk3MTMsLjc3NDUyLC44OTcxMywxLjEwMjA4LC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDA4MywuOTc1NzksLjkwNDA2LC45NDAzOSwuOTA0MDYsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LC45NDQ2LC45MzgsMSwuOTk3OTMsLjkwODM4LC45NDkzOCwuODY4LC45MDMxLC45MjE3OSwuOTQ0NiwxLDEsLjg5NzEzLDEuMTAyMDgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwOTg5LC45MzU4LC45MTk0NSwuODMxODEsLjc1MjYxLC44Nzk5MiwuODI5NzYsLjk2MDM0LC44MzY4OSwuOTcyNjgsMS4wMDc4LC45MDgzOCwuODM2MzcsLjgwMTksLjkwMTU3LC44MDA2MSwuOTQ0NiwuOTU0MDcsLjkyNDM2LDEuMDI1OCwuODUwMjIsLjk3MTUzLDEuMDE1NiwuOTU1NDYsLjg5MTkyLC45MjE3OSwuOTIzNjEsLjg3MTA3LC45NjMxOCwuODk3MTMsLjkzNzA0LC45NTYzOCwuOTE5MDUsLjkxNzA5LC45Mjc5NiwxLjAyNTgsLjkzNzA0LC45NDgzNiwxLjAzNzMsLjk1OTMzLDEuMDA3OCwuOTU4NzEsLjk0ODM2LC45NjE3NCwuOTI2MDEsLjk0OTgsLjk4NjA3LC45NTc3NiwuOTU5MzMsMS4wNTQ1MywxLjAwNzgsLjk4Mjc1LC45MzE0LC45NTYxNywuOTE3MDEsMS4wNTk5MywuOTQ0NiwuNzgzNjcsLjk1NTMsMSwuODY4MzIsMS4wMTI4LC45NTg3MSwuOTkzOTQsLjg3NTQ4LC45NjM2MSwuODY3NzQsMS4wMDc4LC45NTg3MSwuOTQ0NiwuOTU4NzEsLjg2Nzc0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45NDA4MywuOTc1NzksLjkwNDA2LC45NDAzOSwuOTY2OTQsMSwuODk5MDMsMSwxLDEsLjkzNTgyLC45MzU4MiwuOTM1ODIsMSwuOTA4LC45MDgsLjkxOCwuOTQyMTksLjk0MjE5LC45NjU0NCwxLDEuMjg1LDEsMSwuODEwNzksLjgxMDc5LDEsMSwuNzQ4NTQsMSwxLDEsMSwuOTk3OTMsMSwxLDEsLjY1LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNzE3MywxLC44MDUzNSwuNzYxNjksMS4wMjA1OCwxLjA3MzIsMS4wNTQ4NiwxLDEsMS4zMDY5MiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE2MTYxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLFphPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxWYT1bMS4zNjg5OCwxLDEsLjY2MjI3LC44MDc3OSwuODE2MjUsLjk3Mjc2LC45NzI3NiwuOTc3MzMsLjkyMjIyLC44MzI2NiwuOTQyOTIsLjk0MjkyLDEuMTYxNDgsMS4wMjA1OCwuOTM1ODIsLjk2Njk0LC45MzU4MiwxLjE3MzM3LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuNzgwNzYsLjc4MDc2LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC43MTU0MSwuNzY4MTMsLjg1NTc2LC44MDU5MSwuODA3MjksLjk0Mjk5LC43NzUxMiwuODM2NTUsLjg2NTIzLC45MjIyMiwuOTg2MjEsLjcxNzQzLC44MTY5OCwuNzk3MjYsLjk4NTU4LC45MjIyMiwuOTA2MzcsLjgzODA5LC45MDYzNywuODA3MjksLjc2NDYzLC44NjI3NSwuOTA2OTksLjkxNjA1LC45MTU0LC44NTMwOCwuODU0NTgsLjkwNTMxLC45NDI5MiwxLjIxMjk2LC45NDI5MiwxLjAyMDU4LC44OTkwMywxLjE4NjE2LC45OTYxMywuOTE2NzcsLjc4MjE2LC45MTY3NywuOTAwODMsLjk4Nzk2LC45MTM1LC45MjE2OCwuOTUzODEsLjk4OTgxLC45NTI5OCwuOTUzODEsLjkzNDU5LC45MjE2OCwuOTE1MTMsLjkyMDA0LC45MTY3NywuOTUwNzcsLjc0OCwxLjA0NTAyLC45MTY3NywuOTIwNjEsLjk0MjM2LC44OTU0NCwuODkzNjQsLjksLjgwNjg3LC44NTc4LC44MDY4NywxLjAyMDU4LC44MDc3OSwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjg1NzgsLjk5OTczLDEuMTg2MTYsLjkxMzM5LDEuMDgwNzQsLjgyODkxLDEuMDIwNTgsLjU1NTA5LC43MTUyNiwuODkwMjIsMS4wODU5NSwxLDEsMS4xODYxNiwxLC45NjczNiwuOTM1ODIsMS4xODYxNiwxLDEuMDQ4NjQsLjgyNzExLC45OTA0MywuOTkwNDMsLjk5MDQzLC43MTU0MSwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODQ1LC44MDcyOSwuNzc1MTIsLjc3NTEyLC43NzUxMiwuNzc1MTIsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45NTk2MSwuOTIyMjIsLjkwNjM3LC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywxLjAyMDU4LC45MDI1MSwuOTA2OTksLjkwNjk5LC45MDY5OSwuOTA2OTksLjg1NDU4LC44MzY1OSwuOTQ5NTEsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjg1ODExLC43ODIxNiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjk1MzgxLC45NTM4MSwuOTUzODEsLjk1MzgxLC45MTM1LC45MjE2OCwuOTE1MTMsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLDEuMDg1OTUsLjkxNjc3LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuODkzNjQsLjkyMzMyLC44OTM2NCwuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjg1NTc2LC45OTYxMywuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC45NDI5OSwuNzY3ODMsLjk1OTYxLC45MTY3NywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjg2NTIzLC45MTM1LC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsMSwxLC45MjIyMiwuOTIxNjgsLjkyMjIyLC45MjE2OCwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjg2MDM2LC45NzA5NiwuNzE3NDMsLjk4OTgxLDEsMSwuOTUyOTgsLjc5NzI2LC45NTM4MSwxLDEsLjc5NzI2LC42ODk0LC43OTcyNiwuNzQzMjEsLjgxNjkxLDEuMDAwNiwuOTIyMjIsLjkyMTY4LDEsMSwuOTIyMjIsLjkyMTY4LC43OTQ2NCwuOTIwOTgsLjkyMTY4LC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA2MzcsLjkxNTEzLC45MDksLjg3NTE0LC44MDcyOSwuOTUwNzcsMSwxLC44MDcyOSwuOTUwNzcsLjc2NDYzLC43NDgsLjc2NDYzLC43NDgsMSwxLC43NjQ2MywuNzQ4LDEsMSwuODYyNzUsLjcyNjUxLC44NjI3NSwxLjA0NTAyLC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC44NTQ1OCwuOTA1MzEsLjksLjkwNTMxLC45LC45MDUzMSwuOSwxLC45NzI3NiwuODU1NzYsLjk5NjEzLC44NDUsLjg1ODExLC45MDI1MSwuOTE2NzcsMSwxLC44NjI3NSwxLjA0NTAyLDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMDA4OTksMS4zMDYyOCwuODU1NzYsLjgwMTc4LC42Njg2MiwuNzkyNywuNjkzMjMsLjg4MTI3LC43MjQ1OSwuODk3MTEsLjk1MzgxLC44NTU3NiwuODA1OTEsLjc4MDUsLjk0NzI5LC43NzUxMiwuOTA1MzEsLjkyMjIyLC45MDYzNywuOTg2MjEsLjgxNjk4LC45MjY1NSwuOTg1NTgsLjkyMjIyLC44NTM1OSwuOTA2MzcsLjkwOTc2LC44MzgwOSwuOTQ1MjMsLjg2Mjc1LC44MzUwOSwuOTMxNTcsLjg1MzA4LC44MzM5MiwuOTIzNDYsLjk4NjIxLC44MzUwOSwuOTI4ODYsLjkxMzI0LC45MjE2OCwuOTUzODEsLjkwNjQ2LC45Mjg4NiwuOTA1NTcsLjg2ODQ3LC45MDI3NiwuOTEzMjQsLjg2ODQyLC45MjE2OCwuOTk1MzEsLjk1MzgxLC45MjI0LC44NTQwOCwuOTI2OTksLjg2ODQ3LDEuMDA1MSwuOTE1MTMsLjgwNDg3LC45MzQ4MSwxLC44ODE1OSwxLjA1MjE0LC45MDY0NiwuOTczNTUsLjgxNTM5LC44OTM5OCwuODU5MjMsLjk1MzgxLC45MDY0NiwuOTE1MTMsLjkwNjQ2LC44NTkyMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MTU0LC45NDIzNiwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC44NTQ1OCwuODkzNjQsLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MTc4MiwuOTE3ODIsLjkxNzgyLDEsLjg5NiwuODk2LC44OTYsLjkzMzIsLjkzMzIsLjk1OTczLDEsMS4yNiwxLDEsLjgwNDc5LC44MDE3OCwxLDEsLjg1NjMzLDEsMSwxLDEsLjk3Mjc2LDEsMSwxLC42OTgsMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjE0NTQyLDEsLjc5MTk5LC43ODY5NCwxLjAyMDU4LDEuMDM0OTMsMS4wNTQ4NiwxLDEsMS4yMzAyNiwxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjIwMDA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLF9hPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSx6YT1bMS4zNjg5OCwxLDEsLjY1NTA3LC44NDk0MywuODU2MzksLjg4NDY1LC44ODQ2NSwuODY5MzYsLjg4MzA3LC44Njk0OCwuODUyODMsLjg1MjgzLDEuMDYzODMsMS4wMjA1OCwuNzU5NDUsLjkyMTksLjc1OTQ1LDEuMTczMzcsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC43NTk0NSwuNzU5NDUsMS4wMjA1OCwxLjAyMDU4LDEuMDIwNTgsLjY5MDQ2LC43MDkyNiwuODUxNTgsLjc3ODEyLC43Njg1MiwuODk1OTEsLjcwNDY2LC43NjEyNSwuODAwOTQsLjg2ODIyLC44Mzg2NCwuNzI4LC43NzIxMiwuNzk0NzUsLjkzNjM3LC44NzUxNCwuODU4OCwuNzYwMTMsLjg1ODgsLjcyNDIxLC42OTg2NiwuNzc1OTgsLjg1OTkxLC44MDgxMSwuODc4MzIsLjc4MTEyLC43NzUxMiwuODU2MiwxLjAyMjIsMS4xODQxNywxLjAyMjIsMS4yNzAxNCwuODk5MDMsMS4xNTAxMiwuOTM4NTksLjk0Mzk5LC44NDYsLjk0Mzk5LC44MTQ1MywxLjAxODYsLjk0MjE5LC45NjAxNywxLjAzMDc1LDEuMDIxNzUsLjkxMiwxLjAzMDc1LC45Njk5OCwuOTYwMTcsLjkzODU5LC45NDM5OSwuOTQzOTksLjk1NDkzLC43NDYsMS4xMjY1OCwuOTQ1NzgsLjkxLC45NzksLjg4MiwuODgyLC44MywuODUwMzQsLjgzNTM3LC44NTAzNCwxLjAyMDU4LC43MDg2OSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjgzNTM3LC45MDA4MywxLjE1MDEyLC45MTYxLC45NDU2NSwuNzM1NDEsMS4wMjA1OCwuNTM2MDksLjY5MzUzLC43OTUxOSwxLjA4NTk1LDEsMSwxLjE1MDEyLDEsLjkxOTc0LC43NTk0NSwxLjE1MDEyLDEsLjk0NDYsLjczMzYxLC45MDA1LC45MDA1LC45MDA1LC42Mjg2NCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuNzczLC43Njg1MiwuNzA0NjYsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjgzODY0LC44Mzg2NCwuODM4NjQsLjgzODY0LC45MDU2MSwuODc1MTQsLjg1ODgsLjg1ODgsLjg1ODgsLjg1ODgsLjg1ODgsMS4wMjA1OCwuODU3NTEsLjg1OTkxLC44NTk5MSwuODU5OTEsLjg1OTkxLC43NzUxMiwuNzYwMTMsLjg4MDc1LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC44MDc1LC44NDYsLjgxNDUzLC44MTQ1MywuODE0NTMsLjgxNDUzLC44MjQyNCwuODI0MjQsLjgyNDI0LC44MjQyNCwuOTI3OCwuOTYwMTcsLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwxLjA4NTk1LC44NTYyLC45NDU3OCwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuODgyLC45NDU3OCwuODgyLC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuODUxNTgsLjkzODU5LC43Njg1MiwuODQ2LC43Njg1MiwuODQ2LC43Njg1MiwuODQ2LC43Njg1MiwuODQ2LC44OTU5MSwuODU0NCwuOTA1NjEsLjk0Mzk5LC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksLjgwMDk0LC45NDIxOSwxLDEsLjg2ODIyLC45NjAxNywuODY4MjIsLjk2MDE3LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsLjgyNDI0LC44Mzg2NCwxLjAzMDc1LC44Mzg2NCwuODI0MjQsLjgxNDAyLDEuMDI3MzgsLjcyOCwxLjAyMTc1LDEsMSwuOTEyLC43OTQ3NSwxLjAzMDc1LDEsMSwuNzk0NzUsLjgzOTExLC43OTQ3NSwuNjYyNjYsLjgwNTUzLDEuMDY2NzYsLjg3NTE0LC45NjAxNywxLDEsLjg3NTE0LC45NjAxNywuODY4NjUsLjg3Mzk2LC45NjAxNywuODU4OCwuOTM4NTksLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODY3LC44NDc1OSwuNzI0MjEsLjk1NDkzLDEsMSwuNzI0MjEsLjk1NDkzLC42OTg2NiwuNzQ2LC42OTg2NiwuNzQ2LDEsMSwuNjk4NjYsLjc0NiwxLDEsLjc3NTk4LC44ODQxNywuNzc1OTgsMS4xMjY1OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuNzc1MTIsLjg1NjIsLjgzLC44NTYyLC44MywuODU2MiwuODMsMSwuODg0NjUsLjg1MTU4LC45Mzg1OSwuNzczLC44MDc1LC44NTc1MSwuODU2MiwxLDEsLjc3NTk4LDEuMTI2NTgsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUzMTMsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4wODEwNiwxLjAzOTAxLC44NTE1OCwuNzcwMjUsLjYyMjY0LC43NjQ2LC42NTM1MSwuODYwMjYsLjY5NDYxLC44OTk0NywxLjAzMDc1LC44NTE1OCwuNzc4MTIsLjc2NDQ5LC44ODgzNiwuNzA0NjYsLjg1NjIsLjg2ODIyLC44NTg4LC44Mzg2NCwuNzcyMTIsLjg1MzA4LC45MzYzNywuODc1MTQsLjgyMzUyLC44NTg4LC44NTcwMSwuNzYwMTMsLjg5MDU4LC43NzU5OCwuODE1NiwuODI1NjUsLjc4MTEyLC43Nzg5OSwuODkzODYsLjgzODY0LC44MTU2LC45NDg2LC45MjM4OCwuOTYxODYsMS4wMzA3NSwuOTExMjMsLjk0ODYsLjkzMjk4LC44NzgsLjkzOTQyLC45MjM4OCwuODQ1OTYsLjk2MTg2LC45NTExOSwxLjAzMDc1LC45MjIsLjg4Nzg3LC45NTgyOSwuODgsLjkzNTU5LC45Mzg1OSwuNzg4MTUsLjkzNzU4LDEsLjg5MjE3LDEuMDM3MzcsLjkxMTIzLC45Mzk2OSwuNzc0ODcsLjg1NzY5LC44Njc5OSwxLjAzMDc1LC45MTEyMywuOTM4NTksLjkxMTIzLC44Njc5OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NzgzMiwuOTc5LC44NzgzMiwuOTc5LC44NzgzMiwuOTc5LC43NzUxMiwuODgyLC45MjE5LDEsLjg5OTAzLDEsMSwxLC44NzMyMSwuODczMjEsLjg3MzIxLDEsMS4wMjcsMS4wMjcsMS4wMjcsLjg2ODQ3LC44Njg0NywuNzkxMjEsMSwxLjEyNCwxLDEsLjczNTcyLC43MzU3MiwxLDEsLjg1MDM0LDEsMSwxLDEsLjg4NDY1LDEsMSwxLC42NjksMSwxLjM2MTQ1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA0ODI4LDEsLjc0OTQ4LC43NTE4NywxLjAyMDU4LC45ODM5MSwxLjAyMTE5LDEsMSwxLjA2MjMzLDEuMDg1OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDUyMzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sJGE9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LEFyPVsxLjM2ODk4LDEsMSwuNzYzMDUsLjgyNzg0LC45NDkzNSwuODkzNjQsLjkyMjQxLC44OTA3MywuOTA3MDYsLjk4NDcyLC44NTI4MywuODUyODMsMS4wNjY0LDEuMDIwNTgsLjc0NTA1LC45MjE5LC43NDUwNSwxLjIzNDU2LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuNzQ1MDUsLjc0NTA1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC43MzAwMiwuNzI2MDEsLjkxNzU1LC44MTI2LC44MDMxNCwuOTIyMjIsLjczNzY0LC43OTcyNiwuODMwNTEsLjkwMjg0LC44NjAyMywuNzQsLjgxMjYsLjg0ODY5LC45NjUxOCwuOTExMTUsLjg4NTgsLjc5NzYxLC44ODU4LC43NDQ5OCwuNzM5MTQsLjgxMzYzLC44OTU5MSwuODM2NTksLjg5NjMzLC44NTYwOCwuODExMSwuOTA1MzEsMS4wMjIyLDEuMjI3MzYsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLC45MDA4OCwuODY2NjcsMS4wMjMxLC44OTYsMS4wMTQxMSwuOTAwODMsMS4wNTA5OSwxLjAwNTEyLC45OTc5MywxLjA1MzI2LDEuMDkzNzcsLjkzOCwxLjA2MjI2LDEuMDAxMTksLjk5NzkzLC45ODcxNCwxLjAyMzEsMS4wMTIzMSwuOTgxOTYsLjc5MiwxLjE5MTM3LC45OTA3NCwuOTYyLDEuMDE5MTUsLjkyNiwuOTQyLC44NTYsLjg1MDM0LC45MjAwNiwuODUwMzQsMS4wMjA1OCwuNjkwNjcsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjAwNiwuOTMzMiwuOTAwODgsLjkxODgyLC45MzQ4NCwuNzUzMzksMS4wMjA1OCwuNTY4NjYsLjU0MzI0LC43OTUxOSwxLjA4NTk1LDEsMSwuOTAwODgsMSwuOTUzMjUsLjc0NTA1LC45MDA4OCwxLC45NzE5OCwuNzUzMzksLjkxMDA5LC45MTAwOSwuOTEwMDksLjY2NDY2LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC43ODgsLjgwMzE0LC43Mzc2NCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuODYwMjMsLjg2MDIzLC44NjAyMywuODYwMjMsLjkyOTE1LC45MTExNSwuODg1OCwuODg1OCwuODg1OCwuODg1OCwuODg1OCwxLjAyMDU4LC44ODU4LC44OTU5MSwuODk1OTEsLjg5NTkxLC44OTU5MSwuODExMSwuNzk2MTEsLjg5NzEzLC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjkzNiwuODk2LC45MDA4MywuOTAwODMsLjkwMDgzLC45MDA4MywuODQyMjQsLjg0MjI0LC44NDIyNCwuODQyMjQsLjk3Mjc2LC45OTc5MywuOTg3MTQsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LDEuMDg1OTUsLjg5ODc2LC45OTA3NCwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTQyLDEuMDIzMSwuOTQyLC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuOTE3NTUsLjg2NjY3LC44MDMxNCwuODk2LC44MDMxNCwuODk2LC44MDMxNCwuODk2LC44MDMxNCwuODk2LC45MjIyMiwuOTMzNzIsLjkyOTE1LDEuMDE0MTEsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC44MzA1MSwxLjAwNTEyLC44MzA1MSwxLjAwNTEyLC44MzA1MSwxLjAwNTEyLDEsMSwuOTAyODQsLjk5NzkzLC45MDk3NiwuOTk3OTMsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywuODQyMjQsLjg2MDIzLDEuMDUzMjYsLjg2MDIzLC44NDIyNCwuODI4NzMsMS4wNzQ2OSwuNzQsMS4wOTM3NywxLDEsLjkzOCwuODQ4NjksMS4wNjIyNiwxLDEsLjg0ODY5LC44MzcwNCwuODQ4NjksLjgxNDQxLC44NTU4OCwxLjA4OTI3LC45MTExNSwuOTk3OTMsMSwxLC45MTExNSwuOTk3OTMsLjkxODg3LC45MDk5MSwuOTk3OTMsLjg4NTgsLjk4NzE0LC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg5NCwuOTE0MzQsLjc0NDk4LC45ODE5NiwxLDEsLjc0NDk4LC45ODE5NiwuNzM5MTQsLjc5MiwuNzM5MTQsLjc5MiwxLDEsLjczOTE0LC43OTIsMSwxLC44MTM2MywuOTA0LC44MTM2MywxLjE5MTM3LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjgxMTEsLjkwNTMxLC44NTYsLjkwNTMxLC44NTYsLjkwNTMxLC44NTYsMSwuOTIyNDEsLjkxNzU1LC44NjY2NywuNzg4LC44NjkzNiwuODg1OCwuODk4NzYsMSwxLC44MTM2MywxLjE5MTM3LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDM4OCwxLjAzOTAxLC45MjEzOCwuNzgxMDUsLjcxNTQsLjg2MTY5LC44MDUxMywuOTQwMDcsLjgyNTI4LC45ODYxMiwxLjA2MjI2LC45MTc1NSwuODEyNiwuODE4ODQsLjkyODE5LC43Mzc2NCwuOTA1MzEsLjkwMjg0LC44ODU4LC44NjAyMywuODEyNiwuOTExNzIsLjk2NTE4LC45MTExNSwuODMwODksLjg4NTgsLjg3NzkxLC43OTc2MSwuODkyOTcsLjgxMzYzLC44ODE1NywuODk5OTIsLjg1NjA4LC44MTk5MiwuOTQzMDcsLjg2MDIzLC44ODE1NywuOTUzMDgsLjk4Njk5LC45OTc5MywxLjA2MjI2LC45NTgxNywuOTUzMDgsLjk3MzU4LC45MjgsLjk4MDg4LC45ODY5OSwuOTI3NjEsLjk5NzkzLC45NjAxNywxLjA2MjI2LC45ODYsLjk0NCwuOTU5NzgsLjkzOCwuOTY3MDUsLjk4NzE0LC44MDQ0MiwuOTg5NzIsMSwuODk3NjIsMS4wNDU1MiwuOTU4MTcsLjk5MDA3LC44NzA2NCwuOTE4NzksLjg4ODg4LDEuMDYyMjYsLjk1ODE3LC45ODcxNCwuOTU4MTcsLjg4ODg4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjMzLDEuMDE5MTUsLjg5NjMzLDEuMDE5MTUsLjg5NjMzLDEuMDE5MTUsLjgxMTEsLjk0MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuOTMxNzMsLjkzMTczLC45MzE3MywxLDEuMDYzMDQsMS4wNjMwNCwxLjA2OTA0LC44OTkwMywuODk5MDMsLjgwNTQ5LDEsMS4xNTYsMSwxLC43NjU3NSwuNzY1NzUsMSwxLC43MjQ1OCwxLDEsMSwxLC45MjI0MSwxLDEsMSwuNjE5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNzI1NywxLC43NDcwNSwuNzExMTksMS4wMjA1OCwxLjAyNCwxLjAyMTE5LDEsMSwxLjE1MzYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTYzOCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxlcj17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sdHI9WzEuNzY3MzgsMSwxLC45OTI5NywuOTgyNCwxLjA0MDE2LDEuMDY0OTcsMS4wMzQyNCwuOTc1MjksMS4xNzY0NywxLjIzMjAzLDEuMTA4NSwxLjEwODUsMS4xNjkzOSwxLjIxMDcsLjk3NTQsMS4yMTQwOCwuOTc1NCwxLjU5NTc4LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsLjgxMzc4LC44MTM3OCwxLjIxMDcsMS4yMTA3LDEuMjEwNywuNzE3MDMsLjk3ODQ3LC45NzM2MywuODg3NzYsLjg2NDEsMS4wMjA5NiwuNzk3OTUsLjg1MTMyLC45MTQsMS4wNjA4NSwxLjE0MDYsLjgwMDcsLjg5ODU4LC44MzY5MywxLjE0ODg5LDEuMDkzOTgsLjk3NDg5LC45MjA5NCwuOTc0ODksLjkwMzk5LC44NDA0MSwuOTU5MjMsMS4wMDEzNSwxLDEuMDY0NjcsLjk4MjQzLC45MDk5NiwuOTkzNjEsMS4xMDg1LDEuNTY5NDIsMS4xMDg1LDEuMjEwNywuNzQ2MjcsLjk0MjgyLC45Njc1MiwxLjAxNTE5LC44NjMwNCwxLjAxMzU5LC45NzI3OCwxLjE1MTAzLDEuMDEzNTksLjk4NTYxLDEuMDIyODUsMS4wMjI4NSwxLjAwNTI3LDEuMDIyODUsMS4wMzAyLC45OTA0MSwxLjAwMDgsMS4wMTUxOSwxLjAxMzU5LDEuMDIyNTgsLjc5MTA0LDEuMTY4NjIsLjk5MDQxLC45NzQ1NCwxLjAyNTExLC45OTI5OCwuOTY3NTIsLjk1ODAxLC45NDg1NiwxLjE2NTc5LC45NDg1NiwxLjIxMDcsLjk4MjQsMS4wMzQyNCwxLjAzNDI0LDEsMS4wMzQyNCwxLjE2NTc5LC44NzI3LDEuMzg3MSwxLjE4NjIyLDEuMTA4MTgsMS4wNDQ3OCwxLjIxMDcsMS4xODYyMiwuNzUxNTUsLjk0OTk0LDEuMjg4MjYsMS4yMTQwOCwxLjIxNDA4LC45MTA1NiwxLC45MTU3MiwuOTc1NCwuNjQ2NjMsMS4xODMyOCwxLjI0ODY2LDEuMDQ0NzgsMS4xNDE2OSwxLjE1NzQ5LDEuMTczODksLjcxNzAzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45MzUwNiwuODY0MSwuNzk3OTUsLjc5Nzk1LC43OTc5NSwuNzk3OTUsMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMDIwOTYsMS4wOTM5OCwuOTc0MjYsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LDEuMjEwNywuOTc0ODksMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwuOTA5OTYsLjkyMDk0LDEuMDI3OTgsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjkzMTM2LC44NjMwNCwuOTcyNzgsLjk3Mjc4LC45NzI3OCwuOTcyNzgsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsMS4wMjI4NSwuOTcxMjIsLjk5MDQxLDEsMSwxLDEsMSwxLjI4ODI2LDEuMDAwOCwuOTkwNDEsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk2NzUyLDEuMDE1MTksLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuOTczNjMsLjk2NzUyLC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwxLjAyMDk2LDEuMDMwNTcsMS4wMjA5NiwxLjAzNTE3LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuOTE0LDEuMDEzNTksLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwxLDEsMS4wNjA4NSwuOTg1NjEsMS4wNjA4NSwxLjAwODc5LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LDEuMTQwNiwxLjAyMjg1LC45NzEzOCwxLjA4NjkyLC44MDA3LDEuMDIyODUsMSwxLDEuMDA1MjcsLjgzNjkzLDEuMDIyODUsMSwxLC44MzY5MywuOTQ1NSwuODM2OTMsLjkwNDE4LC44MzY5MywxLjEzMDA1LDEuMDkzOTgsLjk5MDQxLDEsMSwxLjA5Mzk4LC45OTA0MSwuOTY2OTIsMS4wOTI1MSwuOTkwNDEsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45NzQ4OSwxLjAwMDgsLjkzOTk0LC45NzkzMSwuOTAzOTksMS4wMjI1OCwxLDEsLjkwMzk5LDEuMDIyNTgsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwxLDEsLjk1OTIzLDEuMDcwMzQsLjk1OTIzLDEuMTY4NjIsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wMDEzNSwuOTkwNDEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsLjkwOTk2LC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwuOTkzNjEsLjk1ODAxLDEuMDc3MzMsMS4wMzQyNCwuOTczNjMsLjk2NzUyLC45MzUwNiwuOTMxMzYsLjk3NDg5LDEuMDAwOCwxLDEsLjk1OTIzLDEuMTY4NjIsMS4xNTEwMywxLjE1MTAzLDEuMDExNzMsMS4wMzk1OSwuNzU5NTMsLjgxMzc4LC43OTkxMiwxLjE1MTAzLDEuMjE5OTQsLjk1MTYxLC44NzgxNSwxLjAxMTQ5LC44MTUyNSwuNzY3NiwuOTgxNjcsMS4wMTEzNCwxLjAyNTQ2LC44NDA5NywxLjAzMDg5LDEuMTgxMDIsLjk3MzYzLC44ODc3NiwuODUxMzQsLjk3ODI2LC43OTc5NSwuOTkzNjEsMS4wNjA4NSwuOTc0ODksMS4xNDA2LC44OTg1OCwxLjAzODgsMS4xNDg4OSwxLjA5Mzk4LC44NjAzOSwuOTc0ODksMS4wNTk1LC45MjA5NCwuOTQ3OTMsLjk1OTIzLC45MDk5NiwuOTkzNDYsLjk4MjQzLDEuMDIxMTIsLjk1NDkzLDEuMTQwNiwuOTA5OTYsMS4wMzU3NCwxLjAyNTk3LDEuMDAwOCwxLjE4MTAyLDEuMDY2MjgsMS4wMzU3NCwxLjAxOTIsMS4wMTkzMiwxLjAwODg2LC45NzUzMSwxLjAxMDYsMS4wMDA4LDEuMTMxODksMS4xODEwMiwxLjAyMjc3LC45ODY4MywxLjAwMTYsLjk5NTYxLDEuMDcyMzcsMS4wMDA4LC45MDQzNCwuOTk5MjEsLjkzODAzLC44OTY1LDEuMjMwODUsMS4wNjYyOCwxLjA0OTgzLC45NjI2OCwxLjA0OTksLjk4NDM5LDEuMTgxMDIsMS4wNjYyOCwxLjAwMDgsMS4wNjYyOCwuOTg0MzksLjc5Nzk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDk0NjYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk3Mjc4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDIwNjUsMSwxLDEsMSwxLDEsMS4wNjQ2NywxLjAyNTExLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsLjkwOTk2LC45Njc1MiwxLDEuMjE0MDgsLjg5OTAzLDEsMSwuNzUxNTUsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsMS4wNDM5NCwuOTg2MzMsLjk4NjMzLC45ODYzMywuNzMwNDcsLjczMDQ3LDEuMjA2NDIsLjkxMjExLDEuMjU2MzUsMS4yMjIsMS4wMjk1NiwxLjAzMzcyLDEuMDMzNzIsLjk2MDM5LDEuMjQ2MzMsMSwxLjEyNDU0LC45MzUwMywxLjAzNDI0LDEuMTk2ODcsMS4wMzQyNCwxLDEsMSwuNzcxLDEsMSwxLjE1NzQ5LDEuMTU3NDksMS4xNTc0OSwxLjEwOTQ4LC44NjI3OSwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYxODIsMSwxLDEuMTY4OTcsMSwuOTYwODUsLjkwMTM3LDEuMjEwNywxLjE4NDE2LDEuMTM5NzMsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjExNzIsMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODg3NCwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMDkxOTMsMS4wOTE5MywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0saXI9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LGFyPVsxLjc2NzM4LDEsMSwuOTg5NDYsMS4wMzk1OSwxLjA0MDE2LDEuMDI4MDksMS4wMzYsLjk3NjM5LDEuMTA5NTMsMS4yMzIwMywxLjExMTQ0LDEuMTExNDQsMS4xNjkzOSwxLjIxMjM3LC45NzU0LDEuMjEyNjEsLjk3NTQsMS41OTc1NCwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwxLjAzNiwuODEzNzgsLjgxMzc4LDEuMjEyMzcsMS4yMTIzNywxLjIxMjM3LC43MzU0MSwuOTc4NDcsLjk3MzYzLC44OTcyMywuODc4OTcsMS4wNDI2LC43OTQyOSwuODUyOTIsLjkxMTQ5LDEuMDU4MTUsMS4xNDA2LC43OTYzMSwuOTAxMjgsLjgzODUzLDEuMDQzOTYsMS4xMDYxNSwuOTc1NTIsLjk0NDM2LC45NzU1MiwuODg2NDEsLjgwNTI3LC45NjA4MywxLjAwMTM1LDEsMS4wNjc3NywuOTgxNywuOTExNDIsLjk5MzYxLDEuMTExNDQsMS41NzI5MywxLjExMTQ0LDEuMjEyMzcsLjc0NjI3LDEuMzE4MTgsMS4wNjU4NSwuOTcwNDIsLjgzMDU1LC45NzA0MiwuOTM1MDMsMS4xMjYxLC45NzA0MiwuOTc5MjIsMS4xNDIzNiwuOTQ1NTIsMS4wMTA1NCwxLjE0MjM2LDEuMDI0NzEsLjk3OTIyLC45NDE2NSwuOTcwNDIsLjk3MDQyLDEuMDI3NiwuNzg5MjksMS4xMjYxLC45NzkyMiwuOTU4NzQsMS4wMjE5NywuOTg1MDcsLjk2NzUyLC45NzE2OCwuOTUxMDcsMS4xNjU3OSwuOTUxMDcsMS4yMTIzNywxLjAzOTU5LDEuMDM2LDEuMDM2LDEsMS4wMzYsMS4xNjU3OSwuODczNTcsMS4zMTgxOCwxLjE4NzU0LDEuMjY3ODEsMS4wNTM1NiwxLjIxMjM3LDEuMTg2MjIsLjc5NDg3LC45NDk5NCwxLjI5MDA0LDEuMjQwNDcsMS4yNDA0NywxLjMxODE4LDEsLjkxNDg0LC45NzU0LDEuMzE4MTgsMS4xMzQ5LDEuMjQ4NjYsMS4wNTM1NiwxLjEzOTM0LDEuMTU1NzQsMS4xNzM4OSwuNzM1NDEsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk0Mzg1LC44Nzg5NywuNzk0MjksLjc5NDI5LC43OTQyOSwuNzk0MjksMS4xNDA2LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMDQyNiwxLjEwNjE1LC45NzU1MiwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsMS4yMTIzNywuOTc1NTIsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsMS4wMDEzNSwuOTExNDIsLjk0NDM2LC45ODcyMSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwuOTY3MDUsLjgzMDU1LC45MzUwMywuOTM1MDMsLjkzNTAzLC45MzUwMywxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwxLjE0MjM2LC45MzEyNSwuOTc5MjIsLjk0MTY1LC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwxLjI5MDA0LC45NDE2NSwuOTc5MjIsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk2NzUyLC45NzA0MiwuOTY3NTIsLjk3MzYzLDEuMDY1ODUsLjk3MzYzLDEuMDY1ODUsLjk3MzYzLDEuMDY1ODUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwxLjA0MjYsMS4wMDMzLDEuMDQyNiwuOTcwNDIsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwuOTExNDksLjk3MDQyLDEsMSwxLjA1ODE1LC45NzkyMiwxLjA1ODE1LC45NzkyMiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwxLjE0MDYsMS4xNDIzNiwuOTc0NDEsMS4wNDMwMiwuNzk2MzEsMS4wMTU4MiwxLDEsMS4wMTA1NCwuODM4NTMsMS4xNDIzNiwxLDEsLjgzODUzLDEuMDkxMjUsLjgzODUzLC45MDQxOCwuODM4NTMsMS4xOTUwOCwxLjEwNjE1LC45NzkyMiwxLDEsMS4xMDYxNSwuOTc5MjIsMS4wMTAzNCwxLjEwNDY2LC45NzkyMiwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjk3NTUyLC45NDE2NSwuOTE2MDIsLjkxOTgxLC44ODY0MSwxLjAyNzYsMSwxLC44ODY0MSwxLjAyNzYsLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwxLDEsLjk2MDgzLDEuMDU0MDMsLjk1OTIzLDEuMTY4NjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wMDEzNSwuOTc5MjIsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsLjkxMTQyLC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwuOTkzNjEsLjk3MTY4LDEuMjMxOTksMS4wMzYsLjk3MzYzLDEuMDY1ODUsLjk0Mzg1LC45NjcwNSwuOTc1NTIsLjk0MTY1LDEsMSwuOTYwODMsMS4xMjYxLDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LC45NTE2MSwxLjI3MTI2LDEuMDA4MTEsLjgzMjg0LC43NzcwMiwuOTkxMzcsLjk1MjUzLDEuMDM0NywuODYxNDIsMS4wNzIwNSwxLjE0MjM2LC45NzM2MywuODk3MjMsLjg2ODY5LDEuMDk4MTgsLjc5NDI5LC45OTM2MSwxLjA1ODE1LC45NzU1MiwxLjE0MDYsLjkwMTI4LDEuMDY2NjIsMS4wNDM5NiwxLjEwNjE1LC44NDkxOCwuOTc1NTIsMS4wNDY5NCwuOTQ0MzYsLjk4MDE1LC45NjA4MywuOTExNDIsMS4wMDM1NiwuOTgxNywxLjAxOTQ1LC45ODk5OSwxLjE0MDYsLjkxMTQyLDEuMDQ5NjEsLjk4OTgsMS4wMDYzOSwxLjE0MjM2LDEuMDc1MTQsMS4wNDk2MSwuOTk2MDcsMS4wMjg5NywxLjAwOCwuOTg5OCwuOTUxMzQsMS4wMDYzOSwxLjExMTIxLDEuMTQyMzYsMS4wMDUxOCwuOTc5ODEsMS4wMjE4NiwxLDEuMDg1NzgsLjk0MTY1LC45OTMxNCwuOTgzODcsLjkzMDI4LC45MzM3NywxLjM1MTI1LDEuMDc1MTQsMS4xMDY4NywuOTM0OTEsMS4wNDIzMiwxLjAwMzUxLDEuMTQyMzYsMS4wNzUxNCwuOTQxNjUsMS4wNzUxNCwxLjAwMzUxLC43OTQyOSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5MDk3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MzUwMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTY2MDksMSwxLDEsMSwxLDEsMS4wNjc3NywxLjAyMTk3LDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsLjkxMTQyLC45Njc1MiwxLDEuMjEyNjEsLjg5OTAzLDEsMSwuNzUxNTUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQ3NDUsMS4wNDM5NCwuOTg2MzMsLjk4NjMzLC45ODYzMywuNzI5NTksLjcyOTU5LDEuMjA1MDIsLjkxNDA2LDEuMjY1MTQsMS4yMjIsMS4wMjk1NiwxLjAzMzcyLDEuMDMzNzIsLjk2MDM5LDEuMjQ2MzMsMSwxLjA5MTI1LC45MzMyNywxLjAzMzM2LDEuMTY1NDEsMS4wMzYsMSwxLDEsLjc3MSwxLDEsMS4xNTU3NCwxLjE1NTc0LDEuMTU1NzQsMS4xNTU3NCwuODYzNjQsLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MjI0LDEsMSwxLjE2Nzk4LDEsLjk2MDg1LC45MDA2OCwxLjIxMjM3LDEuMTg0MTYsMS4xMzkwNCwuNjk4MjUsLjk3MTYsMi4xMDMzOSwxLjI5MDA0LDEuMjkwMDQsMS4yMTMzOSwxLjI5MDA0LDEuMjkwMDQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4Nzc1LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMzI2OSwxLjEzMjY5LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxycj17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sc3I9WzEuNzY3MzgsMSwxLC45ODk0NiwxLjE0NzYzLDEuMDUzNjUsMS4wNjIzNCwuOTY5MjcsLjkyNTg2LDEuMTUzNzMsMS4xODQxNCwuOTEzNDksLjkxMzQ5LDEuMDc0MDMsMS4xNzMwOCwuNzgzODMsMS4yMDA4OCwuNzgzODMsMS40MjUzMSwuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjc4MzgzLC43ODM4MywxLjE3MzA4LDEuMTczMDgsMS4xNzMwOCwuNzczNDksLjk0NTY1LC45NDcyOSwuODU5NDQsLjg4NTA2LC45ODU4LC43NDgxNywuODAwMTYsLjg4NDQ5LC45ODAzOSwuOTU3ODIsLjY5MjM4LC44OTg5OCwuODMyMzEsLjk4MTgzLDEuMDM5ODksLjk2OTI0LC44NjIzNywuOTY5MjQsLjgwNTk1LC43NDUyNCwuODYwOTEsLjk1NDAyLC45NDE0MywuOTg0NDgsLjg4NTgsLjgzMDg5LC45MzI4NSwxLjA5NDksMS4zOTAxNiwxLjA5NDksMS40NTk5NCwuNzQ2MjcsMS4wNDgzOSwuOTc0NTQsLjk3NDU0LC44NzIwNywuOTc0NTQsLjg3NTMzLDEuMDYxNTEsLjk3NDU0LDEuMDAxNzYsMS4xNjQ4NCwxLjA4MTMyLC45ODA0NywxLjE2NDg0LDEuMDI5ODksMS4wMTA1NCwuOTYyMjUsLjk3NDU0LC45NzQ1NCwxLjA2NTk4LC43OTAwNCwxLjE2MzQ0LDEuMDAzNTEsLjk0NjI5LC45OTczLC45MTAxNiwuOTY3NzcsLjkwNDMsLjkxMDgyLC45MjQ4MSwuOTEwODIsMS4xNzMwOCwuOTU3NDgsLjk2OTI3LC45NjkyNywxLC45NjkyNywuOTI0ODEsLjgwNTk3LDEuMDQ4MzksMS4yMzM5MywxLjE3ODEsLjkyNDUsMS4xNzMwOCwxLjIwODA4LC42MzIxOCwuOTQyNjEsMS4yNDgyMiwxLjA5OTcxLDEuMDk5NzEsMS4wNDgzOSwxLC44NTI3MywuNzgwMzIsMS4wNDgzOSwxLjA5OTcxLDEuMjIzMjYsLjkyNDUsMS4wOTgzNiwxLjEzNTI1LDEuMTUyMjIsLjcwNDI0LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC44NTQ5OCwuODg1MDYsLjc0ODE3LC43NDgxNywuNzQ4MTcsLjc0ODE3LC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTg1OCwxLjAzOTg5LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzMwOCwuOTY5MjQsLjk1NDAyLC45NTQwMiwuOTU0MDIsLjk1NDAyLC44MzA4OSwuODYyMzcsLjg4NDA5LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45MjkxNiwuODcyMDcsLjg3NTMzLC44NzUzMywuODc1MzMsLjg3NTMzLC45MzE0NiwuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTM4NTQsMS4wMTA1NCwuOTYyMjUsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LDEuMjQ4MjIsLjg3NjEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsMS4wMDM1MSwuOTY3NzcsLjk3NDU0LC45Njc3NywuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjk0NzI5LC45NzQ1NCwuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC45ODU4LC45NTM5MSwuOTg1OCwuOTc0NTQsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwuODg0NDksLjk3NDU0LDEsMSwuOTgwMzksMS4wMDE3NiwuOTgwMzksMS4wMDE3NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLC45MzE0NiwuOTU3ODIsMS4xNjQ4NCwuOTU3ODIsLjkzMTQ2LC44NDQyMSwxLjEyNzYxLC42OTIzOCwxLjA4MTMyLDEsMSwuOTgwNDcsLjgzMjMxLDEuMTY0ODQsMSwxLC44NDcyMywxLjA0ODYxLC44NDcyMywuNzg3NTUsLjgzMjMxLDEuMjM3MzYsMS4wMzk4OSwxLjAxMDU0LDEsMSwxLjAzOTg5LDEuMDEwNTQsLjk4NTcsMS4wMzg0OSwxLjAxMDU0LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTY5MjQsLjk2MjI1LC45MjM4MywuOTAxNzEsLjgwNTk1LDEuMDY1OTgsMSwxLC44MDU5NSwxLjA2NTk4LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsMSwxLC44NjA5MSwxLjAyNzU5LC44NTc3MSwxLjE2MzQ0LC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45NTQwMiwxLjAwMzUxLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LC44MzA4OSwuOTMyODUsLjkwNDMsLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywxLjMxODY4LC45NjkyNywuOTQ3MjksLjk3NDU0LC44NTQ5OCwuOTI5MTYsLjk2OTI0LC44NzYxLDEsMSwuODYwOTEsMS4xNjM0NCwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwuODE5NjUsLjgxOTY1LC45NDcyOSwuNzgwMzIsLjcxMDIyLC45MDg4MywuODQxNzEsLjk5ODc3LC43NzU5NiwxLjA1NzM0LDEuMiwuOTQ3MjksLjg1OTQ0LC44Mjc5MSwuOTYwNywuNzQ4MTcsLjkzMjg1LC45ODAzOSwuOTY5MjQsLjk1NzgyLC44OTg5OCwuOTgzMTYsLjk4MTgzLDEuMDM5ODksLjc4NjE0LC45NjkyNCwuOTc2NDIsLjg2MjM3LC44NjA3NSwuODYwOTEsLjgzMDg5LC45MDA4MiwuODg1OCwuOTcyOTYsMS4wMTI4NCwuOTU3ODIsLjgzMDg5LDEuMDk3NiwxLjA0LDEuMDMzNDIsMS4yLDEuMDY3NSwxLjA5NzYsLjk4MjA1LDEuMDM4MDksMS4wNTA5NywxLjA0LC45NTM2NCwxLjAzMzQyLDEuMDU0MDEsMS4yLDEuMDIxNDgsMS4wMTE5LDEuMDQ3MjQsMS4wMTI3LDEuMDI3MzIsLjk2MjI1LC44OTY1LC45Nzc4MywuOTM1NzQsLjk0ODE4LDEuMzA2NzksMS4wNjc1LDEuMTE4MjYsLjk5ODIxLDEuMDU1NywxLjAzMjYsMS4yLDEuMDY3NSwuOTYyMjUsMS4wNjc1LDEuMDMyNiwuNzQ4MTcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzc1NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc1MzMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk4NzA1LDEsMSwxLDEsMSwxLC45ODQ0OCwuOTk3MywuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC44MzA4OSwuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LC45NDk0NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwxLjEyMzE3LDEuMTIzMTcsMS4xMjMxNywuNjc2MDMsLjY3NjAzLDEuMTU2MjEsLjczNTg0LDEuMjExOTEsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44NzcwOSwuOTY5MjcsMS4wMTQ3MywuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjA5ODM2LDEuMDk4MzYsMS4wOTgzNiwxLjAxNTIyLC44NjMyMSwuOTQ0MzQsLjg2NDksLjk0NDM0LC44NjE4MiwxLDEsMS4wODMsMSwuOTE1NzgsLjg2NDM4LDEuMTczMDgsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njc5MSwxLjI0ODIyLDEuMjQ4MjIsMS4xNzMwOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE3OTg0LDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDc0MiwxLjEwNzQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxucj17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0sb3I9WzEuNzY3MzgsMSwxLC45ODU5NCwxLjAyMjg1LDEuMTA0NTQsMS4wNjIzNCwuOTY5MjcsLjkyMDM3LDEuMTk5ODUsMS4yMDQ2LC45MDYxNiwuOTA2MTYsMS4wNzE1MiwxLjE3MTQsLjc4MDMyLDEuMjAwODgsLjc4MDMyLDEuNDAyNDYsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC43ODAzMiwuNzgwMzIsMS4xNzE0LDEuMTcxNCwxLjE3MTQsLjgwNTk3LC45NDA4NCwuOTY3MDYsLjg1OTQ0LC44NTczNCwuOTcwOTMsLjc1ODQyLC43OTkzNiwuODgxOTgsLjk4MzEsLjk1NzgyLC43MTM4NywuODY5NjksLjg0NjM2LDEuMDc3OTYsMS4wMzU4NCwuOTY5MjQsLjgzOTY4LC45NjkyNCwuODI4MjYsLjc5NjQ5LC44NTc3MSwuOTUxMzIsLjkzMTE5LC45ODk2NSwuODg0MzMsLjgyODcsLjkzMzY1LDEuMDg2MTIsMS4zNjM4LDEuMDg2MTIsMS40NTc4NiwuNzQ2MjcsLjgwNDk5LC45MTQ4NCwxLjA1NzA3LC45MjM4MywxLjA1ODgyLC45NDAzLDEuMTI2NTQsMS4wNTg4MiwxLjAxNzU2LDEuMDkwMTEsMS4wOTAxMSwuOTk0MTQsMS4wOTAxMSwxLjAzNCwxLjAxNzU2LDEuMDUzNTYsMS4wNTcwNywxLjA1ODgyLDEuMDQzOTksLjg0ODYzLDEuMjE5NjgsMS4wMTc1NiwuOTU4MDEsMS4wMDA2OCwuOTE3OTcsLjk2Nzc3LC45MDQzLC45MDM1MSwuOTIxMDUsLjkwMzUxLDEuMTcxNCwuODUzMzcsLjk2OTI3LC45NjkyNywuOTk5MTIsLjk2OTI3LC45MjEwNSwuODA1OTcsMS4yNDM0LDEuMjA4MDgsMS4wNTkzNywuOTA5NTcsMS4xNzE0LDEuMjA4MDgsLjc1MTU1LC45NDI2MSwxLjI0NjQ0LDEuMDk5NzEsMS4wOTk3MSwuODQ3NTEsMSwuODUyNzMsLjc4MDMyLC42MTU4NCwxLjA1NDI1LDEuMTc5MTQsLjkwOTU3LDEuMDg2NjUsMS4xMTU5MywxLjE0MTY5LC43MzM4MSwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuODYwMzUsLjg1NzM0LC43NTg0MiwuNzU4NDIsLjc1ODQyLC43NTg0MiwuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk3MDkzLDEuMDM1ODQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwxLjE3MTQsLjk2OTI0LC45NTEzMiwuOTUxMzIsLjk1MTMyLC45NTEzMiwuODI4NywuODM5NjgsLjg5MDQ5LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MzU3NSwuOTIzODMsLjk0MDMsLjk0MDMsLjk0MDMsLjk0MDMsLjg3MTcsLjg3MTcsLjg3MTcsLjg3MTcsMS4wMDUyNywxLjAxNzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjI0NjQ0LC45NTkyMywxLjAxNzU2LDEuMDE3NTYsMS4wMTc1NiwxLjAxNzU2LC45Njc3NywxLjA1NzA3LC45Njc3NywuOTY3MDYsLjkxNDg0LC45NjcwNiwuOTE0ODQsLjk2NzA2LC45MTQ4NCwuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC45NzA5MywxLjA5NjksLjk3MDkzLDEuMDU4ODIsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuODgxOTgsMS4wNTg4MiwuODgxOTgsMS4wNTg4MiwuODgxOTgsMS4wNTg4MiwxLDEsLjk4MzEsMS4wMTc1NiwuOTgzMSwxLjAxNzU2LC45NTc4MiwuODcxNywuOTU3ODIsLjg3MTcsLjk1NzgyLC44NzE3LC45NTc4MiwxLjA5MDExLC45NTc4MiwuODcxNywuODQ3ODQsMS4xMTU1MSwuNzEzODcsMS4wOTAxMSwxLDEsLjk5NDE0LC44NDYzNiwxLjA5MDExLDEsMSwuODQ2MzYsMS4wNTM2LC44NDYzNiwuOTQyOTgsLjg0NjM2LDEuMjMyOTcsMS4wMzU4NCwxLjAxNzU2LDEsMSwxLjAzNTg0LDEuMDE3NTYsMS4wMDMyMywxLjAzNDQ0LDEuMDE3NTYsLjk2OTI0LDEuMDUzNTYsLjk2OTI0LDEuMDUzNTYsLjk2OTI0LDEuMDUzNTYsLjkzMDY2LC45ODI5MywuODI4MjYsMS4wNDM5OSwxLDEsLjgyODI2LDEuMDQzOTksLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywxLDEsLjg1NzcxLDEuMTczMTgsLjg1NzcxLDEuMjE5NjgsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk1MTMyLDEuMDE3NTYsLjk4OTY1LDEuMDAwNjgsLjgyODcsLjk2Nzc3LC44Mjg3LC45MzM2NSwuOTA0MywuOTMzNjUsLjkwNDMsLjkzMzY1LC45MDQzLDEuMDg1NzEsLjk2OTI3LC45NjcwNiwuOTE0ODQsLjg2MDM1LC45MzU3NSwuOTY5MjQsLjk1OTIzLDEsMSwuODU3NzEsMS4yMTk2OCwxLjExNDM3LDEuMTE0MzcsLjkzMTA5LC45MTIwMiwuNjA0MTEsLjg0MTY0LC41NTU3MiwxLjAxMTczLC45NzM2MSwuODE4MTgsLjgxODE4LC45NjYzNSwuNzgwMzIsLjcyNzI3LC45MjM2NiwuOTg2MDEsMS4wMzQwNSwuNzc5NjgsMS4wOTc5OSwxLjIsLjk2NzA2LC44NTk0NCwuODU2MzgsLjk2NDkxLC43NTg0MiwuOTMzNjUsLjk4MzEsLjk2OTI0LC45NTc4MiwuODY5NjksLjk0MTUyLDEuMDc3OTYsMS4wMzU4NCwuNzg0MzcsLjk2OTI0LC45ODcxNSwuODM5NjgsLjgzNDkxLC44NTc3MSwuODI4NywuOTQ0OTIsLjg4NDMzLC45Mjg3LDEuMDA5OCwuOTU3ODIsLjgyODcsMS4wNjI1LC45ODI0OCwxLjAzNDI0LDEuMiwxLjAxMDcxLDEuMDYyNSwuOTUyNDYsMS4wMzgwOSwxLjA0OTEyLC45ODI0OCwxLjAwMjIxLDEuMDM0MjQsMS4wNTQ0MywxLjIsMS4wNDc4NSwuOTk2MDksMS4wMDE2OSwxLjA1MTc2LC45OTM0NiwxLjA1MzU2LC45MDg3LDEuMDMwMDQsLjk1NTQyLC45MzExNywxLjIzMzYyLDEuMDEwNzEsMS4wNzgzMSwxLjAyNTEyLDEuMDUyMDUsMS4wMzUwMiwxLjIsMS4wMTA3MSwxLjA1MzU2LDEuMDEwNzEsMS4wMzUwMiwuNzU4NDIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wMzcxOSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTQwMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA0MDIxLDEsMSwxLDEsMSwxLC45ODk2NSwxLjAwMDY4LC45ODk2NSwxLjAwMDY4LC45ODk2NSwxLjAwMDY4LC44Mjg3LC45Njc3NywxLDEuMjAwODgsLjg5OTAzLDEsMSwuNzUxNTUsMS4wMzA3NywxLjAzMDc3LDEuMDMwNzcsMS4wMzA3NywxLjEzMTk2LDEuMTMxOTYsMS4xMzE5NiwuNjc0MjgsLjY3NDI4LDEuMTYwMzksLjczMjkxLDEuMjA5OTYsMS4yMjEzNSwxLjA2NDgzLC45NDg2OCwuOTQ4NjgsLjk1OTk2LDEuMjQ2MzMsMSwxLjA3NDk3LC44Nzc5NiwuOTY5MjcsMS4wMTUxOCwuOTY5MjcsMSwxLDEsLjc3Mjk1LDEsMSwxLjEwNTM5LDEuMTA1MzksMS4xMTM1OCwxLjA2OTY3LC44NjI3OSwuOTQ0MzQsLjg2Mjc5LC45NDQzNCwuODYxODIsMSwxLDEuMDgzLDEsLjkxNTc4LC44NjUwNywxLjE3MTQsMS4xODQxNiwxLjE0NTg5LC42OTgyNSwuOTc2MjIsMS45Njk3LDEuMjQ4MjIsMS4yNDgyMiwxLjE3MjM4LDEuMjQ4MjIsMS4yNDgyMiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTgwODMsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjEwOTM4LDEuMTA5MzgsMSwxLDEsMS4wNTQyNSwxLjA5OTcxLDEuMDk5NzEsMS4wOTk3MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLGdyPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxjcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoKGZ1bmN0aW9uKGUpe2VbIk15cmlhZFByby1SZWd1bGFyIl09ZVsiUGRmSlMtRmFsbGJhY2stUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOkFyLGJhc2VXaWR0aHM6V2EsYmFzZU1hcHBpbmc6amEsbWV0cmljczplcn07ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6WGEsYmFzZVdpZHRoczpZYSxiYXNlTWFwcGluZzpLYSxtZXRyaWNzOlphfTtlWyJNeXJpYWRQcm8tSXQiXT1lWyJNeXJpYWRQcm8tSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczp6YSxiYXNlV2lkdGhzOk9hLGJhc2VNYXBwaW5nOlBhLG1ldHJpY3M6JGF9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpWYSxiYXNlV2lkdGhzOlRhLGJhc2VNYXBwaW5nOnFhLG1ldHJpY3M6X2F9O2UuQXJpYWxNVD1lLkFyaWFsPWVbIkFyaWFsLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsYmFzZVdpZHRoczpXYSxiYXNlTWFwcGluZzpqYX07ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOllhLGJhc2VNYXBwaW5nOkthfTtlWyJBcmlhbC1JdGFsaWNNVCJdPWVbIkFyaWFsLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGJhc2VXaWR0aHM6T2EsYmFzZU1hcHBpbmc6UGF9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpUYSxiYXNlTWFwcGluZzpxYX07ZVsiQ2FsaWJyaS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6UmEsYmFzZVdpZHRoczpXYSxiYXNlTWFwcGluZzpqYSxtZXRyaWNzOk5hfTtlWyJDYWxpYnJpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczp3YSxiYXNlV2lkdGhzOllhLGJhc2VNYXBwaW5nOkthLG1ldHJpY3M6YmF9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpTYSxiYXNlV2lkdGhzOk9hLGJhc2VNYXBwaW5nOlBhLG1ldHJpY3M6a2F9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOkRhLGJhc2VXaWR0aHM6VGEsYmFzZU1hcHBpbmc6cWEsbWV0cmljczpGYX07ZVsiU2Vnb2V1aS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6b3IsYmFzZVdpZHRoczpXYSxiYXNlTWFwcGluZzpqYSxtZXRyaWNzOmdyfTtlWyJTZWdvZXVpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczp0cixiYXNlV2lkdGhzOllhLGJhc2VNYXBwaW5nOkthLG1ldHJpY3M6aXJ9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpzcixiYXNlV2lkdGhzOk9hLGJhc2VNYXBwaW5nOlBhLG1ldHJpY3M6bnJ9O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmFyLGJhc2VXaWR0aHM6VGEsYmFzZU1hcHBpbmc6cWEsbWV0cmljczpycn07ZVsiSGVsdmV0aWNhLVJlZ3VsYXIiXT1lLkhlbHZldGljYT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpIYSxiYXNlV2lkdGhzOldhLGJhc2VNYXBwaW5nOmphLG1ldHJpY3M6dmF9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6R2EsYmFzZVdpZHRoczpZYSxiYXNlTWFwcGluZzpLYSxtZXRyaWNzOnhhfTtlWyJIZWx2ZXRpY2EtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpMYSxiYXNlV2lkdGhzOk9hLGJhc2VNYXBwaW5nOlBhLG1ldHJpY3M6SmF9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6TWEsYmFzZVdpZHRoczpUYSxiYXNlTWFwcGluZzpxYSxtZXRyaWNzOlVhfX0pKTtmdW5jdGlvbiBnZXRYZmFGb250TmFtZShlKXtjb25zdCB0PW5vcm1hbGl6ZUZvbnROYW1lKGUpO3JldHVybiBjcigpW3RdfWZ1bmN0aW9uIGdldFhmYUZvbnREaWN0KGUpe2NvbnN0IHQ9ZnVuY3Rpb24gZ2V0WGZhRm9udFdpZHRocyhlKXtjb25zdCB0PWdldFhmYUZvbnROYW1lKGUpO2lmKCF0KXJldHVybiBudWxsO2NvbnN0e2Jhc2VXaWR0aHM6aSxiYXNlTWFwcGluZzphLGZhY3RvcnM6cn09dCxzPXI/aS5tYXAoKChlLHQpPT5lKnJbdF0pKTppO2xldCBuLG89LTI7Y29uc3QgZz1bXTtmb3IoY29uc3RbZSx0XW9mIGEubWFwKCgoZSx0KT0+W2UsdF0pKS5zb3J0KCgoW2VdLFt0XSk9PmUtdCkpKWlmKC0xIT09ZSlpZihlPT09bysxKXtuLnB1c2goc1t0XSk7bys9MX1lbHNle289ZTtuPVtzW3RdXTtnLnB1c2goZSxuKX1yZXR1cm4gZ30oZSksaT1uZXcgRGljdChudWxsKTtpLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KGUpKTtpLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZvbnQiKSk7aS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJDSURGb250VHlwZTIiKSk7aS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiSWRlbnRpdHktSCIpKTtpLnNldCgiQ0lEVG9HSURNYXAiLE5hbWUuZ2V0KCJJZGVudGl0eSIpKTtpLnNldCgiVyIsdCk7aS5zZXQoIkZpcnN0Q2hhciIsdFswXSk7aS5zZXQoIkxhc3RDaGFyIix0LmF0KC0yKSt0LmF0KC0xKS5sZW5ndGgtMSk7Y29uc3QgYT1uZXcgRGljdChudWxsKTtpLnNldCgiRm9udERlc2NyaXB0b3IiLGEpO2NvbnN0IHI9bmV3IERpY3QobnVsbCk7ci5zZXQoIk9yZGVyaW5nIiwiSWRlbnRpdHkiKTtyLnNldCgiUmVnaXN0cnkiLCJBZG9iZSIpO3Iuc2V0KCJTdXBwbGVtZW50IiwwKTtpLnNldCgiQ0lEU3lzdGVtSW5mbyIscik7cmV0dXJuIGl9Y2xhc3MgUG9zdFNjcmlwdFBhcnNlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmxleGVyPWU7dGhpcy5vcGVyYXRvcnM9W107dGhpcy50b2tlbj1udWxsO3RoaXMucHJldj1udWxsfW5leHRUb2tlbigpe3RoaXMucHJldj10aGlzLnRva2VuO3RoaXMudG9rZW49dGhpcy5sZXhlci5nZXRUb2tlbigpfWFjY2VwdChlKXtpZih0aGlzLnRva2VuLnR5cGU9PT1lKXt0aGlzLm5leHRUb2tlbigpO3JldHVybiEwfXJldHVybiExfWV4cGVjdChlKXtpZih0aGlzLmFjY2VwdChlKSlyZXR1cm4hMDt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVuZXhwZWN0ZWQgc3ltYm9sOiBmb3VuZCAke3RoaXMudG9rZW4udHlwZX0gZXhwZWN0ZWQgJHtlfS5gKX1wYXJzZSgpe3RoaXMubmV4dFRva2VuKCk7dGhpcy5leHBlY3QoSXIuTEJSQUNFKTt0aGlzLnBhcnNlQmxvY2soKTt0aGlzLmV4cGVjdChJci5SQlJBQ0UpO3JldHVybiB0aGlzLm9wZXJhdG9yc31wYXJzZUJsb2NrKCl7Zm9yKDs7KWlmKHRoaXMuYWNjZXB0KElyLk5VTUJFUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2UgaWYodGhpcy5hY2NlcHQoSXIuT1BFUkFUT1IpKXRoaXMub3BlcmF0b3JzLnB1c2godGhpcy5wcmV2LnZhbHVlKTtlbHNle2lmKCF0aGlzLmFjY2VwdChJci5MQlJBQ0UpKXJldHVybjt0aGlzLnBhcnNlQ29uZGl0aW9uKCl9fXBhcnNlQ29uZGl0aW9uKCl7Y29uc3QgZT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnMucHVzaChudWxsLG51bGwpO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KElyLlJCUkFDRSk7aWYodGhpcy5hY2NlcHQoSXIuSUYpKXt0aGlzLm9wZXJhdG9yc1tlXT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbZSsxXT0ianoifWVsc2V7aWYoIXRoaXMuYWNjZXB0KElyLkxCUkFDRSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQUyBGdW5jdGlvbjogZXJyb3IgcGFyc2luZyBjb25kaXRpb25hbC4iKTt7Y29uc3QgdD10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnMucHVzaChudWxsLG51bGwpO2NvbnN0IGk9dGhpcy5vcGVyYXRvcnMubGVuZ3RoO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KElyLlJCUkFDRSk7dGhpcy5leHBlY3QoSXIuSUZFTFNFKTt0aGlzLm9wZXJhdG9yc1t0XT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5vcGVyYXRvcnNbdCsxXT0iaiI7dGhpcy5vcGVyYXRvcnNbZV09aTt0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9fX19Y29uc3QgSXI9e0xCUkFDRTowLFJCUkFDRToxLE5VTUJFUjoyLE9QRVJBVE9SOjMsSUY6NCxJRkVMU0U6NX07Y2xhc3MgUG9zdFNjcmlwdFRva2Vue3N0YXRpYyBnZXQgb3BDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywib3BDYWNoZSIsT2JqZWN0LmNyZWF0ZShudWxsKSl9Y29uc3RydWN0b3IoZSx0KXt0aGlzLnR5cGU9ZTt0aGlzLnZhbHVlPXR9c3RhdGljIGdldE9wZXJhdG9yKGUpe3JldHVybiBQb3N0U2NyaXB0VG9rZW4ub3BDYWNoZVtlXXx8PW5ldyBQb3N0U2NyaXB0VG9rZW4oSXIuT1BFUkFUT1IsZSl9c3RhdGljIGdldCBMQlJBQ0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkxCUkFDRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihJci5MQlJBQ0UsInsiKSl9c3RhdGljIGdldCBSQlJBQ0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIlJCUkFDRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihJci5SQlJBQ0UsIn0iKSl9c3RhdGljIGdldCBJRigpe3JldHVybiBzaGFkb3codGhpcywiSUYiLG5ldyBQb3N0U2NyaXB0VG9rZW4oSXIuSUYsIklGIikpfXN0YXRpYyBnZXQgSUZFTFNFKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJJRkVMU0UiLG5ldyBQb3N0U2NyaXB0VG9rZW4oSXIuSUZFTFNFLCJJRkVMU0UiKSl9fWNsYXNzIFBvc3RTY3JpcHRMZXhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKTt0aGlzLnN0ckJ1Zj1bXX1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gcHQ7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZighaXNXaGl0ZVNwYWNlKHQpKWJyZWFrO3Q9dGhpcy5uZXh0Q2hhcigpfXN3aXRjaCgwfHQpe2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpjYXNlIDU2OmNhc2UgNTc6Y2FzZSA0MzpjYXNlIDQ1OmNhc2UgNDY6cmV0dXJuIG5ldyBQb3N0U2NyaXB0VG9rZW4oSXIuTlVNQkVSLHRoaXMuZ2V0TnVtYmVyKCkpO2Nhc2UgMTIzOnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLkxCUkFDRTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5SQlJBQ0V9Y29uc3QgaT10aGlzLnN0ckJ1ZjtpLmxlbmd0aD0wO2lbMF09U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtmb3IoOyh0PXRoaXMubmV4dENoYXIoKSk+PTAmJih0Pj02NSYmdDw9OTB8fHQ+PTk3JiZ0PD0xMjIpOylpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk7Y29uc3QgYT1pLmpvaW4oIiIpO3N3aXRjaChhLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaWYiOnJldHVybiBQb3N0U2NyaXB0VG9rZW4uSUY7Y2FzZSJpZmVsc2UiOnJldHVybiBQb3N0U2NyaXB0VG9rZW4uSUZFTFNFO2RlZmF1bHQ6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5nZXRPcGVyYXRvcihhKX19Z2V0TnVtYmVyKCl7bGV0IGU9dGhpcy5jdXJyZW50Q2hhcjtjb25zdCB0PXRoaXMuc3RyQnVmO3QubGVuZ3RoPTA7dFswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGUpO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MCYmKGU+PTQ4JiZlPD01N3x8NDU9PT1lfHw0Nj09PWUpOyl0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7Y29uc3QgaT1wYXJzZUZsb2F0KHQuam9pbigiIikpO2lmKGlzTmFOKGkpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBmbG9hdGluZyBwb2ludCBudW1iZXI6ICR7aX1gKTtyZXR1cm4gaX19Y2xhc3MgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VMb2NhbENhY2hlJiZ1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZUxvY2FsQ2FjaGUuIik7dGhpcy5fb25seVJlZnM9ITA9PT1lPy5vbmx5UmVmcztpZighdGhpcy5fb25seVJlZnMpe3RoaXMuX25hbWVSZWZNYXA9bmV3IE1hcDt0aGlzLl9pbWFnZU1hcD1uZXcgTWFwfXRoaXMuX2ltYWdlQ2FjaGU9bmV3IFJlZlNldENhY2hlfWdldEJ5TmFtZShlKXt0aGlzLl9vbmx5UmVmcyYmdW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBgZ2V0QnlOYW1lYCBtZXRob2QuIik7Y29uc3QgdD10aGlzLl9uYW1lUmVmTWFwLmdldChlKTtyZXR1cm4gdD90aGlzLmdldEJ5UmVmKHQpOnRoaXMuX2ltYWdlTWFwLmdldChlKXx8bnVsbH1nZXRCeVJlZihlKXtyZXR1cm4gdGhpcy5faW1hZ2VDYWNoZS5nZXQoZSl8fG51bGx9c2V0KGUsdCxpKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBzZXRgIGNhbGxlZC4iKX19Y2xhc3MgTG9jYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGUsdD1udWxsLGkpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsaSl9fWNsYXNzIExvY2FsQ29sb3JTcGFjZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7c2V0KGU9bnVsbCx0PW51bGwsaSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsQ29sb3JTcGFjZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhbmQvb3IgInJlZiIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO251bGwhPT1lJiZ0aGlzLl9uYW1lUmVmTWFwLnNldChlLHQpO3RoaXMuX2ltYWdlQ2FjaGUucHV0KHQsaSl9ZWxzZSB0aGlzLl9pbWFnZU1hcC5oYXMoZSl8fHRoaXMuX2ltYWdlTWFwLnNldChlLGkpfX1jbGFzcyBMb2NhbEZ1bmN0aW9uQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsaSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsaSl9fWNsYXNzIExvY2FsR1N0YXRlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsaSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxHU3RhdGVDYWNoZS5zZXQgLSBleHBlY3RlZCAibmFtZSIgYXJndW1lbnQuJyk7aWYodCl7aWYodGhpcy5faW1hZ2VDYWNoZS5oYXModCkpcmV0dXJuO3RoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsaSl9fWNsYXNzIExvY2FsVGlsaW5nUGF0dGVybkNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsaSl9fWNsYXNzIFJlZ2lvbmFsSW1hZ2VDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxpKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxpKX19Y2xhc3MgR2xvYmFsSW1hZ2VDYWNoZXtzdGF0aWMgTlVNX1BBR0VTX1RIUkVTSE9MRD0yO3N0YXRpYyBNSU5fSU1BR0VTX1RPX0NBQ0hFPTEwO3N0YXRpYyBNQVhfQllURV9TSVpFPTVlNzsjYj1uZXcgUmVmU2V0O2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVmQ2FjaGU9bmV3IFJlZlNldENhY2hlO3RoaXMuX2ltYWdlQ2FjaGU9bmV3IFJlZlNldENhY2hlfWdldCNEKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0I0YoKXtyZXR1cm4hKHRoaXMuX2ltYWdlQ2FjaGUuc2l6ZTxHbG9iYWxJbWFnZUNhY2hlLk1JTl9JTUFHRVNfVE9fQ0FDSEUpJiYhKHRoaXMuI0Q8R2xvYmFsSW1hZ2VDYWNoZS5NQVhfQllURV9TSVpFKX1zaG91bGRDYWNoZShlLHQpe2xldCBpPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighaSl7aT1uZXcgU2V0O3RoaXMuX3JlZkNhY2hlLnB1dChlLGkpfWkuYWRkKHQpO3JldHVybiEoaS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRCkmJiEoIXRoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpJiZ0aGlzLiNGKX1hZGREZWNvZGVGYWlsZWQoZSl7dGhpcy4jYi5wdXQoZSl9aGFzRGVjb2RlRmFpbGVkKGUpe3JldHVybiB0aGlzLiNiLmhhcyhlKX1hZGRCeXRlU2l6ZShlLHQpe2NvbnN0IGk9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aSYmKGkuYnl0ZVNpemV8fChpLmJ5dGVTaXplPXQpKX1nZXREYXRhKGUsdCl7Y29uc3QgaT10aGlzLl9yZWZDYWNoZS5nZXQoZSk7aWYoIWkpcmV0dXJuIG51bGw7aWYoaS5zaXplPEdsb2JhbEltYWdlQ2FjaGUuTlVNX1BBR0VTX1RIUkVTSE9MRClyZXR1cm4gbnVsbDtjb25zdCBhPXRoaXMuX2ltYWdlQ2FjaGUuZ2V0KGUpO2lmKCFhKXJldHVybiBudWxsO2kuYWRkKHQpO3JldHVybiBhfXNldERhdGEoZSx0KXtpZighdGhpcy5fcmVmQ2FjaGUuaGFzKGUpKXRocm93IG5ldyBFcnJvcignR2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhIC0gZXhwZWN0ZWQgInNob3VsZENhY2hlIiB0byBoYXZlIGJlZW4gY2FsbGVkLicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKGUpfHwodGhpcy4jRj93YXJuKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2lmKCFlKXt0aGlzLiNiLmNsZWFyKCk7dGhpcy5fcmVmQ2FjaGUuY2xlYXIoKX10aGlzLl9pbWFnZUNhY2hlLmNsZWFyKCl9fWNsYXNzIFBERkZ1bmN0aW9uRmFjdG9yeXtjb25zdHJ1Y3Rvcih7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0PSEwfSl7dGhpcy54cmVmPWU7dGhpcy5pc0V2YWxTdXBwb3J0ZWQ9ITEhPT10fWNyZWF0ZShlKXtjb25zdCB0PXRoaXMuZ2V0Q2FjaGVkKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT1QREZGdW5jdGlvbi5wYXJzZSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMuaXNFdmFsU3VwcG9ydGVkLGZuOmUgaW5zdGFuY2VvZiBSZWY/dGhpcy54cmVmLmZldGNoKGUpOmV9KTt0aGlzLl9jYWNoZShlLGkpO3JldHVybiBpfWNyZWF0ZUZyb21BcnJheShlKXtjb25zdCB0PXRoaXMuZ2V0Q2FjaGVkKGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT1QREZGdW5jdGlvbi5wYXJzZUFycmF5KHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5pc0V2YWxTdXBwb3J0ZWQsZm5PYmo6ZSBpbnN0YW5jZW9mIFJlZj90aGlzLnhyZWYuZmV0Y2goZSk6ZX0pO3RoaXMuX2NhY2hlKGUsaSk7cmV0dXJuIGl9Z2V0Q2FjaGVkKGUpe2xldCB0O2UgaW5zdGFuY2VvZiBSZWY/dD1lOmUgaW5zdGFuY2VvZiBEaWN0P3Q9ZS5vYmpJZDplIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHQ9ZS5kaWN0Py5vYmpJZCk7aWYodCl7Y29uc3QgZT10aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuZ2V0QnlSZWYodCk7aWYoZSlyZXR1cm4gZX1yZXR1cm4gbnVsbH1fY2FjaGUoZSx0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ1BERkZ1bmN0aW9uRmFjdG9yeS5fY2FjaGUgLSBleHBlY3RlZCAicGFyc2VkRnVuY3Rpb24iIGFyZ3VtZW50LicpO2xldCBpO2UgaW5zdGFuY2VvZiBSZWY/aT1lOmUgaW5zdGFuY2VvZiBEaWN0P2k9ZS5vYmpJZDplIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGk9ZS5kaWN0Py5vYmpJZCk7aSYmdGhpcy5fbG9jYWxGdW5jdGlvbkNhY2hlLnNldChudWxsLGksdCl9Z2V0IF9sb2NhbEZ1bmN0aW9uQ2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9sb2NhbEZ1bmN0aW9uQ2FjaGUiLG5ldyBMb2NhbEZ1bmN0aW9uQ2FjaGUpfX1mdW5jdGlvbiB0b051bWJlckFycmF5KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2lzTnVtYmVyQXJyYXkoZSxudWxsKT9lOmUubWFwKChlPT4rZSkpOm51bGx9Y2xhc3MgUERGRnVuY3Rpb257c3RhdGljIGdldFNhbXBsZUFycmF5KGUsdCxpLGEpe2xldCByLHMsbj0xO2ZvcihyPTAscz1lLmxlbmd0aDtyPHM7cisrKW4qPWVbcl07bio9dDtjb25zdCBvPW5ldyBBcnJheShuKTtsZXQgZz0wLGM9MDtjb25zdCBoPTEvKDIqKmktMSksbD1hLmdldEJ5dGVzKChuKmkrNykvOCk7bGV0IEM9MDtmb3Iocj0wO3I8bjtyKyspe2Zvcig7ZzxpOyl7Yzw8PTg7Y3w9bFtDKytdO2crPTh9Zy09aTtvW3JdPShjPj5nKSpoO2MmPSgxPDxnKS0xfXJldHVybiBvfXN0YXRpYyBwYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOml9KXtjb25zdCBhPWkuZGljdHx8aTtzd2l0Y2goYS5nZXQoIkZ1bmN0aW9uVHlwZSIpKXtjYXNlIDA6cmV0dXJuIHRoaXMuY29uc3RydWN0U2FtcGxlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmksZGljdDphfSk7Y2FzZSAxOmJyZWFrO2Nhc2UgMjpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RJbnRlcnBvbGF0ZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0OmF9KTtjYXNlIDM6cmV0dXJuIHRoaXMuY29uc3RydWN0U3RpY2hlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6YX0pO2Nhc2UgNDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RQb3N0U2NyaXB0KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aSxkaWN0OmF9KX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZSBvZiBmdW5jdGlvbiIpfXN0YXRpYyBwYXJzZUFycmF5KHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm5PYmo6aX0pe2lmKCFBcnJheS5pc0FycmF5KGkpKXJldHVybiB0aGlzLnBhcnNlKHt4cmVmOmUsaXNFdmFsU3VwcG9ydGVkOnQsZm46aX0pO2NvbnN0IGE9W107Zm9yKGNvbnN0IHIgb2YgaSlhLnB1c2godGhpcy5wYXJzZSh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmUuZmV0Y2hJZlJlZihyKX0pKTtyZXR1cm4gZnVuY3Rpb24oZSx0LGkscil7Zm9yKGxldCBzPTAsbj1hLmxlbmd0aDtzPG47cysrKWFbc10oZSx0LGkscitzKX19c3RhdGljIGNvbnN0cnVjdFNhbXBsZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjppLGRpY3Q6YX0pe2Z1bmN0aW9uIHRvTXVsdGlBcnJheShlKXtjb25zdCB0PWUubGVuZ3RoLGk9W107bGV0IGE9MDtmb3IobGV0IHI9MDtyPHQ7cis9MilpW2ErK109W2Vbcl0sZVtyKzFdXTtyZXR1cm4gaX1mdW5jdGlvbiBpbnRlcnBvbGF0ZShlLHQsaSxhLHIpe3JldHVybiBhKyhyLWEpLyhpLXQpKihlLXQpfWxldCByPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiRG9tYWluIikpLHM9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJSYW5nZSIpKTtpZighcnx8IXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4gb3IgcmFuZ2UiKTtjb25zdCBuPXIubGVuZ3RoLzIsbz1zLmxlbmd0aC8yO3I9dG9NdWx0aUFycmF5KHIpO3M9dG9NdWx0aUFycmF5KHMpO2NvbnN0IGc9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJTaXplIikpLGM9YS5nZXQoIkJpdHNQZXJTYW1wbGUiKSxoPWEuZ2V0KCJPcmRlciIpfHwxOzEhPT1oJiZpbmZvKCJObyBzdXBwb3J0IGZvciBjdWJpYyBzcGxpbmUgaW50ZXJwb2xhdGlvbjogIitoKTtsZXQgbD10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkVuY29kZSIpKTtpZihsKWw9dG9NdWx0aUFycmF5KGwpO2Vsc2V7bD1bXTtmb3IobGV0IGU9MDtlPG47KytlKWwucHVzaChbMCxnW2VdLTFdKX1sZXQgQz10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRlY29kZSIpKTtDPUM/dG9NdWx0aUFycmF5KEMpOnM7Y29uc3QgUT10aGlzLmdldFNhbXBsZUFycmF5KGcsbyxjLGkpO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RTYW1wbGVkRm4oZSx0LGksYSl7Y29uc3QgYz0xPDxuLGg9bmV3IEZsb2F0NjRBcnJheShjKSxFPW5ldyBVaW50MzJBcnJheShjKTtsZXQgdSxkO2ZvcihkPTA7ZDxjO2QrKyloW2RdPTE7bGV0IGY9byxwPTE7Zm9yKHU9MDt1PG47Kyt1KXtjb25zdCBpPXJbdV1bMF0sYT1yW3VdWzFdO2xldCBzPWludGVycG9sYXRlKE1hdGgubWluKE1hdGgubWF4KGVbdCt1XSxpKSxhKSxpLGEsbFt1XVswXSxsW3VdWzFdKTtjb25zdCBuPWdbdV07cz1NYXRoLm1pbihNYXRoLm1heChzLDApLG4tMSk7Y29uc3Qgbz1zPG4tMT9NYXRoLmZsb29yKHMpOnMtMSxDPW8rMS1zLFE9cy1vLG09bypmLHk9bStmO2ZvcihkPTA7ZDxjO2QrKylpZihkJnApe2hbZF0qPVE7RVtkXSs9eX1lbHNle2hbZF0qPUM7RVtkXSs9bX1mKj1uO3A8PD0xfWZvcihkPTA7ZDxvOysrZCl7bGV0IGU9MDtmb3IodT0wO3U8Yzt1KyspZSs9UVtFW3VdK2RdKmhbdV07ZT1pbnRlcnBvbGF0ZShlLDAsMSxDW2RdWzBdLENbZF1bMV0pO2lbYStkXT1NYXRoLm1pbihNYXRoLm1heChlLHNbZF1bMF0pLHNbZF1bMV0pfX19c3RhdGljIGNvbnN0cnVjdEludGVycG9sYXRlZCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGRpY3Q6aX0pe2NvbnN0IGE9dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJDMCIpKXx8WzBdLHI9dG9OdW1iZXJBcnJheShpLmdldEFycmF5KCJDMSIpKXx8WzFdLHM9aS5nZXQoIk4iKSxuPVtdO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0OysrZSluLnB1c2gocltlXS1hW2VdKTtjb25zdCBvPW4ubGVuZ3RoO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWRGbihlLHQsaSxyKXtjb25zdCBnPTE9PT1zP2VbdF06ZVt0XSoqcztmb3IobGV0IGU9MDtlPG87KytlKWlbcitlXT1hW2VdK2cqbltlXX19c3RhdGljIGNvbnN0cnVjdFN0aWNoZWQoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxkaWN0Oml9KXtjb25zdCBhPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiRG9tYWluIikpO2lmKCFhKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluIik7aWYoMSE9PWEubGVuZ3RoLzIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3Qgcj1bXTtmb3IoY29uc3QgYSBvZiBpLmdldCgiRnVuY3Rpb25zIikpci5wdXNoKHRoaXMucGFyc2Uoe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dCxmbjplLmZldGNoSWZSZWYoYSl9KSk7Y29uc3Qgcz10b051bWJlckFycmF5KGkuZ2V0QXJyYXkoIkJvdW5kcyIpKSxuPXRvTnVtYmVyQXJyYXkoaS5nZXRBcnJheSgiRW5jb2RlIikpLG89bmV3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxpLGcpe2NvbnN0IGM9ZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZyb21JUkNsaXAoZSx0LGkpe2U+aT9lPWk6ZTx0JiYoZT10KTtyZXR1cm4gZX0oZVt0XSxhWzBdLGFbMV0pLGg9cy5sZW5ndGg7bGV0IGw7Zm9yKGw9MDtsPGgmJiEoYzxzW2xdKTsrK2wpO2xldCBDPWFbMF07bD4wJiYoQz1zW2wtMV0pO2xldCBRPWFbMV07bDxzLmxlbmd0aCYmKFE9c1tsXSk7Y29uc3QgRT1uWzIqbF0sdT1uWzIqbCsxXTtvWzBdPUM9PT1RP0U6RSsoYy1DKSoodS1FKS8oUS1DKTtyW2xdKG8sMCxpLGcpfX1zdGF0aWMgY29uc3RydWN0UG9zdFNjcmlwdCh7eHJlZjplLGlzRXZhbFN1cHBvcnRlZDp0LGZuOmksZGljdDphfSl7Y29uc3Qgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRvbWFpbiIpKSxzPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyBkb21haW4uIik7aWYoIXMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJObyByYW5nZS4iKTtjb25zdCBuPW5ldyBQb3N0U2NyaXB0TGV4ZXIoaSksbz1uZXcgUG9zdFNjcmlwdFBhcnNlcihuKS5wYXJzZSgpO2lmKHQmJkZlYXR1cmVUZXN0LmlzRXZhbFN1cHBvcnRlZCl7Y29uc3QgZT0obmV3IFBvc3RTY3JpcHRDb21waWxlcikuY29tcGlsZShvLHIscyk7aWYoZSlyZXR1cm4gbmV3IEZ1bmN0aW9uKCJzcmMiLCJzcmNPZmZzZXQiLCJkZXN0IiwiZGVzdE9mZnNldCIsZSl9aW5mbygiVW5hYmxlIHRvIGNvbXBpbGUgUFMgZnVuY3Rpb24iKTtjb25zdCBnPXMubGVuZ3RoPj4xLGM9ci5sZW5ndGg+PjEsaD1uZXcgUG9zdFNjcmlwdEV2YWx1YXRvcihvKSxsPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IEM9ODE5Mjtjb25zdCBRPW5ldyBGbG9hdDMyQXJyYXkoYyk7cmV0dXJuIGZ1bmN0aW9uIGNvbnN0cnVjdFBvc3RTY3JpcHRGbihlLHQsaSxhKXtsZXQgcixuLG89IiI7Y29uc3QgRT1RO2ZvcihyPTA7cjxjO3IrKyl7bj1lW3Qrcl07RVtyXT1uO28rPW4rIl8ifWNvbnN0IHU9bFtvXTtpZih2b2lkIDAhPT11KXtpLnNldCh1LGEpO3JldHVybn1jb25zdCBkPW5ldyBGbG9hdDMyQXJyYXkoZyksZj1oLmV4ZWN1dGUoRSkscD1mLmxlbmd0aC1nO2ZvcihyPTA7cjxnO3IrKyl7bj1mW3Arcl07bGV0IGU9c1syKnJdO2lmKG48ZSluPWU7ZWxzZXtlPXNbMipyKzFdO24+ZSYmKG49ZSl9ZFtyXT1ufWlmKEM+MCl7Qy0tO2xbb109ZH1pLnNldChkLGEpfX19ZnVuY3Rpb24gaXNQREZGdW5jdGlvbihlKXtsZXQgdDtpZihlIGluc3RhbmNlb2YgRGljdCl0PWU7ZWxzZXtpZighKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSlyZXR1cm4hMTt0PWUuZGljdH1yZXR1cm4gdC5oYXMoIkZ1bmN0aW9uVHlwZSIpfWNsYXNzIFBvc3RTY3JpcHRTdGFja3tzdGF0aWMgTUFYX1NUQUNLX1NJWkU9MTAwO2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RhY2s9ZT9BcnJheS5mcm9tKGUpOltdfXB1c2goZSl7aWYodGhpcy5zdGFjay5sZW5ndGg+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7dGhpcy5zdGFjay5wdXNoKGUpfXBvcCgpe2lmKHRoaXMuc3RhY2subGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayB1bmRlcmZsb3cuIik7cmV0dXJuIHRoaXMuc3RhY2sucG9wKCl9Y29weShlKXtpZih0aGlzLnN0YWNrLmxlbmd0aCtlPj1Qb3N0U2NyaXB0U3RhY2suTUFYX1NUQUNLX1NJWkUpdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIG92ZXJmbG93LiIpO2NvbnN0IHQ9dGhpcy5zdGFjaztmb3IobGV0IGk9dC5sZW5ndGgtZSxhPWUtMTthPj0wO2EtLSxpKyspdC5wdXNoKHRbaV0pfWluZGV4KGUpe3RoaXMucHVzaCh0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoLWUtMV0pfXJvbGwoZSx0KXtjb25zdCBpPXRoaXMuc3RhY2ssYT1pLmxlbmd0aC1lLHI9aS5sZW5ndGgtMSxzPWErKHQtTWF0aC5mbG9vcih0L2UpKmUpO2ZvcihsZXQgZT1hLHQ9cjtlPHQ7ZSsrLHQtLSl7Y29uc3QgYT1pW2VdO2lbZV09aVt0XTtpW3RdPWF9Zm9yKGxldCBlPWEsdD1zLTE7ZTx0O2UrKyx0LS0pe2NvbnN0IGE9aVtlXTtpW2VdPWlbdF07aVt0XT1hfWZvcihsZXQgZT1zLHQ9cjtlPHQ7ZSsrLHQtLSl7Y29uc3QgYT1pW2VdO2lbZV09aVt0XTtpW3RdPWF9fX1jbGFzcyBQb3N0U2NyaXB0RXZhbHVhdG9ye2NvbnN0cnVjdG9yKGUpe3RoaXMub3BlcmF0b3JzPWV9ZXhlY3V0ZShlKXtjb25zdCB0PW5ldyBQb3N0U2NyaXB0U3RhY2soZSk7bGV0IGk9MDtjb25zdCBhPXRoaXMub3BlcmF0b3JzLHI9YS5sZW5ndGg7bGV0IHMsbixvO2Zvcig7aTxyOyl7cz1hW2krK107aWYoIm51bWJlciIhPXR5cGVvZiBzKXN3aXRjaChzKXtjYXNlImp6IjpvPXQucG9wKCk7bj10LnBvcCgpO258fChpPW8pO2JyZWFrO2Nhc2UiaiI6bj10LnBvcCgpO2k9bjticmVhaztjYXNlImFicyI6bj10LnBvcCgpO3QucHVzaChNYXRoLmFicyhuKSk7YnJlYWs7Y2FzZSJhZGQiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4rbyk7YnJlYWs7Y2FzZSJhbmQiOm89dC5wb3AoKTtuPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgbiYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2gobiYmbyk6dC5wdXNoKG4mbyk7YnJlYWs7Y2FzZSJhdGFuIjpvPXQucG9wKCk7bj10LnBvcCgpO249TWF0aC5hdGFuMihuLG8pL01hdGguUEkqMTgwO248MCYmKG4rPTM2MCk7dC5wdXNoKG4pO2JyZWFrO2Nhc2UiYml0c2hpZnQiOm89dC5wb3AoKTtuPXQucG9wKCk7bj4wP3QucHVzaChuPDxvKTp0LnB1c2gobj4+byk7YnJlYWs7Y2FzZSJjZWlsaW5nIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguY2VpbChuKSk7YnJlYWs7Y2FzZSJjb3B5IjpuPXQucG9wKCk7dC5jb3B5KG4pO2JyZWFrO2Nhc2UiY29zIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguY29zKG4lMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJjdmkiOm49MHx0LnBvcCgpO3QucHVzaChuKTticmVhaztjYXNlImN2ciI6YnJlYWs7Y2FzZSJkaXYiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4vbyk7YnJlYWs7Y2FzZSJkdXAiOnQuY29weSgxKTticmVhaztjYXNlImVxIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuPT09byk7YnJlYWs7Y2FzZSJleGNoIjp0LnJvbGwoMiwxKTticmVhaztjYXNlImV4cCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobioqbyk7YnJlYWs7Y2FzZSJmYWxzZSI6dC5wdXNoKCExKTticmVhaztjYXNlImZsb29yIjpuPXQucG9wKCk7dC5wdXNoKE1hdGguZmxvb3IobikpO2JyZWFrO2Nhc2UiZ2UiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4+PW8pO2JyZWFrO2Nhc2UiZ3QiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5wdXNoKG4+byk7YnJlYWs7Y2FzZSJpZGl2IjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuL298MCk7YnJlYWs7Y2FzZSJpbmRleCI6bj10LnBvcCgpO3QuaW5kZXgobik7YnJlYWs7Y2FzZSJsZSI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobjw9byk7YnJlYWs7Y2FzZSJsbiI6bj10LnBvcCgpO3QucHVzaChNYXRoLmxvZyhuKSk7YnJlYWs7Y2FzZSJsb2ciOm49dC5wb3AoKTt0LnB1c2goTWF0aC5sb2cxMChuKSk7YnJlYWs7Y2FzZSJsdCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobjxvKTticmVhaztjYXNlIm1vZCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobiVvKTticmVhaztjYXNlIm11bCI6bz10LnBvcCgpO249dC5wb3AoKTt0LnB1c2gobipvKTticmVhaztjYXNlIm5lIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuIT09byk7YnJlYWs7Y2FzZSJuZWciOm49dC5wb3AoKTt0LnB1c2goLW4pO2JyZWFrO2Nhc2Uibm90IjpuPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2Ygbj90LnB1c2goIW4pOnQucHVzaCh+bik7YnJlYWs7Y2FzZSJvciI6bz10LnBvcCgpO249dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBuJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChufHxvKTp0LnB1c2gobnxvKTticmVhaztjYXNlInBvcCI6dC5wb3AoKTticmVhaztjYXNlInJvbGwiOm89dC5wb3AoKTtuPXQucG9wKCk7dC5yb2xsKG4sbyk7YnJlYWs7Y2FzZSJyb3VuZCI6bj10LnBvcCgpO3QucHVzaChNYXRoLnJvdW5kKG4pKTticmVhaztjYXNlInNpbiI6bj10LnBvcCgpO3QucHVzaChNYXRoLnNpbihuJTM2MC8xODAqTWF0aC5QSSkpO2JyZWFrO2Nhc2Uic3FydCI6bj10LnBvcCgpO3QucHVzaChNYXRoLnNxcnQobikpO2JyZWFrO2Nhc2Uic3ViIjpvPXQucG9wKCk7bj10LnBvcCgpO3QucHVzaChuLW8pO2JyZWFrO2Nhc2UidHJ1ZSI6dC5wdXNoKCEwKTticmVhaztjYXNlInRydW5jYXRlIjpuPXQucG9wKCk7bj1uPDA/TWF0aC5jZWlsKG4pOk1hdGguZmxvb3Iobik7dC5wdXNoKG4pO2JyZWFrO2Nhc2UieG9yIjpvPXQucG9wKCk7bj10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIG4mJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKG4hPT1vKTp0LnB1c2gobl5vKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBvcGVyYXRvciAke3N9YCl9ZWxzZSB0LnB1c2gocyl9cmV0dXJuIHQuc3RhY2t9fWNsYXNzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy50eXBlPWV9dmlzaXQoZSl7dW5yZWFjaGFibGUoImFic3RyYWN0IG1ldGhvZCIpfX1jbGFzcyBBc3RBcmd1bWVudCBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJhcmdzIik7dGhpcy5pbmRleD1lO3RoaXMubWluPXQ7dGhpcy5tYXg9aX12aXNpdChlKXtlLnZpc2l0QXJndW1lbnQodGhpcyl9fWNsYXNzIEFzdExpdGVyYWwgZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJsaXRlcmFsIik7dGhpcy5udW1iZXI9ZTt0aGlzLm1pbj1lO3RoaXMubWF4PWV9dmlzaXQoZSl7ZS52aXNpdExpdGVyYWwodGhpcyl9fWNsYXNzIEFzdEJpbmFyeU9wZXJhdGlvbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0LGksYSxyKXtzdXBlcigiYmluYXJ5Iik7dGhpcy5vcD1lO3RoaXMuYXJnMT10O3RoaXMuYXJnMj1pO3RoaXMubWluPWE7dGhpcy5tYXg9cn12aXNpdChlKXtlLnZpc2l0QmluYXJ5T3BlcmF0aW9uKHRoaXMpfX1jbGFzcyBBc3RNaW4gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoIm1heCIpO3RoaXMuYXJnPWU7dGhpcy5taW49ZS5taW47dGhpcy5tYXg9dH12aXNpdChlKXtlLnZpc2l0TWluKHRoaXMpfX1jbGFzcyBBc3RWYXJpYWJsZSBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKCJ2YXIiKTt0aGlzLmluZGV4PWU7dGhpcy5taW49dDt0aGlzLm1heD1pfXZpc2l0KGUpe2UudmlzaXRWYXJpYWJsZSh0aGlzKX19Y2xhc3MgQXN0VmFyaWFibGVEZWZpbml0aW9uIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJkZWZpbml0aW9uIik7dGhpcy52YXJpYWJsZT1lO3RoaXMuYXJnPXR9dmlzaXQoZSl7ZS52aXNpdFZhcmlhYmxlRGVmaW5pdGlvbih0aGlzKX19Y2xhc3MgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9ye2NvbnN0cnVjdG9yKCl7dGhpcy5wYXJ0cz1bXX12aXNpdEFyZ3VtZW50KGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5tYXgoIixlLm1pbiwiLCBNYXRoLm1pbigiLGUubWF4LCIsIHNyY1tzcmNPZmZzZXQgKyAiLGUuaW5kZXgsIl0pKSIpfXZpc2l0VmFyaWFibGUoZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2IixlLmluZGV4KX12aXNpdExpdGVyYWwoZSl7dGhpcy5wYXJ0cy5wdXNoKGUubnVtYmVyKX12aXNpdEJpbmFyeU9wZXJhdGlvbihlKXt0aGlzLnBhcnRzLnB1c2goIigiKTtlLmFyZzEudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIgIixlLm9wLCIgIik7ZS5hcmcyLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiKSIpfXZpc2l0VmFyaWFibGVEZWZpbml0aW9uKGUpe3RoaXMucGFydHMucHVzaCgidmFyICIpO2UudmFyaWFibGUudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIgPSAiKTtlLmFyZy52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIjsiKX12aXNpdE1pbihlKXt0aGlzLnBhcnRzLnB1c2goIk1hdGgubWluKCIpO2UuYXJnLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiLCAiLGUubWF4LCIpIil9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wYXJ0cy5qb2luKCIiKX19ZnVuY3Rpb24gYnVpbGRBZGRPcGVyYXRpb24oZSx0KXtyZXR1cm4ibGl0ZXJhbCI9PT10LnR5cGUmJjA9PT10Lm51bWJlcj9lOiJsaXRlcmFsIj09PWUudHlwZSYmMD09PWUubnVtYmVyP3Q6ImxpdGVyYWwiPT09dC50eXBlJiYibGl0ZXJhbCI9PT1lLnR5cGU/bmV3IEFzdExpdGVyYWwoZS5udW1iZXIrdC5udW1iZXIpOm5ldyBBc3RCaW5hcnlPcGVyYXRpb24oIisiLGUsdCxlLm1pbit0Lm1pbixlLm1heCt0Lm1heCl9ZnVuY3Rpb24gYnVpbGRNdWxPcGVyYXRpb24oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gbmV3IEFzdExpdGVyYWwoMCk7aWYoMT09PXQubnVtYmVyKXJldHVybiBlO2lmKCJsaXRlcmFsIj09PWUudHlwZSlyZXR1cm4gbmV3IEFzdExpdGVyYWwoZS5udW1iZXIqdC5udW1iZXIpfWlmKCJsaXRlcmFsIj09PWUudHlwZSl7aWYoMD09PWUubnVtYmVyKXJldHVybiBuZXcgQXN0TGl0ZXJhbCgwKTtpZigxPT09ZS5udW1iZXIpcmV0dXJuIHR9Y29uc3QgaT1NYXRoLm1pbihlLm1pbip0Lm1pbixlLm1pbip0Lm1heCxlLm1heCp0Lm1pbixlLm1heCp0Lm1heCksYT1NYXRoLm1heChlLm1pbip0Lm1pbixlLm1pbip0Lm1heCxlLm1heCp0Lm1pbixlLm1heCp0Lm1heCk7cmV0dXJuIG5ldyBBc3RCaW5hcnlPcGVyYXRpb24oIioiLGUsdCxpLGEpfWZ1bmN0aW9uIGJ1aWxkU3ViT3BlcmF0aW9uKGUsdCl7aWYoImxpdGVyYWwiPT09dC50eXBlKXtpZigwPT09dC5udW1iZXIpcmV0dXJuIGU7aWYoImxpdGVyYWwiPT09ZS50eXBlKXJldHVybiBuZXcgQXN0TGl0ZXJhbChlLm51bWJlci10Lm51bWJlcil9cmV0dXJuImJpbmFyeSI9PT10LnR5cGUmJiItIj09PXQub3AmJiJsaXRlcmFsIj09PWUudHlwZSYmMT09PWUubnVtYmVyJiYibGl0ZXJhbCI9PT10LmFyZzEudHlwZSYmMT09PXQuYXJnMS5udW1iZXI/dC5hcmcyOm5ldyBBc3RCaW5hcnlPcGVyYXRpb24oIi0iLGUsdCxlLm1pbi10Lm1heCxlLm1heC10Lm1pbil9ZnVuY3Rpb24gYnVpbGRNaW5PcGVyYXRpb24oZSx0KXtyZXR1cm4gZS5taW4+PXQ/bmV3IEFzdExpdGVyYWwodCk6ZS5tYXg8PXQ/ZTpuZXcgQXN0TWluKGUsdCl9Y2xhc3MgUG9zdFNjcmlwdENvbXBpbGVye2NvbXBpbGUoZSx0LGkpe2NvbnN0IGE9W10scj1bXSxzPXQubGVuZ3RoPj4xLG49aS5sZW5ndGg+PjE7bGV0IG8sZyxjLGgsbCxDLFEsRSx1PTA7Zm9yKGxldCBlPTA7ZTxzO2UrKylhLnB1c2gobmV3IEFzdEFyZ3VtZW50KGUsdFsyKmVdLHRbMiplKzFdKSk7Zm9yKGxldCB0PTAsaT1lLmxlbmd0aDt0PGk7dCsrKXtFPWVbdF07aWYoIm51bWJlciIhPXR5cGVvZiBFKXN3aXRjaChFKXtjYXNlImFkZCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPWEucG9wKCk7Yz1hLnBvcCgpO2EucHVzaChidWlsZEFkZE9wZXJhdGlvbihjLGgpKTticmVhaztjYXNlImN2ciI6aWYoYS5sZW5ndGg8MSlyZXR1cm4gbnVsbDticmVhaztjYXNlIm11bCI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPWEucG9wKCk7Yz1hLnBvcCgpO2EucHVzaChidWlsZE11bE9wZXJhdGlvbihjLGgpKTticmVhaztjYXNlInN1YiI6aWYoYS5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPWEucG9wKCk7Yz1hLnBvcCgpO2EucHVzaChidWlsZFN1Yk9wZXJhdGlvbihjLGgpKTticmVhaztjYXNlImV4Y2giOmlmKGEubGVuZ3RoPDIpcmV0dXJuIG51bGw7bD1hLnBvcCgpO0M9YS5wb3AoKTthLnB1c2gobCxDKTticmVhaztjYXNlInBvcCI6aWYoYS5sZW5ndGg8MSlyZXR1cm4gbnVsbDthLnBvcCgpO2JyZWFrO2Nhc2UiaW5kZXgiOmlmKGEubGVuZ3RoPDEpcmV0dXJuIG51bGw7Yz1hLnBvcCgpO2lmKCJsaXRlcmFsIiE9PWMudHlwZSlyZXR1cm4gbnVsbDtvPWMubnVtYmVyO2lmKG88MHx8IU51bWJlci5pc0ludGVnZXIobyl8fGEubGVuZ3RoPG8pcmV0dXJuIG51bGw7bD1hW2EubGVuZ3RoLW8tMV07aWYoImxpdGVyYWwiPT09bC50eXBlfHwidmFyIj09PWwudHlwZSl7YS5wdXNoKGwpO2JyZWFrfVE9bmV3IEFzdFZhcmlhYmxlKHUrKyxsLm1pbixsLm1heCk7YVthLmxlbmd0aC1vLTFdPVE7YS5wdXNoKFEpO3IucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKFEsbCkpO2JyZWFrO2Nhc2UiZHVwIjppZihhLmxlbmd0aDwxKXJldHVybiBudWxsO2lmKCJudW1iZXIiPT10eXBlb2YgZVt0KzFdJiYiZ3QiPT09ZVt0KzJdJiZlW3QrM109PT10KzcmJiJqeiI9PT1lW3QrNF0mJiJwb3AiPT09ZVt0KzVdJiZlW3QrNl09PT1lW3QrMV0pe2M9YS5wb3AoKTthLnB1c2goYnVpbGRNaW5PcGVyYXRpb24oYyxlW3QrMV0pKTt0Kz02O2JyZWFrfWw9YS5hdCgtMSk7aWYoImxpdGVyYWwiPT09bC50eXBlfHwidmFyIj09PWwudHlwZSl7YS5wdXNoKGwpO2JyZWFrfVE9bmV3IEFzdFZhcmlhYmxlKHUrKyxsLm1pbixsLm1heCk7YVthLmxlbmd0aC0xXT1RO2EucHVzaChRKTtyLnB1c2gobmV3IEFzdFZhcmlhYmxlRGVmaW5pdGlvbihRLGwpKTticmVhaztjYXNlInJvbGwiOmlmKGEubGVuZ3RoPDIpcmV0dXJuIG51bGw7aD1hLnBvcCgpO2M9YS5wb3AoKTtpZigibGl0ZXJhbCIhPT1oLnR5cGV8fCJsaXRlcmFsIiE9PWMudHlwZSlyZXR1cm4gbnVsbDtnPWgubnVtYmVyO289Yy5udW1iZXI7aWYobzw9MHx8IU51bWJlci5pc0ludGVnZXIobyl8fCFOdW1iZXIuaXNJbnRlZ2VyKGcpfHxhLmxlbmd0aDxvKXJldHVybiBudWxsO2c9KGclbytvKSVvO2lmKDA9PT1nKWJyZWFrO2EucHVzaCguLi5hLnNwbGljZShhLmxlbmd0aC1vLG8tZykpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIG51bGx9ZWxzZSBhLnB1c2gobmV3IEFzdExpdGVyYWwoRSkpfWlmKGEubGVuZ3RoIT09bilyZXR1cm4gbnVsbDtjb25zdCBkPVtdO2Zvcihjb25zdCBlIG9mIHIpe2NvbnN0IHQ9bmV3IEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcjtlLnZpc2l0KHQpO2QucHVzaCh0LnRvU3RyaW5nKCkpfWZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1hW2VdLHI9bmV3IEV4cHJlc3Npb25CdWlsZGVyVmlzaXRvcjt0LnZpc2l0KHIpO2NvbnN0IHM9aVsyKmVdLG49aVsyKmUrMV0sbz1bci50b1N0cmluZygpXTtpZihzPnQubWluKXtvLnVuc2hpZnQoIk1hdGgubWF4KCIscywiLCAiKTtvLnB1c2goIikiKX1pZihuPHQubWF4KXtvLnVuc2hpZnQoIk1hdGgubWluKCIsbiwiLCAiKTtvLnB1c2goIikiKX1vLnVuc2hpZnQoImRlc3RbZGVzdE9mZnNldCArICIsZSwiXSA9ICIpO28ucHVzaCgiOyIpO2QucHVzaChvLmpvaW4oIiIpKX1yZXR1cm4gZC5qb2luKCJcbiIpfX1jb25zdCBocj1bIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIlMiLCJCIiwiUyIsIldTIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQiIsIkIiLCJTIiwiV1MiLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkVTIiwiQ1MiLCJFUyIsIkNTIiwiQ1MiLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkNTIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJDUyIsIk9OIiwiRVQiLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJPTiIsIk9OIiwiQk4iLCJPTiIsIk9OIiwiRVQiLCJFVCIsIkVOIiwiRU4iLCJPTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJFTiIsIkwiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIl0sbHI9WyJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJPTiIsIk9OIiwiQUwiLCJFVCIsIkVUIiwiQUwiLCJDUyIsIkFMIiwiT04iLCJPTiIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFMIiwiQUwiLCIiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkVUIiwiQU4iLCJBTiIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIl07ZnVuY3Rpb24gaXNPZGQoZSl7cmV0dXJuIDAhPSgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4gMD09KDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGkpe2xldCBhLHI7Zm9yKGE9dCxyPWUubGVuZ3RoO2E8cjsrK2EpaWYoZVthXSE9PWkpcmV0dXJuIGE7cmV0dXJuIGF9ZnVuY3Rpb24gc2V0VmFsdWVzKGUsdCxpLGEpe2ZvcihsZXQgcj10O3I8aTsrK3IpZVtyXT1hfWZ1bmN0aW9uIHJldmVyc2VWYWx1ZXMoZSx0LGkpe2ZvcihsZXQgYT10LHI9aS0xO2E8cjsrK2EsLS1yKXtjb25zdCB0PWVbYV07ZVthXT1lW3JdO2Vbcl09dH19ZnVuY3Rpb24gY3JlYXRlQmlkaVRleHQoZSx0LGk9ITEpe2xldCBhPSJsdHIiO2k/YT0idHRiIjp0fHwoYT0icnRsIik7cmV0dXJue3N0cjplLGRpcjphfX1jb25zdCBDcj1bXSxRcj1bXTtmdW5jdGlvbiBiaWRpKGUsdD0tMSxpPSExKXtsZXQgYT0hMDtjb25zdCByPWUubGVuZ3RoO2lmKDA9PT1yfHxpKXJldHVybiBjcmVhdGVCaWRpVGV4dChlLGEsaSk7Q3IubGVuZ3RoPXI7UXIubGVuZ3RoPXI7bGV0IHMsbixvPTA7Zm9yKHM9MDtzPHI7KytzKXtDcltzXT1lLmNoYXJBdChzKTtjb25zdCB0PWUuY2hhckNvZGVBdChzKTtsZXQgaT0iTCI7aWYodDw9MjU1KWk9aHJbdF07ZWxzZSBpZigxNDI0PD10JiZ0PD0xNTI0KWk9IlIiO2Vsc2UgaWYoMTUzNjw9dCYmdDw9MTc5MSl7aT1sclsyNTUmdF07aXx8d2FybigiQmlkaTogaW52YWxpZCBVbmljb2RlIGNoYXJhY3RlciAiK3QudG9TdHJpbmcoMTYpKX1lbHNlKDE3OTI8PXQmJnQ8PTIyMjB8fDY0MzM2PD10JiZ0PD02NTAyM3x8NjUxMzY8PXQmJnQ8PTY1Mjc5KSYmKGk9IkFMIik7IlIiIT09aSYmIkFMIiE9PWkmJiJBTiIhPT1pfHxvKys7UXJbc109aX1pZigwPT09byl7YT0hMDtyZXR1cm4gY3JlYXRlQmlkaVRleHQoZSxhKX1pZigtMT09PXQpaWYoby9yPC4zJiZyPjQpe2E9ITA7dD0wfWVsc2V7YT0hMTt0PTF9Y29uc3QgZz1bXTtmb3Iocz0wO3M8cjsrK3MpZ1tzXT10O2NvbnN0IGM9aXNPZGQodCk/IlIiOiJMIixoPWMsbD1oO2xldCBDLFE9aDtmb3Iocz0wO3M8cjsrK3MpIk5TTSI9PT1RcltzXT9RcltzXT1ROlE9UXJbc107UT1oO2ZvcihzPTA7czxyOysrcyl7Qz1RcltzXTsiRU4iPT09Qz9RcltzXT0iQUwiPT09UT8iQU4iOiJFTiI6IlIiIT09QyYmIkwiIT09QyYmIkFMIiE9PUN8fChRPUMpfWZvcihzPTA7czxyOysrcyl7Qz1RcltzXTsiQUwiPT09QyYmKFFyW3NdPSJSIil9Zm9yKHM9MTtzPHItMTsrK3MpeyJFUyI9PT1RcltzXSYmIkVOIj09PVFyW3MtMV0mJiJFTiI9PT1RcltzKzFdJiYoUXJbc109IkVOIik7IkNTIiE9PVFyW3NdfHwiRU4iIT09UXJbcy0xXSYmIkFOIiE9PVFyW3MtMV18fFFyW3MrMV0hPT1RcltzLTFdfHwoUXJbc109UXJbcy0xXSl9Zm9yKHM9MDtzPHI7KytzKWlmKCJFTiI9PT1RcltzXSl7Zm9yKGxldCBlPXMtMTtlPj0wJiYiRVQiPT09UXJbZV07LS1lKVFyW2VdPSJFTiI7Zm9yKGxldCBlPXMrMTtlPHImJiJFVCI9PT1RcltlXTsrK2UpUXJbZV09IkVOIn1mb3Iocz0wO3M8cjsrK3Mpe0M9UXJbc107IldTIiE9PUMmJiJFUyIhPT1DJiYiRVQiIT09QyYmIkNTIiE9PUN8fChRcltzXT0iT04iKX1RPWg7Zm9yKHM9MDtzPHI7KytzKXtDPVFyW3NdOyJFTiI9PT1DP1FyW3NdPSJMIj09PVE/IkwiOiJFTiI6IlIiIT09QyYmIkwiIT09Q3x8KFE9Qyl9Zm9yKHM9MDtzPHI7KytzKWlmKCJPTiI9PT1RcltzXSl7Y29uc3QgZT1maW5kVW5lcXVhbChRcixzKzEsIk9OIik7bGV0IHQ9aDtzPjAmJih0PVFyW3MtMV0pO2xldCBpPWw7ZSsxPHImJihpPVFyW2UrMV0pOyJMIiE9PXQmJih0PSJSIik7IkwiIT09aSYmKGk9IlIiKTt0PT09aSYmc2V0VmFsdWVzKFFyLHMsZSx0KTtzPWUtMX1mb3Iocz0wO3M8cjsrK3MpIk9OIj09PVFyW3NdJiYoUXJbc109Yyk7Zm9yKHM9MDtzPHI7KytzKXtDPVFyW3NdO2lzRXZlbihnW3NdKT8iUiI9PT1DP2dbc10rPTE6IkFOIiE9PUMmJiJFTiIhPT1DfHwoZ1tzXSs9Mik6IkwiIT09QyYmIkFOIiE9PUMmJiJFTiIhPT1DfHwoZ1tzXSs9MSl9bGV0IEUsdT0tMSxkPTk5O2ZvcihzPTAsbj1nLmxlbmd0aDtzPG47KytzKXtFPWdbc107dTxFJiYodT1FKTtkPkUmJmlzT2RkKEUpJiYoZD1FKX1mb3IoRT11O0U+PWQ7LS1FKXtsZXQgZT0tMTtmb3Iocz0wLG49Zy5sZW5ndGg7czxuOysrcylpZihnW3NdPEUpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMoQ3IsZSxzKTtlPS0xfX1lbHNlIGU8MCYmKGU9cyk7ZT49MCYmcmV2ZXJzZVZhbHVlcyhDcixlLGcubGVuZ3RoKX1mb3Iocz0wLG49Q3IubGVuZ3RoO3M8bjsrK3Mpe2NvbnN0IGU9Q3Jbc107IjwiIT09ZSYmIj4iIT09ZXx8KENyW3NdPSIiKX1yZXR1cm4gY3JlYXRlQmlkaVRleHQoQ3Iuam9pbigiIiksYSl9Y29uc3QgRXI9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIn0sdXI9e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LGRyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6Im5vcm1hbCJ9LGZyPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6ImJvbGQifSxwcj1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJMaW51eCBMaWJlcnRpbmUgTyIsIkxpYmVydGludXMgU2VyaWYiLCJEZWphVnUgU2VyaWYiLCJCaXRzdHJlYW0gVmVyYSBTZXJpZiIsIlVidW50dSJdLHN0eWxlOkVyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUJvbGQiLHthbGlhczoiVGltZXMtUm9tYW4iLHN0eWxlOnVyLHVsdGltYXRlOiJzZXJpZiJ9XSxbIlRpbWVzLUl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6ZHIsdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZEl0YWxpYyIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6ZnIsdWx0aW1hdGU6InNlcmlmIn1dLFsiSGVsdmV0aWNhIix7bG9jYWw6WyJIZWx2ZXRpY2EiLCJIZWx2ZXRpY2EgTmV1ZSIsIkFyaWFsIiwiQXJpYWwgTm92YSIsIkxpYmVyYXRpb24gU2FucyIsIkFyaW1vIiwiTmltYnVzIFNhbnMiLCJOaW1idXMgU2FucyBMIiwiQTAzMCIsIlRlWCBHeXJlIEhlcm9zIiwiRnJlZVNhbnMiLCJEZWphVnUgU2FucyIsIkFsYmFueSIsIkJpdHN0cmVhbSBWZXJhIFNhbnMiLCJBcmlhbCBVbmljb2RlIE1TIiwiTWljcm9zb2Z0IFNhbnMgU2VyaWYiLCJBcHBsZSBTeW1ib2xzIiwiQ2FudGFyZWxsIl0scGF0aDoiTGliZXJhdGlvblNhbnMtUmVndWxhci50dGYiLHN0eWxlOkVyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGQiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiIsc3R5bGU6dXIsdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtT2JsaXF1ZSIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiLHN0eWxlOmRyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYiLHN0eWxlOmZyLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiQ291cmllciIse2xvY2FsOlsiQ291cmllciIsIkNvdXJpZXIgTmV3IiwiTGliZXJhdGlvbiBNb25vIiwiTmltYnVzIE1vbm8iLCJOaW1idXMgTW9ubyBMIiwiQ291c2luZSIsIkN1bWJlcmxhbmQiLCJUZVggR3lyZSBDdXJzb3IiLCJGcmVlTW9ubyIsIkxpbnV4IExpYmVydGluZSBNb25vIE8iLCJMaWJlcnRpbnVzIE1vbm8iXSxzdHlsZTpFcix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkIix7YWxpYXM6IkNvdXJpZXIiLHN0eWxlOnVyLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLU9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6ZHIsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItQm9sZE9ibGlxdWUiLHthbGlhczoiQ291cmllciIsc3R5bGU6ZnIsdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkFyaWFsQmxhY2siLHtsb2NhbDpbIkFyaWFsIEJsYWNrIl0sc3R5bGU6e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiOTAwIn0sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxCbGFjay1Cb2xkIix7YWxpYXM6IkFyaWFsQmxhY2sifV0sWyJBcmlhbEJsYWNrLUl0YWxpYyIse2FsaWFzOiJBcmlhbEJsYWNrIixzdHlsZTp7c3R5bGU6Iml0YWxpYyIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQXJpYWxCbGFjay1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2stSXRhbGljIn1dLFsiQXJpYWxOYXJyb3ciLHtsb2NhbDpbIkFyaWFsIE5hcnJvdyIsIkxpYmVyYXRpb24gU2FucyBOYXJyb3ciLCJIZWx2ZXRpY2EgQ29uZGVuc2VkIiwiTmltYnVzIFNhbnMgTmFycm93IiwiVGVYIEd5cmUgSGVyb3MgQ24iXSxzdHlsZTpFcixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQXJpYWxOYXJyb3ctQm9sZCIse2FsaWFzOiJBcmlhbE5hcnJvdyIsc3R5bGU6dXIsZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQXJpYWxOYXJyb3ctSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpkcixmYWxsYmFjazoiSGVsdmV0aWNhLU9ibGlxdWUifV0sWyJBcmlhbE5hcnJvdy1Cb2xkSXRhbGljIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTpmcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiQ2FsaWJyaSIse2xvY2FsOlsiQ2FsaWJyaSIsIkNhcmxpdG8iXSxzdHlsZTpFcixmYWxsYmFjazoiSGVsdmV0aWNhIn1dLFsiQ2FsaWJyaS1Cb2xkIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOnVyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZCJ9XSxbIkNhbGlicmktSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmRyLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkNhbGlicmktQm9sZEl0YWxpYyIse2FsaWFzOiJDYWxpYnJpIixzdHlsZTpmcixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIn1dLFsiV2luZ2RpbmdzIix7bG9jYWw6WyJXaW5nZGluZ3MiLCJVUlcgRGluZ2JhdHMiXSxzdHlsZTpFcn1dLFsiV2luZ2RpbmdzLVJlZ3VsYXIiLHthbGlhczoiV2luZ2RpbmdzIn1dLFsiV2luZ2RpbmdzLUJvbGQiLHthbGlhczoiV2luZ2RpbmdzIn1dXSksbXI9bmV3IE1hcChbWyJBcmlhbC1CbGFjayIsIkFyaWFsQmxhY2siXV0pO2Z1bmN0aW9uIGdldEZhbWlseU5hbWUoZSl7Y29uc3QgdD1uZXcgU2V0KFsidGhpbiIsImV4dHJhbGlnaHQiLCJ1bHRyYWxpZ2h0IiwiZGVtaWxpZ2h0Iiwic2VtaWxpZ2h0IiwibGlnaHQiLCJib29rIiwicmVndWxhciIsIm5vcm1hbCIsIm1lZGl1bSIsImRlbWlib2xkIiwic2VtaWJvbGQiLCJib2xkIiwiZXh0cmFib2xkIiwidWx0cmFib2xkIiwiYmxhY2siLCJoZWF2eSIsImV4dHJhYmxhY2siLCJ1bHRyYWJsYWNrIiwicm9tYW4iLCJpdGFsaWMiLCJvYmxpcXVlIiwidWx0cmFjb25kZW5zZWQiLCJleHRyYWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWljb25kZW5zZWQiLCJub3JtYWwiLCJzZW1pZXhwYW5kZWQiLCJleHBhbmRlZCIsImV4dHJhZXhwYW5kZWQiLCJ1bHRyYWV4cGFuZGVkIiwiYm9sZGl0YWxpYyJdKTtyZXR1cm4gZS5zcGxpdCgvWy0gLCtdKy9nKS5maWx0ZXIoKGU9PiF0LmhhcyhlLnRvTG93ZXJDYXNlKCkpKSkuam9pbigiICIpfWZ1bmN0aW9uIGdlbmVyYXRlRm9udCh7YWxpYXM6ZSxsb2NhbDp0LHBhdGg6aSxmYWxsYmFjazphLHN0eWxlOnIsdWx0aW1hdGU6c30sbixvLGc9ITAsYz0hMCxoPSIiKXtjb25zdCBsPXtzdHlsZTpudWxsLHVsdGltYXRlOm51bGx9O2lmKHQpe2NvbnN0IGU9aD9gICR7aH1gOiIiO2Zvcihjb25zdCBpIG9mIHQpbi5wdXNoKGBsb2NhbCgke2l9JHtlfSlgKX1pZihlKXtjb25zdCB0PXByLmdldChlKSxzPWh8fGZ1bmN0aW9uIGdldFN0eWxlVG9BcHBlbmQoZSl7c3dpdGNoKGUpe2Nhc2UgdXI6cmV0dXJuIkJvbGQiO2Nhc2UgZHI6cmV0dXJuIkl0YWxpYyI7Y2FzZSBmcjpyZXR1cm4iQm9sZCBJdGFsaWMiO2RlZmF1bHQ6aWYoImJvbGQiPT09ZT8ud2VpZ2h0KXJldHVybiJCb2xkIjtpZigiaXRhbGljIj09PWU/LnN0eWxlKXJldHVybiJJdGFsaWMifXJldHVybiIifShyKTtPYmplY3QuYXNzaWduKGwsZ2VuZXJhdGVGb250KHQsbixvLGcmJiFhLGMmJiFpLHMpKX1yJiYobC5zdHlsZT1yKTtzJiYobC51bHRpbWF0ZT1zKTtpZihnJiZhKXtjb25zdCBlPXByLmdldChhKSx7dWx0aW1hdGU6dH09Z2VuZXJhdGVGb250KGUsbixvLGcsYyYmIWksaCk7bC51bHRpbWF0ZXx8PXR9YyYmaSYmbyYmbi5wdXNoKGB1cmwoJHtvfSR7aX0pYCk7cmV0dXJuIGx9ZnVuY3Rpb24gZ2V0Rm9udFN1YnN0aXR1dGlvbihlLHQsaSxhLHIscyl7aWYoYS5zdGFydHNXaXRoKCJJbnZhbGlkUERGanNGb250XyIpKXJldHVybiBudWxsOyJUcnVlVHlwZSIhPT1zJiYiVHlwZTEiIT09c3x8IS9eW0EtWl17Nn1cKy8udGVzdChhKXx8KGE9YS5zbGljZSg3KSk7Y29uc3Qgbj1hPW5vcm1hbGl6ZUZvbnROYW1lKGEpO2xldCBvPWUuZ2V0KG4pO2lmKG8pcmV0dXJuIG87bGV0IGc9cHIuZ2V0KGEpO2lmKCFnKWZvcihjb25zdFtlLHRdb2YgbXIpaWYoYS5zdGFydHNXaXRoKGUpKXthPWAke3R9JHthLnN1YnN0cmluZyhlLmxlbmd0aCl9YDtnPXByLmdldChhKTticmVha31sZXQgYz0hMTtpZighZyl7Zz1wci5nZXQocik7Yz0hMH1jb25zdCBoPWAke3QuZ2V0RG9jSWQoKX1fcyR7dC5jcmVhdGVGb250SWQoKX1gO2lmKCFnKXtpZighdmFsaWRhdGVGb250TmFtZShhKSl7d2FybihgQ2Fubm90IHN1YnN0aXR1dGUgdGhlIGZvbnQgYmVjYXVzZSBvZiBpdHMgbmFtZTogJHthfWApO2Uuc2V0KG4sbnVsbCk7cmV0dXJuIG51bGx9Y29uc3QgdD0vYm9sZC9naS50ZXN0KGEpLGk9L29ibGlxdWV8aXRhbGljL2dpLnRlc3QoYSkscj10JiZpJiZmcnx8dCYmdXJ8fGkmJmRyfHxFcjtvPXtjc3M6YCIke2dldEZhbWlseU5hbWUoYSl9Iiwke2h9YCxndWVzc0ZhbGxiYWNrOiEwLGxvYWRlZE5hbWU6aCxiYXNlRm9udE5hbWU6YSxzcmM6YGxvY2FsKCR7YX0pYCxzdHlsZTpyfTtlLnNldChuLG8pO3JldHVybiBvfWNvbnN0IGw9W107YyYmdmFsaWRhdGVGb250TmFtZShhKSYmbC5wdXNoKGBsb2NhbCgke2F9KWApO2NvbnN0e3N0eWxlOkMsdWx0aW1hdGU6UX09Z2VuZXJhdGVGb250KGcsbCxpKSxFPW51bGw9PT1RLHU9RT8iIjpgLCR7UX1gO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShhKX0iLCR7aH0ke3V9YCxndWVzc0ZhbGxiYWNrOkUsbG9hZGVkTmFtZTpoLGJhc2VGb250TmFtZTphLHNyYzpsLmpvaW4oIiwiKSxzdHlsZTpDfTtlLnNldChuLG8pO3JldHVybiBvfWNsYXNzIEltYWdlUmVzaXplcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2ltZ0RhdGE9ZTt0aGlzLl9pc01hc2s9dH1zdGF0aWMgbmVlZHNUb0JlUmVzaXplZChlLHQpe2lmKGU8PXRoaXMuX2dvb2RTcXVhcmVMZW5ndGgmJnQ8PXRoaXMuX2dvb2RTcXVhcmVMZW5ndGgpcmV0dXJuITE7Y29uc3R7TUFYX0RJTTppfT10aGlzO2lmKGU+aXx8dD5pKXJldHVybiEwO2NvbnN0IGE9ZSp0O2lmKHRoaXMuX2hhc01heEFyZWEpcmV0dXJuIGE+dGhpcy5NQVhfQVJFQTtpZihhPHRoaXMuX2dvb2RTcXVhcmVMZW5ndGgqKjIpcmV0dXJuITE7aWYodGhpcy5fYXJlR29vZERpbXMoZSx0KSl7dGhpcy5fZ29vZFNxdWFyZUxlbmd0aD1NYXRoLm1heCh0aGlzLl9nb29kU3F1YXJlTGVuZ3RoLE1hdGguZmxvb3IoTWF0aC5zcXJ0KGUqdCkpKTtyZXR1cm4hMX10aGlzLl9nb29kU3F1YXJlTGVuZ3RoPXRoaXMuX2d1ZXNzTWF4KHRoaXMuX2dvb2RTcXVhcmVMZW5ndGgsaSwxMjgsMCk7cmV0dXJuIGE+KHRoaXMuTUFYX0FSRUE9dGhpcy5fZ29vZFNxdWFyZUxlbmd0aCoqMil9c3RhdGljIGdldCBNQVhfRElNKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJNQVhfRElNIix0aGlzLl9ndWVzc01heCgyMDQ4LDY1NTM3LDAsMSkpfXN0YXRpYyBnZXQgTUFYX0FSRUEoKXt0aGlzLl9oYXNNYXhBcmVhPSEwO3JldHVybiBzaGFkb3codGhpcywiTUFYX0FSRUEiLHRoaXMuX2d1ZXNzTWF4KEltYWdlUmVzaXplci5fZ29vZFNxdWFyZUxlbmd0aCx0aGlzLk1BWF9ESU0sMTI4LDApKioyKX1zdGF0aWMgc2V0IE1BWF9BUkVBKGUpe2lmKGU+PTApe3RoaXMuX2hhc01heEFyZWE9ITA7c2hhZG93KHRoaXMsIk1BWF9BUkVBIixlKX19c3RhdGljIHNldE1heEFyZWEoZSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mil9c3RhdGljIF9hcmVHb29kRGltcyhlLHQpe3RyeXtjb25zdCBpPW5ldyBPZmZzY3JlZW5DYW52YXMoZSx0KSxhPWkuZ2V0Q29udGV4dCgiMmQiKTthLmZpbGxSZWN0KDAsMCwxLDEpO2NvbnN0IHI9YS5nZXRJbWFnZURhdGEoMCwwLDEsMSkuZGF0YVszXTtpLndpZHRoPWkuaGVpZ2h0PTE7cmV0dXJuIDAhPT1yfWNhdGNoe3JldHVybiExfX1zdGF0aWMgX2d1ZXNzTWF4KGUsdCxpLGEpe2Zvcig7ZStpKzE8dDspe2NvbnN0IGk9TWF0aC5mbG9vcigoZSt0KS8yKSxyPWF8fGk7dGhpcy5fYXJlR29vZERpbXMoaSxyKT9lPWk6dD1pfXJldHVybiBlfXN0YXRpYyBhc3luYyBjcmVhdGVJbWFnZShlLHQ9ITEpe3JldHVybiBuZXcgSW1hZ2VSZXNpemVyKGUsdCkuX2NyZWF0ZUltYWdlKCl9YXN5bmMgX2NyZWF0ZUltYWdlKCl7Y29uc3QgZT10aGlzLl9lbmNvZGVCTVAoKSx0PW5ldyBCbG9iKFtlLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSxpPWNyZWF0ZUltYWdlQml0bWFwKHQpLHtNQVhfQVJFQTphLE1BWF9ESU06cn09SW1hZ2VSZXNpemVyLHtfaW1nRGF0YTpzfT10aGlzLHt3aWR0aDpuLGhlaWdodDpvfT1zLGc9TWF0aC5tYXgobi9yLG8vcixNYXRoLnNxcnQobipvL2EpKSxjPU1hdGgubWF4KGcsMiksaD1NYXRoLnJvdW5kKDEwKihnKzEuMjUpKS8xMC9jLGw9TWF0aC5mbG9vcihNYXRoLmxvZzIoaCkpLEM9bmV3IEFycmF5KGwrMikuZmlsbCgyKTtDWzBdPWM7Qy5zcGxpY2UoLTEsMSxoLygxPDxsKSk7bGV0IFE9bixFPW8sdT1hd2FpdCBpO2Zvcihjb25zdCBlIG9mIEMpe2NvbnN0IHQ9USxpPUU7UT1NYXRoLmZsb29yKFEvZSktMTtFPU1hdGguZmxvb3IoRS9lKS0xO2NvbnN0IGE9bmV3IE9mZnNjcmVlbkNhbnZhcyhRLEUpO2EuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UodSwwLDAsdCxpLDAsMCxRLEUpO3U9YS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKX1zLmRhdGE9bnVsbDtzLmJpdG1hcD11O3Mud2lkdGg9UTtzLmhlaWdodD1FO3JldHVybiBzfV9lbmNvZGVCTVAoKXtjb25zdHt3aWR0aDplLGhlaWdodDp0LGtpbmQ6aX09dGhpcy5faW1nRGF0YTtsZXQgYSxyPXRoaXMuX2ltZ0RhdGEuZGF0YSxzPW5ldyBVaW50OEFycmF5KDApLG49cyxvPTA7c3dpdGNoKGkpe2Nhc2Ugdzp7YT0xO3M9bmV3IFVpbnQ4QXJyYXkodGhpcy5faXNNYXNrP1syNTUsMjU1LDI1NSwyNTUsMCwwLDAsMF06WzAsMCwwLDAsMjU1LDI1NSwyNTUsMjU1XSk7Y29uc3QgaT1lKzc+PjMsbj1pKzMmLTQ7aWYoaSE9PW4pe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkobip0KTtsZXQgYT0wO2ZvcihsZXQgcz0wLG89dCppO3M8bztzKz1pLGErPW4pZS5zZXQoci5zdWJhcnJheShzLHMraSksYSk7cj1lfWJyZWFrfWNhc2UgYjphPTI0O2lmKDMmZSl7Y29uc3QgaT0zKmUsYT1pKzMmLTQscz1hLWksbj1uZXcgVWludDhBcnJheShhKnQpO2xldCBvPTA7Zm9yKGxldCBlPTAsYT10Kmk7ZTxhO2UrPWkpe2NvbnN0IHQ9ci5zdWJhcnJheShlLGUraSk7Zm9yKGxldCBlPTA7ZTxpO2UrPTMpe25bbysrXT10W2UrMl07bltvKytdPXRbZSsxXTtuW28rK109dFtlXX1vKz1zfXI9bn1lbHNlIGZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrPTMpe2NvbnN0IHQ9cltlXTtyW2VdPXJbZSsyXTtyW2UrMl09dH1icmVhaztjYXNlIEQ6YT0zMjtvPTM7bj1uZXcgVWludDhBcnJheSg2OCk7Y29uc3QgaT1uZXcgRGF0YVZpZXcobi5idWZmZXIpO2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKXtpLnNldFVpbnQzMigwLDI1NSwhMCk7aS5zZXRVaW50MzIoNCw2NTI4MCwhMCk7aS5zZXRVaW50MzIoOCwxNjcxMTY4MCwhMCk7aS5zZXRVaW50MzIoMTIsNDI3ODE5MDA4MCwhMCl9ZWxzZXtpLnNldFVpbnQzMigwLDQyNzgxOTAwODAsITApO2kuc2V0VWludDMyKDQsMTY3MTE2ODAsITApO2kuc2V0VWludDMyKDgsNjUyODAsITApO2kuc2V0VWludDMyKDEyLDI1NSwhMCl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0Iil9bGV0IGc9MDtjb25zdCBjPTQwK24ubGVuZ3RoLGg9MTQrYytzLmxlbmd0aCtyLmxlbmd0aCxsPW5ldyBVaW50OEFycmF5KGgpLEM9bmV3IERhdGFWaWV3KGwuYnVmZmVyKTtDLnNldFVpbnQxNihnLDE5Nzc4LCEwKTtnKz0yO0Muc2V0VWludDMyKGcsaCwhMCk7Zys9NDtDLnNldFVpbnQzMihnLDAsITApO2crPTQ7Qy5zZXRVaW50MzIoZywxNCtjK3MubGVuZ3RoLCEwKTtnKz00O0Muc2V0VWludDMyKGcsYywhMCk7Zys9NDtDLnNldEludDMyKGcsZSwhMCk7Zys9NDtDLnNldEludDMyKGcsLXQsITApO2crPTQ7Qy5zZXRVaW50MTYoZywxLCEwKTtnKz0yO0Muc2V0VWludDE2KGcsYSwhMCk7Zys9MjtDLnNldFVpbnQzMihnLG8sITApO2crPTQ7Qy5zZXRVaW50MzIoZywwLCEwKTtnKz00O0Muc2V0SW50MzIoZywwLCEwKTtnKz00O0Muc2V0SW50MzIoZywwLCEwKTtnKz00O0Muc2V0VWludDMyKGcscy5sZW5ndGgvNCwhMCk7Zys9NDtDLnNldFVpbnQzMihnLDAsITApO2crPTQ7bC5zZXQobixnKTtnKz1uLmxlbmd0aDtsLnNldChzLGcpO2crPXMubGVuZ3RoO2wuc2V0KHIsZyk7cmV0dXJuIGx9fUltYWdlUmVzaXplci5fZ29vZFNxdWFyZUxlbmd0aD0yMDQ4O2NvbnN0IHlyPTMyODUzNzc1MjAsd3I9NDI5NDkwMTc2MCxicj02NTUzNTtjbGFzcyBNdXJtdXJIYXNoM182NHtjb25zdHJ1Y3RvcihlKXt0aGlzLmgxPWU/NDI5NDk2NzI5NSZlOnlyO3RoaXMuaDI9ZT80Mjk0OTY3Mjk1JmU6eXJ9dXBkYXRlKGUpe2xldCB0LGk7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt0PW5ldyBVaW50OEFycmF5KDIqZS5sZW5ndGgpO2k9MDtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO2lmKHI8PTI1NSl0W2krK109cjtlbHNle3RbaSsrXT1yPj4+ODt0W2krK109MjU1JnJ9fX1lbHNle2lmKCFBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGRhdGEgZm9ybWF0LCBtdXN0IGJlIGEgc3RyaW5nIG9yIFR5cGVkQXJyYXkuIik7dD1lLnNsaWNlKCk7aT10LmJ5dGVMZW5ndGh9Y29uc3QgYT1pPj4yLHI9aS00KmEscz1uZXcgVWludDMyQXJyYXkodC5idWZmZXIsMCxhKTtsZXQgbj0wLG89MCxnPXRoaXMuaDEsYz10aGlzLmgyO2NvbnN0IGg9MzQzMjkxODM1MyxsPTQ2MTg0NTkwNyxDPTExNjAxLFE9MTM3MTU7Zm9yKGxldCBlPTA7ZTxhO2UrKylpZigxJmUpe249c1tlXTtuPW4qaCZ3cnxuKkMmYnI7bj1uPDwxNXxuPj4+MTc7bj1uKmwmd3J8bipRJmJyO2dePW47Zz1nPDwxM3xnPj4+MTk7Zz01KmcrMzg2NDI5MjE5Nn1lbHNle289c1tlXTtvPW8qaCZ3cnxvKkMmYnI7bz1vPDwxNXxvPj4+MTc7bz1vKmwmd3J8bypRJmJyO2NePW87Yz1jPDwxM3xjPj4+MTk7Yz01KmMrMzg2NDI5MjE5Nn1uPTA7c3dpdGNoKHIpe2Nhc2UgMzpuXj10WzQqYSsyXTw8MTY7Y2FzZSAyOm5ePXRbNCphKzFdPDw4O2Nhc2UgMTpuXj10WzQqYV07bj1uKmgmd3J8bipDJmJyO249bjw8MTV8bj4+PjE3O249bipsJndyfG4qUSZicjsxJmE/Z149bjpjXj1ufXRoaXMuaDE9Zzt0aGlzLmgyPWN9aGV4ZGlnZXN0KCl7bGV0IGU9dGhpcy5oMSx0PXRoaXMuaDI7ZV49dD4+PjE7ZT0zOTgxODA2Nzk3KmUmd3J8MzYwNDUqZSZicjt0PTQyODM1NDM1MTEqdCZ3cnwoMjk1MDE2Mzc5NyoodDw8MTZ8ZT4+PjE2KSZ3cik+Pj4xNjtlXj10Pj4+MTtlPTQ0NDk4NDQwMyplJndyfDYwNDk5KmUmYnI7dD0zMzAxODgyMzY2KnQmd3J8KDMxMjA0Mzc4OTMqKHQ8PDE2fGU+Pj4xNikmd3IpPj4+MTY7ZV49dD4+PjE7cmV0dXJuKGU+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpKyh0Pj4+MCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKX19ZnVuY3Rpb24gYWRkU3RhdGUoZSx0LGksYSxyKXtsZXQgcz1lO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGgtMTtlPGk7ZSsrKXtjb25zdCBpPXRbZV07cz1zW2ldfHw9W119c1t0LmF0KC0xKV09e2NoZWNrRm46aSxpdGVyYXRlRm46YSxwcm9jZXNzRm46cn19Y29uc3QgRHI9W107YWRkU3RhdGUoRHIsW0dBLE1BLF9lLHhBXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PUdBO2Nhc2UgMTpyZXR1cm4gaVt0XT09PU1BO2Nhc2UgMjpyZXR1cm4gaVt0XT09PV9lO2Nhc2UgMzpyZXR1cm4gaVt0XT09PXhBfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUlubGluZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHthfWApfSksKGZ1bmN0aW9uIGZvdW5kSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj1lLmlDdXJyLHM9ci0zLG49ci0yLG89ci0xLGc9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwyMDApO2lmKGc8MTApcmV0dXJuIHQtKHQtcyklNDtsZXQgYz0wO2NvbnN0IGg9W107bGV0IGw9MCxDPTEsUT0xO2ZvcihsZXQgZT0wO2U8ZztlKyspe2NvbnN0IHQ9YVtuKyhlPDwyKV0saT1hW28rKGU8PDIpXVswXTtpZihDK2kud2lkdGg+MWUzKXtjPU1hdGgubWF4KGMsQyk7USs9bCsyO0M9MDtsPTB9aC5wdXNoKHt0cmFuc2Zvcm06dCx4OkMseTpRLHc6aS53aWR0aCxoOmkuaGVpZ2h0fSk7Qys9aS53aWR0aCsyO2w9TWF0aC5tYXgobCxpLmhlaWdodCl9Y29uc3QgRT1NYXRoLm1heChjLEMpKzEsdT1RK2wrMSxkPW5ldyBVaW50OEFycmF5KEUqdSo0KSxmPUU8PDI7Zm9yKGxldCBlPTA7ZTxnO2UrKyl7Y29uc3QgdD1hW28rKGU8PDIpXVswXS5kYXRhLGk9aFtlXS53PDwyO2xldCByPTAscz1oW2VdLngraFtlXS55KkU8PDI7ZC5zZXQodC5zdWJhcnJheSgwLGkpLHMtZik7Zm9yKGxldCBhPTAsbj1oW2VdLmg7YTxuO2ErKyl7ZC5zZXQodC5zdWJhcnJheShyLHIraSkscyk7cis9aTtzKz1mfWQuc2V0KHQuc3ViYXJyYXkoci1pLHIpLHMpO2Zvcig7cz49MDspe3Rbcy00XT10W3NdO3Rbcy0zXT10W3MrMV07dFtzLTJdPXRbcysyXTt0W3MtMV09dFtzKzNdO3RbcytpXT10W3MraS00XTt0W3MraSsxXT10W3MraS0zXTt0W3MraSsyXT10W3MraS0yXTt0W3MraSszXT10W3MraS0xXTtzLT1mfX1jb25zdCBwPXt3aWR0aDpFLGhlaWdodDp1fTtpZihlLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCBlPW5ldyBPZmZzY3JlZW5DYW52YXMoRSx1KTtlLmdldENvbnRleHQoIjJkIikucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGQuYnVmZmVyKSxFLHUpLDAsMCk7cC5iaXRtYXA9ZS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtwLmRhdGE9bnVsbH1lbHNle3Aua2luZD1EO3AuZGF0YT1kfWkuc3BsaWNlKHMsNCpnLHplKTthLnNwbGljZShzLDQqZyxbcCxoXSk7cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShEcixbR0EsTUEsWGUseEFdLG51bGwsKGZ1bmN0aW9uIGl0ZXJhdGVJbWFnZU1hc2tHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PUdBO2Nhc2UgMTpyZXR1cm4gaVt0XT09PU1BO2Nhc2UgMjpyZXR1cm4gaVt0XT09PVhlO2Nhc2UgMzpyZXR1cm4gaVt0XT09PXhBfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUltYWdlTWFza0dyb3VwIC0gaW52YWxpZCBwb3M6ICR7YX1gKX0pLChmdW5jdGlvbiBmb3VuZEltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgaT1lLmZuQXJyYXksYT1lLmFyZ3NBcnJheSxyPWUuaUN1cnIscz1yLTMsbj1yLTIsbz1yLTE7bGV0IGc9TWF0aC5mbG9vcigodC1zKS80KTtpZihnPDEwKXJldHVybiB0LSh0LXMpJTQ7bGV0IGMsaCxsPSExO2NvbnN0IEM9YVtvXVswXSxRPWFbbl1bMF0sRT1hW25dWzFdLHU9YVtuXVsyXSxkPWFbbl1bM107aWYoRT09PXUpe2w9ITA7Yz1uKzQ7bGV0IGU9bys0O2ZvcihsZXQgdD0xO3Q8Zzt0KyssYys9NCxlKz00KXtoPWFbY107aWYoYVtlXVswXSE9PUN8fGhbMF0hPT1RfHxoWzFdIT09RXx8aFsyXSE9PXV8fGhbM10hPT1kKXt0PDEwP2w9ITE6Zz10O2JyZWFrfX19aWYobCl7Zz1NYXRoLm1pbihnLDFlMyk7Y29uc3QgZT1uZXcgRmxvYXQzMkFycmF5KDIqZyk7Yz1uO2ZvcihsZXQgdD0wO3Q8Zzt0KyssYys9NCl7aD1hW2NdO2VbdDw8MV09aFs0XTtlWzErKHQ8PDEpXT1oWzVdfWkuc3BsaWNlKHMsNCpnLEF0KTthLnNwbGljZShzLDQqZyxbQyxRLEUsdSxkLGVdKX1lbHNle2c9TWF0aC5taW4oZywxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxnO3QrKyl7aD1hW24rKHQ8PDIpXTtjb25zdCBpPWFbbysodDw8MildWzBdO2UucHVzaCh7ZGF0YTppLmRhdGEsd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHQsaW50ZXJwb2xhdGU6aS5pbnRlcnBvbGF0ZSxjb3VudDppLmNvdW50LHRyYW5zZm9ybTpofSl9aS5zcGxpY2Uocyw0KmcsWmUpO2Euc3BsaWNlKHMsNCpnLFtlXSl9cmV0dXJuIHMrMX0pKTthZGRTdGF0ZShEcixbR0EsTUEsVmUseEFdLChmdW5jdGlvbihlKXtjb25zdCB0PWUuYXJnc0FycmF5LGk9ZS5pQ3Vyci0yO3JldHVybiAwPT09dFtpXVsxXSYmMD09PXRbaV1bMl19KSwoZnVuY3Rpb24gaXRlcmF0ZUltYWdlR3JvdXAoZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKHIpe2Nhc2UgMDpyZXR1cm4gaVt0XT09PUdBO2Nhc2UgMTppZihpW3RdIT09TUEpcmV0dXJuITE7Y29uc3Qgcj1lLmlDdXJyLTIscz1hW3JdWzBdLG49YVtyXVszXTtyZXR1cm4gYVt0XVswXT09PXMmJjA9PT1hW3RdWzFdJiYwPT09YVt0XVsyXSYmYVt0XVszXT09PW47Y2FzZSAyOmlmKGlbdF0hPT1WZSlyZXR1cm4hMTtjb25zdCBvPWFbZS5pQ3Vyci0xXVswXTtyZXR1cm4gYVt0XVswXT09PW87Y2FzZSAzOnJldHVybiBpW3RdPT09eEF9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VHcm91cCAtIGludmFsaWQgcG9zOiAke3J9YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9ZS5pQ3VycixzPXItMyxuPXItMixvPWFbci0xXVswXSxnPWFbbl1bMF0sYz1hW25dWzNdLGg9TWF0aC5taW4oTWF0aC5mbG9vcigodC1zKS80KSwxZTMpO2lmKGg8MylyZXR1cm4gdC0odC1zKSU0O2NvbnN0IGw9bmV3IEZsb2F0MzJBcnJheSgyKmgpO2xldCBDPW47Zm9yKGxldCBlPTA7ZTxoO2UrKyxDKz00KXtjb25zdCB0PWFbQ107bFtlPDwxXT10WzRdO2xbMSsoZTw8MSldPXRbNV19Y29uc3QgUT1bbyxnLGMsbF07aS5zcGxpY2Uocyw0KmgsJGUpO2Euc3BsaWNlKHMsNCpoLFEpO3JldHVybiBzKzF9KSk7YWRkU3RhdGUoRHIsWyRBLHJlLGNlLGhlLEFlXSxudWxsLChmdW5jdGlvbiBpdGVyYXRlU2hvd1RleHRHcm91cChlLHQpe2NvbnN0IGk9ZS5mbkFycmF5LGE9ZS5hcmdzQXJyYXkscj0odC0oZS5pQ3Vyci00KSklNTtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiBpW3RdPT09JEE7Y2FzZSAxOnJldHVybiBpW3RdPT09cmU7Y2FzZSAyOnJldHVybiBpW3RdPT09Y2U7Y2FzZSAzOmlmKGlbdF0hPT1oZSlyZXR1cm4hMTtjb25zdCByPWUuaUN1cnItMyxzPWFbcl1bMF0sbj1hW3JdWzFdO3JldHVybiBhW3RdWzBdPT09cyYmYVt0XVsxXT09PW47Y2FzZSA0OnJldHVybiBpW3RdPT09QWV9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlU2hvd1RleHRHcm91cCAtIGludmFsaWQgcG9zOiAke3J9YCl9KSwoZnVuY3Rpb24oZSx0KXtjb25zdCBpPWUuZm5BcnJheSxhPWUuYXJnc0FycmF5LHI9ZS5pQ3VycixzPXItNCxuPXItMyxvPXItMixnPXItMSxjPXIsaD1hW25dWzBdLGw9YVtuXVsxXTtsZXQgQz1NYXRoLm1pbihNYXRoLmZsb29yKCh0LXMpLzUpLDFlMyk7aWYoQzwzKXJldHVybiB0LSh0LXMpJTU7bGV0IFE9cztpZihzPj00JiZpW3MtNF09PT1pW25dJiZpW3MtM109PT1pW29dJiZpW3MtMl09PT1pW2ddJiZpW3MtMV09PT1pW2NdJiZhW3MtNF1bMF09PT1oJiZhW3MtNF1bMV09PT1sKXtDKys7US09NX1sZXQgRT1RKzQ7Zm9yKGxldCBlPTE7ZTxDO2UrKyl7aS5zcGxpY2UoRSwzKTthLnNwbGljZShFLDMpO0UrPTJ9cmV0dXJuIEUrMX0pKTtjbGFzcyBOdWxsT3B0aW1pemVye2NvbnN0cnVjdG9yKGUpe3RoaXMucXVldWU9ZX1fb3B0aW1pemUoKXt9cHVzaChlLHQpe3RoaXMucXVldWUuZm5BcnJheS5wdXNoKGUpO3RoaXMucXVldWUuYXJnc0FycmF5LnB1c2godCk7dGhpcy5fb3B0aW1pemUoKX1mbHVzaCgpe31yZXNldCgpe319Y2xhc3MgUXVldWVPcHRpbWl6ZXIgZXh0ZW5kcyBOdWxsT3B0aW1pemVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RhdGU9bnVsbDt0aGlzLmNvbnRleHQ9e2lDdXJyOjAsZm5BcnJheTplLmZuQXJyYXksYXJnc0FycmF5OmUuYXJnc0FycmF5LGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOiExfTt0aGlzLm1hdGNoPW51bGw7dGhpcy5sYXN0UHJvY2Vzc2VkPTB9c2V0IGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKGUpe3RoaXMuY29udGV4dC5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD1lfV9vcHRpbWl6ZSgpe2NvbnN0IGU9dGhpcy5xdWV1ZS5mbkFycmF5O2xldCB0PXRoaXMubGFzdFByb2Nlc3NlZCxpPWUubGVuZ3RoLGE9dGhpcy5zdGF0ZSxyPXRoaXMubWF0Y2g7aWYoIWEmJiFyJiZ0KzE9PT1pJiYhRHJbZVt0XV0pe3RoaXMubGFzdFByb2Nlc3NlZD1pO3JldHVybn1jb25zdCBzPXRoaXMuY29udGV4dDtmb3IoO3Q8aTspe2lmKHIpe2lmKCgwLHIuaXRlcmF0ZUZuKShzLHQpKXt0Kys7Y29udGludWV9dD0oMCxyLnByb2Nlc3NGbikocyx0KzEpO2k9ZS5sZW5ndGg7cj1udWxsO2E9bnVsbDtpZih0Pj1pKWJyZWFrfWE9KGF8fERyKVtlW3RdXTtpZihhJiYhQXJyYXkuaXNBcnJheShhKSl7cy5pQ3Vycj10O3QrKztpZighYS5jaGVja0ZufHwoMCxhLmNoZWNrRm4pKHMpKXtyPWE7YT1udWxsfWVsc2UgYT1udWxsfWVsc2UgdCsrfXRoaXMuc3RhdGU9YTt0aGlzLm1hdGNoPXI7dGhpcy5sYXN0UHJvY2Vzc2VkPXR9Zmx1c2goKXtmb3IoO3RoaXMubWF0Y2g7KXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheS5sZW5ndGg7dGhpcy5sYXN0UHJvY2Vzc2VkPSgwLHRoaXMubWF0Y2gucHJvY2Vzc0ZuKSh0aGlzLmNvbnRleHQsZSk7dGhpcy5tYXRjaD1udWxsO3RoaXMuc3RhdGU9bnVsbDt0aGlzLl9vcHRpbWl6ZSgpfX1yZXNldCgpe3RoaXMuc3RhdGU9bnVsbDt0aGlzLm1hdGNoPW51bGw7dGhpcy5sYXN0UHJvY2Vzc2VkPTB9fWNsYXNzIE9wZXJhdG9yTGlzdHtzdGF0aWMgQ0hVTktfU0laRT0xZTM7c3RhdGljIENIVU5LX1NJWkVfQUJPVVQ9dGhpcy5DSFVOS19TSVpFLTU7Y29uc3RydWN0b3IoZT0wLHQpe3RoaXMuX3N0cmVhbVNpbms9dDt0aGlzLmZuQXJyYXk9W107dGhpcy5hcmdzQXJyYXk9W107dGhpcy5vcHRpbWl6ZXI9IXR8fGUmQz9uZXcgTnVsbE9wdGltaXplcih0aGlzKTpuZXcgUXVldWVPcHRpbWl6ZXIodGhpcyk7dGhpcy5kZXBlbmRlbmNpZXM9bmV3IFNldDt0aGlzLl90b3RhbExlbmd0aD0wO3RoaXMud2VpZ2h0PTA7dGhpcy5fcmVzb2x2ZWQ9dD9udWxsOlByb21pc2UucmVzb2x2ZSgpfXNldCBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZChlKXt0aGlzLm9wdGltaXplci5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5hcmdzQXJyYXkubGVuZ3RofWdldCByZWFkeSgpe3JldHVybiB0aGlzLl9yZXNvbHZlZHx8dGhpcy5fc3RyZWFtU2luay5yZWFkeX1nZXQgdG90YWxMZW5ndGgoKXtyZXR1cm4gdGhpcy5fdG90YWxMZW5ndGgrdGhpcy5sZW5ndGh9YWRkT3AoZSx0KXt0aGlzLm9wdGltaXplci5wdXNoKGUsdCk7dGhpcy53ZWlnaHQrKzt0aGlzLl9zdHJlYW1TaW5rJiYodGhpcy53ZWlnaHQ+PU9wZXJhdG9yTGlzdC5DSFVOS19TSVpFfHx0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkVfQUJPVVQmJihlPT09eEF8fGU9PT1BZSkpJiZ0aGlzLmZsdXNoKCl9YWRkSW1hZ2VPcHMoZSx0LGkpe3ZvaWQgMCE9PWkmJnRoaXMuYWRkT3AoSGUsWyJPQyIsaV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1pJiZ0aGlzLmFkZE9wKHZlLFtdKX1hZGREZXBlbmRlbmN5KGUpe2lmKCF0aGlzLmRlcGVuZGVuY2llcy5oYXMoZSkpe3RoaXMuZGVwZW5kZW5jaWVzLmFkZChlKTt0aGlzLmFkZE9wKHlBLFtlXSl9fWFkZERlcGVuZGVuY2llcyhlKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkRGVwZW5kZW5jeSh0KX1hZGRPcExpc3QoZSl7aWYoZSBpbnN0YW5jZW9mIE9wZXJhdG9yTGlzdCl7Zm9yKGNvbnN0IHQgb2YgZS5kZXBlbmRlbmNpZXMpdGhpcy5kZXBlbmRlbmNpZXMuYWRkKHQpO2ZvcihsZXQgdD0wLGk9ZS5sZW5ndGg7dDxpO3QrKyl0aGlzLmFkZE9wKGUuZm5BcnJheVt0XSxlLmFyZ3NBcnJheVt0XSl9ZWxzZSB3YXJuKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6aSxsZW5ndGg6YX09dGhpcztmb3IobGV0IHI9MDtyPGE7cisrKXN3aXRjaCh0W3JdKXtjYXNlIF9lOmNhc2UgemU6Y2FzZSBYZTpjb25zdCB0PWlbcl1bMF07IXQuY2FjaGVkJiZ0LmRhdGE/LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiZlLnB1c2godC5kYXRhLmJ1ZmZlcil9cmV0dXJuIGV9Zmx1c2goZT0hMSx0PW51bGwpe3RoaXMub3B0aW1pemVyLmZsdXNoKCk7Y29uc3QgaT10aGlzLmxlbmd0aDt0aGlzLl90b3RhbExlbmd0aCs9aTt0aGlzLl9zdHJlYW1TaW5rLmVucXVldWUoe2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsYXN0Q2h1bms6ZSxzZXBhcmF0ZUFubm90czp0LGxlbmd0aDppfSwxLHRoaXMuX3RyYW5zZmVycyk7dGhpcy5kZXBlbmRlbmNpZXMuY2xlYXIoKTt0aGlzLmZuQXJyYXkubGVuZ3RoPTA7dGhpcy5hcmdzQXJyYXkubGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLm9wdGltaXplci5yZXNldCgpfX1mdW5jdGlvbiBkZWNvZGVBbmRDbGFtcChlLHQsaSxhKXsoZT10K2UqaSk8MD9lPTA6ZT5hJiYoZT1hKTtyZXR1cm4gZX1mdW5jdGlvbiByZXNpemVJbWFnZU1hc2soZSx0LGksYSxyLHMpe2NvbnN0IG49cipzO2xldCBvO289dDw9OD9uZXcgVWludDhBcnJheShuKTp0PD0xNj9uZXcgVWludDE2QXJyYXkobik6bmV3IFVpbnQzMkFycmF5KG4pO2NvbnN0IGc9aS9yLGM9YS9zO2xldCBoLGwsQyxRLEU9MDtjb25zdCB1PW5ldyBVaW50MTZBcnJheShyKSxkPWk7Zm9yKGg9MDtoPHI7aCsrKXVbaF09TWF0aC5mbG9vcihoKmcpO2ZvcihoPTA7aDxzO2grKyl7Qz1NYXRoLmZsb29yKGgqYykqZDtmb3IobD0wO2w8cjtsKyspe1E9Qyt1W2xdO29bRSsrXT1lW1FdfX1yZXR1cm4gb31jbGFzcyBQREZJbWFnZXtjb25zdHJ1Y3Rvcih7eHJlZjplLHJlczp0LGltYWdlOmksaXNJbmxpbmU6YT0hMSxzbWFzazpyPW51bGwsbWFzazpzPW51bGwsaXNNYXNrOm49ITEscGRmRnVuY3Rpb25GYWN0b3J5Om8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Z30pe3RoaXMuaW1hZ2U9aTtsZXQgYz0hMTtjb25zdCBoPWkuZGljdCxsPWguZ2V0KCJGIiwiRmlsdGVyIik7bGV0IEM7aWYobCBpbnN0YW5jZW9mIE5hbWUpQz1sLm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KGwpKXtjb25zdCB0PWUuZmV0Y2hJZlJlZihsWzBdKTt0IGluc3RhbmNlb2YgTmFtZSYmKEM9dC5uYW1lKX1zd2l0Y2goQyl7Y2FzZSJKUFhEZWNvZGUiOih7d2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHQsY29tcG9uZW50c0NvdW50OmkubnVtQ29tcHMsYml0c1BlckNvbXBvbmVudDppLmJpdHNQZXJDb21wb25lbnR9PUpweEltYWdlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGkuc3RyZWFtKSk7aS5zdHJlYW0ucmVzZXQoKTtjPSEwO2JyZWFrO2Nhc2UiSkJJRzJEZWNvZGUiOmkuYml0c1BlckNvbXBvbmVudD0xO2kubnVtQ29tcHM9MX1sZXQgUT1oLmdldCgiVyIsIldpZHRoIiksRT1oLmdldCgiSCIsIkhlaWdodCIpO2lmKE51bWJlci5pc0ludGVnZXIoaS53aWR0aCkmJmkud2lkdGg+MCYmTnVtYmVyLmlzSW50ZWdlcihpLmhlaWdodCkmJmkuaGVpZ2h0PjAmJihpLndpZHRoIT09UXx8aS5oZWlnaHQhPT1FKSl7d2FybigiUERGSW1hZ2UgLSB1c2luZyB0aGUgV2lkdGgvSGVpZ2h0IG9mIHRoZSBpbWFnZSBkYXRhLCByYXRoZXIgdGhhbiB0aGUgaW1hZ2UgZGljdGlvbmFyeS4iKTtRPWkud2lkdGg7RT1pLmhlaWdodH1pZihRPDF8fEU8MSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaW1hZ2Ugd2lkdGg6ICR7UX0gb3IgaGVpZ2h0OiAke0V9YCk7dGhpcy53aWR0aD1RO3RoaXMuaGVpZ2h0PUU7dGhpcy5pbnRlcnBvbGF0ZT1oLmdldCgiSSIsIkludGVycG9sYXRlIik7dGhpcy5pbWFnZU1hc2s9aC5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExO3RoaXMubWF0dGU9aC5nZXQoIk1hdHRlIil8fCExO2xldCB1PWkuYml0c1BlckNvbXBvbmVudDtpZighdSl7dT1oLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpO2lmKCF1KXtpZighdGhpcy5pbWFnZU1hc2spdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTt1PTF9fXRoaXMuYnBjPXU7aWYoIXRoaXMuaW1hZ2VNYXNrKXtsZXQgcj1oLmdldFJhdygiQ1MiKXx8aC5nZXRSYXcoIkNvbG9yU3BhY2UiKTtpZighcil7aW5mbygiSlBYIGltYWdlcyAod2hpY2ggZG8gbm90IHJlcXVpcmUgY29sb3Igc3BhY2VzKSIpO3N3aXRjaChpLm51bUNvbXBzKXtjYXNlIDE6cj1OYW1lLmdldCgiRGV2aWNlR3JheSIpO2JyZWFrO2Nhc2UgMzpyPU5hbWUuZ2V0KCJEZXZpY2VSR0IiKTticmVhaztjYXNlIDQ6cj1OYW1lLmdldCgiRGV2aWNlQ01ZSyIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBKUFggaW1hZ2VzIHdpdGggJHtpLm51bUNvbXBzfSBjb2xvciBjb21wb25lbnRzIG5vdCBzdXBwb3J0ZWQuYCl9fXRoaXMuY29sb3JTcGFjZT1Db2xvclNwYWNlLnBhcnNlKHtjczpyLHhyZWY6ZSxyZXNvdXJjZXM6YT90Om51bGwscGRmRnVuY3Rpb25GYWN0b3J5Om8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Z30pO3RoaXMubnVtQ29tcHM9dGhpcy5jb2xvclNwYWNlLm51bUNvbXBzO3RoaXMuaWdub3JlQ29sb3JTcGFjZT1jJiYiSW5kZXhlZCI9PT10aGlzLmNvbG9yU3BhY2UubmFtZX10aGlzLmRlY29kZT1oLmdldEFycmF5KCJEIiwiRGVjb2RlIik7dGhpcy5uZWVkc0RlY29kZT0hMTtpZih0aGlzLmRlY29kZSYmKHRoaXMuY29sb3JTcGFjZSYmIXRoaXMuY29sb3JTcGFjZS5pc0RlZmF1bHREZWNvZGUodGhpcy5kZWNvZGUsdSl8fG4mJiFDb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSwxKSkpe3RoaXMubmVlZHNEZWNvZGU9ITA7Y29uc3QgZT0oMTw8dSktMTt0aGlzLmRlY29kZUNvZWZmaWNpZW50cz1bXTt0aGlzLmRlY29kZUFkZGVuZHM9W107Y29uc3QgdD0iSW5kZXhlZCI9PT10aGlzLmNvbG9yU3BhY2U/Lm5hbWU7Zm9yKGxldCBpPTAsYT0wO2k8dGhpcy5kZWNvZGUubGVuZ3RoO2krPTIsKythKXtjb25zdCByPXRoaXMuZGVjb2RlW2ldLHM9dGhpcy5kZWNvZGVbaSsxXTt0aGlzLmRlY29kZUNvZWZmaWNpZW50c1thXT10PyhzLXIpL2U6cy1yO3RoaXMuZGVjb2RlQWRkZW5kc1thXT10P3I6ZSpyfX1pZihyKXRoaXMuc21hc2s9bmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6cixpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmd9KTtlbHNlIGlmKHMpaWYocyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe3MuZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIik/dGhpcy5tYXNrPW5ldyBQREZJbWFnZSh7eHJlZjplLHJlczp0LGltYWdlOnMsaXNJbmxpbmU6YSxpc01hc2s6ITAscGRmRnVuY3Rpb25GYWN0b3J5Om8sbG9jYWxDb2xvclNwYWNlQ2FjaGU6Z30pOndhcm4oIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1zfXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6aSxpc0lubGluZTphPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KXtjb25zdCBuPWk7bGV0IG89bnVsbCxnPW51bGw7Y29uc3QgYz1pLmRpY3QuZ2V0KCJTTWFzayIpLGg9aS5kaWN0LmdldCgiTWFzayIpO2M/YyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bz1jOndhcm4oIlVuc3VwcG9ydGVkIC9TTWFzayBmb3JtYXQuIik6aCYmKGggaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KGgpP2c9aDp3YXJuKCJVbnN1cHBvcnRlZCAvTWFzayBmb3JtYXQuIikpO3JldHVybiBuZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpuLGlzSW5saW5lOmEsc21hc2s6byxtYXNrOmcscGRmRnVuY3Rpb25GYWN0b3J5OnIsbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pfXN0YXRpYyBjcmVhdGVSYXdNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmksaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06YSxpbnZlcnNlRGVjb2RlOnIsaW50ZXJwb2xhdGU6c30pe2NvbnN0IG49KHQrNz4+MykqaSxvPWUuYnl0ZUxlbmd0aDtsZXQgZyxjO2lmKCFhfHxyJiYhKG49PT1vKSlpZihyKXtnPW5ldyBVaW50OEFycmF5KG4pO2cuc2V0KGUpO2cuZmlsbCgyNTUsbyl9ZWxzZSBnPW5ldyBVaW50OEFycmF5KGUpO2Vsc2UgZz1lO2lmKHIpZm9yKGM9MDtjPG87YysrKWdbY11ePTI1NTtyZXR1cm57ZGF0YTpnLHdpZHRoOnQsaGVpZ2h0OmksaW50ZXJwb2xhdGU6c319c3RhdGljIGFzeW5jIGNyZWF0ZU1hc2soe2ltZ0FycmF5OmUsd2lkdGg6dCxoZWlnaHQ6aSxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTphLGludmVyc2VEZWNvZGU6cixpbnRlcnBvbGF0ZTpzLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOm49ITF9KXtjb25zdCBvPTE9PT10JiYxPT09aSYmcj09PSgwPT09ZS5sZW5ndGh8fCEhKDEyOCZlWzBdKSk7aWYobylyZXR1cm57aXNTaW5nbGVPcGFxdWVQaXhlbDpvfTtpZihuKXtpZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZCh0LGkpKXtjb25zdCBhPW5ldyBVaW50OENsYW1wZWRBcnJheSh0KmkqNCk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzplLGRlc3Q6YSx3aWR0aDp0LGhlaWdodDppLG5vbkJsYWNrQ29sb3I6MCxpbnZlcnNlRGVjb2RlOnJ9KTtyZXR1cm4gSW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtraW5kOkQsZGF0YTphLHdpZHRoOnQsaGVpZ2h0OmksaW50ZXJwb2xhdGU6c30pfWNvbnN0IGE9bmV3IE9mZnNjcmVlbkNhbnZhcyh0LGkpLG49YS5nZXRDb250ZXh0KCIyZCIpLG89bi5jcmVhdGVJbWFnZURhdGEodCxpKTtjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQSh7c3JjOmUsZGVzdDpvLmRhdGEsd2lkdGg6dCxoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpyfSk7bi5wdXRJbWFnZURhdGEobywwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6dCxoZWlnaHQ6aSxpbnRlcnBvbGF0ZTpzLGJpdG1hcDphLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1yZXR1cm4gdGhpcy5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTplLHdpZHRoOnQsaGVpZ2h0OmksaW52ZXJzZURlY29kZTpyLGltYWdlSXNGcm9tRGVjb2RlU3RyZWFtOmEsaW50ZXJwb2xhdGU6c30pfWdldCBkcmF3V2lkdGgoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLnNtYXNrPy53aWR0aHx8MCx0aGlzLm1hc2s/LndpZHRofHwwKX1nZXQgZHJhd0hlaWdodCgpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCx0aGlzLnNtYXNrPy5oZWlnaHR8fDAsdGhpcy5tYXNrPy5oZWlnaHR8fDApfWRlY29kZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnBjLGk9dGhpcy5udW1Db21wcyxhPXRoaXMuZGVjb2RlQWRkZW5kcyxyPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLHM9KDE8PHQpLTE7bGV0IG4sbztpZigxPT09dCl7Zm9yKG49MCxvPWUubGVuZ3RoO248bztuKyspZVtuXT0rIWVbbl07cmV0dXJufWxldCBnPTA7Zm9yKG49MCxvPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7bjxvO24rKylmb3IobGV0IHQ9MDt0PGk7dCsrKXtlW2ddPWRlY29kZUFuZENsYW1wKGVbZ10sYVt0XSxyW3RdLHMpO2crK319Z2V0Q29tcG9uZW50cyhlKXtjb25zdCB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO2NvbnN0IGk9dGhpcy53aWR0aCxhPXRoaXMuaGVpZ2h0LHI9dGhpcy5udW1Db21wcyxzPWkqYSpyO2xldCBuLG89MDtuPXQ8PTg/bmV3IFVpbnQ4QXJyYXkocyk6dDw9MTY/bmV3IFVpbnQxNkFycmF5KHMpOm5ldyBVaW50MzJBcnJheShzKTtjb25zdCBnPWkqcixjPSgxPDx0KS0xO2xldCBoLGwsQz0wO2lmKDE9PT10KXtsZXQgdCxpLHI7Zm9yKGxldCBzPTA7czxhO3MrKyl7aT1DKygtOCZnKTtyPUMrZztmb3IoO0M8aTspe2w9ZVtvKytdO25bQ109bD4+NyYxO25bQysxXT1sPj42JjE7bltDKzJdPWw+PjUmMTtuW0MrM109bD4+NCYxO25bQys0XT1sPj4zJjE7bltDKzVdPWw+PjImMTtuW0MrNl09bD4+MSYxO25bQys3XT0xJmw7Qys9OH1pZihDPHIpe2w9ZVtvKytdO3Q9MTI4O2Zvcig7QzxyOyl7bltDKytdPSshIShsJnQpO3Q+Pj0xfX19fWVsc2V7bGV0IGk9MDtsPTA7Zm9yKEM9MCxoPXM7QzxoOysrQyl7aWYoQyVnPT0wKXtsPTA7aT0wfWZvcig7aTx0Oyl7bD1sPDw4fGVbbysrXTtpKz04fWNvbnN0IGE9aS10O2xldCByPWw+PmE7cjwwP3I9MDpyPmMmJihyPWMpO25bQ109cjtsJj0oMTw8YSktMTtpPWF9fXJldHVybiBufWZpbGxPcGFjaXR5KGUsdCxpLGEscil7Y29uc3Qgcz10aGlzLnNtYXNrLG49dGhpcy5tYXNrO2xldCBvLGcsYyxoLGwsQztpZihzKXtnPXMud2lkdGg7Yz1zLmhlaWdodDtvPW5ldyBVaW50OENsYW1wZWRBcnJheShnKmMpO3MuZmlsbEdyYXlCdWZmZXIobyk7Zz09PXQmJmM9PT1pfHwobz1yZXNpemVJbWFnZU1hc2sobyxzLmJwYyxnLGMsdCxpKSl9ZWxzZSBpZihuKWlmKG4gaW5zdGFuY2VvZiBQREZJbWFnZSl7Zz1uLndpZHRoO2M9bi5oZWlnaHQ7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkoZypjKTtuLm51bUNvbXBzPTE7bi5maWxsR3JheUJ1ZmZlcihvKTtmb3IoaD0wLGw9ZypjO2g8bDsrK2gpb1toXT0yNTUtb1toXTtnPT09dCYmYz09PWl8fChvPXJlc2l6ZUltYWdlTWFzayhvLG4uYnBjLGcsYyx0LGkpKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBtYXNrIGZvcm1hdC4iKTt7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkodCppKTtjb25zdCBlPXRoaXMubnVtQ29tcHM7Zm9yKGg9MCxsPXQqaTtoPGw7KytoKXtsZXQgdD0wO2NvbnN0IGk9aCplO2ZvcihDPTA7QzxlOysrQyl7Y29uc3QgZT1yW2krQ10sYT0yKkM7aWYoZTxuW2FdfHxlPm5bYSsxXSl7dD0yNTU7YnJlYWt9fW9baF09dH19fWlmKG8pZm9yKGg9MCxDPTMsbD10KmE7aDxsOysraCxDKz00KWVbQ109b1toXTtlbHNlIGZvcihoPTAsQz0zLGw9dCphO2g8bDsrK2gsQys9NCllW0NdPTI1NX11bmRvUHJlYmxlbmQoZSx0LGkpe2NvbnN0IGE9dGhpcy5zbWFzaz8ubWF0dGU7aWYoIWEpcmV0dXJuO2NvbnN0IHI9dGhpcy5jb2xvclNwYWNlLmdldFJnYihhLDApLHM9clswXSxuPXJbMV0sbz1yWzJdLGc9dCppKjQ7Zm9yKGxldCB0PTA7dDxnO3QrPTQpe2NvbnN0IGk9ZVt0KzNdO2lmKDA9PT1pKXtlW3RdPTI1NTtlW3QrMV09MjU1O2VbdCsyXT0yNTU7Y29udGludWV9Y29uc3QgYT0yNTUvaTtlW3RdPShlW3RdLXMpKmErcztlW3QrMV09KGVbdCsxXS1uKSphK247ZVt0KzJdPShlW3QrMl0tbykqYStvfX1hc3luYyBjcmVhdGVJbWFnZURhdGEoZT0hMSx0PSExKXtjb25zdCBpPXRoaXMuZHJhd1dpZHRoLGE9dGhpcy5kcmF3SGVpZ2h0LHI9e3dpZHRoOmksaGVpZ2h0OmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZSxraW5kOjAsZGF0YTpudWxsfSxzPXRoaXMubnVtQ29tcHMsbj10aGlzLndpZHRoLG89dGhpcy5oZWlnaHQsZz10aGlzLmJwYyxjPW4qcypnKzc+PjMsaD10JiZJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChpLGEpO2lmKCFlKXtsZXQgZTsiRGV2aWNlR3JheSI9PT10aGlzLmNvbG9yU3BhY2UubmFtZSYmMT09PWc/ZT13OiJEZXZpY2VSR0IiIT09dGhpcy5jb2xvclNwYWNlLm5hbWV8fDghPT1nfHx0aGlzLm5lZWRzRGVjb2RlfHwoZT1iKTtpZihlJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmaT09PW4mJmE9PT1vKXtjb25zdCBzPXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmMse30pO2lmKHQpcmV0dXJuIGg/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtkYXRhOnMsa2luZDplLHdpZHRoOmksaGVpZ2h0OmEsaW50ZXJwb2xhdGU6dGhpcy5pbnRlcnBvbGF0ZX0sdGhpcy5uZWVkc0RlY29kZSk6dGhpcy5jcmVhdGVCaXRtYXAoZSxuLG8scyk7ci5raW5kPWU7ci5kYXRhPXM7aWYodGhpcy5uZWVkc0RlY29kZSl7YXNzZXJ0KGU9PT13LCJQREZJbWFnZS5jcmVhdGVJbWFnZURhdGE6IFRoZSBpbWFnZSBtdXN0IGJlIGdyYXlzY2FsZS4iKTtjb25zdCB0PXIuZGF0YTtmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspdFtlXV49MjU1fXJldHVybiByfWlmKHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBKcGVnU3RyZWFtJiYhdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIXRoaXMubmVlZHNEZWNvZGUpe2xldCBlPW8qYztpZih0JiYhaCl7bGV0IHQ9ITE7c3dpdGNoKHRoaXMuY29sb3JTcGFjZS5uYW1lKXtjYXNlIkRldmljZUdyYXkiOmUqPTQ7dD0hMDticmVhaztjYXNlIkRldmljZVJHQiI6ZT1lLzMqNDt0PSEwO2JyZWFrO2Nhc2UiRGV2aWNlQ01ZSyI6dD0hMH1pZih0KXtjb25zdCB0PXRoaXMuZ2V0SW1hZ2VCeXRlcyhlLHtkcmF3V2lkdGg6aSxkcmF3SGVpZ2h0OmEsZm9yY2VSR0JBOiEwfSk7cmV0dXJuIHRoaXMuY3JlYXRlQml0bWFwKEQsaSxhLHQpfX1lbHNlIHN3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj0zO2Nhc2UiRGV2aWNlUkdCIjpjYXNlIkRldmljZUNNWUsiOnIua2luZD1iO3IuZGF0YT10aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOmksZHJhd0hlaWdodDphLGZvcmNlUkdCOiEwfSk7cmV0dXJuIGg/SW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHIpOnJ9fX1jb25zdCBsPXRoaXMuZ2V0SW1hZ2VCeXRlcyhvKmMse2ludGVybmFsOiEwfSksQz0wfGwubGVuZ3RoL2MqYS9vLFE9dGhpcy5nZXRDb21wb25lbnRzKGwpO2xldCBFLHUsZCxmLHAsbTtpZih0JiYhaCl7ZD1uZXcgT2Zmc2NyZWVuQ2FudmFzKGksYSk7Zj1kLmdldENvbnRleHQoIjJkIik7cD1mLmNyZWF0ZUltYWdlRGF0YShpLGEpO209cC5kYXRhfXIua2luZD1EO2lmKGV8fHRoaXMuc21hc2t8fHRoaXMubWFzayl7dCYmIWh8fChtPW5ldyBVaW50OENsYW1wZWRBcnJheShpKmEqNCkpO0U9MTt1PSEwO3RoaXMuZmlsbE9wYWNpdHkobSxpLGEsQyxRKX1lbHNle2lmKCF0fHxoKXtyLmtpbmQ9YjttPW5ldyBVaW50OENsYW1wZWRBcnJheShpKmEqMyk7RT0wfWVsc2V7bmV3IFVpbnQzMkFycmF5KG0uYnVmZmVyKS5maWxsKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzQyNzgxOTAwODA6MjU1KTtFPTF9dT0hMX10aGlzLm5lZWRzRGVjb2RlJiZ0aGlzLmRlY29kZUJ1ZmZlcihRKTt0aGlzLmNvbG9yU3BhY2UuZmlsbFJnYihtLG4sbyxpLGEsQyxnLFEsRSk7dSYmdGhpcy51bmRvUHJlYmxlbmQobSxpLEMpO2lmKHQmJiFoKXtmLnB1dEltYWdlRGF0YShwLDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDppLGhlaWdodDphLGJpdG1hcDpkLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9fXIuZGF0YT1tO3JldHVybiBoP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShyKTpyfWZpbGxHcmF5QnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5udW1Db21wcztpZigxIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFJlYWRpbmcgZ3JheSBzY2FsZSBmcm9tIGEgY29sb3IgaW1hZ2U6ICR7dH1gKTtjb25zdCBpPXRoaXMud2lkdGgsYT10aGlzLmhlaWdodCxyPXRoaXMuYnBjLHM9aSp0KnIrNz4+MyxuPXRoaXMuZ2V0SW1hZ2VCeXRlcyhhKnMse2ludGVybmFsOiEwfSksbz10aGlzLmdldENvbXBvbmVudHMobik7bGV0IGcsYztpZigxPT09cil7Yz1pKmE7aWYodGhpcy5uZWVkc0RlY29kZSlmb3IoZz0wO2c8YzsrK2cpZVtnXT1vW2ddLTEmMjU1O2Vsc2UgZm9yKGc9MDtnPGM7KytnKWVbZ109MjU1Ji1vW2ddO3JldHVybn10aGlzLm5lZWRzRGVjb2RlJiZ0aGlzLmRlY29kZUJ1ZmZlcihvKTtjPWkqYTtjb25zdCBoPTI1NS8oKDE8PHIpLTEpO2ZvcihnPTA7ZzxjOysrZyllW2ddPWgqb1tnXX1jcmVhdGVCaXRtYXAoZSx0LGksYSl7Y29uc3Qgcj1uZXcgT2Zmc2NyZWVuQ2FudmFzKHQsaSkscz1yLmdldENvbnRleHQoIjJkIik7bGV0IG47aWYoZT09PUQpbj1uZXcgSW1hZ2VEYXRhKGEsdCxpKTtlbHNle249cy5jcmVhdGVJbWFnZURhdGEodCxpKTtjb252ZXJ0VG9SR0JBKHtraW5kOmUsc3JjOmEsZGVzdDpuZXcgVWludDMyQXJyYXkobi5kYXRhLmJ1ZmZlciksd2lkdGg6dCxoZWlnaHQ6aSxpbnZlcnNlRGVjb2RlOnRoaXMubmVlZHNEZWNvZGV9KX1zLnB1dEltYWdlRGF0YShuLDAsMCk7cmV0dXJue2RhdGE6bnVsbCx3aWR0aDp0LGhlaWdodDppLGJpdG1hcDpyLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9fWdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDppLGZvcmNlUkdCQTphPSExLGZvcmNlUkdCOnI9ITEsaW50ZXJuYWw6cz0hMX0pe3RoaXMuaW1hZ2UucmVzZXQoKTt0aGlzLmltYWdlLmRyYXdXaWR0aD10fHx0aGlzLndpZHRoO3RoaXMuaW1hZ2UuZHJhd0hlaWdodD1pfHx0aGlzLmhlaWdodDt0aGlzLmltYWdlLmZvcmNlUkdCQT0hIWE7dGhpcy5pbWFnZS5mb3JjZVJHQj0hIXI7Y29uc3Qgbj10aGlzLmltYWdlLmdldEJ5dGVzKGUsdGhpcy5pZ25vcmVDb2xvclNwYWNlKTtpZihzfHx0aGlzLmltYWdlIGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtKXJldHVybiBuO2Fzc2VydChuIGluc3RhbmNlb2YgVWludDhBcnJheSwnUERGSW1hZ2UuZ2V0SW1hZ2VCeXRlczogVW5zdXBwb3J0ZWQgImltYWdlQnl0ZXMiIHR5cGUuJyk7cmV0dXJuIG5ldyBVaW50OEFycmF5KG4pfX1jb25zdCBGcj1PYmplY3QuZnJlZXplKHttYXhJbWFnZVNpemU6LTEsZGlzYWJsZUZvbnRGYWNlOiExLGlnbm9yZUVycm9yczohMSxpc0V2YWxTdXBwb3J0ZWQ6ITAsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6ITEsY2FudmFzTWF4QXJlYUluQnl0ZXM6LTEsZm9udEV4dHJhUHJvcGVydGllczohMSx1c2VTeXN0ZW1Gb250czohMCxjTWFwVXJsOm51bGwsc3RhbmRhcmRGb250RGF0YVVybDpudWxsfSksU3I9MSxrcj0yLFJyPVByb21pc2UucmVzb2x2ZSgpO2Z1bmN0aW9uIG5vcm1hbGl6ZUJsZW5kTW9kZShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9bm9ybWFsaXplQmxlbmRNb2RlKHQsITApO2lmKGUpcmV0dXJuIGV9d2FybihgVW5zdXBwb3J0ZWQgYmxlbmQgbW9kZSBBcnJheTogJHtlfWApO3JldHVybiJzb3VyY2Utb3ZlciJ9aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpcmV0dXJuIHQ/bnVsbDoic291cmNlLW92ZXIiO3N3aXRjaChlLm5hbWUpe2Nhc2UiTm9ybWFsIjpjYXNlIkNvbXBhdGlibGUiOnJldHVybiJzb3VyY2Utb3ZlciI7Y2FzZSJNdWx0aXBseSI6cmV0dXJuIm11bHRpcGx5IjtjYXNlIlNjcmVlbiI6cmV0dXJuInNjcmVlbiI7Y2FzZSJPdmVybGF5IjpyZXR1cm4ib3ZlcmxheSI7Y2FzZSJEYXJrZW4iOnJldHVybiJkYXJrZW4iO2Nhc2UiTGlnaHRlbiI6cmV0dXJuImxpZ2h0ZW4iO2Nhc2UiQ29sb3JEb2RnZSI6cmV0dXJuImNvbG9yLWRvZGdlIjtjYXNlIkNvbG9yQnVybiI6cmV0dXJuImNvbG9yLWJ1cm4iO2Nhc2UiSGFyZExpZ2h0IjpyZXR1cm4iaGFyZC1saWdodCI7Y2FzZSJTb2Z0TGlnaHQiOnJldHVybiJzb2Z0LWxpZ2h0IjtjYXNlIkRpZmZlcmVuY2UiOnJldHVybiJkaWZmZXJlbmNlIjtjYXNlIkV4Y2x1c2lvbiI6cmV0dXJuImV4Y2x1c2lvbiI7Y2FzZSJIdWUiOnJldHVybiJodWUiO2Nhc2UiU2F0dXJhdGlvbiI6cmV0dXJuInNhdHVyYXRpb24iO2Nhc2UiQ29sb3IiOnJldHVybiJjb2xvciI7Y2FzZSJMdW1pbm9zaXR5IjpyZXR1cm4ibHVtaW5vc2l0eSJ9aWYodClyZXR1cm4gbnVsbDt3YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlOiAke2UubmFtZX1gKTtyZXR1cm4ic291cmNlLW92ZXIifWZ1bmN0aW9uIGluY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KGUpe2UuZm49PT1YZSYmZS5hcmdzWzBdPy5jb3VudD4wJiZlLmFyZ3NbMF0uY291bnQrK31jbGFzcyBUaW1lU2xvdE1hbmFnZXJ7c3RhdGljIFRJTUVfU0xPVF9EVVJBVElPTl9NUz0yMDtzdGF0aWMgQ0hFQ0tfVElNRV9FVkVSWT0xMDA7Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0KCl9Y2hlY2soKXtpZigrK3RoaXMuY2hlY2tlZDxUaW1lU2xvdE1hbmFnZXIuQ0hFQ0tfVElNRV9FVkVSWSlyZXR1cm4hMTt0aGlzLmNoZWNrZWQ9MDtyZXR1cm4gdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpfXJlc2V0KCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrVGltZVNsb3RNYW5hZ2VyLlRJTUVfU0xPVF9EVVJBVElPTl9NUzt0aGlzLmNoZWNrZWQ9MH19Y2xhc3MgUGFydGlhbEV2YWx1YXRvcntjb25zdHJ1Y3Rvcih7eHJlZjplLGhhbmRsZXI6dCxwYWdlSW5kZXg6aSxpZEZhY3Rvcnk6YSxmb250Q2FjaGU6cixidWlsdEluQ01hcENhY2hlOnMsc3RhbmRhcmRGb250RGF0YUNhY2hlOm4sZ2xvYmFsSW1hZ2VDYWNoZTpvLHN5c3RlbUZvbnRDYWNoZTpnLG9wdGlvbnM6Yz1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9aTt0aGlzLmlkRmFjdG9yeT1hO3RoaXMuZm9udENhY2hlPXI7dGhpcy5idWlsdEluQ01hcENhY2hlPXM7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9bjt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9bzt0aGlzLnN5c3RlbUZvbnRDYWNoZT1nO3RoaXMub3B0aW9ucz1jfHxGcjt0aGlzLnR5cGUzRm9udFJlZnM9bnVsbDt0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGU9bmV3IFJlZ2lvbmFsSW1hZ2VDYWNoZTt0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQ9dGhpcy5mZXRjaEJ1aWx0SW5DTWFwLmJpbmQodGhpcyk7SW1hZ2VSZXNpemVyLnNldE1heEFyZWEodGhpcy5vcHRpb25zLmNhbnZhc01heEFyZWFJbkJ5dGVzKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMub3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9Z2V0IHBhcnNpbmdUeXBlM0ZvbnQoKXtyZXR1cm4hIXRoaXMudHlwZTNGb250UmVmc31jbG9uZShlPW51bGwpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTt0Lm9wdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucyxlKTtyZXR1cm4gdH1oYXNCbGVuZE1vZGVzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5vYmpJZCYmdC5oYXMoZS5vYmpJZCkpcmV0dXJuITE7Y29uc3QgaT1uZXcgUmVmU2V0KHQpO2Uub2JqSWQmJmkucHV0KGUub2JqSWQpO2NvbnN0IGE9W2VdLHI9dGhpcy54cmVmO2Zvcig7YS5sZW5ndGg7KXtjb25zdCBlPWEuc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgRGljdClmb3IobGV0IGUgb2YgdC5nZXRSYXdWYWx1ZXMoKSl7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoaS5oYXMoZSkpY29udGludWU7dHJ5e2U9ci5mZXRjaChlKX1jYXRjaCh0KXtpLnB1dChlKTtpbmZvKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJmkucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIE5hbWUpe2lmKCJOb3JtYWwiIT09dC5uYW1lKXJldHVybiEwfWVsc2UgaWYodm9pZCAwIT09dCYmQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBOYW1lJiYiTm9ybWFsIiE9PWUubmFtZSlyZXR1cm4hMH1jb25zdCBzPWUuZ2V0KCJYT2JqZWN0Iik7aWYocyBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIHMuZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGkuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPXIuZmV0Y2goZSl9Y2F0Y2godCl7aS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke3R9Ii5gKTtjb250aW51ZX19aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpY29udGludWU7ZS5kaWN0Lm9iaklkJiZpLnB1dChlLmRpY3Qub2JqSWQpO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJighdC5vYmpJZHx8IWkuaGFzKHQub2JqSWQpKSl7YS5wdXNoKHQpO3Qub2JqSWQmJmkucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2YgaSl0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChlKTtpZih0KXJldHVybiB0O2xldCBpO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuY01hcFVybCl7Y29uc3QgdD1gJHt0aGlzLm9wdGlvbnMuY01hcFVybH0ke2V9LmJjbWFwYCxhPWF3YWl0IGZldGNoKHQpO2lmKCFhLm9rKXRocm93IG5ldyBFcnJvcihgZmV0Y2hCdWlsdEluQ01hcDogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7dH0iIHdpdGggIiR7YS5zdGF0dXNUZXh0fSIuYCk7aT17Y01hcERhdGE6bmV3IFVpbnQ4QXJyYXkoYXdhaXQgYS5hcnJheUJ1ZmZlcigpKSxjb21wcmVzc2lvblR5cGU6bUEuQklOQVJZfX1lbHNlIGk9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hCdWlsdEluQ01hcCIse25hbWU6ZX0pO2kuY29tcHJlc3Npb25UeXBlIT09bUEuTk9ORSYmdGhpcy5idWlsdEluQ01hcENhY2hlLnNldChlLGkpO3JldHVybiBpfWFzeW5jIGZldGNoU3RhbmRhcmRGb250RGF0YShlKXtjb25zdCB0PXRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmdldChlKTtpZih0KXJldHVybiBuZXcgU3RyZWFtKHQpO2lmKHRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmIlN5bWJvbCIhPT1lJiYiWmFwZkRpbmdiYXRzIiE9PWUpcmV0dXJuIG51bGw7Y29uc3QgaT1XaSgpW2VdO2xldCBhO2lmKG51bGwhPT10aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCl7Y29uc3QgZT1gJHt0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybH0ke2l9YCx0PWF3YWl0IGZldGNoKGUpO3Qub2s/YT1uZXcgVWludDhBcnJheShhd2FpdCB0LmFycmF5QnVmZmVyKCkpOndhcm4oYGZldGNoU3RhbmRhcmRGb250RGF0YTogZmFpbGVkIHRvIGZldGNoIGZpbGUgIiR7ZX0iIHdpdGggIiR7dC5zdGF0dXNUZXh0fSIuYCl9ZWxzZSB0cnl7YT1hd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaFN0YW5kYXJkRm9udERhdGEiLHtmaWxlbmFtZTppfSl9Y2F0Y2goZSl7d2FybihgZmV0Y2hTdGFuZGFyZEZvbnREYXRhOiBmYWlsZWQgdG8gZmV0Y2ggZmlsZSAiJHtpfSIgd2l0aCAiJHtlfSIuYCl9aWYoIWEpcmV0dXJuIG51bGw7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUsYSk7cmV0dXJuIG5ldyBTdHJlYW0oYSl9YXN5bmMgYnVpbGRGb3JtWE9iamVjdChlLHQsaSxhLHIscyxuKXtjb25zdCBvPXQuZGljdCxnPWxvb2t1cE1hdHJpeChvLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKSxjPWxvb2t1cE5vcm1hbFJlY3Qoby5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCBoLGw7by5oYXMoIk9DIikmJihoPWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoby5nZXQoIk9DIiksZSkpO3ZvaWQgMCE9PWgmJmEuYWRkT3AoSGUsWyJPQyIsaF0pO2NvbnN0IEM9by5nZXQoIkdyb3VwIik7aWYoQyl7bD17bWF0cml4OmcsYmJveDpjLHNtYXNrOmksaXNvbGF0ZWQ6ITEsa25vY2tvdXQ6ITF9O2xldCB0PW51bGw7aWYoaXNOYW1lKEMuZ2V0KCJTIiksIlRyYW5zcGFyZW5jeSIpKXtsLmlzb2xhdGVkPUMuZ2V0KCJJIil8fCExO2wua25vY2tvdXQ9Qy5nZXQoIksiKXx8ITE7aWYoQy5oYXMoIkNTIikpe2NvbnN0IGk9Qy5nZXRSYXcoIkNTIiksYT1Db2xvclNwYWNlLmdldENhY2hlZChpLHRoaXMueHJlZixuKTt0PWF8fGF3YWl0IHRoaXMucGFyc2VDb2xvclNwYWNlKHtjczppLHJlc291cmNlczplLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm59KX19aWYoaT8uYmFja2Ryb3Ape3R8fD1Db2xvclNwYWNlLnNpbmdsZXRvbnMucmdiO2kuYmFja2Ryb3A9dC5nZXRSZ2IoaS5iYWNrZHJvcCwwKX1hLmFkZE9wKE9lLFtsXSl9Y29uc3QgUT1DP1tnLG51bGxdOltnLGNdO2EuYWRkT3AoVGUsUSk7YXdhaXQgdGhpcy5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTp0LHRhc2s6cixyZXNvdXJjZXM6by5nZXQoIlJlc291cmNlcyIpfHxlLG9wZXJhdG9yTGlzdDphLGluaXRpYWxTdGF0ZTpzfSk7YS5hZGRPcChxZSxbXSk7QyYmYS5hZGRPcChQZSxbbF0pO3ZvaWQgMCE9PWgmJmEuYWRkT3AodmUsW10pfV9zZW5kSW1nRGF0YShlLHQsaT0hMSl7Y29uc3QgYT10P1t0LmJpdG1hcHx8dC5kYXRhLmJ1ZmZlcl06bnVsbDtyZXR1cm4gdGhpcy5wYXJzaW5nVHlwZTNGb250fHxpP3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtlLCJJbWFnZSIsdF0sYSk6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW2UsdGhpcy5wYWdlSW5kZXgsIkltYWdlIix0XSxhKX1hc3luYyBidWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmk9ITEsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6cixsb2NhbEltYWdlQ2FjaGU6cyxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSl7Y29uc3Qgbz10LmRpY3QsZz1vLm9iaklkLGM9by5nZXQoIlciLCJXaWR0aCIpLGg9by5nZXQoIkgiLCJIZWlnaHQiKTtpZighY3x8Im51bWJlciIhPXR5cGVvZiBjfHwhaHx8Im51bWJlciIhPXR5cGVvZiBoKXt3YXJuKCJJbWFnZSBkaW1lbnNpb25zIGFyZSBtaXNzaW5nLCBvciBub3QgbnVtYmVycy4iKTtyZXR1cm59Y29uc3QgbD10aGlzLm9wdGlvbnMubWF4SW1hZ2VTaXplO2lmKC0xIT09bCYmYypoPmwpe2NvbnN0IGU9IkltYWdlIGV4Y2VlZGVkIG1heGltdW0gYWxsb3dlZCBzaXplIGFuZCB3YXMgcmVtb3ZlZC4iO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oZSk7cmV0dXJufXRocm93IG5ldyBFcnJvcihlKX1sZXQgQztvLmhhcygiT0MiKSYmKEM9YXdhaXQgdGhpcy5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhvLmdldCgiT0MiKSxlKSk7bGV0IFEsRTtpZihvLmdldCgiSU0iLCJJbWFnZU1hc2siKXx8ITEpe2NvbnN0IGU9by5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLGk9Yys3Pj4zLG49dC5nZXRCeXRlcyhpKmgpLGw9by5nZXRBcnJheSgiRCIsIkRlY29kZSIpO2lmKHRoaXMucGFyc2luZ1R5cGUzRm9udCl7UT1QREZJbWFnZS5jcmVhdGVSYXdNYXNrKHtpbWdBcnJheTpuLHdpZHRoOmMsaGVpZ2h0OmgsaW1hZ2VJc0Zyb21EZWNvZGVTdHJlYW06dCBpbnN0YW5jZW9mIERlY29kZVN0cmVhbSxpbnZlcnNlRGVjb2RlOmw/LlswXT4wLGludGVycG9sYXRlOmV9KTtRLmNhY2hlZD0hIXI7RT1bUV07YS5hZGRJbWFnZU9wcyhYZSxFLEMpO2lmKHIpe2NvbnN0IGU9e2ZuOlhlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6Q307cy5zZXQocixnLGUpO2cmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxnLGUpfXJldHVybn1RPWF3YWl0IFBERkltYWdlLmNyZWF0ZU1hc2soe2ltZ0FycmF5Om4sd2lkdGg6YyxoZWlnaHQ6aCxpbWFnZUlzRnJvbURlY29kZVN0cmVhbTp0IGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtLGludmVyc2VEZWNvZGU6bD8uWzBdPjAsaW50ZXJwb2xhdGU6ZSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDp0aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR9KTtpZihRLmlzU2luZ2xlT3BhcXVlUGl4ZWwpe2EuYWRkSW1hZ2VPcHMoZXQsW10sQyk7aWYocil7Y29uc3QgZT17Zm46ZXQsYXJnczpbXSxvcHRpb25hbENvbnRlbnQ6Q307cy5zZXQocixnLGUpO2cmJnRoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5zZXQobnVsbCxnLGUpfXJldHVybn1jb25zdCB1PWBtYXNrXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gO2EuYWRkRGVwZW5kZW5jeSh1KTtRLmRhdGFMZW49US5iaXRtYXA/US53aWR0aCpRLmhlaWdodCo0OlEuZGF0YS5sZW5ndGg7dGhpcy5fc2VuZEltZ0RhdGEodSxRKTtFPVt7ZGF0YTp1LHdpZHRoOlEud2lkdGgsaGVpZ2h0OlEuaGVpZ2h0LGludGVycG9sYXRlOlEuaW50ZXJwb2xhdGUsY291bnQ6MX1dO2EuYWRkSW1hZ2VPcHMoWGUsRSxDKTtpZihyKXtjb25zdCBlPXtmbjpYZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkN9O3Muc2V0KHIsZyxlKTtnJiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsZyxlKX1yZXR1cm59aWYoaSYmYytoPDIwMCYmIW8uaGFzKCJTTWFzayIpJiYhby5oYXMoIk1hc2siKSl7dHJ5e2NvbnN0IHI9bmV3IFBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmkscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufSk7UT1hd2FpdCByLmNyZWF0ZUltYWdlRGF0YSghMCwhMSk7YS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD10aGlzLm9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7YS5hZGRJbWFnZU9wcyhfZSxbUV0sQyl9Y2F0Y2goZSl7Y29uc3QgdD1gVW5hYmxlIHRvIGRlY29kZSBpbmxpbmUgaW1hZ2U6ICIke2V9Ii5gO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBFcnJvcih0KTt3YXJuKHQpfXJldHVybn1sZXQgdT1gaW1nXyR7dGhpcy5pZEZhY3RvcnkuY3JlYXRlT2JqSWQoKX1gLGQ9ITE7aWYodGhpcy5wYXJzaW5nVHlwZTNGb250KXU9YCR7dGhpcy5pZEZhY3RvcnkuZ2V0RG9jSWQoKX1fdHlwZTNfJHt1fWA7ZWxzZSBpZihyJiZnKXtkPXRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zaG91bGRDYWNoZShnLHRoaXMucGFnZUluZGV4KTtpZihkKXthc3NlcnQoIWksIkNhbm5vdCBjYWNoZSBhbiBpbmxpbmUgaW1hZ2UgZ2xvYmFsbHkuIik7dT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke3V9YH19YS5hZGREZXBlbmRlbmN5KHUpO0U9W3UsYyxoXTthLmFkZEltYWdlT3BzKFZlLEUsQyk7aWYoZCl7aWYodGhpcy5nbG9iYWxJbWFnZUNhY2hlLmhhc0RlY29kZUZhaWxlZChnKSl7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoZyx7b2JqSWQ6dSxmbjpWZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkMsYnl0ZVNpemU6MH0pO3RoaXMuX3NlbmRJbWdEYXRhKHUsbnVsbCxkKTtyZXR1cm59aWYoYypoPjI1ZTR8fG8uaGFzKCJTTWFzayIpfHxvLmhhcygiTWFzayIpKXtjb25zdCBlPWF3YWl0IHRoaXMuaGFuZGxlci5zZW5kV2l0aFByb21pc2UoImNvbW1vbm9iaiIsW3UsIkNvcHlMb2NhbEltYWdlIix7aW1hZ2VSZWY6Z31dKTtpZihlKXt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YShnLHtvYmpJZDp1LGZuOlZlLGFyZ3M6RSxvcHRpb25hbENvbnRlbnQ6QyxieXRlU2l6ZTowfSk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsZSk7cmV0dXJufX19UERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTppLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pLnRoZW4oKGFzeW5jIGU9PntRPWF3YWl0IGUuY3JlYXRlSW1hZ2VEYXRhKCExLHRoaXMub3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCk7US5kYXRhTGVuPVEuYml0bWFwP1Eud2lkdGgqUS5oZWlnaHQqNDpRLmRhdGEubGVuZ3RoO1EucmVmPWc7ZCYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKGcsUS5kYXRhTGVuKTtyZXR1cm4gdGhpcy5fc2VuZEltZ0RhdGEodSxRLGQpfSkpLmNhdGNoKChlPT57d2FybihgVW5hYmxlIHRvIGRlY29kZSBpbWFnZSAiJHt1fSI6ICIke2V9Ii5gKTtnJiZ0aGlzLmdsb2JhbEltYWdlQ2FjaGUuYWRkRGVjb2RlRmFpbGVkKGcpO3JldHVybiB0aGlzLl9zZW5kSW1nRGF0YSh1LG51bGwsZCl9KSk7aWYocil7Y29uc3QgZT17Zm46VmUsYXJnczpFLG9wdGlvbmFsQ29udGVudDpDfTtzLnNldChyLGcsZSk7aWYoZyl7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLGcsZSk7ZCYmdGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNldERhdGEoZyx7b2JqSWQ6dSxmbjpWZSxhcmdzOkUsb3B0aW9uYWxDb250ZW50OkMsYnl0ZVNpemU6MH0pfX19aGFuZGxlU01hc2soZSx0LGksYSxyLHMpe2NvbnN0IG49ZS5nZXQoIkciKSxvPXtzdWJ0eXBlOmUuZ2V0KCJTIikubmFtZSxiYWNrZHJvcDplLmdldCgiQkMiKX0sZz1lLmdldCgiVFIiKTtpZihpc1BERkZ1bmN0aW9uKGcpKXtjb25zdCBlPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUoZyksdD1uZXcgVWludDhBcnJheSgyNTYpLGk9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IGE9MDthPDI1NjthKyspe2lbMF09YS8yNTU7ZShpLDAsaSwwKTt0W2FdPTI1NSppWzBdfDB9by50cmFuc2Zlck1hcD10fXJldHVybiB0aGlzLmJ1aWxkRm9ybVhPYmplY3QodCxuLG8saSxhLHIuc3RhdGUuY2xvbmUoKSxzKX1oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKGUpe2xldCB0O2lmKEFycmF5LmlzQXJyYXkoZSkpdD1lO2Vsc2V7aWYoIWlzUERGRnVuY3Rpb24oZSkpcmV0dXJuIG51bGw7dD1bZV19Y29uc3QgaT1bXTtsZXQgYT0wLHI9MDtmb3IoY29uc3QgZSBvZiB0KXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO2ErKztpZihpc05hbWUodCwiSWRlbnRpdHkiKSl7aS5wdXNoKG51bGwpO2NvbnRpbnVlfWlmKCFpc1BERkZ1bmN0aW9uKHQpKXJldHVybiBudWxsO2NvbnN0IHM9dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZSh0KSxuPW5ldyBVaW50OEFycmF5KDI1Niksbz1uZXcgRmxvYXQzMkFycmF5KDEpO2ZvcihsZXQgZT0wO2U8MjU2O2UrKyl7b1swXT1lLzI1NTtzKG8sMCxvLDApO25bZV09MjU1Km9bMF18MH1pLnB1c2gobik7cisrfXJldHVybiAxIT09YSYmNCE9PWF8fDA9PT1yP251bGw6aX1oYW5kbGVUaWxpbmdUeXBlKGUsdCxpLGEscixzLG4sbyl7Y29uc3QgZz1uZXcgT3BlcmF0b3JMaXN0LGM9RGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5OltyLmdldCgiUmVzb3VyY2VzIiksaV19KTtyZXR1cm4gdGhpcy5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTphLHRhc2s6bixyZXNvdXJjZXM6YyxvcGVyYXRvckxpc3Q6Z30pLnRoZW4oKGZ1bmN0aW9uKCl7Y29uc3QgaT1nLmdldElSKCksYT1nZXRUaWxpbmdQYXR0ZXJuSVIoaSxyLHQpO3MuYWRkRGVwZW5kZW5jaWVzKGcuZGVwZW5kZW5jaWVzKTtzLmFkZE9wKGUsYSk7ci5vYmpJZCYmby5zZXQobnVsbCxyLm9iaklkLHtvcGVyYXRvckxpc3RJUjppLGRpY3Q6cn0pfSkpLmNhdGNoKChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGhhbmRsZVRpbGluZ1R5cGUgLSBpZ25vcmluZyBwYXR0ZXJuOiAiJHtlfSIuYCl9fSkpfWFzeW5jIGhhbmRsZVNldEZvbnQoZSx0LGksYSxyLHMsbj1udWxsLG89bnVsbCl7Y29uc3QgZz10Py5bMF1pbnN0YW5jZW9mIE5hbWU/dFswXS5uYW1lOm51bGw7bGV0IGM9YXdhaXQgdGhpcy5sb2FkRm9udChnLGksZSxuLG8pO2lmKGMuZm9udC5pc1R5cGUzRm9udCl0cnl7YXdhaXQgYy5sb2FkVHlwZTNEYXRhKHRoaXMsZSxyKTthLmFkZERlcGVuZGVuY2llcyhjLnR5cGUzRGVwZW5kZW5jaWVzKX1jYXRjaChlKXtjPW5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBFcnJvckZvbnQoYFR5cGUzIGZvbnQgbG9hZCBlcnJvcjogJHtlfWApLGRpY3Q6Yy5mb250LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSl9cy5mb250PWMuZm9udDtjLnNlbmQodGhpcy5oYW5kbGVyKTtyZXR1cm4gYy5sb2FkZWROYW1lfWhhbmRsZVRleHQoZSx0KXtjb25zdCBpPXQuZm9udCxhPWkuY2hhcnNUb0dseXBocyhlKTtpZihpLmRhdGEpeyghISh0LnRleHRSZW5kZXJpbmdNb2RlJnkpfHwiUGF0dGVybiI9PT10LmZpbGxDb2xvclNwYWNlLm5hbWV8fGkuZGlzYWJsZUZvbnRGYWNlfHx0aGlzLm9wdGlvbnMuZGlzYWJsZUZvbnRGYWNlKSYmUGFydGlhbEV2YWx1YXRvci5idWlsZEZvbnRQYXRocyhpLGEsdGhpcy5oYW5kbGVyLHRoaXMub3B0aW9ucyl9cmV0dXJuIGF9ZW5zdXJlU3RhdGVGb250KGUpe2lmKGUuZm9udClyZXR1cm47Y29uc3QgdD1uZXcgRm9ybWF0RXJyb3IoIk1pc3Npbmcgc2V0Rm9udCAoVGYpIG9wZXJhdG9yIGJlZm9yZSB0ZXh0IHJlbmRlcmluZyBvcGVyYXRvci4iKTtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyB0O3dhcm4oYGVuc3VyZVN0YXRlRm9udDogIiR7dH0iLmApfWFzeW5jIHNldEdTdGF0ZSh7cmVzb3VyY2VzOmUsZ1N0YXRlOnQsb3BlcmF0b3JMaXN0OmksY2FjaGVLZXk6YSx0YXNrOnIsc3RhdGVNYW5hZ2VyOnMsbG9jYWxHU3RhdGVDYWNoZTpuLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm99KXtjb25zdCBnPXQub2JqSWQ7bGV0IGM9ITA7Y29uc3QgaD1bXTtsZXQgbD1Qcm9taXNlLnJlc29sdmUoKTtmb3IoY29uc3QgYSBvZiB0LmdldEtleXMoKSl7Y29uc3Qgbj10LmdldChhKTtzd2l0Y2goYSl7Y2FzZSJUeXBlIjpicmVhaztjYXNlIkxXIjpjYXNlIkxDIjpjYXNlIkxKIjpjYXNlIk1MIjpjYXNlIkQiOmNhc2UiUkkiOmNhc2UiRkwiOmNhc2UiQ0EiOmNhc2UiY2EiOmgucHVzaChbYSxuXSk7YnJlYWs7Y2FzZSJGb250IjpjPSExO2w9bC50aGVuKCgoKT0+dGhpcy5oYW5kbGVTZXRGb250KGUsbnVsbCxuWzBdLGkscixzLnN0YXRlKS50aGVuKChmdW5jdGlvbihlKXtpLmFkZERlcGVuZGVuY3koZSk7aC5wdXNoKFthLFtlLG5bMV1dXSl9KSkpKTticmVhaztjYXNlIkJNIjpoLnB1c2goW2Esbm9ybWFsaXplQmxlbmRNb2RlKG4pXSk7YnJlYWs7Y2FzZSJTTWFzayI6aWYoaXNOYW1lKG4sIk5vbmUiKSl7aC5wdXNoKFthLCExXSk7YnJlYWt9aWYobiBpbnN0YW5jZW9mIERpY3Qpe2M9ITE7bD1sLnRoZW4oKCgpPT50aGlzLmhhbmRsZVNNYXNrKG4sZSxpLHIscyxvKSkpO2gucHVzaChbYSwhMF0pfWVsc2Ugd2FybigiVW5zdXBwb3J0ZWQgU01hc2sgdHlwZSIpO2JyZWFrO2Nhc2UiVFIiOmNvbnN0IHQ9dGhpcy5oYW5kbGVUcmFuc2ZlckZ1bmN0aW9uKG4pO2gucHVzaChbYSx0XSk7YnJlYWs7Y2FzZSJPUCI6Y2FzZSJvcCI6Y2FzZSJPUE0iOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJTTSI6Y2FzZSJTQSI6Y2FzZSJBSVMiOmNhc2UiVEsiOmluZm8oImdyYXBoaWMgc3RhdGUgb3BlcmF0b3IgIithKTticmVhaztkZWZhdWx0OmluZm8oIlVua25vd24gZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK2EpfX1hd2FpdCBsO2gubGVuZ3RoPjAmJmkuYWRkT3AoTkEsW2hdKTtjJiZuLnNldChhLGcsaCl9bG9hZEZvbnQoZSx0LGksYT1udWxsLHI9bnVsbCl7Y29uc3QgZXJyb3JGb250PWFzeW5jKCk9Pm5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBFcnJvckZvbnQoYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCksZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSk7bGV0IHM7aWYodCl0IGluc3RhbmNlb2YgUmVmJiYocz10KTtlbHNle2NvbnN0IHQ9aS5nZXQoIkZvbnQiKTt0JiYocz10LmdldFJhdyhlKSl9aWYocyl7aWYodGhpcy50eXBlM0ZvbnRSZWZzPy5oYXMocykpcmV0dXJuIGVycm9yRm9udCgpO2lmKHRoaXMuZm9udENhY2hlLmhhcyhzKSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHMpO3RyeXt0PXRoaXMueHJlZi5mZXRjaElmUmVmKHMpfWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gbG9va3VwIGZhaWxlZDogIiR7ZX0iLmApfX1pZighKHQgaW5zdGFuY2VvZiBEaWN0KSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMmJiF0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe3dhcm4oYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7cmV0dXJuIGVycm9yRm9udCgpfXdhcm4oYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUgLS0gYXR0ZW1wdGluZyB0byBmYWxsYmFjayB0byBhIGRlZmF1bHQgZm9udC5gKTt0PWF8fFBhcnRpYWxFdmFsdWF0b3IuZmFsbGJhY2tGb250RGljdH1pZih0LmNhY2hlS2V5JiZ0aGlzLmZvbnRDYWNoZS5oYXModC5jYWNoZUtleSkpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldCh0LmNhY2hlS2V5KTtjb25zdHtwcm9taXNlOm4scmVzb2x2ZTpvfT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTtsZXQgZzt0cnl7Zz10aGlzLnByZUV2YWx1YXRlRm9udCh0KTtnLmNzc0ZvbnRJbmZvPXJ9Y2F0Y2goZSl7d2FybihgbG9hZEZvbnQgLSBwcmVFdmFsdWF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7cmV0dXJuIGVycm9yRm9udCgpfWNvbnN0e2Rlc2NyaXB0b3I6YyxoYXNoOmh9PWcsbD1zIGluc3RhbmNlb2YgUmVmO2xldCBDO2lmKGgmJmMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWMuZm9udEFsaWFzZXN8fD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGVbaF0pe2NvbnN0IHQ9ZVtoXS5hbGlhc1JlZjtpZihsJiZ0JiZ0aGlzLmZvbnRDYWNoZS5oYXModCkpe3RoaXMuZm9udENhY2hlLnB1dEFsaWFzKHMsdCk7cmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChzKX19ZWxzZSBlW2hdPXtmb250SUQ6dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCl9O2wmJihlW2hdLmFsaWFzUmVmPXMpO0M9ZVtoXS5mb250SUR9ZWxzZSBDPXRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpO2Fzc2VydChDPy5zdGFydHNXaXRoKCJmIiksJ1RoZSAiZm9udElEIiBtdXN0IGJlIChjb3JyZWN0bHkpIGRlZmluZWQuJyk7aWYobCl0aGlzLmZvbnRDYWNoZS5wdXQocyxuKTtlbHNle3QuY2FjaGVLZXk9YGNhY2hlS2V5XyR7Q31gO3RoaXMuZm9udENhY2hlLnB1dCh0LmNhY2hlS2V5LG4pfXQubG9hZGVkTmFtZT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke0N9YDt0aGlzLnRyYW5zbGF0ZUZvbnQoZykudGhlbigoZT0+e28obmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250OmUsZGljdDp0LGV2YWx1YXRvck9wdGlvbnM6dGhpcy5vcHRpb25zfSkpfSkpLmNhdGNoKChlPT57d2FybihgbG9hZEZvbnQgLSB0cmFuc2xhdGVGb250IGZhaWxlZDogIiR7ZX0iLmApO28obmV3IFRyYW5zbGF0ZWRGb250KHtsb2FkZWROYW1lOnQubG9hZGVkTmFtZSxmb250Om5ldyBFcnJvckZvbnQoZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTplKSxkaWN0OnQsZXZhbHVhdG9yT3B0aW9uczp0aGlzLm9wdGlvbnN9KSl9KSk7cmV0dXJuIG59YnVpbGRQYXRoKGUsdCxpLGE9ITEpe2NvbnN0IHI9ZS5sZW5ndGgtMTtpfHwoaT1bXSk7aWYocjwwfHxlLmZuQXJyYXlbcl0hPT10dCl7aWYoYSl7d2FybihgRW5jb3VudGVyZWQgcGF0aCBvcGVyYXRvciAiJHt0fSIgaW5zaWRlIG9mIGEgdGV4dCBvYmplY3QuYCk7ZS5hZGRPcChHQSxudWxsKX1sZXQgcjtzd2l0Y2godCl7Y2FzZSBLQTpjb25zdCBlPWlbMF0raVsyXSx0PWlbMV0raVszXTtyPVtNYXRoLm1pbihpWzBdLGUpLE1hdGgubWluKGlbMV0sdCksTWF0aC5tYXgoaVswXSxlKSxNYXRoLm1heChpWzFdLHQpXTticmVhaztjYXNlIFVBOmNhc2UgTEE6cj1baVswXSxpWzFdLGlbMF0saVsxXV07YnJlYWs7ZGVmYXVsdDpyPVsxLzAsMS8wLC0xLzAsLTEvMF19ZS5hZGRPcCh0dCxbW3RdLGkscl0pO2EmJmUuYWRkT3AoeEEsbnVsbCl9ZWxzZXtjb25zdCBhPWUuYXJnc0FycmF5W3JdO2FbMF0ucHVzaCh0KTthWzFdLnB1c2goLi4uaSk7Y29uc3Qgcz1hWzJdO3N3aXRjaCh0KXtjYXNlIEtBOmNvbnN0IGU9aVswXStpWzJdLHQ9aVsxXStpWzNdO3NbMF09TWF0aC5taW4oc1swXSxpWzBdLGUpO3NbMV09TWF0aC5taW4oc1sxXSxpWzFdLHQpO3NbMl09TWF0aC5tYXgoc1syXSxpWzBdLGUpO3NbM109TWF0aC5tYXgoc1szXSxpWzFdLHQpO2JyZWFrO2Nhc2UgVUE6Y2FzZSBMQTpzWzBdPU1hdGgubWluKHNbMF0saVswXSk7c1sxXT1NYXRoLm1pbihzWzFdLGlbMV0pO3NbMl09TWF0aC5tYXgoc1syXSxpWzBdKTtzWzNdPU1hdGgubWF4KHNbM10saVsxXSl9fX1wYXJzZUNvbG9yU3BhY2Uoe2NzOmUscmVzb3VyY2VzOnQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aX0pe3JldHVybiBDb2xvclNwYWNlLnBhcnNlQXN5bmMoe2NzOmUseHJlZjp0aGlzLnhyZWYscmVzb3VyY2VzOnQscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxsb2NhbENvbG9yU3BhY2VDYWNoZTppfSkuY2F0Y2goKGU9PntpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcGFyc2VDb2xvclNwYWNlIC0gaWdub3JpbmcgQ29sb3JTcGFjZTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9KSl9cGFyc2VTaGFkaW5nKHtzaGFkaW5nOmUscmVzb3VyY2VzOnQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aSxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6YX0pe2xldCByLHM9YS5nZXQoZSk7aWYocylyZXR1cm4gczt0cnl7cj1QYXR0ZXJuLnBhcnNlU2hhZGluZyhlLHRoaXMueHJlZix0LHRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxpKS5nZXRJUigpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBwYXJzZVNoYWRpbmcgLSBpZ25vcmluZyBzaGFkaW5nOiAiJHt0fSIuYCk7YS5zZXQoZSxudWxsKTtyZXR1cm4gbnVsbH10aHJvdyB0fXM9YHBhdHRlcm5fJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7dGhpcy5wYXJzaW5nVHlwZTNGb250JiYocz1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke3N9YCk7YS5zZXQoZSxzKTt0aGlzLnBhcnNpbmdUeXBlM0ZvbnQ/dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW3MsIlBhdHRlcm4iLHJdKTp0aGlzLmhhbmRsZXIuc2VuZCgib2JqIixbcyx0aGlzLnBhZ2VJbmRleCwiUGF0dGVybiIscl0pO3JldHVybiBzfWhhbmRsZUNvbG9yTihlLHQsaSxhLHIscyxuLG8sZyxjKXtjb25zdCBoPWkucG9wKCk7aWYoaCBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IGw9ci5nZXRSYXcoaC5uYW1lKSxDPWwgaW5zdGFuY2VvZiBSZWYmJmcuZ2V0QnlSZWYobCk7aWYoQyl0cnl7Y29uc3Qgcj1hLmJhc2U/YS5iYXNlLmdldFJnYihpLDApOm51bGwscz1nZXRUaWxpbmdQYXR0ZXJuSVIoQy5vcGVyYXRvckxpc3RJUixDLmRpY3Qscik7ZS5hZGRPcCh0LHMpO3JldHVybn1jYXRjaHt9Y29uc3QgUT10aGlzLnhyZWYuZmV0Y2hJZlJlZihsKTtpZihRKXtjb25zdCByPVEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP1EuZGljdDpRLGg9ci5nZXQoIlBhdHRlcm5UeXBlIik7aWYoaD09PVNyKXtjb25zdCBvPWEuYmFzZT9hLmJhc2UuZ2V0UmdiKGksMCk6bnVsbDtyZXR1cm4gdGhpcy5oYW5kbGVUaWxpbmdUeXBlKHQsbyxzLFEscixlLG4sZyl9aWYoaD09PWtyKXtjb25zdCBpPXIuZ2V0KCJTaGFkaW5nIiksYT10aGlzLnBhcnNlU2hhZGluZyh7c2hhZGluZzppLHJlc291cmNlczpzLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm8sbG9jYWxTaGFkaW5nUGF0dGVybkNhY2hlOmN9KTtpZihhKXtjb25zdCBpPWxvb2t1cE1hdHJpeChyLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTtlLmFkZE9wKHQsWyJTaGFkaW5nIixhLGldKX1yZXR1cm59dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIFBhdHRlcm5UeXBlOiAke2h9YCl9fXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuTmFtZTogJHtofWApfV9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsdCxpKXtpZigrK3Q+MTApe3dhcm4oIlZpc2liaWxpdHkgZXhwcmVzc2lvbiBpcyB0b28gZGVlcGx5IG5lc3RlZCIpO3JldHVybn1jb25zdCBhPWUubGVuZ3RoLHI9dGhpcy54cmVmLmZldGNoSWZSZWYoZVswXSk7aWYoIShhPDIpJiZyIGluc3RhbmNlb2YgTmFtZSl7c3dpdGNoKHIubmFtZSl7Y2FzZSJBbmQiOmNhc2UiT3IiOmNhc2UiTm90IjppLnB1c2goci5uYW1lKTticmVhaztkZWZhdWx0Ondhcm4oYEludmFsaWQgb3BlcmF0b3IgJHtyLm5hbWV9IGluIHZpc2liaWxpdHkgZXhwcmVzc2lvbmApO3JldHVybn1mb3IobGV0IHI9MTtyPGE7cisrKXtjb25zdCBhPWVbcl0scz10aGlzLnhyZWYuZmV0Y2hJZlJlZihhKTtpZihBcnJheS5pc0FycmF5KHMpKXtjb25zdCBlPVtdO2kucHVzaChlKTt0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKHMsdCxlKX1lbHNlIGEgaW5zdGFuY2VvZiBSZWYmJmkucHVzaChhLnRvU3RyaW5nKCkpfX1lbHNlIHdhcm4oIkludmFsaWQgdmlzaWJpbGl0eSBleHByZXNzaW9uIil9YXN5bmMgcGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZSx0KXtsZXQgaTtpZihlIGluc3RhbmNlb2YgTmFtZSl7aT10LmdldCgiUHJvcGVydGllcyIpLmdldChlLm5hbWUpfWVsc2V7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJPcHRpb25hbCBjb250ZW50IHByb3BlcnRpZXMgbWFsZm9ybWVkLiIpO2k9ZX1jb25zdCBhPWkuZ2V0KCJUeXBlIik/Lm5hbWU7aWYoIk9DRyI9PT1hKXJldHVybnt0eXBlOmEsaWQ6aS5vYmpJZH07aWYoIk9DTUQiPT09YSl7Y29uc3QgZT1pLmdldCgiVkUiKTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PVtdO3RoaXMuX3BhcnNlVmlzaWJpbGl0eUV4cHJlc3Npb24oZSwwLHQpO2lmKHQubGVuZ3RoPjApcmV0dXJue3R5cGU6Ik9DTUQiLGV4cHJlc3Npb246dH19Y29uc3QgdD1pLmdldCgiT0NHcyIpO2lmKEFycmF5LmlzQXJyYXkodCl8fHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPVtdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IGkgb2YgdCllLnB1c2goaS50b1N0cmluZygpKTtlbHNlIGUucHVzaCh0Lm9iaklkKTtyZXR1cm57dHlwZTphLGlkczplLHBvbGljeTppLmdldCgiUCIpaW5zdGFuY2VvZiBOYW1lP2kuZ2V0KCJQIikubmFtZTpudWxsLGV4cHJlc3Npb246bnVsbH19aWYodCBpbnN0YW5jZW9mIFJlZilyZXR1cm57dHlwZTphLGlkOnQudG9TdHJpbmcoKX19cmV0dXJuIG51bGx9Z2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06ZSx0YXNrOnQscmVzb3VyY2VzOmksb3BlcmF0b3JMaXN0OmEsaW5pdGlhbFN0YXRlOnI9bnVsbCxmYWxsYmFja0ZvbnREaWN0OnM9bnVsbH0pe2l8fD1EaWN0LmVtcHR5O3J8fD1uZXcgRXZhbFN0YXRlO2lmKCFhKXRocm93IG5ldyBFcnJvcignZ2V0T3BlcmF0b3JMaXN0OiBtaXNzaW5nICJvcGVyYXRvckxpc3QiIHBhcmFtZXRlcicpO2NvbnN0IG49dGhpcyxvPXRoaXMueHJlZjtsZXQgZz0hMTtjb25zdCBjPW5ldyBMb2NhbEltYWdlQ2FjaGUsaD1uZXcgTG9jYWxDb2xvclNwYWNlQ2FjaGUsbD1uZXcgTG9jYWxHU3RhdGVDYWNoZSxDPW5ldyBMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZSxRPW5ldyBNYXAsRT1pLmdldCgiWE9iamVjdCIpfHxEaWN0LmVtcHR5LHU9aS5nZXQoIlBhdHRlcm4iKXx8RGljdC5lbXB0eSxkPW5ldyBTdGF0ZU1hbmFnZXIociksZj1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbyxkKSxwPW5ldyBUaW1lU2xvdE1hbmFnZXI7ZnVuY3Rpb24gY2xvc2VQZW5kaW5nUmVzdG9yZU9QUyhlKXtmb3IobGV0IGU9MCx0PWYuc2F2ZWRTdGF0ZXNEZXB0aDtlPHQ7ZSsrKWEuYWRkT3AoeEEsW10pfXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxyKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe1Byb21pc2UuYWxsKFt0LGEucmVhZHldKS50aGVuKChmdW5jdGlvbigpe3RyeXtwcm9taXNlQm9keShlLHIpfWNhdGNoKGUpe3IoZSl9fSkscil9O3QuZW5zdXJlTm90VGVybWluYXRlZCgpO3AucmVzZXQoKTtjb25zdCBtPXt9O2xldCB5LHcsYixELFMsaztmb3IoOyEoeT1wLmNoZWNrKCkpOyl7bS5hcmdzPW51bGw7aWYoIWYucmVhZChtKSlicmVhaztsZXQgZT1tLmFyZ3Mscj1tLmZuO3N3aXRjaCgwfHIpe2Nhc2UgTWU6az1lWzBdaW5zdGFuY2VvZiBOYW1lO1M9ZVswXS5uYW1lO2lmKGspe2NvbnN0IHQ9Yy5nZXRCeU5hbWUoUyk7aWYodCl7YS5hZGRJbWFnZU9wcyh0LmZuLHQuYXJncyx0Lm9wdGlvbmFsQ29udGVudCk7aW5jcmVtZW50Q2FjaGVkSW1hZ2VNYXNrQ291bnQodCk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHIpe2lmKCFrKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7bGV0IHM9RS5nZXRSYXcoUyk7aWYocyBpbnN0YW5jZW9mIFJlZil7Y29uc3QgdD1jLmdldEJ5UmVmKHMpfHxuLl9yZWdpb25hbEltYWdlQ2FjaGUuZ2V0QnlSZWYocyk7aWYodCl7YS5hZGRJbWFnZU9wcyh0LmZuLHQuYXJncyx0Lm9wdGlvbmFsQ29udGVudCk7aW5jcmVtZW50Q2FjaGVkSW1hZ2VNYXNrQ291bnQodCk7ZSgpO3JldHVybn1jb25zdCBpPW4uZ2xvYmFsSW1hZ2VDYWNoZS5nZXREYXRhKHMsbi5wYWdlSW5kZXgpO2lmKGkpe2EuYWRkRGVwZW5kZW5jeShpLm9iaklkKTthLmFkZEltYWdlT3BzKGkuZm4saS5hcmdzLGkub3B0aW9uYWxDb250ZW50KTtlKCk7cmV0dXJufXM9by5mZXRjaChzKX1pZighKHMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3QgZz1zLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoIShnIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09Zy5uYW1lKWlmKCJJbWFnZSIhPT1nLm5hbWUpe2lmKCJQUyIhPT1nLm5hbWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmhhbmRsZWQgWE9iamVjdCBzdWJ0eXBlICR7Zy5uYW1lfWApO2luZm8oIklnbm9yZWQgWE9iamVjdCBzdWJ0eXBlIFBTIik7ZSgpfWVsc2Ugbi5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6aSxpbWFnZTpzLG9wZXJhdG9yTGlzdDphLGNhY2hlS2V5OlMsbG9jYWxJbWFnZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6aH0pLnRoZW4oZSxyKTtlbHNle2Quc2F2ZSgpO24uYnVpbGRGb3JtWE9iamVjdChpLHMsbnVsbCxhLHQsZC5zdGF0ZS5jbG9uZSgpLGgpLnRoZW4oKGZ1bmN0aW9uKCl7ZC5yZXN0b3JlKCk7ZSgpfSkscil9fSkpLmNhdGNoKChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgWE9iamVjdDogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2UgcmU6dmFyIFI9ZVsxXTtuZXh0KG4uaGFuZGxlU2V0Rm9udChpLGUsbnVsbCxhLHQsZC5zdGF0ZSxzKS50aGVuKChmdW5jdGlvbihlKXthLmFkZERlcGVuZGVuY3koZSk7YS5hZGRPcChyZSxbZSxSXSl9KSkpO3JldHVybjtjYXNlICRBOmc9ITA7YnJlYWs7Y2FzZSBBZTpnPSExO2JyZWFrO2Nhc2UgeGU6dmFyIE49ZVswXS5jYWNoZUtleTtpZihOKXtjb25zdCB0PWMuZ2V0QnlOYW1lKE4pO2lmKHQpe2EuYWRkSW1hZ2VPcHModC5mbix0LmFyZ3MsdC5vcHRpb25hbENvbnRlbnQpO2luY3JlbWVudENhY2hlZEltYWdlTWFza0NvdW50KHQpO2U9bnVsbDtjb250aW51ZX19bmV4dChuLmJ1aWxkUGFpbnRJbWFnZVhPYmplY3Qoe3Jlc291cmNlczppLGltYWdlOmVbMF0saXNJbmxpbmU6ITAsb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Tixsb2NhbEltYWdlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpofSkpO3JldHVybjtjYXNlIGhlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfWVbMF09bi5oYW5kbGVUZXh0KGVbMF0sZC5zdGF0ZSk7YnJlYWs7Y2FzZSBsZTppZighZC5zdGF0ZS5mb250KXtuLmVuc3VyZVN0YXRlRm9udChkLnN0YXRlKTtjb250aW51ZX12YXIgRz1bXSx4PWQuc3RhdGU7Zm9yKGNvbnN0IHQgb2YgZVswXSkic3RyaW5nIj09dHlwZW9mIHQ/Ry5wdXNoKC4uLm4uaGFuZGxlVGV4dCh0LHgpKToibnVtYmVyIj09dHlwZW9mIHQmJkcucHVzaCh0KTtlWzBdPUc7cj1oZTticmVhaztjYXNlIENlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfWEuYWRkT3AoSWUpO2VbMF09bi5oYW5kbGVUZXh0KGVbMF0sZC5zdGF0ZSk7cj1oZTticmVhaztjYXNlIEJlOmlmKCFkLnN0YXRlLmZvbnQpe24uZW5zdXJlU3RhdGVGb250KGQuc3RhdGUpO2NvbnRpbnVlfWEuYWRkT3AoSWUpO2EuYWRkT3AodGUsW2Uuc2hpZnQoKV0pO2EuYWRkT3AoZWUsW2Uuc2hpZnQoKV0pO2VbMF09bi5oYW5kbGVUZXh0KGVbMF0sZC5zdGF0ZSk7cj1oZTticmVhaztjYXNlIHNlOmQuc3RhdGUudGV4dFJlbmRlcmluZ01vZGU9ZVswXTticmVhaztjYXNlIGRlOntjb25zdCB0PUNvbG9yU3BhY2UuZ2V0Q2FjaGVkKGVbMF0sbyxoKTtpZih0KXtkLnN0YXRlLmZpbGxDb2xvclNwYWNlPXQ7Y29udGludWV9bmV4dChuLnBhcnNlQ29sb3JTcGFjZSh7Y3M6ZVswXSxyZXNvdXJjZXM6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpofSkudGhlbigoZnVuY3Rpb24oZSl7ZSYmKGQuc3RhdGUuZmlsbENvbG9yU3BhY2U9ZSl9KSkpO3JldHVybn1jYXNlIHVlOntjb25zdCB0PUNvbG9yU3BhY2UuZ2V0Q2FjaGVkKGVbMF0sbyxoKTtpZih0KXtkLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KG4ucGFyc2VDb2xvclNwYWNlKHtjczplWzBdLHJlc291cmNlczppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmh9KS50aGVuKChmdW5jdGlvbihlKXtlJiYoZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWUpfSkpKTtyZXR1cm59Y2FzZSBtZTpEPWQuc3RhdGUuZmlsbENvbG9yU3BhY2U7ZT1ELmdldFJnYihlLDApO3I9RmU7YnJlYWs7Y2FzZSBmZTpEPWQuc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTtlPUQuZ2V0UmdiKGUsMCk7cj1EZTticmVhaztjYXNlIGJlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXk7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheS5nZXRSZ2IoZSwwKTtyPUZlO2JyZWFrO2Nhc2Ugd2U6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5O2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiKGUsMCk7cj1EZTticmVhaztjYXNlIGtlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWs7ZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2IoZSwwKTtyPUZlO2JyZWFrO2Nhc2UgU2U6ZC5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5jbXlrO2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiKGUsMCk7cj1EZTticmVhaztjYXNlIEZlOmQuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSBEZTpkLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYjtlPUNvbG9yU3BhY2Uuc2luZ2xldG9ucy5yZ2IuZ2V0UmdiKGUsMCk7YnJlYWs7Y2FzZSB5ZTpEPWQuc3RhdGUuZmlsbENvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEseWUsZSxELHUsaSx0LGgsQyxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPUZlO2JyZWFrO2Nhc2UgcGU6RD1kLnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7aWYoIlBhdHRlcm4iPT09RC5uYW1lKXtuZXh0KG4uaGFuZGxlQ29sb3JOKGEscGUsZSxELHUsaSx0LGgsQyxRKSk7cmV0dXJufWU9RC5nZXRSZ2IoZSwwKTtyPURlO2JyZWFrO2Nhc2UgUmU6dmFyIE09aS5nZXQoIlNoYWRpbmciKTtpZighTSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgcmVzb3VyY2UgZm91bmQiKTt2YXIgVT1NLmdldChlWzBdLm5hbWUpO2lmKCFVKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gc2hhZGluZyBvYmplY3QgZm91bmQiKTtjb25zdCBmPW4ucGFyc2VTaGFkaW5nKHtzaGFkaW5nOlUscmVzb3VyY2VzOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6aCxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6UX0pO2lmKCFmKWNvbnRpbnVlO2U9W2ZdO3I9UmU7YnJlYWs7Y2FzZSBOQTprPWVbMF1pbnN0YW5jZW9mIE5hbWU7Uz1lWzBdLm5hbWU7aWYoayl7Y29uc3QgdD1sLmdldEJ5TmFtZShTKTtpZih0KXt0Lmxlbmd0aD4wJiZhLmFkZE9wKE5BLFt0XSk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHIpe2lmKCFrKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBzPWkuZ2V0KCJFeHRHU3RhdGUiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG89cy5nZXQoUyk7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtuLnNldEdTdGF0ZSh7cmVzb3VyY2VzOmksZ1N0YXRlOm8sb3BlcmF0b3JMaXN0OmEsY2FjaGVLZXk6Uyx0YXNrOnQsc3RhdGVNYW5hZ2VyOmQsbG9jYWxHU3RhdGVDYWNoZTpsLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmh9KS50aGVuKGUscil9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIW4ub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBFeHRHU3RhdGU6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIFVBOmNhc2UgTEE6Y2FzZSBKQTpjYXNlIEhBOmNhc2UgdkE6Y2FzZSBZQTpjYXNlIEtBOm4uYnVpbGRQYXRoKGEscixlLGcpO2NvbnRpbnVlO2Nhc2UgVWU6Y2FzZSBMZTpjYXNlIFllOmNhc2UgS2U6Y29udGludWU7Y2FzZSBIZTppZighKGVbMF1pbnN0YW5jZW9mIE5hbWUpKXt3YXJuKGBFeHBlY3RlZCBuYW1lIGZvciBiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyBhcmcwPSR7ZVswXX1gKTthLmFkZE9wKEhlLFsiT0MiLG51bGxdKTtjb250aW51ZX1pZigiT0MiPT09ZVswXS5uYW1lKXtuZXh0KG4ucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoZVsxXSxpKS50aGVuKChlPT57YS5hZGRPcChIZSxbIk9DIixlXSl9KSkuY2F0Y2goKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFuLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYmVnaW5NYXJrZWRDb250ZW50UHJvcHM6ICIke2V9Ii5gKTthLmFkZE9wKEhlLFsiT0MiLG51bGxdKX19KSkpO3JldHVybn1lPVtlWzBdLm5hbWUsZVsxXWluc3RhbmNlb2YgRGljdD9lWzFdLmdldCgiTUNJRCIpOm51bGxdO2JyZWFrO2RlZmF1bHQ6aWYobnVsbCE9PWUpe2Zvcih3PTAsYj1lLmxlbmd0aDt3PGImJiEoZVt3XWluc3RhbmNlb2YgRGljdCk7dysrKTtpZih3PGIpe3dhcm4oImdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIG9wZXJhdG9yOiAiK3IpO2NvbnRpbnVlfX19YS5hZGRPcChyLGUpfWlmKHkpbmV4dChScik7ZWxzZXtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCk7ZSgpfX0pKS5jYXRjaCgoZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBlcnJvcnMgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtjbG9zZVBlbmRpbmdSZXN0b3JlT1BTKCl9fSkpfWdldFRleHRDb250ZW50KHtzdHJlYW06ZSx0YXNrOmEscmVzb3VyY2VzOnIsc3RhdGVNYW5hZ2VyOnM9bnVsbCxpbmNsdWRlTWFya2VkQ29udGVudDpuPSExLHNpbms6byxzZWVuU3R5bGVzOmc9bmV3IFNldCx2aWV3Qm94OmMsbGFuZzpoPW51bGwsbWFya2VkQ29udGVudERhdGE6bD1udWxsLGRpc2FibGVOb3JtYWxpemF0aW9uOkM9ITEsa2VlcFdoaXRlU3BhY2U6UT0hMX0pe3J8fD1EaWN0LmVtcHR5O3N8fD1uZXcgU3RhdGVNYW5hZ2VyKG5ldyBUZXh0U3RhdGUpO24mJihsfHw9e2xldmVsOjB9KTtjb25zdCBFPXtpdGVtczpbXSxzdHlsZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxsYW5nOmh9LHU9e2luaXRpYWxpemVkOiExLHN0cjpbXSx0b3RhbFdpZHRoOjAsdG90YWxIZWlnaHQ6MCx3aWR0aDowLGhlaWdodDowLHZlcnRpY2FsOiExLHByZXZUcmFuc2Zvcm06bnVsbCx0ZXh0QWR2YW5jZVNjYWxlOjAsc3BhY2VJbkZsb3dNaW46MCxzcGFjZUluRmxvd01heDowLHRyYWNraW5nU3BhY2VNaW46MS8wLG5lZ2F0aXZlU3BhY2VNYXg6LTEvMCxub3RBU3BhY2U6LTEvMCx0cmFuc2Zvcm06bnVsbCxmb250TmFtZTpudWxsLGhhc0VPTDohMX0sZD1bIiAiLCIgIl07bGV0IGY9MDtmdW5jdGlvbiBzYXZlTGFzdENoYXIoZSl7Y29uc3QgdD0oZisxKSUyLGk9IiAiIT09ZFtmXSYmIiAiPT09ZFt0XTtkW2ZdPWU7Zj10O3JldHVybiFRJiZpfWZ1bmN0aW9uIHNob3VsZEFkZFdoaXRlcHNhY2UoKXtyZXR1cm4hUSYmIiAiIT09ZFtmXSYmIiAiPT09ZFsoZisxKSUyXX1mdW5jdGlvbiByZXNldExhc3RDaGFycygpe2RbMF09ZFsxXT0iICI7Zj0wfWNvbnN0IHA9dGhpcyxtPXRoaXMueHJlZix5PVtdO2xldCB3PW51bGw7Y29uc3QgYj1uZXcgTG9jYWxJbWFnZUNhY2hlLEQ9bmV3IExvY2FsR1N0YXRlQ2FjaGUsUz1uZXcgRXZhbHVhdG9yUHJlcHJvY2Vzc29yKGUsbSxzKTtsZXQgaztmdW5jdGlvbiBwdXNoV2hpdGVzcGFjZSh7d2lkdGg6ZT0wLGhlaWdodDp0PTAsdHJhbnNmb3JtOmk9dS5wcmV2VHJhbnNmb3JtLGZvbnROYW1lOmE9dS5mb250TmFtZX0pe0UuaXRlbXMucHVzaCh7c3RyOiIgIixkaXI6Imx0ciIsd2lkdGg6ZSxoZWlnaHQ6dCx0cmFuc2Zvcm06aSxmb250TmFtZTphLGhhc0VPTDohMX0pfWZ1bmN0aW9uIGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCl7Y29uc3QgZT1rLmZvbnQsdD1bay5mb250U2l6ZSprLnRleHRIU2NhbGUsMCwwLGsuZm9udFNpemUsMCxrLnRleHRSaXNlXTtpZihlLmlzVHlwZTNGb250JiYoay5mb250U2l6ZTw9MXx8ZS5pc0NoYXJCQm94KSYmIWlzQXJyYXlFcXVhbChrLmZvbnRNYXRyaXgsaSkpe2NvbnN0IGk9ZS5iYm94WzNdLWUuYmJveFsxXTtpPjAmJih0WzNdKj1pKmsuZm9udE1hdHJpeFszXSl9cmV0dXJuIFV0aWwudHJhbnNmb3JtKGsuY3RtLFV0aWwudHJhbnNmb3JtKGsudGV4dE1hdHJpeCx0KSl9ZnVuY3Rpb24gZW5zdXJlVGV4dENvbnRlbnRJdGVtKCl7aWYodS5pbml0aWFsaXplZClyZXR1cm4gdTtjb25zdHtmb250OmUsbG9hZGVkTmFtZTp0fT1rO2lmKCFnLmhhcyh0KSl7Zy5hZGQodCk7RS5zdHlsZXNbdF09e2ZvbnRGYW1pbHk6ZS5mYWxsYmFja05hbWUsYXNjZW50OmUuYXNjZW50LGRlc2NlbnQ6ZS5kZXNjZW50LHZlcnRpY2FsOmUudmVydGljYWx9O2lmKHAub3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzJiZlLnN5c3RlbUZvbnRJbmZvKXtjb25zdCBpPUUuc3R5bGVzW3RdO2kuZm9udFN1YnN0aXR1dGlvbj1lLnN5c3RlbUZvbnRJbmZvLmNzcztpLmZvbnRTdWJzdGl0dXRpb25Mb2FkZWROYW1lPWUuc3lzdGVtRm9udEluZm8ubG9hZGVkTmFtZX19dS5mb250TmFtZT10O2NvbnN0IGk9dS50cmFuc2Zvcm09Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtpZihlLnZlcnRpY2FsKXt1LndpZHRoPXUudG90YWxXaWR0aD1NYXRoLmh5cG90KGlbMF0saVsxXSk7dS5oZWlnaHQ9dS50b3RhbEhlaWdodD0wO3UudmVydGljYWw9ITB9ZWxzZXt1LndpZHRoPXUudG90YWxXaWR0aD0wO3UuaGVpZ2h0PXUudG90YWxIZWlnaHQ9TWF0aC5oeXBvdChpWzJdLGlbM10pO3UudmVydGljYWw9ITF9Y29uc3QgYT1NYXRoLmh5cG90KGsudGV4dExpbmVNYXRyaXhbMF0say50ZXh0TGluZU1hdHJpeFsxXSkscj1NYXRoLmh5cG90KGsuY3RtWzBdLGsuY3RtWzFdKTt1LnRleHRBZHZhbmNlU2NhbGU9ciphO2NvbnN0e2ZvbnRTaXplOnN9PWs7dS50cmFja2luZ1NwYWNlTWluPS4xMDIqczt1Lm5vdEFTcGFjZT0uMDMqczt1Lm5lZ2F0aXZlU3BhY2VNYXg9LS4yKnM7dS5zcGFjZUluRmxvd01pbj0uMTAyKnM7dS5zcGFjZUluRmxvd01heD0uNipzO3UuaGFzRU9MPSExO3UuaW5pdGlhbGl6ZWQ9ITA7cmV0dXJuIHV9ZnVuY3Rpb24gdXBkYXRlQWR2YW5jZVNjYWxlKCl7aWYoIXUuaW5pdGlhbGl6ZWQpcmV0dXJuO2NvbnN0IGU9TWF0aC5oeXBvdChrLnRleHRMaW5lTWF0cml4WzBdLGsudGV4dExpbmVNYXRyaXhbMV0pLHQ9TWF0aC5oeXBvdChrLmN0bVswXSxrLmN0bVsxXSkqZTtpZih0IT09dS50ZXh0QWR2YW5jZVNjYWxlKXtpZih1LnZlcnRpY2FsKXt1LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU7dS5oZWlnaHQ9MH1lbHNle3UudG90YWxXaWR0aCs9dS53aWR0aCp1LnRleHRBZHZhbmNlU2NhbGU7dS53aWR0aD0wfXUudGV4dEFkdmFuY2VTY2FsZT10fX1mdW5jdGlvbiBydW5CaWRpVHJhbnNmb3JtKGUpe2xldCB0PWUuc3RyLmpvaW4oIiIpO0N8fCh0PWZ1bmN0aW9uIG5vcm1hbGl6ZVVuaWNvZGUoZSl7aWYoIWd0KXtndD0vKFtcdTAwYTBcdTAwYjVcdTAzN2VcdTBlYjNcdTIwMDAtXHUyMDBhXHUyMDJmXHUyMTI2XHVmYjAwLVx1ZmIwNFx1ZmIwNlx1ZmIyMC1cdWZiMzZcdWZiMzgtXHVmYjNjXHVmYjNlXHVmYjQwLVx1ZmI0MVx1ZmI0My1cdWZiNDRcdWZiNDYtXHVmYmExXHVmYmE0LVx1ZmJhOVx1ZmJhZS1cdWZiYjFcdWZiZDMtXHVmYmRjXHVmYmRlLVx1ZmJlN1x1ZmJlYS1cdWZiZjhcdWZiZmMtXHVmYmZkXHVmYzAwLVx1ZmM1ZFx1ZmM2NC1cdWZjZjFcdWZjZjUtXHVmZDNkXHVmZDg4XHVmZGY0XHVmZGZhLVx1ZmRmYlx1ZmU3MVx1ZmU3N1x1ZmU3OVx1ZmU3Ylx1ZmU3ZF0rKXwoXHVmYjA1KykvZ3U7Y3Q9bmV3IE1hcChbWyLvrIUiLCLFv3QiXV0pfXJldHVybiBlLnJlcGxhY2VBbGwoZ3QsKChlLHQsaSk9PnQ/dC5ub3JtYWxpemUoIk5GS0MiKTpjdC5nZXQoaSkpKX0odCkpO2NvbnN0IGk9YmlkaSh0LC0xLGUudmVydGljYWwpO3JldHVybntzdHI6aS5zdHIsZGlyOmkuZGlyLHdpZHRoOk1hdGguYWJzKGUudG90YWxXaWR0aCksaGVpZ2h0Ok1hdGguYWJzKGUudG90YWxIZWlnaHQpLHRyYW5zZm9ybTplLnRyYW5zZm9ybSxmb250TmFtZTplLmZvbnROYW1lLGhhc0VPTDplLmhhc0VPTH19YXN5bmMgZnVuY3Rpb24gaGFuZGxlU2V0Rm9udChlLHQpe2NvbnN0IHM9YXdhaXQgcC5sb2FkRm9udChlLHQscik7aWYocy5mb250LmlzVHlwZTNGb250KXRyeXthd2FpdCBzLmxvYWRUeXBlM0RhdGEocCxyLGEpfWNhdGNoe31rLmxvYWRlZE5hbWU9cy5sb2FkZWROYW1lO2suZm9udD1zLmZvbnQ7ay5mb250TWF0cml4PXMuZm9udC5mb250TWF0cml4fHxpfWZ1bmN0aW9uIGFwcGx5SW52ZXJzZVJvdGF0aW9uKGUsdCxpKXtjb25zdCBhPU1hdGguaHlwb3QoaVswXSxpWzFdKTtyZXR1cm5bKGlbMF0qZStpWzFdKnQpL2EsKGlbMl0qZStpWzNdKnQpL2FdfWZ1bmN0aW9uIGNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGUpe2NvbnN0IHQ9Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKTtsZXQgaT10WzRdLGE9dFs1XTtpZihrLmZvbnQ/LnZlcnRpY2FsKXtpZihpPGNbMF18fGk+Y1syXXx8YStlPGNbMV18fGE+Y1szXSlyZXR1cm4hMX1lbHNlIGlmKGkrZTxjWzBdfHxpPmNbMl18fGE8Y1sxXXx8YT5jWzNdKXJldHVybiExO2lmKCFrLmZvbnR8fCF1LnByZXZUcmFuc2Zvcm0pcmV0dXJuITA7bGV0IHI9dS5wcmV2VHJhbnNmb3JtWzRdLHM9dS5wcmV2VHJhbnNmb3JtWzVdO2lmKHI9PT1pJiZzPT09YSlyZXR1cm4hMDtsZXQgbj0tMTt0WzBdJiYwPT09dFsxXSYmMD09PXRbMl0/bj10WzBdPjA/MDoxODA6dFsxXSYmMD09PXRbMF0mJjA9PT10WzNdJiYobj10WzFdPjA/OTA6MjcwKTtzd2l0Y2gobil7Y2FzZSAwOmJyZWFrO2Nhc2UgOTA6W2ksYV09W2EsaV07W3Isc109W3Mscl07YnJlYWs7Y2FzZSAxODA6W2ksYSxyLHNdPVstaSwtYSwtciwtc107YnJlYWs7Y2FzZSAyNzA6W2ksYV09Wy1hLC1pXTtbcixzXT1bLXMsLXJdO2JyZWFrO2RlZmF1bHQ6W2ksYV09YXBwbHlJbnZlcnNlUm90YXRpb24oaSxhLHQpO1tyLHNdPWFwcGx5SW52ZXJzZVJvdGF0aW9uKHIscyx1LnByZXZUcmFuc2Zvcm0pfWlmKGsuZm9udC52ZXJ0aWNhbCl7Y29uc3QgZT0ocy1hKS91LnRleHRBZHZhbmNlU2NhbGUsdD1pLXIsbj1NYXRoLnNpZ24odS5oZWlnaHQpO2lmKGU8bip1Lm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKHQpPi41KnUud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfXJlc2V0TGFzdENoYXJzKCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1pZihNYXRoLmFicyh0KT51LndpZHRoKXthcHBlbmRFT0woKTtyZXR1cm4hMH1lPD1uKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKGU8PW4qdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHUuaGVpZ2h0Kz1lO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMoZSx1LnByZXZUcmFuc2Zvcm0sbikpaWYoMD09PXUuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7aGVpZ2h0Ok1hdGguYWJzKGUpfSl9ZWxzZSB1LmhlaWdodCs9ZTtNYXRoLmFicyh0KT4uMjUqdS53aWR0aCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1jb25zdCBvPShpLXIpL3UudGV4dEFkdmFuY2VTY2FsZSxnPWEtcyxoPU1hdGguc2lnbih1LndpZHRoKTtpZihvPGgqdS5uZWdhdGl2ZVNwYWNlTWF4KXtpZihNYXRoLmFicyhnKT4uNSp1LmhlaWdodCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKGcpPnUuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1vPD1oKnUubm90QVNwYWNlJiZyZXNldExhc3RDaGFycygpO2lmKG88PWgqdS50cmFja2luZ1NwYWNlTWluKWlmKHNob3VsZEFkZFdoaXRlcHNhY2UoKSl7cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhvKX0pfWVsc2UgdS53aWR0aCs9bztlbHNlIGlmKCFhZGRGYWtlU3BhY2VzKG8sdS5wcmV2VHJhbnNmb3JtLGgpKWlmKDA9PT11LnN0ci5sZW5ndGgpe3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB1LndpZHRoKz1vO01hdGguYWJzKGcpPi4yNSp1LmhlaWdodCYmZmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXR1cm4hMH1mdW5jdGlvbiBidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6dH0pe2NvbnN0IGk9ay5mb250O2lmKCFlKXtjb25zdCBlPWsuY2hhclNwYWNpbmcrdDtlJiYoaS52ZXJ0aWNhbD9rLnRyYW5zbGF0ZVRleHRNYXRyaXgoMCwtZSk6ay50cmFuc2xhdGVUZXh0TWF0cml4KGUqay50ZXh0SFNjYWxlLDApKTtRJiZjb21wYXJlV2l0aExhc3RQb3NpdGlvbigwKTtyZXR1cm59Y29uc3QgYT1pLmNoYXJzVG9HbHlwaHMoZSkscj1rLmZvbnRNYXRyaXhbMF0qay5mb250U2l6ZTtmb3IobGV0IGU9MCxzPWEubGVuZ3RoO2U8cztlKyspe2NvbnN0IG49YVtlXSx7Y2F0ZWdvcnk6b309bjtpZihvLmlzSW52aXNpYmxlRm9ybWF0TWFyayljb250aW51ZTtsZXQgZz1rLmNoYXJTcGFjaW5nKyhlKzE9PT1zP3Q6MCksYz1uLndpZHRoO2kudmVydGljYWwmJihjPW4udm1ldHJpYz9uLnZtZXRyaWNbMF06LWMpO2xldCBoPWMqcjtpZighUSYmby5pc1doaXRlc3BhY2Upe2lmKGkudmVydGljYWwpe2crPS1oK2sud29yZFNwYWNpbmc7ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpfWVsc2V7Zys9aCtrLndvcmRTcGFjaW5nO2sudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKX1zYXZlTGFzdENoYXIoIiAiKTtjb250aW51ZX1pZighby5pc1plcm9XaWR0aERpYWNyaXRpYyYmIWNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKGgpKXtpLnZlcnRpY2FsP2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLGgpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChoKmsudGV4dEhTY2FsZSwwKTtjb250aW51ZX1jb25zdCBsPWVuc3VyZVRleHRDb250ZW50SXRlbSgpO28uaXNaZXJvV2lkdGhEaWFjcml0aWMmJihoPTApO2lmKGkudmVydGljYWwpe2sudHJhbnNsYXRlVGV4dE1hdHJpeCgwLGgpO2g9TWF0aC5hYnMoaCk7bC5oZWlnaHQrPWh9ZWxzZXtoKj1rLnRleHRIU2NhbGU7ay50cmFuc2xhdGVUZXh0TWF0cml4KGgsMCk7bC53aWR0aCs9aH1oJiYobC5wcmV2VHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCkpO2NvbnN0IEM9bi51bmljb2RlO3NhdmVMYXN0Q2hhcihDKSYmbC5zdHIucHVzaCgiICIpO2wuc3RyLnB1c2goQyk7ZyYmKGkudmVydGljYWw/ay50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWcpOmsudHJhbnNsYXRlVGV4dE1hdHJpeChnKmsudGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe3Jlc2V0TGFzdENoYXJzKCk7aWYodS5pbml0aWFsaXplZCl7dS5oYXNFT0w9ITA7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKX1lbHNlIEUuaXRlbXMucHVzaCh7c3RyOiIiLGRpcjoibHRyIix3aWR0aDowLGhlaWdodDowLHRyYW5zZm9ybTpnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpLGZvbnROYW1lOmsubG9hZGVkTmFtZSxoYXNFT0w6ITB9KX1mdW5jdGlvbiBhZGRGYWtlU3BhY2VzKGUsdCxpKXtpZihpKnUuc3BhY2VJbkZsb3dNaW48PWUmJmU8PWkqdS5zcGFjZUluRmxvd01heCl7aWYodS5pbml0aWFsaXplZCl7cmVzZXRMYXN0Q2hhcnMoKTt1LnN0ci5wdXNoKCIgIil9cmV0dXJuITF9Y29uc3QgYT11LmZvbnROYW1lO2xldCByPTA7aWYodS52ZXJ0aWNhbCl7cj1lO2U9MH1mbHVzaFRleHRDb250ZW50SXRlbSgpO3Jlc2V0TGFzdENoYXJzKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKGUpLGhlaWdodDpNYXRoLmFicyhyKSx0cmFuc2Zvcm06dHx8Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTphfSk7cmV0dXJuITB9ZnVuY3Rpb24gZmx1c2hUZXh0Q29udGVudEl0ZW0oKXtpZih1LmluaXRpYWxpemVkJiZ1LnN0cil7dS52ZXJ0aWNhbD91LnRvdGFsSGVpZ2h0Kz11LmhlaWdodCp1LnRleHRBZHZhbmNlU2NhbGU6dS50b3RhbFdpZHRoKz11LndpZHRoKnUudGV4dEFkdmFuY2VTY2FsZTtFLml0ZW1zLnB1c2gocnVuQmlkaVRyYW5zZm9ybSh1KSk7dS5pbml0aWFsaXplZD0hMTt1LnN0ci5sZW5ndGg9MH19ZnVuY3Rpb24gZW5xdWV1ZUNodW5rKGU9ITEpe2NvbnN0IHQ9RS5pdGVtcy5sZW5ndGg7aWYoMCE9PXQmJiEoZSYmdDwxMCkpe28uZW5xdWV1ZShFLHQpO0UuaXRlbXM9W107RS5zdHlsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX19Y29uc3QgUj1uZXcgVGltZVNsb3RNYW5hZ2VyO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24gcHJvbWlzZUJvZHkoZSxpKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe2VucXVldWVDaHVuayghMCk7UHJvbWlzZS5hbGwoW3Qsby5yZWFkeV0pLnRoZW4oKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUsaSl9Y2F0Y2goZSl7aShlKX19KSxpKX07YS5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7Ui5yZXNldCgpO2NvbnN0IHU9e307bGV0IGQsZj1bXTtmb3IoOyEoZD1SLmNoZWNrKCkpOyl7Zi5sZW5ndGg9MDt1LmFyZ3M9ZjtpZighUy5yZWFkKHUpKWJyZWFrO2NvbnN0IGU9aztrPXMuc3RhdGU7Y29uc3QgaT11LmZuO2Y9dS5hcmdzO3N3aXRjaCgwfGkpe2Nhc2UgcmU6dmFyIE49ZlswXS5uYW1lLEc9ZlsxXTtpZihrLmZvbnQmJk49PT1rLmZvbnROYW1lJiZHPT09ay5mb250U2l6ZSlicmVhaztmbHVzaFRleHRDb250ZW50SXRlbSgpO2suZm9udE5hbWU9TjtrLmZvbnRTaXplPUc7bmV4dChoYW5kbGVTZXRGb250KE4sbnVsbCkpO3JldHVybjtjYXNlIG5lOmsudGV4dFJpc2U9ZlswXTticmVhaztjYXNlIGllOmsudGV4dEhTY2FsZT1mWzBdLzEwMDticmVhaztjYXNlIGFlOmsubGVhZGluZz1mWzBdO2JyZWFrO2Nhc2Ugb2U6ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChmWzBdLGZbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBnZTprLmxlYWRpbmc9LWZbMV07ay50cmFuc2xhdGVUZXh0TGluZU1hdHJpeChmWzBdLGZbMV0pO2sudGV4dE1hdHJpeD1rLnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBJZTprLmNhcnJpYWdlUmV0dXJuKCk7YnJlYWs7Y2FzZSBjZTprLnNldFRleHRNYXRyaXgoZlswXSxmWzFdLGZbMl0sZlszXSxmWzRdLGZbNV0pO2suc2V0VGV4dExpbmVNYXRyaXgoZlswXSxmWzFdLGZbMl0sZlszXSxmWzRdLGZbNV0pO3VwZGF0ZUFkdmFuY2VTY2FsZSgpO2JyZWFrO2Nhc2UgZWU6ay5jaGFyU3BhY2luZz1mWzBdO2JyZWFrO2Nhc2UgdGU6ay53b3JkU3BhY2luZz1mWzBdO2JyZWFrO2Nhc2UgJEE6ay50ZXh0TWF0cml4PXQuc2xpY2UoKTtrLnRleHRMaW5lTWF0cml4PXQuc2xpY2UoKTticmVhaztjYXNlIGxlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IGk9KGsuZm9udC52ZXJ0aWNhbD8xOi0xKSprLmZvbnRTaXplLzFlMyx1PWZbMF07Zm9yKGxldCBlPTAsdD11Lmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXVbZV07aWYoInN0cmluZyI9PXR5cGVvZiB0KXkucHVzaCh0KTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdCYmMCE9PXQpe2NvbnN0IGU9eS5qb2luKCIiKTt5Lmxlbmd0aD0wO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0Kml9KX19aWYoeS5sZW5ndGg+MCl7Y29uc3QgZT15LmpvaW4oIiIpO3kubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOjB9KX1icmVhaztjYXNlIGhlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpmWzBdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBDZTppZighcy5zdGF0ZS5mb250KXtwLmVuc3VyZVN0YXRlRm9udChzLnN0YXRlKTtjb250aW51ZX1rLmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmZbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIEJlOmlmKCFzLnN0YXRlLmZvbnQpe3AuZW5zdXJlU3RhdGVGb250KHMuc3RhdGUpO2NvbnRpbnVlfWsud29yZFNwYWNpbmc9ZlswXTtrLmNoYXJTcGFjaW5nPWZbMV07ay5jYXJyaWFnZVJldHVybigpO2J1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczpmWzJdLGV4dHJhU3BhY2luZzowfSk7YnJlYWs7Y2FzZSBNZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO3d8fCh3PXIuZ2V0KCJYT2JqZWN0Iil8fERpY3QuZW1wdHkpO3ZhciB4PWZbMF1pbnN0YW5jZW9mIE5hbWUsTT1mWzBdLm5hbWU7aWYoeCYmYi5nZXRCeU5hbWUoTSkpYnJlYWs7bmV4dChuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtpZigheCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBpPXcuZ2V0UmF3KE0pO2lmKGkgaW5zdGFuY2VvZiBSZWYpe2lmKGIuZ2V0QnlSZWYoaSkpe2UoKTtyZXR1cm59aWYocC5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEoaSxwLnBhZ2VJbmRleCkpe2UoKTtyZXR1cm59aT1tLmZldGNoKGkpfWlmKCEoaSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdCBFPWkuZGljdC5nZXQoIlN1YnR5cGUiKTtpZighKEUgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGhhdmUgYSBOYW1lIHN1YnR5cGUiKTtpZigiRm9ybSIhPT1FLm5hbWUpe2Iuc2V0KE0saS5kaWN0Lm9iaklkLCEwKTtlKCk7cmV0dXJufWNvbnN0IHU9cy5zdGF0ZS5jbG9uZSgpLGQ9bmV3IFN0YXRlTWFuYWdlcih1KSxmPWxvb2t1cE1hdHJpeChpLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpLG51bGwpO2YmJmQudHJhbnNmb3JtKGYpO2VucXVldWVDaHVuaygpO2NvbnN0IHk9e2VucXVldWVJbnZva2VkOiExLGVucXVldWUoZSx0KXt0aGlzLmVucXVldWVJbnZva2VkPSEwO28uZW5xdWV1ZShlLHQpfSxnZXQgZGVzaXJlZFNpemUoKXtyZXR1cm4gby5kZXNpcmVkU2l6ZX0sZ2V0IHJlYWR5KCl7cmV0dXJuIG8ucmVhZHl9fTtwLmdldFRleHRDb250ZW50KHtzdHJlYW06aSx0YXNrOmEscmVzb3VyY2VzOmkuZGljdC5nZXQoIlJlc291cmNlcyIpfHxyLHN0YXRlTWFuYWdlcjpkLGluY2x1ZGVNYXJrZWRDb250ZW50Om4sc2luazp5LHNlZW5TdHlsZXM6Zyx2aWV3Qm94OmMsbGFuZzpoLG1hcmtlZENvbnRlbnREYXRhOmwsZGlzYWJsZU5vcm1hbGl6YXRpb246QyxrZWVwV2hpdGVTcGFjZTpRfSkudGhlbigoZnVuY3Rpb24oKXt5LmVucXVldWVJbnZva2VkfHxiLnNldChNLGkuZGljdC5vYmpJZCwhMCk7ZSgpfSksdCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXAub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke2V9Ii5gKX19KSkpO3JldHVybjtjYXNlIE5BOng9ZlswXWluc3RhbmNlb2YgTmFtZTtNPWZbMF0ubmFtZTtpZih4JiZELmdldEJ5TmFtZShNKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2lmKCF4KXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtjb25zdCBpPXIuZ2V0KCJFeHRHU3RhdGUiKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkV4dEdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IGE9aS5nZXQoTSk7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBzPWEuZ2V0KCJGb250Iik7aWYocyl7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtrLmZvbnROYW1lPW51bGw7ay5mb250U2l6ZT1zWzFdO2hhbmRsZVNldEZvbnQobnVsbCxzWzBdKS50aGVuKGUsdCl9ZWxzZXtELnNldChNLGEub2JqSWQsITApO2UoKX19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIXAub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKSk7cmV0dXJuO2Nhc2UgSmU6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihuKXtsLmxldmVsKys7RS5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnQiLHRhZzpmWzBdaW5zdGFuY2VvZiBOYW1lP2ZbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSBIZTpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2wubGV2ZWwrKztsZXQgZT1udWxsO2ZbMV1pbnN0YW5jZW9mIERpY3QmJihlPWZbMV0uZ2V0KCJNQ0lEIikpO0UuaXRlbXMucHVzaCh7dHlwZToiYmVnaW5NYXJrZWRDb250ZW50UHJvcHMiLGlkOk51bWJlci5pc0ludGVnZXIoZSk/YCR7cC5pZEZhY3RvcnkuZ2V0UGFnZU9iaklkKCl9X21jJHtlfWA6bnVsbCx0YWc6ZlswXWluc3RhbmNlb2YgTmFtZT9mWzBdLm5hbWU6bnVsbH0pfWJyZWFrO2Nhc2UgdmU6Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtpZihuKXtpZigwPT09bC5sZXZlbClicmVhaztsLmxldmVsLS07RS5pdGVtcy5wdXNoKHt0eXBlOiJlbmRNYXJrZWRDb250ZW50In0pfWJyZWFrO2Nhc2UgeEE6IWV8fGUuZm9udD09PWsuZm9udCYmZS5mb250U2l6ZT09PWsuZm9udFNpemUmJmUuZm9udE5hbWU9PT1rLmZvbnROYW1lfHxmbHVzaFRleHRDb250ZW50SXRlbSgpfWlmKEUuaXRlbXMubGVuZ3RoPj1vLmRlc2lyZWRTaXplKXtkPSEwO2JyZWFrfX1pZihkKW5leHQoUnIpO2Vsc2V7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKTtlKCl9fSkpLmNhdGNoKChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHthLm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKX19KSl9YXN5bmMgZXh0cmFjdERhdGFTdHJ1Y3R1cmVzKGUsdCl7Y29uc3QgaT10aGlzLnhyZWY7bGV0IGE7Y29uc3Qgcj10aGlzLnJlYWRUb1VuaWNvZGUodC50b1VuaWNvZGUpO2lmKHQuY29tcG9zaXRlKXtjb25zdCBpPWUuZ2V0KCJDSURTeXN0ZW1JbmZvIik7aSBpbnN0YW5jZW9mIERpY3QmJih0LmNpZFN5c3RlbUluZm89e3JlZ2lzdHJ5OnN0cmluZ1RvUERGU3RyaW5nKGkuZ2V0KCJSZWdpc3RyeSIpKSxvcmRlcmluZzpzdHJpbmdUb1BERlN0cmluZyhpLmdldCgiT3JkZXJpbmciKSksc3VwcGxlbWVudDppLmdldCgiU3VwcGxlbWVudCIpfSk7dHJ5e2NvbnN0IHQ9ZS5nZXQoIkNJRFRvR0lETWFwIik7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihhPXQuZ2V0Qnl0ZXMoKSl9Y2F0Y2goZSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBleHRyYWN0RGF0YVN0cnVjdHVyZXMgLSBpZ25vcmluZyBDSURUb0dJRE1hcCBkYXRhOiAiJHtlfSIuYCl9fWNvbnN0IHM9W107bGV0IG4sbz1udWxsO2lmKGUuaGFzKCJFbmNvZGluZyIpKXtuPWUuZ2V0KCJFbmNvZGluZyIpO2lmKG4gaW5zdGFuY2VvZiBEaWN0KXtvPW4uZ2V0KCJCYXNlRW5jb2RpbmciKTtvPW8gaW5zdGFuY2VvZiBOYW1lP28ubmFtZTpudWxsO2lmKG4uaGFzKCJEaWZmZXJlbmNlcyIpKXtjb25zdCBlPW4uZ2V0KCJEaWZmZXJlbmNlcyIpO2xldCB0PTA7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1pLmZldGNoSWZSZWYoYSk7aWYoIm51bWJlciI9PXR5cGVvZiBlKXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiAnRGlmZmVyZW5jZXMnIGFycmF5OiAke2V9YCk7c1t0KytdPWUubmFtZX19fX1lbHNlIGlmKG4gaW5zdGFuY2VvZiBOYW1lKW89bi5uYW1lO2Vsc2V7Y29uc3QgZT0iRW5jb2RpbmcgaXMgbm90IGEgTmFtZSBub3IgYSBEaWN0IjtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoZSk7d2FybihlKX0iTWFjUm9tYW5FbmNvZGluZyIhPT1vJiYiTWFjRXhwZXJ0RW5jb2RpbmciIT09byYmIldpbkFuc2lFbmNvZGluZyIhPT1vJiYobz1udWxsKX1jb25zdCBnPSF0LmZpbGV8fHQuaXNJbnRlcm5hbEZvbnQsYz1aaSgpW3QubmFtZV07byYmZyYmYyYmKG89bnVsbCk7aWYobyl0LmRlZmF1bHRFbmNvZGluZz1nZXRFbmNvZGluZyhvKTtlbHNle2NvbnN0IGU9ISEodC5mbGFncyZUaSksaT0hISh0LmZsYWdzJnFpKTtuPWZpOyJUcnVlVHlwZSIhPT10LnR5cGV8fGl8fChuPXBpKTtpZihlfHxjKXtuPWRpO2cmJigvU3ltYm9sL2kudGVzdCh0Lm5hbWUpP249bWk6L0RpbmdiYXRzL2kudGVzdCh0Lm5hbWUpP249eWk6L1dpbmdkaW5ncy9pLnRlc3QodC5uYW1lKSYmKG49cGkpKX10LmRlZmF1bHRFbmNvZGluZz1ufXQuZGlmZmVyZW5jZXM9czt0LmJhc2VFbmNvZGluZ05hbWU9bzt0Lmhhc0VuY29kaW5nPSEhb3x8cy5sZW5ndGg+MDt0LmRpY3Q9ZTt0LnRvVW5pY29kZT1hd2FpdCByO2NvbnN0IGg9YXdhaXQgdGhpcy5idWlsZFRvVW5pY29kZSh0KTt0LnRvVW5pY29kZT1oO2EmJih0LmNpZFRvR2lkTWFwPXRoaXMucmVhZENpZFRvR2lkTWFwKGEsaCkpO3JldHVybiB0fV9zaW1wbGVGb250VG9Vbmljb2RlKGUsdD0hMSl7YXNzZXJ0KCFlLmNvbXBvc2l0ZSwiTXVzdCBiZSBhIHNpbXBsZSBmb250LiIpO2NvbnN0IGk9W10sYT1lLmRlZmF1bHRFbmNvZGluZy5zbGljZSgpLHI9ZS5iYXNlRW5jb2RpbmdOYW1lLHM9ZS5kaWZmZXJlbmNlcztmb3IoY29uc3QgZSBpbiBzKXtjb25zdCB0PXNbZV07Ii5ub3RkZWYiIT09dCYmKGFbZV09dCl9Y29uc3Qgbj1OaSgpO2Zvcihjb25zdCBzIGluIGEpe2xldCBvPWFbc107aWYoIiI9PT1vKWNvbnRpbnVlO2xldCBnPW5bb107aWYodm9pZCAwIT09Zyl7aVtzXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGcpO2NvbnRpbnVlfWxldCBjPTA7c3dpdGNoKG9bMF0pe2Nhc2UiRyI6Mz09PW8ubGVuZ3RoJiYoYz1wYXJzZUludChvLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiZyI6NT09PW8ubGVuZ3RoJiYoYz1wYXJzZUludChvLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiQyI6Y2FzZSJjIjppZihvLmxlbmd0aD49MyYmby5sZW5ndGg8PTQpe2NvbnN0IGk9by5zdWJzdHJpbmcoMSk7aWYodCl7Yz1wYXJzZUludChpLDE2KTticmVha31jPStpO2lmKE51bWJlci5pc05hTihjKSYmTnVtYmVyLmlzSW50ZWdlcihwYXJzZUludChpLDE2KSkpcmV0dXJuIHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSwhMCl9YnJlYWs7Y2FzZSJ1IjpnPWdldFVuaWNvZGVGb3JHbHlwaChvLG4pOy0xIT09ZyYmKGM9Zyk7YnJlYWs7ZGVmYXVsdDpzd2l0Y2gobyl7Y2FzZSJmX2giOmNhc2UiZl90IjpjYXNlIlRfaCI6aVtzXT1vLnJlcGxhY2VBbGwoIl8iLCIiKTtjb250aW51ZX19aWYoYz4wJiZjPD0xMTE0MTExJiZOdW1iZXIuaXNJbnRlZ2VyKGMpKXtpZihyJiZjPT09K3Mpe2NvbnN0IGU9Z2V0RW5jb2Rpbmcocik7aWYoZSYmKG89ZVtzXSkpe2lbc109U3RyaW5nLmZyb21DaGFyQ29kZShuW29dKTtjb250aW51ZX19aVtzXT1TdHJpbmcuZnJvbUNvZGVQb2ludChjKX19cmV0dXJuIGl9YXN5bmMgYnVpbGRUb1VuaWNvZGUoZSl7ZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcD1lLnRvVW5pY29kZT8ubGVuZ3RoPjA7aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCl7IWUuY29tcG9zaXRlJiZlLmhhc0VuY29kaW5nJiYoZS5mYWxsYmFja1RvVW5pY29kZT10aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtyZXR1cm4gZS50b1VuaWNvZGV9aWYoIWUuY29tcG9zaXRlKXJldHVybiBuZXcgVG9Vbmljb2RlTWFwKHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO2lmKGUuY29tcG9zaXRlJiYoZS5jTWFwLmJ1aWx0SW5DTWFwJiYhKGUuY01hcCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8/LnJlZ2lzdHJ5JiYoIkdCMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJDTlMxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkphcGFuMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJLb3JlYTEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nKSkpe2NvbnN0e3JlZ2lzdHJ5OnQsb3JkZXJpbmc6aX09ZS5jaWRTeXN0ZW1JbmZvLGE9TmFtZS5nZXQoYCR7dH0tJHtpfS1VQ1MyYCkscj1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmEsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSkscz1bXSxuPVtdO2UuY01hcC5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2lmKHQ+NjU1MzUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJNYXggc2l6ZSBvZiBDSUQgaXMgNjUsNTM1Iik7Y29uc3QgaT1yLmxvb2t1cCh0KTtpZihpKXtuLmxlbmd0aD0wO2ZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrPTIpbi5wdXNoKChpLmNoYXJDb2RlQXQoZSk8PDgpK2kuY2hhckNvZGVBdChlKzEpKTtzW2VdPVN0cmluZy5mcm9tQ2hhckNvZGUoLi4ubil9fSkpO3JldHVybiBuZXcgVG9Vbmljb2RlTWFwKHMpfXJldHVybiBuZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoZS5maXJzdENoYXIsZS5sYXN0Q2hhcil9YXN5bmMgcmVhZFRvVW5pY29kZShlKXtpZighZSlyZXR1cm4gbnVsbDtpZihlIGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7cmV0dXJuIHQgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXA/bmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKDAsNjU1MzUpOm5ldyBUb1VuaWNvZGVNYXAodC5nZXRNYXAoKSl9aWYoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pdHJ5e2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO2lmKHQgaW5zdGFuY2VvZiBJZGVudGl0eUNNYXApcmV0dXJuIG5ldyBJZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTtjb25zdCBpPW5ldyBBcnJheSh0Lmxlbmd0aCk7dC5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdCl7aVtlXT1TdHJpbmcuZnJvbUNvZGVQb2ludCh0KTtyZXR1cm59Y29uc3QgYT1bXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPTIpe2NvbnN0IGk9dC5jaGFyQ29kZUF0KGUpPDw4fHQuY2hhckNvZGVBdChlKzEpO2lmKDU1Mjk2IT0oNjM0ODgmaSkpe2EucHVzaChpKTtjb250aW51ZX1lKz0yO2NvbnN0IHI9dC5jaGFyQ29kZUF0KGUpPDw4fHQuY2hhckNvZGVBdChlKzEpO2EucHVzaCgoKDEwMjMmaSk8PDEwKSsoMTAyMyZyKSs2NTUzNil9aVtlXT1TdHJpbmcuZnJvbUNvZGVQb2ludCguLi5hKX0pKTtyZXR1cm4gbmV3IFRvVW5pY29kZU1hcChpKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgcmVhZFRvVW5pY29kZSAtIGlnbm9yaW5nIFRvVW5pY29kZSBkYXRhOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9dGhyb3cgZX1yZXR1cm4gbnVsbH1yZWFkQ2lkVG9HaWRNYXAoZSx0KXtjb25zdCBpPVtdO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lW2ErK108PDh8ZVthXSxzPWE+PjE7KDAhPT1yfHx0LmhhcyhzKSkmJihpW3NdPXIpfXJldHVybiBpfWV4dHJhY3RXaWR0aHMoZSx0LGkpe2NvbnN0IGE9dGhpcy54cmVmO2xldCByPVtdLHM9MDtjb25zdCBuPVtdO2xldCBvO2lmKGkuY29tcG9zaXRlKXtjb25zdCB0PWUuZ2V0KCJEVyIpO3M9TnVtYmVyLmlzSW50ZWdlcih0KT90OjFlMztjb25zdCBnPWUuZ2V0KCJXIik7aWYoQXJyYXkuaXNBcnJheShnKSlmb3IobGV0IGU9MCx0PWcubGVuZ3RoO2U8dDtlKyspe2xldCB0PWEuZmV0Y2hJZlJlZihnW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IGk9YS5mZXRjaElmUmVmKGdbZV0pO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGNvbnN0IGUgb2YgaSl7Y29uc3QgaT1hLmZldGNoSWZSZWYoZSk7Im51bWJlciI9PXR5cGVvZiBpJiYoclt0XT1pKTt0Kyt9ZWxzZXtpZighTnVtYmVyLmlzSW50ZWdlcihpKSlicmVhazt7Y29uc3Qgcz1hLmZldGNoSWZSZWYoZ1srK2VdKTtpZigibnVtYmVyIiE9dHlwZW9mIHMpY29udGludWU7Zm9yKGxldCBlPXQ7ZTw9aTtlKyspcltlXT1zfX19aWYoaS52ZXJ0aWNhbCl7Y29uc3QgdD1lLmdldEFycmF5KCJEVzIiKTtsZXQgaT1pc051bWJlckFycmF5KHQsMik/dDpbODgwLC0xZTNdO289W2lbMV0sLjUqcyxpWzBdXTtpPWUuZ2V0KCJXMiIpO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtsZXQgdD1hLmZldGNoSWZSZWYoaVtlKytdKTtpZighTnVtYmVyLmlzSW50ZWdlcih0KSlicmVhaztjb25zdCByPWEuZmV0Y2hJZlJlZihpW2VdKTtpZihBcnJheS5pc0FycmF5KHIpKWZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgaT1bYS5mZXRjaElmUmVmKHJbZSsrXSksYS5mZXRjaElmUmVmKHJbZSsrXSksYS5mZXRjaElmUmVmKHJbZV0pXTtpc051bWJlckFycmF5KGksbnVsbCkmJihuW3RdPWkpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpKWJyZWFrO3tjb25zdCBzPVthLmZldGNoSWZSZWYoaVsrK2VdKSxhLmZldGNoSWZSZWYoaVsrK2VdKSxhLmZldGNoSWZSZWYoaVsrK2VdKV07aWYoIWlzTnVtYmVyQXJyYXkocyxudWxsKSljb250aW51ZTtmb3IobGV0IGU9dDtlPD1yO2UrKyluW2VdPXN9fX19fWVsc2V7Y29uc3Qgbj1lLmdldCgiV2lkdGhzIik7aWYoQXJyYXkuaXNBcnJheShuKSl7bGV0IGU9aS5maXJzdENoYXI7Zm9yKGNvbnN0IHQgb2Ygbil7Y29uc3QgaT1hLmZldGNoSWZSZWYodCk7Im51bWJlciI9PXR5cGVvZiBpJiYocltlXT1pKTtlKyt9Y29uc3Qgbz10LmdldCgiTWlzc2luZ1dpZHRoIik7cz0ibnVtYmVyIj09dHlwZW9mIG8/bzowfWVsc2V7Y29uc3QgdD1lLmdldCgiQmFzZUZvbnQiKTtpZih0IGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgZT10aGlzLmdldEJhc2VGb250TWV0cmljcyh0Lm5hbWUpO3I9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChlLndpZHRocyxpKTtzPWUuZGVmYXVsdFdpZHRofX19bGV0IGc9ITAsYz1zO2Zvcihjb25zdCBlIGluIHIpe2NvbnN0IHQ9cltlXTtpZih0KWlmKGMpe2lmKGMhPT10KXtnPSExO2JyZWFrfX1lbHNlIGM9dH1nP2kuZmxhZ3N8PVlpOmkuZmxhZ3MmPX5ZaTtpLmRlZmF1bHRXaWR0aD1zO2kud2lkdGhzPXI7aS5kZWZhdWx0Vk1ldHJpY3M9bztpLnZtZXRyaWNzPW59aXNTZXJpZkZvbnQoZSl7Y29uc3QgdD1lLnNwbGl0KCItIiwxKVswXTtyZXR1cm4gdCBpbiBYaSgpfHwvc2VyaWYvZ2kudGVzdCh0KX1nZXRCYXNlRm9udE1ldHJpY3MoZSl7bGV0IHQ9MCxpPU9iamVjdC5jcmVhdGUobnVsbCksYT0hMTtsZXQgcj1QaSgpW2VdfHxlO2NvbnN0IHM9QWEoKTtyIGluIHN8fChyPXRoaXMuaXNTZXJpZkZvbnQoZSk/IlRpbWVzLVJvbWFuIjoiSGVsdmV0aWNhIik7Y29uc3Qgbj1zW3JdO2lmKCJudW1iZXIiPT10eXBlb2Ygbil7dD1uO2E9ITB9ZWxzZSBpPW4oKTtyZXR1cm57ZGVmYXVsdFdpZHRoOnQsbW9ub3NwYWNlOmEsd2lkdGhzOml9fWJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUsdCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLGE9dC5kaWZmZXJlbmNlcyxyPXQuZGVmYXVsdEVuY29kaW5nO2ZvcihsZXQgdD0wO3Q8MjU2O3QrKyl0IGluIGEmJmVbYVt0XV0/aVt0XT1lW2FbdF1dOnQgaW4gciYmZVtyW3RdXSYmKGlbdF09ZVtyW3RdXSk7cmV0dXJuIGl9cHJlRXZhbHVhdGVGb250KGUpe2NvbnN0IHQ9ZTtsZXQgaT1lLmdldCgiU3VidHlwZSIpO2lmKCEoaSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiaW52YWxpZCBmb250IFN1YnR5cGUiKTtsZXQgYSxyPSExO2lmKCJUeXBlMCI9PT1pLm5hbWUpe2NvbnN0IHQ9ZS5nZXQoIkRlc2NlbmRhbnRGb250cyIpO2lmKCF0KXRocm93IG5ldyBGb3JtYXRFcnJvcigiRGVzY2VuZGFudCBmb250cyBhcmUgbm90IHNwZWNpZmllZCIpO2lmKCEoKGU9QXJyYXkuaXNBcnJheSh0KT90aGlzLnhyZWYuZmV0Y2hJZlJlZih0WzBdKTp0KWluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnQgaXMgbm90IGEgZGljdGlvbmFyeS4iKTtpPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO3I9ITB9bGV0IHM9ZS5nZXQoIkZpcnN0Q2hhciIpO051bWJlci5pc0ludGVnZXIocyl8fChzPTApO2xldCBuPWUuZ2V0KCJMYXN0Q2hhciIpO051bWJlci5pc0ludGVnZXIobil8fChuPXI/NjU1MzU6MjU1KTtjb25zdCBvPWUuZ2V0KCJGb250RGVzY3JpcHRvciIpLGc9ZS5nZXQoIlRvVW5pY29kZSIpfHx0LmdldCgiVG9Vbmljb2RlIik7aWYobyl7YT1uZXcgTXVybXVySGFzaDNfNjQ7Y29uc3QgaT10LmdldFJhdygiRW5jb2RpbmciKTtpZihpIGluc3RhbmNlb2YgTmFtZSlhLnVwZGF0ZShpLm5hbWUpO2Vsc2UgaWYoaSBpbnN0YW5jZW9mIFJlZilhLnVwZGF0ZShpLnRvU3RyaW5nKCkpO2Vsc2UgaWYoaSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IGUgb2YgaS5nZXRSYXdWYWx1ZXMoKSlpZihlIGluc3RhbmNlb2YgTmFtZSlhLnVwZGF0ZShlLm5hbWUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFJlZilhLnVwZGF0ZShlLnRvU3RyaW5nKCkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1lLmxlbmd0aCxpPW5ldyBBcnJheSh0KTtmb3IobGV0IGE9MDthPHQ7YSsrKXtjb25zdCB0PWVbYV07dCBpbnN0YW5jZW9mIE5hbWU/aVthXT10Lm5hbWU6KCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFJlZikmJihpW2FdPXQudG9TdHJpbmcoKSl9YS51cGRhdGUoaS5qb2luKCkpfWEudXBkYXRlKGAke3N9LSR7bn1gKTtpZihnIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgZT1nLnN0cnx8Zyx0PWUuYnVmZmVyP25ldyBVaW50OEFycmF5KGUuYnVmZmVyLmJ1ZmZlciwwLGUuYnVmZmVyTGVuZ3RoKTpuZXcgVWludDhBcnJheShlLmJ5dGVzLmJ1ZmZlcixlLnN0YXJ0LGUuZW5kLWUuc3RhcnQpO2EudXBkYXRlKHQpfWVsc2UgZyBpbnN0YW5jZW9mIE5hbWUmJmEudXBkYXRlKGcubmFtZSk7Y29uc3Qgbz1lLmdldCgiV2lkdGhzIil8fHQuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF5KG8pKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIG8pKCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIFJlZikmJmUucHVzaCh0LnRvU3RyaW5nKCkpO2EudXBkYXRlKGUuam9pbigpKX1pZihyKXthLnVwZGF0ZSgiY29tcG9zaXRlRm9udCIpO2NvbnN0IGk9ZS5nZXQoIlciKXx8dC5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIGkpaWYoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKWUucHVzaCh0LnRvU3RyaW5nKCkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgaT1bXTtmb3IoY29uc3QgZSBvZiB0KSgibnVtYmVyIj09dHlwZW9mIGV8fGUgaW5zdGFuY2VvZiBSZWYpJiZpLnB1c2goZS50b1N0cmluZygpKTtlLnB1c2goYFske2kuam9pbigpfV1gKX1hLnVwZGF0ZShlLmpvaW4oKSl9Y29uc3Qgcj1lLmdldFJhdygiQ0lEVG9HSURNYXAiKXx8dC5nZXRSYXcoIkNJRFRvR0lETWFwIik7ciBpbnN0YW5jZW9mIE5hbWU/YS51cGRhdGUoci5uYW1lKTpyIGluc3RhbmNlb2YgUmVmP2EudXBkYXRlKHIudG9TdHJpbmcoKSk6ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmEudXBkYXRlKHIucGVla0J5dGVzKCkpfX1yZXR1cm57ZGVzY3JpcHRvcjpvLGRpY3Q6ZSxiYXNlRGljdDp0LGNvbXBvc2l0ZTpyLHR5cGU6aS5uYW1lLGZpcnN0Q2hhcjpzLGxhc3RDaGFyOm4sdG9Vbmljb2RlOmcsaGFzaDphP2EuaGV4ZGlnZXN0KCk6IiJ9fWFzeW5jIHRyYW5zbGF0ZUZvbnQoe2Rlc2NyaXB0b3I6ZSxkaWN0OnQsYmFzZURpY3Q6YSxjb21wb3NpdGU6cix0eXBlOnMsZmlyc3RDaGFyOm4sbGFzdENoYXI6byx0b1VuaWNvZGU6Zyxjc3NGb250SW5mbzpjfSl7Y29uc3QgaD0iVHlwZTMiPT09cztpZighZSl7aWYoIWgpe2xldCBlPXQuZ2V0KCJCYXNlRm9udCIpO2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQmFzZSBmb250IGlzIG5vdCBzcGVjaWZpZWQiKTtlPWUubmFtZS5yZXBsYWNlQWxsKC9bLF9dL2csIi0iKTtjb25zdCBpPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKGUpLHI9ZS5zcGxpdCgiLSIsMSlbMF0sYz0odGhpcy5pc1NlcmlmRm9udChyKT9LaTowKXwoaS5tb25vc3BhY2U/WWk6MCl8KFppKClbcl0/VGk6cWkpLGw9e3R5cGU6cyxuYW1lOmUsbG9hZGVkTmFtZTphLmxvYWRlZE5hbWUsc3lzdGVtRm9udEluZm86bnVsbCx3aWR0aHM6aS53aWR0aHMsZGVmYXVsdFdpZHRoOmkuZGVmYXVsdFdpZHRoLGlzU2ltdWxhdGVkRmxhZ3M6ITAsZmxhZ3M6YyxmaXJzdENoYXI6bixsYXN0Q2hhcjpvLHRvVW5pY29kZTpnLHhIZWlnaHQ6MCxjYXBIZWlnaHQ6MCxpdGFsaWNBbmdsZTowLGlzVHlwZTNGb250Omh9LEM9dC5nZXQoIldpZHRocyIpLFE9Z2V0U3RhbmRhcmRGb250TmFtZShlKTtsZXQgRT1udWxsO2lmKFEpe0U9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoUSk7bC5pc0ludGVybmFsRm9udD0hIUV9IWwuaXNJbnRlcm5hbEZvbnQmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGwuc3lzdGVtRm9udEluZm89Z2V0Rm9udFN1YnN0aXR1dGlvbih0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCxlLFEscykpO2NvbnN0IHU9YXdhaXQgdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXModCxsKTtpZihBcnJheS5pc0FycmF5KEMpKXtjb25zdCBlPVtdO2xldCB0PW47Zm9yKGNvbnN0IGkgb2YgQyl7Y29uc3QgYT10aGlzLnhyZWYuZmV0Y2hJZlJlZihpKTsibnVtYmVyIj09dHlwZW9mIGEmJihlW3RdPWEpO3QrK311LndpZHRocz1lfWVsc2UgdS53aWR0aHM9dGhpcy5idWlsZENoYXJDb2RlVG9XaWR0aChpLndpZHRocyx1KTtyZXR1cm4gbmV3IEZvbnQoZSxFLHUpfXtjb25zdCBpPWxvb2t1cE5vcm1hbFJlY3QodC5nZXRBcnJheSgiRm9udEJCb3giKSxbMCwwLDAsMF0pOyhlPW5ldyBEaWN0KG51bGwpKS5zZXQoIkZvbnROYW1lIixOYW1lLmdldChzKSk7ZS5zZXQoIkZvbnRCQm94IixpKX19bGV0IGw9ZS5nZXQoIkZvbnROYW1lIiksQz10LmdldCgiQmFzZUZvbnQiKTsic3RyaW5nIj09dHlwZW9mIGwmJihsPU5hbWUuZ2V0KGwpKTsic3RyaW5nIj09dHlwZW9mIEMmJihDPU5hbWUuZ2V0KEMpKTtjb25zdCBRPWw/Lm5hbWUsRT1DPy5uYW1lO2lmKCFoJiZRIT09RSl7aW5mbyhgVGhlIEZvbnREZXNjcmlwdG9yJ3MgRm9udE5hbWUgaXMgIiR7UX0iIGJ1dCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIEZvbnQncyBCYXNlRm9udCAiJHtFfSIuYCk7USYmRSYmKEUuc3RhcnRzV2l0aChRKXx8IWlzS25vd25Gb250TmFtZShRKSYmaXNLbm93bkZvbnROYW1lKEUpKSYmKGw9bnVsbCl9bHx8PUM7aWYoIShsIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgbmFtZSIpO2xldCB1LGQsZixwLG07dHJ5e3U9ZS5nZXQoIkZvbnRGaWxlIiwiRm9udEZpbGUyIiwiRm9udEZpbGUzIil9Y2F0Y2goZSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGB0cmFuc2xhdGVGb250IC0gZmV0Y2hpbmcgIiR7bC5uYW1lfSIgZm9udCBmaWxlOiAiJHtlfSIuYCk7dT1uZXcgTnVsbFN0cmVhbX1sZXQgeT0hMSx3PW51bGwsYj1udWxsO2lmKHUpe2lmKHUuZGljdCl7Y29uc3QgZT11LmRpY3QuZ2V0KCJTdWJ0eXBlIik7ZSBpbnN0YW5jZW9mIE5hbWUmJihkPWUubmFtZSk7Zj11LmRpY3QuZ2V0KCJMZW5ndGgxIik7cD11LmRpY3QuZ2V0KCJMZW5ndGgyIik7bT11LmRpY3QuZ2V0KCJMZW5ndGgzIil9fWVsc2UgaWYoYyl7Y29uc3QgZT1nZXRYZmFGb250TmFtZShsLm5hbWUpO2lmKGUpe2MuZm9udEZhbWlseT1gJHtjLmZvbnRGYW1pbHl9LVBkZkpTLVhGQWA7Yy5tZXRyaWNzPWUubWV0cmljc3x8bnVsbDt3PWUuZmFjdG9yc3x8bnVsbDt1PWF3YWl0IHRoaXMuZmV0Y2hTdGFuZGFyZEZvbnREYXRhKGUubmFtZSk7eT0hIXU7YT10PWdldFhmYUZvbnREaWN0KGwubmFtZSk7cj0hMH19ZWxzZSBpZighaCl7Y29uc3QgZT1nZXRTdGFuZGFyZEZvbnROYW1lKGwubmFtZSk7aWYoZSl7dT1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlKTt5PSEhdX0heSYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYoYj1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGwubmFtZSxlLHMpKX1jb25zdCBEPWxvb2t1cE1hdHJpeCh0LmdldEFycmF5KCJGb250TWF0cml4IiksaSksUz1sb29rdXBOb3JtYWxSZWN0KGUuZ2V0QXJyYXkoIkZvbnRCQm94Iil8fHQuZ2V0QXJyYXkoIkZvbnRCQm94Iiksdm9pZCAwKTtsZXQgaz1lLmdldCgiQXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBrJiYoaz12b2lkIDApO2xldCBSPWUuZ2V0KCJEZXNjZW50Iik7Im51bWJlciIhPXR5cGVvZiBSJiYoUj12b2lkIDApO2xldCBOPWUuZ2V0KCJYSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBOJiYoTj0wKTtsZXQgRz1lLmdldCgiQ2FwSGVpZ2h0Iik7Im51bWJlciIhPXR5cGVvZiBHJiYoRz0wKTtsZXQgeD1lLmdldCgiRmxhZ3MiKTtOdW1iZXIuaXNJbnRlZ2VyKHgpfHwoeD0wKTtsZXQgTT1lLmdldCgiSXRhbGljQW5nbGUiKTsibnVtYmVyIiE9dHlwZW9mIE0mJihNPTApO2NvbnN0IFU9e3R5cGU6cyxuYW1lOmwubmFtZSxzdWJ0eXBlOmQsZmlsZTp1LGxlbmd0aDE6ZixsZW5ndGgyOnAsbGVuZ3RoMzptLGlzSW50ZXJuYWxGb250OnksbG9hZGVkTmFtZTphLmxvYWRlZE5hbWUsY29tcG9zaXRlOnIsZml4ZWRQaXRjaDohMSxmb250TWF0cml4OkQsZmlyc3RDaGFyOm4sbGFzdENoYXI6byx0b1VuaWNvZGU6ZyxiYm94OlMsYXNjZW50OmssZGVzY2VudDpSLHhIZWlnaHQ6TixjYXBIZWlnaHQ6RyxmbGFnczp4LGl0YWxpY0FuZ2xlOk0saXNUeXBlM0ZvbnQ6aCxjc3NGb250SW5mbzpjLHNjYWxlRmFjdG9yczp3LHN5c3RlbUZvbnRJbmZvOmJ9O2lmKHIpe2NvbnN0IGU9YS5nZXQoIkVuY29kaW5nIik7ZSBpbnN0YW5jZW9mIE5hbWUmJihVLmNpZEVuY29kaW5nPWUubmFtZSk7Y29uc3QgdD1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOmUsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSk7VS5jTWFwPXQ7VS52ZXJ0aWNhbD1VLmNNYXAudmVydGljYWx9Y29uc3QgTD1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyh0LFUpO3RoaXMuZXh0cmFjdFdpZHRocyh0LGUsTCk7cmV0dXJuIG5ldyBGb250KGwubmFtZSx1LEwpfXN0YXRpYyBidWlsZEZvbnRQYXRocyhlLHQsaSxhKXtmdW5jdGlvbiBidWlsZFBhdGgodCl7Y29uc3Qgcj1gJHtlLmxvYWRlZE5hbWV9X3BhdGhfJHt0fWA7dHJ5e2lmKGUucmVuZGVyZXIuaGFzQnVpbHRQYXRoKHQpKXJldHVybjtpLnNlbmQoImNvbW1vbm9iaiIsW3IsIkZvbnRQYXRoIixlLnJlbmRlcmVyLmdldFBhdGhKcyh0KV0pfWNhdGNoKGUpe2lmKGEuaWdub3JlRXJyb3JzKXt3YXJuKGBidWlsZEZvbnRQYXRocyAtIGlnbm9yaW5nICR7cn0gZ2x5cGg6ICIke2V9Ii5gKTtyZXR1cm59dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7YnVpbGRQYXRoKGUuZm9udENoYXIpO2NvbnN0IHQ9ZS5hY2NlbnQ7dD8uZm9udENoYXImJmJ1aWxkUGF0aCh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIFRyYW5zbGF0ZWRGb250e2NvbnN0cnVjdG9yKHtsb2FkZWROYW1lOmUsZm9udDp0LGRpY3Q6aSxldmFsdWF0b3JPcHRpb25zOmF9KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9aTt0aGlzLl9ldmFsdWF0b3JPcHRpb25zPWF8fEZyO3RoaXMudHlwZTNMb2FkZWQ9bnVsbDt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsO3RoaXMuc2VudD0hMX1zZW5kKGUpe2lmKCF0aGlzLnNlbnQpe3RoaXMuc2VudD0hMDtlLnNlbmQoImNvbW1vbm9iaiIsW3RoaXMubG9hZGVkTmFtZSwiRm9udCIsdGhpcy5mb250LmV4cG9ydERhdGEodGhpcy5fZXZhbHVhdG9yT3B0aW9ucy5mb250RXh0cmFQcm9wZXJ0aWVzKV0pfX1mYWxsYmFjayhlKXtpZih0aGlzLmZvbnQuZGF0YSl7dGhpcy5mb250LmRpc2FibGVGb250RmFjZT0hMDtQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKHRoaXMuZm9udCx0aGlzLmZvbnQuZ2x5cGhDYWNoZVZhbHVlcyxlLHRoaXMuX2V2YWx1YXRvck9wdGlvbnMpfX1sb2FkVHlwZTNEYXRhKGUsdCxpKXtpZih0aGlzLnR5cGUzTG9hZGVkKXJldHVybiB0aGlzLnR5cGUzTG9hZGVkO2lmKCF0aGlzLmZvbnQuaXNUeXBlM0ZvbnQpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGEgVHlwZTMgZm9udC4iKTtjb25zdCBhPWUuY2xvbmUoe2lnbm9yZUVycm9yczohMX0pLHI9bmV3IFJlZlNldChlLnR5cGUzRm9udFJlZnMpO3RoaXMuZGljdC5vYmpJZCYmIXIuaGFzKHRoaXMuZGljdC5vYmpJZCkmJnIucHV0KHRoaXMuZGljdC5vYmpJZCk7YS50eXBlM0ZvbnRSZWZzPXI7Y29uc3Qgcz10aGlzLmZvbnQsbj10aGlzLnR5cGUzRGVwZW5kZW5jaWVzO2xldCBvPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGc9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksYz10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxoPU9iamVjdC5jcmVhdGUobnVsbCksbD1VdGlsLm5vcm1hbGl6ZVJlY3Qocy5iYm94fHxbMCwwLDAsMF0pLEM9bFsyXS1sWzBdLFE9bFszXS1sWzFdLEU9TWF0aC5oeXBvdChDLFEpO2Zvcihjb25zdCBlIG9mIGcuZ2V0S2V5cygpKW89by50aGVuKCgoKT0+e2NvbnN0IHQ9Zy5nZXQoZSkscj1uZXcgT3BlcmF0b3JMaXN0O3JldHVybiBhLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazppLHJlc291cmNlczpjLG9wZXJhdG9yTGlzdDpyfSkudGhlbigoKCk9PntyLmZuQXJyYXlbMF09PT1FZSYmdGhpcy5fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhyLEUpO2hbZV09ci5nZXRJUigpO2Zvcihjb25zdCBlIG9mIHIuZGVwZW5kZW5jaWVzKW4uYWRkKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXt3YXJuKGBUeXBlMyBmb250IHJlc291cmNlICIke2V9IiBpcyBub3QgYXZhaWxhYmxlLmApO2NvbnN0IGk9bmV3IE9wZXJhdG9yTGlzdDtoW2VdPWkuZ2V0SVIoKX0pKX0pKTt0aGlzLnR5cGUzTG9hZGVkPW8udGhlbigoKCk9PntzLmNoYXJQcm9jT3BlcmF0b3JMaXN0PWg7aWYodGhpcy5fYmJveCl7cy5pc0NoYXJCQm94PSEwO3MuYmJveD10aGlzLl9iYm94fX0pKTtyZXR1cm4gdGhpcy50eXBlM0xvYWRlZH1fcmVtb3ZlVHlwZTNDb2xvck9wZXJhdG9ycyhlLHQ9TmFOKXtjb25zdCBpPVV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSksYT1pWzJdLWlbMF0scj1pWzNdLWlbMV0scz1NYXRoLmh5cG90KGEscik7aWYoMD09PWF8fDA9PT1yKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChzL3QpPj0xMCl7dGhpcy5fYmJveHx8KHRoaXMuX2Jib3g9WzEvMCwxLzAsLTEvMCwtMS8wXSk7dGhpcy5fYmJveFswXT1NYXRoLm1pbih0aGlzLl9iYm94WzBdLGlbMF0pO3RoaXMuX2Jib3hbMV09TWF0aC5taW4odGhpcy5fYmJveFsxXSxpWzFdKTt0aGlzLl9iYm94WzJdPU1hdGgubWF4KHRoaXMuX2Jib3hbMl0saVsyXSk7dGhpcy5fYmJveFszXT1NYXRoLm1heCh0aGlzLl9iYm94WzNdLGlbM10pfWxldCBuPTAsbz1lLmxlbmd0aDtmb3IoO248bzspe3N3aXRjaChlLmZuQXJyYXlbbl0pe2Nhc2UgRWU6YnJlYWs7Y2FzZSB1ZTpjYXNlIGRlOmNhc2UgZmU6Y2FzZSBwZTpjYXNlIG1lOmNhc2UgeWU6Y2FzZSB3ZTpjYXNlIGJlOmNhc2UgRGU6Y2FzZSBGZTpjYXNlIFNlOmNhc2Uga2U6Y2FzZSBSZTpjYXNlIGtBOmUuZm5BcnJheS5zcGxpY2UobiwxKTtlLmFyZ3NBcnJheS5zcGxpY2UobiwxKTtvLS07Y29udGludWU7Y2FzZSBOQTpjb25zdFt0XT1lLmFyZ3NBcnJheVtuXTtsZXQgaT0wLGE9dC5sZW5ndGg7Zm9yKDtpPGE7KXtjb25zdFtlXT10W2ldO3N3aXRjaChlKXtjYXNlIlRSIjpjYXNlIlRSMiI6Y2FzZSJIVCI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOnQuc3BsaWNlKGksMSk7YS0tO2NvbnRpbnVlfWkrK319bisrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09VXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkodCk7dGhpcy5mb250TmFtZT1udWxsO3RoaXMuZm9udFNpemU9MDt0aGlzLmxvYWRlZE5hbWU9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvbnRNYXRyaXg9aTt0aGlzLnRleHRNYXRyaXg9dC5zbGljZSgpO3RoaXMudGV4dExpbmVNYXRyaXg9dC5zbGljZSgpO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wfXNldFRleHRNYXRyaXgoZSx0LGksYSxyLHMpe2NvbnN0IG49dGhpcy50ZXh0TWF0cml4O25bMF09ZTtuWzFdPXQ7blsyXT1pO25bM109YTtuWzRdPXI7bls1XT1zfXNldFRleHRMaW5lTWF0cml4KGUsdCxpLGEscixzKXtjb25zdCBuPXRoaXMudGV4dExpbmVNYXRyaXg7blswXT1lO25bMV09dDtuWzJdPWk7blszXT1hO25bNF09cjtuWzVdPXN9dHJhbnNsYXRlVGV4dE1hdHJpeChlLHQpe2NvbnN0IGk9dGhpcy50ZXh0TWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfXRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGUsdCl7Y29uc3QgaT10aGlzLnRleHRMaW5lTWF0cml4O2lbNF09aVswXSplK2lbMl0qdCtpWzRdO2lbNV09aVsxXSplK2lbM10qdCtpWzVdfWNhcnJpYWdlUmV0dXJuKCl7dGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLC10aGlzLmxlYWRpbmcpO3RoaXMudGV4dE1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCl9Y2xvbmUoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUodGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheSh0KTt0aGlzLmZvbnQ9bnVsbDt0aGlzLnRleHRSZW5kZXJpbmdNb2RlPW07dGhpcy5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlLnNpbmdsZXRvbnMuZ3JheTt0aGlzLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXl9Y2xvbmUoKXtyZXR1cm4gT2JqZWN0LmNyZWF0ZSh0aGlzKX19Y2xhc3MgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye3N0YXRpYyBnZXQgb3BNYXAoKXtyZXR1cm4gc2hhZG93KHRoaXMsIm9wTWFwIixPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCkse3c6e2lkOndBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEo6e2lkOmJBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGo6e2lkOkRBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LE06e2lkOkZBLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGQ6e2lkOlNBLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LHJpOntpZDprQSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxpOntpZDpSQSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxnczp7aWQ6TkEsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0scTp7aWQ6R0EsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sUTp7aWQ6eEEsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sY206e2lkOk1BLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LG06e2lkOlVBLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGw6e2lkOkxBLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGM6e2lkOkpBLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LHY6e2lkOkhBLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LHk6e2lkOnZBLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGg6e2lkOllBLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHJlOntpZDpLQSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxTOntpZDpUQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxzOntpZDpxQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxmOntpZDpPQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxGOntpZDpPQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiZioiOntpZDpQQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCOntpZDpXQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiQioiOntpZDpqQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxiOntpZDpYQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiYioiOntpZDpaQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxuOntpZDpWQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxXOntpZDpfQSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiVyoiOntpZDp6QSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCVDp7aWQ6JEEsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRVQ6e2lkOkFlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRjOntpZDplZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUdzp7aWQ6dGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHo6e2lkOmllLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRMOntpZDphZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUZjp7aWQ6cmUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVHI6e2lkOnNlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRzOntpZDpuZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUZDp7aWQ6b2UsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVEQ6e2lkOmdlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LFRtOntpZDpjZSxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSwiVCoiOntpZDpJZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxUajp7aWQ6aGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEo6e2lkOmxlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LCInIjp7aWQ6Q2UsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sJyInOntpZDpCZSxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxkMDp7aWQ6UWUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZDE6e2lkOkVlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LENTOntpZDp1ZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxjczp7aWQ6ZGUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sU0M6e2lkOmZlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LFNDTjp7aWQ6cGUsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LHNjOntpZDptZSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfSxzY246e2lkOnllLG51bUFyZ3M6MzMsdmFyaWFibGVBcmdzOiEwfSxHOntpZDp3ZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxnOntpZDpiZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxSRzp7aWQ6RGUsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0scmc6e2lkOkZlLG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LEs6e2lkOlNlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGs6e2lkOmtlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LHNoOntpZDpSZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxCSTp7aWQ6TmUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sSUQ6e2lkOkdlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEVJOntpZDp4ZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxEbzp7aWQ6TWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTVA6e2lkOlVlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERQOntpZDpMZSxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxCTUM6e2lkOkplLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJEQzp7aWQ6SGUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sRU1DOntpZDp2ZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCWDp7aWQ6WWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRVg6e2lkOktlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJNOm51bGwsQkQ6bnVsbCx0cnVlOm51bGwsZmE6bnVsbCxmYWw6bnVsbCxmYWxzOm51bGwsZmFsc2U6bnVsbCxudTpudWxsLG51bDpudWxsLG51bGw6bnVsbH0pKX1zdGF0aWMgTUFYX0lOVkFMSURfUEFUSF9PUFM9MTA7Y29uc3RydWN0b3IoZSx0LGk9bmV3IFN0YXRlTWFuYWdlcil7dGhpcy5wYXJzZXI9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGUsRXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwKSx4cmVmOnR9KTt0aGlzLnN0YXRlTWFuYWdlcj1pO3RoaXMubm9uUHJvY2Vzc2VkQXJncz1bXTt0aGlzLl9pc1BhdGhPcD0hMTt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wfWdldCBzYXZlZFN0YXRlc0RlcHRoKCl7cmV0dXJuIHRoaXMuc3RhdGVNYW5hZ2VyLnN0YXRlU3RhY2subGVuZ3RofXJlYWQoZSl7bGV0IHQ9ZS5hcmdzO2Zvcig7Oyl7Y29uc3QgaT10aGlzLnBhcnNlci5nZXRPYmooKTtpZihpIGluc3RhbmNlb2YgQ21kKXtjb25zdCBhPWkuY21kLHI9RXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwW2FdO2lmKCFyKXt3YXJuKGBVbmtub3duIGNvbW1hbmQgIiR7YX0iLmApO2NvbnRpbnVlfWNvbnN0IHM9ci5pZCxuPXIubnVtQXJncztsZXQgbz1udWxsIT09dD90Lmxlbmd0aDowO3RoaXMuX2lzUGF0aE9wfHwodGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MCk7dGhpcy5faXNQYXRoT3A9cz49VUEmJnM8PVZBO2lmKHIudmFyaWFibGVBcmdzKW8+biYmaW5mbyhgQ29tbWFuZCAke2F9OiBleHBlY3RlZCBbMCwgJHtufV0gYXJncywgYnV0IHJlY2VpdmVkICR7b30gYXJncy5gKTtlbHNle2lmKG8hPT1uKXtjb25zdCBlPXRoaXMubm9uUHJvY2Vzc2VkQXJncztmb3IoO28+bjspe2UucHVzaCh0LnNoaWZ0KCkpO28tLX1mb3IoO288biYmMCE9PWUubGVuZ3RoOyl7bnVsbD09PXQmJih0PVtdKTt0LnVuc2hpZnQoZS5wb3AoKSk7bysrfX1pZihvPG4pe2NvbnN0IGU9YGNvbW1hbmQgJHthfTogZXhwZWN0ZWQgJHtufSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmA7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+RXZhbHVhdG9yUHJlcHJvY2Vzc29yLk1BWF9JTlZBTElEX1BBVEhfT1BTKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCAke2V9YCk7d2FybihgU2tpcHBpbmcgJHtlfWApO251bGwhPT10JiYodC5sZW5ndGg9MCk7Y29udGludWV9fXRoaXMucHJlcHJvY2Vzc0NvbW1hbmQocyx0KTtlLmZuPXM7ZS5hcmdzPXQ7cmV0dXJuITB9aWYoaT09PXB0KXJldHVybiExO2lmKG51bGwhPT1pKXtudWxsPT09dCYmKHQ9W10pO3QucHVzaChpKTtpZih0Lmxlbmd0aD4zMyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRvbyBtYW55IGFyZ3VtZW50cyIpfX19cHJlcHJvY2Vzc0NvbW1hbmQoZSx0KXtzd2l0Y2goMHxlKXtjYXNlIEdBOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIHhBOnRoaXMuc3RhdGVNYW5hZ2VyLnJlc3RvcmUoKTticmVhaztjYXNlIE1BOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fWNsYXNzIERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yIGV4dGVuZHMgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5ldyBTdHJpbmdTdHJlYW0oZSkpfXBhcnNlKCl7Y29uc3QgZT17Zm46MCxhcmdzOltdfSx0PXtmb250U2l6ZTowLGZvbnROYW1lOiIiLGZvbnRDb2xvcjpuZXcgVWludDhDbGFtcGVkQXJyYXkoMyl9O3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZighdGhpcy5yZWFkKGUpKWJyZWFrO2lmKDAhPT10aGlzLnNhdmVkU3RhdGVzRGVwdGgpY29udGludWU7Y29uc3R7Zm46aSxhcmdzOmF9PWU7c3dpdGNoKDB8aSl7Y2FzZSByZTpjb25zdFtlLGldPWE7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBpJiZpPjAmJih0LmZvbnRTaXplPWkpO2JyZWFrO2Nhc2UgRmU6Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKGEsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGJlOkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYkl0ZW0oYSwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2Uga2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiSXRlbShhLDAsdC5mb250Q29sb3IsMCl9fX1jYXRjaChlKXt3YXJuKGBwYXJzZURlZmF1bHRBcHBlYXJhbmNlIC0gaWdub3JpbmcgZXJyb3JzOiAiJHtlfSIuYCl9cmV0dXJuIHR9fWZ1bmN0aW9uIHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvcihlKS5wYXJzZSgpfWNsYXNzIEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSx0LGkpe3N1cGVyKGUpO3RoaXMuc3RyZWFtPWU7dGhpcy5ldmFsdWF0b3JPcHRpb25zPXQ7dGhpcy54cmVmPWk7dGhpcy5yZXNvdXJjZXM9ZS5kaWN0Py5nZXQoIlJlc291cmNlcyIpfXBhcnNlKCl7Y29uc3QgZT17Zm46MCxhcmdzOltdfTtsZXQgdD17c2NhbGVGYWN0b3I6MSxmb250U2l6ZTowLGZvbnROYW1lOiIiLGZvbnRDb2xvcjpuZXcgVWludDhDbGFtcGVkQXJyYXkoMyksZmlsbENvbG9yU3BhY2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXl9LGk9ITE7Y29uc3QgYT1bXTt0cnl7Zm9yKDs7KXtlLmFyZ3MubGVuZ3RoPTA7aWYoaXx8IXRoaXMucmVhZChlKSlicmVhaztjb25zdHtmbjpyLGFyZ3M6c309ZTtzd2l0Y2goMHxyKXtjYXNlIEdBOmEucHVzaCh7c2NhbGVGYWN0b3I6dC5zY2FsZUZhY3Rvcixmb250U2l6ZTp0LmZvbnRTaXplLGZvbnROYW1lOnQuZm9udE5hbWUsZm9udENvbG9yOnQuZm9udENvbG9yLnNsaWNlKCksZmlsbENvbG9yU3BhY2U6dC5maWxsQ29sb3JTcGFjZX0pO2JyZWFrO2Nhc2UgeEE6dD1hLnBvcCgpfHx0O2JyZWFrO2Nhc2UgY2U6dC5zY2FsZUZhY3Rvcio9TWF0aC5oeXBvdChzWzBdLHNbMV0pO2JyZWFrO2Nhc2UgcmU6Y29uc3RbZSxyXT1zO2UgaW5zdGFuY2VvZiBOYW1lJiYodC5mb250TmFtZT1lLm5hbWUpOyJudW1iZXIiPT10eXBlb2YgciYmcj4wJiYodC5mb250U2l6ZT1yKnQuc2NhbGVGYWN0b3IpO2JyZWFrO2Nhc2UgZGU6dC5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlLnBhcnNlKHtjczpzWzBdLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0aGlzLnJlc291cmNlcyxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGxvY2FsQ29sb3JTcGFjZUNhY2hlOnRoaXMuX2xvY2FsQ29sb3JTcGFjZUNhY2hlfSk7YnJlYWs7Y2FzZSBtZTp0LmZpbGxDb2xvclNwYWNlLmdldFJnYkl0ZW0ocywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgRmU6Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKHMsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGJlOkNvbG9yU3BhY2Uuc2luZ2xldG9ucy5ncmF5LmdldFJnYkl0ZW0ocywwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2Uga2U6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmNteWsuZ2V0UmdiSXRlbShzLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSBoZTpjYXNlIGxlOmNhc2UgQ2U6Y2FzZSBCZTppPSEwfX19Y2F0Y2goZSl7d2FybihgcGFyc2VBcHBlYXJhbmNlU3RyZWFtIC0gaWdub3JpbmcgZXJyb3JzOiAiJHtlfSIuYCl9dGhpcy5zdHJlYW0ucmVzZXQoKTtkZWxldGUgdC5zY2FsZUZhY3RvcjtkZWxldGUgdC5maWxsQ29sb3JTcGFjZTtyZXR1cm4gdH1nZXQgX2xvY2FsQ29sb3JTcGFjZUNhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfbG9jYWxDb2xvclNwYWNlQ2FjaGUiLG5ldyBMb2NhbENvbG9yU3BhY2VDYWNoZSl9Z2V0IF9wZGZGdW5jdGlvbkZhY3RvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9wZGZGdW5jdGlvbkZhY3RvcnkiLG5ldyBQREZGdW5jdGlvbkZhY3Rvcnkoe3hyZWY6dGhpcy54cmVmLGlzRXZhbFN1cHBvcnRlZDp0aGlzLmV2YWx1YXRvck9wdGlvbnMuaXNFdmFsU3VwcG9ydGVkfSkpfX1mdW5jdGlvbiBnZXRQZGZDb2xvcihlLHQpe2lmKGVbMF09PT1lWzFdJiZlWzFdPT09ZVsyXSl7cmV0dXJuYCR7bnVtYmVyVG9TdHJpbmcoZVswXS8yNTUpfSAke3Q/ImciOiJHIn1gfXJldHVybiBBcnJheS5mcm9tKGUsKGU9Pm51bWJlclRvU3RyaW5nKGUvMjU1KSkpLmpvaW4oIiAiKSsiICIrKHQ/InJnIjoiUkciKX1jbGFzcyBGYWtlVW5pY29kZUZvbnR7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnhyZWY9ZTt0aGlzLndpZHRocz1udWxsO3RoaXMuZmlyc3RDaGFyPTEvMDt0aGlzLmxhc3RDaGFyPS0xLzA7dGhpcy5mb250RmFtaWx5PXQ7Y29uc3QgaT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSk7dGhpcy5jdHhNZWFzdXJlPWkuZ2V0Q29udGV4dCgiMmQiKTtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWR8fChGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQ9MSk7dGhpcy5mb250TmFtZT1OYW1lLmdldChgSW52YWxpZFBERmpzRm9udF8ke3R9XyR7RmFrZVVuaWNvZGVGb250Ll9mb250TmFtZUlkKyt9YCl9Z2V0IGZvbnREZXNjcmlwdG9yUmVmKCl7aWYoIUZha2VVbmljb2RlRm9udC5fZm9udERlc2NyaXB0b3JSZWYpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZvbnREZXNjcmlwdG9yIikpO2Uuc2V0KCJGb250TmFtZSIsdGhpcy5mb250TmFtZSk7ZS5zZXQoIkZvbnRGYW1pbHkiLCJNeXJpYWRQcm8gUmVndWxhciIpO2Uuc2V0KCJGb250QkJveCIsWzAsMCwwLDBdKTtlLnNldCgiRm9udFN0cmV0Y2giLE5hbWUuZ2V0KCJOb3JtYWwiKSk7ZS5zZXQoIkZvbnRXZWlnaHQiLDQwMCk7ZS5zZXQoIkl0YWxpY0FuZ2xlIiwwKTtGYWtlVW5pY29kZUZvbnQuX2ZvbnREZXNjcmlwdG9yUmVmPXRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfXJldHVybiBGYWtlVW5pY29kZUZvbnQuX2ZvbnREZXNjcmlwdG9yUmVmfWdldCBkZXNjZW5kYW50Rm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTtlLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMCIpKTtlLnNldCgiQ0lEVG9HSURNYXAiLE5hbWUuZ2V0KCJJZGVudGl0eSIpKTtlLnNldCgiRmlyc3RDaGFyIix0aGlzLmZpcnN0Q2hhcik7ZS5zZXQoIkxhc3RDaGFyIix0aGlzLmxhc3RDaGFyKTtlLnNldCgiRm9udERlc2NyaXB0b3IiLHRoaXMuZm9udERlc2NyaXB0b3JSZWYpO2Uuc2V0KCJEVyIsMWUzKTtjb25zdCB0PVtdLGk9Wy4uLnRoaXMud2lkdGhzLmVudHJpZXMoKV0uc29ydCgpO2xldCBhPW51bGwscj1udWxsO2Zvcihjb25zdFtlLHNdb2YgaSlpZihhKWlmKGU9PT1hK3IubGVuZ3RoKXIucHVzaChzKTtlbHNle3QucHVzaChhLHIpO2E9ZTtyPVtzXX1lbHNle2E9ZTtyPVtzXX1hJiZ0LnB1c2goYSxyKTtlLnNldCgiVyIsdCk7Y29uc3Qgcz1uZXcgRGljdCh0aGlzLnhyZWYpO3Muc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7cy5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtzLnNldCgiU3VwcGxlbWVudCIsMCk7ZS5zZXQoIkNJRFN5c3RlbUluZm8iLHMpO3JldHVybiB0aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1nZXQgYmFzZUZvbnRSZWYoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7ZS5zZXQoIkJhc2VGb250Iix0aGlzLmZvbnROYW1lKTtlLnNldCgiVHlwZSIsTmFtZS5nZXQoIkZvbnQiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJUeXBlMCIpKTtlLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO2Uuc2V0KCJEZXNjZW5kYW50Rm9udHMiLFt0aGlzLmRlc2NlbmRhbnRGb250UmVmXSk7ZS5zZXQoIlRvVW5pY29kZSIsTmFtZS5nZXQoIklkZW50aXR5LUgiKSk7cmV0dXJuIHRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KHRoaXMuZm9udE5hbWUubmFtZSx0aGlzLmJhc2VGb250UmVmKTtlLnNldCgiRm9udCIsdCk7cmV0dXJuIGV9X2NyZWF0ZUNvbnRleHQoKXt0aGlzLndpZHRocz1uZXcgTWFwO3RoaXMuY3R4TWVhc3VyZS5mb250PWAxMDAwcHggJHt0aGlzLmZvbnRGYW1pbHl9YDtyZXR1cm4gdGhpcy5jdHhNZWFzdXJlfWNyZWF0ZUZvbnRSZXNvdXJjZXMoZSl7Y29uc3QgdD10aGlzLl9jcmVhdGVDb250ZXh0KCk7Zm9yKGNvbnN0IGkgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSlmb3IoY29uc3QgZSBvZiBpLnNwbGl0KCIiKSl7Y29uc3QgaT1lLmNoYXJDb2RlQXQoMCk7aWYodGhpcy53aWR0aHMuaGFzKGkpKWNvbnRpbnVlO2NvbnN0IGE9dC5tZWFzdXJlVGV4dChlKSxyPU1hdGguY2VpbChhLndpZHRoKTt0aGlzLndpZHRocy5zZXQoaSxyKTt0aGlzLmZpcnN0Q2hhcj1NYXRoLm1pbihpLHRoaXMuZmlyc3RDaGFyKTt0aGlzLmxhc3RDaGFyPU1hdGgubWF4KGksdGhpcy5sYXN0Q2hhcil9cmV0dXJuIHRoaXMucmVzb3VyY2VzfXN0YXRpYyBnZXRGaXJzdFBvc2l0aW9uSW5mbyhlLHQsaSl7Y29uc3RbcyxuLG8sZ109ZTtsZXQgYz1vLXMsaD1nLW47dCUxODAhPTAmJihbYyxoXT1baCxjXSk7Y29uc3QgbD1hKmk7cmV0dXJue2Nvb3JkczpbMCxoK3IqaS1sXSxiYm94OlswLDAsYyxoXSxtYXRyaXg6MCE9PXQ/Z2V0Um90YXRpb25NYXRyaXgodCxoLGwpOnZvaWQgMH19Y3JlYXRlQXBwZWFyYW5jZShlLHQsaSxzLG4sbyl7Y29uc3QgZz10aGlzLl9jcmVhdGVDb250ZXh0KCksYz1bXTtsZXQgaD0tMS8wO2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1xyXG4/fFxuLykpe2MucHVzaCh0KTtjb25zdCBlPWcubWVhc3VyZVRleHQodCkud2lkdGg7aD1NYXRoLm1heChoLGUpO2Zvcihjb25zdCBlIG9mIGNvZGVQb2ludEl0ZXIodCkpe2NvbnN0IHQ9U3RyaW5nLmZyb21Db2RlUG9pbnQoZSk7bGV0IGk9dGhpcy53aWR0aHMuZ2V0KGUpO2lmKHZvaWQgMD09PWkpe2NvbnN0IGE9Zy5tZWFzdXJlVGV4dCh0KTtpPU1hdGguY2VpbChhLndpZHRoKTt0aGlzLndpZHRocy5zZXQoZSxpKTt0aGlzLmZpcnN0Q2hhcj1NYXRoLm1pbihlLHRoaXMuZmlyc3RDaGFyKTt0aGlzLmxhc3RDaGFyPU1hdGgubWF4KGUsdGhpcy5sYXN0Q2hhcil9fX1oKj1zLzFlMztjb25zdFtsLEMsUSxFXT10O2xldCB1PVEtbCxkPUUtQztpJTE4MCE9MCYmKFt1LGRdPVtkLHVdKTtsZXQgZj0xO2g+dSYmKGY9dS9oKTtsZXQgcD0xO2NvbnN0IG09YSpzLHk9cipzLHc9bSpjLmxlbmd0aDt3PmQmJihwPWQvdyk7Y29uc3QgYj1zKk1hdGgubWluKGYscCksRD1bInEiLGAwIDAgJHtudW1iZXJUb1N0cmluZyh1KX0gJHtudW1iZXJUb1N0cmluZyhkKX0gcmUgVyBuYCwiQlQiLGAxIDAgMCAxIDAgJHtudW1iZXJUb1N0cmluZyhkK3kpfSBUbSAwIFRjICR7Z2V0UGRmQ29sb3IobiwhMCl9YCxgLyR7dGhpcy5mb250TmFtZS5uYW1lfSAke251bWJlclRvU3RyaW5nKGIpfSBUZmBdLHtyZXNvdXJjZXM6U309dGhpcztpZigxIT09KG89Im51bWJlciI9PXR5cGVvZiBvJiZvPj0wJiZvPD0xP286MSkpe0QucHVzaCgiL1IwIGdzIik7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpLHQ9bmV3IERpY3QodGhpcy54cmVmKTt0LnNldCgiY2EiLG8pO3Quc2V0KCJDQSIsbyk7dC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSk7ZS5zZXQoIlIwIix0KTtTLnNldCgiRXh0R1N0YXRlIixlKX1jb25zdCBrPW51bWJlclRvU3RyaW5nKG0pO2Zvcihjb25zdCBlIG9mIGMpRC5wdXNoKGAwIC0ke2t9IFRkIDwke3N0cmluZ1RvVVRGMTZIZXhTdHJpbmcoZSl9PiBUamApO0QucHVzaCgiRVQiLCJRIik7Y29uc3QgUj1ELmpvaW4oIlxuIiksTj1uZXcgRGljdCh0aGlzLnhyZWYpO04uc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtOLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7Ti5zZXQoIkJCb3giLFswLDAsdSxkXSk7Ti5zZXQoIkxlbmd0aCIsUi5sZW5ndGgpO04uc2V0KCJSZXNvdXJjZXMiLFMpO2lmKGkpe2NvbnN0IGU9Z2V0Um90YXRpb25NYXRyaXgoaSx1LGQpO04uc2V0KCJNYXRyaXgiLGUpfWNvbnN0IEc9bmV3IFN0cmluZ1N0cmVhbShSKTtHLmRpY3Q9TjtyZXR1cm4gR319Y2xhc3MgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5jb25zdHJ1Y3Rvcj09PU5hbWVPck51bWJlclRyZWUmJnVucmVhY2hhYmxlKCJDYW5ub3QgaW5pdGlhbGl6ZSBOYW1lT3JOdW1iZXJUcmVlLiIpO3RoaXMucm9vdD1lO3RoaXMueHJlZj10O3RoaXMuX3R5cGU9aX1nZXRBbGwoKXtjb25zdCBlPW5ldyBNYXA7aWYoIXRoaXMucm9vdClyZXR1cm4gZTtjb25zdCB0PXRoaXMueHJlZixpPW5ldyBSZWZTZXQ7aS5wdXQodGhpcy5yb290KTtjb25zdCBhPVt0aGlzLnJvb3RdO2Zvcig7YS5sZW5ndGg+MDspe2NvbnN0IHI9dC5mZXRjaElmUmVmKGEuc2hpZnQoKSk7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aWYoci5oYXMoIktpZHMiKSl7Y29uc3QgZT1yLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO2Zvcihjb25zdCB0IG9mIGUpe2lmKGkuaGFzKHQpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgRHVwbGljYXRlIGVudHJ5IGluICIke3RoaXMuX3R5cGV9IiB0cmVlLmApO2EucHVzaCh0KTtpLnB1dCh0KX1jb250aW51ZX1jb25zdCBzPXIuZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkocykpZm9yKGxldCBpPTAsYT1zLmxlbmd0aDtpPGE7aSs9MillLnNldCh0LmZldGNoSWZSZWYoc1tpXSksdC5mZXRjaElmUmVmKHNbaSsxXSkpfXJldHVybiBlfWdldChlKXtpZighdGhpcy5yb290KXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy54cmVmO2xldCBpPXQuZmV0Y2hJZlJlZih0aGlzLnJvb3QpLGE9MDtmb3IoO2kuaGFzKCJLaWRzIik7KXtpZigrK2E+MTApe3dhcm4oYFNlYXJjaCBkZXB0aCBsaW1pdCByZWFjaGVkIGZvciAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtyZXR1cm4gbnVsbH1jb25zdCByPWkuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG51bGw7bGV0IHM9MCxuPXIubGVuZ3RoLTE7Zm9yKDtzPD1uOyl7Y29uc3QgYT1zK24+PjEsbz10LmZldGNoSWZSZWYoclthXSksZz1vLmdldCgiTGltaXRzIik7aWYoZTx0LmZldGNoSWZSZWYoZ1swXSkpbj1hLTE7ZWxzZXtpZighKGU+dC5mZXRjaElmUmVmKGdbMV0pKSl7aT1vO2JyZWFrfXM9YSsxfX1pZihzPm4pcmV0dXJuIG51bGx9Y29uc3Qgcj1pLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF5KHIpKXtsZXQgaT0wLGE9ci5sZW5ndGgtMjtmb3IoO2k8PWE7KXtjb25zdCBzPWkrYT4+MSxuPXMrKDEmcyksbz10LmZldGNoSWZSZWYocltuXSk7aWYoZTxvKWE9bi0yO2Vsc2V7aWYoIShlPm8pKXJldHVybiB0LmZldGNoSWZSZWYocltuKzFdKTtpPW4rMn19fXJldHVybiBudWxsfX1jbGFzcyBOYW1lVHJlZSBleHRlbmRzIE5hbWVPck51bWJlclRyZWV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsIk5hbWVzIil9fWNsYXNzIE51bWJlclRyZWUgZXh0ZW5kcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LCJOdW1zIil9fWZ1bmN0aW9uIGNsZWFyR2xvYmFsQ2FjaGVzKCl7IWZ1bmN0aW9uIGNsZWFyUGF0dGVybkNhY2hlcygpe3lhPU9iamVjdC5jcmVhdGUobnVsbCl9KCk7IWZ1bmN0aW9uIGNsZWFyUHJpbWl0aXZlQ2FjaGVzKCl7bXQ9T2JqZWN0LmNyZWF0ZShudWxsKTt5dD1PYmplY3QuY3JlYXRlKG51bGwpO3d0PU9iamVjdC5jcmVhdGUobnVsbCl9KCk7IWZ1bmN0aW9uIGNsZWFyVW5pY29kZUNhY2hlcygpe0hpLmNsZWFyKCl9KCk7SnB4SW1hZ2UuY2xlYW51cCgpfWZ1bmN0aW9uIHBpY2tQbGF0Zm9ybUl0ZW0oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEaWN0P2UuaGFzKCJVRiIpP2UuZ2V0KCJVRiIpOmUuaGFzKCJGIik/ZS5nZXQoIkYiKTplLmhhcygiVW5peCIpP2UuZ2V0KCJVbml4Iik6ZS5oYXMoIk1hYyIpP2UuZ2V0KCJNYWMiKTplLmhhcygiRE9TIik/ZS5nZXQoIkRPUyIpOm51bGw6bnVsbH1jbGFzcyBGaWxlU3BlY3sjUz0hMTtjb25zdHJ1Y3RvcihlLHQsaT0hMSl7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe3RoaXMueHJlZj10O3RoaXMucm9vdD1lO2UuaGFzKCJGUyIpJiYodGhpcy5mcz1lLmdldCgiRlMiKSk7ZS5oYXMoIlJGIikmJndhcm4oIlJlbGF0ZWQgZmlsZSBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpO2l8fChlLmhhcygiRUYiKT90aGlzLiNTPSEwOndhcm4oIk5vbi1lbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIikpfX1nZXQgZmlsZW5hbWUoKXtsZXQgZT0iIjtjb25zdCB0PXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KTt0JiYic3RyaW5nIj09dHlwZW9mIHQmJihlPXN0cmluZ1RvUERGU3RyaW5nKHQpLnJlcGxhY2VBbGwoIlxcXFwiLCJcXCIpLnJlcGxhY2VBbGwoIlxcLyIsIi8iKS5yZXBsYWNlQWxsKCJcXCIsIi8iKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmaWxlbmFtZSIsZXx8InVubmFtZWQiKX1nZXQgY29udGVudCgpe2lmKCF0aGlzLiNTKXJldHVybiBudWxsO3RoaXMuX2NvbnRlbnRSZWZ8fD1waWNrUGxhdGZvcm1JdGVtKHRoaXMucm9vdD8uZ2V0KCJFRiIpKTtsZXQgZT1udWxsO2lmKHRoaXMuX2NvbnRlbnRSZWYpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYodGhpcy5fY29udGVudFJlZik7dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZT10LmdldEJ5dGVzKCk6d2FybigiRW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9uIHBvaW50cyB0byBub24tZXhpc3RpbmcvaW52YWxpZCBjb250ZW50Iil9ZWxzZSB3YXJuKCJFbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb24gZG9lcyBub3QgaGF2ZSBhbnkgY29udGVudCIpO3JldHVybiBlfWdldCBkZXNjcmlwdGlvbigpe2xldCBlPSIiO2NvbnN0IHQ9dGhpcy5yb290Py5nZXQoIkRlc2MiKTt0JiYic3RyaW5nIj09dHlwZW9mIHQmJihlPXN0cmluZ1RvUERGU3RyaW5nKHQpKTtyZXR1cm4gc2hhZG93KHRoaXMsImRlc2NyaXB0aW9uIixlKX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3Jhd0ZpbGVuYW1lOnRoaXMuZmlsZW5hbWUsZmlsZW5hbWU6KGU9dGhpcy5maWxlbmFtZSxlLnN1YnN0cmluZyhlLmxhc3RJbmRleE9mKCIvIikrMSkpLGNvbnRlbnQ6dGhpcy5jb250ZW50LGRlc2NyaXB0aW9uOnRoaXMuZGVzY3JpcHRpb259O3ZhciBlfX1jb25zdCBOcj0wLEdyPS0yLHhyPS0zLE1yPS00LFVyPS01LExyPS02LEpyPS05O2Z1bmN0aW9uIGlzV2hpdGVzcGFjZShlLHQpe2NvbnN0IGk9ZVt0XTtyZXR1cm4iICI9PT1pfHwiXG4iPT09aXx8IlxyIj09PWl8fCJcdCI9PT1pfWNsYXNzIFhNTFBhcnNlckJhc2V7X3Jlc29sdmVFbnRpdGllcyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC8mKFteO10rKTsvZywoKGUsdCk9PntpZigiI3giPT09dC5zdWJzdHJpbmcoMCwyKSlyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQodC5zdWJzdHJpbmcoMiksMTYpKTtpZigiIyI9PT10LnN1YnN0cmluZygwLDEpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygxKSwxMCkpO3N3aXRjaCh0KXtjYXNlImx0IjpyZXR1cm4iPCI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJxdW90IjpyZXR1cm4nIic7Y2FzZSJhcG9zIjpyZXR1cm4iJyJ9cmV0dXJuIHRoaXMub25SZXNvbHZlRW50aXR5KHQpfSkpfV9wYXJzZUNvbnRlbnQoZSx0KXtjb25zdCBpPVtdO2xldCBhPXQ7ZnVuY3Rpb24gc2tpcFdzKCl7Zm9yKDthPGUubGVuZ3RoJiZpc1doaXRlc3BhY2UoZSxhKTspKythfWZvcig7YTxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLGEpJiYiPiIhPT1lW2FdJiYiLyIhPT1lW2FdOykrK2E7Y29uc3Qgcj1lLnN1YnN0cmluZyh0LGEpO3NraXBXcygpO2Zvcig7YTxlLmxlbmd0aCYmIj4iIT09ZVthXSYmIi8iIT09ZVthXSYmIj8iIT09ZVthXTspe3NraXBXcygpO2xldCB0PSIiLHI9IiI7Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI9IiE9PWVbYV07KXt0Kz1lW2FdOysrYX1za2lwV3MoKTtpZigiPSIhPT1lW2FdKXJldHVybiBudWxsOysrYTtza2lwV3MoKTtjb25zdCBzPWVbYV07aWYoJyInIT09cyYmIiciIT09cylyZXR1cm4gbnVsbDtjb25zdCBuPWUuaW5kZXhPZihzLCsrYSk7aWYobjwwKXJldHVybiBudWxsO3I9ZS5zdWJzdHJpbmcoYSxuKTtpLnB1c2goe25hbWU6dCx2YWx1ZTp0aGlzLl9yZXNvbHZlRW50aXRpZXMocil9KTthPW4rMTtza2lwV3MoKX1yZXR1cm57bmFtZTpyLGF0dHJpYnV0ZXM6aSxwYXJzZWQ6YS10fX1fcGFyc2VQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oZSx0KXtsZXQgaT10O2Zvcig7aTxlLmxlbmd0aCYmIWlzV2hpdGVzcGFjZShlLGkpJiYiPiIhPT1lW2ldJiYiPyIhPT1lW2ldJiYiLyIhPT1lW2ldOykrK2k7Y29uc3QgYT1lLnN1YnN0cmluZyh0LGkpOyFmdW5jdGlvbiBza2lwV3MoKXtmb3IoO2k8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLGkpOykrK2l9KCk7Y29uc3Qgcj1pO2Zvcig7aTxlLmxlbmd0aCYmKCI/IiE9PWVbaV18fCI+IiE9PWVbaSsxXSk7KSsraTtyZXR1cm57bmFtZTphLHZhbHVlOmUuc3Vic3RyaW5nKHIsaSkscGFyc2VkOmktdH19cGFyc2VYbWwoZSl7bGV0IHQ9MDtmb3IoO3Q8ZS5sZW5ndGg7KXtsZXQgaT10O2lmKCI8Ij09PWVbdF0peysraTtsZXQgdDtzd2l0Y2goZVtpXSl7Y2FzZSIvIjorK2k7dD1lLmluZGV4T2YoIj4iLGkpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKEpyKTtyZXR1cm59dGhpcy5vbkVuZEVsZW1lbnQoZS5zdWJzdHJpbmcoaSx0KSk7aT10KzE7YnJlYWs7Y2FzZSI/IjorK2k7Y29uc3QgYT10aGlzLl9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLGkpO2lmKCI/PiIhPT1lLnN1YnN0cmluZyhpK2EucGFyc2VkLGkrYS5wYXJzZWQrMikpe3RoaXMub25FcnJvcih4cik7cmV0dXJufXRoaXMub25QaShhLm5hbWUsYS52YWx1ZSk7aSs9YS5wYXJzZWQrMjticmVhaztjYXNlIiEiOmlmKCItLSI9PT1lLnN1YnN0cmluZyhpKzEsaSszKSl7dD1lLmluZGV4T2YoIi0tXHgzZSIsaSszKTtpZih0PDApe3RoaXMub25FcnJvcihVcik7cmV0dXJufXRoaXMub25Db21tZW50KGUuc3Vic3RyaW5nKGkrMyx0KSk7aT10KzN9ZWxzZSBpZigiW0NEQVRBWyI9PT1lLnN1YnN0cmluZyhpKzEsaSs4KSl7dD1lLmluZGV4T2YoIl1dPiIsaSs4KTtpZih0PDApe3RoaXMub25FcnJvcihHcik7cmV0dXJufXRoaXMub25DZGF0YShlLnN1YnN0cmluZyhpKzgsdCkpO2k9dCszfWVsc2V7aWYoIkRPQ1RZUEUiIT09ZS5zdWJzdHJpbmcoaSsxLGkrOCkpe3RoaXMub25FcnJvcihMcik7cmV0dXJufXtjb25zdCBhPWUuaW5kZXhPZigiWyIsaSs4KTtsZXQgcj0hMTt0PWUuaW5kZXhPZigiPiIsaSs4KTtpZih0PDApe3RoaXMub25FcnJvcihNcik7cmV0dXJufWlmKGE+MCYmdD5hKXt0PWUuaW5kZXhPZigiXT4iLGkrOCk7aWYodDwwKXt0aGlzLm9uRXJyb3IoTXIpO3JldHVybn1yPSEwfWNvbnN0IHM9ZS5zdWJzdHJpbmcoaSs4LHQrKHI/MTowKSk7dGhpcy5vbkRvY3R5cGUocyk7aT10KyhyPzI6MSl9fWJyZWFrO2RlZmF1bHQ6Y29uc3Qgcj10aGlzLl9wYXJzZUNvbnRlbnQoZSxpKTtpZihudWxsPT09cil7dGhpcy5vbkVycm9yKExyKTtyZXR1cm59bGV0IHM9ITE7aWYoIi8+Ij09PWUuc3Vic3RyaW5nKGkrci5wYXJzZWQsaStyLnBhcnNlZCsyKSlzPSEwO2Vsc2UgaWYoIj4iIT09ZS5zdWJzdHJpbmcoaStyLnBhcnNlZCxpK3IucGFyc2VkKzEpKXt0aGlzLm9uRXJyb3IoSnIpO3JldHVybn10aGlzLm9uQmVnaW5FbGVtZW50KHIubmFtZSxyLmF0dHJpYnV0ZXMscyk7aSs9ci5wYXJzZWQrKHM/MjoxKX19ZWxzZXtmb3IoO2k8ZS5sZW5ndGgmJiI8IiE9PWVbaV07KWkrKztjb25zdCBhPWUuc3Vic3RyaW5nKHQsaSk7dGhpcy5vblRleHQodGhpcy5fcmVzb2x2ZUVudGl0aWVzKGEpKX10PWl9fW9uUmVzb2x2ZUVudGl0eShlKXtyZXR1cm5gJiR7ZX07YH1vblBpKGUsdCl7fW9uQ29tbWVudChlKXt9b25DZGF0YShlKXt9b25Eb2N0eXBlKGUpe31vblRleHQoZSl7fW9uQmVnaW5FbGVtZW50KGUsdCxpKXt9b25FbmRFbGVtZW50KGUpe31vbkVycm9yKGUpe319Y2xhc3MgU2ltcGxlRE9NTm9kZXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMubm9kZU5hbWU9ZTt0aGlzLm5vZGVWYWx1ZT10O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJwYXJlbnROb2RlIix7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pfWdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz8uWzBdfWdldCBuZXh0U2libGluZygpe2NvbnN0IGU9dGhpcy5wYXJlbnROb2RlLmNoaWxkTm9kZXM7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9ZS5pbmRleE9mKHRoaXMpO3JldHVybi0xIT09dD9lW3QrMV06dm9pZCAwfWdldCB0ZXh0Q29udGVudCgpe3JldHVybiB0aGlzLmNoaWxkTm9kZXM/dGhpcy5jaGlsZE5vZGVzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KSkuam9pbigiIik6dGhpcy5ub2RlVmFsdWV8fCIifWdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN8fFtdfWhhc0NoaWxkTm9kZXMoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5sZW5ndGg+MH1zZWFyY2hOb2RlKGUsdCl7aWYodD49ZS5sZW5ndGgpcmV0dXJuIHRoaXM7Y29uc3QgaT1lW3RdO2lmKGkubmFtZS5zdGFydHNXaXRoKCIjIikmJnQ8ZS5sZW5ndGgtMSlyZXR1cm4gdGhpcy5zZWFyY2hOb2RlKGUsdCsxKTtjb25zdCBhPVtdO2xldCByPXRoaXM7Zm9yKDs7KXtpZihpLm5hbWU9PT1yLm5vZGVOYW1lKXtpZigwIT09aS5wb3Mpe2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbnVsbDt7Y29uc3Rbc109YS5wb3AoKTtsZXQgbj0wO2Zvcihjb25zdCBhIG9mIHMuY2hpbGROb2RlcylpZihpLm5hbWU9PT1hLm5vZGVOYW1lKXtpZihuPT09aS5wb3MpcmV0dXJuIGEuc2VhcmNoTm9kZShlLHQrMSk7bisrfXJldHVybiByLnNlYXJjaE5vZGUoZSx0KzEpfX17Y29uc3QgaT1yLnNlYXJjaE5vZGUoZSx0KzEpO2lmKG51bGwhPT1pKXJldHVybiBpfX1pZihyLmNoaWxkTm9kZXM/Lmxlbmd0aD4wKXthLnB1c2goW3IsMF0pO3I9ci5jaGlsZE5vZGVzWzBdfWVsc2V7aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsO2Zvcig7MCE9PWEubGVuZ3RoOyl7Y29uc3RbZSx0XT1hLnBvcCgpLGk9dCsxO2lmKGk8ZS5jaGlsZE5vZGVzLmxlbmd0aCl7YS5wdXNoKFtlLGldKTtyPWUuY2hpbGROb2Rlc1tpXTticmVha319aWYoMD09PWEubGVuZ3RoKXJldHVybiBudWxsfX19ZHVtcChlKXtpZigiI3RleHQiIT09dGhpcy5ub2RlTmFtZSl7ZS5wdXNoKGA8JHt0aGlzLm5vZGVOYW1lfWApO2lmKHRoaXMuYXR0cmlidXRlcylmb3IoY29uc3QgdCBvZiB0aGlzLmF0dHJpYnV0ZXMpZS5wdXNoKGAgJHt0Lm5hbWV9PSIke2VuY29kZVRvWG1sU3RyaW5nKHQudmFsdWUpfSJgKTtpZih0aGlzLmhhc0NoaWxkTm9kZXMoKSl7ZS5wdXNoKCI+Iik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5jaGlsZE5vZGVzKXQuZHVtcChlKTtlLnB1c2goYDwvJHt0aGlzLm5vZGVOYW1lfT5gKX1lbHNlIHRoaXMubm9kZVZhbHVlP2UucHVzaChgPiR7ZW5jb2RlVG9YbWxTdHJpbmcodGhpcy5ub2RlVmFsdWUpfTwvJHt0aGlzLm5vZGVOYW1lfT5gKTplLnB1c2goIi8+Iil9ZWxzZSBlLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpcy5ub2RlVmFsdWUpKX19Y2xhc3MgU2ltcGxlWE1MUGFyc2VyIGV4dGVuZHMgWE1MUGFyc2VyQmFzZXtjb25zdHJ1Y3Rvcih7aGFzQXR0cmlidXRlczplPSExLGxvd2VyQ2FzZU5hbWU6dD0hMX0pe3N1cGVyKCk7dGhpcy5fY3VycmVudEZyYWdtZW50PW51bGw7dGhpcy5fc3RhY2s9bnVsbDt0aGlzLl9lcnJvckNvZGU9TnI7dGhpcy5faGFzQXR0cmlidXRlcz1lO3RoaXMuX2xvd2VyQ2FzZU5hbWU9dH1wYXJzZUZyb21TdHJpbmcoZSl7dGhpcy5fY3VycmVudEZyYWdtZW50PVtdO3RoaXMuX3N0YWNrPVtdO3RoaXMuX2Vycm9yQ29kZT1Ocjt0aGlzLnBhcnNlWG1sKGUpO2lmKHRoaXMuX2Vycm9yQ29kZSE9PU5yKXJldHVybjtjb25zdFt0XT10aGlzLl9jdXJyZW50RnJhZ21lbnQ7cmV0dXJuIHQ/e2RvY3VtZW50RWxlbWVudDp0fTp2b2lkIDB9b25UZXh0KGUpe2lmKGZ1bmN0aW9uIGlzV2hpdGVzcGFjZVN0cmluZyhlKXtmb3IobGV0IHQ9MCxpPWUubGVuZ3RoO3Q8aTt0KyspaWYoIWlzV2hpdGVzcGFjZShlLHQpKXJldHVybiExO3JldHVybiEwfShlKSlyZXR1cm47Y29uc3QgdD1uZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLGUpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHQpfW9uQ2RhdGEoZSl7Y29uc3QgdD1uZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLGUpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHQpfW9uQmVnaW5FbGVtZW50KGUsdCxpKXt0aGlzLl9sb3dlckNhc2VOYW1lJiYoZT1lLnRvTG93ZXJDYXNlKCkpO2NvbnN0IGE9bmV3IFNpbXBsZURPTU5vZGUoZSk7YS5jaGlsZE5vZGVzPVtdO3RoaXMuX2hhc0F0dHJpYnV0ZXMmJihhLmF0dHJpYnV0ZXM9dCk7dGhpcy5fY3VycmVudEZyYWdtZW50LnB1c2goYSk7aWYoIWkpe3RoaXMuX3N0YWNrLnB1c2godGhpcy5fY3VycmVudEZyYWdtZW50KTt0aGlzLl9jdXJyZW50RnJhZ21lbnQ9YS5jaGlsZE5vZGVzfX1vbkVuZEVsZW1lbnQoZSl7dGhpcy5fY3VycmVudEZyYWdtZW50PXRoaXMuX3N0YWNrLnBvcCgpfHxbXTtjb25zdCB0PXRoaXMuX2N1cnJlbnRGcmFnbWVudC5hdCgtMSk7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWUucGFyZW50Tm9kZT10O3JldHVybiB0fW9uRXJyb3IoZSl7dGhpcy5fZXJyb3JDb2RlPWV9fWNsYXNzIE1ldGFkYXRhUGFyc2Vye2NvbnN0cnVjdG9yKGUpe2U9dGhpcy5fcmVwYWlyKGUpO2NvbnN0IHQ9bmV3IFNpbXBsZVhNTFBhcnNlcih7bG93ZXJDYXNlTmFtZTohMH0pLnBhcnNlRnJvbVN0cmluZyhlKTt0aGlzLl9tZXRhZGF0YU1hcD1uZXcgTWFwO3RoaXMuX2RhdGE9ZTt0JiZ0aGlzLl9wYXJzZSh0KX1fcmVwYWlyKGUpe3JldHVybiBlLnJlcGxhY2UoL15bXjxdKy8sIiIpLnJlcGxhY2VBbGwoLz5cXDM3NlxcMzc3KFtePF0rKS9nLChmdW5jdGlvbihlLHQpe2NvbnN0IGk9dC5yZXBsYWNlQWxsKC9cXChbMC0zXSkoWzAtN10pKFswLTddKS9nLChmdW5jdGlvbihlLHQsaSxhKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg2NCp0KzgqaSsxKmEpfSkpLnJlcGxhY2VBbGwoLyYoYW1wfGFwb3N8Z3R8bHR8cXVvdCk7L2csKGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJhcG9zIjpyZXR1cm4iJyI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UibHQiOnJldHVybiI8IjtjYXNlInF1b3QiOnJldHVybiciJ310aHJvdyBuZXcgRXJyb3IoYF9yZXBhaXI6ICR7dH0gaXNuJ3QgZGVmaW5lZC5gKX0pKSxhPVsiPiJdO2ZvcihsZXQgZT0wLHQ9aS5sZW5ndGg7ZTx0O2UrPTIpe2NvbnN0IHQ9MjU2KmkuY2hhckNvZGVBdChlKStpLmNoYXJDb2RlQXQoZSsxKTt0Pj0zMiYmdDwxMjcmJjYwIT09dCYmNjIhPT10JiYzOCE9PXQ/YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUodCkpOmEucHVzaCgiJiN4IisoNjU1MzYrdCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygxKSsiOyIpfXJldHVybiBhLmpvaW4oIiIpfSkpfV9nZXRTZXF1ZW5jZShlKXtjb25zdCB0PWUubm9kZU5hbWU7cmV0dXJuInJkZjpiYWciIT09dCYmInJkZjpzZXEiIT09dCYmInJkZjphbHQiIT09dD9udWxsOmUuY2hpbGROb2Rlcy5maWx0ZXIoKGU9PiJyZGY6bGkiPT09ZS5ub2RlTmFtZSkpfV9wYXJzZUFycmF5KGUpe2lmKCFlLmhhc0NoaWxkTm9kZXMoKSlyZXR1cm47Y29uc3RbdF09ZS5jaGlsZE5vZGVzLGk9dGhpcy5fZ2V0U2VxdWVuY2UodCl8fFtdO3RoaXMuX21ldGFkYXRhTWFwLnNldChlLm5vZGVOYW1lLGkubWFwKChlPT5lLnRleHRDb250ZW50LnRyaW0oKSkpKX1fcGFyc2UoZSl7bGV0IHQ9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoInJkZjpyZGYiIT09dC5ub2RlTmFtZSl7dD10LmZpcnN0Q2hpbGQ7Zm9yKDt0JiYicmRmOnJkZiIhPT10Lm5vZGVOYW1lOyl0PXQubmV4dFNpYmxpbmd9aWYodCYmInJkZjpyZGYiPT09dC5ub2RlTmFtZSYmdC5oYXNDaGlsZE5vZGVzKCkpZm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWlmKCJyZGY6ZGVzY3JpcHRpb24iPT09ZS5ub2RlTmFtZSlmb3IoY29uc3QgdCBvZiBlLmNoaWxkTm9kZXMpe2NvbnN0IGU9dC5ub2RlTmFtZTtzd2l0Y2goZSl7Y2FzZSIjdGV4dCI6Y29udGludWU7Y2FzZSJkYzpjcmVhdG9yIjpjYXNlImRjOnN1YmplY3QiOnRoaXMuX3BhcnNlQXJyYXkodCk7Y29udGludWV9dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUsdC50ZXh0Q29udGVudC50cmltKCkpfX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3BhcnNlZERhdGE6dGhpcy5fbWV0YWRhdGFNYXAscmF3RGF0YTp0aGlzLl9kYXRhfX19Y2xhc3MgRGVjcnlwdFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIodCk7dGhpcy5zdHI9ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1pO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZXx8MD09PWUubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHIuZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rPy5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgaT10aGlzLmJ1ZmZlckxlbmd0aCxhPWkrZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIoYSkuc2V0KGUsaSk7dGhpcy5idWZmZXJMZW5ndGg9YX19Y2xhc3MgQVJDRm91ckNpcGhlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmE9MDt0aGlzLmI9MDtjb25zdCB0PW5ldyBVaW50OEFycmF5KDI1NiksaT1lLmxlbmd0aDtmb3IobGV0IGU9MDtlPDI1NjsrK2UpdFtlXT1lO2ZvcihsZXQgYT0wLHI9MDthPDI1NjsrK2Epe2NvbnN0IHM9dFthXTtyPXIrcytlW2ElaV0mMjU1O3RbYV09dFtyXTt0W3JdPXN9dGhpcy5zPXR9ZW5jcnlwdEJsb2NrKGUpe2xldCB0PXRoaXMuYSxpPXRoaXMuYjtjb25zdCBhPXRoaXMucyxyPWUubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkocik7Zm9yKGxldCBuPTA7bjxyOysrbil7dD10KzEmMjU1O2NvbnN0IHI9YVt0XTtpPWkrciYyNTU7Y29uc3Qgbz1hW2ldO2FbdF09bzthW2ldPXI7c1tuXT1lW25dXmFbcitvJjI1NV19dGhpcy5hPXQ7dGhpcy5iPWk7cmV0dXJuIHN9ZGVjcnlwdEJsb2NrKGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX1lbmNyeXB0KGUpe3JldHVybiB0aGlzLmVuY3J5cHRCbG9jayhlKX19Y29uc3QgSHI9ZnVuY3Rpb24gY2FsY3VsYXRlTUQ1Q2xvc3VyZSgpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNSw5LDE0LDIwLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjEsNiwxMCwxNSwyMV0pLHQ9bmV3IEludDMyQXJyYXkoWy02ODA4NzY5MzYsLTM4OTU2NDU4Niw2MDYxMDU4MTksLTEwNDQ1MjUzMzAsLTE3NjQxODg5NywxMjAwMDgwNDI2LC0xNDczMjMxMzQxLC00NTcwNTk4MywxNzcwMDM1NDE2LC0xOTU4NDE0NDE3LC00MjA2MywtMTk5MDQwNDE2MiwxODA0NjAzNjgyLC00MDM0MTEwMSwtMTUwMjAwMjI5MCwxMjM2NTM1MzI5LC0xNjU3OTY1MTAsLTEwNjk1MDE2MzIsNjQzNzE3NzEzLC0zNzM4OTczMDIsLTcwMTU1ODY5MSwzODAxNjA4MywtNjYwNDc4MzM1LC00MDU1Mzc4NDgsNTY4NDQ2NDM4LC0xMDE5ODAzNjkwLC0xODczNjM5NjEsMTE2MzUzMTUwMSwtMTQ0NDY4MTQ2NywtNTE0MDM3ODQsMTczNTMyODQ3MywtMTkyNjYwNzczNCwtMzc4NTU4LC0yMDIyNTc0NDYzLDE4MzkwMzA1NjIsLTM1MzA5NTU2LC0xNTMwOTkyMDYwLDEyNzI4OTMzNTMsLTE1NTQ5NzYzMiwtMTA5NDczMDY0MCw2ODEyNzkxNzQsLTM1ODUzNzIyMiwtNzIyNTIxOTc5LDc2MDI5MTg5LC02NDAzNjQ0ODcsLTQyMTgxNTgzNSw1MzA3NDI1MjAsLTk5NTMzODY1MSwtMTk4NjMwODQ0LDExMjY4OTE0MTUsLTE0MTYzNTQ5MDUsLTU3NDM0MDU1LDE3MDA0ODU1NzEsLTE4OTQ5ODY2MDYsLTEwNTE1MjMsLTIwNTQ5MjI3OTksMTg3MzMxMzM1OSwtMzA2MTE3NDQsLTE1NjAxOTgzODAsMTMwOTE1MTY0OSwtMTQ1NTIzMDcwLC0xMTIwMjEwMzc5LDcxODc4NzI1OSwtMzQzNDg1NTUxXSk7cmV0dXJuIGZ1bmN0aW9uIGhhc2goaSxhLHIpe2xldCBzPTE3MzI1ODQxOTMsbj0tMjcxNzMzODc5LG89LTE3MzI1ODQxOTQsZz0yNzE3MzM4Nzg7Y29uc3QgYz1yKzcyJi02NCxoPW5ldyBVaW50OEFycmF5KGMpO2xldCBsLEM7Zm9yKGw9MDtsPHI7KytsKWhbbF09aVthKytdO2hbbCsrXT0xMjg7Y29uc3QgUT1jLTg7Zm9yKDtsPFE7KWhbbCsrXT0wO2hbbCsrXT1yPDwzJjI1NTtoW2wrK109cj4+NSYyNTU7aFtsKytdPXI+PjEzJjI1NTtoW2wrK109cj4+MjEmMjU1O2hbbCsrXT1yPj4+MjkmMjU1O2hbbCsrXT0wO2hbbCsrXT0wO2hbbCsrXT0wO2NvbnN0IEU9bmV3IEludDMyQXJyYXkoMTYpO2ZvcihsPTA7bDxjOyl7Zm9yKEM9MDtDPDE2OysrQyxsKz00KUVbQ109aFtsXXxoW2wrMV08PDh8aFtsKzJdPDwxNnxoW2wrM108PDI0O2xldCBpLGEscj1zLGM9bixRPW8sdT1nO2ZvcihDPTA7Qzw2NDsrK0Mpe2lmKEM8MTYpe2k9YyZRfH5jJnU7YT1DfWVsc2UgaWYoQzwzMil7aT11JmN8fnUmUTthPTUqQysxJjE1fWVsc2UgaWYoQzw0OCl7aT1jXlFedTthPTMqQys1JjE1fWVsc2V7aT1RXihjfH51KTthPTcqQyYxNX1jb25zdCBzPXUsbj1yK2krdFtDXStFW2FdfDAsbz1lW0NdO3U9UTtRPWM7Yz1jKyhuPDxvfG4+Pj4zMi1vKXwwO3I9c31zPXMrcnwwO249bitjfDA7bz1vK1F8MDtnPWcrdXwwfXJldHVybiBuZXcgVWludDhBcnJheShbMjU1JnMscz4+OCYyNTUscz4+MTYmMjU1LHM+Pj4yNCYyNTUsMjU1Jm4sbj4+OCYyNTUsbj4+MTYmMjU1LG4+Pj4yNCYyNTUsMjU1Jm8sbz4+OCYyNTUsbz4+MTYmMjU1LG8+Pj4yNCYyNTUsMjU1JmcsZz4+OCYyNTUsZz4+MTYmMjU1LGc+Pj4yNCYyNTVdKX19KCk7Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fW9yKGUpe3RoaXMuaGlnaHw9ZS5oaWdoO3RoaXMubG93fD1lLmxvd31zaGlmdFJpZ2h0KGUpe2lmKGU+PTMyKXt0aGlzLmxvdz10aGlzLmhpZ2g+Pj5lLTMyfDA7dGhpcy5oaWdoPTB9ZWxzZXt0aGlzLmxvdz10aGlzLmxvdz4+PmV8dGhpcy5oaWdoPDwzMi1lO3RoaXMuaGlnaD10aGlzLmhpZ2g+Pj5lfDB9fXNoaWZ0TGVmdChlKXtpZihlPj0zMil7dGhpcy5oaWdoPXRoaXMubG93PDxlLTMyO3RoaXMubG93PTB9ZWxzZXt0aGlzLmhpZ2g9dGhpcy5oaWdoPDxlfHRoaXMubG93Pj4+MzItZTt0aGlzLmxvdzw8PWV9fXJvdGF0ZVJpZ2h0KGUpe2xldCB0LGk7aWYoMzImZSl7aT10aGlzLmxvdzt0PXRoaXMuaGlnaH1lbHNle3Q9dGhpcy5sb3c7aT10aGlzLmhpZ2h9ZSY9MzE7dGhpcy5sb3c9dD4+PmV8aTw8MzItZTt0aGlzLmhpZ2g9aT4+PmV8dDw8MzItZX1ub3QoKXt0aGlzLmhpZ2g9fnRoaXMuaGlnaDt0aGlzLmxvdz1+dGhpcy5sb3d9YWRkKGUpe2NvbnN0IHQ9KHRoaXMubG93Pj4+MCkrKGUubG93Pj4+MCk7bGV0IGk9KHRoaXMuaGlnaD4+PjApKyhlLmhpZ2g+Pj4wKTt0PjQyOTQ5NjcyOTUmJihpKz0xKTt0aGlzLmxvdz0wfHQ7dGhpcy5oaWdoPTB8aX1jb3B5VG8oZSx0KXtlW3RdPXRoaXMuaGlnaD4+PjI0JjI1NTtlW3QrMV09dGhpcy5oaWdoPj4xNiYyNTU7ZVt0KzJdPXRoaXMuaGlnaD4+OCYyNTU7ZVt0KzNdPTI1NSZ0aGlzLmhpZ2g7ZVt0KzRdPXRoaXMubG93Pj4+MjQmMjU1O2VbdCs1XT10aGlzLmxvdz4+MTYmMjU1O2VbdCs2XT10aGlzLmxvdz4+OCYyNTU7ZVt0KzddPTI1NSZ0aGlzLmxvd31hc3NpZ24oZSl7dGhpcy5oaWdoPWUuaGlnaDt0aGlzLmxvdz1lLmxvd319Y29uc3QgdnI9ZnVuY3Rpb24gY2FsY3VsYXRlU0hBMjU2Q2xvc3VyZSgpe2Z1bmN0aW9uIHJvdHIoZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH1mdW5jdGlvbiBjaChlLHQsaSl7cmV0dXJuIGUmdF5+ZSZpfWZ1bmN0aW9uIG1haihlLHQsaSl7cmV0dXJuIGUmdF5lJmledCZpfWZ1bmN0aW9uIHNpZ21hKGUpe3JldHVybiByb3RyKGUsMilecm90cihlLDEzKV5yb3RyKGUsMjIpfWZ1bmN0aW9uIHNpZ21hUHJpbWUoZSl7cmV0dXJuIHJvdHIoZSw2KV5yb3RyKGUsMTEpXnJvdHIoZSwyNSl9ZnVuY3Rpb24gbGl0dGxlU2lnbWEoZSl7cmV0dXJuIHJvdHIoZSw3KV5yb3RyKGUsMTgpXmU+Pj4zfWNvbnN0IGU9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF07cmV0dXJuIGZ1bmN0aW9uIGhhc2godCxpLGEpe2xldCByPTE3NzkwMzM3MDMscz0zMTQ0MTM0Mjc3LG49MTAxMzkwNDI0MixvPTI3NzM0ODA3NjIsZz0xMzU5ODkzMTE5LGM9MjYwMDgyMjkyNCxoPTUyODczNDYzNSxsPTE1NDE0NTkyMjU7Y29uc3QgQz02NCpNYXRoLmNlaWwoKGErOSkvNjQpLFE9bmV3IFVpbnQ4QXJyYXkoQyk7bGV0IEUsdTtmb3IoRT0wO0U8YTsrK0UpUVtFXT10W2krK107UVtFKytdPTEyODtjb25zdCBkPUMtODtmb3IoO0U8ZDspUVtFKytdPTA7UVtFKytdPTA7UVtFKytdPTA7UVtFKytdPTA7UVtFKytdPWE+Pj4yOSYyNTU7UVtFKytdPWE+PjIxJjI1NTtRW0UrK109YT4+MTMmMjU1O1FbRSsrXT1hPj41JjI1NTtRW0UrK109YTw8MyYyNTU7Y29uc3QgZj1uZXcgVWludDMyQXJyYXkoNjQpO2ZvcihFPTA7RTxDOyl7Zm9yKHU9MDt1PDE2OysrdSl7Zlt1XT1RW0VdPDwyNHxRW0UrMV08PDE2fFFbRSsyXTw8OHxRW0UrM107RSs9NH1mb3IodT0xNjt1PDY0OysrdSlmW3VdPShyb3RyKHA9Zlt1LTJdLDE3KV5yb3RyKHAsMTkpXnA+Pj4xMCkrZlt1LTddK2xpdHRsZVNpZ21hKGZbdS0xNV0pK2ZbdS0xNl18MDtsZXQgdCxpLGE9cixDPXMsZD1uLG09byx5PWcsdz1jLGI9aCxEPWw7Zm9yKHU9MDt1PDY0OysrdSl7dD1EK3NpZ21hUHJpbWUoeSkrY2goeSx3LGIpK2VbdV0rZlt1XTtpPXNpZ21hKGEpK21haihhLEMsZCk7RD1iO2I9dzt3PXk7eT1tK3R8MDttPWQ7ZD1DO0M9YTthPXQraXwwfXI9cithfDA7cz1zK0N8MDtuPW4rZHwwO289byttfDA7Zz1nK3l8MDtjPWMrd3wwO2g9aCtifDA7bD1sK0R8MH12YXIgcDtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW3I+PjI0JjI1NSxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnIscz4+MjQmMjU1LHM+PjE2JjI1NSxzPj44JjI1NSwyNTUmcyxuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLG8+PjI0JjI1NSxvPj4xNiYyNTUsbz4+OCYyNTUsMjU1Jm8sZz4+MjQmMjU1LGc+PjE2JjI1NSxnPj44JjI1NSwyNTUmZyxjPj4yNCYyNTUsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjLGg+PjI0JjI1NSxoPj4xNiYyNTUsaD4+OCYyNTUsMjU1JmgsbD4+MjQmMjU1LGw+PjE2JjI1NSxsPj44JjI1NSwyNTUmbF0pfX0oKSxZcj1mdW5jdGlvbiBjYWxjdWxhdGVTSEE1MTJDbG9zdXJlKCl7ZnVuY3Rpb24gY2goZSx0LGksYSxyKXtlLmFzc2lnbih0KTtlLmFuZChpKTtyLmFzc2lnbih0KTtyLm5vdCgpO3IuYW5kKGEpO2UueG9yKHIpfWZ1bmN0aW9uIG1haihlLHQsaSxhLHIpe2UuYXNzaWduKHQpO2UuYW5kKGkpO3IuYXNzaWduKHQpO3IuYW5kKGEpO2UueG9yKHIpO3IuYXNzaWduKGkpO3IuYW5kKGEpO2UueG9yKHIpfWZ1bmN0aW9uIHNpZ21hKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihpKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihpKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsaSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGkpO2kuYXNzaWduKHQpO2kuc2hpZnRSaWdodCg3KTtlLnhvcihpKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxpKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTtpLmFzc2lnbih0KTtpLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihpKTtpLmFzc2lnbih0KTtpLnNoaWZ0UmlnaHQoNik7ZS54b3IoaSl9Y29uc3QgZT1bbmV3IFdvcmQ2NCgxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLG5ldyBXb3JkNjQoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLG5ldyBXb3JkNjQoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxuZXcgV29yZDY0KDM5MjEwMDk1NzMsMjE3MzI5NTU0OCksbmV3IFdvcmQ2NCg5NjE5ODcxNjMsNDA4MTYyODQ3MiksbmV3IFdvcmQ2NCgxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLG5ldyBXb3JkNjQoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxuZXcgV29yZDY0KDI4NzA3NjMyMjEsMzY2NDYwOTU2MCksbmV3IFdvcmQ2NCgzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLG5ldyBXb3JkNjQoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLG5ldyBXb3JkNjQoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLG5ldyBXb3JkNjQoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxuZXcgV29yZDY0KDE5MjUwNzgzODgsNDA2ODE4MjM4MyksbmV3IFdvcmQ2NCgyMTYyMDc4MjA2LDk5MTMzNjExMyksbmV3IFdvcmQ2NCgyNjE0ODg4MTAzLDYzMzgwMzMxNyksbmV3IFdvcmQ2NCgzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLG5ldyBXb3JkNjQoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxuZXcgV29yZDY0KDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxuZXcgV29yZDY0KDI2NDM0NzA3OCwyMzQxMjYyNzczKSxuZXcgV29yZDY0KDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxuZXcgV29yZDY0KDc3MDI1NTk4MywxNDk1OTkwOTAxKSxuZXcgV29yZDY0KDEyNDkxNTAxMjIsMTg1NjQzMTIzNSksbmV3IFdvcmQ2NCgxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLG5ldyBXb3JkNjQoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxuZXcgV29yZDY0KDI1NTQyMjA4ODIsMzk5OTcxOTMzOSksbmV3IFdvcmQ2NCgyODIxODM0MzQ5LDc2Njc4NDAxNiksbmV3IFdvcmQ2NCgyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLG5ldyBXb3JkNjQoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxuZXcgV29yZDY0KDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiksbmV3IFdvcmQ2NCgzNTg0NTI4NzExLDI0NjY5NDg5MDEpLG5ldyBXb3JkNjQoMTEzOTI2OTkzLDM3NTgzMjYzODMpLG5ldyBXb3JkNjQoMzM4MjQxODk1LDE2ODcxNzkzNiksbmV3IFdvcmQ2NCg2NjYzMDcyMDUsMTE4ODE3OTk2NCksbmV3IFdvcmQ2NCg3NzM1Mjk5MTIsMTU0NjA0NTczNCksbmV3IFdvcmQ2NCgxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLG5ldyBXb3JkNjQoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxuZXcgV29yZDY0KDE2OTUxODM3MDAsMjM0MzUyNzM5MCksbmV3IFdvcmQ2NCgxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLG5ldyBXb3JkNjQoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxuZXcgV29yZDY0KDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxuZXcgV29yZDY0KDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCksbmV3IFdvcmQ2NCgyODIwMzAyNDExLDMxNTg0NTQyNzMpLG5ldyBXb3JkNjQoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxuZXcgV29yZDY0KDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxuZXcgV29yZDY0KDM1MTYwNjU4MTcsMzYwNjAwODM0NCksbmV3IFdvcmQ2NCgzNjAwMzUyODA0LDE0MzI3MjU3NzYpLG5ldyBXb3JkNjQoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxuZXcgV29yZDY0KDI3NTQyMzM0NCw4NTExNjk3MjApLG5ldyBXb3JkNjQoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLG5ldyBXb3JkNjQoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLG5ldyBXb3JkNjQoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLG5ldyBXb3JkNjQoODgzOTk3ODc3LDM3ODUwNTAyODApLG5ldyBXb3JkNjQoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLG5ldyBXb3JkNjQoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxuZXcgV29yZDY0KDE1MzcwMDIwNjMsMjAwMzAzNDk5NSksbmV3IFdvcmQ2NCgxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLG5ldyBXb3JkNjQoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxuZXcgV29yZDY0KDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCksbmV3IFdvcmQ2NCgyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLG5ldyBXb3JkNjQoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLG5ldyBXb3JkNjQoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLG5ldyBXb3JkNjQoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxuZXcgV29yZDY0KDMyMDQwMzE0NzksMjk5OTM1MTU3MyksbmV3IFdvcmQ2NCgzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLG5ldyBXb3JkNjQoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxuZXcgV29yZDY0KDM1MTUyNjcyNzEsNTY2MjgwNzExKSxuZXcgV29yZDY0KDM5NDAxODc2MDYsMzQ1NDA2OTUzNCksbmV3IFdvcmQ2NCg0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLG5ldyBXb3JkNjQoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLG5ldyBXb3JkNjQoMTc0MjkyNDIxLDI3MzEwNTUyNzApLG5ldyBXb3JkNjQoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLG5ldyBXb3JkNjQoNDYwMzkzMjY5LDMyMDYyMDMxNSksbmV3IFdvcmQ2NCg2ODU0NzE3MzMsNTg3NDk2ODM2KSxuZXcgV29yZDY0KDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxuZXcgV29yZDY0KDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxuZXcgV29yZDY0KDExMjYwMDA1ODAsMjYxODI5NzY3NiksbmV3IFdvcmQ2NCgxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLG5ldyBXb3JkNjQoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxuZXcgV29yZDY0KDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxuZXcgV29yZDY0KDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldO3JldHVybiBmdW5jdGlvbiBoYXNoKHQsaSxhLHI9ITEpe2xldCBzLG4sbyxnLGMsaCxsLEM7aWYocil7cz1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7bj1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtvPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO2c9bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7Yz1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7aD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7bD1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7Qz1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtzPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtuPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtvPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtnPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtjPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtoPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO2w9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7Qz1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBRPTEyOCpNYXRoLmNlaWwoKGErMTcpLzEyOCksRT1uZXcgVWludDhBcnJheShRKTtsZXQgdSxkO2Zvcih1PTA7dTxhOysrdSlFW3VdPXRbaSsrXTtFW3UrK109MTI4O2NvbnN0IGY9US0xNjtmb3IoO3U8ZjspRVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPTA7RVt1KytdPWE+Pj4yOSYyNTU7RVt1KytdPWE+PjIxJjI1NTtFW3UrK109YT4+MTMmMjU1O0VbdSsrXT1hPj41JjI1NTtFW3UrK109YTw8MyYyNTU7Y29uc3QgcD1uZXcgQXJyYXkoODApO2Zvcih1PTA7dTw4MDt1KyspcFt1XT1uZXcgV29yZDY0KDAsMCk7bGV0IG09bmV3IFdvcmQ2NCgwLDApLHk9bmV3IFdvcmQ2NCgwLDApLHc9bmV3IFdvcmQ2NCgwLDApLGI9bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLFI9bmV3IFdvcmQ2NCgwLDApO2NvbnN0IE49bmV3IFdvcmQ2NCgwLDApLEc9bmV3IFdvcmQ2NCgwLDApLHg9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApO2xldCBVLEw7Zm9yKHU9MDt1PFE7KXtmb3IoZD0wO2Q8MTY7KytkKXtwW2RdLmhpZ2g9RVt1XTw8MjR8RVt1KzFdPDwxNnxFW3UrMl08PDh8RVt1KzNdO3BbZF0ubG93PUVbdSs0XTw8MjR8RVt1KzVdPDwxNnxFW3UrNl08PDh8RVt1KzddO3UrPTh9Zm9yKGQ9MTY7ZDw4MDsrK2Qpe1U9cFtkXTtsaXR0bGVTaWdtYVByaW1lKFUscFtkLTJdLE0pO1UuYWRkKHBbZC03XSk7bGl0dGxlU2lnbWEoeCxwW2QtMTVdLE0pO1UuYWRkKHgpO1UuYWRkKHBbZC0xNl0pfW0uYXNzaWduKHMpO3kuYXNzaWduKG4pO3cuYXNzaWduKG8pO2IuYXNzaWduKGcpO0QuYXNzaWduKGMpO1MuYXNzaWduKGgpO2suYXNzaWduKGwpO1IuYXNzaWduKEMpO2ZvcihkPTA7ZDw4MDsrK2Qpe04uYXNzaWduKFIpO3NpZ21hUHJpbWUoeCxELE0pO04uYWRkKHgpO2NoKHgsRCxTLGssTSk7Ti5hZGQoeCk7Ti5hZGQoZVtkXSk7Ti5hZGQocFtkXSk7c2lnbWEoRyxtLE0pO21haih4LG0seSx3LE0pO0cuYWRkKHgpO1U9UjtSPWs7az1TO1M9RDtiLmFkZChOKTtEPWI7Yj13O3c9eTt5PW07VS5hc3NpZ24oTik7VS5hZGQoRyk7bT1VfXMuYWRkKG0pO24uYWRkKHkpO28uYWRkKHcpO2cuYWRkKGIpO2MuYWRkKEQpO2guYWRkKFMpO2wuYWRkKGspO0MuYWRkKFIpfWlmKHIpe0w9bmV3IFVpbnQ4QXJyYXkoNDgpO3MuY29weVRvKEwsMCk7bi5jb3B5VG8oTCw4KTtvLmNvcHlUbyhMLDE2KTtnLmNvcHlUbyhMLDI0KTtjLmNvcHlUbyhMLDMyKTtoLmNvcHlUbyhMLDQwKX1lbHNle0w9bmV3IFVpbnQ4QXJyYXkoNjQpO3MuY29weVRvKEwsMCk7bi5jb3B5VG8oTCw4KTtvLmNvcHlUbyhMLDE2KTtnLmNvcHlUbyhMLDI0KTtjLmNvcHlUbyhMLDMyKTtoLmNvcHlUbyhMLDQwKTtsLmNvcHlUbyhMLDQ4KTtDLmNvcHlUbyhMLDU2KX1yZXR1cm4gTH19KCk7Y2xhc3MgTnVsbENpcGhlcntkZWNyeXB0QmxvY2soZSl7cmV0dXJuIGV9ZW5jcnlwdChlKXtyZXR1cm4gZX19Y2xhc3MgQUVTQmFzZUNpcGhlcntjb25zdHJ1Y3Rvcigpe3RoaXMuY29uc3RydWN0b3I9PT1BRVNCYXNlQ2lwaGVyJiZ1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgQUVTQmFzZUNpcGhlci4iKTt0aGlzLl9zPW5ldyBVaW50OEFycmF5KFs5OSwxMjQsMTE5LDEyMywyNDIsMTA3LDExMSwxOTcsNDgsMSwxMDMsNDMsMjU0LDIxNSwxNzEsMTE4LDIwMiwxMzAsMjAxLDEyNSwyNTAsODksNzEsMjQwLDE3MywyMTIsMTYyLDE3NSwxNTYsMTY0LDExNCwxOTIsMTgzLDI1MywxNDcsMzgsNTQsNjMsMjQ3LDIwNCw1MiwxNjUsMjI5LDI0MSwxMTMsMjE2LDQ5LDIxLDQsMTk5LDM1LDE5NSwyNCwxNTAsNSwxNTQsNywxOCwxMjgsMjI2LDIzNSwzOSwxNzgsMTE3LDksMTMxLDQ0LDI2LDI3LDExMCw5MCwxNjAsODIsNTksMjE0LDE3OSw0MSwyMjcsNDcsMTMyLDgzLDIwOSwwLDIzNywzMiwyNTIsMTc3LDkxLDEwNiwyMDMsMTkwLDU3LDc0LDc2LDg4LDIwNywyMDgsMjM5LDE3MCwyNTEsNjcsNzcsNTEsMTMzLDY5LDI0OSwyLDEyNyw4MCw2MCwxNTksMTY4LDgxLDE2Myw2NCwxNDMsMTQ2LDE1Nyw1NiwyNDUsMTg4LDE4MiwyMTgsMzMsMTYsMjU1LDI0MywyMTAsMjA1LDEyLDE5LDIzNiw5NSwxNTEsNjgsMjMsMTk2LDE2NywxMjYsNjEsMTAwLDkzLDI1LDExNSw5NiwxMjksNzksMjIwLDM0LDQyLDE0NCwxMzYsNzAsMjM4LDE4NCwyMCwyMjIsOTQsMTEsMjE5LDIyNCw1MCw1OCwxMCw3Myw2LDM2LDkyLDE5NCwyMTEsMTcyLDk4LDE0NSwxNDksMjI4LDEyMSwyMzEsMjAwLDU1LDEwOSwxNDEsMjEzLDc4LDE2OSwxMDgsODYsMjQ0LDIzNCwxMDEsMTIyLDE3NCw4LDE4NiwxMjAsMzcsNDYsMjgsMTY2LDE4MCwxOTgsMjMyLDIyMSwxMTYsMzEsNzUsMTg5LDEzOSwxMzgsMTEyLDYyLDE4MSwxMDIsNzIsMywyNDYsMTQsOTcsNTMsODcsMTg1LDEzNCwxOTMsMjksMTU4LDIyNSwyNDgsMTUyLDE3LDEwNSwyMTcsMTQyLDE0OCwxNTUsMzAsMTM1LDIzMywyMDYsODUsNDAsMjIzLDE0MCwxNjEsMTM3LDEzLDE5MSwyMzAsNjYsMTA0LDY1LDE1Myw0NSwxNSwxNzYsODQsMTg3LDIyXSk7dGhpcy5faW52X3M9bmV3IFVpbnQ4QXJyYXkoWzgyLDksMTA2LDIxMyw0OCw1NCwxNjUsNTYsMTkxLDY0LDE2MywxNTgsMTI5LDI0MywyMTUsMjUxLDEyNCwyMjcsNTcsMTMwLDE1NSw0NywyNTUsMTM1LDUyLDE0Miw2Nyw2OCwxOTYsMjIyLDIzMywyMDMsODQsMTIzLDE0OCw1MCwxNjYsMTk0LDM1LDYxLDIzOCw3NiwxNDksMTEsNjYsMjUwLDE5NSw3OCw4LDQ2LDE2MSwxMDIsNDAsMjE3LDM2LDE3OCwxMTgsOTEsMTYyLDczLDEwOSwxMzksMjA5LDM3LDExNCwyNDgsMjQ2LDEwMCwxMzQsMTA0LDE1MiwyMiwyMTIsMTY0LDkyLDIwNCw5MywxMDEsMTgyLDE0NiwxMDgsMTEyLDcyLDgwLDI1MywyMzcsMTg1LDIxOCw5NCwyMSw3MCw4NywxNjcsMTQxLDE1NywxMzIsMTQ0LDIxNiwxNzEsMCwxNDAsMTg4LDIxMSwxMCwyNDcsMjI4LDg4LDUsMTg0LDE3OSw2OSw2LDIwOCw0NCwzMCwxNDMsMjAyLDYzLDE1LDIsMTkzLDE3NSwxODksMywxLDE5LDEzOCwxMDcsNTgsMTQ1LDE3LDY1LDc5LDEwMywyMjAsMjM0LDE1MSwyNDIsMjA3LDIwNiwyNDAsMTgwLDIzMCwxMTUsMTUwLDE3MiwxMTYsMzQsMjMxLDE3Myw1MywxMzMsMjI2LDI0OSw1NSwyMzIsMjgsMTE3LDIyMywxMTAsNzEsMjQxLDI2LDExMywyOSw0MSwxOTcsMTM3LDExMSwxODMsOTgsMTQsMTcwLDI0LDE5MCwyNywyNTIsODYsNjIsNzUsMTk4LDIxMCwxMjEsMzIsMTU0LDIxOSwxOTIsMjU0LDEyMCwyMDUsOTAsMjQ0LDMxLDIyMSwxNjgsNTEsMTM2LDcsMTk5LDQ5LDE3NywxOCwxNiw4OSwzOSwxMjgsMjM2LDk1LDk2LDgxLDEyNywxNjksMjUsMTgxLDc0LDEzLDQ1LDIyOSwxMjIsMTU5LDE0NywyMDEsMTU2LDIzOSwxNjAsMjI0LDU5LDc3LDE3NCw0MiwyNDUsMTc2LDIwMCwyMzUsMTg3LDYwLDEzMSw4MywxNTMsOTcsMjMsNDMsNCwxMjYsMTg2LDExOSwyMTQsMzgsMjI1LDEwNSwyMCw5OSw4NSwzMywxMiwxMjVdKTt0aGlzLl9taXg9bmV3IFVpbnQzMkFycmF5KFswLDIzNTQ3NDE4Nyw0NzA5NDgzNzQsMzAzNzY1Mjc3LDk0MTg5Njc0OCw5MDg5MzM0MTUsNjA3NTMwNTU0LDcwODc4MDg0OSwxODgzNzkzNDk2LDIxMTgyMTQ5OTUsMTgxNzg2NjgzMCwxNjQ5NjM5MjM3LDEyMTUwNjExMDgsMTE4MTA0NTExOSwxNDE3NTYxNjk4LDE1MTc3Njc1MjksMzc2NzU4Njk5Miw0MDAzMDYxMTc5LDQyMzY0Mjk5OTAsNDA2OTI0Njg5MywzNjM1NzMzNjYwLDM2MDI3NzAzMjcsMzI5OTI3ODQ3NCwzNDAwNTI4NzY5LDI0MzAxMjIyMTYsMjY2NDU0MzcxNSwyMzYyMDkwMjM4LDIxOTM4NjI2NDUsMjgzNTEyMzM5NiwyODAxMTA3NDA3LDMwMzU1MzUwNTgsMzEzNTc0MDg4OSwzNjc4MTI0OTIzLDM1NzY4NzA1MTIsMzM0MTM5NDI4NSwzMzc0MzYxNzAyLDM4MTA0OTYzNDMsMzk3NzY3NTM1Niw0Mjc5MDgwMjU3LDQwNDM2MTAxODYsMjg3NjQ5NDYyNywyNzc2MjkyOTA0LDMwNzY2MzkwMjksMzExMDY1MDk0MiwyNDcyMDExNTM1LDI2NDAyNDMyMDQsMjQwMzcyODY2NSwyMTY5MzAzMDU4LDEwMDEwODk5OTUsODk5ODM1NTg0LDY2NjQ2NDczMyw2OTk0MzIxNTAsNTk3Mjc4NDcsMjI2OTA2ODYwLDUzMDQwMDc1MywyOTQ5MzA2ODIsMTI3MzE2ODc4NywxMTcyOTY3MDY0LDE0NzU0MTg1MDEsMTUwOTQzMDQxNCwxOTQyNDM1Nzc1LDIxMTA2Njc0NDQsMTg3NjI0MTgzMywxNjQxODE2MjI2LDI5MTAyMTk3NjYsMjc0MzAzNDEwOSwyOTc2MTUxNTIwLDMyMTE2MjMxNDcsMjUwNTIwMjEzOCwyNjA2NDUzOTY5LDIzMDI2OTAyNTIsMjI2OTcyODQ1NSwzNzExODI5NDIyLDM1NDM1OTkyNjksMzI0MDg5NDM5MiwzNDc1MzEzMzMxLDM4NDM2OTkwNzQsMzk0MzkwNjQ0MSw0MTc4MDYyMjI4LDQxNDQwNDc3NzUsMTMwNjk2NzM2NiwxMTM5NzgxNzA5LDEzNzQ5ODgxMTIsMTYxMDQ1OTczOSwxOTc1NjgzNDM0LDIwNzY5MzUyNjUsMTc3NTI3NjkyNCwxNzQyMzE1MTI3LDEwMzQ4Njc5OTgsODY2NjM3ODQ1LDU2NjAyMTg5Niw4MDA0NDA4MzUsOTI5ODc2OTgsMTkzMTk1MDY1LDQyOTQ1NjE2NCwzOTU0NDE3MTEsMTk4NDgxMjY4NSwyMDE3Nzc4NTY2LDE3ODQ2NjMxOTUsMTY4MzQwNzI0OCwxMzE1NTYyMTQ1LDEwODAwOTQ2MzQsMTM4Mzg1NjMxMSwxNTUxMDM3ODg0LDEwMTAzOTgyOSwxMzUwNTAyMDYsNDM3NzU3MTIzLDMzNzU1Mzg2NCwxMDQyMzg1NjU3LDgwNzk2MjYxMCw1NzM4MDQ3ODMsNzQyMDM5MDEyLDI1MzEwNjc0NTMsMjU2NDAzMzMzNCwyMzI4ODI4OTcxLDIyMjc1NzMwMjQsMjkzNTU2Njg2NSwyNzAwMDk5MzU0LDMwMDE3NTU2NTUsMzE2ODkzNzIyOCwzODY4NTUyODA1LDM5MDI1NjMxODIsNDIwMzE4MTE3MSw0MTAyOTc3OTEyLDM3MzYxNjQ5MzcsMzUwMTc0MTg5MCwzMjY1NDc4NzUxLDM0MzM3MTI5ODAsMTEwNjA0MTU5MSwxMzQwNDYzMTAwLDE1NzY5NzY2MDksMTQwODc0OTAzNCwyMDQzMjExNDgzLDIwMDkxOTU0NzIsMTcwODg0ODMzMywxODA5MDU0MTUwLDgzMjg3NzIzMSwxMDY4MzUxMzk2LDc2Njk0NTQ2NSw1OTk3NjIzNTQsMTU5NDE3OTg3LDEyNjQ1NDY2NCwzNjE5Mjk4NzcsNDYzMTgwMTkwLDI3MDkyNjA4NzEsMjk0MzY4MjM4MCwzMTc4MTA2OTYxLDMwMDk4NzkzODYsMjU3MjY5NzE5NSwyNTM4NjgxMTg0LDIyMzYyMjg3MzMsMjMzNjQzNDU1MCwzNTA5ODcxMTM1LDM3NDUzNDUzMDAsMzQ0MTg1MDM3NywzMjc0NjY3MjY2LDM5MTAxNjE5NzEsMzg3NzE5ODY0OCw0MTEwNTY4NDg1LDQyMTE4MTg3OTgsMjU5NzgwNjQ3NiwyNDk3NjA0NzQzLDIyNjEwODkxNzgsMjI5NTEwMTA3MywyNzMzODU2MTYwLDI5MDIwODc4NTEsMzIwMjQzNzA0NiwyOTY4MDExNDUzLDM5MzYyOTEyODQsMzgzNTAzNjg5NSw0MTM2NDQwNzcwLDQxNjk0MDgyMDEsMzUzNTQ4NjQ1NiwzNzAyNjY1NDU5LDM0NjcxOTIzMDIsMzIzMTcyMjIxMywyMDUxNTE4NzgwLDE5NTEzMTcwNDcsMTcxNjg5MDQxMCwxNzUwOTAyMzA1LDExMTM4MTgzODQsMTI4MjA1MDA3NSwxNTg0NTA0NTgyLDEzNTAwNzg5ODksMTY4ODEwODUyLDY3NTU2NDYzLDM3MTA0OTMzMCw0MDQwMTY3NjEsODQxNzM5NTkyLDEwMDg5MTg1OTUsNzc1NTUwODE0LDU0MDA4MDcyNSwzOTY5NTYyMzY5LDM4MDEzMzIyMzQsNDAzNTQ4OTA0Nyw0MjY5OTA3OTk2LDM1NjkyNTUyMTMsMzY2OTQ2MjU2NiwzMzY2NzU0NjE5LDMzMzI3NDAxNDQsMjYzMTA2NTQzMywyNDYzODc5NzYyLDIxNjAxMTcwNzEsMjM5NTU4ODY3NiwyNzY3NjQ1NTU3LDI4Njg4OTc0MDYsMzEwMjAxMTc0NywzMDY5MDQ5OTYwLDIwMjAwODQ5NywzMzc3ODM2MiwyNzAwNDA0ODcsNTA0NDU5NDM2LDg3NTQ1MTI5Myw5NzU2NTg2NDYsNjc1MDM5NjI3LDY0MTAyNTE1MiwyMDg0NzA0MjMzLDE5MTc1MTg1NjIsMTYxNTg2MTI0NywxODUxMzMyODUyLDExNDc1NTA2NjEsMTI0ODgwMjUxMCwxNDg0MDA1ODQzLDE0NTEwNDQwNTYsOTMzMzAxMzcwLDk2NzMxMTcyOSw3MzMxNTY5NzIsNjMyOTUzNzAzLDI2MDM4ODk1MCwyNTk2NTkxNywzMjg2NzE4MDgsNDk2OTA2MDU5LDEyMDY0Nzc4NTgsMTIzOTQ0Mzc1MywxNTQzMjA4NTAwLDE0NDE5NTI1NzUsMjE0NDE2MTgwNiwxOTA4Njk0Mjc3LDE2NzU1Nzc4ODAsMTg0Mjc1OTQ0MywzNjEwMzY5MjI2LDM2NDQzNzk1ODUsMzQwODExOTUxNiwzMzA3OTE2MjQ3LDQwMTExOTA1MDIsMzc3Njc2NzQ2OSw0MDc3Mzg0NDMyLDQyNDU2MTg2ODMsMjgwOTc3MTE1NCwyODQyNzM3MDQ5LDMxNDQzOTY0MjAsMzA0MzE0MDQ5NSwyNjczNzA1MTUwLDI0MzgyMzc2MjEsMjIwMzAzMjIzMiwyMzcwMjEzNzk1XSk7dGhpcy5fbWl4Q29sPW5ldyBVaW50OEFycmF5KDI1Nik7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXRoaXMuX21peENvbFtlXT1lPDEyOD9lPDwxOmU8PDFeMjc7dGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTYpO3RoaXMuYnVmZmVyUG9zaXRpb249MH1fZXhwYW5kS2V5KGUpe3VucmVhY2hhYmxlKCJDYW5ub3QgY2FsbCBgX2V4cGFuZEtleWAgb24gdGhlIGJhc2UgY2xhc3MiKX1fZGVjcnlwdChlLHQpe2xldCBpLGEscjtjb25zdCBzPW5ldyBVaW50OEFycmF5KDE2KTtzLnNldChlKTtmb3IobGV0IGU9MCxpPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKytpKXNbZV1ePXRbaV07Zm9yKGxldCBlPXRoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbi0xO2U+PTE7LS1lKXtpPXNbMTNdO3NbMTNdPXNbOV07c1s5XT1zWzVdO3NbNV09c1sxXTtzWzFdPWk7aT1zWzE0XTthPXNbMTBdO3NbMTRdPXNbNl07c1sxMF09c1syXTtzWzZdPWk7c1syXT1hO2k9c1sxNV07YT1zWzExXTtyPXNbN107c1sxNV09c1szXTtzWzExXT1pO3NbN109YTtzWzNdPXI7Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT10aGlzLl9pbnZfc1tzW2VdXTtmb3IobGV0IGk9MCxhPTE2KmU7aTwxNjsrK2ksKythKXNbaV1ePXRbYV07Zm9yKGxldCBlPTA7ZTwxNjtlKz00KXtjb25zdCB0PXRoaXMuX21peFtzW2VdXSxhPXRoaXMuX21peFtzW2UrMV1dLHI9dGhpcy5fbWl4W3NbZSsyXV0sbj10aGlzLl9taXhbc1tlKzNdXTtpPXReYT4+PjheYTw8MjRecj4+PjE2XnI8PDE2Xm4+Pj4yNF5uPDw4O3NbZV09aT4+PjI0JjI1NTtzW2UrMV09aT4+MTYmMjU1O3NbZSsyXT1pPj44JjI1NTtzW2UrM109MjU1Jml9fWk9c1sxM107c1sxM109c1s5XTtzWzldPXNbNV07c1s1XT1zWzFdO3NbMV09aTtpPXNbMTRdO2E9c1sxMF07c1sxNF09c1s2XTtzWzEwXT1zWzJdO3NbNl09aTtzWzJdPWE7aT1zWzE1XTthPXNbMTFdO3I9c1s3XTtzWzE1XT1zWzNdO3NbMTFdPWk7c1s3XT1hO3NbM109cjtmb3IobGV0IGU9MDtlPDE2OysrZSl7c1tlXT10aGlzLl9pbnZfc1tzW2VdXTtzW2VdXj10W2VdfXJldHVybiBzfV9lbmNyeXB0KGUsdCl7Y29uc3QgaT10aGlzLl9zO2xldCBhLHIscztjb25zdCBuPW5ldyBVaW50OEFycmF5KDE2KTtuLnNldChlKTtmb3IobGV0IGU9MDtlPDE2OysrZSluW2VdXj10W2VdO2ZvcihsZXQgZT0xO2U8dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uO2UrKyl7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXT1pW25bZV1dO3M9blsxXTtuWzFdPW5bNV07bls1XT1uWzldO25bOV09blsxM107blsxM109cztzPW5bMl07cj1uWzZdO25bMl09blsxMF07bls2XT1uWzE0XTtuWzEwXT1zO25bMTRdPXI7cz1uWzNdO3I9bls3XTthPW5bMTFdO25bM109blsxNV07bls3XT1zO25bMTFdPXI7blsxNV09YTtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9bltlKzBdLGk9bltlKzFdLHI9bltlKzJdLHM9bltlKzNdO2E9dF5pXnJecztuW2UrMF1ePWFedGhpcy5fbWl4Q29sW3ReaV07bltlKzFdXj1hXnRoaXMuX21peENvbFtpXnJdO25bZSsyXV49YV50aGlzLl9taXhDb2xbcl5zXTtuW2UrM11ePWFedGhpcy5fbWl4Q29sW3NedF19Zm9yKGxldCBpPTAsYT0xNiplO2k8MTY7KytpLCsrYSluW2ldXj10W2FdfWZvcihsZXQgZT0wO2U8MTY7KytlKW5bZV09aVtuW2VdXTtzPW5bMV07blsxXT1uWzVdO25bNV09bls5XTtuWzldPW5bMTNdO25bMTNdPXM7cz1uWzJdO3I9bls2XTtuWzJdPW5bMTBdO25bNl09blsxNF07blsxMF09cztuWzE0XT1yO3M9blszXTtyPW5bN107YT1uWzExXTtuWzNdPW5bMTVdO25bN109cztuWzExXT1yO25bMTVdPWE7Zm9yKGxldCBlPTAsaT10aGlzLl9rZXlTaXplO2U8MTY7KytlLCsraSluW2VdXj10W2ldO3JldHVybiBufV9kZWNyeXB0QmxvY2syKGUsdCl7Y29uc3QgaT1lLmxlbmd0aDtsZXQgYT10aGlzLmJ1ZmZlcixyPXRoaXMuYnVmZmVyUG9zaXRpb247Y29uc3Qgcz1bXTtsZXQgbj10aGlzLml2O2ZvcihsZXQgdD0wO3Q8aTsrK3Qpe2Fbcl09ZVt0XTsrK3I7aWYocjwxNiljb250aW51ZTtjb25zdCBpPXRoaXMuX2RlY3J5cHQoYSx0aGlzLl9rZXkpO2ZvcihsZXQgZT0wO2U8MTY7KytlKWlbZV1ePW5bZV07bj1hO3MucHVzaChpKTthPW5ldyBVaW50OEFycmF5KDE2KTtyPTB9dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1yO3RoaXMuaXY9bjtpZigwPT09cy5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2xldCBvPTE2KnMubGVuZ3RoO2lmKHQpe2NvbnN0IGU9cy5hdCgtMSk7bGV0IHQ9ZVsxNV07aWYodDw9MTYpe2ZvcihsZXQgaT0xNSxhPTE2LXQ7aT49YTstLWkpaWYoZVtpXSE9PXQpe3Q9MDticmVha31vLT10O3Nbcy5sZW5ndGgtMV09ZS5zdWJhcnJheSgwLDE2LXQpfX1jb25zdCBnPW5ldyBVaW50OEFycmF5KG8pO2ZvcihsZXQgZT0wLHQ9MCxpPXMubGVuZ3RoO2U8aTsrK2UsdCs9MTYpZy5zZXQoc1tlXSx0KTtyZXR1cm4gZ31kZWNyeXB0QmxvY2soZSx0LGk9bnVsbCl7Y29uc3QgYT1lLmxlbmd0aCxyPXRoaXMuYnVmZmVyO2xldCBzPXRoaXMuYnVmZmVyUG9zaXRpb247aWYoaSl0aGlzLml2PWk7ZWxzZXtmb3IobGV0IHQ9MDtzPDE2JiZ0PGE7Kyt0LCsrcylyW3NdPWVbdF07aWYoczwxNil7dGhpcy5idWZmZXJMZW5ndGg9cztyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCl9dGhpcy5pdj1yO2U9ZS5zdWJhcnJheSgxNil9dGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTYpO3RoaXMuYnVmZmVyTGVuZ3RoPTA7dGhpcy5kZWNyeXB0QmxvY2s9dGhpcy5fZGVjcnlwdEJsb2NrMjtyZXR1cm4gdGhpcy5kZWNyeXB0QmxvY2soZSx0KX1lbmNyeXB0KGUsdCl7Y29uc3QgaT1lLmxlbmd0aDtsZXQgYT10aGlzLmJ1ZmZlcixyPXRoaXMuYnVmZmVyUG9zaXRpb247Y29uc3Qgcz1bXTt0fHwodD1uZXcgVWludDhBcnJheSgxNikpO2ZvcihsZXQgbj0wO248aTsrK24pe2Fbcl09ZVtuXTsrK3I7aWYocjwxNiljb250aW51ZTtmb3IobGV0IGU9MDtlPDE2OysrZSlhW2VdXj10W2VdO2NvbnN0IGk9dGhpcy5fZW5jcnlwdChhLHRoaXMuX2tleSk7dD1pO3MucHVzaChpKTthPW5ldyBVaW50OEFycmF5KDE2KTtyPTB9dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1yO3RoaXMuaXY9dDtpZigwPT09cy5sZW5ndGgpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2NvbnN0IG49MTYqcy5sZW5ndGgsbz1uZXcgVWludDhBcnJheShuKTtmb3IobGV0IGU9MCx0PTAsaT1zLmxlbmd0aDtlPGk7KytlLHQrPTE2KW8uc2V0KHNbZV0sdCk7cmV0dXJuIG99fWNsYXNzIEFFUzEyOENpcGhlciBleHRlbmRzIEFFU0Jhc2VDaXBoZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoKTt0aGlzLl9jeWNsZXNPZlJlcGV0aXRpb249MTA7dGhpcy5fa2V5U2l6ZT0xNjA7dGhpcy5fcmNvbj1uZXcgVWludDhBcnJheShbMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MV0pO3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsaT10aGlzLl9yY29uLGE9bmV3IFVpbnQ4QXJyYXkoMTc2KTthLnNldChlKTtmb3IobGV0IGU9MTYscj0xO2U8MTc2Oysrcil7bGV0IHM9YVtlLTNdLG49YVtlLTJdLG89YVtlLTFdLGc9YVtlLTRdO3M9dFtzXTtuPXRbbl07bz10W29dO2c9dFtnXTtzXj1pW3JdO2ZvcihsZXQgdD0wO3Q8NDsrK3Qpe2FbZV09c149YVtlLTE2XTtlKys7YVtlXT1uXj1hW2UtMTZdO2UrKzthW2VdPW9ePWFbZS0xNl07ZSsrO2FbZV09Z149YVtlLTE2XTtlKyt9fXJldHVybiBhfX1jbGFzcyBBRVMyNTZDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0O3RoaXMuX2tleVNpemU9MjI0O3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsaT1uZXcgVWludDhBcnJheSgyNDApO2kuc2V0KGUpO2xldCBhLHIscyxuLG89MTtmb3IobGV0IGU9MzIsZz0xO2U8MjQwOysrZyl7aWYoZSUzMj09MTYpe2E9dFthXTtyPXRbcl07cz10W3NdO249dFtuXX1lbHNlIGlmKGUlMzI9PTApe2E9aVtlLTNdO3I9aVtlLTJdO3M9aVtlLTFdO249aVtlLTRdO2E9dFthXTtyPXRbcl07cz10W3NdO249dFtuXTthXj1vOyhvPDw9MSk+PTI1NiYmKG89MjU1JigyN15vKSl9Zm9yKGxldCB0PTA7dDw0OysrdCl7aVtlXT1hXj1pW2UtMzJdO2UrKztpW2VdPXJePWlbZS0zMl07ZSsrO2lbZV09c149aVtlLTMyXTtlKys7aVtlXT1uXj1pW2UtMzJdO2UrK319cmV0dXJuIGl9fWNsYXNzIFBERjE3e2NoZWNrT3duZXJQYXNzd29yZChlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodnIociwwLHIubGVuZ3RoKSxhKX1jaGVja1VzZXJQYXNzd29yZChlLHQsaSl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO3JldHVybiBpc0FycmF5RXF1YWwodnIoYSwwLGEubGVuZ3RoKSxpKX1nZXRPd25lcktleShlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzU2KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO3Iuc2V0KGksZS5sZW5ndGgrdC5sZW5ndGgpO2NvbnN0IHM9dnIociwwLHIubGVuZ3RoKTtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihzKS5kZWNyeXB0QmxvY2soYSwhMSxuZXcgVWludDhBcnJheSgxNikpfWdldFVzZXJLZXkoZSx0LGkpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgrOCk7YS5zZXQoZSwwKTthLnNldCh0LGUubGVuZ3RoKTtjb25zdCByPXZyKGEsMCxhLmxlbmd0aCk7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocikuZGVjcnlwdEJsb2NrKGksITEsbmV3IFVpbnQ4QXJyYXkoMTYpKX19Y2xhc3MgUERGMjB7X2hhc2goZSx0LGkpe2xldCBhPXZyKHQsMCx0Lmxlbmd0aCkuc3ViYXJyYXkoMCwzMikscj1bMF0scz0wO2Zvcig7czw2NHx8ci5hdCgtMSk+cy0zMjspe2NvbnN0IHQ9ZS5sZW5ndGgrYS5sZW5ndGgraS5sZW5ndGgsYz1uZXcgVWludDhBcnJheSh0KTtsZXQgaD0wO2Muc2V0KGUsaCk7aCs9ZS5sZW5ndGg7Yy5zZXQoYSxoKTtoKz1hLmxlbmd0aDtjLnNldChpLGgpO2NvbnN0IGw9bmV3IFVpbnQ4QXJyYXkoNjQqdCk7Zm9yKGxldCBlPTAsaT0wO2U8NjQ7ZSsrLGkrPXQpbC5zZXQoYyxpKTtyPW5ldyBBRVMxMjhDaXBoZXIoYS5zdWJhcnJheSgwLDE2KSkuZW5jcnlwdChsLGEuc3ViYXJyYXkoMTYsMzIpKTtjb25zdCBDPXIuc2xpY2UoMCwxNikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKSUzOzA9PT1DP2E9dnIociwwLHIubGVuZ3RoKToxPT09Qz9hPShuPXIsbz0wLGc9ci5sZW5ndGgsWXIobixvLGcsITApKToyPT09QyYmKGE9WXIociwwLHIubGVuZ3RoKSk7cysrfXZhciBuLG8sZztyZXR1cm4gYS5zdWJhcnJheSgwLDMyKX1jaGVja093bmVyUGFzc3dvcmQoZSx0LGksYSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtyLnNldChpLGUubGVuZ3RoK3QubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKHRoaXMuX2hhc2goZSxyLGkpLGEpfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxpKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO2Euc2V0KGUsMCk7YS5zZXQodCxlLmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0aGlzLl9oYXNoKGUsYSxbXSksaSl9Z2V0T3duZXJLZXkoZSx0LGksYSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7ci5zZXQoZSwwKTtyLnNldCh0LGUubGVuZ3RoKTtyLnNldChpLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBzPXRoaXMuX2hhc2goZSxyLGkpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHMpLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9Z2V0VXNlcktleShlLHQsaSl7Y29uc3QgYT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTthLnNldChlLDApO2Euc2V0KHQsZS5sZW5ndGgpO2NvbnN0IHI9dGhpcy5faGFzaChlLGEsW10pO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKHIpLmRlY3J5cHRCbG9jayhpLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fWNsYXNzIENpcGhlclRyYW5zZm9ybXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I9ZTt0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yPXR9Y3JlYXRlU3RyZWFtKGUsdCl7Y29uc3QgaT1uZXcgdGhpcy5TdHJlYW1DaXBoZXJDb25zdHJ1Y3RvcjtyZXR1cm4gbmV3IERlY3J5cHRTdHJlYW0oZSx0LChmdW5jdGlvbiBjaXBoZXJUcmFuc2Zvcm1EZWNyeXB0U3RyZWFtKGUsdCl7cmV0dXJuIGkuZGVjcnlwdEJsb2NrKGUsdCl9KSl9ZGVjcnlwdFN0cmluZyhlKXtjb25zdCB0PW5ldyB0aGlzLlN0cmluZ0NpcGhlckNvbnN0cnVjdG9yO2xldCBpPXN0cmluZ1RvQnl0ZXMoZSk7aT10LmRlY3J5cHRCbG9jayhpLCEwKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhpKX1lbmNyeXB0U3RyaW5nKGUpe2NvbnN0IHQ9bmV3IHRoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I7aWYodCBpbnN0YW5jZW9mIEFFU0Jhc2VDaXBoZXIpe2NvbnN0IGk9MTYtZS5sZW5ndGglMTY7ZSs9U3RyaW5nLmZyb21DaGFyQ29kZShpKS5yZXBlYXQoaSk7Y29uc3QgYT1uZXcgVWludDhBcnJheSgxNik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8pY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhKTtlbHNlIGZvcihsZXQgZT0wO2U8MTY7ZSsrKWFbZV09TWF0aC5mbG9vcigyNTYqTWF0aC5yYW5kb20oKSk7bGV0IHI9c3RyaW5nVG9CeXRlcyhlKTtyPXQuZW5jcnlwdChyLGEpO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoMTYrci5sZW5ndGgpO3Muc2V0KGEpO3Muc2V0KHIsMTYpO3JldHVybiBieXRlc1RvU3RyaW5nKHMpfWxldCBpPXN0cmluZ1RvQnl0ZXMoZSk7aT10LmVuY3J5cHQoaSk7cmV0dXJuIGJ5dGVzVG9TdHJpbmcoaSl9fWNsYXNzIENpcGhlclRyYW5zZm9ybUZhY3Rvcnl7c3RhdGljI2s9bmV3IFVpbnQ4QXJyYXkoWzQwLDE5MSw3OCw5NCw3OCwxMTcsMTM4LDY1LDEwMCwwLDc4LDg2LDI1NSwyNTAsMSw4LDQ2LDQ2LDAsMTgyLDIwOCwxMDQsNjIsMTI4LDQ3LDEyLDE2OSwyNTQsMTAwLDgzLDEwNSwxMjJdKTsjUihlLHQsaSxhLHIscyxuLG8sZyxjLGgsbCl7aWYodCl7Y29uc3QgZT1NYXRoLm1pbigxMjcsdC5sZW5ndGgpO3Q9dC5zdWJhcnJheSgwLGUpfWVsc2UgdD1bXTtjb25zdCBDPTY9PT1lP25ldyBQREYyMDpuZXcgUERGMTc7cmV0dXJuIEMuY2hlY2tVc2VyUGFzc3dvcmQodCxvLG4pP0MuZ2V0VXNlcktleSh0LGcsaCk6dC5sZW5ndGgmJkMuY2hlY2tPd25lclBhc3N3b3JkKHQsYSxzLGkpP0MuZ2V0T3duZXJLZXkodCxyLHMsYyk6bnVsbH0jTihlLHQsaSxhLHIscyxuLG8pe2NvbnN0IGc9NDAraS5sZW5ndGgrZS5sZW5ndGgsYz1uZXcgVWludDhBcnJheShnKTtsZXQgaCxsLEM9MDtpZih0KXtsPU1hdGgubWluKDMyLHQubGVuZ3RoKTtmb3IoO0M8bDsrK0MpY1tDXT10W0NdfWg9MDtmb3IoO0M8MzI7KWNbQysrXT1DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5LiNrW2grK107Zm9yKGg9MCxsPWkubGVuZ3RoO2g8bDsrK2gpY1tDKytdPWlbaF07Y1tDKytdPTI1NSZyO2NbQysrXT1yPj44JjI1NTtjW0MrK109cj4+MTYmMjU1O2NbQysrXT1yPj4+MjQmMjU1O2ZvcihoPTAsbD1lLmxlbmd0aDtoPGw7KytoKWNbQysrXT1lW2hdO2lmKHM+PTQmJiFvKXtjW0MrK109MjU1O2NbQysrXT0yNTU7Y1tDKytdPTI1NTtjW0MrK109MjU1fWxldCBRPUhyKGMsMCxDKTtjb25zdCBFPW4+PjM7aWYocz49Mylmb3IoaD0wO2g8NTA7KytoKVE9SHIoUSwwLEUpO2NvbnN0IHU9US5zdWJhcnJheSgwLEUpO2xldCBkLGY7aWYocz49Myl7Zm9yKEM9MDtDPDMyOysrQyljW0NdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuI2tbQ107Zm9yKGg9MCxsPWUubGVuZ3RoO2g8bDsrK2gpY1tDKytdPWVbaF07ZD1uZXcgQVJDRm91ckNpcGhlcih1KTtmPWQuZW5jcnlwdEJsb2NrKEhyKGMsMCxDKSk7bD11Lmxlbmd0aDtjb25zdCB0PW5ldyBVaW50OEFycmF5KGwpO2ZvcihoPTE7aDw9MTk7KytoKXtmb3IobGV0IGU9MDtlPGw7KytlKXRbZV09dVtlXV5oO2Q9bmV3IEFSQ0ZvdXJDaXBoZXIodCk7Zj1kLmVuY3J5cHRCbG9jayhmKX1mb3IoaD0wLGw9Zi5sZW5ndGg7aDxsOysraClpZihhW2hdIT09ZltoXSlyZXR1cm4gbnVsbH1lbHNle2Q9bmV3IEFSQ0ZvdXJDaXBoZXIodSk7Zj1kLmVuY3J5cHRCbG9jayhDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5LiNrKTtmb3IoaD0wLGw9Zi5sZW5ndGg7aDxsOysraClpZihhW2hdIT09ZltoXSlyZXR1cm4gbnVsbH1yZXR1cm4gdX0jRyhlLHQsaSxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KDMyKTtsZXQgcz0wO2NvbnN0IG49TWF0aC5taW4oMzIsZS5sZW5ndGgpO2Zvcig7czxuOysrcylyW3NdPWVbc107bGV0IG89MDtmb3IoO3M8MzI7KXJbcysrXT1DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5LiNrW28rK107bGV0IGc9SHIociwwLHMpO2NvbnN0IGM9YT4+MztpZihpPj0zKWZvcihvPTA7bzw1MDsrK28pZz1IcihnLDAsZy5sZW5ndGgpO2xldCBoLGw7aWYoaT49Myl7bD10O2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoYyk7Zm9yKG89MTk7bz49MDtvLS0pe2ZvcihsZXQgdD0wO3Q8YzsrK3QpZVt0XT1nW3RdXm87aD1uZXcgQVJDRm91ckNpcGhlcihlKTtsPWguZW5jcnlwdEJsb2NrKGwpfX1lbHNle2g9bmV3IEFSQ0ZvdXJDaXBoZXIoZy5zdWJhcnJheSgwLGMpKTtsPWguZW5jcnlwdEJsb2NrKHQpfXJldHVybiBsfSN4KGUsdCxpLGE9ITEpe2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoaS5sZW5ndGgrOSkscz1pLmxlbmd0aDtsZXQgbjtmb3Iobj0wO248czsrK24pcltuXT1pW25dO3JbbisrXT0yNTUmZTtyW24rK109ZT4+OCYyNTU7cltuKytdPWU+PjE2JjI1NTtyW24rK109MjU1JnQ7cltuKytdPXQ+PjgmMjU1O2lmKGEpe3JbbisrXT0xMTU7cltuKytdPTY1O3JbbisrXT0xMDg7cltuKytdPTg0fXJldHVybiBIcihyLDAsbikuc3ViYXJyYXkoMCxNYXRoLm1pbihpLmxlbmd0aCs1LDE2KSl9I00oZSx0LGksYSxyKXtpZighKHQgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3Qgcz10aGlzLG49ZS5nZXQodC5uYW1lKSxvPW4/LmdldCgiQ0ZNIik7aWYoIW98fCJOb25lIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE51bGxDaXBoZXJ9O2lmKCJWMiI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKHMuI3goaSxhLHIsITEpKX07aWYoIkFFU1YyIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFFUzEyOENpcGhlcihzLiN4KGksYSxyLCEwKSl9O2lmKCJBRVNWMyI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBRVMyNTZDaXBoZXIocil9O3Rocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBjcnlwdG8gbWV0aG9kIil9Y29uc3RydWN0b3IoZSx0LGkpe2NvbnN0IGE9ZS5nZXQoIkZpbHRlciIpO2lmKCFpc05hbWUoYSwiU3RhbmRhcmQiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVua25vd24gZW5jcnlwdGlvbiBtZXRob2QiKTt0aGlzLmZpbHRlck5hbWU9YS5uYW1lO3RoaXMuZGljdD1lO2NvbnN0IHI9ZS5nZXQoIlYiKTtpZighTnVtYmVyLmlzSW50ZWdlcihyKXx8MSE9PXImJjIhPT1yJiY0IT09ciYmNSE9PXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobSIpO3RoaXMuYWxnb3JpdGhtPXI7bGV0IHM9ZS5nZXQoIkxlbmd0aCIpO2lmKCFzKWlmKHI8PTMpcz00MDtlbHNle2NvbnN0IHQ9ZS5nZXQoIkNGIiksaT1lLmdldCgiU3RtRiIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0JiZpIGluc3RhbmNlb2YgTmFtZSl7dC5zdXBwcmVzc0VuY3J5cHRpb249ITA7Y29uc3QgZT10LmdldChpLm5hbWUpO3M9ZT8uZ2V0KCJMZW5ndGgiKXx8MTI4O3M8NDAmJihzPDw9Myl9fWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpfHxzPDQwfHxzJTghPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGtleSBsZW5ndGgiKTtjb25zdCBuPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIk8iKSksbz1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJVIikpLGc9bi5zdWJhcnJheSgwLDMyKSxjPW8uc3ViYXJyYXkoMCwzMiksaD1lLmdldCgiUCIpLGw9ZS5nZXQoIlIiKSxDPSg0PT09cnx8NT09PXIpJiYhMSE9PWUuZ2V0KCJFbmNyeXB0TWV0YWRhdGEiKTt0aGlzLmVuY3J5cHRNZXRhZGF0YT1DO2NvbnN0IFE9c3RyaW5nVG9CeXRlcyh0KTtsZXQgRSx1O2lmKGkpe2lmKDY9PT1sKXRyeXtpPXV0ZjhTdHJpbmdUb1N0cmluZyhpKX1jYXRjaHt3YXJuKCJDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5OiBVbmFibGUgdG8gY29udmVydCBVVEY4IGVuY29kZWQgcGFzc3dvcmQuIil9RT1zdHJpbmdUb0J5dGVzKGkpfWlmKDUhPT1yKXU9dGhpcy4jTihRLEUsZyxjLGgsbCxzLEMpO2Vsc2V7Y29uc3QgdD1uLnN1YmFycmF5KDMyLDQwKSxpPW4uc3ViYXJyYXkoNDAsNDgpLGE9by5zdWJhcnJheSgwLDQ4KSxyPW8uc3ViYXJyYXkoMzIsNDApLHM9by5zdWJhcnJheSg0MCw0OCksaD1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJPRSIpKSxDPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlVFIikpLFE9c3RyaW5nVG9CeXRlcyhlLmdldCgiUGVybXMiKSk7dT10aGlzLiNSKGwsRSxnLHQsaSxhLGMscixzLGgsQyxRKX1pZighdSYmIWkpdGhyb3cgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKCJObyBwYXNzd29yZCBnaXZlbiIsaXQpO2lmKCF1JiZpKXtjb25zdCBlPXRoaXMuI0coRSxnLGwscyk7dT10aGlzLiNOKFEsZSxnLGMsaCxsLHMsQyl9aWYoIXUpdGhyb3cgbmV3IFBhc3N3b3JkRXhjZXB0aW9uKCJJbmNvcnJlY3QgUGFzc3dvcmQiLGF0KTt0aGlzLmVuY3J5cHRpb25LZXk9dTtpZihyPj00KXtjb25zdCB0PWUuZ2V0KCJDRiIpO3QgaW5zdGFuY2VvZiBEaWN0JiYodC5zdXBwcmVzc0VuY3J5cHRpb249ITApO3RoaXMuY2Y9dDt0aGlzLnN0bWY9ZS5nZXQoIlN0bUYiKXx8TmFtZS5nZXQoIklkZW50aXR5Iik7dGhpcy5zdHJmPWUuZ2V0KCJTdHJGIil8fE5hbWUuZ2V0KCJJZGVudGl0eSIpO3RoaXMuZWZmPWUuZ2V0KCJFRkYiKXx8dGhpcy5zdG1mfX1jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oZSx0KXtpZig0PT09dGhpcy5hbGdvcml0aG18fDU9PT10aGlzLmFsZ29yaXRobSlyZXR1cm4gbmV3IENpcGhlclRyYW5zZm9ybSh0aGlzLiNNKHRoaXMuY2YsdGhpcy5zdHJmLGUsdCx0aGlzLmVuY3J5cHRpb25LZXkpLHRoaXMuI00odGhpcy5jZix0aGlzLnN0bWYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSkpO2NvbnN0IGk9dGhpcy4jeChlLHQsdGhpcy5lbmNyeXB0aW9uS2V5LCExKSxjaXBoZXJDb25zdHJ1Y3Rvcj1mdW5jdGlvbigpe3JldHVybiBuZXcgQVJDRm91ckNpcGhlcihpKX07cmV0dXJuIG5ldyBDaXBoZXJUcmFuc2Zvcm0oY2lwaGVyQ29uc3RydWN0b3IsY2lwaGVyQ29uc3RydWN0b3IpfX1hc3luYyBmdW5jdGlvbiB3cml0ZU9iamVjdChlLHQsaSx7ZW5jcnlwdDphPW51bGx9KXtjb25zdCByPWE/LmNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLm51bSxlLmdlbik7aS5wdXNoKGAke2UubnVtfSAke2UuZ2VufSBvYmpcbmApO3QgaW5zdGFuY2VvZiBEaWN0P2F3YWl0IHdyaXRlRGljdCh0LGkscik6dCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YXdhaXQgd3JpdGVTdHJlYW0odCxpLHIpOihBcnJheS5pc0FycmF5KHQpfHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkpJiZhd2FpdCB3cml0ZUFycmF5KHQsaSxyKTtpLnB1c2goIlxuZW5kb2JqXG4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZURpY3QoZSx0LGkpe3QucHVzaCgiPDwiKTtmb3IoY29uc3QgYSBvZiBlLmdldEtleXMoKSl7dC5wdXNoKGAgLyR7ZXNjYXBlUERGTmFtZShhKX0gYCk7YXdhaXQgd3JpdGVWYWx1ZShlLmdldFJhdyhhKSx0LGkpfXQucHVzaCgiPj4iKX1hc3luYyBmdW5jdGlvbiB3cml0ZVN0cmVhbShlLHQsaSl7bGV0IGE9ZS5nZXRCeXRlcygpO2NvbnN0e2RpY3Q6cn09ZSxbcyxuXT1hd2FpdCBQcm9taXNlLmFsbChbci5nZXRBc3luYygiRmlsdGVyIiksci5nZXRBc3luYygiRGVjb2RlUGFybXMiKV0pLG89aXNOYW1lKEFycmF5LmlzQXJyYXkocyk/YXdhaXQgci54cmVmLmZldGNoSWZSZWZBc3luYyhzWzBdKTpzLCJGbGF0ZURlY29kZSIpO2lmKGEubGVuZ3RoPj0yNTZ8fG8pdHJ5e2NvbnN0IGU9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIiksdD1lLndyaXRhYmxlLmdldFdyaXRlcigpO3Qud3JpdGUoYSk7dC5jbG9zZSgpO2NvbnN0IGk9YXdhaXQgbmV3IFJlc3BvbnNlKGUucmVhZGFibGUpLmFycmF5QnVmZmVyKCk7YT1uZXcgVWludDhBcnJheShpKTtsZXQgZyxjO2lmKHMpe2lmKCFvKXtnPUFycmF5LmlzQXJyYXkocyk/W05hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLC4uLnNdOltOYW1lLmdldCgiRmxhdGVEZWNvZGUiKSxzXTtuJiYoYz1BcnJheS5pc0FycmF5KG4pP1tudWxsLC4uLm5dOltudWxsLG5dKX19ZWxzZSBnPU5hbWUuZ2V0KCJGbGF0ZURlY29kZSIpO2cmJnIuc2V0KCJGaWx0ZXIiLGcpO2MmJnIuc2V0KCJEZWNvZGVQYXJtcyIsYyl9Y2F0Y2goZSl7aW5mbyhgd3JpdGVTdHJlYW0gLSBjYW5ub3QgY29tcHJlc3MgZGF0YTogIiR7ZX0iLmApfWxldCBnPWJ5dGVzVG9TdHJpbmcoYSk7aSYmKGc9aS5lbmNyeXB0U3RyaW5nKGcpKTtyLnNldCgiTGVuZ3RoIixnLmxlbmd0aCk7YXdhaXQgd3JpdGVEaWN0KHIsdCxpKTt0LnB1c2goIiBzdHJlYW1cbiIsZywiXG5lbmRzdHJlYW0iKX1hc3luYyBmdW5jdGlvbiB3cml0ZUFycmF5KGUsdCxpKXt0LnB1c2goIlsiKTtsZXQgYT0hMDtmb3IoY29uc3QgciBvZiBlKXthP2E9ITE6dC5wdXNoKCIgIik7YXdhaXQgd3JpdGVWYWx1ZShyLHQsaSl9dC5wdXNoKCJdIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVWYWx1ZShlLHQsaSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdC5wdXNoKGAvJHtlc2NhcGVQREZOYW1lKGUubmFtZSl9YCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKXQucHVzaChgJHtlLm51bX0gJHtlLmdlbn0gUmApO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKXx8QXJyYXlCdWZmZXIuaXNWaWV3KGUpKWF3YWl0IHdyaXRlQXJyYXkoZSx0LGkpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXtpJiYoZT1pLmVuY3J5cHRTdHJpbmcoZSkpO3QucHVzaChgKCR7ZXNjYXBlU3RyaW5nKGUpfSlgKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlP3QucHVzaChudW1iZXJUb1N0cmluZyhlKSk6ImJvb2xlYW4iPT10eXBlb2YgZT90LnB1c2goZS50b1N0cmluZygpKTplIGluc3RhbmNlb2YgRGljdD9hd2FpdCB3cml0ZURpY3QoZSx0LGkpOmUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2F3YWl0IHdyaXRlU3RyZWFtKGUsdCxpKTpudWxsPT09ZT90LnB1c2goIm51bGwiKTp3YXJuKGBVbmhhbmRsZWQgdmFsdWUgaW4gd3JpdGVyOiAke3R5cGVvZiBlfSwgcGxlYXNlIGZpbGUgYSBidWcuYCl9ZnVuY3Rpb24gd3JpdGVJbnQoZSx0LGksYSl7Zm9yKGxldCByPXQraS0xO3I+aS0xO3ItLSl7YVtyXT0yNTUmZTtlPj49OH1yZXR1cm4gaSt0fWZ1bmN0aW9uIHdyaXRlU3RyaW5nKGUsdCxpKXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspaVt0K2FdPTI1NSZlLmNoYXJDb2RlQXQoYSl9ZnVuY3Rpb24gdXBkYXRlWEZBKHt4ZmFEYXRhOmUseGZhRGF0YXNldHNSZWY6dCxuZXdSZWZzOmkseHJlZjphfSl7aWYobnVsbD09PWUpe2U9ZnVuY3Rpb24gd3JpdGVYRkFEYXRhRm9yQWNyb2Zvcm0oZSx0KXtjb25zdCBpPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7Zm9yKGNvbnN0e3hmYTplfW9mIHQpe2lmKCFlKWNvbnRpbnVlO2NvbnN0e3BhdGg6dCx2YWx1ZTphfT1lO2lmKCF0KWNvbnRpbnVlO2NvbnN0IHI9cGFyc2VYRkFQYXRoKHQpO2xldCBzPWkuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUociwwKTshcyYmci5sZW5ndGg+MSYmKHM9aS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShbci5hdCgtMSldLDApKTtzP3MuY2hpbGROb2Rlcz1BcnJheS5pc0FycmF5KGEpP2EubWFwKChlPT5uZXcgU2ltcGxlRE9NTm9kZSgidmFsdWUiLGUpKSk6W25ldyBTaW1wbGVET01Ob2RlKCIjdGV4dCIsYSldOndhcm4oYE5vZGUgbm90IGZvdW5kIGZvciBwYXRoOiAke3R9YCl9Y29uc3QgYT1bXTtpLmRvY3VtZW50RWxlbWVudC5kdW1wKGEpO3JldHVybiBhLmpvaW4oIiIpfShhLmZldGNoSWZSZWYodCkuZ2V0U3RyaW5nKCksaSl9Y29uc3Qgcj1hLmVuY3J5cHQ7aWYocil7ZT1yLmNyZWF0ZUNpcGhlclRyYW5zZm9ybSh0Lm51bSx0LmdlbikuZW5jcnlwdFN0cmluZyhlKX1jb25zdCBzPWAke3QubnVtfSAke3QuZ2VufSBvYmpcbjw8IC9UeXBlIC9FbWJlZGRlZEZpbGUgL0xlbmd0aCAke2UubGVuZ3RofT4+XG5zdHJlYW1cbmArZSsiXG5lbmRzdHJlYW1cbmVuZG9ialxuIjtpLnB1c2goe3JlZjp0LGRhdGE6c30pfWZ1bmN0aW9uIGdldEluZGV4ZXMoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3R7cmVmOml9b2YgZSlpLm51bT09PXQuYXQoLTIpK3QuYXQoLTEpP3RbdC5sZW5ndGgtMV0rPTE6dC5wdXNoKGkubnVtLDEpO3JldHVybiB0fWZ1bmN0aW9uIGNvbXB1dGVJRHMoZSx0LGkpe2lmKEFycmF5LmlzQXJyYXkodC5maWxlSWRzKSYmdC5maWxlSWRzLmxlbmd0aD4wKXtjb25zdCBhPWZ1bmN0aW9uIGNvbXB1dGVNRDUoZSx0KXtjb25zdCBpPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLGE9dC5maWxlbmFtZXx8IiIscj1baS50b1N0cmluZygpLGEsZS50b1N0cmluZygpXTtsZXQgcz1yLnJlZHVjZSgoKGUsdCk9PmUrdC5sZW5ndGgpLDApO2Zvcihjb25zdCBlIG9mIE9iamVjdC52YWx1ZXModC5pbmZvKSl7ci5wdXNoKGUpO3MrPWUubGVuZ3RofWNvbnN0IG49bmV3IFVpbnQ4QXJyYXkocyk7bGV0IG89MDtmb3IoY29uc3QgZSBvZiByKXt3cml0ZVN0cmluZyhlLG8sbik7bys9ZS5sZW5ndGh9cmV0dXJuIGJ5dGVzVG9TdHJpbmcoSHIobikpfShlLHQpO2kuc2V0KCJJRCIsW3QuZmlsZUlkc1swXSxhXSl9fWFzeW5jIGZ1bmN0aW9uIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6ZSx4cmVmSW5mbzp0LG5ld1JlZnM6aSx4cmVmOmE9bnVsbCxoYXNYZmE6cj0hMSx4ZmFEYXRhc2V0c1JlZjpzPW51bGwsaGFzWGZhRGF0YXNldHNFbnRyeTpuPSExLG5lZWRBcHBlYXJhbmNlczpvLGFjcm9Gb3JtUmVmOmc9bnVsbCxhY3JvRm9ybTpjPW51bGwseGZhRGF0YTpoPW51bGwsdXNlWHJlZlN0cmVhbTpsPSExfSl7YXdhaXQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlQWNyb2Zvcm0oe3hyZWY6ZSxhY3JvRm9ybTp0LGFjcm9Gb3JtUmVmOmksaGFzWGZhOmEsaGFzWGZhRGF0YXNldHNFbnRyeTpyLHhmYURhdGFzZXRzUmVmOnMsbmVlZEFwcGVhcmFuY2VzOm4sbmV3UmVmczpvfSl7IWF8fHJ8fHN8fHdhcm4oIlhGQSAtIENhbm5vdCBzYXZlIGl0Iik7aWYoIW4mJighYXx8IXN8fHIpKXJldHVybjtjb25zdCBnPXQuY2xvbmUoKTtpZihhJiYhcil7Y29uc3QgZT10LmdldCgiWEZBIikuc2xpY2UoKTtlLnNwbGljZSgyLDAsImRhdGFzZXRzIik7ZS5zcGxpY2UoMywwLHMpO2cuc2V0KCJYRkEiLGUpfW4mJmcuc2V0KCJOZWVkQXBwZWFyYW5jZXMiLCEwKTtjb25zdCBjPVtdO2F3YWl0IHdyaXRlT2JqZWN0KGksZyxjLGUpO28ucHVzaCh7cmVmOmksZGF0YTpjLmpvaW4oIiIpfSl9KHt4cmVmOmEsYWNyb0Zvcm06YyxhY3JvRm9ybVJlZjpnLGhhc1hmYTpyLGhhc1hmYURhdGFzZXRzRW50cnk6bix4ZmFEYXRhc2V0c1JlZjpzLG5lZWRBcHBlYXJhbmNlczpvLG5ld1JlZnM6aX0pO3ImJnVwZGF0ZVhGQSh7eGZhRGF0YTpoLHhmYURhdGFzZXRzUmVmOnMsbmV3UmVmczppLHhyZWY6YX0pO2NvbnN0IEM9W107bGV0IFE9ZS5sZW5ndGg7Y29uc3QgRT1lLmF0KC0xKTtpZigxMCE9PUUmJjEzIT09RSl7Qy5wdXNoKCJcbiIpO1ErPTF9Y29uc3QgdT1mdW5jdGlvbiBnZXRUcmFpbGVyRGljdChlLHQsaSl7Y29uc3QgYT1uZXcgRGljdChudWxsKTthLnNldCgiUHJldiIsZS5zdGFydFhSZWYpO2NvbnN0IHI9ZS5uZXdSZWY7aWYoaSl7dC5wdXNoKHtyZWY6cixkYXRhOiIifSk7YS5zZXQoIlNpemUiLHIubnVtKzEpO2Euc2V0KCJUeXBlIixOYW1lLmdldCgiWFJlZiIpKX1lbHNlIGEuc2V0KCJTaXplIixyLm51bSk7bnVsbCE9PWUucm9vdFJlZiYmYS5zZXQoIlJvb3QiLGUucm9vdFJlZik7bnVsbCE9PWUuaW5mb1JlZiYmYS5zZXQoIkluZm8iLGUuaW5mb1JlZik7bnVsbCE9PWUuZW5jcnlwdFJlZiYmYS5zZXQoIkVuY3J5cHQiLGUuZW5jcnlwdFJlZik7cmV0dXJuIGF9KHQsaSxsKTtpPWkuc29ydCgoKGUsdCk9PmUucmVmLm51bS10LnJlZi5udW0pKTtmb3IoY29uc3R7ZGF0YTplfW9mIGkpbnVsbCE9PWUmJkMucHVzaChlKTthd2FpdChsP2FzeW5jIGZ1bmN0aW9uIGdldFhSZWZTdHJlYW1UYWJsZShlLHQsaSxhLHIpe2NvbnN0IHM9W107bGV0IG49MCxvPTA7Zm9yKGNvbnN0e3JlZjplLGRhdGE6YX1vZiBpKXtsZXQgaTtuPU1hdGgubWF4KG4sdCk7aWYobnVsbCE9PWEpe2k9TWF0aC5taW4oZS5nZW4sNjU1MzUpO3MucHVzaChbMSx0LGldKTt0Kz1hLmxlbmd0aH1lbHNle2k9TWF0aC5taW4oZS5nZW4rMSw2NTUzNSk7cy5wdXNoKFswLDAsaV0pfW89TWF0aC5tYXgobyxpKX1hLnNldCgiSW5kZXgiLGdldEluZGV4ZXMoaSkpO2NvbnN0IGc9WzEsZ2V0U2l6ZUluQnl0ZXMobiksZ2V0U2l6ZUluQnl0ZXMobyldO2Euc2V0KCJXIixnKTtjb21wdXRlSURzKHQsZSxhKTtjb25zdCBjPWcucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKSxoPW5ldyBVaW50OEFycmF5KGMqcy5sZW5ndGgpLGw9bmV3IFN0cmVhbShoKTtsLmRpY3Q9YTtsZXQgQz0wO2Zvcihjb25zdFtlLHQsaV1vZiBzKXtDPXdyaXRlSW50KGUsZ1swXSxDLGgpO0M9d3JpdGVJbnQodCxnWzFdLEMsaCk7Qz13cml0ZUludChpLGdbMl0sQyxoKX1hd2FpdCB3cml0ZU9iamVjdChlLm5ld1JlZixsLHIse30pO3IucHVzaCgic3RhcnR4cmVmXG4iLHQudG9TdHJpbmcoKSwiXG4lJUVPRlxuIil9KHQsUSxpLHUsQyk6YXN5bmMgZnVuY3Rpb24gZ2V0WFJlZlRhYmxlKGUsdCxpLGEscil7ci5wdXNoKCJ4cmVmXG4iKTtjb25zdCBzPWdldEluZGV4ZXMoaSk7bGV0IG49MDtmb3IoY29uc3R7cmVmOmUsZGF0YTphfW9mIGkpe2lmKGUubnVtPT09c1tuXSl7ci5wdXNoKGAke3Nbbl19ICR7c1tuKzFdfVxuYCk7bis9Mn1pZihudWxsIT09YSl7ci5wdXNoKGAke3QudG9TdHJpbmcoKS5wYWRTdGFydCgxMCwiMCIpfSAke01hdGgubWluKGUuZ2VuLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gblxyXG5gKTt0Kz1hLmxlbmd0aH1lbHNlIHIucHVzaChgMDAwMDAwMDAwMCAke01hdGgubWluKGUuZ2VuKzEsNjU1MzUpLnRvU3RyaW5nKCkucGFkU3RhcnQoNSwiMCIpfSBmXHJcbmApfWNvbXB1dGVJRHModCxlLGEpO3IucHVzaCgidHJhaWxlclxuIik7YXdhaXQgd3JpdGVEaWN0KGEscik7ci5wdXNoKCJcbnN0YXJ0eHJlZlxuIix0LnRvU3RyaW5nKCksIlxuJSVFT0ZcbiIpfSh0LFEsaSx1LEMpKTtjb25zdCBkPUMucmVkdWNlKCgoZSx0KT0+ZSt0Lmxlbmd0aCksZS5sZW5ndGgpLGY9bmV3IFVpbnQ4QXJyYXkoZCk7Zi5zZXQoZSk7bGV0IHA9ZS5sZW5ndGg7Zm9yKGNvbnN0IGUgb2YgQyl7d3JpdGVTdHJpbmcoZSxwLGYpO3ArPWUubGVuZ3RofXJldHVybiBmfWNvbnN0IEtyPTEsVHI9Mixxcj0zLE9yPTQsUHI9NTtjbGFzcyBTdHJ1Y3RUcmVlUm9vdHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGljdD1lO3RoaXMucmVmPXQgaW5zdGFuY2VvZiBSZWY/dDpudWxsO3RoaXMucm9sZU1hcD1uZXcgTWFwO3RoaXMuc3RydWN0UGFyZW50SWRzPW51bGx9aW5pdCgpe3RoaXMucmVhZFJvbGVNYXAoKX0jVShlLHQsaSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKXx8dDwwKXJldHVybjt0aGlzLnN0cnVjdFBhcmVudElkc3x8PW5ldyBSZWZTZXRDYWNoZTtsZXQgYT10aGlzLnN0cnVjdFBhcmVudElkcy5nZXQoZSk7aWYoIWEpe2E9W107dGhpcy5zdHJ1Y3RQYXJlbnRJZHMucHV0KGUsYSl9YS5wdXNoKFt0LGldKX1hZGRBbm5vdGF0aW9uSWRUb1BhZ2UoZSx0KXt0aGlzLiNVKGUsdCxPcil9cmVhZFJvbGVNYXAoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlJvbGVNYXAiKTtlIGluc3RhbmNlb2YgRGljdCYmZS5mb3JFYWNoKCgoZSx0KT0+e3QgaW5zdGFuY2VvZiBOYW1lJiZ0aGlzLnJvbGVNYXAuc2V0KGUsdC5uYW1lKX0pKX1zdGF0aWMgYXN5bmMgY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjplLHBkZk1hbmFnZXI6dCxuZXdBbm5vdGF0aW9uc0J5UGFnZTppfSl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSl7d2FybigiQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBubyBjYXRhbG9nIHJlZmVyZW5jZS4iKTtyZXR1cm4hMX1sZXQgYT0wLHI9ITA7Zm9yKGNvbnN0W2Usc11vZiBpKXtjb25zdHtyZWY6aX09YXdhaXQgdC5nZXRQYWdlKGUpO2lmKCEoaSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oYENhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogcGFnZSAke2V9IGhhcyBubyByZWYuYCk7cj0hMDticmVha31mb3IoY29uc3QgZSBvZiBzKWlmKGUuYWNjZXNzaWJpbGl0eURhdGE/LnR5cGUpe2UucGFyZW50VHJlZUlkPWErKztyPSExfX1pZihyKXtmb3IoY29uc3QgZSBvZiBpLnZhbHVlcygpKWZvcihjb25zdCB0IG9mIGUpZGVsZXRlIHQucGFyZW50VHJlZUlkO3JldHVybiExfXJldHVybiEwfXN0YXRpYyBhc3luYyBjcmVhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHhyZWY6dCxjYXRhbG9nUmVmOmkscGRmTWFuYWdlcjphLG5ld1JlZnM6cn0pe2NvbnN0IHM9YS5jYXRhbG9nLmNsb25lRGljdCgpLG49bmV3IFJlZlNldENhY2hlO24ucHV0KGkscyk7Y29uc3Qgbz10LmdldE5ld1RlbXBvcmFyeVJlZigpO3Muc2V0KCJTdHJ1Y3RUcmVlUm9vdCIsbyk7Y29uc3QgZz1uZXcgRGljdCh0KTtnLnNldCgiVHlwZSIsTmFtZS5nZXQoIlN0cnVjdFRyZWVSb290IikpO2NvbnN0IGM9dC5nZXROZXdUZW1wb3JhcnlSZWYoKTtnLnNldCgiUGFyZW50VHJlZSIsYyk7Y29uc3QgaD1bXTtnLnNldCgiSyIsaCk7bi5wdXQobyxnKTtjb25zdCBsPW5ldyBEaWN0KHQpLEM9W107bC5zZXQoIk51bXMiLEMpO2NvbnN0IFE9YXdhaXQgdGhpcy4jTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjpvLGtpZHM6aCxudW1zOkMseHJlZjp0LHBkZk1hbmFnZXI6YSxjYWNoZTpufSk7Zy5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixRKTtuLnB1dChjLGwpO2NvbnN0IEU9W107Zm9yKGNvbnN0W2UsaV1vZiBuLml0ZW1zKCkpe0UubGVuZ3RoPTA7YXdhaXQgd3JpdGVPYmplY3QoZSxpLEUsdCk7ci5wdXNoKHtyZWY6ZSxkYXRhOkUuam9pbigiIil9KX19YXN5bmMgY2FuVXBkYXRlU3RydWN0VHJlZSh7cGRmTWFuYWdlcjplLHhyZWY6dCxuZXdBbm5vdGF0aW9uc0J5UGFnZTppfSl7aWYoIXRoaXMucmVmKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogbm8gcm9vdCByZWZlcmVuY2UuIik7cmV0dXJuITF9bGV0IGE9dGhpcy5kaWN0LmdldCgiUGFyZW50VHJlZU5leHRLZXkiKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogaW52YWxpZCBuZXh0IGtleS4iKTtyZXR1cm4hMX1jb25zdCByPXRoaXMuZGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IFBhcmVudFRyZWUgaXNuJ3QgYSBkaWN0LiIpO3JldHVybiExfWNvbnN0IHM9ci5nZXQoIk51bXMiKTtpZighQXJyYXkuaXNBcnJheShzKSl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IG51bXMgaXNuJ3QgYW4gYXJyYXkuIik7cmV0dXJuITF9Y29uc3Qgbj1uZXcgTnVtYmVyVHJlZShyLHQpO2Zvcihjb25zdCB0IG9mIGkua2V5cygpKXtjb25zdHtwYWdlRGljdDppfT1hd2FpdCBlLmdldFBhZ2UodCk7aWYoIWkuaGFzKCJTdHJ1Y3RQYXJlbnRzIikpY29udGludWU7Y29uc3QgYT1pLmdldCgiU3RydWN0UGFyZW50cyIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhQXJyYXkuaXNBcnJheShuLmdldChhKSkpe3dhcm4oYENhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogcGFnZSAke3R9IGhhcyBhIHdyb25nIGlkLmApO3JldHVybiExfX1sZXQgbz0hMDtmb3IoY29uc3RbdCxyXW9mIGkpe2NvbnN0e3BhZ2VEaWN0Oml9PWF3YWl0IGUuZ2V0UGFnZSh0KTtTdHJ1Y3RUcmVlUm9vdC4jSih7ZWxlbWVudHM6cix4cmVmOnRoaXMuZGljdC54cmVmLHBhZ2VEaWN0OmksbnVtYmVyVHJlZTpufSk7Zm9yKGNvbnN0IGUgb2YgcilpZihlLmFjY2Vzc2liaWxpdHlEYXRhPy50eXBlKXtlLnBhcmVudFRyZWVJZD1hKys7bz0hMX19aWYobyl7Zm9yKGNvbnN0IGUgb2YgaS52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBlKXtkZWxldGUgdC5wYXJlbnRUcmVlSWQ7ZGVsZXRlIHQuc3RydWN0VHJlZVBhcmVudH1yZXR1cm4hMX1yZXR1cm4hMH1hc3luYyB1cGRhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHBkZk1hbmFnZXI6dCxuZXdSZWZzOml9KXtjb25zdCBhPXRoaXMuZGljdC54cmVmLHI9dGhpcy5kaWN0LmNsb25lKCkscz10aGlzLnJlZixuPW5ldyBSZWZTZXRDYWNoZTtuLnB1dChzLHIpO2xldCBvLGc9ci5nZXRSYXcoIlBhcmVudFRyZWUiKTtpZihnIGluc3RhbmNlb2YgUmVmKW89YS5mZXRjaChnKTtlbHNle289ZztnPWEuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7ci5zZXQoIlBhcmVudFRyZWUiLGcpfW89by5jbG9uZSgpO24ucHV0KGcsbyk7bGV0IGM9by5nZXRSYXcoIk51bXMiKSxoPW51bGw7aWYoYyBpbnN0YW5jZW9mIFJlZil7aD1jO2M9YS5mZXRjaChoKX1jPWMuc2xpY2UoKTtofHxvLnNldCgiTnVtcyIsYyk7Y29uc3QgbD1hd2FpdCBTdHJ1Y3RUcmVlUm9vdC4jTCh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjpzLGtpZHM6bnVsbCxudW1zOmMseHJlZjphLHBkZk1hbmFnZXI6dCxjYWNoZTpufSk7ci5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixsKTtoJiZuLnB1dChoLGMpO2NvbnN0IEM9W107Zm9yKGNvbnN0W2UsdF1vZiBuLml0ZW1zKCkpe0MubGVuZ3RoPTA7YXdhaXQgd3JpdGVPYmplY3QoZSx0LEMsYSk7aS5wdXNoKHtyZWY6ZSxkYXRhOkMuam9pbigiIil9KX19c3RhdGljIGFzeW5jI0woe25ld0Fubm90YXRpb25zQnlQYWdlOmUsc3RydWN0VHJlZVJvb3RSZWY6dCxraWRzOmksbnVtczphLHhyZWY6cixwZGZNYW5hZ2VyOnMsY2FjaGU6bn0pe2NvbnN0IG89TmFtZS5nZXQoIk9CSlIiKTtsZXQgZz0tMS8wO2Zvcihjb25zdFtjLGhdb2YgZSl7Y29uc3R7cmVmOmV9PWF3YWl0IHMuZ2V0UGFnZShjKSxsPWUgaW5zdGFuY2VvZiBSZWY7Zm9yKGNvbnN0e2FjY2Vzc2liaWxpdHlEYXRhOnMscmVmOmMscGFyZW50VHJlZUlkOkMsc3RydWN0VHJlZVBhcmVudDpRfW9mIGgpe2lmKCFzPy50eXBlKWNvbnRpbnVlO2NvbnN0e3R5cGU6aCx0aXRsZTpFLGxhbmc6dSxhbHQ6ZCxleHBhbmRlZDpmLGFjdHVhbFRleHQ6cH09cztnPU1hdGgubWF4KGcsQyk7Y29uc3QgbT1yLmdldE5ld1RlbXBvcmFyeVJlZigpLHk9bmV3IERpY3Qocik7eS5zZXQoIlMiLE5hbWUuZ2V0KGgpKTtFJiZ5LnNldCgiVCIsRSk7dSYmeS5zZXQoIkxhbmciLHUpO2QmJnkuc2V0KCJBbHQiLGQpO2YmJnkuc2V0KCJFIixmKTtwJiZ5LnNldCgiQWN0dWFsVGV4dCIscCk7YXdhaXQgdGhpcy4jSCh7c3RydWN0VHJlZVBhcmVudDpRLHRhZ0RpY3Q6eSxuZXdUYWdSZWY6bSxzdHJ1Y3RUcmVlUm9vdFJlZjp0LGZhbGxiYWNrS2lkczppLHhyZWY6cixjYWNoZTpufSk7Y29uc3Qgdz1uZXcgRGljdChyKTt5LnNldCgiSyIsdyk7dy5zZXQoIlR5cGUiLG8pO2wmJncuc2V0KCJQZyIsZSk7dy5zZXQoIk9iaiIsYyk7bi5wdXQobSx5KTthLnB1c2goQyxtKX19cmV0dXJuIGcrMX1zdGF0aWMjSih7ZWxlbWVudHM6ZSx4cmVmOnQscGFnZURpY3Q6aSxudW1iZXJUcmVlOmF9KXtjb25zdCByPW5ldyBNYXA7Zm9yKGNvbnN0IHQgb2YgZSlpZih0LnN0cnVjdFRyZWVQYXJlbnRJZCl7Y29uc3QgZT1wYXJzZUludCh0LnN0cnVjdFRyZWVQYXJlbnRJZC5zcGxpdCgiX21jIilbMV0sMTApO2xldCBpPXIuZ2V0KGUpO2lmKCFpKXtpPVtdO3Iuc2V0KGUsaSl9aS5wdXNoKHQpfWNvbnN0IHM9aS5nZXQoIlN0cnVjdFBhcmVudHMiKTtpZighTnVtYmVyLmlzSW50ZWdlcihzKSlyZXR1cm47Y29uc3Qgbj1hLmdldChzKSx1cGRhdGVFbGVtZW50PShlLGksYSk9Pntjb25zdCBzPXIuZ2V0KGUpO2lmKHMpe2NvbnN0IGU9aS5nZXRSYXcoIlAiKSxyPXQuZmV0Y2hJZlJlZihlKTtpZihlIGluc3RhbmNlb2YgUmVmJiZyIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT17cmVmOmEsZGljdDppfTtmb3IoY29uc3QgdCBvZiBzKXQuc3RydWN0VHJlZVBhcmVudD1lfXJldHVybiEwfXJldHVybiExfTtmb3IoY29uc3QgZSBvZiBuKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKWNvbnRpbnVlO2NvbnN0IGk9dC5mZXRjaChlKSxhPWkuZ2V0KCJLIik7aWYoTnVtYmVyLmlzSW50ZWdlcihhKSl1cGRhdGVFbGVtZW50KGEsaSxlKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGxldCByIG9mIGEpe3I9dC5mZXRjaElmUmVmKHIpO2lmKE51bWJlci5pc0ludGVnZXIocikmJnVwZGF0ZUVsZW1lbnQocixpLGUpKWJyZWFrO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFpc05hbWUoci5nZXQoIlR5cGUiKSwiTUNSIikpYnJlYWs7Y29uc3QgYT1yLmdldCgiTUNJRCIpO2lmKE51bWJlci5pc0ludGVnZXIoYSkmJnVwZGF0ZUVsZW1lbnQoYSxpLGUpKWJyZWFrfX19c3RhdGljIGFzeW5jI0goe3N0cnVjdFRyZWVQYXJlbnQ6ZSx0YWdEaWN0OnQsbmV3VGFnUmVmOmksc3RydWN0VHJlZVJvb3RSZWY6YSxmYWxsYmFja0tpZHM6cix4cmVmOnMsY2FjaGU6bn0pe2xldCBvLGc9bnVsbDtpZihlKXsoe3JlZjpnfT1lKTtvPWUuZGljdC5nZXRSYXcoIlAiKXx8YX1lbHNlIG89YTt0LnNldCgiUCIsbyk7Y29uc3QgYz1zLmZldGNoSWZSZWYobyk7aWYoIWMpe3IucHVzaChpKTtyZXR1cm59bGV0IGg9bi5nZXQobyk7aWYoIWgpe2g9Yy5jbG9uZSgpO24ucHV0KG8saCl9Y29uc3QgbD1oLmdldFJhdygiSyIpO2xldCBDPWwgaW5zdGFuY2VvZiBSZWY/bi5nZXQobCk6bnVsbDtpZighQyl7Qz1zLmZldGNoSWZSZWYobCk7Qz1BcnJheS5pc0FycmF5KEMpP0Muc2xpY2UoKTpbbF07Y29uc3QgZT1zLmdldE5ld1RlbXBvcmFyeVJlZigpO2guc2V0KCJLIixlKTtuLnB1dChlLEMpfWNvbnN0IFE9Qy5pbmRleE9mKGcpO0Muc3BsaWNlKFE+PTA/USsxOkMubGVuZ3RoLDAsaSl9fWNsYXNzIFN0cnVjdEVsZW1lbnROb2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy50cmVlPWU7dGhpcy5kaWN0PXQ7dGhpcy5raWRzPVtdO3RoaXMucGFyc2VLaWRzKCl9Z2V0IHJvbGUoKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIlMiKSx0PWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZToiIix7cm9vdDppfT10aGlzLnRyZWU7cmV0dXJuIGkucm9sZU1hcC5oYXModCk/aS5yb2xlTWFwLmdldCh0KTp0fXBhcnNlS2lkcygpe2xldCBlPW51bGw7Y29uc3QgdD10aGlzLmRpY3QuZ2V0UmF3KCJQZyIpO3QgaW5zdGFuY2VvZiBSZWYmJihlPXQudG9TdHJpbmcoKSk7Y29uc3QgaT10aGlzLmRpY3QuZ2V0KCJLIik7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IoY29uc3QgdCBvZiBpKXtjb25zdCBpPXRoaXMucGFyc2VLaWQoZSx0KTtpJiZ0aGlzLmtpZHMucHVzaChpKX1lbHNle2NvbnN0IHQ9dGhpcy5wYXJzZUtpZChlLGkpO3QmJnRoaXMua2lkcy5wdXNoKHQpfX1wYXJzZUtpZChlLHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpLcixtY2lkOnQscGFnZU9iaklkOmV9KTtsZXQgaT1udWxsO3QgaW5zdGFuY2VvZiBSZWY/aT10aGlzLmRpY3QueHJlZi5mZXRjaCh0KTp0IGluc3RhbmNlb2YgRGljdCYmKGk9dCk7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1pLmdldFJhdygiUGciKTthIGluc3RhbmNlb2YgUmVmJiYoZT1hLnRvU3RyaW5nKCkpO2NvbnN0IHI9aS5nZXQoIlR5cGUiKWluc3RhbmNlb2YgTmFtZT9pLmdldCgiVHlwZSIpLm5hbWU6bnVsbDtpZigiTUNSIj09PXIpe2lmKHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWUpcmV0dXJuIG51bGw7Y29uc3QgdD1pLmdldFJhdygiU3RtIik7cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOlRyLHJlZk9iaklkOnQgaW5zdGFuY2VvZiBSZWY/dC50b1N0cmluZygpOm51bGwscGFnZU9iaklkOmUsbWNpZDppLmdldCgiTUNJRCIpfSl9aWYoIk9CSlIiPT09cil7aWYodGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZSlyZXR1cm4gbnVsbDtjb25zdCB0PWkuZ2V0UmF3KCJPYmoiKTtyZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6cXIscmVmT2JqSWQ6dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZX0pfXJldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpQcixkaWN0Oml9KX19Y2xhc3MgU3RydWN0RWxlbWVudHtjb25zdHJ1Y3Rvcih7dHlwZTplLGRpY3Q6dD1udWxsLG1jaWQ6aT1udWxsLHBhZ2VPYmpJZDphPW51bGwscmVmT2JqSWQ6cj1udWxsfSl7dGhpcy50eXBlPWU7dGhpcy5kaWN0PXQ7dGhpcy5tY2lkPWk7dGhpcy5wYWdlT2JqSWQ9YTt0aGlzLnJlZk9iaklkPXI7dGhpcy5wYXJlbnROb2RlPW51bGx9fWNsYXNzIFN0cnVjdFRyZWVQYWdle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5yb290PWU7dGhpcy5yb290RGljdD1lP2UuZGljdDpudWxsO3RoaXMucGFnZURpY3Q9dDt0aGlzLm5vZGVzPVtdfXBhcnNlKGUpe2lmKCF0aGlzLnJvb3R8fCF0aGlzLnJvb3REaWN0KXJldHVybjtjb25zdCB0PXRoaXMucm9vdERpY3QuZ2V0KCJQYXJlbnRUcmVlIik7aWYoIXQpcmV0dXJuO2NvbnN0IGk9dGhpcy5wYWdlRGljdC5nZXQoIlN0cnVjdFBhcmVudHMiKSxhPWUgaW5zdGFuY2VvZiBSZWYmJnRoaXMucm9vdC5zdHJ1Y3RQYXJlbnRJZHM/LmdldChlKTtpZighTnVtYmVyLmlzSW50ZWdlcihpKSYmIWEpcmV0dXJuO2NvbnN0IHI9bmV3IE1hcCxzPW5ldyBOdW1iZXJUcmVlKHQsdGhpcy5yb290RGljdC54cmVmKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGkpKXtjb25zdCBlPXMuZ2V0KGkpO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHQgb2YgZSl0IGluc3RhbmNlb2YgUmVmJiZ0aGlzLmFkZE5vZGUodGhpcy5yb290RGljdC54cmVmLmZldGNoKHQpLHIpfWlmKGEpZm9yKGNvbnN0W2UsdF1vZiBhKXtjb25zdCBpPXMuZ2V0KGUpO2lmKGkpe2NvbnN0IGU9dGhpcy5hZGROb2RlKHRoaXMucm9vdERpY3QueHJlZi5mZXRjaElmUmVmKGkpLHIpOzE9PT1lPy5raWRzPy5sZW5ndGgmJmUua2lkc1swXS50eXBlPT09cXImJihlLmtpZHNbMF0udHlwZT10KX19fWFkZE5vZGUoZSx0LGk9MCl7aWYoaT40MCl7d2FybigiU3RydWN0VHJlZSBNQVhfREVQVEggcmVhY2hlZC4iKTtyZXR1cm4gbnVsbH1pZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7Y29uc3QgYT1uZXcgU3RydWN0RWxlbWVudE5vZGUodGhpcyxlKTt0LnNldChlLGEpO2NvbnN0IHI9ZS5nZXQoIlAiKTtpZighcnx8aXNOYW1lKHIuZ2V0KCJUeXBlIiksIlN0cnVjdFRyZWVSb290Iikpe3RoaXMuYWRkVG9wTGV2ZWxOb2RlKGUsYSl8fHQuZGVsZXRlKGUpO3JldHVybiBhfWNvbnN0IHM9dGhpcy5hZGROb2RlKHIsdCxpKzEpO2lmKCFzKXJldHVybiBhO2xldCBuPSExO2Zvcihjb25zdCB0IG9mIHMua2lkcylpZih0LnR5cGU9PT1QciYmdC5kaWN0PT09ZSl7dC5wYXJlbnROb2RlPWE7bj0hMH1ufHx0LmRlbGV0ZShlKTtyZXR1cm4gYX1hZGRUb3BMZXZlbE5vZGUoZSx0KXtjb25zdCBpPXRoaXMucm9vdERpY3QuZ2V0KCJLIik7aWYoIWkpcmV0dXJuITE7aWYoaSBpbnN0YW5jZW9mIERpY3Qpe2lmKGkub2JqSWQhPT1lLm9iaklkKXJldHVybiExO3RoaXMubm9kZXNbMF09dDtyZXR1cm4hMH1pZighQXJyYXkuaXNBcnJheShpKSlyZXR1cm4hMDtsZXQgYT0hMTtmb3IobGV0IHI9MDtyPGkubGVuZ3RoO3IrKyl7Y29uc3Qgcz1pW3JdO2lmKHM/LnRvU3RyaW5nKCk9PT1lLm9iaklkKXt0aGlzLm5vZGVzW3JdPXQ7YT0hMH19cmV0dXJuIGF9Z2V0IHNlcmlhbGl6YWJsZSgpe2Z1bmN0aW9uIG5vZGVUb1NlcmlhbGl6YWJsZShlLHQsaT0wKXtpZihpPjQwKXt3YXJuKCJTdHJ1Y3RUcmVlIHRvbyBkZWVwIHRvIGJlIGZ1bGx5IHNlcmlhbGl6ZWQuIik7cmV0dXJufWNvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTthLnJvbGU9ZS5yb2xlO2EuY2hpbGRyZW49W107dC5jaGlsZHJlbi5wdXNoKGEpO2NvbnN0IHI9ZS5kaWN0LmdldCgiQWx0Iik7InN0cmluZyI9PXR5cGVvZiByJiYoYS5hbHQ9c3RyaW5nVG9QREZTdHJpbmcocikpO2NvbnN0IHM9ZS5kaWN0LmdldCgiTGFuZyIpOyJzdHJpbmciPT10eXBlb2YgcyYmKGEubGFuZz1zdHJpbmdUb1BERlN0cmluZyhzKSk7Zm9yKGNvbnN0IHQgb2YgZS5raWRzKXtjb25zdCBlPXQudHlwZT09PVByP3QucGFyZW50Tm9kZTpudWxsO2U/bm9kZVRvU2VyaWFsaXphYmxlKGUsYSxpKzEpOnQudHlwZT09PUtyfHx0LnR5cGU9PT1Ucj9hLmNoaWxkcmVuLnB1c2goe3R5cGU6ImNvbnRlbnQiLGlkOmBwJHt0LnBhZ2VPYmpJZH1fbWMke3QubWNpZH1gfSk6dC50eXBlPT09cXI/YS5jaGlsZHJlbi5wdXNoKHt0eXBlOiJvYmplY3QiLGlkOnQucmVmT2JqSWR9KTp0LnR5cGU9PT1PciYmYS5jaGlsZHJlbi5wdXNoKHt0eXBlOiJhbm5vdGF0aW9uIixpZDpgcGRmanNfaW50ZXJuYWxfaWRfJHt0LnJlZk9iaklkfWB9KX19Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2UuY2hpbGRyZW49W107ZS5yb2xlPSJSb290Ijtmb3IoY29uc3QgdCBvZiB0aGlzLm5vZGVzKXQmJm5vZGVUb1NlcmlhbGl6YWJsZSh0LGUpO3JldHVybiBlfX1mdW5jdGlvbiBpc1ZhbGlkRXhwbGljaXREZXN0KGUpe2lmKCFBcnJheS5pc0FycmF5KGUpfHxlLmxlbmd0aDwyKXJldHVybiExO2NvbnN0W3QsaSwuLi5hXT1lO2lmKCEodCBpbnN0YW5jZW9mIFJlZnx8TnVtYmVyLmlzSW50ZWdlcih0KSkpcmV0dXJuITE7aWYoIShpIGluc3RhbmNlb2YgTmFtZSkpcmV0dXJuITE7bGV0IHI9ITA7c3dpdGNoKGkubmFtZSl7Y2FzZSJYWVoiOmlmKDMhPT1hLmxlbmd0aClyZXR1cm4hMTticmVhaztjYXNlIkZpdCI6Y2FzZSJGaXRCIjpyZXR1cm4gMD09PWEubGVuZ3RoO2Nhc2UiRml0SCI6Y2FzZSJGaXRCSCI6Y2FzZSJGaXRWIjpjYXNlIkZpdEJWIjppZigxIT09YS5sZW5ndGgpcmV0dXJuITE7YnJlYWs7Y2FzZSJGaXRSIjppZig0IT09YS5sZW5ndGgpcmV0dXJuITE7cj0hMTticmVhaztkZWZhdWx0OnJldHVybiExfWZvcihjb25zdCBlIG9mIGEpaWYoISgibnVtYmVyIj09dHlwZW9mIGV8fHImJm51bGw9PT1lKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBmZXRjaERlc3QoZSl7ZSBpbnN0YW5jZW9mIERpY3QmJihlPWUuZ2V0KCJEIikpO3JldHVybiBpc1ZhbGlkRXhwbGljaXREZXN0KGUpP2U6bnVsbH1mdW5jdGlvbiBmZXRjaFJlbW90ZURlc3QoZSl7bGV0IHQ9ZS5nZXQoIkQiKTtpZih0KXt0IGluc3RhbmNlb2YgTmFtZSYmKHQ9dC5uYW1lKTtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHN0cmluZ1RvUERGU3RyaW5nKHQpO2lmKGlzVmFsaWRFeHBsaWNpdERlc3QodCkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfXJldHVybiBudWxsfWNsYXNzIENhdGFsb2d7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnhyZWY9dDt0aGlzLl9jYXREaWN0PXQuZ2V0Q2F0YWxvZ09iaigpO2lmKCEodGhpcy5fY2F0RGljdCBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ2F0YWxvZyBvYmplY3QgaXMgbm90IGEgZGljdGlvbmFyeS4iKTt0aGlzLnRvcGxldmVsUGFnZXNEaWN0O3RoaXMuX2FjdHVhbE51bVBhZ2VzPW51bGw7dGhpcy5mb250Q2FjaGU9bmV3IFJlZlNldENhY2hlO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1uZXcgTWFwO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPW5ldyBNYXA7dGhpcy5nbG9iYWxJbWFnZUNhY2hlPW5ldyBHbG9iYWxJbWFnZUNhY2hlO3RoaXMucGFnZUtpZHNDb3VudENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLnBhZ2VJbmRleENhY2hlPW5ldyBSZWZTZXRDYWNoZTt0aGlzLm5vbkJsZW5kTW9kZXNTZXQ9bmV3IFJlZlNldDt0aGlzLnN5c3RlbUZvbnRDYWNoZT1uZXcgTWFwfWNsb25lRGljdCgpe3JldHVybiB0aGlzLl9jYXREaWN0LmNsb25lKCl9Z2V0IHZlcnNpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJWZXJzaW9uIik7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2lmKER0LnRlc3QoZS5uYW1lKSlyZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLGUubmFtZSk7d2FybihgSW52YWxpZCBQREYgY2F0YWxvZyB2ZXJzaW9uOiAke2UubmFtZX1gKX1yZXR1cm4gc2hhZG93KHRoaXMsInZlcnNpb24iLG51bGwpfWdldCBsYW5nKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTGFuZyIpO3JldHVybiBzaGFkb3codGhpcywibGFuZyIsZSYmInN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGwpfWdldCBuZWVkc1JlbmRlcmluZygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5lZWRzUmVuZGVyaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJuZWVkc1JlbmRlcmluZyIsImJvb2xlYW4iPT10eXBlb2YgZSYmZSl9Z2V0IGNvbGxlY3Rpb24oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuX2NhdERpY3QuZ2V0KCJDb2xsZWN0aW9uIik7dCBpbnN0YW5jZW9mIERpY3QmJnQuc2l6ZT4wJiYoZT10KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKCJDYW5ub3QgZmV0Y2ggQ29sbGVjdGlvbiBlbnRyeTsgYXNzdW1pbmcgbm8gY29sbGVjdGlvbiBpcyBwcmVzZW50LiIpfXJldHVybiBzaGFkb3codGhpcywiY29sbGVjdGlvbiIsZSl9Z2V0IGFjcm9Gb3JtKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiQWNyb0Zvcm0iKTt0IGluc3RhbmNlb2YgRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIkNhbm5vdCBmZXRjaCBBY3JvRm9ybSBlbnRyeTsgYXNzdW1pbmcgbm8gZm9ybXMgYXJlIHByZXNlbnQuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybSIsZSl9Z2V0IGFjcm9Gb3JtUmVmKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiQWNyb0Zvcm0iKTtyZXR1cm4gc2hhZG93KHRoaXMsImFjcm9Gb3JtUmVmIixlIGluc3RhbmNlb2YgUmVmP2U6bnVsbCl9Z2V0IG1ldGFkYXRhKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldFJhdygiTWV0YWRhdGEiKTtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBzaGFkb3codGhpcywibWV0YWRhdGEiLG51bGwpO2xldCB0PW51bGw7dHJ5e2NvbnN0IGk9dGhpcy54cmVmLmZldGNoKGUsIXRoaXMueHJlZi5lbmNyeXB0Py5lbmNyeXB0TWV0YWRhdGEpO2lmKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiZpLmRpY3QgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWkuZGljdC5nZXQoIlR5cGUiKSxhPWkuZGljdC5nZXQoIlN1YnR5cGUiKTtpZihpc05hbWUoZSwiTWV0YWRhdGEiKSYmaXNOYW1lKGEsIlhNTCIpKXtjb25zdCBlPXN0cmluZ1RvVVRGOFN0cmluZyhpLmdldFN0cmluZygpKTtlJiYodD1uZXcgTWV0YWRhdGFQYXJzZXIoZSkuc2VyaWFsaXphYmxlKX19fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oYFNraXBwaW5nIGludmFsaWQgTWV0YWRhdGE6ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1ldGFkYXRhIix0KX1nZXQgbWFya0luZm8oKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuX3JlYWRNYXJrSW5mbygpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIG1hcmsgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsIm1hcmtJbmZvIixlKX1fcmVhZE1hcmtJbmZvKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTWFya0luZm8iKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCB0PXtNYXJrZWQ6ITEsVXNlclByb3BlcnRpZXM6ITEsU3VzcGVjdHM6ITF9O2Zvcihjb25zdCBpIGluIHQpe2NvbnN0IGE9ZS5nZXQoaSk7ImJvb2xlYW4iPT10eXBlb2YgYSYmKHRbaV09YSl9cmV0dXJuIHR9Z2V0IHN0cnVjdFRyZWVSb290KCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkU3RydWN0VHJlZVJvb3QoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgcmVhZCB0byBzdHJ1Y3RUcmVlUm9vdCBpbmZvLiIpfXJldHVybiBzaGFkb3codGhpcywic3RydWN0VHJlZVJvb3QiLGUpfV9yZWFkU3RydWN0VHJlZVJvb3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0UmF3KCJTdHJ1Y3RUcmVlUm9vdCIpLHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgaT1uZXcgU3RydWN0VHJlZVJvb3QodCxlKTtpLmluaXQoKTtyZXR1cm4gaX1nZXQgdG9wbGV2ZWxQYWdlc0RpY3QoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4gc2hhZG93KHRoaXMsInRvcGxldmVsUGFnZXNEaWN0IixlKX1nZXQgZG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkRG9jdW1lbnRPdXRsaW5lKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHRvIHJlYWQgZG9jdW1lbnQgb3V0bGluZS4iKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50T3V0bGluZSIsZSl9X3JlYWREb2N1bWVudE91dGxpbmUoKXtsZXQgZT10aGlzLl9jYXREaWN0LmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtlPWUuZ2V0UmF3KCJGaXJzdCIpO2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD17aXRlbXM6W119LGk9W3tvYmo6ZSxwYXJlbnQ6dH1dLGE9bmV3IFJlZlNldDthLnB1dChlKTtjb25zdCByPXRoaXMueHJlZixzPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2kubGVuZ3RoPjA7KXtjb25zdCB0PWkuc2hpZnQoKSxuPXIuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PW4pY29udGludWU7bi5oYXMoIlRpdGxlIil8fHdhcm4oIkludmFsaWQgb3V0bGluZSBpdGVtIGVuY291bnRlcmVkLiIpO2NvbnN0IG89e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDpuLHJlc3VsdE9iajpvLGRvY0Jhc2VVcmw6dGhpcy5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCBnPW4uZ2V0KCJUaXRsZSIpLGM9bi5nZXQoIkYiKXx8MCxoPW4uZ2V0QXJyYXkoIkMiKSxsPW4uZ2V0KCJDb3VudCIpO2xldCBDPXM7IWlzTnVtYmVyQXJyYXkoaCwzKXx8MD09PWhbMF0mJjA9PT1oWzFdJiYwPT09aFsyXXx8KEM9Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2IoaCwwKSk7Y29uc3QgUT17YWN0aW9uOm8uYWN0aW9uLGF0dGFjaG1lbnQ6by5hdHRhY2htZW50LGRlc3Q6by5kZXN0LHVybDpvLnVybCx1bnNhZmVVcmw6by51bnNhZmVVcmwsbmV3V2luZG93Om8ubmV3V2luZG93LHNldE9DR1N0YXRlOm8uc2V0T0NHU3RhdGUsdGl0bGU6InN0cmluZyI9PXR5cGVvZiBnP3N0cmluZ1RvUERGU3RyaW5nKGcpOiIiLGNvbG9yOkMsY291bnQ6TnVtYmVyLmlzSW50ZWdlcihsKT9sOnZvaWQgMCxib2xkOiEhKDImYyksaXRhbGljOiEhKDEmYyksaXRlbXM6W119O3QucGFyZW50Lml0ZW1zLnB1c2goUSk7ZT1uLmdldFJhdygiRmlyc3QiKTtpZihlIGluc3RhbmNlb2YgUmVmJiYhYS5oYXMoZSkpe2kucHVzaCh7b2JqOmUscGFyZW50OlF9KTthLnB1dChlKX1lPW4uZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIFJlZiYmIWEuaGFzKGUpKXtpLnB1c2goe29iajplLHBhcmVudDp0LnBhcmVudH0pO2EucHV0KGUpfX1yZXR1cm4gdC5pdGVtcy5sZW5ndGg+MD90Lml0ZW1zOm51bGx9Z2V0IHBlcm1pc3Npb25zKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLl9yZWFkUGVybWlzc2lvbnMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwZXJtaXNzaW9ucy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBlcm1pc3Npb25zIixlKX1fcmVhZFBlcm1pc3Npb25zKCl7Y29uc3QgZT10aGlzLnhyZWYudHJhaWxlci5nZXQoIkVuY3J5cHQiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtsZXQgdD1lLmdldCgiUCIpO2lmKCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0Kz0yKiozMjtjb25zdCBpPVtdO2Zvcihjb25zdCBlIGluIHApe2NvbnN0IGE9cFtlXTt0JmEmJmkucHVzaChhKX1yZXR1cm4gaX1nZXQgb3B0aW9uYWxDb250ZW50Q29uZmlnKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLl9jYXREaWN0LmdldCgiT0NQcm9wZXJ0aWVzIik7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IGk9dC5nZXQoIkQiKTtpZighaSlyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3QgYT10LmdldCgiT0NHcyIpO2lmKCFBcnJheS5pc0FycmF5KGEpKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCByPVtdLHM9bmV3IFJlZlNldDtmb3IoY29uc3QgZSBvZiBhKWlmKGUgaW5zdGFuY2VvZiBSZWYmJiFzLmhhcyhlKSl7cy5wdXQoZSk7ci5wdXNoKHRoaXMuI3YoZSkpfWU9dGhpcy4jWShpLHMpO2UuZ3JvdXBzPXJ9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgVW5hYmxlIHRvIHJlYWQgb3B0aW9uYWwgY29udGVudCBjb25maWc6ICR7ZX1gKX1yZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsZSl9I3YoZSl7Y29uc3QgdD10aGlzLnhyZWYuZmV0Y2goZSksaT17aWQ6ZS50b1N0cmluZygpLG5hbWU6bnVsbCxpbnRlbnQ6bnVsbCx1c2FnZTp7cHJpbnQ6bnVsbCx2aWV3Om51bGx9fSxhPXQuZ2V0KCJOYW1lIik7InN0cmluZyI9PXR5cGVvZiBhJiYoaS5uYW1lPXN0cmluZ1RvUERGU3RyaW5nKGEpKTtsZXQgcj10LmdldEFycmF5KCJJbnRlbnQiKTtBcnJheS5pc0FycmF5KHIpfHwocj1bcl0pO3IuZXZlcnkoKGU9PmUgaW5zdGFuY2VvZiBOYW1lKSkmJihpLmludGVudD1yLm1hcCgoZT0+ZS5uYW1lKSkpO2NvbnN0IHM9dC5nZXQoIlVzYWdlIik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIGk7Y29uc3Qgbj1pLnVzYWdlLG89cy5nZXQoIlByaW50Iik7aWYobyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9by5nZXQoIlByaW50U3RhdGUiKTtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6bi5wcmludD17cHJpbnRTdGF0ZTplLm5hbWV9fX1jb25zdCBnPXMuZ2V0KCJWaWV3Iik7aWYoZyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9Zy5nZXQoIlZpZXdTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpuLnZpZXc9e3ZpZXdTdGF0ZTplLm5hbWV9fX1yZXR1cm4gaX0jWShlLHQpe2Z1bmN0aW9uIHBhcnNlT25PZmYoZSl7Y29uc3QgaT1bXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCBhIG9mIGUpYSBpbnN0YW5jZW9mIFJlZiYmdC5oYXMoYSkmJmkucHVzaChhLnRvU3RyaW5nKCkpO3JldHVybiBpfWZ1bmN0aW9uIHBhcnNlT3JkZXIoZSxpPTApe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiBudWxsO2NvbnN0IHI9W107Zm9yKGNvbnN0IHMgb2YgZSl7aWYocyBpbnN0YW5jZW9mIFJlZiYmdC5oYXMocykpe2EucHV0KHMpO3IucHVzaChzLnRvU3RyaW5nKCkpO2NvbnRpbnVlfWNvbnN0IGU9cGFyc2VOZXN0ZWRPcmRlcihzLGkpO2UmJnIucHVzaChlKX1pZihpPjApcmV0dXJuIHI7Y29uc3Qgcz1bXTtmb3IoY29uc3QgZSBvZiB0KWEuaGFzKGUpfHxzLnB1c2goZS50b1N0cmluZygpKTtzLmxlbmd0aCYmci5wdXNoKHtuYW1lOm51bGwsb3JkZXI6c30pO3JldHVybiByfWZ1bmN0aW9uIHBhcnNlTmVzdGVkT3JkZXIoZSx0KXtpZigrK3Q+cil7d2FybigicGFyc2VOZXN0ZWRPcmRlciAtIHJlYWNoZWQgTUFYX05FU1RFRF9MRVZFTFMuIik7cmV0dXJuIG51bGx9Y29uc3QgYT1pLmZldGNoSWZSZWYoZSk7aWYoIUFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIG51bGw7Y29uc3Qgcz1pLmZldGNoSWZSZWYoYVswXSk7aWYoInN0cmluZyIhPXR5cGVvZiBzKXJldHVybiBudWxsO2NvbnN0IG49cGFyc2VPcmRlcihhLnNsaWNlKDEpLHQpO3JldHVybiBuJiZuLmxlbmd0aD97bmFtZTpzdHJpbmdUb1BERlN0cmluZyhzKSxvcmRlcjpufTpudWxsfWNvbnN0IGk9dGhpcy54cmVmLGE9bmV3IFJlZlNldCxyPTEwO3JldHVybntuYW1lOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIk5hbWUiKT9zdHJpbmdUb1BERlN0cmluZyhlLmdldCgiTmFtZSIpKTpudWxsLGNyZWF0b3I6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiQ3JlYXRvciIpP3N0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJDcmVhdG9yIikpOm51bGwsYmFzZVN0YXRlOmUuZ2V0KCJCYXNlU3RhdGUiKWluc3RhbmNlb2YgTmFtZT9lLmdldCgiQmFzZVN0YXRlIikubmFtZTpudWxsLG9uOnBhcnNlT25PZmYoZS5nZXQoIk9OIikpLG9mZjpwYXJzZU9uT2ZmKGUuZ2V0KCJPRkYiKSksb3JkZXI6cGFyc2VPcmRlcihlLmdldCgiT3JkZXIiKSksZ3JvdXBzOm51bGx9fXNldEFjdHVhbE51bVBhZ2VzKGU9bnVsbCl7dGhpcy5fYWN0dWFsTnVtUGFnZXM9ZX1nZXQgaGFzQWN0dWFsTnVtUGFnZXMoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FjdHVhbE51bVBhZ2VzfWdldCBfcGFnZXNDb3VudCgpe2NvbnN0IGU9dGhpcy50b3BsZXZlbFBhZ2VzRGljdC5nZXQoIkNvdW50Iik7aWYoIU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGluIHRvcC1sZXZlbCBwYWdlcyBkaWN0aW9uYXJ5IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO3JldHVybiBzaGFkb3codGhpcywiX3BhZ2VzQ291bnQiLGUpfWdldCBudW1QYWdlcygpe3JldHVybiB0aGlzLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuX2FjdHVhbE51bVBhZ2VzOnRoaXMuX3BhZ2VzQ291bnR9Z2V0IGRlc3RpbmF0aW9ucygpe2NvbnN0IGU9dGhpcy5fcmVhZERlc3RzKCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBOYW1lVHJlZSlmb3IoY29uc3RbaSxhXW9mIGUuZ2V0QWxsKCkpe2NvbnN0IGU9ZmV0Y2hEZXN0KGEpO2UmJih0W3N0cmluZ1RvUERGU3RyaW5nKGkpXT1lKX1lbHNlIGUgaW5zdGFuY2VvZiBEaWN0JiZlLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7Y29uc3QgYT1mZXRjaERlc3QoaSk7YSYmKHRbZV09YSl9KSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJkZXN0aW5hdGlvbnMiLHQpfWdldERlc3RpbmF0aW9uKGUpe2NvbnN0IHQ9dGhpcy5fcmVhZERlc3RzKCk7aWYodCBpbnN0YW5jZW9mIE5hbWVUcmVlKXtjb25zdCBpPWZldGNoRGVzdCh0LmdldChlKSk7aWYoaSlyZXR1cm4gaTtjb25zdCBhPXRoaXMuZGVzdGluYXRpb25zW2VdO2lmKGEpe3dhcm4oYEZvdW5kICIke2V9IiBhdCBhbiBpbmNvcnJlY3QgcG9zaXRpb24gaW4gdGhlIE5hbWVUcmVlLmApO3JldHVybiBhfX1lbHNlIGlmKHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPWZldGNoRGVzdCh0LmdldChlKSk7aWYoaSlyZXR1cm4gaX1yZXR1cm4gbnVsbH1fcmVhZERlc3RzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtyZXR1cm4gZT8uaGFzKCJEZXN0cyIpP25ldyBOYW1lVHJlZShlLmdldFJhdygiRGVzdHMiKSx0aGlzLnhyZWYpOnRoaXMuX2NhdERpY3QuaGFzKCJEZXN0cyIpP3RoaXMuX2NhdERpY3QuZ2V0KCJEZXN0cyIpOnZvaWQgMH1nZXQgcGFnZUxhYmVscygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy5fcmVhZFBhZ2VMYWJlbHMoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwYWdlIGxhYmVscy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VMYWJlbHMiLGUpfV9yZWFkUGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VMYWJlbHMiKTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PW5ldyBBcnJheSh0aGlzLm51bVBhZ2VzKTtsZXQgaT1udWxsLGE9IiI7Y29uc3Qgcj1uZXcgTnVtYmVyVHJlZShlLHRoaXMueHJlZikuZ2V0QWxsKCk7bGV0IHM9IiIsbj0xO2ZvcihsZXQgZT0wLG89dGhpcy5udW1QYWdlcztlPG87ZSsrKXtjb25zdCBvPXIuZ2V0KGUpO2lmKHZvaWQgMCE9PW8pe2lmKCEobyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZUxhYmVsIGlzIG5vdCBhIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlR5cGUiKSYmIWlzTmFtZShvLmdldCgiVHlwZSIpLCJQYWdlTGFiZWwiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgdHlwZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtpZihvLmhhcygiUyIpKXtjb25zdCBlPW8uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHN0eWxlIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LiIpO2k9ZS5uYW1lfWVsc2UgaT1udWxsO2lmKG8uaGFzKCJQIikpe2NvbnN0IGU9by5nZXQoIlAiKTtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHByZWZpeCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTthPXN0cmluZ1RvUERGU3RyaW5nKGUpfWVsc2UgYT0iIjtpZihvLmhhcygiU3QiKSl7Y29uc3QgZT1vLmdldCgiU3QiKTtpZighKE51bWJlci5pc0ludGVnZXIoZSkmJmU+PTEpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdGFydCBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTtuPWV9ZWxzZSBuPTF9c3dpdGNoKGkpe2Nhc2UiRCI6cz1uO2JyZWFrO2Nhc2UiUiI6Y2FzZSJyIjpzPXRvUm9tYW5OdW1lcmFscyhuLCJyIj09PWkpO2JyZWFrO2Nhc2UiQSI6Y2FzZSJhIjpjb25zdCBlPTI2LHQ9ImEiPT09aT85Nzo2NSxhPW4tMTtzPVN0cmluZy5mcm9tQ2hhckNvZGUodCthJWUpLnJlcGVhdChNYXRoLmZsb29yKGEvZSkrMSk7YnJlYWs7ZGVmYXVsdDppZihpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBzdHlsZSAiJHtpfSIgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuYCk7cz0iIn10W2VdPWErcztuKyt9cmV0dXJuIHR9Z2V0IHBhZ2VMYXlvdXQoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTGF5b3V0Iik7bGV0IHQ9IiI7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTaW5nbGVQYWdlIjpjYXNlIk9uZUNvbHVtbiI6Y2FzZSJUd29Db2x1bW5MZWZ0IjpjYXNlIlR3b0NvbHVtblJpZ2h0IjpjYXNlIlR3b1BhZ2VMZWZ0IjpjYXNlIlR3b1BhZ2VSaWdodCI6dD1lLm5hbWV9cmV0dXJuIHNoYWRvdyh0aGlzLCJwYWdlTGF5b3V0Iix0KX1nZXQgcGFnZU1vZGUoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIkZ1bGxTY3JlZW4iOmNhc2UiVXNlT0MiOmNhc2UiVXNlQXR0YWNobWVudHMiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZU1vZGUiLHQpfWdldCB2aWV3ZXJQcmVmZXJlbmNlcygpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIlZpZXdlclByZWZlcmVuY2VzIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsbnVsbCk7bGV0IHQ9bnVsbDtmb3IoY29uc3QgaSBvZiBlLmdldEtleXMoKSl7Y29uc3QgYT1lLmdldChpKTtsZXQgcjtzd2l0Y2goaSl7Y2FzZSJIaWRlVG9vbGJhciI6Y2FzZSJIaWRlTWVudWJhciI6Y2FzZSJIaWRlV2luZG93VUkiOmNhc2UiRml0V2luZG93IjpjYXNlIkNlbnRlcldpbmRvdyI6Y2FzZSJEaXNwbGF5RG9jVGl0bGUiOmNhc2UiUGlja1RyYXlCeVBERlNpemUiOiJib29sZWFuIj09dHlwZW9mIGEmJihyPWEpO2JyZWFrO2Nhc2UiTm9uRnVsbFNjcmVlblBhZ2VNb2RlIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjpyPWEubmFtZTticmVhaztkZWZhdWx0OnI9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihhIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goYS5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTWVkaWFCb3giOmNhc2UiQ3JvcEJveCI6Y2FzZSJCbGVlZEJveCI6Y2FzZSJUcmltQm94IjpjYXNlIkFydEJveCI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJDcm9wQm94In1icmVhaztjYXNlIlByaW50U2NhbGluZyI6aWYoYSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGEubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOnI9YS5uYW1lO2JyZWFrO2RlZmF1bHQ6cj0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6cj1hLm5hbWU7YnJlYWs7ZGVmYXVsdDpyPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KGEpJiZhLmxlbmd0aCUyPT0wKXthLmV2ZXJ5KCgoZSx0LGkpPT5OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjAmJigwPT09dHx8ZT49aVt0LTFdKSYmZTw9dGhpcy5udW1QYWdlcykpJiYocj1hKX1icmVhaztjYXNlIk51bUNvcGllcyI6TnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wJiYocj1hKTticmVhaztkZWZhdWx0Ondhcm4oYElnbm9yaW5nIG5vbi1zdGFuZGFyZCBrZXkgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7aX0uYCk7Y29udGludWV9aWYodm9pZCAwIT09cil7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFtpXT1yfWVsc2Ugd2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gVmlld2VyUHJlZmVyZW5jZXM6ICR7YX0uYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3ZXJQcmVmZXJlbmNlcyIsdCl9Z2V0IG9wZW5BY3Rpb24oKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJPcGVuQWN0aW9uIiksdD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPW5ldyBEaWN0KHRoaXMueHJlZik7aS5zZXQoIkEiLGUpO2NvbnN0IGE9e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDppLHJlc3VsdE9iajphfSk7QXJyYXkuaXNBcnJheShhLmRlc3QpP3QuZGVzdD1hLmRlc3Q6YS5hY3Rpb24mJih0LmFjdGlvbj1hLmFjdGlvbil9ZWxzZSBBcnJheS5pc0FycmF5KGUpJiYodC5kZXN0PWUpO3JldHVybiBzaGFkb3codGhpcywib3BlbkFjdGlvbiIsb2JqZWN0U2l6ZSh0KT4wP3Q6bnVsbCl9Z2V0IGF0dGFjaG1lbnRzKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2lmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiRW1iZWRkZWRGaWxlcyIpKXtjb25zdCBpPW5ldyBOYW1lVHJlZShlLmdldFJhdygiRW1iZWRkZWRGaWxlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBpLmdldEFsbCgpKXtjb25zdCBpPW5ldyBGaWxlU3BlYyhhLHRoaXMueHJlZik7dHx8KHQ9T2JqZWN0LmNyZWF0ZShudWxsKSk7dFtzdHJpbmdUb1BERlN0cmluZyhlKV09aS5zZXJpYWxpemFibGV9fXJldHVybiBzaGFkb3codGhpcywiYXR0YWNobWVudHMiLHQpfWdldCB4ZmFJbWFnZXMoKXtjb25zdCBlPXRoaXMuX2NhdERpY3QuZ2V0KCJOYW1lcyIpO2xldCB0PW51bGw7aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJYRkFJbWFnZXMiKSl7Y29uc3QgaT1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIlhGQUltYWdlcyIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsYV1vZiBpLmdldEFsbCgpKXt0fHwodD1uZXcgRGljdCh0aGlzLnhyZWYpKTt0LnNldChzdHJpbmdUb1BERlN0cmluZyhlKSxhKX19cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFJbWFnZXMiLHQpfV9jb2xsZWN0SmF2YVNjcmlwdCgpe2NvbnN0IGU9dGhpcy5fY2F0RGljdC5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtmdW5jdGlvbiBhcHBlbmRJZkphdmFTY3JpcHREaWN0KGUsaSl7aWYoIShpIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2lmKCFpc05hbWUoaS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXJldHVybjtsZXQgYT1pLmdldCgiSlMiKTtpZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSlhPWEuZ2V0U3RyaW5nKCk7ZWxzZSBpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuO2E9c3RyaW5nVG9QREZTdHJpbmcoYSkucmVwbGFjZUFsbCgiXDAiLCIiKTthJiYodHx8PW5ldyBNYXApLnNldChlLGEpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlLmhhcygiSmF2YVNjcmlwdCIpKXtjb25zdCB0PW5ldyBOYW1lVHJlZShlLmdldFJhdygiSmF2YVNjcmlwdCIpLHRoaXMueHJlZik7Zm9yKGNvbnN0W2UsaV1vZiB0LmdldEFsbCgpKWFwcGVuZElmSmF2YVNjcmlwdERpY3Qoc3RyaW5nVG9QREZTdHJpbmcoZSksaSl9Y29uc3QgaT10aGlzLl9jYXREaWN0LmdldCgiT3BlbkFjdGlvbiIpO2kmJmFwcGVuZElmSmF2YVNjcmlwdERpY3QoIk9wZW5BY3Rpb24iLGkpO3JldHVybiB0fWdldCBqc0FjdGlvbnMoKXtjb25zdCBlPXRoaXMuX2NvbGxlY3RKYXZhU2NyaXB0KCk7bGV0IHQ9Y29sbGVjdEFjdGlvbnModGhpcy54cmVmLHRoaXMuX2NhdERpY3QsZEEpO2lmKGUpe3R8fD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFtpLGFdb2YgZSlpIGluIHQ/dFtpXS5wdXNoKGEpOnRbaV09W2FdfXJldHVybiBzaGFkb3codGhpcywianNBY3Rpb25zIix0KX1hc3luYyBmb250RmFsbGJhY2soZSx0KXtjb25zdCBpPWF3YWl0IFByb21pc2UuYWxsKHRoaXMuZm9udENhY2hlKTtmb3IoY29uc3QgYSBvZiBpKWlmKGEubG9hZGVkTmFtZT09PWUpe2EuZmFsbGJhY2sodCk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpe2NsZWFyR2xvYmFsQ2FjaGVzKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2NvbnN0IHQ9YXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpO2Zvcihjb25zdHtkaWN0OmV9b2YgdClkZWxldGUgZS5jYWNoZUtleTt0aGlzLmZvbnRDYWNoZS5jbGVhcigpO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5jbGVhcigpO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLmNsZWFyKCk7dGhpcy5zeXN0ZW1Gb250Q2FjaGUuY2xlYXIoKX1hc3luYyBnZXRQYWdlRGljdChlKXtjb25zdCB0PVt0aGlzLnRvcGxldmVsUGFnZXNEaWN0XSxpPW5ldyBSZWZTZXQsYT10aGlzLl9jYXREaWN0LmdldFJhdygiUGFnZXMiKTthIGluc3RhbmNlb2YgUmVmJiZpLnB1dChhKTtjb25zdCByPXRoaXMueHJlZixzPXRoaXMucGFnZUtpZHNDb3VudENhY2hlLG49dGhpcy5wYWdlSW5kZXhDYWNoZTtsZXQgbz0wO2Zvcig7dC5sZW5ndGg7KXtjb25zdCBhPXQucG9wKCk7aWYoYSBpbnN0YW5jZW9mIFJlZil7Y29uc3QgZz1zLmdldChhKTtpZihnPj0wJiZvK2c8PWUpe28rPWc7Y29udGludWV9aWYoaS5oYXMoYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTtpLnB1dChhKTtjb25zdCBjPWF3YWl0IHIuZmV0Y2hBc3luYyhhKTtpZihjIGluc3RhbmNlb2YgRGljdCl7bGV0IHQ9Yy5nZXRSYXcoIlR5cGUiKTt0IGluc3RhbmNlb2YgUmVmJiYodD1hd2FpdCByLmZldGNoQXN5bmModCkpO2lmKGlzTmFtZSh0LCJQYWdlIil8fCFjLmhhcygiS2lkcyIpKXtzLmhhcyhhKXx8cy5wdXQoYSwxKTtuLmhhcyhhKXx8bi5wdXQoYSxvKTtpZihvPT09ZSlyZXR1cm5bYyxhXTtvKys7Y29udGludWV9fXQucHVzaChjKTtjb250aW51ZX1pZighKGEgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWQgcmVmZXJlbmNlIHBvaW50cyB0byB3cm9uZyB0eXBlIG9mIG9iamVjdC4iKTtjb25zdHtvYmpJZDpnfT1hO2xldCBjPWEuZ2V0UmF3KCJDb3VudCIpO2MgaW5zdGFuY2VvZiBSZWYmJihjPWF3YWl0IHIuZmV0Y2hBc3luYyhjKSk7aWYoTnVtYmVyLmlzSW50ZWdlcihjKSYmYz49MCl7ZyYmIXMuaGFzKGcpJiZzLnB1dChnLGMpO2lmKG8rYzw9ZSl7bys9Yztjb250aW51ZX19bGV0IGg9YS5nZXRSYXcoIktpZHMiKTtoIGluc3RhbmNlb2YgUmVmJiYoaD1hd2FpdCByLmZldGNoQXN5bmMoaCkpO2lmKCFBcnJheS5pc0FycmF5KGgpKXtsZXQgdD1hLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IHIuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IWEuaGFzKCJLaWRzIikpe2lmKG89PT1lKXJldHVyblthLG51bGxdO28rKztjb250aW51ZX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIil9Zm9yKGxldCBlPWgubGVuZ3RoLTE7ZT49MDtlLS0pdC5wdXNoKGhbZV0pfXRocm93IG5ldyBFcnJvcihgUGFnZSBpbmRleCAke2V9IG5vdCBmb3VuZC5gKX1hc3luYyBnZXRBbGxQYWdlRGljdHMoZT0hMSl7Y29uc3R7aWdub3JlRXJyb3JzOnR9PXRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLGk9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0sYT1uZXcgUmVmU2V0LHI9dGhpcy5fY2F0RGljdC5nZXRSYXcoIlBhZ2VzIik7ciBpbnN0YW5jZW9mIFJlZiYmYS5wdXQocik7Y29uc3Qgcz1uZXcgTWFwLG49dGhpcy54cmVmLG89dGhpcy5wYWdlSW5kZXhDYWNoZTtsZXQgZz0wO2Z1bmN0aW9uIGFkZFBhZ2VEaWN0KGUsdCl7dCYmIW8uaGFzKHQpJiZvLnB1dCh0LGcpO3Muc2V0KGcrKyxbZSx0XSl9ZnVuY3Rpb24gYWRkUGFnZUVycm9yKGkpe2lmKGkgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24mJiFlKXRocm93IGk7aWYoZSYmdCYmMD09PWcpe3dhcm4oYGdldEFsbFBhZ2VEaWN0cyAtIFNraXBwaW5nIGludmFsaWQgZmlyc3QgcGFnZTogIiR7aX0iLmApO2k9RGljdC5lbXB0eX1zLnNldChnKyssW2ksbnVsbF0pfWZvcig7aS5sZW5ndGg+MDspe2NvbnN0IGU9aS5hdCgtMSkse2N1cnJlbnROb2RlOnQscG9zSW5LaWRzOnJ9PWU7bGV0IHM9dC5nZXRSYXcoIktpZHMiKTtpZihzIGluc3RhbmNlb2YgUmVmKXRyeXtzPWF3YWl0IG4uZmV0Y2hBc3luYyhzKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9aWYoIUFycmF5LmlzQXJyYXkocykpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgZGljdGlvbmFyeSBraWRzIG9iamVjdCBpcyBub3QgYW4gYXJyYXkuIikpO2JyZWFrfWlmKHI+PXMubGVuZ3RoKXtpLnBvcCgpO2NvbnRpbnVlfWNvbnN0IG89c1tyXTtsZXQgZztpZihvIGluc3RhbmNlb2YgUmVmKXtpZihhLmhhcyhvKSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZXMgdHJlZSBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2UuIikpO2JyZWFrfWEucHV0KG8pO3RyeXtnPWF3YWl0IG4uZmV0Y2hBc3luYyhvKX1jYXRjaChlKXthZGRQYWdlRXJyb3IoZSk7YnJlYWt9fWVsc2UgZz1vO2lmKCEoZyBpbnN0YW5jZW9mIERpY3QpKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkIHJlZmVyZW5jZSBwb2ludHMgdG8gd3JvbmcgdHlwZSBvZiBvYmplY3QuIikpO2JyZWFrfWxldCBjPWcuZ2V0UmF3KCJUeXBlIik7aWYoYyBpbnN0YW5jZW9mIFJlZil0cnl7Yz1hd2FpdCBuLmZldGNoQXN5bmMoYyl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlzTmFtZShjLCJQYWdlIil8fCFnLmhhcygiS2lkcyIpP2FkZFBhZ2VEaWN0KGcsbyBpbnN0YW5jZW9mIFJlZj9vOm51bGwpOmkucHVzaCh7Y3VycmVudE5vZGU6Zyxwb3NJbktpZHM6MH0pO2UucG9zSW5LaWRzKyt9cmV0dXJuIHN9Z2V0UGFnZUluZGV4KGUpe2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXhDYWNoZS5nZXQoZSk7aWYodm9pZCAwIT09dClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHQpO2NvbnN0IGk9dGhpcy54cmVmO2xldCBhPTA7Y29uc3QgbmV4dD10PT5mdW5jdGlvbiBwYWdlc0JlZm9yZVJlZih0KXtsZXQgYSxyPTA7cmV0dXJuIGkuZmV0Y2hBc3luYyh0KS50aGVuKChmdW5jdGlvbihpKXtpZihpc1JlZnNFcXVhbCh0LGUpJiYhaXNEaWN0KGksIlBhZ2UiKSYmIShpIGluc3RhbmNlb2YgRGljdCYmIWkuaGFzKCJUeXBlIikmJmkuaGFzKCJDb250ZW50cyIpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFpKXJldHVybiBudWxsO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTthPWkuZ2V0UmF3KCJQYXJlbnQiKTtyZXR1cm4gaS5nZXRBc3luYygiUGFyZW50Iil9KSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYXJlbnQgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7cmV0dXJuIGUuZ2V0QXN5bmMoIktpZHMiKX0pKS50aGVuKChmdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDtjb25zdCBzPVtdO2xldCBuPSExO2Zvcihjb25zdCBhIG9mIGUpe2lmKCEoYSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbXVzdCBiZSBhIHJlZmVyZW5jZS4iKTtpZihpc1JlZnNFcXVhbChhLHQpKXtuPSEwO2JyZWFrfXMucHVzaChpLmZldGNoQXN5bmMoYSkudGhlbigoZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJLaWQgbm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtlLmhhcygiQ291bnQiKT9yKz1lLmdldCgiQ291bnQiKTpyKyt9KSkpfWlmKCFuKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwocykudGhlbigoZnVuY3Rpb24oKXtyZXR1cm5bcixhXX0pKX0pKX0odCkudGhlbigodD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLGEpO3JldHVybiBhfWNvbnN0W2kscl09dDthKz1pO3JldHVybiBuZXh0KHIpfSkpO3JldHVybiBuZXh0KGUpfWdldCBiYXNlVXJsKCl7Y29uc3QgZT10aGlzLl9jYXREaWN0LmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkJhc2UiKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LG51bGwse3RyeUNvbnZlcnRFbmNvZGluZzohMH0pO2lmKGUpcmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIixlLmhyZWYpfX1yZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLHRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsKX1zdGF0aWMgcGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZSxyZXN1bHRPYmo6dCxkb2NCYXNlVXJsOmk9bnVsbCxkb2NBdHRhY2htZW50czphPW51bGx9KXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogYGRlc3REaWN0YCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm59bGV0IHIscyxuPWUuZ2V0KCJBIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpaWYoZS5oYXMoIkRlc3QiKSluPWUuZ2V0KCJEZXN0Iik7ZWxzZXtuPWUuZ2V0KCJBQSIpO24gaW5zdGFuY2VvZiBEaWN0JiYobi5oYXMoIkQiKT9uPW4uZ2V0KCJEIik6bi5oYXMoIlUiKSYmKG49bi5nZXQoIlUiKSkpfWlmKG4gaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW4uZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IEludmFsaWQgdHlwZSBpbiBBY3Rpb24gZGljdGlvbmFyeS4iKTtyZXR1cm59Y29uc3QgaT1lLm5hbWU7c3dpdGNoKGkpe2Nhc2UiUmVzZXRGb3JtIjpjb25zdCBlPW4uZ2V0KCJGbGFncyIpLG89MD09KDEmKCJudW1iZXIiPT10eXBlb2YgZT9lOjApKSxnPVtdLGM9W107Zm9yKGNvbnN0IGUgb2Ygbi5nZXQoIkZpZWxkcyIpfHxbXSllIGluc3RhbmNlb2YgUmVmP2MucHVzaChlLnRvU3RyaW5nKCkpOiJzdHJpbmciPT10eXBlb2YgZSYmZy5wdXNoKHN0cmluZ1RvUERGU3RyaW5nKGUpKTt0LnJlc2V0Rm9ybT17ZmllbGRzOmcscmVmczpjLGluY2x1ZGU6b307YnJlYWs7Y2FzZSJVUkkiOnI9bi5nZXQoIlVSSSIpO3IgaW5zdGFuY2VvZiBOYW1lJiYocj0iLyIrci5uYW1lKTticmVhaztjYXNlIkdvVG8iOnM9bi5nZXQoIkQiKTticmVhaztjYXNlIkxhdW5jaCI6Y2FzZSJHb1RvUiI6Y29uc3QgaD1uLmdldCgiRiIpO2lmKGggaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPW5ldyBGaWxlU3BlYyhoLG51bGwsITApLHtyYXdGaWxlbmFtZTp0fT1lLnNlcmlhbGl6YWJsZTtyPXR9ZWxzZSJzdHJpbmciPT10eXBlb2YgaCYmKHI9aCk7Y29uc3QgbD1mZXRjaFJlbW90ZURlc3Qobik7bCYmInN0cmluZyI9PXR5cGVvZiByJiYocj1yLnNwbGl0KCIjIiwxKVswXSsiIyIrbCk7Y29uc3QgQz1uLmdldCgiTmV3V2luZG93Iik7ImJvb2xlYW4iPT10eXBlb2YgQyYmKHQubmV3V2luZG93PUMpO2JyZWFrO2Nhc2UiR29Ub0UiOmNvbnN0IFE9bi5nZXQoIlQiKTtsZXQgRTtpZihhJiZRIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1RLmdldCgiUiIpLHQ9US5nZXQoIk4iKTtpc05hbWUoZSwiQyIpJiYic3RyaW5nIj09dHlwZW9mIHQmJihFPWFbc3RyaW5nVG9QREZTdHJpbmcodCldKX1pZihFKXt0LmF0dGFjaG1lbnQ9RTtjb25zdCBlPWZldGNoUmVtb3RlRGVzdChuKTtlJiYodC5hdHRhY2htZW50RGVzdD1lKX1lbHNlIHdhcm4oJ3BhcnNlRGVzdERpY3Rpb25hcnkgLSB1bmltcGxlbWVudGVkICJHb1RvRSIgYWN0aW9uLicpO2JyZWFrO2Nhc2UiTmFtZWQiOmNvbnN0IHU9bi5nZXQoIk4iKTt1IGluc3RhbmNlb2YgTmFtZSYmKHQuYWN0aW9uPXUubmFtZSk7YnJlYWs7Y2FzZSJTZXRPQ0dTdGF0ZSI6Y29uc3QgZD1uLmdldCgiU3RhdGUiKSxmPW4uZ2V0KCJQcmVzZXJ2ZVJCIik7aWYoIUFycmF5LmlzQXJyYXkoZCl8fDA9PT1kLmxlbmd0aClicmVhaztjb25zdCBwPVtdO2Zvcihjb25zdCBlIG9mIGQpaWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJPTiI6Y2FzZSJPRkYiOmNhc2UiVG9nZ2xlIjpwLnB1c2goZS5uYW1lKX1lbHNlIGUgaW5zdGFuY2VvZiBSZWYmJnAucHVzaChlLnRvU3RyaW5nKCkpO2lmKHAubGVuZ3RoIT09ZC5sZW5ndGgpYnJlYWs7dC5zZXRPQ0dTdGF0ZT17c3RhdGU6cCxwcmVzZXJ2ZVJCOiJib29sZWFuIiE9dHlwZW9mIGZ8fGZ9O2JyZWFrO2Nhc2UiSmF2YVNjcmlwdCI6Y29uc3QgbT1uLmdldCgiSlMiKTtsZXQgeTttIGluc3RhbmNlb2YgQmFzZVN0cmVhbT95PW0uZ2V0U3RyaW5nKCk6InN0cmluZyI9PXR5cGVvZiBtJiYoeT1tKTtjb25zdCB3PXkmJnJlY292ZXJKc1VSTChzdHJpbmdUb1BERlN0cmluZyh5KSk7aWYodyl7cj13LnVybDt0Lm5ld1dpbmRvdz13Lm5ld1dpbmRvdzticmVha31kZWZhdWx0OmlmKCJKYXZhU2NyaXB0Ij09PWl8fCJTdWJtaXRGb3JtIj09PWkpYnJlYWs7d2FybihgcGFyc2VEZXN0RGljdGlvbmFyeSAtIHVuc3VwcG9ydGVkIGFjdGlvbjogIiR7aX0iLmApfX1lbHNlIGUuaGFzKCJEZXN0IikmJihzPWUuZ2V0KCJEZXN0IikpO2lmKCJzdHJpbmciPT10eXBlb2Ygcil7Y29uc3QgZT1jcmVhdGVWYWxpZEFic29sdXRlVXJsKHIsaSx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO2UmJih0LnVybD1lLmhyZWYpO3QudW5zYWZlVXJsPXJ9aWYocyl7cyBpbnN0YW5jZW9mIE5hbWUmJihzPXMubmFtZSk7InN0cmluZyI9PXR5cGVvZiBzP3QuZGVzdD1zdHJpbmdUb1BERlN0cmluZyhzKTppc1ZhbGlkRXhwbGljaXREZXN0KHMpJiYodC5kZXN0PXMpfX19ZnVuY3Rpb24gYWRkQ2hpbGRyZW4oZSx0KXtpZihlIGluc3RhbmNlb2YgRGljdCllPWUuZ2V0UmF3VmFsdWVzKCk7ZWxzZSBpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSllPWUuZGljdC5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybjtmb3IoY29uc3QgYSBvZiBlKSgoaT1hKWluc3RhbmNlb2YgUmVmfHxpIGluc3RhbmNlb2YgRGljdHx8aSBpbnN0YW5jZW9mIEJhc2VTdHJlYW18fEFycmF5LmlzQXJyYXkoaSkpJiZ0LnB1c2goYSk7dmFyIGl9Y2xhc3MgT2JqZWN0TG9hZGVye2NvbnN0cnVjdG9yKGUsdCxpKXt0aGlzLmRpY3Q9ZTt0aGlzLmtleXM9dDt0aGlzLnhyZWY9aTt0aGlzLnJlZlNldD1udWxsfWFzeW5jIGxvYWQoKXtpZih0aGlzLnhyZWYuc3RyZWFtLmlzRGF0YUxvYWRlZClyZXR1cm47Y29uc3R7a2V5czplLGRpY3Q6dH09dGhpczt0aGlzLnJlZlNldD1uZXcgUmVmU2V0O2NvbnN0IGk9W107Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT10LmdldFJhdyhhKTt2b2lkIDAhPT1lJiZpLnB1c2goZSl9cmV0dXJuIHRoaXMuX3dhbGsoaSl9YXN5bmMgX3dhbGsoZSl7Y29uc3QgdD1bXSxpPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgYT1lLnBvcCgpO2lmKGEgaW5zdGFuY2VvZiBSZWYpe2lmKHRoaXMucmVmU2V0LmhhcyhhKSljb250aW51ZTt0cnl7dGhpcy5yZWZTZXQucHV0KGEpO2E9dGhpcy54cmVmLmZldGNoKGEpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl7d2FybihgT2JqZWN0TG9hZGVyLl93YWxrIC0gcmVxdWVzdGluZyBhbGwgZGF0YTogIiR7ZX0iLmApO3RoaXMucmVmU2V0PW51bGw7Y29uc3R7bWFuYWdlcjp0fT10aGlzLnhyZWYuc3RyZWFtO3JldHVybiB0LnJlcXVlc3RBbGxDaHVua3MoKX10LnB1c2goYSk7aS5wdXNoKHtiZWdpbjplLmJlZ2luLGVuZDplLmVuZH0pfX1pZihhIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgZT1hLmdldEJhc2VTdHJlYW1zKCk7aWYoZSl7bGV0IHI9ITE7Zm9yKGNvbnN0IHQgb2YgZSlpZighdC5pc0RhdGFMb2FkZWQpe3I9ITA7aS5wdXNoKHtiZWdpbjp0LnN0YXJ0LGVuZDp0LmVuZH0pfXImJnQucHVzaChhKX19YWRkQ2hpbGRyZW4oYSxlKX1pZihpLmxlbmd0aCl7YXdhaXQgdGhpcy54cmVmLnN0cmVhbS5tYW5hZ2VyLnJlcXVlc3RSYW5nZXMoaSk7Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnJlZlNldC5yZW1vdmUoZSk7cmV0dXJuIHRoaXMuX3dhbGsodCl9dGhpcy5yZWZTZXQ9bnVsbH19Y29uc3QgV3I9U3ltYm9sKCksanI9U3ltYm9sKCksWHI9U3ltYm9sKCksWnI9U3ltYm9sKCksVnI9U3ltYm9sKCksX3I9U3ltYm9sKCksenI9U3ltYm9sKCksJHI9U3ltYm9sKCksQXM9U3ltYm9sKCksZXM9U3ltYm9sKCJjb250ZW50IiksdHM9U3ltYm9sKCJkYXRhIiksaXM9U3ltYm9sKCksYXM9U3ltYm9sKCJleHRyYSIpLHJzPVN5bWJvbCgpLHNzPVN5bWJvbCgpLG5zPVN5bWJvbCgpLG9zPVN5bWJvbCgpLGdzPVN5bWJvbCgpLGNzPVN5bWJvbCgpLElzPVN5bWJvbCgpLGhzPVN5bWJvbCgpLGxzPVN5bWJvbCgpLENzPVN5bWJvbCgpLEJzPVN5bWJvbCgpLFFzPVN5bWJvbCgpLEVzPVN5bWJvbCgpLHVzPVN5bWJvbCgpLGRzPVN5bWJvbCgpLGZzPVN5bWJvbCgpLHBzPVN5bWJvbCgpLG1zPVN5bWJvbCgpLHlzPVN5bWJvbCgpLHdzPVN5bWJvbCgpLGJzPVN5bWJvbCgpLERzPVN5bWJvbCgpLEZzPVN5bWJvbCgpLFNzPVN5bWJvbCgpLGtzPVN5bWJvbCgpLFJzPVN5bWJvbCgpLE5zPVN5bWJvbCgpLEdzPVN5bWJvbCgpLHhzPVN5bWJvbCgpLE1zPVN5bWJvbCgpLFVzPVN5bWJvbCgpLExzPVN5bWJvbCgpLEpzPVN5bWJvbCgibmFtZXNwYWNlSWQiKSxIcz1TeW1ib2woIm5vZGVOYW1lIiksdnM9U3ltYm9sKCksWXM9U3ltYm9sKCksS3M9U3ltYm9sKCksVHM9U3ltYm9sKCkscXM9U3ltYm9sKCksT3M9U3ltYm9sKCksV3M9U3ltYm9sKCksanM9U3ltYm9sKCksWHM9U3ltYm9sKCJyb290IiksWnM9U3ltYm9sKCksVnM9U3ltYm9sKCksX3M9U3ltYm9sKCksenM9U3ltYm9sKCksJHM9U3ltYm9sKCksQW49U3ltYm9sKCksZW49U3ltYm9sKCksdG49U3ltYm9sKCksYW49U3ltYm9sKCkscm49U3ltYm9sKCksc249U3ltYm9sKCksbm49U3ltYm9sKCJ1aWQiKSxvbj1TeW1ib2woKSxnbj17Y29uZmlnOntpZDowLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94Y2kvIil9LGNvbm5lY3Rpb25TZXQ6e2lkOjEsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1jb25uZWN0aW9uLXNldC8iKX0sZGF0YXNldHM6e2lkOjIsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLyIpfSxmb3JtOntpZDozLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZm9ybS8iKX0sbG9jYWxlU2V0OntpZDo0LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtbG9jYWxlLXNldC8iKX0scGRmOntpZDo1LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC9wZGYvIj09PWV9LHNpZ25hdHVyZTp7aWQ6NixjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI9PT1lfSxzb3VyY2VTZXQ6e2lkOjcsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1zb3VyY2Utc2V0LyIpfSxzdHlsZXNoZWV0OntpZDo4LGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPT09ZX0sdGVtcGxhdGU6e2lkOjksY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS10ZW1wbGF0ZS8iKX0seGRjOntpZDoxMCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGRjLyIpfSx4ZHA6e2lkOjExLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC8iPT09ZX0seGZkZjp7aWQ6MTIsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGZkZi8iPT09ZX0seGh0bWw6e2lkOjEzLGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWV9LHhtcG1ldGE6e2lkOjE0LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3htcG1ldGEvIj09PWV9fSxjbj17cHQ6ZT0+ZSxjbTplPT5lLzIuNTQqNzIsbW06ZT0+ZS8yNS40KjcyLGluOmU9PjcyKmUscHg6ZT0+ZX0sSW49LyhbKy1dP1xkK1wuP1xkKikoLiopLztmdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCInIil8fGUuc3RhcnRzV2l0aCgnIicpP2Uuc2xpY2UoMSwtMSk6ZX1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6aX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3QgYT1wYXJzZUludChlLDEwKTtyZXR1cm4haXNOYU4oYSkmJmkoYSk/YTp0fWZ1bmN0aW9uIGdldEZsb2F0KHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6aX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3QgYT1wYXJzZUZsb2F0KGUpO3JldHVybiFpc05hTihhKSYmaShhKT9hOnR9ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOml9KXtyZXR1cm4gZSYmaShlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0U3RyaW5nT3B0aW9uKGUsdCl7cmV0dXJuIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dFswXSx2YWxpZGF0ZTplPT50LmluY2x1ZGVzKGUpfSl9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dHx8PSIwIjtpZighZSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7Y29uc3QgaT1lLnRyaW0oKS5tYXRjaChJbik7aWYoIWkpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxhLHJdPWkscz1wYXJzZUZsb2F0KGEpO2lmKGlzTmFOKHMpKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09cylyZXR1cm4gMDtjb25zdCBuPWNuW3JdO3JldHVybiBuP24ocyk6c31mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS50cmltKCkuc3BsaXQoL1xzKjpccyovKS5tYXAoKGU9PnBhcnNlRmxvYXQoZSkpKS5maWx0ZXIoKGU9PiFpc05hTihlKSkpOzE9PT10Lmxlbmd0aCYmdC5wdXNoKDEpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0W2ksYV09dDtyZXR1cm57bnVtOmksZGVuOmF9fWZ1bmN0aW9uIGdldFJlbGV2YW50KGUpe3JldHVybiBlP2UudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9Pih7ZXhjbHVkZWQ6Ii0iPT09ZVswXSx2aWV3bmFtZTplLnN1YnN0cmluZygxKX0pKSk6W119Y2xhc3MgSFRNTFJlc3VsdHtzdGF0aWMgZ2V0IEZBSUxVUkUoKXtyZXR1cm4gc2hhZG93KHRoaXMsIkZBSUxVUkUiLG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxudWxsKSl9c3RhdGljIGdldCBFTVBUWSgpe3JldHVybiBzaGFkb3codGhpcywiRU1QVFkiLG5ldyBIVE1MUmVzdWx0KCEwLG51bGwsbnVsbCxudWxsKSl9Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5zdWNjZXNzPWU7dGhpcy5odG1sPXQ7dGhpcy5iYm94PWk7dGhpcy5icmVha05vZGU9YX1pc0JyZWFrKCl7cmV0dXJuISF0aGlzLmJyZWFrTm9kZX1zdGF0aWMgYnJlYWtOb2RlKGUpe3JldHVybiBuZXcgSFRNTFJlc3VsdCghMSxudWxsLG51bGwsZSl9c3RhdGljIHN1Y2Nlc3MoZSx0PW51bGwpe3JldHVybiBuZXcgSFRNTFJlc3VsdCghMCxlLHQsbnVsbCl9fWNsYXNzIEZvbnRGaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5mb250cz1uZXcgTWFwO3RoaXMuY2FjaGU9bmV3IE1hcDt0aGlzLndhcm5lZD1uZXcgU2V0O3RoaXMuZGVmYXVsdEZvbnQ9bnVsbDt0aGlzLmFkZChlKX1hZGQoZSx0PW51bGwpe2Zvcihjb25zdCB0IG9mIGUpdGhpcy5hZGRQZGZGb250KHQpO2Zvcihjb25zdCBlIG9mIHRoaXMuZm9udHMudmFsdWVzKCkpZS5yZWd1bGFyfHwoZS5yZWd1bGFyPWUuaXRhbGljfHxlLmJvbGR8fGUuYm9sZGl0YWxpYyk7aWYoIXR8fDA9PT10LnNpemUpcmV0dXJuO2NvbnN0IGk9dGhpcy5mb250cy5nZXQoIlBkZkpTLUZhbGxiYWNrLVBkZkpTLVhGQSIpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5mb250cy5zZXQoZSxpKX1hZGRQZGZGb250KGUpe2NvbnN0IHQ9ZS5jc3NGb250SW5mbyxpPXQuZm9udEZhbWlseTtsZXQgYT10aGlzLmZvbnRzLmdldChpKTtpZighYSl7YT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuZm9udHMuc2V0KGksYSk7dGhpcy5kZWZhdWx0Rm9udHx8KHRoaXMuZGVmYXVsdEZvbnQ9YSl9bGV0IHI9IiI7Y29uc3Qgcz1wYXJzZUZsb2F0KHQuZm9udFdlaWdodCk7MCE9PXBhcnNlRmxvYXQodC5pdGFsaWNBbmdsZSk/cj1zPj03MDA/ImJvbGRpdGFsaWMiOiJpdGFsaWMiOnM+PTcwMCYmKHI9ImJvbGQiKTtpZighcil7KGUubmFtZS5pbmNsdWRlcygiQm9sZCIpfHxlLnBzTmFtZT8uaW5jbHVkZXMoIkJvbGQiKSkmJihyPSJib2xkIik7KGUubmFtZS5pbmNsdWRlcygiSXRhbGljIil8fGUubmFtZS5lbmRzV2l0aCgiSXQiKXx8ZS5wc05hbWU/LmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5wc05hbWU/LmVuZHNXaXRoKCJJdCIpKSYmKHIrPSJpdGFsaWMiKX1yfHwocj0icmVndWxhciIpO2Fbcl09ZX1nZXREZWZhdWx0KCl7cmV0dXJuIHRoaXMuZGVmYXVsdEZvbnR9ZmluZChlLHQ9ITApe2xldCBpPXRoaXMuZm9udHMuZ2V0KGUpfHx0aGlzLmNhY2hlLmdldChlKTtpZihpKXJldHVybiBpO2NvbnN0IGE9Lyx8LXxffCB8Ym9sZGl0YWxpY3xib2xkfGl0YWxpY3xyZWd1bGFyfGl0L2dpO2xldCByPWUucmVwbGFjZUFsbChhLCIiKTtpPXRoaXMuZm9udHMuZ2V0KHIpO2lmKGkpe3RoaXMuY2FjaGUuc2V0KGUsaSk7cmV0dXJuIGl9cj1yLnRvTG93ZXJDYXNlKCk7Y29uc3Qgcz1bXTtmb3IoY29uc3RbZSx0XW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVwbGFjZUFsbChhLCIiKS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocikmJnMucHVzaCh0KTtpZigwPT09cy5sZW5ndGgpZm9yKGNvbnN0WyxlXW9mIHRoaXMuZm9udHMuZW50cmllcygpKWUucmVndWxhci5uYW1lPy5yZXBsYWNlQWxsKGEsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChyKSYmcy5wdXNoKGUpO2lmKDA9PT1zLmxlbmd0aCl7cj1yLnJlcGxhY2VBbGwoL3BzbXR8bXQvZ2ksIiIpO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZXBsYWNlQWxsKGEsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChyKSYmcy5wdXNoKHQpfWlmKDA9PT1zLmxlbmd0aClmb3IoY29uc3QgZSBvZiB0aGlzLmZvbnRzLnZhbHVlcygpKWUucmVndWxhci5uYW1lPy5yZXBsYWNlQWxsKGEsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChyKSYmcy5wdXNoKGUpO2lmKHMubGVuZ3RoPj0xKXsxIT09cy5sZW5ndGgmJnQmJndhcm4oYFhGQSAtIFRvbyBtYW55IGNob2ljZXMgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgZm9udDogJHtlfWApO3RoaXMuY2FjaGUuc2V0KGUsc1swXSk7cmV0dXJuIHNbMF19aWYodCYmIXRoaXMud2FybmVkLmhhcyhlKSl7dGhpcy53YXJuZWQuYWRkKGUpO3dhcm4oYFhGQSAtIENhbm5vdCBmaW5kIHRoZSBmb250OiAke2V9YCl9cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHNlbGVjdEZvbnQoZSx0KXtyZXR1cm4iaXRhbGljIj09PWUucG9zdHVyZT8iYm9sZCI9PT1lLndlaWdodD90LmJvbGRpdGFsaWM6dC5pdGFsaWM6ImJvbGQiPT09ZS53ZWlnaHQ/dC5ib2xkOnQucmVndWxhcn1jbGFzcyBGb250SW5mb3tjb25zdHJ1Y3RvcihlLHQsaSxhKXt0aGlzLmxpbmVIZWlnaHQ9aTt0aGlzLnBhcmFNYXJnaW49dHx8e3RvcDowLGJvdHRvbTowLGxlZnQ6MCxyaWdodDowfTtpZighZSl7W3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSk7cmV0dXJufXRoaXMueGZhRm9udD17dHlwZWZhY2U6ZS50eXBlZmFjZSxwb3N0dXJlOmUucG9zdHVyZSx3ZWlnaHQ6ZS53ZWlnaHQsc2l6ZTplLnNpemUsbGV0dGVyU3BhY2luZzplLmxldHRlclNwYWNpbmd9O2NvbnN0IHI9YS5maW5kKGUudHlwZWZhY2UpO2lmKHIpe3RoaXMucGRmRm9udD1zZWxlY3RGb250KGUscik7dGhpcy5wZGZGb250fHwoW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQoYSkpfWVsc2VbdGhpcy5wZGZGb250LHRoaXMueGZhRm9udF09dGhpcy5kZWZhdWx0Rm9udChhKX1kZWZhdWx0Rm9udChlKXtjb25zdCB0PWUuZmluZCgiSGVsdmV0aWNhIiwhMSl8fGUuZmluZCgiTXlyaWFkIFBybyIsITEpfHxlLmZpbmQoIkFyaWFsIiwhMSl8fGUuZ2V0RGVmYXVsdCgpO2lmKHQ/LnJlZ3VsYXIpe2NvbnN0IGU9dC5yZWd1bGFyO3JldHVybltlLHt0eXBlZmFjZTplLmNzc0ZvbnRJbmZvLmZvbnRGYW1pbHkscG9zdHVyZToibm9ybWFsIix3ZWlnaHQ6Im5vcm1hbCIsc2l6ZToxMCxsZXR0ZXJTcGFjaW5nOjB9XX1yZXR1cm5bbnVsbCx7dHlwZWZhY2U6IkNvdXJpZXIiLHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19fWNsYXNzIEZvbnRTZWxlY3Rvcntjb25zdHJ1Y3RvcihlLHQsaSxhKXt0aGlzLmZvbnRGaW5kZXI9YTt0aGlzLnN0YWNrPVtuZXcgRm9udEluZm8oZSx0LGksYSldfXB1c2hEYXRhKGUsdCxpKXtjb25zdCBhPXRoaXMuc3RhY2suYXQoLTEpO2Zvcihjb25zdCB0IG9mWyJ0eXBlZmFjZSIsInBvc3R1cmUiLCJ3ZWlnaHQiLCJzaXplIiwibGV0dGVyU3BhY2luZyJdKWVbdF18fChlW3RdPWEueGZhRm9udFt0XSk7Zm9yKGNvbnN0IGUgb2ZbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdKWlzTmFOKHRbZV0pJiYodFtlXT1hLnBhcmFNYXJnaW5bZV0pO2NvbnN0IHI9bmV3IEZvbnRJbmZvKGUsdCxpfHxhLmxpbmVIZWlnaHQsdGhpcy5mb250RmluZGVyKTtyLnBkZkZvbnR8fChyLnBkZkZvbnQ9YS5wZGZGb250KTt0aGlzLnN0YWNrLnB1c2gocil9cG9wRm9udCgpe3RoaXMuc3RhY2sucG9wKCl9dG9wRm9udCgpe3JldHVybiB0aGlzLnN0YWNrLmF0KC0xKX19Y2xhc3MgVGV4dE1lYXN1cmV7Y29uc3RydWN0b3IoZSx0LGksYSl7dGhpcy5nbHlwaHM9W107dGhpcy5mb250U2VsZWN0b3I9bmV3IEZvbnRTZWxlY3RvcihlLHQsaSxhKTt0aGlzLmV4dHJhSGVpZ2h0PTB9cHVzaERhdGEoZSx0LGkpe3RoaXMuZm9udFNlbGVjdG9yLnB1c2hEYXRhKGUsdCxpKX1wb3BGb250KGUpe3JldHVybiB0aGlzLmZvbnRTZWxlY3Rvci5wb3BGb250KCl9YWRkUGFyYSgpe2NvbnN0IGU9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpO3RoaXMuZXh0cmFIZWlnaHQrPWUucGFyYU1hcmdpbi50b3ArZS5wYXJhTWFyZ2luLmJvdHRvbX1hZGRTdHJpbmcoZSl7aWYoIWUpcmV0dXJuO2NvbnN0IHQ9dGhpcy5mb250U2VsZWN0b3IudG9wRm9udCgpLGk9dC54ZmFGb250LnNpemU7aWYodC5wZGZGb250KXtjb25zdCBhPXQueGZhRm9udC5sZXR0ZXJTcGFjaW5nLHI9dC5wZGZGb250LHM9ci5saW5lSGVpZ2h0fHwxLjIsbj10LmxpbmVIZWlnaHR8fE1hdGgubWF4KDEuMixzKSppLG89cy0odm9pZCAwPT09ci5saW5lR2FwPy4yOnIubGluZUdhcCksZz1NYXRoLm1heCgxLG8pKmksYz1pLzFlMyxoPXIuZGVmYXVsdFdpZHRofHxyLmNoYXJzVG9HbHlwaHMoIiAiKVswXS53aWR0aDtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2NvbnN0IGU9ci5lbmNvZGVTdHJpbmcodCkuam9pbigiIiksaT1yLmNoYXJzVG9HbHlwaHMoZSk7Zm9yKGNvbnN0IGUgb2YgaSl7Y29uc3QgdD1lLndpZHRofHxoO3RoaXMuZ2x5cGhzLnB1c2goW3QqYythLG4sZyxlLnVuaWNvZGUsITFdKX10aGlzLmdseXBocy5wdXNoKFswLDAsMCwiXG4iLCEwXSl9dGhpcy5nbHlwaHMucG9wKCl9ZWxzZXtmb3IoY29uc3QgdCBvZiBlLnNwbGl0KC9bXHUyMDI5XG5dLykpe2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIiIpKXRoaXMuZ2x5cGhzLnB1c2goW2ksMS4yKmksaSxlLCExXSk7dGhpcy5nbHlwaHMucHVzaChbMCwwLDAsIlxuIiwhMF0pfXRoaXMuZ2x5cGhzLnBvcCgpfX1jb21wdXRlKGUpe2xldCB0PS0xLGk9MCxhPTAscj0wLHM9MCxuPTAsbz0hMSxnPSEwO2ZvcihsZXQgYz0wLGg9dGhpcy5nbHlwaHMubGVuZ3RoO2M8aDtjKyspe2NvbnN0W2gsbCxDLFEsRV09dGhpcy5nbHlwaHNbY10sdT0iICI9PT1RLGQ9Zz9DOmw7aWYoRSl7YT1NYXRoLm1heChhLHMpO3M9MDtyKz1uO249ZDt0PS0xO2k9MDtnPSExfWVsc2UgaWYodSlpZihzK2g+ZSl7YT1NYXRoLm1heChhLHMpO3M9MDtyKz1uO249ZDt0PS0xO2k9MDtvPSEwO2c9ITF9ZWxzZXtuPU1hdGgubWF4KGQsbik7aT1zO3MrPWg7dD1jfWVsc2UgaWYocytoPmUpe3IrPW47bj1kO2lmKC0xIT09dCl7Yz10O2E9TWF0aC5tYXgoYSxpKTtzPTA7dD0tMTtpPTB9ZWxzZXthPU1hdGgubWF4KGEscyk7cz1ofW89ITA7Zz0hMX1lbHNle3MrPWg7bj1NYXRoLm1heChkLG4pfX1hPU1hdGgubWF4KGEscyk7cis9bit0aGlzLmV4dHJhSGVpZ2h0O3JldHVybnt3aWR0aDoxLjAyKmEsaGVpZ2h0OnIsaXNCcm9rZW46b319fWNvbnN0IGhuPS9eW14uW10rLyxsbj0vXlteXF1dKy8sQ249e2RvdDowLGRvdERvdDoxLGRvdEhhc2g6Mixkb3RCcmFja2V0OjMsZG90UGFyZW46NH0sQm49bmV3IE1hcChbWyIkZGF0YSIsKGUsdCk9PmUuZGF0YXNldHM/ZS5kYXRhc2V0cy5kYXRhOmVdLFsiJHJlY29yZCIsKGUsdCk9PihlLmRhdGFzZXRzP2UuZGF0YXNldHMuZGF0YTplKVtRc10oKVswXV0sWyIkdGVtcGxhdGUiLChlLHQpPT5lLnRlbXBsYXRlXSxbIiRjb25uZWN0aW9uU2V0IiwoZSx0KT0+ZS5jb25uZWN0aW9uU2V0XSxbIiRmb3JtIiwoZSx0KT0+ZS5mb3JtXSxbIiRsYXlvdXQiLChlLHQpPT5lLmxheW91dF0sWyIkaG9zdCIsKGUsdCk9PmUuaG9zdF0sWyIkZGF0YVdpbmRvdyIsKGUsdCk9PmUuZGF0YVdpbmRvd10sWyIkZXZlbnQiLChlLHQpPT5lLmV2ZW50XSxbIiEiLChlLHQpPT5lLmRhdGFzZXRzXSxbIiR4ZmEiLChlLHQpPT5lXSxbInhmYSIsKGUsdCk9PmVdLFsiJCIsKGUsdCk9PnRdXSksUW49bmV3IFdlYWtNYXA7ZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKGUsdCxpPSEwKXtsZXQgYT1lLm1hdGNoKGhuKTtpZighYSlyZXR1cm4gbnVsbDtsZXRbcl09YTtjb25zdCBzPVt7bmFtZTpyLGNhY2hlTmFtZToiLiIrcixpbmRleDowLGpzOm51bGwsZm9ybUNhbGM6bnVsbCxvcGVyYXRvcjpDbi5kb3R9XTtsZXQgbj1yLmxlbmd0aDtmb3IoO248ZS5sZW5ndGg7KXtjb25zdCBnPW47aWYoIlsiPT09ZS5jaGFyQXQobisrKSl7YT1lLnNsaWNlKG4pLm1hdGNoKGxuKTtpZighYSl7d2FybigiWEZBIC0gSW52YWxpZCBpbmRleCBpbiBTT00gZXhwcmVzc2lvbiIpO3JldHVybiBudWxsfXMuYXQoLTEpLmluZGV4PSIqIj09PShvPShvPWFbMF0pLnRyaW0oKSk/MS8wOnBhcnNlSW50KG8sMTApfHwwO24rPWFbMF0ubGVuZ3RoKzE7Y29udGludWV9bGV0IGM7c3dpdGNoKGUuY2hhckF0KG4pKXtjYXNlIi4iOmlmKCF0KXJldHVybiBudWxsO24rKztjPUNuLmRvdERvdDticmVhaztjYXNlIiMiOm4rKztjPUNuLmRvdEhhc2g7YnJlYWs7Y2FzZSJbIjppZihpKXt3YXJuKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEZvcm1DYWxjIHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWM9Q24uZG90QnJhY2tldDticmVhaztjYXNlIigiOmlmKGkpe3dhcm4oIlhGQSAtIFNPTSBleHByZXNzaW9uIGNvbnRhaW5zIGEgSmF2YVNjcmlwdCBzdWJleHByZXNzaW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vdy4iKTtyZXR1cm4gbnVsbH1jPUNuLmRvdFBhcmVuO2JyZWFrO2RlZmF1bHQ6Yz1Dbi5kb3R9YT1lLnNsaWNlKG4pLm1hdGNoKGhuKTtpZighYSlicmVhaztbcl09YTtuKz1yLmxlbmd0aDtzLnB1c2goe25hbWU6cixjYWNoZU5hbWU6ZS5zbGljZShnLG4pLG9wZXJhdG9yOmMsaW5kZXg6MCxqczpudWxsLGZvcm1DYWxjOm51bGx9KX12YXIgbztyZXR1cm4gc31mdW5jdGlvbiBzZWFyY2hOb2RlKGUsdCxpLGE9ITAscj0hMCl7Y29uc3Qgcz1wYXJzZUV4cHJlc3Npb24oaSxhKTtpZighcylyZXR1cm4gbnVsbDtjb25zdCBuPUJuLmdldChzWzBdLm5hbWUpO2xldCBvLGc9MDtpZihuKXtvPSEwO2U9W24oZSx0KV07Zz0xfWVsc2V7bz1udWxsPT09dDtlPVt0fHxlXX1mb3IobGV0IGk9cy5sZW5ndGg7ZzxpO2crKyl7Y29uc3R7bmFtZTppLGNhY2hlTmFtZTphLG9wZXJhdG9yOm4saW5kZXg6Y309c1tnXSxoPVtdO2Zvcihjb25zdCB0IG9mIGUpe2lmKCF0LmlzWEZBT2JqZWN0KWNvbnRpbnVlO2xldCBlLHM7aWYocil7cz1Rbi5nZXQodCk7aWYoIXMpe3M9bmV3IE1hcDtRbi5zZXQodCxzKX1lPXMuZ2V0KGEpfWlmKCFlKXtzd2l0Y2gobil7Y2FzZSBDbi5kb3Q6ZT10W0lzXShpLCExKTticmVhaztjYXNlIENuLmRvdERvdDplPXRbSXNdKGksITApO2JyZWFrO2Nhc2UgQ24uZG90SGFzaDplPXRbY3NdKGkpO2U9ZS5pc1hGQU9iamVjdEFycmF5P2UuY2hpbGRyZW46W2VdfXImJnMuc2V0KGEsZSl9ZS5sZW5ndGg+MCYmaC5wdXNoKGUpfWlmKDAhPT1oLmxlbmd0aHx8b3x8MCE9PWcpZT1pc0Zpbml0ZShjKT9oLmZpbHRlcigoZT0+YzxlLmxlbmd0aCkpLm1hcCgoZT0+ZVtjXSkpOmguZmxhdCgpO2Vsc2V7Y29uc3QgaT10W2ZzXSgpO2lmKCEodD1pKSlyZXR1cm4gbnVsbDtnPS0xO2U9W3RdfX1yZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZX1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsaSl7Y29uc3QgYT1wYXJzZUV4cHJlc3Npb24oaSk7aWYoIWEpcmV0dXJuIG51bGw7aWYoYS5zb21lKChlPT5lLm9wZXJhdG9yPT09Q24uZG90RG90KSkpcmV0dXJuIG51bGw7Y29uc3Qgcj1Cbi5nZXQoYVswXS5uYW1lKTtsZXQgcz0wO2lmKHIpe2U9cihlLHQpO3M9MX1lbHNlIGU9dHx8ZTtmb3IobGV0IHQ9YS5sZW5ndGg7czx0O3MrKyl7Y29uc3R7bmFtZTp0LG9wZXJhdG9yOmksaW5kZXg6cn09YVtzXTtpZighaXNGaW5pdGUocikpe2Fbc10uaW5kZXg9MDtyZXR1cm4gZS5jcmVhdGVOb2RlcyhhLnNsaWNlKHMpKX1sZXQgbjtzd2l0Y2goaSl7Y2FzZSBDbi5kb3Q6bj1lW0lzXSh0LCExKTticmVhaztjYXNlIENuLmRvdERvdDpuPWVbSXNdKHQsITApO2JyZWFrO2Nhc2UgQ24uZG90SGFzaDpuPWVbY3NdKHQpO249bi5pc1hGQU9iamVjdEFycmF5P24uY2hpbGRyZW46W25dfWlmKDA9PT1uLmxlbmd0aClyZXR1cm4gZS5jcmVhdGVOb2RlcyhhLnNsaWNlKHMpKTtpZighKHI8bi5sZW5ndGgpKXthW3NdLmluZGV4PXItbi5sZW5ndGg7cmV0dXJuIGUuY3JlYXRlTm9kZXMoYS5zbGljZShzKSl9e2NvbnN0IHQ9bltyXTtpZighdC5pc1hGQU9iamVjdCl7d2FybigiWEZBIC0gQ2Fubm90IGNyZWF0ZSBhIG5vZGUuIik7cmV0dXJuIG51bGx9ZT10fX1yZXR1cm4gbnVsbH1jb25zdCBFbj1TeW1ib2woKSx1bj1TeW1ib2woKSxkbj1TeW1ib2woKSxmbj1TeW1ib2woIl9jaGlsZHJlbiIpLHBuPVN5bWJvbCgpLG1uPVN5bWJvbCgpLHluPVN5bWJvbCgpLHduPVN5bWJvbCgpLGJuPVN5bWJvbCgpLERuPVN5bWJvbCgpLEZuPVN5bWJvbCgpLFNuPVN5bWJvbCgpLGtuPVN5bWJvbCgpLFJuPVN5bWJvbCgicGFyZW50IiksTm49U3ltYm9sKCksR249U3ltYm9sKCkseG49U3ltYm9sKCk7bGV0IE1uPTA7Y29uc3QgVW49Z24uZGF0YXNldHMuaWQ7Y2xhc3MgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxpPSExKXt0aGlzW0pzXT1lO3RoaXNbSHNdPXQ7dGhpc1tGbl09aTt0aGlzW1JuXT1udWxsO3RoaXNbZm5dPVtdO3RoaXNbbm5dPWAke3R9JHtNbisrfWA7dGhpc1ttc109bnVsbH1nZXQgaXNYRkFPYmplY3QoKXtyZXR1cm4hMH1nZXQgaXNYRkFPYmplY3RBcnJheSgpe3JldHVybiExfWNyZWF0ZU5vZGVzKGUpe2xldCB0PXRoaXMsaT1udWxsO2Zvcihjb25zdHtuYW1lOmEsaW5kZXg6cn1vZiBlKXtmb3IobGV0IGU9MCxzPWlzRmluaXRlKHIpP3I6MDtlPD1zO2UrKyl7Y29uc3QgZT10W0pzXT09PVVuPy0xOnRbSnNdO2k9bmV3IFhtbE9iamVjdChlLGEpO3RbWHJdKGkpfXQ9aX1yZXR1cm4gaX1bWXNdKGUpe2lmKCF0aGlzW0ZuXXx8IXRoaXNbS3NdKGUpKXJldHVybiExO2NvbnN0IHQ9ZVtIc10saT10aGlzW3RdO2lmKCEoaSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5KSl7bnVsbCE9PWkmJnRoaXNbanNdKGkpO3RoaXNbdF09ZTt0aGlzW1hyXShlKTtyZXR1cm4hMH1pZihpLnB1c2goZSkpe3RoaXNbWHJdKGUpO3JldHVybiEwfWxldCBhPSIiO3RoaXMuaWQ/YT1gIChpZDogJHt0aGlzLmlkfSlgOnRoaXMubmFtZSYmKGE9YCAobmFtZTogJHt0aGlzLm5hbWV9ICR7dGhpcy5oLnZhbHVlfSlgKTt3YXJuKGBYRkEgLSBub2RlICIke3RoaXNbSHNdfSIke2F9IGhhcyBhbHJlYWR5IGVub3VnaCAiJHt0fSIhYCk7cmV0dXJuITF9W0tzXShlKXtyZXR1cm4gdGhpcy5oYXNPd25Qcm9wZXJ0eShlW0hzXSkmJmVbSnNdPT09dGhpc1tKc119W05zXSgpe3JldHVybiExfVtXcl0oKXtyZXR1cm4hMX1bRnNdKCl7cmV0dXJuITF9W1NzXSgpe3JldHVybiExfVtPc10oKXt0aGlzLnBhcmEmJnRoaXNbcHNdKClbYXNdLnBhcmFTdGFjay5wb3AoKX1bV3NdKCl7dGhpc1twc10oKVthc10ucGFyYVN0YWNrLnB1c2godGhpcy5wYXJhKX1bX3NdKGUpe3RoaXMuaWQmJnRoaXNbSnNdPT09Z24udGVtcGxhdGUuaWQmJmUuc2V0KHRoaXMuaWQsdGhpcyl9W3BzXSgpe3JldHVybiB0aGlzW21zXS50ZW1wbGF0ZX1bR3NdKCl7cmV0dXJuITF9W3hzXSgpe3JldHVybiExfVtYcl0oZSl7ZVtSbl09dGhpczt0aGlzW2ZuXS5wdXNoKGUpOyFlW21zXSYmdGhpc1ttc10mJihlW21zXT10aGlzW21zXSl9W2pzXShlKXtjb25zdCB0PXRoaXNbZm5dLmluZGV4T2YoZSk7dGhpc1tmbl0uc3BsaWNlKHQsMSl9W3lzXSgpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpfVskc10oZSl7fVtUc10oZSl7fVtyc10oKXt9W1ZyXShlKXtkZWxldGUgdGhpc1tGbl07aWYodGhpc1t6cl0pe2UuY2xlYW4odGhpc1t6cl0pO2RlbGV0ZSB0aGlzW3pyXX19W2JzXShlKXtyZXR1cm4gdGhpc1tmbl0uaW5kZXhPZihlKX1bRHNdKGUsdCl7dFtSbl09dGhpczt0aGlzW2ZuXS5zcGxpY2UoZSwwLHQpOyF0W21zXSYmdGhpc1ttc10mJih0W21zXT10aGlzW21zXSl9W01zXSgpe3JldHVybiF0aGlzLm5hbWV9W0xzXSgpe3JldHVybiIifVtlbl0oKXtyZXR1cm4gMD09PXRoaXNbZm5dLmxlbmd0aD90aGlzW2VzXTp0aGlzW2ZuXS5tYXAoKGU9PmVbZW5dKCkpKS5qb2luKCIiKX1nZXRbZG5dKCl7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYoIWUuX2F0dHJpYnV0ZXMpe2NvbnN0IHQ9ZS5fYXR0cmlidXRlcz1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZihudWxsPT09dGhpc1tlXXx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0fHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSlicmVhazt0LmFkZChlKX19cmV0dXJuIHNoYWRvdyh0aGlzLGRuLGUuX2F0dHJpYnV0ZXMpfVtSc10oZSl7bGV0IHQ9dGhpcztmb3IoO3Q7KXtpZih0PT09ZSlyZXR1cm4hMDt0PXRbZnNdKCl9cmV0dXJuITF9W2ZzXSgpe3JldHVybiB0aGlzW1JuXX1bZHNdKCl7cmV0dXJuIHRoaXNbZnNdKCl9W1FzXShlPW51bGwpe3JldHVybiBlP3RoaXNbZV06dGhpc1tmbl19W2lzXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzW2VzXSYmKGUuJGNvbnRlbnQ9dGhpc1tlc10pO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCBpPXRoaXNbdF07bnVsbCE9PWkmJihpIGluc3RhbmNlb2YgWEZBT2JqZWN0P2VbdF09aVtpc10oKTppIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/aS5pc0VtcHR5KCl8fChlW3RdPWkuZHVtcCgpKTplW3RdPWkpfXJldHVybiBlfVtzbl0oKXtyZXR1cm4gbnVsbH1bYW5dKCl7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9KltFc10oKXtmb3IoY29uc3QgZSBvZiB0aGlzW1FzXSgpKXlpZWxkIGV9Klt3bl0oZSx0KXtmb3IoY29uc3QgaSBvZiB0aGlzW0VzXSgpKWlmKCFlfHx0PT09ZS5oYXMoaVtIc10pKXtjb25zdCBlPXRoaXNbZ3NdKCksdD1pW2FuXShlKTt0LnN1Y2Nlc3N8fCh0aGlzW2FzXS5mYWlsaW5nTm9kZT1pKTt5aWVsZCB0fX1bc3NdKCl7cmV0dXJuIG51bGx9W2pyXShlLHQpe3RoaXNbYXNdLmNoaWxkcmVuLnB1c2goZSl9W2dzXSgpe31bWnJdKHtmaWx0ZXI6ZT1udWxsLGluY2x1ZGU6dD0hMH0pe2lmKHRoaXNbYXNdLmdlbmVyYXRvcil7Y29uc3QgZT10aGlzW2dzXSgpLHQ9dGhpc1thc10uZmFpbGluZ05vZGVbYW5dKGUpO2lmKCF0LnN1Y2Nlc3MpcmV0dXJuIHQ7dC5odG1sJiZ0aGlzW2pyXSh0Lmh0bWwsdC5iYm94KTtkZWxldGUgdGhpc1thc10uZmFpbGluZ05vZGV9ZWxzZSB0aGlzW2FzXS5nZW5lcmF0b3I9dGhpc1t3bl0oZSx0KTtmb3IoOzspe2NvbnN0IGU9dGhpc1thc10uZ2VuZXJhdG9yLm5leHQoKTtpZihlLmRvbmUpYnJlYWs7Y29uc3QgdD1lLnZhbHVlO2lmKCF0LnN1Y2Nlc3MpcmV0dXJuIHQ7dC5odG1sJiZ0aGlzW2pyXSh0Lmh0bWwsdC5iYm94KX10aGlzW2FzXS5nZW5lcmF0b3I9bnVsbDtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1benNdKGUpe3RoaXNbR25dPW5ldyBTZXQoT2JqZWN0LmtleXMoZSkpfVtEbl0oZSl7Y29uc3QgdD10aGlzW2RuXSxpPXRoaXNbR25dO3JldHVyblsuLi5lXS5maWx0ZXIoKGU9PnQuaGFzKGUpJiYhaS5oYXMoZSkpKX1bWnNdKGUsdD1uZXcgU2V0KXtmb3IoY29uc3QgaSBvZiB0aGlzW2ZuXSlpW05uXShlLHQpfVtObl0oZSx0KXtjb25zdCBpPXRoaXNbYm5dKGUsdCk7aT90aGlzW0VuXShpLGUsdCk6dGhpc1tac10oZSx0KX1bYm5dKGUsdCl7Y29uc3R7dXNlOmksdXNlaHJlZjphfT10aGlzO2lmKCFpJiYhYSlyZXR1cm4gbnVsbDtsZXQgcj1udWxsLHM9bnVsbCxuPW51bGwsbz1pO2lmKGEpe289YTthLnN0YXJ0c1dpdGgoIiNzb20oIikmJmEuZW5kc1dpdGgoIikiKT9zPWEuc2xpY2UoNSwtMSk6YS5zdGFydHNXaXRoKCIuI3NvbSgiKSYmYS5lbmRzV2l0aCgiKSIpP3M9YS5zbGljZSg2LC0xKTphLnN0YXJ0c1dpdGgoIiMiKT9uPWEuc2xpY2UoMSk6YS5zdGFydHNXaXRoKCIuIyIpJiYobj1hLnNsaWNlKDIpKX1lbHNlIGkuc3RhcnRzV2l0aCgiIyIpP249aS5zbGljZSgxKTpzPWk7dGhpcy51c2U9dGhpcy51c2VocmVmPSIiO2lmKG4pcj1lLmdldChuKTtlbHNle3I9c2VhcmNoTm9kZShlLmdldChYcyksdGhpcyxzLCEwLCExKTtyJiYocj1yWzBdKX1pZighcil7d2FybihgWEZBIC0gSW52YWxpZCBwcm90b3R5cGUgcmVmZXJlbmNlOiAke299LmApO3JldHVybiBudWxsfWlmKHJbSHNdIT09dGhpc1tIc10pe3dhcm4oYFhGQSAtIEluY29tcGF0aWJsZSBwcm90b3R5cGU6ICR7cltIc119ICE9PSAke3RoaXNbSHNdfS5gKTtyZXR1cm4gbnVsbH1pZih0LmhhcyhyKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJuIG51bGx9dC5hZGQocik7Y29uc3QgZz1yW2JuXShlLHQpO2cmJnJbRW5dKGcsZSx0KTtyW1pzXShlLHQpO3QuZGVsZXRlKHIpO3JldHVybiByfVtFbl0oZSx0LGkpe2lmKGkuaGFzKGUpKXt3YXJuKCJYRkEgLSBDeWNsZSBkZXRlY3RlZCBpbiBwcm90b3R5cGVzIHVzZS4iKTtyZXR1cm59IXRoaXNbZXNdJiZlW2VzXSYmKHRoaXNbZXNdPWVbZXNdKTtuZXcgU2V0KGkpLmFkZChlKTtmb3IoY29uc3QgdCBvZiB0aGlzW0RuXShlW0duXSkpe3RoaXNbdF09ZVt0XTt0aGlzW0duXSYmdGhpc1tHbl0uYWRkKHQpfWZvcihjb25zdCBhIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZih0aGlzW2RuXS5oYXMoYSkpY29udGludWU7Y29uc3Qgcj10aGlzW2FdLHM9ZVthXTtpZihyIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpe2Zvcihjb25zdCBlIG9mIHJbZm5dKWVbTm5dKHQsaSk7Zm9yKGxldCBhPXJbZm5dLmxlbmd0aCxuPXNbZm5dLmxlbmd0aDthPG47YSsrKXtjb25zdCBzPWVbZm5dW2FdWyRyXSgpO2lmKCFyLnB1c2gocykpYnJlYWs7c1tSbl09dGhpczt0aGlzW2ZuXS5wdXNoKHMpO3NbTm5dKHQsaSl9fWVsc2UgaWYobnVsbD09PXIpe2lmKG51bGwhPT1zKXtjb25zdCBlPXNbJHJdKCk7ZVtSbl09dGhpczt0aGlzW2FdPWU7dGhpc1tmbl0ucHVzaChlKTtlW05uXSh0LGkpfX1lbHNle3JbWnNdKHQsaSk7cyYmcltFbl0ocyx0LGkpfX19c3RhdGljW3BuXShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLm1hcCgoZT0+WEZBT2JqZWN0W3BuXShlKSkpOiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWU/T2JqZWN0LmFzc2lnbih7fSxlKTplfVskcl0oKXtjb25zdCBlPU9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpKTtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRoaXMpKXRyeXtlW3RdPXRoaXNbdF19Y2F0Y2h7c2hhZG93KGUsdCx0aGlzW3RdKX1lW25uXT1gJHtlW0hzXX0ke01uKyt9YDtlW2ZuXT1bXTtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1tkbl0uaGFzKHQpKXtlW3RdPVhGQU9iamVjdFtwbl0odGhpc1t0XSk7Y29udGludWV9Y29uc3QgaT10aGlzW3RdO2VbdF09aSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF5P25ldyBYRkFPYmplY3RBcnJheShpW1NuXSk6bnVsbH1mb3IoY29uc3QgdCBvZiB0aGlzW2ZuXSl7Y29uc3QgaT10W0hzXSxhPXRbJHJdKCk7ZVtmbl0ucHVzaChhKTthW1JuXT1lO251bGw9PT1lW2ldP2VbaV09YTplW2ldW2ZuXS5wdXNoKGEpfXJldHVybiBlfVtRc10oZT1udWxsKXtyZXR1cm4gZT90aGlzW2ZuXS5maWx0ZXIoKHQ9PnRbSHNdPT09ZSkpOnRoaXNbZm5dfVtjc10oZSl7cmV0dXJuIHRoaXNbZV19W0lzXShlLHQsaT0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1toc10oZSx0LGkpKX0qW2hzXShlLHQsaT0hMCl7aWYoInBhcmVudCIhPT1lKXtmb3IoY29uc3QgaSBvZiB0aGlzW2ZuXSl7aVtIc109PT1lJiYoeWllbGQgaSk7aS5uYW1lPT09ZSYmKHlpZWxkIGkpOyh0fHxpW01zXSgpKSYmKHlpZWxkKmlbaHNdKGUsdCwhMSkpfWkmJnRoaXNbZG5dLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbUm5dfX1jbGFzcyBYRkFPYmplY3RBcnJheXtjb25zdHJ1Y3RvcihlPTEvMCl7dGhpc1tTbl09ZTt0aGlzW2ZuXT1bXX1nZXQgaXNYRkFPYmplY3QoKXtyZXR1cm4hMX1nZXQgaXNYRkFPYmplY3RBcnJheSgpe3JldHVybiEwfXB1c2goZSl7aWYodGhpc1tmbl0ubGVuZ3RoPD10aGlzW1NuXSl7dGhpc1tmbl0ucHVzaChlKTtyZXR1cm4hMH13YXJuKGBYRkEgLSBub2RlICIke2VbSHNdfSIgYWNjZXB0cyBubyBtb3JlIHRoYW4gJHt0aGlzW1NuXX0gY2hpbGRyZW5gKTtyZXR1cm4hMX1pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzW2ZuXS5sZW5ndGh9ZHVtcCgpe3JldHVybiAxPT09dGhpc1tmbl0ubGVuZ3RoP3RoaXNbZm5dWzBdW2lzXSgpOnRoaXNbZm5dLm1hcCgoZT0+ZVtpc10oKSkpfVskcl0oKXtjb25zdCBlPW5ldyBYRkFPYmplY3RBcnJheSh0aGlzW1NuXSk7ZVtmbl09dGhpc1tmbl0ubWFwKChlPT5lWyRyXSgpKSk7cmV0dXJuIGV9Z2V0IGNoaWxkcmVuKCl7cmV0dXJuIHRoaXNbZm5dfWNsZWFyKCl7dGhpc1tmbl0ubGVuZ3RoPTB9fWNsYXNzIFhGQUF0dHJpYnV0ZXtjb25zdHJ1Y3RvcihlLHQsaSl7dGhpc1tSbl09ZTt0aGlzW0hzXT10O3RoaXNbZXNdPWk7dGhpc1tBc109ITE7dGhpc1tubl09ImF0dHJpYnV0ZSIrTW4rK31bZnNdKCl7cmV0dXJuIHRoaXNbUm5dfVtrc10oKXtyZXR1cm4hMH1bbHNdKCl7cmV0dXJuIHRoaXNbZXNdLnRyaW0oKX1bJHNdKGUpe2U9ZS52YWx1ZXx8IiI7dGhpc1tlc109ZS50b1N0cmluZygpfVtlbl0oKXtyZXR1cm4gdGhpc1tlc119W1JzXShlKXtyZXR1cm4gdGhpc1tSbl09PT1lfHx0aGlzW1JuXVtSc10oZSl9fWNsYXNzIFhtbE9iamVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlLHQsaT17fSl7c3VwZXIoZSx0KTt0aGlzW2VzXT0iIjt0aGlzW21uXT1udWxsO2lmKCIjdGV4dCIhPT10KXtjb25zdCBlPW5ldyBNYXA7dGhpc1t1bl09ZTtmb3IoY29uc3RbdCxhXW9mIE9iamVjdC5lbnRyaWVzKGkpKWUuc2V0KHQsbmV3IFhGQUF0dHJpYnV0ZSh0aGlzLHQsYSkpO2lmKGkuaGFzT3duUHJvcGVydHkodnMpKXtjb25zdCBlPWlbdnNdLnhmYS5kYXRhTm9kZTt2b2lkIDAhPT1lJiYoImRhdGFHcm91cCI9PT1lP3RoaXNbbW5dPSExOiJkYXRhVmFsdWUiPT09ZSYmKHRoaXNbbW5dPSEwKSl9fXRoaXNbQXNdPSExfVtybl0oZSl7Y29uc3QgdD10aGlzW0hzXTtpZigiI3RleHQiPT09dCl7ZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXNbZXNdKSk7cmV0dXJufWNvbnN0IGk9dXRmOFN0cmluZ1RvU3RyaW5nKHQpLGE9dGhpc1tKc109PT1Vbj8ieGZhOiI6IiI7ZS5wdXNoKGA8JHthfSR7aX1gKTtmb3IoY29uc3RbdCxpXW9mIHRoaXNbdW5dLmVudHJpZXMoKSl7Y29uc3QgYT11dGY4U3RyaW5nVG9TdHJpbmcodCk7ZS5wdXNoKGAgJHthfT0iJHtlbmNvZGVUb1htbFN0cmluZyhpW2VzXSl9ImApfW51bGwhPT10aGlzW21uXSYmKHRoaXNbbW5dP2UucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YVZhbHVlIicpOmUucHVzaCgnIHhmYTpkYXRhTm9kZT0iZGF0YUdyb3VwIicpKTtpZih0aGlzW2VzXXx8MCE9PXRoaXNbZm5dLmxlbmd0aCl7ZS5wdXNoKCI+Iik7aWYodGhpc1tlc10pInN0cmluZyI9PXR5cGVvZiB0aGlzW2VzXT9lLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpc1tlc10pKTp0aGlzW2VzXVtybl0oZSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW2ZuXSl0W3JuXShlKTtlLnB1c2goYDwvJHthfSR7aX0+YCl9ZWxzZSBlLnB1c2goIi8+Iil9W1lzXShlKXtpZih0aGlzW2VzXSl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbSnNdLCIjdGV4dCIpO3RoaXNbWHJdKGUpO2VbZXNdPXRoaXNbZXNdO3RoaXNbZXNdPSIifXRoaXNbWHJdKGUpO3JldHVybiEwfVtUc10oZSl7dGhpc1tlc10rPWV9W3JzXSgpe2lmKHRoaXNbZXNdJiZ0aGlzW2ZuXS5sZW5ndGg+MCl7Y29uc3QgZT1uZXcgWG1sT2JqZWN0KHRoaXNbSnNdLCIjdGV4dCIpO3RoaXNbWHJdKGUpO2VbZXNdPXRoaXNbZXNdO2RlbGV0ZSB0aGlzW2VzXX19W2FuXSgpe3JldHVybiIjdGV4dCI9PT10aGlzW0hzXT9IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6IiN0ZXh0Iix2YWx1ZTp0aGlzW2VzXX0pOkhUTUxSZXN1bHQuRU1QVFl9W1FzXShlPW51bGwpe3JldHVybiBlP3RoaXNbZm5dLmZpbHRlcigodD0+dFtIc109PT1lKSk6dGhpc1tmbl19W29zXSgpe3JldHVybiB0aGlzW3VuXX1bY3NdKGUpe2NvbnN0IHQ9dGhpc1t1bl0uZ2V0KGUpO3JldHVybiB2b2lkIDAhPT10P3Q6dGhpc1tRc10oZSl9Kltoc10oZSx0KXtjb25zdCBpPXRoaXNbdW5dLmdldChlKTtpJiYoeWllbGQgaSk7Zm9yKGNvbnN0IGkgb2YgdGhpc1tmbl0pe2lbSHNdPT09ZSYmKHlpZWxkIGkpO3QmJih5aWVsZCppW2hzXShlLHQpKX19Kltuc10oZSx0KXtjb25zdCBpPXRoaXNbdW5dLmdldChlKTshaXx8dCYmaVtBc118fCh5aWVsZCBpKTtmb3IoY29uc3QgaSBvZiB0aGlzW2ZuXSl5aWVsZCppW25zXShlLHQpfSpbQnNdKGUsdCxpKXtmb3IoY29uc3QgYSBvZiB0aGlzW2ZuXSl7YVtIc10hPT1lfHxpJiZhW0FzXXx8KHlpZWxkIGEpO3QmJih5aWVsZCphW0JzXShlLHQsaSkpfX1ba3NdKCl7cmV0dXJuIG51bGw9PT10aGlzW21uXT8wPT09dGhpc1tmbl0ubGVuZ3RofHx0aGlzW2ZuXVswXVtKc109PT1nbi54aHRtbC5pZDp0aGlzW21uXX1bbHNdKCl7cmV0dXJuIG51bGw9PT10aGlzW21uXT8wPT09dGhpc1tmbl0ubGVuZ3RoP3RoaXNbZXNdLnRyaW0oKTp0aGlzW2ZuXVswXVtKc109PT1nbi54aHRtbC5pZD90aGlzW2ZuXVswXVtlbl0oKS50cmltKCk6bnVsbDp0aGlzW2VzXS50cmltKCl9WyRzXShlKXtlPWUudmFsdWV8fCIiO3RoaXNbZXNdPWUudG9TdHJpbmcoKX1baXNdKGU9ITEpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtlJiYodC4kbnM9dGhpc1tKc10pO3RoaXNbZXNdJiYodC4kY29udGVudD10aGlzW2VzXSk7dC4kbmFtZT10aGlzW0hzXTt0LmNoaWxkcmVuPVtdO2Zvcihjb25zdCBpIG9mIHRoaXNbZm5dKXQuY2hpbGRyZW4ucHVzaChpW2lzXShlKSk7dC5hdHRyaWJ1dGVzPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2UsaV1vZiB0aGlzW3VuXSl0LmF0dHJpYnV0ZXNbZV09aVtlc107cmV0dXJuIHR9fWNsYXNzIENvbnRlbnRPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpO3RoaXNbZXNdPSIifVtUc10oZSl7dGhpc1tlc10rPWV9W3JzXSgpe319Y2xhc3MgT3B0aW9uT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlLHQsaSl7c3VwZXIoZSx0KTt0aGlzW2tuXT1pfVtyc10oKXt0aGlzW2VzXT1nZXRLZXl3b3JkKHtkYXRhOnRoaXNbZXNdLGRlZmF1bHRWYWx1ZTp0aGlzW2tuXVswXSx2YWxpZGF0ZTplPT50aGlzW2tuXS5pbmNsdWRlcyhlKX0pfVtWcl0oZSl7c3VwZXJbVnJdKGUpO2RlbGV0ZSB0aGlzW2tuXX19Y2xhc3MgU3RyaW5nT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtbcnNdKCl7dGhpc1tlc109dGhpc1tlc10udHJpbSgpfX1jbGFzcyBJbnRlZ2VyT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlLHQsaSxhKXtzdXBlcihlLHQpO3RoaXNbeW5dPWk7dGhpc1t4bl09YX1bcnNdKCl7dGhpc1tlc109Z2V0SW50ZWdlcih7ZGF0YTp0aGlzW2VzXSxkZWZhdWx0VmFsdWU6dGhpc1t5bl0sdmFsaWRhdGU6dGhpc1t4bl19KX1bVnJdKGUpe3N1cGVyW1ZyXShlKTtkZWxldGUgdGhpc1t5bl07ZGVsZXRlIHRoaXNbeG5dfX1jbGFzcyBPcHRpb24wMSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMCwoZT0+MT09PWUpKX19Y2xhc3MgT3B0aW9uMTAgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LDEsKGU9PjA9PT1lKSl9fWZ1bmN0aW9uIG1lYXN1cmVUb1N0cmluZyhlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/IjBweCI6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtlfXB4YDpgJHtlLnRvRml4ZWQoMil9cHhgfWNvbnN0IExuPXthbmNob3JUeXBlKGUsdCl7Y29uc3QgaT1lW2RzXSgpO2lmKGkmJighaS5sYXlvdXR8fCJwb3NpdGlvbiI9PT1pLmxheW91dCkpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTtzd2l0Y2goZS5hbmNob3JUeXBlKXtjYXNlImJvdHRvbUNlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwgLTEwMCUpIjticmVhaztjYXNlImJvdHRvbUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTEwMCUpIjticmVhaztjYXNlImJvdHRvbVJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwtMTAwJSkiO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLC01MCUpIjticmVhaztjYXNlIm1pZGRsZUxlZnQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKDAsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC01MCUpIjticmVhaztjYXNlInRvcENlbnRlciI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTUwJSwwKSI7YnJlYWs7Y2FzZSJ0b3BSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsMCkifX19LGRpbWVuc2lvbnMoZSx0KXtjb25zdCBpPWVbZHNdKCk7bGV0IGE9ZS53O2NvbnN0IHI9ZS5oO2lmKGkubGF5b3V0Py5pbmNsdWRlcygicm93Iikpe2NvbnN0IHQ9aVthc10scj1lLmNvbFNwYW47bGV0IHM7aWYoLTE9PT1yKXtzPXQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTt0LmN1cnJlbnRDb2x1bW49MH1lbHNle3M9dC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uLHQuY3VycmVudENvbHVtbityKS5yZWR1Y2UoKChlLHQpPT5lK3QpLDApO3QuY3VycmVudENvbHVtbj0odC5jdXJyZW50Q29sdW1uK2UuY29sU3BhbikldC5jb2x1bW5XaWR0aHMubGVuZ3RofWlzTmFOKHMpfHwoYT1lLnc9cyl9dC53aWR0aD0iIiE9PWE/bWVhc3VyZVRvU3RyaW5nKGEpOiJhdXRvIjt0LmhlaWdodD0iIiE9PXI/bWVhc3VyZVRvU3RyaW5nKHIpOiJhdXRvIn0scG9zaXRpb24oZSx0KXtjb25zdCBpPWVbZHNdKCk7aWYoIWk/LmxheW91dHx8InBvc2l0aW9uIj09PWkubGF5b3V0KXt0LnBvc2l0aW9uPSJhYnNvbHV0ZSI7dC5sZWZ0PW1lYXN1cmVUb1N0cmluZyhlLngpO3QudG9wPW1lYXN1cmVUb1N0cmluZyhlLnkpfX0scm90YXRlKGUsdCl7aWYoZS5yb3RhdGUpeyJ0cmFuc2Zvcm0iaW4gdHx8KHQudHJhbnNmb3JtPSIiKTt0LnRyYW5zZm9ybSs9YHJvdGF0ZSgtJHtlLnJvdGF0ZX1kZWcpYDt0LnRyYW5zZm9ybU9yaWdpbj0idG9wIGxlZnQifX0scHJlc2VuY2UoZSx0KXtzd2l0Y2goZS5wcmVzZW5jZSl7Y2FzZSJpbnZpc2libGUiOnQudmlzaWJpbGl0eT0iaGlkZGVuIjticmVhaztjYXNlImhpZGRlbiI6Y2FzZSJpbmFjdGl2ZSI6dC5kaXNwbGF5PSJub25lIn19LGhBbGlnbihlLHQpe2lmKCJwYXJhIj09PWVbSHNdKXN3aXRjaChlLmhBbGlnbil7Y2FzZSJqdXN0aWZ5QWxsIjp0LnRleHRBbGlnbj0ianVzdGlmeS1hbGwiO2JyZWFrO2Nhc2UicmFkaXgiOnQudGV4dEFsaWduPSJsZWZ0IjticmVhaztkZWZhdWx0OnQudGV4dEFsaWduPWUuaEFsaWdufWVsc2Ugc3dpdGNoKGUuaEFsaWduKXtjYXNlImxlZnQiOnQuYWxpZ25TZWxmPSJzdGFydCI7YnJlYWs7Y2FzZSJjZW50ZXIiOnQuYWxpZ25TZWxmPSJjZW50ZXIiO2JyZWFrO2Nhc2UicmlnaHQiOnQuYWxpZ25TZWxmPSJlbmQifX0sbWFyZ2luKGUsdCl7ZS5tYXJnaW4mJih0Lm1hcmdpbj1lLm1hcmdpbltzbl0oKS5tYXJnaW4pfX07ZnVuY3Rpb24gc2V0TWluTWF4RGltZW5zaW9ucyhlLHQpe2lmKCJwb3NpdGlvbiI9PT1lW2RzXSgpLmxheW91dCl7ZS5taW5XPjAmJih0Lm1pbldpZHRoPW1lYXN1cmVUb1N0cmluZyhlLm1pblcpKTtlLm1heFc+MCYmKHQubWF4V2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWF4VykpO2UubWluSD4wJiYodC5taW5IZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGUubWluSCkpO2UubWF4SD4wJiYodC5tYXhIZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGUubWF4SCkpfX1mdW5jdGlvbiBsYXlvdXRUZXh0KGUsdCxpLGEscixzKXtjb25zdCBuPW5ldyBUZXh0TWVhc3VyZSh0LGksYSxyKTsic3RyaW5nIj09dHlwZW9mIGU/bi5hZGRTdHJpbmcoZSk6ZVtxc10obik7cmV0dXJuIG4uY29tcHV0ZShzKX1mdW5jdGlvbiBsYXlvdXROb2RlKGUsdCl7bGV0IGk9bnVsbCxhPW51bGwscj0hMTtpZigoIWUud3x8IWUuaCkmJmUudmFsdWUpe2xldCBzPTAsbj0wO2lmKGUubWFyZ2luKXtzPWUubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0O249ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IG89bnVsbCxnPW51bGw7aWYoZS5wYXJhKXtnPU9iamVjdC5jcmVhdGUobnVsbCk7bz0iIj09PWUucGFyYS5saW5lSGVpZ2h0P251bGw6ZS5wYXJhLmxpbmVIZWlnaHQ7Zy50b3A9IiI9PT1lLnBhcmEuc3BhY2VBYm92ZT8wOmUucGFyYS5zcGFjZUFib3ZlO2cuYm90dG9tPSIiPT09ZS5wYXJhLnNwYWNlQmVsb3c/MDplLnBhcmEuc3BhY2VCZWxvdztnLmxlZnQ9IiI9PT1lLnBhcmEubWFyZ2luTGVmdD8wOmUucGFyYS5tYXJnaW5MZWZ0O2cucmlnaHQ9IiI9PT1lLnBhcmEubWFyZ2luUmlnaHQ/MDplLnBhcmEubWFyZ2luUmlnaHR9bGV0IGM9ZS5mb250O2lmKCFjKXtjb25zdCB0PWVbcHNdKCk7bGV0IGk9ZVtmc10oKTtmb3IoO2kmJmkhPT10Oyl7aWYoaS5mb250KXtjPWkuZm9udDticmVha31pPWlbZnNdKCl9fWNvbnN0IGg9KGUud3x8dC53aWR0aCktcyxsPWVbbXNdLmZvbnRGaW5kZXI7aWYoZS52YWx1ZS5leERhdGEmJmUudmFsdWUuZXhEYXRhW2VzXSYmInRleHQvaHRtbCI9PT1lLnZhbHVlLmV4RGF0YS5jb250ZW50VHlwZSl7Y29uc3QgdD1sYXlvdXRUZXh0KGUudmFsdWUuZXhEYXRhW2VzXSxjLGcsbyxsLGgpO2E9dC53aWR0aDtpPXQuaGVpZ2h0O3I9dC5pc0Jyb2tlbn1lbHNle2NvbnN0IHQ9ZS52YWx1ZVtlbl0oKTtpZih0KXtjb25zdCBlPWxheW91dFRleHQodCxjLGcsbyxsLGgpO2E9ZS53aWR0aDtpPWUuaGVpZ2h0O3I9ZS5pc0Jyb2tlbn19bnVsbD09PWF8fGUud3x8KGErPXMpO251bGw9PT1pfHxlLmh8fChpKz1uKX1yZXR1cm57dzphLGg6aSxpc0Jyb2tlbjpyfX1mdW5jdGlvbiBjb21wdXRlQmJveChlLHQsaSl7bGV0IGE7aWYoIiIhPT1lLncmJiIiIT09ZS5oKWE9W2UueCxlLnksZS53LGUuaF07ZWxzZXtpZighaSlyZXR1cm4gbnVsbDtsZXQgcj1lLnc7aWYoIiI9PT1yKXtpZigwPT09ZS5tYXhXKXtjb25zdCB0PWVbZHNdKCk7cj0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC53PzA6ZS5taW5XfWVsc2Ugcj1NYXRoLm1pbihlLm1heFcsaS53aWR0aCk7dC5hdHRyaWJ1dGVzLnN0eWxlLndpZHRoPW1lYXN1cmVUb1N0cmluZyhyKX1sZXQgcz1lLmg7aWYoIiI9PT1zKXtpZigwPT09ZS5tYXhIKXtjb25zdCB0PWVbZHNdKCk7cz0icG9zaXRpb24iPT09dC5sYXlvdXQmJiIiIT09dC5oPzA6ZS5taW5IfWVsc2Ugcz1NYXRoLm1pbihlLm1heEgsaS5oZWlnaHQpO3QuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHMpfWE9W2UueCxlLnkscixzXX1yZXR1cm4gYX1mdW5jdGlvbiBmaXhEaW1lbnNpb25zKGUpe2NvbnN0IHQ9ZVtkc10oKTtpZih0LmxheW91dD8uaW5jbHVkZXMoInJvdyIpKXtjb25zdCBpPXRbYXNdLGE9ZS5jb2xTcGFuO2xldCByO3I9LTE9PT1hP2kuY29sdW1uV2lkdGhzLnNsaWNlKGkuY3VycmVudENvbHVtbikucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKTppLmNvbHVtbldpZHRocy5zbGljZShpLmN1cnJlbnRDb2x1bW4saS5jdXJyZW50Q29sdW1uK2EpLnJlZHVjZSgoKGUsdCk9PmUrdCksMCk7aXNOYU4ocil8fChlLnc9cil9dC5sYXlvdXQmJiJwb3NpdGlvbiIhPT10LmxheW91dCYmKGUueD1lLnk9MCk7InRhYmxlIj09PWUubGF5b3V0JiYiIj09PWUudyYmQXJyYXkuaXNBcnJheShlLmNvbHVtbldpZHRocykmJihlLnc9ZS5jb2x1bW5XaWR0aHMucmVkdWNlKCgoZSx0KT0+ZSt0KSwwKSl9ZnVuY3Rpb24gbGF5b3V0Q2xhc3MoZSl7c3dpdGNoKGUubGF5b3V0KXtjYXNlInBvc2l0aW9uIjpkZWZhdWx0OnJldHVybiJ4ZmFQb3NpdGlvbiI7Y2FzZSJsci10YiI6cmV0dXJuInhmYUxyVGIiO2Nhc2Uicmwtcm93IjpyZXR1cm4ieGZhUmxSb3ciO2Nhc2UicmwtdGIiOnJldHVybiJ4ZmFSbFRiIjtjYXNlInJvdyI6cmV0dXJuInhmYVJvdyI7Y2FzZSJ0YWJsZSI6cmV0dXJuInhmYVRhYmxlIjtjYXNlInRiIjpyZXR1cm4ieGZhVGIifX1mdW5jdGlvbiB0b1N0eWxlKGUsLi4udCl7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9ZVthXTtpZihudWxsIT09dClpZihMbi5oYXNPd25Qcm9wZXJ0eShhKSlMblthXShlLGkpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdCl7Y29uc3QgZT10W3NuXSgpO2U/T2JqZWN0LmFzc2lnbihpLGUpOndhcm4oYChERUJVRykgLSBYRkEgLSBzdHlsZSBmb3IgJHthfSBub3QgaW1wbGVtZW50ZWQgeWV0YCl9fXJldHVybiBpfWZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXIoZSx0KXtjb25zdHthdHRyaWJ1dGVzOml9PXQse3N0eWxlOmF9PWkscj17bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVdyYXBwZXIiXSxzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSxjaGlsZHJlbjpbXX07aS5jbGFzcy5wdXNoKCJ4ZmFXcmFwcGVkIik7aWYoZS5ib3JkZXIpe2NvbnN0e3dpZHRoczppLGluc2V0czpzfT1lLmJvcmRlclthc107bGV0IG4sbyxnPXNbMF0sYz1zWzNdO2NvbnN0IGg9c1swXStzWzJdLGw9c1sxXStzWzNdO3N3aXRjaChlLmJvcmRlci5oYW5kKXtjYXNlImV2ZW4iOmctPWlbMF0vMjtjLT1pWzNdLzI7bj1gY2FsYygxMDAlICsgJHsoaVsxXStpWzNdKS8yLWx9cHgpYDtvPWBjYWxjKDEwMCUgKyAkeyhpWzBdK2lbMl0pLzItaH1weClgO2JyZWFrO2Nhc2UibGVmdCI6Zy09aVswXTtjLT1pWzNdO249YGNhbGMoMTAwJSArICR7aVsxXStpWzNdLWx9cHgpYDtvPWBjYWxjKDEwMCUgKyAke2lbMF0raVsyXS1ofXB4KWA7YnJlYWs7Y2FzZSJyaWdodCI6bj1sP2BjYWxjKDEwMCUgLSAke2x9cHgpYDoiMTAwJSI7bz1oP2BjYWxjKDEwMCUgLSAke2h9cHgpYDoiMTAwJSJ9Y29uc3QgQz1bInhmYUJvcmRlciJdO2lzUHJpbnRPbmx5KGUuYm9yZGVyKSYmQy5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBRPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOkMsc3R5bGU6e3RvcDpgJHtnfXB4YCxsZWZ0OmAke2N9cHhgLHdpZHRoOm4saGVpZ2h0Om99fSxjaGlsZHJlbjpbXX07Zm9yKGNvbnN0IGUgb2ZbImJvcmRlciIsImJvcmRlcldpZHRoIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJTdHlsZSJdKWlmKHZvaWQgMCE9PWFbZV0pe1EuYXR0cmlidXRlcy5zdHlsZVtlXT1hW2VdO2RlbGV0ZSBhW2VdfXIuY2hpbGRyZW4ucHVzaChRLHQpfWVsc2Ugci5jaGlsZHJlbi5wdXNoKHQpO2Zvcihjb25zdCBlIG9mWyJiYWNrZ3JvdW5kIiwiYmFja2dyb3VuZENsaXAiLCJ0b3AiLCJsZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJtaW5XaWR0aCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwidHJhbnNmb3JtIiwidHJhbnNmb3JtT3JpZ2luIiwidmlzaWJpbGl0eSJdKWlmKHZvaWQgMCE9PWFbZV0pe3IuYXR0cmlidXRlcy5zdHlsZVtlXT1hW2VdO2RlbGV0ZSBhW2VdfXIuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiPT09YS5wb3NpdGlvbj8iYWJzb2x1dGUiOiJyZWxhdGl2ZSI7ZGVsZXRlIGEucG9zaXRpb247aWYoYS5hbGlnblNlbGYpe3IuYXR0cmlidXRlcy5zdHlsZS5hbGlnblNlbGY9YS5hbGlnblNlbGY7ZGVsZXRlIGEuYWxpZ25TZWxmfXJldHVybiByfWZ1bmN0aW9uIGZpeFRleHRJbmRlbnQoZSl7Y29uc3QgdD1nZXRNZWFzdXJlbWVudChlLnRleHRJbmRlbnQsIjBweCIpO2lmKHQ+PTApcmV0dXJuO2NvbnN0IGk9InBhZGRpbmciKygibGVmdCI9PT0oInJpZ2h0Ij09PWUudGV4dEFsaWduPyJyaWdodCI6ImxlZnQiKT8iTGVmdCI6IlJpZ2h0IiksYT1nZXRNZWFzdXJlbWVudChlW2ldLCIwcHgiKTtlW2ldPWEtdCsicHgifWZ1bmN0aW9uIHNldEFjY2VzcyhlLHQpe3N3aXRjaChlLmFjY2Vzcyl7Y2FzZSJub25JbnRlcmFjdGl2ZSI6dC5wdXNoKCJ4ZmFOb25JbnRlcmFjdGl2ZSIpO2JyZWFrO2Nhc2UicmVhZE9ubHkiOnQucHVzaCgieGZhUmVhZE9ubHkiKTticmVhaztjYXNlInByb3RlY3RlZCI6dC5wdXNoKCJ4ZmFEaXNhYmxlZCIpfX1mdW5jdGlvbiBpc1ByaW50T25seShlKXtyZXR1cm4gZS5yZWxldmFudC5sZW5ndGg+MCYmIWUucmVsZXZhbnRbMF0uZXhjbHVkZWQmJiJwcmludCI9PT1lLnJlbGV2YW50WzBdLnZpZXduYW1lfWZ1bmN0aW9uIGdldEN1cnJlbnRQYXJhKGUpe2NvbnN0IHQ9ZVtwc10oKVthc10ucGFyYVN0YWNrO3JldHVybiB0Lmxlbmd0aD90LmF0KC0xKTpudWxsfWZ1bmN0aW9uIHNldFBhcmEoZSx0LGkpe2lmKGkuYXR0cmlidXRlcy5jbGFzcz8uaW5jbHVkZXMoInhmYVJpY2giKSl7aWYodCl7IiI9PT1lLmgmJih0LmhlaWdodD0iYXV0byIpOyIiPT09ZS53JiYodC53aWR0aD0iYXV0byIpfWNvbnN0IGE9Z2V0Q3VycmVudFBhcmEoZSk7aWYoYSl7Y29uc3QgZT1pLmF0dHJpYnV0ZXMuc3R5bGU7ZS5kaXNwbGF5PSJmbGV4IjtlLmZsZXhEaXJlY3Rpb249ImNvbHVtbiI7c3dpdGNoKGEudkFsaWduKXtjYXNlInRvcCI6ZS5qdXN0aWZ5Q29udGVudD0ic3RhcnQiO2JyZWFrO2Nhc2UiYm90dG9tIjplLmp1c3RpZnlDb250ZW50PSJlbmQiO2JyZWFrO2Nhc2UibWlkZGxlIjplLmp1c3RpZnlDb250ZW50PSJjZW50ZXIifWNvbnN0IHQ9YVtzbl0oKTtmb3IoY29uc3RbaSxhXW9mIE9iamVjdC5lbnRyaWVzKHQpKWkgaW4gZXx8KGVbaV09YSl9fX1mdW5jdGlvbiBzZXRGb250RmFtaWx5KGUsdCxpLGEpe2lmKCFpKXtkZWxldGUgYS5mb250RmFtaWx5O3JldHVybn1jb25zdCByPXN0cmlwUXVvdGVzKGUudHlwZWZhY2UpO2EuZm9udEZhbWlseT1gIiR7cn0iYDtjb25zdCBzPWkuZmluZChyKTtpZihzKXtjb25zdHtmb250RmFtaWx5Oml9PXMucmVndWxhci5jc3NGb250SW5mbztpIT09ciYmKGEuZm9udEZhbWlseT1gIiR7aX0iYCk7Y29uc3Qgbj1nZXRDdXJyZW50UGFyYSh0KTtpZihuJiYiIiE9PW4ubGluZUhlaWdodClyZXR1cm47aWYoYS5saW5lSGVpZ2h0KXJldHVybjtjb25zdCBvPXNlbGVjdEZvbnQoZSxzKTtvJiYoYS5saW5lSGVpZ2h0PU1hdGgubWF4KDEuMixvLmxpbmVIZWlnaHQpKX19ZnVuY3Rpb24gZml4VVJMKGUpe2NvbnN0IHQ9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybChlLG51bGwse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtyZXR1cm4gdD90LmhyZWY6bnVsbH1mdW5jdGlvbiBjcmVhdGVMaW5lKGUsdCl7cmV0dXJue25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJsci10YiI9PT1lLmxheW91dD8ieGZhTHIiOiJ4ZmFSbCJdfSxjaGlsZHJlbjp0fX1mdW5jdGlvbiBmbHVzaEhUTUwoZSl7aWYoIWVbYXNdKXJldHVybiBudWxsO2NvbnN0IHQ9e25hbWU6ImRpdiIsYXR0cmlidXRlczplW2FzXS5hdHRyaWJ1dGVzLGNoaWxkcmVuOmVbYXNdLmNoaWxkcmVufTtpZihlW2FzXS5mYWlsaW5nTm9kZSl7Y29uc3QgaT1lW2FzXS5mYWlsaW5nTm9kZVtzc10oKTtpJiYoZS5sYXlvdXQuZW5kc1dpdGgoIi10YiIpP3QuY2hpbGRyZW4ucHVzaChjcmVhdGVMaW5lKGUsW2ldKSk6dC5jaGlsZHJlbi5wdXNoKGkpKX1yZXR1cm4gMD09PXQuY2hpbGRyZW4ubGVuZ3RoP251bGw6dH1mdW5jdGlvbiBhZGRIVE1MKGUsdCxpKXtjb25zdCBhPWVbYXNdLHI9YS5hdmFpbGFibGVTcGFjZSxbcyxuLG8sZ109aTtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UicG9zaXRpb24iOmEud2lkdGg9TWF0aC5tYXgoYS53aWR0aCxzK28pO2EuaGVpZ2h0PU1hdGgubWF4KGEuaGVpZ2h0LG4rZyk7YS5jaGlsZHJlbi5wdXNoKHQpO2JyZWFrO2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOmlmKCFhLmxpbmV8fDE9PT1hLmF0dGVtcHQpe2EubGluZT1jcmVhdGVMaW5lKGUsW10pO2EuY2hpbGRyZW4ucHVzaChhLmxpbmUpO2EubnVtYmVySW5MaW5lPTB9YS5udW1iZXJJbkxpbmUrPTE7YS5saW5lLmNoaWxkcmVuLnB1c2godCk7aWYoMD09PWEuYXR0ZW1wdCl7YS5jdXJyZW50V2lkdGgrPW87YS5oZWlnaHQ9TWF0aC5tYXgoYS5oZWlnaHQsYS5wcmV2SGVpZ2h0K2cpfWVsc2V7YS5jdXJyZW50V2lkdGg9bzthLnByZXZIZWlnaHQ9YS5oZWlnaHQ7YS5oZWlnaHQrPWc7YS5hdHRlbXB0PTB9YS53aWR0aD1NYXRoLm1heChhLndpZHRoLGEuY3VycmVudFdpZHRoKTticmVhaztjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnthLmNoaWxkcmVuLnB1c2godCk7YS53aWR0aCs9bzthLmhlaWdodD1NYXRoLm1heChhLmhlaWdodCxnKTtjb25zdCBlPW1lYXN1cmVUb1N0cmluZyhhLmhlaWdodCk7Zm9yKGNvbnN0IHQgb2YgYS5jaGlsZHJlbil0LmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PWU7YnJlYWt9Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6YS53aWR0aD1NYXRoLm1pbihyLndpZHRoLE1hdGgubWF4KGEud2lkdGgsbykpO2EuaGVpZ2h0Kz1nO2EuY2hpbGRyZW4ucHVzaCh0KX19ZnVuY3Rpb24gZ2V0QXZhaWxhYmxlU3BhY2UoZSl7Y29uc3QgdD1lW2FzXS5hdmFpbGFibGVTcGFjZSxpPWUubWFyZ2luP2UubWFyZ2luLnRvcEluc2V0K2UubWFyZ2luLmJvdHRvbUluc2V0OjAsYT1lLm1hcmdpbj9lLm1hcmdpbi5sZWZ0SW5zZXQrZS5tYXJnaW4ucmlnaHRJbnNldDowO3N3aXRjaChlLmxheW91dCl7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6cmV0dXJuIDA9PT1lW2FzXS5hdHRlbXB0P3t3aWR0aDp0LndpZHRoLWEtZVthc10uY3VycmVudFdpZHRoLGhlaWdodDp0LmhlaWdodC1pLWVbYXNdLnByZXZIZWlnaHR9Ont3aWR0aDp0LndpZHRoLWEsaGVpZ2h0OnQuaGVpZ2h0LWktZVthc10uaGVpZ2h0fTtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybnt3aWR0aDplW2FzXS5jb2x1bW5XaWR0aHMuc2xpY2UoZVthc10uY3VycmVudENvbHVtbikucmVkdWNlKCgoZSx0KT0+ZSt0KSksaGVpZ2h0OnQuaGVpZ2h0LWF9O2Nhc2UidGFibGUiOmNhc2UidGIiOnJldHVybnt3aWR0aDp0LndpZHRoLWEsaGVpZ2h0OnQuaGVpZ2h0LWktZVthc10uaGVpZ2h0fTtkZWZhdWx0OnJldHVybiB0fX1mdW5jdGlvbiBjaGVja0RpbWVuc2lvbnMoZSx0KXtpZihudWxsPT09ZVtwc10oKVthc10uZmlyc3RVbnNwbGl0dGFibGUpcmV0dXJuITA7aWYoMD09PWUud3x8MD09PWUuaClyZXR1cm4hMDtjb25zdCBpPWVbZHNdKCksYT1pW2FzXT8uYXR0ZW1wdHx8MCxbLHIscyxuXT1mdW5jdGlvbiBnZXRUcmFuc2Zvcm1lZEJCb3goZSl7bGV0IHQsaSxhPSIiPT09ZS53P05hTjplLncscj0iIj09PWUuaD9OYU46ZS5oLFtzLG5dPVswLDBdO3N3aXRjaChlLmFuY2hvclR5cGV8fCIiKXtjYXNlImJvdHRvbUNlbnRlciI6W3Msbl09W2EvMixyXTticmVhaztjYXNlImJvdHRvbUxlZnQiOltzLG5dPVswLHJdO2JyZWFrO2Nhc2UiYm90dG9tUmlnaHQiOltzLG5dPVthLHJdO2JyZWFrO2Nhc2UibWlkZGxlQ2VudGVyIjpbcyxuXT1bYS8yLHIvMl07YnJlYWs7Y2FzZSJtaWRkbGVMZWZ0IjpbcyxuXT1bMCxyLzJdO2JyZWFrO2Nhc2UibWlkZGxlUmlnaHQiOltzLG5dPVthLHIvMl07YnJlYWs7Y2FzZSJ0b3BDZW50ZXIiOltzLG5dPVthLzIsMF07YnJlYWs7Y2FzZSJ0b3BSaWdodCI6W3Msbl09W2EsMF19c3dpdGNoKGUucm90YXRlfHwwKXtjYXNlIDA6W3QsaV09Wy1zLC1uXTticmVhaztjYXNlIDkwOlt0LGldPVstbixzXTtbYSxyXT1bciwtYV07YnJlYWs7Y2FzZSAxODA6W3QsaV09W3Msbl07W2Escl09Wy1hLC1yXTticmVhaztjYXNlIDI3MDpbdCxpXT1bbiwtc107W2Escl09Wy1yLGFdfXJldHVybltlLngrdCtNYXRoLm1pbigwLGEpLGUueStpK01hdGgubWluKDAsciksTWF0aC5hYnMoYSksTWF0aC5hYnMocildfShlKTtzd2l0Y2goaS5sYXlvdXQpe2Nhc2UibHItdGIiOmNhc2UicmwtdGIiOnJldHVybiAwPT09YT9lW3BzXSgpW2FzXS5ub0xheW91dEZhaWx1cmU/IiIhPT1lLnc/TWF0aC5yb3VuZChzLXQud2lkdGgpPD0yOnQud2lkdGg+MjohKCIiIT09ZS5oJiZNYXRoLnJvdW5kKG4tdC5oZWlnaHQpPjIpJiYoIiIhPT1lLnc/TWF0aC5yb3VuZChzLXQud2lkdGgpPD0yfHwwPT09aVthc10ubnVtYmVySW5MaW5lJiZ0LmhlaWdodD4yOnQud2lkdGg+Mik6ISFlW3BzXSgpW2FzXS5ub0xheW91dEZhaWx1cmV8fCEoIiIhPT1lLmgmJk1hdGgucm91bmQobi10LmhlaWdodCk+MikmJigoIiI9PT1lLnd8fE1hdGgucm91bmQocy10LndpZHRoKTw9Mnx8IWlbeHNdKCkpJiZ0LmhlaWdodD4yKTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm4hIWVbcHNdKClbYXNdLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxlW0dzXSgpPygiIj09PWUud3x8TWF0aC5yb3VuZChzLXQud2lkdGgpPD0yfHwhaVt4c10oKSkmJnQuaGVpZ2h0PjI6TWF0aC5yb3VuZChuLXQuaGVpZ2h0KTw9Mik7Y2FzZSJwb3NpdGlvbiI6aWYoZVtwc10oKVthc10ubm9MYXlvdXRGYWlsdXJlKXJldHVybiEwO2lmKCIiPT09ZS5ofHxNYXRoLnJvdW5kKG4rci10LmhlaWdodCk8PTIpcmV0dXJuITA7cmV0dXJuIG4rcj5lW3BzXSgpW2FzXS5jdXJyZW50Q29udGVudEFyZWEuaDtjYXNlInJsLXJvdyI6Y2FzZSJyb3ciOnJldHVybiEhZVtwc10oKVthc10ubm9MYXlvdXRGYWlsdXJlfHwoIiI9PT1lLmh8fE1hdGgucm91bmQobi10LmhlaWdodCk8PTIpO2RlZmF1bHQ6cmV0dXJuITB9fWNvbnN0IEpuPWduLnRlbXBsYXRlLmlkLEhuPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdm49L15IKFxkKykkLyxZbj1uZXcgU2V0KFsiaW1hZ2UvZ2lmIiwiaW1hZ2UvanBlZyIsImltYWdlL2pwZyIsImltYWdlL3BqcGVnIiwiaW1hZ2UvcG5nIiwiaW1hZ2UvYXBuZyIsImltYWdlL3gtcG5nIiwiaW1hZ2UvYm1wIiwiaW1hZ2UveC1tcy1ibXAiLCJpbWFnZS90aWZmIiwiaW1hZ2UvdGlmIiwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIl0pLEtuPVtbWzY2LDc3XSwiaW1hZ2UvYm1wIl0sW1syNTUsMjE2LDI1NV0sImltYWdlL2pwZWciXSxbWzczLDczLDQyLDBdLCJpbWFnZS90aWZmIl0sW1s3Nyw3NywwLDQyXSwiaW1hZ2UvdGlmZiJdLFtbNzEsNzMsNzAsNTYsNTcsOTddLCJpbWFnZS9naWYiXSxbWzEzNyw4MCw3OCw3MSwxMywxMCwyNiwxMF0sImltYWdlL3BuZyJdXTtmdW5jdGlvbiBnZXRCb3JkZXJEaW1zKGUpe2lmKCFlfHwhZS5ib3JkZXIpcmV0dXJue3c6MCxoOjB9O2NvbnN0IHQ9ZS5ib3JkZXJbQ3NdKCk7cmV0dXJuIHQ/e3c6dC53aWR0aHNbMF0rdC53aWR0aHNbMl0rdC5pbnNldHNbMF0rdC5pbnNldHNbMl0saDp0LndpZHRoc1sxXSt0LndpZHRoc1szXSt0Lmluc2V0c1sxXSt0Lmluc2V0c1szXX06e3c6MCxoOjB9fWZ1bmN0aW9uIGhhc01hcmdpbihlKXtyZXR1cm4gZS5tYXJnaW4mJihlLm1hcmdpbi50b3BJbnNldHx8ZS5tYXJnaW4ucmlnaHRJbnNldHx8ZS5tYXJnaW4uYm90dG9tSW5zZXR8fGUubWFyZ2luLmxlZnRJbnNldCl9ZnVuY3Rpb24gX3NldFZhbHVlKGUsdCl7aWYoIWUudmFsdWUpe2NvbnN0IHQ9bmV3IFZhbHVlKHt9KTtlW1hyXSh0KTtlLnZhbHVlPXR9ZS52YWx1ZVskc10odCl9ZnVuY3Rpb24qZ2V0Q29udGFpbmVkQ2hpbGRyZW4oZSl7Zm9yKGNvbnN0IHQgb2YgZVtRc10oKSl0IGluc3RhbmNlb2YgU3ViZm9ybVNldD95aWVsZCp0W0VzXSgpOnlpZWxkIHR9ZnVuY3Rpb24gaXNSZXF1aXJlZChlKXtyZXR1cm4iZXJyb3IiPT09ZS52YWxpZGF0ZT8ubnVsbFRlc3R9ZnVuY3Rpb24gc2V0VGFiSW5kZXgoZSl7Zm9yKDtlOyl7aWYoIWUudHJhdmVyc2FsKXtlW0FuXT1lW2ZzXSgpW0FuXTtyZXR1cm59aWYoZVtBbl0pcmV0dXJuO2xldCB0PW51bGw7Zm9yKGNvbnN0IGkgb2YgZS50cmF2ZXJzYWxbUXNdKCkpaWYoIm5leHQiPT09aS5vcGVyYXRpb24pe3Q9aTticmVha31pZighdHx8IXQucmVmKXtlW0FuXT1lW2ZzXSgpW0FuXTtyZXR1cm59Y29uc3QgaT1lW3BzXSgpO2VbQW5dPSsraVtBbl07Y29uc3QgYT1pW1ZzXSh0LnJlZixlKTtpZighYSlyZXR1cm47ZT1hWzBdfX1mdW5jdGlvbiBhcHBseUFzc2lzdChlLHQpe2NvbnN0IGk9ZS5hc3Npc3Q7aWYoaSl7Y29uc3QgZT1pW2FuXSgpO2UmJih0LnRpdGxlPWUpO2NvbnN0IGE9aS5yb2xlLm1hdGNoKHZuKTtpZihhKXtjb25zdCBlPSJoZWFkaW5nIixpPWFbMV07dC5yb2xlPWU7dFsiYXJpYS1sZXZlbCJdPWl9fWlmKCJ0YWJsZSI9PT1lLmxheW91dCl0LnJvbGU9InRhYmxlIjtlbHNlIGlmKCJyb3ciPT09ZS5sYXlvdXQpdC5yb2xlPSJyb3ciO2Vsc2V7Y29uc3QgaT1lW2ZzXSgpOyJyb3ciPT09aS5sYXlvdXQmJih0LnJvbGU9IlRIIj09PWkuYXNzaXN0Py5yb2xlPyJjb2x1bW5oZWFkZXIiOiJjZWxsIil9fWZ1bmN0aW9uIGFyaWFMYWJlbChlKXtpZighZS5hc3Npc3QpcmV0dXJuIG51bGw7Y29uc3QgdD1lLmFzc2lzdDtyZXR1cm4gdC5zcGVhayYmIiIhPT10LnNwZWFrW2VzXT90LnNwZWFrW2VzXTp0LnRvb2xUaXA/dC50b29sVGlwW2VzXTpudWxsfWZ1bmN0aW9uIHZhbHVlVG9IdG1sKGUpe3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sY2hpbGRyZW46W3tuYW1lOiJzcGFuIixhdHRyaWJ1dGVzOntzdHlsZTpPYmplY3QuY3JlYXRlKG51bGwpfSx2YWx1ZTplfV19KX1mdW5jdGlvbiBzZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbcHNdKCk7aWYobnVsbD09PXRbYXNdLmZpcnN0VW5zcGxpdHRhYmxlKXt0W2FzXS5maXJzdFVuc3BsaXR0YWJsZT1lO3RbYXNdLm5vTGF5b3V0RmFpbHVyZT0hMH19ZnVuY3Rpb24gdW5zZXRGaXJzdFVuc3BsaXR0YWJsZShlKXtjb25zdCB0PWVbcHNdKCk7dFthc10uZmlyc3RVbnNwbGl0dGFibGU9PT1lJiYodFthc10ubm9MYXlvdXRGYWlsdXJlPSExKX1mdW5jdGlvbiBoYW5kbGVCcmVhayhlKXtpZihlW2FzXSlyZXR1cm4hMTtlW2FzXT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKCJhdXRvIj09PWUudGFyZ2V0VHlwZSlyZXR1cm4hMTtjb25zdCB0PWVbcHNdKCk7bGV0IGk9bnVsbDtpZihlLnRhcmdldCl7aT10W1ZzXShlLnRhcmdldCxlW2ZzXSgpKTtpZighaSlyZXR1cm4hMTtpPWlbMF19Y29uc3R7Y3VycmVudFBhZ2VBcmVhOmEsY3VycmVudENvbnRlbnRBcmVhOnJ9PXRbYXNdO2lmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe2kgaW5zdGFuY2VvZiBQYWdlQXJlYXx8KGk9bnVsbCk7aWYoZS5zdGFydE5ldyl7ZVthc10udGFyZ2V0PWl8fGE7cmV0dXJuITB9aWYoaSYmaSE9PWEpe2VbYXNdLnRhcmdldD1pO3JldHVybiEwfXJldHVybiExfWkgaW5zdGFuY2VvZiBDb250ZW50QXJlYXx8KGk9bnVsbCk7Y29uc3Qgcz1pJiZpW2ZzXSgpO2xldCBuLG89cztpZihlLnN0YXJ0TmV3KWlmKGkpe2NvbnN0IGU9cy5jb250ZW50QXJlYS5jaGlsZHJlbix0PWUuaW5kZXhPZihyKSxhPWUuaW5kZXhPZihpKTstMSE9PXQmJnQ8YSYmKG89bnVsbCk7bj1hLTF9ZWxzZSBuPWEuY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihyKTtlbHNle2lmKCFpfHxpPT09cilyZXR1cm4hMTtuPXMuY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihpKS0xO289cz09PWE/bnVsbDpzfWVbYXNdLnRhcmdldD1vO2VbYXNdLmluZGV4PW47cmV0dXJuITB9ZnVuY3Rpb24gaGFuZGxlT3ZlcmZsb3coZSx0LGkpe2NvbnN0IGE9ZVtwc10oKSxyPWFbYXNdLm5vTGF5b3V0RmFpbHVyZSxzPXRbZHNdO3RbZHNdPSgpPT5lO2FbYXNdLm5vTGF5b3V0RmFpbHVyZT0hMDtjb25zdCBuPXRbYW5dKGkpO2VbanJdKG4uaHRtbCxuLmJib3gpO2FbYXNdLm5vTGF5b3V0RmFpbHVyZT1yO3RbZHNdPXN9Y2xhc3MgQXBwZWFyYW5jZUZpbHRlciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiYXBwZWFyYW5jZUZpbHRlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQXJjIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJhcmMiLCEwKTt0aGlzLmNpcmN1bGFyPWdldEludGVnZXIoe2RhdGE6ZS5jaXJjdWxhcixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc3RhcnRBbmdsZT1nZXRGbG9hdCh7ZGF0YTplLnN0YXJ0QW5nbGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnN3ZWVwQW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zd2VlcEFuZ2xlLGRlZmF1bHRWYWx1ZTozNjAsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGw7dGhpcy5maWxsPW51bGx9W2FuXSgpe2NvbnN0IGU9dGhpcy5lZGdlfHxuZXcgRWRnZSh7fSksdD1lW3NuXSgpLGk9T2JqZWN0LmNyZWF0ZShudWxsKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlP09iamVjdC5hc3NpZ24oaSx0aGlzLmZpbGxbc25dKCkpOmkuZmlsbD0idHJhbnNwYXJlbnQiO2kuc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7aS5zdHJva2U9dC5jb2xvcjtsZXQgYTtjb25zdCByPXt4bWxuczpIbixzdHlsZTp7d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb3ZlcmZsb3c6InZpc2libGUifX07aWYoMzYwPT09dGhpcy5zd2VlcEFuZ2xlKWE9e25hbWU6ImVsbGlwc2UiLGF0dHJpYnV0ZXM6e3htbG5zOkhuLGN4OiI1MCUiLGN5OiI1MCUiLHJ4OiI1MCUiLHJ5OiI1MCUiLHN0eWxlOml9fTtlbHNle2NvbnN0IGU9dGhpcy5zdGFydEFuZ2xlKk1hdGguUEkvMTgwLHQ9dGhpcy5zd2VlcEFuZ2xlKk1hdGguUEkvMTgwLHM9dGhpcy5zd2VlcEFuZ2xlPjE4MD8xOjAsW24sbyxnLGNdPVs1MCooMStNYXRoLmNvcyhlKSksNTAqKDEtTWF0aC5zaW4oZSkpLDUwKigxK01hdGguY29zKGUrdCkpLDUwKigxLU1hdGguc2luKGUrdCkpXTthPXtuYW1lOiJwYXRoIixhdHRyaWJ1dGVzOnt4bWxuczpIbixkOmBNICR7bn0gJHtvfSBBIDUwIDUwIDAgJHtzfSAwICR7Z30gJHtjfWAsdmVjdG9yRWZmZWN0OiJub24tc2NhbGluZy1zdHJva2UiLHN0eWxlOml9fTtPYmplY3QuYXNzaWduKHIse3ZpZXdCb3g6IjAgMCAxMDAgMTAwIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJub25lIn0pfWNvbnN0IHM9e25hbWU6InN2ZyIsY2hpbGRyZW46W2FdLGF0dHJpYnV0ZXM6cn07aWYoaGFzTWFyZ2luKHRoaXNbZnNdKClbZnNdKCkpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7c3R5bGU6e2Rpc3BsYXk6ImlubGluZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fSxjaGlsZHJlbjpbc119KTtzLmF0dHJpYnV0ZXMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHMpfX1jbGFzcyBBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJhcmVhIiwhMCk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leE9iamVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGNsR3JvdXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX0qW0VzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtNc10oKXtyZXR1cm4hMH1bU3NdKCl7cmV0dXJuITB9W2pyXShlLHQpe2NvbnN0W2ksYSxyLHNdPXQ7dGhpc1thc10ud2lkdGg9TWF0aC5tYXgodGhpc1thc10ud2lkdGgsaStyKTt0aGlzW2FzXS5oZWlnaHQ9TWF0aC5tYXgodGhpc1thc10uaGVpZ2h0LGErcyk7dGhpc1thc10uY2hpbGRyZW4ucHVzaChlKX1bZ3NdKCl7cmV0dXJuIHRoaXNbYXNdLmF2YWlsYWJsZVNwYWNlfVthbl0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsInBvc2l0aW9uIiksaT17c3R5bGU6dCxpZDp0aGlzW25uXSxjbGFzczpbInhmYUFyZWEiXX07aXNQcmludE9ubHkodGhpcykmJmkuY2xhc3MucHVzaCgieGZhUHJpbnRPbmx5Iik7dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgYT1bXTt0aGlzW2FzXT17Y2hpbGRyZW46YSx3aWR0aDowLGhlaWdodDowLGF2YWlsYWJsZVNwYWNlOmV9O2NvbnN0IHI9dGhpc1tacl0oe2ZpbHRlcjpuZXcgU2V0KFsiYXJlYSIsImRyYXciLCJmaWVsZCIsImV4Y2xHcm91cCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pLGluY2x1ZGU6ITB9KTtpZighci5zdWNjZXNzKXtpZihyLmlzQnJlYWsoKSlyZXR1cm4gcjtkZWxldGUgdGhpc1thc107cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX10LndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzW2FzXS53aWR0aCk7dC5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXNbYXNdLmhlaWdodCk7Y29uc3Qgcz17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmksY2hpbGRyZW46YX0sbj1bdGhpcy54LHRoaXMueSx0aGlzW2FzXS53aWR0aCx0aGlzW2FzXS5oZWlnaHRdO2RlbGV0ZSB0aGlzW2FzXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHMsbil9fWNsYXNzIEFzc2lzdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiYXNzaXN0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJvbGU9ZS5yb2xlfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zcGVhaz1udWxsO3RoaXMudG9vbFRpcD1udWxsfVthbl0oKXtyZXR1cm4gdGhpcy50b29sVGlwPy5bZXNdfHxudWxsfX1jbGFzcyBCYXJjb2RlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJiYXJjb2RlIiwhMCk7dGhpcy5jaGFyRW5jb2Rpbmc9Z2V0S2V5d29yZCh7ZGF0YTplLmNoYXJFbmNvZGluZz9lLmNoYXJFbmNvZGluZy50b0xvd2VyQ2FzZSgpOiIiLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT5bInV0Zi04IiwiYmlnLWZpdmUiLCJmb250c3BlY2lmaWMiLCJnYmsiLCJnYi0xODAzMCIsImdiLTIzMTIiLCJrc2MtNTYwMSIsIm5vbmUiLCJzaGlmdC1qaXMiLCJ1Y3MtMiIsInV0Zi0xNiJdLmluY2x1ZGVzKGUpfHxlLm1hdGNoKC9pc28tODg1OS1cZHsyfS8pfSk7dGhpcy5jaGVja3N1bT1nZXRTdHJpbmdPcHRpb24oZS5jaGVja3N1bSxbIm5vbmUiLCIxbW9kMTAiLCIxbW9kMTBfMW1vZDExIiwiMm1vZDEwIiwiYXV0byJdKTt0aGlzLmRhdGFDb2x1bW5Db3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUNvbHVtbkNvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5kYXRhTGVuZ3RoPWdldEludGVnZXIoe2RhdGE6ZS5kYXRhTGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5kYXRhUHJlcD1nZXRTdHJpbmdPcHRpb24oZS5kYXRhUHJlcCxbIm5vbmUiLCJmbGF0ZUNvbXByZXNzIl0pO3RoaXMuZGF0YVJvd0NvdW50PWdldEludGVnZXIoe2RhdGE6ZS5kYXRhUm93Q291bnQsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmVuZENoYXI9ZS5lbmRDaGFyfHwiIjt0aGlzLmVycm9yQ29ycmVjdGlvbkxldmVsPWdldEludGVnZXIoe2RhdGE6ZS5lcnJvckNvcnJlY3Rpb25MZXZlbCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9OH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tb2R1bGVIZWlnaHQ9Z2V0TWVhc3VyZW1lbnQoZS5tb2R1bGVIZWlnaHQsIjVtbSIpO3RoaXMubW9kdWxlV2lkdGg9Z2V0TWVhc3VyZW1lbnQoZS5tb2R1bGVXaWR0aCwiMC4yNW1tIik7dGhpcy5wcmludENoZWNrRGlnaXQ9Z2V0SW50ZWdlcih7ZGF0YTplLnByaW50Q2hlY2tEaWdpdCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMucm93Q29sdW1uUmF0aW89Z2V0UmF0aW8oZS5yb3dDb2x1bW5SYXRpbyk7dGhpcy5zdGFydENoYXI9ZS5zdGFydENoYXJ8fCIiO3RoaXMudGV4dExvY2F0aW9uPWdldFN0cmluZ09wdGlvbihlLnRleHRMb2NhdGlvbixbImJlbG93IiwiYWJvdmUiLCJhYm92ZUVtYmVkZGVkIiwiYmVsb3dFbWJlZGRlZCIsIm5vbmUiXSk7dGhpcy50cnVuY2F0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUudHJ1bmNhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZT9lLnR5cGUudG9Mb3dlckNhc2UoKToiIixbImF6dGVjIiwiY29kYWJhciIsImNvZGUyb2Y1aW5kdXN0cmlhbCIsImNvZGUyb2Y1aW50ZXJsZWF2ZWQiLCJjb2RlMm9mNW1hdHJpeCIsImNvZGUyb2Y1c3RhbmRhcmQiLCJjb2RlM29mOSIsImNvZGUzb2Y5ZXh0ZW5kZWQiLCJjb2RlMTEiLCJjb2RlNDkiLCJjb2RlOTMiLCJjb2RlMTI4IiwiY29kZTEyOGEiLCJjb2RlMTI4YiIsImNvZGUxMjhjIiwiY29kZTEyOHNzY2MiLCJkYXRhbWF0cml4IiwiZWFuOCIsImVhbjhhZGQyIiwiZWFuOGFkZDUiLCJlYW4xMyIsImVhbjEzYWRkMiIsImVhbjEzYWRkNSIsImVhbjEzcHdjZCIsImZpbSIsImxvZ21hcnMiLCJtYXhpY29kZSIsIm1zaSIsInBkZjQxNyIsInBkZjQxN21hY3JvIiwicGxlc3NleSIsInBvc3RhdXNjdXN0MiIsInBvc3RhdXNjdXN0MyIsInBvc3RhdXNyZXBseXBhaWQiLCJwb3N0YXVzc3RhbmRhcmQiLCJwb3N0dWtybTRzY2MiLCJwb3N0dXNkcGJjIiwicG9zdHVzaW1iIiwicG9zdHVzc3RhbmRhcmQiLCJwb3N0dXM1emlwIiwicXJjb2RlIiwicmZpZCIsInJzczE0IiwicnNzMTRleHBhbmRlZCIsInJzczE0bGltaXRlZCIsInJzczE0c3RhY2tlZCIsInJzczE0c3RhY2tlZG9tbmkiLCJyc3MxNHRydW5jYXRlZCIsInRlbGVwZW4iLCJ1Y2MxMjgiLCJ1Y2MxMjhyYW5kb20iLCJ1Y2MxMjhzc2NjIiwidXBjYSIsInVwY2FhZGQyIiwidXBjYWFkZDUiLCJ1cGNhcHdjZCIsInVwY2UiLCJ1cGNlYWRkMiIsInVwY2VhZGQ1IiwidXBjZWFuMiIsInVwY2VhbjUiLCJ1cHNtYXhpY29kZSJdKTt0aGlzLnVwc01vZGU9Z2V0U3RyaW5nT3B0aW9uKGUudXBzTW9kZSxbInVzQ2FycmllciIsImludGVybmF0aW9uYWxDYXJyaWVyIiwic2VjdXJlU3ltYm9sIiwic3RhbmRhcmRTeW1ib2wiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMud2lkZU5hcnJvd1JhdGlvPWdldFJhdGlvKGUud2lkZU5hcnJvd1JhdGlvKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBCaW5kIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJiaW5kIiwhMCk7dGhpcy5tYXRjaD1nZXRTdHJpbmdPcHRpb24oZS5tYXRjaCxbIm9uY2UiLCJkYXRhUmVmIiwiZ2xvYmFsIiwibm9uZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIEJpbmRJdGVtcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiYmluZEl0ZW1zIik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5sYWJlbFJlZj1lLmxhYmVsUmVmfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy52YWx1ZVJlZj1lLnZhbHVlUmVmfHwiIn19Y2xhc3MgQm9va2VuZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiYm9va2VuZCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQm9vbGVhbkVsZW1lbnQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiYm9vbGVhbiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVthbl0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKDE9PT10aGlzW2VzXT8iMSI6IjAiKX19Y2xhc3MgQm9yZGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJib3JkZXIiLCEwKTt0aGlzLmJyZWFrPWdldFN0cmluZ09wdGlvbihlLmJyZWFrLFsiY2xvc2UiLCJvcGVuIl0pO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb3JuZXI9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZWRnZT1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbGw9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtDc10oKXtpZighdGhpc1thc10pe2NvbnN0IGU9dGhpcy5lZGdlLmNoaWxkcmVuLnNsaWNlKCk7aWYoZS5sZW5ndGg8NCl7Y29uc3QgdD1lLmF0KC0xKXx8bmV3IEVkZ2Uoe30pO2ZvcihsZXQgaT1lLmxlbmd0aDtpPDQ7aSsrKWUucHVzaCh0KX1jb25zdCB0PWUubWFwKChlPT5lLnRoaWNrbmVzcykpLGk9WzAsMCwwLDBdO2lmKHRoaXMubWFyZ2luKXtpWzBdPXRoaXMubWFyZ2luLnRvcEluc2V0O2lbMV09dGhpcy5tYXJnaW4ucmlnaHRJbnNldDtpWzJdPXRoaXMubWFyZ2luLmJvdHRvbUluc2V0O2lbM109dGhpcy5tYXJnaW4ubGVmdEluc2V0fXRoaXNbYXNdPXt3aWR0aHM6dCxpbnNldHM6aSxlZGdlczplfX1yZXR1cm4gdGhpc1thc119W3NuXSgpe2NvbnN0e2VkZ2VzOmV9PXRoaXNbQ3NdKCksdD1lLm1hcCgoZT0+e2NvbnN0IHQ9ZVtzbl0oKTt0LmNvbG9yfHw9IiMwMDAwMDAiO3JldHVybiB0fSkpLGk9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLm1hcmdpbiYmT2JqZWN0LmFzc2lnbihpLHRoaXMubWFyZ2luW3NuXSgpKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlJiZPYmplY3QuYXNzaWduKGksdGhpcy5maWxsW3NuXSgpKTtpZih0aGlzLmNvcm5lci5jaGlsZHJlbi5zb21lKChlPT4wIT09ZS5yYWRpdXMpKSl7Y29uc3QgZT10aGlzLmNvcm5lci5jaGlsZHJlbi5tYXAoKGU9PmVbc25dKCkpKTtpZigyPT09ZS5sZW5ndGh8fDM9PT1lLmxlbmd0aCl7Y29uc3QgdD1lLmF0KC0xKTtmb3IobGV0IGk9ZS5sZW5ndGg7aTw0O2krKyllLnB1c2godCl9aS5ib3JkZXJSYWRpdXM9ZS5tYXAoKGU9PmUucmFkaXVzKSkuam9pbigiICIpfXN3aXRjaCh0aGlzLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6Y2FzZSJoaWRkZW4iOmkuYm9yZGVyU3R5bGU9IiI7YnJlYWs7Y2FzZSJpbmFjdGl2ZSI6aS5ib3JkZXJTdHlsZT0ibm9uZSI7YnJlYWs7ZGVmYXVsdDppLmJvcmRlclN0eWxlPXQubWFwKChlPT5lLnN0eWxlKSkuam9pbigiICIpfWkuYm9yZGVyV2lkdGg9dC5tYXAoKGU9PmUud2lkdGgpKS5qb2luKCIgIik7aS5ib3JkZXJDb2xvcj10Lm1hcCgoZT0+ZS5jb2xvcikpLmpvaW4oIiAiKTtyZXR1cm4gaX19Y2xhc3MgQnJlYWsgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImJyZWFrIiwhMCk7dGhpcy5hZnRlcj1nZXRTdHJpbmdPcHRpb24oZS5hZnRlcixbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYWZ0ZXJUYXJnZXQ9ZS5hZnRlclRhcmdldHx8IiI7dGhpcy5iZWZvcmU9Z2V0U3RyaW5nT3B0aW9uKGUuYmVmb3JlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiLCJwYWdlRXZlbiIsInBhZ2VPZGQiXSk7dGhpcy5iZWZvcmVUYXJnZXQ9ZS5iZWZvcmVUYXJnZXR8fCIiO3RoaXMuYm9va2VuZExlYWRlcj1lLmJvb2tlbmRMZWFkZXJ8fCIiO3RoaXMuYm9va2VuZFRyYWlsZXI9ZS5ib29rZW5kVHJhaWxlcnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJmbG93TGVhZGVyPWUub3ZlcmZsb3dMZWFkZXJ8fCIiO3RoaXMub3ZlcmZsb3dUYXJnZXQ9ZS5vdmVyZmxvd1RhcmdldHx8IiI7dGhpcy5vdmVyZmxvd1RyYWlsZXI9ZS5vdmVyZmxvd1RyYWlsZXJ8fCIiO3RoaXMuc3RhcnROZXc9Z2V0SW50ZWdlcih7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJyZWFrQWZ0ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImJyZWFrQWZ0ZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBCcmVha0JlZm9yZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiYnJlYWtCZWZvcmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfVthbl0oZSl7dGhpc1thc109e307cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX19Y2xhc3MgQnV0dG9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJidXR0b24iLCEwKTt0aGlzLmhpZ2hsaWdodD1nZXRTdHJpbmdPcHRpb24oZS5oaWdobGlnaHQsWyJpbnZlcnRlZCIsIm5vbmUiLCJvdXRsaW5lIiwicHVzaCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVthbl0oZSl7Y29uc3QgdD10aGlzW2ZzXSgpW2ZzXSgpLGk9e25hbWU6ImJ1dHRvbiIsYXR0cmlidXRlczp7aWQ6dGhpc1tubl0sY2xhc3M6WyJ4ZmFCdXR0b24iXSxzdHlsZTp7fX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mIHQuZXZlbnQuY2hpbGRyZW4pe2lmKCJjbGljayIhPT1lLmFjdGl2aXR5fHwhZS5zY3JpcHQpY29udGludWU7Y29uc3QgdD1yZWNvdmVySnNVUkwoZS5zY3JpcHRbZXNdKTtpZighdCljb250aW51ZTtjb25zdCBhPWZpeFVSTCh0LnVybCk7YSYmaS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJhIixhdHRyaWJ1dGVzOntpZDoibGluayIrdGhpc1tubl0saHJlZjphLG5ld1dpbmRvdzp0Lm5ld1dpbmRvdyxjbGFzczpbInhmYUxpbmsiXSxzdHlsZTp7fX0sY2hpbGRyZW46W119KX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGkpfX1jbGFzcyBDYWxjdWxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImNhbGN1bGF0ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT1nZXRTdHJpbmdPcHRpb24oZS5vdmVycmlkZSxbImRpc2FibGVkIiwiZXJyb3IiLCJpZ25vcmUiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIENhcHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImNhcHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGxhY2VtZW50PWdldFN0cmluZ09wdGlvbihlLnBsYWNlbWVudCxbImxlZnQiLCJib3R0b20iLCJpbmxpbmUiLCJyaWdodCIsInRvcCJdKTt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVzZXJ2ZT1NYXRoLmNlaWwoZ2V0TWVhc3VyZW1lbnQoZS5yZXNlcnZlKSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnZhbHVlPW51bGx9WyRzXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bQ3NdKGUpe2lmKCF0aGlzW2FzXSl7bGV0e3dpZHRoOnQsaGVpZ2h0Oml9PWU7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0PXRoaXMucmVzZXJ2ZTw9MD90OnRoaXMucmVzZXJ2ZTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmk9dGhpcy5yZXNlcnZlPD0wP2k6dGhpcy5yZXNlcnZlfXRoaXNbYXNdPWxheW91dE5vZGUodGhpcyx7d2lkdGg6dCxoZWlnaHQ6aX0pfXJldHVybiB0aGlzW2FzXX1bYW5dKGUpe2lmKCF0aGlzLnZhbHVlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO3RoaXNbV3NdKCk7Y29uc3QgdD10aGlzLnZhbHVlW2FuXShlKS5odG1sO2lmKCF0KXt0aGlzW09zXSgpO3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfWNvbnN0IGk9dGhpcy5yZXNlcnZlO2lmKHRoaXMucmVzZXJ2ZTw9MCl7Y29uc3R7dzp0LGg6aX09dGhpc1tDc10oZSk7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0aGlzLnJlc2VydmU9dDticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT1pfX1jb25zdCBhPVtdOyJzdHJpbmciPT10eXBlb2YgdD9hLnB1c2goe25hbWU6IiN0ZXh0Iix2YWx1ZTp0fSk6YS5wdXNoKHQpO2NvbnN0IHI9dG9TdHlsZSh0aGlzLCJmb250IiwibWFyZ2luIiwidmlzaWJpbGl0eSIpO3N3aXRjaCh0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0Ijp0aGlzLnJlc2VydmU+MCYmKHIud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPjAmJihyLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5yZXNlcnZlKSl9c2V0UGFyYSh0aGlzLG51bGwsdCk7dGhpc1tPc10oKTt0aGlzLnJlc2VydmU9aTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOnIsY2xhc3M6WyJ4ZmFDYXB0aW9uIl19LGNoaWxkcmVuOmF9KX19Y2xhc3MgQ2VydGlmaWNhdGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImNlcnRpZmljYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENlcnRpZmljYXRlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiY2VydGlmaWNhdGVzIiwhMCk7dGhpcy5jcmVkZW50aWFsU2VydmVyUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3ksWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51cmw9ZS51cmx8fCIiO3RoaXMudXJsUG9saWN5PWUudXJsUG9saWN5fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5pc3N1ZXJzPW51bGw7dGhpcy5rZXlVc2FnZT1udWxsO3RoaXMub2lkcz1udWxsO3RoaXMuc2lnbmluZz1udWxsO3RoaXMuc3ViamVjdEROcz1udWxsfX1jbGFzcyBDaGVja0J1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiY2hlY2tCdXR0b24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWFyaz1nZXRTdHJpbmdPcHRpb24oZS5tYXJrLFsiZGVmYXVsdCIsImNoZWNrIiwiY2lyY2xlIiwiY3Jvc3MiLCJkaWFtb25kIiwic3F1YXJlIiwic3RhciJdKTt0aGlzLnNoYXBlPWdldFN0cmluZ09wdGlvbihlLnNoYXBlLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5zaXplPWdldE1lYXN1cmVtZW50KGUuc2l6ZSwiMTBwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bYW5dKGUpe2NvbnN0IHQ9dG9TdHlsZSgibWFyZ2luIiksaT1tZWFzdXJlVG9TdHJpbmcodGhpcy5zaXplKTt0LndpZHRoPXQuaGVpZ2h0PWk7bGV0IGEscixzO2NvbnN0IG49dGhpc1tmc10oKVtmc10oKSxvPW4uaXRlbXMuY2hpbGRyZW4ubGVuZ3RoJiZuLml0ZW1zLmNoaWxkcmVuWzBdW2FuXSgpLmh0bWx8fFtdLGc9e29uOih2b2lkIDAhPT1vWzBdP29bMF06Im9uIikudG9TdHJpbmcoKSxvZmY6KHZvaWQgMCE9PW9bMV0/b1sxXToib2ZmIikudG9TdHJpbmcoKX0sYz0obi52YWx1ZT8uW2VuXSgpfHwib2ZmIik9PT1nLm9ufHx2b2lkIDAsaD1uW2RzXSgpLGw9bltubl07bGV0IEM7aWYoaCBpbnN0YW5jZW9mIEV4Y2xHcm91cCl7cz1oW25uXTthPSJyYWRpbyI7cj0ieGZhUmFkaW8iO0M9aFt0c10/Lltubl18fGhbbm5dfWVsc2V7YT0iY2hlY2tib3giO3I9InhmYUNoZWNrYm94IjtDPW5bdHNdPy5bbm5dfHxuW25uXX1jb25zdCBRPXtuYW1lOiJpbnB1dCIsYXR0cmlidXRlczp7Y2xhc3M6W3JdLHN0eWxlOnQsZmllbGRJZDpsLGRhdGFJZDpDLHR5cGU6YSxjaGVja2VkOmMseGZhT246Zy5vbix4ZmFPZmY6Zy5vZmYsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChuKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtzJiYoUS5hdHRyaWJ1dGVzLm5hbWU9cyk7aWYoaXNSZXF1aXJlZChuKSl7US5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7US5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltRXX0pfX1jbGFzcyBDaG9pY2VMaXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJjaG9pY2VMaXN0IiwhMCk7dGhpcy5jb21taXRPbj1nZXRTdHJpbmdPcHRpb24oZS5jb21taXRPbixbInNlbGVjdCIsImV4aXQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZW49Z2V0U3RyaW5nT3B0aW9uKGUub3BlbixbInVzZXJDb250cm9sIiwiYWx3YXlzIiwibXVsdGlTZWxlY3QiLCJvbkVudHJ5Il0pO3RoaXMudGV4dEVudHJ5PWdldEludGVnZXIoe2RhdGE6ZS50ZXh0RW50cnksZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W2FuXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwibWFyZ2luIiksaT10aGlzW2ZzXSgpW2ZzXSgpLGE9e2ZvbnRTaXplOmBjYWxjKCR7aS5mb250Py5zaXplfHwxMH1weCAqIHZhcigtLXNjYWxlLWZhY3RvcikpYH0scj1bXTtpZihpLml0ZW1zLmNoaWxkcmVuLmxlbmd0aD4wKXtjb25zdCBlPWkuaXRlbXM7bGV0IHQ9MCxzPTA7aWYoMj09PWUuY2hpbGRyZW4ubGVuZ3RoKXt0PWUuY2hpbGRyZW5bMF0uc2F2ZTtzPTEtdH1jb25zdCBuPWUuY2hpbGRyZW5bdF1bYW5dKCkuaHRtbCxvPWUuY2hpbGRyZW5bc11bYW5dKCkuaHRtbDtsZXQgZz0hMTtjb25zdCBjPWkudmFsdWU/Lltlbl0oKXx8IiI7Zm9yKGxldCBlPTAsdD1uLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e3ZhbHVlOm9bZV18fG5bZV0sc3R5bGU6YX0sdmFsdWU6bltlXX07b1tlXT09PWMmJih0LmF0dHJpYnV0ZXMuc2VsZWN0ZWQ9Zz0hMCk7ci5wdXNoKHQpfWd8fHIuc3BsaWNlKDAsMCx7bmFtZToib3B0aW9uIixhdHRyaWJ1dGVzOntoaWRkZW46ITAsc2VsZWN0ZWQ6ITB9LHZhbHVlOiIgIn0pfWNvbnN0IHM9e2NsYXNzOlsieGZhU2VsZWN0Il0sZmllbGRJZDppW25uXSxkYXRhSWQ6aVt0c10/Lltubl18fGlbbm5dLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChpKSwiYXJpYS1yZXF1aXJlZCI6ITF9O2lmKGlzUmVxdWlyZWQoaSkpe3NbImFyaWEtcmVxdWlyZWQiXT0hMDtzLnJlcXVpcmVkPSEwfSJtdWx0aVNlbGVjdCI9PT10aGlzLm9wZW4mJihzLm11bHRpcGxlPSEwKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJsYWJlbCIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFMYWJlbCJdfSxjaGlsZHJlbjpbe25hbWU6InNlbGVjdCIsY2hpbGRyZW46cixhdHRyaWJ1dGVzOnN9XX0pfX1jbGFzcyBDb2xvciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiY29sb3IiLCEwKTt0aGlzLmNTcGFjZT1nZXRTdHJpbmdPcHRpb24oZS5jU3BhY2UsWyJTUkdCIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudmFsdWU9ZS52YWx1ZT9mdW5jdGlvbiBnZXRDb2xvcihlLHQ9WzAsMCwwXSl7bGV0W2ksYSxyXT10O2lmKCFlKXJldHVybntyOmksZzphLGI6cn07Y29uc3Qgcz1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZT0+TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUludChlLnRyaW0oKSwxMCkpLDI1NSkpKS5tYXAoKGU9PmlzTmFOKGUpPzA6ZSkpO2lmKHMubGVuZ3RoPDMpcmV0dXJue3I6aSxnOmEsYjpyfTtbaSxhLHJdPXM7cmV0dXJue3I6aSxnOmEsYjpyfX0oZS52YWx1ZSk6IiI7dGhpcy5leHRyYXM9bnVsbH1beXNdKCl7cmV0dXJuITF9W3NuXSgpe3JldHVybiB0aGlzLnZhbHVlP1V0aWwubWFrZUhleENvbG9yKHRoaXMudmFsdWUucix0aGlzLnZhbHVlLmcsdGhpcy52YWx1ZS5iKTpudWxsfX1jbGFzcyBDb21iIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJjb21iIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bWJlck9mQ2VsbHM9Z2V0SW50ZWdlcih7ZGF0YTplLm51bWJlck9mQ2VsbHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgQ29ubmVjdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiY29ubmVjdCIsITApO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudXNhZ2U9Z2V0U3RyaW5nT3B0aW9uKGUudXNhZ2UsWyJleHBvcnRBbmRJbXBvcnQiLCJleHBvcnRPbmx5IiwiaW1wb3J0T25seSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5waWN0dXJlPW51bGx9fWNsYXNzIENvbnRlbnRBcmVhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJjb250ZW50QXJlYSIsITApO3RoaXMuaD1nZXRNZWFzdXJlbWVudChlLmgpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWdldE1lYXN1cmVtZW50KGUudyk7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bYW5dKGUpe2NvbnN0IHQ9e2xlZnQ6bWVhc3VyZVRvU3RyaW5nKHRoaXMueCksdG9wOm1lYXN1cmVUb1N0cmluZyh0aGlzLnkpLHdpZHRoOm1lYXN1cmVUb1N0cmluZyh0aGlzLncpLGhlaWdodDptZWFzdXJlVG9TdHJpbmcodGhpcy5oKX0saT1bInhmYUNvbnRlbnRhcmVhIl07aXNQcmludE9ubHkodGhpcykmJmkucHVzaCgieGZhUHJpbnRPbmx5Iik7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOntzdHlsZTp0LGNsYXNzOmksaWQ6dGhpc1tubl19fSl9fWNsYXNzIENvcm5lciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiY29ybmVyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmludmVydGVkPWdldEludGVnZXIoe2RhdGE6ZS5pbnZlcnRlZCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuam9pbj1nZXRTdHJpbmdPcHRpb24oZS5qb2luLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJhZGl1cz1nZXRNZWFzdXJlbWVudChlLnJhZGl1cyk7dGhpcy5zdHJva2U9Z2V0U3RyaW5nT3B0aW9uKGUuc3Ryb2tlLFsic29saWQiLCJkYXNoRG90IiwiZGFzaERvdERvdCIsImRhc2hlZCIsImRvdHRlZCIsImVtYm9zc2VkIiwiZXRjaGVkIiwibG93ZXJlZCIsInJhaXNlZCJdKTt0aGlzLnRoaWNrbmVzcz1nZXRNZWFzdXJlbWVudChlLnRoaWNrbmVzcywiMC41cHQiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3NuXSgpe2NvbnN0IGU9dG9TdHlsZSh0aGlzLCJ2aXNpYmlsaXR5Iik7ZS5yYWRpdXM9bWVhc3VyZVRvU3RyaW5nKCJzcXVhcmUiPT09dGhpcy5qb2luPzA6dGhpcy5yYWRpdXMpO3JldHVybiBlfX1jbGFzcyBEYXRlRWxlbWVudCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImRhdGUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bcnNdKCl7Y29uc3QgZT10aGlzW2VzXS50cmltKCk7dGhpc1tlc109ZT9uZXcgRGF0ZShlKTpudWxsfVthbl0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbZXNdP3RoaXNbZXNdLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImRhdGVUaW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3JzXSgpe2NvbnN0IGU9dGhpc1tlc10udHJpbSgpO3RoaXNbZXNdPWU/bmV3IERhdGUoZSk6bnVsbH1bYW5dKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2VzXT90aGlzW2VzXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGF0ZVRpbWVFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJkYXRlVGltZUVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGlja2VyPWdldFN0cmluZ09wdGlvbihlLnBpY2tlcixbImhvc3QiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bYW5dKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksaT10aGlzW2ZzXSgpW2ZzXSgpLGE9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmlbbm5dLGRhdGFJZDppW3RzXT8uW25uXXx8aVtubl0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoaSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChpKSl7YS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7YS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlthXX0pfX1jbGFzcyBEZWNpbWFsIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiZGVjaW1hbCIpO3RoaXMuZnJhY0RpZ2l0cz1nZXRJbnRlZ2VyKHtkYXRhOmUuZnJhY0RpZ2l0cyxkZWZhdWx0VmFsdWU6Mix2YWxpZGF0ZTplPT4hMH0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkRGlnaXRzPWdldEludGVnZXIoe2RhdGE6ZS5sZWFkRGlnaXRzLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bcnNdKCl7Y29uc3QgZT1wYXJzZUZsb2F0KHRoaXNbZXNdLnRyaW0oKSk7dGhpc1tlc109aXNOYU4oZSk/bnVsbDplfVthbl0oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKG51bGwhPT10aGlzW2VzXT90aGlzW2VzXS50b1N0cmluZygpOiIiKX19Y2xhc3MgRGVmYXVsdFVpIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJkZWZhdWx0VWkiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfX1jbGFzcyBEZXNjIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJkZXNjIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBEaWdlc3RNZXRob2QgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImRpZ2VzdE1ldGhvZCIsWyIiLCJTSEExIiwiU0hBMjU2IiwiU0hBNTEyIiwiUklQRU1EMTYwIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBEaWdlc3RNZXRob2RzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJkaWdlc3RNZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRHJhdyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiZHJhdyIsITApO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy51aT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bJHNdKGUpe19zZXRWYWx1ZSh0aGlzLGUpfVthbl0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtmaXhEaW1lbnNpb25zKHRoaXMpO3RoaXNbV3NdKCk7Y29uc3QgdD10aGlzLncsaT10aGlzLmgse3c6YSxoOnIsaXNCcm9rZW46c309bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKGEmJiIiPT09dGhpcy53KXtpZihzJiZ0aGlzW2RzXSgpW3hzXSgpKXt0aGlzW09zXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dGhpcy53PWF9ciYmIiI9PT10aGlzLmgmJih0aGlzLmg9cik7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXt0aGlzLnc9dDt0aGlzLmg9aTt0aGlzW09zXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtjb25zdCBuPXRvU3R5bGUodGhpcywiZm9udCIsImhBbGlnbiIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwicm90YXRlIiwiYW5jaG9yVHlwZSIsImJvcmRlciIsIm1hcmdpbiIpO3NldE1pbk1heERpbWVuc2lvbnModGhpcyxuKTtpZihuLm1hcmdpbil7bi5wYWRkaW5nPW4ubWFyZ2luO2RlbGV0ZSBuLm1hcmdpbn1jb25zdCBvPVsieGZhRHJhdyJdO3RoaXMuZm9udCYmby5wdXNoKCJ4ZmFGb250Iik7aXNQcmludE9ubHkodGhpcykmJm8ucHVzaCgieGZhUHJpbnRPbmx5Iik7Y29uc3QgZz17c3R5bGU6bixpZDp0aGlzW25uXSxjbGFzczpvfTt0aGlzLm5hbWUmJihnLnhmYU5hbWU9dGhpcy5uYW1lKTtjb25zdCBjPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6ZyxjaGlsZHJlbjpbXX07YXBwbHlBc3Npc3QodGhpcyxnKTtjb25zdCBoPWNvbXB1dGVCYm94KHRoaXMsYyxlKSxsPXRoaXMudmFsdWU/dGhpcy52YWx1ZVthbl0oZSkuaHRtbDpudWxsO2lmKG51bGw9PT1sKXt0aGlzLnc9dDt0aGlzLmg9aTt0aGlzW09zXSgpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGMpLGgpfWMuY2hpbGRyZW4ucHVzaChsKTtzZXRQYXJhKHRoaXMsbixsKTt0aGlzLnc9dDt0aGlzLmg9aTt0aGlzW09zXSgpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGMpLGgpfX1jbGFzcyBFZGdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJlZGdlIiwhMCk7dGhpcy5jYXA9Z2V0U3RyaW5nT3B0aW9uKGUuY2FwLFsic3F1YXJlIiwiYnV0dCIsInJvdW5kIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnN0cm9rZT1nZXRTdHJpbmdPcHRpb24oZS5zdHJva2UsWyJzb2xpZCIsImRhc2hEb3QiLCJkYXNoRG90RG90IiwiZGFzaGVkIiwiZG90dGVkIiwiZW1ib3NzZWQiLCJldGNoZWQiLCJsb3dlcmVkIiwicmFpc2VkIl0pO3RoaXMudGhpY2tuZXNzPWdldE1lYXN1cmVtZW50KGUudGhpY2tuZXNzLCIwLjVwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bc25dKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsInZpc2liaWxpdHkiKTtPYmplY3QuYXNzaWduKGUse2xpbmVjYXA6dGhpcy5jYXAsd2lkdGg6bWVhc3VyZVRvU3RyaW5nKHRoaXMudGhpY2tuZXNzKSxjb2xvcjp0aGlzLmNvbG9yP3RoaXMuY29sb3Jbc25dKCk6IiMwMDAwMDAiLHN0eWxlOiIifSk7aWYoInZpc2libGUiIT09dGhpcy5wcmVzZW5jZSllLnN0eWxlPSJub25lIjtlbHNlIHN3aXRjaCh0aGlzLnN0cm9rZSl7Y2FzZSJzb2xpZCI6ZS5zdHlsZT0ic29saWQiO2JyZWFrO2Nhc2UiZGFzaERvdCI6Y2FzZSJkYXNoRG90RG90IjpjYXNlImRhc2hlZCI6ZS5zdHlsZT0iZGFzaGVkIjticmVhaztjYXNlImRvdHRlZCI6ZS5zdHlsZT0iZG90dGVkIjticmVhaztjYXNlImVtYm9zc2VkIjplLnN0eWxlPSJyaWRnZSI7YnJlYWs7Y2FzZSJldGNoZWQiOmUuc3R5bGU9Imdyb292ZSI7YnJlYWs7Y2FzZSJsb3dlcmVkIjplLnN0eWxlPSJpbnNldCI7YnJlYWs7Y2FzZSJyYWlzZWQiOmUuc3R5bGU9Im91dHNldCJ9cmV0dXJuIGV9fWNsYXNzIEVuY29kaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJlbmNvZGluZyIsWyJhZGJlLng1MDkucnNhX3NoYTEiLCJhZGJlLnBrY3M3LmRldGFjaGVkIiwiYWRiZS5wa2NzNy5zaGExIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFbmNvZGluZ3MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImVuY29kaW5ncyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRW5jcnlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiZW5jcnlwdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bnVsbH19Y2xhc3MgRW5jcnlwdERhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImVuY3J5cHREYXRhIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJlbmNyeXB0IiwiZGVjcnlwdCJdKTt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsfX1jbGFzcyBFbmNyeXB0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJlbmNyeXB0aW9uIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFbmNyeXB0aW9uTWV0aG9kIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJlbmNyeXB0aW9uTWV0aG9kIixbIiIsIkFFUzI1Ni1DQkMiLCJUUklQTEVERVMtQ0JDIiwiQUVTMTI4LUNCQyIsIkFFUzE5Mi1DQkMiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY3J5cHRpb25NZXRob2RzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJlbmNyeXB0aW9uTWV0aG9kcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVuY3J5cHRpb25NZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFdmVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiZXZlbnQiLCEwKTt0aGlzLmFjdGl2aXR5PWdldFN0cmluZ09wdGlvbihlLmFjdGl2aXR5LFsiY2xpY2siLCJjaGFuZ2UiLCJkb2NDbG9zZSIsImRvY1JlYWR5IiwiZW50ZXIiLCJleGl0IiwiZnVsbCIsImluZGV4Q2hhbmdlIiwiaW5pdGlhbGl6ZSIsIm1vdXNlRG93biIsIm1vdXNlRW50ZXIiLCJtb3VzZUV4aXQiLCJtb3VzZVVwIiwicG9zdEV4ZWN1dGUiLCJwb3N0T3BlbiIsInBvc3RQcmludCIsInBvc3RTYXZlIiwicG9zdFNpZ24iLCJwb3N0U3VibWl0IiwicHJlRXhlY3V0ZSIsInByZU9wZW4iLCJwcmVQcmludCIsInByZVNhdmUiLCJwcmVTaWduIiwicHJlU3VibWl0IiwicmVhZHkiLCJ2YWxpZGF0aW9uU3RhdGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxpc3Rlbj1nZXRTdHJpbmdPcHRpb24oZS5saXN0ZW4sWyJyZWZPbmx5IiwicmVmQW5kRGVzY2VuZGVudHMiXSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZW5jcnlwdERhdGE9bnVsbDt0aGlzLmV4ZWN1dGU9bnVsbDt0aGlzLnNjcmlwdD1udWxsO3RoaXMuc2lnbkRhdGE9bnVsbDt0aGlzLnN1Ym1pdD1udWxsfX1jbGFzcyBFeERhdGEgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJleERhdGEiKTt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaHJlZj1lLmhyZWZ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tYXhMZW5ndGg9Z2V0SW50ZWdlcih7ZGF0YTplLm1heExlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49LTF9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy50cmFuc2ZlckVuY29kaW5nPWdldFN0cmluZ09wdGlvbihlLnRyYW5zZmVyRW5jb2RpbmcsWyJub25lIiwiYmFzZTY0IiwicGFja2FnZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W0ZzXSgpe3JldHVybiJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZX1bWXNdKGUpe2lmKCJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmZVtKc109PT1nbi54aHRtbC5pZCl7dGhpc1tlc109ZTtyZXR1cm4hMH1pZigidGV4dC94bWwiPT09dGhpcy5jb250ZW50VHlwZSl7dGhpc1tlc109ZTtyZXR1cm4hMH1yZXR1cm4hMX1bYW5dKGUpe3JldHVybiJ0ZXh0L2h0bWwiPT09dGhpcy5jb250ZW50VHlwZSYmdGhpc1tlc10/dGhpc1tlc11bYW5dKGUpOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEV4T2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJleE9iamVjdCIsITApO3RoaXMuYXJjaGl2ZT1lLmFyY2hpdmV8fCIiO3RoaXMuY2xhc3NJZD1lLmNsYXNzSWR8fCIiO3RoaXMuY29kZUJhc2U9ZS5jb2RlQmFzZXx8IiI7dGhpcy5jb2RlVHlwZT1lLmNvZGVUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRXhjbEdyb3VwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJleGNsR3JvdXAiLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFjY2Vzc0tleT1lLmFjY2Vzc0tleXx8IiI7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sYXlvdXQ9Z2V0U3RyaW5nT3B0aW9uKGUubGF5b3V0LFsicG9zaXRpb24iLCJsci10YiIsInJsLXJvdyIsInJsLXRiIiwicm93IiwidGFibGUiLCJ0YiJdKTt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1bU3NdKCl7cmV0dXJuITB9W3lzXSgpe3JldHVybiEwfVskc10oZSl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5maWVsZC5jaGlsZHJlbil7aWYoIXQudmFsdWUpe2NvbnN0IGU9bmV3IFZhbHVlKHt9KTt0W1hyXShlKTt0LnZhbHVlPWV9dC52YWx1ZVskc10oZSl9fVt4c10oKXtyZXR1cm4gdGhpcy5sYXlvdXQuZW5kc1dpdGgoIi10YiIpJiYwPT09dGhpc1thc10uYXR0ZW1wdCYmdGhpc1thc10ubnVtYmVySW5MaW5lPjB8fHRoaXNbZnNdKClbeHNdKCl9W0dzXSgpe2NvbnN0IGU9dGhpc1tkc10oKTtpZighZVtHc10oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW2FzXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW2FzXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW2FzXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKGUubGF5b3V0Py5lbmRzV2l0aCgiLXRiIikmJjAhPT1lW2FzXS5udW1iZXJJbkxpbmUpcmV0dXJuITE7dGhpc1thc10uX2lzU3BsaXR0YWJsZT0hMDtyZXR1cm4hMH1bc3NdKCl7cmV0dXJuIGZsdXNoSFRNTCh0aGlzKX1banJdKGUsdCl7YWRkSFRNTCh0aGlzLGUsdCl9W2dzXSgpe3JldHVybiBnZXRBdmFpbGFibGVTcGFjZSh0aGlzKX1bYW5dKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTtjb25zdCB0PVtdLGk9e2lkOnRoaXNbbm5dLGNsYXNzOltdfTtzZXRBY2Nlc3ModGhpcyxpLmNsYXNzKTt0aGlzW2FzXXx8KHRoaXNbYXNdPU9iamVjdC5jcmVhdGUobnVsbCkpO09iamVjdC5hc3NpZ24odGhpc1thc10se2NoaWxkcmVuOnQsYXR0cmlidXRlczppLGF0dGVtcHQ6MCxsaW5lOm51bGwsbnVtYmVySW5MaW5lOjAsYXZhaWxhYmxlU3BhY2U6e3dpZHRoOk1hdGgubWluKHRoaXMud3x8MS8wLGUud2lkdGgpLGhlaWdodDpNYXRoLm1pbih0aGlzLmh8fDEvMCxlLmhlaWdodCl9LHdpZHRoOjAsaGVpZ2h0OjAscHJldkhlaWdodDowLGN1cnJlbnRXaWR0aDowfSk7Y29uc3QgYT10aGlzW0dzXSgpO2F8fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSlyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IHI9bmV3IFNldChbImZpZWxkIl0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW2RzXSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW2FzXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW2FzXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IHM9dG9TdHlsZSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxuPVsieGZhRXhjbGdyb3VwIl0sbz1sYXlvdXRDbGFzcyh0aGlzKTtvJiZuLnB1c2gobyk7aXNQcmludE9ubHkodGhpcykmJm4ucHVzaCgieGZhUHJpbnRPbmx5Iik7aS5zdHlsZT1zO2kuY2xhc3M9bjt0aGlzLm5hbWUmJihpLnhmYU5hbWU9dGhpcy5uYW1lKTt0aGlzW1dzXSgpO2NvbnN0IGc9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsYz1nPzI6MTtmb3IoO3RoaXNbYXNdLmF0dGVtcHQ8Yzt0aGlzW2FzXS5hdHRlbXB0Kyspe2cmJjE9PT10aGlzW2FzXS5hdHRlbXB0JiYodGhpc1thc10ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tacl0oe2ZpbHRlcjpyLGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbT3NdKCk7cmV0dXJuIGV9aWYoZyYmMD09PXRoaXNbYXNdLmF0dGVtcHQmJjA9PT10aGlzW2FzXS5udW1iZXJJbkxpbmUmJiF0aGlzW3BzXSgpW2FzXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbYXNdLmF0dGVtcHQ9YzticmVha319dGhpc1tPc10oKTthfHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKHRoaXNbYXNdLmF0dGVtcHQ9PT1jKXthfHxkZWxldGUgdGhpc1thc107cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX1sZXQgaD0wLGw9MDtpZih0aGlzLm1hcmdpbil7aD10aGlzLm1hcmdpbi5sZWZ0SW5zZXQrdGhpcy5tYXJnaW4ucmlnaHRJbnNldDtsPXRoaXMubWFyZ2luLnRvcEluc2V0K3RoaXMubWFyZ2luLmJvdHRvbUluc2V0fWNvbnN0IEM9TWF0aC5tYXgodGhpc1thc10ud2lkdGgraCx0aGlzLnd8fDApLFE9TWF0aC5tYXgodGhpc1thc10uaGVpZ2h0K2wsdGhpcy5ofHwwKSxFPVt0aGlzLngsdGhpcy55LEMsUV07IiI9PT10aGlzLncmJihzLndpZHRoPW1lYXN1cmVUb1N0cmluZyhDKSk7IiI9PT10aGlzLmgmJihzLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcoUSkpO2NvbnN0IHU9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsaSk7ZGVsZXRlIHRoaXNbYXNdO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLHUpLEUpfX1jbGFzcyBFeGVjdXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJleGVjdXRlIik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5leGVjdXRlVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5leGVjdXRlVHlwZSxbImltcG9ydCIsInJlbWVyZ2UiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJ1bkF0PWdldFN0cmluZ09wdGlvbihlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEV4dHJhcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiZXh0cmFzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRmllbGQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImZpZWxkIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hY2Nlc3NLZXk9ZS5hY2Nlc3NLZXl8fCIiO3RoaXMuYW5jaG9yVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5hbmNob3JUeXBlLFsidG9wTGVmdCIsImJvdHRvbUNlbnRlciIsImJvdHRvbUxlZnQiLCJib3R0b21SaWdodCIsIm1pZGRsZUNlbnRlciIsIm1pZGRsZUxlZnQiLCJtaWRkbGVSaWdodCIsInRvcENlbnRlciIsInRvcFJpZ2h0Il0pO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yb3RhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJvdGF0ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lJTkwPT0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jYWxjdWxhdGU9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMuZm9ybWF0PW51bGw7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXkoMik7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudWk9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YWx1ZT1udWxsO3RoaXMuYmluZEl0ZW1zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5fVtTc10oKXtyZXR1cm4hMH1bJHNdKGUpe19zZXRWYWx1ZSh0aGlzLGUpfVthbl0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoIXRoaXMudWkpe3RoaXMudWk9bmV3IFVpKHt9KTt0aGlzLnVpW21zXT10aGlzW21zXTt0aGlzW1hyXSh0aGlzLnVpKTtsZXQgZTtzd2l0Y2godGhpcy5pdGVtcy5jaGlsZHJlbi5sZW5ndGgpe2Nhc2UgMDplPW5ldyBUZXh0RWRpdCh7fSk7dGhpcy51aS50ZXh0RWRpdD1lO2JyZWFrO2Nhc2UgMTplPW5ldyBDaGVja0J1dHRvbih7fSk7dGhpcy51aS5jaGVja0J1dHRvbj1lO2JyZWFrO2Nhc2UgMjplPW5ldyBDaG9pY2VMaXN0KHt9KTt0aGlzLnVpLmNob2ljZUxpc3Q9ZX10aGlzLnVpW1hyXShlKX1pZighdGhpcy51aXx8ImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTt0aGlzLmNhcHRpb24mJmRlbGV0ZSB0aGlzLmNhcHRpb25bYXNdO3RoaXNbV3NdKCk7Y29uc3QgdD10aGlzLmNhcHRpb24/dGhpcy5jYXB0aW9uW2FuXShlKS5odG1sOm51bGwsaT10aGlzLncsYT10aGlzLmg7bGV0IHI9MCxzPTA7aWYodGhpcy5tYXJnaW4pe3I9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7cz10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1sZXQgbj1udWxsO2lmKCIiPT09dGhpcy53fHwiIj09PXRoaXMuaCl7bGV0IHQ9bnVsbCxpPW51bGwsYT0wLG89MDtpZih0aGlzLnVpLmNoZWNrQnV0dG9uKWE9bz10aGlzLnVpLmNoZWNrQnV0dG9uLnNpemU7ZWxzZXtjb25zdHt3OnQsaDppfT1sYXlvdXROb2RlKHRoaXMsZSk7aWYobnVsbCE9PXQpe2E9dDtvPWl9ZWxzZSBvPWZ1bmN0aW9uIGZvbnRzX2dldE1ldHJpY3MoZSx0PSExKXtsZXQgaT1udWxsO2lmKGUpe2NvbnN0IHQ9c3RyaXBRdW90ZXMoZS50eXBlZmFjZSksYT1lW21zXS5mb250RmluZGVyLmZpbmQodCk7aT1zZWxlY3RGb250KGUsYSl9aWYoIWkpcmV0dXJue2xpbmVIZWlnaHQ6MTIsbGluZUdhcDoyLGxpbmVOb0dhcDoxMH07Y29uc3QgYT1lLnNpemV8fDEwLHI9aS5saW5lSGVpZ2h0P01hdGgubWF4KHQ/MDoxLjIsaS5saW5lSGVpZ2h0KToxLjIscz12b2lkIDA9PT1pLmxpbmVHYXA/LjI6aS5saW5lR2FwO3JldHVybntsaW5lSGVpZ2h0OnIqYSxsaW5lR2FwOnMqYSxsaW5lTm9HYXA6TWF0aC5tYXgoMSxyLXMpKmF9fSh0aGlzLmZvbnQsITApLmxpbmVOb0dhcH1uPWdldEJvcmRlckRpbXModGhpcy51aVtDc10oKSk7YSs9bi53O28rPW4uaDtpZih0aGlzLmNhcHRpb24pe2NvbnN0e3c6cixoOnMsaXNCcm9rZW46bn09dGhpcy5jYXB0aW9uW0NzXShlKTtpZihuJiZ0aGlzW2RzXSgpW3hzXSgpKXt0aGlzW09zXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dD1yO2k9cztzd2l0Y2godGhpcy5jYXB0aW9uLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0IjpjYXNlImlubGluZSI6dCs9YTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmkrPW99fWVsc2V7dD1hO2k9b31pZih0JiYiIj09PXRoaXMudyl7dCs9cjt0aGlzLnc9TWF0aC5taW4odGhpcy5tYXhXPD0wPzEvMDp0aGlzLm1heFcsdGhpcy5taW5XKzE8dD90OnRoaXMubWluVyl9aWYoaSYmIiI9PT10aGlzLmgpe2krPXM7dGhpcy5oPU1hdGgubWluKHRoaXMubWF4SDw9MD8xLzA6dGhpcy5tYXhILHRoaXMubWluSCsxPGk/aTp0aGlzLm1pbkgpfX10aGlzW09zXSgpO2ZpeERpbWVuc2lvbnModGhpcyk7c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXt0aGlzLnc9aTt0aGlzLmg9YTt0aGlzW09zXSgpO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtjb25zdCBvPXRvU3R5bGUodGhpcywiZm9udCIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInJvdGF0ZSIsImFuY2hvclR5cGUiLCJwcmVzZW5jZSIsIm1hcmdpbiIsImhBbGlnbiIpO3NldE1pbk1heERpbWVuc2lvbnModGhpcyxvKTtjb25zdCBnPVsieGZhRmllbGQiXTt0aGlzLmZvbnQmJmcucHVzaCgieGZhRm9udCIpO2lzUHJpbnRPbmx5KHRoaXMpJiZnLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGM9e3N0eWxlOm8saWQ6dGhpc1tubl0sY2xhc3M6Z307aWYoby5tYXJnaW4pe28ucGFkZGluZz1vLm1hcmdpbjtkZWxldGUgby5tYXJnaW59c2V0QWNjZXNzKHRoaXMsZyk7dGhpcy5uYW1lJiYoYy54ZmFOYW1lPXRoaXMubmFtZSk7Y29uc3QgaD1bXSxsPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6YyxjaGlsZHJlbjpofTthcHBseUFzc2lzdCh0aGlzLGMpO2NvbnN0IEM9dGhpcy5ib3JkZXI/dGhpcy5ib3JkZXJbc25dKCk6bnVsbCxRPWNvbXB1dGVCYm94KHRoaXMsbCxlKSxFPXRoaXMudWlbYW5dKCkuaHRtbDtpZighRSl7T2JqZWN0LmFzc2lnbihvLEMpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGwpLFEpfXRoaXNbQW5dJiYoRS5jaGlsZHJlbj8uWzBdP0UuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy50YWJpbmRleD10aGlzW0FuXTpFLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1tBbl0pO0UuYXR0cmlidXRlcy5zdHlsZXx8KEUuYXR0cmlidXRlcy5zdHlsZT1PYmplY3QuY3JlYXRlKG51bGwpKTtsZXQgdT1udWxsO2lmKHRoaXMudWkuYnV0dG9uKXsxPT09RS5jaGlsZHJlbi5sZW5ndGgmJihbdV09RS5jaGlsZHJlbi5zcGxpY2UoMCwxKSk7T2JqZWN0LmFzc2lnbihFLmF0dHJpYnV0ZXMuc3R5bGUsQyl9ZWxzZSBPYmplY3QuYXNzaWduKG8sQyk7aC5wdXNoKEUpO2lmKHRoaXMudmFsdWUpaWYodGhpcy51aS5pbWFnZUVkaXQpRS5jaGlsZHJlbi5wdXNoKHRoaXMudmFsdWVbYW5dKCkuaHRtbCk7ZWxzZSBpZighdGhpcy51aS5idXR0b24pe2xldCBlPSIiO2lmKHRoaXMudmFsdWUuZXhEYXRhKWU9dGhpcy52YWx1ZS5leERhdGFbZW5dKCk7ZWxzZSBpZih0aGlzLnZhbHVlLnRleHQpZT10aGlzLnZhbHVlLnRleHRbQ3NdKCk7ZWxzZXtjb25zdCB0PXRoaXMudmFsdWVbYW5dKCkuaHRtbDtudWxsIT09dCYmKGU9dC5jaGlsZHJlblswXS52YWx1ZSl9dGhpcy51aS50ZXh0RWRpdCYmdGhpcy52YWx1ZS50ZXh0Py5tYXhDaGFycyYmKEUuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5tYXhMZW5ndGg9dGhpcy52YWx1ZS50ZXh0Lm1heENoYXJzKTtpZihlKXtpZih0aGlzLnVpLm51bWVyaWNFZGl0KXtlPXBhcnNlRmxvYXQoZSk7ZT1pc05hTihlKT8iIjplLnRvU3RyaW5nKCl9InRleHRhcmVhIj09PUUuY2hpbGRyZW5bMF0ubmFtZT9FLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGV4dENvbnRlbnQ9ZTpFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudmFsdWU9ZX19aWYoIXRoaXMudWkuaW1hZ2VFZGl0JiZFLmNoaWxkcmVuPy5bMF0mJnRoaXMuaCl7bj1ufHxnZXRCb3JkZXJEaW1zKHRoaXMudWlbQ3NdKCkpO2xldCB0PTA7aWYodGhpcy5jYXB0aW9uJiZbInRvcCIsImJvdHRvbSJdLmluY2x1ZGVzKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpKXt0PXRoaXMuY2FwdGlvbi5yZXNlcnZlO3Q8PTAmJih0PXRoaXMuY2FwdGlvbltDc10oZSkuaCk7Y29uc3QgaT10aGlzLmgtdC1zLW4uaDtFLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMuc3R5bGUuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhpKX1lbHNlIEUuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9IjEwMCUifXUmJkUuY2hpbGRyZW4ucHVzaCh1KTtpZighdCl7RS5hdHRyaWJ1dGVzLmNsYXNzJiZFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO3RoaXMudz1pO3RoaXMuaD1hO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGwpLFEpfWlmKHRoaXMudWkuYnV0dG9uKXtvLnBhZGRpbmcmJmRlbGV0ZSBvLnBhZGRpbmc7ImRpdiI9PT10Lm5hbWUmJih0Lm5hbWU9InNwYW4iKTtFLmNoaWxkcmVuLnB1c2godCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhsLFEpfXRoaXMudWkuY2hlY2tCdXR0b24mJih0LmF0dHJpYnV0ZXMuY2xhc3NbMF09InhmYUNhcHRpb25Gb3JDaGVja0J1dHRvbiIpO0UuYXR0cmlidXRlcy5jbGFzc3x8KEUuYXR0cmlidXRlcy5jbGFzcz1bXSk7RS5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaCh0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOkUuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjpFLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOkUuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9aTt0aGlzLmg9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxsKSxRKX19Y2xhc3MgRmlsbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiZmlsbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5saW5lYXI9bnVsbDt0aGlzLnBhdHRlcm49bnVsbDt0aGlzLnJhZGlhbD1udWxsO3RoaXMuc29saWQ9bnVsbDt0aGlzLnN0aXBwbGU9bnVsbH1bc25dKCl7Y29uc3QgZT10aGlzW2ZzXSgpLHQ9ZVtmc10oKVtmc10oKSxpPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IGE9ImNvbG9yIixyPWE7aWYoZSBpbnN0YW5jZW9mIEJvcmRlcil7YT0iYmFja2dyb3VuZC1jb2xvciI7cj0iYmFja2dyb3VuZCI7dCBpbnN0YW5jZW9mIFVpJiYoaS5iYWNrZ3JvdW5kQ29sb3I9IndoaXRlIil9aWYoZSBpbnN0YW5jZW9mIFJlY3RhbmdsZXx8ZSBpbnN0YW5jZW9mIEFyYyl7YT1yPSJmaWxsIjtpLmZpbGw9IndoaXRlIn1mb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwiY29sb3IiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYoISh0IGluc3RhbmNlb2YgWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCBzPXRbc25dKHRoaXMuY29sb3IpO3MmJihpW3Muc3RhcnRzV2l0aCgiIyIpP2E6cl09cyk7cmV0dXJuIGl9aWYodGhpcy5jb2xvcj8udmFsdWUpe2NvbnN0IGU9dGhpcy5jb2xvcltzbl0oKTtpW2Uuc3RhcnRzV2l0aCgiIyIpP2E6cl09ZX1yZXR1cm4gaX19Y2xhc3MgRmlsdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJmaWx0ZXIiLCEwKTt0aGlzLmFkZFJldm9jYXRpb25JbmZvPWdldFN0cmluZ09wdGlvbihlLmFkZFJldm9jYXRpb25JbmZvLFsiIiwicmVxdWlyZWQiLCJvcHRpb25hbCIsIm5vbmUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52ZXJzaW9uPWdldEludGVnZXIoe2RhdGE6dGhpcy52ZXJzaW9uLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTEmJmU8PTV9KTt0aGlzLmFwcGVhcmFuY2VGaWx0ZXI9bnVsbDt0aGlzLmNlcnRpZmljYXRlcz1udWxsO3RoaXMuZGlnZXN0TWV0aG9kcz1udWxsO3RoaXMuZW5jb2RpbmdzPW51bGw7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1udWxsO3RoaXMuaGFuZGxlcj1udWxsO3RoaXMubG9ja0RvY3VtZW50PW51bGw7dGhpcy5tZHA9bnVsbDt0aGlzLnJlYXNvbnM9bnVsbDt0aGlzLnRpbWVTdGFtcD1udWxsfX1jbGFzcyBGbG9hdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImZsb2F0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3JzXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW2VzXS50cmltKCkpO3RoaXNbZXNdPWlzTmFOKGUpP251bGw6ZX1bYW5dKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tlc10/dGhpc1tlc10udG9TdHJpbmcoKToiIil9fWNsYXNzIHRlbXBsYXRlX0ZvbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImZvbnQiLCEwKTt0aGlzLmJhc2VsaW5lU2hpZnQ9Z2V0TWVhc3VyZW1lbnQoZS5iYXNlbGluZVNoaWZ0KTt0aGlzLmZvbnRIb3Jpem9udGFsU2NhbGU9Z2V0RmxvYXQoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZm9udFZlcnRpY2FsU2NhbGU9Z2V0RmxvYXQoe2RhdGE6ZS5mb250VmVydGljYWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2VybmluZ01vZGU9Z2V0U3RyaW5nT3B0aW9uKGUua2VybmluZ01vZGUsWyJub25lIiwicGFpciJdKTt0aGlzLmxldHRlclNwYWNpbmc9Z2V0TWVhc3VyZW1lbnQoZS5sZXR0ZXJTcGFjaW5nLCIwIik7dGhpcy5saW5lVGhyb3VnaD1nZXRJbnRlZ2VyKHtkYXRhOmUubGluZVRocm91Z2gsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5saW5lVGhyb3VnaFBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5vdmVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5vdmVybGluZVBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS5vdmVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5wb3N0dXJlPWdldFN0cmluZ09wdGlvbihlLnBvc3R1cmUsWyJub3JtYWwiLCJpdGFsaWMiXSk7dGhpcy5zaXplPWdldE1lYXN1cmVtZW50KGUuc2l6ZSwiMTBwdCIpO3RoaXMudHlwZWZhY2U9ZS50eXBlZmFjZXx8IkNvdXJpZXIiO3RoaXMudW5kZXJsaW5lPWdldEludGVnZXIoe2RhdGE6ZS51bmRlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy51bmRlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUudW5kZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53ZWlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUud2VpZ2h0LFsibm9ybWFsIiwiYm9sZCJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsfVtWcl0oZSl7c3VwZXJbVnJdKGUpO3RoaXNbbXNdLnVzZWRUeXBlZmFjZXMuYWRkKHRoaXMudHlwZWZhY2UpfVtzbl0oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiZmlsbCIpLHQ9ZS5jb2xvcjtpZih0KWlmKCIjMDAwMDAwIj09PXQpZGVsZXRlIGUuY29sb3I7ZWxzZSBpZighdC5zdGFydHNXaXRoKCIjIikpe2UuYmFja2dyb3VuZD10O2UuYmFja2dyb3VuZENsaXA9InRleHQiO2UuY29sb3I9InRyYW5zcGFyZW50In10aGlzLmJhc2VsaW5lU2hpZnQmJihlLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKHRoaXMuYmFzZWxpbmVTaGlmdCkpO2UuZm9udEtlcm5pbmc9Im5vbmUiPT09dGhpcy5rZXJuaW5nTW9kZT8ibm9uZSI6Im5vcm1hbCI7ZS5sZXR0ZXJTcGFjaW5nPW1lYXN1cmVUb1N0cmluZyh0aGlzLmxldHRlclNwYWNpbmcpO2lmKDAhPT10aGlzLmxpbmVUaHJvdWdoKXtlLnRleHREZWNvcmF0aW9uPSJsaW5lLXRocm91Z2giOzI9PT10aGlzLmxpbmVUaHJvdWdoJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1pZigwIT09dGhpcy5vdmVybGluZSl7ZS50ZXh0RGVjb3JhdGlvbj0ib3ZlcmxpbmUiOzI9PT10aGlzLm92ZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRTdHlsZT10aGlzLnBvc3R1cmU7ZS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoLjk5KnRoaXMuc2l6ZSk7c2V0Rm9udEZhbWlseSh0aGlzLHRoaXMsdGhpc1ttc10uZm9udEZpbmRlcixlKTtpZigwIT09dGhpcy51bmRlcmxpbmUpe2UudGV4dERlY29yYXRpb249InVuZGVybGluZSI7Mj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRXZWlnaHQ9dGhpcy53ZWlnaHQ7cmV0dXJuIGV9fWNsYXNzIEZvcm1hdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiZm9ybWF0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgSGFuZGxlciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiaGFuZGxlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgSHlwaGVuYXRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImh5cGhlbmF0aW9uIik7dGhpcy5leGNsdWRlQWxsQ2Fwcz1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPWdldEludGVnZXIoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaHlwaGVuYXRlPWdldEludGVnZXIoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHVzaENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEltYWdlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJpbWFnZSIpO3RoaXMuYXNwZWN0PWdldFN0cmluZ09wdGlvbihlLmFzcGVjdCxbImZpdCIsImFjdHVhbCIsImhlaWdodCIsIm5vbmUiLCJ3aWR0aCJdKTt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaHJlZj1lLmhyZWZ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy50cmFuc2ZlckVuY29kaW5nPWdldFN0cmluZ09wdGlvbihlLnRyYW5zZmVyRW5jb2RpbmcsWyJiYXNlNjQiLCJub25lIiwicGFja2FnZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W2FuXSgpe2lmKHRoaXMuY29udGVudFR5cGUmJiFZbi5oYXModGhpcy5jb250ZW50VHlwZS50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW21zXS5pbWFnZXMmJnRoaXNbbXNdLmltYWdlcy5nZXQodGhpcy5ocmVmKTtpZighZSYmKHRoaXMuaHJlZnx8IXRoaXNbZXNdKSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtlfHwiYmFzZTY0IiE9PXRoaXMudHJhbnNmZXJFbmNvZGluZ3x8KGU9c3RyaW5nVG9CeXRlcyhhdG9iKHRoaXNbZXNdKSkpO2lmKCFlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2lmKCF0aGlzLmNvbnRlbnRUeXBlKXtmb3IoY29uc3RbdCxpXW9mIEtuKWlmKGUubGVuZ3RoPnQubGVuZ3RoJiZ0LmV2ZXJ5KCgodCxpKT0+dD09PWVbaV0pKSl7dGhpcy5jb250ZW50VHlwZT1pO2JyZWFrfWlmKCF0aGlzLmNvbnRlbnRUeXBlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZfWNvbnN0IHQ9bmV3IEJsb2IoW2VdLHt0eXBlOnRoaXMuY29udGVudFR5cGV9KTtsZXQgaTtzd2l0Y2godGhpcy5hc3BlY3Qpe2Nhc2UiZml0IjpjYXNlImFjdHVhbCI6YnJlYWs7Y2FzZSJoZWlnaHQiOmk9e2hlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJub25lIjppPXt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvYmplY3RGaXQ6ImZpbGwifTticmVhaztjYXNlIndpZHRoIjppPXt3aWR0aDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn19Y29uc3QgYT10aGlzW2ZzXSgpO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImltZyIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFJbWFnZSJdLHN0eWxlOmksc3JjOlVSTC5jcmVhdGVPYmplY3RVUkwodCksYWx0OmE/YXJpYUxhYmVsKGFbZnNdKCkpOm51bGx9fSl9fWNsYXNzIEltYWdlRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwiaW1hZ2VFZGl0IiwhMCk7dGhpcy5kYXRhPWdldFN0cmluZ09wdGlvbihlLmRhdGEsWyJsaW5rIiwiZW1iZWQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W2FuXShlKXtyZXR1cm4iZW1iZWQiPT09dGhpcy5kYXRhP0hUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgSW50ZWdlciBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImludGVnZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bcnNdKCl7Y29uc3QgZT1wYXJzZUludCh0aGlzW2VzXS50cmltKCksMTApO3RoaXNbZXNdPWlzTmFOKGUpP251bGw6ZX1bYW5dKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tlc10/dGhpc1tlc10udG9TdHJpbmcoKToiIil9fWNsYXNzIElzc3VlcnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImlzc3VlcnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEl0ZW1zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJpdGVtcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy5zYXZlPWdldEludGVnZXIoe2RhdGE6ZS5zYXZlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheX1bYW5dKCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiB0aGlzW1FzXSgpKWUucHVzaCh0W2VuXSgpKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfX1jbGFzcyBLZWVwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJrZWVwIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjtjb25zdCB0PVsibm9uZSIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiXTt0aGlzLmludGFjdD1nZXRTdHJpbmdPcHRpb24oZS5pbnRhY3QsdCk7dGhpcy5uZXh0PWdldFN0cmluZ09wdGlvbihlLm5leHQsdCk7dGhpcy5wcmV2aW91cz1nZXRTdHJpbmdPcHRpb24oZS5wcmV2aW91cyx0KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgS2V5VXNhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImtleVVzYWdlIik7Y29uc3QgdD1bIiIsInllcyIsIm5vIl07dGhpcy5jcmxTaWduPWdldFN0cmluZ09wdGlvbihlLmNybFNpZ24sdCk7dGhpcy5kYXRhRW5jaXBoZXJtZW50PWdldFN0cmluZ09wdGlvbihlLmRhdGFFbmNpcGhlcm1lbnQsdCk7dGhpcy5kZWNpcGhlck9ubHk9Z2V0U3RyaW5nT3B0aW9uKGUuZGVjaXBoZXJPbmx5LHQpO3RoaXMuZGlnaXRhbFNpZ25hdHVyZT1nZXRTdHJpbmdPcHRpb24oZS5kaWdpdGFsU2lnbmF0dXJlLHQpO3RoaXMuZW5jaXBoZXJPbmx5PWdldFN0cmluZ09wdGlvbihlLmVuY2lwaGVyT25seSx0KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2V5QWdyZWVtZW50PWdldFN0cmluZ09wdGlvbihlLmtleUFncmVlbWVudCx0KTt0aGlzLmtleUNlcnRTaWduPWdldFN0cmluZ09wdGlvbihlLmtleUNlcnRTaWduLHQpO3RoaXMua2V5RW5jaXBoZXJtZW50PWdldFN0cmluZ09wdGlvbihlLmtleUVuY2lwaGVybWVudCx0KTt0aGlzLm5vblJlcHVkaWF0aW9uPWdldFN0cmluZ09wdGlvbihlLm5vblJlcHVkaWF0aW9uLHQpO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIExpbmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sImxpbmUiLCEwKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnNsb3BlPWdldFN0cmluZ09wdGlvbihlLnNsb3BlLFsiXFwiLCIvIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmVkZ2U9bnVsbH1bYW5dKCl7Y29uc3QgZT10aGlzW2ZzXSgpW2ZzXSgpLHQ9dGhpcy5lZGdlfHxuZXcgRWRnZSh7fSksaT10W3NuXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPSJ2aXNpYmxlIj09PXQucHJlc2VuY2U/dC50aGlja25lc3M6MDthLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZyhyKTthLnN0cm9rZT1pLmNvbG9yO2xldCBzLG4sbyxnLGM9IjEwMCUiLGg9IjEwMCUiO2lmKGUudzw9cil7W3MsbixvLGddPVsiNTAlIiwwLCI1MCUiLCIxMDAlIl07Yz1hLnN0cm9rZVdpZHRofWVsc2UgaWYoZS5oPD1yKXtbcyxuLG8sZ109WzAsIjUwJSIsIjEwMCUiLCI1MCUiXTtoPWEuc3Ryb2tlV2lkdGh9ZWxzZSJcXCI9PT10aGlzLnNsb3BlP1tzLG4sbyxnXT1bMCwwLCIxMDAlIiwiMTAwJSJdOltzLG4sbyxnXT1bMCwiMTAwJSIsIjEwMCUiLDBdO2NvbnN0IGw9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJsaW5lIixhdHRyaWJ1dGVzOnt4bWxuczpIbix4MTpzLHkxOm4seDI6byx5MjpnLHN0eWxlOmF9fV0sYXR0cmlidXRlczp7eG1sbnM6SG4sd2lkdGg6YyxoZWlnaHQ6aCxzdHlsZTp7b3ZlcmZsb3c6InZpc2libGUifX19O2lmKGhhc01hcmdpbihlKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W2xdfSk7bC5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhsKX19Y2xhc3MgTGluZWFyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJsaW5lYXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsidG9SaWdodCIsInRvQm90dG9tIiwidG9MZWZ0IiwidG9Ub3AiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtzbl0oZSl7ZT1lP2Vbc25dKCk6IiNGRkZGRkYiO3JldHVybmBsaW5lYXItZ3JhZGllbnQoJHt0aGlzLnR5cGUucmVwbGFjZSgvKFtSQkxUXSkvLCIgJDEiKS50b0xvd2VyQ2FzZSgpfSwgJHtlfSwgJHt0aGlzLmNvbG9yP3RoaXMuY29sb3Jbc25dKCk6IiMwMDAwMDAifSlgfX1jbGFzcyBMb2NrRG9jdW1lbnQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJsb2NrRG9jdW1lbnQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3JzXSgpe3RoaXNbZXNdPWdldFN0cmluZ09wdGlvbih0aGlzW2VzXSxbImF1dG8iLCIwIiwiMSJdKX19Y2xhc3MgTWFuaWZlc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sIm1hbmlmZXN0IiwhMCk7dGhpcy5hY3Rpb249Z2V0U3RyaW5nT3B0aW9uKGUuYWN0aW9uLFsiaW5jbHVkZSIsImFsbCIsImV4Y2x1ZGUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnJlZj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1hcmdpbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwibWFyZ2luIiwhMCk7dGhpcy5ib3R0b21JbnNldD1nZXRNZWFzdXJlbWVudChlLmJvdHRvbUluc2V0LCIwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlZnRJbnNldD1nZXRNZWFzdXJlbWVudChlLmxlZnRJbnNldCwiMCIpO3RoaXMucmlnaHRJbnNldD1nZXRNZWFzdXJlbWVudChlLnJpZ2h0SW5zZXQsIjAiKTt0aGlzLnRvcEluc2V0PWdldE1lYXN1cmVtZW50KGUudG9wSW5zZXQsIjAiKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbH1bc25dKCl7cmV0dXJue21hcmdpbjptZWFzdXJlVG9TdHJpbmcodGhpcy50b3BJbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLnJpZ2h0SW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5ib3R0b21JbnNldCkrIiAiK21lYXN1cmVUb1N0cmluZyh0aGlzLmxlZnRJbnNldCl9fX1jbGFzcyBNZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sIm1kcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wZXJtaXNzaW9ucz1nZXRJbnRlZ2VyKHtkYXRhOmUucGVybWlzc2lvbnMsZGVmYXVsdFZhbHVlOjIsdmFsaWRhdGU6ZT0+MT09PWV8fDM9PT1lfSk7dGhpcy5zaWduYXR1cmVUeXBlPWdldFN0cmluZ09wdGlvbihlLnNpZ25hdHVyZVR5cGUsWyJmaWxsZXIiLCJhdXRob3IiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBNZWRpdW0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sIm1lZGl1bSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbWFnaW5nQkJveD1mdW5jdGlvbiBnZXRCQm94KGUpe2NvbnN0IHQ9LTE7aWYoIWUpcmV0dXJue3g6dCx5OnQsd2lkdGg6dCxoZWlnaHQ6dH07Y29uc3QgaT1lLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8pLm1hcCgoZT0+Z2V0TWVhc3VyZW1lbnQoZSwiLTEiKSkpO2lmKGkubGVuZ3RoPDR8fGlbMl08MHx8aVszXTwwKXJldHVybnt4OnQseTp0LHdpZHRoOnQsaGVpZ2h0OnR9O2NvbnN0W2EscixzLG5dPWk7cmV0dXJue3g6YSx5OnIsd2lkdGg6cyxoZWlnaHQ6bn19KGUuaW1hZ2luZ0JCb3gpO3RoaXMubG9uZz1nZXRNZWFzdXJlbWVudChlLmxvbmcpO3RoaXMub3JpZW50YXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3JpZW50YXRpb24sWyJwb3J0cmFpdCIsImxhbmRzY2FwZSJdKTt0aGlzLnNob3J0PWdldE1lYXN1cmVtZW50KGUuc2hvcnQpO3RoaXMuc3RvY2s9ZS5zdG9ja3x8IiI7dGhpcy50cmF5SW49Z2V0U3RyaW5nT3B0aW9uKGUudHJheUluLFsiYXV0byIsImRlbGVnYXRlIiwicGFnZUZyb250Il0pO3RoaXMudHJheU91dD1nZXRTdHJpbmdPcHRpb24oZS50cmF5T3V0LFsiYXV0byIsImRlbGVnYXRlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTWVzc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwibWVzc2FnZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE51bWVyaWNFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJudW1lcmljRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVthbl0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxpPXRoaXNbZnNdKClbZnNdKCksYT17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6aVtubl0sZGF0YUlkOmlbdHNdPy5bbm5dfHxpW25uXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChpKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKGkpKXthLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDthLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIE9jY3VyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJvY2N1ciIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsPSIiIT09ZS5pbml0aWFsP2dldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT4hMH0pOiIiO3RoaXMubWF4PSIiIT09ZS5tYXg/Z2V0SW50ZWdlcih7ZGF0YTplLm1heCxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pOiIiO3RoaXMubWluPSIiIT09ZS5taW4/Z2V0SW50ZWdlcih7ZGF0YTplLm1pbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pOiIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtWcl0oKXtjb25zdCBlPXRoaXNbZnNdKCksdD10aGlzLm1pbjsiIj09PXRoaXMubWluJiYodGhpcy5taW49ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8wOjEpOyIiPT09dGhpcy5tYXgmJih0aGlzLm1heD0iIj09PXQ/ZSBpbnN0YW5jZW9mIFBhZ2VBcmVhfHxlIGluc3RhbmNlb2YgUGFnZVNldD8tMToxOnRoaXMubWluKTstMSE9PXRoaXMubWF4JiZ0aGlzLm1heDx0aGlzLm1pbiYmKHRoaXMubWF4PXRoaXMubWluKTsiIj09PXRoaXMuaW5pdGlhbCYmKHRoaXMuaW5pdGlhbD1lIGluc3RhbmNlb2YgVGVtcGxhdGU/MTp0aGlzLm1pbil9fWNsYXNzIE9pZCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwib2lkIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE9pZHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sIm9pZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5vaWQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBPdmVyZmxvdyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwib3ZlcmZsb3ciKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50cmFpbGVyPWUudHJhaWxlcnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtDc10oKXtpZighdGhpc1thc10pe2NvbnN0IGU9dGhpc1tmc10oKSx0PXRoaXNbcHNdKCksaT10W1ZzXSh0aGlzLnRhcmdldCxlKSxhPXRbVnNdKHRoaXMubGVhZGVyLGUpLHI9dFtWc10odGhpcy50cmFpbGVyLGUpO3RoaXNbYXNdPXt0YXJnZXQ6aT8uWzBdfHxudWxsLGxlYWRlcjphPy5bMF18fG51bGwsdHJhaWxlcjpyPy5bMF18fG51bGwsYWRkTGVhZGVyOiExLGFkZFRyYWlsZXI6ITF9fXJldHVybiB0aGlzW2FzXX19Y2xhc3MgUGFnZUFyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInBhZ2VBcmVhIiwhMCk7dGhpcy5ibGFua09yTm90Qmxhbms9Z2V0U3RyaW5nT3B0aW9uKGUuYmxhbmtPck5vdEJsYW5rLFsiYW55IiwiYmxhbmsiLCJub3RCbGFuayJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5pdGlhbE51bWJlcj1nZXRJbnRlZ2VyKHtkYXRhOmUuaW5pdGlhbE51bWJlcixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4hMH0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMubnVtYmVyZWQ9Z2V0SW50ZWdlcih7ZGF0YTplLm51bWJlcmVkLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5vZGRPckV2ZW49Z2V0U3RyaW5nT3B0aW9uKGUub2RkT3JFdmVuLFsiYW55IiwiZXZlbiIsIm9kZCJdKTt0aGlzLnBhZ2VQb3NpdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5wYWdlUG9zaXRpb24sWyJhbnkiLCJmaXJzdCIsImxhc3QiLCJvbmx5IiwicmVzdCJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVkaXVtPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb250ZW50QXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheX1bVXNdKCl7aWYoIXRoaXNbYXNdKXt0aGlzW2FzXT17bnVtYmVyT2ZVc2U6MH07cmV0dXJuITB9cmV0dXJuIXRoaXMub2NjdXJ8fC0xPT09dGhpcy5vY2N1ci5tYXh8fHRoaXNbYXNdLm51bWJlck9mVXNlPHRoaXMub2NjdXIubWF4fVtfcl0oKXtkZWxldGUgdGhpc1thc119W3VzXSgpe3RoaXNbYXNdfHwodGhpc1thc109e251bWJlck9mVXNlOjB9KTtjb25zdCBlPXRoaXNbZnNdKCk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PWUucmVsYXRpb24mJnRoaXNbVXNdKCkpe3RoaXNbYXNdLm51bWJlck9mVXNlKz0xO3JldHVybiB0aGlzfXJldHVybiBlW3VzXSgpfVtnc10oKXtyZXR1cm4gdGhpc1thc10uc3BhY2V8fHt3aWR0aDowLGhlaWdodDowfX1bYW5dKCl7dGhpc1thc118fCh0aGlzW2FzXT17bnVtYmVyT2ZVc2U6MX0pO2NvbnN0IGU9W107dGhpc1thc10uY2hpbGRyZW49ZTtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYodGhpcy5tZWRpdW0mJnRoaXMubWVkaXVtLnNob3J0JiZ0aGlzLm1lZGl1bS5sb25nKXt0LndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLm1lZGl1bS5zaG9ydCk7dC5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLmxvbmcpO3RoaXNbYXNdLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5zaG9ydCxoZWlnaHQ6dGhpcy5tZWRpdW0ubG9uZ307aWYoImxhbmRzY2FwZSI9PT10aGlzLm1lZGl1bS5vcmllbnRhdGlvbil7Y29uc3QgZT10LndpZHRoO3Qud2lkdGg9dC5oZWlnaHQ7dC5oZWlnaHQ9ZTt0aGlzW2FzXS5zcGFjZT17d2lkdGg6dGhpcy5tZWRpdW0ubG9uZyxoZWlnaHQ6dGhpcy5tZWRpdW0uc2hvcnR9fX1lbHNlIHdhcm4oIlhGQSAtIE5vIG1lZGl1bSBzcGVjaWZpZWQgaW4gcGFnZUFyZWE6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbWnJdKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJzdWJmb3JtIl0pLGluY2x1ZGU6ITB9KTt0aGlzW1pyXSh7ZmlsdGVyOm5ldyBTZXQoWyJjb250ZW50QXJlYSJdKSxpbmNsdWRlOiEwfSk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbbm5dLHN0eWxlOnQseGZhTmFtZTp0aGlzLm5hbWV9fSl9fWNsYXNzIFBhZ2VTZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInBhZ2VTZXQiLCEwKTt0aGlzLmR1cGxleEltcG9zaXRpb249Z2V0U3RyaW5nT3B0aW9uKGUuZHVwbGV4SW1wb3NpdGlvbixbImxvbmdFZGdlIiwic2hvcnRFZGdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5yZWxhdGlvbixbIm9yZGVyZWRPY2N1cnJlbmNlIiwiZHVwbGV4UGFnaW5hdGVkIiwic2ltcGxleFBhZ2luYXRlZCJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF5fVtfcl0oKXtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuKWVbX3JdKCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlU2V0LmNoaWxkcmVuKWVbX3JdKCl9W1VzXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW2FzXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1bdXNdKCl7dGhpc1thc118fCh0aGlzW2FzXT17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfSk7aWYoIm9yZGVyZWRPY2N1cnJlbmNlIj09PXRoaXMucmVsYXRpb24pe2lmKHRoaXNbYXNdLnBhZ2VJbmRleCsxPHRoaXMucGFnZUFyZWEuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW2FzXS5wYWdlSW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bdGhpc1thc10ucGFnZUluZGV4XVt1c10oKX1pZih0aGlzW2FzXS5wYWdlU2V0SW5kZXgrMTx0aGlzLnBhZ2VTZXQuY2hpbGRyZW4ubGVuZ3RoKXt0aGlzW2FzXS5wYWdlU2V0SW5kZXgrPTE7cmV0dXJuIHRoaXMucGFnZVNldC5jaGlsZHJlblt0aGlzW2FzXS5wYWdlU2V0SW5kZXhdW3VzXSgpfWlmKHRoaXNbVXNdKCkpe3RoaXNbYXNdLm51bWJlck9mVXNlKz0xO3RoaXNbYXNdLnBhZ2VJbmRleD0tMTt0aGlzW2FzXS5wYWdlU2V0SW5kZXg9LTE7cmV0dXJuIHRoaXNbdXNdKCl9Y29uc3QgZT10aGlzW2ZzXSgpO2lmKGUgaW5zdGFuY2VvZiBQYWdlU2V0KXJldHVybiBlW3VzXSgpO3RoaXNbX3JdKCk7cmV0dXJuIHRoaXNbdXNdKCl9Y29uc3QgZT10aGlzW3BzXSgpW2FzXS5wYWdlTnVtYmVyLHQ9ZSUyPT0wPyJldmVuIjoib2RkIixpPTA9PT1lPyJmaXJzdCI6InJlc3QiO2xldCBhPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZCgoZT0+ZS5vZGRPckV2ZW49PT10JiZlLnBhZ2VQb3NpdGlvbj09PWkpKTtpZihhKXJldHVybiBhO2E9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiZlLnBhZ2VQb3NpdGlvbj09PWkpKTtpZihhKXJldHVybiBhO2E9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9uKSk7cmV0dXJuIGF8fHRoaXMucGFnZUFyZWEuY2hpbGRyZW5bMF19fWNsYXNzIFBhcmEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInBhcmEiLCEwKTt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5saW5lSGVpZ2h0PWUubGluZUhlaWdodD9nZXRNZWFzdXJlbWVudChlLmxpbmVIZWlnaHQsIjBwdCIpOiIiO3RoaXMubWFyZ2luTGVmdD1lLm1hcmdpbkxlZnQ/Z2V0TWVhc3VyZW1lbnQoZS5tYXJnaW5MZWZ0LCIwcHQiKToiIjt0aGlzLm1hcmdpblJpZ2h0PWUubWFyZ2luUmlnaHQ/Z2V0TWVhc3VyZW1lbnQoZS5tYXJnaW5SaWdodCwiMHB0Iik6IiI7dGhpcy5vcnBoYW5zPWdldEludGVnZXIoe2RhdGE6ZS5vcnBoYW5zLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnByZXNlcnZlPWUucHJlc2VydmV8fCIiO3RoaXMucmFkaXhPZmZzZXQ9ZS5yYWRpeE9mZnNldD9nZXRNZWFzdXJlbWVudChlLnJhZGl4T2Zmc2V0LCIwcHQiKToiIjt0aGlzLnNwYWNlQWJvdmU9ZS5zcGFjZUFib3ZlP2dldE1lYXN1cmVtZW50KGUuc3BhY2VBYm92ZSwiMHB0Iik6IiI7dGhpcy5zcGFjZUJlbG93PWUuc3BhY2VCZWxvdz9nZXRNZWFzdXJlbWVudChlLnNwYWNlQmVsb3csIjBwdCIpOiIiO3RoaXMudGFiRGVmYXVsdD1lLnRhYkRlZmF1bHQ/Z2V0TWVhc3VyZW1lbnQodGhpcy50YWJEZWZhdWx0KToiIjt0aGlzLnRhYlN0b3BzPShlLnRhYlN0b3BzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKChlLHQpPT50JTI9PTE/Z2V0TWVhc3VyZW1lbnQoZSk6ZSkpO3RoaXMudGV4dEluZGVudD1lLnRleHRJbmRlbnQ/Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHQiKToiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52QWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUudkFsaWduLFsidG9wIiwiYm90dG9tIiwibWlkZGxlIl0pO3RoaXMud2lkb3dzPWdldEludGVnZXIoe2RhdGE6ZS53aWRvd3MsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuaHlwaGVuYXRpb249bnVsbH1bc25dKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsImhBbGlnbiIpOyIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5MZWZ0KSk7IiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5naWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5SaWdodCkpOyIiIT09dGhpcy5zcGFjZUFib3ZlJiYoZS5wYWRkaW5nVG9wPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNwYWNlQWJvdmUpKTsiIiE9PXRoaXMuc3BhY2VCZWxvdyYmKGUucGFkZGluZ0JvdHRvbT1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFjZUJlbG93KSk7aWYoIiIhPT10aGlzLnRleHRJbmRlbnQpe2UudGV4dEluZGVudD1tZWFzdXJlVG9TdHJpbmcodGhpcy50ZXh0SW5kZW50KTtmaXhUZXh0SW5kZW50KGUpfXRoaXMubGluZUhlaWdodD4wJiYoZS5saW5lSGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzLmxpbmVIZWlnaHQpKTsiIiE9PXRoaXMudGFiRGVmYXVsdCYmKGUudGFiU2l6ZT1tZWFzdXJlVG9TdHJpbmcodGhpcy50YWJEZWZhdWx0KSk7dGhpcy50YWJTdG9wcy5sZW5ndGg7dGhpcy5oeXBoZW5hdGF0aW9uJiZPYmplY3QuYXNzaWduKGUsdGhpcy5oeXBoZW5hdGF0aW9uW3NuXSgpKTtyZXR1cm4gZX19Y2xhc3MgUGFzc3dvcmRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJwYXNzd29yZEVkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGFzc3dvcmRDaGFyPWUucGFzc3dvcmRDaGFyfHwiKiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyB0ZW1wbGF0ZV9QYXR0ZXJuIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJwYXR0ZXJuIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbImNyb3NzSGF0Y2giLCJjcm9zc0RpYWdvbmFsIiwiZGlhZ29uYWxMZWZ0IiwiZGlhZ29uYWxSaWdodCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3NuXShlKXtlPWU/ZVtzbl0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbc25dKCk6IiMwMDAwMDAiLGk9InJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQiLGE9YCR7ZX0sJHtlfSA1cHgsJHt0fSA1cHgsJHt0fSAxMHB4YDtzd2l0Y2godGhpcy50eXBlKXtjYXNlImNyb3NzSGF0Y2giOnJldHVybmAke2l9KHRvIHRvcCwke2F9KSAke2l9KHRvIHJpZ2h0LCR7YX0pYDtjYXNlImNyb3NzRGlhZ29uYWwiOnJldHVybmAke2l9KDQ1ZGVnLCR7YX0pICR7aX0oLTQ1ZGVnLCR7YX0pYDtjYXNlImRpYWdvbmFsTGVmdCI6cmV0dXJuYCR7aX0oNDVkZWcsJHthfSlgO2Nhc2UiZGlhZ29uYWxSaWdodCI6cmV0dXJuYCR7aX0oLTQ1ZGVnLCR7YX0pYDtjYXNlImhvcml6b250YWwiOnJldHVybmAke2l9KHRvIHRvcCwke2F9KWA7Y2FzZSJ2ZXJ0aWNhbCI6cmV0dXJuYCR7aX0odG8gcmlnaHQsJHthfSlgfXJldHVybiIifX1jbGFzcyBQaWN0dXJlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJwaWN0dXJlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFByb3RvIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJwcm90byIsITApO3RoaXMuYXBwZWFyYW5jZUZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hcmM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5hc3Npc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmFyY29kZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5iaW5kSXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9va2VuZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvcmRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJ1dHRvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jYWxjdWxhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FwdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jZXJ0aWZpY2F0ZXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hlY2tCdXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2hvaWNlTGlzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb2xvcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb21iPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29udGVudEFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZVRpbWVFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFVpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlc2M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGlnZXN0TWV0aG9kPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZHJhdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5nPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY29kaW5ncz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ldmVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4ZWN1dGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXh0cmFzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbGw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmlsdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZm9ybWF0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmhhbmRsZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaHlwaGVuYXRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2VFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaXNzdWVycz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZWVwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmtleVVzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubGluZWFyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxvY2tEb2N1bWVudD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYW5pZmVzdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tYXJnaW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWRwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1lZGl1bT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm51bWVyaWNFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9jY3VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWRzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm92ZXJmbG93PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFyYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYXNzd29yZEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5waWN0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJhZGlhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29ucz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yZWN0YW5nbGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduRGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zaWduYXR1cmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zb2xpZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zcGVhaz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdGlwcGxlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0RWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWVTdGFtcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50b29sVGlwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYXZlcnNhbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy51aT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWxpZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YWx1ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy52YXJpYWJsZXM9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBSYWRpYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInJhZGlhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJ0b0VkZ2UiLCJ0b0NlbnRlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGx9W3NuXShlKXtlPWU/ZVtzbl0oKToiI0ZGRkZGRiI7Y29uc3QgdD10aGlzLmNvbG9yP3RoaXMuY29sb3Jbc25dKCk6IiMwMDAwMDAiO3JldHVybmByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IGNlbnRlciwgJHsidG9FZGdlIj09PXRoaXMudHlwZT9gJHtlfSwke3R9YDpgJHt0fSwke2V9YH0pYH19Y2xhc3MgUmVhc29uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJyZWFzb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUmVhc29ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwicmVhc29ucyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnJlYXNvbj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFJlY3RhbmdsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwicmVjdGFuZ2xlIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZmlsbD1udWxsfVthbl0oKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5sZW5ndGg/dGhpcy5lZGdlLmNoaWxkcmVuWzBdOm5ldyBFZGdlKHt9KSx0PWVbc25dKCksaT1PYmplY3QuY3JlYXRlKG51bGwpOyJ2aXNpYmxlIj09PXRoaXMuZmlsbD8ucHJlc2VuY2U/T2JqZWN0LmFzc2lnbihpLHRoaXMuZmlsbFtzbl0oKSk6aS5maWxsPSJ0cmFuc3BhcmVudCI7aS5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoInZpc2libGUiPT09ZS5wcmVzZW5jZT9lLnRoaWNrbmVzczowKTtpLnN0cm9rZT10LmNvbG9yO2NvbnN0IGE9KHRoaXMuY29ybmVyLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNvcm5lci5jaGlsZHJlblswXTpuZXcgQ29ybmVyKHt9KSlbc25dKCkscj17bmFtZToic3ZnIixjaGlsZHJlbjpbe25hbWU6InJlY3QiLGF0dHJpYnV0ZXM6e3htbG5zOkhuLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLHg6MCx5OjAscng6YS5yYWRpdXMscnk6YS5yYWRpdXMsc3R5bGU6aX19XSxhdHRyaWJ1dGVzOnt4bWxuczpIbixzdHlsZTp7b3ZlcmZsb3c6InZpc2libGUifSx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19O2lmKGhhc01hcmdpbih0aGlzW2ZzXSgpW2ZzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W3JdfSk7ci5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhyKX19Y2xhc3MgUmVmRWxlbWVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwicmVmIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNjcmlwdCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwic2NyaXB0Iik7dGhpcy5iaW5kaW5nPWUuYmluZGluZ3x8IiI7dGhpcy5jb250ZW50VHlwZT1lLmNvbnRlbnRUeXBlfHwiIjt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucnVuQXQ9Z2V0U3RyaW5nT3B0aW9uKGUucnVuQXQsWyJjbGllbnQiLCJib3RoIiwic2VydmVyIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU2V0UHJvcGVydHkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInNldFByb3BlcnR5Iik7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIn19Y2xhc3MgU2lnbkRhdGEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInNpZ25EYXRhIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJzaWduIiwiY2xlYXIiLCJ2ZXJpZnkiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIFNpZ25hdHVyZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwic2lnbmF0dXJlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIlBERjEuMyIsIlBERjEuNiJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsO3RoaXMubWFyZ2luPW51bGx9fWNsYXNzIFNpZ25pbmcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInNpZ25pbmciLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFNvbGlkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJzb2xpZCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3NuXShlKXtyZXR1cm4gZT9lW3NuXSgpOiIjRkZGRkZGIn19Y2xhc3MgU3BlYWsgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInNwZWFrIik7dGhpcy5kaXNhYmxlPWdldEludGVnZXIoe2RhdGE6ZS5kaXNhYmxlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByaW9yaXR5PWdldFN0cmluZ09wdGlvbihlLnByaW9yaXR5LFsiY3VzdG9tIiwiY2FwdGlvbiIsIm5hbWUiLCJ0b29sVGlwIl0pO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFN0aXBwbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInN0aXBwbGUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucmF0ZSxkZWZhdWx0VmFsdWU6NTAsdmFsaWRhdGU6ZT0+ZT49MCYmZTw9MTAwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtzbl0oZSl7Y29uc3QgdD10aGlzLnJhdGUvMTAwO3JldHVybiBVdGlsLm1ha2VIZXhDb2xvcihNYXRoLnJvdW5kKGUudmFsdWUuciooMS10KSt0aGlzLnZhbHVlLnIqdCksTWF0aC5yb3VuZChlLnZhbHVlLmcqKDEtdCkrdGhpcy52YWx1ZS5nKnQpLE1hdGgucm91bmQoZS52YWx1ZS5iKigxLXQpK3RoaXMudmFsdWUuYip0KSl9fWNsYXNzIFN1YmZvcm0gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInN1YmZvcm0iLCEwKTt0aGlzLmFjY2Vzcz1nZXRTdHJpbmdPcHRpb24oZS5hY2Nlc3MsWyJvcGVuIiwibm9uSW50ZXJhY3RpdmUiLCJwcm90ZWN0ZWQiLCJyZWFkT25seSJdKTt0aGlzLmFsbG93TWFjcm89Z2V0SW50ZWdlcih7ZGF0YTplLmFsbG93TWFjcm8sZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5jb2x1bW5XaWR0aHM9KGUuY29sdW1uV2lkdGhzfHwiIikudHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PiItMSI9PT1lPy0xOmdldE1lYXN1cmVtZW50KGUpKSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubG9jYWxlPWUubG9jYWxlfHwiIjt0aGlzLm1heEg9Z2V0TWVhc3VyZW1lbnQoZS5tYXhILCIwcHQiKTt0aGlzLm1heFc9Z2V0TWVhc3VyZW1lbnQoZS5tYXhXLCIwcHQiKTt0aGlzLm1lcmdlTW9kZT1nZXRTdHJpbmdPcHRpb24oZS5tZXJnZU1vZGUsWyJjb25zdW1lRGF0YSIsIm1hdGNoVGVtcGxhdGUiXSk7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucmVzdG9yZVN0YXRlPWdldFN0cmluZ09wdGlvbihlLnJlc3RvcmVTdGF0ZSxbIm1hbnVhbCIsImF1dG8iXSk7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbIm5hbWUiLCJub25lIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvb2tlbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5rZWVwPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5vdmVyZmxvdz1udWxsO3RoaXMucGFnZVNldD1udWxsO3RoaXMucGFyYT1udWxsO3RoaXMudHJhdmVyc2FsPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFyaWFibGVzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29ubmVjdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kcmF3PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcm90bz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zZXRQcm9wZXJ0eT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5fVtkc10oKXtjb25zdCBlPXRoaXNbZnNdKCk7cmV0dXJuIGUgaW5zdGFuY2VvZiBTdWJmb3JtU2V0P2VbZHNdKCk6ZX1bU3NdKCl7cmV0dXJuITB9W3hzXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW2FzXS5hdHRlbXB0JiZ0aGlzW2FzXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tmc10oKVt4c10oKX0qW0VzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtzc10oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVtqcl0oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bZ3NdKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVtHc10oKXtjb25zdCBlPXRoaXNbZHNdKCk7aWYoIWVbR3NdKCkpcmV0dXJuITE7aWYodm9pZCAwIT09dGhpc1thc10uX2lzU3BsaXR0YWJsZSlyZXR1cm4gdGhpc1thc10uX2lzU3BsaXR0YWJsZTtpZigicG9zaXRpb24iPT09dGhpcy5sYXlvdXR8fHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7dGhpc1thc10uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZih0aGlzLmtlZXAmJiJub25lIiE9PXRoaXMua2VlcC5pbnRhY3Qpe3RoaXNbYXNdLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbYXNdLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW2FzXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVthbl0oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYodGhpcy5icmVhayl7aWYoImF1dG8iIT09dGhpcy5icmVhay5hZnRlcnx8IiIhPT10aGlzLmJyZWFrLmFmdGVyVGFyZ2V0KXtjb25zdCBlPW5ldyBCcmVha0FmdGVyKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYWZ0ZXIsdGFyZ2V0OnRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQsc3RhcnROZXc6dGhpcy5icmVhay5zdGFydE5ldy50b1N0cmluZygpfSk7ZVttc109dGhpc1ttc107dGhpc1tYcl0oZSk7dGhpcy5icmVha0FmdGVyLnB1c2goZSl9aWYoImF1dG8iIT09dGhpcy5icmVhay5iZWZvcmV8fCIiIT09dGhpcy5icmVhay5iZWZvcmVUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQmVmb3JlKHt0YXJnZXRUeXBlOnRoaXMuYnJlYWsuYmVmb3JlLHRhcmdldDp0aGlzLmJyZWFrLmJlZm9yZVRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW21zXT10aGlzW21zXTt0aGlzW1hyXShlKTt0aGlzLmJyZWFrQmVmb3JlLnB1c2goZSl9aWYoIiIhPT10aGlzLmJyZWFrLm92ZXJmbG93VGFyZ2V0KXtjb25zdCBlPW5ldyBPdmVyZmxvdyh7dGFyZ2V0OnRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQsbGVhZGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dMZWFkZXIsdHJhaWxlcjp0aGlzLmJyZWFrLm92ZXJmbG93VHJhaWxlcn0pO2VbbXNdPXRoaXNbbXNdO3RoaXNbWHJdKGUpO3RoaXMub3ZlcmZsb3cucHVzaChlKX10aGlzW2pzXSh0aGlzLmJyZWFrKTt0aGlzLmJyZWFrPW51bGx9aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTsodGhpcy5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+MXx8dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuLmxlbmd0aD4xKSYmd2FybigiWEZBIC0gU2V2ZXJhbCBicmVha0JlZm9yZSBvciBicmVha0FmdGVyIGluIHN1YmZvcm1zOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTtpZih0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7Y29uc3QgZT10aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXJldHVybiBIVE1MUmVzdWx0LmJyZWFrTm9kZShlKX1pZih0aGlzW2FzXT8uYWZ0ZXJCcmVha0FmdGVyKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7Y29uc3QgdD1bXSxpPXtpZDp0aGlzW25uXSxjbGFzczpbXX07c2V0QWNjZXNzKHRoaXMsaS5jbGFzcyk7dGhpc1thc118fCh0aGlzW2FzXT1PYmplY3QuY3JlYXRlKG51bGwpKTtPYmplY3QuYXNzaWduKHRoaXNbYXNdLHtjaGlsZHJlbjp0LGxpbmU6bnVsbCxhdHRyaWJ1dGVzOmksYXR0ZW1wdDowLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IGE9dGhpc1twc10oKSxyPWFbYXNdLm5vTGF5b3V0RmFpbHVyZSxzPXRoaXNbR3NdKCk7c3x8c2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7aWYoIWNoZWNrRGltZW5zaW9ucyh0aGlzLGUpKXJldHVybiBIVE1MUmVzdWx0LkZBSUxVUkU7Y29uc3Qgbj1uZXcgU2V0KFsiYXJlYSIsImRyYXciLCJleGNsR3JvdXAiLCJmaWVsZCIsInN1YmZvcm0iLCJzdWJmb3JtU2V0Il0pO2lmKHRoaXMubGF5b3V0LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgZT10aGlzW2RzXSgpLmNvbHVtbldpZHRocztpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wKXt0aGlzW2FzXS5jb2x1bW5XaWR0aHM9ZTt0aGlzW2FzXS5jdXJyZW50Q29sdW1uPTB9fWNvbnN0IG89dG9TdHlsZSh0aGlzLCJhbmNob3JUeXBlIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJib3JkZXIiLCJtYXJnaW4iLCJoQWxpZ24iKSxnPVsieGZhU3ViZm9ybSJdLGM9bGF5b3V0Q2xhc3ModGhpcyk7YyYmZy5wdXNoKGMpO2kuc3R5bGU9bztpLmNsYXNzPWc7dGhpcy5uYW1lJiYoaS54ZmFOYW1lPXRoaXMubmFtZSk7aWYodGhpcy5vdmVyZmxvdyl7Y29uc3QgdD10aGlzLm92ZXJmbG93W0NzXSgpO2lmKHQuYWRkTGVhZGVyKXt0LmFkZExlYWRlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQubGVhZGVyLGUpfX10aGlzW1dzXSgpO2NvbnN0IGg9ImxyLXRiIj09PXRoaXMubGF5b3V0fHwicmwtdGIiPT09dGhpcy5sYXlvdXQsbD1oPzI6MTtmb3IoO3RoaXNbYXNdLmF0dGVtcHQ8bDt0aGlzW2FzXS5hdHRlbXB0Kyspe2gmJjE9PT10aGlzW2FzXS5hdHRlbXB0JiYodGhpc1thc10ubnVtYmVySW5MaW5lPTApO2NvbnN0IGU9dGhpc1tacl0oe2ZpbHRlcjpuLGluY2x1ZGU6ITB9KTtpZihlLnN1Y2Nlc3MpYnJlYWs7aWYoZS5pc0JyZWFrKCkpe3RoaXNbT3NdKCk7cmV0dXJuIGV9aWYoaCYmMD09PXRoaXNbYXNdLmF0dGVtcHQmJjA9PT10aGlzW2FzXS5udW1iZXJJbkxpbmUmJiFhW2FzXS5ub0xheW91dEZhaWx1cmUpe3RoaXNbYXNdLmF0dGVtcHQ9bDticmVha319dGhpc1tPc10oKTtzfHx1bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2FbYXNdLm5vTGF5b3V0RmFpbHVyZT1yO2lmKHRoaXNbYXNdLmF0dGVtcHQ9PT1sKXt0aGlzLm92ZXJmbG93JiYodGhpc1twc10oKVthc10ub3ZlcmZsb3dOb2RlPXRoaXMub3ZlcmZsb3cpO3N8fGRlbGV0ZSB0aGlzW2FzXTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfWlmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tDc10oKTtpZih0LmFkZFRyYWlsZXIpe3QuYWRkVHJhaWxlcj0hMTtoYW5kbGVPdmVyZmxvdyh0aGlzLHQudHJhaWxlcixlKX19bGV0IEM9MCxRPTA7aWYodGhpcy5tYXJnaW4pe0M9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7UT10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBFPU1hdGgubWF4KHRoaXNbYXNdLndpZHRoK0MsdGhpcy53fHwwKSx1PU1hdGgubWF4KHRoaXNbYXNdLmhlaWdodCtRLHRoaXMuaHx8MCksZD1bdGhpcy54LHRoaXMueSxFLHVdOyIiPT09dGhpcy53JiYoby53aWR0aD1tZWFzdXJlVG9TdHJpbmcoRSkpOyIiPT09dGhpcy5oJiYoby5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHUpKTtpZigoIjBweCI9PT1vLndpZHRofHwiMHB4Ij09PW8uaGVpZ2h0KSYmMD09PXQubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2NvbnN0IGY9e25hbWU6ImRpdiIsYXR0cmlidXRlczppLGNoaWxkcmVuOnR9O2FwcGx5QXNzaXN0KHRoaXMsaSk7Y29uc3QgcD1IVE1MUmVzdWx0LnN1Y2Nlc3MoY3JlYXRlV3JhcHBlcih0aGlzLGYpLGQpO2lmKHRoaXMuYnJlYWtBZnRlci5jaGlsZHJlbi5sZW5ndGg+PTEpe2NvbnN0IGU9dGhpcy5icmVha0FmdGVyLmNoaWxkcmVuWzBdO2lmKGhhbmRsZUJyZWFrKGUpKXt0aGlzW2FzXS5hZnRlckJyZWFrQWZ0ZXI9cDtyZXR1cm4gSFRNTFJlc3VsdC5icmVha05vZGUoZSl9fWRlbGV0ZSB0aGlzW2FzXTtyZXR1cm4gcH19Y2xhc3MgU3ViZm9ybVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwic3ViZm9ybVNldCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5yZWxhdGlvbixbIm9yZGVyZWQiLCJjaG9pY2UiLCJ1bm9yZGVyZWQiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5ib29rZW5kPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5vY2N1cj1udWxsO3RoaXMub3ZlcmZsb3c9bnVsbDt0aGlzLmJyZWFrQWZ0ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtCZWZvcmU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtU2V0PW5ldyBYRkFPYmplY3RBcnJheX0qW0VzXSgpe3lpZWxkKmdldENvbnRhaW5lZENoaWxkcmVuKHRoaXMpfVtkc10oKXtsZXQgZT10aGlzW2ZzXSgpO2Zvcig7IShlIGluc3RhbmNlb2YgU3ViZm9ybSk7KWU9ZVtmc10oKTtyZXR1cm4gZX1bU3NdKCl7cmV0dXJuITB9fWNsYXNzIFN1YmplY3RETiBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInN1YmplY3RETiIpO3RoaXMuZGVsaW1pdGVyPWUuZGVsaW1pdGVyfHwiLCI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3JzXSgpe3RoaXNbZXNdPW5ldyBNYXAodGhpc1tlc10uc3BsaXQodGhpcy5kZWxpbWl0ZXIpLm1hcCgoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKSl9fWNsYXNzIFN1YmplY3RETnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInN1YmplY3RETnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5zdWJqZWN0RE49bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBTdWJtaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInN1Ym1pdCIsITApO3RoaXMuZW1iZWRQREY9Z2V0SW50ZWdlcih7ZGF0YTplLmVtYmVkUERGLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsieGRwIiwiZm9ybWRhdGEiLCJwZGYiLCJ1cmxlbmNvZGVkIiwieGZkIiwieG1sIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50YXJnZXQ9ZS50YXJnZXR8fCIiO3RoaXMudGV4dEVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS50ZXh0RW5jb2Rpbmc/ZS50ZXh0RW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnhkcENvbnRlbnQ9ZS54ZHBDb250ZW50fHwiIjt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHREYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25EYXRhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlUHJvZmlsZT1nZXRTdHJpbmdPcHRpb24oZS5iYXNlUHJvZmlsZSxbImZ1bGwiLCJpbnRlcmFjdGl2ZUZvcm1zIl0pO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheX1bcnNdKCl7MD09PXRoaXMuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGgmJndhcm4oIlhGQSAtIE5vIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGUuIik7dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MiYmd2FybigiWEZBIC0gU2V2ZXJhbCBzdWJmb3JtcyBpbiB0ZW1wbGF0ZSBub2RlOiBwbGVhc2UgZmlsZSBhIGJ1Zy4iKTt0aGlzW0FuXT01ZTN9W0dzXSgpe3JldHVybiEwfVtWc10oZSx0KXtyZXR1cm4gZS5zdGFydHNXaXRoKCIjIik/W3RoaXNbd3NdLmdldChlLnNsaWNlKDEpKV06c2VhcmNoTm9kZSh0aGlzLHQsZSwhMCwhMCl9Klt0bl0oKXtpZighdGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfSk7dGhpc1thc109e292ZXJmbG93Tm9kZTpudWxsLGZpcnN0VW5zcGxpdHRhYmxlOm51bGwsY3VycmVudENvbnRlbnRBcmVhOm51bGwsY3VycmVudFBhZ2VBcmVhOm51bGwsbm9MYXlvdXRGYWlsdXJlOiExLHBhZ2VOdW1iZXI6MSxwYWdlUG9zaXRpb246ImZpcnN0IixvZGRPckV2ZW46Im9kZCIsYmxhbmtPck5vdEJsYW5rOiJub25CbGFuayIscGFyYVN0YWNrOltdfTtjb25zdCBlPXRoaXMuc3ViZm9ybS5jaGlsZHJlblswXTtlLnBhZ2VTZXRbX3JdKCk7Y29uc3QgdD1lLnBhZ2VTZXQucGFnZUFyZWEuY2hpbGRyZW4saT17bmFtZToiZGl2IixjaGlsZHJlbjpbXX07bGV0IGE9bnVsbCxyPW51bGwscz1udWxsO2lmKGUuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtyPWUuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07cz1yLnRhcmdldH1lbHNlIGlmKGUuc3ViZm9ybS5jaGlsZHJlbi5sZW5ndGg+PTEmJmUuc3ViZm9ybS5jaGlsZHJlblswXS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe3I9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuWzBdO3M9ci50YXJnZXR9ZWxzZSBpZihlLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3I9ZS5icmVhaztzPXIuYmVmb3JlVGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrPy5iZWZvcmVUYXJnZXQpe3I9ZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrO3M9ci5iZWZvcmVUYXJnZXR9aWYocil7Y29uc3QgZT10aGlzW1ZzXShzLHJbZnNdKCkpO2lmKGUgaW5zdGFuY2VvZiBQYWdlQXJlYSl7YT1lO3JbYXNdPXt9fX1hfHwoYT10WzBdKTthW2FzXT17bnVtYmVyT2ZVc2U6MX07Y29uc3Qgbj1hW2ZzXSgpO25bYXNdPXtudW1iZXJPZlVzZToxLHBhZ2VJbmRleDpuLnBhZ2VBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSkscGFnZVNldEluZGV4OjB9O2xldCBvLGc9bnVsbCxjPW51bGwsaD0hMCxsPTAsQz0wO2Zvcig7Oyl7aWYoaClsPTA7ZWxzZXtpLmNoaWxkcmVuLnBvcCgpO2lmKDM9PSsrbCl7d2FybigiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBpfX1vPW51bGw7dGhpc1thc10uY3VycmVudFBhZ2VBcmVhPWE7Y29uc3QgdD1hW2FuXSgpLmh0bWw7aS5jaGlsZHJlbi5wdXNoKHQpO2lmKGcpe3RoaXNbYXNdLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goZ1thbl0oYVthc10uc3BhY2UpLmh0bWwpO2c9bnVsbH1pZihjKXt0aGlzW2FzXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGNbYW5dKGFbYXNdLnNwYWNlKS5odG1sKTtjPW51bGx9Y29uc3Qgcj1hLmNvbnRlbnRBcmVhLmNoaWxkcmVuLHM9dC5jaGlsZHJlbi5maWx0ZXIoKGU9PmUuYXR0cmlidXRlcy5jbGFzcy5pbmNsdWRlcygieGZhQ29udGVudGFyZWEiKSkpO2g9ITE7dGhpc1thc10uZmlyc3RVbnNwbGl0dGFibGU9bnVsbDt0aGlzW2FzXS5ub0xheW91dEZhaWx1cmU9ITE7Y29uc3QgZmx1c2g9dD0+e2NvbnN0IGk9ZVtzc10oKTtpZihpKXtofHw9aS5jaGlsZHJlbj8ubGVuZ3RoPjA7c1t0XS5jaGlsZHJlbi5wdXNoKGkpfX07Zm9yKGxldCB0PUMsYT1yLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPXRoaXNbYXNdLmN1cnJlbnRDb250ZW50QXJlYT1yW3RdLG49e3dpZHRoOmEudyxoZWlnaHQ6YS5ofTtDPTA7aWYoZyl7c1t0XS5jaGlsZHJlbi5wdXNoKGdbYW5dKG4pLmh0bWwpO2c9bnVsbH1pZihjKXtzW3RdLmNoaWxkcmVuLnB1c2goY1thbl0obikuaHRtbCk7Yz1udWxsfWNvbnN0IGw9ZVthbl0obik7aWYobC5zdWNjZXNzKXtpZihsLmh0bWwpe2h8fD1sLmh0bWwuY2hpbGRyZW4/Lmxlbmd0aD4wO3NbdF0uY2hpbGRyZW4ucHVzaChsLmh0bWwpfWVsc2UhaCYmaS5jaGlsZHJlbi5sZW5ndGg+MSYmaS5jaGlsZHJlbi5wb3AoKTtyZXR1cm4gaX1pZihsLmlzQnJlYWsoKSl7Y29uc3QgZT1sLmJyZWFrTm9kZTtmbHVzaCh0KTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpY29udGludWU7aWYoZS5sZWFkZXIpe2c9dGhpc1tWc10oZS5sZWFkZXIsZVtmc10oKSk7Zz1nP2dbMF06bnVsbH1pZihlLnRyYWlsZXIpe2M9dGhpc1tWc10oZS50cmFpbGVyLGVbZnNdKCkpO2M9Yz9jWzBdOm51bGx9aWYoInBhZ2VBcmVhIj09PWUudGFyZ2V0VHlwZSl7bz1lW2FzXS50YXJnZXQ7dD0xLzB9ZWxzZSBpZihlW2FzXS50YXJnZXQpe289ZVthc10udGFyZ2V0O0M9ZVthc10uaW5kZXgrMTt0PTEvMH1lbHNlIHQ9ZVthc10uaW5kZXh9ZWxzZSBpZih0aGlzW2FzXS5vdmVyZmxvd05vZGUpe2NvbnN0IGU9dGhpc1thc10ub3ZlcmZsb3dOb2RlO3RoaXNbYXNdLm92ZXJmbG93Tm9kZT1udWxsO2NvbnN0IGk9ZVtDc10oKSxhPWkudGFyZ2V0O2kuYWRkTGVhZGVyPW51bGwhPT1pLmxlYWRlcjtpLmFkZFRyYWlsZXI9bnVsbCE9PWkudHJhaWxlcjtmbHVzaCh0KTtjb25zdCBzPXQ7dD0xLzA7aWYoYSBpbnN0YW5jZW9mIFBhZ2VBcmVhKW89YTtlbHNlIGlmKGEgaW5zdGFuY2VvZiBDb250ZW50QXJlYSl7Y29uc3QgZT1yLmluZGV4T2YoYSk7aWYoLTEhPT1lKWU+cz90PWUtMTpDPWU7ZWxzZXtvPWFbZnNdKCk7Qz1vLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSl9fX1lbHNlIGZsdXNoKHQpfXRoaXNbYXNdLnBhZ2VOdW1iZXIrPTE7byYmKG9bVXNdKCk/b1thc10ubnVtYmVyT2ZVc2UrPTE6bz1udWxsKTthPW98fGFbdXNdKCk7eWllbGQgbnVsbH19fWNsYXNzIFRleHQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJ0ZXh0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heENoYXJzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhDaGFycyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yaWQ9ZS5yaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bV3JdKCl7cmV0dXJuITB9W1lzXShlKXtpZihlW0pzXT09PWduLnhodG1sLmlkKXt0aGlzW2VzXT1lO3JldHVybiEwfXdhcm4oYFhGQSAtIEludmFsaWQgY29udGVudCBpbiBUZXh0OiAke2VbSHNdfS5gKTtyZXR1cm4hMX1bVHNdKGUpe3RoaXNbZXNdaW5zdGFuY2VvZiBYRkFPYmplY3R8fHN1cGVyW1RzXShlKX1bcnNdKCl7InN0cmluZyI9PXR5cGVvZiB0aGlzW2VzXSYmKHRoaXNbZXNdPXRoaXNbZXNdLnJlcGxhY2VBbGwoIlxyXG4iLCJcbiIpKX1bQ3NdKCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0aGlzW2VzXT90aGlzW2VzXS5zcGxpdCgvW1x1MjAyOVx1MjAyOFxuXS8pLnJlZHVjZSgoKGUsdCk9Pnt0JiZlLnB1c2godCk7cmV0dXJuIGV9KSxbXSkuam9pbigiXG4iKTp0aGlzW2VzXVtlbl0oKX1bYW5dKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tlc10pe2NvbnN0IGU9dmFsdWVUb0h0bWwodGhpc1tlc10pLmh0bWw7aWYodGhpc1tlc10uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2VzXS5zcGxpdCgiXHUyMDI5IikubWFwKChlPT5lLnNwbGl0KC9bXHUyMDI4XG5dLykucmVkdWNlKCgoZSx0KT0+e2UucHVzaCh7bmFtZToic3BhbiIsdmFsdWU6dH0se25hbWU6ImJyIn0pO3JldHVybiBlfSksW10pKSkuZm9yRWFjaCgodD0+e2UuY2hpbGRyZW4ucHVzaCh7bmFtZToicCIsY2hpbGRyZW46dH0pfSkpfWVsc2UgaWYoL1tcdTIwMjhcbl0vLnRlc3QodGhpc1tlc10pKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW2VzXS5zcGxpdCgvW1x1MjAyOFxuXS8pLmZvckVhY2goKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pKX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiB0aGlzW2VzXVthbl0oZSl9fWNsYXNzIFRleHRFZGl0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJ0ZXh0RWRpdCIsITApO3RoaXMuYWxsb3dSaWNoVGV4dD1nZXRJbnRlZ2VyKHtkYXRhOmUuYWxsb3dSaWNoVGV4dCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5tdWx0aUxpbmU9Z2V0SW50ZWdlcih7ZGF0YTplLm11bHRpTGluZSxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+MD09PWV8fDE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudlNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS52U2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVthbl0oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKTtsZXQgaTtjb25zdCBhPXRoaXNbZnNdKClbZnNdKCk7IiI9PT10aGlzLm11bHRpTGluZSYmKHRoaXMubXVsdGlMaW5lPWEgaW5zdGFuY2VvZiBEcmF3PzE6MCk7aT0xPT09dGhpcy5tdWx0aUxpbmU/e25hbWU6InRleHRhcmVhIixhdHRyaWJ1dGVzOntkYXRhSWQ6YVt0c10/Lltubl18fGFbbm5dLGZpZWxkSWQ6YVtubl0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX06e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixkYXRhSWQ6YVt0c10/Lltubl18fGFbbm5dLGZpZWxkSWQ6YVtubl0sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7aS5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7aS5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltpXX0pfX1jbGFzcyBUaW1lIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJ0aW1lIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3JzXSgpe2NvbnN0IGU9dGhpc1tlc10udHJpbSgpO3RoaXNbZXNdPWU/bmV3IERhdGUoZSk6bnVsbH1bYW5dKGUpe3JldHVybiB2YWx1ZVRvSHRtbCh0aGlzW2VzXT90aGlzW2VzXS50b1N0cmluZygpOiIiKX19Y2xhc3MgVGltZVN0YW1wIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJ0aW1lU3RhbXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuc2VydmVyPWUuc2VydmVyfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUb29sVGlwIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJ0b29sVGlwIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBUcmF2ZXJzYWwgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInRyYXZlcnNhbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy50cmF2ZXJzZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYXZlcnNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJ0cmF2ZXJzZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsibmV4dCIsImJhY2siLCJkb3duIiwiZmlyc3QiLCJsZWZ0IiwicmlnaHQiLCJ1cCJdKTt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH1nZXQgbmFtZSgpe3JldHVybiB0aGlzLm9wZXJhdGlvbn1bTXNdKCl7cmV0dXJuITF9fWNsYXNzIFVpIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJ1aSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5iYXJjb2RlPW51bGw7dGhpcy5idXR0b249bnVsbDt0aGlzLmNoZWNrQnV0dG9uPW51bGw7dGhpcy5jaG9pY2VMaXN0PW51bGw7dGhpcy5kYXRlVGltZUVkaXQ9bnVsbDt0aGlzLmRlZmF1bHRVaT1udWxsO3RoaXMuaW1hZ2VFZGl0PW51bGw7dGhpcy5udW1lcmljRWRpdD1udWxsO3RoaXMucGFzc3dvcmRFZGl0PW51bGw7dGhpcy5zaWduYXR1cmU9bnVsbDt0aGlzLnRleHRFZGl0PW51bGx9W0NzXSgpe2lmKHZvaWQgMD09PXRoaXNbYXNdKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwicGljdHVyZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXt0aGlzW2FzXT10O3JldHVybiB0fX10aGlzW2FzXT1udWxsfXJldHVybiB0aGlzW2FzXX1bYW5dKGUpe2NvbnN0IHQ9dGhpc1tDc10oKTtyZXR1cm4gdD90W2FuXShlKTpIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYWxpZGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihKbiwidmFsaWRhdGUiLCEwKTt0aGlzLmZvcm1hdFRlc3Q9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0VGVzdCxbIndhcm5pbmciLCJkaXNhYmxlZCIsImVycm9yIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5udWxsVGVzdD1nZXRTdHJpbmdPcHRpb24oZS5udWxsVGVzdCxbImRpc2FibGVkIiwiZXJyb3IiLCJ3YXJuaW5nIl0pO3RoaXMuc2NyaXB0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5zY3JpcHRUZXN0LFsiZXJyb3IiLCJkaXNhYmxlZCIsIndhcm5pbmciXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZXNzYWdlPW51bGw7dGhpcy5waWN0dXJlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbH19Y2xhc3MgVmFsdWUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSm4sInZhbHVlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJyaWRlPWdldEludGVnZXIoe2RhdGE6ZS5vdmVycmlkZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYXJjPW51bGw7dGhpcy5ib29sZWFuPW51bGw7dGhpcy5kYXRlPW51bGw7dGhpcy5kYXRlVGltZT1udWxsO3RoaXMuZGVjaW1hbD1udWxsO3RoaXMuZXhEYXRhPW51bGw7dGhpcy5mbG9hdD1udWxsO3RoaXMuaW1hZ2U9bnVsbDt0aGlzLmludGVnZXI9bnVsbDt0aGlzLmxpbmU9bnVsbDt0aGlzLnJlY3RhbmdsZT1udWxsO3RoaXMudGV4dD1udWxsO3RoaXMudGltZT1udWxsfVskc10oZSl7Y29uc3QgdD10aGlzW2ZzXSgpO2lmKHQgaW5zdGFuY2VvZiBGaWVsZCYmdC51aT8uaW1hZ2VFZGl0KXtpZighdGhpcy5pbWFnZSl7dGhpcy5pbWFnZT1uZXcgSW1hZ2Uoe30pO3RoaXNbWHJdKHRoaXMuaW1hZ2UpfXRoaXMuaW1hZ2VbZXNdPWVbZXNdO3JldHVybn1jb25zdCBpPWVbSHNdO2lmKG51bGw9PT10aGlzW2ldKXtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbZV09bnVsbDt0aGlzW2pzXSh0KX19dGhpc1tlW0hzXV09ZTt0aGlzW1hyXShlKX1lbHNlIHRoaXNbaV1bZXNdPWVbZXNdfVtlbl0oKXtpZih0aGlzLmV4RGF0YSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXMuZXhEYXRhW2VzXT90aGlzLmV4RGF0YVtlc10udHJpbSgpOnRoaXMuZXhEYXRhW2VzXVtlbl0oKS50cmltKCk7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2lmKCJpbWFnZSI9PT1lKWNvbnRpbnVlO2NvbnN0IHQ9dGhpc1tlXTtpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybih0W2VzXXx8IiIpLnRvU3RyaW5nKCkudHJpbSgpfXJldHVybiBudWxsfVthbl0oZSl7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcykpe2NvbnN0IGk9dGhpc1t0XTtpZihpIGluc3RhbmNlb2YgWEZBT2JqZWN0KXJldHVybiBpW2FuXShlKX1yZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgVmFyaWFibGVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEpuLCJ2YXJpYWJsZXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1hbmlmZXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNjcmlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fVtNc10oKXtyZXR1cm4hMH19Y2xhc3MgVGVtcGxhdGVOYW1lc3BhY2V7c3RhdGljW29uXShlLHQpe2lmKFRlbXBsYXRlTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXtjb25zdCBpPVRlbXBsYXRlTmFtZXNwYWNlW2VdKHQpO2lbenNdKHQpO3JldHVybiBpfX1zdGF0aWMgYXBwZWFyYW5jZUZpbHRlcihlKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VGaWx0ZXIoZSl9c3RhdGljIGFyYyhlKXtyZXR1cm4gbmV3IEFyYyhlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IEFyZWEoZSl9c3RhdGljIGFzc2lzdChlKXtyZXR1cm4gbmV3IEFzc2lzdChlKX1zdGF0aWMgYmFyY29kZShlKXtyZXR1cm4gbmV3IEJhcmNvZGUoZSl9c3RhdGljIGJpbmQoZSl7cmV0dXJuIG5ldyBCaW5kKGUpfXN0YXRpYyBiaW5kSXRlbXMoZSl7cmV0dXJuIG5ldyBCaW5kSXRlbXMoZSl9c3RhdGljIGJvb2tlbmQoZSl7cmV0dXJuIG5ldyBCb29rZW5kKGUpfXN0YXRpYyBib29sZWFuKGUpe3JldHVybiBuZXcgQm9vbGVhbkVsZW1lbnQoZSl9c3RhdGljIGJvcmRlcihlKXtyZXR1cm4gbmV3IEJvcmRlcihlKX1zdGF0aWMgYnJlYWsoZSl7cmV0dXJuIG5ldyBCcmVhayhlKX1zdGF0aWMgYnJlYWtBZnRlcihlKXtyZXR1cm4gbmV3IEJyZWFrQWZ0ZXIoZSl9c3RhdGljIGJyZWFrQmVmb3JlKGUpe3JldHVybiBuZXcgQnJlYWtCZWZvcmUoZSl9c3RhdGljIGJ1dHRvbihlKXtyZXR1cm4gbmV3IEJ1dHRvbihlKX1zdGF0aWMgY2FsY3VsYXRlKGUpe3JldHVybiBuZXcgQ2FsY3VsYXRlKGUpfXN0YXRpYyBjYXB0aW9uKGUpe3JldHVybiBuZXcgQ2FwdGlvbihlKX1zdGF0aWMgY2VydGlmaWNhdGUoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZShlKX1zdGF0aWMgY2VydGlmaWNhdGVzKGUpe3JldHVybiBuZXcgQ2VydGlmaWNhdGVzKGUpfXN0YXRpYyBjaGVja0J1dHRvbihlKXtyZXR1cm4gbmV3IENoZWNrQnV0dG9uKGUpfXN0YXRpYyBjaG9pY2VMaXN0KGUpe3JldHVybiBuZXcgQ2hvaWNlTGlzdChlKX1zdGF0aWMgY29sb3IoZSl7cmV0dXJuIG5ldyBDb2xvcihlKX1zdGF0aWMgY29tYihlKXtyZXR1cm4gbmV3IENvbWIoZSl9c3RhdGljIGNvbm5lY3QoZSl7cmV0dXJuIG5ldyBDb25uZWN0KGUpfXN0YXRpYyBjb250ZW50QXJlYShlKXtyZXR1cm4gbmV3IENvbnRlbnRBcmVhKGUpfXN0YXRpYyBjb3JuZXIoZSl7cmV0dXJuIG5ldyBDb3JuZXIoZSl9c3RhdGljIGRhdGUoZSl7cmV0dXJuIG5ldyBEYXRlRWxlbWVudChlKX1zdGF0aWMgZGF0ZVRpbWUoZSl7cmV0dXJuIG5ldyBEYXRlVGltZShlKX1zdGF0aWMgZGF0ZVRpbWVFZGl0KGUpe3JldHVybiBuZXcgRGF0ZVRpbWVFZGl0KGUpfXN0YXRpYyBkZWNpbWFsKGUpe3JldHVybiBuZXcgRGVjaW1hbChlKX1zdGF0aWMgZGVmYXVsdFVpKGUpe3JldHVybiBuZXcgRGVmYXVsdFVpKGUpfXN0YXRpYyBkZXNjKGUpe3JldHVybiBuZXcgRGVzYyhlKX1zdGF0aWMgZGlnZXN0TWV0aG9kKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kKGUpfXN0YXRpYyBkaWdlc3RNZXRob2RzKGUpe3JldHVybiBuZXcgRGlnZXN0TWV0aG9kcyhlKX1zdGF0aWMgZHJhdyhlKXtyZXR1cm4gbmV3IERyYXcoZSl9c3RhdGljIGVkZ2UoZSl7cmV0dXJuIG5ldyBFZGdlKGUpfXN0YXRpYyBlbmNvZGluZyhlKXtyZXR1cm4gbmV3IEVuY29kaW5nKGUpfXN0YXRpYyBlbmNvZGluZ3MoZSl7cmV0dXJuIG5ldyBFbmNvZGluZ3MoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBFbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0RGF0YShlKXtyZXR1cm4gbmV3IEVuY3J5cHREYXRhKGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbihlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25NZXRob2QoZSl9c3RhdGljIGVuY3J5cHRpb25NZXRob2RzKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZHMoZSl9c3RhdGljIGV2ZW50KGUpe3JldHVybiBuZXcgRXZlbnQoZSl9c3RhdGljIGV4RGF0YShlKXtyZXR1cm4gbmV3IEV4RGF0YShlKX1zdGF0aWMgZXhPYmplY3QoZSl7cmV0dXJuIG5ldyBFeE9iamVjdChlKX1zdGF0aWMgZXhjbEdyb3VwKGUpe3JldHVybiBuZXcgRXhjbEdyb3VwKGUpfXN0YXRpYyBleGVjdXRlKGUpe3JldHVybiBuZXcgRXhlY3V0ZShlKX1zdGF0aWMgZXh0cmFzKGUpe3JldHVybiBuZXcgRXh0cmFzKGUpfXN0YXRpYyBmaWVsZChlKXtyZXR1cm4gbmV3IEZpZWxkKGUpfXN0YXRpYyBmaWxsKGUpe3JldHVybiBuZXcgRmlsbChlKX1zdGF0aWMgZmlsdGVyKGUpe3JldHVybiBuZXcgRmlsdGVyKGUpfXN0YXRpYyBmbG9hdChlKXtyZXR1cm4gbmV3IEZsb2F0KGUpfXN0YXRpYyBmb250KGUpe3JldHVybiBuZXcgdGVtcGxhdGVfRm9udChlKX1zdGF0aWMgZm9ybWF0KGUpe3JldHVybiBuZXcgRm9ybWF0KGUpfXN0YXRpYyBoYW5kbGVyKGUpe3JldHVybiBuZXcgSGFuZGxlcihlKX1zdGF0aWMgaHlwaGVuYXRpb24oZSl7cmV0dXJuIG5ldyBIeXBoZW5hdGlvbihlKX1zdGF0aWMgaW1hZ2UoZSl7cmV0dXJuIG5ldyBJbWFnZShlKX1zdGF0aWMgaW1hZ2VFZGl0KGUpe3JldHVybiBuZXcgSW1hZ2VFZGl0KGUpfXN0YXRpYyBpbnRlZ2VyKGUpe3JldHVybiBuZXcgSW50ZWdlcihlKX1zdGF0aWMgaXNzdWVycyhlKXtyZXR1cm4gbmV3IElzc3VlcnMoZSl9c3RhdGljIGl0ZW1zKGUpe3JldHVybiBuZXcgSXRlbXMoZSl9c3RhdGljIGtlZXAoZSl7cmV0dXJuIG5ldyBLZWVwKGUpfXN0YXRpYyBrZXlVc2FnZShlKXtyZXR1cm4gbmV3IEtleVVzYWdlKGUpfXN0YXRpYyBsaW5lKGUpe3JldHVybiBuZXcgTGluZShlKX1zdGF0aWMgbGluZWFyKGUpe3JldHVybiBuZXcgTGluZWFyKGUpfXN0YXRpYyBsb2NrRG9jdW1lbnQoZSl7cmV0dXJuIG5ldyBMb2NrRG9jdW1lbnQoZSl9c3RhdGljIG1hbmlmZXN0KGUpe3JldHVybiBuZXcgTWFuaWZlc3QoZSl9c3RhdGljIG1hcmdpbihlKXtyZXR1cm4gbmV3IE1hcmdpbihlKX1zdGF0aWMgbWRwKGUpe3JldHVybiBuZXcgTWRwKGUpfXN0YXRpYyBtZWRpdW0oZSl7cmV0dXJuIG5ldyBNZWRpdW0oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBNZXNzYWdlKGUpfXN0YXRpYyBudW1lcmljRWRpdChlKXtyZXR1cm4gbmV3IE51bWVyaWNFZGl0KGUpfXN0YXRpYyBvY2N1cihlKXtyZXR1cm4gbmV3IE9jY3VyKGUpfXN0YXRpYyBvaWQoZSl7cmV0dXJuIG5ldyBPaWQoZSl9c3RhdGljIG9pZHMoZSl7cmV0dXJuIG5ldyBPaWRzKGUpfXN0YXRpYyBvdmVyZmxvdyhlKXtyZXR1cm4gbmV3IE92ZXJmbG93KGUpfXN0YXRpYyBwYWdlQXJlYShlKXtyZXR1cm4gbmV3IFBhZ2VBcmVhKGUpfXN0YXRpYyBwYWdlU2V0KGUpe3JldHVybiBuZXcgUGFnZVNldChlKX1zdGF0aWMgcGFyYShlKXtyZXR1cm4gbmV3IFBhcmEoZSl9c3RhdGljIHBhc3N3b3JkRWRpdChlKXtyZXR1cm4gbmV3IFBhc3N3b3JkRWRpdChlKX1zdGF0aWMgcGF0dGVybihlKXtyZXR1cm4gbmV3IHRlbXBsYXRlX1BhdHRlcm4oZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBQaWN0dXJlKGUpfXN0YXRpYyBwcm90byhlKXtyZXR1cm4gbmV3IFByb3RvKGUpfXN0YXRpYyByYWRpYWwoZSl7cmV0dXJuIG5ldyBSYWRpYWwoZSl9c3RhdGljIHJlYXNvbihlKXtyZXR1cm4gbmV3IFJlYXNvbihlKX1zdGF0aWMgcmVhc29ucyhlKXtyZXR1cm4gbmV3IFJlYXNvbnMoZSl9c3RhdGljIHJlY3RhbmdsZShlKXtyZXR1cm4gbmV3IFJlY3RhbmdsZShlKX1zdGF0aWMgcmVmKGUpe3JldHVybiBuZXcgUmVmRWxlbWVudChlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgU2NyaXB0KGUpfXN0YXRpYyBzZXRQcm9wZXJ0eShlKXtyZXR1cm4gbmV3IFNldFByb3BlcnR5KGUpfXN0YXRpYyBzaWduRGF0YShlKXtyZXR1cm4gbmV3IFNpZ25EYXRhKGUpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBTaWduYXR1cmUoZSl9c3RhdGljIHNpZ25pbmcoZSl7cmV0dXJuIG5ldyBTaWduaW5nKGUpfXN0YXRpYyBzb2xpZChlKXtyZXR1cm4gbmV3IFNvbGlkKGUpfXN0YXRpYyBzcGVhayhlKXtyZXR1cm4gbmV3IFNwZWFrKGUpfXN0YXRpYyBzdGlwcGxlKGUpe3JldHVybiBuZXcgU3RpcHBsZShlKX1zdGF0aWMgc3ViZm9ybShlKXtyZXR1cm4gbmV3IFN1YmZvcm0oZSl9c3RhdGljIHN1YmZvcm1TZXQoZSl7cmV0dXJuIG5ldyBTdWJmb3JtU2V0KGUpfXN0YXRpYyBzdWJqZWN0RE4oZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE4oZSl9c3RhdGljIHN1YmplY3RETnMoZSl7cmV0dXJuIG5ldyBTdWJqZWN0RE5zKGUpfXN0YXRpYyBzdWJtaXQoZSl7cmV0dXJuIG5ldyBTdWJtaXQoZSl9c3RhdGljIHRlbXBsYXRlKGUpe3JldHVybiBuZXcgVGVtcGxhdGUoZSl9c3RhdGljIHRleHQoZSl7cmV0dXJuIG5ldyBUZXh0KGUpfXN0YXRpYyB0ZXh0RWRpdChlKXtyZXR1cm4gbmV3IFRleHRFZGl0KGUpfXN0YXRpYyB0aW1lKGUpe3JldHVybiBuZXcgVGltZShlKX1zdGF0aWMgdGltZVN0YW1wKGUpe3JldHVybiBuZXcgVGltZVN0YW1wKGUpfXN0YXRpYyB0b29sVGlwKGUpe3JldHVybiBuZXcgVG9vbFRpcChlKX1zdGF0aWMgdHJhdmVyc2FsKGUpe3JldHVybiBuZXcgVHJhdmVyc2FsKGUpfXN0YXRpYyB0cmF2ZXJzZShlKXtyZXR1cm4gbmV3IFRyYXZlcnNlKGUpfXN0YXRpYyB1aShlKXtyZXR1cm4gbmV3IFVpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IFZhbGlkYXRlKGUpfXN0YXRpYyB2YWx1ZShlKXtyZXR1cm4gbmV3IFZhbHVlKGUpfXN0YXRpYyB2YXJpYWJsZXMoZSl7cmV0dXJuIG5ldyBWYXJpYWJsZXMoZSl9fWNvbnN0IFRuPWduLmRhdGFzZXRzLmlkO2Z1bmN0aW9uIGNyZWF0ZVRleHQoZSl7Y29uc3QgdD1uZXcgVGV4dCh7fSk7dFtlc109ZTtyZXR1cm4gdH1jbGFzcyBCaW5kZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5yb290PWU7dGhpcy5kYXRhc2V0cz1lLmRhdGFzZXRzO3RoaXMuZGF0YT1lLmRhdGFzZXRzPy5kYXRhfHxuZXcgWG1sT2JqZWN0KGduLmRhdGFzZXRzLmlkLCJkYXRhIik7dGhpcy5lbXB0eU1lcmdlPTA9PT10aGlzLmRhdGFbUXNdKCkubGVuZ3RoO3RoaXMucm9vdC5mb3JtPXRoaXMuZm9ybT1lLnRlbXBsYXRlWyRyXSgpfV9pc0NvbnN1bWVEYXRhKCl7cmV0dXJuIXRoaXMuZW1wdHlNZXJnZSYmdGhpcy5fbWVyZ2VNb2RlfV9pc01hdGNoVGVtcGxhdGUoKXtyZXR1cm4hdGhpcy5faXNDb25zdW1lRGF0YSgpfWJpbmQoKXt0aGlzLl9iaW5kRWxlbWVudCh0aGlzLmZvcm0sdGhpcy5kYXRhKTtyZXR1cm4gdGhpcy5mb3JtfWdldERhdGEoKXtyZXR1cm4gdGhpcy5kYXRhfV9iaW5kVmFsdWUoZSx0LGkpe2VbdHNdPXQ7aWYoZVt5c10oKSlpZih0W2tzXSgpKXtjb25zdCBpPXRbbHNdKCk7ZVskc10oY3JlYXRlVGV4dChpKSl9ZWxzZSBpZihlIGluc3RhbmNlb2YgRmllbGQmJiJtdWx0aVNlbGVjdCI9PT1lLnVpPy5jaG9pY2VMaXN0Py5vcGVuKXtjb25zdCBpPXRbUXNdKCkubWFwKChlPT5lW2VzXS50cmltKCkpKS5qb2luKCJcbiIpO2VbJHNdKGNyZWF0ZVRleHQoaSkpfWVsc2UgdGhpcy5faXNDb25zdW1lRGF0YSgpJiZ3YXJuKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIik7ZWxzZSF0W2tzXSgpfHx0aGlzLl9pc01hdGNoVGVtcGxhdGUoKT90aGlzLl9iaW5kRWxlbWVudChlLHQpOndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKX1fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoZSx0LGksYSl7aWYoIWUpcmV0dXJuIG51bGw7bGV0IHIscztmb3IobGV0IGE9MDthPDM7YSsrKXtyPWlbQnNdKGUsITEsITApO2Zvcig7Oyl7cz1yLm5leHQoKS52YWx1ZTtpZighcylicmVhaztpZih0PT09c1trc10oKSlyZXR1cm4gc31pZihpW0pzXT09PWduLmRhdGFzZXRzLmlkJiYiZGF0YSI9PT1pW0hzXSlicmVhaztpPWlbZnNdKCl9aWYoIWEpcmV0dXJuIG51bGw7cj10aGlzLmRhdGFbQnNdKGUsITAsITEpO3M9ci5uZXh0KCkudmFsdWU7aWYocylyZXR1cm4gcztyPXRoaXMuZGF0YVtuc10oZSwhMCk7cz1yLm5leHQoKS52YWx1ZTtyZXR1cm4gcz8uW2tzXSgpP3M6bnVsbH1fc2V0UHJvcGVydGllcyhlLHQpe2lmKGUuaGFzT3duUHJvcGVydHkoInNldFByb3BlcnR5IikpZm9yKGNvbnN0e3JlZjppLHRhcmdldDphLGNvbm5lY3Rpb246cn1vZiBlLnNldFByb3BlcnR5LmNoaWxkcmVuKXtpZihyKWNvbnRpbnVlO2lmKCFpKWNvbnRpbnVlO2NvbnN0IHM9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxpLCExLCExKTtpZighcyl7d2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7aX0uYCk7Y29udGludWV9Y29uc3Rbbl09cztpZighbltSc10odGhpcy5kYXRhKSl7d2FybigiWEZBIC0gSW52YWxpZCBub2RlOiBtdXN0IGJlIGEgZGF0YSBub2RlLiIpO2NvbnRpbnVlfWNvbnN0IG89c2VhcmNoTm9kZSh0aGlzLnJvb3QsZSxhLCExLCExKTtpZighbyl7d2FybihgWEZBIC0gSW52YWxpZCB0YXJnZXQ6ICR7YX0uYCk7Y29udGludWV9Y29uc3RbZ109bztpZighZ1tSc10oZSkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgYz1nW2ZzXSgpO2lmKGcgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eXx8YyBpbnN0YW5jZW9mIFNldFByb3BlcnR5KXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgc2V0UHJvcGVydHkgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWlmKGcgaW5zdGFuY2VvZiBCaW5kSXRlbXN8fGMgaW5zdGFuY2VvZiBCaW5kSXRlbXMpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGg9bltlbl0oKSxsPWdbSHNdO2lmKGcgaW5zdGFuY2VvZiBYRkFBdHRyaWJ1dGUpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlW2xdPWg7Y29uc3QgdD1SZWZsZWN0LmNvbnN0cnVjdChPYmplY3QuZ2V0UHJvdG90eXBlT2YoYykuY29uc3RydWN0b3IsW2VdKTtjW2xdPXRbbF19ZWxzZSBpZihnLmhhc093blByb3BlcnR5KGVzKSl7Z1t0c109bjtnW2VzXT1oO2dbcnNdKCl9ZWxzZSB3YXJuKCJYRkEgLSBJbnZhbGlkIG5vZGUgdG8gdXNlIGluIHNldFByb3BlcnR5Iil9fV9iaW5kSXRlbXMoZSx0KXtpZighZS5oYXNPd25Qcm9wZXJ0eSgiaXRlbXMiKXx8IWUuaGFzT3duUHJvcGVydHkoImJpbmRJdGVtcyIpfHxlLmJpbmRJdGVtcy5pc0VtcHR5KCkpcmV0dXJuO2Zvcihjb25zdCB0IG9mIGUuaXRlbXMuY2hpbGRyZW4pZVtqc10odCk7ZS5pdGVtcy5jbGVhcigpO2NvbnN0IGk9bmV3IEl0ZW1zKHt9KSxhPW5ldyBJdGVtcyh7fSk7ZVtYcl0oaSk7ZS5pdGVtcy5wdXNoKGkpO2VbWHJdKGEpO2UuaXRlbXMucHVzaChhKTtmb3IoY29uc3R7cmVmOnIsbGFiZWxSZWY6cyx2YWx1ZVJlZjpuLGNvbm5lY3Rpb246b31vZiBlLmJpbmRJdGVtcy5jaGlsZHJlbil7aWYobyljb250aW51ZTtpZighciljb250aW51ZTtjb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQsciwhMSwhMSk7aWYoZSlmb3IoY29uc3QgdCBvZiBlKXtpZighdFtSc10odGhpcy5kYXRhc2V0cykpe3dhcm4oYFhGQSAtIEludmFsaWQgcmVmICgke3J9KTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLmApO2NvbnRpbnVlfWNvbnN0IGU9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxzLCEwLCExKTtpZighZSl7d2FybihgWEZBIC0gSW52YWxpZCBsYWJlbDogJHtzfS5gKTtjb250aW51ZX1jb25zdFtvXT1lO2lmKCFvW1JzXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCBsYWJlbDogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGc9c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxuLCEwLCExKTtpZighZyl7d2FybihgWEZBIC0gSW52YWxpZCB2YWx1ZTogJHtufS5gKTtjb250aW51ZX1jb25zdFtjXT1nO2lmKCFjW1JzXSh0aGlzLmRhdGFzZXRzKSl7d2FybigiWEZBIC0gSW52YWxpZCB2YWx1ZTogbXVzdCBiZSBhIGRhdGFzZXRzIGNoaWxkLiIpO2NvbnRpbnVlfWNvbnN0IGg9Y3JlYXRlVGV4dChvW2VuXSgpKSxsPWNyZWF0ZVRleHQoY1tlbl0oKSk7aVtYcl0oaCk7aS50ZXh0LnB1c2goaCk7YVtYcl0obCk7YS50ZXh0LnB1c2gobCl9ZWxzZSB3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZmVyZW5jZTogJHtyfS5gKX19X2JpbmRPY2N1cnJlbmNlcyhlLHQsaSl7bGV0IGE7aWYodC5sZW5ndGg+MSl7YT1lWyRyXSgpO2FbanNdKGEub2NjdXIpO2Eub2NjdXI9bnVsbH10aGlzLl9iaW5kVmFsdWUoZSx0WzBdLGkpO3RoaXMuX3NldFByb3BlcnRpZXMoZSx0WzBdKTt0aGlzLl9iaW5kSXRlbXMoZSx0WzBdKTtpZigxPT09dC5sZW5ndGgpcmV0dXJuO2NvbnN0IHI9ZVtmc10oKSxzPWVbSHNdLG49cltic10oZSk7Zm9yKGxldCBlPTEsbz10Lmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXRbZV0sZz1hWyRyXSgpO3Jbc10ucHVzaChnKTtyW0RzXShuK2UsZyk7dGhpcy5fYmluZFZhbHVlKGcsbyxpKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGcsbyk7dGhpcy5fYmluZEl0ZW1zKGcsbyl9fV9jcmVhdGVPY2N1cnJlbmNlcyhlKXtpZighdGhpcy5lbXB0eU1lcmdlKXJldHVybjtjb25zdHtvY2N1cjp0fT1lO2lmKCF0fHx0LmluaXRpYWw8PTEpcmV0dXJuO2NvbnN0IGk9ZVtmc10oKSxhPWVbSHNdO2lmKCEoaVthXWluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXJldHVybjtsZXQgcjtyPWUubmFtZT9pW2FdLmNoaWxkcmVuLmZpbHRlcigodD0+dC5uYW1lPT09ZS5uYW1lKSkubGVuZ3RoOmlbYV0uY2hpbGRyZW4ubGVuZ3RoO2NvbnN0IHM9aVtic10oZSkrMSxuPXQuaW5pdGlhbC1yO2lmKG4pe2NvbnN0IHQ9ZVskcl0oKTt0W2pzXSh0Lm9jY3VyKTt0Lm9jY3VyPW51bGw7aVthXS5wdXNoKHQpO2lbRHNdKHMsdCk7Zm9yKGxldCBlPTE7ZTxuO2UrKyl7Y29uc3Qgcj10WyRyXSgpO2lbYV0ucHVzaChyKTtpW0RzXShzK2Uscil9fX1fZ2V0T2NjdXJJbmZvKGUpe2NvbnN0e25hbWU6dCxvY2N1cjppfT1lO2lmKCFpfHwhdClyZXR1cm5bMSwxXTtjb25zdCBhPS0xPT09aS5tYXg/MS8wOmkubWF4O3JldHVybltpLm1pbixhXX1fc2V0QW5kQmluZChlLHQpe3RoaXMuX3NldFByb3BlcnRpZXMoZSx0KTt0aGlzLl9iaW5kSXRlbXMoZSx0KTt0aGlzLl9iaW5kRWxlbWVudChlLHQpfV9iaW5kRWxlbWVudChlLHQpe2NvbnN0IGk9W107dGhpcy5fY3JlYXRlT2NjdXJyZW5jZXMoZSk7Zm9yKGNvbnN0IGEgb2YgZVtRc10oKSl7aWYoYVt0c10pY29udGludWU7aWYodm9pZCAwPT09dGhpcy5fbWVyZ2VNb2RlJiYic3ViZm9ybSI9PT1hW0hzXSl7dGhpcy5fbWVyZ2VNb2RlPSJjb25zdW1lRGF0YSI9PT1hLm1lcmdlTW9kZTtjb25zdCBlPXRbUXNdKCk7aWYoZS5sZW5ndGg+MCl0aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxbZVswXV0sbnVsbCk7ZWxzZSBpZih0aGlzLmVtcHR5TWVyZ2Upe2NvbnN0IGU9dFtKc109PT1Ubj8tMTp0W0pzXSxpPWFbdHNdPW5ldyBYbWxPYmplY3QoZSxhLm5hbWV8fCJyb290Iik7dFtYcl0oaSk7dGhpcy5fYmluZEVsZW1lbnQoYSxpKX1jb250aW51ZX1pZighYVtTc10oKSljb250aW51ZTtsZXQgZT0hMSxyPW51bGwscz1udWxsLG49bnVsbDtpZihhLmJpbmQpe3N3aXRjaChhLmJpbmQubWF0Y2gpe2Nhc2Uibm9uZSI6dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlO2Nhc2UiZ2xvYmFsIjplPSEwO2JyZWFrO2Nhc2UiZGF0YVJlZiI6aWYoIWEuYmluZC5yZWYpe3dhcm4oYFhGQSAtIHJlZiBpcyBlbXB0eSBpbiBub2RlICR7YVtIc119LmApO3RoaXMuX3NldEFuZEJpbmQoYSx0KTtjb250aW51ZX1zPWEuYmluZC5yZWZ9YS5iaW5kLnBpY3R1cmUmJihyPWEuYmluZC5waWN0dXJlW2VzXSl9Y29uc3RbbyxnXT10aGlzLl9nZXRPY2N1ckluZm8oYSk7aWYocyl7bj1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LHMsITAsITEpO2lmKG51bGw9PT1uKXtuPWNyZWF0ZURhdGFOb2RlKHRoaXMuZGF0YSx0LHMpO2lmKCFuKWNvbnRpbnVlO3RoaXMuX2lzQ29uc3VtZURhdGEoKSYmKG5bQXNdPSEwKTt0aGlzLl9zZXRBbmRCaW5kKGEsbik7Y29udGludWV9dGhpcy5faXNDb25zdW1lRGF0YSgpJiYobj1uLmZpbHRlcigoZT0+IWVbQXNdKSkpO24ubGVuZ3RoPmc/bj1uLnNsaWNlKDAsZyk6MD09PW4ubGVuZ3RoJiYobj1udWxsKTtuJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJm4uZm9yRWFjaCgoZT0+e2VbQXNdPSEwfSkpfWVsc2V7aWYoIWEubmFtZSl7dGhpcy5fc2V0QW5kQmluZChhLHQpO2NvbnRpbnVlfWlmKHRoaXMuX2lzQ29uc3VtZURhdGEoKSl7Y29uc3QgaT1bXTtmb3IoO2kubGVuZ3RoPGc7KXtjb25zdCByPXRoaXMuX2ZpbmREYXRhQnlOYW1lVG9Db25zdW1lKGEubmFtZSxhW3lzXSgpLHQsZSk7aWYoIXIpYnJlYWs7cltBc109ITA7aS5wdXNoKHIpfW49aS5sZW5ndGg+MD9pOm51bGx9ZWxzZXtuPXRbQnNdKGEubmFtZSwhMSx0aGlzLmVtcHR5TWVyZ2UpLm5leHQoKS52YWx1ZTtpZighbil7aWYoMD09PW8pe2kucHVzaChhKTtjb250aW51ZX1jb25zdCBlPXRbSnNdPT09VG4/LTE6dFtKc107bj1hW3RzXT1uZXcgWG1sT2JqZWN0KGUsYS5uYW1lKTt0aGlzLmVtcHR5TWVyZ2UmJihuW0FzXT0hMCk7dFtYcl0obik7dGhpcy5fc2V0QW5kQmluZChhLG4pO2NvbnRpbnVlfXRoaXMuZW1wdHlNZXJnZSYmKG5bQXNdPSEwKTtuPVtuXX19bj90aGlzLl9iaW5kT2NjdXJyZW5jZXMoYSxuLHIpOm8+MD90aGlzLl9zZXRBbmRCaW5kKGEsdCk6aS5wdXNoKGEpfWkuZm9yRWFjaCgoZT0+ZVtmc10oKVtqc10oZSkpKX19Y2xhc3MgRGF0YUhhbmRsZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmRhdGE9dDt0aGlzLmRhdGFzZXQ9ZS5kYXRhc2V0c3x8bnVsbH1zZXJpYWxpemUoZSl7Y29uc3QgdD1bWy0xLHRoaXMuZGF0YVtRc10oKV1dO2Zvcig7dC5sZW5ndGg+MDspe2NvbnN0IGk9dC5hdCgtMSksW2Escl09aTtpZihhKzE9PT1yLmxlbmd0aCl7dC5wb3AoKTtjb250aW51ZX1jb25zdCBzPXJbKytpWzBdXSxuPWUuZ2V0KHNbbm5dKTtpZihuKXNbJHNdKG4pO2Vsc2V7Y29uc3QgdD1zW29zXSgpO2Zvcihjb25zdCBpIG9mIHQudmFsdWVzKCkpe2NvbnN0IHQ9ZS5nZXQoaVtubl0pO2lmKHQpe2lbJHNdKHQpO2JyZWFrfX19Y29uc3Qgbz1zW1FzXSgpO28ubGVuZ3RoPjAmJnQucHVzaChbLTEsb10pfWNvbnN0IGk9Wyc8eGZhOmRhdGFzZXRzIHhtbG5zOnhmYT0iaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZGF0YS8xLjAvIj4nXTtpZih0aGlzLmRhdGFzZXQpZm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhc2V0W1FzXSgpKSJkYXRhIiE9PWVbSHNdJiZlW3JuXShpKTt0aGlzLmRhdGFbcm5dKGkpO2kucHVzaCgiPC94ZmE6ZGF0YXNldHM+Iik7cmV0dXJuIGkuam9pbigiIil9fWNvbnN0IHFuPWduLmNvbmZpZy5pZDtjbGFzcyBBY3JvYmF0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJhY3JvYmF0IiwhMCk7dGhpcy5hY3JvYmF0Nz1udWxsO3RoaXMuYXV0b1NhdmU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzPW51bGw7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBBY3JvYmF0NyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYWNyb2JhdDciLCEwKTt0aGlzLmR5bmFtaWNSZW5kZXI9bnVsbH19Y2xhc3MgQURCRV9KU0NvbnNvbGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIkFEQkVfSlNDb25zb2xlIixbImRlbGVnYXRlIiwiRW5hYmxlIiwiRGlzYWJsZSJdKX19Y2xhc3MgQURCRV9KU0RlYnVnZ2VyIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJBREJFX0pTRGVidWdnZXIiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBZGRTaWxlbnRQcmludCBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJhZGRTaWxlbnRQcmludCIpfX1jbGFzcyBBZGRWaWV3ZXJQcmVmZXJlbmNlcyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJhZGRWaWV3ZXJQcmVmZXJlbmNlcyIpfX1jbGFzcyBBZGp1c3REYXRhIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImFkanVzdERhdGEiKX19Y2xhc3MgQWRvYmVFeHRlbnNpb25MZXZlbCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImFkb2JlRXh0ZW5zaW9uTGV2ZWwiLDAsKGU9PmU+PTEmJmU8PTgpKX19Y2xhc3MgQWdlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWx3YXlzRW1iZWQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImFtZCIpfX1jbGFzcyBjb25maWdfQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYXJlYSIpO3RoaXMubGV2ZWw9Z2V0SW50ZWdlcih7ZGF0YTplLmxldmVsLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTEmJmU8PTN9KTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbIiIsImJhcmNvZGUiLCJjb3JlaW5pdCIsImRldmljZURyaXZlciIsImZvbnQiLCJnZW5lcmFsIiwibGF5b3V0IiwibWVyZ2UiLCJzY3JpcHQiLCJzaWduYXR1cmUiLCJzb3VyY2VTZXQiLCJ0ZW1wbGF0ZUNhY2hlIl0pfX1jbGFzcyBBdHRyaWJ1dGVzIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJhdHRyaWJ1dGVzIixbInByZXNlcnZlIiwiZGVsZWdhdGUiLCJpZ25vcmUiXSl9fWNsYXNzIEF1dG9TYXZlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImJhc2UiKX19Y2xhc3MgQmF0Y2hPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImJhdGNoT3V0cHV0Iik7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsibm9uZSIsImNvbmNhdCIsInppcCIsInppcENvbXByZXNzIl0pfX1jbGFzcyBCZWhhdmlvck92ZXJyaWRlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiYmVoYXZpb3JPdmVycmlkZSIpfVtyc10oKXt0aGlzW2VzXT1uZXcgTWFwKHRoaXNbZXNdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lLmluY2x1ZGVzKCI6IikpKS5tYXAoKGU9PmUuc3BsaXQoIjoiLDIpKSkpfX1jbGFzcyBDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY2FjaGUiLCEwKTt0aGlzLnRlbXBsYXRlQ2FjaGU9bnVsbH19Y2xhc3MgQ2hhbmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNoYW5nZSIpfX1jbGFzcyBDb21tb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNvbW1vbiIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMubG9jYWxlPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLm1lc3NhZ2luZz1udWxsO3RoaXMuc3VwcHJlc3NCYW5uZXI9bnVsbDt0aGlzLnRlbXBsYXRlPW51bGw7dGhpcy52YWxpZGF0aW9uTWVzc2FnaW5nPW51bGw7dGhpcy52ZXJzaW9uQ29udHJvbD1udWxsO3RoaXMubG9nPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29tcHJlc3MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNvbXByZXNzIik7dGhpcy5zY29wZT1nZXRTdHJpbmdPcHRpb24oZS5zY29wZSxbImltYWdlT25seSIsImRvY3VtZW50Il0pfX1jbGFzcyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlIil9fWNsYXNzIENvbXByZXNzT2JqZWN0U3RyZWFtIGV4dGVuZHMgT3B0aW9uMTB7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNvbXByZXNzT2JqZWN0U3RyZWFtIil9fWNsYXNzIENvbXByZXNzaW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjb21wcmVzc2lvbiIsITApO3RoaXMuY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlPW51bGw7dGhpcy5jb21wcmVzc09iamVjdFN0cmVhbT1udWxsO3RoaXMubGV2ZWw9bnVsbDt0aGlzLnR5cGU9bnVsbH19Y2xhc3MgQ29uZmlnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjb25maWciLCEwKTt0aGlzLmFjcm9iYXQ9bnVsbDt0aGlzLnByZXNlbnQ9bnVsbDt0aGlzLnRyYWNlPW51bGw7dGhpcy5hZ2VudD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIENvbmZvcm1hbmNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjb25mb3JtYW5jZSIsWyJBIiwiQiJdKX19Y2xhc3MgQ29udGVudENvcHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY29udGVudENvcHkiKX19Y2xhc3MgQ29waWVzIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiY29waWVzIiwxLChlPT5lPj0xKSl9fWNsYXNzIENyZWF0b3IgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImNyZWF0b3IiKX19Y2xhc3MgQ3VycmVudFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJjdXJyZW50UGFnZSIsMCwoZT0+ZT49MCkpfX1jbGFzcyBEYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJkYXRhIiwhMCk7dGhpcy5hZGp1c3REYXRhPW51bGw7dGhpcy5hdHRyaWJ1dGVzPW51bGw7dGhpcy5pbmNyZW1lbnRhbExvYWQ9bnVsbDt0aGlzLm91dHB1dFhTTD1udWxsO3RoaXMucmFuZ2U9bnVsbDt0aGlzLnJlY29yZD1udWxsO3RoaXMuc3RhcnROb2RlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLndpbmRvdz1udWxsO3RoaXMueHNsPW51bGw7dGhpcy5leGNsdWRlTlM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhbnNmb3JtPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRGVidWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImRlYnVnIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgRGVmYXVsdFR5cGVmYWNlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZGVmYXVsdFR5cGVmYWNlIik7dGhpcy53cml0aW5nU2NyaXB0PWdldFN0cmluZ09wdGlvbihlLndyaXRpbmdTY3JpcHQsWyIqIiwiQXJhYmljIiwiQ3lyaWxsaWMiLCJFYXN0RXVyb3BlYW5Sb21hbiIsIkdyZWVrIiwiSGVicmV3IiwiSmFwYW5lc2UiLCJLb3JlYW4iLCJSb21hbiIsIlNpbXBsaWZpZWRDaGluZXNlIiwiVGhhaSIsIlRyYWRpdGlvbmFsQ2hpbmVzZSIsIlZpZXRuYW1lc2UiXSl9fWNsYXNzIERlc3RpbmF0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJkZXN0aW5hdGlvbiIsWyJwZGYiLCJwY2wiLCJwcyIsIndlYkNsaWVudCIsInpwbCJdKX19Y2xhc3MgRG9jdW1lbnRBc3NlbWJseSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJkb2N1bWVudEFzc2VtYmx5Iil9fWNsYXNzIERyaXZlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZHJpdmVyIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBEdXBsZXhPcHRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImR1cGxleE9wdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4RmxpcExvbmdFZGdlIiwiZHVwbGV4RmxpcFNob3J0RWRnZSJdKX19Y2xhc3MgRHluYW1pY1JlbmRlciBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZHluYW1pY1JlbmRlciIsWyJmb3JiaWRkZW4iLCJyZXF1aXJlZCJdKX19Y2xhc3MgRW1iZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZW1iZWQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZW5jcnlwdCIpfX1jbGFzcyBjb25maWdfRW5jcnlwdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZW5jcnlwdGlvbiIsITApO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdGlvbkxldmVsPW51bGw7dGhpcy5wZXJtaXNzaW9ucz1udWxsfX1jbGFzcyBFbmNyeXB0aW9uTGV2ZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImVuY3J5cHRpb25MZXZlbCIsWyI0MGJpdCIsIjEyOGJpdCJdKX19Y2xhc3MgRW5mb3JjZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiZW5mb3JjZSIpfX1jbGFzcyBFcXVhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImVxdWF0ZSIpO3RoaXMuZm9yY2U9Z2V0SW50ZWdlcih7ZGF0YTplLmZvcmNlLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PjA9PT1lfSk7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIn19Y2xhc3MgRXF1YXRlUmFuZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImVxdWF0ZVJhbmdlIik7dGhpcy5mcm9tPWUuZnJvbXx8IiI7dGhpcy50bz1lLnRvfHwiIjt0aGlzLl91bmljb2RlUmFuZ2U9ZS51bmljb2RlUmFuZ2V8fCIifWdldCB1bmljb2RlUmFuZ2UoKXtjb25zdCBlPVtdLHQ9L1VcKyhbMC05YS1mQS1GXSspLyxpPXRoaXMuX3VuaWNvZGVSYW5nZTtmb3IobGV0IGEgb2YgaS5zcGxpdCgiLCIpLm1hcCgoZT0+ZS50cmltKCkpKS5maWx0ZXIoKGU9PiEhZSkpKXthPWEuc3BsaXQoIi0iLDIpLm1hcCgoZT0+e2NvbnN0IGk9ZS5tYXRjaCh0KTtyZXR1cm4gaT9wYXJzZUludChpWzFdLDE2KTowfSkpOzE9PT1hLmxlbmd0aCYmYS5wdXNoKGFbMF0pO2UucHVzaChhKX1yZXR1cm4gc2hhZG93KHRoaXMsInVuaWNvZGVSYW5nZSIsZSl9fWNsYXNzIEV4Y2x1ZGUgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJleGNsdWRlIil9W3JzXSgpe3RoaXNbZXNdPXRoaXNbZXNdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBFeGNsdWRlTlMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImV4Y2x1ZGVOUyIpfX1jbGFzcyBGbGlwTGFiZWwgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImZsaXBMYWJlbCIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBjb25maWdfRm9udEluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImZvbnRJbmZvIiwhMCk7dGhpcy5lbWJlZD1udWxsO3RoaXMubWFwPW51bGw7dGhpcy5zdWJzZXRCZWxvdz1udWxsO3RoaXMuYWx3YXlzRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVmYXVsdFR5cGVmYWNlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm5ldmVyRW1iZWQ9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBGb3JtRmllbGRGaWxsaW5nIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImZvcm1GaWVsZEZpbGxpbmciKX19Y2xhc3MgR3JvdXBQYXJlbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImdyb3VwUGFyZW50Iil9fWNsYXNzIElmRW1wdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImlmRW1wdHkiLFsiZGF0YVZhbHVlIiwiZGF0YUdyb3VwIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBJbmNsdWRlWERQQ29udGVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiaW5jbHVkZVhEUENvbnRlbnQiKX19Y2xhc3MgSW5jcmVtZW50YWxMb2FkIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJpbmNyZW1lbnRhbExvYWQiLFsibm9uZSIsImZvcndhcmRPbmx5Il0pfX1jbGFzcyBJbmNyZW1lbnRhbE1lcmdlIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImluY3JlbWVudGFsTWVyZ2UiKX19Y2xhc3MgSW50ZXJhY3RpdmUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwiaW50ZXJhY3RpdmUiKX19Y2xhc3MgSm9nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJqb2ciLFsidXNlUHJpbnRlclNldHRpbmciLCJub25lIiwicGFnZVNldCJdKX19Y2xhc3MgTGFiZWxQcmludGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJsYWJlbFByaW50ZXIiLCEwKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInpwbCIsImRwbCIsImlwbCIsInRjcGwiXSk7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIExheW91dCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibGF5b3V0IixbInBhZ2luYXRlIiwicGFuZWwiXSl9fWNsYXNzIExldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibGV2ZWwiLDAsKGU9PmU+MCkpfX1jbGFzcyBMaW5lYXJpemVkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sImxpbmVhcml6ZWQiKX19Y2xhc3MgTG9jYWxlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJsb2NhbGVTZXQiKX19Y2xhc3MgTG9nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJsb2ciLCEwKTt0aGlzLm1vZGU9bnVsbDt0aGlzLnRocmVzaG9sZD1udWxsO3RoaXMudG89bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBNYXBFbGVtZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lcXVhdGVSYW5nZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lZGl1bUluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm1lZGl1bUluZm8iLCEwKTt0aGlzLm1hcD1udWxsfX1jbGFzcyBjb25maWdfTWVzc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibWVzc2FnZSIsITApO3RoaXMubXNnSWQ9bnVsbDt0aGlzLnNldmVyaXR5PW51bGx9fWNsYXNzIE1lc3NhZ2luZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTW9kZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJtb2RpZnlBbm5vdHMiKX19Y2xhc3MgTXNnSWQgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJtc2dJZCIsMSwoZT0+ZT49MSkpfX1jbGFzcyBOYW1lQXR0ciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwibmFtZUF0dHIiKX19Y2xhc3MgTmV2ZXJFbWJlZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm5ldmVyRW1iZWQiKX19Y2xhc3MgTnVtYmVyT2ZDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJudW1iZXJPZkNvcGllcyIsbnVsbCwoZT0+ZT49MiYmZTw9NSkpfX1jbGFzcyBPcGVuQWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJvcGVuQWN0aW9uIiwhMCk7dGhpcy5kZXN0aW5hdGlvbj1udWxsfX1jbGFzcyBPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm91dHB1dCIsITApO3RoaXMudG89bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBPdXRwdXRCaW4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm91dHB1dEJpbiIpfX1jbGFzcyBPdXRwdXRYU0wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIm91dHB1dFhTTCIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIE92ZXJwcmludCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwib3ZlcnByaW50IixbIm5vbmUiLCJib3RoIiwiZHJhdyIsImZpZWxkIl0pfX1jbGFzcyBQYWNrZXRzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwYWNrZXRzIil9W3JzXSgpeyIqIiE9PXRoaXNbZXNdJiYodGhpc1tlc109dGhpc1tlc10udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoKGU9PlsiY29uZmlnIiwiZGF0YXNldHMiLCJ0ZW1wbGF0ZSIsInhmZGYiLCJ4c2x0Il0uaW5jbHVkZXMoZSkpKSl9fWNsYXNzIFBhZ2VPZmZzZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBhZ2VPZmZzZXQiKTt0aGlzLng9Z2V0SW50ZWdlcih7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT1nZXRJbnRlZ2VyKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGFnZVJhbmdlIil9W3JzXSgpe2NvbnN0IGU9dGhpc1tlc10udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoKGU9PnBhcnNlSW50KGUsMTApKSksdD1bXTtmb3IobGV0IGk9MCxhPWUubGVuZ3RoO2k8YTtpKz0yKXQucHVzaChlLnNsaWNlKGksaSsyKSk7dGhpc1tlc109dH19Y2xhc3MgUGFnaW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGFnaW5hdGlvbiIsWyJzaW1wbGV4IiwiZHVwbGV4U2hvcnRFZGdlIiwiZHVwbGV4TG9uZ0VkZ2UiXSl9fWNsYXNzIFBhZ2luYXRpb25PdmVycmlkZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGFnaW5hdGlvbk92ZXJyaWRlIixbIm5vbmUiLCJmb3JjZUR1cGxleCIsImZvcmNlRHVwbGV4TG9uZ0VkZ2UiLCJmb3JjZUR1cGxleFNob3J0RWRnZSIsImZvcmNlU2ltcGxleCJdKX19Y2xhc3MgUGFydCBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBhcnQiLDEsKGU9PiExKSl9fWNsYXNzIFBjbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGNsIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5wYWdlT2Zmc2V0PW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGYgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBkZiIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYWRvYmVFeHRlbnNpb25MZXZlbD1udWxsO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmNvbXByZXNzaW9uPW51bGw7dGhpcy5jcmVhdG9yPW51bGw7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuaW50ZXJhY3RpdmU9bnVsbDt0aGlzLmxpbmVhcml6ZWQ9bnVsbDt0aGlzLm9wZW5BY3Rpb249bnVsbDt0aGlzLnBkZmE9bnVsbDt0aGlzLnByb2R1Y2VyPW51bGw7dGhpcy5yZW5kZXJQb2xpY3k9bnVsbDt0aGlzLnNjcmlwdE1vZGVsPW51bGw7dGhpcy5zaWxlbnRQcmludD1udWxsO3RoaXMuc3VibWl0Rm9ybWF0PW51bGw7dGhpcy50YWdnZWQ9bnVsbDt0aGlzLnZlcnNpb249bnVsbDt0aGlzLnZpZXdlclByZWZlcmVuY2VzPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUGRmYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGRmYSIsITApO3RoaXMuYW1kPW51bGw7dGhpcy5jb25mb3JtYW5jZT1udWxsO3RoaXMuaW5jbHVkZVhEUENvbnRlbnQ9bnVsbDt0aGlzLnBhcnQ9bnVsbH19Y2xhc3MgUGVybWlzc2lvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBlcm1pc3Npb25zIiwhMCk7dGhpcy5hY2Nlc3NpYmxlQ29udGVudD1udWxsO3RoaXMuY2hhbmdlPW51bGw7dGhpcy5jb250ZW50Q29weT1udWxsO3RoaXMuZG9jdW1lbnRBc3NlbWJseT1udWxsO3RoaXMuZm9ybUZpZWxkRmlsbGluZz1udWxsO3RoaXMubW9kaWZ5QW5ub3RzPW51bGw7dGhpcy5wbGFpbnRleHRNZXRhZGF0YT1udWxsO3RoaXMucHJpbnQ9bnVsbDt0aGlzLnByaW50SGlnaFF1YWxpdHk9bnVsbH19Y2xhc3MgUGlja1RyYXlCeVBERlNpemUgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGlja1RyYXlCeVBERlNpemUiKX19Y2xhc3MgY29uZmlnX1BpY3R1cmUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInBpY3R1cmUiKX19Y2xhc3MgUGxhaW50ZXh0TWV0YWRhdGEgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicGxhaW50ZXh0TWV0YWRhdGEiKX19Y2xhc3MgUHJlc2VuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInByZXNlbmNlIixbInByZXNlcnZlIiwiZGlzc29sdmUiLCJkaXNzb2x2ZVN0cnVjdHVyZSIsImlnbm9yZSIsInJlbW92ZSJdKX19Y2xhc3MgUHJlc2VudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicHJlc2VudCIsITApO3RoaXMuYmVoYXZpb3JPdmVycmlkZT1udWxsO3RoaXMuY2FjaGU9bnVsbDt0aGlzLmNvbW1vbj1udWxsO3RoaXMuY29waWVzPW51bGw7dGhpcy5kZXN0aW5hdGlvbj1udWxsO3RoaXMuaW5jcmVtZW50YWxNZXJnZT1udWxsO3RoaXMubGF5b3V0PW51bGw7dGhpcy5vdXRwdXQ9bnVsbDt0aGlzLm92ZXJwcmludD1udWxsO3RoaXMucGFnaW5hdGlvbj1udWxsO3RoaXMucGFnaW5hdGlvbk92ZXJyaWRlPW51bGw7dGhpcy5zY3JpcHQ9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy54ZHA9bnVsbDt0aGlzLmRyaXZlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sYWJlbFByaW50ZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGNsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBkZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJtaXRVcmw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMud2ViQ2xpZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnpwbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInByaW50Iil9fWNsYXNzIFByaW50SGlnaFF1YWxpdHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicHJpbnRIaWdoUXVhbGl0eSIpfX1jbGFzcyBQcmludFNjYWxpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInByaW50U2NhbGluZyIsWyJhcHBkZWZhdWx0Iiwibm9TY2FsaW5nIl0pfX1jbGFzcyBQcmludGVyTmFtZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicHJpbnRlck5hbWUiKX19Y2xhc3MgUHJvZHVjZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInByb2R1Y2VyIil9fWNsYXNzIFBzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJwcyIsITApO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5qb2c9bnVsbDt0aGlzLm1lZGl1bUluZm89bnVsbDt0aGlzLm91dHB1dEJpbj1udWxsO3RoaXMuc3RhcGxlPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgUmFuZ2UgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJyYW5nZSIpfVtyc10oKXt0aGlzW2VzXT10aGlzW2VzXS50cmltKCkuc3BsaXQoL1xzKixccyovLDIpLm1hcCgoZT0+ZS5zcGxpdCgiLSIpLm1hcCgoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKSkpKS5maWx0ZXIoKGU9PmUuZXZlcnkoKGU9PiFpc05hTihlKSkpKSkubWFwKChlPT57MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7cmV0dXJuIGV9KSl9fWNsYXNzIFJlY29yZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInJlY29yZCIpfVtyc10oKXt0aGlzW2VzXT10aGlzW2VzXS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW2VzXSwxMCk7IWlzTmFOKGUpJiZlPj0wJiYodGhpc1tlc109ZSl9fWNsYXNzIFJlbGV2YW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicmVsZXZhbnQiKX1bcnNdKCl7dGhpc1tlc109dGhpc1tlc10udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicmVuYW1lIil9W3JzXSgpe3RoaXNbZXNdPXRoaXNbZXNdLnRyaW0oKTsodGhpc1tlc10udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCJ4bWwiKXx8bmV3IFJlZ0V4cCgiW1xccHtMfV9dW1xccHtMfVxcZC5fXFxwe019LV0qIiwidSIpLnRlc3QodGhpc1tlc10pKSYmd2FybigiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3MgUnVuU2NyaXB0cyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX19Y2xhc3MgY29uZmlnX1NjcmlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwic2NyaXB0IiwhMCk7dGhpcy5jdXJyZW50UGFnZT1udWxsO3RoaXMuZXhjbHVkZT1udWxsO3RoaXMucnVuU2NyaXB0cz1udWxsfX1jbGFzcyBTY3JpcHRNb2RlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIFNpbGVudFByaW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzaWxlbnRQcmludCIsITApO3RoaXMuYWRkU2lsZW50UHJpbnQ9bnVsbDt0aGlzLnByaW50ZXJOYW1lPW51bGx9fWNsYXNzIFN0YXBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwic3RhcGxlIik7dGhpcy5tb2RlPWdldFN0cmluZ09wdGlvbihlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInN0YXJ0Tm9kZSIpfX1jbGFzcyBTdGFydFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzdGFydFBhZ2UiLDAsKGU9PiEwKSl9fWNsYXNzIFN1Ym1pdEZvcm1hdCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwic3VibWl0Rm9ybWF0IixbImh0bWwiLCJkZWxlZ2F0ZSIsImZkZiIsInhtbCIsInBkZiJdKX19Y2xhc3MgU3VibWl0VXJsIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzdWJtaXRVcmwiKX19Y2xhc3MgU3Vic2V0QmVsb3cgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJzdWJzZXRCZWxvdyIsMTAwLChlPT5lPj0wJiZlPD0xMDApKX19Y2xhc3MgU3VwcHJlc3NCYW5uZXIgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwic3VwcHJlc3NCYW5uZXIiKX19Y2xhc3MgVGFnZ2VkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInRhZ2dlZCIpfX1jbGFzcyBjb25maWdfVGVtcGxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInRlbXBsYXRlIiwhMCk7dGhpcy5iYXNlPW51bGw7dGhpcy5yZWxldmFudD1udWxsO3RoaXMuc3RhcnRQYWdlPW51bGw7dGhpcy51cmk9bnVsbDt0aGlzLnhzbD1udWxsfX1jbGFzcyBUaHJlc2hvbGQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInRocmVzaG9sZCIsWyJ0cmFjZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ3YXJuaW5nIl0pfX1jbGFzcyBUbyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidG8iLFsibnVsbCIsIm1lbW9yeSIsInN0ZGVyciIsInN0ZG91dCIsInN5c3RlbSIsInVyaSJdKX19Y2xhc3MgVGVtcGxhdGVDYWNoZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidGVtcGxhdGVDYWNoZSIpO3RoaXMubWF4RW50cmllcz1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4RW50cmllcyxkZWZhdWx0VmFsdWU6NSx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIFRyYWNlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ0cmFjZSIsITApO3RoaXMuYXJlYT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFRyYW5zZm9ybSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidHJhbnNmb3JtIiwhMCk7dGhpcy5ncm91cFBhcmVudD1udWxsO3RoaXMuaWZFbXB0eT1udWxsO3RoaXMubmFtZUF0dHI9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnByZXNlbmNlPW51bGw7dGhpcy5yZW5hbWU9bnVsbDt0aGlzLndoaXRlc3BhY2U9bnVsbH19Y2xhc3MgVHlwZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwidHlwZSIsWyJub25lIiwiYXNjaWk4NSIsImFzY2lpSGV4IiwiY2NpdHRmYXgiLCJmbGF0ZSIsImx6dyIsInJ1bkxlbmd0aCIsIm5hdGl2ZSIsInhkcCIsIm1lcmdlZFhEUCJdKX19Y2xhc3MgVXJpIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ1cmkiKX19Y2xhc3MgY29uZmlnX1ZhbGlkYXRlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ2YWxpZGF0ZSIsWyJwcmVTdWJtaXQiLCJwcmVQcmludCIsInByZUV4ZWN1dGUiLCJwcmVTYXZlIl0pfX1jbGFzcyBWYWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIil9W3JzXSgpe3RoaXNbZXNdPXRoaXNbZXNdLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKChlPT5bImRvY1JlYWR5IiwicG9zdFNpZ24iXS5pbmNsdWRlcyhlKSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBWZXJzaW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ2ZXJzaW9uIixbIjEuNyIsIjEuNiIsIjEuNSIsIjEuNCIsIjEuMyIsIjEuMiJdKX19Y2xhc3MgVmVyc2lvbkNvbnRyb2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInZpZXdlclByZWZlcmVuY2VzIiwhMCk7dGhpcy5BREJFX0pTQ29uc29sZT1udWxsO3RoaXMuQURCRV9KU0RlYnVnZ2VyPW51bGw7dGhpcy5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMuZHVwbGV4T3B0aW9uPW51bGw7dGhpcy5lbmZvcmNlPW51bGw7dGhpcy5udW1iZXJPZkNvcGllcz1udWxsO3RoaXMucGFnZVJhbmdlPW51bGw7dGhpcy5waWNrVHJheUJ5UERGU2l6ZT1udWxsO3RoaXMucHJpbnRTY2FsaW5nPW51bGx9fWNsYXNzIFdlYkNsaWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwid2ViQ2xpZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBXaGl0ZXNwYWNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFuLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sIndpbmRvdyIpfVtyc10oKXtjb25zdCBlPXRoaXNbZXNdLnRyaW0oKS5zcGxpdCgvXHMqLFxzKi8sMikubWFwKChlPT5wYXJzZUludChlLDEwKSkpO2lmKGUuc29tZSgoZT0+aXNOYU4oZSkpKSl0aGlzW2VzXT1bMCwwXTtlbHNlezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3RoaXNbZXNdPWV9fX1jbGFzcyBYZGMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIocW4sInhkYyIsITApO3RoaXMudXJpPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhzbD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFhkcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwieGRwIiwhMCk7dGhpcy5wYWNrZXRzPW51bGx9fWNsYXNzIFhzbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwieHNsIiwhMCk7dGhpcy5kZWJ1Zz1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIFpwbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihxbiwienBsIiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuYmF0Y2hPdXRwdXQ9bnVsbDt0aGlzLmZsaXBMYWJlbD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBDb25maWdOYW1lc3BhY2V7c3RhdGljW29uXShlLHQpe2lmKENvbmZpZ05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gQ29uZmlnTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhY3JvYmF0KGUpe3JldHVybiBuZXcgQWNyb2JhdChlKX1zdGF0aWMgYWNyb2JhdDcoZSl7cmV0dXJuIG5ldyBBY3JvYmF0NyhlKX1zdGF0aWMgQURCRV9KU0NvbnNvbGUoZSl7cmV0dXJuIG5ldyBBREJFX0pTQ29uc29sZShlKX1zdGF0aWMgQURCRV9KU0RlYnVnZ2VyKGUpe3JldHVybiBuZXcgQURCRV9KU0RlYnVnZ2VyKGUpfXN0YXRpYyBhZGRTaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IEFkZFNpbGVudFByaW50KGUpfXN0YXRpYyBhZGRWaWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IEFkZFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyBhZGp1c3REYXRhKGUpe3JldHVybiBuZXcgQWRqdXN0RGF0YShlKX1zdGF0aWMgYWRvYmVFeHRlbnNpb25MZXZlbChlKXtyZXR1cm4gbmV3IEFkb2JlRXh0ZW5zaW9uTGV2ZWwoZSl9c3RhdGljIGFnZW50KGUpe3JldHVybiBuZXcgQWdlbnQoZSl9c3RhdGljIGFsd2F5c0VtYmVkKGUpe3JldHVybiBuZXcgQWx3YXlzRW1iZWQoZSl9c3RhdGljIGFtZChlKXtyZXR1cm4gbmV3IEFtZChlKX1zdGF0aWMgYXJlYShlKXtyZXR1cm4gbmV3IGNvbmZpZ19BcmVhKGUpfXN0YXRpYyBhdHRyaWJ1dGVzKGUpe3JldHVybiBuZXcgQXR0cmlidXRlcyhlKX1zdGF0aWMgYXV0b1NhdmUoZSl7cmV0dXJuIG5ldyBBdXRvU2F2ZShlKX1zdGF0aWMgYmFzZShlKXtyZXR1cm4gbmV3IEJhc2UoZSl9c3RhdGljIGJhdGNoT3V0cHV0KGUpe3JldHVybiBuZXcgQmF0Y2hPdXRwdXQoZSl9c3RhdGljIGJlaGF2aW9yT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBCZWhhdmlvck92ZXJyaWRlKGUpfXN0YXRpYyBjYWNoZShlKXtyZXR1cm4gbmV3IENhY2hlKGUpfXN0YXRpYyBjaGFuZ2UoZSl7cmV0dXJuIG5ldyBDaGFuZ2UoZSl9c3RhdGljIGNvbW1vbihlKXtyZXR1cm4gbmV3IENvbW1vbihlKX1zdGF0aWMgY29tcHJlc3MoZSl7cmV0dXJuIG5ldyBDb21wcmVzcyhlKX1zdGF0aWMgY29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpe3JldHVybiBuZXcgQ29tcHJlc3NMb2dpY2FsU3RydWN0dXJlKGUpfXN0YXRpYyBjb21wcmVzc09iamVjdFN0cmVhbShlKXtyZXR1cm4gbmV3IENvbXByZXNzT2JqZWN0U3RyZWFtKGUpfXN0YXRpYyBjb21wcmVzc2lvbihlKXtyZXR1cm4gbmV3IENvbXByZXNzaW9uKGUpfXN0YXRpYyBjb25maWcoZSl7cmV0dXJuIG5ldyBDb25maWcoZSl9c3RhdGljIGNvbmZvcm1hbmNlKGUpe3JldHVybiBuZXcgQ29uZm9ybWFuY2UoZSl9c3RhdGljIGNvbnRlbnRDb3B5KGUpe3JldHVybiBuZXcgQ29udGVudENvcHkoZSl9c3RhdGljIGNvcGllcyhlKXtyZXR1cm4gbmV3IENvcGllcyhlKX1zdGF0aWMgY3JlYXRvcihlKXtyZXR1cm4gbmV3IENyZWF0b3IoZSl9c3RhdGljIGN1cnJlbnRQYWdlKGUpe3JldHVybiBuZXcgQ3VycmVudFBhZ2UoZSl9c3RhdGljIGRhdGEoZSl7cmV0dXJuIG5ldyBEYXRhKGUpfXN0YXRpYyBkZWJ1ZyhlKXtyZXR1cm4gbmV3IERlYnVnKGUpfXN0YXRpYyBkZWZhdWx0VHlwZWZhY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VHlwZWZhY2UoZSl9c3RhdGljIGRlc3RpbmF0aW9uKGUpe3JldHVybiBuZXcgRGVzdGluYXRpb24oZSl9c3RhdGljIGRvY3VtZW50QXNzZW1ibHkoZSl7cmV0dXJuIG5ldyBEb2N1bWVudEFzc2VtYmx5KGUpfXN0YXRpYyBkcml2ZXIoZSl7cmV0dXJuIG5ldyBEcml2ZXIoZSl9c3RhdGljIGR1cGxleE9wdGlvbihlKXtyZXR1cm4gbmV3IER1cGxleE9wdGlvbihlKX1zdGF0aWMgZHluYW1pY1JlbmRlcihlKXtyZXR1cm4gbmV3IER5bmFtaWNSZW5kZXIoZSl9c3RhdGljIGVtYmVkKGUpe3JldHVybiBuZXcgRW1iZWQoZSl9c3RhdGljIGVuY3J5cHQoZSl7cmV0dXJuIG5ldyBjb25maWdfRW5jcnlwdChlKX1zdGF0aWMgZW5jcnlwdGlvbihlKXtyZXR1cm4gbmV3IGNvbmZpZ19FbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTGV2ZWwoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTGV2ZWwoZSl9c3RhdGljIGVuZm9yY2UoZSl7cmV0dXJuIG5ldyBFbmZvcmNlKGUpfXN0YXRpYyBlcXVhdGUoZSl7cmV0dXJuIG5ldyBFcXVhdGUoZSl9c3RhdGljIGVxdWF0ZVJhbmdlKGUpe3JldHVybiBuZXcgRXF1YXRlUmFuZ2UoZSl9c3RhdGljIGV4Y2x1ZGUoZSl7cmV0dXJuIG5ldyBFeGNsdWRlKGUpfXN0YXRpYyBleGNsdWRlTlMoZSl7cmV0dXJuIG5ldyBFeGNsdWRlTlMoZSl9c3RhdGljIGZsaXBMYWJlbChlKXtyZXR1cm4gbmV3IEZsaXBMYWJlbChlKX1zdGF0aWMgZm9udEluZm8oZSl7cmV0dXJuIG5ldyBjb25maWdfRm9udEluZm8oZSl9c3RhdGljIGZvcm1GaWVsZEZpbGxpbmcoZSl7cmV0dXJuIG5ldyBGb3JtRmllbGRGaWxsaW5nKGUpfXN0YXRpYyBncm91cFBhcmVudChlKXtyZXR1cm4gbmV3IEdyb3VwUGFyZW50KGUpfXN0YXRpYyBpZkVtcHR5KGUpe3JldHVybiBuZXcgSWZFbXB0eShlKX1zdGF0aWMgaW5jbHVkZVhEUENvbnRlbnQoZSl7cmV0dXJuIG5ldyBJbmNsdWRlWERQQ29udGVudChlKX1zdGF0aWMgaW5jcmVtZW50YWxMb2FkKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxMb2FkKGUpfXN0YXRpYyBpbmNyZW1lbnRhbE1lcmdlKGUpe3JldHVybiBuZXcgSW5jcmVtZW50YWxNZXJnZShlKX1zdGF0aWMgaW50ZXJhY3RpdmUoZSl7cmV0dXJuIG5ldyBJbnRlcmFjdGl2ZShlKX1zdGF0aWMgam9nKGUpe3JldHVybiBuZXcgSm9nKGUpfXN0YXRpYyBsYWJlbFByaW50ZXIoZSl7cmV0dXJuIG5ldyBMYWJlbFByaW50ZXIoZSl9c3RhdGljIGxheW91dChlKXtyZXR1cm4gbmV3IExheW91dChlKX1zdGF0aWMgbGV2ZWwoZSl7cmV0dXJuIG5ldyBMZXZlbChlKX1zdGF0aWMgbGluZWFyaXplZChlKXtyZXR1cm4gbmV3IExpbmVhcml6ZWQoZSl9c3RhdGljIGxvY2FsZShlKXtyZXR1cm4gbmV3IExvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgTG9jYWxlU2V0KGUpfXN0YXRpYyBsb2coZSl7cmV0dXJuIG5ldyBMb2coZSl9c3RhdGljIG1hcChlKXtyZXR1cm4gbmV3IE1hcEVsZW1lbnQoZSl9c3RhdGljIG1lZGl1bUluZm8oZSl7cmV0dXJuIG5ldyBNZWRpdW1JbmZvKGUpfXN0YXRpYyBtZXNzYWdlKGUpe3JldHVybiBuZXcgY29uZmlnX01lc3NhZ2UoZSl9c3RhdGljIG1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IE1lc3NhZ2luZyhlKX1zdGF0aWMgbW9kZShlKXtyZXR1cm4gbmV3IE1vZGUoZSl9c3RhdGljIG1vZGlmeUFubm90cyhlKXtyZXR1cm4gbmV3IE1vZGlmeUFubm90cyhlKX1zdGF0aWMgbXNnSWQoZSl7cmV0dXJuIG5ldyBNc2dJZChlKX1zdGF0aWMgbmFtZUF0dHIoZSl7cmV0dXJuIG5ldyBOYW1lQXR0cihlKX1zdGF0aWMgbmV2ZXJFbWJlZChlKXtyZXR1cm4gbmV3IE5ldmVyRW1iZWQoZSl9c3RhdGljIG51bWJlck9mQ29waWVzKGUpe3JldHVybiBuZXcgTnVtYmVyT2ZDb3BpZXMoZSl9c3RhdGljIG9wZW5BY3Rpb24oZSl7cmV0dXJuIG5ldyBPcGVuQWN0aW9uKGUpfXN0YXRpYyBvdXRwdXQoZSl7cmV0dXJuIG5ldyBPdXRwdXQoZSl9c3RhdGljIG91dHB1dEJpbihlKXtyZXR1cm4gbmV3IE91dHB1dEJpbihlKX1zdGF0aWMgb3V0cHV0WFNMKGUpe3JldHVybiBuZXcgT3V0cHV0WFNMKGUpfXN0YXRpYyBvdmVycHJpbnQoZSl7cmV0dXJuIG5ldyBPdmVycHJpbnQoZSl9c3RhdGljIHBhY2tldHMoZSl7cmV0dXJuIG5ldyBQYWNrZXRzKGUpfXN0YXRpYyBwYWdlT2Zmc2V0KGUpe3JldHVybiBuZXcgUGFnZU9mZnNldChlKX1zdGF0aWMgcGFnZVJhbmdlKGUpe3JldHVybiBuZXcgUGFnZVJhbmdlKGUpfXN0YXRpYyBwYWdpbmF0aW9uKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbihlKX1zdGF0aWMgcGFnaW5hdGlvbk92ZXJyaWRlKGUpe3JldHVybiBuZXcgUGFnaW5hdGlvbk92ZXJyaWRlKGUpfXN0YXRpYyBwYXJ0KGUpe3JldHVybiBuZXcgUGFydChlKX1zdGF0aWMgcGNsKGUpe3JldHVybiBuZXcgUGNsKGUpfXN0YXRpYyBwZGYoZSl7cmV0dXJuIG5ldyBQZGYoZSl9c3RhdGljIHBkZmEoZSl7cmV0dXJuIG5ldyBQZGZhKGUpfXN0YXRpYyBwZXJtaXNzaW9ucyhlKXtyZXR1cm4gbmV3IFBlcm1pc3Npb25zKGUpfXN0YXRpYyBwaWNrVHJheUJ5UERGU2l6ZShlKXtyZXR1cm4gbmV3IFBpY2tUcmF5QnlQREZTaXplKGUpfXN0YXRpYyBwaWN0dXJlKGUpe3JldHVybiBuZXcgY29uZmlnX1BpY3R1cmUoZSl9c3RhdGljIHBsYWludGV4dE1ldGFkYXRhKGUpe3JldHVybiBuZXcgUGxhaW50ZXh0TWV0YWRhdGEoZSl9c3RhdGljIHByZXNlbmNlKGUpe3JldHVybiBuZXcgUHJlc2VuY2UoZSl9c3RhdGljIHByZXNlbnQoZSl7cmV0dXJuIG5ldyBQcmVzZW50KGUpfXN0YXRpYyBwcmludChlKXtyZXR1cm4gbmV3IFByaW50KGUpfXN0YXRpYyBwcmludEhpZ2hRdWFsaXR5KGUpe3JldHVybiBuZXcgUHJpbnRIaWdoUXVhbGl0eShlKX1zdGF0aWMgcHJpbnRTY2FsaW5nKGUpe3JldHVybiBuZXcgUHJpbnRTY2FsaW5nKGUpfXN0YXRpYyBwcmludGVyTmFtZShlKXtyZXR1cm4gbmV3IFByaW50ZXJOYW1lKGUpfXN0YXRpYyBwcm9kdWNlcihlKXtyZXR1cm4gbmV3IFByb2R1Y2VyKGUpfXN0YXRpYyBwcyhlKXtyZXR1cm4gbmV3IFBzKGUpfXN0YXRpYyByYW5nZShlKXtyZXR1cm4gbmV3IFJhbmdlKGUpfXN0YXRpYyByZWNvcmQoZSl7cmV0dXJuIG5ldyBSZWNvcmQoZSl9c3RhdGljIHJlbGV2YW50KGUpe3JldHVybiBuZXcgUmVsZXZhbnQoZSl9c3RhdGljIHJlbmFtZShlKXtyZXR1cm4gbmV3IFJlbmFtZShlKX1zdGF0aWMgcmVuZGVyUG9saWN5KGUpe3JldHVybiBuZXcgUmVuZGVyUG9saWN5KGUpfXN0YXRpYyBydW5TY3JpcHRzKGUpe3JldHVybiBuZXcgUnVuU2NyaXB0cyhlKX1zdGF0aWMgc2NyaXB0KGUpe3JldHVybiBuZXcgY29uZmlnX1NjcmlwdChlKX1zdGF0aWMgc2NyaXB0TW9kZWwoZSl7cmV0dXJuIG5ldyBTY3JpcHRNb2RlbChlKX1zdGF0aWMgc2V2ZXJpdHkoZSl7cmV0dXJuIG5ldyBTZXZlcml0eShlKX1zdGF0aWMgc2lsZW50UHJpbnQoZSl7cmV0dXJuIG5ldyBTaWxlbnRQcmludChlKX1zdGF0aWMgc3RhcGxlKGUpe3JldHVybiBuZXcgU3RhcGxlKGUpfXN0YXRpYyBzdGFydE5vZGUoZSl7cmV0dXJuIG5ldyBTdGFydE5vZGUoZSl9c3RhdGljIHN0YXJ0UGFnZShlKXtyZXR1cm4gbmV3IFN0YXJ0UGFnZShlKX1zdGF0aWMgc3VibWl0Rm9ybWF0KGUpe3JldHVybiBuZXcgU3VibWl0Rm9ybWF0KGUpfXN0YXRpYyBzdWJtaXRVcmwoZSl7cmV0dXJuIG5ldyBTdWJtaXRVcmwoZSl9c3RhdGljIHN1YnNldEJlbG93KGUpe3JldHVybiBuZXcgU3Vic2V0QmVsb3coZSl9c3RhdGljIHN1cHByZXNzQmFubmVyKGUpe3JldHVybiBuZXcgU3VwcHJlc3NCYW5uZXIoZSl9c3RhdGljIHRhZ2dlZChlKXtyZXR1cm4gbmV3IFRhZ2dlZChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVGVtcGxhdGUoZSl9c3RhdGljIHRlbXBsYXRlQ2FjaGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZUNhY2hlKGUpfXN0YXRpYyB0aHJlc2hvbGQoZSl7cmV0dXJuIG5ldyBUaHJlc2hvbGQoZSl9c3RhdGljIHRvKGUpe3JldHVybiBuZXcgVG8oZSl9c3RhdGljIHRyYWNlKGUpe3JldHVybiBuZXcgVHJhY2UoZSl9c3RhdGljIHRyYW5zZm9ybShlKXtyZXR1cm4gbmV3IFRyYW5zZm9ybShlKX1zdGF0aWMgdHlwZShlKXtyZXR1cm4gbmV3IFR5cGUoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IFVyaShlKX1zdGF0aWMgdmFsaWRhdGUoZSl7cmV0dXJuIG5ldyBjb25maWdfVmFsaWRhdGUoZSl9c3RhdGljIHZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzKGUpe3JldHVybiBuZXcgVmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl9c3RhdGljIHZhbGlkYXRpb25NZXNzYWdpbmcoZSl7cmV0dXJuIG5ldyBWYWxpZGF0aW9uTWVzc2FnaW5nKGUpfXN0YXRpYyB2ZXJzaW9uKGUpe3JldHVybiBuZXcgVmVyc2lvbihlKX1zdGF0aWMgdmVyc2lvbkNvbnRyb2woZSl7cmV0dXJuIG5ldyBWZXJzaW9uQ29udHJvbChlKX1zdGF0aWMgdmlld2VyUHJlZmVyZW5jZXMoZSl7cmV0dXJuIG5ldyBWaWV3ZXJQcmVmZXJlbmNlcyhlKX1zdGF0aWMgd2ViQ2xpZW50KGUpe3JldHVybiBuZXcgV2ViQ2xpZW50KGUpfXN0YXRpYyB3aGl0ZXNwYWNlKGUpe3JldHVybiBuZXcgV2hpdGVzcGFjZShlKX1zdGF0aWMgd2luZG93KGUpe3JldHVybiBuZXcgV2luZG93KGUpfXN0YXRpYyB4ZGMoZSl7cmV0dXJuIG5ldyBYZGMoZSl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IFhkcChlKX1zdGF0aWMgeHNsKGUpe3JldHVybiBuZXcgWHNsKGUpfXN0YXRpYyB6cGwoZSl7cmV0dXJuIG5ldyBacGwoZSl9fWNvbnN0IE9uPWduLmNvbm5lY3Rpb25TZXQuaWQ7Y2xhc3MgQ29ubmVjdGlvblNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihPbiwiY29ubmVjdGlvblNldCIsITApO3RoaXMud3NkbENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMueG1sQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54c2RDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgRWZmZWN0aXZlSW5wdXRQb2xpY3kgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sImVmZmVjdGl2ZUlucHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVmZmVjdGl2ZU91dHB1dFBvbGljeSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihPbiwiZWZmZWN0aXZlT3V0cHV0UG9saWN5Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE9wZXJhdGlvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihPbiwib3BlcmF0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmlucHV0PWUuaW5wdXR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMub3V0cHV0PWUub3V0cHV0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJvb3RFbGVtZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE9uLCJyb290RWxlbWVudCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTb2FwQWN0aW9uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE9uLCJzb2FwQWN0aW9uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBZGRyZXNzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE9uLCJzb2FwQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBjb25uZWN0aW9uX3NldF9VcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sInVyaSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQWRkcmVzcyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihPbiwid3NkbEFkZHJlc3MiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgV3NkbENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoT24sIndzZGxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMuZWZmZWN0aXZlSW5wdXRQb2xpY3k9bnVsbDt0aGlzLmVmZmVjdGl2ZU91dHB1dFBvbGljeT1udWxsO3RoaXMub3BlcmF0aW9uPW51bGw7dGhpcy5zb2FwQWN0aW9uPW51bGw7dGhpcy5zb2FwQWRkcmVzcz1udWxsO3RoaXMud3NkbEFkZHJlc3M9bnVsbH19Y2xhc3MgWG1sQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihPbiwieG1sQ29ubmVjdGlvbiIsITApO3RoaXMuZGF0YURlc2NyaXB0aW9uPWUuZGF0YURlc2NyaXB0aW9ufHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVyaT1udWxsfX1jbGFzcyBYc2RDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE9uLCJ4c2RDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucm9vdEVsZW1lbnQ9bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBDb25uZWN0aW9uU2V0TmFtZXNwYWNle3N0YXRpY1tvbl0oZSx0KXtpZihDb25uZWN0aW9uU2V0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBDb25uZWN0aW9uU2V0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBjb25uZWN0aW9uU2V0KGUpe3JldHVybiBuZXcgQ29ubmVjdGlvblNldChlKX1zdGF0aWMgZWZmZWN0aXZlSW5wdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVJbnB1dFBvbGljeShlKX1zdGF0aWMgZWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpe3JldHVybiBuZXcgRWZmZWN0aXZlT3V0cHV0UG9saWN5KGUpfXN0YXRpYyBvcGVyYXRpb24oZSl7cmV0dXJuIG5ldyBPcGVyYXRpb24oZSl9c3RhdGljIHJvb3RFbGVtZW50KGUpe3JldHVybiBuZXcgUm9vdEVsZW1lbnQoZSl9c3RhdGljIHNvYXBBY3Rpb24oZSl7cmV0dXJuIG5ldyBTb2FwQWN0aW9uKGUpfXN0YXRpYyBzb2FwQWRkcmVzcyhlKXtyZXR1cm4gbmV3IFNvYXBBZGRyZXNzKGUpfXN0YXRpYyB1cmkoZSl7cmV0dXJuIG5ldyBjb25uZWN0aW9uX3NldF9VcmkoZSl9c3RhdGljIHdzZGxBZGRyZXNzKGUpe3JldHVybiBuZXcgV3NkbEFkZHJlc3MoZSl9c3RhdGljIHdzZGxDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgV3NkbENvbm5lY3Rpb24oZSl9c3RhdGljIHhtbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYbWxDb25uZWN0aW9uKGUpfXN0YXRpYyB4c2RDb25uZWN0aW9uKGUpe3JldHVybiBuZXcgWHNkQ29ubmVjdGlvbihlKX19Y29uc3QgUG49Z24uZGF0YXNldHMuaWQ7Y2xhc3MgZGF0YXNldHNfRGF0YSBleHRlbmRzIFhtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZGF0YSIsZSl9W05zXSgpe3JldHVybiEwfX1jbGFzcyBEYXRhc2V0cyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihQbiwiZGF0YXNldHMiLCEwKTt0aGlzLmRhdGE9bnVsbDt0aGlzLlNpZ25hdHVyZT1udWxsfVtZc10oZSl7Y29uc3QgdD1lW0hzXTsoImRhdGEiPT09dCYmZVtKc109PT1Qbnx8IlNpZ25hdHVyZSI9PT10JiZlW0pzXT09PWduLnNpZ25hdHVyZS5pZCkmJih0aGlzW3RdPWUpO3RoaXNbWHJdKGUpfX1jbGFzcyBEYXRhc2V0c05hbWVzcGFjZXtzdGF0aWNbb25dKGUsdCl7aWYoRGF0YXNldHNOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIERhdGFzZXRzTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBkYXRhc2V0cyhlKXtyZXR1cm4gbmV3IERhdGFzZXRzKGUpfXN0YXRpYyBkYXRhKGUpe3JldHVybiBuZXcgZGF0YXNldHNfRGF0YShlKX19Y29uc3QgV249Z24ubG9jYWxlU2V0LmlkO2NsYXNzIENhbGVuZGFyU3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwiY2FsZW5kYXJTeW1ib2xzIiwhMCk7dGhpcy5uYW1lPSJncmVnb3JpYW4iO3RoaXMuZGF5TmFtZXM9bmV3IFhGQU9iamVjdEFycmF5KDIpO3RoaXMuZXJhTmFtZXM9bnVsbDt0aGlzLm1lcmlkaWVtTmFtZXM9bnVsbDt0aGlzLm1vbnRoTmFtZXM9bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBDdXJyZW5jeVN5bWJvbCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwiY3VycmVuY3lTeW1ib2wiKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbInN5bWJvbCIsImlzb25hbWUiLCJkZWNpbWFsIl0pfX1jbGFzcyBDdXJyZW5jeVN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImN1cnJlbmN5U3ltYm9scyIsITApO3RoaXMuY3VycmVuY3lTeW1ib2w9bmV3IFhGQU9iamVjdEFycmF5KDMpfX1jbGFzcyBEYXRlUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwiZGF0ZVBhdHRlcm4iKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImZ1bGwiLCJsb25nIiwibWVkIiwic2hvcnQiXSl9fWNsYXNzIERhdGVQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwiZGF0ZVBhdHRlcm5zIiwhMCk7dGhpcy5kYXRlUGF0dGVybj1uZXcgWEZBT2JqZWN0QXJyYXkoNCl9fWNsYXNzIERhdGVUaW1lU3ltYm9scyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImRhdGVUaW1lU3ltYm9scyIpfX1jbGFzcyBEYXkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImRheSIpfX1jbGFzcyBEYXlOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwiZGF5TmFtZXMiLCEwKTt0aGlzLmFiYnI9Z2V0SW50ZWdlcih7ZGF0YTplLmFiYnIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmRheT1uZXcgWEZBT2JqZWN0QXJyYXkoNyl9fWNsYXNzIEVyYSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwiZXJhIil9fWNsYXNzIEVyYU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJlcmFOYW1lcyIsITApO3RoaXMuZXJhPW5ldyBYRkFPYmplY3RBcnJheSgyKX19Y2xhc3MgbG9jYWxlX3NldF9Mb2NhbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sImxvY2FsZSIsITApO3RoaXMuZGVzYz1lLmRlc2N8fCIiO3RoaXMubmFtZT0iaXNvbmFtZSI7dGhpcy5jYWxlbmRhclN5bWJvbHM9bnVsbDt0aGlzLmN1cnJlbmN5U3ltYm9scz1udWxsO3RoaXMuZGF0ZVBhdHRlcm5zPW51bGw7dGhpcy5kYXRlVGltZVN5bWJvbHM9bnVsbDt0aGlzLm51bWJlclBhdHRlcm5zPW51bGw7dGhpcy5udW1iZXJTeW1ib2xzPW51bGw7dGhpcy50aW1lUGF0dGVybnM9bnVsbDt0aGlzLnR5cGVGYWNlcz1udWxsfX1jbGFzcyBsb2NhbGVfc2V0X0xvY2FsZVNldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwibG9jYWxlU2V0IiwhMCk7dGhpcy5sb2NhbGU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNZXJpZGllbSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwibWVyaWRpZW0iKX19Y2xhc3MgTWVyaWRpZW1OYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwibWVyaWRpZW1OYW1lcyIsITApO3RoaXMubWVyaWRpZW09bmV3IFhGQU9iamVjdEFycmF5KDIpfX1jbGFzcyBNb250aCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwibW9udGgiKX19Y2xhc3MgTW9udGhOYW1lcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwibW9udGhOYW1lcyIsITApO3RoaXMuYWJicj1nZXRJbnRlZ2VyKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMubW9udGg9bmV3IFhGQU9iamVjdEFycmF5KDEyKX19Y2xhc3MgTnVtYmVyUGF0dGVybiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbiwibnVtYmVyUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgTnVtYmVyUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sIm51bWJlclBhdHRlcm5zIiwhMCk7dGhpcy5udW1iZXJQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgTnVtYmVyU3ltYm9sIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJudW1iZXJTeW1ib2wiKTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbImRlY2ltYWwiLCJncm91cGluZyIsInBlcmNlbnQiLCJtaW51cyIsInplcm8iXSl9fWNsYXNzIE51bWJlclN5bWJvbHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sIm51bWJlclN5bWJvbHMiLCEwKTt0aGlzLm51bWJlclN5bWJvbD1uZXcgWEZBT2JqZWN0QXJyYXkoNSl9fWNsYXNzIFRpbWVQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJ0aW1lUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgVGltZVBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJ0aW1lUGF0dGVybnMiLCEwKTt0aGlzLnRpbWVQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgVHlwZUZhY2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoV24sInR5cGVGYWNlIiwhMCk7dGhpcy5uYW1lPSIifGUubmFtZX19Y2xhc3MgVHlwZUZhY2VzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFduLCJ0eXBlRmFjZXMiLCEwKTt0aGlzLnR5cGVGYWNlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTG9jYWxlU2V0TmFtZXNwYWNle3N0YXRpY1tvbl0oZSx0KXtpZihMb2NhbGVTZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIExvY2FsZVNldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgY2FsZW5kYXJTeW1ib2xzKGUpe3JldHVybiBuZXcgQ2FsZW5kYXJTeW1ib2xzKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbChlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9sKGUpfXN0YXRpYyBjdXJyZW5jeVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDdXJyZW5jeVN5bWJvbHMoZSl9c3RhdGljIGRhdGVQYXR0ZXJuKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm4oZSl9c3RhdGljIGRhdGVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IERhdGVQYXR0ZXJucyhlKX1zdGF0aWMgZGF0ZVRpbWVTeW1ib2xzKGUpe3JldHVybiBuZXcgRGF0ZVRpbWVTeW1ib2xzKGUpfXN0YXRpYyBkYXkoZSl7cmV0dXJuIG5ldyBEYXkoZSl9c3RhdGljIGRheU5hbWVzKGUpe3JldHVybiBuZXcgRGF5TmFtZXMoZSl9c3RhdGljIGVyYShlKXtyZXR1cm4gbmV3IEVyYShlKX1zdGF0aWMgZXJhTmFtZXMoZSl7cmV0dXJuIG5ldyBFcmFOYW1lcyhlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgbG9jYWxlX3NldF9Mb2NhbGUoZSl9c3RhdGljIGxvY2FsZVNldChlKXtyZXR1cm4gbmV3IGxvY2FsZV9zZXRfTG9jYWxlU2V0KGUpfXN0YXRpYyBtZXJpZGllbShlKXtyZXR1cm4gbmV3IE1lcmlkaWVtKGUpfXN0YXRpYyBtZXJpZGllbU5hbWVzKGUpe3JldHVybiBuZXcgTWVyaWRpZW1OYW1lcyhlKX1zdGF0aWMgbW9udGgoZSl7cmV0dXJuIG5ldyBNb250aChlKX1zdGF0aWMgbW9udGhOYW1lcyhlKXtyZXR1cm4gbmV3IE1vbnRoTmFtZXMoZSl9c3RhdGljIG51bWJlclBhdHRlcm4oZSl7cmV0dXJuIG5ldyBOdW1iZXJQYXR0ZXJuKGUpfXN0YXRpYyBudW1iZXJQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm5zKGUpfXN0YXRpYyBudW1iZXJTeW1ib2woZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2woZSl9c3RhdGljIG51bWJlclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBOdW1iZXJTeW1ib2xzKGUpfXN0YXRpYyB0aW1lUGF0dGVybihlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJuKGUpfXN0YXRpYyB0aW1lUGF0dGVybnMoZSl7cmV0dXJuIG5ldyBUaW1lUGF0dGVybnMoZSl9c3RhdGljIHR5cGVGYWNlKGUpe3JldHVybiBuZXcgVHlwZUZhY2UoZSl9c3RhdGljIHR5cGVGYWNlcyhlKXtyZXR1cm4gbmV3IFR5cGVGYWNlcyhlKX19Y29uc3Qgam49Z24uc2lnbmF0dXJlLmlkO2NsYXNzIHNpZ25hdHVyZV9TaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam4sInNpZ25hdHVyZSIsITApfX1jbGFzcyBTaWduYXR1cmVOYW1lc3BhY2V7c3RhdGljW29uXShlLHQpe2lmKFNpZ25hdHVyZU5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU2lnbmF0dXJlTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzaWduYXR1cmUoZSl7cmV0dXJuIG5ldyBzaWduYXR1cmVfU2lnbmF0dXJlKGUpfX1jb25zdCBYbj1nbi5zdHlsZXNoZWV0LmlkO2NsYXNzIFN0eWxlc2hlZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG4sInN0eWxlc2hlZXQiLCEwKX19Y2xhc3MgU3R5bGVzaGVldE5hbWVzcGFjZXtzdGF0aWNbb25dKGUsdCl7aWYoU3R5bGVzaGVldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gU3R5bGVzaGVldE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgc3R5bGVzaGVldChlKXtyZXR1cm4gbmV3IFN0eWxlc2hlZXQoZSl9fWNvbnN0IFpuPWduLnhkcC5pZDtjbGFzcyB4ZHBfWGRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFpuLCJ4ZHAiLCEwKTt0aGlzLnV1aWQ9ZS51dWlkfHwiIjt0aGlzLnRpbWVTdGFtcD1lLnRpbWVTdGFtcHx8IiI7dGhpcy5jb25maWc9bnVsbDt0aGlzLmNvbm5lY3Rpb25TZXQ9bnVsbDt0aGlzLmRhdGFzZXRzPW51bGw7dGhpcy5sb2NhbGVTZXQ9bnVsbDt0aGlzLnN0eWxlc2hlZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGVtcGxhdGU9bnVsbH1bS3NdKGUpe2NvbnN0IHQ9Z25bZVtIc11dO3JldHVybiB0JiZlW0pzXT09PXQuaWR9fWNsYXNzIFhkcE5hbWVzcGFjZXtzdGF0aWNbb25dKGUsdCl7aWYoWGRwTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBYZHBOYW1lc3BhY2VbZV0odCl9c3RhdGljIHhkcChlKXtyZXR1cm4gbmV3IHhkcF9YZHAoZSl9fWNvbnN0IFZuPWduLnhodG1sLmlkLF9uPVN5bWJvbCgpLHpuPW5ldyBTZXQoWyJjb2xvciIsImZvbnQiLCJmb250LWZhbWlseSIsImZvbnQtc2l6ZSIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXdlaWdodCIsIm1hcmdpbiIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJsZXR0ZXItc3BhY2luZyIsImxpbmUtaGVpZ2h0Iiwib3JwaGFucyIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwidGFiLWludGVydmFsIiwidGFiLXN0b3AiLCJ0ZXh0LWFsaWduIiwidGV4dC1kZWNvcmF0aW9uIiwidGV4dC1pbmRlbnQiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndpZG93cyIsImtlcm5pbmctbW9kZSIsInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLCJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsInhmYS1zcGFjZXJ1biIsInhmYS10YWItc3RvcHMiXSksJG49bmV3IE1hcChbWyJwYWdlLWJyZWFrLWFmdGVyIiwiYnJlYWtBZnRlciJdLFsicGFnZS1icmVhay1iZWZvcmUiLCJicmVha0JlZm9yZSJdLFsicGFnZS1icmVhay1pbnNpZGUiLCJicmVha0luc2lkZSJdLFsia2VybmluZy1tb2RlIixlPT4ibm9uZSI9PT1lPyJub25lIjoibm9ybWFsIl0sWyJ4ZmEtZm9udC1ob3Jpem9udGFsLXNjYWxlIixlPT5gc2NhbGVYKCR7TWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIixlPT5gc2NhbGVZKCR7TWF0aC5tYXgoMCxNYXRoLm1pbihwYXJzZUludChlKS8xMDApKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1zcGFjZXJ1biIsIiJdLFsieGZhLXRhYi1zdG9wcyIsIiJdLFsiZm9udC1zaXplIiwoZSx0KT0+bWVhc3VyZVRvU3RyaW5nKC45OSooZT10LmZvbnRTaXplPWdldE1lYXN1cmVtZW50KGUpKSldLFsibGV0dGVyLXNwYWNpbmciLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibGluZS1oZWlnaHQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1ib3R0b20iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLWxlZnQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsibWFyZ2luLXJpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi10b3AiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsidGV4dC1pbmRlbnQiLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldLFsiZm9udC1mYW1pbHkiLGU9PmVdLFsidmVydGljYWwtYWxpZ24iLGU9Pm1lYXN1cmVUb1N0cmluZyhnZXRNZWFzdXJlbWVudChlKSldXSksQW89L1xzKy9nLGVvPS9bXHJcbl0rL2csdG89L1xyXG4/L2c7ZnVuY3Rpb24gbWFwU3R5bGUoZSx0LGkpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gYTtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W3QsaV1vZiBlLnNwbGl0KCI7IikubWFwKChlPT5lLnNwbGl0KCI6IiwyKSkpKXtjb25zdCBlPSRuLmdldCh0KTtpZigiIj09PWUpY29udGludWU7bGV0IHM9aTtlJiYocz0ic3RyaW5nIj09dHlwZW9mIGU/ZTplKGkscikpO3QuZW5kc1dpdGgoInNjYWxlIik/YS50cmFuc2Zvcm09YS50cmFuc2Zvcm0/YCR7YVt0XX0gJHtzfWA6czphW3QucmVwbGFjZUFsbCgvLShbYS16QS1aXSkvZywoKGUsdCk9PnQudG9VcHBlckNhc2UoKSkpXT1zfWEuZm9udEZhbWlseSYmc2V0Rm9udEZhbWlseSh7dHlwZWZhY2U6YS5mb250RmFtaWx5LHdlaWdodDphLmZvbnRXZWlnaHR8fCJub3JtYWwiLHBvc3R1cmU6YS5mb250U3R5bGV8fCJub3JtYWwiLHNpemU6ci5mb250U2l6ZXx8MH0sdCx0W21zXS5mb250RmluZGVyLGEpO2lmKGkmJmEudmVydGljYWxBbGlnbiYmIjBweCIhPT1hLnZlcnRpY2FsQWxpZ24mJmEuZm9udFNpemUpe2NvbnN0IGU9LjU4Myx0PS4zMzMsaT1nZXRNZWFzdXJlbWVudChhLmZvbnRTaXplKTthLmZvbnRTaXplPW1lYXN1cmVUb1N0cmluZyhpKmUpO2EudmVydGljYWxBbGlnbj1tZWFzdXJlVG9TdHJpbmcoTWF0aC5zaWduKGdldE1lYXN1cmVtZW50KGEudmVydGljYWxBbGlnbikpKmkqdCl9aSYmYS5mb250U2l6ZSYmKGEuZm9udFNpemU9YGNhbGMoJHthLmZvbnRTaXplfSAqIHZhcigtLXNjYWxlLWZhY3RvcikpYCk7Zml4VGV4dEluZGVudChhKTtyZXR1cm4gYX1jb25zdCBpbz1uZXcgU2V0KFsiYm9keSIsImh0bWwiXSk7Y2xhc3MgWGh0bWxPYmplY3QgZXh0ZW5kcyBYbWxPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihWbix0KTt0aGlzW19uXT0hMTt0aGlzLnN0eWxlPWUuc3R5bGV8fCIifVtWcl0oZSl7c3VwZXJbVnJdKGUpO3RoaXMuc3R5bGU9ZnVuY3Rpb24gY2hlY2tTdHlsZShlKXtyZXR1cm4gZS5zdHlsZT9lLnN0eWxlLnRyaW0oKS5zcGxpdCgvXHMqO1xzKi8pLmZpbHRlcigoZT0+ISFlKSkubWFwKChlPT5lLnNwbGl0KC9ccyo6XHMqLywyKSkpLmZpbHRlcigoKFt0LGldKT0+eyJmb250LWZhbWlseSI9PT10JiZlW21zXS51c2VkVHlwZWZhY2VzLmFkZChpKTtyZXR1cm4gem4uaGFzKHQpfSkpLm1hcCgoZT0+ZS5qb2luKCI6IikpKS5qb2luKCI7Iik6IiJ9KHRoaXMpfVtXcl0oKXtyZXR1cm4haW8uaGFzKHRoaXNbSHNdKX1bVHNdKGUsdD0hMSl7aWYodCl0aGlzW19uXT0hMDtlbHNle2U9ZS5yZXBsYWNlQWxsKGVvLCIiKTt0aGlzLnN0eWxlLmluY2x1ZGVzKCJ4ZmEtc3BhY2VydW46eWVzIil8fChlPWUucmVwbGFjZUFsbChBbywiICIpKX1lJiYodGhpc1tlc10rPWUpfVtxc10oZSx0PSEwKXtjb25zdCBpPU9iamVjdC5jcmVhdGUobnVsbCksYT17dG9wOk5hTixib3R0b206TmFOLGxlZnQ6TmFOLHJpZ2h0Ok5hTn07bGV0IHI9bnVsbDtmb3IoY29uc3RbZSx0XW9mIHRoaXMuc3R5bGUuc3BsaXQoIjsiKS5tYXAoKGU9PmUuc3BsaXQoIjoiLDIpKSkpc3dpdGNoKGUpe2Nhc2UiZm9udC1mYW1pbHkiOmkudHlwZWZhY2U9c3RyaXBRdW90ZXModCk7YnJlYWs7Y2FzZSJmb250LXNpemUiOmkuc2l6ZT1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlImZvbnQtd2VpZ2h0IjppLndlaWdodD10O2JyZWFrO2Nhc2UiZm9udC1zdHlsZSI6aS5wb3N0dXJlPXQ7YnJlYWs7Y2FzZSJsZXR0ZXItc3BhY2luZyI6aS5sZXR0ZXJTcGFjaW5nPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luIjpjb25zdCBlPXQuc3BsaXQoLyBcdC8pLm1hcCgoZT0+Z2V0TWVhc3VyZW1lbnQoZSkpKTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMTphLnRvcD1hLmJvdHRvbT1hLmxlZnQ9YS5yaWdodD1lWzBdO2JyZWFrO2Nhc2UgMjphLnRvcD1hLmJvdHRvbT1lWzBdO2EubGVmdD1hLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSAzOmEudG9wPWVbMF07YS5ib3R0b209ZVsyXTthLmxlZnQ9YS5yaWdodD1lWzFdO2JyZWFrO2Nhc2UgNDphLnRvcD1lWzBdO2EubGVmdD1lWzFdO2EuYm90dG9tPWVbMl07YS5yaWdodD1lWzNdfWJyZWFrO2Nhc2UibWFyZ2luLXRvcCI6YS50b3A9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tYm90dG9tIjphLmJvdHRvbT1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1sZWZ0IjphLmxlZnQ9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJtYXJnaW4tcmlnaHQiOmEucmlnaHQ9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJsaW5lLWhlaWdodCI6cj1nZXRNZWFzdXJlbWVudCh0KX1lLnB1c2hEYXRhKGksYSxyKTtpZih0aGlzW2VzXSllLmFkZFN0cmluZyh0aGlzW2VzXSk7ZWxzZSBmb3IoY29uc3QgdCBvZiB0aGlzW1FzXSgpKSIjdGV4dCIhPT10W0hzXT90W3FzXShlKTplLmFkZFN0cmluZyh0W2VzXSk7dCYmZS5wb3BGb250KCl9W2FuXShlKXtjb25zdCB0PVtdO3RoaXNbYXNdPXtjaGlsZHJlbjp0fTt0aGlzW1pyXSh7fSk7aWYoMD09PXQubGVuZ3RoJiYhdGhpc1tlc10pcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7bGV0IGk7aT10aGlzW19uXT90aGlzW2VzXT90aGlzW2VzXS5yZXBsYWNlQWxsKHRvLCJcbiIpOnZvaWQgMDp0aGlzW2VzXXx8dm9pZCAwO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6dGhpc1tIc10sYXR0cmlidXRlczp7aHJlZjp0aGlzLmhyZWYsc3R5bGU6bWFwU3R5bGUodGhpcy5zdHlsZSx0aGlzLHRoaXNbX25dKX0sY2hpbGRyZW46dCx2YWx1ZTppfSl9fWNsYXNzIEEgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJhIik7dGhpcy5ocmVmPWZpeFVSTChlLmhyZWYpfHwiIn19Y2xhc3MgQiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImIiKX1bcXNdKGUpe2UucHVzaEZvbnQoe3dlaWdodDoiYm9sZCJ9KTtzdXBlcltxc10oZSk7ZS5wb3BGb250KCl9fWNsYXNzIEJvZHkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJib2R5Iil9W2FuXShlKXtjb25zdCB0PXN1cGVyW2FuXShlKSx7aHRtbDppfT10O2lmKCFpKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2kubmFtZT0iZGl2IjtpLmF0dHJpYnV0ZXMuY2xhc3M9WyJ4ZmFSaWNoIl07cmV0dXJuIHR9fWNsYXNzIEJyIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYnIiKX1bZW5dKCl7cmV0dXJuIlxuIn1bcXNdKGUpe2UuYWRkU3RyaW5nKCJcbiIpfVthbl0oZSl7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiYnIifSl9fWNsYXNzIEh0bWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJodG1sIil9W2FuXShlKXtjb25zdCB0PVtdO3RoaXNbYXNdPXtjaGlsZHJlbjp0fTt0aGlzW1pyXSh7fSk7aWYoMD09PXQubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LHZhbHVlOnRoaXNbZXNdfHwiIn0pO2lmKDE9PT10Lmxlbmd0aCl7Y29uc3QgZT10WzBdO2lmKGUuYXR0cmlidXRlcz8uY2xhc3MuaW5jbHVkZXMoInhmYVJpY2giKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGUpfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6WyJ4ZmFSaWNoIl0sc3R5bGU6e319LGNoaWxkcmVuOnR9KX19Y2xhc3MgSSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImkiKX1bcXNdKGUpe2UucHVzaEZvbnQoe3Bvc3R1cmU6Iml0YWxpYyJ9KTtzdXBlcltxc10oZSk7ZS5wb3BGb250KCl9fWNsYXNzIExpIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwibGkiKX19Y2xhc3MgT2wgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJvbCIpfX1jbGFzcyBQIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwicCIpfVtxc10oZSl7c3VwZXJbcXNdKGUsITEpO2UuYWRkU3RyaW5nKCJcbiIpO2UuYWRkUGFyYSgpO2UucG9wRm9udCgpfVtlbl0oKXtyZXR1cm4gdGhpc1tmc10oKVtRc10oKS5hdCgtMSk9PT10aGlzP3N1cGVyW2VuXSgpOnN1cGVyW2VuXSgpKyJcbiJ9fWNsYXNzIFNwYW4gZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzcGFuIil9fWNsYXNzIFN1YiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1YiIpfX1jbGFzcyBTdXAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJzdXAiKX19Y2xhc3MgVWwgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJ1bCIpfX1jbGFzcyBYaHRtbE5hbWVzcGFjZXtzdGF0aWNbb25dKGUsdCl7aWYoWGh0bWxOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFhodG1sTmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBhKGUpe3JldHVybiBuZXcgQShlKX1zdGF0aWMgYihlKXtyZXR1cm4gbmV3IEIoZSl9c3RhdGljIGJvZHkoZSl7cmV0dXJuIG5ldyBCb2R5KGUpfXN0YXRpYyBicihlKXtyZXR1cm4gbmV3IEJyKGUpfXN0YXRpYyBodG1sKGUpe3JldHVybiBuZXcgSHRtbChlKX1zdGF0aWMgaShlKXtyZXR1cm4gbmV3IEkoZSl9c3RhdGljIGxpKGUpe3JldHVybiBuZXcgTGkoZSl9c3RhdGljIG9sKGUpe3JldHVybiBuZXcgT2woZSl9c3RhdGljIHAoZSl7cmV0dXJuIG5ldyBQKGUpfXN0YXRpYyBzcGFuKGUpe3JldHVybiBuZXcgU3BhbihlKX1zdGF0aWMgc3ViKGUpe3JldHVybiBuZXcgU3ViKGUpfXN0YXRpYyBzdXAoZSl7cmV0dXJuIG5ldyBTdXAoZSl9c3RhdGljIHVsKGUpe3JldHVybiBuZXcgVWwoZSl9fWNvbnN0IGFvPXtjb25maWc6Q29uZmlnTmFtZXNwYWNlLGNvbm5lY3Rpb246Q29ubmVjdGlvblNldE5hbWVzcGFjZSxkYXRhc2V0czpEYXRhc2V0c05hbWVzcGFjZSxsb2NhbGVTZXQ6TG9jYWxlU2V0TmFtZXNwYWNlLHNpZ25hdHVyZTpTaWduYXR1cmVOYW1lc3BhY2Usc3R5bGVzaGVldDpTdHlsZXNoZWV0TmFtZXNwYWNlLHRlbXBsYXRlOlRlbXBsYXRlTmFtZXNwYWNlLHhkcDpYZHBOYW1lc3BhY2UseGh0bWw6WGh0bWxOYW1lc3BhY2V9O2NsYXNzIFVua25vd25OYW1lc3BhY2V7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lc3BhY2VJZD1lfVtvbl0oZSx0KXtyZXR1cm4gbmV3IFhtbE9iamVjdCh0aGlzLm5hbWVzcGFjZUlkLGUsdCl9fWNsYXNzIFJvb3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoLTEsInJvb3QiLE9iamVjdC5jcmVhdGUobnVsbCkpO3RoaXMuZWxlbWVudD1udWxsO3RoaXNbd3NdPWV9W1lzXShlKXt0aGlzLmVsZW1lbnQ9ZTtyZXR1cm4hMH1bcnNdKCl7c3VwZXJbcnNdKCk7aWYodGhpcy5lbGVtZW50LnRlbXBsYXRlIGluc3RhbmNlb2YgVGVtcGxhdGUpe3RoaXNbd3NdLnNldChYcyx0aGlzLmVsZW1lbnQpO3RoaXMuZWxlbWVudC50ZW1wbGF0ZVtac10odGhpc1t3c10pO3RoaXMuZWxlbWVudC50ZW1wbGF0ZVt3c109dGhpc1t3c119fX1jbGFzcyBFbXB0eSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC0xLCIiLE9iamVjdC5jcmVhdGUobnVsbCkpfVtZc10oZSl7cmV0dXJuITF9fWNsYXNzIEJ1aWxkZXJ7Y29uc3RydWN0b3IoZT1udWxsKXt0aGlzLl9uYW1lc3BhY2VTdGFjaz1bXTt0aGlzLl9uc0Fnbm9zdGljTGV2ZWw9MDt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcz1uZXcgTWFwO3RoaXMuX25hbWVzcGFjZXM9bmV3IE1hcDt0aGlzLl9uZXh0TnNJZD1NYXRoLm1heCguLi5PYmplY3QudmFsdWVzKGduKS5tYXAoKCh7aWQ6ZX0pPT5lKSkpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9ZXx8bmV3IFVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCl9YnVpbGRSb290KGUpe3JldHVybiBuZXcgUm9vdChlKX1idWlsZCh7bnNQcmVmaXg6ZSxuYW1lOnQsYXR0cmlidXRlczppLG5hbWVzcGFjZTphLHByZWZpeGVzOnJ9KXtjb25zdCBzPW51bGwhPT1hO2lmKHMpe3RoaXMuX25hbWVzcGFjZVN0YWNrLnB1c2godGhpcy5fY3VycmVudE5hbWVzcGFjZSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9zZWFyY2hOYW1lc3BhY2UoYSl9ciYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KHIpO2lmKGkuaGFzT3duUHJvcGVydHkodnMpKXtjb25zdCBlPWFvLmRhdGFzZXRzLHQ9aVt2c107bGV0IGE9bnVsbDtmb3IoY29uc3RbaSxyXW9mIE9iamVjdC5lbnRyaWVzKHQpKXtpZih0aGlzLl9nZXROYW1lc3BhY2VUb1VzZShpKT09PWUpe2E9e3hmYTpyfTticmVha319YT9pW3ZzXT1hOmRlbGV0ZSBpW3ZzXX1jb25zdCBuPXRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGUpLG89bj8uW29uXSh0LGkpfHxuZXcgRW1wdHk7b1tOc10oKSYmdGhpcy5fbnNBZ25vc3RpY0xldmVsKys7KHN8fHJ8fG9bTnNdKCkpJiYob1t6cl09e2hhc05hbWVzcGFjZTpzLHByZWZpeGVzOnIsbnNBZ25vc3RpYzpvW05zXSgpfSk7cmV0dXJuIG99aXNOc0Fnbm9zdGljKCl7cmV0dXJuIHRoaXMuX25zQWdub3N0aWNMZXZlbD4wfV9zZWFyY2hOYW1lc3BhY2UoZSl7bGV0IHQ9dGhpcy5fbmFtZXNwYWNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtmb3IoY29uc3RbaSx7Y2hlY2s6YX1db2YgT2JqZWN0LmVudHJpZXMoZ24pKWlmKGEoZSkpe3Q9YW9baV07aWYodCl7dGhpcy5fbmFtZXNwYWNlcy5zZXQoZSx0KTtyZXR1cm4gdH1icmVha310PW5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpO3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9X2FkZE5hbWVzcGFjZVByZWZpeChlKXtmb3IoY29uc3R7cHJlZml4OnQsdmFsdWU6aX1vZiBlKXtjb25zdCBlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShpKTtsZXQgYT10aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQodCk7aWYoIWEpe2E9W107dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuc2V0KHQsYSl9YS5wdXNoKGUpfX1fZ2V0TmFtZXNwYWNlVG9Vc2UoZSl7aWYoIWUpcmV0dXJuIHRoaXMuX2N1cnJlbnROYW1lc3BhY2U7Y29uc3QgdD10aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSk7aWYodD8ubGVuZ3RoPjApcmV0dXJuIHQuYXQoLTEpO3dhcm4oYFVua25vd24gbmFtZXNwYWNlIHByZWZpeDogJHtlfS5gKTtyZXR1cm4gbnVsbH1jbGVhbihlKXtjb25zdHtoYXNOYW1lc3BhY2U6dCxwcmVmaXhlczppLG5zQWdub3N0aWM6YX09ZTt0JiYodGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9uYW1lc3BhY2VTdGFjay5wb3AoKSk7aSYmaS5mb3JFYWNoKCgoe3ByZWZpeDplfSk9Pnt0aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSkucG9wKCl9KSk7YSYmdGhpcy5fbnNBZ25vc3RpY0xldmVsLS19fWNsYXNzIFhGQVBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3IoZT1udWxsLHQ9ITEpe3N1cGVyKCk7dGhpcy5fYnVpbGRlcj1uZXcgQnVpbGRlcihlKTt0aGlzLl9zdGFjaz1bXTt0aGlzLl9nbG9iYWxEYXRhPXt1c2VkVHlwZWZhY2VzOm5ldyBTZXR9O3RoaXMuX2lkcz1uZXcgTWFwO3RoaXMuX2N1cnJlbnQ9dGhpcy5fYnVpbGRlci5idWlsZFJvb3QodGhpcy5faWRzKTt0aGlzLl9lcnJvckNvZGU9TnI7dGhpcy5fd2hpdGVSZWdleD0vXlxzKyQvO3RoaXMuX25ic3BzPS9ceGEwKy9nO3RoaXMuX3JpY2hUZXh0PXR9cGFyc2UoZSl7dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGU9PT1Ocil7dGhpcy5fY3VycmVudFtyc10oKTtyZXR1cm4gdGhpcy5fY3VycmVudC5lbGVtZW50fX1vblRleHQoZSl7ZT1lLnJlcGxhY2UodGhpcy5fbmJzcHMsKGU9PmUuc2xpY2UoMSkrIiAiKSk7dGhpcy5fcmljaFRleHR8fHRoaXMuX2N1cnJlbnRbV3JdKCk/dGhpcy5fY3VycmVudFtUc10oZSx0aGlzLl9yaWNoVGV4dCk6dGhpcy5fd2hpdGVSZWdleC50ZXN0KGUpfHx0aGlzLl9jdXJyZW50W1RzXShlLnRyaW0oKSl9b25DZGF0YShlKXt0aGlzLl9jdXJyZW50W1RzXShlKX1fbWtBdHRyaWJ1dGVzKGUsdCl7bGV0IGk9bnVsbCxhPW51bGw7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKHt9KTtmb3IoY29uc3R7bmFtZTpzLHZhbHVlOm59b2YgZSlpZigieG1sbnMiPT09cylpP3dhcm4oYFhGQSAtIG11bHRpcGxlIG5hbWVzcGFjZSBkZWZpbml0aW9uIGluIDwke3R9PmApOmk9bjtlbHNlIGlmKHMuc3RhcnRzV2l0aCgieG1sbnM6Iikpe2NvbnN0IGU9cy5zdWJzdHJpbmcoNik7YXx8KGE9W10pO2EucHVzaCh7cHJlZml4OmUsdmFsdWU6bn0pfWVsc2V7Y29uc3QgZT1zLmluZGV4T2YoIjoiKTtpZigtMT09PWUpcltzXT1uO2Vsc2V7bGV0IHQ9clt2c107dHx8KHQ9clt2c109T2JqZWN0LmNyZWF0ZShudWxsKSk7Y29uc3RbaSxhXT1bcy5zbGljZSgwLGUpLHMuc2xpY2UoZSsxKV07KHRbaV18fD1PYmplY3QuY3JlYXRlKG51bGwpKVthXT1ufX1yZXR1cm5baSxhLHJdfV9nZXROYW1lQW5kUHJlZml4KGUsdCl7Y29uc3QgaT1lLmluZGV4T2YoIjoiKTtyZXR1cm4tMT09PWk/W2UsbnVsbF06W2Uuc3Vic3RyaW5nKGkrMSksdD8iIjplLnN1YnN0cmluZygwLGkpXX1vbkJlZ2luRWxlbWVudChlLHQsaSl7Y29uc3RbYSxyLHNdPXRoaXMuX21rQXR0cmlidXRlcyh0LGUpLFtuLG9dPXRoaXMuX2dldE5hbWVBbmRQcmVmaXgoZSx0aGlzLl9idWlsZGVyLmlzTnNBZ25vc3RpYygpKSxnPXRoaXMuX2J1aWxkZXIuYnVpbGQoe25zUHJlZml4Om8sbmFtZTpuLGF0dHJpYnV0ZXM6cyxuYW1lc3BhY2U6YSxwcmVmaXhlczpyfSk7Z1ttc109dGhpcy5fZ2xvYmFsRGF0YTtpZihpKXtnW3JzXSgpO3RoaXMuX2N1cnJlbnRbWXNdKGcpJiZnW19zXSh0aGlzLl9pZHMpO2dbVnJdKHRoaXMuX2J1aWxkZXIpfWVsc2V7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50KTt0aGlzLl9jdXJyZW50PWd9fW9uRW5kRWxlbWVudChlKXtjb25zdCB0PXRoaXMuX2N1cnJlbnQ7aWYodFtGc10oKSYmInN0cmluZyI9PXR5cGVvZiB0W2VzXSl7Y29uc3QgZT1uZXcgWEZBUGFyc2VyO2UuX2dsb2JhbERhdGE9dGhpcy5fZ2xvYmFsRGF0YTtjb25zdCBpPWUucGFyc2UodFtlc10pO3RbZXNdPW51bGw7dFtZc10oaSl9dFtyc10oKTt0aGlzLl9jdXJyZW50PXRoaXMuX3N0YWNrLnBvcCgpO3RoaXMuX2N1cnJlbnRbWXNdKHQpJiZ0W19zXSh0aGlzLl9pZHMpO3RbVnJdKHRoaXMuX2J1aWxkZXIpfW9uRXJyb3IoZSl7dGhpcy5fZXJyb3JDb2RlPWV9fWNsYXNzIFhGQUZhY3Rvcnl7Y29uc3RydWN0b3IoZSl7dHJ5e3RoaXMucm9vdD0obmV3IFhGQVBhcnNlcikucGFyc2UoWEZBRmFjdG9yeS5fY3JlYXRlRG9jdW1lbnQoZSkpO2NvbnN0IHQ9bmV3IEJpbmRlcih0aGlzLnJvb3QpO3RoaXMuZm9ybT10LmJpbmQoKTt0aGlzLmRhdGFIYW5kbGVyPW5ldyBEYXRhSGFuZGxlcih0aGlzLnJvb3QsdC5nZXREYXRhKCkpO3RoaXMuZm9ybVttc10udGVtcGxhdGU9dGhpcy5mb3JtfWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIGFuZCBiaW5kaW5nOiAke2V9YCl9fWlzVmFsaWQoKXtyZXR1cm4gdGhpcy5yb290JiZ0aGlzLmZvcm19X2NyZWF0ZVBhZ2VzSGVscGVyKCl7Y29uc3QgZT10aGlzLmZvcm1bdG5dKCk7cmV0dXJuIG5ldyBQcm9taXNlKCgodCxpKT0+e2NvbnN0IG5leHRJdGVyYXRpb249KCk9Pnt0cnl7Y29uc3QgaT1lLm5leHQoKTtpLmRvbmU/dChpLnZhbHVlKTpzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9Y2F0Y2goZSl7aShlKX19O3NldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX0pKX1hc3luYyBfY3JlYXRlUGFnZXMoKXt0cnl7dGhpcy5wYWdlcz1hd2FpdCB0aGlzLl9jcmVhdGVQYWdlc0hlbHBlcigpO3RoaXMuZGltcz10aGlzLnBhZ2VzLmNoaWxkcmVuLm1hcCgoZT0+e2NvbnN0e3dpZHRoOnQsaGVpZ2h0Oml9PWUuYXR0cmlidXRlcy5zdHlsZTtyZXR1cm5bMCwwLHBhcnNlSW50KHQpLHBhcnNlSW50KGkpXX0pKX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgbGF5b3V0OiAke2V9YCl9fWdldEJvdW5kaW5nQm94KGUpe3JldHVybiB0aGlzLmRpbXNbZV19YXN5bmMgZ2V0TnVtUGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO3JldHVybiB0aGlzLmRpbXMubGVuZ3RofXNldEltYWdlcyhlKXt0aGlzLmZvcm1bbXNdLmltYWdlcz1lfXNldEZvbnRzKGUpe3RoaXMuZm9ybVttc10uZm9udEZpbmRlcj1uZXcgRm9udEZpbmRlcihlKTtjb25zdCB0PVtdO2ZvcihsZXQgZSBvZiB0aGlzLmZvcm1bbXNdLnVzZWRUeXBlZmFjZXMpe2U9c3RyaXBRdW90ZXMoZSk7dGhpcy5mb3JtW21zXS5mb250RmluZGVyLmZpbmQoZSl8fHQucHVzaChlKX1yZXR1cm4gdC5sZW5ndGg+MD90Om51bGx9YXBwZW5kRm9udHMoZSx0KXt0aGlzLmZvcm1bbXNdLmZvbnRGaW5kZXIuYWRkKGUsdCl9YXN5bmMgZ2V0UGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO2NvbnN0IGU9dGhpcy5wYWdlczt0aGlzLnBhZ2VzPW51bGw7cmV0dXJuIGV9c2VyaWFsaXplRGF0YShlKXtyZXR1cm4gdGhpcy5kYXRhSGFuZGxlci5zZXJpYWxpemUoZSl9c3RhdGljIF9jcmVhdGVEb2N1bWVudChlKXtyZXR1cm4gZVsiL3hkcDp4ZHAiXT9PYmplY3QudmFsdWVzKGUpLmpvaW4oIiIpOmVbInhkcDp4ZHAiXX1zdGF0aWMgZ2V0UmljaFRleHRBc0h0bWwoZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7bGV0IHQ9bmV3IFhGQVBhcnNlcihYaHRtbE5hbWVzcGFjZSwhMCkucGFyc2UoZSk7aWYoIVsiYm9keSIsInhodG1sIl0uaW5jbHVkZXModFtIc10pKXtjb25zdCBlPVhodG1sTmFtZXNwYWNlLmJvZHkoe30pO2VbWHJdKHQpO3Q9ZX1jb25zdCBpPXRbYW5dKCk7aWYoIWkuc3VjY2VzcylyZXR1cm4gbnVsbDtjb25zdHtodG1sOmF9PWkse2F0dHJpYnV0ZXM6cn09YTtpZihyKXtyLmNsYXNzJiYoci5jbGFzcz1yLmNsYXNzLmZpbHRlcigoZT0+IWUuc3RhcnRzV2l0aCgieGZhIikpKSk7ci5kaXI9ImF1dG8ifXJldHVybntodG1sOmEsc3RyOnRbZW5dKCl9fWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIG9mIHJpY2ggdGV4dDogJHtlfWApfXJldHVybiBudWxsfX1jbGFzcyBBbm5vdGF0aW9uRmFjdG9yeXtzdGF0aWMgY3JlYXRlR2xvYmFscyhlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2UuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKSxlLmVuc3VyZURvYygieGZhRGF0YXNldHMiKSxlLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IiksZS5lbnN1cmVDYXRhbG9nKCJiYXNlVXJsIiksZS5lbnN1cmVDYXRhbG9nKCJhdHRhY2htZW50cyIpXSkudGhlbigoKFt0LGksYSxyLHNdKT0+KHtwZGZNYW5hZ2VyOmUsYWNyb0Zvcm06dCBpbnN0YW5jZW9mIERpY3Q/dDpEaWN0LmVtcHR5LHhmYURhdGFzZXRzOmksc3RydWN0VHJlZVJvb3Q6YSxiYXNlVXJsOnIsYXR0YWNobWVudHM6c30pKSwoZT0+e3dhcm4oYGNyZWF0ZUdsb2JhbHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKX1zdGF0aWMgYXN5bmMgY3JlYXRlKGUsdCxpLGEscixzKXtjb25zdCBuPXI/YXdhaXQgdGhpcy5fZ2V0UGFnZUluZGV4KGUsdCxpLnBkZk1hbmFnZXIpOm51bGw7cmV0dXJuIGkucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX2NyZWF0ZSIsW2UsdCxpLGEscixuLHNdKX1zdGF0aWMgX2NyZWF0ZShlLHQsaSxhLHI9ITEscz1udWxsLG49bnVsbCl7Y29uc3Qgbz1lLmZldGNoSWZSZWYodCk7aWYoIShvIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0e2Fjcm9Gb3JtOmcscGRmTWFuYWdlcjpjfT1pLGg9dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7YS5jcmVhdGVPYmpJZCgpfWA7bGV0IGw9by5nZXQoIlN1YnR5cGUiKTtsPWwgaW5zdGFuY2VvZiBOYW1lP2wubmFtZTpudWxsO2NvbnN0IEM9e3hyZWY6ZSxyZWY6dCxkaWN0Om8sc3VidHlwZTpsLGlkOmgsYW5ub3RhdGlvbkdsb2JhbHM6aSxjb2xsZWN0RmllbGRzOnIsbmVlZEFwcGVhcmFuY2VzOiFyJiYhMD09PWcuZ2V0KCJOZWVkQXBwZWFyYW5jZXMiKSxwYWdlSW5kZXg6cyxldmFsdWF0b3JPcHRpb25zOmMuZXZhbHVhdG9yT3B0aW9ucyxwYWdlUmVmOm59O3N3aXRjaChsKXtjYXNlIkxpbmsiOnJldHVybiBuZXcgTGlua0Fubm90YXRpb24oQyk7Y2FzZSJUZXh0IjpyZXR1cm4gbmV3IFRleHRBbm5vdGF0aW9uKEMpO2Nhc2UiV2lkZ2V0IjpsZXQgZT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0Om8sa2V5OiJGVCJ9KTtlPWUgaW5zdGFuY2VvZiBOYW1lP2UubmFtZTpudWxsO3N3aXRjaChlKXtjYXNlIlR4IjpyZXR1cm4gbmV3IFRleHRXaWRnZXRBbm5vdGF0aW9uKEMpO2Nhc2UiQnRuIjpyZXR1cm4gbmV3IEJ1dHRvbldpZGdldEFubm90YXRpb24oQyk7Y2FzZSJDaCI6cmV0dXJuIG5ldyBDaG9pY2VXaWRnZXRBbm5vdGF0aW9uKEMpO2Nhc2UiU2lnIjpyZXR1cm4gbmV3IFNpZ25hdHVyZVdpZGdldEFubm90YXRpb24oQyl9d2FybihgVW5pbXBsZW1lbnRlZCB3aWRnZXQgZmllbGQgdHlwZSAiJHtlfSIsIGZhbGxpbmcgYmFjayB0byBiYXNlIGZpZWxkIHR5cGUuYCk7cmV0dXJuIG5ldyBXaWRnZXRBbm5vdGF0aW9uKEMpO2Nhc2UiUG9wdXAiOnJldHVybiBuZXcgUG9wdXBBbm5vdGF0aW9uKEMpO2Nhc2UiRnJlZVRleHQiOnJldHVybiBuZXcgRnJlZVRleHRBbm5vdGF0aW9uKEMpO2Nhc2UiTGluZSI6cmV0dXJuIG5ldyBMaW5lQW5ub3RhdGlvbihDKTtjYXNlIlNxdWFyZSI6cmV0dXJuIG5ldyBTcXVhcmVBbm5vdGF0aW9uKEMpO2Nhc2UiQ2lyY2xlIjpyZXR1cm4gbmV3IENpcmNsZUFubm90YXRpb24oQyk7Y2FzZSJQb2x5TGluZSI6cmV0dXJuIG5ldyBQb2x5bGluZUFubm90YXRpb24oQyk7Y2FzZSJQb2x5Z29uIjpyZXR1cm4gbmV3IFBvbHlnb25Bbm5vdGF0aW9uKEMpO2Nhc2UiQ2FyZXQiOnJldHVybiBuZXcgQ2FyZXRBbm5vdGF0aW9uKEMpO2Nhc2UiSW5rIjpyZXR1cm4gbmV3IElua0Fubm90YXRpb24oQyk7Y2FzZSJIaWdobGlnaHQiOnJldHVybiBuZXcgSGlnaGxpZ2h0QW5ub3RhdGlvbihDKTtjYXNlIlVuZGVybGluZSI6cmV0dXJuIG5ldyBVbmRlcmxpbmVBbm5vdGF0aW9uKEMpO2Nhc2UiU3F1aWdnbHkiOnJldHVybiBuZXcgU3F1aWdnbHlBbm5vdGF0aW9uKEMpO2Nhc2UiU3RyaWtlT3V0IjpyZXR1cm4gbmV3IFN0cmlrZU91dEFubm90YXRpb24oQyk7Y2FzZSJTdGFtcCI6cmV0dXJuIG5ldyBTdGFtcEFubm90YXRpb24oQyk7Y2FzZSJGaWxlQXR0YWNobWVudCI6cmV0dXJuIG5ldyBGaWxlQXR0YWNobWVudEFubm90YXRpb24oQyk7ZGVmYXVsdDpyfHx3YXJuKGw/YFVuaW1wbGVtZW50ZWQgYW5ub3RhdGlvbiB0eXBlICIke2x9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgYW5ub3RhdGlvbi5gOiJBbm5vdGF0aW9uIGlzIG1pc3NpbmcgdGhlIHJlcXVpcmVkIC9TdWJ0eXBlLiIpO3JldHVybiBuZXcgQW5ub3RhdGlvbihDKX19c3RhdGljIGFzeW5jIF9nZXRQYWdlSW5kZXgoZSx0LGkpe3RyeXtjb25zdCBhPWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybi0xO2NvbnN0IHI9YS5nZXRSYXcoIlAiKTtpZihyIGluc3RhbmNlb2YgUmVmKXRyeXtyZXR1cm4gYXdhaXQgaS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFtyXSl9Y2F0Y2goZSl7aW5mbyhgX2dldFBhZ2VJbmRleCAtLSBub3QgYSB2YWxpZCBwYWdlIHJlZmVyZW5jZTogIiR7ZX0iLmApfWlmKGEuaGFzKCJLaWRzIikpcmV0dXJuLTE7Y29uc3Qgcz1hd2FpdCBpLmVuc3VyZURvYygibnVtUGFnZXMiKTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCBhPWF3YWl0IGkuZ2V0UGFnZShlKSxyPWF3YWl0IGkuZW5zdXJlKGEsImFubm90YXRpb25zIik7Zm9yKGNvbnN0IGkgb2YgcilpZihpIGluc3RhbmNlb2YgUmVmJiZpc1JlZnNFcXVhbChpLHQpKXJldHVybiBlfX1jYXRjaChlKXt3YXJuKGBfZ2V0UGFnZUluZGV4OiAiJHtlfSIuYCl9cmV0dXJuLTF9c3RhdGljIGdlbmVyYXRlSW1hZ2VzKGUsdCxpKXtpZighaSl7d2FybigiZ2VuZXJhdGVJbWFnZXM6IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBjYW5ub3Qgc2F2ZSBvciBwcmludCBzb21lIGFubm90YXRpb25zIHdpdGggaW1hZ2VzLiIpO3JldHVybiBudWxsfWxldCBhO2Zvcihjb25zdHtiaXRtYXBJZDppLGJpdG1hcDpyfW9mIGUpaWYocil7YXx8PW5ldyBNYXA7YS5zZXQoaSxTdGFtcEFubm90YXRpb24uY3JlYXRlSW1hZ2Uocix0KSl9cmV0dXJuIGF9c3RhdGljIGFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhKXtjb25zdCByPWUueHJlZjtsZXQgcztjb25zdCBuPVtdLG89W10se2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmd9PWUub3B0aW9ucztmb3IoY29uc3QgYyBvZiBpKWlmKCFjLmRlbGV0ZWQpc3dpdGNoKGMuYW5ub3RhdGlvblR5cGUpe2Nhc2UgRTppZighcyl7Y29uc3QgZT1uZXcgRGljdChyKTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO2NvbnN0IHQ9W107cz1yLmdldE5ld1RlbXBvcmFyeVJlZigpO2F3YWl0IHdyaXRlT2JqZWN0KHMsZSx0LHIpO24ucHVzaCh7cmVmOnMsZGF0YTp0LmpvaW4oIiIpfSl9by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHIsYyxuLHtldmFsdWF0b3I6ZSx0YXNrOnQsYmFzZUZvbnRSZWY6c30pKTticmVhaztjYXNlIHU6Yy5xdWFkUG9pbnRzP28ucHVzaChIaWdobGlnaHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocixjLG4pKTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKHIsYyxuKSk7YnJlYWs7Y2FzZSBmOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24ocixjLG4pKTticmVhaztjYXNlIGQ6aWYoIWcpYnJlYWs7Y29uc3QgaT1hd2FpdCBhLmdldChjLmJpdG1hcElkKTtpZihpLmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PWksYT1bXTtpZih0KXtjb25zdCBpPXIuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7YXdhaXQgd3JpdGVPYmplY3QoaSx0LGEscik7bi5wdXNoKHtyZWY6aSxkYXRhOmEuam9pbigiIil9KTtlLmRpY3Quc2V0KCJTTWFzayIsaSk7YS5sZW5ndGg9MH1jb25zdCBzPWkuaW1hZ2VSZWY9ci5nZXROZXdUZW1wb3JhcnlSZWYoKTthd2FpdCB3cml0ZU9iamVjdChzLGUsYSxyKTtuLnB1c2goe3JlZjpzLGRhdGE6YS5qb2luKCIiKX0pO2kuaW1hZ2VTdHJlYW09aS5zbWFza1N0cmVhbT1udWxsfW8ucHVzaChTdGFtcEFubm90YXRpb24uY3JlYXRlTmV3QW5ub3RhdGlvbihyLGMsbix7aW1hZ2U6aX0pKX1yZXR1cm57YW5ub3RhdGlvbnM6YXdhaXQgUHJvbWlzZS5hbGwobyksZGVwZW5kZW5jaWVzOm59fXN0YXRpYyBhc3luYyBwcmludE5ld0Fubm90YXRpb25zKGUsdCxpLGEscil7aWYoIWEpcmV0dXJuIG51bGw7Y29uc3R7b3B0aW9uczpzLHhyZWY6bn09dCxvPVtdO2Zvcihjb25zdCBnIG9mIGEpaWYoIWcuZGVsZXRlZClzd2l0Y2goZy5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBFOm8ucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsbixnLHtldmFsdWF0b3I6dCx0YXNrOmksZXZhbHVhdG9yT3B0aW9uczpzfSkpO2JyZWFrO2Nhc2UgdTpnLnF1YWRQb2ludHM/by5wdXNoKEhpZ2hsaWdodEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsbixnLHtldmFsdWF0b3JPcHRpb25zOnN9KSk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsbixnLHtldmFsdWF0b3JPcHRpb25zOnN9KSk7YnJlYWs7Y2FzZSBmOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7ZXZhbHVhdG9yT3B0aW9uczpzfSkpO2JyZWFrO2Nhc2UgZDppZighcy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZClicmVhaztjb25zdCBhPWF3YWl0IHIuZ2V0KGcuYml0bWFwSWQpO2lmKGEuaW1hZ2VTdHJlYW0pe2NvbnN0e2ltYWdlU3RyZWFtOmUsc21hc2tTdHJlYW06dH09YTt0JiZlLmRpY3Quc2V0KCJTTWFzayIsdCk7YS5pbWFnZVJlZj1uZXcgSnBlZ1N0cmVhbShlLGUubGVuZ3RoKTthLmltYWdlU3RyZWFtPWEuc21hc2tTdHJlYW09bnVsbH1vLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLG4sZyx7aW1hZ2U6YSxldmFsdWF0b3JPcHRpb25zOnN9KSl9cmV0dXJuIFByb21pc2UuYWxsKG8pfX1mdW5jdGlvbiBnZXRSZ2JDb2xvcihlLHQ9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gdDtjb25zdCBpPXR8fG5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbnVsbDtjYXNlIDE6Q29sb3JTcGFjZS5zaW5nbGV0b25zLmdyYXkuZ2V0UmdiSXRlbShlLDAsaSwwKTtyZXR1cm4gaTtjYXNlIDM6Q29sb3JTcGFjZS5zaW5nbGV0b25zLnJnYi5nZXRSZ2JJdGVtKGUsMCxpLDApO3JldHVybiBpO2Nhc2UgNDpDb2xvclNwYWNlLnNpbmdsZXRvbnMuY215ay5nZXRSZ2JJdGVtKGUsMCxpLDApO3JldHVybiBpO2RlZmF1bHQ6cmV0dXJuIHR9fWZ1bmN0aW9uIGdldFBkZkNvbG9yQXJyYXkoZSl7cmV0dXJuIEFycmF5LmZyb20oZSwoZT0+ZS8yNTUpKX1mdW5jdGlvbiBnZXRRdWFkUG9pbnRzKGUsdCl7Y29uc3QgaT1lLmdldEFycmF5KCJRdWFkUG9pbnRzIik7aWYoIWlzTnVtYmVyQXJyYXkoaSxudWxsKXx8MD09PWkubGVuZ3RofHxpLmxlbmd0aCU4PjApcmV0dXJuIG51bGw7Y29uc3QgYT1bXTtmb3IobGV0IGU9MCxyPWkubGVuZ3RoLzg7ZTxyO2UrKyl7bGV0IHI9MS8wLHM9LTEvMCxuPTEvMCxvPS0xLzA7Zm9yKGxldCB0PTgqZSxhPTgqZSs4O3Q8YTt0Kz0yKXtjb25zdCBlPWlbdF0sYT1pW3QrMV07cj1NYXRoLm1pbihlLHIpO3M9TWF0aC5tYXgoZSxzKTtuPU1hdGgubWluKGEsbik7bz1NYXRoLm1heChhLG8pfWlmKG51bGwhPT10JiYocjx0WzBdfHxzPnRbMl18fG48dFsxXXx8bz50WzNdKSlyZXR1cm4gbnVsbDthLnB1c2goW3t4OnIseTpvfSx7eDpzLHk6b30se3g6cix5Om59LHt4OnMseTpufV0pfXJldHVybiBhfWZ1bmN0aW9uIGdldFRyYW5zZm9ybU1hdHJpeChlLHQsaSl7Y29uc3RbYSxyLHMsbl09VXRpbC5nZXRBeGlhbEFsaWduZWRCb3VuZGluZ0JveCh0LGkpO2lmKGE9PT1zfHxyPT09bilyZXR1cm5bMSwwLDAsMSxlWzBdLGVbMV1dO2NvbnN0IG89KGVbMl0tZVswXSkvKHMtYSksZz0oZVszXS1lWzFdKS8obi1yKTtyZXR1cm5bbywwLDAsZyxlWzBdLWEqbyxlWzFdLXIqZ119Y2xhc3MgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtjb25zdHtkaWN0OnQseHJlZjppLGFubm90YXRpb25HbG9iYWxzOmF9PWU7dGhpcy5zZXRUaXRsZSh0LmdldCgiVCIpKTt0aGlzLnNldENvbnRlbnRzKHQuZ2V0KCJDb250ZW50cyIpKTt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUodC5nZXQoIk0iKSk7dGhpcy5zZXRGbGFncyh0LmdldCgiRiIpKTt0aGlzLnNldFJlY3RhbmdsZSh0LmdldEFycmF5KCJSZWN0IikpO3RoaXMuc2V0Q29sb3IodC5nZXRBcnJheSgiQyIpKTt0aGlzLnNldEJvcmRlclN0eWxlKHQpO3RoaXMuc2V0QXBwZWFyYW5jZSh0KTt0aGlzLnNldE9wdGlvbmFsQ29udGVudCh0KTtjb25zdCByPXQuZ2V0KCJNSyIpO3RoaXMuc2V0Qm9yZGVyQW5kQmFja2dyb3VuZENvbG9ycyhyKTt0aGlzLnNldFJvdGF0aW9uKHIsdCk7dGhpcy5yZWY9ZS5yZWYgaW5zdGFuY2VvZiBSZWY/ZS5yZWY6bnVsbDt0aGlzLl9zdHJlYW1zPVtdO3RoaXMuYXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSk7Y29uc3Qgcz0hISh0aGlzLmZsYWdzJkFBKSxuPSEhKHRoaXMuZmxhZ3MmZUEpO2lmKGEuc3RydWN0VHJlZVJvb3Qpe2xldCBpPXQuZ2V0KCJTdHJ1Y3RQYXJlbnQiKTtpPU51bWJlci5pc0ludGVnZXIoaSkmJmk+PTA/aTotMTthLnN0cnVjdFRyZWVSb290LmFkZEFubm90YXRpb25JZFRvUGFnZShlLnBhZ2VSZWYsaSl9dGhpcy5kYXRhPXthbm5vdGF0aW9uRmxhZ3M6dGhpcy5mbGFncyxib3JkZXJTdHlsZTp0aGlzLmJvcmRlclN0eWxlLGNvbG9yOnRoaXMuY29sb3IsYmFja2dyb3VuZENvbG9yOnRoaXMuYmFja2dyb3VuZENvbG9yLGJvcmRlckNvbG9yOnRoaXMuYm9yZGVyQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixjb250ZW50c09iajp0aGlzLl9jb250ZW50cyxoYXNBcHBlYXJhbmNlOiEhdGhpcy5hcHBlYXJhbmNlLGlkOmUuaWQsbW9kaWZpY2F0aW9uRGF0ZTp0aGlzLm1vZGlmaWNhdGlvbkRhdGUscmVjdDp0aGlzLnJlY3RhbmdsZSxzdWJ0eXBlOmUuc3VidHlwZSxoYXNPd25DYW52YXM6ITEsbm9Sb3RhdGU6ISEodGhpcy5mbGFncyZ6KSxub0hUTUw6cyYmbn07aWYoZS5jb2xsZWN0RmllbGRzKXtjb25zdCBhPXQuZ2V0KCJLaWRzIik7aWYoQXJyYXkuaXNBcnJheShhKSl7Y29uc3QgZT1bXTtmb3IoY29uc3QgdCBvZiBhKXQgaW5zdGFuY2VvZiBSZWYmJmUucHVzaCh0LnRvU3RyaW5nKCkpOzAhPT1lLmxlbmd0aCYmKHRoaXMuZGF0YS5raWRJZHM9ZSl9dGhpcy5kYXRhLmFjdGlvbnM9Y29sbGVjdEFjdGlvbnMoaSx0LHVBKTt0aGlzLmRhdGEuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KTt0aGlzLmRhdGEucGFnZUluZGV4PWUucGFnZUluZGV4fXRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1faXNWaWV3YWJsZShlKXtyZXR1cm4hdGhpcy5faGFzRmxhZyhlLFopJiYhdGhpcy5faGFzRmxhZyhlLCQpfV9pc1ByaW50YWJsZShlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyhlLF8pJiYhdGhpcy5faGFzRmxhZyhlLFYpJiYhdGhpcy5faGFzRmxhZyhlLFopfW11c3RCZVZpZXdlZChlLHQpe2NvbnN0IGk9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/Lm5vVmlldztyZXR1cm4gdm9pZCAwIT09aT8haTp0aGlzLnZpZXdhYmxlJiYhdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLFYpfW11c3RCZVByaW50ZWQoZSl7Y29uc3QgdD1lPy5nZXQodGhpcy5kYXRhLmlkKT8ubm9QcmludDtyZXR1cm4gdm9pZCAwIT09dD8hdDp0aGlzLnByaW50YWJsZX1nZXQgdmlld2FibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMD09PXRoaXMuZmxhZ3N8fHRoaXMuX2lzVmlld2FibGUodGhpcy5mbGFncykpfWdldCBwcmludGFibGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZGF0YS5xdWFkUG9pbnRzJiYoMCE9PXRoaXMuZmxhZ3MmJnRoaXMuX2lzUHJpbnRhYmxlKHRoaXMuZmxhZ3MpKX1fcGFyc2VTdHJpbmdIZWxwZXIoZSl7Y29uc3QgdD0ic3RyaW5nIj09dHlwZW9mIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6IiI7cmV0dXJue3N0cjp0LGRpcjp0JiYicnRsIj09PWJpZGkodCkuZGlyPyJydGwiOiJsdHIifX1zZXREZWZhdWx0QXBwZWFyYW5jZShlKXtjb25zdHtkaWN0OnQsYW5ub3RhdGlvbkdsb2JhbHM6aX09ZSxhPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRBIn0pfHxpLmFjcm9Gb3JtLmdldCgiREEiKTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0ic3RyaW5nIj09dHlwZW9mIGE/YToiIjt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UpfXNldFRpdGxlKGUpe3RoaXMuX3RpdGxlPXRoaXMuX3BhcnNlU3RyaW5nSGVscGVyKGUpfXNldENvbnRlbnRzKGUpe3RoaXMuX2NvbnRlbnRzPXRoaXMuX3BhcnNlU3RyaW5nSGVscGVyKGUpfXNldE1vZGlmaWNhdGlvbkRhdGUoZSl7dGhpcy5tb2RpZmljYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9c2V0RmxhZ3MoZSl7dGhpcy5mbGFncz1OdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPjA/ZTowO3RoaXMuZmxhZ3MmWiYmIkFubm90YXRpb24iIT09dGhpcy5jb25zdHJ1Y3Rvci5uYW1lJiYodGhpcy5mbGFnc149Wil9aGFzRmxhZyhlKXtyZXR1cm4gdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLGUpfXNldFJlY3RhbmdsZShlKXt0aGlzLnJlY3RhbmdsZT1sb29rdXBOb3JtYWxSZWN0KGUsWzAsMCwwLDBdKX1zZXRDb2xvcihlKXt0aGlzLmNvbG9yPWdldFJnYkNvbG9yKGUpfXNldExpbmVFbmRpbmdzKGUpe3RoaXMubGluZUVuZGluZ3M9WyJOb25lIiwiTm9uZSJdO2lmKEFycmF5LmlzQXJyYXkoZSkmJjI9PT1lLmxlbmd0aClmb3IobGV0IHQ9MDt0PDI7dCsrKXtjb25zdCBpPWVbdF07aWYoaSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGkubmFtZSl7Y2FzZSJOb25lIjpjb250aW51ZTtjYXNlIlNxdWFyZSI6Y2FzZSJDaXJjbGUiOmNhc2UiRGlhbW9uZCI6Y2FzZSJPcGVuQXJyb3ciOmNhc2UiQ2xvc2VkQXJyb3ciOmNhc2UiQnV0dCI6Y2FzZSJST3BlbkFycm93IjpjYXNlIlJDbG9zZWRBcnJvdyI6Y2FzZSJTbGFzaCI6dGhpcy5saW5lRW5kaW5nc1t0XT1pLm5hbWU7Y29udGludWV9d2FybihgSWdub3JpbmcgaW52YWxpZCBsaW5lRW5kaW5nOiAke2l9YCl9fXNldFJvdGF0aW9uKGUsdCl7dGhpcy5yb3RhdGlvbj0wO2xldCBpPWUgaW5zdGFuY2VvZiBEaWN0P2UuZ2V0KCJSIil8fDA6dC5nZXQoIlJvdGF0ZSIpfHwwO2lmKE51bWJlci5pc0ludGVnZXIoaSkmJjAhPT1pKXtpJT0zNjA7aTwwJiYoaSs9MzYwKTtpJTkwPT0wJiYodGhpcy5yb3RhdGlvbj1pKX19c2V0Qm9yZGVyQW5kQmFja2dyb3VuZENvbG9ycyhlKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy5ib3JkZXJDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCQyIpLG51bGwpO3RoaXMuYmFja2dyb3VuZENvbG9yPWdldFJnYkNvbG9yKGUuZ2V0QXJyYXkoIkJHIiksbnVsbCl9ZWxzZSB0aGlzLmJvcmRlckNvbG9yPXRoaXMuYmFja2dyb3VuZENvbG9yPW51bGx9c2V0Qm9yZGVyU3R5bGUoZSl7dGhpcy5ib3JkZXJTdHlsZT1uZXcgQW5ub3RhdGlvbkJvcmRlclN0eWxlO2lmKGUgaW5zdGFuY2VvZiBEaWN0KWlmKGUuaGFzKCJCUyIpKXtjb25zdCB0PWUuZ2V0KCJCUyIpO2lmKHQgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXQuZ2V0KCJUeXBlIik7aWYoIWV8fGlzTmFtZShlLCJCb3JkZXIiKSl7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0LmdldCgiVyIpLHRoaXMucmVjdGFuZ2xlKTt0aGlzLmJvcmRlclN0eWxlLnNldFN0eWxlKHQuZ2V0KCJTIikpO3RoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHQuZ2V0QXJyYXkoIkQiKSl9fX1lbHNlIGlmKGUuaGFzKCJCb3JkZXIiKSl7Y29uc3QgdD1lLmdldEFycmF5KCJCb3JkZXIiKTtpZihBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD49Myl7dGhpcy5ib3JkZXJTdHlsZS5zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKHRbMF0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0VmVydGljYWxDb3JuZXJSYWRpdXModFsxXSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRXaWR0aCh0WzJdLHRoaXMucmVjdGFuZ2xlKTs0PT09dC5sZW5ndGgmJnRoaXMuYm9yZGVyU3R5bGUuc2V0RGFzaEFycmF5KHRbM10sITApfX1lbHNlIHRoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgoMCl9c2V0QXBwZWFyYW5jZShlKXt0aGlzLmFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PWUuZ2V0KCJBUCIpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBpPXQuZ2V0KCJOIik7aWYoaSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe3RoaXMuYXBwZWFyYW5jZT1pO3JldHVybn1pZighKGkgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgYT1lLmdldCgiQVMiKTtpZighKGEgaW5zdGFuY2VvZiBOYW1lJiZpLmhhcyhhLm5hbWUpKSlyZXR1cm47Y29uc3Qgcj1pLmdldChhLm5hbWUpO3IgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYodGhpcy5hcHBlYXJhbmNlPXIpfXNldE9wdGlvbmFsQ29udGVudChlKXt0aGlzLm9jPW51bGw7Y29uc3QgdD1lLmdldCgiT0MiKTt0IGluc3RhbmNlb2YgTmFtZT93YXJuKCJzZXRPcHRpb25hbENvbnRlbnQ6IFN1cHBvcnQgZm9yIC9OYW1lLWVudHJ5IGlzIG5vdCBpbXBsZW1lbnRlZC4iKTp0IGluc3RhbmNlb2YgRGljdCYmKHRoaXMub2M9dCl9bG9hZFJlc291cmNlcyhlLHQpe3JldHVybiB0LmRpY3QuZ2V0QXN5bmMoIlJlc291cmNlcyIpLnRoZW4oKHQ9PntpZighdClyZXR1cm47cmV0dXJuIG5ldyBPYmplY3RMb2FkZXIodCxlLHQueHJlZikubG9hZCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KSl9KSl9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsaSxhLHIscyl7Y29uc3R7aGFzT3duQ2FudmFzOm4saWQ6ZyxyZWN0OmN9PXRoaXMuZGF0YTtsZXQgaD10aGlzLmFwcGVhcmFuY2U7Y29uc3QgbD0hIShuJiZhJm8pO2lmKGwmJihjWzBdPT09Y1syXXx8Y1sxXT09PWNbM10pKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSExO3JldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9fWlmKCFoKXtpZighbClyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfTtoPW5ldyBTdHJpbmdTdHJlYW0oIiIpO2guZGljdD1uZXcgRGljdH1jb25zdCBDPWguZGljdCxRPWF3YWl0IHRoaXMubG9hZFJlc291cmNlcyhbIkV4dEdTdGF0ZSIsIkNvbG9yU3BhY2UiLCJQYXR0ZXJuIiwiU2hhZGluZyIsIlhPYmplY3QiLCJGb250Il0saCksRT1sb29rdXBSZWN0KEMuZ2V0QXJyYXkoIkJCb3giKSxbMCwwLDEsMV0pLHU9bG9va3VwTWF0cml4KEMuZ2V0QXJyYXkoIk1hdHJpeCIpLHQpLGQ9Z2V0VHJhbnNmb3JtTWF0cml4KGMsRSx1KSxmPW5ldyBPcGVyYXRvckxpc3Q7bGV0IHA7dGhpcy5vYyYmKHA9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1wJiZmLmFkZE9wKEhlLFsiT0MiLHBdKTtmLmFkZE9wKFdlLFtnLGMsZCx1LGxdKTthd2FpdCBlLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmgsdGFzazppLHJlc291cmNlczpRLG9wZXJhdG9yTGlzdDpmLGZhbGxiYWNrRm9udERpY3Q6dGhpcy5fZmFsbGJhY2tGb250RGljdH0pO2YuYWRkT3AoamUsW10pO3ZvaWQgMCE9PXAmJmYuYWRkT3AodmUsW10pO3RoaXMucmVzZXQoKTtyZXR1cm57b3BMaXN0OmYsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOmx9fWFzeW5jIHNhdmUoZSx0LGkpe3JldHVybiBudWxsfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiExfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQsaSl7aWYoIXRoaXMuYXBwZWFyYW5jZSlyZXR1cm47Y29uc3QgYT1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSx0aGlzLmFwcGVhcmFuY2UpLHI9W10scz1bXTtsZXQgbj1udWxsO2NvbnN0IG89e2Rlc2lyZWRTaXplOk1hdGguSW5maW5pdHkscmVhZHk6ITAsZW5xdWV1ZShlLHQpe2Zvcihjb25zdCB0IG9mIGUuaXRlbXMpaWYodm9pZCAwIT09dC5zdHIpe258fD10LnRyYW5zZm9ybS5zbGljZSgtMik7cy5wdXNoKHQuc3RyKTtpZih0Lmhhc0VPTCl7ci5wdXNoKHMuam9pbigiIikudHJpbUVuZCgpKTtzLmxlbmd0aD0wfX19fTthd2FpdCBlLmdldFRleHRDb250ZW50KHtzdHJlYW06dGhpcy5hcHBlYXJhbmNlLHRhc2s6dCxyZXNvdXJjZXM6YSxpbmNsdWRlTWFya2VkQ29udGVudDohMCxrZWVwV2hpdGVTcGFjZTohMCxzaW5rOm8sdmlld0JveDppfSk7dGhpcy5yZXNldCgpO3MubGVuZ3RoJiZyLnB1c2gocy5qb2luKCIiKS50cmltRW5kKCkpO2lmKHIubGVuZ3RoPjF8fHJbMF0pe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlLmRpY3QsdD1sb29rdXBSZWN0KGUuZ2V0QXJyYXkoIkJCb3giKSxudWxsKSxpPWxvb2t1cE1hdHJpeChlLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KG4sdCxpKTt0aGlzLmRhdGEudGV4dENvbnRlbnQ9cn19X3RyYW5zZm9ybVBvaW50KGUsdCxpKXtjb25zdHtyZWN0OmF9PXRoaXMuZGF0YTt0fHw9WzAsMCwxLDFdO2l8fD1bMSwwLDAsMSwwLDBdO2NvbnN0IHI9Z2V0VHJhbnNmb3JtTWF0cml4KGEsdCxpKTtyWzRdLT1hWzBdO3JbNV0tPWFbMV07ZT1VdGlsLmFwcGx5VHJhbnNmb3JtKGUscik7cmV0dXJuIFV0aWwuYXBwbHlUcmFuc2Zvcm0oZSxpKX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiB0aGlzLmRhdGEua2lkSWRzP3tpZDp0aGlzLmRhdGEuaWQsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHR5cGU6IiIsa2lkSWRzOnRoaXMuZGF0YS5raWRJZHMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHJvdGF0aW9uOnRoaXMucm90YXRpb259Om51bGx9cmVzZXQoKXtmb3IoY29uc3QgZSBvZiB0aGlzLl9zdHJlYW1zKWUucmVzZXQoKX1fY29uc3RydWN0RmllbGROYW1lKGUpe2lmKCFlLmhhcygiVCIpJiYhZS5oYXMoIlBhcmVudCIpKXt3YXJuKCJVbmtub3duIGZpZWxkIG5hbWUsIGZhbGxpbmcgYmFjayB0byBlbXB0eSBmaWVsZCBuYW1lLiIpO3JldHVybiIifWlmKCFlLmhhcygiUGFyZW50IikpcmV0dXJuIHN0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJUIikpO2NvbnN0IHQ9W107ZS5oYXMoIlQiKSYmdC51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJUIikpKTtsZXQgaT1lO2NvbnN0IGE9bmV3IFJlZlNldDtlLm9iaklkJiZhLnB1dChlLm9iaklkKTtmb3IoO2kuaGFzKCJQYXJlbnQiKTspe2k9aS5nZXQoIlBhcmVudCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpfHxpLm9iaklkJiZhLmhhcyhpLm9iaklkKSlicmVhaztpLm9iaklkJiZhLnB1dChpLm9iaklkKTtpLmhhcygiVCIpJiZ0LnVuc2hpZnQoc3RyaW5nVG9QREZTdHJpbmcoaS5nZXQoIlQiKSkpfXJldHVybiB0LmpvaW4oIi4iKX19Y2xhc3MgQW5ub3RhdGlvbkJvcmRlclN0eWxle2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0xO3RoaXMuc3R5bGU9bEE7dGhpcy5kYXNoQXJyYXk9WzNdO3RoaXMuaG9yaXpvbnRhbENvcm5lclJhZGl1cz0wO3RoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9MH1zZXRXaWR0aChlLHQ9WzAsMCwwLDBdKXtpZihlIGluc3RhbmNlb2YgTmFtZSl0aGlzLndpZHRoPTA7ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGUpe2lmKGU+MCl7Y29uc3QgaT0odFsyXS10WzBdKS8yLGE9KHRbM10tdFsxXSkvMjtpZihpPjAmJmE+MCYmKGU+aXx8ZT5hKSl7d2FybihgQW5ub3RhdGlvbkJvcmRlclN0eWxlLnNldFdpZHRoIC0gaWdub3Jpbmcgd2lkdGg6ICR7ZX1gKTtlPTF9fXRoaXMud2lkdGg9ZX19c2V0U3R5bGUoZSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKGUubmFtZSl7Y2FzZSJTIjp0aGlzLnN0eWxlPWxBO2JyZWFrO2Nhc2UiRCI6dGhpcy5zdHlsZT1DQTticmVhaztjYXNlIkIiOnRoaXMuc3R5bGU9QkE7YnJlYWs7Y2FzZSJJIjp0aGlzLnN0eWxlPVFBO2JyZWFrO2Nhc2UiVSI6dGhpcy5zdHlsZT1FQX19c2V0RGFzaEFycmF5KGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7bGV0IGk9ITAsYT0hMDtmb3IoY29uc3QgdCBvZiBlKXtpZighKCt0Pj0wKSl7aT0hMTticmVha310PjAmJihhPSExKX1pZigwPT09ZS5sZW5ndGh8fGkmJiFhKXt0aGlzLmRhc2hBcnJheT1lO3QmJnRoaXMuc2V0U3R5bGUoTmFtZS5nZXQoIkQiKSl9ZWxzZSB0aGlzLndpZHRoPTB9ZWxzZSBlJiYodGhpcy53aWR0aD0wKX1zZXRIb3Jpem9udGFsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9ZSl9c2V0VmVydGljYWxDb3JuZXJSYWRpdXMoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHRoaXMudmVydGljYWxDb3JuZXJSYWRpdXM9ZSl9fWNsYXNzIE1hcmt1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTtpZih0LmhhcygiSVJUIikpe2NvbnN0IGU9dC5nZXRSYXcoIklSVCIpO3RoaXMuZGF0YS5pblJlcGx5VG89ZSBpbnN0YW5jZW9mIFJlZj9lLnRvU3RyaW5nKCk6bnVsbDtjb25zdCBpPXQuZ2V0KCJSVCIpO3RoaXMuZGF0YS5yZXBseVR5cGU9aSBpbnN0YW5jZW9mIE5hbWU/aS5uYW1lOlh9bGV0IGk9bnVsbDtpZih0aGlzLmRhdGEucmVwbHlUeXBlPT09ail7Y29uc3QgZT10LmdldCgiSVJUIik7dGhpcy5zZXRUaXRsZShlLmdldCgiVCIpKTt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDb250ZW50cyhlLmdldCgiQ29udGVudHMiKSk7dGhpcy5kYXRhLmNvbnRlbnRzT2JqPXRoaXMuX2NvbnRlbnRzO2lmKGUuaGFzKCJDcmVhdGlvbkRhdGUiKSl7dGhpcy5zZXRDcmVhdGlvbkRhdGUoZS5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT1udWxsO2lmKGUuaGFzKCJNIikpe3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZShlLmdldCgiTSIpKTt0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT10aGlzLm1vZGlmaWNhdGlvbkRhdGV9ZWxzZSB0aGlzLmRhdGEubW9kaWZpY2F0aW9uRGF0ZT1udWxsO2k9ZS5nZXRSYXcoIlBvcHVwIik7aWYoZS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihlLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGx9ZWxzZXt0aGlzLmRhdGEudGl0bGVPYmo9dGhpcy5fdGl0bGU7dGhpcy5zZXRDcmVhdGlvbkRhdGUodC5nZXQoIkNyZWF0aW9uRGF0ZSIpKTt0aGlzLmRhdGEuY3JlYXRpb25EYXRlPXRoaXMuY3JlYXRpb25EYXRlO2k9dC5nZXRSYXcoIlBvcHVwIik7dC5oYXMoIkMiKXx8KHRoaXMuZGF0YS5jb2xvcj1udWxsKX10aGlzLmRhdGEucG9wdXBSZWY9aSBpbnN0YW5jZW9mIFJlZj9pLnRvU3RyaW5nKCk6bnVsbDt0LmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKHQuZ2V0KCJSQyIpKSl9c2V0Q3JlYXRpb25EYXRlKGUpe3RoaXMuY3JlYXRpb25EYXRlPSJzdHJpbmciPT10eXBlb2YgZT9lOm51bGx9X3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmUsZXh0cmE6dCxzdHJva2VDb2xvcjppLGZpbGxDb2xvcjphLGJsZW5kTW9kZTpyLHN0cm9rZUFscGhhOnMsZmlsbEFscGhhOm4scG9pbnRzQ2FsbGJhY2s6b30pe2xldCBnPU51bWJlci5NQVhfVkFMVUUsYz1OdW1iZXIuTUFYX1ZBTFVFLGg9TnVtYmVyLk1JTl9WQUxVRSxsPU51bWJlci5NSU5fVkFMVUU7Y29uc3QgQz1bInEiXTt0JiZDLnB1c2godCk7aSYmQy5wdXNoKGAke2lbMF19ICR7aVsxXX0gJHtpWzJdfSBSR2ApO2EmJkMucHVzaChgJHthWzBdfSAke2FbMV19ICR7YVsyXX0gcmdgKTtsZXQgUT10aGlzLmRhdGEucXVhZFBvaW50cztRfHwoUT1bW3t4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbM119LHt4OnRoaXMucmVjdGFuZ2xlWzBdLHk6dGhpcy5yZWN0YW5nbGVbMV19LHt4OnRoaXMucmVjdGFuZ2xlWzJdLHk6dGhpcy5yZWN0YW5nbGVbMV19XV0pO2Zvcihjb25zdCBlIG9mIFEpe2NvbnN0W3QsaSxhLHJdPW8oQyxlKTtnPU1hdGgubWluKGcsdCk7aD1NYXRoLm1heChoLGkpO2M9TWF0aC5taW4oYyxhKTtsPU1hdGgubWF4KGwscil9Qy5wdXNoKCJRIik7Y29uc3QgRT1uZXcgRGljdChlKSx1PW5ldyBEaWN0KGUpO3Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtjb25zdCBkPW5ldyBTdHJpbmdTdHJlYW0oQy5qb2luKCIgIikpO2QuZGljdD11O0Uuc2V0KCJGbTAiLGQpO2NvbnN0IGY9bmV3IERpY3QoZSk7ciYmZi5zZXQoIkJNIixOYW1lLmdldChyKSk7Im51bWJlciI9PXR5cGVvZiBzJiZmLnNldCgiQ0EiLHMpOyJudW1iZXIiPT10eXBlb2YgbiYmZi5zZXQoImNhIixuKTtjb25zdCBwPW5ldyBEaWN0KGUpO3Auc2V0KCJHUzAiLGYpO2NvbnN0IG09bmV3IERpY3QoZSk7bS5zZXQoIkV4dEdTdGF0ZSIscCk7bS5zZXQoIlhPYmplY3QiLEUpO2NvbnN0IHk9bmV3IERpY3QoZSk7eS5zZXQoIlJlc291cmNlcyIsbSk7Y29uc3Qgdz10aGlzLmRhdGEucmVjdD1bZyxjLGgsbF07eS5zZXQoIkJCb3giLHcpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iKTt0aGlzLmFwcGVhcmFuY2UuZGljdD15O3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsZCl9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LGksYSl7Y29uc3Qgcj10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCkscz1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLGEpLG49W107bGV0IG87aWYocyl7Y29uc3QgYT1lLmdldE5ld1RlbXBvcmFyeVJlZigpO289dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7YXBSZWY6YX0pO2F3YWl0IHdyaXRlT2JqZWN0KGEscyxuLGUpO2kucHVzaCh7cmVmOmEsZGF0YTpuLmpvaW4oIiIpfSl9ZWxzZSBvPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse30pO051bWJlci5pc0ludGVnZXIodC5wYXJlbnRUcmVlSWQpJiZvLnNldCgiU3RydWN0UGFyZW50Iix0LnBhcmVudFRyZWVJZCk7bi5sZW5ndGg9MDthd2FpdCB3cml0ZU9iamVjdChyLG8sbixlKTtyZXR1cm57cmVmOnIsZGF0YTpuLmpvaW4oIiIpfX1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUsdCxpLGEpe2NvbnN0IHI9YXdhaXQgdGhpcy5jcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGksdCxhKSxzPXRoaXMuY3JlYXRlTmV3RGljdChpLHQse2FwOnJ9KSxuPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7ZGljdDpzLHhyZWY6dCxhbm5vdGF0aW9uR2xvYmFsczplLGV2YWx1YXRvck9wdGlvbnM6YS5ldmFsdWF0b3JPcHRpb25zfSk7aS5yZWYmJihuLnJlZj1uLnJlZlRvUmVwbGFjZT1pLnJlZik7cmV0dXJuIG59fWNsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmksYW5ub3RhdGlvbkdsb2JhbHM6YX09ZSxyPXRoaXMuZGF0YTt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ZS5uZWVkQXBwZWFyYW5jZXM7ci5hbm5vdGF0aW9uVHlwZT1XO3ZvaWQgMD09PXIuZmllbGROYW1lJiYoci5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpKTt2b2lkIDA9PT1yLmFjdGlvbnMmJihyLmFjdGlvbnM9Y29sbGVjdEFjdGlvbnMoaSx0LHVBKSk7bGV0IHM9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiViIsZ2V0QXJyYXk6ITB9KTtyLmZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHMpO2NvbnN0IG49Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRFYiLGdldEFycmF5OiEwfSk7ci5kZWZhdWx0RmllbGRWYWx1ZT10aGlzLl9kZWNvZGVGb3JtVmFsdWUobik7aWYodm9pZCAwPT09cyYmYS54ZmFEYXRhc2V0cyl7Y29uc3QgZT10aGlzLl90aXRsZS5zdHI7aWYoZSl7dGhpcy5faGFzVmFsdWVGcm9tWEZBPSEwO3IuZmllbGRWYWx1ZT1zPWEueGZhRGF0YXNldHMuZ2V0VmFsdWUoZSl9fXZvaWQgMD09PXMmJm51bGwhPT1yLmRlZmF1bHRGaWVsZFZhbHVlJiYoci5maWVsZFZhbHVlPXIuZGVmYXVsdEZpZWxkVmFsdWUpO3IuYWx0ZXJuYXRpdmVUZXh0PXN0cmluZ1RvUERGU3RyaW5nKHQuZ2V0KCJUVSIpfHwiIik7dGhpcy5zZXREZWZhdWx0QXBwZWFyYW5jZShlKTtyLmhhc0FwcGVhcmFuY2V8fD10aGlzLl9uZWVkQXBwZWFyYW5jZXMmJnZvaWQgMCE9PXIuZmllbGRWYWx1ZSYmbnVsbCE9PXIuZmllbGRWYWx1ZTtjb25zdCBvPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZUIn0pO3IuZmllbGRUeXBlPW8gaW5zdGFuY2VvZiBOYW1lP28ubmFtZTpudWxsO2NvbnN0IGc9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRFIifSksYz1hLmFjcm9Gb3JtLmdldCgiRFIiKSxoPXRoaXMuYXBwZWFyYW5jZT8uZGljdC5nZXQoIlJlc291cmNlcyIpO3RoaXMuX2ZpZWxkUmVzb3VyY2VzPXtsb2NhbFJlc291cmNlczpnLGFjcm9Gb3JtUmVzb3VyY2VzOmMsYXBwZWFyYW5jZVJlc291cmNlczpoLG1lcmdlZFJlc291cmNlczpEaWN0Lm1lcmdlKHt4cmVmOmksZGljdEFycmF5OltnLGgsY10sbWVyZ2VTdWJEaWN0czohMH0pfTtyLmZpZWxkRmxhZ3M9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiRmYifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKHIuZmllbGRGbGFncyl8fHIuZmllbGRGbGFnczwwKSYmKHIuZmllbGRGbGFncz0wKTtyLnJlYWRPbmx5PXRoaXMuaGFzRmllbGRGbGFnKHRBKTtyLnJlcXVpcmVkPXRoaXMuaGFzRmllbGRGbGFnKGlBKTtyLmhpZGRlbj10aGlzLl9oYXNGbGFnKHIuYW5ub3RhdGlvbkZsYWdzLFYpfHx0aGlzLl9oYXNGbGFnKHIuYW5ub3RhdGlvbkZsYWdzLCQpfV9kZWNvZGVGb3JtVmFsdWUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5maWx0ZXIoKGU9PiJzdHJpbmciPT10eXBlb2YgZSkpLm1hcCgoZT0+c3RyaW5nVG9QREZTdHJpbmcoZSkpKTplIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKTpudWxsfWhhc0ZpZWxkRmxhZyhlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX1faXNWaWV3YWJsZShlKXtyZXR1cm4hMH1tdXN0QmVWaWV3ZWQoZSx0KXtyZXR1cm4gdD90aGlzLnZpZXdhYmxlOnN1cGVyLm11c3RCZVZpZXdlZChlLHQpJiYhdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLCQpfWdldFJvdGF0aW9uTWF0cml4KGUpe2xldCBpPWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT1pJiYoaT10aGlzLnJvdGF0aW9uKTtpZigwPT09aSlyZXR1cm4gdDtyZXR1cm4gZ2V0Um90YXRpb25NYXRyaXgoaSx0aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXSx0aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSl9Z2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtpZighdGhpcy5iYWNrZ3JvdW5kQ29sb3ImJiF0aGlzLmJvcmRlckNvbG9yKXJldHVybiIiO2NvbnN0IGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxyPTA9PT10fHwxODA9PT10P2AwIDAgJHtpfSAke2F9IHJlYDpgMCAwICR7YX0gJHtpfSByZWA7bGV0IHM9IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihzPWAke2dldFBkZkNvbG9yKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHtyfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe3MrPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHtnZXRQZGZDb2xvcih0aGlzLmJvcmRlckNvbG9yLCExKX0gJHtyfSBTIGB9cmV0dXJuIHN9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEscil7aWYoYSYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikmJiF0aGlzLmRhdGEubm9IVE1MJiYhdGhpcy5kYXRhLmhhc093bkNhbnZhcylyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxpLGEscik7Y29uc3Qgcz1hd2FpdCB0aGlzLl9nZXRBcHBlYXJhbmNlKGUsdCxpLHIpO2lmKHRoaXMuYXBwZWFyYW5jZSYmbnVsbD09PXMpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsaSxhLHIpO2NvbnN0IG49bmV3IE9wZXJhdG9yTGlzdDtpZighdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fG51bGw9PT1zKXJldHVybntvcExpc3Q6bixzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2NvbnN0IGc9ISEodGhpcy5kYXRhLmhhc093bkNhbnZhcyYmaSZvKSxjPVswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dLGg9Z2V0VHJhbnNmb3JtTWF0cml4KHRoaXMuZGF0YS5yZWN0LGMsWzEsMCwwLDEsMCwwXSk7bGV0IGw7dGhpcy5vYyYmKGw9YXdhaXQgZS5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyh0aGlzLm9jLG51bGwpKTt2b2lkIDAhPT1sJiZuLmFkZE9wKEhlLFsiT0MiLGxdKTtuLmFkZE9wKFdlLFt0aGlzLmRhdGEuaWQsdGhpcy5kYXRhLnJlY3QsaCx0aGlzLmdldFJvdGF0aW9uTWF0cml4KHIpLGddKTtjb25zdCBDPW5ldyBTdHJpbmdTdHJlYW0ocyk7YXdhaXQgZS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpDLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzLG9wZXJhdG9yTGlzdDpufSk7bi5hZGRPcChqZSxbXSk7dm9pZCAwIT09bCYmbi5hZGRPcCh2ZSxbXSk7cmV0dXJue29wTGlzdDpuLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczpnfX1fZ2V0TUtEaWN0KGUpe2NvbnN0IHQ9bmV3IERpY3QobnVsbCk7ZSYmdC5zZXQoIlIiLGUpO3RoaXMuYm9yZGVyQ29sb3ImJnQuc2V0KCJCQyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJvcmRlckNvbG9yKSk7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJnQuc2V0KCJCRyIsZ2V0UGRmQ29sb3JBcnJheSh0aGlzLmJhY2tncm91bmRDb2xvcikpO3JldHVybiB0LnNpemU+MD90Om51bGx9YW1lbmRTYXZlZERpY3QoZSx0KXt9YXN5bmMgc2F2ZShlLGksYSl7Y29uc3Qgcj1hPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgcz1yPy52YWx1ZSxuPXI/LnJvdGF0aW9uO2lmKHM9PT10aGlzLmRhdGEuZmllbGRWYWx1ZXx8dm9pZCAwPT09cyl7aWYoIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmdm9pZCAwPT09bilyZXR1cm4gbnVsbDtzfHw9dGhpcy5kYXRhLmZpZWxkVmFsdWV9aWYodm9pZCAwPT09biYmIXRoaXMuX2hhc1ZhbHVlRnJvbVhGQSYmQXJyYXkuaXNBcnJheShzKSYmQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuZmllbGRWYWx1ZSkmJnMubGVuZ3RoPT09dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoJiZzLmV2ZXJ5KCgoZSx0KT0+ZT09PXRoaXMuZGF0YS5maWVsZFZhbHVlW3RdKSkpcmV0dXJuIG51bGw7dm9pZCAwPT09biYmKG49dGhpcy5yb3RhdGlvbik7bGV0IG89bnVsbDtpZighdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXtvPWF3YWl0IHRoaXMuX2dldEFwcGVhcmFuY2UoZSxpLGMsYSk7aWYobnVsbD09PW8pcmV0dXJuIG51bGx9bGV0IGc9ITE7aWYobz8ubmVlZEFwcGVhcmFuY2VzKXtnPSEwO289bnVsbH1jb25zdHt4cmVmOmh9PWUsbD1oLmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEobCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IEM9bmV3IERpY3QoaCk7Zm9yKGNvbnN0IGUgb2YgbC5nZXRLZXlzKCkpIkFQIiE9PWUmJkMuc2V0KGUsbC5nZXRSYXcoZSkpO2NvbnN0IFE9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpzfSxlbmNvZGVyPWU9PmlzQXNjaWkoZSk/ZTpzdHJpbmdUb1VURjE2U3RyaW5nKGUsITApO0Muc2V0KCJWIixBcnJheS5pc0FycmF5KHMpP3MubWFwKGVuY29kZXIpOmVuY29kZXIocykpO3RoaXMuYW1lbmRTYXZlZERpY3QoYSxDKTtjb25zdCBFPXRoaXMuX2dldE1LRGljdChuKTtFJiZDLnNldCgiTUsiLEUpO2NvbnN0IHU9W10sZD1be3JlZjp0aGlzLnJlZixkYXRhOiIiLHhmYTpRLG5lZWRBcHBlYXJhbmNlczpnfV07aWYobnVsbCE9PW8pe2NvbnN0IGU9aC5nZXROZXdUZW1wb3JhcnlSZWYoKSxpPW5ldyBEaWN0KGgpO0Muc2V0KCJBUCIsaSk7aS5zZXQoIk4iLGUpO2NvbnN0IHI9dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKGgpLHM9bmV3IFN0cmluZ1N0cmVhbShvKSxuPXMuZGljdD1uZXcgRGljdChoKTtuLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7bi5zZXQoIlJlc291cmNlcyIscik7bi5zZXQoIkJCb3giLFswLDAsdGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV1dKTtjb25zdCBnPXRoaXMuZ2V0Um90YXRpb25NYXRyaXgoYSk7ZyE9PXQmJm4uc2V0KCJNYXRyaXgiLGcpO2F3YWl0IHdyaXRlT2JqZWN0KGUscyx1LGgpO2QucHVzaCh7cmVmOmUsZGF0YTp1LmpvaW4oIiIpLHhmYTpudWxsLG5lZWRBcHBlYXJhbmNlczohMX0pO3UubGVuZ3RoPTB9Qy5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLEMsdSxoKTtkWzBdLmRhdGE9dS5qb2luKCIiKTtyZXR1cm4gZH1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsaSxhKXtpZih0aGlzLmhhc0ZpZWxkRmxhZyhyQSkpcmV0dXJuIG51bGw7Y29uc3Qgcj1hPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgbixvO2lmKHIpe249ci5mb3JtYXR0ZWRWYWx1ZXx8ci52YWx1ZTtvPXIucm90YXRpb259aWYodm9pZCAwPT09byYmdm9pZCAwPT09biYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkF8fHRoaXMuYXBwZWFyYW5jZSkpcmV0dXJuIG51bGw7Y29uc3QgZz10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhhKTtpZih2b2lkIDA9PT1uKXtuPXRoaXMuZGF0YS5maWVsZFZhbHVlO2lmKCFuKXJldHVybmAvVHggQk1DIHEgJHtnfVEgRU1DYH1BcnJheS5pc0FycmF5KG4pJiYxPT09bi5sZW5ndGgmJihuPW5bMF0pO2Fzc2VydCgic3RyaW5nIj09dHlwZW9mIG4sIkV4cGVjdGVkIGB2YWx1ZWAgdG8gYmUgYSBzdHJpbmcuIik7bj1uLnRyaW0oKTtpZih0aGlzLmRhdGEuY29tYm8pe2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMuZmluZCgoKHtleHBvcnRWYWx1ZTplfSk9Pm49PT1lKSk7bj1lPy5kaXNwbGF5VmFsdWV8fG59aWYoIiI9PT1uKXJldHVybmAvVHggQk1DIHEgJHtnfVEgRU1DYDt2b2lkIDA9PT1vJiYobz10aGlzLnJvdGF0aW9uKTtsZXQgaCxsPS0xO2lmKHRoaXMuZGF0YS5tdWx0aUxpbmUpe2g9bi5zcGxpdCgvXHJcbj98XG4vKS5tYXAoKGU9PmUubm9ybWFsaXplKCJORkMiKSkpO2w9aC5sZW5ndGh9ZWxzZSBoPVtuLnJlcGxhY2UoL1xyXG4/fFxuLywiIikubm9ybWFsaXplKCJORkMiKV07bGV0IEM9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sUT10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PW8mJjI3MCE9PW98fChbUSxDXT1bQyxRXSk7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7bGV0IEUsdSxkLGY9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtjb25zdCBwPVtdO2xldCBtPSExO2Zvcihjb25zdCBlIG9mIGgpe2NvbnN0IHQ9Zi5lbmNvZGVTdHJpbmcoZSk7dC5sZW5ndGg+MSYmKG09ITApO3AucHVzaCh0LmpvaW4oIiIpKX1pZihtJiZpJmMpcmV0dXJue25lZWRBcHBlYXJhbmNlczohMH07aWYobSYmdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IGk9dGhpcy5kYXRhLmNvbWI/Im1vbm9zcGFjZSI6InNhbnMtc2VyaWYiLGE9bmV3IEZha2VVbmljb2RlRm9udChlLnhyZWYsaSkscj1hLmNyZWF0ZUZvbnRSZXNvdXJjZXMoaC5qb2luKCIiKSkscz1yLmdldFJhdygiRm9udCIpO2lmKHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5oYXMoIkZvbnQiKSl7Y29uc3QgZT10aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuZ2V0KCJGb250Iik7Zm9yKGNvbnN0IHQgb2Ygcy5nZXRLZXlzKCkpZS5zZXQodCxzLmdldFJhdyh0KSl9ZWxzZSB0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuc2V0KCJGb250IixzKTtjb25zdCBvPWEuZm9udE5hbWUubmFtZTtmPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx7Zm9udE5hbWU6byxmb250U2l6ZTowfSxyKTtmb3IobGV0IGU9MCx0PXAubGVuZ3RoO2U8dDtlKyspcFtlXT1zdHJpbmdUb1VURjE2U3RyaW5nKGhbZV0pO2NvbnN0IGc9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemU9MDt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnROYW1lPW87W0UsdSxkXT10aGlzLl9jb21wdXRlRm9udFNpemUoQy0yLFEtNCxuLGYsbCk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1nfWVsc2V7dGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR8fHdhcm4oIl9nZXRBcHBlYXJhbmNlOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIik7W0UsdSxkXT10aGlzLl9jb21wdXRlRm9udFNpemUoQy0yLFEtNCxuLGYsbCl9bGV0IHk9Zi5kZXNjZW50O3k9aXNOYU4oeSk/cypkOk1hdGgubWF4KHMqZCxNYXRoLmFicyh5KSp1KTtjb25zdCB3PU1hdGgubWluKE1hdGguZmxvb3IoKEMtdSkvMiksMSksYj10aGlzLmRhdGEudGV4dEFsaWdubWVudDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXJldHVybiB0aGlzLl9nZXRNdWx0aWxpbmVBcHBlYXJhbmNlKEUscCxmLHUsUSxDLGIsMix3LHksZCxhKTtpZih0aGlzLmRhdGEuY29tYilyZXR1cm4gdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UoRSxmLHBbMF0sdSxRLEMsMix3LHksZCxhKTtjb25zdCBEPXcreTtpZigwPT09Ynx8Yj4yKXJldHVybmAvVHggQk1DIHEgJHtnfUJUIGArRStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZygyKX0gJHtudW1iZXJUb1N0cmluZyhEKX0gVG0gKCR7ZXNjYXBlU3RyaW5nKHBbMF0pfSkgVGogRVQgUSBFTUNgO3JldHVybmAvVHggQk1DIHEgJHtnfUJUIGArRStgIDEgMCAwIDEgMCAwIFRtICR7dGhpcy5fcmVuZGVyVGV4dChwWzBdLGYsdSxRLGIse3NoaWZ0OjB9LDIsRCl9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxpLGEpe2NvbnN0IHI9bmV3IE9wZXJhdG9yTGlzdCxzPXtmb250Om51bGwsY2xvbmUoKXtyZXR1cm4gdGhpc319LHtmb250TmFtZTpuLGZvbnRTaXplOm99PWk7YXdhaXQgZS5oYW5kbGVTZXRGb250KGEsW24mJk5hbWUuZ2V0KG4pLG9dLG51bGwscix0LHMsbnVsbCk7cmV0dXJuIHMuZm9udH1fZ2V0VGV4dFdpZHRoKGUsdCl7cmV0dXJuIHQuY2hhcnNUb0dseXBocyhlKS5yZWR1Y2UoKChlLHQpPT5lK3Qud2lkdGgpLDApLzFlM31fY29tcHV0ZUZvbnRTaXplKGUsdCxpLHIscyl7bGV0e2ZvbnRTaXplOm59PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsbz0obnx8MTIpKmEsZz1NYXRoLnJvdW5kKGUvbyk7aWYoIW4pe2NvbnN0IHJvdW5kV2l0aFR3b0RpZ2l0cz1lPT5NYXRoLmZsb29yKDEwMCplKS8xMDA7aWYoLTE9PT1zKXtjb25zdCBzPXRoaXMuX2dldFRleHRXaWR0aChpLHIpO249cm91bmRXaXRoVHdvRGlnaXRzKE1hdGgubWluKGUvYSxzPnQ/dC9zOjEvMCkpO2c9MX1lbHNle2NvbnN0IGM9aS5zcGxpdCgvXHJcbj98XG4vKSxoPVtdO2Zvcihjb25zdCBlIG9mIGMpe2NvbnN0IHQ9ci5lbmNvZGVTdHJpbmcoZSkuam9pbigiIiksaT1yLmNoYXJzVG9HbHlwaHModCksYT1yLmdldENoYXJQb3NpdGlvbnModCk7aC5wdXNoKHtsaW5lOnQsZ2x5cGhzOmkscG9zaXRpb25zOmF9KX1jb25zdCBpc1Rvb0JpZz1pPT57bGV0IGE9MDtmb3IoY29uc3QgcyBvZiBoKXthKz10aGlzLl9zcGxpdExpbmUobnVsbCxyLGksdCxzKS5sZW5ndGgqaTtpZihhPmUpcmV0dXJuITB9cmV0dXJuITF9O2c9TWF0aC5tYXgoZyxzKTtmb3IoOzspe289ZS9nO249cm91bmRXaXRoVHdvRGlnaXRzKG8vYSk7aWYoIWlzVG9vQmlnKG4pKWJyZWFrO2crK319Y29uc3R7Zm9udE5hbWU6Yyxmb250Q29sb3I6aH09dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YTt0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT1mdW5jdGlvbiBjcmVhdGVEZWZhdWx0QXBwZWFyYW5jZSh7Zm9udFNpemU6ZSxmb250TmFtZTp0LGZvbnRDb2xvcjppfSl7cmV0dXJuYC8ke2VzY2FwZVBERk5hbWUodCl9ICR7ZX0gVGYgJHtnZXRQZGZDb2xvcihpLCEwKX1gfSh7Zm9udFNpemU6bixmb250TmFtZTpjLGZvbnRDb2xvcjpofSl9cmV0dXJuW3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlLG4sZS9nXX1fcmVuZGVyVGV4dChlLHQsaSxhLHIscyxuLG8pe2xldCBnO2lmKDE9PT1yKXtnPShhLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmkpLzJ9ZWxzZSBpZigyPT09cil7Zz1hLXRoaXMuX2dldFRleHRXaWR0aChlLHQpKmktbn1lbHNlIGc9bjtjb25zdCBjPW51bWJlclRvU3RyaW5nKGctcy5zaGlmdCk7cy5zaGlmdD1nO3JldHVybmAke2N9ICR7bz1udW1iZXJUb1N0cmluZyhvKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKGUpfSkgVGpgfV9nZXRTYXZlRmllbGRSZXNvdXJjZXMoZSl7Y29uc3R7bG9jYWxSZXNvdXJjZXM6dCxhcHBlYXJhbmNlUmVzb3VyY2VzOmksYWNyb0Zvcm1SZXNvdXJjZXM6YX09dGhpcy5fZmllbGRSZXNvdXJjZXMscj10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPy5mb250TmFtZTtpZighcilyZXR1cm4gdHx8RGljdC5lbXB0eTtmb3IoY29uc3QgZSBvZlt0LGldKWlmKGUgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCB0PWUuZ2V0KCJGb250Iik7aWYodCBpbnN0YW5jZW9mIERpY3QmJnQuaGFzKHIpKXJldHVybiBlfWlmKGEgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBpPWEuZ2V0KCJGb250Iik7aWYoaSBpbnN0YW5jZW9mIERpY3QmJmkuaGFzKHIpKXtjb25zdCBhPW5ldyBEaWN0KGUpO2Euc2V0KHIsaS5nZXRSYXcocikpO2NvbnN0IHM9bmV3IERpY3QoZSk7cy5zZXQoIkZvbnQiLGEpO3JldHVybiBEaWN0Lm1lcmdlKHt4cmVmOmUsZGljdEFycmF5OltzLHRdLG1lcmdlU3ViRGljdHM6ITB9KX19cmV0dXJuIHR8fERpY3QuZW1wdHl9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gbnVsbH19Y2xhc3MgVGV4dFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLnJlYWRPbmx5JiYhdGhpcy5kYXRhLm5vSFRNTDt0aGlzLl9oYXNUZXh0PSEwO2NvbnN0IHQ9ZS5kaWN0OyJzdHJpbmciIT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWUmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT0iIik7bGV0IGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiUSJ9KTsoIU51bWJlci5pc0ludGVnZXIoaSl8fGk8MHx8aT4yKSYmKGk9bnVsbCk7dGhpcy5kYXRhLnRleHRBbGlnbm1lbnQ9aTtsZXQgYT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJNYXhMZW4ifSk7KCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHxhPDApJiYoYT0wKTt0aGlzLmRhdGEubWF4TGVuPWE7dGhpcy5kYXRhLm11bHRpTGluZT10aGlzLmhhc0ZpZWxkRmxhZyhhQSk7dGhpcy5kYXRhLmNvbWI9dGhpcy5oYXNGaWVsZEZsYWcoaEEpJiYhdGhpcy5oYXNGaWVsZEZsYWcoYUEpJiYhdGhpcy5oYXNGaWVsZEZsYWcockEpJiYhdGhpcy5oYXNGaWVsZEZsYWcoZ0EpJiYwIT09dGhpcy5kYXRhLm1heExlbjt0aGlzLmRhdGEuZG9Ob3RTY3JvbGw9dGhpcy5oYXNGaWVsZEZsYWcoSUEpfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiEhdGhpcy5hcHBlYXJhbmNlJiYhdGhpcy5fbmVlZEFwcGVhcmFuY2VzfV9nZXRDb21iQXBwZWFyYW5jZShlLHQsaSxhLHIscyxuLG8sZyxjLGgpe2NvbnN0IGw9ci90aGlzLmRhdGEubWF4TGVuLEM9dGhpcy5nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoaCksUT1bXSxFPXQuZ2V0Q2hhclBvc2l0aW9ucyhpKTtmb3IoY29uc3RbZSx0XW9mIEUpUS5wdXNoKGAoJHtlc2NhcGVTdHJpbmcoaS5zdWJzdHJpbmcoZSx0KSl9KSBUamApO2NvbnN0IHU9US5qb2luKGAgJHtudW1iZXJUb1N0cmluZyhsKX0gMCBUZCBgKTtyZXR1cm5gL1R4IEJNQyBxICR7Q31CVCBgK2UrYCAxIDAgMCAxICR7bnVtYmVyVG9TdHJpbmcobil9ICR7bnVtYmVyVG9TdHJpbmcobytnKX0gVG0gJHt1fSBFVCBRIEVNQ2B9X2dldE11bHRpbGluZUFwcGVhcmFuY2UoZSx0LGksYSxyLHMsbixvLGcsYyxoLGwpe2NvbnN0IEM9W10sUT1yLTIqbyxFPXtzaGlmdDowfTtmb3IobGV0IGU9MCxzPXQubGVuZ3RoO2U8cztlKyspe2NvbnN0IHM9dFtlXSxsPXRoaXMuX3NwbGl0TGluZShzLGksYSxRKTtmb3IobGV0IHQ9MCxzPWwubGVuZ3RoO3Q8czt0Kyspe2NvbnN0IHM9bFt0XSxRPTA9PT1lJiYwPT09dD8tZy0oaC1jKTotaDtDLnB1c2godGhpcy5fcmVuZGVyVGV4dChzLGksYSxyLG4sRSxvLFEpKX19Y29uc3QgdT10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhsKSxkPUMuam9pbigiXG4iKTtyZXR1cm5gL1R4IEJNQyBxICR7dX1CVCBgK2UrYCAxIDAgMCAxIDAgJHtudW1iZXJUb1N0cmluZyhzKX0gVG0gJHtkfSBFVCBRIEVNQ2B9X3NwbGl0TGluZShlLHQsaSxhLHI9e30pe2U9ci5saW5lfHxlO2NvbnN0IHM9ci5nbHlwaHN8fHQuY2hhcnNUb0dseXBocyhlKTtpZihzLmxlbmd0aDw9MSlyZXR1cm5bZV07Y29uc3Qgbj1yLnBvc2l0aW9uc3x8dC5nZXRDaGFyUG9zaXRpb25zKGUpLG89aS8xZTMsZz1bXTtsZXQgYz0tMSxoPS0xLGw9LTEsQz0wLFE9MDtmb3IobGV0IHQ9MCxpPXMubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0W2kscl09blt0XSxFPXNbdF0sdT1FLndpZHRoKm87aWYoIiAiPT09RS51bmljb2RlKWlmKFErdT5hKXtnLnB1c2goZS5zdWJzdHJpbmcoQyxpKSk7Qz1pO1E9dTtjPS0xO2w9LTF9ZWxzZXtRKz11O2M9aTtoPXI7bD10fWVsc2UgaWYoUSt1PmEpaWYoLTEhPT1jKXtnLnB1c2goZS5zdWJzdHJpbmcoQyxoKSk7Qz1oO3Q9bCsxO2M9LTE7UT0wfWVsc2V7Zy5wdXNoKGUuc3Vic3RyaW5nKEMsaSkpO0M9aTtRPXV9ZWxzZSBRKz11fUM8ZS5sZW5ndGgmJmcucHVzaChlLnN1YnN0cmluZyhDLGUubGVuZ3RoKSk7cmV0dXJuIGd9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlLGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWV8fCIiLG11bHRpbGluZTp0aGlzLmRhdGEubXVsdGlMaW5lLHBhc3N3b3JkOnRoaXMuaGFzRmllbGRGbGFnKHJBKSxjaGFyTGltaXQ6dGhpcy5kYXRhLm1heExlbixjb21iOnRoaXMuZGF0YS5jb21iLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZToidGV4dCJ9fX1jbGFzcyBCdXR0b25XaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW51bGw7dGhpcy5kYXRhLmNoZWNrQm94PSF0aGlzLmhhc0ZpZWxkRmxhZyhzQSkmJiF0aGlzLmhhc0ZpZWxkRmxhZyhuQSk7dGhpcy5kYXRhLnJhZGlvQnV0dG9uPXRoaXMuaGFzRmllbGRGbGFnKHNBKSYmIXRoaXMuaGFzRmllbGRGbGFnKG5BKTt0aGlzLmRhdGEucHVzaEJ1dHRvbj10aGlzLmhhc0ZpZWxkRmxhZyhuQSk7dGhpcy5kYXRhLmlzVG9vbHRpcE9ubHk9ITE7aWYodGhpcy5kYXRhLmNoZWNrQm94KXRoaXMuX3Byb2Nlc3NDaGVja0JveChlKTtlbHNlIGlmKHRoaXMuZGF0YS5yYWRpb0J1dHRvbil0aGlzLl9wcm9jZXNzUmFkaW9CdXR0b24oZSk7ZWxzZSBpZih0aGlzLmRhdGEucHVzaEJ1dHRvbil7dGhpcy5kYXRhLmhhc093bkNhbnZhcz0hMDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuX3Byb2Nlc3NQdXNoQnV0dG9uKGUpfWVsc2Ugd2FybigiSW52YWxpZCBmaWVsZCBmbGFncyBmb3IgYnV0dG9uIHdpZGdldCBhbm5vdGF0aW9uIil9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsaSxhLHIscyl7aWYodGhpcy5kYXRhLnB1c2hCdXR0b24pcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLGksYSwhMSxzKTtsZXQgbj1udWxsLG89bnVsbDtpZihzKXtjb25zdCBlPXMuZ2V0KHRoaXMuZGF0YS5pZCk7bj1lP2UudmFsdWU6bnVsbDtvPWU/ZS5yb3RhdGlvbjpudWxsfWlmKG51bGw9PT1uJiZ0aGlzLmFwcGVhcmFuY2UpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLGksYSxyLHMpO251bGw9PW4mJihuPXRoaXMuZGF0YS5jaGVja0JveD90aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZTp0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7Y29uc3QgZz1uP3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U6dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlO2lmKGcpe2NvbnN0IG49dGhpcy5hcHBlYXJhbmNlLGM9bG9va3VwTWF0cml4KGcuZGljdC5nZXRBcnJheSgiTWF0cml4IiksdCk7byYmZy5kaWN0LnNldCgiTWF0cml4Iix0aGlzLmdldFJvdGF0aW9uTWF0cml4KHMpKTt0aGlzLmFwcGVhcmFuY2U9Zztjb25zdCBoPXN1cGVyLmdldE9wZXJhdG9yTGlzdChlLGksYSxyLHMpO3RoaXMuYXBwZWFyYW5jZT1uO2cuZGljdC5zZXQoIk1hdHJpeCIsYyk7cmV0dXJuIGh9cmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19YXN5bmMgc2F2ZShlLHQsaSl7cmV0dXJuIHRoaXMuZGF0YS5jaGVja0JveD90aGlzLl9zYXZlQ2hlY2tib3goZSx0LGkpOnRoaXMuZGF0YS5yYWRpb0J1dHRvbj90aGlzLl9zYXZlUmFkaW9CdXR0b24oZSx0LGkpOm51bGx9YXN5bmMgX3NhdmVDaGVja2JveChlLHQsaSl7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3QgYT1pLmdldCh0aGlzLmRhdGEuaWQpO2xldCByPWE/LnJvdGF0aW9uLHM9YT8udmFsdWU7aWYodm9pZCAwPT09cil7aWYodm9pZCAwPT09cylyZXR1cm4gbnVsbDtpZih0aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5leHBvcnRWYWx1ZT09PXMpcmV0dXJuIG51bGx9Y29uc3Qgbj1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7dm9pZCAwPT09ciYmKHI9dGhpcy5yb3RhdGlvbik7dm9pZCAwPT09cyYmKHM9dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWUpO2NvbnN0IG89e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpzP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiIn0sZz1OYW1lLmdldChzP3RoaXMuZGF0YS5leHBvcnRWYWx1ZToiT2ZmIik7bi5zZXQoIlYiLGcpO24uc2V0KCJBUyIsZyk7bi5zZXQoIk0iLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2NvbnN0IGM9dGhpcy5fZ2V0TUtEaWN0KHIpO2MmJm4uc2V0KCJNSyIsYyk7Y29uc3QgaD1bXTthd2FpdCB3cml0ZU9iamVjdCh0aGlzLnJlZixuLGgsZS54cmVmKTtyZXR1cm5be3JlZjp0aGlzLnJlZixkYXRhOmguam9pbigiIikseGZhOm99XX1hc3luYyBfc2F2ZVJhZGlvQnV0dG9uKGUsdCxpKXtpZighaSlyZXR1cm4gbnVsbDtjb25zdCBhPWkuZ2V0KHRoaXMuZGF0YS5pZCk7bGV0IHI9YT8ucm90YXRpb24scz1hPy52YWx1ZTtpZih2b2lkIDA9PT1yKXtpZih2b2lkIDA9PT1zKXJldHVybiBudWxsO2lmKHRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlPT09cylyZXR1cm4gbnVsbH1jb25zdCBuPWUueHJlZi5mZXRjaElmUmVmKHRoaXMucmVmKTtpZighKG4gaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1zJiYocz10aGlzLmRhdGEuZmllbGRWYWx1ZT09PXRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dm9pZCAwPT09ciYmKHI9dGhpcy5yb3RhdGlvbik7Y29uc3Qgbz17cGF0aDp0aGlzLmRhdGEuZmllbGROYW1lLHZhbHVlOnM/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiIifSxnPU5hbWUuZ2V0KHM/dGhpcy5kYXRhLmJ1dHRvblZhbHVlOiJPZmYiKSxjPVtdO2xldCBoPW51bGw7aWYocylpZih0aGlzLnBhcmVudCBpbnN0YW5jZW9mIFJlZil7Y29uc3QgdD1lLnhyZWYuZmV0Y2godGhpcy5wYXJlbnQpO3Quc2V0KCJWIixnKTthd2FpdCB3cml0ZU9iamVjdCh0aGlzLnBhcmVudCx0LGMsZS54cmVmKTtoPWMuam9pbigiIik7Yy5sZW5ndGg9MH1lbHNlIHRoaXMucGFyZW50IGluc3RhbmNlb2YgRGljdCYmdGhpcy5wYXJlbnQuc2V0KCJWIixnKTtuLnNldCgiQVMiLGcpO24uc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtjb25zdCBsPXRoaXMuX2dldE1LRGljdChyKTtsJiZuLnNldCgiTUsiLGwpO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLG4sYyxlLnhyZWYpO2NvbnN0IEM9W3tyZWY6dGhpcy5yZWYsZGF0YTpjLmpvaW4oIiIpLHhmYTpvfV07aCYmQy5wdXNoKHtyZWY6dGhpcy5wYXJlbnQsZGF0YTpoLHhmYTpudWxsfSk7cmV0dXJuIEN9X2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZShlLHQpe2NvbnN0IGk9dGhpcy5kYXRhLnJlY3RbMl0tdGhpcy5kYXRhLnJlY3RbMF0sYT10aGlzLmRhdGEucmVjdFszXS10aGlzLmRhdGEucmVjdFsxXSxyPVswLDAsaSxhXSxzPS44Kk1hdGgubWluKGksYSk7bGV0IG4sbztpZigiY2hlY2siPT09dCl7bj17d2lkdGg6Ljc1NSpzLGhlaWdodDouNzA1KnN9O289IjMifWVsc2UgaWYoImRpc2MiPT09dCl7bj17d2lkdGg6Ljc5MSpzLGhlaWdodDouNzA1KnN9O289ImwifWVsc2UgdW5yZWFjaGFibGUoYF9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UgLSB1bnN1cHBvcnRlZCB0eXBlOiAke3R9YCk7Y29uc3QgZz1gcSBCVCAvUGRmSnNaYURiICR7c30gVGYgMCBnICR7bnVtYmVyVG9TdHJpbmcoKGktbi53aWR0aCkvMil9ICR7bnVtYmVyVG9TdHJpbmcoKGEtbi5oZWlnaHQpLzIpfSBUZCAoJHtvfSkgVGogRVQgUWAsYz1uZXcgRGljdChlLnhyZWYpO2Muc2V0KCJGb3JtVHlwZSIsMSk7Yy5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2Muc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtjLnNldCgiQkJveCIscik7Yy5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsMCwwXSk7Yy5zZXQoIkxlbmd0aCIsZy5sZW5ndGgpO2NvbnN0IGg9bmV3IERpY3QoZS54cmVmKSxsPW5ldyBEaWN0KGUueHJlZik7bC5zZXQoIlBkZkpzWmFEYiIsdGhpcy5mYWxsYmFja0ZvbnREaWN0KTtoLnNldCgiRm9udCIsbCk7Yy5zZXQoIlJlc291cmNlcyIsaCk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKGcpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2UuZGljdD1jO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKX1fcHJvY2Vzc0NoZWNrQm94KGUpe2NvbnN0IHQ9ZS5kaWN0LmdldCgiQVAiKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgaT10LmdldCgiTiIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlLmRpY3QuZ2V0KCJBUyIpKTsic3RyaW5nIj09dHlwZW9mIGEmJih0aGlzLmRhdGEuZmllbGRWYWx1ZT1hKTtjb25zdCByPW51bGwhPT10aGlzLmRhdGEuZmllbGRWYWx1ZSYmIk9mZiIhPT10aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZToiWWVzIixzPWkuZ2V0S2V5cygpO2lmKDA9PT1zLmxlbmd0aClzLnB1c2goIk9mZiIscik7ZWxzZSBpZigxPT09cy5sZW5ndGgpIk9mZiI9PT1zWzBdP3MucHVzaChyKTpzLnVuc2hpZnQoIk9mZiIpO2Vsc2UgaWYocy5pbmNsdWRlcyhyKSl7cy5sZW5ndGg9MDtzLnB1c2goIk9mZiIscil9ZWxzZXtjb25zdCBlPXMuZmluZCgoZT0+Ik9mZiIhPT1lKSk7cy5sZW5ndGg9MDtzLnB1c2goIk9mZiIsZSl9cy5pbmNsdWRlcyh0aGlzLmRhdGEuZmllbGRWYWx1ZSl8fCh0aGlzLmRhdGEuZmllbGRWYWx1ZT0iT2ZmIik7dGhpcy5kYXRhLmV4cG9ydFZhbHVlPXNbMV07Y29uc3Qgbj1pLmdldCh0aGlzLmRhdGEuZXhwb3J0VmFsdWUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9biBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/bjpudWxsO2NvbnN0IG89aS5nZXQoIk9mZiIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1vIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9vOm51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImNoZWNrIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT1udWxsO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUGFyZW50Iik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe3RoaXMucGFyZW50PWUuZGljdC5nZXRSYXcoIlBhcmVudCIpO2NvbnN0IGk9dC5nZXQoIlYiKTtpIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShpKSl9Y29uc3QgaT1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBhPWkuZ2V0KCJOIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2Zvcihjb25zdCBlIG9mIGEuZ2V0S2V5cygpKWlmKCJPZmYiIT09ZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlKTticmVha31jb25zdCByPWEuZ2V0KHRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1yIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9yOm51bGw7Y29uc3Qgcz1hLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPXMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3M6bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiZGlzYyIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSk7dGhpcy5fZmFsbGJhY2tGb250RGljdD10aGlzLmZhbGxiYWNrRm9udERpY3Q7bnVsbD09PXRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZT0iT2ZmIil9X3Byb2Nlc3NQdXNoQnV0dG9uKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lO2lmKHQuaGFzKCJBIil8fHQuaGFzKCJBQSIpfHx0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KXt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hdC5oYXMoIkEiKSYmIXQuaGFzKCJBQSIpO0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6dCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6aS5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOmkuYXR0YWNobWVudHN9KX1lbHNlIHdhcm4oIlB1c2ggYnV0dG9ucyB3aXRob3V0IGFjdGlvbiBkaWN0aW9uYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX1nZXRGaWVsZE9iamVjdCgpe2xldCBlLHQ9ImJ1dHRvbiI7aWYodGhpcy5kYXRhLmNoZWNrQm94KXt0PSJjaGVja2JveCI7ZT10aGlzLmRhdGEuZXhwb3J0VmFsdWV9ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pe3Q9InJhZGlvYnV0dG9uIjtlPXRoaXMuZGF0YS5idXR0b25WYWx1ZX1yZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IERpY3Q7ZS5zZXQoIkJhc2VGb250IixOYW1lLmdldCgiWmFwZkRpbmdiYXRzIikpO2Uuc2V0KCJUeXBlIixOYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRmFsbGJhY2tUeXBlIikpO2Uuc2V0KCJFbmNvZGluZyIsTmFtZS5nZXQoIlphcGZEaW5nYmF0c0VuY29kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIENob2ljZVdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5pbmRpY2VzPXQuZ2V0QXJyYXkoIkkiKTt0aGlzLmhhc0luZGljZXM9QXJyYXkuaXNBcnJheSh0aGlzLmluZGljZXMpJiZ0aGlzLmluZGljZXMubGVuZ3RoPjA7dGhpcy5kYXRhLm9wdGlvbnM9W107Y29uc3QgYT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJPcHQifSk7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9aS5mZXRjaElmUmVmKGFbZV0pLHI9QXJyYXkuaXNBcnJheSh0KTt0aGlzLmRhdGEub3B0aW9uc1tlXT17ZXhwb3J0VmFsdWU6dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHI/aS5mZXRjaElmUmVmKHRbMF0pOnQpLGRpc3BsYXlWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUocj9pLmZldGNoSWZSZWYodFsxXSk6dCl9fWlmKHRoaXMuaGFzSW5kaWNlcyl7dGhpcy5kYXRhLmZpZWxkVmFsdWU9W107Y29uc3QgZT10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGg7Zm9yKGNvbnN0IHQgb2YgdGhpcy5pbmRpY2VzKU51bWJlci5pc0ludGVnZXIodCkmJnQ+PTAmJnQ8ZSYmdGhpcy5kYXRhLmZpZWxkVmFsdWUucHVzaCh0aGlzLmRhdGEub3B0aW9uc1t0XS5leHBvcnRWYWx1ZSl9ZWxzZSJzdHJpbmciPT10eXBlb2YgdGhpcy5kYXRhLmZpZWxkVmFsdWU/dGhpcy5kYXRhLmZpZWxkVmFsdWU9W3RoaXMuZGF0YS5maWVsZFZhbHVlXTp0aGlzLmRhdGEuZmllbGRWYWx1ZXx8KHRoaXMuZGF0YS5maWVsZFZhbHVlPVtdKTt0aGlzLmRhdGEuY29tYm89dGhpcy5oYXNGaWVsZEZsYWcob0EpO3RoaXMuZGF0YS5tdWx0aVNlbGVjdD10aGlzLmhhc0ZpZWxkRmxhZyhjQSk7dGhpcy5faGFzVGV4dD0hMH1nZXRGaWVsZE9iamVjdCgpe2NvbnN0IGU9dGhpcy5kYXRhLmNvbWJvPyJjb21ib2JveCI6Imxpc3Rib3giLHQ9dGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoPjA/dGhpcy5kYXRhLmZpZWxkVmFsdWVbMF06bnVsbDtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnQsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSxlZGl0YWJsZTohdGhpcy5kYXRhLnJlYWRPbmx5LG5hbWU6dGhpcy5kYXRhLmZpZWxkTmFtZSxyZWN0OnRoaXMuZGF0YS5yZWN0LG51bUl0ZW1zOnRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aCxtdWx0aXBsZVNlbGVjdGlvbjp0aGlzLmRhdGEubXVsdGlTZWxlY3QsaGlkZGVuOnRoaXMuZGF0YS5oaWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxpdGVtczp0aGlzLmRhdGEub3B0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTplfX1hbWVuZFNhdmVkRGljdChlLHQpe2lmKCF0aGlzLmhhc0luZGljZXMpcmV0dXJuO2xldCBpPWU/LmdldCh0aGlzLmRhdGEuaWQpPy52YWx1ZTtBcnJheS5pc0FycmF5KGkpfHwoaT1baV0pO2NvbnN0IGE9W10se29wdGlvbnM6cn09dGhpcy5kYXRhO2ZvcihsZXQgZT0wLHQ9MCxzPXIubGVuZ3RoO2U8cztlKyspaWYocltlXS5leHBvcnRWYWx1ZT09PWlbdF0pe2EucHVzaChlKTt0Kz0xfXQuc2V0KCJJIixhKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsaSxyKXtpZih0aGlzLmRhdGEuY29tYm8pcmV0dXJuIHN1cGVyLl9nZXRBcHBlYXJhbmNlKGUsdCxpLHIpO2xldCBzLG47Y29uc3Qgbz1yPy5nZXQodGhpcy5kYXRhLmlkKTtpZihvKXtuPW8ucm90YXRpb247cz1vLnZhbHVlfWlmKHZvaWQgMD09PW4mJnZvaWQgMD09PXMmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpcmV0dXJuIG51bGw7dm9pZCAwPT09cz9zPXRoaXMuZGF0YS5maWVsZFZhbHVlOkFycmF5LmlzQXJyYXkocyl8fChzPVtzXSk7bGV0IGc9dGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV0sYz10aGlzLmRhdGEucmVjdFsyXS10aGlzLmRhdGEucmVjdFswXTs5MCE9PW4mJjI3MCE9PW58fChbYyxnXT1bZyxjXSk7Y29uc3QgaD10aGlzLmRhdGEub3B0aW9ucy5sZW5ndGgsbD1bXTtmb3IobGV0IGU9MDtlPGg7ZSsrKXtjb25zdHtleHBvcnRWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXTtzLmluY2x1ZGVzKHQpJiZsLnB1c2goZSl9dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7Y29uc3QgQz1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShlLHQsdGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YSx0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMpO2xldCBRLHtmb250U2l6ZTpFfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO2lmKEUpUT10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZTtlbHNle2NvbnN0IGU9KGctMSkvaDtsZXQgdCxpPS0xO2Zvcihjb25zdHtkaXNwbGF5VmFsdWU6ZX1vZiB0aGlzLmRhdGEub3B0aW9ucyl7Y29uc3QgYT10aGlzLl9nZXRUZXh0V2lkdGgoZSxDKTtpZihhPmkpe2k9YTt0PWV9fVtRLEVdPXRoaXMuX2NvbXB1dGVGb250U2l6ZShlLGMtNCx0LEMsLTEpfWNvbnN0IHU9RSphLGQ9KHUtRSkvMixmPU1hdGguZmxvb3IoZy91KTtsZXQgcD0wO2lmKGwubGVuZ3RoPjApe2NvbnN0IGU9TWF0aC5taW4oLi4ubCksdD1NYXRoLm1heCguLi5sKTtwPU1hdGgubWF4KDAsdC1mKzEpO3A+ZSYmKHA9ZSl9Y29uc3QgbT1NYXRoLm1pbihwK2YrMSxoKSx5PVsiL1R4IEJNQyBxIixgMSAxICR7Y30gJHtnfSByZSBXIG5gXTtpZihsLmxlbmd0aCl7eS5wdXNoKCIwLjYwMDAwNiAwLjc1Njg2NiAwLjg1NDkwNCByZyIpO2Zvcihjb25zdCBlIG9mIGwpcDw9ZSYmZTxtJiZ5LnB1c2goYDEgJHtnLShlLXArMSkqdX0gJHtjfSAke3V9IHJlIGZgKX15LnB1c2goIkJUIixRLGAxIDAgMCAxIDAgJHtnfSBUbWApO2NvbnN0IHc9e3NoaWZ0OjB9O2ZvcihsZXQgZT1wO2U8bTtlKyspe2NvbnN0e2Rpc3BsYXlWYWx1ZTp0fT10aGlzLmRhdGEub3B0aW9uc1tlXSxpPWU9PT1wP2Q6MDt5LnB1c2godGhpcy5fcmVuZGVyVGV4dCh0LEMsRSxjLDAsdywyLC11K2kpKX15LnB1c2goIkVUIFEgRU1DIik7cmV0dXJuIHkuam9pbigiXG4iKX19Y2xhc3MgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmZpZWxkVmFsdWU9bnVsbDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSF0aGlzLmRhdGEuaGFzT3duQ2FudmFzfWdldEZpZWxkT2JqZWN0KCl7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTpudWxsLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCx0eXBlOiJzaWduYXR1cmUifX19Y2xhc3MgVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5ub1JvdGF0ZT0hMDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9UztpZih0aGlzLmRhdGEuaGFzQXBwZWFyYW5jZSl0aGlzLmRhdGEubmFtZT0iTm9JY29uIjtlbHNle3RoaXMuZGF0YS5yZWN0WzFdPXRoaXMuZGF0YS5yZWN0WzNdLTIyO3RoaXMuZGF0YS5yZWN0WzJdPXRoaXMuZGF0YS5yZWN0WzBdKzIyO3RoaXMuZGF0YS5uYW1lPXQuaGFzKCJOYW1lIik/dC5nZXQoIk5hbWUiKS5uYW1lOiJOb3RlIn1pZih0LmhhcygiU3RhdGUiKSl7dGhpcy5kYXRhLnN0YXRlPXQuZ2V0KCJTdGF0ZSIpfHxudWxsO3RoaXMuZGF0YS5zdGF0ZU1vZGVsPXQuZ2V0KCJTdGF0ZU1vZGVsIil8fG51bGx9ZWxzZXt0aGlzLmRhdGEuc3RhdGU9bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD1udWxsfX19Y2xhc3MgTGlua0Fubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1rO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3QgYT1nZXRRdWFkUG9pbnRzKHQsdGhpcy5yZWN0YW5nbGUpO2EmJih0aGlzLmRhdGEucXVhZFBvaW50cz1hKTt0aGlzLmRhdGEuYm9yZGVyQ29sb3J8fD10aGlzLmRhdGEuY29sb3I7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDppLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6aS5hdHRhY2htZW50c30pfX1jbGFzcyBQb3B1cEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dH09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9cTt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5yZWN0WzBdIT09dGhpcy5kYXRhLnJlY3RbMl0mJnRoaXMuZGF0YS5yZWN0WzFdIT09dGhpcy5kYXRhLnJlY3RbM118fCh0aGlzLmRhdGEucmVjdD1udWxsKTtsZXQgaT10LmdldCgiUGFyZW50Iik7aWYoIWkpe3dhcm4oIlBvcHVwIGFubm90YXRpb24gaGFzIGEgbWlzc2luZyBvciBpbnZhbGlkIHBhcmVudCBhbm5vdGF0aW9uLiIpO3JldHVybn10aGlzLmRhdGEucGFyZW50UmVjdD1sb29rdXBOb3JtYWxSZWN0KGkuZ2V0QXJyYXkoIlJlY3QiKSxudWxsKTtpc05hbWUoaS5nZXQoIlJUIiksaikmJihpPWkuZ2V0KCJJUlQiKSk7aWYoaS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGkuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aWYoaS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihpLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGw7aWYoIXRoaXMudmlld2FibGUpe2NvbnN0IGU9aS5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoaS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoaS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKGkuZ2V0KCJSQyIpKSk7dGhpcy5kYXRhLm9wZW49ISF0LmdldCgiT3BlbiIpfX1jbGFzcyBGcmVlVGV4dEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHtldmFsdWF0b3JPcHRpb25zOnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1SO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7dGhpcy5faGFzQXBwZWFyYW5jZT0hIXRoaXMuYXBwZWFyYW5jZTtpZih0aGlzLl9oYXNBcHBlYXJhbmNlKXtjb25zdHtmb250Q29sb3I6ZSxmb250U2l6ZTphfT1mdW5jdGlvbiBwYXJzZUFwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe3JldHVybiBuZXcgQXBwZWFyYW5jZVN0cmVhbUV2YWx1YXRvcihlLHQsaSkucGFyc2UoKX0odGhpcy5hcHBlYXJhbmNlLHQsaSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250Q29sb3I9ZTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPWF8fDEwfWVsc2V7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8PTEwO2NvbnN0e2ZvbnRDb2xvcjp0LGZvbnRTaXplOmF9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYodGhpcy5fY29udGVudHMuc3RyKXt0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5fY29udGVudHMuc3RyLnNwbGl0KC9cclxuP3xcbi8pLm1hcCgoZT0+ZS50cmltRW5kKCkpKTtjb25zdHtjb29yZHM6ZSxiYm94OnQsbWF0cml4Oml9PUZha2VVbmljb2RlRm9udC5nZXRGaXJzdFBvc2l0aW9uSW5mbyh0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEpO3RoaXMuZGF0YS50ZXh0UG9zaXRpb249dGhpcy5fdHJhbnNmb3JtUG9pbnQoZSx0LGkpfWlmKHRoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkKXtjb25zdCByPWUuZGljdC5nZXQoIkNBIikscz1uZXcgRmFrZVVuaWNvZGVGb250KGksInNhbnMtc2VyaWYiKTt0aGlzLmFwcGVhcmFuY2U9cy5jcmVhdGVBcHBlYXJhbmNlKHRoaXMuX2NvbnRlbnRzLnN0cix0aGlzLnJlY3RhbmdsZSx0aGlzLnJvdGF0aW9uLGEsdCxyKTt0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKX1lbHNlIHdhcm4oIkZyZWVUZXh0QW5ub3RhdGlvbjogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGFubm90YXRpb24gbWF5IG5vdCByZW5kZXIgY29ycmVjdGx5LiIpfX1nZXQgaGFzVGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5faGFzQXBwZWFyYW5jZX1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e2NvbG9yOnIsZm9udFNpemU6cyxyZWN0Om4scm90YXRpb246byx1c2VyOmcsdmFsdWU6Y309ZSxoPW5ldyBEaWN0KHQpO2guc2V0KCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7aC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGcmVlVGV4dCIpKTtoLnNldCgiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtoLnNldCgiUmVjdCIsbik7Y29uc3QgbD1gL0hlbHYgJHtzfSBUZiAke2dldFBkZkNvbG9yKHIsITApfWA7aC5zZXQoIkRBIixsKTtoLnNldCgiQ29udGVudHMiLGlzQXNjaWkoYyk/YzpzdHJpbmdUb1VURjE2U3RyaW5nKGMsITApKTtoLnNldCgiRiIsNCk7aC5zZXQoIkJvcmRlciIsWzAsMCwwXSk7aC5zZXQoIlJvdGF0ZSIsbyk7ZyYmaC5zZXQoIlQiLGlzQXNjaWkoZyk/ZzpzdHJpbmdUb1VURjE2U3RyaW5nKGcsITApKTtpZihpfHxhKXtjb25zdCBlPW5ldyBEaWN0KHQpO2guc2V0KCJBUCIsZSk7aT9lLnNldCgiTiIsaSk6ZS5zZXQoIk4iLGEpfXJldHVybiBofXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtjb25zdHtiYXNlRm9udFJlZjpyLGV2YWx1YXRvcjpzLHRhc2s6bn09aSx7Y29sb3I6byxmb250U2l6ZTpnLHJlY3Q6Yyxyb3RhdGlvbjpoLHZhbHVlOmx9PWUsQz1uZXcgRGljdCh0KSxRPW5ldyBEaWN0KHQpO2lmKHIpUS5zZXQoIkhlbHYiLHIpO2Vsc2V7Y29uc3QgZT1uZXcgRGljdCh0KTtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGb250IikpO2Uuc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiVHlwZTEiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29kaW5nIikpO1Euc2V0KCJIZWx2IixlKX1DLnNldCgiRm9udCIsUSk7Y29uc3QgRT1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShzLG4se2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpnfSxDKSxbdSxkLGYscF09YztsZXQgbT1mLXUseT1wLWQ7aCUxODAhPTAmJihbbSx5XT1beSxtXSk7Y29uc3Qgdz1sLnNwbGl0KCJcbiIpLGI9Zy8xZTM7bGV0IEQ9LTEvMDtjb25zdCBTPVtdO2ZvcihsZXQgZSBvZiB3KXtjb25zdCB0PUUuZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpO1MucHVzaChlKTtsZXQgaT0wO2NvbnN0IGE9RS5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIGEpaSs9ZS53aWR0aCpiO0Q9TWF0aC5tYXgoRCxpKX1sZXQgaz0xO0Q+bSYmKGs9bS9EKTtsZXQgUj0xO2NvbnN0IE49YSpnLEc9MSpnLHg9Tip3Lmxlbmd0aDt4PnkmJihSPXkveCk7Y29uc3QgTT1nKk1hdGgubWluKGssUik7bGV0IFUsTCxKO3N3aXRjaChoKXtjYXNlIDA6Sj1bMSwwLDAsMV07TD1bY1swXSxjWzFdLG0seV07VT1bY1swXSxjWzNdLUddO2JyZWFrO2Nhc2UgOTA6Sj1bMCwxLC0xLDBdO0w9W2NbMV0sLWNbMl0sbSx5XTtVPVtjWzFdLC1jWzBdLUddO2JyZWFrO2Nhc2UgMTgwOko9Wy0xLDAsMCwtMV07TD1bLWNbMl0sLWNbM10sbSx5XTtVPVstY1syXSwtY1sxXS1HXTticmVhaztjYXNlIDI3MDpKPVswLC0xLDEsMF07TD1bLWNbM10sY1swXSxtLHldO1U9Wy1jWzNdLGNbMl0tR119Y29uc3QgSD1bInEiLGAke0ouam9pbigiICIpfSAwIDAgY21gLGAke0wuam9pbigiICIpfSByZSBXIG5gLCJCVCIsYCR7Z2V0UGRmQ29sb3IobywhMCl9YCxgMCBUYyAvSGVsdiAke251bWJlclRvU3RyaW5nKE0pfSBUZmBdO0gucHVzaChgJHtVLmpvaW4oIiAiKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKFNbMF0pfSkgVGpgKTtjb25zdCB2PW51bWJlclRvU3RyaW5nKE4pO2ZvcihsZXQgZT0xLHQ9Uy5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1TW2VdO0gucHVzaChgMCAtJHt2fSBUZCAoJHtlc2NhcGVTdHJpbmcodCl9KSBUamApfUgucHVzaCgiRVQiLCJRIik7Y29uc3QgWT1ILmpvaW4oIlxuIiksSz1uZXcgRGljdCh0KTtLLnNldCgiRm9ybVR5cGUiLDEpO0suc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtLLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7Sy5zZXQoIkJCb3giLGMpO0suc2V0KCJSZXNvdXJjZXMiLEMpO0suc2V0KCJNYXRyaXgiLFsxLDAsMCwxLC1jWzBdLC1jWzFdXSk7Y29uc3QgVD1uZXcgU3RyaW5nU3RyZWFtKFkpO1QuZGljdD1LO3JldHVybiBUfX1jbGFzcyBMaW5lQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9Tjt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IGE9bG9va3VwUmVjdCh0LmdldEFycmF5KCJMIiksWzAsMCwwLDBdKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPVV0aWwubm9ybWFsaXplUmVjdChhKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0scj10LmdldCgiQ0EiKSxzPWdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCksbj1zP2dldFBkZkNvbG9yQXJyYXkocyk6bnVsbCxvPW4/cjpudWxsLGc9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxjPTIqZyxoPVt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzBdLWMsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1sxXS1jLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMl0rYyx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzNdK2NdO1V0aWwuaW50ZXJzZWN0KHRoaXMucmVjdGFuZ2xlLGgpfHwodGhpcy5yZWN0YW5nbGU9aCk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYTpgJHtnfSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpuLHN0cm9rZUFscGhhOnIsZmlsbEFscGhhOm8scG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7YVswXX0gJHthWzFdfSBtYCxgJHthWzJdfSAke2FbM119IGxgLCJTIik7cmV0dXJuW3RbMF0ueC1nLHRbMV0ueCtnLHRbM10ueS1nLHRbMV0ueStnXX19KX19fWNsYXNzIFNxdWFyZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUc7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIikscj1nZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpLHM9cj9nZXRQZGZDb2xvckFycmF5KHIpOm51bGwsbj1zP2E6bnVsbDtpZigwPT09dGhpcy5ib3JkZXJTdHlsZS53aWR0aCYmIXMpcmV0dXJuO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6cyxzdHJva2VBbHBoYTphLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT10WzJdLngrdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLGE9dFsyXS55K3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbM10ueC10WzJdLngtdGhpcy5ib3JkZXJTdHlsZS53aWR0aCxuPXRbMV0ueS10WzNdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aDtlLnB1c2goYCR7aX0gJHthfSAke3J9ICR7bn0gcmVgKTtzP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX19Y2xhc3MgQ2lyY2xlQW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9eDtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIikscj1nZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpLHM9cj9nZXRQZGZDb2xvckFycmF5KHIpOm51bGwsbj1zP2E6bnVsbDtpZigwPT09dGhpcy5ib3JkZXJTdHlsZS53aWR0aCYmIXMpcmV0dXJuO2NvbnN0IG89NC8zKk1hdGgudGFuKE1hdGguUEkvOCk7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYTpgJHt0aGlzLmJvcmRlclN0eWxlLndpZHRofSB3YCxzdHJva2VDb2xvcjplLGZpbGxDb2xvcjpzLHN0cm9rZUFscGhhOmEsZmlsbEFscGhhOm4scG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntjb25zdCBpPXRbMF0ueCt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsYT10WzBdLnktdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLHI9dFszXS54LXRoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixuPXRbM10ueSt0aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsZz1pKyhyLWkpLzIsYz1hKyhuLWEpLzIsaD0oci1pKS8yKm8sbD0obi1hKS8yKm87ZS5wdXNoKGAke2d9ICR7bn0gbWAsYCR7ZytofSAke259ICR7cn0gJHtjK2x9ICR7cn0gJHtjfSBjYCxgJHtyfSAke2MtbH0gJHtnK2h9ICR7YX0gJHtnfSAke2F9IGNgLGAke2ctaH0gJHthfSAke2l9ICR7Yy1sfSAke2l9ICR7Y30gY2AsYCR7aX0gJHtjK2x9ICR7Zy1ofSAke259ICR7Z30gJHtufSBjYCwiaCIpO3M/ZS5wdXNoKCJCIik6ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX1jbGFzcyBQb2x5bGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPVU7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEudmVydGljZXM9W107aWYoISh0aGlzIGluc3RhbmNlb2YgUG9seWdvbkFubm90YXRpb24pKXt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzfWNvbnN0IGE9dC5nZXRBcnJheSgiVmVydGljZXMiKTtpZihpc051bWJlckFycmF5KGEsbnVsbCkpe2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0O2UrPTIpdGhpcy5kYXRhLnZlcnRpY2VzLnB1c2goe3g6YVtlXSx5OmFbZSsxXX0pO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9dGhpcy5jb2xvcj9nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IpOlswLDAsMF0sYT10LmdldCgiQ0EiKSxyPXRoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDEscz0yKnIsbj1bMS8wLDEvMCwtMS8wLC0xLzBdO2Zvcihjb25zdCBlIG9mIHRoaXMuZGF0YS52ZXJ0aWNlcyl7blswXT1NYXRoLm1pbihuWzBdLGUueC1zKTtuWzFdPU1hdGgubWluKG5bMV0sZS55LXMpO25bMl09TWF0aC5tYXgoblsyXSxlLngrcyk7blszXT1NYXRoLm1heChuWzNdLGUueStzKX1VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxuKXx8KHRoaXMucmVjdGFuZ2xlPW4pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7cn0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT10aGlzLmRhdGEudmVydGljZXM7Zm9yKGxldCB0PTAsYT1pLmxlbmd0aDt0PGE7dCsrKWUucHVzaChgJHtpW3RdLnh9ICR7aVt0XS55fSAkezA9PT10PyJtIjoibCJ9YCk7ZS5wdXNoKCJTIik7cmV0dXJuW3RbMF0ueCx0WzFdLngsdFszXS55LHRbMV0ueV19fSl9fX19Y2xhc3MgUG9seWdvbkFubm90YXRpb24gZXh0ZW5kcyBQb2x5bGluZUFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPU19fWNsYXNzIENhcmV0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUt9fWNsYXNzIElua0Fubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0LHhyZWY6aX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9VDt0aGlzLmRhdGEuaW5rTGlzdHM9W107Y29uc3QgYT10LmdldEFycmF5KCJJbmtMaXN0Iik7aWYoQXJyYXkuaXNBcnJheShhKSl7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7KytlKXt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaChbXSk7aWYoQXJyYXkuaXNBcnJheShhW2VdKSlmb3IobGV0IHQ9MCxyPWFbZV0ubGVuZ3RoO3Q8cjt0Kz0yKXtjb25zdCByPWkuZmV0Y2hJZlJlZihhW2VdW3RdKSxzPWkuZmV0Y2hJZlJlZihhW2VdW3QrMV0pOyJudW1iZXIiPT10eXBlb2YgciYmIm51bWJlciI9PXR5cGVvZiBzJiZ0aGlzLmRhdGEuaW5rTGlzdHNbZV0ucHVzaCh7eDpyLHk6c30pfX1pZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIikscj10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLHM9MipyLG49WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGEuaW5rTGlzdHMpZm9yKGNvbnN0IHQgb2YgZSl7blswXT1NYXRoLm1pbihuWzBdLHQueC1zKTtuWzFdPU1hdGgubWluKG5bMV0sdC55LXMpO25bMl09TWF0aC5tYXgoblsyXSx0Lngrcyk7blszXT1NYXRoLm1heChuWzNdLHQueStzKX1VdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxuKXx8KHRoaXMucmVjdGFuZ2xlPW4pO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6YCR7cn0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy5kYXRhLmlua0xpc3RzKXtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspZS5wdXNoKGAke3RbaV0ueH0gJHt0W2ldLnl9ICR7MD09PWk/Im0iOiJsIn1gKTtlLnB1c2goIlMiKX1yZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6aSxhcDphfSl7Y29uc3R7Y29sb3I6cixvcGFjaXR5OnMscGF0aHM6bixvdXRsaW5lczpvLHJlY3Q6Zyxyb3RhdGlvbjpjLHRoaWNrbmVzczpofT1lLGw9bmV3IERpY3QodCk7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtsLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkluayIpKTtsLnNldCgiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTtsLnNldCgiUmVjdCIsZyk7bC5zZXQoIklua0xpc3QiLG8/LnBvaW50c3x8bi5tYXAoKGU9PmUucG9pbnRzKSkpO2wuc2V0KCJGIiw0KTtsLnNldCgiUm90YXRlIixjKTtvJiZsLnNldCgiSVQiLE5hbWUuZ2V0KCJJbmtIaWdobGlnaHQiKSk7Y29uc3QgQz1uZXcgRGljdCh0KTtsLnNldCgiQlMiLEMpO0Muc2V0KCJXIixoKTtsLnNldCgiQyIsQXJyYXkuZnJvbShyLChlPT5lLzI1NSkpKTtsLnNldCgiQ0EiLHMpO2NvbnN0IFE9bmV3IERpY3QodCk7bC5zZXQoIkFQIixRKTtpP1Euc2V0KCJOIixpKTpRLnNldCgiTiIsYSk7cmV0dXJuIGx9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGkpe2lmKGUub3V0bGluZXMpcmV0dXJuIHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsaSk7Y29uc3R7Y29sb3I6YSxyZWN0OnIscGF0aHM6cyx0aGlja25lc3M6bixvcGFjaXR5Om99PWUsZz1bYCR7bn0gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihhLCExKX1gXTsxIT09byYmZy5wdXNoKCIvUjAgZ3MiKTtjb25zdCBjPVtdO2Zvcihjb25zdHtiZXppZXI6ZX1vZiBzKXtjLmxlbmd0aD0wO2MucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzBdKX0gJHtudW1iZXJUb1N0cmluZyhlWzFdKX0gbWApO2lmKDI9PT1lLmxlbmd0aCljLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVswXSl9ICR7bnVtYmVyVG9TdHJpbmcoZVsxXSl9IGwgU2ApO2Vsc2V7Zm9yKGxldCB0PTIsaT1lLmxlbmd0aDt0PGk7dCs9Nil7Y29uc3QgaT1lLnNsaWNlKHQsdCs2KS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKTtjLnB1c2goYCR7aX0gY2ApfWMucHVzaCgiUyIpfWcucHVzaChjLmpvaW4oIlxuIikpfWNvbnN0IGg9Zy5qb2luKCJcbiIpLGw9bmV3IERpY3QodCk7bC5zZXQoIkZvcm1UeXBlIiwxKTtsLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkZvcm0iKSk7bC5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJYT2JqZWN0IikpO2wuc2V0KCJCQm94IixyKTtsLnNldCgiTGVuZ3RoIixoLmxlbmd0aCk7aWYoMSE9PW8pe2NvbnN0IGU9bmV3IERpY3QodCksaT1uZXcgRGljdCh0KSxhPW5ldyBEaWN0KHQpO2Euc2V0KCJDQSIsbyk7YS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSk7aS5zZXQoIlIwIixhKTtlLnNldCgiRXh0R1N0YXRlIixpKTtsLnNldCgiUmVzb3VyY2VzIixlKX1jb25zdCBDPW5ldyBTdHJpbmdTdHJlYW0oaCk7Qy5kaWN0PWw7cmV0dXJuIEN9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW1Gb3JIaWdobGlnaHQoZSx0LGkpe2NvbnN0e2NvbG9yOmEscmVjdDpyLG91dGxpbmVzOntvdXRsaW5lOnN9LG9wYWNpdHk6bn09ZSxvPVtgJHtnZXRQZGZDb2xvcihhLCEwKX1gLCIvUjAgZ3MiXTtvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoc1s0XSl9ICR7bnVtYmVyVG9TdHJpbmcoc1s1XSl9IG1gKTtmb3IobGV0IGU9Nix0PXMubGVuZ3RoO2U8dDtlKz02KWlmKGlzTmFOKHNbZV0pfHxudWxsPT09c1tlXSlvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoc1tlKzRdKX0gJHtudW1iZXJUb1N0cmluZyhzW2UrNV0pfSBsYCk7ZWxzZXtjb25zdCB0PXMuc2xpY2UoZSxlKzYpLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpO28ucHVzaChgJHt0fSBjYCl9by5wdXNoKCJoIGYiKTtjb25zdCBnPW8uam9pbigiXG4iKSxjPW5ldyBEaWN0KHQpO2Muc2V0KCJGb3JtVHlwZSIsMSk7Yy5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2Muc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtjLnNldCgiQkJveCIscik7Yy5zZXQoIkxlbmd0aCIsZy5sZW5ndGgpO2NvbnN0IGg9bmV3IERpY3QodCksbD1uZXcgRGljdCh0KTtoLnNldCgiRXh0R1N0YXRlIixsKTtjLnNldCgiUmVzb3VyY2VzIixoKTtjb25zdCBDPW5ldyBEaWN0KHQpO2wuc2V0KCJSMCIsQyk7Qy5zZXQoIkJNIixOYW1lLmdldCgiTXVsdGlwbHkiKSk7aWYoMSE9PW4pe0Muc2V0KCJjYSIsbik7Qy5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSl9Y29uc3QgUT1uZXcgU3RyaW5nU3RyZWFtKGcpO1EuZGljdD1jO3JldHVybiBRfX1jbGFzcyBIaWdobGlnaHRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1MO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7Y29uc3QgZT10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTtpZighdGhpcy5hcHBlYXJhbmNlfHwhZT8uaGFzKCJFeHRHU3RhdGUiKSl7dGhpcy5hcHBlYXJhbmNlJiZ3YXJuKCJIaWdobGlnaHRBbm5vdGF0aW9uIC0gaWdub3JpbmcgYnVpbHQtaW4gYXBwZWFyYW5jZSBzdHJlYW0uIik7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzEsMSwwXSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZmlsbENvbG9yOmUsYmxlbmRNb2RlOiJNdWx0aXBseSIsZmlsbEFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFswXS54fSAke3RbMF0ueX0gbWAsYCR7dFsxXS54fSAke3RbMV0ueX0gbGAsYCR7dFszXS54fSAke3RbM10ueX0gbGAsYCR7dFsyXS54fSAke3RbMl0ueX0gbGAsImYiKTtyZXR1cm5bdFswXS54LHRbMV0ueCx0WzNdLnksdFsxXS55XX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1zdGF0aWMgY3JlYXRlTmV3RGljdChlLHQse2FwUmVmOmksYXA6YX0pe2NvbnN0e2NvbG9yOnIsb3BhY2l0eTpzLHJlY3Q6bixyb3RhdGlvbjpvLHVzZXI6ZyxxdWFkUG9pbnRzOmN9PWUsaD1uZXcgRGljdCh0KTtoLnNldCgiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2guc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiSGlnaGxpZ2h0IikpO2guc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO2guc2V0KCJSZWN0IixuKTtoLnNldCgiRiIsNCk7aC5zZXQoIkJvcmRlciIsWzAsMCwwXSk7aC5zZXQoIlJvdGF0ZSIsbyk7aC5zZXQoIlF1YWRQb2ludHMiLGMpO2guc2V0KCJDIixBcnJheS5mcm9tKHIsKGU9PmUvMjU1KSkpO2guc2V0KCJDQSIscyk7ZyYmaC5zZXQoIlQiLGlzQXNjaWkoZyk/ZzpzdHJpbmdUb1VURjE2U3RyaW5nKGcsITApKTtpZihpfHxhKXtjb25zdCBlPW5ldyBEaWN0KHQpO2guc2V0KCJBUCIsZSk7ZS5zZXQoIk4iLGl8fGEpfXJldHVybiBofXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtjb25zdHtjb2xvcjphLHJlY3Q6cixvdXRsaW5lczpzLG9wYWNpdHk6bn09ZSxvPVtgJHtnZXRQZGZDb2xvcihhLCEwKX1gLCIvUjAgZ3MiXSxnPVtdO2Zvcihjb25zdCBlIG9mIHMpe2cubGVuZ3RoPTA7Zy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbMF0pfSAke251bWJlclRvU3RyaW5nKGVbMV0pfSBtYCk7Zm9yKGxldCB0PTIsaT1lLmxlbmd0aDt0PGk7dCs9MilnLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVt0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVt0KzFdKX0gbGApO2cucHVzaCgiaCIpO28ucHVzaChnLmpvaW4oIlxuIikpfW8ucHVzaCgiZioiKTtjb25zdCBjPW8uam9pbigiXG4iKSxoPW5ldyBEaWN0KHQpO2guc2V0KCJGb3JtVHlwZSIsMSk7aC5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGb3JtIikpO2guc2V0KCJUeXBlIixOYW1lLmdldCgiWE9iamVjdCIpKTtoLnNldCgiQkJveCIscik7aC5zZXQoIkxlbmd0aCIsYy5sZW5ndGgpO2NvbnN0IGw9bmV3IERpY3QodCksQz1uZXcgRGljdCh0KTtsLnNldCgiRXh0R1N0YXRlIixDKTtoLnNldCgiUmVzb3VyY2VzIixsKTtjb25zdCBRPW5ldyBEaWN0KHQpO0Muc2V0KCJSMCIsUSk7US5zZXQoIkJNIixOYW1lLmdldCgiTXVsdGlwbHkiKSk7aWYoMSE9PW4pe1Euc2V0KCJjYSIsbik7US5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJFeHRHU3RhdGUiKSl9Y29uc3QgRT1uZXcgU3RyaW5nU3RyZWFtKGMpO0UuZGljdD1oO3JldHVybiBFfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1KO2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6IltdIDAgZCAwLjU3MSB3IixzdHJva2VDb2xvcjplLHN0cm9rZUFscGhhOmEscG9pbnRzQ2FsbGJhY2s6KGUsdCk9PntlLnB1c2goYCR7dFsyXS54fSAke3RbMl0ueSsxLjN9IG1gLGAke3RbM10ueH0gJHt0WzNdLnkrMS4zfSBsYCwiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTcXVpZ2dseUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUg7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPXRoaXMuY29sb3I/Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yKTpbMCwwLDBdLGE9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6aSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTphLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgaT0odFswXS55LXRbMl0ueSkvNjtsZXQgYT1pLHI9dFsyXS54O2NvbnN0IHM9dFsyXS55LG49dFszXS54O2UucHVzaChgJHtyfSAke3MrYX0gbWApO2Rve3IrPTI7YT0wPT09YT9pOjA7ZS5wdXNoKGAke3J9ICR7cythfSBsYCl9d2hpbGUocjxuKTtlLnB1c2goIlMiKTtyZXR1cm5bdFsyXS54LG4scy0yKmkscysyKmldfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjppfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT12O2lmKHRoaXMuZGF0YS5xdWFkUG9pbnRzPWdldFF1YWRQb2ludHModCxudWxsKSl7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT10aGlzLmNvbG9yP2dldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcik6WzAsMCwwXSxhPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmksZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6YSxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaCgodFswXS54K3RbMl0ueCkvMisiICIrKHRbMF0ueSt0WzJdLnkpLzIrIiBtIiwodFsxXS54K3RbM10ueCkvMisiICIrKHRbMV0ueSt0WzNdLnkpLzIrIiBsIiwiUyIpO3JldHVyblt0WzBdLngsdFsxXS54LHRbM10ueSx0WzFdLnldfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfX1jbGFzcyBTdGFtcEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ZO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITF9c3RhdGljIGFzeW5jIGNyZWF0ZUltYWdlKGUsdCl7Y29uc3R7d2lkdGg6aSxoZWlnaHQ6YX09ZSxyPW5ldyBPZmZzY3JlZW5DYW52YXMoaSxhKSxzPXIuZ2V0Q29udGV4dCgiMmQiLHthbHBoYTohMH0pO3MuZHJhd0ltYWdlKGUsMCwwKTtjb25zdCBuPXMuZ2V0SW1hZ2VEYXRhKDAsMCxpLGEpLmRhdGEsbz1uZXcgVWludDMyQXJyYXkobi5idWZmZXIpLGc9by5zb21lKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuP2U9PmU+Pj4yNCE9MjU1OmU9PjI1NSE9KDI1NSZlKSk7aWYoZyl7cy5maWxsU3R5bGU9IndoaXRlIjtzLmZpbGxSZWN0KDAsMCxpLGEpO3MuZHJhd0ltYWdlKGUsMCwwKX1jb25zdCBjPXIuY29udmVydFRvQmxvYih7dHlwZToiaW1hZ2UvanBlZyIscXVhbGl0eToxfSkudGhlbigoZT0+ZS5hcnJheUJ1ZmZlcigpKSksaD1OYW1lLmdldCgiWE9iamVjdCIpLGw9TmFtZS5nZXQoIkltYWdlIiksQz1uZXcgRGljdCh0KTtDLnNldCgiVHlwZSIsaCk7Qy5zZXQoIlN1YnR5cGUiLGwpO0Muc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtDLnNldCgiQ29sb3JTcGFjZSIsTmFtZS5nZXQoIkRldmljZVJHQiIpKTtDLnNldCgiRmlsdGVyIixOYW1lLmdldCgiRENURGVjb2RlIikpO0Muc2V0KCJCQm94IixbMCwwLGksYV0pO0Muc2V0KCJXaWR0aCIsaSk7Qy5zZXQoIkhlaWdodCIsYSk7bGV0IFE9bnVsbDtpZihnKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KG8ubGVuZ3RoKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbilmb3IobGV0IHQ9MCxpPW8ubGVuZ3RoO3Q8aTt0KyspZVt0XT1vW3RdPj4+MjQ7ZWxzZSBmb3IobGV0IHQ9MCxpPW8ubGVuZ3RoO3Q8aTt0KyspZVt0XT0yNTUmb1t0XTtjb25zdCByPW5ldyBEaWN0KHQpO3Iuc2V0KCJUeXBlIixoKTtyLnNldCgiU3VidHlwZSIsbCk7ci5zZXQoIkJpdHNQZXJDb21wb25lbnQiLDgpO3Iuc2V0KCJDb2xvclNwYWNlIixOYW1lLmdldCgiRGV2aWNlR3JheSIpKTtyLnNldCgiV2lkdGgiLGkpO3Iuc2V0KCJIZWlnaHQiLGEpO1E9bmV3IFN0cmVhbShlLDAsMCxyKX1yZXR1cm57aW1hZ2VTdHJlYW06bmV3IFN0cmVhbShhd2FpdCBjLDAsMCxDKSxzbWFza1N0cmVhbTpRLHdpZHRoOmksaGVpZ2h0OmF9fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6aSxhcDphfSl7Y29uc3R7cmVjdDpyLHJvdGF0aW9uOnMsdXNlcjpufT1lLG89bmV3IERpY3QodCk7by5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtvLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIlN0YW1wIikpO28uc2V0KCJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZSgpfWApO28uc2V0KCJSZWN0IixyKTtvLnNldCgiRiIsNCk7by5zZXQoIkJvcmRlciIsWzAsMCwwXSk7by5zZXQoIlJvdGF0ZSIscyk7biYmby5zZXQoIlQiLGlzQXNjaWkobik/bjpzdHJpbmdUb1VURjE2U3RyaW5nKG4sITApKTtpZihpfHxhKXtjb25zdCBlPW5ldyBEaWN0KHQpO28uc2V0KCJBUCIsZSk7aT9lLnNldCgiTiIsaSk6ZS5zZXQoIk4iLGEpfXJldHVybiBvfXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxpKXtjb25zdHtyb3RhdGlvbjphfT1lLHtpbWFnZVJlZjpyLHdpZHRoOnMsaGVpZ2h0Om59PWkuaW1hZ2Usbz1uZXcgRGljdCh0KSxnPW5ldyBEaWN0KHQpO28uc2V0KCJYT2JqZWN0IixnKTtnLnNldCgiSW0wIixyKTtjb25zdCBjPWBxICR7c30gMCAwICR7bn0gMCAwIGNtIC9JbTAgRG8gUWAsaD1uZXcgRGljdCh0KTtoLnNldCgiRm9ybVR5cGUiLDEpO2guc2V0KCJTdWJ0eXBlIixOYW1lLmdldCgiRm9ybSIpKTtoLnNldCgiVHlwZSIsTmFtZS5nZXQoIlhPYmplY3QiKSk7aC5zZXQoIkJCb3giLFswLDAscyxuXSk7aC5zZXQoIlJlc291cmNlcyIsbyk7aWYoYSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChhLHMsbik7aC5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgbD1uZXcgU3RyaW5nU3RyZWFtKGMpO2wuZGljdD1oO3JldHVybiBsfX1jbGFzcyBGaWxlQXR0YWNobWVudEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOml9PWUsYT1uZXcgRmlsZVNwZWModC5nZXQoIkZTIiksaSk7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPU87dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEuZmlsZT1hLnNlcmlhbGl6YWJsZTtjb25zdCByPXQuZ2V0KCJOYW1lIik7dGhpcy5kYXRhLm5hbWU9ciBpbnN0YW5jZW9mIE5hbWU/c3RyaW5nVG9QREZTdHJpbmcoci5uYW1lKToiUHVzaFBpbiI7Y29uc3Qgcz10LmdldCgiY2EiKTt0aGlzLmRhdGEuZmlsbEFscGhhPSJudW1iZXIiPT10eXBlb2YgcyYmcz49MCYmczw9MT9zOm51bGx9fWZ1bmN0aW9uIGRlY29kZVN0cmluZyhlKXt0cnl7cmV0dXJuIHN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaCh0KXt3YXJuKGBVVEYtOCBkZWNvZGluZyBmYWlsZWQ6ICIke3R9Ii5gKTtyZXR1cm4gZX19Y2xhc3MgRGF0YXNldFhNTFBhcnNlciBleHRlbmRzIFNpbXBsZVhNTFBhcnNlcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLm5vZGU9bnVsbH1vbkVuZEVsZW1lbnQoZSl7Y29uc3QgdD1zdXBlci5vbkVuZEVsZW1lbnQoZSk7aWYodCYmInhmYTpkYXRhc2V0cyI9PT1lKXt0aGlzLm5vZGU9dDt0aHJvdyBuZXcgRXJyb3IoIkFib3J0aW5nIERhdGFzZXRYTUxQYXJzZXIuIil9fX1jbGFzcyBEYXRhc2V0UmVhZGVye2NvbnN0cnVjdG9yKGUpe2lmKGUuZGF0YXNldHMpdGhpcy5ub2RlPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZS5kYXRhc2V0cykuZG9jdW1lbnRFbGVtZW50O2Vsc2V7Y29uc3QgdD1uZXcgRGF0YXNldFhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pO3RyeXt0LnBhcnNlRnJvbVN0cmluZyhlWyJ4ZHA6eGRwIl0pfWNhdGNoe310aGlzLm5vZGU9dC5ub2RlfX1nZXRWYWx1ZShlKXtpZighdGhpcy5ub2RlfHwhZSlyZXR1cm4iIjtjb25zdCB0PXRoaXMubm9kZS5zZWFyY2hOb2RlKHBhcnNlWEZBUGF0aChlKSwwKTtpZighdClyZXR1cm4iIjtjb25zdCBpPXQuZmlyc3RDaGlsZDtyZXR1cm4idmFsdWUiPT09aT8ubm9kZU5hbWU/dC5jaGlsZHJlbi5tYXAoKGU9PmRlY29kZVN0cmluZyhlLnRleHRDb250ZW50KSkpOmRlY29kZVN0cmluZyh0LnRleHRDb250ZW50KX19Y2xhc3MgWFJlZnsjSz1udWxsO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5zdHJlYW09ZTt0aGlzLnBkZk1hbmFnZXI9dDt0aGlzLmVudHJpZXM9W107dGhpcy5feHJlZlN0bXM9bmV3IFNldDt0aGlzLl9jYWNoZU1hcD1uZXcgTWFwO3RoaXMuX3BlbmRpbmdSZWZzPW5ldyBSZWZTZXQ7dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT1udWxsO3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1nZXROZXdQZXJzaXN0ZW50UmVmKGUpe251bGw9PT10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtJiYodGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxKTtjb25zdCB0PXRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0rKzt0aGlzLl9jYWNoZU1hcC5zZXQodCxlKTtyZXR1cm4gUmVmLmdldCh0LDApfWdldE5ld1RlbXBvcmFyeVJlZigpe2lmKG51bGw9PT10aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0pe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT10aGlzLmVudHJpZXMubGVuZ3RofHwxO2lmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW0pe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bmV3IE1hcDtmb3IobGV0IGU9dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtO2U8dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bTtlKyspe3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUuc2V0KGUsdGhpcy5fY2FjaGVNYXAuZ2V0KGUpKTt0aGlzLl9jYWNoZU1hcC5kZWxldGUoZSl9fX1yZXR1cm4gUmVmLmdldCh0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW0rKywwKX1yZXNldE5ld1RlbXBvcmFyeVJlZigpe3RoaXMuX25ld1RlbXBvcmFyeVJlZk51bT1udWxsO2lmKHRoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGUpZm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlKXRoaXMuX2NhY2hlTWFwLnNldChlLHQpO3RoaXMuX3BlcnNpc3RlbnRSZWZzQ2FjaGU9bnVsbH1zZXRTdGFydFhSZWYoZSl7dGhpcy5zdGFydFhSZWZRdWV1ZT1bZV19cGFyc2UoZT0hMSl7bGV0IHQsaSxhO2lmKGUpe3dhcm4oIkluZGV4aW5nIGFsbCBQREYgb2JqZWN0cyIpO3Q9dGhpcy5pbmRleE9iamVjdHMoKX1lbHNlIHQ9dGhpcy5yZWFkWFJlZigpO3QuYXNzaWduWHJlZih0aGlzKTt0aGlzLnRyYWlsZXI9dDt0cnl7aT10LmdldCgiRW5jcnlwdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJFbmNyeXB0IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihpIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiSUQiKSxhPWU/Lmxlbmd0aD9lWzBdOiIiO2kuc3VwcHJlc3NFbmNyeXB0aW9uPSEwO3RoaXMuZW5jcnlwdD1uZXcgQ2lwaGVyVHJhbnNmb3JtRmFjdG9yeShpLGEsdGhpcy5wZGZNYW5hZ2VyLnBhc3N3b3JkKX10cnl7YT10LmdldCgiUm9vdCIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJSb290IiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZihhIGluc3RhbmNlb2YgRGljdCl0cnl7aWYoYS5nZXQoIlBhZ2VzIilpbnN0YW5jZW9mIERpY3Qpe3RoaXMucm9vdD1hO3JldHVybn19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgWFJlZi5wYXJzZSAtIEludmFsaWQgIlBhZ2VzIiByZWZlcmVuY2U6ICIke2V9Ii5gKX1pZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Rocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFJvb3QgcmVmZXJlbmNlLiIpfXByb2Nlc3NYUmVmVGFibGUoZSl7InRhYmxlU3RhdGUiaW4gdGhpc3x8KHRoaXMudGFibGVTdGF0ZT17ZW50cnlOdW06MCxzdHJlYW1Qb3M6ZS5sZXhlci5zdHJlYW0ucG9zLHBhcnNlckJ1ZjE6ZS5idWYxLHBhcnNlckJ1ZjI6ZS5idWYyfSk7aWYoIWlzQ21kKHRoaXMucmVhZFhSZWZUYWJsZShlKSwidHJhaWxlciIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgZmluZCB0cmFpbGVyIGRpY3Rpb25hcnkiKTtsZXQgdD1lLmdldE9iaigpO3QgaW5zdGFuY2VvZiBEaWN0fHwhdC5kaWN0fHwodD10LmRpY3QpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHRhYmxlOiBjb3VsZCBub3QgcGFyc2UgdHJhaWxlciBkaWN0aW9uYXJ5Iik7ZGVsZXRlIHRoaXMudGFibGVTdGF0ZTtyZXR1cm4gdH1yZWFkWFJlZlRhYmxlKGUpe2NvbnN0IHQ9ZS5sZXhlci5zdHJlYW0saT10aGlzLnRhYmxlU3RhdGU7dC5wb3M9aS5zdHJlYW1Qb3M7ZS5idWYxPWkucGFyc2VyQnVmMTtlLmJ1ZjI9aS5wYXJzZXJCdWYyO2xldCBhO2Zvcig7Oyl7aWYoISgiZmlyc3RFbnRyeU51bSJpbiBpKXx8ISgiZW50cnlDb3VudCJpbiBpKSl7aWYoaXNDbWQoYT1lLmdldE9iaigpLCJ0cmFpbGVyIikpYnJlYWs7aS5maXJzdEVudHJ5TnVtPWE7aS5lbnRyeUNvdW50PWUuZ2V0T2JqKCl9bGV0IHI9aS5maXJzdEVudHJ5TnVtO2NvbnN0IHM9aS5lbnRyeUNvdW50O2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpfHwhTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogd3JvbmcgdHlwZXMgaW4gc3Vic2VjdGlvbiBoZWFkZXIiKTtmb3IobGV0IGE9aS5lbnRyeU51bTthPHM7YSsrKXtpLnN0cmVhbVBvcz10LnBvcztpLmVudHJ5TnVtPWE7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2NvbnN0IG49e307bi5vZmZzZXQ9ZS5nZXRPYmooKTtuLmdlbj1lLmdldE9iaigpO2NvbnN0IG89ZS5nZXRPYmooKTtpZihvIGluc3RhbmNlb2YgQ21kKXN3aXRjaChvLmNtZCl7Y2FzZSJmIjpuLmZyZWU9ITA7YnJlYWs7Y2FzZSJuIjpuLnVuY29tcHJlc3NlZD0hMH1pZighTnVtYmVyLmlzSW50ZWdlcihuLm9mZnNldCl8fCFOdW1iZXIuaXNJbnRlZ2VyKG4uZ2VuKXx8IW4uZnJlZSYmIW4udW5jb21wcmVzc2VkKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBlbnRyeSBpbiBYUmVmIHN1YnNlY3Rpb246ICR7cn0sICR7c31gKTswPT09YSYmbi5mcmVlJiYxPT09ciYmKHI9MCk7dGhpcy5lbnRyaWVzW2Ercl18fCh0aGlzLmVudHJpZXNbYStyXT1uKX1pLmVudHJ5TnVtPTA7aS5zdHJlYW1Qb3M9dC5wb3M7aS5wYXJzZXJCdWYxPWUuYnVmMTtpLnBhcnNlckJ1ZjI9ZS5idWYyO2RlbGV0ZSBpLmZpcnN0RW50cnlOdW07ZGVsZXRlIGkuZW50cnlDb3VudH1pZih0aGlzLmVudHJpZXNbMF0mJiF0aGlzLmVudHJpZXNbMF0uZnJlZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogdW5leHBlY3RlZCBmaXJzdCBvYmplY3QiKTtyZXR1cm4gYX1wcm9jZXNzWFJlZlN0cmVhbShlKXtpZighKCJzdHJlYW1TdGF0ZSJpbiB0aGlzKSl7Y29uc3QgdD1lLmRpY3QsaT10LmdldCgiVyIpO2xldCBhPXQuZ2V0KCJJbmRleCIpO2F8fChhPVswLHQuZ2V0KCJTaXplIildKTt0aGlzLnN0cmVhbVN0YXRlPXtlbnRyeVJhbmdlczphLGJ5dGVXaWR0aHM6aSxlbnRyeU51bTowLHN0cmVhbVBvczplLnBvc319dGhpcy5yZWFkWFJlZlN0cmVhbShlKTtkZWxldGUgdGhpcy5zdHJlYW1TdGF0ZTtyZXR1cm4gZS5kaWN0fXJlYWRYUmVmU3RyZWFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW1TdGF0ZTtlLnBvcz10LnN0cmVhbVBvcztjb25zdFtpLGEscl09dC5ieXRlV2lkdGhzLHM9dC5lbnRyeVJhbmdlcztmb3IoO3MubGVuZ3RoPjA7KXtjb25zdFtuLG9dPXM7aWYoIU51bWJlci5pc0ludGVnZXIobil8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtufSwgJHtvfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpfHwhTnVtYmVyLmlzSW50ZWdlcihhKXx8IU51bWJlci5pc0ludGVnZXIocikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgZmllbGRzIGxlbmd0aDogJHtufSwgJHtvfWApO2ZvcihsZXQgcz10LmVudHJ5TnVtO3M8bzsrK3Mpe3QuZW50cnlOdW09czt0LnN0cmVhbVBvcz1lLnBvcztsZXQgbz0wLGc9MCxjPTA7Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAndHlwZScuIik7bz1vPDw4fHR9MD09PWkmJihvPTEpO2ZvcihsZXQgdD0wO3Q8YTsrK3Qpe2NvbnN0IHQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7Zz1nPDw4fHR9Zm9yKGxldCB0PTA7dDxyOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnZ2VuZXJhdGlvbicuIik7Yz1jPDw4fHR9Y29uc3QgaD17fTtoLm9mZnNldD1nO2guZ2VuPWM7c3dpdGNoKG8pe2Nhc2UgMDpoLmZyZWU9ITA7YnJlYWs7Y2FzZSAxOmgudW5jb21wcmVzc2VkPSEwO2JyZWFrO2Nhc2UgMjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIGVudHJ5IHR5cGU6ICR7b31gKX10aGlzLmVudHJpZXNbbitzXXx8KHRoaXMuZW50cmllc1tuK3NdPWgpfXQuZW50cnlOdW09MDt0LnN0cmVhbVBvcz1lLnBvcztzLnNwbGljZSgwLDIpfX1pbmRleE9iamVjdHMoKXtmdW5jdGlvbiByZWFkVG9rZW4oZSx0KXtsZXQgaT0iIixhPWVbdF07Zm9yKDsxMCE9PWEmJjEzIT09YSYmNjAhPT1hJiYhKCsrdD49ZS5sZW5ndGgpOyl7aSs9U3RyaW5nLmZyb21DaGFyQ29kZShhKTthPWVbdF19cmV0dXJuIGl9ZnVuY3Rpb24gc2tpcFVudGlsKGUsdCxpKXtjb25zdCBhPWkubGVuZ3RoLHI9ZS5sZW5ndGg7bGV0IHM9MDtmb3IoO3Q8cjspe2xldCByPTA7Zm9yKDtyPGEmJmVbdCtyXT09PWlbcl07KSsrcjtpZihyPj1hKWJyZWFrO3QrKztzKyt9cmV0dXJuIHN9Y29uc3QgZT0vXGIoZW5kb2JqfFxkK1xzK1xkK1xzK29ianx4cmVmfHRyYWlsZXJccyo8PClcYi9nLHQ9L1xiKHN0YXJ0eHJlZnxcZCtccytcZCtccytvYmopXGIvZyxpPS9eKFxkKylccysoXGQrKVxzK29ialxiLyxhPW5ldyBVaW50OEFycmF5KFsxMTYsMTE0LDk3LDEwNSwxMDgsMTAxLDExNF0pLHI9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxzPW5ldyBVaW50OEFycmF5KFs0Nyw4OCw4MiwxMDEsMTAyXSk7dGhpcy5lbnRyaWVzLmxlbmd0aD0wO3RoaXMuX2NhY2hlTWFwLmNsZWFyKCk7Y29uc3Qgbj10aGlzLnN0cmVhbTtuLnBvcz0wO2NvbnN0IG89bi5nZXRCeXRlcygpLGc9Ynl0ZXNUb1N0cmluZyhvKSxjPW8ubGVuZ3RoO2xldCBoPW4uc3RhcnQ7Y29uc3QgbD1bXSxDPVtdO2Zvcig7aDxjOyl7bGV0IFE9b1toXTtpZig5PT09UXx8MTA9PT1RfHwxMz09PVF8fDMyPT09USl7KytoO2NvbnRpbnVlfWlmKDM3PT09USl7ZG97KytoO2lmKGg+PWMpYnJlYWs7UT1vW2hdfXdoaWxlKDEwIT09USYmMTMhPT1RKTtjb250aW51ZX1jb25zdCBFPXJlYWRUb2tlbihvLGgpO2xldCB1O2lmKEUuc3RhcnRzV2l0aCgieHJlZiIpJiYoND09PUUubGVuZ3RofHwvXHMvLnRlc3QoRVs0XSkpKXtoKz1za2lwVW50aWwobyxoLGEpO2wucHVzaChoKTtoKz1za2lwVW50aWwobyxoLHIpfWVsc2UgaWYodT1pLmV4ZWMoRSkpe2NvbnN0IHQ9MHx1WzFdLGk9MHx1WzJdLGE9aCtFLmxlbmd0aDtsZXQgcixsPSExO2lmKHRoaXMuZW50cmllc1t0XSl7aWYodGhpcy5lbnRyaWVzW3RdLmdlbj09PWkpdHJ5e25ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihuLm1ha2VTdWJTdHJlYW0oYSkpfSkuZ2V0T2JqKCk7bD0hMH1jYXRjaChlKXtlIGluc3RhbmNlb2YgUGFyc2VyRU9GRXhjZXB0aW9uP3dhcm4oYGluZGV4T2JqZWN0cyAtLSBjaGVja2luZyBvYmplY3QgKCR7RX0pOiAiJHtlfSIuYCk6bD0hMH19ZWxzZSBsPSEwO2wmJih0aGlzLmVudHJpZXNbdF09e29mZnNldDpoLW4uc3RhcnQsZ2VuOmksdW5jb21wcmVzc2VkOiEwfSk7ZS5sYXN0SW5kZXg9YTtjb25zdCBRPWUuZXhlYyhnKTtpZihRKXtyPWUubGFzdEluZGV4KzEtaDtpZigiZW5kb2JqIiE9PVFbMV0pe3dhcm4oYGluZGV4T2JqZWN0czogRm91bmQgIiR7UVsxXX0iIGluc2lkZSBvZiBhbm90aGVyICJvYmoiLCBjYXVzZWQgYnkgbWlzc2luZyAiZW5kb2JqIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtyLT1RWzFdLmxlbmd0aCsxfX1lbHNlIHI9Yy1oO2NvbnN0IGQ9by5zdWJhcnJheShoLGgrciksZj1za2lwVW50aWwoZCwwLHMpO2lmKGY8ciYmZFtmKzVdPDY0KXtDLnB1c2goaC1uLnN0YXJ0KTt0aGlzLl94cmVmU3Rtcy5hZGQoaC1uLnN0YXJ0KX1oKz1yfWVsc2UgaWYoRS5zdGFydHNXaXRoKCJ0cmFpbGVyIikmJig3PT09RS5sZW5ndGh8fC9ccy8udGVzdChFWzddKSkpe2wucHVzaChoKTtjb25zdCBlPWgrRS5sZW5ndGg7bGV0IGk7dC5sYXN0SW5kZXg9ZTtjb25zdCBhPXQuZXhlYyhnKTtpZihhKXtpPXQubGFzdEluZGV4KzEtaDtpZigic3RhcnR4cmVmIiE9PWFbMV0pe3dhcm4oYGluZGV4T2JqZWN0czogRm91bmQgIiR7YVsxXX0iIGFmdGVyICJ0cmFpbGVyIiwgY2F1c2VkIGJ5IG1pc3NpbmcgInN0YXJ0eHJlZiIgLS0gdHJ5aW5nIHRvIHJlY292ZXIuYCk7aS09YVsxXS5sZW5ndGgrMX19ZWxzZSBpPWMtaDtoKz1pfWVsc2UgaCs9RS5sZW5ndGgrMX1mb3IoY29uc3QgZSBvZiBDKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSk7dGhpcy5yZWFkWFJlZighMCl9Y29uc3QgUT1bXTtsZXQgRSx1LGQ9ITE7Zm9yKGNvbnN0IGUgb2YgbCl7bi5wb3M9ZTtjb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihuKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwLHJlY292ZXJ5TW9kZTohMH0pO2lmKCFpc0NtZCh0LmdldE9iaigpLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3QgaT10LmdldE9iaigpO2lmKGkgaW5zdGFuY2VvZiBEaWN0KXtRLnB1c2goaSk7aS5oYXMoIkVuY3J5cHQiKSYmKGQ9ITApfX1mb3IoY29uc3QgZSBvZlsuLi5RLCJnZW5GYWxsYmFjayIsLi4uUV0pe2lmKCJnZW5GYWxsYmFjayI9PT1lKXtpZighdSlicmVhazt0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2s9ITA7Y29udGludWV9bGV0IHQ9ITE7dHJ5e2NvbnN0IGk9ZS5nZXQoIlJvb3QiKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCBhPWkuZ2V0KCJQYWdlcyIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IHI9YS5nZXQoIkNvdW50Iik7TnVtYmVyLmlzSW50ZWdlcihyKSYmKHQ9ITApfWNhdGNoKGUpe3U9ZTtjb250aW51ZX1pZih0JiYoIWR8fGUuaGFzKCJFbmNyeXB0IikpJiZlLmhhcygiSUQiKSlyZXR1cm4gZTtFPWV9aWYoRSlyZXR1cm4gRTtpZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDt0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBQREYgc3RydWN0dXJlLiIpfXJlYWRYUmVmKGU9ITEpe2NvbnN0IHQ9dGhpcy5zdHJlYW0saT1uZXcgU2V0O2Zvcig7dGhpcy5zdGFydFhSZWZRdWV1ZS5sZW5ndGg7KXt0cnl7Y29uc3QgZT10aGlzLnN0YXJ0WFJlZlF1ZXVlWzBdO2lmKGkuaGFzKGUpKXt3YXJuKCJyZWFkWFJlZiAtIHNraXBwaW5nIFhSZWYgdGFibGUgc2luY2UgaXQgd2FzIGFscmVhZHkgcGFyc2VkLiIpO3RoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKTtjb250aW51ZX1pLmFkZChlKTt0LnBvcz1lK3Quc3RhcnQ7Y29uc3QgYT1uZXcgUGFyc2VyKHtsZXhlcjpuZXcgTGV4ZXIodCkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2xldCByLHM9YS5nZXRPYmooKTtpZihpc0NtZChzLCJ4cmVmIikpe3I9dGhpcy5wcm9jZXNzWFJlZlRhYmxlKGEpO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1yKTtzPXIuZ2V0KCJYUmVmU3RtIik7aWYoTnVtYmVyLmlzSW50ZWdlcihzKSYmIXRoaXMuX3hyZWZTdG1zLmhhcyhzKSl7dGhpcy5feHJlZlN0bXMuYWRkKHMpO3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChzKTt0aGlzLiNLPz89c319ZWxzZXtpZighTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiBzdHJlYW0gaGVhZGVyIik7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGEuZ2V0T2JqKCkpJiZpc0NtZChhLmdldE9iaigpLCJvYmoiKSYmKHM9YS5nZXRPYmooKSlpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSIpO3I9dGhpcy5wcm9jZXNzWFJlZlN0cmVhbShzKTt0aGlzLnRvcERpY3R8fCh0aGlzLnRvcERpY3Q9cik7aWYoIXIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGYWlsZWQgdG8gcmVhZCBYUmVmIHN0cmVhbSIpfXM9ci5nZXQoIlByZXYiKTtOdW1iZXIuaXNJbnRlZ2VyKHMpP3RoaXMuc3RhcnRYUmVmUXVldWUucHVzaChzKTpzIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2gocy5udW0pfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIih3aGlsZSByZWFkaW5nIFhSZWYpOiAiK2UpfXRoaXMuc3RhcnRYUmVmUXVldWUuc2hpZnQoKX1pZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDtpZighZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9ufWdldCBsYXN0WFJlZlN0cmVhbVBvcygpe3JldHVybiB0aGlzLiNLPz8odGhpcy5feHJlZlN0bXMuc2l6ZT4wP01hdGgubWF4KC4uLnRoaXMuX3hyZWZTdG1zKTpudWxsKX1nZXRFbnRyeShlKXtjb25zdCB0PXRoaXMuZW50cmllc1tlXTtyZXR1cm4gdCYmIXQuZnJlZSYmdC5vZmZzZXQ/dDpudWxsfWZldGNoSWZSZWYoZSx0PSExKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoKGUsdCk6ZX1mZXRjaChlLHQ9ITEpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpdGhyb3cgbmV3IEVycm9yKCJyZWYgb2JqZWN0IGlzIG5vdCBhIHJlZmVyZW5jZSIpO2NvbnN0IGk9ZS5udW0sYT10aGlzLl9jYWNoZU1hcC5nZXQoaSk7aWYodm9pZCAwIT09YSl7YSBpbnN0YW5jZW9mIERpY3QmJiFhLm9iaklkJiYoYS5vYmpJZD1lLnRvU3RyaW5nKCkpO3JldHVybiBhfWxldCByPXRoaXMuZ2V0RW50cnkoaSk7aWYobnVsbD09PXIpe3RoaXMuX2NhY2hlTWFwLnNldChpLHIpO3JldHVybiByfWlmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3dhcm4oYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gZnR9dGhpcy5fcGVuZGluZ1JlZnMucHV0KGUpO3RyeXtyPXIudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxyLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUscix0KTt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3Rocm93IHR9ciBpbnN0YW5jZW9mIERpY3Q/ci5vYmpJZD1lLnRvU3RyaW5nKCk6ciBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihyLmRpY3Qub2JqSWQ9ZS50b1N0cmluZygpKTtyZXR1cm4gcn1mZXRjaFVuY29tcHJlc3NlZChlLHQsaT0hMSl7Y29uc3QgYT1lLmdlbjtsZXQgcj1lLm51bTtpZih0LmdlbiE9PWEpe2NvbnN0IHM9YEluY29uc2lzdGVudCBnZW5lcmF0aW9uIGluIFhSZWY6ICR7ZX1gO2lmKHRoaXMuX2dlbmVyYXRpb25GYWxsYmFjayYmdC5nZW48YSl7d2FybihzKTtyZXR1cm4gdGhpcy5mZXRjaFVuY29tcHJlc3NlZChSZWYuZ2V0KHIsdC5nZW4pLHQsaSl9dGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihzKX1jb25zdCBzPXRoaXMuc3RyZWFtLm1ha2VTdWJTdHJlYW0odC5vZmZzZXQrdGhpcy5zdHJlYW0uc3RhcnQpLG49bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHMpLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxvPW4uZ2V0T2JqKCksZz1uLmdldE9iaigpLGM9bi5nZXRPYmooKTtpZihvIT09cnx8ZyE9PWF8fCEoYyBpbnN0YW5jZW9mIENtZCkpdGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtpZigib2JqIiE9PWMuY21kKXtpZihjLmNtZC5zdGFydHNXaXRoKCJvYmoiKSl7cj1wYXJzZUludChjLmNtZC5zdWJzdHJpbmcoMyksMTApO2lmKCFOdW1iZXIuaXNOYU4ocikpcmV0dXJuIHJ9dGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFpP24uZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0ocixhKSk6bi5nZXRPYmooKSlpbnN0YW5jZW9mIEJhc2VTdHJlYW18fHRoaXMuX2NhY2hlTWFwLnNldChyLHQpO3JldHVybiB0fWZldGNoQ29tcHJlc3NlZChlLHQsaT0hMSl7Y29uc3QgYT10Lm9mZnNldCxyPXRoaXMuZmV0Y2goUmVmLmdldChhLDApKTtpZighKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImJhZCBPYmpTdG0gc3RyZWFtIik7Y29uc3Qgcz1yLmRpY3QuZ2V0KCJGaXJzdCIpLG49ci5kaWN0LmdldCgiTiIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpfHwhTnVtYmVyLmlzSW50ZWdlcihuKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZmlyc3QgYW5kIG4gcGFyYW1ldGVycyBmb3IgT2JqU3RtIHN0cmVhbSIpO2xldCBvPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihyKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgZz1uZXcgQXJyYXkobiksYz1uZXcgQXJyYXkobik7Zm9yKGxldCBlPTA7ZTxuOysrZSl7Y29uc3QgdD1vLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3QgbnVtYmVyIGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke3R9YCk7Y29uc3QgaT1vLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke2l9YCk7Z1tlXT10O2NbZV09aX1jb25zdCBoPShyLnN0YXJ0fHwwKStzLGw9bmV3IEFycmF5KG4pO2ZvcihsZXQgZT0wO2U8bjsrK2Upe2NvbnN0IHQ9ZTxuLTE/Y1tlKzFdLWNbZV06dm9pZCAwO2lmKHQ8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtLiIpO289bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKHIubWFrZVN1YlN0cmVhbShoK2NbZV0sdCxyLmRpY3QpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgaT1vLmdldE9iaigpO2xbZV09aTtpZihpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSljb250aW51ZTtjb25zdCBzPWdbZV0sQz10aGlzLmVudHJpZXNbc107QyYmQy5vZmZzZXQ9PT1hJiZDLmdlbj09PWUmJnRoaXMuX2NhY2hlTWFwLnNldChzLGkpfWlmKHZvaWQgMD09PSh0PWxbdC5nZW5dKSl0aHJvdyBuZXcgWFJlZkVudHJ5RXhjZXB0aW9uKGBCYWQgKGNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtyZXR1cm4gdH1hc3luYyBmZXRjaElmUmVmQXN5bmMoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIFJlZj90aGlzLmZldGNoQXN5bmMoZSx0KTplfWFzeW5jIGZldGNoQXN5bmMoZSx0KXt0cnl7cmV0dXJuIHRoaXMuZmV0Y2goZSx0KX1jYXRjaChpKXtpZighKGkgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgaTthd2FpdCB0aGlzLnBkZk1hbmFnZXIucmVxdWVzdFJhbmdlKGkuYmVnaW4saS5lbmQpO3JldHVybiB0aGlzLmZldGNoQXN5bmMoZSx0KX19Z2V0Q2F0YWxvZ09iaigpe3JldHVybiB0aGlzLnJvb3R9fWNvbnN0IHJvPVswLDAsNjEyLDc5Ml07Y2xhc3MgUGFnZXtjb25zdHJ1Y3Rvcih7cGRmTWFuYWdlcjplLHhyZWY6dCxwYWdlSW5kZXg6aSxwYWdlRGljdDphLHJlZjpyLGdsb2JhbElkRmFjdG9yeTpzLGZvbnRDYWNoZTpuLGJ1aWx0SW5DTWFwQ2FjaGU6byxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6ZyxnbG9iYWxJbWFnZUNhY2hlOmMsc3lzdGVtRm9udENhY2hlOmgsbm9uQmxlbmRNb2Rlc1NldDpsLHhmYUZhY3Rvcnk6Q30pe3RoaXMucGRmTWFuYWdlcj1lO3RoaXMucGFnZUluZGV4PWk7dGhpcy5wYWdlRGljdD1hO3RoaXMueHJlZj10O3RoaXMucmVmPXI7dGhpcy5mb250Q2FjaGU9bjt0aGlzLmJ1aWx0SW5DTWFwQ2FjaGU9bzt0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZT1nO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1jO3RoaXMuc3lzdGVtRm9udENhY2hlPWg7dGhpcy5ub25CbGVuZE1vZGVzU2V0PWw7dGhpcy5ldmFsdWF0b3JPcHRpb25zPWUuZXZhbHVhdG9yT3B0aW9uczt0aGlzLnJlc291cmNlc1Byb21pc2U9bnVsbDt0aGlzLnhmYUZhY3Rvcnk9Qztjb25zdCBRPXtvYmo6MH07dGhpcy5fbG9jYWxJZEZhY3Rvcnk9Y2xhc3MgZXh0ZW5kcyBze3N0YXRpYyBjcmVhdGVPYmpJZCgpe3JldHVybmBwJHtpfV8keysrUS5vYmp9YH1zdGF0aWMgZ2V0UGFnZU9iaklkKCl7cmV0dXJuYHAke3IudG9TdHJpbmcoKX1gfX19X2dldEluaGVyaXRhYmxlUHJvcGVydHkoZSx0PSExKXtjb25zdCBpPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dGhpcy5wYWdlRGljdCxrZXk6ZSxnZXRBcnJheTp0LHN0b3BXaGVuRm91bmQ6ITF9KTtyZXR1cm4gQXJyYXkuaXNBcnJheShpKT8xIT09aS5sZW5ndGgmJmlbMF1pbnN0YW5jZW9mIERpY3Q/RGljdC5tZXJnZSh7eHJlZjp0aGlzLnhyZWYsZGljdEFycmF5Oml9KTppWzBdOml9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5wYWdlRGljdC5nZXRBcnJheSgiQ29udGVudHMiKX1nZXQgcmVzb3VyY2VzKCl7Y29uc3QgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSZXNvdXJjZXMiKTtyZXR1cm4gc2hhZG93KHRoaXMsInJlc291cmNlcyIsZSBpbnN0YW5jZW9mIERpY3Q/ZTpEaWN0LmVtcHR5KX1fZ2V0Qm91bmRpbmdCb3goZSl7aWYodGhpcy54ZmFEYXRhKXJldHVybiB0aGlzLnhmYURhdGEuYmJveDtjb25zdCB0PWxvb2t1cE5vcm1hbFJlY3QodGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eShlLCEwKSxudWxsKTtpZih0KXtpZih0WzJdLXRbMF0+MCYmdFszXS10WzFdPjApcmV0dXJuIHQ7d2FybihgRW1wdHksIG9yIGludmFsaWQsIC8ke2V9IGVudHJ5LmApfXJldHVybiBudWxsfWdldCBtZWRpYUJveCgpe3JldHVybiBzaGFkb3codGhpcywibWVkaWFCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJNZWRpYUJveCIpfHxybyl9Z2V0IGNyb3BCb3goKXtyZXR1cm4gc2hhZG93KHRoaXMsImNyb3BCb3giLHRoaXMuX2dldEJvdW5kaW5nQm94KCJDcm9wQm94Iil8fHRoaXMubWVkaWFCb3gpfWdldCB1c2VyVW5pdCgpe2xldCBlPXRoaXMucGFnZURpY3QuZ2V0KCJVc2VyVW5pdCIpOygibnVtYmVyIiE9dHlwZW9mIGV8fGU8PTApJiYoZT0xKTtyZXR1cm4gc2hhZG93KHRoaXMsInVzZXJVbml0IixlKX1nZXQgdmlldygpe2NvbnN0e2Nyb3BCb3g6ZSxtZWRpYUJveDp0fT10aGlzO2lmKGUhPT10JiYhaXNBcnJheUVxdWFsKGUsdCkpe2NvbnN0IGk9VXRpbC5pbnRlcnNlY3QoZSx0KTtpZihpJiZpWzJdLWlbMF0+MCYmaVszXS1pWzFdPjApcmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3IixpKTt3YXJuKCJFbXB0eSAvQ3JvcEJveCBhbmQgL01lZGlhQm94IGludGVyc2VjdGlvbi4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInZpZXciLHQpfWdldCByb3RhdGUoKXtsZXQgZT10aGlzLl9nZXRJbmhlcml0YWJsZVByb3BlcnR5KCJSb3RhdGUiKXx8MDtlJTkwIT0wP2U9MDplPj0zNjA/ZSU9MzYwOmU8MCYmKGU9KGUlMzYwKzM2MCklMzYwKTtyZXR1cm4gc2hhZG93KHRoaXMsInJvdGF0ZSIsZSl9X29uU3ViU3RyZWFtRXJyb3IoZSx0KXtpZighdGhpcy5ldmFsdWF0b3JPcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke3R9KTogIiR7ZX0iLmApfWdldENvbnRlbnRTdHJlYW0oKXtyZXR1cm4gdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJjb250ZW50IikudGhlbigoZT0+ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/ZTpBcnJheS5pc0FycmF5KGUpP25ldyBTdHJlYW1zU2VxdWVuY2VTdHJlYW0oZSx0aGlzLl9vblN1YlN0cmVhbUVycm9yLmJpbmQodGhpcykpOm5ldyBOdWxsU3RyZWFtKSl9Z2V0IHhmYURhdGEoKXtyZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGEiLHRoaXMueGZhRmFjdG9yeT97YmJveDp0aGlzLnhmYUZhY3RvcnkuZ2V0Qm91bmRpbmdCb3godGhpcy5wYWdlSW5kZXgpfTpudWxsKX0jVChlLHQsaSl7Zm9yKGNvbnN0IGEgb2YgZSlpZihhLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKGEuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7YS5pZH1gKTtjb250aW51ZX1pZihhLmRlbGV0ZWQpe3QucHV0KGUsZSk7Y29udGludWV9aT8ucHV0KGUpO2EucmVmPWU7ZGVsZXRlIGEuaWR9fWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsaSxhKXtpZih0aGlzLnhmYUZhY3RvcnkpdGhyb3cgbmV3IEVycm9yKCJYRkE6IENhbm5vdCBzYXZlIG5ldyBhbm5vdGF0aW9ucy4iKTtjb25zdCByPW5ldyBQYXJ0aWFsRXZhbHVhdG9yKHt4cmVmOnRoaXMueHJlZixoYW5kbGVyOmUscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGlkRmFjdG9yeTp0aGlzLl9sb2NhbElkRmFjdG9yeSxmb250Q2FjaGU6dGhpcy5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0aGlzLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pLHM9bmV3IFJlZlNldENhY2hlLG49bmV3IFJlZlNldDt0aGlzLiNUKGkscyxuKTtjb25zdCBvPXRoaXMucGFnZURpY3QsZz10aGlzLmFubm90YXRpb25zLmZpbHRlcigoZT0+IShlIGluc3RhbmNlb2YgUmVmJiZzLmhhcyhlKSkpKSxjPWF3YWl0IEFubm90YXRpb25GYWN0b3J5LnNhdmVOZXdBbm5vdGF0aW9ucyhyLHQsaSxhKTtmb3IoY29uc3R7cmVmOmV9b2YgYy5hbm5vdGF0aW9ucyllIGluc3RhbmNlb2YgUmVmJiYhbi5oYXMoZSkmJmcucHVzaChlKTtjb25zdCBoPW8uZ2V0KCJBbm5vdHMiKTtvLnNldCgiQW5ub3RzIixnKTtjb25zdCBsPVtdO2F3YWl0IHdyaXRlT2JqZWN0KHRoaXMucmVmLG8sbCx0aGlzLnhyZWYpO2gmJm8uc2V0KCJBbm5vdHMiLGgpO2NvbnN0IEM9Yy5kZXBlbmRlbmNpZXM7Qy5wdXNoKHtyZWY6dGhpcy5yZWYsZGF0YTpsLmpvaW4oIiIpfSwuLi5jLmFubm90YXRpb25zKTtmb3IoY29uc3QgZSBvZiBzKUMucHVzaCh7cmVmOmUsZGF0YTpudWxsfSk7cmV0dXJuIEN9c2F2ZShlLHQsaSl7Y29uc3QgYT1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxpZEZhY3Rvcnk6dGhpcy5fbG9jYWxJZEZhY3RvcnksZm9udENhY2hlOnRoaXMuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTp0aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dGhpcy5zeXN0ZW1Gb250Q2FjaGUsb3B0aW9uczp0aGlzLmV2YWx1YXRvck9wdGlvbnN9KTtyZXR1cm4gdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnMudGhlbigoZnVuY3Rpb24oZSl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgcyBvZiBlKXMubXVzdEJlUHJpbnRlZChpKSYmci5wdXNoKHMuc2F2ZShhLHQsaSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3dhcm4oYHNhdmUgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7cmV0dXJuIFByb21pc2UuYWxsKHIpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcigoZT0+ISFlKSl9KSl9KSl9bG9hZFJlc291cmNlcyhlKXt0aGlzLnJlc291cmNlc1Byb21pc2V8fD10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpO3JldHVybiB0aGlzLnJlc291cmNlc1Byb21pc2UudGhlbigoKCk9Pm5ldyBPYmplY3RMb2FkZXIodGhpcy5yZXNvdXJjZXMsZSx0aGlzLnhyZWYpLmxvYWQoKSkpfWdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjplLHNpbms6dCx0YXNrOmksaW50ZW50OmEsY2FjaGVLZXk6cixhbm5vdGF0aW9uU3RvcmFnZTpzPW51bGx9KXtjb25zdCBjPXRoaXMuZ2V0Q29udGVudFN0cmVhbSgpLEM9dGhpcy5sb2FkUmVzb3VyY2VzKFsiQ29sb3JTcGFjZSIsIkV4dEdTdGF0ZSIsIkZvbnQiLCJQYXR0ZXJuIiwiUHJvcGVydGllcyIsIlNoYWRpbmciLCJYT2JqZWN0Il0pLEU9bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSksdT10aGlzLnhmYUZhY3Rvcnk/bnVsbDpnZXROZXdBbm5vdGF0aW9uc01hcChzKSxkPXU/LmdldCh0aGlzLnBhZ2VJbmRleCk7bGV0IGY9UHJvbWlzZS5yZXNvbHZlKG51bGwpLHA9bnVsbDtpZihkKXtjb25zdCBlPXRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIik7bGV0IHQ7Y29uc3QgYT1uZXcgU2V0O2Zvcihjb25zdHtiaXRtYXBJZDplLGJpdG1hcDp0fW9mIGQpIWV8fHR8fGEuaGFzKGUpfHxhLmFkZChlKTtjb25zdHtpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpyfT10aGlzLmV2YWx1YXRvck9wdGlvbnM7aWYoYS5zaXplPjApe2NvbnN0IGU9ZC5zbGljZSgpO2Zvcihjb25zdFt0LGldb2Ygcyl0LnN0YXJ0c1dpdGgoUSkmJmkuYml0bWFwJiZhLmhhcyhpLmJpdG1hcElkKSYmZS5wdXNoKGkpO3Q9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoZSx0aGlzLnhyZWYscil9ZWxzZSB0PUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGQsdGhpcy54cmVmLHIpO3A9bmV3IFJlZlNldDt0aGlzLiNUKGQscCxudWxsKTtmPWUudGhlbigoZT0+ZT9Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKGUsRSxpLGQsdCk6bnVsbCkpfWNvbnN0IG09UHJvbWlzZS5hbGwoW2MsQ10pLnRoZW4oKChbc10pPT57Y29uc3Qgbj1uZXcgT3BlcmF0b3JMaXN0KGEsdCk7ZS5zZW5kKCJTdGFydFJlbmRlclBhZ2UiLHt0cmFuc3BhcmVuY3k6RS5oYXNCbGVuZE1vZGVzKHRoaXMucmVzb3VyY2VzLHRoaXMubm9uQmxlbmRNb2Rlc1NldCkscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGNhY2hlS2V5OnJ9KTtyZXR1cm4gRS5nZXRPcGVyYXRvckxpc3Qoe3N0cmVhbTpzLHRhc2s6aSxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsb3BlcmF0b3JMaXN0Om59KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBufSkpfSkpO3JldHVybiBQcm9taXNlLmFsbChbbSx0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucyxmXSkudGhlbigoZnVuY3Rpb24oW2UsdCxyXSl7aWYocil7dD10LmZpbHRlcigoZT0+IShlLnJlZiYmcC5oYXMoZS5yZWYpKSkpO2ZvcihsZXQgZT0wLGk9ci5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgYT1yW2VdO2lmKGEucmVmVG9SZXBsYWNlKXtjb25zdCBzPXQuZmluZEluZGV4KChlPT5lLnJlZiYmaXNSZWZzRXF1YWwoZS5yZWYsYS5yZWZUb1JlcGxhY2UpKSk7aWYocz49MCl7dC5zcGxpY2UocywxLGEpO3Iuc3BsaWNlKGUtLSwxKTtpLS19fX10PXQuY29uY2F0KHIpfWlmKDA9PT10Lmxlbmd0aHx8YSZsKXtlLmZsdXNoKCEwKTtyZXR1cm57bGVuZ3RoOmUudG90YWxMZW5ndGh9fWNvbnN0IGM9ISEoYSZoKSxDPSEhKGEmbiksUT0hIShhJm8pLHU9ISEoYSZnKSxkPVtdO2Zvcihjb25zdCBlIG9mIHQpKEN8fFEmJmUubXVzdEJlVmlld2VkKHMsYyl8fHUmJmUubXVzdEJlUHJpbnRlZChzKSkmJmQucHVzaChlLmdldE9wZXJhdG9yTGlzdChFLGksYSxjLHMpLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBhbm5vdGF0aW9uIGRhdGEgZHVyaW5nICIke2kubmFtZX0iIHRhc2s6ICIke2V9Ii5gKTtyZXR1cm57b3BMaXN0Om51bGwsc2VwYXJhdGVGb3JtOiExLHNlcGFyYXRlQ2FudmFzOiExfX0pKSk7cmV0dXJuIFByb21pc2UuYWxsKGQpLnRoZW4oKGZ1bmN0aW9uKHQpe2xldCBpPSExLGE9ITE7Zm9yKGNvbnN0e29wTGlzdDpyLHNlcGFyYXRlRm9ybTpzLHNlcGFyYXRlQ2FudmFzOm59b2YgdCl7ZS5hZGRPcExpc3Qocik7aXx8PXM7YXx8PW59ZS5mbHVzaCghMCx7Zm9ybTppLGNhbnZhczphfSk7cmV0dXJue2xlbmd0aDplLnRvdGFsTGVuZ3RofX0pKX0pKX1hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoe2hhbmRsZXI6ZSx0YXNrOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cn0pe2NvbnN0IHM9dGhpcy5nZXRDb250ZW50U3RyZWFtKCksbj10aGlzLmxvYWRSZXNvdXJjZXMoWyJFeHRHU3RhdGUiLCJGb250IiwiUHJvcGVydGllcyIsIlhPYmplY3QiXSksbz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygibGFuZyIpLFtnLCxjXT1hd2FpdCBQcm9taXNlLmFsbChbcyxuLG9dKTtyZXR1cm4gbmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSkuZ2V0VGV4dENvbnRlbnQoe3N0cmVhbTpnLHRhc2s6dCxyZXNvdXJjZXM6dGhpcy5yZXNvdXJjZXMsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjphLHNpbms6cix2aWV3Qm94OnRoaXMudmlldyxsYW5nOmN9KX1hc3luYyBnZXRTdHJ1Y3RUcmVlKCl7Y29uc3QgZT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygic3RydWN0VHJlZVJvb3QiKTtpZighZSlyZXR1cm4gbnVsbDthd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztyZXR1cm4oYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfcGFyc2VTdHJ1Y3RUcmVlIixbZV0pKS5zZXJpYWxpemFibGV9X3BhcnNlU3RydWN0VHJlZShlKXtjb25zdCB0PW5ldyBTdHJ1Y3RUcmVlUGFnZShlLHRoaXMucGFnZURpY3QpO3QucGFyc2UodGhpcy5yZWYpO3JldHVybiB0fWFzeW5jIGdldEFubm90YXRpb25zRGF0YShlLHQsaSl7Y29uc3QgYT1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucztpZigwPT09YS5sZW5ndGgpcmV0dXJuIGE7Y29uc3Qgcj1bXSxzPVtdO2xldCBjO2NvbnN0IGg9ISEoaSZuKSxsPSEhKGkmbyksQz0hIShpJmcpO2Zvcihjb25zdCBpIG9mIGEpe2NvbnN0IGE9aHx8bCYmaS52aWV3YWJsZTsoYXx8QyYmaS5wcmludGFibGUpJiZyLnB1c2goaS5kYXRhKTtpZihpLmhhc1RleHRDb250ZW50JiZhKXtjfHw9bmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0aGlzLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnRoaXMuc3lzdGVtRm9udENhY2hlLG9wdGlvbnM6dGhpcy5ldmFsdWF0b3JPcHRpb25zfSk7cy5wdXNoKGkuZXh0cmFjdFRleHRDb250ZW50KGMsdCxbLTEvMCwtMS8wLDEvMCwxLzBdKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgZ2V0QW5ub3RhdGlvbnNEYXRhIC0gaWdub3JpbmcgdGV4dENvbnRlbnQgZHVyaW5nICIke3QubmFtZX0iIHRhc2s6ICIke2V9Ii5gKX0pKSl9fWF3YWl0IFByb21pc2UuYWxsKHMpO3JldHVybiByfWdldCBhbm5vdGF0aW9ucygpe2NvbnN0IGU9dGhpcy5fZ2V0SW5oZXJpdGFibGVQcm9wZXJ0eSgiQW5ub3RzIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9ucyIsQXJyYXkuaXNBcnJheShlKT9lOltdKX1nZXQgX3BhcnNlZEFubm90YXRpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFyc2VkQW5ub3RhdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKChhc3luYyBlPT57aWYoMD09PWUubGVuZ3RoKXJldHVybiBlO2NvbnN0IHQ9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKTtpZighdClyZXR1cm5bXTtjb25zdCBpPVtdO2Zvcihjb25zdCBhIG9mIGUpaS5wdXNoKEFubm90YXRpb25GYWN0b3J5LmNyZWF0ZSh0aGlzLnhyZWYsYSx0LHRoaXMuX2xvY2FsSWRGYWN0b3J5LCExLHRoaXMucmVmKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgX3BhcnNlZEFubm90YXRpb25zOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpO2NvbnN0IGE9W107bGV0IHIscztmb3IoY29uc3QgZSBvZiBhd2FpdCBQcm9taXNlLmFsbChpKSllJiYoZSBpbnN0YW5jZW9mIFdpZGdldEFubm90YXRpb24/KHN8fD1bXSkucHVzaChlKTplIGluc3RhbmNlb2YgUG9wdXBBbm5vdGF0aW9uPyhyfHw9W10pLnB1c2goZSk6YS5wdXNoKGUpKTtzJiZhLnB1c2goLi4ucyk7ciYmYS5wdXNoKC4uLnIpO3JldHVybiBhfSkpKX1nZXQganNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLGNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLnBhZ2VEaWN0LGZBKSl9fWNvbnN0IHNvPW5ldyBVaW50OEFycmF5KFszNyw4MCw2OCw3MCw0NV0pLG5vPW5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDk3LDExNCwxMTYsMTIwLDExNCwxMDEsMTAyXSksb289bmV3IFVpbnQ4QXJyYXkoWzEwMSwxMTAsMTAwLDExMSw5OCwxMDZdKTtmdW5jdGlvbiBmaW5kKGUsdCxpPTEwMjQsYT0hMSl7Y29uc3Qgcj10Lmxlbmd0aCxzPWUucGVla0J5dGVzKGkpLG49cy5sZW5ndGgtcjtpZihuPD0wKXJldHVybiExO2lmKGEpe2NvbnN0IGk9ci0xO2xldCBhPXMubGVuZ3RoLTE7Zm9yKDthPj1pOyl7bGV0IG49MDtmb3IoO248ciYmc1thLW5dPT09dFtpLW5dOyluKys7aWYobj49cil7ZS5wb3MrPWEtaTtyZXR1cm4hMH1hLS19fWVsc2V7bGV0IGk9MDtmb3IoO2k8PW47KXtsZXQgYT0wO2Zvcig7YTxyJiZzW2krYV09PT10W2FdOylhKys7aWYoYT49cil7ZS5wb3MrPWk7cmV0dXJuITB9aSsrfX1yZXR1cm4hMX1jbGFzcyBQREZEb2N1bWVudHtjb25zdHJ1Y3RvcihlLHQpe2lmKHQubGVuZ3RoPD0wKXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJUaGUgUERGIGZpbGUgaXMgZW1wdHksIGkuZS4gaXRzIHNpemUgaXMgemVybyBieXRlcy4iKTt0aGlzLnBkZk1hbmFnZXI9ZTt0aGlzLnN0cmVhbT10O3RoaXMueHJlZj1uZXcgWFJlZih0LGUpO3RoaXMuX3BhZ2VQcm9taXNlcz1uZXcgTWFwO3RoaXMuX3ZlcnNpb249bnVsbDtjb25zdCBpPXtmb250OjB9O3RoaXMuX2dsb2JhbElkRmFjdG9yeT1jbGFzc3tzdGF0aWMgZ2V0RG9jSWQoKXtyZXR1cm5gZ18ke2UuZG9jSWR9YH1zdGF0aWMgY3JlYXRlRm9udElkKCl7cmV0dXJuImYiKyArK2kuZm9udH1zdGF0aWMgY3JlYXRlT2JqSWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBjcmVhdGVPYmpJZGAgY2FsbGVkLiIpfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRQYWdlT2JqSWRgIGNhbGxlZC4iKX19fXBhcnNlKGUpe3RoaXMueHJlZi5wYXJzZShlKTt0aGlzLmNhdGFsb2c9bmV3IENhdGFsb2codGhpcy5wZGZNYW5hZ2VyLHRoaXMueHJlZil9Z2V0IGxpbmVhcml6YXRpb24oKXtsZXQgZT1udWxsO3RyeXtlPUxpbmVhcml6YXRpb24uY3JlYXRlKHRoaXMuc3RyZWFtKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGUpfXJldHVybiBzaGFkb3codGhpcywibGluZWFyaXphdGlvbiIsZSl9Z2V0IHN0YXJ0WFJlZigpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9MDtpZih0aGlzLmxpbmVhcml6YXRpb24pe2UucmVzZXQoKTtpZihmaW5kKGUsb28pKXtlLnNraXAoNik7bGV0IGk9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGkpOyl7ZS5wb3MrKztpPWUucGVla0J5dGUoKX10PWUucG9zLWUuc3RhcnR9fWVsc2V7Y29uc3QgaT0xMDI0LGE9bm8ubGVuZ3RoO2xldCByPSExLHM9ZS5lbmQ7Zm9yKDshciYmcz4wOyl7cy09aS1hO3M8MCYmKHM9MCk7ZS5wb3M9cztyPWZpbmQoZSxubyxpLCEwKX1pZihyKXtlLnNraXAoOSk7bGV0IGk7ZG97aT1lLmdldEJ5dGUoKX13aGlsZShpc1doaXRlU3BhY2UoaSkpO2xldCBhPSIiO2Zvcig7aT49MzImJmk8PTU3Oyl7YSs9U3RyaW5nLmZyb21DaGFyQ29kZShpKTtpPWUuZ2V0Qnl0ZSgpfXQ9cGFyc2VJbnQoYSwxMCk7aXNOYU4odCkmJih0PTApfX1yZXR1cm4gc2hhZG93KHRoaXMsInN0YXJ0WFJlZiIsdCl9Y2hlY2tIZWFkZXIoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2UucmVzZXQoKTtpZighZmluZChlLHNvKSlyZXR1cm47ZS5tb3ZlU3RhcnQoKTtlLnNraXAoc28ubGVuZ3RoKTtsZXQgdCxpPSIiO2Zvcig7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZpLmxlbmd0aDw3OylpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO0R0LnRlc3QoaSk/dGhpcy5fdmVyc2lvbj1pOndhcm4oYEludmFsaWQgUERGIGhlYWRlciB2ZXJzaW9uOiAke2l9YCl9cGFyc2VTdGFydFhSZWYoKXt0aGlzLnhyZWYuc2V0U3RhcnRYUmVmKHRoaXMuc3RhcnRYUmVmKX1nZXQgbnVtUGFnZXMoKXtsZXQgZT0wO2U9dGhpcy5jYXRhbG9nLmhhc0FjdHVhbE51bVBhZ2VzP3RoaXMuY2F0YWxvZy5udW1QYWdlczp0aGlzLnhmYUZhY3Rvcnk/dGhpcy54ZmFGYWN0b3J5LmdldE51bVBhZ2VzKCk6dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0aGlzLmNhdGFsb2cubnVtUGFnZXM7cmV0dXJuIHNoYWRvdyh0aGlzLCJudW1QYWdlcyIsZSl9X2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoZSx0PTApe3JldHVybiEhQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeSgoZT0+e2lmKCEoKGU9dGhpcy54cmVmLmZldGNoSWZSZWYoZSkpaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4hMTtpZihlLmhhcygiS2lkcyIpKXtpZigrK3Q+MTApe3dhcm4oIl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCByZWFjaGVkIik7cmV0dXJuITF9cmV0dXJuIHRoaXMuX2hhc09ubHlEb2N1bWVudFNpZ25hdHVyZXMoZS5nZXQoIktpZHMiKSx0KX1jb25zdCBpPWlzTmFtZShlLmdldCgiRlQiKSwiU2lnIiksYT1lLmdldCgiUmVjdCIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5ldmVyeSgoZT0+MD09PWUpKTtyZXR1cm4gaSYmcn0pKX1nZXQgX3hmYVN0cmVhbXMoKXtjb25zdCBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybTtpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PWUuZ2V0KCJYRkEiKSxpPXsieGRwOnhkcCI6IiIsdGVtcGxhdGU6IiIsZGF0YXNldHM6IiIsY29uZmlnOiIiLGNvbm5lY3Rpb25TZXQ6IiIsbG9jYWxlU2V0OiIiLHN0eWxlc2hlZXQ6IiIsIi94ZHA6eGRwIjoiIn07aWYodCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJiF0LmlzRW1wdHkpe2lbInhkcDp4ZHAiXT10O3JldHVybiBpfWlmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSs9Mil7bGV0IHI7cj0wPT09ZT8ieGRwOnhkcCI6ZT09PWEtMj8iL3hkcDp4ZHAiOnRbZV07aWYoIWkuaGFzT3duUHJvcGVydHkocikpY29udGludWU7Y29uc3Qgcz10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W2UrMV0pO3MgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhcy5pc0VtcHR5JiYoaVtyXT1zKX1yZXR1cm4gaX1nZXQgeGZhRGF0YXNldHMoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCk7Zm9yKGNvbnN0IHQgb2ZbImRhdGFzZXRzIiwieGRwOnhkcCJdKXtjb25zdCBpPWVbdF07aWYoaSl0cnl7Y29uc3QgZT1zdHJpbmdUb1VURjhTdHJpbmcoaS5nZXRTdHJpbmcoKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbmV3IERhdGFzZXRSZWFkZXIoe1t0XTplfSkpfWNhdGNoe3dhcm4oIlhGQSAtIEludmFsaWQgdXRmLTggc3RyaW5nLiIpO2JyZWFrfX1yZXR1cm4gc2hhZG93KHRoaXMsInhmYURhdGFzZXRzIixudWxsKX1nZXQgeGZhRGF0YSgpe2NvbnN0IGU9dGhpcy5feGZhU3RyZWFtcztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2ksYV1vZiBPYmplY3QuZW50cmllcyhlKSlpZihhKXRyeXt0W2ldPXN0cmluZ1RvVVRGOFN0cmluZyhhLmdldFN0cmluZygpKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTtyZXR1cm4gbnVsbH1yZXR1cm4gdH1nZXQgeGZhRmFjdG9yeSgpe2xldCBlO3RoaXMucGRmTWFuYWdlci5lbmFibGVYZmEmJnRoaXMuY2F0YWxvZy5uZWVkc1JlbmRlcmluZyYmdGhpcy5mb3JtSW5mby5oYXNYZmEmJiF0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtJiYoZT10aGlzLnhmYURhdGEpO3JldHVybiBzaGFkb3codGhpcywieGZhRmFjdG9yeSIsZT9uZXcgWEZBRmFjdG9yeShlKTpudWxsKX1nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLnhmYUZhY3RvcnkmJnRoaXMueGZhRmFjdG9yeS5pc1ZhbGlkKCl9Z2V0IGh0bWxGb3JYZmEoKXtyZXR1cm4gdGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXRQYWdlcygpOm51bGx9YXN5bmMgbG9hZFhmYUltYWdlcygpe2NvbnN0IGU9YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coInhmYUltYWdlcyIpO2lmKCFlKXJldHVybjtjb25zdCB0PWUuZ2V0S2V5cygpLGk9bmV3IE9iamVjdExvYWRlcihlLHQsdGhpcy54cmVmKTthd2FpdCBpLmxvYWQoKTtjb25zdCBhPW5ldyBNYXA7Zm9yKGNvbnN0IGkgb2YgdCl7Y29uc3QgdD1lLmdldChpKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmYS5zZXQoaSx0LmdldEJ5dGVzKCkpfXRoaXMueGZhRmFjdG9yeS5zZXRJbWFnZXMoYSl9YXN5bmMgbG9hZFhmYUZvbnRzKGUsdCl7Y29uc3QgaT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighaSlyZXR1cm47Y29uc3QgYT1hd2FpdCBpLmdldEFzeW5jKCJEUiIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCByPW5ldyBPYmplY3RMb2FkZXIoYSxbIkZvbnQiXSx0aGlzLnhyZWYpO2F3YWl0IHIubG9hZCgpO2NvbnN0IHM9YS5nZXQoIkZvbnQiKTtpZighKHMgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3Qgbj1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5wZGZNYW5hZ2VyLmV2YWx1YXRvck9wdGlvbnMpO24udXNlU3lzdGVtRm9udHM9ITE7Y29uc3Qgbz1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDotMSxpZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmNhdGFsb2cuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6dGhpcy5jYXRhbG9nLmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnRoaXMuY2F0YWxvZy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsb3B0aW9uczpufSksZz1uZXcgT3BlcmF0b3JMaXN0LGM9W10saD17Z2V0IGZvbnQoKXtyZXR1cm4gYy5hdCgtMSl9LHNldCBmb250KGUpe2MucHVzaChlKX0sY2xvbmUoKXtyZXR1cm4gdGhpc319LGw9bmV3IE1hcDtzLmZvckVhY2goKChlLHQpPT57bC5zZXQoZSx0KX0pKTtjb25zdCBDPVtdO2Zvcihjb25zdFtlLGldb2YgbCl7Y29uc3Qgcj1pLmdldCgiRm9udERlc2NyaXB0b3IiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtsZXQgcz1yLmdldCgiRm9udEZhbWlseSIpO3M9cy5yZXBsYWNlQWxsKC9bIF0rKFxkKS9nLCIkMSIpO2NvbnN0IG49e2ZvbnRGYW1pbHk6cyxmb250V2VpZ2h0OnIuZ2V0KCJGb250V2VpZ2h0IiksaXRhbGljQW5nbGU6LXIuZ2V0KCJJdGFsaWNBbmdsZSIpfTt2YWxpZGF0ZUNTU0ZvbnQobikmJkMucHVzaChvLmhhbmRsZVNldEZvbnQoYSxbTmFtZS5nZXQoZSksMV0sbnVsbCxnLHQsaCxudWxsLG4pLmNhdGNoKChmdW5jdGlvbihlKXt3YXJuKGBsb2FkWGZhRm9udHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSl9YXdhaXQgUHJvbWlzZS5hbGwoQyk7Y29uc3QgUT10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHMoYyk7aWYoIVEpcmV0dXJuO24uaWdub3JlRXJyb3JzPSEwO0MubGVuZ3RoPTA7Yy5sZW5ndGg9MDtjb25zdCBFPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgUSlnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fEUuYWRkKGUpO0Uuc2l6ZSYmUS5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIFEpaWYoIUUuaGFzKGUpKWZvcihjb25zdCBpIG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCByPWAke2V9LSR7aS5uYW1lfWAscz1nZXRYZmFGb250RGljdChyKTtDLnB1c2goby5oYW5kbGVTZXRGb250KGEsW05hbWUuZ2V0KHIpLDFdLG51bGwsZyx0LGgscyx7Zm9udEZhbWlseTplLGZvbnRXZWlnaHQ6aS5mb250V2VpZ2h0LGl0YWxpY0FuZ2xlOmkuaXRhbGljQW5nbGV9KS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgbG9hZFhmYUZvbnRzOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSkpfWF3YWl0IFByb21pc2UuYWxsKEMpO3RoaXMueGZhRmFjdG9yeS5hcHBlbmRGb250cyhjLEUpfWFzeW5jIHNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLl92ZXJzaW9ufWdldCBmb3JtSW5mbygpe2NvbnN0IGU9e2hhc0ZpZWxkczohMSxoYXNBY3JvRm9ybTohMSxoYXNYZmE6ITEsaGFzU2lnbmF0dXJlczohMX0sdD10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGk9dC5nZXQoIkZpZWxkcyIpLGE9QXJyYXkuaXNBcnJheShpKSYmaS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1hO2NvbnN0IHI9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPjB8fHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhci5pc0VtcHR5O2NvbnN0IHM9ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSksbj1zJiZ0aGlzLl9oYXNPbmx5RG9jdW1lbnRTaWduYXR1cmVzKGkpO2UuaGFzQWNyb0Zvcm09YSYmIW47ZS5oYXNTaWduYXR1cmVzPXN9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgQ2Fubm90IGZldGNoIGZvcm0gaW5mb3JtYXRpb246ICIke2V9Ii5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImZvcm1JbmZvIixlKX1nZXQgZG9jdW1lbnRJbmZvKCl7Y29uc3QgZT17UERGRm9ybWF0VmVyc2lvbjp0aGlzLnZlcnNpb24sTGFuZ3VhZ2U6dGhpcy5jYXRhbG9nLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6dGhpcy54cmVmLmVuY3J5cHQ/dGhpcy54cmVmLmVuY3J5cHQuZmlsdGVyTmFtZTpudWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhdGhpcy5jYXRhbG9nLmNvbGxlY3Rpb24sSXNTaWduYXR1cmVzUHJlc2VudDp0aGlzLmZvcm1JbmZvLmhhc1NpZ25hdHVyZXN9O2xldCB0O3RyeXt0PXRoaXMueHJlZi50cmFpbGVyLmdldCgiSW5mbyIpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIlRoZSBkb2N1bWVudCBpbmZvcm1hdGlvbiBkaWN0aW9uYXJ5IGlzIGludmFsaWQuIil9aWYoISh0IGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudEluZm8iLGUpO2Zvcihjb25zdCBpIG9mIHQuZ2V0S2V5cygpKXtjb25zdCBhPXQuZ2V0KGkpO3N3aXRjaChpKXtjYXNlIlRpdGxlIjpjYXNlIkF1dGhvciI6Y2FzZSJTdWJqZWN0IjpjYXNlIktleXdvcmRzIjpjYXNlIkNyZWF0b3IiOmNhc2UiUHJvZHVjZXIiOmNhc2UiQ3JlYXRpb25EYXRlIjpjYXNlIk1vZERhdGUiOmlmKCJzdHJpbmciPT10eXBlb2YgYSl7ZVtpXT1zdHJpbmdUb1BERlN0cmluZyhhKTtjb250aW51ZX1icmVhaztjYXNlIlRyYXBwZWQiOmlmKGEgaW5zdGFuY2VvZiBOYW1lKXtlW2ldPWE7Y29udGludWV9YnJlYWs7ZGVmYXVsdDpsZXQgdDtzd2l0Y2godHlwZW9mIGEpe2Nhc2Uic3RyaW5nIjp0PXN0cmluZ1RvUERGU3RyaW5nKGEpO2JyZWFrO2Nhc2UibnVtYmVyIjpjYXNlImJvb2xlYW4iOnQ9YTticmVhaztkZWZhdWx0OmEgaW5zdGFuY2VvZiBOYW1lJiYodD1hKX1pZih2b2lkIDA9PT10KXt3YXJuKGBCYWQgdmFsdWUsIGZvciBjdXN0b20ga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKTtjb250aW51ZX1lLkN1c3RvbXx8KGUuQ3VzdG9tPU9iamVjdC5jcmVhdGUobnVsbCkpO2UuQ3VzdG9tW2ldPXQ7Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2l9IiwgaW4gSW5mbzogJHthfS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIsZSl9Z2V0IGZpbmdlcnByaW50cygpe2Z1bmN0aW9uIHZhbGlkYXRlKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmZS5sZW5ndGg+MCYmIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIiE9PWV9ZnVuY3Rpb24gaGV4U3RyaW5nKGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IGkgb2YgZSl7Y29uc3QgZT1pLnRvU3RyaW5nKDE2KTt0LnB1c2goZS5wYWRTdGFydCgyLCIwIikpfXJldHVybiB0LmpvaW4oIiIpfWNvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJJRCIpO2xldCB0LGk7aWYoQXJyYXkuaXNBcnJheShlKSYmdmFsaWRhdGUoZVswXSkpe3Q9c3RyaW5nVG9CeXRlcyhlWzBdKTtlWzFdIT09ZVswXSYmdmFsaWRhdGUoZVsxXSkmJihpPXN0cmluZ1RvQnl0ZXMoZVsxXSkpfWVsc2UgdD1Icih0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoMCwxMDI0KSwwLDEwMjQpO3JldHVybiBzaGFkb3codGhpcywiZmluZ2VycHJpbnRzIixbaGV4U3RyaW5nKHQpLGk/aGV4U3RyaW5nKGkpOm51bGxdKX1hc3luYyBfZ2V0TGluZWFyaXphdGlvblBhZ2UoZSl7Y29uc3R7Y2F0YWxvZzp0LGxpbmVhcml6YXRpb246aSx4cmVmOmF9PXRoaXMscj1SZWYuZ2V0KGkub2JqZWN0TnVtYmVyRmlyc3QsMCk7dHJ5e2NvbnN0IGU9YXdhaXQgYS5mZXRjaEFzeW5jKHIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KXtsZXQgaT1lLmdldFJhdygiVHlwZSIpO2kgaW5zdGFuY2VvZiBSZWYmJihpPWF3YWl0IGEuZmV0Y2hBc3luYyhpKSk7aWYoaXNOYW1lKGksIlBhZ2UiKXx8IWUuaGFzKCJUeXBlIikmJiFlLmhhcygiS2lkcyIpJiZlLmhhcygiQ29udGVudHMiKSl7dC5wYWdlS2lkc0NvdW50Q2FjaGUuaGFzKHIpfHx0LnBhZ2VLaWRzQ291bnRDYWNoZS5wdXQociwxKTt0LnBhZ2VJbmRleENhY2hlLmhhcyhyKXx8dC5wYWdlSW5kZXhDYWNoZS5wdXQociwwKTtyZXR1cm5bZSxyXX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUaGUgTGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBQYWdlIGRpY3Rpb25hcnkuIil9Y2F0Y2goaSl7d2FybihgX2dldExpbmVhcml6YXRpb25QYWdlOiAiJHtpLm1lc3NhZ2V9Ii5gKTtyZXR1cm4gdC5nZXRQYWdlRGljdChlKX19Z2V0UGFnZShlKXtjb25zdCB0PXRoaXMuX3BhZ2VQcm9taXNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtjb25zdHtjYXRhbG9nOmksbGluZWFyaXphdGlvbjphLHhmYUZhY3Rvcnk6cn09dGhpcztsZXQgcztzPXI/UHJvbWlzZS5yZXNvbHZlKFtEaWN0LmVtcHR5LG51bGxdKTphPy5wYWdlRmlyc3Q9PT1lP3RoaXMuX2dldExpbmVhcml6YXRpb25QYWdlKGUpOmkuZ2V0UGFnZURpY3QoZSk7cz1zLnRoZW4oKChbdCxhXSk9Pm5ldyBQYWdlKHtwZGZNYW5hZ2VyOnRoaXMucGRmTWFuYWdlcix4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDp0LHJlZjphLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOmkuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6aS5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTppLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOmkuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6aS5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDppLm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpyfSkpKTt0aGlzLl9wYWdlUHJvbWlzZXMuc2V0KGUscyk7cmV0dXJuIHN9YXN5bmMgY2hlY2tGaXJzdFBhZ2UoZT0hMSl7aWYoIWUpdHJ5e2F3YWl0IHRoaXMuZ2V0UGFnZSgwKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uKXt0aGlzLl9wYWdlUHJvbWlzZXMuZGVsZXRlKDApO2F3YWl0IHRoaXMuY2xlYW51cCgpO3Rocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259fX1hc3luYyBjaGVja0xhc3RQYWdlKGU9ITEpe2NvbnN0e2NhdGFsb2c6dCxwZGZNYW5hZ2VyOml9PXRoaXM7dC5zZXRBY3R1YWxOdW1QYWdlcygpO2xldCBhO3RyeXthd2FpdCBQcm9taXNlLmFsbChbaS5lbnN1cmVEb2MoInhmYUZhY3RvcnkiKSxpLmVuc3VyZURvYygibGluZWFyaXphdGlvbiIpLGkuZW5zdXJlQ2F0YWxvZygibnVtUGFnZXMiKV0pO2lmKHRoaXMueGZhRmFjdG9yeSlyZXR1cm47YT10aGlzLmxpbmVhcml6YXRpb24/dGhpcy5saW5lYXJpemF0aW9uLm51bVBhZ2VzOnQubnVtUGFnZXM7aWYoIU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlIGNvdW50IGlzIG5vdCBhbiBpbnRlZ2VyLiIpO2lmKGE8PTEpcmV0dXJuO2F3YWl0IHRoaXMuZ2V0UGFnZShhLTEpfWNhdGNoKHIpe3RoaXMuX3BhZ2VQcm9taXNlcy5kZWxldGUoYS0xKTthd2FpdCB0aGlzLmNsZWFudXAoKTtpZihyIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3dhcm4oYGNoZWNrTGFzdFBhZ2UgLSBpbnZhbGlkIC9QYWdlcyB0cmVlIC9Db3VudDogJHthfS5gKTtsZXQgczt0cnl7cz1hd2FpdCB0LmdldEFsbFBhZ2VEaWN0cyhlKX1jYXRjaChpKXtpZihpIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFthLHJdXW9mIHMpe2xldCBzO2lmKGEgaW5zdGFuY2VvZiBFcnJvcil7cz1Qcm9taXNlLnJlamVjdChhKTtzLmNhdGNoKCgoKT0+e30pKX1lbHNlIHM9UHJvbWlzZS5yZXNvbHZlKG5ldyBQYWdlKHtwZGZNYW5hZ2VyOmkseHJlZjp0aGlzLnhyZWYscGFnZUluZGV4OmUscGFnZURpY3Q6YSxyZWY6cixnbG9iYWxJZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTp0LmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnQuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dC5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTp0Lmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOnQuc3lzdGVtRm9udENhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6dC5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6bnVsbH0pKTt0aGlzLl9wYWdlUHJvbWlzZXMuc2V0KGUscyl9dC5zZXRBY3R1YWxOdW1QYWdlcyhzLnNpemUpfX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5jYXRhbG9nLmZvbnRGYWxsYmFjayhlLHQpfWFzeW5jIGNsZWFudXAoZT0hMSl7cmV0dXJuIHRoaXMuY2F0YWxvZz90aGlzLmNhdGFsb2cuY2xlYW51cChlKTpjbGVhckdsb2JhbENhY2hlcygpfWFzeW5jI3EoZSx0LGksYSxyKXtjb25zdHt4cmVmOnN9PXRoaXM7aWYoISh0IGluc3RhbmNlb2YgUmVmKXx8ci5oYXModCkpcmV0dXJuO3IucHV0KHQpO2NvbnN0IG49YXdhaXQgcy5mZXRjaEFzeW5jKHQpO2lmKCEobiBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtpZihuLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IG4uZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YH1lbHNle2xldCB0PW47Zm9yKDs7KXt0PXQuZ2V0UmF3KCJQYXJlbnQiKTtpZih0IGluc3RhbmNlb2YgUmVmKXtpZihyLmhhcyh0KSlicmVhazt0PWF3YWl0IHMuZmV0Y2hBc3luYyh0KX1pZighKHQgaW5zdGFuY2VvZiBEaWN0KSlicmVhaztpZih0LmhhcygiVCIpKXtjb25zdCBpPXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IHQuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/aTpgJHtlfS4ke2l9YDticmVha319fWkuaGFzKGUpfHxpLnNldChlLFtdKTtpLmdldChlKS5wdXNoKEFubm90YXRpb25GYWN0b3J5LmNyZWF0ZShzLHQsYSxudWxsLCEwLG51bGwpLnRoZW4oKGU9PmU/LmdldEZpZWxkT2JqZWN0KCkpKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2FybihgI2NvbGxlY3RGaWVsZE9iamVjdHM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKSk7aWYoIW4uaGFzKCJLaWRzIikpcmV0dXJuO2NvbnN0IG89YXdhaXQgbi5nZXRBc3luYygiS2lkcyIpO2lmKEFycmF5LmlzQXJyYXkobykpZm9yKGNvbnN0IHQgb2Ygbylhd2FpdCB0aGlzLiNxKGUsdCxpLGEscil9Z2V0IGZpZWxkT2JqZWN0cygpe2lmKCF0aGlzLmZvcm1JbmZvLmhhc0ZpZWxkcylyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5yZXNvbHZlKG51bGwpKTtyZXR1cm4gc2hhZG93KHRoaXMsImZpZWxkT2JqZWN0cyIsUHJvbWlzZS5hbGwoW3RoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoImFubm90YXRpb25HbG9iYWxzIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIildKS50aGVuKChhc3luYyhbZSx0XSk9PntpZighZSlyZXR1cm4gbnVsbDtjb25zdCBpPW5ldyBSZWZTZXQsYT1PYmplY3QuY3JlYXRlKG51bGwpLHI9bmV3IE1hcDtmb3IoY29uc3QgYSBvZiBhd2FpdCB0LmdldEFzeW5jKCJGaWVsZHMiKSlhd2FpdCB0aGlzLiNxKCIiLGEscixlLGkpO2NvbnN0IHM9W107Zm9yKGNvbnN0W2UsdF1vZiByKXMucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKCh0PT57KHQ9dC5maWx0ZXIoKGU9PiEhZSkpKS5sZW5ndGg+MCYmKGFbZV09dCl9KSkpO2F3YWl0IFByb21pc2UuYWxsKHMpO3JldHVybiBhfSkpKX1nZXQgaGFzSlNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoYXNKU0FjdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoIl9wYXJzZUhhc0pTQWN0aW9ucyIpKX1hc3luYyBfcGFyc2VIYXNKU0FjdGlvbnMoKXtjb25zdFtlLHRdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZmllbGRPYmplY3RzIildKTtyZXR1cm4hIWV8fCEhdCYmT2JqZWN0LnZhbHVlcyh0KS5zb21lKChlPT5lLnNvbWUoKGU9Pm51bGwhPT1lLmFjdGlvbnMpKSkpfWdldCBjYWxjdWxhdGlvbk9yZGVySWRzKCl7Y29uc3QgZT10aGlzLmNhdGFsb2cuYWNyb0Zvcm07aWYoIWU/LmhhcygiQ08iKSlyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IHQ9ZS5nZXQoIkNPIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDA9PT10Lmxlbmd0aClyZXR1cm4gc2hhZG93KHRoaXMsImNhbGN1bGF0aW9uT3JkZXJJZHMiLG51bGwpO2NvbnN0IGk9W107Zm9yKGNvbnN0IGUgb2YgdCllIGluc3RhbmNlb2YgUmVmJiZpLnB1c2goZS50b1N0cmluZygpKTtyZXR1cm4gMD09PWkubGVuZ3RoP3NoYWRvdyh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKTpzaGFkb3codGhpcywiY2FsY3VsYXRpb25PcmRlcklkcyIsaSl9Z2V0IGFubm90YXRpb25HbG9iYWxzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJhbm5vdGF0aW9uR2xvYmFscyIsQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlR2xvYmFscyh0aGlzLnBkZk1hbmFnZXIpKX19Y2xhc3MgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5jb25zdHJ1Y3Rvcj09PUJhc2VQZGZNYW5hZ2VyJiZ1bnJlYWNoYWJsZSgiQ2Fubm90IGluaXRpYWxpemUgQmFzZVBkZk1hbmFnZXIuIik7dGhpcy5fZG9jQmFzZVVybD1mdW5jdGlvbiBwYXJzZURvY0Jhc2VVcmwoZSl7aWYoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUpO2lmKHQpcmV0dXJuIHQuaHJlZjt3YXJuKGBJbnZhbGlkIGFic29sdXRlIGRvY0Jhc2VVcmw6ICIke2V9Ii5gKX1yZXR1cm4gbnVsbH0oZS5kb2NCYXNlVXJsKTt0aGlzLl9kb2NJZD1lLmRvY0lkO3RoaXMuX3Bhc3N3b3JkPWUucGFzc3dvcmQ7dGhpcy5lbmFibGVYZmE9ZS5lbmFibGVYZmE7ZS5ldmFsdWF0b3JPcHRpb25zLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7dGhpcy5ldmFsdWF0b3JPcHRpb25zPU9iamVjdC5mcmVlemUoZS5ldmFsdWF0b3JPcHRpb25zKX1nZXQgZG9jSWQoKXtyZXR1cm4gdGhpcy5fZG9jSWR9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuX3Bhc3N3b3JkfWdldCBkb2NCYXNlVXJsKCl7cmV0dXJuIHRoaXMuX2RvY0Jhc2VVcmx9Z2V0IGNhdGFsb2coKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nfWVuc3VyZURvYyhlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LGUsdCl9ZW5zdXJlWFJlZihlLHQpe3JldHVybiB0aGlzLmVuc3VyZSh0aGlzLnBkZkRvY3VtZW50LnhyZWYsZSx0KX1lbnN1cmVDYXRhbG9nKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQuY2F0YWxvZyxlLHQpfWdldFBhZ2UoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuZ2V0UGFnZShlKX1mb250RmFsbGJhY2soZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5mb250RmFsbGJhY2soZSx0KX1sb2FkWGZhRm9udHMoZSx0KXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5sb2FkWGZhRm9udHMoZSx0KX1sb2FkWGZhSW1hZ2VzKCl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQubG9hZFhmYUltYWdlcygpfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuc2VyaWFsaXplWGZhRGF0YShlKX1jbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmNsZWFudXAoZSl9YXN5bmMgZW5zdXJlKGUsdCxpKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBlbnN1cmVgIGNhbGxlZCIpfXJlcXVlc3RSYW5nZShlLHQpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RSYW5nZWAgY2FsbGVkIil9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGByZXF1ZXN0TG9hZGVkU3RyZWFtYCBjYWxsZWQiKX1zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNlbmRQcm9ncmVzc2l2ZURhdGFgIGNhbGxlZCIpfXVwZGF0ZVBhc3N3b3JkKGUpe3RoaXMuX3Bhc3N3b3JkPWV9dGVybWluYXRlKGUpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHRlcm1pbmF0ZWAgY2FsbGVkIil9fWNsYXNzIExvY2FsUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0IHQ9bmV3IFN0cmVhbShlLnNvdXJjZSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0KTt0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlPVByb21pc2UucmVzb2x2ZSh0KX1hc3luYyBlbnN1cmUoZSx0LGkpe2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5fbG9hZGVkU3RyZWFtUHJvbWlzZX10ZXJtaW5hdGUoZSl7fX1jbGFzcyBOZXR3b3JrUGRmTWFuYWdlciBleHRlbmRzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuc3RyZWFtTWFuYWdlcj1uZXcgQ2h1bmtlZFN0cmVhbU1hbmFnZXIoZS5zb3VyY2Use21zZ0hhbmRsZXI6ZS5oYW5kbGVyLGxlbmd0aDplLmxlbmd0aCxkaXNhYmxlQXV0b0ZldGNoOmUuZGlzYWJsZUF1dG9GZXRjaCxyYW5nZUNodW5rU2l6ZTplLnJhbmdlQ2h1bmtTaXplfSk7dGhpcy5wZGZEb2N1bWVudD1uZXcgUERGRG9jdW1lbnQodGhpcyx0aGlzLnN0cmVhbU1hbmFnZXIuZ2V0U3RyZWFtKCkpfWFzeW5jIGVuc3VyZShlLHQsaSl7dHJ5e2NvbnN0IGE9ZVt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYT9hLmFwcGx5KGUsaSk6YX1jYXRjaChhKXtpZighKGEgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpdGhyb3cgYTthd2FpdCB0aGlzLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5lbnN1cmUoZSx0LGkpfX1yZXF1ZXN0UmFuZ2UoZSx0KXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RSYW5nZShlLHQpfXJlcXVlc3RMb2FkZWRTdHJlYW0oZT0hMSl7cmV0dXJuIHRoaXMuc3RyZWFtTWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKGUpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLm9uUmVjZWl2ZURhdGEoe2NodW5rOmV9KX10ZXJtaW5hdGUoZSl7dGhpcy5zdHJlYW1NYW5hZ2VyLmFib3J0KGUpfX1jb25zdCBnbz0xLGNvPTIsSW89MSxobz0yLGxvPTMsQ289NCxCbz01LFFvPTYsRW89Nyx1bz04O2Z1bmN0aW9uIHdyYXBSZWFzb24oZSl7ZSBpbnN0YW5jZW9mIEVycm9yfHwib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lfHx1bnJlYWNoYWJsZSgnd3JhcFJlYXNvbjogRXhwZWN0ZWQgInJlYXNvbiIgdG8gYmUgYSAocG9zc2libHkgY2xvbmVkKSBFcnJvci4nKTtzd2l0Y2goZS5uYW1lKXtjYXNlIkFib3J0RXhjZXB0aW9uIjpyZXR1cm4gbmV3IEFib3J0RXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJNaXNzaW5nUERGRXhjZXB0aW9uIjpyZXR1cm4gbmV3IE1pc3NpbmdQREZFeGNlcHRpb24oZS5tZXNzYWdlKTtjYXNlIlBhc3N3b3JkRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFBhc3N3b3JkRXhjZXB0aW9uKGUubWVzc2FnZSxlLmNvZGUpO2Nhc2UiVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVuZXhwZWN0ZWRSZXNwb25zZUV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5zdGF0dXMpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKTtkZWZhdWx0OnJldHVybiBuZXcgVW5rbm93bkVycm9yRXhjZXB0aW9uKGUubWVzc2FnZSxlLnRvU3RyaW5nKCkpfX1jbGFzcyBNZXNzYWdlSGFuZGxlcntjb25zdHJ1Y3RvcihlLHQsaSl7dGhpcy5zb3VyY2VOYW1lPWU7dGhpcy50YXJnZXROYW1lPXQ7dGhpcy5jb21PYmo9aTt0aGlzLmNhbGxiYWNrSWQ9MTt0aGlzLnN0cmVhbUlkPTE7dGhpcy5zdHJlYW1TaW5rcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5hY3Rpb25IYW5kbGVyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5fb25Db21PYmpPbk1lc3NhZ2U9ZT0+e2NvbnN0IHQ9ZS5kYXRhO2lmKHQudGFyZ2V0TmFtZSE9PXRoaXMuc291cmNlTmFtZSlyZXR1cm47aWYodC5zdHJlYW0pe3RoaXMuI08odCk7cmV0dXJufWlmKHQuY2FsbGJhY2spe2NvbnN0IGU9dC5jYWxsYmFja0lkLGk9dGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1tlXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIGNhbGxiYWNrICR7ZX1gKTtkZWxldGUgdGhpcy5jYWxsYmFja0NhcGFiaWxpdGllc1tlXTtpZih0LmNhbGxiYWNrPT09Z28paS5yZXNvbHZlKHQuZGF0YSk7ZWxzZXtpZih0LmNhbGxiYWNrIT09Y28pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNhbGxiYWNrIGNhc2UiKTtpLnJlamVjdCh3cmFwUmVhc29uKHQucmVhc29uKSl9cmV0dXJufWNvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyW3QuYWN0aW9uXTtpZighYSl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYWN0aW9uIGZyb20gd29ya2VyOiAke3QuYWN0aW9ufWApO2lmKHQuY2FsbGJhY2tJZCl7Y29uc3QgZT10aGlzLnNvdXJjZU5hbWUscj10LnNvdXJjZU5hbWU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2UoYSh0LmRhdGEpKX0pKS50aGVuKChmdW5jdGlvbihhKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmUsdGFyZ2V0TmFtZTpyLGNhbGxiYWNrOmdvLGNhbGxiYWNrSWQ6dC5jYWxsYmFja0lkLGRhdGE6YX0pfSksKGZ1bmN0aW9uKGEpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6ZSx0YXJnZXROYW1lOnIsY2FsbGJhY2s6Y28sY2FsbGJhY2tJZDp0LmNhbGxiYWNrSWQscmVhc29uOndyYXBSZWFzb24oYSl9KX0pKX1lbHNlIHQuc3RyZWFtSWQ/dGhpcy4jUCh0KTphKHQuZGF0YSl9O2kuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5fb25Db21PYmpPbk1lc3NhZ2UpfW9uKGUsdCl7Y29uc3QgaT10aGlzLmFjdGlvbkhhbmRsZXI7aWYoaVtlXSl0aHJvdyBuZXcgRXJyb3IoYFRoZXJlIGlzIGFscmVhZHkgYW4gYWN0aW9uTmFtZSBjYWxsZWQgIiR7ZX0iYCk7aVtlXT10fXNlbmQoZSx0LGkpe3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246ZSxkYXRhOnR9LGkpfXNlbmRXaXRoUHJvbWlzZShlLHQsaSl7Y29uc3QgYT10aGlzLmNhbGxiYWNrSWQrKyxyPVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMuY2FsbGJhY2tDYXBhYmlsaXRpZXNbYV09cjt0cnl7dGhpcy5jb21PYmoucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6dGhpcy5zb3VyY2VOYW1lLHRhcmdldE5hbWU6dGhpcy50YXJnZXROYW1lLGFjdGlvbjplLGNhbGxiYWNrSWQ6YSxkYXRhOnR9LGkpfWNhdGNoKGUpe3IucmVqZWN0KGUpfXJldHVybiByLnByb21pc2V9c2VuZFdpdGhTdHJlYW0oZSx0LGksYSl7Y29uc3Qgcj10aGlzLnN0cmVhbUlkKysscz10aGlzLnNvdXJjZU5hbWUsbj10aGlzLnRhcmdldE5hbWUsbz10aGlzLmNvbU9iajtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDppPT57Y29uc3QgZz1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdPXtjb250cm9sbGVyOmksc3RhcnRDYWxsOmcscHVsbENhbGw6bnVsbCxjYW5jZWxDYWxsOm51bGwsaXNDbG9zZWQ6ITF9O28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sYWN0aW9uOmUsc3RyZWFtSWQ6cixkYXRhOnQsZGVzaXJlZFNpemU6aS5kZXNpcmVkU2l6ZX0sYSk7cmV0dXJuIGcucHJvbWlzZX0scHVsbDplPT57Y29uc3QgdD1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdLnB1bGxDYWxsPXQ7by5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTpzLHRhcmdldE5hbWU6bixzdHJlYW06UW8sc3RyZWFtSWQ6cixkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplfSk7cmV0dXJuIHQucHJvbWlzZX0sY2FuY2VsOmU9Pnthc3NlcnQoZSBpbnN0YW5jZW9mIEVycm9yLCJjYW5jZWwgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7Y29uc3QgdD1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdLmNhbmNlbENhbGw9dDt0aGlzLnN0cmVhbUNvbnRyb2xsZXJzW3JdLmlzQ2xvc2VkPSEwO28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6cyx0YXJnZXROYW1lOm4sc3RyZWFtOklvLHN0cmVhbUlkOnIscmVhc29uOndyYXBSZWFzb24oZSl9KTtyZXR1cm4gdC5wcm9taXNlfX0saSl9I1AoZSl7Y29uc3QgdD1lLnN0cmVhbUlkLGk9dGhpcy5zb3VyY2VOYW1lLGE9ZS5zb3VyY2VOYW1lLHI9dGhpcy5jb21PYmoscz10aGlzLG49dGhpcy5hY3Rpb25IYW5kbGVyW2UuYWN0aW9uXSxvPXtlbnF1ZXVlKGUscz0xLG4pe2lmKHRoaXMuaXNDYW5jZWxsZWQpcmV0dXJuO2NvbnN0IG89dGhpcy5kZXNpcmVkU2l6ZTt0aGlzLmRlc2lyZWRTaXplLT1zO2lmKG8+MCYmdGhpcy5kZXNpcmVkU2l6ZTw9MCl7dGhpcy5zaW5rQ2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLnJlYWR5PXRoaXMuc2lua0NhcGFiaWxpdHkucHJvbWlzZX1yLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmksdGFyZ2V0TmFtZTphLHN0cmVhbTpDbyxzdHJlYW1JZDp0LGNodW5rOmV9LG4pfSxjbG9zZSgpe2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOmxvLHN0cmVhbUlkOnR9KTtkZWxldGUgcy5zdHJlYW1TaW5rc1t0XX19LGVycm9yKGUpe2Fzc2VydChlIGluc3RhbmNlb2YgRXJyb3IsImVycm9yIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2lmKCF0aGlzLmlzQ2FuY2VsbGVkKXt0aGlzLmlzQ2FuY2VsbGVkPSEwO3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOkJvLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX19LHNpbmtDYXBhYmlsaXR5OlByb21pc2Uud2l0aFJlc29sdmVycygpLG9uUHVsbDpudWxsLG9uQ2FuY2VsOm51bGwsaXNDYW5jZWxsZWQ6ITEsZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZSxyZWFkeTpudWxsfTtvLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtvLnJlYWR5PW8uc2lua0NhcGFiaWxpdHkucHJvbWlzZTt0aGlzLnN0cmVhbVNpbmtzW3RdPW87bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3QobihlLmRhdGEsbykpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06dW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06dW8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpfSNPKGUpe2NvbnN0IHQ9ZS5zdHJlYW1JZCxpPXRoaXMuc291cmNlTmFtZSxhPWUuc291cmNlTmFtZSxyPXRoaXMuY29tT2JqLHM9dGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XSxuPXRoaXMuc3RyZWFtU2lua3NbdF07c3dpdGNoKGUuc3RyZWFtKXtjYXNlIHVvOmUuc3VjY2Vzcz9zLnN0YXJ0Q2FsbC5yZXNvbHZlKCk6cy5zdGFydENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTticmVhaztjYXNlIEVvOmUuc3VjY2Vzcz9zLnB1bGxDYWxsLnJlc29sdmUoKTpzLnB1bGxDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSBRbzppZighbil7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06RW8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSk7YnJlYWt9bi5kZXNpcmVkU2l6ZTw9MCYmZS5kZXNpcmVkU2l6ZT4wJiZuLnNpbmtDYXBhYmlsaXR5LnJlc29sdmUoKTtuLmRlc2lyZWRTaXplPWUuZGVzaXJlZFNpemU7bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe2Uobi5vblB1bGw/LigpKX0pKS50aGVuKChmdW5jdGlvbigpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOkVvLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pfSksKGZ1bmN0aW9uKGUpe3IucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6aSx0YXJnZXROYW1lOmEsc3RyZWFtOkVvLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pKTticmVhaztjYXNlIENvOmFzc2VydChzLCJlbnF1ZXVlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYocy5pc0Nsb3NlZClicmVhaztzLmNvbnRyb2xsZXIuZW5xdWV1ZShlLmNodW5rKTticmVhaztjYXNlIGxvOmFzc2VydChzLCJjbG9zZSBzaG91bGQgaGF2ZSBzdHJlYW0gY29udHJvbGxlciIpO2lmKHMuaXNDbG9zZWQpYnJlYWs7cy5pc0Nsb3NlZD0hMDtzLmNvbnRyb2xsZXIuY2xvc2UoKTt0aGlzLiNXKHMsdCk7YnJlYWs7Y2FzZSBCbzphc3NlcnQocywiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtzLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI1cocyx0KTticmVhaztjYXNlIGhvOmUuc3VjY2Vzcz9zLmNhbmNlbENhbGwucmVzb2x2ZSgpOnMuY2FuY2VsQ2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI1cocyx0KTticmVhaztjYXNlIElvOmlmKCFuKWJyZWFrO25ldyBQcm9taXNlKChmdW5jdGlvbih0KXt0KG4ub25DYW5jZWw/Lih3cmFwUmVhc29uKGUucmVhc29uKSkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06aG8sc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9KSwoZnVuY3Rpb24oZSl7ci5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTppLHRhcmdldE5hbWU6YSxzdHJlYW06aG8sc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSkpO24uc2lua0NhcGFiaWxpdHkucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTtuLmlzQ2FuY2VsbGVkPSEwO2RlbGV0ZSB0aGlzLnN0cmVhbVNpbmtzW3RdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHN0cmVhbSBjYXNlIil9fWFzeW5jI1coZSx0KXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW2Uuc3RhcnRDYWxsPy5wcm9taXNlLGUucHVsbENhbGw/LnByb21pc2UsZS5jYW5jZWxDYWxsPy5wcm9taXNlXSk7ZGVsZXRlIHRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF19ZGVzdHJveSgpe3RoaXMuY29tT2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMuX29uQ29tT2JqT25NZXNzYWdlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuX21zZ0hhbmRsZXI9ZTt0aGlzLl9jb250ZW50TGVuZ3RoPW51bGw7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzPVtdfWdldEZ1bGxSZWFkZXIoKXthc3NlcnQoIXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLCJQREZXb3JrZXJTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1uZXcgUERGV29ya2VyU3RyZWFtUmVhZGVyKHRoaXMuX21zZ0hhbmRsZXIpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcihlLHQpe2NvbnN0IGk9bmV3IFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVyKGUsdCx0aGlzLl9tc2dIYW5kbGVyKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2goaSk7cmV0dXJuIGl9Y2FuY2VsQWxsUmVxdWVzdHMoZSl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbChlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKXQuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCk7dGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKChlPT57dGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWQ9ZS5pc1N0cmVhbWluZ1N1cHBvcnRlZDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPWUuaXNSYW5nZVN1cHBvcnRlZDt0aGlzLl9jb250ZW50TGVuZ3RoPWUuY29udGVudExlbmd0aH0pKX1nZXQgaGVhZGVyc1JlYWR5KCl7cmV0dXJuIHRoaXMuX2hlYWRlcnNSZWFkeX1nZXQgY29udGVudExlbmd0aCgpe3JldHVybiB0aGlzLl9jb250ZW50TGVuZ3RofWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZH1nZXQgaXNSYW5nZVN1cHBvcnRlZCgpe3JldHVybiB0aGlzLl9pc1JhbmdlU3VwcG9ydGVkfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgUERGV29ya2VyU3RyZWFtUmFuZ2VSZWFkZXJ7Y29uc3RydWN0b3IoZSx0LGkpe3RoaXMuX21zZ0hhbmRsZXI9aTt0aGlzLm9uUHJvZ3Jlc3M9bnVsbDtjb25zdCBhPXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhTdHJlYW0oIkdldFJhbmdlUmVhZGVyIix7YmVnaW46ZSxlbmQ6dH0pO3RoaXMuX3JlYWRlcj1hLmdldFJlYWRlcigpfWdldCBpc1N0cmVhbWluZ1N1cHBvcnRlZCgpe3JldHVybiExfWFzeW5jIHJlYWQoKXtjb25zdHt2YWx1ZTplLGRvbmU6dH09YXdhaXQgdGhpcy5fcmVhZGVyLnJlYWQoKTtyZXR1cm4gdD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Ont2YWx1ZTplLmJ1ZmZlcixkb25lOiExfX1jYW5jZWwoZSl7dGhpcy5fcmVhZGVyLmNhbmNlbChlKX19Y2xhc3MgV29ya2VyVGFza3tjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9ZTt0aGlzLnRlcm1pbmF0ZWQ9ITE7dGhpcy5fY2FwYWJpbGl0eT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKX1nZXQgZmluaXNoZWQoKXtyZXR1cm4gdGhpcy5fY2FwYWJpbGl0eS5wcm9taXNlfWZpbmlzaCgpe3RoaXMuX2NhcGFiaWxpdHkucmVzb2x2ZSgpfXRlcm1pbmF0ZSgpe3RoaXMudGVybWluYXRlZD0hMH1lbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYodGhpcy50ZXJtaW5hdGVkKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHRhc2sgd2FzIHRlcm1pbmF0ZWQiKX19Y2xhc3MgV29ya2VyTWVzc2FnZUhhbmRsZXJ7c3RhdGljIHNldHVwKGUsdCl7bGV0IGk9ITE7ZS5vbigidGVzdCIsKGZ1bmN0aW9uKHQpe2lmKCFpKXtpPSEwO2Uuc2VuZCgidGVzdCIsdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpfX0pKTtlLm9uKCJjb25maWd1cmUiLChmdW5jdGlvbihlKXshZnVuY3Rpb24gc2V0VmVyYm9zaXR5TGV2ZWwoZSl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKHJ0PWUpfShlLnZlcmJvc2l0eSl9KSk7ZS5vbigiR2V0RG9jUmVxdWVzdCIsKGZ1bmN0aW9uKGUpe3JldHVybiBXb3JrZXJNZXNzYWdlSGFuZGxlci5jcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KX0pKX1zdGF0aWMgY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCl7bGV0IGksYT0hMSxyPW51bGw7Y29uc3Qgcz1uZXcgU2V0LG49Z2V0VmVyYm9zaXR5TGV2ZWwoKSx7ZG9jSWQ6byxhcGlWZXJzaW9uOmd9PWUsYz0iNC4zLjEzNiI7aWYoZyE9PWMpdGhyb3cgbmV3IEVycm9yKGBUaGUgQVBJIHZlcnNpb24gIiR7Z30iIGRvZXMgbm90IG1hdGNoIHRoZSBXb3JrZXIgdmVyc2lvbiAiJHtjfSIuYCk7Y29uc3QgaD1bXTtmb3IoY29uc3QgZSBpbltdKWgucHVzaChlKTtpZihoLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgQXJyYXkucHJvdG90eXBlYCBjb250YWlucyB1bmV4cGVjdGVkIGVudW1lcmFibGUgcHJvcGVydGllczogIitoLmpvaW4oIiwgIikrIjsgdGh1cyBicmVha2luZyBlLmcuIGBmb3IuLi5pbmAgaXRlcmF0aW9uIG9mIGBBcnJheWBzLiIpO2NvbnN0IGw9bysiX3dvcmtlciI7bGV0IEM9bmV3IE1lc3NhZ2VIYW5kbGVyKGwsbyx0KTtmdW5jdGlvbiBlbnN1cmVOb3RUZXJtaW5hdGVkKCl7aWYoYSl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB3YXMgdGVybWluYXRlZCIpfWZ1bmN0aW9uIHN0YXJ0V29ya2VyVGFzayhlKXtzLmFkZChlKX1mdW5jdGlvbiBmaW5pc2hXb3JrZXJUYXNrKGUpe2UuZmluaXNoKCk7cy5kZWxldGUoZSl9YXN5bmMgZnVuY3Rpb24gbG9hZERvY3VtZW50KGUpe2F3YWl0IGkuZW5zdXJlRG9jKCJjaGVja0hlYWRlciIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZVN0YXJ0WFJlZiIpO2F3YWl0IGkuZW5zdXJlRG9jKCJwYXJzZSIsW2VdKTthd2FpdCBpLmVuc3VyZURvYygiY2hlY2tGaXJzdFBhZ2UiLFtlXSk7YXdhaXQgaS5lbnN1cmVEb2MoImNoZWNrTGFzdFBhZ2UiLFtlXSk7Y29uc3QgdD1hd2FpdCBpLmVuc3VyZURvYygiaXNQdXJlWGZhIik7aWYodCl7Y29uc3QgZT1uZXcgV29ya2VyVGFzaygibG9hZFhmYUZvbnRzIik7c3RhcnRXb3JrZXJUYXNrKGUpO2F3YWl0IFByb21pc2UuYWxsKFtpLmxvYWRYZmFGb250cyhDLGUpLmNhdGNoKChlPT57fSkpLnRoZW4oKCgpPT5maW5pc2hXb3JrZXJUYXNrKGUpKSksaS5sb2FkWGZhSW1hZ2VzKCldKX1jb25zdFthLHJdPWF3YWl0IFByb21pc2UuYWxsKFtpLmVuc3VyZURvYygibnVtUGFnZXMiKSxpLmVuc3VyZURvYygiZmluZ2VycHJpbnRzIildKTtyZXR1cm57bnVtUGFnZXM6YSxmaW5nZXJwcmludHM6cixodG1sRm9yWGZhOnQ/YXdhaXQgaS5lbnN1cmVEb2MoImh0bWxGb3JYZmEiKTpudWxsfX1mdW5jdGlvbiBnZXRQZGZNYW5hZ2VyKHtkYXRhOmUscGFzc3dvcmQ6dCxkaXNhYmxlQXV0b0ZldGNoOmkscmFuZ2VDaHVua1NpemU6YSxsZW5ndGg6cyxkb2NCYXNlVXJsOm4sZW5hYmxlWGZhOmcsZXZhbHVhdG9yT3B0aW9uczpjfSl7Y29uc3QgaD17c291cmNlOm51bGwsZGlzYWJsZUF1dG9GZXRjaDppLGRvY0Jhc2VVcmw6bixkb2NJZDpvLGVuYWJsZVhmYTpnLGV2YWx1YXRvck9wdGlvbnM6YyxoYW5kbGVyOkMsbGVuZ3RoOnMscGFzc3dvcmQ6dCxyYW5nZUNodW5rU2l6ZTphfSxsPVByb21pc2Uud2l0aFJlc29sdmVycygpO2xldCBRO2lmKGUpe3RyeXtoLnNvdXJjZT1lO1E9bmV3IExvY2FsUGRmTWFuYWdlcihoKTtsLnJlc29sdmUoUSl9Y2F0Y2goZSl7bC5yZWplY3QoZSl9cmV0dXJuIGwucHJvbWlzZX1sZXQgRSx1PVtdO3RyeXtFPW5ldyBQREZXb3JrZXJTdHJlYW0oQyl9Y2F0Y2goZSl7bC5yZWplY3QoZSk7cmV0dXJuIGwucHJvbWlzZX1jb25zdCBkPUUuZ2V0RnVsbFJlYWRlcigpO2QuaGVhZGVyc1JlYWR5LnRoZW4oKGZ1bmN0aW9uKCl7aWYoZC5pc1JhbmdlU3VwcG9ydGVkKXtoLnNvdXJjZT1FO2gubGVuZ3RoPWQuY29udGVudExlbmd0aDtoLmRpc2FibGVBdXRvRmV0Y2h8fD1kLmlzU3RyZWFtaW5nU3VwcG9ydGVkO1E9bmV3IE5ldHdvcmtQZGZNYW5hZ2VyKGgpO2Zvcihjb25zdCBlIG9mIHUpUS5zZW5kUHJvZ3Jlc3NpdmVEYXRhKGUpO3U9W107bC5yZXNvbHZlKFEpO3I9bnVsbH19KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2wucmVqZWN0KGUpO3I9bnVsbH0pKTtsZXQgZj0wO25ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe2NvbnN0IHJlYWRDaHVuaz1mdW5jdGlvbih7dmFsdWU6ZSxkb25lOml9KXt0cnl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2lmKGkpe1F8fGZ1bmN0aW9uKCl7Y29uc3QgZT1hcnJheUJ1ZmZlcnNUb0J5dGVzKHUpO3MmJmUubGVuZ3RoIT09cyYmd2FybigicmVwb3J0ZWQgSFRUUCBsZW5ndGggaXMgZGlmZmVyZW50IGZyb20gYWN0dWFsIik7dHJ5e2guc291cmNlPWU7UT1uZXcgTG9jYWxQZGZNYW5hZ2VyKGgpO2wucmVzb2x2ZShRKX1jYXRjaChlKXtsLnJlamVjdChlKX11PVtdfSgpO3I9bnVsbDtyZXR1cm59Zis9ZS5ieXRlTGVuZ3RoO2QuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fEMuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6Zix0b3RhbDpNYXRoLm1heChmLGQuY29udGVudExlbmd0aHx8MCl9KTtRP1Euc2VuZFByb2dyZXNzaXZlRGF0YShlKTp1LnB1c2goZSk7ZC5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9Y2F0Y2goZSl7dChlKX19O2QucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtsLnJlamVjdChlKTtyPW51bGx9KSk7cj1mdW5jdGlvbihlKXtFLmNhbmNlbEFsbFJlcXVlc3RzKGUpfTtyZXR1cm4gbC5wcm9taXNlfUMub24oIkdldFBhZ2UiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5nZXRQYWdlKGUucGFnZUluZGV4KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2kuZW5zdXJlKGUsInJvdGF0ZSIpLGkuZW5zdXJlKGUsInJlZiIpLGkuZW5zdXJlKGUsInVzZXJVbml0IiksaS5lbnN1cmUoZSwidmlldyIpXSkudGhlbigoZnVuY3Rpb24oW2UsdCxpLGFdKXtyZXR1cm57cm90YXRlOmUscmVmOnQscmVmU3RyOnQ/LnRvU3RyaW5nKCk/P251bGwsdXNlclVuaXQ6aSx2aWV3OmF9fSkpfSkpfSkpO0Mub24oIkdldFBhZ2VJbmRleCIsKGZ1bmN0aW9uKGUpe2NvbnN0IHQ9UmVmLmdldChlLm51bSxlLmdlbik7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiZ2V0UGFnZUluZGV4IixbdF0pfSkpO0Mub24oIkdldERlc3RpbmF0aW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImRlc3RpbmF0aW9ucyIpfSkpO0Mub24oIkdldERlc3RpbmF0aW9uIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygiZ2V0RGVzdGluYXRpb24iLFtlLmlkXSl9KSk7Qy5vbigiR2V0UGFnZUxhYmVscyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coInBhZ2VMYWJlbHMiKX0pKTtDLm9uKCJHZXRQYWdlTGF5b3V0IiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGFnZUxheW91dCIpfSkpO0Mub24oIkdldFBhZ2VNb2RlIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygicGFnZU1vZGUiKX0pKTtDLm9uKCJHZXRWaWV3ZXJQcmVmZXJlbmNlcyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coInZpZXdlclByZWZlcmVuY2VzIil9KSk7Qy5vbigiR2V0T3BlbkFjdGlvbiIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coIm9wZW5BY3Rpb24iKX0pKTtDLm9uKCJHZXRBdHRhY2htZW50cyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coImF0dGFjaG1lbnRzIil9KSk7Qy5vbigiR2V0RG9jSlNBY3Rpb25zIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIil9KSk7Qy5vbigiR2V0UGFnZUpTQWN0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe3JldHVybiBpLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlKGUsImpzQWN0aW9ucyIpfSkpfSkpO0Mub24oIkdldE91dGxpbmUiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJkb2N1bWVudE91dGxpbmUiKX0pKTtDLm9uKCJHZXRPcHRpb25hbENvbnRlbnRDb25maWciLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVDYXRhbG9nKCJvcHRpb25hbENvbnRlbnRDb25maWciKX0pKTtDLm9uKCJHZXRQZXJtaXNzaW9ucyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coInBlcm1pc3Npb25zIil9KSk7Qy5vbigiR2V0TWV0YWRhdGEiLChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2kuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxpLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIildKX0pKTtDLm9uKCJHZXRNYXJrSW5mbyIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZUNhdGFsb2coIm1hcmtJbmZvIil9KSk7Qy5vbigiR2V0RGF0YSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ieXRlc30pKX0pKTtDLm9uKCJHZXRBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZSxpbnRlbnQ6dH0pe3JldHVybiBpLmdldFBhZ2UoZSkudGhlbigoZnVuY3Rpb24oaSl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgR2V0QW5ub3RhdGlvbnM6IHBhZ2UgJHtlfWApO3N0YXJ0V29ya2VyVGFzayhhKTtyZXR1cm4gaS5nZXRBbm5vdGF0aW9uc0RhdGEoQyxhLHQpLnRoZW4oKGU9PntmaW5pc2hXb3JrZXJUYXNrKGEpO3JldHVybiBlfSksKGU9PntmaW5pc2hXb3JrZXJUYXNrKGEpO3Rocm93IGV9KSl9KSl9KSk7Qy5vbigiR2V0RmllbGRPYmplY3RzIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKX0pKTtDLm9uKCJIYXNKU0FjdGlvbnMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVEb2MoImhhc0pTQWN0aW9ucyIpfSkpO0Mub24oIkdldENhbGN1bGF0aW9uT3JkZXJJZHMiLChmdW5jdGlvbihlKXtyZXR1cm4gaS5lbnN1cmVEb2MoImNhbGN1bGF0aW9uT3JkZXJJZHMiKX0pKTtDLm9uKCJTYXZlRG9jdW1lbnQiLChhc3luYyBmdW5jdGlvbih7aXNQdXJlWGZhOmUsbnVtUGFnZXM6dCxhbm5vdGF0aW9uU3RvcmFnZTphLGZpbGVuYW1lOnJ9KXtjb25zdCBzPVtpLnJlcXVlc3RMb2FkZWRTdHJlYW0oKSxpLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksaS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybVJlZiIpLGkuZW5zdXJlRG9jKCJzdGFydFhSZWYiKSxpLmVuc3VyZURvYygieHJlZiIpLGkuZW5zdXJlRG9jKCJsaW5lYXJpemF0aW9uIiksaS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpXSxuPVtdLG89ZT9udWxsOmdldE5ld0Fubm90YXRpb25zTWFwKGEpLFtnLGMsaCxsLFEsRSx1XT1hd2FpdCBQcm9taXNlLmFsbChzKSxkPVEudHJhaWxlci5nZXRSYXcoIlJvb3QiKXx8bnVsbDtsZXQgZjtpZihvKXt1P2F3YWl0IHUuY2FuVXBkYXRlU3RydWN0VHJlZSh7cGRmTWFuYWdlcjppLHhyZWY6USxuZXdBbm5vdGF0aW9uc0J5UGFnZTpvfSkmJihmPXUpOmF3YWl0IFN0cnVjdFRyZWVSb290LmNhbkNyZWF0ZVN0cnVjdHVyZVRyZWUoe2NhdGFsb2dSZWY6ZCxwZGZNYW5hZ2VyOmksbmV3QW5ub3RhdGlvbnNCeVBhZ2U6b30pJiYoZj1udWxsKTtjb25zdCBlPUFubm90YXRpb25GYWN0b3J5LmdlbmVyYXRlSW1hZ2VzKGEudmFsdWVzKCksUSxpLmV2YWx1YXRvck9wdGlvbnMuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpLHQ9dm9pZCAwPT09Zj9uOltdO2Zvcihjb25zdFthLHJdb2Ygbyl0LnB1c2goaS5nZXRQYWdlKGEpLnRoZW4oKHQ9Pntjb25zdCBpPW5ldyBXb3JrZXJUYXNrKGBTYXZlIChlZGl0b3IpOiBwYWdlICR7YX1gKTtyZXR1cm4gdC5zYXZlTmV3QW5ub3RhdGlvbnMoQyxpLHIsZSkuZmluYWxseSgoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGkpfSkpfSkpKTtudWxsPT09Zj9uLnB1c2goUHJvbWlzZS5hbGwodCkudGhlbigoYXN5bmMgZT0+e2F3YWl0IFN0cnVjdFRyZWVSb290LmNyZWF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOm8seHJlZjpRLGNhdGFsb2dSZWY6ZCxwZGZNYW5hZ2VyOmksbmV3UmVmczplfSk7cmV0dXJuIGV9KSkpOmYmJm4ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKChhc3luYyBlPT57YXdhaXQgZi51cGRhdGVTdHJ1Y3R1cmVUcmVlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTpvLHBkZk1hbmFnZXI6aSxuZXdSZWZzOmV9KTtyZXR1cm4gZX0pKSl9aWYoZSluLnB1c2goaS5zZXJpYWxpemVYZmFEYXRhKGEpKTtlbHNlIGZvcihsZXQgZT0wO2U8dDtlKyspbi5wdXNoKGkuZ2V0UGFnZShlKS50aGVuKChmdW5jdGlvbih0KXtjb25zdCBpPW5ldyBXb3JrZXJUYXNrKGBTYXZlOiBwYWdlICR7ZX1gKTtyZXR1cm4gdC5zYXZlKEMsaSxhKS5maW5hbGx5KChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soaSl9KSl9KSkpO2NvbnN0IHA9YXdhaXQgUHJvbWlzZS5hbGwobik7bGV0IG09W10seT1udWxsO2lmKGUpe3k9cFswXTtpZigheSlyZXR1cm4gZy5ieXRlc31lbHNle209cC5mbGF0KDIpO2lmKDA9PT1tLmxlbmd0aClyZXR1cm4gZy5ieXRlc31jb25zdCB3PWgmJmMgaW5zdGFuY2VvZiBEaWN0JiZtLnNvbWUoKGU9PmUubmVlZEFwcGVhcmFuY2VzKSksYj1jIGluc3RhbmNlb2YgRGljdCYmYy5nZXQoIlhGQSIpfHxudWxsO2xldCBEPW51bGwsUz0hMTtpZihBcnJheS5pc0FycmF5KGIpKXtmb3IobGV0IGU9MCx0PWIubGVuZ3RoO2U8dDtlKz0yKWlmKCJkYXRhc2V0cyI9PT1iW2VdKXtEPWJbZSsxXTtTPSEwfW51bGw9PT1EJiYoRD1RLmdldE5ld1RlbXBvcmFyeVJlZigpKX1lbHNlIGImJndhcm4oIlVuc3VwcG9ydGVkIFhGQSB0eXBlLiIpO2xldCBrPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoUS50cmFpbGVyKXtjb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCksdD1RLnRyYWlsZXIuZ2V0KCJJbmZvIil8fG51bGw7dCBpbnN0YW5jZW9mIERpY3QmJnQuZm9yRWFjaCgoKHQsaSk9Pnsic3RyaW5nIj09dHlwZW9mIGkmJihlW3RdPXN0cmluZ1RvUERGU3RyaW5nKGkpKX0pKTtrPXtyb290UmVmOmQsZW5jcnlwdFJlZjpRLnRyYWlsZXIuZ2V0UmF3KCJFbmNyeXB0Iil8fG51bGwsbmV3UmVmOlEuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksaW5mb1JlZjpRLnRyYWlsZXIuZ2V0UmF3KCJJbmZvIil8fG51bGwsaW5mbzplLGZpbGVJZHM6US50cmFpbGVyLmdldCgiSUQiKXx8bnVsbCxzdGFydFhSZWY6RT9sOlEubGFzdFhSZWZTdHJlYW1Qb3M/P2wsZmlsZW5hbWU6cn19cmV0dXJuIGluY3JlbWVudGFsVXBkYXRlKHtvcmlnaW5hbERhdGE6Zy5ieXRlcyx4cmVmSW5mbzprLG5ld1JlZnM6bSx4cmVmOlEsaGFzWGZhOiEhYix4ZmFEYXRhc2V0c1JlZjpELGhhc1hmYURhdGFzZXRzRW50cnk6UyxuZWVkQXBwZWFyYW5jZXM6dyxhY3JvRm9ybVJlZjpoLGFjcm9Gb3JtOmMseGZhRGF0YTp5LHVzZVhyZWZTdHJlYW06aXNEaWN0KFEudG9wRGljdCwiWFJlZiIpfSkuZmluYWxseSgoKCk9PntRLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KSl9KSk7Qy5vbigiR2V0T3BlcmF0b3JMaXN0IiwoZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUucGFnZUluZGV4O2kuZ2V0UGFnZShhKS50aGVuKChmdW5jdGlvbihpKXtjb25zdCByPW5ldyBXb3JrZXJUYXNrKGBHZXRPcGVyYXRvckxpc3Q6IHBhZ2UgJHthfWApO3N0YXJ0V29ya2VyVGFzayhyKTtjb25zdCBzPW4+PXBBLklORk9TP0RhdGUubm93KCk6MDtpLmdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjpDLHNpbms6dCx0YXNrOnIsaW50ZW50OmUuaW50ZW50LGNhY2hlS2V5OmUuY2FjaGVLZXksYW5ub3RhdGlvblN0b3JhZ2U6ZS5hbm5vdGF0aW9uU3RvcmFnZX0pLnRoZW4oKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2socik7cyYmaW5mbyhgcGFnZT0ke2ErMX0gLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9JHtEYXRlLm5vdygpLXN9bXMsIGxlbj0ke2UubGVuZ3RofWApO3QuY2xvc2UoKX0pLChmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKHIpO3IudGVybWluYXRlZHx8dC5lcnJvcihlKX0pKX0pKX0pKTtDLm9uKCJHZXRUZXh0Q29udGVudCIsKGZ1bmN0aW9uKGUsdCl7Y29uc3R7cGFnZUluZGV4OmEsaW5jbHVkZU1hcmtlZENvbnRlbnQ6cixkaXNhYmxlTm9ybWFsaXphdGlvbjpzfT1lO2kuZ2V0UGFnZShhKS50aGVuKChmdW5jdGlvbihlKXtjb25zdCBpPW5ldyBXb3JrZXJUYXNrKCJHZXRUZXh0Q29udGVudDogcGFnZSAiK2EpO3N0YXJ0V29ya2VyVGFzayhpKTtjb25zdCBvPW4+PXBBLklORk9TP0RhdGUubm93KCk6MDtlLmV4dHJhY3RUZXh0Q29udGVudCh7aGFuZGxlcjpDLHRhc2s6aSxzaW5rOnQsaW5jbHVkZU1hcmtlZENvbnRlbnQ6cixkaXNhYmxlTm9ybWFsaXphdGlvbjpzfSkudGhlbigoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGkpO28mJmluZm8oYHBhZ2U9JHthKzF9IC0gZ2V0VGV4dENvbnRlbnQ6IHRpbWU9YCsoRGF0ZS5ub3coKS1vKSsibXMiKTt0LmNsb3NlKCl9KSwoZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhpKTtpLnRlcm1pbmF0ZWR8fHQuZXJyb3IoZSl9KSl9KSl9KSk7Qy5vbigiR2V0U3RydWN0VHJlZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBpLmVuc3VyZShlLCJnZXRTdHJ1Y3RUcmVlIil9KSl9KSk7Qy5vbigiRm9udEZhbGxiYWNrIiwoZnVuY3Rpb24oZSl7cmV0dXJuIGkuZm9udEZhbGxiYWNrKGUuaWQsQyl9KSk7Qy5vbigiQ2xlYW51cCIsKGZ1bmN0aW9uKGUpe3JldHVybiBpLmNsZWFudXAoITApfSkpO0Mub24oIlRlcm1pbmF0ZSIsKGZ1bmN0aW9uKGUpe2E9ITA7Y29uc3QgdD1bXTtpZihpKXtpLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Y29uc3QgZT1pLmNsZWFudXAoKTt0LnB1c2goZSk7aT1udWxsfWVsc2UgY2xlYXJHbG9iYWxDYWNoZXMoKTtyJiZyKG5ldyBBYm9ydEV4Y2VwdGlvbigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkLiIpKTtmb3IoY29uc3QgZSBvZiBzKXt0LnB1c2goZS5maW5pc2hlZCk7ZS50ZXJtaW5hdGUoKX1yZXR1cm4gUHJvbWlzZS5hbGwodCkudGhlbigoZnVuY3Rpb24oKXtDLmRlc3Ryb3koKTtDPW51bGx9KSl9KSk7Qy5vbigiUmVhZHkiLChmdW5jdGlvbih0KXshZnVuY3Rpb24gc2V0dXBEb2MoZSl7ZnVuY3Rpb24gb25TdWNjZXNzKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtDLnNlbmQoIkdldERvYyIse3BkZkluZm86ZX0pfWZ1bmN0aW9uIG9uRmFpbHVyZShlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoZSBpbnN0YW5jZW9mIFBhc3N3b3JkRXhjZXB0aW9uKXtjb25zdCB0PW5ldyBXb3JrZXJUYXNrKGBQYXNzd29yZEV4Y2VwdGlvbjogcmVzcG9uc2UgJHtlLmNvZGV9YCk7c3RhcnRXb3JrZXJUYXNrKHQpO0Muc2VuZFdpdGhQcm9taXNlKCJQYXNzd29yZFJlcXVlc3QiLGUpLnRoZW4oKGZ1bmN0aW9uKHtwYXNzd29yZDplfSl7ZmluaXNoV29ya2VyVGFzayh0KTtpLnVwZGF0ZVBhc3N3b3JkKGUpO3BkZk1hbmFnZXJSZWFkeSgpfSkpLmNhdGNoKChmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2sodCk7Qy5zZW5kKCJEb2NFeGNlcHRpb24iLGUpfSkpfWVsc2UgZSBpbnN0YW5jZW9mIEludmFsaWRQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBNaXNzaW5nUERGRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5leHBlY3RlZFJlc3BvbnNlRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5rbm93bkVycm9yRXhjZXB0aW9uP0Muc2VuZCgiRG9jRXhjZXB0aW9uIixlKTpDLnNlbmQoIkRvY0V4Y2VwdGlvbiIsbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKSl9ZnVuY3Rpb24gcGRmTWFuYWdlclJlYWR5KCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMSkudGhlbihvblN1Y2Nlc3MsKGZ1bmN0aW9uKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtlIGluc3RhbmNlb2YgWFJlZlBhcnNlRXhjZXB0aW9uP2kucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oKGZ1bmN0aW9uKCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMCkudGhlbihvblN1Y2Nlc3Msb25GYWlsdXJlKX0pKTpvbkZhaWx1cmUoZSl9KSl9ZW5zdXJlTm90VGVybWluYXRlZCgpO2dldFBkZk1hbmFnZXIoZSkudGhlbigoZnVuY3Rpb24oZSl7aWYoYSl7ZS50ZXJtaW5hdGUobmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO3Rocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9aT1lO2kucmVxdWVzdExvYWRlZFN0cmVhbSghMCkudGhlbigoZT0+e0Muc2VuZCgiRGF0YUxvYWRlZCIse2xlbmd0aDplLmJ5dGVzLmJ5dGVMZW5ndGh9KX0pKX0pKS50aGVuKHBkZk1hbmFnZXJSZWFkeSxvbkZhaWx1cmUpfShlKTtlPW51bGx9KSk7cmV0dXJuIGx9c3RhdGljIGluaXRpYWxpemVGcm9tUG9ydChlKXtjb25zdCB0PW5ldyBNZXNzYWdlSGFuZGxlcigid29ya2VyIiwibWFpbiIsZSk7V29ya2VyTWVzc2FnZUhhbmRsZXIuc2V0dXAodCxlKTt0LnNlbmQoInJlYWR5IixudWxsKX19InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3cmJiFlJiYidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJmZ1bmN0aW9uIGlzTWVzc2FnZVBvcnQoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUucG9zdE1lc3NhZ2UmJiJvbm1lc3NhZ2UiaW4gZX0oc2VsZikmJldvcmtlck1lc3NhZ2VIYW5kbGVyLmluaXRpYWxpemVGcm9tUG9ydChzZWxmKX0pKCk7dmFyIGk9X193ZWJwYWNrX2V4cG9ydHNfXy5Xb3JrZXJNZXNzYWdlSGFuZGxlcjtleHBvcnR7aSBhcyBXb3JrZXJNZXNzYWdlSGFuZGxlcn07";function C2({onError:V,onPasswordRequest:t,onProgress:d,source:n}){const i=fW(null),N=fW(null);return vJ(()=>Ul(this,null,function*(){const b=PJ(n);if(b){if(Object.prototype.hasOwnProperty.call(b,"_pdfInfo")){i.value=b;return}try{N.value=aT(b),t&&(N.value.onPassword=(M,J)=>{t({callback:M,isWrongPassword:J===cT.INCORRECT_PASSWORD})}),d&&(N.value.onProgress=d),i.value=yield N.value.promise}catch(M){if(i.value=null,V)V(M);else throw M}}})),y2(()=>{var b,M,J;(b=N.value)!=null&&b.onPassword&&(N.value.onPassword=null),(M=N.value)!=null&&M.onProgress&&(N.value.onProgress=null),(J=i.value)==null||J.destroy()}),{doc:i}}var _W={};_W.d=(V,t)=>{for(var d in t)_W.o(t,d)&&!_W.o(V,d)&&Object.defineProperty(V,d,{enumerable:!0,get:t[d]})};_W.o=(V,t)=>Object.prototype.hasOwnProperty.call(V,t);var Ol=globalThis.pdfjsViewer={};_W.d(Ol,{AnnotationLayerBuilder:()=>q2,DownloadManager:()=>tS,EventBus:()=>lM,FindState:()=>qZ,GenericL10n:()=>CQ,LinkTarget:()=>$t,PDFFindController:()=>KT,PDFHistory:()=>dX,PDFLinkService:()=>_2,PDFPageView:()=>bM,PDFScriptingManager:()=>hX,PDFSinglePageViewer:()=>MX,PDFViewer:()=>YM,ProgressBar:()=>JT,RenderingStates:()=>gl,ScrollMode:()=>ol,SimpleLinkService:()=>Vb,SpreadMode:()=>pU,StructTreeLayerBuilder:()=>nM,TextLayerBuilder:()=>RM,XfaLayerBuilder:()=>hM,parseQueryString:()=>EQ});const nT="auto",x2=1,Ce=1.1,sT=.1,QT=10,DR=0,iT=1.25,r2=40,j2=5,gl={INITIAL:0,RUNNING:1,PAUSED:2,FINISHED:3},r0={UNKNOWN:0,NORMAL:1,CHANGING:2,FULLSCREEN:3},Dd={DISABLE:0,ENABLE:1,ENABLE_PERMISSIONS:2},ol={UNKNOWN:-1,VERTICAL:0,HORIZONTAL:1,WRAPPED:2,PAGE:3},pU={UNKNOWN:-1,NONE:0,ODD:1,EVEN:2};class NT{constructor(){const t=window.devicePixelRatio||1;this.sx=t,this.sy=t}get scaled(){return this.sx!==1||this.sy!==1}}function O2(V,t,d=!1){let n=V.offsetParent;if(!n){console.error("offsetParent is not set -- cannot scroll");return}let i=V.offsetTop+V.clientTop,N=V.offsetLeft+V.clientLeft;for(;n.clientHeight===n.scrollHeight&&n.clientWidth===n.scrollWidth||d&&(n.classList.contains("markedContent")||getComputedStyle(n).overflow==="hidden");)if(i+=n.offsetTop,N+=n.offsetLeft,n=n.offsetParent,!n)return;t&&(t.top!==void 0&&(i+=t.top),t.left!==void 0&&(N+=t.left,n.scrollLeft=N)),n.scrollTop=i}function RT(V,t){const d=function(N){i||(i=window.requestAnimationFrame(function(){i=null;const b=V.scrollLeft,M=n.lastX;b!==M&&(n.right=b>M),n.lastX=b;const J=V.scrollTop,X=n.lastY;J!==X&&(n.down=J>X),n.lastY=J,t(n)}))},n={right:!0,down:!0,lastX:V.scrollLeft,lastY:V.scrollTop,_eventHandler:d};let i=null;return V.addEventListener("scroll",d,!0),n}function EQ(V){const t=new Map;for(const[d,n]of new URLSearchParams(V))t.set(d.toLowerCase(),n);return t}const xe=/[\x00-\x1F]/g;function YQ(V,t=!1){return xe.test(V)?t?V.replaceAll(xe,d=>d==="\0"?"":" "):V.replaceAll("\0",""):V}function sa(V,t,d=0){let n=d,i=V.length-1;if(i<0||!t(V[i]))return V.length;if(t(V[n]))return n;for(;n<i;){const N=n+i>>1,b=V[N];t(b)?i=N:n=N+1}return n}function re(V){if(Math.floor(V)===V)return[V,1];const t=1/V,d=8;if(t>d)return[1,d];if(Math.floor(t)===t)return[1,t];const n=V>1?t:V;let i=0,N=1,b=1,M=1;for(;;){const X=i+b,p=N+M;if(p>d)break;n<=X/p?(b=X,M=p):(i=X,N=p)}let J;return n-i/N<b/M-n?J=n===V?[i,N]:[N,i]:J=n===V?[b,M]:[M,b],J}function us(V,t){const d=V%t;return d===0?V:Math.round(V-d+t)}function hT(V,t,d){if(V<2)return V;let n=t[V].div,i=n.offsetTop+n.clientTop;i>=d&&(n=t[V-1].div,i=n.offsetTop+n.clientTop);for(let N=V-2;N>=0&&(n=t[N].div,!(n.offsetTop+n.clientTop+n.clientHeight<=i));--N)V=N;return V}function bT({scrollEl:V,views:t,sortByVisibility:d=!1,horizontal:n=!1,rtl:i=!1}){const N=V.scrollTop,b=N+V.clientHeight,M=V.scrollLeft,J=M+V.clientWidth;function X(P){const r=P.div;return r.offsetTop+r.clientTop+r.clientHeight>N}function p(P){const r=P.div,A=r.offsetLeft+r.clientLeft,H=A+r.clientWidth;return i?A<J:H>M}const o=[],y=new Set,I=t.length;let k=sa(t,n?p:X);k>0&&k<I&&!n&&(k=hT(k,t,N));let w=n?J:-1;for(let P=k;P<I;P++){const r=t[P],A=r.div,H=A.offsetLeft+A.clientLeft,x=A.offsetTop+A.clientTop,v=A.clientWidth,$=A.clientHeight,E=H+v,O=x+$;if(w===-1)O>=b&&(w=O);else if((n?H:x)>w)break;if(O<=N||x>=b||E<=M||H>=J)continue;const _=Math.max(0,N-x)+Math.max(0,O-b),tl=Math.max(0,M-H)+Math.max(0,E-J),Vl=($-_)/$,Rl=(v-tl)/v,sl=Vl*Rl*100|0;o.push({id:r.id,x:H,y:x,view:r,percent:sl,widthPercent:Rl*100|0}),y.add(r.id)}const K=o[0],C=o.at(-1);return d&&o.sort(function(P,r){const A=P.percent-r.percent;return Math.abs(A)>.001?-A:P.id-r.id}),{first:K,last:C,views:o,ids:y}}function g2(V){return Number.isInteger(V)&&V%90===0}function mT(V){return Number.isInteger(V)&&Object.values(ol).includes(V)&&V!==ol.UNKNOWN}function eT(V){return Number.isInteger(V)&&Object.values(pU).includes(V)&&V!==pU.UNKNOWN}function K2(V){return V.width<=V.height}new Promise(function(V){window.requestAnimationFrame(V)});const MT=document.documentElement.style;function GT(V,t,d){return Math.min(Math.max(V,t),d)}var _t,G0,J0,IW,T0;class JT{constructor(t){h(this,_t,null),h(this,G0,null),h(this,J0,0),h(this,IW,null),h(this,T0,!0),S(this,_t,t.classList),S(this,IW,t.style)}get percent(){return F(this,J0)}set percent(t){if(S(this,J0,GT(t,0,100)),isNaN(t)){F(this,_t).add("indeterminate");return}F(this,_t).remove("indeterminate"),F(this,IW).setProperty("--progressBar-percent",`${F(this,J0)}%`)}setWidth(t){if(!t)return;const d=t.parentNode.offsetWidth-t.offsetWidth;d>0&&F(this,IW).setProperty("--progressBar-end-offset",`${d}px`)}setDisableAutoFetch(t=5e3){isNaN(F(this,J0))||(F(this,G0)&&clearTimeout(F(this,G0)),this.show(),S(this,G0,setTimeout(()=>{S(this,G0,null),this.hide()},t)))}hide(){F(this,T0)&&(S(this,T0,!1),F(this,_t).add("hidden"))}show(){F(this,T0)||(S(this,T0,!0),F(this,_t).remove("hidden"))}}_t=new WeakMap,G0=new WeakMap,J0=new WeakMap,IW=new WeakMap,T0=new WeakMap;function TT(V){let t=ol.VERTICAL,d=pU.NONE;switch(V){case"SinglePage":t=ol.PAGE;break;case"OneColumn":break;case"TwoPageLeft":t=ol.PAGE;case"TwoColumnLeft":d=pU.ODD;break;case"TwoPageRight":t=ol.PAGE;case"TwoColumnRight":d=pU.EVEN;break}return{scrollMode:t,spreadMode:d}}const ad={SPACE:0,ALPHA_LETTER:1,PUNCT:2,HAN_LETTER:3,KATAKANA_LETTER:4,HIRAGANA_LETTER:5,HALFWIDTH_KATAKANA_LETTER:6,THAI_LETTER:7};function ST(V){return V<11904}function XT(V){return(V&65408)===0}function YT(V){return V>=97&&V<=122||V>=65&&V<=90}function pT(V){return V>=48&&V<=57}function uT(V){return V===32||V===9||V===13||V===10}function BT(V){return V>=13312&&V<=40959||V>=63744&&V<=64255}function oT(V){return V>=12448&&V<=12543}function yT(V){return V>=12352&&V<=12447}function zT(V){return V>=65376&&V<=65439}function LT(V){return(V&65408)===3584}function Bs(V){return ST(V)?XT(V)?uT(V)?ad.SPACE:YT(V)||pT(V)||V===95?ad.ALPHA_LETTER:ad.PUNCT:LT(V)?ad.THAI_LETTER:V===160?ad.SPACE:ad.ALPHA_LETTER:BT(V)?ad.HAN_LETTER:oT(V)?ad.KATAKANA_LETTER:yT(V)?ad.HIRAGANA_LETTER:zT(V)?ad.HALFWIDTH_KATAKANA_LETTER:ad.ALPHA_LETTER}let ER;function kT(){return ER||(ER=" ¨ª¯²-µ¸-º¼-¾IJ-ijĿ-ŀʼnſDŽ-njDZ-dzʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕ 〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ff-stﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ!-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ¢-₩"),ER}const qZ={FOUND:0,NOT_FOUND:1,WRAPPED:2,PENDING:3},IT=250,DT=-50,ET=-400,je={"‐":"-","‘":"'","’":"'","‚":"'","‛":"'","“":'"',"”":'"',"„":'"',"‟":'"',"¼":"1/4","½":"1/2","¾":"3/4"},Oe=new Set([12441,12442,2381,2509,2637,2765,2893,3021,3149,3277,3387,3388,3405,3530,3642,3770,3972,4153,4154,5908,5940,6098,6752,6980,7082,7083,7154,7155,11647,43014,43052,43204,43347,43456,43766,44013,3158,3953,3954,3962,3963,3964,3965,3968,3956]);let wR;const wT=new RegExp("\\p{M}+","gu"),CT=new RegExp("([.*+?^${}()|[\\]\\\\])|(\\p{P})|(\\s+)|(\\p{M})|(\\p{L})","gu"),xT=new RegExp("([^\\p{M}])\\p{M}*$","u"),rT=new RegExp("^\\p{M}*([^\\p{M}])","u"),jT=/[\uAC00-\uD7AF\uFA6C\uFACF-\uFAD1\uFAD5-\uFAD7]+/g,ge=new Map,OT="[\\u1100-\\u1112\\ud7a4-\\ud7af\\ud84a\\ud84c\\ud850\\ud854\\ud857\\ud85f]",Ke=new Map;let CR=null,xR=null;function rR(V){const t=[];let d;for(;(d=jT.exec(V))!==null;){let{index:I}=d;for(const k of d[0]){let w=ge.get(k);w||(w=k.normalize("NFD").length,ge.set(k,w)),t.push([w,I++])}}let n;if(t.length===0&&CR)n=CR;else if(t.length>0&&xR)n=xR;else{const I=Object.keys(je).join(""),k=kT(),w=`([${I}])|([${k}])|((?:゙|゚)\\n)|(\\p{M}+(?:-\\n)?)|(\\S-\\n)|((?:\\p{Ideographic}|[-ヿ])\\n)|(\\n)`;t.length===0?n=CR=new RegExp(w+"|(\\u0000)","gum"):n=xR=new RegExp(w+`|(${OT})`,"gum")}const i=[];for(;(d=wT.exec(V))!==null;)i.push([d[0].length,d.index]);let N=V.normalize("NFD");const b=[[0,0]];let M=0,J=0,X=0,p=0,o=0,y=!1;return N=N.replace(n,(I,k,w,K,C,P,r,A,H,x)=>{var v,$,E;if(x-=p,k){const O=je[k],_=O.length;for(let tl=1;tl<_;tl++)b.push([x-X+tl,X-tl]);return X-=_-1,O}if(w){let O=Ke.get(w);O||(O=w.normalize("NFKC"),Ke.set(w,O));const _=O.length;for(let tl=1;tl<_;tl++)b.push([x-X+tl,X-tl]);return X-=_-1,O}if(K)return y=!0,x+o===((v=i[M])==null?void 0:v[1])?++M:(b.push([x-1-X+1,X-1]),X-=1,p+=1),b.push([x-X+1,X]),p+=1,o+=1,K.charAt(0);if(C){const O=C.endsWith(`
|
||
`),_=O?C.length-2:C.length;y=!0;let tl=_;x+o===(($=i[M])==null?void 0:$[1])&&(tl-=i[M][0],++M);for(let Vl=1;Vl<=tl;Vl++)b.push([x-1-X+Vl,X-Vl]);return X-=tl,p+=tl,O?(x+=_-1,b.push([x-X+1,1+X]),X+=1,p+=1,o+=1,C.slice(0,_)):C}if(P){const O=P.length-2;return b.push([x-X+O,1+X]),X+=1,p+=1,o+=1,P.slice(0,-2)}if(r){const O=r.length-1;return b.push([x-X+O,X]),p+=1,o+=1,r.slice(0,-1)}if(A)return b.push([x-X+1,X-1]),X-=1,p+=1,o+=1," ";if(x+o===((E=t[J])==null?void 0:E[1])){const O=t[J][0]-1;++J;for(let _=1;_<=O;_++)b.push([x-(X-_),X-_]);X-=O,p+=O}return H}),b.push([N.length,X]),[N,b,y]}function gT(V,t,d){if(!V)return[t,d];const n=t,i=t+d-1;let N=sa(V,X=>X[0]>=n);V[N][0]>n&&--N;let b=sa(V,X=>X[0]>=i,N);V[b][0]>i&&--b;const M=n+V[N][1],J=i+V[b][1]+1-M;return[M,J]}var YU,qW,S0,Wh,H2,ws,ah,Cs,jR,Vh,He,nh,ve,sh,Pe,xs,OR,Qh,fe,ih,Ae,DW,os,X0,uW,qt,M0,Nh,_e,rs,gR,js,KR,EW,ys,Rh,v2,Os,HR,gs,vR,Y0,BW;class KT{constructor({linkService:t,eventBus:d,updateMatchesCountOnProgress:n=!0}){h(this,Wh),h(this,ws),h(this,Cs),h(this,Vh),h(this,nh),h(this,sh),h(this,xs),h(this,Qh),h(this,ih),h(this,DW),h(this,X0),h(this,qt),h(this,Nh),h(this,rs),h(this,js),h(this,EW),h(this,Rh),h(this,Os),h(this,gs),h(this,Y0),h(this,YU,null),h(this,qW,!0),h(this,S0,0),this._linkService=t,this._eventBus=d,S(this,qW,n),this.onIsPageVisible=null,G(this,ws,ah).call(this),d._on("find",G(this,Wh,H2).bind(this)),d._on("findbarclose",G(this,Rh,v2).bind(this))}get highlightMatches(){return this._highlightMatches}get pageMatches(){return this._pageMatches}get pageMatchesLength(){return this._pageMatchesLength}get selected(){return this._selected}get state(){return F(this,YU)}setDocument(t){this._pdfDocument&&G(this,ws,ah).call(this),t&&(this._pdfDocument=t,this._firstPageCapability.resolve())}scrollMatchIntoView({element:t=null,selectedLeft:d=0,pageIndex:n=-1,matchIndex:i=-1}){if(!this._scrollMatches||!t||i===-1||i!==this._selected.matchIdx||n===-1||n!==this._selected.pageIdx)return;this._scrollMatches=!1;const N={top:DT,left:d+ET};O2(t,N,!0)}}YU=new WeakMap,qW=new WeakMap,S0=new WeakMap,Wh=new WeakSet,H2=function(V){if(!V)return;const t=this._pdfDocument,{type:d}=V;(F(this,YU)===null||G(this,Vh,He).call(this,V))&&(this._dirtyMatch=!0),S(this,YU,V),d!=="highlightallchange"&&G(this,Y0,BW).call(this,qZ.PENDING),this._firstPageCapability.promise.then(()=>{if(!this._pdfDocument||t&&this._pdfDocument!==t)return;G(this,ih,Ae).call(this);const n=!this._highlightMatches,i=!!this._findTimeout;this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),d?this._dirtyMatch?G(this,qt,M0).call(this):d==="again"?(G(this,qt,M0).call(this),n&&F(this,YU).highlightAll&&G(this,X0,uW).call(this)):d==="highlightallchange"?(i?G(this,qt,M0).call(this):this._highlightMatches=!0,G(this,X0,uW).call(this)):G(this,qt,M0).call(this):this._findTimeout=setTimeout(()=>{G(this,qt,M0).call(this),this._findTimeout=null},IT)})},ws=new WeakSet,ah=function(){this._highlightMatches=!1,this._scrollMatches=!1,this._pdfDocument=null,this._pageMatches=[],this._pageMatchesLength=[],S(this,S0,0),S(this,YU,null),this._selected={pageIdx:-1,matchIdx:-1},this._offset={pageIdx:null,matchIdx:null,wrapped:!1},this._extractTextPromises=[],this._pageContents=[],this._pageDiffs=[],this._hasDiacritics=[],this._matchesCountTotal=0,this._pagesToSearch=null,this._pendingFindMatches=new Set,this._resumePageIdx=null,this._dirtyMatch=!1,clearTimeout(this._findTimeout),this._findTimeout=null,this._firstPageCapability=Promise.withResolvers()},Cs=new WeakSet,jR=function(){const{query:V}=F(this,YU);return typeof V=="string"?(V!==this._rawQuery&&(this._rawQuery=V,[this._normalizedQuery]=rR(V)),this._normalizedQuery):(V||[]).filter(t=>!!t).map(t=>rR(t)[0])},Vh=new WeakSet,He=function(V){var N;var t;const d=V.query,n=F(this,YU).query,i=typeof d;if(i!==typeof n)return!0;if(i==="string"){if(d!==n)return!0}else if(JSON.stringify(d)!==JSON.stringify(n))return!0;switch(V.type){case"again":const b=this._selected.pageIdx+1,M=this._linkService;return b>=1&&b<=M.pagesCount&&b!==M.page&&!((N=(t=this.onIsPageVisible)==null?void 0:t.call(this,b))==null||N);case"highlightallchange":return!1}return!0},nh=new WeakSet,ve=function(V,t,d){let n=V.slice(0,t).match(xT);if(n){const i=V.charCodeAt(t),N=n[1].charCodeAt(0);if(Bs(i)===Bs(N))return!1}if(n=V.slice(t+d).match(rT),n){const i=V.charCodeAt(t+d-1),N=n[1].charCodeAt(0);if(Bs(i)===Bs(N))return!1}return!0},sh=new WeakSet,Pe=function(V,t,d,n){const i=this._pageMatches[d]=[],N=this._pageMatchesLength[d]=[];if(!V)return;const b=this._pageDiffs[d];let M;for(;(M=V.exec(n))!==null;){if(t&&!G(this,nh,ve).call(this,n,M.index,M[0].length))continue;const[J,X]=gT(b,M.index,M[0].length);X&&(i.push(J),N.push(X))}},xs=new WeakSet,OR=function(V,t){const{matchDiacritics:d}=F(this,YU);let n=!1;V=V.replaceAll(CT,(N,b,M,J,X,p)=>b?`[ ]*\\${b}[ ]*`:M?`[ ]*${M}[ ]*`:J?"[ ]+":d?X||p:X?Oe.has(X.charCodeAt(0))?X:"":t?(n=!0,`${p}\\p{M}*`):p);const i="[ ]*";return V.endsWith(i)&&(V=V.slice(0,V.length-i.length)),d&&t&&(wR||(wR=String.fromCharCode(...Oe)),n=!0,V=`${V}(?=[${wR}]|[^\\p{M}]|$)`),[n,V]},Qh=new WeakSet,fe=function(V){let t=F(this,Cs,jR);if(t.length===0)return;const{caseSensitive:d,entireWord:n}=F(this,YU),i=this._pageContents[V],N=this._hasDiacritics[V];let b=!1;typeof t=="string"?[b,t]=G(this,xs,OR).call(this,t,N):t=t.sort().reverse().map(X=>{const[p,o]=G(this,xs,OR).call(this,X,N);return b||(b=p),`(${o})`}).join("|");const M=`g${b?"u":""}${d?"":"i"}`;t=t?new RegExp(t,M):null,G(this,sh,Pe).call(this,t,n,V,i),F(this,YU).highlightAll&&G(this,DW,os).call(this,V),this._resumePageIdx===V&&(this._resumePageIdx=null,G(this,rs,gR).call(this));const J=this._pageMatches[V].length;this._matchesCountTotal+=J,F(this,qW)?J>0&&G(this,gs,vR).call(this):++PU(this,S0)._===this._linkService.pagesCount&&G(this,gs,vR).call(this)},ih=new WeakSet,Ae=function(){if(this._extractTextPromises.length>0)return;let V=Promise.resolve();const t={disableNormalization:!0};for(let d=0,n=this._linkService.pagesCount;d<n;d++){const{promise:i,resolve:N}=Promise.withResolvers();this._extractTextPromises[d]=i,V=V.then(()=>this._pdfDocument.getPage(d+1).then(b=>b.getTextContent(t)).then(b=>{const M=[];for(const J of b.items)M.push(J.str),J.hasEOL&&M.push(`
|
||
`);[this._pageContents[d],this._pageDiffs[d],this._hasDiacritics[d]]=rR(M.join("")),N()},b=>{console.error(`Unable to get text content for page ${d+1}`,b),this._pageContents[d]="",this._pageDiffs[d]=null,this._hasDiacritics[d]=!1,N()}))}},DW=new WeakSet,os=function(V){this._scrollMatches&&this._selected.pageIdx===V&&(this._linkService.page=V+1),this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:V})},X0=new WeakSet,uW=function(){this._eventBus.dispatch("updatetextlayermatches",{source:this,pageIndex:-1})},qt=new WeakSet,M0=function(){const V=F(this,YU).findPrevious,t=this._linkService.page-1,d=this._linkService.pagesCount;if(this._highlightMatches=!0,this._dirtyMatch){this._dirtyMatch=!1,this._selected.pageIdx=this._selected.matchIdx=-1,this._offset.pageIdx=t,this._offset.matchIdx=null,this._offset.wrapped=!1,this._resumePageIdx=null,this._pageMatches.length=0,this._pageMatchesLength.length=0,S(this,S0,0),this._matchesCountTotal=0,G(this,X0,uW).call(this);for(let i=0;i<d;i++)this._pendingFindMatches.has(i)||(this._pendingFindMatches.add(i),this._extractTextPromises[i].then(()=>{this._pendingFindMatches.delete(i),G(this,Qh,fe).call(this,i)}))}if(F(this,Cs,jR).length===0){G(this,Y0,BW).call(this,qZ.FOUND);return}if(this._resumePageIdx)return;const n=this._offset;if(this._pagesToSearch=d,n.matchIdx!==null){const i=this._pageMatches[n.pageIdx].length;if(!V&&n.matchIdx+1<i||V&&n.matchIdx>0){n.matchIdx=V?n.matchIdx-1:n.matchIdx+1,G(this,EW,ys).call(this,!0);return}G(this,js,KR).call(this,V)}G(this,rs,gR).call(this)},Nh=new WeakSet,_e=function(V){const t=this._offset,d=V.length,n=F(this,YU).findPrevious;return d?(t.matchIdx=n?d-1:0,G(this,EW,ys).call(this,!0),!0):(G(this,js,KR).call(this,n),t.wrapped&&(t.matchIdx=null,this._pagesToSearch<0)?(G(this,EW,ys).call(this,!1),!0):!1)},rs=new WeakSet,gR=function(){this._resumePageIdx!==null&&console.error("There can only be one pending page.");let V=null;do{const t=this._offset.pageIdx;if(V=this._pageMatches[t],!V){this._resumePageIdx=t;break}}while(!G(this,Nh,_e).call(this,V))},js=new WeakSet,KR=function(V){const t=this._offset,d=this._linkService.pagesCount;t.pageIdx=V?t.pageIdx-1:t.pageIdx+1,t.matchIdx=null,this._pagesToSearch--,(t.pageIdx>=d||t.pageIdx<0)&&(t.pageIdx=V?d-1:0,t.wrapped=!0)},EW=new WeakSet,ys=function(V=!1){let t=qZ.NOT_FOUND;const d=this._offset.wrapped;if(this._offset.wrapped=!1,V){const n=this._selected.pageIdx;this._selected.pageIdx=this._offset.pageIdx,this._selected.matchIdx=this._offset.matchIdx,t=d?qZ.WRAPPED:qZ.FOUND,n!==-1&&n!==this._selected.pageIdx&&G(this,DW,os).call(this,n)}G(this,Y0,BW).call(this,t,F(this,YU).findPrevious),this._selected.pageIdx!==-1&&(this._scrollMatches=!0,G(this,DW,os).call(this,this._selected.pageIdx))},Rh=new WeakSet,v2=function(V){const t=this._pdfDocument;this._firstPageCapability.promise.then(()=>{!this._pdfDocument||t&&this._pdfDocument!==t||(this._findTimeout&&(clearTimeout(this._findTimeout),this._findTimeout=null),this._resumePageIdx&&(this._resumePageIdx=null,this._dirtyMatch=!0),G(this,Y0,BW).call(this,qZ.FOUND),this._highlightMatches=!1,G(this,X0,uW).call(this))})},Os=new WeakSet,HR=function(){var V;const{pageIdx:t,matchIdx:d}=this._selected;let n=0,i=this._matchesCountTotal;if(d!==-1){for(let N=0;N<t;N++)n+=((V=this._pageMatches[N])==null?void 0:V.length)||0;n+=d+1}return(n<1||n>i)&&(n=i=0),{current:n,total:i}},gs=new WeakSet,vR=function(){this._eventBus.dispatch("updatefindmatchescount",{source:this,matchesCount:G(this,Os,HR).call(this)})},Y0=new WeakSet,BW=function(V,t=!1){var n;var d;!F(this,qW)&&(F(this,S0)!==this._linkService.pagesCount||V===qZ.PENDING)||this._eventBus.dispatch("updatefindcontrolstate",{source:this,state:V,previous:t,matchesCount:G(this,Os,HR).call(this),rawQuery:(n=(d=F(this,YU))==null?void 0:d.query)!=null?n:null})};const HT="noopener noreferrer nofollow",$t={NONE:0,SELF:1,BLANK:2,PARENT:3,TOP:4};var hh,P2;const f2=class A2{constructor({eventBus:t,externalLinkTarget:d=null,externalLinkRel:n=null,ignoreDestinationZoom:i=!1}={}){el(this,"externalLinkEnabled",!0),this.eventBus=t,this.externalLinkTarget=d,this.externalLinkRel=n,this._ignoreDestinationZoom=i,this.baseUrl=null,this.pdfDocument=null,this.pdfViewer=null,this.pdfHistory=null}setDocument(t,d=null){this.baseUrl=d,this.pdfDocument=t}setViewer(t){this.pdfViewer=t}setHistory(t){this.pdfHistory=t}get pagesCount(){return this.pdfDocument?this.pdfDocument.numPages:0}get page(){return this.pdfDocument?this.pdfViewer.currentPageNumber:1}set page(t){this.pdfDocument&&(this.pdfViewer.currentPageNumber=t)}get rotation(){return this.pdfDocument?this.pdfViewer.pagesRotation:0}set rotation(t){this.pdfDocument&&(this.pdfViewer.pagesRotation=t)}get isInPresentationMode(){return this.pdfDocument?this.pdfViewer.isInPresentationMode:!1}goToDestination(t){return Ul(this,null,function*(){if(!this.pdfDocument)return;let d,n,i;if(typeof t=="string"?(d=t,n=yield this.pdfDocument.getDestination(t)):(d=null,n=yield t),!Array.isArray(n)){console.error(`goToDestination: "${n}" is not a valid destination array, for dest="${t}".`);return}const[N]=n;if(N&&typeof N=="object"){if(i=this.pdfDocument.cachedPageNumber(N),!i)try{i=(yield this.pdfDocument.getPageIndex(N))+1}catch(b){console.error(`goToDestination: "${N}" is not a valid page reference, for dest="${t}".`);return}}else Number.isInteger(N)&&(i=N+1);if(!i||i<1||i>this.pagesCount){console.error(`goToDestination: "${i}" is not a valid page number, for dest="${t}".`);return}this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.push({namedDest:d,explicitDest:n,pageNumber:i})),this.pdfViewer.scrollPageIntoView({pageNumber:i,destArray:n,ignoreDestinationZoom:this._ignoreDestinationZoom})})}goToPage(t){if(!this.pdfDocument)return;const d=typeof t=="string"&&this.pdfViewer.pageLabelToPageNumber(t)||t|0;if(!(Number.isInteger(d)&&d>0&&d<=this.pagesCount)){console.error(`PDFLinkService.goToPage: "${t}" is not a valid page.`);return}this.pdfHistory&&(this.pdfHistory.pushCurrentPosition(),this.pdfHistory.pushPage(d)),this.pdfViewer.scrollPageIntoView({pageNumber:d})}addLinkAttributes(t,d,n=!1){if(!d||typeof d!="string")throw new Error('A valid "url" parameter must provided.');const i=n?$t.BLANK:this.externalLinkTarget,N=this.externalLinkRel;this.externalLinkEnabled?t.href=t.title=d:(t.href="",t.title=`Disabled: ${d}`,t.onclick=()=>!1);let b="";switch(i){case $t.NONE:break;case $t.SELF:b="_self";break;case $t.BLANK:b="_blank";break;case $t.PARENT:b="_parent";break;case $t.TOP:b="_top";break}t.target=b,t.rel=typeof N=="string"?N:HT}getDestinationHash(t){if(typeof t=="string"){if(t.length>0)return this.getAnchorUrl("#"+escape(t))}else if(Array.isArray(t)){const d=JSON.stringify(t);if(d.length>0)return this.getAnchorUrl("#"+escape(d))}return this.getAnchorUrl("")}getAnchorUrl(t){return this.baseUrl?this.baseUrl+t:t}setHash(t){var d;if(!this.pdfDocument)return;let n,i;if(t.includes("=")){const N=EQ(t);if(N.has("search")){const b=N.get("search").replaceAll('"',""),M=N.get("phrase")==="true";this.eventBus.dispatch("findfromurlhash",{source:this,query:M?b:b.match(/\S+/g)})}if(N.has("page")&&(n=N.get("page")|0||1),N.has("zoom")){const b=N.get("zoom").split(","),M=b[0],J=parseFloat(M);M.includes("Fit")?M==="Fit"||M==="FitB"?i=[null,{name:M}]:M==="FitH"||M==="FitBH"||M==="FitV"||M==="FitBV"?i=[null,{name:M},b.length>1?b[1]|0:null]:M==="FitR"?b.length!==5?console.error('PDFLinkService.setHash: Not enough parameters for "FitR".'):i=[null,{name:M},b[1]|0,b[2]|0,b[3]|0,b[4]|0]:console.error(`PDFLinkService.setHash: "${M}" is not a valid zoom value.`):i=[null,{name:"XYZ"},b.length>1?b[1]|0:null,b.length>2?b[2]|0:null,J?J/100:M]}i?this.pdfViewer.scrollPageIntoView({pageNumber:n||this.page,destArray:i,allowNegativeOffset:!0}):n&&(this.page=n),N.has("pagemode")&&this.eventBus.dispatch("pagemode",{source:this,mode:N.get("pagemode")}),N.has("nameddest")&&this.goToDestination(N.get("nameddest"));return}i=unescape(t);try{i=JSON.parse(i),Array.isArray(i)||(i=i.toString())}catch(N){}if(typeof i=="string"||G(d=A2,hh,P2).call(d,i)){this.goToDestination(i);return}console.error(`PDFLinkService.setHash: "${unescape(t)}" is not a valid destination.`)}executeNamedAction(t){var d,n;if(this.pdfDocument){switch(t){case"GoBack":(d=this.pdfHistory)==null||d.back();break;case"GoForward":(n=this.pdfHistory)==null||n.forward();break;case"NextPage":this.pdfViewer.nextPage();break;case"PrevPage":this.pdfViewer.previousPage();break;case"LastPage":this.page=this.pagesCount;break;case"FirstPage":this.page=1;break}this.eventBus.dispatch("namedaction",{source:this,action:t})}}executeSetOCGState(t){return Ul(this,null,function*(){if(!this.pdfDocument)return;const d=this.pdfDocument,n=yield this.pdfViewer.optionalContentConfigPromise;d===this.pdfDocument&&(n.setOCGState(t),this.pdfViewer.optionalContentConfigPromise=Promise.resolve(n))})}};hh=new WeakSet,P2=function(V){if(!Array.isArray(V)||V.length<2)return!1;const[t,d,...n]=V;if(!(typeof t=="object"&&Number.isInteger(t==null?void 0:t.num)&&Number.isInteger(t==null?void 0:t.gen))&&!Number.isInteger(t)||!(typeof d=="object"&&typeof(d==null?void 0:d.name)=="string"))return!1;let i=!0;switch(d.name){case"XYZ":if(n.length!==3)return!1;break;case"Fit":case"FitB":return n.length===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(n.length!==1)return!1;break;case"FitR":if(n.length!==4)return!1;i=!1;break;default:return!1}for(const N of n)if(!(typeof N=="number"||i&&N===null))return!1;return!0},h(f2,hh);let _2=f2;class Vb extends _2{setDocument(t,d=null){}}const{AbortException:vT,AnnotationEditorLayer:PT,AnnotationEditorParamsType:_X,AnnotationEditorType:ct,AnnotationEditorUIManager:fT,AnnotationLayer:AT,AnnotationMode:NZ,build:qX,CMapCompressionType:$X,ColorPicker:lY,createValidAbsoluteUrl:_T,DOMSVGFactory:UY,DrawLayer:qT,FeatureTest:dY,fetchData:qe,getDocument:ZY,getFilenameFromUrl:tY,getPdfFilenameFromUrl:$T,getXfaPageViewport:FY,GlobalWorkerOptions:cY,ImageKind:WY,InvalidPDFException:aY,isDataScheme:VY,isPdfFile:lS,MissingPDFException:nY,noContextMenu:sY,normalizeUnicode:US,OPS:QY,Outliner:iY,PasswordResponses:NY,PDFDataRangeTransport:RY,PDFDateString:hY,PDFWorker:bY,PermissionFlag:zs,PixelsPerInch:QZ,RenderingCancelledException:nb,renderTextLayer:mY,setLayerDimensions:dS,shadow:pQ,TextLayer:ZS,UnexpectedResponseException:eY,updateTextLayer:MY,Util:GY,VerbosityLevel:JY,version:$e,XfaLayer:PR}=globalThis.pdfjsLib;var Ks,lF,Hs,bh;class q2{constructor({pdfPage:t,linkService:d,downloadManager:n,annotationStorage:i=null,imageResourcesPath:N="",renderForms:b=!0,enableScripting:M=!1,hasJSActionsPromise:J=null,fieldObjectsPromise:X=null,annotationCanvasMap:p=null,accessibilityManager:o=null,annotationEditorUIManager:y=null,onAppend:I=null}){h(this,Hs),h(this,Ks,null),h(this,lF,null),this.pdfPage=t,this.linkService=d,this.downloadManager=n,this.imageResourcesPath=N,this.renderForms=b,this.annotationStorage=i,this.enableScripting=M,this._hasJSActionsPromise=J||Promise.resolve(!1),this._fieldObjectsPromise=X||Promise.resolve(null),this._annotationCanvasMap=p,this._accessibilityManager=o,this._annotationEditorUIManager=y,S(this,Ks,I),this.annotationLayer=null,this.div=null,this._cancelled=!1,this._eventBus=d.eventBus}render(t,d="display"){return Ul(this,null,function*(){var n,i;if(this.div){if(this._cancelled||!this.annotationLayer)return;this.annotationLayer.update({viewport:t.clone({dontFlip:!0})});return}const[N,b,M]=yield Promise.all([this.pdfPage.getAnnotations({intent:d}),this._hasJSActionsPromise,this._fieldObjectsPromise]);if(this._cancelled)return;const J=this.div=document.createElement("div");if(J.className="annotationLayer",(n=F(this,Ks))==null||n.call(this,J),N.length===0){this.hide();return}this.annotationLayer=new AT({div:J,accessibilityManager:this._accessibilityManager,annotationCanvasMap:this._annotationCanvasMap,annotationEditorUIManager:this._annotationEditorUIManager,page:this.pdfPage,viewport:t.clone({dontFlip:!0})}),yield this.annotationLayer.render({annotations:N,imageResourcesPath:this.imageResourcesPath,renderForms:this.renderForms,linkService:this.linkService,downloadManager:this.downloadManager,annotationStorage:this.annotationStorage,enableScripting:this.enableScripting,hasJSActions:b,fieldObjects:M}),this.linkService.isInPresentationMode&&G(this,Hs,bh).call(this,r0.FULLSCREEN),F(this,lF)||(S(this,lF,new AbortController),(i=this._eventBus)==null||i._on("presentationmodechanged",X=>{G(this,Hs,bh).call(this,X.state)},{signal:F(this,lF).signal}))})}cancel(){var t;this._cancelled=!0,(t=F(this,lF))==null||t.abort(),S(this,lF,null)}hide(){this.div&&(this.div.hidden=!0)}}Ks=new WeakMap,lF=new WeakMap,Hs=new WeakSet,bh=function(V){if(!this.div)return;let t=!1;switch(V){case r0.FULLSCREEN:t=!0;break;case r0.NORMAL:break;default:return}for(const d of this.div.childNodes)d.hasAttribute("data-internal-link")||(d.inert=t)};function fR(V,t){const d=document.createElement("a");if(!d.click)throw new Error('DownloadManager: "a.click()" is not supported.');d.href=V,d.target="_parent","download"in d&&(d.download=t),(document.body||document.documentElement).append(d),d.click(),d.remove()}var $2;class tS{constructor(){h(this,$2,new WeakMap)}downloadUrl(t,d,n){if(!_T(t,"http://example.com")){console.error(`downloadUrl - not a valid URL: ${t}`);return}fR(t+"#pdfjs.action=download",d)}downloadData(t,d,n){const i=URL.createObjectURL(new Blob([t],{type:n}));fR(i,d)}openOrDownloadData(t,d,n=null){const i=lS(d)?"application/pdf":"";return this.downloadData(t,d,i),!1}download(t,d,n,i){const N=URL.createObjectURL(t);fR(N,n)}}$2=new WeakMap;const l2={EVENT:"event",TIMEOUT:"timeout"};function FS(n){return Ul(this,arguments,function*({target:V,name:t,delay:d=0}){if(typeof V!="object"||!(t&&typeof t=="string")||!(Number.isInteger(d)&&d>=0))throw new Error("waitOnEventOrTimeout - invalid parameters.");const{promise:i,resolve:N}=Promise.withResolvers(),b=new AbortController;function M(p){b.abort(),clearTimeout(X),N(p)}const J=V instanceof lM?"_on":"addEventListener";V[J](t,M.bind(null,l2.EVENT),{signal:b.signal});const X=setTimeout(M.bind(null,l2.TIMEOUT),d);return i})}var wW;class lM{constructor(){h(this,wW,Object.create(null))}on(t,d,n=null){this._on(t,d,{external:!0,once:n==null?void 0:n.once,signal:n==null?void 0:n.signal})}off(t,d,n=null){this._off(t,d)}dispatch(t,d){const n=F(this,wW)[t];if(!n||n.length===0)return;let i;for(const{listener:N,external:b,once:M}of n.slice(0)){if(M&&this._off(t,N),b){(i||(i=[])).push(N);continue}N(d)}if(i){for(const N of i)N(d);i=null}}_on(t,d,n=null){var i;let N=null;if((n==null?void 0:n.signal)instanceof AbortSignal){const{signal:b}=n;if(b.aborted){console.error("Cannot use an `aborted` signal.");return}const M=()=>this._off(t,d);N=()=>b.removeEventListener("abort",M),b.addEventListener("abort",M)}((i=F(this,wW))[t]||(i[t]=[])).push({listener:d,external:(n==null?void 0:n.external)===!0,once:(n==null?void 0:n.once)===!0,rmAbort:N})}_off(t,d,n=null){var i;const N=F(this,wW)[t];if(N)for(let b=0,M=N.length;b<M;b++){const J=N[b];if(J.listener===d){(i=J.rmAbort)==null||i.call(J),N.splice(b,1);return}}}}wW=new WeakMap;class wQ{constructor(t){this.value=t}valueOf(){return this.value}}class $l extends wQ{constructor(t="???"){super(t)}toString(t){return`{${this.value}}`}}class RZ extends wQ{constructor(t,d={}){super(t),this.opts=d}toString(t){try{return t.memoizeIntlObject(Intl.NumberFormat,this.opts).format(this.value)}catch(d){return t.reportError(d),this.value.toString(10)}}}class $W extends wQ{constructor(t,d={}){super(t),this.opts=d}toString(t){try{return t.memoizeIntlObject(Intl.DateTimeFormat,this.opts).format(this.value)}catch(d){return t.reportError(d),new Date(this.value).toISOString()}}}const U2=100,cS="",WS="";function aS(V,t,d){if(d===t||d instanceof RZ&&t instanceof RZ&&d.value===t.value)return!0;if(t instanceof RZ&&typeof d=="string"){let n=V.memoizeIntlObject(Intl.PluralRules,t.opts).select(t.value);if(d===n)return!0}return!1}function d2(V,t,d){return t[d]?H0(V,t[d].value):(V.reportError(new RangeError("No default")),new $l)}function mh(V,t){const d=[],n=Object.create(null);for(const i of t)i.type==="narg"?n[i.name]=Qa(V,i.value):d.push(Qa(V,i));return{positional:d,named:n}}function Qa(V,t){switch(t.type){case"str":return t.value;case"num":return new RZ(t.value,{minimumFractionDigits:t.precision});case"var":return VS(V,t);case"mesg":return nS(V,t);case"term":return sS(V,t);case"func":return QS(V,t);case"select":return iS(V,t);default:return new $l}}function VS(V,{name:t}){let d;if(V.params)if(Object.prototype.hasOwnProperty.call(V.params,t))d=V.params[t];else return new $l(`$${t}`);else if(V.args&&Object.prototype.hasOwnProperty.call(V.args,t))d=V.args[t];else return V.reportError(new ReferenceError(`Unknown variable: $${t}`)),new $l(`$${t}`);if(d instanceof wQ)return d;switch(typeof d){case"string":return d;case"number":return new RZ(d);case"object":if(d instanceof Date)return new $W(d.getTime());default:return V.reportError(new TypeError(`Variable type not supported: $${t}, ${typeof d}`)),new $l(`$${t}`)}}function nS(V,{name:t,attr:d}){const n=V.bundle._messages.get(t);if(!n)return V.reportError(new ReferenceError(`Unknown message: ${t}`)),new $l(t);if(d){const i=n.attributes[d];return i?H0(V,i):(V.reportError(new ReferenceError(`Unknown attribute: ${d}`)),new $l(`${t}.${d}`))}return n.value?H0(V,n.value):(V.reportError(new ReferenceError(`No value: ${t}`)),new $l(t))}function sS(V,{name:t,attr:d,args:n}){const i=`-${t}`,N=V.bundle._terms.get(i);if(!N)return V.reportError(new ReferenceError(`Unknown term: ${i}`)),new $l(i);if(d){const M=N.attributes[d];if(M){V.params=mh(V,n).named;const J=H0(V,M);return V.params=null,J}return V.reportError(new ReferenceError(`Unknown attribute: ${d}`)),new $l(`${i}.${d}`)}V.params=mh(V,n).named;const b=H0(V,N.value);return V.params=null,b}function QS(V,{name:t,args:d}){let n=V.bundle._functions[t];if(!n)return V.reportError(new ReferenceError(`Unknown function: ${t}()`)),new $l(`${t}()`);if(typeof n!="function")return V.reportError(new TypeError(`Function ${t}() is not callable`)),new $l(`${t}()`);try{let i=mh(V,d);return n(i.positional,i.named)}catch(i){return V.reportError(i),new $l(`${t}()`)}}function iS(V,{selector:t,variants:d,star:n}){let i=Qa(V,t);if(i instanceof $l)return d2(V,d,n);for(const N of d){const b=Qa(V,N.key);if(aS(V,i,b))return H0(V,N.value)}return d2(V,d,n)}function UM(V,t){if(V.dirty.has(t))return V.reportError(new RangeError("Cyclic reference")),new $l;V.dirty.add(t);const d=[],n=V.bundle._useIsolating&&t.length>1;for(const i of t){if(typeof i=="string"){d.push(V.bundle._transform(i));continue}if(V.placeables++,V.placeables>U2)throw V.dirty.delete(t),new RangeError(`Too many placeables expanded: ${V.placeables}, max allowed is ${U2}`);n&&d.push(cS),d.push(Qa(V,i).toString(V)),n&&d.push(WS)}return V.dirty.delete(t),d.join("")}function H0(V,t){return typeof t=="string"?V.bundle._transform(t):UM(V,t)}class NS{constructor(t,d,n){this.dirty=new WeakSet,this.params=null,this.placeables=0,this.bundle=t,this.errors=d,this.args=n}reportError(t){if(!this.errors||!(t instanceof Error))throw t;this.errors.push(t)}memoizeIntlObject(t,d){let n=this.bundle._intls.get(t);n||(n={},this.bundle._intls.set(t,n));let i=JSON.stringify(d);return n[i]||(n[i]=new t(this.bundle.locales,d)),n[i]}}function uQ(V,t){const d=Object.create(null);for(const[n,i]of Object.entries(V))t.includes(n)&&(d[n]=i.valueOf());return d}const Z2=["unitDisplay","currencyDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits"];function RS(V,t){let d=V[0];if(d instanceof $l)return new $l(`NUMBER(${d.valueOf()})`);if(d instanceof RZ)return new RZ(d.valueOf(),fl(fl({},d.opts),uQ(t,Z2)));if(d instanceof $W)return new RZ(d.valueOf(),fl({},uQ(t,Z2)));throw new TypeError("Invalid argument to NUMBER")}const t2=["dateStyle","timeStyle","fractionalSecondDigits","dayPeriod","hour12","weekday","era","year","month","day","hour","minute","second","timeZoneName"];function hS(V,t){let d=V[0];if(d instanceof $l)return new $l(`DATETIME(${d.valueOf()})`);if(d instanceof $W)return new $W(d.valueOf(),fl(fl({},d.opts),uQ(t,t2)));if(d instanceof RZ)return new $W(d.valueOf(),fl({},uQ(t,t2)));throw new TypeError("Invalid argument to DATETIME")}const F2=new Map;function bS(V){const t=Array.isArray(V)?V.join(" "):V;let d=F2.get(t);return d===void 0&&(d=new Map,F2.set(t,d)),d}class mS{constructor(t,{functions:d,useIsolating:n=!0,transform:i=N=>N}={}){this._terms=new Map,this._messages=new Map,this.locales=Array.isArray(t)?t:[t],this._functions=fl({NUMBER:RS,DATETIME:hS},d),this._useIsolating=n,this._transform=i,this._intls=bS(t)}hasMessage(t){return this._messages.has(t)}getMessage(t){return this._messages.get(t)}addResource(t,{allowOverrides:d=!1}={}){const n=[];for(let i=0;i<t.body.length;i++){let N=t.body[i];if(N.id.startsWith("-")){if(d===!1&&this._terms.has(N.id)){n.push(new Error(`Attempt to override an existing term: "${N.id}"`));continue}this._terms.set(N.id,N)}else{if(d===!1&&this._messages.has(N.id)){n.push(new Error(`Attempt to override an existing message: "${N.id}"`));continue}this._messages.set(N.id,N)}}return n}formatPattern(t,d=null,n=null){if(typeof t=="string")return this._transform(t);let i=new NS(this,n,d);try{return UM(i,t).toString(i)}catch(N){if(i.errors&&N instanceof Error)return i.errors.push(N),new $l().toString(i);throw N}}}const AR=/^(-?[a-zA-Z][\w-]*) *= */gm,c2=/\.([a-zA-Z][\w-]*) *= */y,eS=/\*?\[/y,_R=/(-?[0-9]+(?:\.([0-9]+))?)/y,MS=/([a-zA-Z][\w-]*)/y,W2=/([$-])?([a-zA-Z][\w-]*)(?:\.([a-zA-Z][\w-]*))?/y,GS=/^[A-Z][A-Z0-9_-]*$/,Ls=/([^{}\n\r]+)/y,JS=/([^\\"\n\r]*)/y,a2=/\\([\\"])/y,V2=/\\u([a-fA-F0-9]{4})|\\U([a-fA-F0-9]{6})/y,TS=/^\n+/,n2=/ +$/,SS=/ *\r?\n/g,XS=/( *)$/,YS=/{\s*/y,s2=/\s*}/y,pS=/\[\s*/y,uS=/\s*] */y,BS=/\s*\(\s*/y,oS=/\s*->\s*/y,yS=/\s*:\s*/y,zS=/\s*,?\s*/y,LS=/\s+/y;class kS{constructor(t){this.body=[],AR.lastIndex=0;let d=0;for(;;){let E=AR.exec(t);if(E===null)break;d=AR.lastIndex;try{this.body.push(J(E[1]))}catch(O){if(O instanceof SyntaxError)continue;throw O}}function n(E){return E.lastIndex=d,E.test(t)}function i(E,O){if(t[d]===E)return d++,!0;if(O)throw new O(`Expected ${E}`);return!1}function N(E,O){if(n(E))return d=E.lastIndex,!0;if(O)throw new O(`Expected ${E.toString()}`);return!1}function b(E){E.lastIndex=d;let O=E.exec(t);if(O===null)throw new SyntaxError(`Expected ${E.toString()}`);return d=E.lastIndex,O}function M(E){return b(E)[1]}function J(E){let O=p(),_=X();if(O===null&&Object.keys(_).length===0)throw new SyntaxError("Expected message value or attributes");return{id:E,value:O,attributes:_}}function X(){let E=Object.create(null);for(;n(c2);){let O=M(c2),_=p();if(_===null)throw new SyntaxError("Expected attribute value");E[O]=_}return E}function p(){let E;if(n(Ls)&&(E=M(Ls)),t[d]==="{"||t[d]==="}")return o(E?[E]:[],1/0);let O=x();return O?E?o([E,O],O.length):(O.value=v(O.value,TS),o([O],O.length)):E?v(E,n2):null}function o(E=[],O){for(;;){if(n(Ls)){E.push(M(Ls));continue}if(t[d]==="{"){E.push(y());continue}if(t[d]==="}")throw new SyntaxError("Unbalanced closing brace");let Rl=x();if(Rl){E.push(Rl),O=Math.min(O,Rl.length);continue}break}let _=E.length-1,tl=E[_];typeof tl=="string"&&(E[_]=v(tl,n2));let Vl=[];for(let Rl of E)Rl instanceof Q2&&(Rl=Rl.value.slice(0,Rl.value.length-O)),Rl&&Vl.push(Rl);return Vl}function y(){N(YS,SyntaxError);let E=I();if(N(s2))return E;if(N(oS)){let O=K();return N(s2,SyntaxError),fl({type:"select",selector:E},O)}throw new SyntaxError("Unclosed placeable")}function I(){if(t[d]==="{")return y();if(n(W2)){let[,E,O,_=null]=b(W2);if(E==="$")return{type:"var",name:O};if(N(BS)){let tl=k();if(E==="-")return{type:"term",name:O,attr:_,args:tl};if(GS.test(O))return{type:"func",name:O,args:tl};throw new SyntaxError("Function names must be all upper-case")}return E==="-"?{type:"term",name:O,attr:_,args:[]}:{type:"mesg",name:O,attr:_}}return P()}function k(){let E=[];for(;;){switch(t[d]){case")":return d++,E;case void 0:throw new SyntaxError("Unclosed argument list")}E.push(w()),N(zS)}}function w(){let E=I();return E.type!=="mesg"?E:N(yS)?{type:"narg",name:E.name,value:P()}:E}function K(){let E=[],O=0,_;for(;n(eS);){i("*")&&(_=O);let tl=C(),Vl=p();if(Vl===null)throw new SyntaxError("Expected variant value");E[O++]={key:tl,value:Vl}}if(O===0)return null;if(_===void 0)throw new SyntaxError("Expected default variant");return{variants:E,star:_}}function C(){N(pS,SyntaxError);let E;return n(_R)?E=r():E={type:"str",value:M(MS)},N(uS,SyntaxError),E}function P(){if(n(_R))return r();if(t[d]==='"')return A();throw new SyntaxError("Invalid expression")}function r(){let[,E,O=""]=b(_R),_=O.length;return{type:"num",value:parseFloat(E),precision:_}}function A(){i('"',SyntaxError);let E="";for(;;){if(E+=M(JS),t[d]==="\\"){E+=H();continue}if(i('"'))return{type:"str",value:E};throw new SyntaxError("Unclosed string literal")}}function H(){if(n(a2))return M(a2);if(n(V2)){let[,E,O]=b(V2),_=parseInt(E||O,16);return _<=55295||57344<=_?String.fromCodePoint(_):"<22>"}throw new SyntaxError("Unknown escape sequence")}function x(){let E=d;switch(N(LS),t[d]){case".":case"[":case"*":case"}":case void 0:return!1;case"{":return $(t.slice(E,d))}return t[d-1]===" "?$(t.slice(E,d)):!1}function v(E,O){return E.replace(O,"")}function $(E){let O=E.replace(SS,`
|
||
`),_=XS.exec(E)[1].length;return new Q2(O,_)}}}class Q2{constructor(t,d){this.value=t,this.length=d}}const IS=/<|&#?\w+;/,DS={"http://www.w3.org/1999/xhtml":["em","strong","small","s","cite","q","dfn","abbr","data","time","code","var","samp","kbd","sub","sup","i","b","u","mark","bdi","bdo","span","br","wbr"]},ES={"http://www.w3.org/1999/xhtml":{global:["title","aria-label","aria-valuetext"],a:["download"],area:["download","alt"],input:["alt","placeholder"],menuitem:["label"],menu:["label"],optgroup:["label"],option:["label"],track:["label"],img:["alt"],textarea:["placeholder"],th:["abbr"]},"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul":{global:["accesskey","aria-label","aria-valuetext","label","title","tooltiptext"],description:["value"],key:["key","keycode"],label:["value"],textbox:["placeholder","value"]}};function wS(V,t){const{value:d}=t;if(typeof d=="string")if(V.localName==="title"&&V.namespaceURI==="http://www.w3.org/1999/xhtml")V.textContent=d;else if(!IS.test(d))V.textContent=d;else{const n=V.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","template");n.innerHTML=d,CS(n.content,V)}dM(t,V)}function CS(V,t){for(const d of V.childNodes)if(d.nodeType!==d.TEXT_NODE){if(d.hasAttribute("data-l10n-name")){const n=rS(t,d);V.replaceChild(n,d);continue}if(OS(d)){const n=jS(d);V.replaceChild(n,d);continue}console.warn(`An element of forbidden type "${d.localName}" was found in the translation. Only safe text-level elements and elements with data-l10n-name are allowed.`),V.replaceChild(eh(d),d)}t.textContent="",t.appendChild(V)}function xS(V,t){if(!V)return!1;for(let d of V)if(d.name===t)return!0;return!1}function dM(V,t){const d=t.hasAttribute("data-l10n-attrs")?t.getAttribute("data-l10n-attrs").split(",").map(n=>n.trim()):null;for(const n of Array.from(t.attributes))i2(n.name,t,d)&&!xS(V.attributes,n.name)&&t.removeAttribute(n.name);if(V.attributes)for(const n of Array.from(V.attributes))i2(n.name,t,d)&&t.getAttribute(n.name)!==n.value&&t.setAttribute(n.name,n.value)}function rS(V,t){const d=t.getAttribute("data-l10n-name"),n=V.querySelector(`[data-l10n-name="${d}"]`);if(!n)return console.warn(`An element named "${d}" wasn't found in the source.`),eh(t);if(n.localName!==t.localName)return console.warn(`An element named "${d}" was found in the translation but its type ${t.localName} didn't match the element found in the source (${n.localName}).`),eh(t);V.removeChild(n);const i=n.cloneNode(!1);return ZM(t,i)}function jS(V){const t=V.ownerDocument.createElement(V.localName);return ZM(V,t)}function eh(V){return V.ownerDocument.createTextNode(V.textContent)}function OS(V){const t=DS[V.namespaceURI];return t&&t.includes(V.localName)}function i2(V,t,d=null){if(d&&d.includes(V))return!0;const n=ES[t.namespaceURI];if(!n)return!1;const i=V.toLowerCase(),N=t.localName;if(n.global.includes(i))return!0;if(!n[N])return!1;if(n[N].includes(i))return!0;if(t.namespaceURI==="http://www.w3.org/1999/xhtml"&&N==="input"&&i==="value"){const b=t.type.toLowerCase();if(b==="submit"||b==="button"||b==="reset")return!0}return!1}function ZM(V,t){return t.textContent=V.textContent,dM(V,t),t}class gS extends Array{static from(t){return t instanceof this?t:new this(t)}}class KS extends gS{constructor(t){if(super(),Symbol.asyncIterator in Object(t))this.iterator=t[Symbol.asyncIterator]();else if(Symbol.iterator in Object(t))this.iterator=t[Symbol.iterator]();else throw new TypeError("Argument must implement the iteration protocol.")}[Symbol.asyncIterator](){const t=this;let d=0;return{next(){return Ul(this,null,function*(){return t.length<=d&&t.push(t.iterator.next()),t[d++]})}}}touchNext(t=1){return Ul(this,null,function*(){let d=0;for(;d++<t;){const n=this[this.length-1];if(n&&(yield n).done)break;this.push(this.iterator.next())}return this[this.length-1]})}}class HS{constructor(t=[],d){this.resourceIds=t,this.generateBundles=d,this.onChange(!0)}addResourceIds(t,d=!1){return this.resourceIds.push(...t),this.onChange(d),this.resourceIds.length}removeResourceIds(t){return this.resourceIds=this.resourceIds.filter(d=>!t.includes(d)),this.onChange(),this.resourceIds.length}formatWithFallback(t,d){return Ul(this,null,function*(){const n=[];let i=!1;try{for(var N=Le(this.bundles),b,M,J;b=!(M=yield N.next()).done;b=!1){const X=M.value;i=!0;const p=fS(d,X,t,n);if(p.size===0)break;if(typeof console<"u"){const o=X.locales[0],y=Array.from(p).join(", ");console.warn(`[fluent] Missing translations in ${o}: ${y}`)}}}catch(M){J=[M]}finally{try{b&&(M=N.return)&&(yield M.call(N))}finally{if(J)throw J[0]}}return!i&&typeof console<"u"&&console.warn(`[fluent] Request for keys failed because no resource bundles got generated.
|
||
keys: ${JSON.stringify(t)}.
|
||
resourceIds: ${JSON.stringify(this.resourceIds)}.`),n})}formatMessages(t){return this.formatWithFallback(t,PS)}formatValues(t){return this.formatWithFallback(t,vS)}formatValue(t,d){return Ul(this,null,function*(){const[n]=yield this.formatValues([{id:t,args:d}]);return n})}handleEvent(){this.onChange()}onChange(t=!1){this.bundles=KS.from(this.generateBundles(this.resourceIds)),t&&this.bundles.touchNext(2)}}function vS(V,t,d,n){return d.value?V.formatPattern(d.value,n,t):null}function PS(V,t,d,n){const i={value:null,attributes:null};d.value&&(i.value=V.formatPattern(d.value,n,t));let N=Object.keys(d.attributes);if(N.length>0){i.attributes=new Array(N.length);for(let[b,M]of N.entries()){let J=V.formatPattern(d.attributes[M],n,t);i.attributes[b]={name:M,value:J}}}return i}function fS(V,t,d,n){const i=[],N=new Set;return d.forEach(({id:b,args:M},J)=>{if(n[J]!==void 0)return;let X=t.getMessage(b);if(X){if(i.length=0,n[J]=V(t,i,X,M),i.length>0&&typeof console<"u"){const p=t.locales[0],o=i.join(", ");console.warn(`[fluent][resolver] errors in ${p}/${b}: ${o}.`)}}else N.add(b)}),N}const UF="data-l10n-id",oW="data-l10n-args",AS=`[${UF}]`;class _S extends HS{constructor(t,d){super(t,d),this.roots=new Set,this.pendingrAF=null,this.pendingElements=new Set,this.windowElement=null,this.mutationObserver=null,this.observerConfig={attributes:!0,characterData:!1,childList:!0,subtree:!0,attributeFilter:[UF,oW]}}onChange(t=!1){super.onChange(t),this.roots&&this.translateRoots()}setAttributes(t,d,n){return t.setAttribute(UF,d),n?t.setAttribute(oW,JSON.stringify(n)):t.removeAttribute(oW),t}getAttributes(t){return{id:t.getAttribute(UF),args:JSON.parse(t.getAttribute(oW)||null)}}connectRoot(t){for(const d of this.roots)if(d===t||d.contains(t)||t.contains(d))throw new Error("Cannot add a root that overlaps with existing root.");if(this.windowElement){if(this.windowElement!==t.ownerDocument.defaultView)throw new Error(`Cannot connect a root:
|
||
DOMLocalization already has a root from a different window.`)}else this.windowElement=t.ownerDocument.defaultView,this.mutationObserver=new this.windowElement.MutationObserver(d=>this.translateMutations(d));this.roots.add(t),this.mutationObserver.observe(t,this.observerConfig)}disconnectRoot(t){return this.roots.delete(t),this.pauseObserving(),this.roots.size===0?(this.mutationObserver=null,this.windowElement=null,this.pendingrAF=null,this.pendingElements.clear(),!0):(this.resumeObserving(),!1)}translateRoots(){const t=Array.from(this.roots);return Promise.all(t.map(d=>this.translateFragment(d)))}pauseObserving(){this.mutationObserver&&(this.translateMutations(this.mutationObserver.takeRecords()),this.mutationObserver.disconnect())}resumeObserving(){if(this.mutationObserver)for(const t of this.roots)this.mutationObserver.observe(t,this.observerConfig)}translateMutations(t){for(const d of t)switch(d.type){case"attributes":d.target.hasAttribute("data-l10n-id")&&this.pendingElements.add(d.target);break;case"childList":for(const n of d.addedNodes)if(n.nodeType===n.ELEMENT_NODE)if(n.childElementCount)for(const i of this.getTranslatables(n))this.pendingElements.add(i);else n.hasAttribute(UF)&&this.pendingElements.add(n);break}this.pendingElements.size>0&&this.pendingrAF===null&&(this.pendingrAF=this.windowElement.requestAnimationFrame(()=>{this.translateElements(Array.from(this.pendingElements)),this.pendingElements.clear(),this.pendingrAF=null}))}translateFragment(t){return this.translateElements(this.getTranslatables(t))}translateElements(t){return Ul(this,null,function*(){if(!t.length)return;const d=t.map(this.getKeysForElement),n=yield this.formatMessages(d);return this.applyTranslations(t,n)})}applyTranslations(t,d){this.pauseObserving();for(let n=0;n<t.length;n++)d[n]!==void 0&&wS(t[n],d[n]);this.resumeObserving()}getTranslatables(t){const d=Array.from(t.querySelectorAll(AS));return typeof t.hasAttribute=="function"&&t.hasAttribute(UF)&&d.push(t),d}getKeysForElement(t){return{id:t.getAttribute(UF),args:JSON.parse(t.getAttribute(oW)||null)}}}var vs,CW,kd,Mh,tM,Gh,FM;const Jh=class Th{constructor({lang:t,isRTL:d},n=null){h(this,vs,void 0),h(this,CW,void 0),h(this,kd,void 0);var i,N;S(this,CW,G(i=Th,Mh,tM).call(i,t)),S(this,kd,n),S(this,vs,(d!=null?d:G(N=Th,Gh,FM).call(N,F(this,CW)))?"rtl":"ltr")}_setL10n(t){S(this,kd,t)}getLanguage(){return F(this,CW)}getDirection(){return F(this,vs)}get(t,d=null,n){return Ul(this,null,function*(){if(Array.isArray(t))return t=t.map(N=>({id:N})),(yield F(this,kd).formatMessages(t)).map(N=>N.value);const i=yield F(this,kd).formatMessages([{id:t,args:d}]);return(i==null?void 0:i[0].value)||n})}translate(t){return Ul(this,null,function*(){try{F(this,kd).connectRoot(t),yield F(this,kd).translateRoots()}catch(d){}})}pause(){F(this,kd).pauseObserving()}resume(){F(this,kd).resumeObserving()}};vs=new WeakMap,CW=new WeakMap,kd=new WeakMap,Mh=new WeakSet,tM=function(V){return V=(V==null?void 0:V.toLowerCase())||"en-us",{en:"en-us",es:"es-es",fy:"fy-nl",ga:"ga-ie",gu:"gu-in",hi:"hi-in",hy:"hy-am",nb:"nb-no",ne:"ne-np",nn:"nn-no",pa:"pa-in",pt:"pt-pt",sv:"sv-se",zh:"zh-cn"}[V]||V},Gh=new WeakSet,FM=function(V){const t=V.split("-",1)[0];return["ar","he","fa","ps","ur"].includes(t)},h(Jh,Mh),h(Jh,Gh);let qS=Jh;function N2(V,t){const d=new kS(t),n=new mS(V),i=n.addResource(d);return i.length&&console.error("L10n errors",i),n}var Sh,cM,qR,R2,$R,h2,Xh,WM,ks,lh;const p0=class xW extends qS{constructor(t){super({lang:t});const d=t?G(xW,Sh,cM).bind(xW,"en-us",this.getLanguage()):G(xW,Xh,WM).bind(xW,this.getLanguage());this._setL10n(new _S([],d))}};Sh=new WeakSet,cM=function(V,t){return yR(this,null,function*(){const{baseURL:d,paths:n}=yield new Ys(G(this,$R,h2).call(this)),i=[t];if(V!==t){const N=t.split("-",1)[0];N!==t&&i.push(N),i.push(V)}for(const N of i){const b=yield new Ys(G(this,qR,R2).call(this,N,d,n));b&&(yield b),N==="en-us"&&(yield G(this,ks,lh).call(this,N))}})},qR=new WeakSet,R2=function(V,t,d){return Ul(this,null,function*(){const n=d[V];if(!n)return null;const i=new URL(n,t),N=yield qe(i,"text");return N2(V,N)})},$R=new WeakSet,h2=function(){return Ul(this,null,function*(){try{const{href:V}=document.querySelector('link[type="application/l10n"]'),t=yield qe(V,"json");return{baseURL:V.replace(/[^/]*$/,"")||"./",paths:t}}catch(V){}return{baseURL:"./",paths:Object.create(null)}})},Xh=new WeakSet,WM=function(V){return yR(this,null,function*(){yield G(this,ks,lh).call(this,V)})},ks=new WeakSet,lh=function(V){return Ul(this,null,function*(){return N2(V,`pdfjs-previous-button =
|
||
.title = Previous Page
|
||
pdfjs-previous-button-label = Previous
|
||
pdfjs-next-button =
|
||
.title = Next Page
|
||
pdfjs-next-button-label = Next
|
||
pdfjs-page-input =
|
||
.title = Page
|
||
pdfjs-of-pages = of { $pagesCount }
|
||
pdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })
|
||
pdfjs-zoom-out-button =
|
||
.title = Zoom Out
|
||
pdfjs-zoom-out-button-label = Zoom Out
|
||
pdfjs-zoom-in-button =
|
||
.title = Zoom In
|
||
pdfjs-zoom-in-button-label = Zoom In
|
||
pdfjs-zoom-select =
|
||
.title = Zoom
|
||
pdfjs-presentation-mode-button =
|
||
.title = Switch to Presentation Mode
|
||
pdfjs-presentation-mode-button-label = Presentation Mode
|
||
pdfjs-open-file-button =
|
||
.title = Open File
|
||
pdfjs-open-file-button-label = Open
|
||
pdfjs-print-button =
|
||
.title = Print
|
||
pdfjs-print-button-label = Print
|
||
pdfjs-save-button =
|
||
.title = Save
|
||
pdfjs-save-button-label = Save
|
||
pdfjs-download-button =
|
||
.title = Download
|
||
pdfjs-download-button-label = Download
|
||
pdfjs-bookmark-button =
|
||
.title = Current Page (View URL from Current Page)
|
||
pdfjs-bookmark-button-label = Current Page
|
||
pdfjs-tools-button =
|
||
.title = Tools
|
||
pdfjs-tools-button-label = Tools
|
||
pdfjs-first-page-button =
|
||
.title = Go to First Page
|
||
pdfjs-first-page-button-label = Go to First Page
|
||
pdfjs-last-page-button =
|
||
.title = Go to Last Page
|
||
pdfjs-last-page-button-label = Go to Last Page
|
||
pdfjs-page-rotate-cw-button =
|
||
.title = Rotate Clockwise
|
||
pdfjs-page-rotate-cw-button-label = Rotate Clockwise
|
||
pdfjs-page-rotate-ccw-button =
|
||
.title = Rotate Counterclockwise
|
||
pdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise
|
||
pdfjs-cursor-text-select-tool-button =
|
||
.title = Enable Text Selection Tool
|
||
pdfjs-cursor-text-select-tool-button-label = Text Selection Tool
|
||
pdfjs-cursor-hand-tool-button =
|
||
.title = Enable Hand Tool
|
||
pdfjs-cursor-hand-tool-button-label = Hand Tool
|
||
pdfjs-scroll-page-button =
|
||
.title = Use Page Scrolling
|
||
pdfjs-scroll-page-button-label = Page Scrolling
|
||
pdfjs-scroll-vertical-button =
|
||
.title = Use Vertical Scrolling
|
||
pdfjs-scroll-vertical-button-label = Vertical Scrolling
|
||
pdfjs-scroll-horizontal-button =
|
||
.title = Use Horizontal Scrolling
|
||
pdfjs-scroll-horizontal-button-label = Horizontal Scrolling
|
||
pdfjs-scroll-wrapped-button =
|
||
.title = Use Wrapped Scrolling
|
||
pdfjs-scroll-wrapped-button-label = Wrapped Scrolling
|
||
pdfjs-spread-none-button =
|
||
.title = Do not join page spreads
|
||
pdfjs-spread-none-button-label = No Spreads
|
||
pdfjs-spread-odd-button =
|
||
.title = Join page spreads starting with odd-numbered pages
|
||
pdfjs-spread-odd-button-label = Odd Spreads
|
||
pdfjs-spread-even-button =
|
||
.title = Join page spreads starting with even-numbered pages
|
||
pdfjs-spread-even-button-label = Even Spreads
|
||
pdfjs-document-properties-button =
|
||
.title = Document Properties…
|
||
pdfjs-document-properties-button-label = Document Properties…
|
||
pdfjs-document-properties-file-name = File name:
|
||
pdfjs-document-properties-file-size = File size:
|
||
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
|
||
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
|
||
pdfjs-document-properties-title = Title:
|
||
pdfjs-document-properties-author = Author:
|
||
pdfjs-document-properties-subject = Subject:
|
||
pdfjs-document-properties-keywords = Keywords:
|
||
pdfjs-document-properties-creation-date = Creation Date:
|
||
pdfjs-document-properties-modification-date = Modification Date:
|
||
pdfjs-document-properties-date-string = { $date }, { $time }
|
||
pdfjs-document-properties-creator = Creator:
|
||
pdfjs-document-properties-producer = PDF Producer:
|
||
pdfjs-document-properties-version = PDF Version:
|
||
pdfjs-document-properties-page-count = Page Count:
|
||
pdfjs-document-properties-page-size = Page Size:
|
||
pdfjs-document-properties-page-size-unit-inches = in
|
||
pdfjs-document-properties-page-size-unit-millimeters = mm
|
||
pdfjs-document-properties-page-size-orientation-portrait = portrait
|
||
pdfjs-document-properties-page-size-orientation-landscape = landscape
|
||
pdfjs-document-properties-page-size-name-a-three = A3
|
||
pdfjs-document-properties-page-size-name-a-four = A4
|
||
pdfjs-document-properties-page-size-name-letter = Letter
|
||
pdfjs-document-properties-page-size-name-legal = Legal
|
||
pdfjs-document-properties-page-size-dimension-string = { $width } × { $height } { $unit } ({ $orientation })
|
||
pdfjs-document-properties-page-size-dimension-name-string = { $width } × { $height } { $unit } ({ $name }, { $orientation })
|
||
pdfjs-document-properties-linearized = Fast Web View:
|
||
pdfjs-document-properties-linearized-yes = Yes
|
||
pdfjs-document-properties-linearized-no = No
|
||
pdfjs-document-properties-close-button = Close
|
||
pdfjs-print-progress-message = Preparing document for printing…
|
||
pdfjs-print-progress-percent = { $progress }%
|
||
pdfjs-print-progress-close-button = Cancel
|
||
pdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.
|
||
pdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.
|
||
pdfjs-toggle-sidebar-button =
|
||
.title = Toggle Sidebar
|
||
pdfjs-toggle-sidebar-notification-button =
|
||
.title = Toggle Sidebar (document contains outline/attachments/layers)
|
||
pdfjs-toggle-sidebar-button-label = Toggle Sidebar
|
||
pdfjs-document-outline-button =
|
||
.title = Show Document Outline (double-click to expand/collapse all items)
|
||
pdfjs-document-outline-button-label = Document Outline
|
||
pdfjs-attachments-button =
|
||
.title = Show Attachments
|
||
pdfjs-attachments-button-label = Attachments
|
||
pdfjs-layers-button =
|
||
.title = Show Layers (double-click to reset all layers to the default state)
|
||
pdfjs-layers-button-label = Layers
|
||
pdfjs-thumbs-button =
|
||
.title = Show Thumbnails
|
||
pdfjs-thumbs-button-label = Thumbnails
|
||
pdfjs-current-outline-item-button =
|
||
.title = Find Current Outline Item
|
||
pdfjs-current-outline-item-button-label = Current Outline Item
|
||
pdfjs-findbar-button =
|
||
.title = Find in Document
|
||
pdfjs-findbar-button-label = Find
|
||
pdfjs-additional-layers = Additional Layers
|
||
pdfjs-thumb-page-title =
|
||
.title = Page { $page }
|
||
pdfjs-thumb-page-canvas =
|
||
.aria-label = Thumbnail of Page { $page }
|
||
pdfjs-find-input =
|
||
.title = Find
|
||
.placeholder = Find in document…
|
||
pdfjs-find-previous-button =
|
||
.title = Find the previous occurrence of the phrase
|
||
pdfjs-find-previous-button-label = Previous
|
||
pdfjs-find-next-button =
|
||
.title = Find the next occurrence of the phrase
|
||
pdfjs-find-next-button-label = Next
|
||
pdfjs-find-highlight-checkbox = Highlight All
|
||
pdfjs-find-match-case-checkbox-label = Match Case
|
||
pdfjs-find-match-diacritics-checkbox-label = Match Diacritics
|
||
pdfjs-find-entire-word-checkbox-label = Whole Words
|
||
pdfjs-find-reached-top = Reached top of document, continued from bottom
|
||
pdfjs-find-reached-bottom = Reached end of document, continued from top
|
||
pdfjs-find-match-count =
|
||
{ $total ->
|
||
[one] { $current } of { $total } match
|
||
*[other] { $current } of { $total } matches
|
||
}
|
||
pdfjs-find-match-count-limit =
|
||
{ $limit ->
|
||
[one] More than { $limit } match
|
||
*[other] More than { $limit } matches
|
||
}
|
||
pdfjs-find-not-found = Phrase not found
|
||
pdfjs-page-scale-width = Page Width
|
||
pdfjs-page-scale-fit = Page Fit
|
||
pdfjs-page-scale-auto = Automatic Zoom
|
||
pdfjs-page-scale-actual = Actual Size
|
||
pdfjs-page-scale-percent = { $scale }%
|
||
pdfjs-page-landmark =
|
||
.aria-label = Page { $page }
|
||
pdfjs-loading-error = An error occurred while loading the PDF.
|
||
pdfjs-invalid-file-error = Invalid or corrupted PDF file.
|
||
pdfjs-missing-file-error = Missing PDF file.
|
||
pdfjs-unexpected-response-error = Unexpected server response.
|
||
pdfjs-rendering-error = An error occurred while rendering the page.
|
||
pdfjs-annotation-date-string = { $date }, { $time }
|
||
pdfjs-text-annotation-type =
|
||
.alt = [{ $type } Annotation]
|
||
pdfjs-password-label = Enter the password to open this PDF file.
|
||
pdfjs-password-invalid = Invalid password. Please try again.
|
||
pdfjs-password-ok-button = OK
|
||
pdfjs-password-cancel-button = Cancel
|
||
pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.
|
||
pdfjs-editor-free-text-button =
|
||
.title = Text
|
||
pdfjs-editor-free-text-button-label = Text
|
||
pdfjs-editor-ink-button =
|
||
.title = Draw
|
||
pdfjs-editor-ink-button-label = Draw
|
||
pdfjs-editor-stamp-button =
|
||
.title = Add or edit images
|
||
pdfjs-editor-stamp-button-label = Add or edit images
|
||
pdfjs-editor-highlight-button =
|
||
.title = Highlight
|
||
pdfjs-editor-highlight-button-label = Highlight
|
||
pdfjs-highlight-floating-button1 =
|
||
.title = Highlight
|
||
.aria-label = Highlight
|
||
pdfjs-highlight-floating-button-label = Highlight
|
||
pdfjs-editor-remove-ink-button =
|
||
.title = Remove drawing
|
||
pdfjs-editor-remove-freetext-button =
|
||
.title = Remove text
|
||
pdfjs-editor-remove-stamp-button =
|
||
.title = Remove image
|
||
pdfjs-editor-remove-highlight-button =
|
||
.title = Remove highlight
|
||
pdfjs-editor-free-text-color-input = Color
|
||
pdfjs-editor-free-text-size-input = Size
|
||
pdfjs-editor-ink-color-input = Color
|
||
pdfjs-editor-ink-thickness-input = Thickness
|
||
pdfjs-editor-ink-opacity-input = Opacity
|
||
pdfjs-editor-stamp-add-image-button =
|
||
.title = Add image
|
||
pdfjs-editor-stamp-add-image-button-label = Add image
|
||
pdfjs-editor-free-highlight-thickness-input = Thickness
|
||
pdfjs-editor-free-highlight-thickness-title =
|
||
.title = Change thickness when highlighting items other than text
|
||
pdfjs-free-text =
|
||
.aria-label = Text Editor
|
||
pdfjs-free-text-default-content = Start typing…
|
||
pdfjs-ink =
|
||
.aria-label = Draw Editor
|
||
pdfjs-ink-canvas =
|
||
.aria-label = User-created image
|
||
pdfjs-editor-alt-text-button-label = Alt text
|
||
pdfjs-editor-alt-text-edit-button-label = Edit alt text
|
||
pdfjs-editor-alt-text-dialog-label = Choose an option
|
||
pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.
|
||
pdfjs-editor-alt-text-add-description-label = Add a description
|
||
pdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.
|
||
pdfjs-editor-alt-text-mark-decorative-label = Mark as decorative
|
||
pdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.
|
||
pdfjs-editor-alt-text-cancel-button = Cancel
|
||
pdfjs-editor-alt-text-save-button = Save
|
||
pdfjs-editor-alt-text-decorative-tooltip = Marked as decorative
|
||
pdfjs-editor-alt-text-textarea =
|
||
.placeholder = For example, “A young man sits down at a table to eat a meal”
|
||
pdfjs-editor-resizer-label-top-left = Top left corner — resize
|
||
pdfjs-editor-resizer-label-top-middle = Top middle — resize
|
||
pdfjs-editor-resizer-label-top-right = Top right corner — resize
|
||
pdfjs-editor-resizer-label-middle-right = Middle right — resize
|
||
pdfjs-editor-resizer-label-bottom-right = Bottom right corner — resize
|
||
pdfjs-editor-resizer-label-bottom-middle = Bottom middle — resize
|
||
pdfjs-editor-resizer-label-bottom-left = Bottom left corner — resize
|
||
pdfjs-editor-resizer-label-middle-left = Middle left — resize
|
||
pdfjs-editor-highlight-colorpicker-label = Highlight color
|
||
pdfjs-editor-colorpicker-button =
|
||
.title = Change color
|
||
pdfjs-editor-colorpicker-dropdown =
|
||
.aria-label = Color choices
|
||
pdfjs-editor-colorpicker-yellow =
|
||
.title = Yellow
|
||
pdfjs-editor-colorpicker-green =
|
||
.title = Green
|
||
pdfjs-editor-colorpicker-blue =
|
||
.title = Blue
|
||
pdfjs-editor-colorpicker-pink =
|
||
.title = Pink
|
||
pdfjs-editor-colorpicker-red =
|
||
.title = Red
|
||
pdfjs-editor-highlight-show-all-button-label = Show all
|
||
pdfjs-editor-highlight-show-all-button =
|
||
.title = Show all`)})},h(p0,Sh),h(p0,qR),h(p0,$R),h(p0,Xh),h(p0,ks);let CQ=p0;const $S=1e3,lX=50,UX=1e3;function Yh(){return document.location.hash}var dF,Id,iZ,la,Ps,Ua,BQ,I0,da,Za,fs,oQ,ph,uh,b2,Bh,m2,yQ,oh,yh,aM,zh,VM;class dX{constructor({linkService:t,eventBus:d}){h(this,Id),h(this,la),h(this,Ua),h(this,I0),h(this,Za),h(this,oQ),h(this,uh),h(this,Bh),h(this,yQ),h(this,yh),h(this,zh),h(this,dF,null),this.linkService=t,this.eventBus=d,this._initialized=!1,this._fingerprint="",this.reset(),this.eventBus._on("pagesinit",()=>{this._isPagesLoaded=!1,this.eventBus._on("pagesloaded",n=>{this._isPagesLoaded=!!n.pagesCount},{once:!0})})}initialize({fingerprint:t,resetHistory:d=!1,updateUrl:n=!1}){if(!t||typeof t!="string"){console.error('PDFHistory.initialize: The "fingerprint" must be a non-empty string.');return}this._initialized&&this.reset();const i=this._fingerprint!==""&&this._fingerprint!==t;this._fingerprint=t,this._updateUrl=n===!0,this._initialized=!0,G(this,yh,aM).call(this);const N=window.history.state;if(this._popStateInProgress=!1,this._blockHashChange=0,this._currentHash=Yh(),this._numPositionUpdates=0,this._uid=this._maxUid=0,this._destination=null,this._position=null,!G(this,I0,da).call(this,N,!0)||d){const{hash:M,page:J,rotation:X}=G(this,oQ,ph).call(this,!0);if(!M||i||d){G(this,Id,iZ).call(this,null,!0);return}G(this,Id,iZ).call(this,{hash:M,page:J,rotation:X},!0);return}const b=N.destination;G(this,Za,fs).call(this,b,N.uid,!0),b.rotation!==void 0&&(this._initialRotation=b.rotation),b.dest?(this._initialBookmark=JSON.stringify(b.dest),this._destination.page=null):b.hash?this._initialBookmark=b.hash:b.page&&(this._initialBookmark=`page=${b.page}`)}reset(){this._initialized&&(G(this,yQ,oh).call(this),this._initialized=!1,G(this,zh,VM).call(this)),this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._initialBookmark=null,this._initialRotation=null}push({namedDest:t=null,explicitDest:d,pageNumber:n}){if(!this._initialized)return;if(t&&typeof t!="string"){console.error(`PDFHistory.push: "${t}" is not a valid namedDest parameter.`);return}else if(Array.isArray(d)){if(!G(this,Ua,BQ).call(this,n)&&(n!==null||this._destination)){console.error(`PDFHistory.push: "${n}" is not a valid pageNumber parameter.`);return}}else{console.error(`PDFHistory.push: "${d}" is not a valid explicitDest parameter.`);return}const i=t||JSON.stringify(d);if(!i)return;let N=!1;if(this._destination&&(ZX(this._destination.hash,i)||tX(this._destination.dest,d))){if(this._destination.page)return;N=!0}this._popStateInProgress&&!N||(G(this,Id,iZ).call(this,{dest:d,hash:i,page:n,rotation:this.linkService.rotation},N),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then(()=>{this._popStateInProgress=!1})))}pushPage(t){var d;if(this._initialized){if(!G(this,Ua,BQ).call(this,t)){console.error(`PDFHistory.pushPage: "${t}" is not a valid page number.`);return}((d=this._destination)==null?void 0:d.page)!==t&&(this._popStateInProgress||(G(this,Id,iZ).call(this,{dest:null,hash:`page=${t}`,page:t,rotation:this.linkService.rotation}),this._popStateInProgress||(this._popStateInProgress=!0,Promise.resolve().then(()=>{this._popStateInProgress=!1}))))}}pushCurrentPosition(){!this._initialized||this._popStateInProgress||G(this,la,Ps).call(this)}back(){if(!this._initialized||this._popStateInProgress)return;const t=window.history.state;G(this,I0,da).call(this,t)&&t.uid>0&&window.history.back()}forward(){if(!this._initialized||this._popStateInProgress)return;const t=window.history.state;G(this,I0,da).call(this,t)&&t.uid<this._maxUid&&window.history.forward()}get popStateInProgress(){return this._initialized&&(this._popStateInProgress||this._blockHashChange>0)}get initialBookmark(){return this._initialized?this._initialBookmark:null}get initialRotation(){return this._initialized?this._initialRotation:null}}dF=new WeakMap,Id=new WeakSet,iZ=function(V,t=!1){const d=t||!this._destination,n={fingerprint:this._fingerprint,uid:d?this._uid:this._uid+1,destination:V};G(this,Za,fs).call(this,V,n.uid);let i;if(this._updateUrl&&V!=null&&V.hash){const N=document.location.href.split("#",1)[0];N.startsWith("file://")||(i=`${N}#${V.hash}`)}d?window.history.replaceState(n,"",i):window.history.pushState(n,"",i)},la=new WeakSet,Ps=function(V=!1){if(!this._position)return;let t=this._position;if(V&&(t=Object.assign(Object.create(null),this._position),t.temporary=!0),!this._destination){G(this,Id,iZ).call(this,t);return}if(this._destination.temporary){G(this,Id,iZ).call(this,t,!0);return}if(this._destination.hash===t.hash||!this._destination.page&&this._numPositionUpdates<=lX)return;let d=!1;if(this._destination.page>=t.first&&this._destination.page<=t.page){if(this._destination.dest!==void 0||!this._destination.first)return;d=!0}G(this,Id,iZ).call(this,t,d)},Ua=new WeakSet,BQ=function(V){return Number.isInteger(V)&&V>0&&V<=this.linkService.pagesCount},I0=new WeakSet,da=function(V,t=!1){if(!V)return!1;if(V.fingerprint!==this._fingerprint)if(t){if(typeof V.fingerprint!="string"||V.fingerprint.length!==this._fingerprint.length)return!1;const[d]=performance.getEntriesByType("navigation");if((d==null?void 0:d.type)!=="reload")return!1}else return!1;return!(!Number.isInteger(V.uid)||V.uid<0||V.destination===null||typeof V.destination!="object")},Za=new WeakSet,fs=function(V,t,d=!1){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),d&&V!=null&&V.temporary&&delete V.temporary,this._destination=V,this._uid=t,this._maxUid=Math.max(this._maxUid,t),this._numPositionUpdates=0},oQ=new WeakSet,ph=function(V=!1){const t=unescape(Yh()).substring(1),d=EQ(t),n=d.get("nameddest")||"";let i=d.get("page")|0;return(!G(this,Ua,BQ).call(this,i)||V&&n.length>0)&&(i=null),{hash:t,page:i,rotation:this.linkService.rotation}},uh=new WeakSet,b2=function({location:V}){this._updateViewareaTimeout&&(clearTimeout(this._updateViewareaTimeout),this._updateViewareaTimeout=null),this._position={hash:V.pdfOpenParams.substring(1),page:this.linkService.page,first:V.pageNumber,rotation:V.rotation},!this._popStateInProgress&&(this._isPagesLoaded&&this._destination&&!this._destination.page&&this._numPositionUpdates++,this._updateViewareaTimeout=setTimeout(()=>{this._popStateInProgress||G(this,la,Ps).call(this,!0),this._updateViewareaTimeout=null},UX))},Bh=new WeakSet,m2=function({state:V}){const t=Yh(),d=this._currentHash!==t;if(this._currentHash=t,!V){this._uid++;const{hash:i,page:N,rotation:b}=G(this,oQ,ph).call(this);G(this,Id,iZ).call(this,{hash:i,page:N,rotation:b},!0);return}if(!G(this,I0,da).call(this,V))return;this._popStateInProgress=!0,d&&(this._blockHashChange++,FS({target:window,name:"hashchange",delay:$S}).then(()=>{this._blockHashChange--}));const n=V.destination;G(this,Za,fs).call(this,n,V.uid,!0),g2(n.rotation)&&(this.linkService.rotation=n.rotation),n.dest?this.linkService.goToDestination(n.dest):n.hash?this.linkService.setHash(n.hash):n.page&&(this.linkService.page=n.page),Promise.resolve().then(()=>{this._popStateInProgress=!1})},yQ=new WeakSet,oh=function(){(!this._destination||this._destination.temporary)&&G(this,la,Ps).call(this)},yh=new WeakSet,aM=function(){if(F(this,dF))return;S(this,dF,new AbortController);const{signal:V}=F(this,dF);this.eventBus._on("updateviewarea",G(this,uh,b2).bind(this),{signal:V}),window.addEventListener("popstate",G(this,Bh,m2).bind(this),{signal:V}),window.addEventListener("pagehide",G(this,yQ,oh).bind(this),{signal:V})},zh=new WeakSet,VM=function(){var V;(V=F(this,dF))==null||V.abort(),S(this,dF,null)};function ZX(V,t){return typeof V!="string"||typeof t!="string"?!1:V===t||EQ(V).get("nameddest")===t}function tX(V,t){function d(n,i){if(typeof n!=typeof i||Array.isArray(n)||Array.isArray(i))return!1;if(n!==null&&typeof n=="object"&&i!==null){if(Object.keys(n).length!==Object.keys(i).length)return!1;for(const N in n)if(!d(n[N],i[N]))return!1;return!0}return n===i||Number.isNaN(n)&&Number.isNaN(i)}if(!(Array.isArray(V)&&Array.isArray(t))||V.length!==t.length)return!1;for(let n=0,i=V.length;n<i;n++)if(!d(V[n],t[n]))return!1;return!0}var As,_s,qs,$s,rW;class FX{constructor(t){h(this,As,null),h(this,_s,null),h(this,qs,null),h(this,$s,null),h(this,rW,void 0),this.pdfPage=t.pdfPage,this.accessibilityManager=t.accessibilityManager,this.l10n=t.l10n,this.l10n||(this.l10n=new CQ),this.annotationEditorLayer=null,this.div=null,this._cancelled=!1,S(this,rW,t.uiManager),S(this,As,t.annotationLayer||null),S(this,$s,t.textLayer||null),S(this,_s,t.drawLayer||null),S(this,qs,t.onAppend||null)}render(t,d="display"){return Ul(this,null,function*(){var n;if(d!=="display"||this._cancelled)return;const i=t.clone({dontFlip:!0});if(this.div){this.annotationEditorLayer.update({viewport:i}),this.show();return}const N=this.div=document.createElement("div");N.className="annotationEditorLayer",N.hidden=!0,N.dir=F(this,rW).direction,(n=F(this,qs))==null||n.call(this,N),this.annotationEditorLayer=new PT({uiManager:F(this,rW),div:N,accessibilityManager:this.accessibilityManager,pageIndex:this.pdfPage.pageNumber-1,l10n:this.l10n,viewport:i,annotationLayer:F(this,As),textLayer:F(this,$s),drawLayer:F(this,_s)});const b={viewport:i,div:N,annotations:null,intent:d};this.annotationEditorLayer.render(b),this.show()})}cancel(){this._cancelled=!0,this.div&&this.annotationEditorLayer.destroy()}hide(){this.div&&(this.div.hidden=!0)}show(){!this.div||this.annotationEditorLayer.isInvisible||(this.div.hidden=!1)}}As=new WeakMap,_s=new WeakMap,qs=new WeakMap,$s=new WeakMap,rW=new WeakMap;{var ia=Object.create(null);const V=navigator.userAgent||"",t=navigator.platform||"",d=navigator.maxTouchPoints||1,n=/Android/.test(V),i=/\b(iPad|iPhone|iPod)(?=;)/.test(V)||t==="MacIntel"&&d>1;(function(){(i||n)&&(ia.maxCanvasPixels=5242880)})()}const ll={BROWSER:1,VIEWER:2,API:4,WORKER:8,PREFERENCE:128},Vt={canvasMaxAreaInBytes:{value:-1,kind:ll.BROWSER+ll.API},isInAutomation:{value:!1,kind:ll.BROWSER},supportsCaretBrowsingMode:{value:!1,kind:ll.BROWSER},supportsDocumentFonts:{value:!0,kind:ll.BROWSER},supportsIntegratedFind:{value:!1,kind:ll.BROWSER},supportsMouseWheelZoomCtrlKey:{value:!0,kind:ll.BROWSER},supportsMouseWheelZoomMetaKey:{value:!0,kind:ll.BROWSER},supportsPinchToZoom:{value:!0,kind:ll.BROWSER},annotationEditorMode:{value:0,kind:ll.VIEWER+ll.PREFERENCE},annotationMode:{value:2,kind:ll.VIEWER+ll.PREFERENCE},cursorToolOnLoad:{value:0,kind:ll.VIEWER+ll.PREFERENCE},debuggerSrc:{value:"./debugger.mjs",kind:ll.VIEWER},defaultZoomDelay:{value:400,kind:ll.VIEWER+ll.PREFERENCE},defaultZoomValue:{value:"",kind:ll.VIEWER+ll.PREFERENCE},disableHistory:{value:!1,kind:ll.VIEWER},disablePageLabels:{value:!1,kind:ll.VIEWER+ll.PREFERENCE},enableHighlightEditor:{value:!1,kind:ll.VIEWER+ll.PREFERENCE},enableHighlightFloatingButton:{value:!1,kind:ll.VIEWER+ll.PREFERENCE},enableML:{value:!1,kind:ll.VIEWER+ll.PREFERENCE},enablePermissions:{value:!1,kind:ll.VIEWER+ll.PREFERENCE},enablePrintAutoRotate:{value:!0,kind:ll.VIEWER+ll.PREFERENCE},enableScripting:{value:!0,kind:ll.VIEWER+ll.PREFERENCE},enableStampEditor:{value:!0,kind:ll.VIEWER+ll.PREFERENCE},externalLinkRel:{value:"noopener noreferrer nofollow",kind:ll.VIEWER},externalLinkTarget:{value:0,kind:ll.VIEWER+ll.PREFERENCE},highlightEditorColors:{value:"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F",kind:ll.VIEWER+ll.PREFERENCE},historyUpdateUrl:{value:!1,kind:ll.VIEWER+ll.PREFERENCE},ignoreDestinationZoom:{value:!1,kind:ll.VIEWER+ll.PREFERENCE},imageResourcesPath:{value:"./images/",kind:ll.VIEWER},maxCanvasPixels:{value:m0(2,25),kind:ll.VIEWER},forcePageColors:{value:!1,kind:ll.VIEWER+ll.PREFERENCE},pageColorsBackground:{value:"Canvas",kind:ll.VIEWER+ll.PREFERENCE},pageColorsForeground:{value:"CanvasText",kind:ll.VIEWER+ll.PREFERENCE},pdfBugEnabled:{value:!1,kind:ll.VIEWER+ll.PREFERENCE},printResolution:{value:150,kind:ll.VIEWER},sidebarViewOnLoad:{value:-1,kind:ll.VIEWER+ll.PREFERENCE},scrollModeOnLoad:{value:-1,kind:ll.VIEWER+ll.PREFERENCE},spreadModeOnLoad:{value:-1,kind:ll.VIEWER+ll.PREFERENCE},textLayerMode:{value:1,kind:ll.VIEWER+ll.PREFERENCE},viewOnLoad:{value:0,kind:ll.VIEWER+ll.PREFERENCE},cMapPacked:{value:!0,kind:ll.API},cMapUrl:{value:"../web/cmaps/",kind:ll.API},disableAutoFetch:{value:!1,kind:ll.API+ll.PREFERENCE},disableFontFace:{value:!1,kind:ll.API+ll.PREFERENCE},disableRange:{value:!1,kind:ll.API+ll.PREFERENCE},disableStream:{value:!1,kind:ll.API+ll.PREFERENCE},docBaseUrl:{value:"",kind:ll.API},enableXfa:{value:!0,kind:ll.API+ll.PREFERENCE},fontExtraProperties:{value:!1,kind:ll.API},isEvalSupported:{value:!0,kind:ll.API},isOffscreenCanvasSupported:{value:!0,kind:ll.API},maxImageSize:{value:-1,kind:ll.API},pdfBug:{value:!1,kind:ll.API},standardFontDataUrl:{value:"../web/standard_fonts/",kind:ll.API},verbosity:{value:1,kind:ll.API},workerPort:{value:null,kind:ll.WORKER},workerSrc:{value:"../build/pdf.worker.mjs",kind:ll.WORKER}};Vt.defaultUrl={value:"compressed.tracemonkey-pldi-09.pdf",kind:ll.VIEWER},Vt.sandboxBundleSrc={value:"../build/pdf.sandbox.mjs",kind:ll.VIEWER},Vt.viewerCssTheme={value:0,kind:ll.VIEWER+ll.PREFERENCE};Vt.disablePreferences={value:!1,kind:ll.VIEWER},Vt.locale={value:navigator.language||"en-US",kind:ll.VIEWER};const $Z=Object.create(null);for(const V in ia)$Z[V]=ia[V];class cX{constructor(){throw new Error("Cannot initialize AppOptions.")}static get(t){var n,i;var d;return(i=(n=$Z[t])!=null?n:(d=Vt[t])==null?void 0:d.value)!=null?i:void 0}static getAll(t=null,d=!1){var i;const n=Object.create(null);for(const N in Vt){const b=Vt[N];t&&!(t&b.kind)||(n[N]=d?b.value:(i=$Z[N])!=null?i:b.value)}return n}static set(t,d){$Z[t]=d}static setAll(t,d=!1){if(d){if(this.get("disablePreferences"))return;for(const n in $Z)if(ia[n]===void 0){console.warn('setAll: The Preferences may override manually set AppOptions; please use the "disablePreferences"-option in order to prevent that.');break}}for(const n in t)$Z[n]=t[n]}static remove(t){delete $Z[t];const d=ia[t];d!==void 0&&($Z[t]=d)}}var WZ;class WX{constructor(t){h(this,WZ,null),this.pageIndex=t.pageIndex}render(t="display"){return Ul(this,null,function*(){t!=="display"||F(this,WZ)||this._cancelled||S(this,WZ,new qT({pageIndex:this.pageIndex}))})}cancel(){this._cancelled=!0,F(this,WZ)&&(F(this,WZ).destroy(),S(this,WZ,null))}setParent(t){var d;(d=F(this,WZ))==null||d.setParent(t)}getDrawLayer(){return F(this,WZ)}}WZ=new WeakMap;const e2={Document:null,DocumentFragment:null,Part:"group",Sect:"group",Div:"group",Aside:"note",NonStruct:"none",P:null,H:"heading",Title:null,FENote:"note",Sub:"group",Lbl:null,Span:null,Em:null,Strong:null,Link:"link",Annot:"note",Form:"form",Ruby:null,RB:null,RT:null,RP:null,Warichu:null,WT:null,WP:null,L:"list",LI:"listitem",LBody:null,Table:"table",TR:"row",TH:"columnheader",TD:"cell",THead:"columnheader",TBody:null,TFoot:null,Caption:null,Figure:"figure",Formula:null,Artifact:null},aX=/^H(\d+)$/;var Qd,lQ,Uh,zQ,Lh;class nM{constructor(){h(this,lQ),h(this,zQ),h(this,Qd,void 0)}get renderingDone(){return F(this,Qd)!==void 0}render(t){if(F(this,Qd)!==void 0)return F(this,Qd);const d=G(this,zQ,Lh).call(this,t);return d==null||d.classList.add("structTree"),S(this,Qd,d)}hide(){F(this,Qd)&&!F(this,Qd).hidden&&(F(this,Qd).hidden=!0)}show(){var t;(t=F(this,Qd))!=null&&t.hidden&&(F(this,Qd).hidden=!1)}}Qd=new WeakMap,lQ=new WeakSet,Uh=function(V,t){const{alt:d,id:n,lang:i}=V;d!==void 0&&t.setAttribute("aria-label",YQ(d)),n!==void 0&&t.setAttribute("aria-owns",n),i!==void 0&&t.setAttribute("lang",YQ(i,!0))},zQ=new WeakSet,Lh=function(V){if(!V)return null;const t=document.createElement("span");if("role"in V){const{role:d}=V,n=d.match(aX);n?(t.setAttribute("role","heading"),t.setAttribute("aria-level",n[1])):e2[d]&&t.setAttribute("role",e2[d])}if(G(this,lQ,Uh).call(this,V,t),V.children)if(V.children.length===1&&"id"in V.children[0])G(this,lQ,Uh).call(this,V.children[0],t);else for(const d of V.children)t.append(G(this,zQ,Lh).call(this,d));return t};var lt,id,Ut,ZF,ta,UQ,dQ,kh;const sM=class ZQ{constructor(){h(this,dQ),h(this,lt,!1),h(this,id,null),h(this,Ut,new Map),h(this,ZF,new Map)}setTextMapping(t){S(this,id,t)}enable(){if(F(this,lt))throw new Error("TextAccessibilityManager is already enabled.");if(!F(this,id))throw new Error("Text divs and strings have not been set.");if(S(this,lt,!0),S(this,id,F(this,id).slice()),F(this,id).sort(G(ZQ,ta,UQ)),F(this,Ut).size>0){const t=F(this,id);for(const[d,n]of F(this,Ut)){if(!document.getElementById(d)){F(this,Ut).delete(d);continue}G(this,dQ,kh).call(this,d,t[n])}}for(const[t,d]of F(this,ZF))this.addPointerInTextLayer(t,d);F(this,ZF).clear()}disable(){F(this,lt)&&(F(this,ZF).clear(),S(this,id,null),S(this,lt,!1))}removePointerInTextLayer(t){if(!F(this,lt)){F(this,ZF).delete(t);return}const d=F(this,id);if(!d||d.length===0)return;const{id:n}=t,i=F(this,Ut).get(n);if(i===void 0)return;const N=d[i];F(this,Ut).delete(n);let b=N.getAttribute("aria-owns");b!=null&&b.includes(n)&&(b=b.split(" ").filter(M=>M!==n).join(" "),b?N.setAttribute("aria-owns",b):(N.removeAttribute("aria-owns"),N.setAttribute("role","presentation")))}addPointerInTextLayer(t,d){const{id:n}=t;if(!n)return null;if(!F(this,lt))return F(this,ZF).set(t,d),null;d&&this.removePointerInTextLayer(t);const i=F(this,id);if(!i||i.length===0)return null;const N=sa(i,X=>{var p;return G(p=ZQ,ta,UQ).call(p,t,X)<0}),b=Math.max(0,N-1),M=i[b];G(this,dQ,kh).call(this,n,M),F(this,Ut).set(n,b);const J=M.parentNode;return J!=null&&J.classList.contains("markedContent")?J.id:null}moveElementInDOM(t,d,n,i){const N=this.addPointerInTextLayer(n,i);if(!t.hasChildNodes())return t.append(d),N;const b=Array.from(t.childNodes).filter(X=>X!==d);if(b.length===0)return N;const M=n||d,J=sa(b,X=>{var p;return G(p=ZQ,ta,UQ).call(p,M,X)<0});return J===0?b[0].before(d):b[J-1].after(d),N}};lt=new WeakMap,id=new WeakMap,Ut=new WeakMap,ZF=new WeakMap,ta=new WeakSet,UQ=function(V,t){const d=V.getBoundingClientRect(),n=t.getBoundingClientRect();if(d.width===0&&d.height===0)return 1;if(n.width===0&&n.height===0)return-1;const i=d.y,N=d.y+d.height,b=d.y+d.height/2,M=n.y,J=n.y+n.height,X=n.y+n.height/2;if(b<=M&&X>=N)return-1;if(X<=i&&b>=J)return 1;const p=d.x+d.width/2,o=n.x+n.width/2;return p-o},dQ=new WeakSet,kh=function(V,t){const d=t.getAttribute("aria-owns");d!=null&&d.includes(V)||t.setAttribute("aria-owns",d?`${d} ${V}`:V),t.removeAttribute("role")},h(sM,ta);let VX=sM;var tF;class nX{constructor({findController:t,eventBus:d,pageIndex:n}){h(this,tF,null),this.findController=t,this.matches=[],this.eventBus=d,this.pageIdx=n,this.textDivs=null,this.textContentItemsStr=null,this.enabled=!1}setTextMapping(t,d){this.textDivs=t,this.textContentItemsStr=d}enable(){if(!this.textDivs||!this.textContentItemsStr)throw new Error("Text divs and strings have not been set.");if(this.enabled)throw new Error("TextHighlighter is already enabled.");this.enabled=!0,F(this,tF)||(S(this,tF,new AbortController),this.eventBus._on("updatetextlayermatches",t=>{(t.pageIndex===this.pageIdx||t.pageIndex===-1)&&this._updateMatches()},{signal:F(this,tF).signal})),this._updateMatches()}disable(){var t;this.enabled&&(this.enabled=!1,(t=F(this,tF))==null||t.abort(),S(this,tF,null),this._updateMatches(!0))}_convertMatches(t,d){if(!t)return[];const{textContentItemsStr:n}=this;let i=0,N=0;const b=n.length-1,M=[];for(let J=0,X=t.length;J<X;J++){let p=t[J];for(;i!==b&&p>=N+n[i].length;)N+=n[i].length,i++;i===n.length&&console.error("Could not find a matching mapping");const o={begin:{divIdx:i,offset:p-N}};for(p+=d[J];i!==b&&p>N+n[i].length;)N+=n[i].length,i++;o.end={divIdx:i,offset:p-N},M.push(o)}return M}_renderMatches(t){if(t.length===0)return;const{findController:d,pageIdx:n}=this,{textContentItemsStr:i,textDivs:N}=this,b=n===d.selected.pageIdx,M=d.selected.matchIdx,J=d.state.highlightAll;let X=null;const p={divIdx:-1,offset:void 0};function o(C,P){const r=C.divIdx;return N[r].textContent="",y(r,0,C.offset,P)}function y(C,P,r,A){let H=N[C];if(H.nodeType===Node.TEXT_NODE){const $=document.createElement("span");H.before($),$.append(H),N[C]=$,H=$}const x=i[C].substring(P,r),v=document.createTextNode(x);if(A){const $=document.createElement("span");return $.className=`${A} appended`,$.append(v),H.append($),A.includes("selected")?$.offsetLeft:0}return H.append(v),0}let I=M,k=I+1;if(J)I=0,k=t.length;else if(!b)return;let w=-1,K=-1;for(let C=I;C<k;C++){const P=t[C],r=P.begin;if(r.divIdx===w&&r.offset===K)continue;w=r.divIdx,K=r.offset;const A=P.end,H=b&&C===M,x=H?" selected":"";let v=0;if(!X||r.divIdx!==X.divIdx?(X!==null&&y(X.divIdx,X.offset,p.offset),o(r)):y(X.divIdx,X.offset,r.offset),r.divIdx===A.divIdx)v=y(r.divIdx,r.offset,A.offset,"highlight"+x);else{v=y(r.divIdx,r.offset,p.offset,"highlight begin"+x);for(let $=r.divIdx+1,E=A.divIdx;$<E;$++)N[$].className="highlight middle"+x;o(A,"highlight end"+x)}X=A,H&&d.scrollMatchIntoView({element:N[r.divIdx],selectedLeft:v,pageIndex:n,matchIndex:M})}X&&y(X.divIdx,X.offset,p.offset)}_updateMatches(t=!1){if(!this.enabled&&!t)return;const{findController:d,matches:n,pageIdx:i}=this,{textContentItemsStr:N,textDivs:b}=this;let M=-1;for(const p of n){const o=Math.max(M,p.begin.divIdx);for(let y=o,I=p.end.divIdx;y<=I;y++){const k=b[y];k.textContent=N[y],k.className=""}M=p.end.divIdx+1}if(!(d!=null&&d.highlightMatches)||t)return;const J=d.pageMatches[i]||null,X=d.pageMatchesLength[i]||null;this.matches=this._convertMatches(J,X),this._renderMatches(this.matches)}}tF=new WeakMap;var LQ,tQ,D0,aZ,Vd,vt,Ih,QM,Dh,M2,Eh,iM,dh,G2;const FF=class NM{constructor({pdfPage:t,highlighter:d=null,accessibilityManager:n=null,enablePermissions:i=!1,onAppend:N=null}){h(this,Ih),h(this,Dh),h(this,LQ,!1),h(this,tQ,null),h(this,D0,!1),h(this,aZ,null),this.pdfPage=t,this.highlighter=d,this.accessibilityManager=n,S(this,LQ,i===!0),S(this,tQ,N),this.div=document.createElement("div"),this.div.tabIndex=0,this.div.className="textLayer"}render(t,d=null){return Ul(this,null,function*(){var n,i,N,b,M;if(F(this,D0)&&F(this,aZ)){F(this,aZ).update({viewport:t,onBefore:this.hide.bind(this)}),this.show();return}this.cancel(),S(this,aZ,new ZS({textContentSource:this.pdfPage.streamTextContent(d||{includeMarkedContent:!0,disableNormalization:!0}),container:this.div,viewport:t}));const{textDivs:J,textContentItemsStr:X}=F(this,aZ);(n=this.highlighter)==null||n.setTextMapping(J,X),(i=this.accessibilityManager)==null||i.setTextMapping(J),yield F(this,aZ).render(),G(this,Ih,QM).call(this),(N=F(this,tQ))==null||N.call(this,this.div),(b=this.highlighter)==null||b.enable(),(M=this.accessibilityManager)==null||M.enable()})}hide(){var t;!this.div.hidden&&F(this,D0)&&((t=this.highlighter)==null||t.disable(),this.div.hidden=!0)}show(){var t;this.div.hidden&&F(this,D0)&&(this.div.hidden=!1,(t=this.highlighter)==null||t.enable())}cancel(){var t,d,n,i;(t=F(this,aZ))==null||t.cancel(),S(this,aZ,null),(d=this.highlighter)==null||d.disable(),(n=this.accessibilityManager)==null||n.disable(),G(i=NM,Eh,iM).call(i,this.div)}};LQ=new WeakMap,tQ=new WeakMap,D0=new WeakMap,aZ=new WeakMap,Vd=new WeakMap,vt=new WeakMap,Ih=new WeakSet,QM=function(){S(this,D0,!0);const V=document.createElement("div");V.className="endOfContent",this.div.append(V),G(this,Dh,M2).call(this,V)},Dh=new WeakSet,M2=function(V){var t;const{div:d}=this;d.addEventListener("mousedown",n=>{V.classList.add("active")}),d.addEventListener("copy",n=>{if(!F(this,LQ)){const i=document.getSelection();n.clipboardData.setData("text/plain",YQ(US(i.toString())))}n.preventDefault(),n.stopPropagation()}),F(FF,Vd).set(d,V),G(t=FF,dh,G2).call(t)},Eh=new WeakSet,iM=function(V){var t;F(this,Vd).delete(V),F(this,Vd).size===0&&((t=F(this,vt))==null||t.abort(),S(this,vt,null))},dh=new WeakSet,G2=function(){if(F(this,vt))return;S(this,vt,new AbortController);const{signal:V}=F(this,vt),t=(i,N)=>{N.append(i),i.style.width="",i.style.height="",i.classList.remove("active")};document.addEventListener("pointerup",()=>{F(this,Vd).forEach(t)},{signal:V});var d,n;document.addEventListener("selectionchange",()=>{const i=document.getSelection();if(i.rangeCount===0){F(this,Vd).forEach(t);return}const N=new Set;for(let o=0;o<i.rangeCount;o++){const y=i.getRangeAt(o);for(const I of F(this,Vd).keys())!N.has(I)&&y.intersectsNode(I)&&N.add(I)}for(const[o,y]of F(this,Vd))N.has(o)?y.classList.add("active"):t(y,o);if(d!=null||(d=getComputedStyle(F(this,Vd).values().next().value).getPropertyValue("-moz-user-select")==="none"),d)return;const b=i.getRangeAt(0),M=n&&(b.compareBoundaryPoints(Range.END_TO_END,n)===0||b.compareBoundaryPoints(Range.START_TO_END,n)===0);let J=M?b.startContainer:b.endContainer;J.nodeType===Node.TEXT_NODE&&(J=J.parentNode);const X=J.parentElement.closest(".textLayer"),p=F(this,Vd).get(X);p&&(p.style.width=X.style.width,p.style.height=X.style.height,J.parentElement.insertBefore(p,M?J:J.nextSibling)),n=b.cloneRange()},{signal:V})},h(FF,Eh),h(FF,dh),h(FF,Vd,new Map),h(FF,vt,null);let RM=FF;class hM{constructor({pdfPage:t,annotationStorage:d=null,linkService:n,xfaHtml:i=null}){this.pdfPage=t,this.annotationStorage=d,this.linkService=n,this.xfaHtml=i,this.div=null,this._cancelled=!1}render(t,d="display"){return Ul(this,null,function*(){if(d==="print"){const N={viewport:t.clone({dontFlip:!0}),div:this.div,xfaHtml:this.xfaHtml,annotationStorage:this.annotationStorage,linkService:this.linkService,intent:d};return this.div=document.createElement("div"),N.div=this.div,PR.render(N)}const n=yield this.pdfPage.getXfa();if(this._cancelled||!n)return{textDivs:[]};const i={viewport:t.clone({dontFlip:!0}),div:this.div,xfaHtml:n,annotationStorage:this.annotationStorage,linkService:this.linkService,intent:d};return this.div?PR.update(i):(this.div=document.createElement("div"),i.div=this.div,PR.render(i))})}cancel(){this._cancelled=!0}hide(){this.div&&(this.div.hidden=!0)}}const sX={annotationEditorUIManager:null,annotationStorage:null,downloadManager:null,enableScripting:!1,fieldObjectsPromise:null,findController:null,hasJSActionsPromise:null,get linkService(){return new Vb}},QX=new Map([["canvasWrapper",0],["textLayer",1],["annotationLayer",2],["annotationEditorLayer",3],["xfaLayer",3]]);var u0,B0,cF,WF,FQ,E0,jW,OW,dt,o0,sF,VF,w0,gW,cQ,y0,yW,WQ,wh,aQ,Ch,VQ,xh,nQ,rh,sQ,jh,Oh,J2,gh,T2,QQ,Kh;class bM{constructor(t){var b,M,J;h(this,VF),h(this,gW),h(this,y0),h(this,WQ),h(this,aQ),h(this,VQ),h(this,nQ),h(this,sQ),h(this,Oh),h(this,gh),h(this,QQ),h(this,u0,NZ.ENABLE_FORMS),h(this,B0,!1),h(this,cF,null),h(this,WF,null),h(this,FQ,null),h(this,E0,null),h(this,jW,gl.INITIAL),h(this,OW,Dd.ENABLE),h(this,dt,{directDrawing:!0,initialOptionalContent:!0,regularAnnotations:!0}),h(this,o0,new WeakMap),h(this,sF,[null,null,null,null]);var d;const n=t.container,i=t.defaultViewport;this.id=t.id,this.renderingId="page"+this.id,S(this,cF,t.layerProperties||sX),this.pdfPage=null,this.pageLabel=null,this.rotation=0,this.scale=t.scale||x2,this.viewport=i,this.pdfPageRotate=i.rotation,this._optionalContentConfigPromise=t.optionalContentConfigPromise||null,S(this,OW,(b=t.textLayerMode)!=null?b:Dd.ENABLE),S(this,u0,(M=t.annotationMode)!=null?M:NZ.ENABLE_FORMS),this.imageResourcesPath=t.imageResourcesPath||"",this.maxCanvasPixels=(J=t.maxCanvasPixels)!=null?J:cX.get("maxCanvasPixels"),this.pageColors=t.pageColors||null,this.eventBus=t.eventBus,this.renderingQueue=t.renderingQueue,this.l10n=t.l10n,this.l10n||(this.l10n=new CQ),this.renderTask=null,this.resume=null,this._isStandalone=!((d=this.renderingQueue)!=null&&d.hasViewer()),this._container=n,this._annotationCanvasMap=null,this.annotationLayer=null,this.annotationEditorLayer=null,this.textLayer=null,this.zoomLayer=null,this.xfaLayer=null,this.structTreeLayer=null,this.drawLayer=null;const N=document.createElement("div");if(N.className="page",N.setAttribute("data-page-number",this.id),N.setAttribute("role","region"),N.setAttribute("data-l10n-id","pdfjs-page-landmark"),N.setAttribute("data-l10n-args",JSON.stringify({page:this.id})),this.div=N,G(this,gW,cQ).call(this),n==null||n.append(N),this._isStandalone){n==null||n.style.setProperty("--scale-factor",this.scale*QZ.PDF_TO_CSS_UNITS);const{optionalContentConfigPromise:X}=t;X&&X.then(p=>{X===this._optionalContentConfigPromise&&(F(this,dt).initialOptionalContent=p.hasInitialVisibility)}),t.l10n||this.l10n.translate(this.div)}}get renderingState(){return F(this,jW)}set renderingState(t){if(t!==F(this,jW))switch(S(this,jW,t),F(this,WF)&&(clearTimeout(F(this,WF)),S(this,WF,null)),t){case gl.PAUSED:this.div.classList.remove("loading");break;case gl.RUNNING:this.div.classList.add("loadingIcon"),S(this,WF,setTimeout(()=>{this.div.classList.add("loading"),S(this,WF,null)},0));break;case gl.INITIAL:case gl.FINISHED:this.div.classList.remove("loadingIcon","loading");break}}setPdfPage(t){var d,n,i,N;this._isStandalone&&(((d=this.pageColors)==null?void 0:d.foreground)==="CanvasText"||((n=this.pageColors)==null?void 0:n.background)==="Canvas")&&((i=this._container)==null||i.style.setProperty("--hcm-highlight-filter",t.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),(N=this._container)==null||N.style.setProperty("--hcm-highlight-selected-filter",t.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","Highlight"))),this.pdfPage=t,this.pdfPageRotate=t.rotate;const b=(this.rotation+this.pdfPageRotate)%360;this.viewport=t.getViewport({scale:this.scale*QZ.PDF_TO_CSS_UNITS,rotation:b}),G(this,gW,cQ).call(this),this.reset()}destroy(){var t;this.reset(),(t=this.pdfPage)==null||t.cleanup()}get _textHighlighter(){return pQ(this,"_textHighlighter",new nX({pageIndex:this.id-1,eventBus:this.eventBus,findController:F(this,cF).findController}))}_resetZoomLayer(t=!1){if(!this.zoomLayer)return;const d=this.zoomLayer.firstChild;F(this,o0).delete(d),d.width=0,d.height=0,t&&this.zoomLayer.remove(),this.zoomLayer=null}reset({keepZoomLayer:t=!1,keepAnnotationLayer:d=!1,keepAnnotationEditorLayer:n=!1,keepXfaLayer:i=!1,keepTextLayer:N=!1}={}){var b,M,J,X,p;this.cancelRendering({keepAnnotationLayer:d,keepAnnotationEditorLayer:n,keepXfaLayer:i,keepTextLayer:N}),this.renderingState=gl.INITIAL;const o=this.div,y=o.childNodes,I=t&&this.zoomLayer||null,k=d&&((b=this.annotationLayer)==null?void 0:b.div)||null,w=n&&((M=this.annotationEditorLayer)==null?void 0:M.div)||null,K=i&&((J=this.xfaLayer)==null?void 0:J.div)||null,C=N&&((X=this.textLayer)==null?void 0:X.div)||null;for(let P=y.length-1;P>=0;P--){const r=y[P];switch(r){case I:case k:case w:case K:case C:continue}r.remove();const A=F(this,sF).indexOf(r);A>=0&&(F(this,sF)[A]=null)}o.removeAttribute("data-loaded"),k&&this.annotationLayer.hide(),w&&this.annotationEditorLayer.hide(),K&&this.xfaLayer.hide(),C&&this.textLayer.hide(),(p=this.structTreeLayer)==null||p.hide(),I||(this.canvas&&(F(this,o0).delete(this.canvas),this.canvas.width=0,this.canvas.height=0,delete this.canvas),this._resetZoomLayer())}update({scale:t=0,rotation:d=null,optionalContentConfigPromise:n=null,drawingDelay:i=-1}){var N;this.scale=t||this.scale,typeof d=="number"&&(this.rotation=d),n instanceof Promise&&(this._optionalContentConfigPromise=n,n.then(M=>{n===this._optionalContentConfigPromise&&(F(this,dt).initialOptionalContent=M.hasInitialVisibility)})),F(this,dt).directDrawing=!0;const b=(this.rotation+this.pdfPageRotate)%360;if(this.viewport=this.viewport.clone({scale:this.scale*QZ.PDF_TO_CSS_UNITS,rotation:b}),G(this,gW,cQ).call(this),this._isStandalone&&((N=this._container)==null||N.style.setProperty("--scale-factor",this.viewport.scale)),this.canvas){let M=!1;if(F(this,B0)){if(this.maxCanvasPixels===0)M=!0;else if(this.maxCanvasPixels>0){const{width:X,height:p}=this.viewport,{sx:o,sy:y}=this.outputScale;M=(Math.floor(X)*o|0)*(Math.floor(p)*y|0)>this.maxCanvasPixels}}const J=i>=0&&i<1e3;if(J||M){if(J&&!M&&this.renderingState!==gl.FINISHED&&(this.cancelRendering({keepZoomLayer:!0,keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0,cancelExtraDelay:i}),this.renderingState=gl.FINISHED,F(this,dt).directDrawing=!1),this.cssTransform({target:this.canvas,redrawAnnotationLayer:!0,redrawAnnotationEditorLayer:!0,redrawXfaLayer:!0,redrawTextLayer:!J,hideTextLayer:J}),J)return;this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!0,timestamp:performance.now(),error:F(this,E0)});return}!this.zoomLayer&&!this.canvas.hidden&&(this.zoomLayer=this.canvas.parentNode,this.zoomLayer.style.position="absolute")}this.zoomLayer&&this.cssTransform({target:this.zoomLayer.firstChild}),this.reset({keepZoomLayer:!0,keepAnnotationLayer:!0,keepAnnotationEditorLayer:!0,keepXfaLayer:!0,keepTextLayer:!0})}cancelRendering({keepAnnotationLayer:t=!1,keepAnnotationEditorLayer:d=!1,keepXfaLayer:n=!1,keepTextLayer:i=!1,cancelExtraDelay:N=0}={}){var b;this.renderTask&&(this.renderTask.cancel(N),this.renderTask=null),this.resume=null,this.textLayer&&(!i||!this.textLayer.div)&&(this.textLayer.cancel(),this.textLayer=null),this.structTreeLayer&&!this.textLayer&&(this.structTreeLayer=null),this.annotationLayer&&(!t||!this.annotationLayer.div)&&(this.annotationLayer.cancel(),this.annotationLayer=null,this._annotationCanvasMap=null),this.annotationEditorLayer&&(!d||!this.annotationEditorLayer.div)&&(this.drawLayer&&(this.drawLayer.cancel(),this.drawLayer=null),this.annotationEditorLayer.cancel(),this.annotationEditorLayer=null),this.xfaLayer&&(!n||!this.xfaLayer.div)&&(this.xfaLayer.cancel(),this.xfaLayer=null,(b=this._textHighlighter)==null||b.disable())}cssTransform({target:t,redrawAnnotationLayer:d=!1,redrawAnnotationEditorLayer:n=!1,redrawXfaLayer:i=!1,redrawTextLayer:N=!1,hideTextLayer:b=!1}){var M;if(!t.hasAttribute("zooming")){t.setAttribute("zooming",!0);const{style:X}=t;X.width=X.height=""}const J=F(this,o0).get(t);if(this.viewport!==J){const X=this.viewport.rotation-J.rotation,p=Math.abs(X);let o=1,y=1;if(p===90||p===270){const{width:I,height:k}=this.viewport;o=k/I,y=I/k}t.style.transform=`rotate(${X}deg) scale(${o}, ${y})`}d&&this.annotationLayer&&G(this,WQ,wh).call(this),n&&this.annotationEditorLayer&&(this.drawLayer&&G(this,VQ,xh).call(this),G(this,aQ,Ch).call(this)),i&&this.xfaLayer&&G(this,nQ,rh).call(this),this.textLayer&&(b?(this.textLayer.hide(),(M=this.structTreeLayer)==null||M.hide()):N&&G(this,sQ,jh).call(this))}get width(){return this.viewport.width}get height(){return this.viewport.height}getPagePoint(t,d){return this.viewport.convertToPdfPoint(t,d)}draw(){return Ul(this,null,function*(){this.renderingState!==gl.INITIAL&&(console.error("Must be in new state before drawing"),this.reset());const{div:t,l10n:d,pageColors:n,pdfPage:i,viewport:N}=this;if(!i)throw this.renderingState=gl.FINISHED,new Error("pdfPage is not loaded");this.renderingState=gl.RUNNING;const b=document.createElement("div");if(b.classList.add("canvasWrapper"),G(this,VF,w0).call(this,b,"canvasWrapper"),!this.textLayer&&F(this,OW)!==Dd.DISABLE&&!i.isPureXfa&&(this._accessibilityManager||(this._accessibilityManager=new VX),this.textLayer=new RM({pdfPage:i,highlighter:this._textHighlighter,accessibilityManager:this._accessibilityManager,enablePermissions:F(this,OW)===Dd.ENABLE_PERMISSIONS,onAppend:x=>{this.l10n.pause(),G(this,VF,w0).call(this,x,"textLayer"),this.l10n.resume()}})),!this.annotationLayer&&F(this,u0)!==NZ.DISABLE){const{annotationStorage:x,annotationEditorUIManager:v,downloadManager:$,enableScripting:E,fieldObjectsPromise:O,hasJSActionsPromise:_,linkService:tl}=F(this,cF);this._annotationCanvasMap||(this._annotationCanvasMap=new Map),this.annotationLayer=new q2({pdfPage:i,annotationStorage:x,imageResourcesPath:this.imageResourcesPath,renderForms:F(this,u0)===NZ.ENABLE_FORMS,linkService:tl,downloadManager:$,enableScripting:E,hasJSActionsPromise:_,fieldObjectsPromise:O,annotationCanvasMap:this._annotationCanvasMap,accessibilityManager:this._accessibilityManager,annotationEditorUIManager:v,onAppend:Vl=>{G(this,VF,w0).call(this,Vl,"annotationLayer")}})}const M=x=>{if(y==null||y(!1),this.renderingQueue&&!this.renderingQueue.isHighestPriority(this)){this.renderingState=gl.PAUSED,this.resume=()=>{this.renderingState=gl.RUNNING,x()};return}x()},{width:J,height:X}=N,p=document.createElement("canvas");p.setAttribute("role","presentation"),p.hidden=!0;const o=!!(n!=null&&n.background&&n!=null&&n.foreground);let y=x=>{(!o||x)&&(p.hidden=!1,y=null)};b.append(p),this.canvas=p;const I=p.getContext("2d",{alpha:!1}),k=this.outputScale=new NT;if(this.maxCanvasPixels===0){const x=1/this.scale;k.sx*=x,k.sy*=x,S(this,B0,!0)}else if(this.maxCanvasPixels>0){const x=J*X,v=Math.sqrt(this.maxCanvasPixels/x);k.sx>v||k.sy>v?(k.sx=v,k.sy=v,S(this,B0,!0)):S(this,B0,!1)}const w=re(k.sx),K=re(k.sy);p.width=us(J*k.sx,w[0]),p.height=us(X*k.sy,K[0]);const{style:C}=p;C.width=us(J,w[1])+"px",C.height=us(X,K[1])+"px",F(this,o0).set(p,N);const P=k.scaled?[k.sx,0,0,k.sy,0,0]:null,r={canvasContext:I,transform:P,viewport:N,annotationMode:F(this,u0),optionalContentConfigPromise:this._optionalContentConfigPromise,annotationCanvasMap:this._annotationCanvasMap,pageColors:n},A=this.renderTask=i.render(r);A.onContinue=M;const H=A.promise.then(()=>Ul(this,null,function*(){var x;y==null||y(!0),yield G(this,QQ,Kh).call(this,A),G(this,sQ,jh).call(this),this.annotationLayer&&(yield G(this,WQ,wh).call(this));const{annotationEditorUIManager:v}=F(this,cF);v&&(this.drawLayer||(this.drawLayer=new WX({pageIndex:this.id})),yield G(this,VQ,xh).call(this),this.drawLayer.setParent(b),this.annotationEditorLayer||(this.annotationEditorLayer=new FX({uiManager:v,pdfPage:i,l10n:d,accessibilityManager:this._accessibilityManager,annotationLayer:(x=this.annotationLayer)==null?void 0:x.annotationLayer,textLayer:this.textLayer,drawLayer:this.drawLayer.getDrawLayer(),onAppend:$=>{G(this,VF,w0).call(this,$,"annotationEditorLayer")}})),G(this,aQ,Ch).call(this))}),x=>(x instanceof nb||y==null||y(!0),G(this,QQ,Kh).call(this,A,x)));if(i.isPureXfa){if(!this.xfaLayer){const{annotationStorage:x,linkService:v}=F(this,cF);this.xfaLayer=new hM({pdfPage:i,annotationStorage:x,linkService:v})}G(this,nQ,rh).call(this)}return t.setAttribute("data-loaded",!0),this.eventBus.dispatch("pagerender",{source:this,pageNumber:this.id}),H})}setPageLabel(t){var d;this.pageLabel=typeof t=="string"?t:null,this.div.setAttribute("data-l10n-args",JSON.stringify({page:(d=this.pageLabel)!=null?d:this.id})),this.pageLabel!==null?this.div.setAttribute("data-page-label",this.pageLabel):this.div.removeAttribute("data-page-label")}get thumbnailCanvas(){const{directDrawing:t,initialOptionalContent:d,regularAnnotations:n}=F(this,dt);return t&&d&&n?this.canvas:null}}u0=new WeakMap,B0=new WeakMap,cF=new WeakMap,WF=new WeakMap,FQ=new WeakMap,E0=new WeakMap,jW=new WeakMap,OW=new WeakMap,dt=new WeakMap,o0=new WeakMap,sF=new WeakMap,VF=new WeakSet,w0=function(V,t){const d=QX.get(t),n=F(this,sF)[d];if(F(this,sF)[d]=V,n){n.replaceWith(V);return}for(let i=d-1;i>=0;i--){const N=F(this,sF)[i];if(N){N.after(V);return}}this.div.prepend(V)},gW=new WeakSet,cQ=function(){const{viewport:V}=this;if(this.pdfPage){if(F(this,FQ)===V.rotation)return;S(this,FQ,V.rotation)}dS(this.div,V,!0,!1)},y0=new WeakSet,yW=function(V,t){this.eventBus.dispatch(V,{source:this,pageNumber:this.id,error:t})},WQ=new WeakSet,wh=function(){return Ul(this,null,function*(){let V=null;try{yield this.annotationLayer.render(this.viewport,"display")}catch(t){console.error(`#renderAnnotationLayer: "${t}".`),V=t}finally{G(this,y0,yW).call(this,"annotationlayerrendered",V)}})},aQ=new WeakSet,Ch=function(){return Ul(this,null,function*(){let V=null;try{yield this.annotationEditorLayer.render(this.viewport,"display")}catch(t){console.error(`#renderAnnotationEditorLayer: "${t}".`),V=t}finally{G(this,y0,yW).call(this,"annotationeditorlayerrendered",V)}})},VQ=new WeakSet,xh=function(){return Ul(this,null,function*(){try{yield this.drawLayer.render("display")}catch(V){console.error(`#renderDrawLayer: "${V}".`)}})},nQ=new WeakSet,rh=function(){return Ul(this,null,function*(){var V;let t=null;try{const d=yield this.xfaLayer.render(this.viewport,"display");d!=null&&d.textDivs&&this._textHighlighter&&G(this,gh,T2).call(this,d.textDivs)}catch(d){console.error(`#renderXfaLayer: "${d}".`),t=d}finally{(V=this.xfaLayer)!=null&&V.div&&(this.l10n.pause(),G(this,VF,w0).call(this,this.xfaLayer.div,"xfaLayer"),this.l10n.resume()),G(this,y0,yW).call(this,"xfalayerrendered",t)}})},sQ=new WeakSet,jh=function(){return Ul(this,null,function*(){if(!this.textLayer)return;let V=null;try{yield this.textLayer.render(this.viewport)}catch(t){if(t instanceof vT)return;console.error(`#renderTextLayer: "${t}".`),V=t}G(this,y0,yW).call(this,"textlayerrendered",V),G(this,Oh,J2).call(this)})},Oh=new WeakSet,J2=function(){return Ul(this,null,function*(){var V,t,d;if(!this.textLayer)return;this.structTreeLayer||(this.structTreeLayer=new nM);const n=yield this.structTreeLayer.renderingDone?null:this.pdfPage.getStructTree(),i=(V=this.structTreeLayer)==null?void 0:V.render(n);i&&(this.l10n.pause(),(t=this.canvas)==null||t.append(i),this.l10n.resume()),(d=this.structTreeLayer)==null||d.show()})},gh=new WeakSet,T2=function(V){return Ul(this,null,function*(){const t=yield this.pdfPage.getTextContent(),d=[];for(const n of t.items)d.push(n.str);this._textHighlighter.setTextMapping(V,d),this._textHighlighter.enable()})},QQ=new WeakSet,Kh=function(V,t=null){return Ul(this,null,function*(){if(V===this.renderTask&&(this.renderTask=null),t instanceof nb){S(this,E0,null);return}if(S(this,E0,t),this.renderingState=gl.FINISHED,this._resetZoomLayer(!0),F(this,dt).regularAnnotations=!V.separateAnnots,this.eventBus.dispatch("pagerendered",{source:this,pageNumber:this.id,cssTransform:!1,timestamp:performance.now(),error:F(this,E0)}),t)throw t})};function iX(V){return Ul(this,null,function*(){const t="",d=t.split("#",1)[0];let{info:n,metadata:i,contentDispositionFilename:N,contentLength:b}=yield V.getMetadata();if(!b){const{length:M}=yield V.getDownloadInfo();b=M}return Ld(fl({},n),{baseURL:d,filesize:b,filename:N||$T(t),metadata:i==null?void 0:i.getRaw(),authors:i==null?void 0:i.get("dc:creator"),numPages:V.numPages,URL:t})})}class NX{constructor(t){this._ready=new Promise((d,n)=>{import(t).then(i=>{d(i.QuickJSSandbox())}).catch(n)})}createSandbox(t){return Ul(this,null,function*(){(yield this._ready).create(t)})}dispatchEventInSandbox(t){return Ul(this,null,function*(){const d=yield this._ready;setTimeout(()=>d.dispatchEvent(t),0)})}destroySandbox(){return Ul(this,null,function*(){(yield this._ready).nukeSandbox()})}}var VZ,C0,iQ,j0,O0,kQ,gU,Wt,Fa,nU,Nd,Hh,mM,KW,NQ,RQ,vh,Ph,eM,z0,HW;class RX{constructor({eventBus:t,externalServices:d=null,docProperties:n=null}){h(this,Hh),h(this,KW),h(this,RQ),h(this,Ph),h(this,z0),h(this,VZ,null),h(this,C0,null),h(this,iQ,null),h(this,j0,null),h(this,O0,null),h(this,kQ,null),h(this,gU,null),h(this,Wt,null),h(this,Fa,!1),h(this,nU,null),h(this,Nd,null),S(this,O0,t),S(this,kQ,d),S(this,iQ,n)}setViewer(t){S(this,Wt,t)}setDocument(t){return Ul(this,null,function*(){var d;if(F(this,gU)&&(yield G(this,z0,HW).call(this)),S(this,gU,t),!t)return;const[n,i,N]=yield Promise.all([t.getFieldObjects(),t.getCalculationOrderIds(),t.getJSActions()]);if(!n&&!N){yield G(this,z0,HW).call(this);return}if(t!==F(this,gU))return;try{S(this,nU,G(this,Ph,eM).call(this))}catch(J){console.error(`setDocument: "${J.message}".`),yield G(this,z0,HW).call(this);return}const b=F(this,O0);S(this,j0,new AbortController);const{signal:M}=F(this,j0);b._on("updatefromsandbox",J=>{(J==null?void 0:J.source)===window&&G(this,Hh,mM).call(this,J.detail)},{signal:M}),b._on("dispatcheventinsandbox",J=>{var X;(X=F(this,nU))==null||X.dispatchEventInSandbox(J.detail)},{signal:M}),b._on("pagechanging",({pageNumber:J,previous:X})=>{J!==X&&(G(this,RQ,vh).call(this,X),G(this,KW,NQ).call(this,J))},{signal:M}),b._on("pagerendered",({pageNumber:J})=>{this._pageOpenPending.has(J)&&J===F(this,Wt).currentPageNumber&&G(this,KW,NQ).call(this,J)},{signal:M}),b._on("pagesdestroy",()=>Ul(this,null,function*(){var J,X;yield G(this,RQ,vh).call(this,F(this,Wt).currentPageNumber),yield(J=F(this,nU))==null?void 0:J.dispatchEventInSandbox({id:"doc",name:"WillClose"}),(X=F(this,VZ))==null||X.resolve()}),{signal:M});try{const J=yield F(this,iQ).call(this,t);if(t!==F(this,gU))return;yield F(this,nU).createSandbox({objects:n,calculationOrder:i,appInfo:{platform:navigator.platform,language:navigator.language},docInfo:Ld(fl({},J),{actions:N})}),b.dispatch("sandboxcreated",{source:this})}catch(J){console.error(`setDocument: "${J.message}".`),yield G(this,z0,HW).call(this);return}yield(d=F(this,nU))==null?void 0:d.dispatchEventInSandbox({id:"doc",name:"Open"}),yield G(this,KW,NQ).call(this,F(this,Wt).currentPageNumber,!0),Promise.resolve().then(()=>{t===F(this,gU)&&S(this,Fa,!0)})})}dispatchWillSave(){return Ul(this,null,function*(){var t;return(t=F(this,nU))==null?void 0:t.dispatchEventInSandbox({id:"doc",name:"WillSave"})})}dispatchDidSave(){return Ul(this,null,function*(){var t;return(t=F(this,nU))==null?void 0:t.dispatchEventInSandbox({id:"doc",name:"DidSave"})})}dispatchWillPrint(){return Ul(this,null,function*(){var t;if(F(this,nU)){yield(t=F(this,Nd))==null?void 0:t.promise,S(this,Nd,Promise.withResolvers());try{yield F(this,nU).dispatchEventInSandbox({id:"doc",name:"WillPrint"})}catch(d){throw F(this,Nd).resolve(),S(this,Nd,null),d}yield F(this,Nd).promise}})}dispatchDidPrint(){return Ul(this,null,function*(){var t;return(t=F(this,nU))==null?void 0:t.dispatchEventInSandbox({id:"doc",name:"DidPrint"})})}get destroyPromise(){var t;return((t=F(this,C0))==null?void 0:t.promise)||null}get ready(){return F(this,Fa)}get _pageOpenPending(){return pQ(this,"_pageOpenPending",new Set)}get _visitedPages(){return pQ(this,"_visitedPages",new Map)}}VZ=new WeakMap,C0=new WeakMap,iQ=new WeakMap,j0=new WeakMap,O0=new WeakMap,kQ=new WeakMap,gU=new WeakMap,Wt=new WeakMap,Fa=new WeakMap,nU=new WeakMap,Nd=new WeakMap,Hh=new WeakSet,mM=function(V){return Ul(this,null,function*(){var t,d;const n=F(this,Wt),i=n.isInPresentationMode||n.isChangingPresentationMode,{id:N,siblings:b,command:M,value:J}=V;if(!N){switch(M){case"clear":console.clear();break;case"error":console.error(J);break;case"layout":if(!i){const p=TT(J);n.spreadMode=p.spreadMode}break;case"page-num":n.currentPageNumber=J+1;break;case"print":yield n.pagesPromise,F(this,O0).dispatch("print",{source:this});break;case"println":console.log(J);break;case"zoom":i||(n.currentScaleValue=J);break;case"SaveAs":F(this,O0).dispatch("download",{source:this});break;case"FirstPage":n.currentPageNumber=1;break;case"LastPage":n.currentPageNumber=n.pagesCount;break;case"NextPage":n.nextPage();break;case"PrevPage":n.previousPage();break;case"ZoomViewIn":i||n.increaseScale();break;case"ZoomViewOut":i||n.decreaseScale();break;case"WillPrintFinished":(t=F(this,Nd))==null||t.resolve(),S(this,Nd,null);break}return}if(i&&V.focus)return;delete V.id,delete V.siblings;const X=b?[N,...b]:[N];for(const p of X){const o=document.querySelector(`[data-element-id="${p}"]`);o?o.dispatchEvent(new CustomEvent("updatefromsandbox",{detail:V})):(d=F(this,gU))==null||d.annotationStorage.setValue(p,V)}})},KW=new WeakSet,NQ=function(V,t=!1){return Ul(this,null,function*(){const d=F(this,gU),n=this._visitedPages;if(t&&S(this,VZ,Promise.withResolvers()),!F(this,VZ))return;const i=F(this,Wt).getPageView(V-1);if((i==null?void 0:i.renderingState)!==gl.FINISHED){this._pageOpenPending.add(V);return}this._pageOpenPending.delete(V);const N=Ul(this,null,function*(){var b,M;const J=yield n.has(V)?null:(b=i.pdfPage)==null?void 0:b.getJSActions();d===F(this,gU)&&(yield(M=F(this,nU))==null?void 0:M.dispatchEventInSandbox({id:"page",name:"PageOpen",pageNumber:V,actions:J}))});n.set(V,N)})},RQ=new WeakSet,vh=function(V){return Ul(this,null,function*(){var t;const d=F(this,gU),n=this._visitedPages;if(!F(this,VZ)||this._pageOpenPending.has(V))return;const i=n.get(V);i&&(n.set(V,null),yield i,d===F(this,gU)&&(yield(t=F(this,nU))==null?void 0:t.dispatchEventInSandbox({id:"page",name:"PageClose",pageNumber:V})))})},Ph=new WeakSet,eM=function(){if(S(this,C0,Promise.withResolvers()),F(this,nU))throw new Error("#initScripting: Scripting already exists.");return F(this,kQ).createScripting()},z0=new WeakSet,HW=function(){return Ul(this,null,function*(){var V,t,d,n;if(!F(this,nU)){S(this,gU,null),(V=F(this,C0))==null||V.resolve();return}F(this,VZ)&&(yield Promise.race([F(this,VZ).promise,new Promise(i=>{setTimeout(i,1e3)})]).catch(()=>{}),S(this,VZ,null)),S(this,gU,null);try{yield F(this,nU).destroySandbox()}catch(i){}(t=F(this,Nd))==null||t.reject(new Error("Scripting destroyed.")),S(this,Nd,null),(d=F(this,j0))==null||d.abort(),S(this,j0,null),this._pageOpenPending.clear(),this._visitedPages.clear(),S(this,nU,null),S(this,Fa,!1),(n=F(this,C0))==null||n.resolve()})};class hX extends RX{constructor(t){t.externalServices||window.addEventListener("updatefromsandbox",d=>{t.eventBus.dispatch("updatefromsandbox",{source:window,detail:d.detail})}),t.externalServices||(t.externalServices={createScripting:()=>new NX(t.sandboxBundleSrc)}),t.docProperties||(t.docProperties=d=>iX(d)),super(t)}}const bX=3e4;class mX{constructor(){this.pdfViewer=null,this.pdfThumbnailViewer=null,this.onIdle=null,this.highestPriorityPage=null,this.idleTimeout=null,this.printing=!1,this.isThumbnailViewEnabled=!1,Object.defineProperty(this,"hasViewer",{value:()=>!!this.pdfViewer})}setViewer(t){this.pdfViewer=t}setThumbnailViewer(t){this.pdfThumbnailViewer=t}isHighestPriority(t){return this.highestPriorityPage===t.renderingId}renderHighestPriority(t){var d;this.idleTimeout&&(clearTimeout(this.idleTimeout),this.idleTimeout=null),!this.pdfViewer.forceRendering(t)&&(this.isThumbnailViewEnabled&&(d=this.pdfThumbnailViewer)!=null&&d.forceRendering()||this.printing||this.onIdle&&(this.idleTimeout=setTimeout(this.onIdle.bind(this),bX)))}getHighestPriority(t,d,n,i=!1){const N=t.views,b=N.length;if(b===0)return null;for(let o=0;o<b;o++){const y=N[o].view;if(!this.isViewFinished(y))return y}const M=t.first.id,J=t.last.id;if(J-M+1>b){const o=t.ids;for(let y=1,I=J-M;y<I;y++){const k=n?M+y:J-y;if(o.has(k))continue;const w=d[k-1];if(!this.isViewFinished(w))return w}}let X=n?J:M-2,p=d[X];return p&&!this.isViewFinished(p)||i&&(X+=n?1:-1,p=d[X],p&&!this.isViewFinished(p))?p:null}isViewFinished(t){return t.renderingState===gl.FINISHED}renderView(t){switch(t.renderingState){case gl.FINISHED:return!1;case gl.PAUSED:this.highestPriorityPage=t.renderingId,t.resume();break;case gl.RUNNING:this.highestPriorityPage=t.renderingId;break;case gl.INITIAL:this.highestPriorityPage=t.renderingId,t.draw().finally(()=>{this.renderHighestPriority()}).catch(d=>{d instanceof nb||console.error(`renderView: "${d}"`)});break}return!0}}const S2=10,Is={FORCE_SCROLL_MODE_PAGE:15e3,FORCE_LAZY_PAGE_INIT:7500,PAUSE_EAGER_PAGE_INIT:250};function X2(V){return Object.values(ct).includes(V)&&V!==ct.DISABLE}var at,L0,hQ,fh;class eX{constructor(t){h(this,hQ),h(this,at,new Set),h(this,L0,0),S(this,L0,t)}push(t){const d=F(this,at);d.has(t)&&d.delete(t),d.add(t),d.size>F(this,L0)&&G(this,hQ,fh).call(this)}resize(t,d=null){S(this,L0,t);const n=F(this,at);if(d){const i=n.size;let N=1;for(const b of n)if(d.has(b.id)&&(n.delete(b),n.add(b)),++N>i)break}for(;n.size>F(this,L0);)G(this,hQ,fh).call(this)}has(t){return F(this,at).has(t)}[Symbol.iterator](){return F(this,at).keys()}}at=new WeakMap,L0=new WeakMap,hQ=new WeakSet,fh=function(){const V=F(this,at).keys().next().value;V==null||V.destroy(),F(this,at).delete(V)};var aF,bQ,mQ,Zt,kU,g0,ca,eQ,MQ,k0,GQ,vW,nF,Wa,JQ,Ah,K0,QF,aa,_h,MM,qh,GM,$h,JM,x0,Va,na,IQ,lb,Y2,TQ,Zh,Ub,p2,nZ,tt,SQ,db,Zb,TM,tb,SM,DQ,Fb,cb,XM;class YM{constructor(t){var N,b,M;h(this,_h),h(this,qh),h(this,$h),h(this,x0),h(this,na),h(this,lb),h(this,TQ),h(this,Ub),h(this,nZ),h(this,SQ),h(this,Zb),h(this,tb),h(this,DQ),h(this,cb),h(this,aF,null),h(this,bQ,null),h(this,mQ,null),h(this,Zt,ct.NONE),h(this,kU,null),h(this,g0,NZ.ENABLE_FORMS),h(this,ca,null),h(this,eQ,!1),h(this,MQ,!1),h(this,k0,null),h(this,GQ,null),h(this,vW,!1),h(this,nF,null),h(this,Wa,!1),h(this,JQ,0),h(this,Ah,new ResizeObserver(G(this,cb,XM).bind(this))),h(this,K0,null),h(this,QF,null),h(this,aa,Dd.ENABLE);var d,n;const i="4.3.136";if($e!==i)throw new Error(`The API version "${$e}" does not match the Viewer version "${i}".`);if(this.container=t.container,this.viewer=t.viewer||t.container.firstElementChild,((d=this.container)==null?void 0:d.tagName)!=="DIV"||((n=this.viewer)==null?void 0:n.tagName)!=="DIV")throw new Error("Invalid `container` and/or `viewer` option.");if(this.container.offsetParent&&getComputedStyle(this.container).position!=="absolute")throw new Error("The `container` must be absolutely positioned.");F(this,Ah).observe(this.container),this.eventBus=t.eventBus,this.linkService=t.linkService||new Vb,this.downloadManager=t.downloadManager||null,this.findController=t.findController||null,S(this,bQ,t.altTextManager||null),this.findController&&(this.findController.onIsPageVisible=J=>this._getVisiblePages().ids.has(J)),this._scriptingManager=t.scriptingManager||null,S(this,aa,(N=t.textLayerMode)!=null?N:Dd.ENABLE),S(this,g0,(b=t.annotationMode)!=null?b:NZ.ENABLE_FORMS),S(this,Zt,(M=t.annotationEditorMode)!=null?M:ct.NONE),S(this,mQ,t.annotationEditorHighlightColors||null),S(this,eQ,t.enableHighlightFloatingButton===!0),this.imageResourcesPath=t.imageResourcesPath||"",this.enablePrintAutoRotate=t.enablePrintAutoRotate||!1,this.removePageBorders=t.removePageBorders||!1,this.maxCanvasPixels=t.maxCanvasPixels,this.l10n=t.l10n,this.l10n||(this.l10n=new CQ),S(this,MQ,t.enablePermissions||!1),this.pageColors=t.pageColors||null,S(this,GQ,t.mlManager||null),this.defaultRenderingQueue=!t.renderingQueue,this.defaultRenderingQueue?(this.renderingQueue=new mX,this.renderingQueue.setViewer(this)):this.renderingQueue=t.renderingQueue,this.scroll=RT(this.container,this._scrollUpdate.bind(this)),this.presentationModeState=r0.UNKNOWN,this._resetView(),this.removePageBorders&&this.viewer.classList.add("removePageBorders"),G(this,DQ,Fb).call(this),this.eventBus._on("thumbnailrendered",({pageNumber:J,pdfPage:X})=>{const p=this._pages[J-1];F(this,aF).has(p)||X==null||X.cleanup()}),t.l10n||this.l10n.translate(this.container)}get pagesCount(){return this._pages.length}getPageView(t){return this._pages[t]}getCachedPageViews(){return new Set(F(this,aF))}get pageViewsReady(){return this._pages.every(t=>t==null?void 0:t.pdfPage)}get renderForms(){return F(this,g0)===NZ.ENABLE_FORMS}get enableScripting(){return!!this._scriptingManager}get currentPageNumber(){return this._currentPageNumber}set currentPageNumber(t){if(!Number.isInteger(t))throw new Error("Invalid page number.");this.pdfDocument&&(this._setCurrentPageNumber(t,!0)||console.error(`currentPageNumber: "${t}" is not a valid page.`))}_setCurrentPageNumber(t,d=!1){var N;var n;if(this._currentPageNumber===t)return d&&G(this,SQ,db).call(this),!0;if(!(0<t&&t<=this.pagesCount))return!1;const i=this._currentPageNumber;return this._currentPageNumber=t,this.eventBus.dispatch("pagechanging",{source:this,pageNumber:t,pageLabel:(N=(n=this._pageLabels)==null?void 0:n[t-1])!=null?N:null,previous:i}),d&&G(this,SQ,db).call(this),!0}get currentPageLabel(){var d;var t;return(d=(t=this._pageLabels)==null?void 0:t[this._currentPageNumber-1])!=null?d:null}set currentPageLabel(t){if(!this.pdfDocument)return;let d=t|0;if(this._pageLabels){const n=this._pageLabels.indexOf(t);n>=0&&(d=n+1)}this._setCurrentPageNumber(d,!0)||console.error(`currentPageLabel: "${t}" is not a valid page.`)}get currentScale(){return this._currentScale!==DR?this._currentScale:x2}set currentScale(t){if(isNaN(t))throw new Error("Invalid numeric scale.");this.pdfDocument&&G(this,nZ,tt).call(this,t,{noScroll:!1})}get currentScaleValue(){return this._currentScaleValue}set currentScaleValue(t){this.pdfDocument&&G(this,nZ,tt).call(this,t,{noScroll:!1})}get pagesRotation(){return this._pagesRotation}set pagesRotation(t){if(!g2(t))throw new Error("Invalid pages rotation angle.");if(!this.pdfDocument||(t%=360,t<0&&(t+=360),this._pagesRotation===t))return;this._pagesRotation=t;const d=this._currentPageNumber;this.refresh(!0,{rotation:t}),this._currentScaleValue&&G(this,nZ,tt).call(this,this._currentScaleValue,{noScroll:!0}),this.eventBus.dispatch("rotationchanging",{source:this,pagesRotation:t,pageNumber:d}),this.defaultRenderingQueue&&this.update()}get firstPagePromise(){return this.pdfDocument?this._firstPageCapability.promise:null}get onePageRendered(){return this.pdfDocument?this._onePageRenderedCapability.promise:null}get pagesPromise(){return this.pdfDocument?this._pagesCapability.promise:null}get _layerProperties(){const t=this;return pQ(this,"_layerProperties",{get annotationEditorUIManager(){return F(t,kU)},get annotationStorage(){var d;return(d=t.pdfDocument)==null?void 0:d.annotationStorage},get downloadManager(){return t.downloadManager},get enableScripting(){return!!t._scriptingManager},get fieldObjectsPromise(){var d;return(d=t.pdfDocument)==null?void 0:d.getFieldObjects()},get findController(){return t.findController},get hasJSActionsPromise(){var d;return(d=t.pdfDocument)==null?void 0:d.hasJSActions()},get linkService(){return t.linkService}})}getAllText(){return Ul(this,null,function*(){const t=[],d=[];for(let n=1,i=this.pdfDocument.numPages;n<=i;++n){if(F(this,Wa))return null;d.length=0;const N=yield this.pdfDocument.getPage(n),{items:b}=yield N.getTextContent();for(const M of b)M.str&&d.push(M.str),M.hasEOL&&d.push(`
|
||
`);t.push(YQ(d.join("")))}return t.join(`
|
||
`)})}setDocument(t){var d,n;if(this.pdfDocument&&(this.eventBus.dispatch("pagesdestroy",{source:this}),this._cancelRendering(),this._resetView(),(d=this.findController)==null||d.setDocument(null),(n=this._scriptingManager)==null||n.setDocument(null),F(this,kU)&&(F(this,kU).destroy(),S(this,kU,null))),this.pdfDocument=t,!t)return;const i=t.numPages,N=t.getPage(1),b=t.getOptionalContentConfig({intent:"display"}),M=F(this,MQ)?t.getPermissions():Promise.resolve(),{eventBus:J,pageColors:X,viewer:p}=this;S(this,k0,new AbortController);const{signal:o}=F(this,k0);if(i>Is.FORCE_SCROLL_MODE_PAGE){console.warn("Forcing PAGE-scrolling for performance reasons, given the length of the document.");const k=this._scrollMode=ol.PAGE;J.dispatch("scrollmodechanged",{source:this,mode:k})}this._pagesCapability.promise.then(()=>{J.dispatch("pagesloaded",{source:this,pagesCount:i})},()=>{});const y=k=>{const w=this._pages[k.pageNumber-1];w&&F(this,aF).push(w)};J._on("pagerender",y,{signal:o});const I=k=>{k.cssTransform||(this._onePageRenderedCapability.resolve({timestamp:k.timestamp}),J._off("pagerendered",I))};J._on("pagerendered",I,{signal:o}),Promise.all([N,M]).then(([k,w])=>{var K;if(t!==this.pdfDocument)return;this._firstPageCapability.resolve(k),this._optionalContentConfigPromise=b;const{annotationEditorMode:C,annotationMode:P,textLayerMode:r}=G(this,_h,MM).call(this,w);if(r!==Dd.DISABLE){const v=S(this,nF,document.createElement("div"));v.id="hiddenCopyElement",p.before(v)}if(C!==ct.DISABLE){const v=C;t.isPureXfa?console.warn("Warning: XFA-editing is not implemented."):X2(v)?(S(this,kU,new fT(this.container,p,F(this,bQ),J,t,X,F(this,mQ),F(this,eQ),F(this,GQ))),J.dispatch("annotationeditoruimanager",{source:this,uiManager:F(this,kU)}),v!==ct.NONE&&F(this,kU).updateMode(v)):console.error(`Invalid AnnotationEditor mode: ${v}`)}const A=this._scrollMode===ol.PAGE?null:p,H=this.currentScale,x=k.getViewport({scale:H*QZ.PDF_TO_CSS_UNITS});p.style.setProperty("--scale-factor",x.scale),((X==null?void 0:X.foreground)==="CanvasText"||(X==null?void 0:X.background)==="Canvas")&&(p.style.setProperty("--hcm-highlight-filter",t.filterFactory.addHighlightHCMFilter("highlight","CanvasText","Canvas","HighlightText","Highlight")),p.style.setProperty("--hcm-highlight-selected-filter",t.filterFactory.addHighlightHCMFilter("highlight_selected","CanvasText","Canvas","HighlightText","ButtonText")));for(let v=1;v<=i;++v){const $=new bM({container:A,eventBus:J,id:v,scale:H,defaultViewport:x.clone(),optionalContentConfigPromise:b,renderingQueue:this.renderingQueue,textLayerMode:r,annotationMode:P,imageResourcesPath:this.imageResourcesPath,maxCanvasPixels:this.maxCanvasPixels,pageColors:X,l10n:this.l10n,layerProperties:this._layerProperties});this._pages.push($)}(K=this._pages[0])==null||K.setPdfPage(k),this._scrollMode===ol.PAGE?G(this,x0,Va).call(this):this._spreadMode!==pU.NONE&&this._updateSpreadMode(),G(this,qh,GM).call(this,o).then(()=>Ul(this,null,function*(){var v,$;if(t!==this.pdfDocument)return;if((v=this.findController)==null||v.setDocument(t),($=this._scriptingManager)==null||$.setDocument(t),F(this,nF)&&document.addEventListener("copy",G(this,$h,JM).bind(this,r),{signal:o}),F(this,kU)&&J.dispatch("annotationeditormodechanged",{source:this,mode:F(this,Zt)}),t.loadingParams.disableAutoFetch||i>Is.FORCE_LAZY_PAGE_INIT){this._pagesCapability.resolve();return}let E=i-1;if(E<=0){this._pagesCapability.resolve();return}for(let O=2;O<=i;++O){const _=t.getPage(O).then(tl=>{const Vl=this._pages[O-1];Vl.pdfPage||Vl.setPdfPage(tl),--E===0&&this._pagesCapability.resolve()},tl=>{console.error(`Unable to get page ${O} to initialize viewer`,tl),--E===0&&this._pagesCapability.resolve()});O%Is.PAUSE_EAGER_PAGE_INIT===0&&(yield _)}})),J.dispatch("pagesinit",{source:this}),t.getMetadata().then(({info:v})=>{t===this.pdfDocument&&v.Language&&(p.lang=v.Language)}),this.defaultRenderingQueue&&this.update()}).catch(k=>{console.error("Unable to initialize viewer",k),this._pagesCapability.reject(k)})}setPageLabels(t){var n;var d;if(this.pdfDocument){t?Array.isArray(t)&&this.pdfDocument.numPages===t.length?this._pageLabels=t:(this._pageLabels=null,console.error("setPageLabels: Invalid page labels.")):this._pageLabels=null;for(let i=0,N=this._pages.length;i<N;i++)this._pages[i].setPageLabel((n=(d=this._pageLabels)==null?void 0:d[i])!=null?n:null)}}_resetView(){var t,d;this._pages=[],this._currentPageNumber=1,this._currentScale=DR,this._currentScaleValue=null,this._pageLabels=null,S(this,aF,new eX(S2)),this._location=null,this._pagesRotation=0,this._optionalContentConfigPromise=null,this._firstPageCapability=Promise.withResolvers(),this._onePageRenderedCapability=Promise.withResolvers(),this._pagesCapability=Promise.withResolvers(),this._scrollMode=ol.VERTICAL,this._previousScrollMode=ol.UNKNOWN,this._spreadMode=pU.NONE,S(this,K0,{previousPageNumber:1,scrollDown:!0,pages:[]}),(t=F(this,k0))==null||t.abort(),S(this,k0,null),this.viewer.textContent="",this._updateScrollMode(),this.viewer.removeAttribute("lang"),(d=F(this,nF))==null||d.remove(),S(this,nF,null)}_scrollUpdate(){this.pagesCount!==0&&this.update()}pageLabelToPageNumber(t){if(!this._pageLabels)return null;const d=this._pageLabels.indexOf(t);return d<0?null:d+1}scrollPageIntoView({pageNumber:t,destArray:d=null,allowNegativeOffset:n=!1,ignoreDestinationZoom:i=!1}){if(!this.pdfDocument)return;const N=Number.isInteger(t)&&this._pages[t-1];if(!N){console.error(`scrollPageIntoView: "${t}" is not a valid pageNumber parameter.`);return}if(this.isInPresentationMode||!d){this._setCurrentPageNumber(t,!0);return}let b=0,M=0,J=0,X=0,p,o;const y=N.rotation%180!==0,I=(y?N.height:N.width)/N.scale/QZ.PDF_TO_CSS_UNITS,k=(y?N.width:N.height)/N.scale/QZ.PDF_TO_CSS_UNITS;let w=0;switch(d[1].name){case"XYZ":b=d[2],M=d[3],w=d[4],b=b!==null?b:0,M=M!==null?M:k;break;case"Fit":case"FitB":w="page-fit";break;case"FitH":case"FitBH":M=d[2],w="page-width",M===null&&this._location?(b=this._location.left,M=this._location.top):(typeof M!="number"||M<0)&&(M=k);break;case"FitV":case"FitBV":b=d[2],J=I,X=k,w="page-height";break;case"FitR":b=d[2],M=d[3],J=d[4]-b,X=d[5]-M;let r=r2,A=j2;this.removePageBorders&&(r=A=0),p=(this.container.clientWidth-r)/J/QZ.PDF_TO_CSS_UNITS,o=(this.container.clientHeight-A)/X/QZ.PDF_TO_CSS_UNITS,w=Math.min(Math.abs(p),Math.abs(o));break;default:console.error(`scrollPageIntoView: "${d[1].name}" is not a valid destination type.`);return}if(i||(w&&w!==this._currentScale?this.currentScaleValue=w:this._currentScale===DR&&(this.currentScaleValue=nT)),w==="page-fit"&&!d[4]){G(this,na,IQ).call(this,N);return}const K=[N.viewport.convertToViewportPoint(b,M),N.viewport.convertToViewportPoint(b+J,M+X)];let C=Math.min(K[0][0],K[1][0]),P=Math.min(K[0][1],K[1][1]);n||(C=Math.max(C,0),P=Math.max(P,0)),G(this,na,IQ).call(this,N,{left:C,top:P})}_updateLocation(t){const d=this._currentScale,n=this._currentScaleValue,i=parseFloat(n)===d?Math.round(d*1e4)/100:n,N=t.id,b=this._pages[N-1],M=this.container,J=b.getPagePoint(M.scrollLeft-t.x,M.scrollTop-t.y),X=Math.round(J[0]),p=Math.round(J[1]);let o=`#page=${N}`;this.isInPresentationMode||(o+=`&zoom=${i},${X},${p}`),this._location={pageNumber:N,scale:i,top:p,left:X,rotation:this._pagesRotation,pdfOpenParams:o}}update(){const t=this._getVisiblePages(),d=t.views,n=d.length;if(n===0)return;const i=Math.max(S2,2*n+1);F(this,aF).resize(i,t.ids),this.renderingQueue.renderHighestPriority(t);const N=this._spreadMode===pU.NONE&&(this._scrollMode===ol.PAGE||this._scrollMode===ol.VERTICAL),b=this._currentPageNumber;let M=!1;for(const J of d){if(J.percent<100)break;if(J.id===b&&N){M=!0;break}}this._setCurrentPageNumber(M?b:d[0].id),this._updateLocation(t.first),this.eventBus.dispatch("updateviewarea",{source:this,location:this._location})}containsElement(t){return this.container.contains(t)}focus(){this.container.focus()}get _isContainerRtl(){return getComputedStyle(this.container).direction==="rtl"}get isInPresentationMode(){return this.presentationModeState===r0.FULLSCREEN}get isChangingPresentationMode(){return this.presentationModeState===r0.CHANGING}get isHorizontalScrollbarEnabled(){return this.isInPresentationMode?!1:this.container.scrollWidth>this.container.clientWidth}get isVerticalScrollbarEnabled(){return this.isInPresentationMode?!1:this.container.scrollHeight>this.container.clientHeight}_getVisiblePages(){const t=this._scrollMode===ol.PAGE?F(this,K0).pages:this._pages,d=this._scrollMode===ol.HORIZONTAL,n=d&&this._isContainerRtl;return bT({scrollEl:this.container,views:t,sortByVisibility:!0,horizontal:d,rtl:n})}cleanup(){for(const t of this._pages)t.renderingState!==gl.FINISHED&&t.reset()}_cancelRendering(){for(const t of this._pages)t.cancelRendering()}forceRendering(t){const d=t||this._getVisiblePages(),n=G(this,tb,SM).call(this,d),i=this._spreadMode!==pU.NONE&&this._scrollMode!==ol.HORIZONTAL,N=this.renderingQueue.getHighestPriority(d,this._pages,n,i);return N?(G(this,Zb,TM).call(this,N).then(()=>{this.renderingQueue.renderView(N)}),!0):!1}get hasEqualPageSizes(){const t=this._pages[0];for(let d=1,n=this._pages.length;d<n;++d){const i=this._pages[d];if(i.width!==t.width||i.height!==t.height)return!1}return!0}getPagesOverview(){let t;return this._pages.map(d=>{const n=d.pdfPage.getViewport({scale:1}),i=K2(n);if(t===void 0)t=i;else if(this.enablePrintAutoRotate&&i!==t)return{width:n.height,height:n.width,rotation:(n.rotation-90)%360};return{width:n.width,height:n.height,rotation:n.rotation}})}get optionalContentConfigPromise(){return this.pdfDocument?this._optionalContentConfigPromise?this._optionalContentConfigPromise:(console.error("optionalContentConfigPromise: Not initialized yet."),this.pdfDocument.getOptionalContentConfig({intent:"display"})):Promise.resolve(null)}set optionalContentConfigPromise(t){if(!(t instanceof Promise))throw new Error(`Invalid optionalContentConfigPromise: ${t}`);this.pdfDocument&&this._optionalContentConfigPromise&&(this._optionalContentConfigPromise=t,this.refresh(!1,{optionalContentConfigPromise:t}),this.eventBus.dispatch("optionalcontentconfigchanged",{source:this,promise:t}))}get scrollMode(){return this._scrollMode}set scrollMode(t){if(this._scrollMode!==t){if(!mT(t))throw new Error(`Invalid scroll mode: ${t}`);this.pagesCount>Is.FORCE_SCROLL_MODE_PAGE||(this._previousScrollMode=this._scrollMode,this._scrollMode=t,this.eventBus.dispatch("scrollmodechanged",{source:this,mode:t}),this._updateScrollMode(this._currentPageNumber))}}_updateScrollMode(t=null){const d=this._scrollMode,n=this.viewer;n.classList.toggle("scrollHorizontal",d===ol.HORIZONTAL),n.classList.toggle("scrollWrapped",d===ol.WRAPPED),!(!this.pdfDocument||!t)&&(d===ol.PAGE?G(this,x0,Va).call(this):this._previousScrollMode===ol.PAGE&&this._updateSpreadMode(),this._currentScaleValue&&isNaN(this._currentScaleValue)&&G(this,nZ,tt).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(t,!0),this.update())}get spreadMode(){return this._spreadMode}set spreadMode(t){if(this._spreadMode!==t){if(!eT(t))throw new Error(`Invalid spread mode: ${t}`);this._spreadMode=t,this.eventBus.dispatch("spreadmodechanged",{source:this,mode:t}),this._updateSpreadMode(this._currentPageNumber)}}_updateSpreadMode(t=null){if(!this.pdfDocument)return;const d=this.viewer,n=this._pages;if(this._scrollMode===ol.PAGE)G(this,x0,Va).call(this);else if(d.textContent="",this._spreadMode===pU.NONE)for(const i of this._pages)d.append(i.div);else{const i=this._spreadMode-1;let N=null;for(let b=0,M=n.length;b<M;++b)N===null?(N=document.createElement("div"),N.className="spread",d.append(N)):b%2===i&&(N=N.cloneNode(!1),d.append(N)),N.append(n[b].div)}t&&(this._currentScaleValue&&isNaN(this._currentScaleValue)&&G(this,nZ,tt).call(this,this._currentScaleValue,{noScroll:!0}),this._setCurrentPageNumber(t,!0),this.update())}_getPageAdvance(t,d=!1){switch(this._scrollMode){case ol.WRAPPED:{const{views:n}=this._getVisiblePages(),i=new Map;for(const{id:N,y:b,percent:M,widthPercent:J}of n){if(M===0||J<100)continue;let X=i.get(b);X||i.set(b,X||(X=[])),X.push(N)}for(const N of i.values()){const b=N.indexOf(t);if(b===-1)continue;const M=N.length;if(M===1)break;if(d)for(let J=b-1,X=0;J>=X;J--){const p=N[J],o=N[J+1]-1;if(p<o)return t-o}else for(let J=b+1,X=M;J<X;J++){const p=N[J],o=N[J-1]+1;if(p>o)return o-t}if(d){const J=N[0];if(J<t)return t-J+1}else{const J=N[M-1];if(J>t)return J-t+1}break}break}case ol.HORIZONTAL:break;case ol.PAGE:case ol.VERTICAL:{if(this._spreadMode===pU.NONE)break;const n=this._spreadMode-1;if(d&&t%2!==n||!d&&t%2===n)break;const{views:i}=this._getVisiblePages(),N=d?t-1:t+1;for(const{id:b,percent:M,widthPercent:J}of i)if(b===N){if(M>0&&J===100)return 2;break}break}}return 1}nextPage(){const t=this._currentPageNumber,d=this.pagesCount;if(t>=d)return!1;const n=this._getPageAdvance(t,!1)||1;return this.currentPageNumber=Math.min(t+n,d),!0}previousPage(){const t=this._currentPageNumber;if(t<=1)return!1;const d=this._getPageAdvance(t,!0)||1;return this.currentPageNumber=Math.max(t-d,1),!0}updateScale({drawingDelay:t,scaleFactor:d=null,steps:n=null,origin:i}){if(n===null&&d===null)throw new Error("Invalid updateScale options: either `steps` or `scaleFactor` must be provided.");if(!this.pdfDocument)return;let N=this._currentScale;if(d>0&&d!==1)N=Math.round(N*d*100)/100;else if(n){const b=n>0?Ce:1/Ce,M=n>0?Math.ceil:Math.floor;n=Math.abs(n);do N=M((N*b).toFixed(2)*10)/10;while(--n>0)}N=Math.max(sT,Math.min(QT,N)),G(this,nZ,tt).call(this,N,{noScroll:!1,drawingDelay:t,origin:i})}increaseScale(t={}){var d;this.updateScale(Ld(fl({},t),{steps:(d=t.steps)!=null?d:1}))}decreaseScale(t={}){var d;this.updateScale(Ld(fl({},t),{steps:-((d=t.steps)!=null?d:1)}))}get containerTopLeft(){return F(this,ca)||S(this,ca,[this.container.offsetTop,this.container.offsetLeft])}get annotationEditorMode(){return F(this,kU)?F(this,Zt):ct.DISABLE}set annotationEditorMode({mode:t,editId:d=null,isFromKeyboard:n=!1}){if(!F(this,kU))throw new Error("The AnnotationEditor is not enabled.");if(F(this,Zt)!==t){if(!X2(t))throw new Error(`Invalid AnnotationEditor mode: ${t}`);this.pdfDocument&&(S(this,Zt,t),this.eventBus.dispatch("annotationeditormodechanged",{source:this,mode:t}),F(this,kU).updateMode(t,d,n))}}set annotationEditorParams({type:t,value:d}){if(!F(this,kU))throw new Error("The AnnotationEditor is not enabled.");F(this,kU).updateParams(t,d)}refresh(t=!1,d=Object.create(null)){if(this.pdfDocument){for(const n of this._pages)n.update(d);F(this,QF)!==null&&(clearTimeout(F(this,QF)),S(this,QF,null)),t||this.update()}}}aF=new WeakMap,bQ=new WeakMap,mQ=new WeakMap,Zt=new WeakMap,kU=new WeakMap,g0=new WeakMap,ca=new WeakMap,eQ=new WeakMap,MQ=new WeakMap,k0=new WeakMap,GQ=new WeakMap,vW=new WeakMap,nF=new WeakMap,Wa=new WeakMap,JQ=new WeakMap,Ah=new WeakMap,K0=new WeakMap,QF=new WeakMap,aa=new WeakMap,_h=new WeakSet,MM=function(V){const t={annotationEditorMode:F(this,Zt),annotationMode:F(this,g0),textLayerMode:F(this,aa)};return V&&(!V.includes(zs.COPY)&&F(this,aa)===Dd.ENABLE&&(t.textLayerMode=Dd.ENABLE_PERMISSIONS),V.includes(zs.MODIFY_CONTENTS)||(t.annotationEditorMode=ct.DISABLE),!V.includes(zs.MODIFY_ANNOTATIONS)&&!V.includes(zs.FILL_INTERACTIVE_FORMS)&&F(this,g0)===NZ.ENABLE_FORMS&&(t.annotationMode=NZ.ENABLE)),t},qh=new WeakSet,GM=function(V){return Ul(this,null,function*(){if(document.visibilityState==="hidden"||!this.container.offsetParent||this._getVisiblePages().views.length===0)return;const t=Promise.withResolvers();function d(){document.visibilityState==="hidden"&&t.resolve()}document.addEventListener("visibilitychange",d,{signal:V}),yield Promise.race([this._onePageRenderedCapability.promise,t.promise]),document.removeEventListener("visibilitychange",d)})},$h=new WeakSet,JM=function(V,t){const d=document.getSelection(),{focusNode:n,anchorNode:i}=d;if(i&&n&&d.containsNode(F(this,nF))){if(F(this,vW)||V===Dd.ENABLE_PERMISSIONS){t.preventDefault(),t.stopPropagation();return}S(this,vW,!0);const N=this.container.style.cursor;this.container.style.cursor="wait";const b=M=>S(this,Wa,M.key==="Escape");window.addEventListener("keydown",b),this.getAllText().then(M=>Ul(this,null,function*(){M!==null&&(yield navigator.clipboard.writeText(M))})).catch(M=>{console.warn(`Something goes wrong when extracting the text: ${M.message}`)}).finally(()=>{S(this,vW,!1),S(this,Wa,!1),window.removeEventListener("keydown",b),this.container.style.cursor=N}),t.preventDefault(),t.stopPropagation()}},x0=new WeakSet,Va=function(){if(this._scrollMode!==ol.PAGE)throw new Error("#ensurePageViewVisible: Invalid scrollMode value.");const V=this._currentPageNumber,t=F(this,K0),d=this.viewer;if(d.textContent="",t.pages.length=0,this._spreadMode===pU.NONE&&!this.isInPresentationMode){const n=this._pages[V-1];d.append(n.div),t.pages.push(n)}else{const n=new Set,i=this._spreadMode-1;i===-1?n.add(V-1):V%2!==i?(n.add(V-1),n.add(V)):(n.add(V-2),n.add(V-1));const N=document.createElement("div");if(N.className="spread",this.isInPresentationMode){const b=document.createElement("div");b.className="dummyPage",N.append(b)}for(const b of n){const M=this._pages[b];M&&(N.append(M.div),t.pages.push(M))}d.append(N)}t.scrollDown=V>=t.previousPageNumber,t.previousPageNumber=V},na=new WeakSet,IQ=function(V,t=null){const{div:d,id:n}=V;if(this._currentPageNumber!==n&&this._setCurrentPageNumber(n),this._scrollMode===ol.PAGE&&(G(this,x0,Va).call(this),this.update()),!t&&!this.isInPresentationMode){const i=d.offsetLeft+d.clientLeft,N=i+d.clientWidth,{scrollLeft:b,clientWidth:M}=this.container;(this._scrollMode===ol.HORIZONTAL||i<b||N>b+M)&&(t={left:0,top:0})}O2(d,t),!this._currentScaleValue&&this._location&&(this._location=null)},lb=new WeakSet,Y2=function(V){return V===this._currentScale||Math.abs(V-this._currentScale)<1e-15},TQ=new WeakSet,Zh=function(V,t,{noScroll:d=!1,preset:n=!1,drawingDelay:i=-1,origin:N=null}){if(this._currentScaleValue=t.toString(),G(this,lb,Y2).call(this,V)){n&&this.eventBus.dispatch("scalechanging",{source:this,scale:V,presetValue:t});return}this.viewer.style.setProperty("--scale-factor",V*QZ.PDF_TO_CSS_UNITS);const b=i>=0&&i<1e3;this.refresh(!0,{scale:V,drawingDelay:b?i:-1}),b&&S(this,QF,setTimeout(()=>{S(this,QF,null),this.refresh()},i));const M=this._currentScale;if(this._currentScale=V,!d){let J=this._currentPageNumber,X;if(this._location&&!(this.isInPresentationMode||this.isChangingPresentationMode)&&(J=this._location.pageNumber,X=[null,{name:"XYZ"},this._location.left,this._location.top,null]),this.scrollPageIntoView({pageNumber:J,destArray:X,allowNegativeOffset:!0}),Array.isArray(N)){const p=V/M-1,[o,y]=this.containerTopLeft;this.container.scrollLeft+=(N[0]-y)*p,this.container.scrollTop+=(N[1]-o)*p}}this.eventBus.dispatch("scalechanging",{source:this,scale:V,presetValue:n?t:void 0}),this.defaultRenderingQueue&&this.update()},Ub=new WeakSet,p2=function(){return this._spreadMode!==pU.NONE&&this._scrollMode!==ol.HORIZONTAL?2:1},nZ=new WeakSet,tt=function(V,t){let d=parseFloat(V);if(d>0)t.preset=!1,G(this,TQ,Zh).call(this,d,V,t);else{const n=this._pages[this._currentPageNumber-1];if(!n)return;let i=r2,N=j2;this.isInPresentationMode?(i=N=4,this._spreadMode!==pU.NONE&&(i*=2)):this.removePageBorders?i=N=0:this._scrollMode===ol.HORIZONTAL&&([i,N]=[N,i]);const b=(this.container.clientWidth-i)/n.width*n.scale/F(this,Ub,p2),M=(this.container.clientHeight-N)/n.height*n.scale;switch(V){case"page-actual":d=1;break;case"page-width":d=b;break;case"page-height":d=M;break;case"page-fit":d=Math.min(b,M);break;case"auto":const J=K2(n)?b:Math.min(M,b);d=Math.min(iT,J);break;default:console.error(`#setScale: "${V}" is an unknown zoom value.`);return}t.preset=!0,G(this,TQ,Zh).call(this,d,V,t)}},SQ=new WeakSet,db=function(){const V=this._pages[this._currentPageNumber-1];this.isInPresentationMode&&G(this,nZ,tt).call(this,this._currentScaleValue,{noScroll:!0}),G(this,na,IQ).call(this,V)},Zb=new WeakSet,TM=function(V){return Ul(this,null,function*(){if(V.pdfPage)return V.pdfPage;try{const t=yield this.pdfDocument.getPage(V.id);return V.pdfPage||V.setPdfPage(t),t}catch(t){return console.error("Unable to get page for page view",t),null}})},tb=new WeakSet,SM=function(V){var t,d;if(((t=V.first)==null?void 0:t.id)===1)return!0;if(((d=V.last)==null?void 0:d.id)===this.pagesCount)return!1;switch(this._scrollMode){case ol.PAGE:return F(this,K0).scrollDown;case ol.HORIZONTAL:return this.scroll.right}return this.scroll.down},DQ=new WeakSet,Fb=function(V=this.container.clientHeight){V!==F(this,JQ)&&(S(this,JQ,V),MT.setProperty("--viewer-container-height",`${V}px`))},cb=new WeakSet,XM=function(V){for(const t of V)if(t.target===this.container){G(this,DQ,Fb).call(this,Math.floor(t.borderBoxSize[0].blockSize)),S(this,ca,null);break}};class MX extends YM{_resetView(){super._resetView(),this._scrollMode=ol.PAGE,this._spreadMode=pU.NONE}set scrollMode(t){}_updateScrollMode(){}set spreadMode(t){}_updateSpreadMode(){}}Ol.AnnotationLayerBuilder;Ol.DownloadManager;Ol.EventBus;Ol.FindState;Ol.GenericL10n;Ol.LinkTarget;Ol.PDFFindController;Ol.PDFHistory;var GX=Ol.PDFLinkService;Ol.PDFPageView;Ol.PDFScriptingManager;Ol.PDFSinglePageViewer;Ol.PDFViewer;Ol.ProgressBar;Ol.RenderingStates;Ol.ScrollMode;Ol.SimpleLinkService;Ol.SpreadMode;Ol.StructTreeLayerBuilder;Ol.TextLayerBuilder;Ol.XfaLayerBuilder;Ol.parseQueryString;function JX(V,t,d){const n=V.contentWindow.document.createElement("style");n.textContent=`
|
||
@page {
|
||
margin: 3mm;
|
||
size: ${t}pt ${d}pt;
|
||
}
|
||
body {
|
||
margin: 0;
|
||
}
|
||
canvas {
|
||
width: 100%;
|
||
page-break-after: always;
|
||
page-break-before: avoid;
|
||
page-break-inside: avoid;
|
||
}
|
||
`,V.contentWindow.document.head.appendChild(n),V.contentWindow.document.body.style.width="100%"}function TX(V){return new Promise(t=>{const d=document.createElement("iframe");d.width="0",d.height="0",d.style.position="absolute",d.style.top="0",d.style.left="0",d.style.border="none",d.style.overflow="hidden",d.onload=()=>t(d),V.appendChild(d)})}function SX(V,t){const d=URL.createObjectURL(new Blob([V],{type:"application/pdf"})),n=document.createElement("a");n.href=d,n.download=t,n.style.display="none",document.body.append(n),n.click(),setTimeout(()=>{URL.revokeObjectURL(d),document.body.removeChild(n)},1e3)}function u2(V){for(;V!=null&&V.firstChild;)V.removeChild(V.firstChild)}function th(V){V==null||V.querySelectorAll("canvas").forEach(t=>{var d;t.width=1,t.height=1,(d=t.getContext("2d"))==null||d.clearRect(0,0,1,1)})}const XX=["id"],YX=["id"],pX=AW("canvas",null,null,-1),uX={key:0,class:"textLayer"},BX={key:1,class:"annotationLayer"},pM=z2({__name:"VuePdfEmbed",props:{annotationLayer:{type:Boolean},height:{},id:{},imageResourcesPath:{},page:{},rotation:{default:0},scale:{default:1},source:{},textLayer:{type:Boolean},width:{}},emits:["internal-link-clicked","loaded","loading-failed","password-requested","progress","rendered","rendering-failed"],setup(V,{expose:t,emit:d}){const n=V,i=fW([]),N=fW([]),b=Pt([]),M=fW(null),{doc:J}=C2({onError:C=>{i.value=[],d("loading-failed",C)},onPasswordRequest({callback:C,isWrongPassword:P}){d("password-requested",{callback:C,isWrongPassword:P})},onProgress:C=>{d("progress",C)},source:fJ(n,"source")}),X=AJ(()=>{if(!J.value||!n.annotationLayer)return null;const C=new GX;return C.setDocument(J.value),C.setViewer({scrollPageIntoView:({pageNumber:P})=>{d("internal-link-clicked",P)}}),C}),p=C=>Ul(this,null,function*(){var H;if(!J.value)return;const P=yield J.value.getData(),r=yield J.value.getMetadata(),A=(H=C!=null?C:r.contentDispositionFilename)!=null?H:"";SX(P,A)}),o=C=>{var A;let P,r;return n.height&&!n.width?(r=n.height,P=r/C):(P=(A=n.width)!=null?A:M.value.clientWidth,r=P*C),[P,r]},y=(C=300,P="",r=!1)=>Ul(this,null,function*(){var A,H,x;if(!J.value)return;const v=C/72,$=96/72;let E,O,_;try{E=window.document.createElement("div"),E.style.display="none",window.document.body.appendChild(E),O=yield TX(E);const tl=n.page&&!r?[n.page]:[...Array(J.value.numPages+1).keys()].slice(1);yield Promise.all(tl.map((Vl,Rl)=>Ul(this,null,function*(){const sl=yield J.value.getPage(Vl),g=sl.getViewport({scale:1,rotation:0});if(Rl===0){const kl=g.width*v/$,FU=g.height*v/$;JX(O,kl,FU)}const pl=window.document.createElement("canvas");pl.width=g.width*v,pl.height=g.height*v,E.appendChild(pl);const Jl=pl.cloneNode();O.contentWindow.document.body.appendChild(Jl),yield sl.render({canvasContext:pl.getContext("2d"),intent:"print",transform:[v,0,0,v,0,0],viewport:g}).promise,Jl.getContext("2d").drawImage(pl,0,0)}))),P&&(_=window.document.title,window.document.title=P),(A=O.contentWindow)==null||A.focus(),(H=O.contentWindow)==null||H.print()}finally{_&&(window.document.title=_),th(E),(x=E.parentNode)==null||x.removeChild(E)}}),I=()=>Ul(this,null,function*(){if(J.value)try{i.value=n.page?[n.page]:[...Array(J.value.numPages+1).keys()].slice(1),b.value=Array(i.value.length).fill(1),yield Promise.all(i.value.map((C,P)=>Ul(this,null,function*(){const r=yield J.value.getPage(C),A=((n.rotation%90===0?n.rotation:0)+r.rotate)%360,[H,x,v]=Array.from(N.value[P].children),$=!!(A/90%2),[E,O]=o($?r.view[2]/r.view[3]:r.view[3]/r.view[2]),_=`${Math.floor(E)}px`,tl=`${Math.floor(O)}px`,Vl=$?r.view[3]:r.view[2],Rl=E/Vl,sl=r.getViewport({scale:Rl,rotation:A});b.value[P]=Rl,H.style.width=_,H.style.height=tl,x&&(x.style.width=$?tl:_,x.style.height=$?_:tl),v&&(v.style.width=$?tl:_,v.style.height=$?_:tl),yield k(r,sl.clone({scale:sl.scale*window.devicePixelRatio*n.scale}),H),n.textLayer&&(yield K(r,sl.clone({dontFlip:!0}),x)),n.annotationLayer&&(yield w(r,sl.clone({dontFlip:!0}),v||x))}))),d("rendered")}catch(C){i.value=[],b.value=[],d("rendering-failed",C)}}),k=(C,P,r)=>Ul(this,null,function*(){r.width=P.width,r.height=P.height,yield C.render({canvasContext:r.getContext("2d"),viewport:P}).promise}),w=(C,P,r)=>Ul(this,null,function*(){u2(r),new FT({accessibilityManager:null,annotationCanvasMap:null,annotationEditorUIManager:null,div:r,page:C,viewport:P}).render({annotations:yield C.getAnnotations(),div:r,imageResourcesPath:n.imageResourcesPath,linkService:X.value,page:C,renderForms:!1,viewport:P})}),K=(C,P,r)=>Ul(this,null,function*(){u2(r),new WT({container:r,textContentSource:yield C.getTextContent(),viewport:P}).render()});return zR(J,()=>{J.value&&d("loaded",J.value)},{immediate:!0}),zR(()=>n.source,()=>{th(M.value)}),zR(()=>[J.value,n.annotationLayer,n.height,n.imageResourcesPath,n.page,n.rotation,n.scale,n.textLayer,n.width],()=>{J.value&&I()},{immediate:!0}),y2(()=>{th(M.value)}),t({doc:J,download:p,print:y}),(C,P)=>(sZ(),Ft("div",{id:C.id,ref_key:"root",ref:M,class:"vue-pdf-embed"},[(sZ(!0),Ft(_J,null,qJ(i.value,(r,A)=>(sZ(),Ft("div",{key:r},[ke(C.$slots,"before-page",{page:r}),AW("div",{id:C.id&&`${C.id}-${r}`,ref_for:!0,ref_key:"pageRefs",ref:N,class:"vue-pdf-embed__page",style:$J({"--scale-factor":b.value[A]})},[pX,C.textLayer?(sZ(),Ft("div",uX)):Ie("",!0),C.annotationLayer?(sZ(),Ft("div",BX)):Ie("",!0)],12,YX),ke(C.$slots,"after-page",{page:r})]))),128))],8,XX))}});window!=null&&window.Vue&&(window.VuePdfEmbed=pM,window.useVuePdfEmbed=C2);IR!=null&&IR.workerSrc||(IR.workerSrc=VT);const oX={},zW=Object.freeze(Object.defineProperty({__proto__:null,default:oX},Symbol.toStringTag,{value:"Module"}));var LW={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},yX=/([astvzqmhlc])([^astvzqmhlc]*)/gi,zX=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/gi;function LX(V){const t=V.match(zX);return t?t.map(Number):[]}function uM(V){const t=[],d=String(V).trim();return d[0]!=="M"&&d[0]!=="m"||d.replace(yX,(n,i,N)=>{const b=LX(N);let M=i.toLowerCase(),J=i;if(M==="m"&&b.length>2&&(t.push([J,...b.splice(0,2)]),M="l",J=J==="m"?"l":"L"),b.length<LW[M])return"";for(t.push([J,...b.splice(0,LW[M])]);b.length>=LW[M]&&b.length&&LW[M];)t.push([J,...b.splice(0,LW[M])]);return""}),t}function B2(V,t){const d=V.x*Math.cos(t)-V.y*Math.sin(t),n=V.y*Math.cos(t)+V.x*Math.sin(t);V.x=d,V.y=n}function kX(V,t,d){V.x+=t,V.y+=d}function o2(V,t){V.x*=t,V.y*=t}var XQ=class Wb{constructor(t){this.commands=[],t&&t instanceof Wb?this.commands.push(...t.commands):t&&(this.commands=uM(t))}addPath(t){t&&t instanceof Wb&&this.commands.push(...t.commands)}moveTo(t,d){this.commands.push(["M",t,d])}lineTo(t,d){this.commands.push(["L",t,d])}arc(t,d,n,i,N,b){this.commands.push(["AC",t,d,n,i,N,!!b])}arcTo(t,d,n,i,N){this.commands.push(["AT",t,d,n,i,N])}ellipse(t,d,n,i,N,b,M,J){this.commands.push(["E",t,d,n,i,N,b,M,!!J])}closePath(){this.commands.push(["Z"])}bezierCurveTo(t,d,n,i,N,b){this.commands.push(["C",t,d,n,i,N,b])}quadraticCurveTo(t,d,n,i){this.commands.push(["Q",t,d,n,i])}rect(t,d,n,i){this.commands.push(["R",t,d,n,i])}roundRect(t,d,n,i,N){typeof N>"u"?this.commands.push(["RR",t,d,n,i,0]):this.commands.push(["RR",t,d,n,i,N])}};function PW(V,t){let d=0,n=0,i,N,b,M,J,X,p,o,y,I,k,w,K,C,P,r,A,H,x,v,$,E=null,O=null,_=null,tl=null,Vl=null,Rl=null;V.beginPath();for(let sl=0;sl<t.length;++sl){H=t[sl][0],H!=="S"&&H!=="s"&&H!=="C"&&H!=="c"&&(E=null,O=null),H!=="T"&&H!=="t"&&H!=="Q"&&H!=="q"&&(_=null,tl=null);let g;switch(H){case"m":case"M":g=t[sl],H==="m"?(d+=g[1],n+=g[2]):(d=g[1],n=g[2]),(H==="M"||!Vl)&&(Vl={x:d,y:n}),V.moveTo(d,n);break;case"l":g=t[sl],d+=g[1],n+=g[2],V.lineTo(d,n);break;case"L":g=t[sl],d=g[1],n=g[2],V.lineTo(d,n);break;case"H":g=t[sl],d=g[1],V.lineTo(d,n);break;case"h":g=t[sl],d+=g[1],V.lineTo(d,n);break;case"V":g=t[sl],n=g[1],V.lineTo(d,n);break;case"v":g=t[sl],n+=g[1],V.lineTo(d,n);break;case"a":case"A":if(g=t[sl],Rl===null)throw new Error("This should never happen");H==="a"?(d+=g[6],n+=g[7]):(d=g[6],n=g[7]),C=g[1],P=g[2],p=g[3]*Math.PI/180,b=!!g[4],M=!!g[5],J={x:d,y:n},X={x:(Rl.x-J.x)/2,y:(Rl.y-J.y)/2},B2(X,-p),o=X.x*X.x/(C*C)+X.y*X.y/(P*P),o>1&&(o=Math.sqrt(o),C*=o,P*=o),x={x:C*X.y/P,y:-(P*X.x)/C},y=C*C*P*P,I=C*C*X.y*X.y+P*P*X.x*X.x,M!==b?o2(x,Math.sqrt((y-I)/I)||0):o2(x,-Math.sqrt((y-I)/I)||0),N=Math.atan2((X.y-x.y)/P,(X.x-x.x)/C),i=Math.atan2(-(X.y+x.y)/P,-(X.x+x.x)/C),B2(x,p),kX(x,(J.x+Rl.x)/2,(J.y+Rl.y)/2),V.save(),V.translate(x.x,x.y),V.rotate(p),V.scale(C,P),V.arc(0,0,1,N,i,!M),V.restore();break;case"C":g=t[sl],E=g[3],O=g[4],d=g[5],n=g[6],V.bezierCurveTo(g[1],g[2],E,O,d,n);break;case"c":g=t[sl],V.bezierCurveTo(g[1]+d,g[2]+n,g[3]+d,g[4]+n,g[5]+d,g[6]+n),E=g[3]+d,O=g[4]+n,d+=g[5],n+=g[6];break;case"S":g=t[sl],(E===null||O===null)&&(E=d,O=n),V.bezierCurveTo(2*d-E,2*n-O,g[1],g[2],g[3],g[4]),E=g[1],O=g[2],d=g[3],n=g[4];break;case"s":g=t[sl],(E===null||O===null)&&(E=d,O=n),V.bezierCurveTo(2*d-E,2*n-O,g[1]+d,g[2]+n,g[3]+d,g[4]+n),E=g[1]+d,O=g[2]+n,d+=g[3],n+=g[4];break;case"Q":g=t[sl],_=g[1],tl=g[2],d=g[3],n=g[4],V.quadraticCurveTo(_,tl,d,n);break;case"q":g=t[sl],_=g[1]+d,tl=g[2]+n,d+=g[3],n+=g[4],V.quadraticCurveTo(_,tl,d,n);break;case"T":g=t[sl],(_===null||tl===null)&&(_=d,tl=n),_=2*d-_,tl=2*n-tl,d=g[1],n=g[2],V.quadraticCurveTo(_,tl,d,n);break;case"t":g=t[sl],(_===null||tl===null)&&(_=d,tl=n),_=2*d-_,tl=2*n-tl,d+=g[1],n+=g[2],V.quadraticCurveTo(_,tl,d,n);break;case"z":case"Z":Vl&&(d=Vl.x,n=Vl.y),Vl=null,V.closePath();break;case"AC":g=t[sl],d=g[1],n=g[2],K=g[3],N=g[4],i=g[5],v=g[6],V.arc(d,n,K,N,i,v);break;case"AT":g=t[sl],k=g[1],w=g[2],d=g[3],n=g[4],K=g[5],V.arcTo(k,w,d,n,K);break;case"E":g=t[sl],d=g[1],n=g[2],C=g[3],P=g[4],p=g[5],N=g[6],i=g[7],v=g[8],V.save(),V.translate(d,n),V.rotate(p),V.scale(C,P),V.arc(0,0,1,N,i,v),V.restore();break;case"R":g=t[sl],d=g[1],n=g[2],r=g[3],A=g[4],Vl={x:d,y:n},V.rect(d,n,r,A);break;case"RR":g=t[sl],d=g[1],n=g[2],r=g[3],A=g[4],$=g[5],Vl={x:d,y:n},V.roundRect(d,n,r,A,$);break;default:throw new Error(`Invalid path command: ${H}`)}Rl?(Rl.x=d,Rl.y=n):Rl={x:d,y:n}}}function sb(V,t,d,n,i=0){if(typeof i=="number"&&(i=[i]),Array.isArray(i)){if(i.length===0||i.length>4)throw new RangeError(`Failed to execute 'roundRect' on '${this.constructor.name}': ${i.length} radii provided. Between one and four radii are necessary.`);i.forEach(p=>{if(p<0)throw new RangeError(`Failed to execute 'roundRect' on '${this.constructor.name}': Radius value ${p} is negative.`)})}else return;if(i.length===1&&i[0]===0){this.rect(V,t,d,n);return}const N=Math.min(d,n)/2,b=Math.min(N,i[0]);let M=b,J=b,X=b;i.length===2&&(M=Math.min(N,i[1]),X=M),i.length===3&&(M=Math.min(N,i[1]),X=M,J=Math.min(N,i[2])),i.length===4&&(M=Math.min(N,i[1]),J=Math.min(N,i[2]),X=Math.min(N,i[3])),this.moveTo(V,t+n-X),this.arcTo(V,t,V+b,t,b),this.arcTo(V+d,t,V+d,t+M,M),this.arcTo(V+d,t+n,V+d-J,t+n,J),this.arcTo(V,t+n,V,t+n-X,X),this.moveTo(V,t)}function IX(V){if(!V)return;const t=V.prototype.clip,d=V.prototype.fill,n=V.prototype.stroke,i=V.prototype.isPointInPath;V.prototype.clip=function(...N){if(N[0]instanceof XQ){const M=N[0],J=N[1]||"nonzero";return PW(this,M.commands),t.apply(this,[J])}const b=N[0]||"nonzero";return t.apply(this,[b])},V.prototype.fill=function(...N){if(N[0]instanceof XQ){const M=N[0],J=N[1]||"nonzero";return PW(this,M.commands),d.apply(this,[J])}const b=N[0]||"nonzero";return d.apply(this,[b])},V.prototype.stroke=function(N){N&&PW(this,N.commands),n.apply(this)},V.prototype.isPointInPath=function(...N){if(N[0]instanceof XQ){const b=N[0],M=N[1],J=N[2],X=N[3]||"nonzero";return PW(this,b.commands),i.apply(this,[M,J,X])}return i.apply(this,N)}}function DX(V){V&&!V.prototype.roundRect&&(V.prototype.roundRect=sb)}function EX(V){V&&!V.prototype.roundRect&&(V.prototype.roundRect=sb)}const wX=Object.freeze(Object.defineProperty({__proto__:null,Path2D:XQ,applyPath2DToCanvasRenderingContext:IX,applyRoundRectToCanvasRenderingContext2D:DX,applyRoundRectToPath2D:EX,buildPath:PW,parsePath:uM,roundRect:sb},Symbol.toStringTag,{value:"Module"})),CX={class:"font-medium"},xX=["element-loading-text"],rX={class:"flex justify-between items-center h-9"},jX={key:0,class:"font-medium ml-1.25 text-xl"},OX={key:1},gX={class:"w-[170px] flex-bc"},KX="https://xiaoxian521.github.io/hyperlink/pdf/Cookie%E5%92%8CSession%E5%8C%BA%E5%88%AB%E7%94%A8%E6%B3%95.pdf",TY=z2({name:"Pdf",__name:"pdf",setup(V){const{t}=lT(),d=Pt(),n=Pt(1),i=Pt(!0),N=Pt(1),b=Pt(0),M=Pt(!1),J=[0,90,180,270],X=()=>{i.value=!1,n.value=d.value.doc.numPages},p=()=>{N.value=M.value?null:1},o=()=>{d.value.print()};return(y,I)=>{const k=e0("el-link"),w=e0("el-pagination"),K=e0("el-checkbox"),C=e0("IconifyIconOnline"),P=e0("el-scrollbar"),r=e0("el-card"),A=De("tippy"),H=De("loading");return sZ(),UT(r,{shadow:"never"},{header:Ht(()=>[AW("div",CX,[_Z(k,{href:"https://github.com/hrynko/vue-pdf-embed",target:"_blank",style:{margin:"0 5px 4px 0","font-size":"16px"}},{default:Ht(()=>[ps(" PDF预览 ")]),_:1})]),_Z(k,{class:"mt-2",href:"https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/able/pdf.vue",target:"_blank"},{default:Ht(()=>[ps(" 代码位置 src/views/able/pdf.vue ")]),_:1})]),default:Ht(()=>[LR((sZ(),Ft("div",{class:"h-[calc(100vh-295px)]","element-loading-text":Ee(t)("status.pureLoad")},[AW("div",rX,[M.value?(sZ(),Ft("div",jX," 共"+kR(n.value)+"页 ",1)):(sZ(),Ft("div",OX,[_Z(w,{"current-page":N.value,"onUpdate:currentPage":I[0]||(I[0]=x=>N.value=x),background:"",layout:"prev, slot, next","page-size":1,total:n.value},{default:Ht(()=>[ps(kR(N.value)+" / "+kR(n.value),1)]),_:1},8,["current-page","total"])])),AW("div",gX,[_Z(K,{modelValue:M.value,"onUpdate:modelValue":I[1]||(I[1]=x=>M.value=x),onChange:p},{default:Ht(()=>[ps(" 显示所有页面 ")]),_:1},8,["modelValue"]),LR(_Z(C,{icon:"ic:baseline-rotate-90-degrees-ccw",class:"cursor-pointer outline-transparent",onClick:I[2]||(I[2]=x=>b.value===3?b.value=0:b.value+=1)},null,512),[[A,{maxWidth:"none",content:`翻转(当前角度${J[b.value]}度)`}]]),LR(_Z(C,{icon:"ri:printer-line",class:"cursor-pointer outline-transparent",onClick:o},null,512),[[A,{maxWidth:"none",content:"打印"}]])])]),_Z(P,null,{default:Ht(()=>[_Z(Ee(pM),{ref_key:"pdfRef",ref:d,class:"h-full container overflow-auto",rotation:J[b.value],page:N.value,source:KX,onRendered:X},null,8,["rotation","page"])]),_:1})],8,xX)),[[H,i.value]])]),_:1})}}});export{TY as default};
|